<?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>219699</bug_id>
          
          <creation_ts>2020-12-09 11:17:38 -0800</creation_ts>
          <short_desc>Create a SpeechRecognizer for each SpeechRecognitionRequest</short_desc>
          <delta_ts>2021-02-03 12:40:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1713234</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-09 11:17:38 -0800</bug_when>
    <thetext>Refactor existing code to create a SpeechRecognizer for each SpeechRecognitionRequest, which would make state management easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715172</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-16 11:18:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/72392097&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724525</commentid>
    <comment_count>2</comment_count>
      <attachid>418957</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-02-01 21:52:38 -0800</bug_when>
    <thetext>Created attachment 418957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724527</commentid>
    <comment_count>3</comment_count>
      <attachid>418959</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-02-01 21:54:47 -0800</bug_when>
    <thetext>Created attachment 418959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724548</commentid>
    <comment_count>4</comment_count>
      <attachid>418967</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-02-02 00:19:43 -0800</bug_when>
    <thetext>Created attachment 418967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724788</commentid>
    <comment_count>5</comment_count>
      <attachid>418967</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-02-02 11:34:10 -0800</bug_when>
    <thetext>Comment on attachment 418967
Patch

I am not too clear about what this patch does.
It seems for instance that one thing it can do is to cancel a request that is in the queue to trigger a prompt.
That might indeed be nice to do but it seems like smaller more focused dedicated patches might make things easier.

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

&gt; Source/WebCore/Modules/speech/SpeechRecognition.h:110
&gt; +    bool m_hasReceivedStart { false };

It is not clear to me how this relates with a new recogniser per ask. Might be food to beef up WebCore change log

&gt; Source/WebCore/Modules/speech/SpeechRecognitionRequest.h:39
&gt; +    void setPermissionRequestIdentifier(Optional&lt;SpeechRecognitionPermissionRequestIdentifier&gt; permissionRequestIdentifier) { m_permissionRequestIdentifier = permissionRequestIdentifier; }

Why optional? Do we need to set it back to null?

&gt; Source/WebCore/Modules/speech/SpeechRecognitionRequest.h:40
&gt; +    Optional&lt;SpeechRecognitionPermissionRequestIdentifier&gt; permissionRequestIdentifier() { return m_permissionRequestIdentifier; }

const.

&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:41
&gt; +    m_delegateCallback = [this, delegateCallback = WTFMove(callback)](const SpeechRecognitionUpdate&amp; update) {

auto&amp;

&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:43
&gt; +        delegateCallback(update);

Is there a possibility delegateCallback kills &apos;this&apos;?

&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:58
&gt; +void SpeechRecognizer::abort(Optional&lt;SpeechRecognitionError&gt; error)

Optional&lt;&gt;&amp;&amp; or const Optional&lt;&gt;&amp;

&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:88
&gt; +void SpeechRecognizer::start(std::unique_ptr&lt;SpeechRecognitionRequest&gt; request, Ref&lt;RealtimeMediaSource&gt;&amp;&amp; source, bool mockSpeechRecognitionEnabled)

unique_ptr&lt;&gt;&amp;&amp;, could be a UniqueRef I guess.

&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:90
&gt; +    m_request = std::exchange(request, nullptr);

m_request = WTFMove(request)
Maybe ASSERT(!m_request) as well

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:86
&gt; +void SpeechRecognitionPermissionManager::cancelRequest(WebCore::SpeechRecognitionPermissionRequestIdentifier permissionRequestIdentifier)

That seems a lot of work.
I guess you could use removeAllMatching or find/remove instead.

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:95
&gt; +            continue;

This does not seem correct: request completion handler will not be called.

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h:43
&gt; +    Optional&lt;WebCore::SpeechRecognitionPermissionRequestIdentifier&gt; request(const String&amp; lang, const WebCore::ClientOrigin&amp;, WebCore::FrameIdentifier, SpeechRecognitionPermissionRequestCallback&amp;&amp;);

It seems best to provide a WebCore::SpeechRecognitionPermissionRequestIdentifier instead of an Optional.

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:91
&gt; +    if (permissionRequestIdentifier)

This if does not seem needed right now.

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:95
&gt; +void SpeechRecognitionServer::handleRequest(std::unique_ptr&lt;WebCore::SpeechRecognitionRequest&gt; request)

unique_ptr&lt;&gt;&amp;&amp;, ideally UniqueRef</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724799</commentid>
    <comment_count>6</comment_count>
      <attachid>418967</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-02-02 11:50:11 -0800</bug_when>
    <thetext>Comment on attachment 418967
Patch

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

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognition.h:110
&gt;&gt; +    bool m_hasReceivedStart { false };
&gt; 
&gt; It is not clear to me how this relates with a new recogniser per ask. Might be food to beef up WebCore change log

This is more related to cancel event I guess, will split this patch into two patches.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognitionRequest.h:39
&gt;&gt; +    void setPermissionRequestIdentifier(Optional&lt;SpeechRecognitionPermissionRequestIdentifier&gt; permissionRequestIdentifier) { m_permissionRequestIdentifier = permissionRequestIdentifier; }
&gt; 
&gt; Why optional? Do we need to set it back to null?

I guess we don&apos;t, since SpeechRecognizer will take the ownership of a request now. I will split the patch and make the recognizer change first.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognitionRequest.h:40
&gt;&gt; +    Optional&lt;SpeechRecognitionPermissionRequestIdentifier&gt; permissionRequestIdentifier() { return m_permissionRequestIdentifier; }
&gt; 
&gt; const.

Okay.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:41
&gt;&gt; +    m_delegateCallback = [this, delegateCallback = WTFMove(callback)](const SpeechRecognitionUpdate&amp; update) {
&gt; 
&gt; auto&amp;

Okay.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:43
&gt;&gt; +        delegateCallback(update);
&gt; 
&gt; Is there a possibility delegateCallback kills &apos;this&apos;?

No, delegate callback is for sending out update now.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:58
&gt;&gt; +void SpeechRecognizer::abort(Optional&lt;SpeechRecognitionError&gt; error)
&gt; 
&gt; Optional&lt;&gt;&amp;&amp; or const Optional&lt;&gt;&amp;

Okay.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:88
&gt;&gt; +void SpeechRecognizer::start(std::unique_ptr&lt;SpeechRecognitionRequest&gt; request, Ref&lt;RealtimeMediaSource&gt;&amp;&amp; source, bool mockSpeechRecognitionEnabled)
&gt; 
&gt; unique_ptr&lt;&gt;&amp;&amp;, could be a UniqueRef I guess.

Will change.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:90
&gt;&gt; +    m_request = std::exchange(request, nullptr);
&gt; 
&gt; m_request = WTFMove(request)
&gt; Maybe ASSERT(!m_request) as well

Sure.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:86
&gt;&gt; +void SpeechRecognitionPermissionManager::cancelRequest(WebCore::SpeechRecognitionPermissionRequestIdentifier permissionRequestIdentifier)
&gt; 
&gt; That seems a lot of work.
&gt; I guess you could use removeAllMatching or find/remove instead.

Okay.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:95
&gt;&gt; +            continue;
&gt; 
&gt; This does not seem correct: request completion handler will not be called.

Right, will need to call completion handler.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:91
&gt;&gt; +    if (permissionRequestIdentifier)
&gt; 
&gt; This if does not seem needed right now.

Will change.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:95
&gt;&gt; +void SpeechRecognitionServer::handleRequest(std::unique_ptr&lt;WebCore::SpeechRecognitionRequest&gt; request)
&gt; 
&gt; unique_ptr&lt;&gt;&amp;&amp;, ideally UniqueRef

Okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724891</commentid>
    <comment_count>7</comment_count>
      <attachid>419065</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-02-02 14:26:29 -0800</bug_when>
    <thetext>Created attachment 419065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724893</commentid>
    <comment_count>8</comment_count>
      <attachid>419066</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-02-02 14:29:36 -0800</bug_when>
    <thetext>Created attachment 419066
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724906</commentid>
    <comment_count>9</comment_count>
      <attachid>419069</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-02-02 14:52:34 -0800</bug_when>
    <thetext>Created attachment 419069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725192</commentid>
    <comment_count>10</comment_count>
      <attachid>419069</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-02-03 09:58:52 -0800</bug_when>
    <thetext>Comment on attachment 419069
Patch

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

&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:42
&gt; +    m_delegateCallback = [this, delegateCallback = WTFMove(callback)](auto&amp; update) {

It might be easier to keep m_delegateCallback as is.
And have this logic in a dedicated method. Something like callDelegate.

&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:48
&gt; +        if (update.type() ==  SpeechRecognitionUpdateType::End)

else if. Or switch

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:90
&gt;      }

One liner:
if (m_recognizer)
    m_recognizer-&gt;abort(...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725238</commentid>
    <comment_count>11</comment_count>
      <attachid>419161</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-02-03 11:30:31 -0800</bug_when>
    <thetext>Created attachment 419161
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725266</commentid>
    <comment_count>12</comment_count>
      <attachid>419169</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-02-03 12:09:37 -0800</bug_when>
    <thetext>Created attachment 419169
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725269</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-03 12:10:19 -0800</bug_when>
    <thetext>Patch 419161 does not build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725290</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-03 12:40:21 -0800</bug_when>
    <thetext>Committed r272337: &lt;https://trac.webkit.org/changeset/272337&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 419169.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418957</attachid>
            <date>2021-02-01 21:52:38 -0800</date>
            <delta_ts>2021-02-01 22:00:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219699-20210201215237.patch</filename>
            <type>text/plain</type>
            <size>49420</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjAwNGVmZTk3MzBkNmJj
Mjk1MDVmNDEyYmE1MDY4MzgzZGMxMjg5Ny4uMDllNmQ1NWRjMjBlMTRkN2YyOGNiYTdjNWE1OTA0
YTQzNDFmODYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTAyLTAxICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGEgU3BlZWNoUmVj
b2duaXplciBmb3IgZWFjaCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY5OQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzIzOTIwOTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEhlYWRl
cnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb246OmRpZFN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uOjpkaWRFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6ZGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uOjpkaWRDYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb246OnJlc2V0KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
bi5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVx
dWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpzZXRQ
ZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0OjpwZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIpOgorICAgICAgICAq
IE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmg6CisgICAgICAgICogTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pemVyOjpTcGVlY2hSZWNvZ25pemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml6ZXI6On5TcGVlY2hSZWNvZ25pemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml6ZXI6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6Y2xpZW50SWRlbnRp
ZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdGFydENhcHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcENhcHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjphYm9ydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0b3BSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pemVyOjpyZXNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pemVyOjpyZXNldFJlY29nbml0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmg6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pemVyOjpjdXJyZW50Q2xpZW50SWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNvZ25pdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpyZXNldFJlY29nbml0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
IDIwMjEtMDItMDEgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAg
ICAgICBbQ3VybF0gRW5hYmxlIEZUUCBwcm90b2NvbCBvbmx5IHdoZW4gRU5BQkxFX0ZUUERJUiBp
cyBvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCAwZTAwMTY1ZTcwMTMxNTViYWNmZmM0Nzg2NWI1ZDI3Nzk5YjgzOTU1
Li4yMjcxZGM3NzM5NDhkNmNiZTQ2ZWU1MGM4MmRiMTAzMDk1YjM5ZjMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM1IEBACisyMDIxLTAyLTAxICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+
CisKKyAgICAgICAgQ3JlYXRlIGEgU3BlZWNoUmVjb2duaXplciBmb3IgZWFjaCBTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxOTY5OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzIzOTIwOTc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
Lmg6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6
OmlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVzdFBlcm1pc3Npb25G
b3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6Omhh
bmRsZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6
Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0b3Ap
OgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aW52YWxpZGF0ZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0
aW9uU2VydmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVVwZGF0ZSk6CisKIDIwMjEtMDItMDEgIFN0
ZXBoYW4gU3phYm8gIDxzdGVwaGFuLnN6YWJvQHNvbnkuY29tPgogCiAgICAgICAgIFtQbGF5U3Rh
dGlvbl0gQnVpbGQgZml4IGFmdGVyIHIyNzIwNTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGFiYTE1
ZTBlZDdhMDE0NjQ1ODJmM2Y5MjgwZTY3OGIzZGIyOGY2MzIuLjUwNTc5OTYwZTg3YzRhNjZiNzlh
YWVmODk5ZjU0OTZhYzVkYTljZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTI1LDYgKzEyNSw3
IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBNb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQuaAogICAgIE1vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIuaAogICAgIE1v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXJyb3IuaAorICAgIE1vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyLmgKICAgICBNb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaAogICAgIE1vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaAogICAgIE1vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uUmVzdWx0RGF0YS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKaW5kZXggMTU4NGMxNzk1ZWFiMjg2MzBmYjA5
NjA1OTVjYWQyNjVkZDM2OGZmNS4uNjc1MDJkNjk1MWRiZDUyZmRhMTU2NTAyZjgwYWNjNTdmMmY0
NGFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uLmNwcApAQCAtMTE5LDYgKzExOSw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb246
OnN0b3AoKQogCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uOjpkaWRTdGFydCgpCiB7CisgICAgbV9o
YXNSZWNlaXZlZFN0YXJ0ID0gdHJ1ZTsKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RhcnRp
bmcpCiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKIApAQCAtMTkxLDE4ICsxOTIs
MzIgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvbjo6ZGlkUmVjZWl2ZVJlc3VsdChWZWN0b3I8U3Bl
ZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYmIHIKIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvbjo6
ZGlkRXJyb3IoY29uc3QgU3BlZWNoUmVjb2duaXRpb25FcnJvciYgZXJyb3IpCiB7Ci0gICAgbV9m
aW5hbFJlc3VsdHMuY2xlYXIoKTsKLSAgICBtX3N0YXRlID0gU3RhdGU6OkluYWN0aXZlOworICAg
IGlmICghbV9oYXNSZWNlaXZlZFN0YXJ0KQorICAgICAgICByZXNldCgpOwogCiAgICAgcXVldWVU
YXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpTcGVlY2gsIFNwZWVjaFJlY29n
bml0aW9uRXJyb3JFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBlcnJvci50
eXBlLCBlcnJvci5tZXNzYWdlKSk7CiB9CiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb246OmRpZEVu
ZCgpCiB7Ci0gICAgbV9maW5hbFJlc3VsdHMuY2xlYXIoKTsKLSAgICBtX3N0YXRlID0gU3RhdGU6
OkluYWN0aXZlOworICAgIHJlc2V0KCk7CiAKICAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQo
KnRoaXMsIFRhc2tTb3VyY2U6OlNwZWVjaCwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW5k
RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwog
fQogCit2b2lkIFNwZWVjaFJlY29nbml0aW9uOjpkaWRDYW5jZWwoKQoreworICAgIEFTU0VSVCht
X3N0YXRlID09IFN0YXRlOjpBYm9ydGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpTdG9wcGluZyk7
CisgICAgQVNTRVJUKCFtX2hhc1JlY2VpdmVkU3RhcnQpOworCisgICAgbV9zdGF0ZSA9IFN0YXRl
OjpJbmFjdGl2ZTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvbjo6cmVzZXQoKQoreworICAg
IG1faGFzUmVjZWl2ZWRTdGFydCA9IGZhbHNlOworICAgIG1fZmluYWxSZXN1bHRzLmNsZWFyKCk7
CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpJbmFjdGl2ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uLmgKaW5kZXggYzIwMGJhZTY1Y2I4NTNhZTMxYmI2YWIyMWUyMjEzMWUxODA0YTA2Zi4uNzRk
NzEwNWEwZDEzMGZkNTRkOWI5ODc2ZGRlYTg0MTczYTFmNmY5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5oCkBAIC02OSw3ICs2OSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIFN0YXJ0aW5nLAogICAgICAgICBSdW5uaW5nLAogICAgICAg
ICBTdG9wcGluZywKLSAgICAgICAgQWJvcnRpbmcsCisgICAgICAgIEFib3J0aW5nCiAgICAgfTsK
IAogICAgIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uKERvY3VtZW50Jik7CkBAIC04Niw2ICs4
Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzdWx0KFZlY3RvcjxTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdERhdGE+JiYgcmVzdWx0RGF0YXMpIGZpbmFsOwogICAgIHZvaWQgZGlk
RXJyb3IoY29uc3QgU3BlZWNoUmVjb2duaXRpb25FcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlk
RW5kKCkgZmluYWw7CisgICAgdm9pZCBkaWRDYW5jZWwoKSBmaW5hbDsKIAogICAgIC8vIEFjdGl2
ZURPTU9iamVjdAogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBm
aW5hbDsKQEAgLTk4LDEyICs5OSwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmRXZlbnRUYXJn
ZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwg
eyBkZXJlZigpOyB9CiAKKyAgICB2b2lkIHJlc2V0KCk7CisKICAgICBTdHJpbmcgbV9sYW5nOwog
ICAgIGJvb2wgbV9jb250aW51b3VzIHsgZmFsc2UgfTsKICAgICBib29sIG1faW50ZXJpbVJlc3Vs
dHMgeyBmYWxzZSB9OwogICAgIHVpbnQ2NF90IG1fbWF4QWx0ZXJuYXRpdmVzIHsgMSB9OwogCiAg
ICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpJbmFjdGl2ZSB9OworICAgIGJvb2wgbV9oYXNSZWNl
aXZlZFN0YXJ0IHsgZmFsc2UgfTsKICAgICBWZWN0b3I8UmVmPFNwZWVjaFJlY29nbml0aW9uUmVz
dWx0Pj4gbV9maW5hbFJlc3VsdHM7CiAgICAgUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbj4gbV9jb25uZWN0aW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50LmgK
aW5kZXggMWMzM2RmZTJlZmM0ZGZiZjJlYzlhMTZhMzg0MmZjMWFlOGNkMTllNC4uZDg5YTVhODY0
ZTQ1NTJhZjBjODNmMzA0YTFhNThkM2NjM2RjMDg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50LmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlUmVzdWx0KFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+JiYgcmVz
dWx0RGF0YXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRXJyb3IoY29uc3QgU3BlZWNoUmVj
b2duaXRpb25FcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kKCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoKSA9IDA7CiAKICAgICBTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50aWZpZXI7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKaW5kZXggNjM4ODhhOTBhNDk0ZDNlNjcyZWZl
YzFlMDNiNWMwZmIyY2ZjOTFiMy4uZmExOGM3N2E2ZTBhMGUyMDFjZDE2Nzg5ZWE0YjA2ZTQwOGRm
ZTI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTM1LDYgKzM2LDggQEAgY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4KIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Qo
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmKTsKIAorICAgIHZvaWQgc2V0UGVybWlzc2lv
blJlcXVlc3RJZGVudGlmaWVyKE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3RJZGVudGlmaWVyPiBwZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIpIHsgbV9wZXJtaXNz
aW9uUmVxdWVzdElkZW50aWZpZXIgPSBwZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXI7IH0KKyAg
ICBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllcj4g
cGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyKCkgeyByZXR1cm4gbV9wZXJtaXNzaW9uUmVxdWVz
dElkZW50aWZpZXI7IH0KICAgICBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyIGNsaWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2luZm8uY2xpZW50SWRl
bnRpZmllcjsgfQogICAgIGNvbnN0IFN0cmluZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1faW5m
by5sYW5nOyB9CiAgICAgYm9vbCBjb250aW51b3VzKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmNv
bnRpbnVvdXM7OyB9CkBAIC00NSw2ICs0OCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIG1faW5mbzsKKyAgICBPcHRpb25hbDxTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllcj4gbV9wZXJtaXNzaW9uUmVxdWVz
dElkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaApp
bmRleCA4OTE0OTE3OTNmNGUwMWVjMmZmNjAxMDdjYjQ4NWY0ODhmYTQzZTg0Li4zYjY5Yjc0NTdh
MTZiMDhiNzJjOWUyOTNmNzk4ZThhNjU3YmE0MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKQEAgLTQ0LDcg
KzQ0LDggQEAgZW51bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUgewogICAgIFJl
c3VsdCwKICAgICBOb01hdGNoLAogICAgIEVycm9yLAotICAgIEVuZAorICAgIEVuZCwKKyAgICBD
YW5jZWwKIH07CiAKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pemVyLmNwcAppbmRleCBjYWQ0OGE5NzQyYmI5ZTAxNDM0ZmJhODVkZDBj
MTBhOWMwMWZmNDg4Li5hZDBhNmIzMjZmZGQzZmRlNDgyNzk2MzRkZDJjNWFmZGUzOGQ2YWIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVy
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNw
ZWVjaFJlY29nbml6ZXIuaCIKIAorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5o
IgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgiCiAjaW5jbHVkZSA8d3RmL01l
ZGlhVGltZS5oPgogCkBAIC0zNiw0OCArMzcsNjUgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U3BlZWNoUmVjb2duaXplcjo6U3BlZWNoUmVjb2duaXplcihEZWxlZ2F0ZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCi0gICAgOiBtX2RlbGVnYXRlQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCiB7Cisg
ICAgbV9kZWxlZ2F0ZUNhbGxiYWNrID0gW3RoaXMsIGRlbGVnYXRlQ2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmIHVwZGF0ZSkgeworICAg
ICAgICBBU1NFUlQoY2xpZW50SWRlbnRpZmllcigpID09IHVwZGF0ZS5jbGllbnRJZGVudGlmaWVy
KCkpOworICAgICAgICBkZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7CisKKyAgICAgICAgaWYgKHVw
ZGF0ZS50eXBlKCkgPT0gU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvcikKKyAgICAg
ICAgICAgIGFib3J0KCk7CisgICAgICAgIGlmICh1cGRhdGUudHlwZSgpID09ICBTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU6OkVuZCkKKyAgICAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6SW5h
Y3RpdmU7CisgICAgfTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpyZXNldCgpCitTcGVl
Y2hSZWNvZ25pemVyOjp+U3BlZWNoUmVjb2duaXplcigpCiB7Ci0gICAgaWYgKCFtX2NsaWVudElk
ZW50aWZpZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0b3BDYXB0dXJlKCk7Ci0gICAgcmVz
ZXRSZWNvZ25pdGlvbigpOwotICAgIG1fY2xpZW50SWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsK
KyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWJvcnRpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6
U3RvcHBpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmluZykKKyAgICAgICAgbV9kZWxlZ2F0
ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoY2xpZW50SWRlbnRpZmll
cigpLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOwogfQogCi12b2lkIFNwZWVj
aFJlY29nbml6ZXI6OmFib3J0KCkKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6YWJvcnQoT3B0aW9u
YWw8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gZXJyb3IpCiB7Ci0gICAgQVNTRVJUKG1fY2xpZW50
SWRlbnRpZmllcik7CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFib3J0aW5nIHx8IG1fc3Rh
dGUgPT0gU3RhdGU6OkluYWN0aXZlKQorICAgICAgICByZXR1cm47CisgICAgbV9zdGF0ZSA9IFN0
YXRlOjpBYm9ydGluZzsKKworICAgIGlmIChlcnJvcikKKyAgICAgICAgbV9kZWxlZ2F0ZUNhbGxi
YWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihjbGllbnRJZGVudGlmaWVy
KCksICplcnJvcikpOworCiAgICAgc3RvcENhcHR1cmUoKTsKICAgICBhYm9ydFJlY29nbml0aW9u
KCk7CiB9CiAKIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcCgpCiB7Ci0gICAgQVNTRVJUKG1f
Y2xpZW50SWRlbnRpZmllcik7CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFib3J0aW5nIHx8
IG1fc3RhdGUgPT0gU3RhdGU6OkluYWN0aXZlKQorICAgICAgICByZXR1cm47CisgICAgbV9zdGF0
ZSA9IFN0YXRlOjpTdG9wcGluZzsKKwogICAgIHN0b3BDYXB0dXJlKCk7CiAgICAgc3RvcFJlY29n
bml0aW9uKCk7CiB9CiAKK1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIgU3BlZWNoUmVjb2duaXplcjo6Y2xpZW50SWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcmVxdWVzdC0+Y2xpZW50SWRlbnRpZmllcigpOworfQorCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydChTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFJlZjxSZWFsdGlt
ZU1lZGlhU291cmNlPiYmIHNvdXJjZSwgYm9vbCBtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVk
LCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29udGludW91cywgYm9vbCBp
bnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKQordm9pZCBTcGVlY2hSZWNv
Z25pemVyOjpzdGFydChzdGQ6OnVuaXF1ZV9wdHI8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiBy
ZXF1ZXN0LCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3VyY2UsIGJvb2wgbW9ja1NwZWVj
aFJlY29nbml0aW9uRW5hYmxlZCkKIHsKLSAgICBBU1NFUlQoIW1fY2xpZW50SWRlbnRpZmllcik7
Ci0gICAgbV9jbGllbnRJZGVudGlmaWVyID0gY2xpZW50SWRlbnRpZmllcjsKLSAgICBtX2RlbGVn
YXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVu
dGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlN0YXJ0KSk7Ci0KLSAgICBpZiAo
IXN0YXJ0UmVjb2duaXRpb24obW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCwgY2xpZW50SWRl
bnRpZmllciwgbG9jYWxlSWRlbnRpZmllciwgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1h
eEFsdGVybmF0aXZlcykpIHsKLSAgICAgICAgYXV0byBlcnJvciA9IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6U2Vy
dmljZU5vdEFsbG93ZWQsICJGYWlsZWQgdG8gc3RhcnQgcmVjb2duaXRpb24iX3MgfTsKLSAgICAg
ICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpj
cmVhdGVFcnJvcihjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGVycm9yKSkpOworICAgIG1fcmVx
dWVzdCA9IHN0ZDo6ZXhjaGFuZ2UocmVxdWVzdCwgbnVsbHB0cik7CisgICAgaWYgKCFzdGFydFJl
Y29nbml0aW9uKG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQsIGNsaWVudElkZW50aWZpZXIo
KSwgbV9yZXF1ZXN0LT5sYW5nKCksIG1fcmVxdWVzdC0+Y29udGludW91cygpLCBtX3JlcXVlc3Qt
PmludGVyaW1SZXN1bHRzKCksIG1fcmVxdWVzdC0+bWF4QWx0ZXJuYXRpdmVzKCkpKSB7CisgICAg
ICAgIGF1dG8gZXJyb3IgPSBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRp
b25FcnJvclR5cGU6OlNlcnZpY2VOb3RBbGxvd2VkLCAiRmFpbGVkIHRvIHN0YXJ0IHJlY29nbml0
aW9uIl9zIH07CisgICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRlbnRpZmllcigpLCBXVEZNb3ZlKGVycm9yKSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgbV9zdGF0ZSA9IFN0YXRlOjpSdW5uaW5nOwor
ICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNs
aWVudElkZW50aWZpZXIoKSwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTdGFydCkpOwog
ICAgIHN0YXJ0Q2FwdHVyZShXVEZNb3ZlKHNvdXJjZSkpOwogfQogCkBAIC04OCwxNSArMTA2LDEx
IEBAIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRDYXB0dXJlKFJlZjxSZWFsdGltZU1lZGlh
U291cmNlPiYmIHNvdXJjZSkKICAgICAgICAgICAgIHdlYWtUaGlzLT5kYXRhQ2FwdHVyZWQodGlt
ZSwgZGF0YSwgZGVzY3JpcHRpb24sIHNhbXBsZUNvdW50KTsKICAgICB9OwogCi0gICAgYXV0byBz
dGF0ZVVwZGF0ZUNhbGxiYWNrID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyld
KGNvbnN0IGF1dG8mIHVwZGF0ZSkgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIEFTU0VSVChtX2NsaWVudElkZW50aWZpZXIgJiYgbV9jbGll
bnRJZGVudGlmaWVyLnZhbHVlKCkgPT0gdXBkYXRlLmNsaWVudElkZW50aWZpZXIoKSk7Ci0gICAg
ICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOworICAgIGF1dG8gc3RhdGVVcGRhdGVDYWxs
YmFjayA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShjb25zdCBhdXRvJiB1cGRhdGUp
IHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgd2Vha1RoaXMtPm1fZGVsZWdh
dGVDYWxsYmFjayh1cGRhdGUpOwogICAgIH07Ci0KLSAgICBtX3NvdXJjZSA9IG1ha2VVbmlxdWU8
U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlPigqbV9jbGllbnRJZGVudGlmaWVyLCBXVEZN
b3ZlKGRhdGFDYWxsYmFjayksIFdURk1vdmUoc3RhdGVVcGRhdGVDYWxsYmFjayksIFdURk1vdmUo
c291cmNlKSk7CisgICAgbV9zb3VyY2UgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uQ2Fw
dHVyZVNvdXJjZT4oY2xpZW50SWRlbnRpZmllcigpLCBXVEZNb3ZlKGRhdGFDYWxsYmFjayksIFdU
Rk1vdmUoc3RhdGVVcGRhdGVDYWxsYmFjayksIFdURk1vdmUoc291cmNlKSk7CiB9CiAKICNlbmRp
ZgpAQCAtMTA3LDcgKzEyMSw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcENhcHR1cmUo
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX3NvdXJjZSA9IG51bGxwdHI7Ci0gICAgbV9kZWxl
Z2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRl
bnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpBdWRpb0VuZCkpOworICAgIG1f
ZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVudElk
ZW50aWZpZXIoKSwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpBdWRpb0VuZCkpOwogfQog
CiAjaWYgIUhBVkUoU1BFRUNIUkVDT0dOSVpFUikKQEAgLTExOCwyNyArMTMyLDE3IEBAIHZvaWQg
U3BlZWNoUmVjb2duaXplcjo6ZGF0YUNhcHR1cmVkKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBs
YXRmb3JtQXVkaW9EYXRhJiwKIAogYm9vbCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0
aW9uKGJvb2wsIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYsIGJvb2wsIGJvb2wsIHVpbnQ2NF90KQogewotICAgIG1faXNSZWNvZ25pemlu
ZyA9IHRydWU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6
YWJvcnRSZWNvZ25pdGlvbigpCiB7Ci0gICAgbV9pc1JlY29nbml6aW5nID0gZmFsc2U7Ci0gICAg
bV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xp
ZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKKyAgICBt
X2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJ
ZGVudGlmaWVyKCksIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CiB9CiAKIHZv
aWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcFJlY29nbml0aW9uKCkKIHsKLSAgICBtX2lzUmVjb2du
aXppbmcgPSBmYWxzZTsKLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25V
cGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZVR5cGU6OkVuZCkpOwotfQotCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRp
b24oKQotewotICAgIGlmICghbV9pc1JlY29nbml6aW5nKQotICAgICAgICByZXR1cm47Ci0gICAg
YWJvcnRSZWNvZ25pdGlvbigpOworICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZpZXIoKSwgU3BlZWNoUmVjb2duaXRpb25V
cGRhdGVUeXBlOjpFbmQpKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgKaW5kZXggMTYwMmFmNzY2OWVjOWJkYjk1NDQx
YzYyMzAyMDI0MWQxYzM0NDJlMi4uODc0MmUwNWRiZWM3OWJhMDViNTc0MzYyOWU2NzljYmQ3YjE2
NGIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml6ZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25D
YXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uRXJyb3IuaCIKIAog
I2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBA
IC0zNSw2ICszNiw3IEBAIE9CSkNfQ0xBU1MgV2ViU3BlZWNoUmVjb2duaXplclRhc2s7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OwogY2xh
c3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU7CiAKIGNsYXNzIFNwZWVjaFJlY29nbml6ZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXplcj4gewpAQCAtNDIsMjAgKzQ0LDI0
IEBAIGNsYXNzIFNwZWVjaFJlY29nbml6ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNo
UmVjb2duaXplcj4gewogcHVibGljOgogICAgIHVzaW5nIERlbGVnYXRlQ2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik+OwogICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNwZWVjaFJlY29nbml6ZXIoRGVsZWdhdGVDYWxsYmFjayYmKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB+U3BlZWNoUmVjb2duaXplcigpID0gZGVmYXVsdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCB+U3BlZWNoUmVjb2duaXplcigpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIsIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmLCBib29sIG1v
Y2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQsIGNvbnN0IFN0cmluZyYgbG9jYWxlSWRlbnRpZmll
ciwgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRl
cm5hdGl2ZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnQoc3RkOjp1bmlxdWVfcHRy
PFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4sIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmLCBi
b29sIG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQpOwogI2VuZGlmCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZXNldCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJvcnQoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFib3J0KE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJy
b3I+ID0gV1RGOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3AoKTsKIAot
ICAgIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXI+
IGN1cnJlbnRDbGllbnRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRJZGVudGlm
aWVyOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgU3BlZWNoUmVjb2du
aXRpb25DYXB0dXJlU291cmNlKiBzb3VyY2UoKSB7IHJldHVybiBtX3NvdXJjZS5nZXQoKTsgfQog
CiBwcml2YXRlOgotICAgIHZvaWQgc3RvcEludGVybmFsKCk7CisgICAgZW51bSBjbGFzcyBTdGF0
ZSB7CisgICAgICAgIEluYWN0aXZlLAorICAgICAgICBSdW5uaW5nLAorICAgICAgICBTdG9wcGlu
ZywKKyAgICAgICAgQWJvcnRpbmcKKyAgICB9OwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
ICAgICB2b2lkIHN0YXJ0Q2FwdHVyZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7CkBAIC02
NSwxNyArNzEsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oYm9vbCBt
b2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkLCBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29u
dGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgYWx0ZXJuYXRpdmVzKTsKICAg
ICB2b2lkIGFib3J0UmVjb2duaXRpb24oKTsKICAgICB2b2lkIHN0b3BSZWNvZ25pdGlvbigpOwot
ICAgIHZvaWQgcmVzZXRSZWNvZ25pdGlvbigpOwogCi0gICAgT3B0aW9uYWw8U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcj4gbV9jbGllbnRJZGVudGlmaWVyOwogICAg
IERlbGVnYXRlQ2FsbGJhY2sgbV9kZWxlZ2F0ZUNhbGxiYWNrOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IG1fcmVxdWVzdDsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlPiBtX3NvdXJjZTsKKyAgICBTdGF0ZSBt
X3N0YXRlIHsgU3RhdGU6OkluYWN0aXZlIH07CiAKICNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIp
CiAgICAgUmV0YWluUHRyPFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrPiBtX3Rhc2s7Ci0jZWxzZQot
ICAgIC8vIEZvciB0ZXN0aW5nLgotICAgIGJvb2wgbV9pc1JlY29nbml6aW5nIHsgZmFsc2UgfTsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
Y29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCmluZGV4IGJkMmZmZDRiNWNmM2E5
YjBjMGM2YTE4NmJkODdhYWUzNTAxYTY5NzYuLjdkNWJjOGZiYWQ5NjljY2NkNTMxZDBkOTlmYTcy
MDU4MTViYzg0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2Nv
Y29hL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0KQEAgLTQ1LDExICs0NSw5IEBA
IHZvaWQgU3BlZWNoUmVjb2duaXplcjo6ZGF0YUNhcHR1cmVkKGNvbnN0IE1lZGlhVGltZSYgdGlt
ZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhCiBib29sIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0UmVj
b2duaXRpb24oYm9vbCBtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkLCBTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bG9jYWxlSWRlbnRpZmllciwgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1
aW50NjRfdCBhbHRlcm5hdGl2ZXMpCiB7CiAgICAgYXV0byB0YXNrQ2xhc3MgPSBtb2NrU3BlZWNo
UmVjb2duaXRpb25FbmFibGVkID8gW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayBjbGFzc10g
OiBbV2ViU3BlZWNoUmVjb2duaXplclRhc2sgY2xhc3NdOwotICAgIG1fdGFzayA9IGFkb3B0TlMo
W1t0YXNrQ2xhc3MgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjppZGVudGlmaWVyIGxvY2FsZTps
b2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6Y29udGludW91cyByZXBvcnRJ
bnRlcmltUmVzdWx0czppbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6YWx0ZXJuYXRpdmVz
IGRlbGVnYXRlQ2FsbGJhY2s6W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNv
bnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiB1cGRhdGUpIHsKLSAgICAgICAg
aWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX2RlbGVnYXRl
Q2FsbGJhY2sodXBkYXRlKTsKKyAgICBtX3Rhc2sgPSBhZG9wdE5TKFtbdGFza0NsYXNzIGFsbG9j
XSBpbml0V2l0aElkZW50aWZpZXI6aWRlbnRpZmllciBsb2NhbGU6bG9jYWxlSWRlbnRpZmllciBk
b011bHRpcGxlUmVjb2duaXRpb25zOmNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6aW50
ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOmFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNr
Olt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZSYgdXBkYXRlKSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5tX2RlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKICAgICB9XSk7CiAKICAg
ICByZXR1cm4gISFtX3Rhc2s7CkBAIC02NywxNSArNjUsNiBAQCB2b2lkIFNwZWVjaFJlY29nbml6
ZXI6OmFib3J0UmVjb2duaXRpb24oKQogICAgIFttX3Rhc2sgYWJvcnRdOwogfQogCi12b2lkIFNw
ZWVjaFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24oKQotewotICAgIGlmICghbV90YXNrKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHRhc2sgPSBzdGQ6OmV4Y2hhbmdlKG1fdGFzaywg
bnVsbHB0cik7Ci0gICAgW3Rhc2sgYWJvcnRdOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODBlNTkxZDg3YzM5YzE2
MjdjMDVlZWZkYzBkNzExNDVjMWU4NmEyNi4uNTFmMDBjZWRhNzYzMjhmMThlOGY3OTdiZDhmMmQ5
YmU3NDI2OGMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMjc4MSw2ICsyNzgxLDcgQEAKIAkJOTM1MDBGMzIxM0ZERTNCRTAw
OTlFQzI0IC8qIE5TU2Nyb2xsZXJJbXBEZXRhaWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzUwMEYzMTEzRkRFM0JFMDA5OUVDMjQgLyogTlNTY3Jv
bGxlckltcERldGFpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5MzUyMDdCRTA5QkQ0MTBBMDBGMjAzOEQgLyogTG9jYWxpemVkU3RyaW5ncy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1MjA3QkQw
OUJENDEwQTAwRjIwMzhEIC8qIExvY2FsaXplZFN0cmluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzU1RUY1MTI1M0E0Mjc5MDA2RkY0QTQg
LyogSlNBYnN0cmFjdFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5MzU1RUY0RjI1M0E0Mjc4MDA2RkY0QTQgLyogSlNBYnN0cmFjdFJhbmdlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTM1QkRC
MTkyNUM4REI2NzAwOEZBRTI5IC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzVCREIxODI1QzhEN0IyMDA4RkFFMjkgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MzVDNDc2MzA5QUM0Q0U2MDBBNkFBQjQgLyogTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM1QzQ3NjIwOUFDNENFNjAwQTZBQUI0IC8qIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMuaCAqLzsgfTsKIAkJOTM1QzQ3NjgwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTM1QzQ3NjYwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNUM0NzY5
MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybU1vdXNlRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNUM0NzY3MDlBQzRENDMwMEE2QUFCNCAv
KiBQbGF0Zm9ybU1vdXNlRXZlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTE0OTIsNiArMTE0OTMsNyBAQAogCQk5MzU1RUY0RjI1M0E0Mjc4
MDA2RkY0QTQgLyogSlNBYnN0cmFjdFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTQWJzdHJhY3RSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MzU1RUY1MDI1M0E0Mjc5MDA2RkY0QTQgLyogSlNBYnN0cmFjdFJhbmdlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQWJzdHJhY3RSYW5nZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNTVFRjUzMjUzQTRENUEwMDZGRjRBNCAvKiBKU0Fic3Ry
YWN0UmFuZ2VDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBYnN0cmFjdFJhbmdlQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM1QkRCMTgyNUM4RDdCMjAw
OEZBRTI5IC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RJZGVudGlm
aWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUM0NzYyMDlBQzRDRTYwMEE2
QUFCNCAvKiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1QzQ3NjYwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1QzQ3Njcw
OUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtTW91c2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybU1vdXNlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI1ODAyLDYgKzI1ODA0LDcgQEAKIAkJCQk5MzQ5NTBDMDI1Mzk0MzUwMDA5
OUYxNzEgLyogU3BlZWNoUmVjb2duaXRpb25FdmVudC5jcHAgKi8sCiAJCQkJOTM0OTUwQzkyNTM5
NDM1NTAwOTlGMTcxIC8qIFNwZWVjaFJlY29nbml0aW9uRXZlbnQuaCAqLywKIAkJCQk5MzQ5NTBC
NDI1Mzk0MzQ5MDA5OUYxNzEgLyogU3BlZWNoUmVjb2duaXRpb25FdmVudC5pZGwgKi8sCisJCQkJ
OTM1QkRCMTgyNUM4RDdCMjAwOEZBRTI5IC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3RJZGVudGlmaWVyLmggKi8sCiAJCQkJOTNBMDQ4MjIyNTQ5NTRFODAwMEFDNDYyIC8qIFNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdC5jcHAgKi8sCiAJCQkJOTNBMDQ4MUYyNTQ5NTRFNjAwMEFD
NDYyIC8qIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oICovLAogCQkJCTkzRDZCNzZGMjU0Qjkw
MkQwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmggKi8sCkBAIC0zMTU3
Niw3ICszMTU3OSw2IEBACiAJCQkJNzdENTEwMTcxRUQ2MDIyMjAwREE0Qzg3IC8qIENyZWRlbnRp
YWxzQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUEwNTIzMzEwNTg3NzRGMDBDQzlF
OTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENDgxRjAyMTQ2
QjVDNTUwMEFBNzgzNCAvKiBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJRjQ4QjdENTMyNUMzNDFFNjAwOUU3NUREIC8qIEltYWdlRXh0cmFjdGlvblJlc3VsdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDNDE2MTIwRjY1NjJGRDAwOTJEMkZCIC8qIENyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFBQkU2N0IxRDA1ODBEQjAw
NkQ4NjJEIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTFDNDE1REEwRjY1NUQ2RjAwOTJEMkZCIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0
Q2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzI1MjcsNiArMzI1MjksNyBAQAogCQkJCUNEMTlG
RUFFMUY1NzRCNkQwMDBDNDJGQiAvKiBJbWFnZURlY29kZXJBVkZPYmpDLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NTVCODdFRDFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3MjA1QUI2MTIzOTI5MTAwMEIxNzM4MCAvKiBJbWFnZURvY3VtZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDhCN0Q1MzI1QzM0MUU2MDA5RTc1REQgLyogSW1hZ2VF
eHRyYWN0aW9uUmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTc2QTU2NTFEODhBNzA4MDBD
Q0MwNEMgLyogSW1hZ2VGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQzIxMjUxRjEy
RDAwM0VGMjY5IC8qIEltYWdlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODk1ODI1
NjBFODU3QTdFMDBGODJDODMgLyogSW1hZ2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ2
NzMsNiArMzQ2NzYsNyBAQAogCQkJCTkzNDk1MEQwMjUzOTQzNkMwMDk5RjE3MSAvKiBTcGVlY2hS
ZWNvZ25pdGlvbkVycm9yQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0OTUwRDEyNTM5NDM3
MDAwOTlGMTcxIC8qIFNwZWVjaFJlY29nbml0aW9uRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTM0OTUwRDIyNTM5NDM3MzAwOTlGMTcxIC8qIFNwZWVjaFJlY29nbml0aW9uRXZlbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTkzNUJEQjE5MjVDOERCNjcwMDhGQUUyOSAvKiBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNBMDQ4MjgyNTQ5NTUwNjAwMEFDNDYyIC8qIFNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzQTA0ODJBMjU0OTU1MTQwMDBBQzQ2MiAvKiBTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCNzcwMjU0Qjk4QTAw
MDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKaW5kZXggZmU2ZjVlOGZkOTUxYTVkMTAwOGJkZDZi
MTNjNjBlN2YyYzBkNGM1My4uZTE1ZDNiNTA2YTdlN2RkZWRkM2Y0ODNjNzE2MDQ4NzI0MzI4NTBi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKQEAgLTc1LDExICs3NSwyNiBAQCBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcigpCiAgICAgICAgIHJlcXVlc3QtPmNvbXBsZXRlKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6Tm90
QWxsb3dlZCwgIlBlcm1pc3Npb24gbWFuYWdlciBoYXMgZXhpdGVkIl9zIH0pOwogfQogICAgIAot
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KGNvbnN0IFN0
cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3RDYWxsYmFjayYmIGNvbXBsZXRpb250SGFuZGxlcikKK09wdGlvbmFsPFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyPiBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywg
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RD
YWxsYmFjayYmIGNvbXBsZXRpb250SGFuZGxlcikKIHsKICAgICBtX3JlcXVlc3RzLmFwcGVuZChT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUobGFuZywgb3JpZ2luLCBm
cmFtZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbnRIYW5kbGVyKSkpOwogICAgIGlmICht
X3JlcXVlc3RzLnNpemUoKSA9PSAxKQogICAgICAgICBzdGFydE5leHRSZXF1ZXN0KCk7CisgICAg
cmV0dXJuIG1fcmVxdWVzdHMuaXNFbXB0eSgpID8gV1RGOjpudWxsb3B0IDogT3B0aW9uYWw8V2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXI+IHsgbV9y
ZXF1ZXN0cy5sYXN0KCktPmlkZW50aWZpZXIoKSB9OworfQorCit2b2lkIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNhbmNlbFJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIgcGVybWlzc2lvblJlcXVlc3RJZGVudGlm
aWVyKQoreworICAgIGlmIChtX3JlcXVlc3RzLmZpcnN0KCktPmlkZW50aWZpZXIoKSA9PSBwZXJt
aXNzaW9uUmVxdWVzdElkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmVx
dWVzdHMgPSBzdGQ6OmV4Y2hhbmdlKG1fcmVxdWVzdHMsIHsgfSk7CisgICAgd2hpbGUgKCFyZXF1
ZXN0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byByZXF1ZXN0ID0gcmVxdWVzdHMudGFrZUZp
cnN0KCk7CisgICAgICAgIGlmIChyZXF1ZXN0LT5pZGVudGlmaWVyKCkgPT0gcGVybWlzc2lvblJl
cXVlc3RJZGVudGlmaWVyKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIG1fcmVxdWVz
dHMuYXBwZW5kKFdURk1vdmUocmVxdWVzdCkpOworICAgIH0KIH0KIAogdm9pZCBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydE5leHRSZXF1ZXN0KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIuaAppbmRleCAwZGU1Zjk0N2I0NjMyODBmNGU0ZjM1MWQ4Y2U3ZTZhOTkyYmM5NDE1
Li4wMjZiMDM1YTBjMGY3YjU0ZDQwZjEzYzlkZWQ0YWQ3NTJjZDUzMTBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtMzksNyArNDAs
OCBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBDaGVja1Jlc3VsdCB7IERlbmllZCwgR3JhbnRl
ZCwgVW5rbm93biB9OwogICAgIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIoV2ViUGFnZVByb3h5Jik7CiAgICAgflNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIoKTsKLSAgICB2b2lkIHJlcXVlc3QoY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayYmKTsKKyAgICBPcHRpb25hbDxXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllcj4gcmVxdWVzdChj
b25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxi
YWNrJiYpOworICAgIHZvaWQgY2FuY2VsUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllcik7CiAKICAgICB2b2lkIGRlY2lkZUJ5RGVmYXVs
dEFjdGlvbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwogICAgIFdlYlBhZ2VQcm94eSYgcGFnZSgpIHsgcmV0dXJuIG1fcGFn
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCmluZGV4IGE2YzRkY2U5OTVlNDg5MGFjNzExZjBi
NjIwMmNmMTY3NTZkYzM4MmYuLjViY2VjOTdkYThlYzY3YjNkNTcyZWQxNWMxNDk0MjgzZmI0Yjhm
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TcGVlY2hSZWNvZ25pdGlvbkVycm9yLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTQ4LDE4ICs0OSwyMSBAQCBwdWJsaWM6CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoZXJyb3IpKTsKICAgICB9CiAKKyAgICBXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyKCkgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4oKSBj
b25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIGNvbnN0IFN0cmluZyYgbGFuZygpIGNvbnN0
IHsgcmV0dXJuIG1fbGFuZzsgfQogICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lSWRlbnRpZmllcjsgfQogCiBwcml2YXRl
OgogICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoY29uc3QgU3RyaW5nJiBs
YW5nLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIDogbV9sYW5nKGxhbmcp
CisgICAgICAgIDogbV9pZGVudGlmaWVyKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3RJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgICAgICAsIG1fbGFuZyhsYW5n
KQogICAgICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAgICAgLCBtX2ZyYW1lSWRlbnRpZmll
cihmcmFtZUlkZW50aWZpZXIpCiAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICB7IH0KIAorICAgIFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBTdHJp
bmcgbV9sYW5nOwogICAgIFdlYkNvcmU6OkNsaWVudE9yaWdpbiBtX29yaWdpbjsKICAgICBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgbV9mcmFtZUlkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKaW5kZXggOWY5Njc0
YWViNWVkZWUzODYzNzkzYTYwMmE2YzZhMGVmZTM5N2Y1Yy4uZTg5NDdmYjUzYmM5MjU4NGYxZDU1
YjgyZmNmYTkwYjdkNzYyODkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uU2VydmVyLmgiCiAKKyNpbmNs
dWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVXNl
ck1lZGlhUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNp
bmNsdWRlICJXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5oIgpAQCAtMzYs
MTQgKzM3LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1TcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmIHBlcm1pc3Npb25DaGVja2VyLCBTcGVl
Y2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkJiYgY2hlY2tJ
ZkVuYWJsZWQKK1NwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyR2V0dGVyJiYgcGVybWlzc2lvbk1hbmFnZXJHZXR0ZXIsIFNwZWVjaFJlY29nbml0aW9uQ2hl
Y2tJZk1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQmJiBjaGVja0lmRW5hYmxlZAogI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCiAgICAgLCBSZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rp
b24mJiBmdW5jdGlvbgogI2VuZGlmCiAgICAgKQogICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUo
Y29ubmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAsIG1fcGVy
bWlzc2lvbkNoZWNrZXIoV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlcikpCisgICAgLCBtX3Blcm1p
c3Npb25NYW5hZ2VyR2V0dGVyKFdURk1vdmUocGVybWlzc2lvbk1hbmFnZXJHZXR0ZXIpKQogICAg
ICwgbV9jaGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZChXVEZNb3ZlKGNoZWNrSWZF
bmFibGVkKSkKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwgbV9yZWFsdGltZU1lZGlh
U291cmNlQ3JlYXRlRnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCkBAIC02Myw2MiArNjQsNTAg
QEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWQKIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cjo6cmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBtX3Blcm1pc3Npb25DaGVja2VyKHJlcXVlc3QubGFu
ZygpLCByZXF1ZXN0LmNsaWVudE9yaWdpbigpLCByZXF1ZXN0LmZyYW1lSWRlbnRpZmllcigpLCBb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgd2Vha1JlcXVlc3QgPSBtYWtlV2Vh
a1B0cihyZXF1ZXN0KV0oYXV0byBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghd2Vha1Ro
aXMpCi0gICAgICAgICAgICByZXR1cm47CisgICAgYXV0byogcGVybWlzc2lvbk1hbmFnZXIgPSBt
X3Blcm1pc3Npb25NYW5hZ2VyR2V0dGVyKCk7CisgICAgaWYgKCFwZXJtaXNzaW9uTWFuYWdlcikg
eworICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSByZXF1ZXN0LmNsaWVudElkZW50aWZpZXIoKTsK
KyAgICAgICAgbV9yZXF1ZXN0cy5yZW1vdmUoaWRlbnRpZmllcik7CisgICAgICAgIHNlbmRVcGRh
dGUoaWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJv
ciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uRXJyb3JUeXBlOjpOb3RBbGxvd2VkLCAiUGFnZSBubyBsb25nZXIgZXhpc3RzIl9zIH0p
OworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgICAgIGlmICghd2Vha1JlcXVlc3QpCisg
ICAgYXV0byBwZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIgPSBwZXJtaXNzaW9uTWFuYWdlci0+
cmVxdWVzdChyZXF1ZXN0LmxhbmcoKSwgcmVxdWVzdC5jbGllbnRPcmlnaW4oKSwgcmVxdWVzdC5m
cmFtZUlkZW50aWZpZXIoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdl
YWtSZXF1ZXN0ID0gbWFrZVdlYWtQdHIocmVxdWVzdCldKGF1dG8gZXJyb3IpIG11dGFibGUgewor
ICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrUmVxdWVzdCkKICAgICAgICAgICAgIHJldHVy
bjsKIAorICAgICAgICB3ZWFrUmVxdWVzdC0+c2V0UGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVy
KFdURjo6bnVsbG9wdCk7CisKICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gd2Vha1JlcXVlc3Qt
PmNsaWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgYXV0byByZXF1ZXN0ID0gbV9yZXF1ZXN0cy50
YWtlKGlkZW50aWZpZXIpOwogICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIG1fcmVx
dWVzdHMucmVtb3ZlKGlkZW50aWZpZXIpOwogICAgICAgICAgICAgc2VuZFVwZGF0ZShpZGVudGlm
aWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yLCBXVEZNb3Zl
KGVycm9yKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBoYW5k
bGVSZXF1ZXN0KCp3ZWFrUmVxdWVzdCk7CisgICAgICAgIGhhbmRsZVJlcXVlc3QoV1RGTW92ZShy
ZXF1ZXN0KSk7CiAgICAgfSk7CisKKyAgICBpZiAocGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVy
KQorICAgICAgICByZXF1ZXN0LnNldFBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllcihwZXJtaXNz
aW9uUmVxdWVzdElkZW50aWZpZXIpOwogfQogCi12b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
OjpoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVz
dCkKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3Qoc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gcmVxdWVzdCkKIHsKLSAg
ICBpZiAoIW1fcmVjb2duaXplcikgewotICAgICAgICBtX3JlY29nbml6ZXIgPSBtYWtlVW5pcXVl
PFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI+KFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpXShhdXRvJiB1cGRhdGUpIHsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBhdXRvIGNsaWVudElkZW50aWZpZXIg
PSB1cGRhdGUuY2xpZW50SWRlbnRpZmllcigpOwotICAgICAgICAgICAgaWYgKCFtX3JlcXVlc3Rz
LmNvbnRhaW5zKGNsaWVudElkZW50aWZpZXIpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICAgICAgc2VuZFVwZGF0ZSh1cGRhdGUpOwotCi0gICAgICAgICAgICBhdXRvIHR5cGUg
PSB1cGRhdGUudHlwZSgpOwotICAgICAgICAgICAgaWYgKHR5cGUgIT0gV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvciAmJiB0eXBlICE9IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAgICAgaWYgKG1faXNSZXNldHRpbmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgbV9pc1Jlc2V0dGluZyA9IHRydWU7Ci0KLSAgICAgICAgICAgIG1fcmVjb2duaXpl
ci0+cmVzZXQoKTsKLSAgICAgICAgICAgIG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZp
ZXIpOwotICAgICAgICAgICAgbV9pc1Jlc2V0dGluZyA9IGZhbHNlOwotICAgICAgICB9KTsKLSAg
ICB9Ci0KLSAgICBpZiAoYXV0byBjdXJyZW50Q2xpZW50SWRlbnRpZmllciA9IG1fcmVjb2duaXpl
ci0+Y3VycmVudENsaWVudElkZW50aWZpZXIoKSkgeworICAgIGlmIChtX3JlY29nbml6ZXIpIHsK
ICAgICAgICAgYXV0byBlcnJvciA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QWJvcnRlZCwgIkFub3RoZXIgcmVx
dWVzdCBpcyBzdGFydGVkIl9zIH07Ci0gICAgICAgIHNlbmRVcGRhdGUoKmN1cnJlbnRDbGllbnRJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yLCBl
cnJvcik7Ci0gICAgICAgIG1fcmVjb2duaXplci0+cmVzZXQoKTsKKyAgICAgICAgbV9yZWNvZ25p
emVyLT5hYm9ydChlcnJvcik7CiAgICAgfQogCi0gICAgYXV0byBjbGllbnRJZGVudGlmaWVyID0g
cmVxdWVzdC5jbGllbnRJZGVudGlmaWVyKCk7CisgICAgbV9yZWNvZ25pemVyID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyPihbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlz
KV0oYXV0byYgdXBkYXRlKSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIHdl
YWtUaGlzLT5zZW5kVXBkYXRlKHVwZGF0ZSk7CisgICAgfSk7CisKKyAgICBhdXRvIGNsaWVudElk
ZW50aWZpZXIgPSByZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCk7CiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKICAgICBhdXRvIHNvdXJjZU9yRXJyb3IgPSBtX3JlYWx0aW1lTWVkaWFTb3VyY2VD
cmVhdGVGdW5jdGlvbigpOwogICAgIGlmICghc291cmNlT3JFcnJvcikgewotICAgICAgICBtX3Jl
cXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKICAgICAgICAgc2VuZFVwZGF0ZShXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRlbnRpZmll
ciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uRXJyb3JUeXBlOjpBdWRpb0NhcHR1cmUsIHNvdXJjZU9yRXJyb3IuZXJyb3JNZXNzYWdl
IH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyNiw0NCArMTE1LDU0IEBAIHZvaWQg
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0JiByCiAgICAgV2ViUHJvY2Vzc1Byb3h5OjptdXRlQ2FwdHVyZUluUGFn
ZXNFeGNlcHQobV9pZGVudGlmaWVyKTsKIAogICAgIGJvb2wgbW9ja0RldmljZUNhcHR1cmVzRW5h
YmxlZCA9IG1fY2hlY2tJZk1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQoKTsKLSAgICBtX3Jl
Y29nbml6ZXItPnN0YXJ0KGNsaWVudElkZW50aWZpZXIsIHNvdXJjZU9yRXJyb3Iuc291cmNlKCks
IG1vY2tEZXZpY2VDYXB0dXJlc0VuYWJsZWQsIHJlcXVlc3QubGFuZygpLCByZXF1ZXN0LmNvbnRp
bnVvdXMoKSwgcmVxdWVzdC5pbnRlcmltUmVzdWx0cygpLCByZXF1ZXN0Lm1heEFsdGVybmF0aXZl
cygpKTsKKyAgICBtX3JlY29nbml6ZXItPnN0YXJ0KFdURk1vdmUocmVxdWVzdCksIHNvdXJjZU9y
RXJyb3Iuc291cmNlKCksIG1vY2tEZXZpY2VDYXB0dXJlc0VuYWJsZWQpOwogI2Vsc2UKLSAgICBt
X3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKICAgICBzZW5kVXBkYXRlKGNsaWVu
dElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3Is
IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkVycm9yVHlwZTo6QXVkaW9DYXB0dXJlLCAiQXVkaW8gY2FwdHVyZSBpcyBub3QgaW1wbGVt
ZW50ZWQiX3MgfSk7CiAjZW5kaWYKIH0KIAordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6
Y2FuY2VsKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIgY2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHJlcXVlc3QgPSBtX3JlcXVlc3RzLnRh
a2UoY2xpZW50SWRlbnRpZmllcik7CisgICAgaWYgKCFyZXF1ZXN0KQorICAgICAgICByZXR1cm47
CisKKyAgICBzZW5kVXBkYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlVHlwZTo6Q2FuY2VsKTsKKworICAgIGF1dG8gcGVybWlzc2lvblJlcXVlc3RJ
ZGVudGlmaWVyID0gcmVxdWVzdC0+cGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyKCk7CisgICAg
aWYgKCFwZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8qIHBlcm1pc3Npb25NYW5hZ2VyID0gbV9wZXJtaXNzaW9uTWFuYWdlckdldHRlcigpOwor
ICAgIGlmICghcGVybWlzc2lvbk1hbmFnZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHBlcm1p
c3Npb25NYW5hZ2VyLT5jYW5jZWxSZXF1ZXN0KCpwZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIp
OworfQorCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdG9wKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikK
IHsKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElkZW50aWZpZXIpOwotICAgIGlmIChtX3JlY29n
bml6ZXIgJiYgbV9yZWNvZ25pemVyLT5jdXJyZW50Q2xpZW50SWRlbnRpZmllcigpID09IGNsaWVu
dElkZW50aWZpZXIpIHsKLSAgICAgICAgbV9yZWNvZ25pemVyLT5zdG9wKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CiAKLSAgICBpZiAobV9yZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRlbnRpZmll
cikpCi0gICAgICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOworICAgIGNhbmNlbChjbGllbnRJZGVudGlmaWVy
KTsKKyAgICBpZiAobV9yZWNvZ25pemVyICYmIG1fcmVjb2duaXplci0+Y2xpZW50SWRlbnRpZmll
cigpID09IGNsaWVudElkZW50aWZpZXIpCisgICAgICAgIG1fcmVjb2duaXplci0+c3RvcCgpOwog
fQogCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjphYm9ydChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCiB7
CiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJZGVudGlmaWVyKTsKLSAgICBpZiAobV9yZWNvZ25p
emVyICYmIG1fcmVjb2duaXplci0+Y3VycmVudENsaWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJ
ZGVudGlmaWVyKSB7Ci0gICAgICAgIG1fcmVjb2duaXplci0+YWJvcnQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KIAotICAgIGlmIChtX3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVy
KSkKLSAgICAgICAgc2VuZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7CisgICAgY2FuY2VsKGNsaWVudElkZW50aWZpZXIp
OworICAgIGlmIChtX3JlY29nbml6ZXIgJiYgbV9yZWNvZ25pemVyLT5jbGllbnRJZGVudGlmaWVy
KCkgPT0gY2xpZW50SWRlbnRpZmllcikKKyAgICAgICAgbV9yZWNvZ25pemVyLT5hYm9ydCgpOwog
fQogCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjppbnZhbGlkYXRlKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmll
cikKIHsKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElkZW50aWZpZXIpOwotICAgIGlmIChtX3Jl
cXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKSkgewotICAgICAgICBpZiAobV9yZWNvZ25p
emVyICYmIG1fcmVjb2duaXplci0+Y3VycmVudENsaWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJ
ZGVudGlmaWVyKQotICAgICAgICAgICAgbV9yZWNvZ25pemVyLT5hYm9ydCgpOwotICAgIH0KKyAg
ICBpZiAobV9yZWNvZ25pemVyICYmIG1fcmVjb2duaXplci0+Y2xpZW50SWRlbnRpZmllcigpID09
IGNsaWVudElkZW50aWZpZXIpCisgICAgICAgIG1fcmVjb2duaXplci0+YWJvcnQoKTsKIH0KIAog
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSB0eXBlLCBPcHRpb25hbDxXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiBlcnJvciwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+IHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCmluZGV4IDJmYzI0OGE4ZTEz
YmM3NjY1NTQxNjAxNzQ4NWU5NDFkYmVkY2VhMTcuLmIzZjNlZWJlYWY4NTc4NDAwNWY5Mjg2Mjk3
YjNkYTMxNmQ3YWJlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVj
aFJlY29nbml0aW9uU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIuaApAQCAtNDMsMTAgKzQzLDExIEBAIHN0cnVjdCBDbGllbnRPcmln
aW47CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyOwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiB1c2luZyBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcklkZW50aWZpZXIgPSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcjsKLXVzaW5n
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXIgPSBGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrJiYpPjsK
K3VzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJHZXR0ZXIgPSBGdW5jdGlv
bjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKigpPjsKIHVzaW5nIFNwZWVjaFJl
Y29nbml0aW9uQ2hlY2tJZk1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQgPSBGdW5jdGlvbjxi
b29sKCk+OwogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlciA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewpAQCAtNTQsOSArNTUsOSBAQCBjbGFz
cyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcj4sCiBwdWJsaWM6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAg
ICB1c2luZyBSZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24gPSBGdW5jdGlvbjxXZWJD
b3JlOjpDYXB0dXJlU291cmNlT3JFcnJvcigpPjsKLSAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZp
ZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiwgU3BlZWNoUmVjb2duaXRp
b25DaGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCYmLCBSZWFsdGltZU1lZGlhU291
cmNlQ3JlYXRlRnVuY3Rpb24mJik7CisgICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyLCBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyR2V0dGVyJiYsIFNwZWVjaFJlY29nbml0aW9u
Q2hlY2tJZk1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQmJiwgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNyZWF0ZUZ1bmN0aW9uJiYpOwogI2Vsc2UKLSAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihS
ZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIs
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiwgU3BlZWNoUmVjb2duaXRpb25D
aGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCYmKTsKKyAgICBTcGVlY2hSZWNvZ25p
dGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cklkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJHZXR0ZXImJiwg
U3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCYmKTsK
ICNlbmRpZgogCiAgICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJv
b2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CkBAIC02Nyw5ICs2OCwxMCBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVl
c3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7Ci0gICAgdm9pZCBoYW5kbGVS
ZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOworICAgIHZvaWQgaGFu
ZGxlUmVxdWVzdChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0Pik7CiAgICAgdm9pZCBzZW5kVXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gPSBXVEY6Om51
bGxvcHQsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERh
dGE+PiA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBzZW5kVXBkYXRlKGNvbnN0IFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik7CisgICAgdm9pZCBjYW5jZWwoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CiAKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwpAQCAtODEsNyArODMsNyBAQCBwcml2YXRl
OgogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIEhhc2hNYXA8V2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4+IG1fcmVxdWVzdHM7Ci0g
ICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciBtX3Blcm1pc3Npb25DaGVja2Vy
OworICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJHZXR0ZXIgbV9wZXJtaXNz
aW9uTWFuYWdlckdldHRlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3BlZWNoUmVj
b2duaXplcj4gbV9yZWNvZ25pemVyOwogICAgIFNwZWVjaFJlY29nbml0aW9uQ2hlY2tJZk1vY2tT
cGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQgbV9jaGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5h
YmxlZDsKICAgICBib29sIG1faXNSZXNldHRpbmcgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggN2QzMWNhYTg5NjAxMWJlNzdiMmMxNGNkYzEx
N2Y2NDZjZDNhNzRmNC4uMGM0YTlmYTRhNTgzNmZiZGI1NjQ3ZTcwNGQyMGNlOTgxZDk4ZmZhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDQyOCw2ICsx
MDQyOCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25G
b3JTcGVlY2hSZWNvZ25pdGlvbihGcmFtZUlkZW50aWZpZQogI2VuZGlmCiB9CiAKK1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIqIFdlYlBhZ2VQcm94eTo6c3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcigpCit7CisgICAgaWYgKCFtX3NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIpCisgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcj4oKnRo
aXMpOworCisgICAgcmV0dXJuIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5n
ZXQoKTsKK30KKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKIFdlYkNvcmU6OkNhcHR1cmVT
b3VyY2VPckVycm9yIFdlYlBhZ2VQcm94eTo6Y3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZUZvclNw
ZWVjaFJlY29nbml0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5k
ZXggZDBlZTY3ODJjZGQ4YzcwOTI3NDEyYzQ5MjIyNzBmYmIzZmVmNTYxMS4uYWViYzA3NzY3ZDMw
YjJjMDhlYTEyNDc2ZmZmOWMwYjY5N2YzOGVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTE4MzIsNiArMTgzMiw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogICAgIFdlYkNvcmU6OkNhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZVJlYWx0
aW1lTWVkaWFTb3VyY2VGb3JTcGVlY2hSZWNvZ25pdGlvbigpOwogI2VuZGlmCisgICAgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciogc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcigpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgY2hhbmdlVW5pdmVyc2Fs
QWNjZXNzWm9vbUZvY3VzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCBlYmNhMDNkMzE5NDdlOGM1ZTRkMjUzZGVmYjZkNDE1NGRjNjc3ZTI2Li41N2I1MGVmZTc4
ZDdlY2MxNzhkOWNmNGU1YTJhNmE3ZDljNDY3NzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE3MjIsMTMgKzE3MjIsOCBAQCB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXJJZGVudAogCiAgICAgQVNTRVJUKCFtX3NwZWVjaFJlY29nbml0aW9uU2VydmVyTWFw
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBhdXRvJiBzcGVlY2hSZWNvZ25pdGlvblNlcnZl
ciA9IG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNYXAuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIp
Lml0ZXJhdG9yLT52YWx1ZTsKLSAgICBhdXRvIHBlcm1pc3Npb25DaGVja2VyID0gW3dlYWtQYWdl
ID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKGF1dG8mIGxhbmcsIGF1dG8mIG9yaWdpbiwgYXV0
byBmcmFtZUlkZW50aWZpZXIsIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7Ci0g
ICAgICAgIGlmICghd2Vha1BhZ2UpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlw
ZTo6Tm90QWxsb3dlZCwgIlBhZ2Ugbm8gbG9uZ2VyIGV4aXN0cyJfcyB9KTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHdlYWtQYWdlLT5yZXF1ZXN0U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uKGxhbmcsIG9yaWdpbiwgZnJhbWVJZGVudGlmaWVyLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byBzcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyR2V0dGVyID0gW3dlYWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKCkg
bXV0YWJsZSB7CisgICAgICAgIHJldHVybiB3ZWFrUGFnZSA/IHdlYWtQYWdlLT5zcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKCkgOiBudWxscHRyOwogICAgIH07CiAgICAgYXV0byBj
aGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRy
KHRhcmdldFBhZ2UpXSgpIHsKICAgICAgICAgcmV0dXJuIHdlYWtQYWdlICYmIHdlYWtQYWdlLT5w
cmVmZXJlbmNlcygpLm1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQoKTsKQEAgLTE3MzgsOSArMTcz
Myw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cihTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50CiAgICAgYXV0byBjcmVhdGVSZWFsdGltZU1l
ZGlhU291cmNlID0gW3dlYWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKCkgewogICAg
ICAgICByZXR1cm4gd2Vha1BhZ2UgPyB3ZWFrUGFnZS0+Y3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJj
ZUZvclNwZWVjaFJlY29nbml0aW9uKCkgOiBDYXB0dXJlU291cmNlT3JFcnJvciB7ICJQYWdlIGlz
IGludmFsaWQiIH07CiAgICAgfTsKLSAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1ha2VV
bmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24oKSksIGlk
ZW50aWZpZXIsIFdURk1vdmUocGVybWlzc2lvbkNoZWNrZXIpLCBXVEZNb3ZlKGNoZWNrSWZNb2Nr
Q2FwdHVyZURldmljZXNFbmFibGVkKSwgV1RGTW92ZShjcmVhdGVSZWFsdGltZU1lZGlhU291cmNl
KSk7CisgICAgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29n
bml0aW9uU2VydmVyPihtYWtlUmVmKCpjb25uZWN0aW9uKCkpLCBpZGVudGlmaWVyLCBXVEZNb3Zl
KHNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJHZXR0ZXIpLCBXVEZNb3ZlKGNoZWNr
SWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKSwgV1RGTW92ZShjcmVhdGVSZWFsdGltZU1lZGlh
U291cmNlKSk7CiAjZWxzZQotICAgIHNwZWVjaFJlY29nbml0aW9uU2VydmVyID0gbWFrZVVuaXF1
ZTxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRlbnRp
ZmllciwgV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlciksIFdURk1vdmUoY2hlY2tJZk1vY2tDYXB0
dXJlRGV2aWNlc0VuYWJsZWQpKTsKKyAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1ha2VV
bmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24oKSksIGlk
ZW50aWZpZXIsIFdURk1vdmUoc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckdldHRl
ciksIFdURk1vdmUoY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQpKTsKICNlbmRpZgog
CiAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyLCAqc3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNw
cAppbmRleCA0Yjc2M2JjZGVlNjNiZGZmNGZhMWYyOWRlNzg1NjYwZDQ4YjRmMWVkLi4xYWQ3M2Q5
MDcyZThhNTE2MmNmYmRiMDgzMjU3YTNjMjI0OWM1ZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcApAQCAtMTM2LDYgKzEzNiw5IEBAIHZvaWQg
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpkaWRSZWNlaXZlVXBkYXRlKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQ6CiAgICAgICAgIGNsaWVudC0+ZGlkRW5kKCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRh
dGVUeXBlOjpDYW5jZWw6CisgICAgICAgIGNsaWVudC0+ZGlkQ2FuY2VsKCk7CiAgICAgfQogfQog
Cg==
</data>
<flag name="commit-queue"
          id="437069"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418959</attachid>
            <date>2021-02-01 21:54:47 -0800</date>
            <delta_ts>2021-02-02 00:19:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219699-20210201215446.patch</filename>
            <type>text/plain</type>
            <size>51478</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjAwNGVmZTk3MzBkNmJj
Mjk1MDVmNDEyYmE1MDY4MzgzZGMxMjg5Ny4uMDllNmQ1NWRjMjBlMTRkN2YyOGNiYTdjNWE1OTA0
YTQzNDFmODYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTAyLTAxICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGEgU3BlZWNoUmVj
b2duaXplciBmb3IgZWFjaCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY5OQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzIzOTIwOTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEhlYWRl
cnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb246OmRpZFN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uOjpkaWRFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6ZGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uOjpkaWRDYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb246OnJlc2V0KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
bi5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVx
dWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpzZXRQ
ZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0OjpwZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIpOgorICAgICAgICAq
IE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmg6CisgICAgICAgICogTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pemVyOjpTcGVlY2hSZWNvZ25pemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml6ZXI6On5TcGVlY2hSZWNvZ25pemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml6ZXI6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6Y2xpZW50SWRlbnRp
ZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdGFydENhcHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcENhcHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjphYm9ydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0b3BSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pemVyOjpyZXNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pemVyOjpyZXNldFJlY29nbml0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmg6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pemVyOjpjdXJyZW50Q2xpZW50SWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNvZ25pdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpyZXNldFJlY29nbml0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
IDIwMjEtMDItMDEgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAg
ICAgICBbQ3VybF0gRW5hYmxlIEZUUCBwcm90b2NvbCBvbmx5IHdoZW4gRU5BQkxFX0ZUUERJUiBp
cyBvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCAwZTAwMTY1ZTcwMTMxNTViYWNmZmM0Nzg2NWI1ZDI3Nzk5YjgzOTU1
Li4yMjcxZGM3NzM5NDhkNmNiZTQ2ZWU1MGM4MmRiMTAzMDk1YjM5ZjMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM1IEBACisyMDIxLTAyLTAxICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+
CisKKyAgICAgICAgQ3JlYXRlIGEgU3BlZWNoUmVjb2duaXplciBmb3IgZWFjaCBTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxOTY5OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzIzOTIwOTc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
Lmg6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6
OmlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVzdFBlcm1pc3Npb25G
b3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6Omhh
bmRsZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6
Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0b3Ap
OgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aW52YWxpZGF0ZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0
aW9uU2VydmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVVwZGF0ZSk6CisKIDIwMjEtMDItMDEgIFN0
ZXBoYW4gU3phYm8gIDxzdGVwaGFuLnN6YWJvQHNvbnkuY29tPgogCiAgICAgICAgIFtQbGF5U3Rh
dGlvbl0gQnVpbGQgZml4IGFmdGVyIHIyNzIwNTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGFiYTE1
ZTBlZDdhMDE0NjQ1ODJmM2Y5MjgwZTY3OGIzZGIyOGY2MzIuLjUwNTc5OTYwZTg3YzRhNjZiNzlh
YWVmODk5ZjU0OTZhYzVkYTljZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTI1LDYgKzEyNSw3
IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBNb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQuaAogICAgIE1vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIuaAogICAgIE1v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXJyb3IuaAorICAgIE1vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyLmgKICAgICBNb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaAogICAgIE1vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaAogICAgIE1vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uUmVzdWx0RGF0YS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKaW5kZXggMTU4NGMxNzk1ZWFiMjg2MzBmYjA5
NjA1OTVjYWQyNjVkZDM2OGZmNS4uNjc1MDJkNjk1MWRiZDUyZmRhMTU2NTAyZjgwYWNjNTdmMmY0
NGFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uLmNwcApAQCAtMTE5LDYgKzExOSw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb246
OnN0b3AoKQogCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uOjpkaWRTdGFydCgpCiB7CisgICAgbV9o
YXNSZWNlaXZlZFN0YXJ0ID0gdHJ1ZTsKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RhcnRp
bmcpCiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKIApAQCAtMTkxLDE4ICsxOTIs
MzIgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvbjo6ZGlkUmVjZWl2ZVJlc3VsdChWZWN0b3I8U3Bl
ZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYmIHIKIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvbjo6
ZGlkRXJyb3IoY29uc3QgU3BlZWNoUmVjb2duaXRpb25FcnJvciYgZXJyb3IpCiB7Ci0gICAgbV9m
aW5hbFJlc3VsdHMuY2xlYXIoKTsKLSAgICBtX3N0YXRlID0gU3RhdGU6OkluYWN0aXZlOworICAg
IGlmICghbV9oYXNSZWNlaXZlZFN0YXJ0KQorICAgICAgICByZXNldCgpOwogCiAgICAgcXVldWVU
YXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpTcGVlY2gsIFNwZWVjaFJlY29n
bml0aW9uRXJyb3JFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBlcnJvci50
eXBlLCBlcnJvci5tZXNzYWdlKSk7CiB9CiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb246OmRpZEVu
ZCgpCiB7Ci0gICAgbV9maW5hbFJlc3VsdHMuY2xlYXIoKTsKLSAgICBtX3N0YXRlID0gU3RhdGU6
OkluYWN0aXZlOworICAgIHJlc2V0KCk7CiAKICAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQo
KnRoaXMsIFRhc2tTb3VyY2U6OlNwZWVjaCwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW5k
RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwog
fQogCit2b2lkIFNwZWVjaFJlY29nbml0aW9uOjpkaWRDYW5jZWwoKQoreworICAgIEFTU0VSVCht
X3N0YXRlID09IFN0YXRlOjpBYm9ydGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpTdG9wcGluZyk7
CisgICAgQVNTRVJUKCFtX2hhc1JlY2VpdmVkU3RhcnQpOworCisgICAgbV9zdGF0ZSA9IFN0YXRl
OjpJbmFjdGl2ZTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvbjo6cmVzZXQoKQoreworICAg
IG1faGFzUmVjZWl2ZWRTdGFydCA9IGZhbHNlOworICAgIG1fZmluYWxSZXN1bHRzLmNsZWFyKCk7
CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpJbmFjdGl2ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uLmgKaW5kZXggYzIwMGJhZTY1Y2I4NTNhZTMxYmI2YWIyMWUyMjEzMWUxODA0YTA2Zi4uNzRk
NzEwNWEwZDEzMGZkNTRkOWI5ODc2ZGRlYTg0MTczYTFmNmY5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5oCkBAIC02OSw3ICs2OSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIFN0YXJ0aW5nLAogICAgICAgICBSdW5uaW5nLAogICAgICAg
ICBTdG9wcGluZywKLSAgICAgICAgQWJvcnRpbmcsCisgICAgICAgIEFib3J0aW5nCiAgICAgfTsK
IAogICAgIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uKERvY3VtZW50Jik7CkBAIC04Niw2ICs4
Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzdWx0KFZlY3RvcjxTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdERhdGE+JiYgcmVzdWx0RGF0YXMpIGZpbmFsOwogICAgIHZvaWQgZGlk
RXJyb3IoY29uc3QgU3BlZWNoUmVjb2duaXRpb25FcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlk
RW5kKCkgZmluYWw7CisgICAgdm9pZCBkaWRDYW5jZWwoKSBmaW5hbDsKIAogICAgIC8vIEFjdGl2
ZURPTU9iamVjdAogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBm
aW5hbDsKQEAgLTk4LDEyICs5OSwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmRXZlbnRUYXJn
ZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwg
eyBkZXJlZigpOyB9CiAKKyAgICB2b2lkIHJlc2V0KCk7CisKICAgICBTdHJpbmcgbV9sYW5nOwog
ICAgIGJvb2wgbV9jb250aW51b3VzIHsgZmFsc2UgfTsKICAgICBib29sIG1faW50ZXJpbVJlc3Vs
dHMgeyBmYWxzZSB9OwogICAgIHVpbnQ2NF90IG1fbWF4QWx0ZXJuYXRpdmVzIHsgMSB9OwogCiAg
ICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpJbmFjdGl2ZSB9OworICAgIGJvb2wgbV9oYXNSZWNl
aXZlZFN0YXJ0IHsgZmFsc2UgfTsKICAgICBWZWN0b3I8UmVmPFNwZWVjaFJlY29nbml0aW9uUmVz
dWx0Pj4gbV9maW5hbFJlc3VsdHM7CiAgICAgUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbj4gbV9jb25uZWN0aW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50LmgK
aW5kZXggMWMzM2RmZTJlZmM0ZGZiZjJlYzlhMTZhMzg0MmZjMWFlOGNkMTllNC4uZDg5YTVhODY0
ZTQ1NTJhZjBjODNmMzA0YTFhNThkM2NjM2RjMDg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50LmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlUmVzdWx0KFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+JiYgcmVz
dWx0RGF0YXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRXJyb3IoY29uc3QgU3BlZWNoUmVj
b2duaXRpb25FcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kKCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoKSA9IDA7CiAKICAgICBTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50aWZpZXI7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljODdiYzIyNzYzZTU3MzRjMTFkMDRhNWMzMTU5Y2Q3
NWMwODgyYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllci5oCkBAIC0wLDAg
KzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmpl
Y3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVy
PFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyVHlwZT47CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKaW5kZXggNjM4ODhhOTBhNDk0ZDNl
NjcyZWZlYzFlMDNiNWMwZmIyY2ZjOTFiMy4uZmExOGM3N2E2ZTBhMGUyMDFjZDE2Nzg5ZWE0YjA2
ZTQwOGRmZTI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1
ZGUgIlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTM1LDYgKzM2LDggQEAgY2xhc3MgU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4K
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3QoU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmKTsKIAorICAgIHZvaWQgc2V0UGVy
bWlzc2lvblJlcXVlc3RJZGVudGlmaWVyKE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3RJZGVudGlmaWVyPiBwZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIpIHsgbV9w
ZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIgPSBwZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXI7
IH0KKyAgICBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRp
Zmllcj4gcGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyKCkgeyByZXR1cm4gbV9wZXJtaXNzaW9u
UmVxdWVzdElkZW50aWZpZXI7IH0KICAgICBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2luZm8uY2xp
ZW50SWRlbnRpZmllcjsgfQogICAgIGNvbnN0IFN0cmluZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJu
IG1faW5mby5sYW5nOyB9CiAgICAgYm9vbCBjb250aW51b3VzKCkgY29uc3QgeyByZXR1cm4gbV9p
bmZvLmNvbnRpbnVvdXM7OyB9CkBAIC00NSw2ICs0OCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIG1faW5mbzsKKyAgICBPcHRpb25hbDxT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllcj4gbV9wZXJtaXNzaW9u
UmVxdWVzdElkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRh
dGUuaAppbmRleCA4OTE0OTE3OTNmNGUwMWVjMmZmNjAxMDdjYjQ4NWY0ODhmYTQzZTg0Li4zYjY5
Yjc0NTdhMTZiMDhiNzJjOWUyOTNmNzk4ZThhNjU3YmE0MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKQEAg
LTQ0LDcgKzQ0LDggQEAgZW51bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUgewog
ICAgIFJlc3VsdCwKICAgICBOb01hdGNoLAogICAgIEVycm9yLAotICAgIEVuZAorICAgIEVuZCwK
KyAgICBDYW5jZWwKIH07CiAKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcAppbmRleCBjYWQ0OGE5NzQyYmI5ZTAxNDM0ZmJh
ODVkZDBjMTBhOWMwMWZmNDg4Li5hZDBhNmIzMjZmZGQzZmRlNDgyNzk2MzRkZDJjNWFmZGUzOGQ2
YWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pemVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlNwZWVjaFJlY29nbml6ZXIuaCIKIAorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdC5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgiCiAjaW5jbHVkZSA8
d3RmL01lZGlhVGltZS5oPgogCkBAIC0zNiw0OCArMzcsNjUgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogU3BlZWNoUmVjb2duaXplcjo6U3BlZWNoUmVjb2duaXplcihEZWxlZ2F0ZUNhbGxiYWNr
JiYgY2FsbGJhY2spCi0gICAgOiBtX2RlbGVnYXRlQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykp
CiB7CisgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrID0gW3RoaXMsIGRlbGVnYXRlQ2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmIHVwZGF0ZSkg
eworICAgICAgICBBU1NFUlQoY2xpZW50SWRlbnRpZmllcigpID09IHVwZGF0ZS5jbGllbnRJZGVu
dGlmaWVyKCkpOworICAgICAgICBkZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7CisKKyAgICAgICAg
aWYgKHVwZGF0ZS50eXBlKCkgPT0gU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvcikK
KyAgICAgICAgICAgIGFib3J0KCk7CisgICAgICAgIGlmICh1cGRhdGUudHlwZSgpID09ICBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkKKyAgICAgICAgICAgIG1fc3RhdGUgPSBTdGF0
ZTo6SW5hY3RpdmU7CisgICAgfTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpyZXNldCgp
CitTcGVlY2hSZWNvZ25pemVyOjp+U3BlZWNoUmVjb2duaXplcigpCiB7Ci0gICAgaWYgKCFtX2Ns
aWVudElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0b3BDYXB0dXJlKCk7Ci0g
ICAgcmVzZXRSZWNvZ25pdGlvbigpOwotICAgIG1fY2xpZW50SWRlbnRpZmllciA9IFdURjo6bnVs
bG9wdDsKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWJvcnRpbmcgfHwgbV9zdGF0ZSA9PSBT
dGF0ZTo6U3RvcHBpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmluZykKKyAgICAgICAgbV9k
ZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoY2xpZW50SWRl
bnRpZmllcigpLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOwogfQogCi12b2lk
IFNwZWVjaFJlY29nbml6ZXI6OmFib3J0KCkKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6YWJvcnQo
T3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gZXJyb3IpCiB7Ci0gICAgQVNTRVJUKG1f
Y2xpZW50SWRlbnRpZmllcik7CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFib3J0aW5nIHx8
IG1fc3RhdGUgPT0gU3RhdGU6OkluYWN0aXZlKQorICAgICAgICByZXR1cm47CisgICAgbV9zdGF0
ZSA9IFN0YXRlOjpBYm9ydGluZzsKKworICAgIGlmIChlcnJvcikKKyAgICAgICAgbV9kZWxlZ2F0
ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihjbGllbnRJZGVu
dGlmaWVyKCksICplcnJvcikpOworCiAgICAgc3RvcENhcHR1cmUoKTsKICAgICBhYm9ydFJlY29n
bml0aW9uKCk7CiB9CiAKIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcCgpCiB7Ci0gICAgQVNT
RVJUKG1fY2xpZW50SWRlbnRpZmllcik7CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFib3J0
aW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkluYWN0aXZlKQorICAgICAgICByZXR1cm47CisgICAg
bV9zdGF0ZSA9IFN0YXRlOjpTdG9wcGluZzsKKwogICAgIHN0b3BDYXB0dXJlKCk7CiAgICAgc3Rv
cFJlY29nbml0aW9uKCk7CiB9CiAKK1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgU3BlZWNoUmVjb2duaXplcjo6Y2xpZW50SWRlbnRpZmllcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcmVxdWVzdC0+Y2xpZW50SWRlbnRpZmllcigpOworfQorCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydChTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFJlZjxS
ZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSwgYm9vbCBtb2NrU3BlZWNoUmVjb2duaXRpb25F
bmFibGVkLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29udGludW91cywg
Ym9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKQordm9pZCBTcGVl
Y2hSZWNvZ25pemVyOjpzdGFydChzdGQ6OnVuaXF1ZV9wdHI8U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0PiByZXF1ZXN0LCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3VyY2UsIGJvb2wgbW9j
a1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCkKIHsKLSAgICBBU1NFUlQoIW1fY2xpZW50SWRlbnRp
Zmllcik7Ci0gICAgbV9jbGllbnRJZGVudGlmaWVyID0gY2xpZW50SWRlbnRpZmllcjsKLSAgICBt
X2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGll
bnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlN0YXJ0KSk7Ci0KLSAg
ICBpZiAoIXN0YXJ0UmVjb2duaXRpb24obW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCwgY2xp
ZW50SWRlbnRpZmllciwgbG9jYWxlSWRlbnRpZmllciwgY29udGludW91cywgaW50ZXJpbVJlc3Vs
dHMsIG1heEFsdGVybmF0aXZlcykpIHsKLSAgICAgICAgYXV0byBlcnJvciA9IFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlw
ZTo6U2VydmljZU5vdEFsbG93ZWQsICJGYWlsZWQgdG8gc3RhcnQgcmVjb2duaXRpb24iX3MgfTsK
LSAgICAgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBk
YXRlOjpjcmVhdGVFcnJvcihjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGVycm9yKSkpOworICAg
IG1fcmVxdWVzdCA9IHN0ZDo6ZXhjaGFuZ2UocmVxdWVzdCwgbnVsbHB0cik7CisgICAgaWYgKCFz
dGFydFJlY29nbml0aW9uKG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQsIGNsaWVudElkZW50
aWZpZXIoKSwgbV9yZXF1ZXN0LT5sYW5nKCksIG1fcmVxdWVzdC0+Y29udGludW91cygpLCBtX3Jl
cXVlc3QtPmludGVyaW1SZXN1bHRzKCksIG1fcmVxdWVzdC0+bWF4QWx0ZXJuYXRpdmVzKCkpKSB7
CisgICAgICAgIGF1dG8gZXJyb3IgPSBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNoUmVj
b2duaXRpb25FcnJvclR5cGU6OlNlcnZpY2VOb3RBbGxvd2VkLCAiRmFpbGVkIHRvIHN0YXJ0IHJl
Y29nbml0aW9uIl9zIH07CisgICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRlbnRpZmllcigpLCBXVEZNb3ZlKGVycm9y
KSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgbV9zdGF0ZSA9IFN0YXRlOjpSdW5u
aW5nOworICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3Jl
YXRlKGNsaWVudElkZW50aWZpZXIoKSwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTdGFy
dCkpOwogICAgIHN0YXJ0Q2FwdHVyZShXVEZNb3ZlKHNvdXJjZSkpOwogfQogCkBAIC04OCwxNSAr
MTA2LDExIEBAIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRDYXB0dXJlKFJlZjxSZWFsdGlt
ZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKICAgICAgICAgICAgIHdlYWtUaGlzLT5kYXRhQ2FwdHVy
ZWQodGltZSwgZGF0YSwgZGVzY3JpcHRpb24sIHNhbXBsZUNvdW50KTsKICAgICB9OwogCi0gICAg
YXV0byBzdGF0ZVVwZGF0ZUNhbGxiYWNrID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyldKGNvbnN0IGF1dG8mIHVwZGF0ZSkgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEFTU0VSVChtX2NsaWVudElkZW50aWZpZXIgJiYg
bV9jbGllbnRJZGVudGlmaWVyLnZhbHVlKCkgPT0gdXBkYXRlLmNsaWVudElkZW50aWZpZXIoKSk7
Ci0gICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOworICAgIGF1dG8gc3RhdGVVcGRh
dGVDYWxsYmFjayA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShjb25zdCBhdXRvJiB1
cGRhdGUpIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgd2Vha1RoaXMtPm1f
ZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOwogICAgIH07Ci0KLSAgICBtX3NvdXJjZSA9IG1ha2VV
bmlxdWU8U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlPigqbV9jbGllbnRJZGVudGlmaWVy
LCBXVEZNb3ZlKGRhdGFDYWxsYmFjayksIFdURk1vdmUoc3RhdGVVcGRhdGVDYWxsYmFjayksIFdU
Rk1vdmUoc291cmNlKSk7CisgICAgbV9zb3VyY2UgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0
aW9uQ2FwdHVyZVNvdXJjZT4oY2xpZW50SWRlbnRpZmllcigpLCBXVEZNb3ZlKGRhdGFDYWxsYmFj
ayksIFdURk1vdmUoc3RhdGVVcGRhdGVDYWxsYmFjayksIFdURk1vdmUoc291cmNlKSk7CiB9CiAK
ICNlbmRpZgpAQCAtMTA3LDcgKzEyMSw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcENh
cHR1cmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3NvdXJjZSA9IG51bGxwdHI7Ci0gICAg
bV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xp
ZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpBdWRpb0VuZCkpOwor
ICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNs
aWVudElkZW50aWZpZXIoKSwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpBdWRpb0VuZCkp
OwogfQogCiAjaWYgIUhBVkUoU1BFRUNIUkVDT0dOSVpFUikKQEAgLTExOCwyNyArMTMyLDE3IEBA
IHZvaWQgU3BlZWNoUmVjb2duaXplcjo6ZGF0YUNhcHR1cmVkKGNvbnN0IE1lZGlhVGltZSYsIGNv
bnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwKIAogYm9vbCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydFJl
Y29nbml0aW9uKGJvb2wsIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wsIHVpbnQ2NF90KQogewotICAgIG1faXNSZWNv
Z25pemluZyA9IHRydWU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgU3BlZWNoUmVjb2du
aXplcjo6YWJvcnRSZWNvZ25pdGlvbigpCiB7Ci0gICAgbV9pc1JlY29nbml6aW5nID0gZmFsc2U7
Ci0gICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUo
Km1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsK
KyAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShj
bGllbnRJZGVudGlmaWVyKCksIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CiB9
CiAKIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcFJlY29nbml0aW9uKCkKIHsKLSAgICBtX2lz
UmVjb2duaXppbmcgPSBmYWxzZTsKLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGU6OkVuZCkpOwotfQotCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnJlc2V0UmVj
b2duaXRpb24oKQotewotICAgIGlmICghbV9pc1JlY29nbml6aW5nKQotICAgICAgICByZXR1cm47
Ci0gICAgYWJvcnRSZWNvZ25pdGlvbigpOworICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZpZXIoKSwgU3BlZWNoUmVjb2du
aXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgKaW5kZXggMTYwMmFmNzY2OWVjOWJk
Yjk1NDQxYzYyMzAyMDI0MWQxYzM0NDJlMi4uODc0MmUwNWRiZWM3OWJhMDViNTc0MzYyOWU2Nzlj
YmQ3YjE2NGIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml6ZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2du
aXRpb25DYXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uRXJyb3Iu
aCIKIAogI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CkBAIC0zNSw2ICszNiw3IEBAIE9CSkNfQ0xBU1MgV2ViU3BlZWNoUmVjb2duaXplclRhc2s7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
OwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU7CiAKIGNsYXNzIFNwZWVjaFJlY29nbml6
ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXplcj4gewpAQCAtNDIsMjAg
KzQ0LDI0IEBAIGNsYXNzIFNwZWVjaFJlY29nbml6ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
U3BlZWNoUmVjb2duaXplcj4gewogcHVibGljOgogICAgIHVzaW5nIERlbGVnYXRlQ2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik+OwogICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNwZWVjaFJlY29nbml6ZXIoRGVsZWdhdGVDYWxsYmFjayYm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB+U3BlZWNoUmVjb2duaXplcigpID0gZGVmYXVsdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB+U3BlZWNoUmVjb2duaXplcigpOwogCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmLCBi
b29sIG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQsIGNvbnN0IFN0cmluZyYgbG9jYWxlSWRl
bnRpZmllciwgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBt
YXhBbHRlcm5hdGl2ZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnQoc3RkOjp1bmlx
dWVfcHRyPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4sIFJlZjxSZWFsdGltZU1lZGlhU291cmNl
PiYmLCBib29sIG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQpOwogI2VuZGlmCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJvcnQo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFib3J0KE9wdGlvbmFsPFNwZWVjaFJlY29nbml0
aW9uRXJyb3I+ID0gV1RGOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3Ao
KTsKIAotICAgIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXI+IGN1cnJlbnRDbGllbnRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRJ
ZGVudGlmaWVyOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgU3BlZWNo
UmVjb2duaXRpb25DYXB0dXJlU291cmNlKiBzb3VyY2UoKSB7IHJldHVybiBtX3NvdXJjZS5nZXQo
KTsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgc3RvcEludGVybmFsKCk7CisgICAgZW51bSBjbGFz
cyBTdGF0ZSB7CisgICAgICAgIEluYWN0aXZlLAorICAgICAgICBSdW5uaW5nLAorICAgICAgICBT
dG9wcGluZywKKyAgICAgICAgQWJvcnRpbmcKKyAgICB9OwogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKICAgICB2b2lkIHN0YXJ0Q2FwdHVyZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7
CkBAIC02NSwxNyArNzEsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIHN0YXJ0UmVjb2duaXRpb24o
Ym9vbCBtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkLCBTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJv
b2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgYWx0ZXJuYXRpdmVz
KTsKICAgICB2b2lkIGFib3J0UmVjb2duaXRpb24oKTsKICAgICB2b2lkIHN0b3BSZWNvZ25pdGlv
bigpOwotICAgIHZvaWQgcmVzZXRSZWNvZ25pdGlvbigpOwogCi0gICAgT3B0aW9uYWw8U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcj4gbV9jbGllbnRJZGVudGlmaWVy
OwogICAgIERlbGVnYXRlQ2FsbGJhY2sgbV9kZWxlZ2F0ZUNhbGxiYWNrOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IG1fcmVxdWVzdDsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlPiBtX3NvdXJjZTsKKyAgICBT
dGF0ZSBtX3N0YXRlIHsgU3RhdGU6OkluYWN0aXZlIH07CiAKICNpZiBIQVZFKFNQRUVDSFJFQ09H
TklaRVIpCiAgICAgUmV0YWluUHRyPFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrPiBtX3Rhc2s7Ci0j
ZWxzZQotICAgIC8vIEZvciB0ZXN0aW5nLgotICAgIGJvb2wgbV9pc1JlY29nbml6aW5nIHsgZmFs
c2UgfTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCmluZGV4IGJkMmZmZDRi
NWNmM2E5YjBjMGM2YTE4NmJkODdhYWUzNTAxYTY5NzYuLjdkNWJjOGZiYWQ5NjljY2NkNTMxZDBk
OTlmYTcyMDU4MTViYzg0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0KQEAgLTQ1LDExICs0
NSw5IEBAIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6ZGF0YUNhcHR1cmVkKGNvbnN0IE1lZGlhVGlt
ZSYgdGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhCiBib29sIFNwZWVjaFJlY29nbml6ZXI6OnN0
YXJ0UmVjb2duaXRpb24oYm9vbCBtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkLCBTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbG9jYWxlSWRlbnRpZmllciwgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1
bHRzLCB1aW50NjRfdCBhbHRlcm5hdGl2ZXMpCiB7CiAgICAgYXV0byB0YXNrQ2xhc3MgPSBtb2Nr
U3BlZWNoUmVjb2duaXRpb25FbmFibGVkID8gW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayBj
bGFzc10gOiBbV2ViU3BlZWNoUmVjb2duaXplclRhc2sgY2xhc3NdOwotICAgIG1fdGFzayA9IGFk
b3B0TlMoW1t0YXNrQ2xhc3MgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjppZGVudGlmaWVyIGxv
Y2FsZTpsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6Y29udGludW91cyBy
ZXBvcnRJbnRlcmltUmVzdWx0czppbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6YWx0ZXJu
YXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyldKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiB1cGRhdGUpIHsKLSAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX2Rl
bGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKKyAgICBtX3Rhc2sgPSBhZG9wdE5TKFtbdGFza0NsYXNz
IGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6aWRlbnRpZmllciBsb2NhbGU6bG9jYWxlSWRlbnRp
ZmllciBkb011bHRpcGxlUmVjb2duaXRpb25zOmNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3Vs
dHM6aW50ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOmFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNh
bGxiYWNrOlt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShjb25zdCBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZSYgdXBkYXRlKSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAg
ICAgICAgICAgIHdlYWtUaGlzLT5tX2RlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKICAgICB9XSk7
CiAKICAgICByZXR1cm4gISFtX3Rhc2s7CkBAIC02NywxNSArNjUsNiBAQCB2b2lkIFNwZWVjaFJl
Y29nbml6ZXI6OmFib3J0UmVjb2duaXRpb24oKQogICAgIFttX3Rhc2sgYWJvcnRdOwogfQogCi12
b2lkIFNwZWVjaFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24oKQotewotICAgIGlmICghbV90
YXNrKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHRhc2sgPSBzdGQ6OmV4Y2hhbmdlKG1f
dGFzaywgbnVsbHB0cik7Ci0gICAgW3Rhc2sgYWJvcnRdOwotfQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODBlNTkxZDg3
YzM5YzE2MjdjMDVlZWZkYzBkNzExNDVjMWU4NmEyNi4uNTFmMDBjZWRhNzYzMjhmMThlOGY3OTdi
ZDhmMmQ5YmU3NDI2OGMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjc4MSw2ICsyNzgxLDcgQEAKIAkJOTM1MDBGMzIxM0ZE
RTNCRTAwOTlFQzI0IC8qIE5TU2Nyb2xsZXJJbXBEZXRhaWxzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzUwMEYzMTEzRkRFM0JFMDA5OUVDMjQgLyog
TlNTY3JvbGxlckltcERldGFpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5MzUyMDdCRTA5QkQ0MTBBMDBGMjAzOEQgLyogTG9jYWxpemVkU3Ry
aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1
MjA3QkQwOUJENDEwQTAwRjIwMzhEIC8qIExvY2FsaXplZFN0cmluZ3MuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzU1RUY1MTI1M0E0Mjc5MDA2
RkY0QTQgLyogSlNBYnN0cmFjdFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzU1RUY0RjI1M0E0Mjc4MDA2RkY0QTQgLyogSlNBYnN0cmFjdFJh
bmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
OTM1QkRCMTkyNUM4REI2NzAwOEZBRTI5IC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzVCREIxODI1QzhEN0IyMDA4RkFFMjkgLyogU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5MzVDNDc2MzA5QUM0Q0U2MDBBNkFBQjQgLyogTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTM1QzQ3NjIwOUFDNENFNjAwQTZBQUI0IC8qIE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMuaCAqLzsgfTsKIAkJOTM1QzQ3NjgwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM1QzQ3NjYwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkz
NUM0NzY5MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybU1vdXNlRXZlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNUM0NzY3MDlBQzRENDMwMEE2
QUFCNCAvKiBQbGF0Zm9ybU1vdXNlRXZlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE0OTIsNiArMTE0OTMsNyBAQAogCQk5MzU1RUY0RjI1
M0E0Mjc4MDA2RkY0QTQgLyogSlNBYnN0cmFjdFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTQWJzdHJhY3RSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzU1RUY1MDI1M0E0Mjc5MDA2RkY0QTQgLyogSlNBYnN0cmFjdFJhbmdlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQWJzdHJhY3RSYW5nZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNTVFRjUzMjUzQTRENUEwMDZGRjRBNCAvKiBK
U0Fic3RyYWN0UmFuZ2VDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBYnN0cmFjdFJh
bmdlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM1QkRCMTgyNUM4
RDdCMjAwOEZBRTI5IC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RJZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RJ
ZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUM0NzYyMDlBQzRD
RTYwMEE2QUFCNCAvKiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1QzQ3NjYwOUFDNEQ0MzAwQTZBQUI0IC8qIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1
QzQ3NjcwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtTW91c2VFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybU1vdXNlRXZlbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI1ODAyLDYgKzI1ODA0LDcgQEAKIAkJCQk5MzQ5NTBDMDI1Mzk0
MzUwMDA5OUYxNzEgLyogU3BlZWNoUmVjb2duaXRpb25FdmVudC5jcHAgKi8sCiAJCQkJOTM0OTUw
QzkyNTM5NDM1NTAwOTlGMTcxIC8qIFNwZWVjaFJlY29nbml0aW9uRXZlbnQuaCAqLywKIAkJCQk5
MzQ5NTBCNDI1Mzk0MzQ5MDA5OUYxNzEgLyogU3BlZWNoUmVjb2duaXRpb25FdmVudC5pZGwgKi8s
CisJCQkJOTM1QkRCMTgyNUM4RDdCMjAwOEZBRTI5IC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3RJZGVudGlmaWVyLmggKi8sCiAJCQkJOTNBMDQ4MjIyNTQ5NTRFODAwMEFDNDYy
IC8qIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5jcHAgKi8sCiAJCQkJOTNBMDQ4MUYyNTQ5NTRF
NjAwMEFDNDYyIC8qIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oICovLAogCQkJCTkzRDZCNzZG
MjU0QjkwMkQwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmggKi8sCkBA
IC0zMTU3Niw3ICszMTU3OSw2IEBACiAJCQkJNzdENTEwMTcxRUQ2MDIyMjAwREE0Qzg3IC8qIENy
ZWRlbnRpYWxzQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUEwNTIzMzEwNTg3NzRG
MDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENDgx
RjAyMTQ2QjVDNTUwMEFBNzgzNCAvKiBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJRjQ4QjdENTMyNUMzNDFFNjAwOUU3NUREIC8qIEltYWdlRXh0cmFjdGlvblJl
c3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDNDE2MTIwRjY1NjJGRDAwOTJEMkZCIC8qIENy
b3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFBQkU2N0IxRDA1
ODBEQjAwNkQ4NjJEIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTFDNDE1REEwRjY1NUQ2RjAwOTJEMkZCIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0
UmVzdWx0Q2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzI1MjcsNiArMzI1MjksNyBAQAogCQkJ
CUNEMTlGRUFFMUY1NzRCNkQwMDBDNDJGQiAvKiBJbWFnZURlY29kZXJBVkZPYmpDLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1NTVCODdFRDFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3MjA1QUI2MTIzOTI5MTAwMEIxNzM4MCAvKiBJbWFnZURv
Y3VtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDhCN0Q1MzI1QzM0MUU2MDA5RTc1REQgLyog
SW1hZ2VFeHRyYWN0aW9uUmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTc2QTU2NTFEODhB
NzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQzIx
MjUxRjEyRDAwM0VGMjY5IC8qIEltYWdlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
ODk1ODI1NjBFODU3QTdFMDBGODJDODMgLyogSW1hZ2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLApA
QCAtMzQ2NzMsNiArMzQ2NzYsNyBAQAogCQkJCTkzNDk1MEQwMjUzOTQzNkMwMDk5RjE3MSAvKiBT
cGVlY2hSZWNvZ25pdGlvbkVycm9yQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0OTUwRDEy
NTM5NDM3MDAwOTlGMTcxIC8qIFNwZWVjaFJlY29nbml0aW9uRXJyb3JFdmVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM0OTUwRDIyNTM5NDM3MzAwOTlGMTcxIC8qIFNwZWVjaFJlY29nbml0aW9u
RXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzNUJEQjE5MjVDOERCNjcwMDhGQUUyOSAvKiBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTNBMDQ4MjgyNTQ5NTUwNjAwMEFDNDYyIC8qIFNwZWVjaFJlY29nbml0aW9uUHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQTA0ODJBMjU0OTU1MTQwMDBBQzQ2MiAvKiBT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCNzcwMjU0
Qjk4QTAwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKaW5kZXggZmU2ZjVlOGZkOTUxYTVkMTAw
OGJkZDZiMTNjNjBlN2YyYzBkNGM1My4uZTE1ZDNiNTA2YTdlN2RkZWRkM2Y0ODNjNzE2MDQ4NzI0
MzI4NTBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKQEAgLTc1LDExICs3NSwyNiBA
QCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlcigpCiAgICAgICAgIHJlcXVlc3QtPmNvbXBsZXRlKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlw
ZTo6Tm90QWxsb3dlZCwgIlBlcm1pc3Npb24gbWFuYWdlciBoYXMgZXhpdGVkIl9zIH0pOwogfQog
ICAgIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KGNv
bnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayYmIGNvbXBsZXRpb250SGFuZGxlcikKK09wdGlvbmFs
PFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyPiBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KGNvbnN0IFN0cmluZyYg
bGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3RDYWxsYmFjayYmIGNvbXBsZXRpb250SGFuZGxlcikKIHsKICAgICBtX3JlcXVlc3RzLmFw
cGVuZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUobGFuZywgb3Jp
Z2luLCBmcmFtZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbnRIYW5kbGVyKSkpOwogICAg
IGlmIChtX3JlcXVlc3RzLnNpemUoKSA9PSAxKQogICAgICAgICBzdGFydE5leHRSZXF1ZXN0KCk7
CisgICAgcmV0dXJuIG1fcmVxdWVzdHMuaXNFbXB0eSgpID8gV1RGOjpudWxsb3B0IDogT3B0aW9u
YWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXI+
IHsgbV9yZXF1ZXN0cy5sYXN0KCktPmlkZW50aWZpZXIoKSB9OworfQorCit2b2lkIFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNhbmNlbFJlcXVlc3QoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIgcGVybWlzc2lvblJlcXVlc3RJ
ZGVudGlmaWVyKQoreworICAgIGlmIChtX3JlcXVlc3RzLmZpcnN0KCktPmlkZW50aWZpZXIoKSA9
PSBwZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gcmVxdWVzdHMgPSBzdGQ6OmV4Y2hhbmdlKG1fcmVxdWVzdHMsIHsgfSk7CisgICAgd2hpbGUg
KCFyZXF1ZXN0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byByZXF1ZXN0ID0gcmVxdWVzdHMu
dGFrZUZpcnN0KCk7CisgICAgICAgIGlmIChyZXF1ZXN0LT5pZGVudGlmaWVyKCkgPT0gcGVybWlz
c2lvblJlcXVlc3RJZGVudGlmaWVyKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIG1f
cmVxdWVzdHMuYXBwZW5kKFdURk1vdmUocmVxdWVzdCkpOworICAgIH0KIH0KIAogdm9pZCBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydE5leHRSZXF1ZXN0KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIuaAppbmRleCAwZGU1Zjk0N2I0NjMyODBmNGU0ZjM1MWQ4Y2U3ZTZhOTky
YmM5NDE1Li4wMjZiMDM1YTBjMGY3YjU0ZDQwZjEzYzlkZWQ0YWQ3NTJjZDUzMTBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtMzks
NyArNDAsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBDaGVja1Jlc3VsdCB7IERlbmllZCwg
R3JhbnRlZCwgVW5rbm93biB9OwogICAgIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXIoV2ViUGFnZVByb3h5Jik7CiAgICAgflNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXIoKTsKLSAgICB2b2lkIHJlcXVlc3QoY29uc3QgU3RyaW5nJiBsYW5nLCBjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayYmKTsKKyAgICBPcHRpb25hbDxX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllcj4gcmVx
dWVzdChjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVz
dENhbGxiYWNrJiYpOworICAgIHZvaWQgY2FuY2VsUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllcik7CiAKICAgICB2b2lkIGRlY2lkZUJ5
RGVmYXVsdEFjdGlvbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIFdlYlBhZ2VQcm94eSYgcGFnZSgpIHsgcmV0dXJu
IG1fcGFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCmluZGV4IGE2YzRkY2U5OTVlNDg5MGFj
NzExZjBiNjIwMmNmMTY3NTZkYzM4MmYuLjViY2VjOTdkYThlYzY3YjNkNTcyZWQxNWMxNDk0Mjgz
ZmI0YjhmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvblJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TcGVlY2hSZWNvZ25pdGlvbkVycm9yLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTQ4LDE4ICs0OSwyMSBAQCBwdWJsaWM6CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoZXJyb3IpKTsKICAgICB9CiAKKyAgICBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllciBpZGVudGlmaWVyKCkgeyByZXR1
cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmln
aW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIGNvbnN0IFN0cmluZyYgbGFuZygp
IGNvbnN0IHsgcmV0dXJuIG1fbGFuZzsgfQogICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lSWRlbnRpZmllcjsgfQogCiBw
cml2YXRlOgogICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoY29uc3QgU3Ry
aW5nJiBsYW5nLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIDogbV9sYW5n
KGxhbmcpCisgICAgICAgIDogbV9pZGVudGlmaWVyKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgICAgICAsIG1fbGFu
ZyhsYW5nKQogICAgICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAgICAgLCBtX2ZyYW1lSWRl
bnRpZmllcihmcmFtZUlkZW50aWZpZXIpCiAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICB7IH0KIAorICAgIFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAg
ICBTdHJpbmcgbV9sYW5nOwogICAgIFdlYkNvcmU6OkNsaWVudE9yaWdpbiBtX29yaWdpbjsKICAg
ICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbV9mcmFtZUlkZW50aWZpZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKaW5kZXgg
OWY5Njc0YWViNWVkZWUzODYzNzkzYTYwMmE2YzZhMGVmZTM5N2Y1Yy4uZTg5NDdmYjUzYmM5MjU4
NGYxZDU1YjgyZmNmYTkwYjdkNzYyODkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uU2VydmVyLmgiCiAK
KyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHku
aCIKICNpbmNsdWRlICJXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5oIgpA
QCAtMzYsMTQgKzM3LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1TcGVlY2hSZWNvZ25p
dGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4m
JiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmIHBlcm1pc3Npb25DaGVja2Vy
LCBTcGVlY2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkJiYg
Y2hlY2tJZkVuYWJsZWQKK1NwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNwZWVjaFJlY29nbml0
aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyR2V0dGVyJiYgcGVybWlzc2lvbk1hbmFnZXJHZXR0ZXIsIFNwZWVjaFJlY29nbml0
aW9uQ2hlY2tJZk1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQmJiBjaGVja0lmRW5hYmxlZAog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgLCBSZWFsdGltZU1lZGlhU291cmNlQ3JlYXRl
RnVuY3Rpb24mJiBmdW5jdGlvbgogI2VuZGlmCiAgICAgKQogICAgIDogbV9jb25uZWN0aW9uKFdU
Rk1vdmUoY29ubmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAs
IG1fcGVybWlzc2lvbkNoZWNrZXIoV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlcikpCisgICAgLCBt
X3Blcm1pc3Npb25NYW5hZ2VyR2V0dGVyKFdURk1vdmUocGVybWlzc2lvbk1hbmFnZXJHZXR0ZXIp
KQogICAgICwgbV9jaGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZChXVEZNb3ZlKGNo
ZWNrSWZFbmFibGVkKSkKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwgbV9yZWFsdGlt
ZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCkBAIC02Myw2MiAr
NjQsNTAgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWQKIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6cmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBtX3Blcm1pc3Npb25DaGVja2VyKHJlcXVl
c3QubGFuZygpLCByZXF1ZXN0LmNsaWVudE9yaWdpbigpLCByZXF1ZXN0LmZyYW1lSWRlbnRpZmll
cigpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgd2Vha1JlcXVlc3QgPSBt
YWtlV2Vha1B0cihyZXF1ZXN0KV0oYXV0byBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGlmICgh
d2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47CisgICAgYXV0byogcGVybWlzc2lvbk1hbmFn
ZXIgPSBtX3Blcm1pc3Npb25NYW5hZ2VyR2V0dGVyKCk7CisgICAgaWYgKCFwZXJtaXNzaW9uTWFu
YWdlcikgeworICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSByZXF1ZXN0LmNsaWVudElkZW50aWZp
ZXIoKTsKKyAgICAgICAgbV9yZXF1ZXN0cy5yZW1vdmUoaWRlbnRpZmllcik7CisgICAgICAgIHNl
bmRVcGRhdGUoaWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
OjpFcnJvciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uRXJyb3JUeXBlOjpOb3RBbGxvd2VkLCAiUGFnZSBubyBsb25nZXIgZXhpc3Rz
Il9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgICAgIGlmICghd2Vha1JlcXVl
c3QpCisgICAgYXV0byBwZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIgPSBwZXJtaXNzaW9uTWFu
YWdlci0+cmVxdWVzdChyZXF1ZXN0LmxhbmcoKSwgcmVxdWVzdC5jbGllbnRPcmlnaW4oKSwgcmVx
dWVzdC5mcmFtZUlkZW50aWZpZXIoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyksIHdlYWtSZXF1ZXN0ID0gbWFrZVdlYWtQdHIocmVxdWVzdCldKGF1dG8gZXJyb3IpIG11dGFi
bGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrUmVxdWVzdCkKICAgICAgICAgICAg
IHJldHVybjsKIAorICAgICAgICB3ZWFrUmVxdWVzdC0+c2V0UGVybWlzc2lvblJlcXVlc3RJZGVu
dGlmaWVyKFdURjo6bnVsbG9wdCk7CisKICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gd2Vha1Jl
cXVlc3QtPmNsaWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgYXV0byByZXF1ZXN0ID0gbV9yZXF1
ZXN0cy50YWtlKGlkZW50aWZpZXIpOwogICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAg
IG1fcmVxdWVzdHMucmVtb3ZlKGlkZW50aWZpZXIpOwogICAgICAgICAgICAgc2VuZFVwZGF0ZShp
ZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yLCBX
VEZNb3ZlKGVycm9yKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBoYW5kbGVSZXF1ZXN0KCp3ZWFrUmVxdWVzdCk7CisgICAgICAgIGhhbmRsZVJlcXVlc3QoV1RG
TW92ZShyZXF1ZXN0KSk7CiAgICAgfSk7CisKKyAgICBpZiAocGVybWlzc2lvblJlcXVlc3RJZGVu
dGlmaWVyKQorICAgICAgICByZXF1ZXN0LnNldFBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllcihw
ZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIpOwogfQogCi12b2lkIFNwZWVjaFJlY29nbml0aW9u
U2VydmVyOjpoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYg
cmVxdWVzdCkKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3Qoc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gcmVxdWVzdCkK
IHsKLSAgICBpZiAoIW1fcmVjb2duaXplcikgewotICAgICAgICBtX3JlY29nbml6ZXIgPSBtYWtl
VW5pcXVlPFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI+KFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKHRoaXMpXShhdXRvJiB1cGRhdGUpIHsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBhdXRvIGNsaWVudElkZW50
aWZpZXIgPSB1cGRhdGUuY2xpZW50SWRlbnRpZmllcigpOwotICAgICAgICAgICAgaWYgKCFtX3Jl
cXVlc3RzLmNvbnRhaW5zKGNsaWVudElkZW50aWZpZXIpKQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICAgICAgc2VuZFVwZGF0ZSh1cGRhdGUpOwotCi0gICAgICAgICAgICBhdXRv
IHR5cGUgPSB1cGRhdGUudHlwZSgpOwotICAgICAgICAgICAgaWYgKHR5cGUgIT0gV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvciAmJiB0eXBlICE9IFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICAgICAgaWYgKG1faXNSZXNldHRpbmcpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgbV9pc1Jlc2V0dGluZyA9IHRydWU7Ci0KLSAgICAgICAgICAgIG1fcmVj
b2duaXplci0+cmVzZXQoKTsKLSAgICAgICAgICAgIG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElk
ZW50aWZpZXIpOwotICAgICAgICAgICAgbV9pc1Jlc2V0dGluZyA9IGZhbHNlOwotICAgICAgICB9
KTsKLSAgICB9Ci0KLSAgICBpZiAoYXV0byBjdXJyZW50Q2xpZW50SWRlbnRpZmllciA9IG1fcmVj
b2duaXplci0+Y3VycmVudENsaWVudElkZW50aWZpZXIoKSkgeworICAgIGlmIChtX3JlY29nbml6
ZXIpIHsKICAgICAgICAgYXV0byBlcnJvciA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJy
b3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QWJvcnRlZCwgIkFub3Ro
ZXIgcmVxdWVzdCBpcyBzdGFydGVkIl9zIH07Ci0gICAgICAgIHNlbmRVcGRhdGUoKmN1cnJlbnRD
bGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVy
cm9yLCBlcnJvcik7Ci0gICAgICAgIG1fcmVjb2duaXplci0+cmVzZXQoKTsKKyAgICAgICAgbV9y
ZWNvZ25pemVyLT5hYm9ydChlcnJvcik7CiAgICAgfQogCi0gICAgYXV0byBjbGllbnRJZGVudGlm
aWVyID0gcmVxdWVzdC5jbGllbnRJZGVudGlmaWVyKCk7CisgICAgbV9yZWNvZ25pemVyID0gbWFr
ZVVuaXF1ZTxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyPihbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKV0oYXV0byYgdXBkYXRlKSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5zZW5kVXBkYXRlKHVwZGF0ZSk7CisgICAgfSk7CisKKyAgICBhdXRvIGNs
aWVudElkZW50aWZpZXIgPSByZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCk7CiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKICAgICBhdXRvIHNvdXJjZU9yRXJyb3IgPSBtX3JlYWx0aW1lTWVkaWFT
b3VyY2VDcmVhdGVGdW5jdGlvbigpOwogICAgIGlmICghc291cmNlT3JFcnJvcikgewotICAgICAg
ICBtX3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKICAgICAgICAgc2VuZFVwZGF0
ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRl
bnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uRXJyb3JUeXBlOjpBdWRpb0NhcHR1cmUsIHNvdXJjZU9yRXJyb3IuZXJyb3JN
ZXNzYWdlIH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyNiw0NCArMTE1LDU0IEBA
IHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0JiByCiAgICAgV2ViUHJvY2Vzc1Byb3h5OjptdXRlQ2FwdHVy
ZUluUGFnZXNFeGNlcHQobV9pZGVudGlmaWVyKTsKIAogICAgIGJvb2wgbW9ja0RldmljZUNhcHR1
cmVzRW5hYmxlZCA9IG1fY2hlY2tJZk1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQoKTsKLSAg
ICBtX3JlY29nbml6ZXItPnN0YXJ0KGNsaWVudElkZW50aWZpZXIsIHNvdXJjZU9yRXJyb3Iuc291
cmNlKCksIG1vY2tEZXZpY2VDYXB0dXJlc0VuYWJsZWQsIHJlcXVlc3QubGFuZygpLCByZXF1ZXN0
LmNvbnRpbnVvdXMoKSwgcmVxdWVzdC5pbnRlcmltUmVzdWx0cygpLCByZXF1ZXN0Lm1heEFsdGVy
bmF0aXZlcygpKTsKKyAgICBtX3JlY29nbml6ZXItPnN0YXJ0KFdURk1vdmUocmVxdWVzdCksIHNv
dXJjZU9yRXJyb3Iuc291cmNlKCksIG1vY2tEZXZpY2VDYXB0dXJlc0VuYWJsZWQpOwogI2Vsc2UK
LSAgICBtX3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKICAgICBzZW5kVXBkYXRl
KGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6
RXJyb3IsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkVycm9yVHlwZTo6QXVkaW9DYXB0dXJlLCAiQXVkaW8gY2FwdHVyZSBpcyBub3Qg
aW1wbGVtZW50ZWQiX3MgfSk7CiAjZW5kaWYKIH0KIAordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6Y2FuY2VsKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHJlcXVlc3QgPSBtX3JlcXVl
c3RzLnRha2UoY2xpZW50SWRlbnRpZmllcik7CisgICAgaWYgKCFyZXF1ZXN0KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzZW5kVXBkYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uVXBkYXRlVHlwZTo6Q2FuY2VsKTsKKworICAgIGF1dG8gcGVybWlzc2lvblJl
cXVlc3RJZGVudGlmaWVyID0gcmVxdWVzdC0+cGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyKCk7
CisgICAgaWYgKCFwZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8qIHBlcm1pc3Npb25NYW5hZ2VyID0gbV9wZXJtaXNzaW9uTWFuYWdlckdldHRl
cigpOworICAgIGlmICghcGVybWlzc2lvbk1hbmFnZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IHBlcm1pc3Npb25NYW5hZ2VyLT5jYW5jZWxSZXF1ZXN0KCpwZXJtaXNzaW9uUmVxdWVzdElkZW50
aWZpZXIpOworfQorCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdG9wKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRp
ZmllcikKIHsKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElkZW50aWZpZXIpOwotICAgIGlmICht
X3JlY29nbml6ZXIgJiYgbV9yZWNvZ25pemVyLT5jdXJyZW50Q2xpZW50SWRlbnRpZmllcigpID09
IGNsaWVudElkZW50aWZpZXIpIHsKLSAgICAgICAgbV9yZWNvZ25pemVyLT5zdG9wKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBpZiAobV9yZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRl
bnRpZmllcikpCi0gICAgICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOworICAgIGNhbmNlbChjbGllbnRJZGVu
dGlmaWVyKTsKKyAgICBpZiAobV9yZWNvZ25pemVyICYmIG1fcmVjb2duaXplci0+Y2xpZW50SWRl
bnRpZmllcigpID09IGNsaWVudElkZW50aWZpZXIpCisgICAgICAgIG1fcmVjb2duaXplci0+c3Rv
cCgpOwogfQogCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjphYm9ydChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZp
ZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJZGVudGlmaWVyKTsKLSAgICBpZiAobV9y
ZWNvZ25pemVyICYmIG1fcmVjb2duaXplci0+Y3VycmVudENsaWVudElkZW50aWZpZXIoKSA9PSBj
bGllbnRJZGVudGlmaWVyKSB7Ci0gICAgICAgIG1fcmVjb2duaXplci0+YWJvcnQoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KIAotICAgIGlmIChtX3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVu
dGlmaWVyKSkKLSAgICAgICAgc2VuZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7CisgICAgY2FuY2VsKGNsaWVudElkZW50
aWZpZXIpOworICAgIGlmIChtX3JlY29nbml6ZXIgJiYgbV9yZWNvZ25pemVyLT5jbGllbnRJZGVu
dGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikKKyAgICAgICAgbV9yZWNvZ25pemVyLT5hYm9y
dCgpOwogfQogCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjppbnZhbGlkYXRlKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRl
bnRpZmllcikKIHsKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElkZW50aWZpZXIpOwotICAgIGlm
IChtX3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKSkgewotICAgICAgICBpZiAobV9y
ZWNvZ25pemVyICYmIG1fcmVjb2duaXplci0+Y3VycmVudENsaWVudElkZW50aWZpZXIoKSA9PSBj
bGllbnRJZGVudGlmaWVyKQotICAgICAgICAgICAgbV9yZWNvZ25pemVyLT5hYm9ydCgpOwotICAg
IH0KKyAgICBpZiAobV9yZWNvZ25pemVyICYmIG1fcmVjb2duaXplci0+Y2xpZW50SWRlbnRpZmll
cigpID09IGNsaWVudElkZW50aWZpZXIpCisgICAgICAgIG1fcmVjb2duaXplci0+YWJvcnQoKTsK
IH0KIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c2VuZFVwZGF0ZShXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZp
ZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSB0eXBlLCBPcHRpb25hbDxX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiBlcnJvciwgT3B0aW9uYWw8VmVjdG9yPFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+IHJlc3VsdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCmluZGV4IDJmYzI0
OGE4ZTEzYmM3NjY1NTQxNjAxNzQ4NWU5NDFkYmVkY2VhMTcuLmIzZjNlZWJlYWY4NTc4NDAwNWY5
Mjg2Mjk3YjNkYTMxNmQ3YWJlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaApAQCAtNDMsMTAgKzQzLDExIEBAIHN0cnVjdCBDbGll
bnRPcmlnaW47CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiB1c2luZyBTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgPSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcjsK
LXVzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXIgPSBGdW5jdGlvbjx2b2lk
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNr
JiYpPjsKK3VzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJHZXR0ZXIgPSBG
dW5jdGlvbjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKigpPjsKIHVzaW5nIFNw
ZWVjaFJlY29nbml0aW9uQ2hlY2tJZk1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQgPSBGdW5j
dGlvbjxib29sKCk+OwogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlciA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4sIHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewpAQCAtNTQsOSArNTUsOSBA
QCBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcj4sCiBwdWJsaWM6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKICAgICB1c2luZyBSZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24gPSBGdW5jdGlv
bjxXZWJDb3JlOjpDYXB0dXJlU291cmNlT3JFcnJvcigpPjsKLSAgICBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklk
ZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiwgU3BlZWNoUmVj
b2duaXRpb25DaGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCYmLCBSZWFsdGltZU1l
ZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24mJik7CisgICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIo
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVy
LCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyR2V0dGVyJiYsIFNwZWVjaFJlY29n
bml0aW9uQ2hlY2tJZk1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQmJiwgUmVhbHRpbWVNZWRp
YVNvdXJjZUNyZWF0ZUZ1bmN0aW9uJiYpOwogI2Vsc2UKLSAgICBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50
aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiwgU3BlZWNoUmVjb2du
aXRpb25DaGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCYmKTsKKyAgICBTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJHZXR0
ZXImJiwgU3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxl
ZCYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVv
dXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CkBAIC02Nyw5ICs2
OCwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbkZv
clJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7Ci0gICAgdm9pZCBo
YW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOworICAgIHZv
aWQgaGFuZGxlUmVxdWVzdChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0Pik7CiAgICAgdm9pZCBzZW5kVXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
VXBkYXRlVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gPSBX
VEY6Om51bGxvcHQsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJl
c3VsdERhdGE+PiA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBzZW5kVXBkYXRlKGNvbnN0IFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik7CisgICAgdm9pZCBjYW5jZWwoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CiAKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwpAQCAtODEsNyArODMsNyBAQCBw
cml2YXRlOgogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIEhhc2hNYXA8
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4+IG1fcmVxdWVz
dHM7Ci0gICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciBtX3Blcm1pc3Npb25D
aGVja2VyOworICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJHZXR0ZXIgbV9w
ZXJtaXNzaW9uTWFuYWdlckdldHRlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXplcj4gbV9yZWNvZ25pemVyOwogICAgIFNwZWVjaFJlY29nbml0aW9uQ2hlY2tJ
Zk1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQgbV9jaGVja0lmTW9ja1NwZWVjaFJlY29nbml0
aW9uRW5hYmxlZDsKICAgICBib29sIG1faXNSZXNldHRpbmcgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggN2QzMWNhYTg5NjAxMWJlNzdiMmMx
NGNkYzExN2Y2NDZjZDNhNzRmNC4uMGM0YTlmYTRhNTgzNmZiZGI1NjQ3ZTcwNGQyMGNlOTgxZDk4
ZmZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDQy
OCw2ICsxMDQyOCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1p
c3Npb25Gb3JTcGVlY2hSZWNvZ25pdGlvbihGcmFtZUlkZW50aWZpZQogI2VuZGlmCiB9CiAKK1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIqIFdlYlBhZ2VQcm94eTo6c3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcigpCit7CisgICAgaWYgKCFtX3NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIpCisgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cj4oKnRoaXMpOworCisgICAgcmV0dXJuIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlci5nZXQoKTsKK30KKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKIFdlYkNvcmU6OkNh
cHR1cmVTb3VyY2VPckVycm9yIFdlYlBhZ2VQcm94eTo6Y3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJj
ZUZvclNwZWVjaFJlY29nbml0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggZDBlZTY3ODJjZGQ4YzcwOTI3NDEyYzQ5MjIyNzBmYmIzZmVmNTYxMS4uYWViYzA3
NzY3ZDMwYjJjMDhlYTEyNDc2ZmZmOWMwYjY5N2YzOGVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTE4MzIsNiArMTgzMiw3IEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogICAgIFdlYkNvcmU6OkNhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0
ZVJlYWx0aW1lTWVkaWFTb3VyY2VGb3JTcGVlY2hSZWNvZ25pdGlvbigpOwogI2VuZGlmCisgICAg
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciogc3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcigpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgY2hhbmdlVW5p
dmVyc2FsQWNjZXNzWm9vbUZvY3VzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCBlYmNhMDNkMzE5NDdlOGM1ZTRkMjUzZGVmYjZkNDE1NGRjNjc3ZTI2Li41N2I1
MGVmZTc4ZDdlY2MxNzhkOWNmNGU1YTJhNmE3ZDljNDY3NzUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE3MjIsMTMgKzE3MjIsOCBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXJJZGVudAogCiAgICAgQVNTRVJUKCFtX3NwZWVjaFJlY29nbml0aW9uU2Vy
dmVyTWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBhdXRvJiBzcGVlY2hSZWNvZ25pdGlv
blNlcnZlciA9IG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNYXAuYWRkKGlkZW50aWZpZXIsIG51
bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBhdXRvIHBlcm1pc3Npb25DaGVja2VyID0gW3dl
YWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKGF1dG8mIGxhbmcsIGF1dG8mIG9yaWdp
biwgYXV0byBmcmFtZUlkZW50aWZpZXIsIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJs
ZSB7Ci0gICAgICAgIGlmICghd2Vha1BhZ2UpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yVHlwZTo6Tm90QWxsb3dlZCwgIlBhZ2Ugbm8gbG9uZ2VyIGV4aXN0cyJfcyB9KTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHdlYWtQYWdlLT5yZXF1ZXN0U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGxhbmcsIG9yaWdpbiwgZnJhbWVJZGVudGlmaWVyLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byBzcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyR2V0dGVyID0gW3dlYWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFn
ZSldKCkgbXV0YWJsZSB7CisgICAgICAgIHJldHVybiB3ZWFrUGFnZSA/IHdlYWtQYWdlLT5zcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKCkgOiBudWxscHRyOwogICAgIH07CiAgICAg
YXV0byBjaGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFt3ZWFrUGFnZSA9IG1ha2VX
ZWFrUHRyKHRhcmdldFBhZ2UpXSgpIHsKICAgICAgICAgcmV0dXJuIHdlYWtQYWdlICYmIHdlYWtQ
YWdlLT5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQoKTsKQEAgLTE3Mzgs
OSArMTczMyw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcihTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50CiAgICAgYXV0byBjcmVhdGVSZWFs
dGltZU1lZGlhU291cmNlID0gW3dlYWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKCkg
ewogICAgICAgICByZXR1cm4gd2Vha1BhZ2UgPyB3ZWFrUGFnZS0+Y3JlYXRlUmVhbHRpbWVNZWRp
YVNvdXJjZUZvclNwZWVjaFJlY29nbml0aW9uKCkgOiBDYXB0dXJlU291cmNlT3JFcnJvciB7ICJQ
YWdlIGlzIGludmFsaWQiIH07CiAgICAgfTsKLSAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9
IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24o
KSksIGlkZW50aWZpZXIsIFdURk1vdmUocGVybWlzc2lvbkNoZWNrZXIpLCBXVEZNb3ZlKGNoZWNr
SWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKSwgV1RGTW92ZShjcmVhdGVSZWFsdGltZU1lZGlh
U291cmNlKSk7CisgICAgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBtYWtlVW5pcXVlPFNwZWVj
aFJlY29nbml0aW9uU2VydmVyPihtYWtlUmVmKCpjb25uZWN0aW9uKCkpLCBpZGVudGlmaWVyLCBX
VEZNb3ZlKHNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJHZXR0ZXIpLCBXVEZNb3Zl
KGNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKSwgV1RGTW92ZShjcmVhdGVSZWFsdGlt
ZU1lZGlhU291cmNlKSk7CiAjZWxzZQotICAgIHNwZWVjaFJlY29nbml0aW9uU2VydmVyID0gbWFr
ZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwg
aWRlbnRpZmllciwgV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlciksIFdURk1vdmUoY2hlY2tJZk1v
Y2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQpKTsKKyAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9
IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24o
KSksIGlkZW50aWZpZXIsIFdURk1vdmUoc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
ckdldHRlciksIFdURk1vdmUoY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQpKTsKICNl
bmRpZgogCiAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyLCAqc3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uLmNwcAppbmRleCA0Yjc2M2JjZGVlNjNiZGZmNGZhMWYyOWRlNzg1NjYwZDQ4YjRmMWVkLi4x
YWQ3M2Q5MDcyZThhNTE2MmNmYmRiMDgzMjU3YTNjMjI0OWM1ZWJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcApAQCAtMTM2LDYgKzEzNiw5IEBA
IHZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpkaWRSZWNlaXZlVXBkYXRlKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQ6CiAgICAgICAgIGNsaWVudC0+ZGlk
RW5kKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGVUeXBlOjpDYW5jZWw6CisgICAgICAgIGNsaWVudC0+ZGlkQ2FuY2VsKCk7CiAgICAg
fQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418967</attachid>
            <date>2021-02-02 00:19:43 -0800</date>
            <delta_ts>2021-02-02 14:26:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219699-20210202001943.patch</filename>
            <type>text/plain</type>
            <size>52725</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjAwNGVmZTk3MzBkNmJj
Mjk1MDVmNDEyYmE1MDY4MzgzZGMxMjg5Ny4uMDY3YTVhOTUwNmVmMjA2MjFlNWU3NjY3NDc3YWEy
Nzg3YjE0MGY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIxLTAyLTAxICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGEgU3BlZWNoUmVj
b2duaXplciBmb3IgZWFjaCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY5OQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzIzOTIwOTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEhlYWRl
cnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb246OmRpZFN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uOjpkaWRFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6ZGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uOjpkaWRDYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb246OnJlc2V0KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
bi5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3RJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0OjpzZXRQZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpwZXJtaXNzaW9uUmVxdWVz
dElkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
VXBkYXRlLmg6IEFkZCBhIG5ldyB1cGRhdGUgdHlwZTogY2FuY2VsLiBVbmxpa2UgZW5kIHR5cGUg
dXBkYXRlLCB3aGljaCBtYXJrcworICAgICAgICB0aGUgZW5kIG9mIGEgc3RhcnRlZCByZXF1ZXN0
LCBjYW5jZWwgbWFya3MgdGhlIGVuZCBvZiBhbiB1bi1zdGFydGVkIHJlcXVlc3QgKHNlcnZlciBy
ZW1vdmVzIHRoZSByZXF1ZXN0IGZyb20gCisgICAgICAgIHF1ZXVlIGFuZCBpdCB3aWxsIG5vdCBi
ZSBoYW5kbGVkKS4KKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OlNwZWVjaFJlY29nbml6ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6flNwZWVjaFJlY29nbml6ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6YWJvcnQpOgorICAgICAgICAo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pemVyOjpjbGllbnRJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml6ZXI6OnN0YXJ0Q2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVy
OjpzdG9wQ2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdGFy
dFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OmFib3J0
UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcFJl
Y29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnJlc2V0KTog
RGVsZXRlZC4gTm8gbG9uZ2VyIG5lZWRlZCBzaW5jZSB3ZSBjcmVhdGUgbmV3IHJlY29nbml6ZXIg
Zm9yIG5ldyByZXF1ZXN0LgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6cmVz
ZXRSZWNvZ25pdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXplci5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6Y3VycmVu
dENsaWVudElkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvc3Bl
ZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml6ZXI6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTAyLTAxICBEb24gT2xtc3Rl
YWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgW0N1cmxdIEVuYWJsZSBGVFAg
cHJvdG9jb2wgb25seSB3aGVuIEVOQUJMRV9GVFBESVIgaXMgb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMGUwMDE2
NWU3MDEzMTU1YmFjZmZjNDc4NjViNWQyNzc5OWI4Mzk1NS4uZjYwZjQ4ZWI3ZjM0NjE2OTQyMmU2
YjhlMjFiOWJhNDRjNjI0OTE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAyMS0wMi0w
MSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGUuY29tPgorCisgICAgICAgIENyZWF0ZSBhIFNw
ZWVjaFJlY29nbml6ZXIgZm9yIGVhY2ggU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2OTkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzcyMzkyMDk3PgorCisgICAgICAgIFdlIHVzZWQgdGhlIHNhbWUgU3Bl
ZWNoUmVjb2duaXplciBmb3IgbXVsdGlwbGUgcmVxdWVzdHMgc28gd2UgaGFkIHRvIHJlc2V0IFNw
ZWVjaFJlY29nbml6ZXIgc3RhdGUgYmV0d2VlbgorICAgICAgICByZXF1ZXN0cywgd2hpY2ggbWFr
ZXMgdGhpbmdzIGNvbXBsaWNhdGVkIGFuZCBoYXJkIHRvIGRlYnVnLiBOb3cgd2UgbWFrZSBvbmUg
U3BlZWNoUmVjb2duaXplciBmb3IgZWFjaCAKKyAgICAgICAgU3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KTog
UmV0dXJuIGFuIGlkZW50aWZpZXIgZm9yIFNwZWVjaFJlY29nbml0aW9uU2VydmVyIHRvCisgICAg
ICAgIGNhbmNlbC4KKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6Y2FuY2VsUmVxdWVzdCk6IENhbmNlbCByZXF1ZXN0IGlmIGl0IGlzIHBlbmRpbmcu
CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVz
dC5oOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
OjppZGVudGlmaWVyKTogQWRkIGFuIGlkZW50aWZpZXIgZm9yIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3QuCisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3Q6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcik6IFNw
ZWVjaFJlY29nbml0aW9uU2VydmVyIG5vdyB0YWtlcyBhbiAKKyAgICAgICAgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlckdldHRlciBpbnN0ZWFkIG9mIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNoZWNrZXIsIHNvIGl0IGNhbiBib3RoIG1ha2UgCisgICAgICAgIHJlcXVlc3Qg
YW5kIGNhbmNlbCByZXF1ZXN0IGZyb20gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
ci4KKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlcXVlc3RQZXJt
aXNzaW9uRm9yUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjpoYW5kbGVSZXF1ZXN0KTogQWJvcnQgZXhpc3RpbmcgcmVjb2duaXplciBpZiBhbnksIGFu
ZCBjcmVhdGUgYSBuZXcgcmVjb2duaXplciAKKyAgICAgICAgZm9yIG5ldyByZXF1ZXN0IHRvIGhh
bmRsZS4KKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmNhbmNlbCk6
IFNlbmQgYSBDYW5jZWwgdXBkYXRlIHRvIGNsaWVudCBhbmQgY2FuY2VsIHBlcm1pc3Npb24gcmVx
dWVzdCBmcm9tCisgICAgICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuCisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdG9wKToKKyAgICAgICAg
KFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmFib3J0KToKKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmludmFsaWRhdGUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb246OmRpZFJlY2VpdmVVcGRhdGUpOgorCiAyMDIxLTAyLTAxICBTdGVwaGFuIFN6YWJv
ICA8c3RlcGhhbi5zemFib0Bzb255LmNvbT4KIAogICAgICAgICBbUGxheVN0YXRpb25dIEJ1aWxk
IGZpeCBhZnRlciByMjcyMDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBhYmExNWUwZWQ3YTAxNDY0
NTgyZjNmOTI4MGU2NzhiM2RiMjhmNjMyLi41MDU3OTk2MGU4N2M0YTY2Yjc5YWFlZjg5OWY1NDk2
YWM1ZGE5Y2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNSw2ICsxMjUsNyBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50LmgKICAgICBNb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLmgKICAgICBNb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvbkVycm9yLmgKKyAgICBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllci5oCiAgICAgTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKICAgICBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RJbmZvLmgKICAgICBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
blJlc3VsdERhdGEuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb24uY3BwCmluZGV4IDE1ODRjMTc5NWVhYjI4NjMwZmIwOTYwNTk1Y2FkMjY1
ZGQzNjhmZjUuLjY3NTAyZDY5NTFkYmQ1MmZkYTE1NjUwMmY4MGFjYzU3ZjJmNDRhYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5j
cHAKQEAgLTExOSw2ICsxMTksNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uOjpzdG9wKCkKIAog
dm9pZCBTcGVlY2hSZWNvZ25pdGlvbjo6ZGlkU3RhcnQoKQogeworICAgIG1faGFzUmVjZWl2ZWRT
dGFydCA9IHRydWU7CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN0YXJ0aW5nKQogICAgICAg
ICBtX3N0YXRlID0gU3RhdGU6OlJ1bm5pbmc7CiAKQEAgLTE5MSwxOCArMTkyLDMyIEBAIHZvaWQg
U3BlZWNoUmVjb2duaXRpb246OmRpZFJlY2VpdmVSZXN1bHQoVmVjdG9yPFNwZWVjaFJlY29nbml0
aW9uUmVzdWx0RGF0YT4mJiByCiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb246OmRpZEVycm9yKGNv
bnN0IFNwZWVjaFJlY29nbml0aW9uRXJyb3ImIGVycm9yKQogewotICAgIG1fZmluYWxSZXN1bHRz
LmNsZWFyKCk7Ci0gICAgbV9zdGF0ZSA9IFN0YXRlOjpJbmFjdGl2ZTsKKyAgICBpZiAoIW1faGFz
UmVjZWl2ZWRTdGFydCkKKyAgICAgICAgcmVzZXQoKTsKIAogICAgIHF1ZXVlVGFza1RvRGlzcGF0
Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6U3BlZWNoLCBTcGVlY2hSZWNvZ25pdGlvbkVycm9y
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZXJyb3IudHlwZSwgZXJyb3Iu
bWVzc2FnZSkpOwogfQogCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uOjpkaWRFbmQoKQogewotICAg
IG1fZmluYWxSZXN1bHRzLmNsZWFyKCk7Ci0gICAgbV9zdGF0ZSA9IFN0YXRlOjpJbmFjdGl2ZTsK
KyAgICByZXNldCgpOwogCiAgICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNr
U291cmNlOjpTcGVlY2gsIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuZEV2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAordm9pZCBT
cGVlY2hSZWNvZ25pdGlvbjo6ZGlkQ2FuY2VsKCkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBT
dGF0ZTo6QWJvcnRpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBpbmcpOworICAgIEFTU0VS
VCghbV9oYXNSZWNlaXZlZFN0YXJ0KTsKKworICAgIG1fc3RhdGUgPSBTdGF0ZTo6SW5hY3RpdmU7
Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb246OnJlc2V0KCkKK3sKKyAgICBtX2hhc1JlY2Vp
dmVkU3RhcnQgPSBmYWxzZTsKKyAgICBtX2ZpbmFsUmVzdWx0cy5jbGVhcigpOworICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6SW5hY3RpdmU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5oCmluZGV4
IGMyMDBiYWU2NWNiODUzYWUzMWJiNmFiMjFlMjIxMzFlMTgwNGEwNmYuLjc0ZDcxMDVhMGQxMzBm
ZDU0ZDliOTg3NmRkZWE4NDE3M2ExZjZmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uaApAQCAtNjksNyArNjksNyBAQCBwcml2YXRl
OgogICAgICAgICBTdGFydGluZywKICAgICAgICAgUnVubmluZywKICAgICAgICAgU3RvcHBpbmcs
Ci0gICAgICAgIEFib3J0aW5nLAorICAgICAgICBBYm9ydGluZwogICAgIH07CiAKICAgICBleHBs
aWNpdCBTcGVlY2hSZWNvZ25pdGlvbihEb2N1bWVudCYpOwpAQCAtODYsNiArODYsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3VsdChWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25S
ZXN1bHREYXRhPiYmIHJlc3VsdERhdGFzKSBmaW5hbDsKICAgICB2b2lkIGRpZEVycm9yKGNvbnN0
IFNwZWVjaFJlY29nbml0aW9uRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEVuZCgpIGZpbmFs
OworICAgIHZvaWQgZGlkQ2FuY2VsKCkgZmluYWw7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QK
ICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CkBAIC05
OCwxMiArOTksMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwg
eyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsg
fQogCisgICAgdm9pZCByZXNldCgpOworCiAgICAgU3RyaW5nIG1fbGFuZzsKICAgICBib29sIG1f
Y29udGludW91cyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2ludGVyaW1SZXN1bHRzIHsgZmFsc2Ug
fTsKICAgICB1aW50NjRfdCBtX21heEFsdGVybmF0aXZlcyB7IDEgfTsKIAogICAgIFN0YXRlIG1f
c3RhdGUgeyBTdGF0ZTo6SW5hY3RpdmUgfTsKKyAgICBib29sIG1faGFzUmVjZWl2ZWRTdGFydCB7
IGZhbHNlIH07CiAgICAgVmVjdG9yPFJlZjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4+IG1fZmlu
YWxSZXN1bHRzOwogICAgIFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24+IG1fY29u
bmVjdGlvbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudC5oCmluZGV4IDFjMzNk
ZmUyZWZjNGRmYmYyZWM5YTE2YTM4NDJmYzFhZThjZDE5ZTQuLmQ4OWE1YTg2NGU0NTUyYWYwYzgz
ZjMwNGExYTU4ZDNjYzNkYzA4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudC5o
CkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3VsdChWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYmIHJlc3VsdERhdGFzKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEVycm9yKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXJy
b3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2FuY2VsKCkgPSAwOwogCiAgICAgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45Yzg3YmMyMjc2M2U1NzM0YzExZDA0YTVjMzE1OWNkNzVjMDg4MmMyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmll
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCmluZGV4IDYzODg4YTkwYTQ5NGQzZTY3MmVmZWMxZTAz
YjVjMGZiMmNmYzkxYjMuLmRiYzVkZTk0NmViOTgzMzc1Mjg3NjQxZjEzYmU2ZWU2YzljMWEwNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIuaCIKKyNp
bmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzUsNiArMzYsOCBAQCBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Qg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PgogcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdChT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYpOwogCisgICAgdm9pZCBzZXRQZXJtaXNzaW9u
UmVxdWVzdElkZW50aWZpZXIoT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdElkZW50aWZpZXI+IHBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllcikgeyBtX3Blcm1pc3Np
b25SZXF1ZXN0SWRlbnRpZmllciA9IHBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllcjsgfQorICAg
IE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyPiBw
ZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIoKSB7IHJldHVybiBtX3Blcm1pc3Npb25SZXF1ZXN0
SWRlbnRpZmllcjsgfQogICAgIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIgY2xpZW50SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5jbGllbnRJZGVu
dGlmaWVyOyB9CiAgICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4gbV9pbmZv
Lmxhbmc7IH0KICAgICBib29sIGNvbnRpbnVvdXMoKSBjb25zdCB7IHJldHVybiBtX2luZm8uY29u
dGludW91czs7IH0KQEAgLTQ1LDYgKzQ4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gbV9pbmZvOworICAgIE9wdGlvbmFsPFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyPiBtX3Blcm1pc3Npb25SZXF1ZXN0
SWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCmlu
ZGV4IDg5MTQ5MTc5M2Y0ZTAxZWMyZmY2MDEwN2NiNDg1ZjQ4OGZhNDNlODQuLjNiNjliNzQ1N2Ex
NmIwOGI3MmM5ZTI5M2Y3OThlOGE2NTdiYTQxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaApAQCAtNDQsNyAr
NDQsOCBAQCBlbnVtIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSB7CiAgICAgUmVz
dWx0LAogICAgIE5vTWF0Y2gsCiAgICAgRXJyb3IsCi0gICAgRW5kCisgICAgRW5kLAorICAgIENh
bmNlbAogfTsKIAogU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml6ZXIuY3BwCmluZGV4IGNhZDQ4YTk3NDJiYjllMDE0MzRmYmE4NWRkMGMx
MGE5YzAxZmY0ODguLmFkMGE2YjMyNmZkZDNmZGU0ODI3OTYzNGRkMmM1YWZkZTM4ZDZhYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIu
Y3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3Bl
ZWNoUmVjb2duaXplci5oIgogCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCIKICNpbmNsdWRlIDx3dGYvTWVk
aWFUaW1lLmg+CiAKQEAgLTM2LDQ4ICszNyw2NSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBT
cGVlY2hSZWNvZ25pemVyOjpTcGVlY2hSZWNvZ25pemVyKERlbGVnYXRlQ2FsbGJhY2smJiBjYWxs
YmFjaykKLSAgICA6IG1fZGVsZWdhdGVDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKIHsKKyAg
ICBtX2RlbGVnYXRlQ2FsbGJhY2sgPSBbdGhpcywgZGVsZWdhdGVDYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShjb25zdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYgdXBkYXRlKSB7CisgICAg
ICAgIEFTU0VSVChjbGllbnRJZGVudGlmaWVyKCkgPT0gdXBkYXRlLmNsaWVudElkZW50aWZpZXIo
KSk7CisgICAgICAgIGRlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKKworICAgICAgICBpZiAodXBk
YXRlLnR5cGUoKSA9PSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yKQorICAgICAg
ICAgICAgYWJvcnQoKTsKKyAgICAgICAgaWYgKHVwZGF0ZS50eXBlKCkgPT0gIFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlVHlwZTo6RW5kKQorICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpJbmFj
dGl2ZTsKKyAgICB9OwogfQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnJlc2V0KCkKK1NwZWVj
aFJlY29nbml6ZXI6On5TcGVlY2hSZWNvZ25pemVyKCkKIHsKLSAgICBpZiAoIW1fY2xpZW50SWRl
bnRpZmllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RvcENhcHR1cmUoKTsKLSAgICByZXNl
dFJlY29nbml0aW9uKCk7Ci0gICAgbV9jbGllbnRJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0Owor
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBYm9ydGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpT
dG9wcGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpSdW5uaW5nKQorICAgICAgICBtX2RlbGVnYXRl
Q2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVudGlmaWVy
KCksIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CiB9CiAKLXZvaWQgU3BlZWNo
UmVjb2duaXplcjo6YWJvcnQoKQordm9pZCBTcGVlY2hSZWNvZ25pemVyOjphYm9ydChPcHRpb25h
bDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiBlcnJvcikKIHsKLSAgICBBU1NFUlQobV9jbGllbnRJ
ZGVudGlmaWVyKTsKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWJvcnRpbmcgfHwgbV9zdGF0
ZSA9PSBTdGF0ZTo6SW5hY3RpdmUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3N0YXRlID0gU3Rh
dGU6OkFib3J0aW5nOworCisgICAgaWYgKGVycm9yKQorICAgICAgICBtX2RlbGVnYXRlQ2FsbGJh
Y2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKGNsaWVudElkZW50aWZpZXIo
KSwgKmVycm9yKSk7CisKICAgICBzdG9wQ2FwdHVyZSgpOwogICAgIGFib3J0UmVjb2duaXRpb24o
KTsKIH0KIAogdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wKCkKIHsKLSAgICBBU1NFUlQobV9j
bGllbnRJZGVudGlmaWVyKTsKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWJvcnRpbmcgfHwg
bV9zdGF0ZSA9PSBTdGF0ZTo6SW5hY3RpdmUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3N0YXRl
ID0gU3RhdGU6OlN0b3BwaW5nOworCiAgICAgc3RvcENhcHR1cmUoKTsKICAgICBzdG9wUmVjb2du
aXRpb24oKTsKIH0KIAorU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciBTcGVlY2hSZWNvZ25pemVyOjpjbGllbnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9yZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCk7Cit9CisKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgUmVmPFJlYWx0aW1l
TWVkaWFTb3VyY2U+JiYgc291cmNlLCBib29sIG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQs
IGNvbnN0IFN0cmluZyYgbG9jYWxlSWRlbnRpZmllciwgYm9vbCBjb250aW51b3VzLCBib29sIGlu
dGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpCit2b2lkIFNwZWVjaFJlY29n
bml6ZXI6OnN0YXJ0KHN0ZDo6dW5pcXVlX3B0cjxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IHJl
cXVlc3QsIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSwgYm9vbCBtb2NrU3BlZWNo
UmVjb2duaXRpb25FbmFibGVkKQogewotICAgIEFTU0VSVCghbV9jbGllbnRJZGVudGlmaWVyKTsK
LSAgICBtX2NsaWVudElkZW50aWZpZXIgPSBjbGllbnRJZGVudGlmaWVyOwotICAgIG1fZGVsZWdh
dGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKCptX2NsaWVudElkZW50
aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3RhcnQpKTsKLQotICAgIGlmICgh
c3RhcnRSZWNvZ25pdGlvbihtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkLCBjbGllbnRJZGVu
dGlmaWVyLCBsb2NhbGVJZGVudGlmaWVyLCBjb250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4
QWx0ZXJuYXRpdmVzKSkgewotICAgICAgICBhdXRvIGVycm9yID0gV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpTZXJ2
aWNlTm90QWxsb3dlZCwgIkZhaWxlZCB0byBzdGFydCByZWNvZ25pdGlvbiJfcyB9OwotICAgICAg
ICBtX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNy
ZWF0ZUVycm9yKGNsaWVudElkZW50aWZpZXIsIFdURk1vdmUoZXJyb3IpKSk7CisgICAgbV9yZXF1
ZXN0ID0gc3RkOjpleGNoYW5nZShyZXF1ZXN0LCBudWxscHRyKTsKKyAgICBpZiAoIXN0YXJ0UmVj
b2duaXRpb24obW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCwgY2xpZW50SWRlbnRpZmllcigp
LCBtX3JlcXVlc3QtPmxhbmcoKSwgbV9yZXF1ZXN0LT5jb250aW51b3VzKCksIG1fcmVxdWVzdC0+
aW50ZXJpbVJlc3VsdHMoKSwgbV9yZXF1ZXN0LT5tYXhBbHRlcm5hdGl2ZXMoKSkpIHsKKyAgICAg
ICAgYXV0byBlcnJvciA9IFNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBTcGVlY2hSZWNvZ25pdGlv
bkVycm9yVHlwZTo6U2VydmljZU5vdEFsbG93ZWQsICJGYWlsZWQgdG8gc3RhcnQgcmVjb2duaXRp
b24iX3MgfTsKKyAgICAgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlOjpjcmVhdGVFcnJvcihjbGllbnRJZGVudGlmaWVyKCksIFdURk1vdmUoZXJyb3IpKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBtX3N0YXRlID0gU3RhdGU6OlJ1bm5pbmc7Cisg
ICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoY2xp
ZW50SWRlbnRpZmllcigpLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlN0YXJ0KSk7CiAg
ICAgc3RhcnRDYXB0dXJlKFdURk1vdmUoc291cmNlKSk7CiB9CiAKQEAgLTg4LDE1ICsxMDYsMTEg
QEAgdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydENhcHR1cmUoUmVmPFJlYWx0aW1lTWVkaWFT
b3VyY2U+JiYgc291cmNlKQogICAgICAgICAgICAgd2Vha1RoaXMtPmRhdGFDYXB0dXJlZCh0aW1l
LCBkYXRhLCBkZXNjcmlwdGlvbiwgc2FtcGxlQ291bnQpOwogICAgIH07CiAKLSAgICBhdXRvIHN0
YXRlVXBkYXRlQ2FsbGJhY2sgPSBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0o
Y29uc3QgYXV0byYgdXBkYXRlKSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgQVNTRVJUKG1fY2xpZW50SWRlbnRpZmllciAmJiBtX2NsaWVu
dElkZW50aWZpZXIudmFsdWUoKSA9PSB1cGRhdGUuY2xpZW50SWRlbnRpZmllcigpKTsKLSAgICAg
ICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7CisgICAgYXV0byBzdGF0ZVVwZGF0ZUNhbGxi
YWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IGF1dG8mIHVwZGF0ZSkg
eworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9kZWxlZ2F0
ZUNhbGxiYWNrKHVwZGF0ZSk7CiAgICAgfTsKLQotICAgIG1fc291cmNlID0gbWFrZVVuaXF1ZTxT
cGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2U+KCptX2NsaWVudElkZW50aWZpZXIsIFdURk1v
dmUoZGF0YUNhbGxiYWNrKSwgV1RGTW92ZShzdGF0ZVVwZGF0ZUNhbGxiYWNrKSwgV1RGTW92ZShz
b3VyY2UpKTsKKyAgICBtX3NvdXJjZSA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25DYXB0
dXJlU291cmNlPihjbGllbnRJZGVudGlmaWVyKCksIFdURk1vdmUoZGF0YUNhbGxiYWNrKSwgV1RG
TW92ZShzdGF0ZVVwZGF0ZUNhbGxiYWNrKSwgV1RGTW92ZShzb3VyY2UpKTsKIH0KIAogI2VuZGlm
CkBAIC0xMDcsNyArMTIxLDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wQ2FwdHVyZSgp
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc291cmNlID0gbnVsbHB0cjsKLSAgICBtX2RlbGVn
YXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVu
dGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkF1ZGlvRW5kKSk7CisgICAgbV9k
ZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoY2xpZW50SWRl
bnRpZmllcigpLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkF1ZGlvRW5kKSk7CiB9CiAK
ICNpZiAhSEFWRShTUEVFQ0hSRUNPR05JWkVSKQpAQCAtMTE4LDI3ICsxMzIsMTcgQEAgdm9pZCBT
cGVlY2hSZWNvZ25pemVyOjpkYXRhQ2FwdHVyZWQoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxh
dGZvcm1BdWRpb0RhdGEmLAogCiBib29sIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0UmVjb2duaXRp
b24oYm9vbCwgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiwgYm9vbCwgYm9vbCwgdWludDY0X3QpCiB7Ci0gICAgbV9pc1JlY29nbml6aW5n
ID0gdHJ1ZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBTcGVlY2hSZWNvZ25pemVyOjph
Ym9ydFJlY29nbml0aW9uKCkKIHsKLSAgICBtX2lzUmVjb2duaXppbmcgPSBmYWxzZTsKLSAgICBt
X2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGll
bnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOworICAgIG1f
ZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVudElk
ZW50aWZpZXIoKSwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKIH0KIAogdm9p
ZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wUmVjb2duaXRpb24oKQogewotICAgIG1faXNSZWNvZ25p
emluZyA9IGZhbHNlOwotICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZTo6Y3JlYXRlKCptX2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZTo6RW5kKSk7Ci19Ci0KLXZvaWQgU3BlZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlv
bigpCi17Ci0gICAgaWYgKCFtX2lzUmVjb2duaXppbmcpCi0gICAgICAgIHJldHVybjsKLSAgICBh
Ym9ydFJlY29nbml0aW9uKCk7CisgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlOjpjcmVhdGUoY2xpZW50SWRlbnRpZmllcigpLCBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGU6OkVuZCkpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaAppbmRleCAxNjAyYWY3NjY5ZWM5YmRiOTU0NDFj
NjIzMDIwMjQxZDFjMzQ0MmUyLi44NzQyZTA1ZGJlYzc5YmEwNWI1NzQzNjI5ZTY3OWNiZDdiMTY0
YjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXplci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkNh
cHR1cmVTb3VyY2UuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25FcnJvci5oIgogCiAj
aWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAg
LTM1LDYgKzM2LDcgQEAgT0JKQ19DTEFTUyBXZWJTcGVlY2hSZWNvZ25pemVyVGFzazsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q7CiBjbGFz
cyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXplciA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hSZWNvZ25pemVyPiB7CkBAIC00MiwyMCArNDQsMjQg
QEAgY2xhc3MgU3BlZWNoUmVjb2duaXplciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hS
ZWNvZ25pemVyPiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgRGVsZWdhdGVDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKT47CiAgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgU3BlZWNoUmVjb2duaXplcihEZWxlZ2F0ZUNhbGxiYWNrJiYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIH5TcGVlY2hSZWNvZ25pemVyKCkgPSBkZWZhdWx0OworICAgIFdFQkNP
UkVfRVhQT1JUIH5TcGVlY2hSZWNvZ25pemVyKCk7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYsIGJvb2wgbW9j
a1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVy
LCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVy
bmF0aXZlcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydChzdGQ6OnVuaXF1ZV9wdHI8
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYsIGJv
b2wgbW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCk7CiAjZW5kaWYKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlc2V0KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9ydCgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJvcnQoT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25FcnJv
cj4gPSBXVEY6Om51bGxvcHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcCgpOwogCi0g
ICAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcj4g
Y3VycmVudENsaWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudElkZW50aWZp
ZXI7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIoKSBjb25zdDsKICAgICBTcGVlY2hSZWNvZ25p
dGlvbkNhcHR1cmVTb3VyY2UqIHNvdXJjZSgpIHsgcmV0dXJuIG1fc291cmNlLmdldCgpOyB9CiAK
IHByaXZhdGU6Ci0gICAgdm9pZCBzdG9wSW50ZXJuYWwoKTsKKyAgICBlbnVtIGNsYXNzIFN0YXRl
IHsKKyAgICAgICAgSW5hY3RpdmUsCisgICAgICAgIFJ1bm5pbmcsCisgICAgICAgIFN0b3BwaW5n
LAorICAgICAgICBBYm9ydGluZworICAgIH07CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
ICAgIHZvaWQgc3RhcnRDYXB0dXJlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmKTsKQEAgLTY1
LDE3ICs3MSwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihib29sIG1v
Y2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQsIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9jYWxlSWRlbnRpZmllciwgYm9vbCBjb250
aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBhbHRlcm5hdGl2ZXMpOwogICAg
IHZvaWQgYWJvcnRSZWNvZ25pdGlvbigpOwogICAgIHZvaWQgc3RvcFJlY29nbml0aW9uKCk7Ci0g
ICAgdm9pZCByZXNldFJlY29nbml0aW9uKCk7CiAKLSAgICBPcHRpb25hbDxTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyPiBtX2NsaWVudElkZW50aWZpZXI7CiAgICAg
RGVsZWdhdGVDYWxsYmFjayBtX2RlbGVnYXRlQ2FsbGJhY2s7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gbV9yZXF1ZXN0OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2U+IG1fc291cmNlOworICAgIFN0YXRlIG1f
c3RhdGUgeyBTdGF0ZTo6SW5hY3RpdmUgfTsKIAogI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikK
ICAgICBSZXRhaW5QdHI8V2ViU3BlZWNoUmVjb2duaXplclRhc2s+IG1fdGFzazsKLSNlbHNlCi0g
ICAgLy8gRm9yIHRlc3RpbmcuCi0gICAgYm9vbCBtX2lzUmVjb2duaXppbmcgeyBmYWxzZSB9Owog
I2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9j
b2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0KaW5kZXggYmQyZmZkNGI1Y2YzYTli
MGMwYzZhMTg2YmQ4N2FhZTM1MDFhNjk3Ni4uN2Q1YmM4ZmJhZDk2OWNjY2Q1MzFkMGQ5OWZhNzIw
NTgxNWJjODQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29j
b2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQpAQCAtNDUsMTEgKzQ1LDkgQEAg
dm9pZCBTcGVlY2hSZWNvZ25pemVyOjpkYXRhQ2FwdHVyZWQoY29uc3QgTWVkaWFUaW1lJiB0aW1l
LCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGEKIGJvb2wgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNv
Z25pdGlvbihib29sIG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQsIFNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBs
b2NhbGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVp
bnQ2NF90IGFsdGVybmF0aXZlcykKIHsKICAgICBhdXRvIHRhc2tDbGFzcyA9IG1vY2tTcGVlY2hS
ZWNvZ25pdGlvbkVuYWJsZWQgPyBbV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrIGNsYXNzXSA6
IFtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBjbGFzc107Ci0gICAgbV90YXNrID0gYWRvcHROUyhb
W3Rhc2tDbGFzcyBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOmlkZW50aWZpZXIgbG9jYWxlOmxv
Y2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczpjb250aW51b3VzIHJlcG9ydElu
dGVyaW1SZXN1bHRzOmludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczphbHRlcm5hdGl2ZXMg
ZGVsZWdhdGVDYWxsYmFjazpbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oY29u
c3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmIHVwZGF0ZSkgewotICAgICAgICBp
ZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fZGVsZWdhdGVD
YWxsYmFjayh1cGRhdGUpOworICAgIG1fdGFzayA9IGFkb3B0TlMoW1t0YXNrQ2xhc3MgYWxsb2Nd
IGluaXRXaXRoSWRlbnRpZmllcjppZGVudGlmaWVyIGxvY2FsZTpsb2NhbGVJZGVudGlmaWVyIGRv
TXVsdGlwbGVSZWNvZ25pdGlvbnM6Y29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czppbnRl
cmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6YWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlJiB1cGRhdGUpIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAg
ICAgd2Vha1RoaXMtPm1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOwogICAgIH1dKTsKIAogICAg
IHJldHVybiAhIW1fdGFzazsKQEAgLTY3LDE1ICs2NSw2IEBAIHZvaWQgU3BlZWNoUmVjb2duaXpl
cjo6YWJvcnRSZWNvZ25pdGlvbigpCiAgICAgW21fdGFzayBhYm9ydF07CiB9CiAKLXZvaWQgU3Bl
ZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlvbigpCi17Ci0gICAgaWYgKCFtX3Rhc2spCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gdGFzayA9IHN0ZDo6ZXhjaGFuZ2UobV90YXNrLCBu
dWxscHRyKTsKLSAgICBbdGFzayBhYm9ydF07Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4MGU1OTFkODdjMzljMTYy
N2MwNWVlZmRjMGQ3MTE0NWMxZTg2YTI2Li41MWYwMGNlZGE3NjMyOGYxOGU4Zjc5N2JkOGYyZDli
ZTc0MjY4YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yNzgxLDYgKzI3ODEsNyBAQAogCQk5MzUwMEYzMjEzRkRFM0JFMDA5
OUVDMjQgLyogTlNTY3JvbGxlckltcERldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNTAwRjMxMTNGREUzQkUwMDk5RUMyNCAvKiBOU1Njcm9s
bGVySW1wRGV0YWlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTkzNTIwN0JFMDlCRDQxMEEwMEYyMDM4RCAvKiBMb2NhbGl6ZWRTdHJpbmdzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzUyMDdCRDA5
QkQ0MTBBMDBGMjAzOEQgLyogTG9jYWxpemVkU3RyaW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNTVFRjUxMjUzQTQyNzkwMDZGRjRBNCAv
KiBKU0Fic3RyYWN0UmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzNTVFRjRGMjUzQTQyNzgwMDZGRjRBNCAvKiBKU0Fic3RyYWN0UmFuZ2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5MzVCREIx
OTI1QzhEQjY3MDA4RkFFMjkgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdElk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzNUJEQjE4MjVDOEQ3QjIwMDhGQUUyOSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzNUM0NzYzMDlBQzRDRTYwMEE2QUFCNCAvKiBNb3VzZUV2ZW50V2l0aEhp
dFRlc3RSZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzVDNDc2MjA5QUM0Q0U2MDBBNkFBQjQgLyogTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cy5oICovOyB9OwogCQk5MzVDNDc2ODA5QUM0RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1LZXli
b2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzVDNDc2NjA5QUM0RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1LZXlib2FyZEV2ZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM1QzQ3Njkw
OUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1QzQ3NjcwOUFDNEQ0MzAwQTZBQUI0IC8q
IFBsYXRmb3JtTW91c2VFdmVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xMTQ5Miw2ICsxMTQ5Myw3IEBACiAJCTkzNTVFRjRGMjUzQTQyNzgw
MDZGRjRBNCAvKiBKU0Fic3RyYWN0UmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNBYnN0cmFjdFJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
NTVFRjUwMjUzQTQyNzkwMDZGRjRBNCAvKiBKU0Fic3RyYWN0UmFuZ2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBYnN0cmFjdFJhbmdlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1NUVGNTMyNTNBNEQ1QTAwNkZGNEE0IC8qIEpTQWJzdHJh
Y3RSYW5nZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Fic3RyYWN0UmFuZ2VDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzVCREIxODI1QzhEN0IyMDA4
RkFFMjkgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdElkZW50aWZp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1QzQ3NjIwOUFDNENFNjAwQTZB
QUI0IC8qIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5MzVDNDc2NjA5QUM0RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1L
ZXlib2FyZEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzVDNDc2NzA5
QUM0RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1Nb3VzZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtTW91c2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjU4MDIsNiArMjU4MDQsNyBAQAogCQkJCTkzNDk1MEMwMjUzOTQzNTAwMDk5
RjE3MSAvKiBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50LmNwcCAqLywKIAkJCQk5MzQ5NTBDOTI1Mzk0
MzU1MDA5OUYxNzEgLyogU3BlZWNoUmVjb2duaXRpb25FdmVudC5oICovLAogCQkJCTkzNDk1MEI0
MjUzOTQzNDkwMDk5RjE3MSAvKiBTcGVlY2hSZWNvZ25pdGlvbkV2ZW50LmlkbCAqLywKKwkJCQk5
MzVCREIxODI1QzhEN0IyMDA4RkFFMjkgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdElkZW50aWZpZXIuaCAqLywKIAkJCQk5M0EwNDgyMjI1NDk1NEU4MDAwQUM0NjIgLyogU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0LmNwcCAqLywKIAkJCQk5M0EwNDgxRjI1NDk1NEU2MDAwQUM0
NjIgLyogU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmggKi8sCiAJCQkJOTNENkI3NkYyNTRCOTAy
RDAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaCAqLywKQEAgLTMxNTc2
LDcgKzMxNTc5LDYgQEAKIAkJCQk3N0Q1MTAxNzFFRDYwMjIyMDBEQTRDODcgLyogQ3JlZGVudGlh
bHNDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQTA1MjMzMTA1ODc3NEYwMENDOUU5
NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0ODFGMDIxNDZC
NUM1NTAwQUE3ODM0IC8qIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVycyAqLywK
LQkJCQlGNDhCN0Q1MzI1QzM0MUU2MDA5RTc1REQgLyogSW1hZ2VFeHRyYWN0aW9uUmVzdWx0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMUM0MTYxMjBGNjU2MkZEMDA5MkQyRkIgLyogQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUFCRTY3QjFEMDU4MERCMDA2
RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMUM0MTVEQTBGNjU1RDZGMDA5MkQyRkIgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjUyNyw2ICszMjUyOSw3IEBACiAJCQkJQ0QxOUZF
QUUxRjU3NEI2RDAwMEM0MkZCIC8qIEltYWdlRGVjb2RlckFWRk9iakMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTcyMDVBQjYxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUY0OEI3RDUzMjVDMzQxRTYwMDlFNzVERCAvKiBJbWFnZUV4
dHJhY3Rpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1NzZBNTY1MUQ4OEE3MDgwMEND
QzA0QyAvKiBJbWFnZUZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RDMjEyNTFGMTJE
MDAzRUYyNjkgLyogSW1hZ2VJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OTU4MjU2
MEU4NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDY3
Myw2ICszNDY3Niw3IEBACiAJCQkJOTM0OTUwRDAyNTM5NDM2QzAwOTlGMTcxIC8qIFNwZWVjaFJl
Y29nbml0aW9uRXJyb3JDb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzQ5NTBEMTI1Mzk0Mzcw
MDA5OUYxNzEgLyogU3BlZWNoUmVjb2duaXRpb25FcnJvckV2ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk5MzQ5NTBEMjI1Mzk0MzczMDA5OUYxNzEgLyogU3BlZWNoUmVjb2duaXRpb25FdmVudC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJOTM1QkRCMTkyNUM4REI2NzAwOEZBRTI5IC8qIFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5M0EwNDgyODI1NDk1NTA2MDAwQUM0NjIgLyogU3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTNBMDQ4MkEyNTQ5NTUxNDAwMEFDNDYyIC8qIFNwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3NzAyNTRCOThBMDAw
NThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAppbmRleCBmZTZmNWU4ZmQ5NTFhNWQxMDA4YmRkNmIx
M2M2MGU3ZjJjMGQ0YzUzLi5lMTVkM2I1MDZhN2U3ZGRlZGQzZjQ4M2M3MTYwNDg3MjQzMjg1MGJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcApAQCAtNzUsMTEgKzc1LDI2IEBAIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6On5TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyKCkKICAgICAgICAgcmVxdWVzdC0+Y29tcGxldGUoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpOb3RB
bGxvd2VkLCAiUGVybWlzc2lvbiBtYW5hZ2VyIGhhcyBleGl0ZWQiX3MgfSk7CiB9CiAgICAgCi12
b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QoY29uc3QgU3Ry
aW5nJiBsYW5nLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdENhbGxiYWNrJiYgY29tcGxldGlvbnRIYW5kbGVyKQorT3B0aW9uYWw8V2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXI+IFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QoY29uc3QgU3RyaW5nJiBsYW5nLCBj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdENh
bGxiYWNrJiYgY29tcGxldGlvbnRIYW5kbGVyKQogewogICAgIG1fcmVxdWVzdHMuYXBwZW5kKFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShsYW5nLCBvcmlnaW4sIGZy
YW1lSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9udEhhbmRsZXIpKSk7CiAgICAgaWYgKG1f
cmVxdWVzdHMuc2l6ZSgpID09IDEpCiAgICAgICAgIHN0YXJ0TmV4dFJlcXVlc3QoKTsKKyAgICBy
ZXR1cm4gbV9yZXF1ZXN0cy5pc0VtcHR5KCkgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllcj4geyBtX3Jl
cXVlc3RzLmxhc3QoKS0+aWRlbnRpZmllcigpIH07Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcjo6Y2FuY2VsUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllciBwZXJtaXNzaW9uUmVxdWVzdElkZW50aWZp
ZXIpCit7CisgICAgaWYgKG1fcmVxdWVzdHMuZmlyc3QoKS0+aWRlbnRpZmllcigpID09IHBlcm1p
c3Npb25SZXF1ZXN0SWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byByZXF1
ZXN0cyA9IHN0ZDo6ZXhjaGFuZ2UobV9yZXF1ZXN0cywgeyB9KTsKKyAgICB3aGlsZSAoIXJlcXVl
c3RzLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIHJlcXVlc3QgPSByZXF1ZXN0cy50YWtlRmly
c3QoKTsKKyAgICAgICAgaWYgKHJlcXVlc3QtPmlkZW50aWZpZXIoKSA9PSBwZXJtaXNzaW9uUmVx
dWVzdElkZW50aWZpZXIpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbV9yZXF1ZXN0
cy5hcHBlbmQoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgfQogfQogCiB2b2lkIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0TmV4dFJlcXVlc3QoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlci5oCmluZGV4IDBkZTVmOTQ3YjQ2MzI4MGY0ZTRmMzUxZDhjZTdlNmE5OTJiYzk0MTUu
LjAyNmIwMzVhMGMwZjdiNTRkNDBmMTNjOWRlZDRhZDc1MmNkNTMxMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC0zOSw3ICs0MCw4
IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIENoZWNrUmVzdWx0IHsgRGVuaWVkLCBHcmFudGVk
LCBVbmtub3duIH07CiAgICAgZXhwbGljaXQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcihXZWJQYWdlUHJveHkmKTsKICAgICB+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcigpOwotICAgIHZvaWQgcmVxdWVzdChjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrJiYpOworICAgIE9wdGlvbmFsPFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyPiByZXF1ZXN0KGNv
bnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJh
Y2smJik7CisgICAgdm9pZCBjYW5jZWxSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgZGVjaWRlQnlEZWZhdWx0
QWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAgICAgV2ViUGFnZVByb3h5JiBwYWdlKCkgeyByZXR1cm4gbV9wYWdl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKaW5kZXggYTZjNGRjZTk5NWU0ODkwYWM3MTFmMGI2
MjAyY2YxNjc1NmRjMzgyZi4uNWJjZWM5N2RhOGVjNjdiM2Q1NzJlZDE1YzE0OTQyODNmYjRiOGYz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NwZWVjaFJlY29nbml0aW9uRXJyb3IuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNDgsMTggKzQ5LDIxIEBAIHB1YmxpYzoKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShlcnJvcikpOwogICAgIH0KIAorICAgIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIoKSB7IHJldHVybiBtX2lk
ZW50aWZpZXI7IH0KICAgICBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9sYW5nOyB9CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJZGVudGlmaWVyOyB9CiAKIHByaXZhdGU6
CiAgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChjb25zdCBTdHJpbmcmIGxh
bmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0Q2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgOiBtX2xhbmcobGFuZykK
KyAgICAgICAgOiBtX2lkZW50aWZpZXIoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgICAgICwgbV9sYW5nKGxhbmcp
CiAgICAgICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAgICAgICAsIG1fZnJhbWVJZGVudGlmaWVy
KGZyYW1lSWRlbnRpZmllcikKICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKQogICAgIHsgfQogCisgICAgV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFN0cmlu
ZyBtX2xhbmc7CiAgICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG1fb3JpZ2luOwogICAgIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBtX2ZyYW1lSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAppbmRleCA5Zjk2NzRh
ZWI1ZWRlZTM4NjM3OTNhNjAyYTZjNmEwZWZlMzk3ZjVjLi5lODk0N2ZiNTNiYzkyNTg0ZjFkNTVi
ODJmY2ZhOTBiN2Q3NjI4OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCIKIAorI2luY2x1
ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJVc2Vy
TWVkaWFQcm9jZXNzTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCkBAIC0zNiwx
NCArMzcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5l
Y3Rpb24sIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYgcGVybWlzc2lvbkNoZWNrZXIsIFNwZWVj
aFJlY29nbml0aW9uQ2hlY2tJZk1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQmJiBjaGVja0lm
RW5hYmxlZAorU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVy
KFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXJHZXR0ZXImJiBwZXJtaXNzaW9uTWFuYWdlckdldHRlciwgU3BlZWNoUmVjb2duaXRpb25DaGVj
a0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCYmIGNoZWNrSWZFbmFibGVkCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKICAgICAsIFJlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlv
biYmIGZ1bmN0aW9uCiAjZW5kaWYKICAgICApCiAgICAgOiBtX2Nvbm5lY3Rpb24oV1RGTW92ZShj
b25uZWN0aW9uKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgICwgbV9wZXJt
aXNzaW9uQ2hlY2tlcihXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2VyKSkKKyAgICAsIG1fcGVybWlz
c2lvbk1hbmFnZXJHZXR0ZXIoV1RGTW92ZShwZXJtaXNzaW9uTWFuYWdlckdldHRlcikpCiAgICAg
LCBtX2NoZWNrSWZNb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkKFdURk1vdmUoY2hlY2tJZkVu
YWJsZWQpKQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgLCBtX3JlYWx0aW1lTWVkaWFT
b3VyY2VDcmVhdGVGdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKQEAgLTYzLDYyICs2NCw1MCBA
QCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZAogCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
OjpyZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIG1fcGVybWlzc2lvbkNoZWNrZXIocmVxdWVzdC5sYW5n
KCksIHJlcXVlc3QuY2xpZW50T3JpZ2luKCksIHJlcXVlc3QuZnJhbWVJZGVudGlmaWVyKCksIFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWFrUmVxdWVzdCA9IG1ha2VXZWFr
UHRyKHJlcXVlc3QpXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhp
cykKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBhdXRvKiBwZXJtaXNzaW9uTWFuYWdlciA9IG1f
cGVybWlzc2lvbk1hbmFnZXJHZXR0ZXIoKTsKKyAgICBpZiAoIXBlcm1pc3Npb25NYW5hZ2VyKSB7
CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IHJlcXVlc3QuY2xpZW50SWRlbnRpZmllcigpOwor
ICAgICAgICBtX3JlcXVlc3RzLnJlbW92ZShpZGVudGlmaWVyKTsKKyAgICAgICAgc2VuZFVwZGF0
ZShpZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9y
LCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25FcnJvclR5cGU6Ok5vdEFsbG93ZWQsICJQYWdlIG5vIGxvbmdlciBleGlzdHMiX3MgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICAgICAgaWYgKCF3ZWFrUmVxdWVzdCkKKyAg
ICBhdXRvIHBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllciA9IHBlcm1pc3Npb25NYW5hZ2VyLT5y
ZXF1ZXN0KHJlcXVlc3QubGFuZygpLCByZXF1ZXN0LmNsaWVudE9yaWdpbigpLCByZXF1ZXN0LmZy
YW1lSWRlbnRpZmllcigpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgd2Vh
a1JlcXVlc3QgPSBtYWtlV2Vha1B0cihyZXF1ZXN0KV0oYXV0byBlcnJvcikgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtSZXF1ZXN0KQogICAgICAgICAgICAgcmV0dXJu
OwogCisgICAgICAgIHdlYWtSZXF1ZXN0LT5zZXRQZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIo
V1RGOjpudWxsb3B0KTsKKwogICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSB3ZWFrUmVxdWVzdC0+
Y2xpZW50SWRlbnRpZmllcigpOworICAgICAgICBhdXRvIHJlcXVlc3QgPSBtX3JlcXVlc3RzLnRh
a2UoaWRlbnRpZmllcik7CiAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgbV9yZXF1
ZXN0cy5yZW1vdmUoaWRlbnRpZmllcik7CiAgICAgICAgICAgICBzZW5kVXBkYXRlKGlkZW50aWZp
ZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IsIFdURk1vdmUo
ZXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGhhbmRs
ZVJlcXVlc3QoKndlYWtSZXF1ZXN0KTsKKyAgICAgICAgaGFuZGxlUmVxdWVzdChXVEZNb3ZlKHJl
cXVlc3QpKTsKICAgICB9KTsKKworICAgIGlmIChwZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIp
CisgICAgICAgIHJlcXVlc3Quc2V0UGVybWlzc2lvblJlcXVlc3RJZGVudGlmaWVyKHBlcm1pc3Np
b25SZXF1ZXN0SWRlbnRpZmllcik7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6
OmhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JiByZXF1ZXN0
KQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVzdChzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiByZXF1ZXN0KQogewotICAg
IGlmICghbV9yZWNvZ25pemVyKSB7Ci0gICAgICAgIG1fcmVjb2duaXplciA9IG1ha2VVbmlxdWU8
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcj4oW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyldKGF1dG8mIHVwZGF0ZSkgewotICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGF1dG8gY2xpZW50SWRlbnRpZmllciA9
IHVwZGF0ZS5jbGllbnRJZGVudGlmaWVyKCk7Ci0gICAgICAgICAgICBpZiAoIW1fcmVxdWVzdHMu
Y29udGFpbnMoY2xpZW50SWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgICAgICBzZW5kVXBkYXRlKHVwZGF0ZSk7Ci0KLSAgICAgICAgICAgIGF1dG8gdHlwZSA9
IHVwZGF0ZS50eXBlKCk7Ci0gICAgICAgICAgICBpZiAodHlwZSAhPSBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yICYmIHR5cGUgIT0gV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25VcGRhdGVUeXBlOjpFbmQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgICAgICBpZiAobV9pc1Jlc2V0dGluZykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBtX2lzUmVzZXR0aW5nID0gdHJ1ZTsKLQotICAgICAgICAgICAgbV9yZWNvZ25pemVy
LT5yZXNldCgpOwotICAgICAgICAgICAgbV9yZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRlbnRpZmll
cik7Ci0gICAgICAgICAgICBtX2lzUmVzZXR0aW5nID0gZmFsc2U7Ci0gICAgICAgIH0pOwotICAg
IH0KLQotICAgIGlmIChhdXRvIGN1cnJlbnRDbGllbnRJZGVudGlmaWVyID0gbV9yZWNvZ25pemVy
LT5jdXJyZW50Q2xpZW50SWRlbnRpZmllcigpKSB7CisgICAgaWYgKG1fcmVjb2duaXplcikgewog
ICAgICAgICBhdXRvIGVycm9yID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBYm9ydGVkLCAiQW5vdGhlciByZXF1
ZXN0IGlzIHN0YXJ0ZWQiX3MgfTsKLSAgICAgICAgc2VuZFVwZGF0ZSgqY3VycmVudENsaWVudElk
ZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IsIGVy
cm9yKTsKLSAgICAgICAgbV9yZWNvZ25pemVyLT5yZXNldCgpOworICAgICAgICBtX3JlY29nbml6
ZXItPmFib3J0KGVycm9yKTsKICAgICB9CiAKLSAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSBy
ZXF1ZXN0LmNsaWVudElkZW50aWZpZXIoKTsKKyAgICBtX3JlY29nbml6ZXIgPSBtYWtlVW5pcXVl
PFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI+KFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
XShhdXRvJiB1cGRhdGUpIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgd2Vh
a1RoaXMtPnNlbmRVcGRhdGUodXBkYXRlKTsKKyAgICB9KTsKKworICAgIGF1dG8gY2xpZW50SWRl
bnRpZmllciA9IHJlcXVlc3QtPmNsaWVudElkZW50aWZpZXIoKTsKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogICAgIGF1dG8gc291cmNlT3JFcnJvciA9IG1fcmVhbHRpbWVNZWRpYVNvdXJjZUNy
ZWF0ZUZ1bmN0aW9uKCk7CiAgICAgaWYgKCFzb3VyY2VPckVycm9yKSB7Ci0gICAgICAgIG1fcmVx
dWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOwogICAgICAgICBzZW5kVXBkYXRlKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihjbGllbnRJZGVudGlmaWVy
LCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25FcnJvclR5cGU6OkF1ZGlvQ2FwdHVyZSwgc291cmNlT3JFcnJvci5lcnJvck1lc3NhZ2Ug
fSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI2LDQ0ICsxMTUsNTQgQEAgdm9pZCBT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3QmIHIKICAgICBXZWJQcm9jZXNzUHJveHk6Om11dGVDYXB0dXJlSW5QYWdl
c0V4Y2VwdChtX2lkZW50aWZpZXIpOwogCiAgICAgYm9vbCBtb2NrRGV2aWNlQ2FwdHVyZXNFbmFi
bGVkID0gbV9jaGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCgpOwotICAgIG1fcmVj
b2duaXplci0+c3RhcnQoY2xpZW50SWRlbnRpZmllciwgc291cmNlT3JFcnJvci5zb3VyY2UoKSwg
bW9ja0RldmljZUNhcHR1cmVzRW5hYmxlZCwgcmVxdWVzdC5sYW5nKCksIHJlcXVlc3QuY29udGlu
dW91cygpLCByZXF1ZXN0LmludGVyaW1SZXN1bHRzKCksIHJlcXVlc3QubWF4QWx0ZXJuYXRpdmVz
KCkpOworICAgIG1fcmVjb2duaXplci0+c3RhcnQoV1RGTW92ZShyZXF1ZXN0KSwgc291cmNlT3JF
cnJvci5zb3VyY2UoKSwgbW9ja0RldmljZUNhcHR1cmVzRW5hYmxlZCk7CiAjZWxzZQotICAgIG1f
cmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOwogICAgIHNlbmRVcGRhdGUoY2xpZW50
SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvciwg
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uRXJyb3JUeXBlOjpBdWRpb0NhcHR1cmUsICJBdWRpbyBjYXB0dXJlIGlzIG5vdCBpbXBsZW1l
bnRlZCJfcyB9KTsKICNlbmRpZgogfQogCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpj
YW5jZWwoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciBjbGllbnRJZGVudGlmaWVyKQoreworICAgIGF1dG8gcmVxdWVzdCA9IG1fcmVxdWVzdHMudGFr
ZShjbGllbnRJZGVudGlmaWVyKTsKKyAgICBpZiAoIXJlcXVlc3QpCisgICAgICAgIHJldHVybjsK
KworICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25VcGRhdGVUeXBlOjpDYW5jZWwpOworCisgICAgYXV0byBwZXJtaXNzaW9uUmVxdWVzdElk
ZW50aWZpZXIgPSByZXF1ZXN0LT5wZXJtaXNzaW9uUmVxdWVzdElkZW50aWZpZXIoKTsKKyAgICBp
ZiAoIXBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byogcGVybWlzc2lvbk1hbmFnZXIgPSBtX3Blcm1pc3Npb25NYW5hZ2VyR2V0dGVyKCk7Cisg
ICAgaWYgKCFwZXJtaXNzaW9uTWFuYWdlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgcGVybWlz
c2lvbk1hbmFnZXItPmNhbmNlbFJlcXVlc3QoKnBlcm1pc3Npb25SZXF1ZXN0SWRlbnRpZmllcik7
Cit9CisKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0b3AoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQog
ewogICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50SWRlbnRpZmllcik7Ci0gICAgaWYgKG1fcmVjb2du
aXplciAmJiBtX3JlY29nbml6ZXItPmN1cnJlbnRDbGllbnRJZGVudGlmaWVyKCkgPT0gY2xpZW50
SWRlbnRpZmllcikgewotICAgICAgICBtX3JlY29nbml6ZXItPnN0b3AoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KIAotICAgIGlmIChtX3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVy
KSkKLSAgICAgICAgc2VuZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7CisgICAgY2FuY2VsKGNsaWVudElkZW50aWZpZXIp
OworICAgIGlmIChtX3JlY29nbml6ZXIgJiYgbV9yZWNvZ25pemVyLT5jbGllbnRJZGVudGlmaWVy
KCkgPT0gY2xpZW50SWRlbnRpZmllcikKKyAgICAgICAgbV9yZWNvZ25pemVyLT5zdG9wKCk7CiB9
CiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmFib3J0KFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKIHsK
ICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElkZW50aWZpZXIpOwotICAgIGlmIChtX3JlY29nbml6
ZXIgJiYgbV9yZWNvZ25pemVyLT5jdXJyZW50Q2xpZW50SWRlbnRpZmllcigpID09IGNsaWVudElk
ZW50aWZpZXIpIHsKLSAgICAgICAgbV9yZWNvZ25pemVyLT5hYm9ydCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQogCi0gICAgaWYgKG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIp
KQotICAgICAgICBzZW5kVXBkYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKTsKKyAgICBjYW5jZWwoY2xpZW50SWRlbnRpZmllcik7
CisgICAgaWYgKG1fcmVjb2duaXplciAmJiBtX3JlY29nbml6ZXItPmNsaWVudElkZW50aWZpZXIo
KSA9PSBjbGllbnRJZGVudGlmaWVyKQorICAgICAgICBtX3JlY29nbml6ZXItPmFib3J0KCk7CiB9
CiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmludmFsaWRhdGUoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVy
KQogewogICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50SWRlbnRpZmllcik7Ci0gICAgaWYgKG1fcmVx
dWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpKSB7Ci0gICAgICAgIGlmIChtX3JlY29nbml6
ZXIgJiYgbV9yZWNvZ25pemVyLT5jdXJyZW50Q2xpZW50SWRlbnRpZmllcigpID09IGNsaWVudElk
ZW50aWZpZXIpCi0gICAgICAgICAgICBtX3JlY29nbml6ZXItPmFib3J0KCk7Ci0gICAgfQorICAg
IGlmIChtX3JlY29nbml6ZXIgJiYgbV9yZWNvZ25pemVyLT5jbGllbnRJZGVudGlmaWVyKCkgPT0g
Y2xpZW50SWRlbnRpZmllcikKKyAgICAgICAgbV9yZWNvZ25pemVyLT5hYm9ydCgpOwogfQogCiB2
b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzZW5kVXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlIHR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+IGVycm9yLCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5kZXggMmZjMjQ4YThlMTNi
Yzc2NjU1NDE2MDE3NDg1ZTk0MWRiZWRjZWExNy4uYjNmM2VlYmVhZjg1Nzg0MDA1ZjkyODYyOTdi
M2RhMzE2ZDdhYmU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5oCkBAIC00MywxMCArNDMsMTEgQEAgc3RydWN0IENsaWVudE9yaWdp
bjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIHVzaW5nIFNwZWVjaFJlY29n
bml0aW9uU2VydmVySWRlbnRpZmllciA9IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyOwotdXNpbmcg
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciA9IEZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2smJik+Owor
dXNpbmcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckdldHRlciA9IEZ1bmN0aW9u
PFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIqKCk+OwogdXNpbmcgU3BlZWNoUmVj
b2duaXRpb25DaGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCA9IEZ1bmN0aW9uPGJv
b2woKT47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uU2VydmVyIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2Vp
dmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CkBAIC01NCw5ICs1NSw5IEBAIGNsYXNz
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyPiwKIHB1YmxpYzoKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAg
IHVzaW5nIFJlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbiA9IEZ1bmN0aW9uPFdlYkNv
cmU6OkNhcHR1cmVTb3VyY2VPckVycm9yKCk+OwotICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
KFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmll
ciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmLCBTcGVlY2hSZWNvZ25pdGlv
bkNoZWNrSWZNb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkJiYsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDcmVhdGVGdW5jdGlvbiYmKTsKKyAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBD
OjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIsIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJHZXR0ZXImJiwgU3BlZWNoUmVjb2duaXRpb25D
aGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCYmLCBSZWFsdGltZU1lZGlhU291cmNl
Q3JlYXRlRnVuY3Rpb24mJik7CiAjZWxzZQotICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciwg
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmLCBTcGVlY2hSZWNvZ25pdGlvbkNo
ZWNrSWZNb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkJiYpOworICAgIFNwZWVjaFJlY29nbml0
aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckdldHRlciYmLCBT
cGVlY2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkJiYpOwog
I2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9v
bCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKQEAgLTY3LDkgKzY4LDEwIEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVz
dChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKLSAgICB2b2lkIGhhbmRsZVJl
cXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7CisgICAgdm9pZCBoYW5k
bGVSZXF1ZXN0KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3Q+KTsKICAgICB2b2lkIHNlbmRVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVU
eXBlLCBPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiA9IFdURjo6bnVs
bG9wdCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0
YT4+ID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lkIHNlbmRVcGRhdGUoY29uc3QgV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKTsKKyAgICB2b2lkIGNhbmNlbChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKIAogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CkBAIC04MSw3ICs4Myw3IEBAIHByaXZhdGU6
CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFNwZWVjaFJlY29n
bml0aW9uU2VydmVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgSGFzaE1hcDxXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Pj4gbV9yZXF1ZXN0czsKLSAg
ICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyIG1fcGVybWlzc2lvbkNoZWNrZXI7
CisgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckdldHRlciBtX3Blcm1pc3Np
b25NYW5hZ2VyR2V0dGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pemVyPiBtX3JlY29nbml6ZXI7CiAgICAgU3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9ja1Nw
ZWVjaFJlY29nbml0aW9uRW5hYmxlZCBtX2NoZWNrSWZNb2NrU3BlZWNoUmVjb2duaXRpb25FbmFi
bGVkOwogICAgIGJvb2wgbV9pc1Jlc2V0dGluZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3ZDMxY2FhODk2MDExYmU3N2IyYzE0Y2RjMTE3
ZjY0NmNkM2E3NGY0Li4wYzRhOWZhNGE1ODM2ZmJkYjU2NDdlNzA0ZDIwY2U5ODFkOThmZmFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwNDI4LDYgKzEw
NDI4LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZv
clNwZWVjaFJlY29nbml0aW9uKEZyYW1lSWRlbnRpZmllCiAjZW5kaWYKIH0KIAorU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciogV2ViUGFnZVByb3h5OjpzcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyKCkKK3sKKyAgICBpZiAoIW1fc3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcikKKyAgICAgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyPigqdGhp
cyk7CisKKyAgICByZXR1cm4gbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmdl
dCgpOworfQorCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogV2ViQ29yZTo6Q2FwdHVyZVNv
dXJjZU9yRXJyb3IgV2ViUGFnZVByb3h5OjpjcmVhdGVSZWFsdGltZU1lZGlhU291cmNlRm9yU3Bl
ZWNoUmVjb2duaXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCBkMGVlNjc4MmNkZDhjNzA5Mjc0MTJjNDkyMjI3MGZiYjNmZWY1NjExLi5hZWJjMDc3NjdkMzBi
MmMwOGVhMTI0NzZmZmY5YzBiNjk3ZjM4ZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMTgzMiw2ICsxODMyLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAgICAgV2ViQ29yZTo6Q2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlUmVhbHRp
bWVNZWRpYVNvdXJjZUZvclNwZWVjaFJlY29nbml0aW9uKCk7CiAjZW5kaWYKKyAgICBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKiBzcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyKCk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBjaGFuZ2VVbml2ZXJzYWxB
Y2Nlc3Nab29tRm9jdXMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IGViY2EwM2QzMTk0N2U4YzVlNGQyNTNkZWZiNmQ0MTU0ZGM2NzdlMjYuLjU3YjUwZWZlNzhk
N2VjYzE3OGQ5Y2Y0ZTVhMmE2YTdkOWM0Njc3NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTcyMiwxMyArMTcyMiw4IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcklkZW50CiAKICAgICBBU1NFUlQoIW1fc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNYXAu
Y29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIGF1dG8mIHNwZWVjaFJlY29nbml0aW9uU2VydmVy
ID0gbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZlck1hcC5hZGQoaWRlbnRpZmllciwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOwotICAgIGF1dG8gcGVybWlzc2lvbkNoZWNrZXIgPSBbd2Vha1BhZ2Ug
PSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oYXV0byYgbGFuZywgYXV0byYgb3JpZ2luLCBhdXRv
IGZyYW1lSWRlbnRpZmllciwgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKLSAg
ICAgICAgaWYgKCF3ZWFrUGFnZSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBl
OjpOb3RBbGxvd2VkLCAiUGFnZSBubyBsb25nZXIgZXhpc3RzIl9zIH0pOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgd2Vha1BhZ2UtPnJlcXVlc3RTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb24obGFuZywgb3JpZ2luLCBmcmFtZUlkZW50aWZpZXIsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIHNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXJHZXR0ZXIgPSBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgcmV0dXJuIHdlYWtQYWdlID8gd2Vha1BhZ2UtPnNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIoKSA6IG51bGxwdHI7CiAgICAgfTsKICAgICBhdXRvIGNo
ZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0gW3dlYWtQYWdlID0gbWFrZVdlYWtQdHIo
dGFyZ2V0UGFnZSldKCkgewogICAgICAgICByZXR1cm4gd2Vha1BhZ2UgJiYgd2Vha1BhZ2UtPnBy
ZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpOwpAQCAtMTczOCw5ICsxNzMz
LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVy
KFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnQKICAgICBhdXRvIGNyZWF0ZVJlYWx0aW1lTWVk
aWFTb3VyY2UgPSBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oKSB7CiAgICAg
ICAgIHJldHVybiB3ZWFrUGFnZSA/IHdlYWtQYWdlLT5jcmVhdGVSZWFsdGltZU1lZGlhU291cmNl
Rm9yU3BlZWNoUmVjb2duaXRpb24oKSA6IENhcHR1cmVTb3VyY2VPckVycm9yIHsgIlBhZ2UgaXMg
aW52YWxpZCIgfTsKICAgICB9OwotICAgIHNwZWVjaFJlY29nbml0aW9uU2VydmVyID0gbWFrZVVu
aXF1ZTxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRl
bnRpZmllciwgV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlciksIFdURk1vdmUoY2hlY2tJZk1vY2tD
YXB0dXJlRGV2aWNlc0VuYWJsZWQpLCBXVEZNb3ZlKGNyZWF0ZVJlYWx0aW1lTWVkaWFTb3VyY2Up
KTsKKyAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24oKSksIGlkZW50aWZpZXIsIFdURk1vdmUo
c3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckdldHRlciksIFdURk1vdmUoY2hlY2tJ
Zk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQpLCBXVEZNb3ZlKGNyZWF0ZVJlYWx0aW1lTWVkaWFT
b3VyY2UpKTsKICNlbHNlCi0gICAgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBtYWtlVW5pcXVl
PFNwZWVjaFJlY29nbml0aW9uU2VydmVyPihtYWtlUmVmKCpjb25uZWN0aW9uKCkpLCBpZGVudGlm
aWVyLCBXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2VyKSwgV1RGTW92ZShjaGVja0lmTW9ja0NhcHR1
cmVEZXZpY2VzRW5hYmxlZCkpOworICAgIHNwZWVjaFJlY29nbml0aW9uU2VydmVyID0gbWFrZVVu
aXF1ZTxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRl
bnRpZmllciwgV1RGTW92ZShzcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyR2V0dGVy
KSwgV1RGTW92ZShjaGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCkpOwogI2VuZGlmCiAK
ICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2VydmVy
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIsICpzcGVlY2hSZWNvZ25pdGlvblNl
cnZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3Bw
CmluZGV4IDRiNzYzYmNkZWU2M2JkZmY0ZmExZjI5ZGU3ODU2NjBkNDhiNGYxZWQuLjFhZDczZDkw
NzJlOGE1MTYyY2ZiZGIwODMyNTdhM2MyMjQ5YzVlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCkBAIC0xMzYsNiArMTM2LDkgQEAgdm9pZCBX
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OmRpZFJlY2VpdmVVcGRhdGUoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb24KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZDoKICAgICAgICAgY2xpZW50LT5kaWRFbmQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZVR5cGU6OkNhbmNlbDoKKyAgICAgICAgY2xpZW50LT5kaWRDYW5jZWwoKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419065</attachid>
            <date>2021-02-02 14:26:29 -0800</date>
            <delta_ts>2021-02-02 14:36:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219699-20210202142628.patch</filename>
            <type>text/plain</type>
            <size>20776</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzcwMDExZTZmMDJjMWI4
NTE3NDZjMjI1NTU3Zjk0ZDJlZmJkOWM5Yi4uYjc3ODRkZjRjZGE3ZGFlNGM3MDVjNTI1NGJmYTE2
MGZlNGEzZGEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTAyLTAyICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGEgU3BlZWNoUmVj
b2duaXplciBmb3IgZWFjaCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY5OQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzIzOTIwOTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTWFrZSBTcGVlY2hSZWNvZ25pemVyIHRha2UgdGhlIG93bmVyd2hpcCBvZiB0
aGUgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0IGl0J3MgYWJvdXQgdG8gaGFuZGxlLCBhbmQgbWFu
YWdlIGl0cyAKKyAgICAgICAgc3RhdGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OlNw
ZWVjaFJlY29nbml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6flNw
ZWVjaFJlY29nbml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6YWJv
cnQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcCk6CisgICAgICAg
IChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpjbGllbnRJZGVudGlmaWVyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0Q2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pemVyOjpzdG9wQ2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml6ZXI6OmFib3J0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXplcjo6c3RvcFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml6ZXI6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6
ZXI6OnJlc2V0UmVjb2duaXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml6ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6
OmN1cnJlbnRDbGllbnRJZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24pOiBEZWxldGVkLgorCiAyMDIx
LTAyLTAyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgU3Vw
cG9ydCBCaWdJbnQ2NEFycmF5L0JpZ1VpbnQ2NEFycmF5IGluIHN0cnVjdHVyZWQtY2xvbmluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA1YzliN2UxODI5YmRhYWI0ODU4OTQyMjdmOWRhYTkzZTNmNzJhNzIyLi4wNjAy
MTVjNjMzMDI1ZjlkZWRlZDdlMGUwYmE1ZjRkOTU4NmQ2NGVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIzIEBACisyMDIxLTAyLTAyICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAg
ICAgICAgQ3JlYXRlIGEgU3BlZWNoUmVjb2duaXplciBmb3IgZWFjaCBTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxOTY5OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzIzOTIwOTc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgdXNlZCB0aGUgc2FtZSBTcGVl
Y2hSZWNvZ25pemVyIGZvciBtdWx0aXBsZSByZXF1ZXN0cywgc28gd2UgaGFkIHRvIHJlc2V0IFNw
ZWVjaFJlY29nbml6ZXIgc3RhdGUgYmV0d2VlbgorICAgICAgICByZXF1ZXN0cywgd2hpY2ggbWFr
ZXMgdGhpbmdzIGNvbXBsaWNhdGVkIGFuZCBoYXJkIHRvIGRlYnVnIChsaWtlIG5lc3RlZCByZXNl
dCBjYWxscykuIE5vdyB3ZSBoYXZlIG9uZSBkZWRpY2F0ZWQKKyAgICAgICAgU3BlZWNoUmVjb2du
aXplciBmb3IgZWFjaCByZXF1ZXN0LgorCisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXI6OnJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVj
aFJlY29nbml0aW9uU2VydmVyOjpoYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcjo6YWJvcnQpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6aW52YWxpZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uU2VydmVyLmg6CisKIDIwMjEtMDItMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlY292ZXIgTWVkaWFTdHJlYW1UcmFjayBhdWRpbyByZW5kZXJpbmcg
ZnJvbSBHUFVQcm9jZXNzIGNyYXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml6ZXIuY3BwCmluZGV4IGNhZDQ4YTk3NDJiYjllMDE0MzRmYmE4NWRk
MGMxMGE5YzAxZmY0ODguLjAxZjIyZDFiYjk4NjE3YjRlODI2OGI0Mzg4ZGM3ZTlmMGY3ODNhYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6
ZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
U3BlZWNoUmVjb2duaXplci5oIgogCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCIKICNpbmNsdWRlIDx3dGYv
TWVkaWFUaW1lLmg+CiAKQEAgLTM1LDQ5ICszNiw2NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVNwZWVjaFJlY29nbml6ZXI6OlNwZWVjaFJlY29nbml6ZXIoRGVsZWdhdGVDYWxsYmFjayYm
IGNhbGxiYWNrKQotICAgIDogbV9kZWxlZ2F0ZUNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQor
U3BlZWNoUmVjb2duaXplcjo6U3BlZWNoUmVjb2duaXplcihEZWxlZ2F0ZUNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFVuaXF1ZVJlZjxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+JiYgcmVxdWVzdCkKKyAg
ICA6IG1fcmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKQogeworICAgIG1fZGVsZWdhdGVDYWxsYmFj
ayA9IFt0aGlzLCBkZWxlZ2F0ZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIHVw
ZGF0ZSkgeworICAgICAgICBBU1NFUlQoY2xpZW50SWRlbnRpZmllcigpID09IHVwZGF0ZS5jbGll
bnRJZGVudGlmaWVyKCkpOworICAgICAgICBkZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7CisKKyAg
ICAgICAgaWYgKHVwZGF0ZS50eXBlKCkgPT0gU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpF
cnJvcikKKyAgICAgICAgICAgIGFib3J0KCk7CisgICAgICAgIGlmICh1cGRhdGUudHlwZSgpID09
ICBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkKKyAgICAgICAgICAgIG1fc3RhdGUg
PSBTdGF0ZTo6SW5hY3RpdmU7CisgICAgfTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpy
ZXNldCgpCitTcGVlY2hSZWNvZ25pemVyOjp+U3BlZWNoUmVjb2duaXplcigpCiB7Ci0gICAgaWYg
KCFtX2NsaWVudElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0b3BDYXB0dXJl
KCk7Ci0gICAgcmVzZXRSZWNvZ25pdGlvbigpOwotICAgIG1fY2xpZW50SWRlbnRpZmllciA9IFdU
Rjo6bnVsbG9wdDsKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWJvcnRpbmcgfHwgbV9zdGF0
ZSA9PSBTdGF0ZTo6U3RvcHBpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmluZykKKyAgICAg
ICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoY2xp
ZW50SWRlbnRpZmllcigpLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOwogfQog
Ci12b2lkIFNwZWVjaFJlY29nbml6ZXI6OmFib3J0KCkKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6
YWJvcnQoT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJiBlcnJvcikKIHsKLSAgICBB
U1NFUlQobV9jbGllbnRJZGVudGlmaWVyKTsKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWJv
cnRpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6SW5hY3RpdmUpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX3N0YXRlID0gU3RhdGU6OkFib3J0aW5nOworCisgICAgaWYgKGVycm9yKQorICAgICAgICBt
X2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKGNs
aWVudElkZW50aWZpZXIoKSwgKmVycm9yKSk7CisKICAgICBzdG9wQ2FwdHVyZSgpOwogICAgIGFi
b3J0UmVjb2duaXRpb24oKTsKIH0KIAogdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wKCkKIHsK
LSAgICBBU1NFUlQobV9jbGllbnRJZGVudGlmaWVyKTsKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0
ZTo6QWJvcnRpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6SW5hY3RpdmUpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX3N0YXRlID0gU3RhdGU6OlN0b3BwaW5nOworCiAgICAgc3RvcENhcHR1cmUoKTsK
ICAgICBzdG9wUmVjb2duaXRpb24oKTsKIH0KIAorU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciBTcGVlY2hSZWNvZ25pemVyOjpjbGllbnRJZGVudGlmaWVyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9yZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCk7Cit9CisKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmll
ciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlLCBib29sIG1vY2tTcGVlY2hSZWNv
Z25pdGlvbkVuYWJsZWQsIGNvbnN0IFN0cmluZyYgbG9jYWxlSWRlbnRpZmllciwgYm9vbCBjb250
aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpCit2
b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNv
dXJjZSwgYm9vbCBtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkKQogewotICAgIEFTU0VSVCgh
bV9jbGllbnRJZGVudGlmaWVyKTsKLSAgICBtX2NsaWVudElkZW50aWZpZXIgPSBjbGllbnRJZGVu
dGlmaWVyOwotICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6
Y3JlYXRlKCptX2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6
U3RhcnQpKTsKLQotICAgIGlmICghc3RhcnRSZWNvZ25pdGlvbihtb2NrU3BlZWNoUmVjb2duaXRp
b25FbmFibGVkLCBjbGllbnRJZGVudGlmaWVyLCBsb2NhbGVJZGVudGlmaWVyLCBjb250aW51b3Vz
LCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzKSkgewotICAgICAgICBhdXRvIGVycm9y
ID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uRXJyb3JUeXBlOjpTZXJ2aWNlTm90QWxsb3dlZCwgIkZhaWxlZCB0byBzdGFydCByZWNv
Z25pdGlvbiJfcyB9OwotICAgICAgICBtX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKGNsaWVudElkZW50aWZpZXIsIFdURk1vdmUo
ZXJyb3IpKSk7CisgICAgaWYgKCFzdGFydFJlY29nbml0aW9uKG1vY2tTcGVlY2hSZWNvZ25pdGlv
bkVuYWJsZWQsIGNsaWVudElkZW50aWZpZXIoKSwgbV9yZXF1ZXN0LT5sYW5nKCksIG1fcmVxdWVz
dC0+Y29udGludW91cygpLCBtX3JlcXVlc3QtPmludGVyaW1SZXN1bHRzKCksIG1fcmVxdWVzdC0+
bWF4QWx0ZXJuYXRpdmVzKCkpKSB7CisgICAgICAgIGF1dG8gZXJyb3IgPSBTcGVlY2hSZWNvZ25p
dGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OlNlcnZpY2VOb3RBbGxvd2Vk
LCAiRmFpbGVkIHRvIHN0YXJ0IHJlY29nbml0aW9uIl9zIH07CisgICAgICAgIG1fZGVsZWdhdGVD
YWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRlbnRp
ZmllcigpLCBXVEZNb3ZlKGVycm9yKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAg
bV9zdGF0ZSA9IFN0YXRlOjpSdW5uaW5nOworICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZpZXIoKSwgU3BlZWNoUmVjb2du
aXRpb25VcGRhdGVUeXBlOjpTdGFydCkpOwogICAgIHN0YXJ0Q2FwdHVyZShXVEZNb3ZlKHNvdXJj
ZSkpOwogfQogCkBAIC04OCwxNSArMTA2LDEyIEBAIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3Rh
cnRDYXB0dXJlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKICAgICAgICAgICAg
IHdlYWtUaGlzLT5kYXRhQ2FwdHVyZWQodGltZSwgZGF0YSwgZGVzY3JpcHRpb24sIHNhbXBsZUNv
dW50KTsKICAgICB9OwogCi0gICAgYXV0byBzdGF0ZVVwZGF0ZUNhbGxiYWNrID0gW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IGF1dG8mIHVwZGF0ZSkgewotICAgICAg
ICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEFTU0VSVCht
X2NsaWVudElkZW50aWZpZXIgJiYgbV9jbGllbnRJZGVudGlmaWVyLnZhbHVlKCkgPT0gdXBkYXRl
LmNsaWVudElkZW50aWZpZXIoKSk7Ci0gICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUp
OworICAgIGF1dG8gc3RhdGVVcGRhdGVDYWxsYmFjayA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpXShjb25zdCBhdXRvJiB1cGRhdGUpIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAg
ICAgICAgICAgd2Vha1RoaXMtPm1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOwogICAgIH07CiAK
LSAgICBtX3NvdXJjZSA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNl
PigqbV9jbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGFDYWxsYmFjayksIFdURk1vdmUoc3Rh
dGVVcGRhdGVDYWxsYmFjayksIFdURk1vdmUoc291cmNlKSk7CisgICAgbV9zb3VyY2UgPSBtYWtl
VW5pcXVlPFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZT4oY2xpZW50SWRlbnRpZmllcigp
LCBXVEZNb3ZlKGRhdGFDYWxsYmFjayksIFdURk1vdmUoc3RhdGVVcGRhdGVDYWxsYmFjayksIFdU
Rk1vdmUoc291cmNlKSk7CiB9CiAKICNlbmRpZgpAQCAtMTA3LDcgKzEyMiw3IEBAIHZvaWQgU3Bl
ZWNoUmVjb2duaXplcjo6c3RvcENhcHR1cmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Nv
dXJjZSA9IG51bGxwdHI7Ci0gICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRh
dGVUeXBlOjpBdWRpb0VuZCkpOworICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZpZXIoKSwgU3BlZWNoUmVjb2duaXRpb25V
cGRhdGVUeXBlOjpBdWRpb0VuZCkpOwogfQogCiAjaWYgIUhBVkUoU1BFRUNIUkVDT0dOSVpFUikK
QEAgLTExOCwyNyArMTMzLDE3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6ZGF0YUNhcHR1cmVk
KGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwKIAogYm9vbCBTcGVl
Y2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKGJvb2wsIFNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wsIHVpbnQ2
NF90KQogewotICAgIG1faXNSZWNvZ25pemluZyA9IHRydWU7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25pdGlvbigpCiB7Ci0gICAgbV9p
c1JlY29nbml6aW5nID0gZmFsc2U7Ci0gICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRp
b25VcGRhdGVUeXBlOjpFbmQpKTsKKyAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVudGlmaWVyKCksIFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlVHlwZTo6RW5kKSk7CiB9CiAKIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcFJlY29n
bml0aW9uKCkKIHsKLSAgICBtX2lzUmVjb2duaXppbmcgPSBmYWxzZTsKLSAgICBtX2RlbGVnYXRl
Q2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlm
aWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOwotfQotCi12b2lkIFNwZWVj
aFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24oKQotewotICAgIGlmICghbV9pc1JlY29nbml6
aW5nKQotICAgICAgICByZXR1cm47Ci0gICAgYWJvcnRSZWNvZ25pdGlvbigpOworICAgIG1fZGVs
ZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVudElkZW50
aWZpZXIoKSwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKIH0KIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
emVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgK
aW5kZXggMTYwMmFmNzY2OWVjOWJkYjk1NDQxYzYyMzAyMDI0MWQxYzM0NDJlMi4uMmI5NTg2OTY0
MGQyMjhlMjFlYWUwYzBhMTA3NmRiOTI5MDYzMDU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAj
aW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAiU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNw
ZWVjaFJlY29nbml0aW9uRXJyb3IuaCIKIAogI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0zNSwyNyArMzYsMzIgQEAgT0JKQ19DTEFTUyBX
ZWJTcGVlY2hSZWNvZ25pemVyVGFzazsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTsK
IAogY2xhc3MgU3BlZWNoUmVjb2duaXplciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hS
ZWNvZ25pemVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
dXNpbmcgRGVsZWdhdGVDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3BlZWNoUmVjb2du
aXRpb25VcGRhdGUmKT47Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU3BlZWNoUmVjb2du
aXplcihEZWxlZ2F0ZUNhbGxiYWNrJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIH5TcGVlY2hSZWNv
Z25pemVyKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNwZWVjaFJl
Y29nbml6ZXIoRGVsZWdhdGVDYWxsYmFjayYmLCBVbmlxdWVSZWY8U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+U3BlZWNoUmVjb2duaXplcigpOwogCiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0KFNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFJlZjxSZWFsdGltZU1l
ZGlhU291cmNlPiYmLCBib29sIG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQsIGNvbnN0IFN0
cmluZyYgbG9jYWxlSWRlbnRpZmllciwgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1
bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c3RhcnQoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYsIGJvb2wgbW9ja1NwZWVjaFJlY29nbml0
aW9uRW5hYmxlZCk7CiAjZW5kaWYKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9ydCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YWJvcnQoT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJiA9IFdURjo6bnVsbG9wdCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wKCk7CiAKLSAgICBPcHRpb25hbDxTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyPiBjdXJyZW50Q2xpZW50SWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50SWRlbnRpZmllcjsgfQorICAgIFdFQkNPUkVf
RVhQT1JUIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50
SWRlbnRpZmllcigpIGNvbnN0OwogICAgIFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZSog
c291cmNlKCkgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lk
IHN0b3BJbnRlcm5hbCgpOworICAgIGVudW0gY2xhc3MgU3RhdGUgeworICAgICAgICBJbmFjdGl2
ZSwKKyAgICAgICAgUnVubmluZywKKyAgICAgICAgU3RvcHBpbmcsCisgICAgICAgIEFib3J0aW5n
CisgICAgfTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgdm9pZCBzdGFydENhcHR1
cmUoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYpOwpAQCAtNjUsMTcgKzcxLDE0IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGJvb2wgbW9ja1NwZWVjaFJlY29nbml0aW9u
RW5hYmxlZCwgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJp
bVJlc3VsdHMsIHVpbnQ2NF90IGFsdGVybmF0aXZlcyk7CiAgICAgdm9pZCBhYm9ydFJlY29nbml0
aW9uKCk7CiAgICAgdm9pZCBzdG9wUmVjb2duaXRpb24oKTsKLSAgICB2b2lkIHJlc2V0UmVjb2du
aXRpb24oKTsKIAotICAgIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXI+IG1fY2xpZW50SWRlbnRpZmllcjsKICAgICBEZWxlZ2F0ZUNhbGxiYWNrIG1f
ZGVsZWdhdGVDYWxsYmFjazsKKyAgICBVbmlxdWVSZWY8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
PiBtX3JlcXVlc3Q7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNwZWVjaFJlY29nbml0aW9uQ2FwdHVy
ZVNvdXJjZT4gbV9zb3VyY2U7CisgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpJbmFjdGl2ZSB9
OwogCiAjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQogICAgIFJldGFpblB0cjxXZWJTcGVlY2hS
ZWNvZ25pemVyVGFzaz4gbV90YXNrOwotI2Vsc2UKLSAgICAvLyBGb3IgdGVzdGluZy4KLSAgICBi
b29sIG1faXNSZWNvZ25pemluZyB7IGZhbHNlIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29nbml6
ZXJDb2NvYS5tbQppbmRleCBiZDJmZmQ0YjVjZjNhOWIwYzBjNmExODZiZDg3YWFlMzUwMWE2OTc2
Li43ZDViYzhmYmFkOTY5Y2NjZDUzMWQwZDk5ZmE3MjA1ODE1YmM4NDk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2du
aXplckNvY29hLm1tCkBAIC00NSwxMSArNDUsOSBAQCB2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmRh
dGFDYXB0dXJlZChjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYQog
Ym9vbCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKGJvb2wgbW9ja1NwZWVjaFJl
Y29nbml0aW9uRW5hYmxlZCwgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29u
dGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgYWx0ZXJuYXRpdmVzKQogewog
ICAgIGF1dG8gdGFza0NsYXNzID0gbW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCA/IFtXZWJT
cGVlY2hSZWNvZ25pemVyVGFza01vY2sgY2xhc3NdIDogW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNr
IGNsYXNzXTsKLSAgICBtX3Rhc2sgPSBhZG9wdE5TKFtbdGFza0NsYXNzIGFsbG9jXSBpbml0V2l0
aElkZW50aWZpZXI6aWRlbnRpZmllciBsb2NhbGU6bG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxl
UmVjb2duaXRpb25zOmNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6aW50ZXJpbVJlc3Vs
dHMgbWF4QWx0ZXJuYXRpdmVzOmFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNrOlt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZSYgdXBkYXRlKSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7CisgICAgbV90
YXNrID0gYWRvcHROUyhbW3Rhc2tDbGFzcyBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOmlkZW50
aWZpZXIgbG9jYWxlOmxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczpjb250
aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOmludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZl
czphbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazpbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKV0oY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmIHVwZGF0ZSkgewor
ICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9kZWxlZ2F0ZUNh
bGxiYWNrKHVwZGF0ZSk7CiAgICAgfV0pOwogCiAgICAgcmV0dXJuICEhbV90YXNrOwpAQCAtNjcs
MTUgKzY1LDYgQEAgdm9pZCBTcGVlY2hSZWNvZ25pemVyOjphYm9ydFJlY29nbml0aW9uKCkKICAg
ICBbbV90YXNrIGFib3J0XTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpyZXNldFJlY29n
bml0aW9uKCkKLXsKLSAgICBpZiAoIW1fdGFzaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0
byB0YXNrID0gc3RkOjpleGNoYW5nZShtX3Rhc2ssIG51bGxwdHIpOwotICAgIFt0YXNrIGFib3J0
XTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSEFWRShTUEVFQ0hS
RUNPR05JWkVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuY3BwCmluZGV4IDlmOTY3NGFlYjVlZGVlMzg2Mzc5M2E2MDJhNmM2YTBlZmUz
OTdmNWMuLjM4NmRiOWIwNGZlZmM1Y2E4YTU0M2M2NDA4YTE5YWFhYWE3NTk1YTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAK
QEAgLTcxLDY0ICs3MSw0MSBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpyZXF1ZXN0
UGVybWlzc2lvbkZvclJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IHdlYWtSZXF1ZXN0LT5jbGllbnRJ
ZGVudGlmaWVyKCk7CisgICAgICAgIGF1dG8gcmVxdWVzdCA9IG1fcmVxdWVzdHMudGFrZShpZGVu
dGlmaWVyKTsKICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBtX3JlcXVlc3RzLnJl
bW92ZShpZGVudGlmaWVyKTsKICAgICAgICAgICAgIHNlbmRVcGRhdGUoaWRlbnRpZmllciwgV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvciwgV1RGTW92ZShlcnJvcikp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaGFuZGxlUmVxdWVz
dCgqd2Vha1JlcXVlc3QpOworICAgICAgICBBU1NFUlQocmVxdWVzdCk7CisgICAgICAgIGhhbmRs
ZVJlcXVlc3QobWFrZVVuaXF1ZVJlZkZyb21Ob25OdWxsVW5pcXVlUHRyKFdURk1vdmUocmVxdWVz
dCkpKTsKICAgICB9KTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxl
UmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3QpCit2b2lk
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpoYW5kbGVSZXF1ZXN0KFVuaXF1ZVJlZjxXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+JiYgcmVxdWVzdCkKIHsKLSAgICBpZiAoIW1fcmVj
b2duaXplcikgewotICAgICAgICBtX3JlY29nbml6ZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml6ZXI+KFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShhdXRv
JiB1cGRhdGUpIHsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgICAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSB1cGRhdGUuY2xp
ZW50SWRlbnRpZmllcigpOwotICAgICAgICAgICAgaWYgKCFtX3JlcXVlc3RzLmNvbnRhaW5zKGNs
aWVudElkZW50aWZpZXIpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAg
c2VuZFVwZGF0ZSh1cGRhdGUpOwotCi0gICAgICAgICAgICBhdXRvIHR5cGUgPSB1cGRhdGUudHlw
ZSgpOwotICAgICAgICAgICAgaWYgKHR5cGUgIT0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25V
cGRhdGVUeXBlOjpFcnJvciAmJiB0eXBlICE9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBk
YXRlVHlwZTo6RW5kKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgaWYg
KG1faXNSZXNldHRpbmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9p
c1Jlc2V0dGluZyA9IHRydWU7Ci0KLSAgICAgICAgICAgIG1fcmVjb2duaXplci0+cmVzZXQoKTsK
LSAgICAgICAgICAgIG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOwotICAgICAg
ICAgICAgbV9pc1Jlc2V0dGluZyA9IGZhbHNlOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBp
ZiAoYXV0byBjdXJyZW50Q2xpZW50SWRlbnRpZmllciA9IG1fcmVjb2duaXplci0+Y3VycmVudENs
aWVudElkZW50aWZpZXIoKSkgeworICAgIGlmIChtX3JlY29nbml6ZXIpIHsKICAgICAgICAgYXV0
byBlcnJvciA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QWJvcnRlZCwgIkFub3RoZXIgcmVxdWVzdCBpcyBzdGFy
dGVkIl9zIH07Ci0gICAgICAgIHNlbmRVcGRhdGUoKmN1cnJlbnRDbGllbnRJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yLCBlcnJvcik7Ci0gICAg
ICAgIG1fcmVjb2duaXplci0+cmVzZXQoKTsKKyAgICAgICAgbV9yZWNvZ25pemVyLT5hYm9ydChl
cnJvcik7CiAgICAgfQogCi0gICAgYXV0byBjbGllbnRJZGVudGlmaWVyID0gcmVxdWVzdC5jbGll
bnRJZGVudGlmaWVyKCk7CisgICAgYXV0byBjbGllbnRJZGVudGlmaWVyID0gcmVxdWVzdC0+Y2xp
ZW50SWRlbnRpZmllcigpOworICAgIG1fcmVjb2duaXplciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6
U3BlZWNoUmVjb2duaXplcj4oW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGF1dG8mIHVw
ZGF0ZSkgeworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+c2Vu
ZFVwZGF0ZSh1cGRhdGUpOworICAgIH0sIFdURk1vdmUocmVxdWVzdCkpOworCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKICAgICBhdXRvIHNvdXJjZU9yRXJyb3IgPSBtX3JlYWx0aW1lTWVkaWFT
b3VyY2VDcmVhdGVGdW5jdGlvbigpOwogICAgIGlmICghc291cmNlT3JFcnJvcikgewotICAgICAg
ICBtX3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKICAgICAgICAgc2VuZFVwZGF0
ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRl
bnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uRXJyb3JUeXBlOjpBdWRpb0NhcHR1cmUsIHNvdXJjZU9yRXJyb3IuZXJyb3JN
ZXNzYWdlIH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFdlYlByb2Nlc3NQcm94
eTo6bXV0ZUNhcHR1cmVJblBhZ2VzRXhjZXB0KG1faWRlbnRpZmllcik7Ci0KICAgICBib29sIG1v
Y2tEZXZpY2VDYXB0dXJlc0VuYWJsZWQgPSBtX2NoZWNrSWZNb2NrU3BlZWNoUmVjb2duaXRpb25F
bmFibGVkKCk7Ci0gICAgbV9yZWNvZ25pemVyLT5zdGFydChjbGllbnRJZGVudGlmaWVyLCBzb3Vy
Y2VPckVycm9yLnNvdXJjZSgpLCBtb2NrRGV2aWNlQ2FwdHVyZXNFbmFibGVkLCByZXF1ZXN0Lmxh
bmcoKSwgcmVxdWVzdC5jb250aW51b3VzKCksIHJlcXVlc3QuaW50ZXJpbVJlc3VsdHMoKSwgcmVx
dWVzdC5tYXhBbHRlcm5hdGl2ZXMoKSk7CisgICAgbV9yZWNvZ25pemVyLT5zdGFydChzb3VyY2VP
ckVycm9yLnNvdXJjZSgpLCBtb2NrRGV2aWNlQ2FwdHVyZXNFbmFibGVkKTsKICNlbHNlCi0gICAg
bV9yZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRlbnRpZmllcik7CiAgICAgc2VuZFVwZGF0ZShjbGll
bnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9y
LCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25FcnJvclR5cGU6OkF1ZGlvQ2FwdHVyZSwgIkF1ZGlvIGNhcHR1cmUgaXMgbm90IGltcGxl
bWVudGVkIl9zIH0pOwogI2VuZGlmCiB9CkBAIC0xMzYsMzIgKzExMywzMyBAQCB2b2lkIFNwZWVj
aFJlY29nbml0aW9uU2VydmVyOjpoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdCYgcgogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RvcChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50
aWZpZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJZGVudGlmaWVyKTsKLSAgICBpZiAo
bV9yZWNvZ25pemVyICYmIG1fcmVjb2duaXplci0+Y3VycmVudENsaWVudElkZW50aWZpZXIoKSA9
PSBjbGllbnRJZGVudGlmaWVyKSB7Ci0gICAgICAgIG1fcmVjb2duaXplci0+c3RvcCgpOworCisg
ICAgaWYgKG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpKSB7CisgICAgICAgIHNl
bmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRh
dGVUeXBlOjpFbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fcmVxdWVz
dHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpKQotICAgICAgICBzZW5kVXBkYXRlKGNsaWVudElk
ZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKTsKKyAg
ICBpZiAobV9yZWNvZ25pemVyICYmIG1fcmVjb2duaXplci0+Y2xpZW50SWRlbnRpZmllcigpID09
IGNsaWVudElkZW50aWZpZXIpCisgICAgICAgIG1fcmVjb2duaXplci0+c3RvcCgpOwogfQogCiB2
b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjphYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCiB7CiAgICAg
TUVTU0FHRV9DSEVDSyhjbGllbnRJZGVudGlmaWVyKTsKLSAgICBpZiAobV9yZWNvZ25pemVyICYm
IG1fcmVjb2duaXplci0+Y3VycmVudENsaWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlm
aWVyKSB7Ci0gICAgICAgIG1fcmVjb2duaXplci0+YWJvcnQoKTsKKyAgICBpZiAobV9yZXF1ZXN0
cy5yZW1vdmUoY2xpZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAgc2VuZFVwZGF0ZShjbGllbnRJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9yZXF1ZXN0cy5yZW1vdmUoY2xpZW50
SWRlbnRpZmllcikpCi0gICAgICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOworICAgIGlmIChtX3JlY29nbml6
ZXIgJiYgbV9yZWNvZ25pemVyLT5jbGllbnRJZGVudGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmll
cikKKyAgICAgICAgbV9yZWNvZ25pemVyLT5hYm9ydCgpOwogfQogCiB2b2lkIFNwZWVjaFJlY29n
bml0aW9uU2VydmVyOjppbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKIHsKICAgICBNRVNTQUdFX0NI
RUNLKGNsaWVudElkZW50aWZpZXIpOwogICAgIGlmIChtX3JlcXVlc3RzLnJlbW92ZShjbGllbnRJ
ZGVudGlmaWVyKSkgewotICAgICAgICBpZiAobV9yZWNvZ25pemVyICYmIG1fcmVjb2duaXplci0+
Y3VycmVudENsaWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlmaWVyKQorICAgICAgICBp
ZiAobV9yZWNvZ25pemVyICYmIG1fcmVjb2duaXplci0+Y2xpZW50SWRlbnRpZmllcigpID09IGNs
aWVudElkZW50aWZpZXIpCiAgICAgICAgICAgICBtX3JlY29nbml6ZXItPmFib3J0KCk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2Vy
dmVyLmgKaW5kZXggMmZjMjQ4YThlMTNiYzc2NjU1NDE2MDE3NDg1ZTk0MWRiZWRjZWExNy4uMzAy
MThlYjJjNmZhZDcyYjg3N2I2Y2JlYWI1ZDI3NmU3MjhmYmZiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC02Nyw3ICs2Nyw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uRm9yUmVx
dWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKLSAgICB2b2lkIGhhbmRs
ZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7CisgICAgdm9pZCBo
YW5kbGVSZXF1ZXN0KFVuaXF1ZVJlZjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+
JiYpOwogICAgIHZvaWQgc2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5
cGUsIE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+ID0gV1RGOjpudWxs
b3B0LCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRh
Pj4gPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgc2VuZFVwZGF0ZShjb25zdCBXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpOwogCg==
</data>
<flag name="commit-queue"
          id="437222"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419066</attachid>
            <date>2021-02-02 14:29:36 -0800</date>
            <delta_ts>2021-02-02 14:55:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219699-20210202142935.patch</filename>
            <type>text/plain</type>
            <size>20855</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzcwMDExZTZmMDJjMWI4
NTE3NDZjMjI1NTU3Zjk0ZDJlZmJkOWM5Yi4uYjc3ODRkZjRjZGE3ZGFlNGM3MDVjNTI1NGJmYTE2
MGZlNGEzZGEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTAyLTAyICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGEgU3BlZWNoUmVj
b2duaXplciBmb3IgZWFjaCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY5OQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzIzOTIwOTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTWFrZSBTcGVlY2hSZWNvZ25pemVyIHRha2UgdGhlIG93bmVyd2hpcCBvZiB0
aGUgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0IGl0J3MgYWJvdXQgdG8gaGFuZGxlLCBhbmQgbWFu
YWdlIGl0cyAKKyAgICAgICAgc3RhdGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OlNw
ZWVjaFJlY29nbml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6flNw
ZWVjaFJlY29nbml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6YWJv
cnQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcCk6CisgICAgICAg
IChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpjbGllbnRJZGVudGlmaWVyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0Q2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pemVyOjpzdG9wQ2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml6ZXI6OmFib3J0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXplcjo6c3RvcFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml6ZXI6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6
ZXI6OnJlc2V0UmVjb2duaXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml6ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6
OmN1cnJlbnRDbGllbnRJZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24pOiBEZWxldGVkLgorCiAyMDIx
LTAyLTAyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgU3Vw
cG9ydCBCaWdJbnQ2NEFycmF5L0JpZ1VpbnQ2NEFycmF5IGluIHN0cnVjdHVyZWQtY2xvbmluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA1YzliN2UxODI5YmRhYWI0ODU4OTQyMjdmOWRhYTkzZTNmNzJhNzIyLi4wNjAy
MTVjNjMzMDI1ZjlkZWRlZDdlMGUwYmE1ZjRkOTU4NmQ2NGVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIzIEBACisyMDIxLTAyLTAyICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAg
ICAgICAgQ3JlYXRlIGEgU3BlZWNoUmVjb2duaXplciBmb3IgZWFjaCBTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxOTY5OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzIzOTIwOTc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgdXNlZCB0aGUgc2FtZSBTcGVl
Y2hSZWNvZ25pemVyIGZvciBtdWx0aXBsZSByZXF1ZXN0cywgc28gd2UgaGFkIHRvIHJlc2V0IFNw
ZWVjaFJlY29nbml6ZXIgc3RhdGUgYmV0d2VlbgorICAgICAgICByZXF1ZXN0cywgd2hpY2ggbWFr
ZXMgdGhpbmdzIGNvbXBsaWNhdGVkIGFuZCBoYXJkIHRvIGRlYnVnIChsaWtlIG5lc3RlZCByZXNl
dCBjYWxscykuIE5vdyB3ZSBoYXZlIG9uZSBkZWRpY2F0ZWQKKyAgICAgICAgU3BlZWNoUmVjb2du
aXplciBmb3IgZWFjaCByZXF1ZXN0LgorCisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXI6OnJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVj
aFJlY29nbml0aW9uU2VydmVyOjpoYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcjo6YWJvcnQpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6aW52YWxpZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uU2VydmVyLmg6CisKIDIwMjEtMDItMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlY292ZXIgTWVkaWFTdHJlYW1UcmFjayBhdWRpbyByZW5kZXJpbmcg
ZnJvbSBHUFVQcm9jZXNzIGNyYXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml6ZXIuY3BwCmluZGV4IGNhZDQ4YTk3NDJiYjllMDE0MzRmYmE4NWRk
MGMxMGE5YzAxZmY0ODguLmEzZmE3ZjA3NTgzMDU0Yjg1OTY4OGVmOGMyMzg1ZDZmOGM3MzI0N2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6
ZXIuY3BwCkBAIC0yNiw4ICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlNwZWVjaFJlY29nbml6ZXIuaCIKIAorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dC5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgiCiAjaW5jbHVkZSA8d3Rm
L01lZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogI2luY2x1ZGUgIk1lZGlhVXRpbGl0aWVzLmgiCkBAIC0zNSw0OSArMzcsNjYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TcGVlY2hSZWNvZ25pemVyOjpTcGVlY2hSZWNvZ25p
emVyKERlbGVnYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKLSAgICA6IG1fZGVsZWdhdGVDYWxsYmFj
ayhXVEZNb3ZlKGNhbGxiYWNrKSkKK1NwZWVjaFJlY29nbml6ZXI6OlNwZWVjaFJlY29nbml6ZXIo
RGVsZWdhdGVDYWxsYmFjayYmIGNhbGxiYWNrLCBVbmlxdWVSZWY8U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0PiYmIHJlcXVlc3QpCisgICAgOiBtX3JlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSkKIHsK
KyAgICBtX2RlbGVnYXRlQ2FsbGJhY2sgPSBbdGhpcywgZGVsZWdhdGVDYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShhdXRvJiB1cGRhdGUpIHsKKyAgICAgICAgQVNTRVJUKGNsaWVudElkZW50
aWZpZXIoKSA9PSB1cGRhdGUuY2xpZW50SWRlbnRpZmllcigpKTsKKyAgICAgICAgZGVsZWdhdGVD
YWxsYmFjayh1cGRhdGUpOworCisgICAgICAgIGlmICh1cGRhdGUudHlwZSgpID09IFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IpCisgICAgICAgICAgICBhYm9ydCgpOworICAgICAg
ICBpZiAodXBkYXRlLnR5cGUoKSA9PSAgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQp
CisgICAgICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkluYWN0aXZlOworICAgIH07CiB9CiAKLXZv
aWQgU3BlZWNoUmVjb2duaXplcjo6cmVzZXQoKQorU3BlZWNoUmVjb2duaXplcjo6flNwZWVjaFJl
Y29nbml6ZXIoKQogewotICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBzdG9wQ2FwdHVyZSgpOwotICAgIHJlc2V0UmVjb2duaXRpb24oKTsKLSAgICBt
X2NsaWVudElkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgaWYgKG1fc3RhdGUgPT0gU3Rh
dGU6OkFib3J0aW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OlN0b3BwaW5nIHx8IG1fc3RhdGUgPT0g
U3RhdGU6OlJ1bm5pbmcpCisgICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZpZXIoKSwgU3BlZWNoUmVjb2duaXRpb25V
cGRhdGVUeXBlOjpFbmQpKTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjphYm9ydCgpCit2
b2lkIFNwZWVjaFJlY29nbml6ZXI6OmFib3J0KE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJy
b3I+JiYgZXJyb3IpCiB7Ci0gICAgQVNTRVJUKG1fY2xpZW50SWRlbnRpZmllcik7CisgICAgaWYg
KG1fc3RhdGUgPT0gU3RhdGU6OkFib3J0aW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkluYWN0aXZl
KQorICAgICAgICByZXR1cm47CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpBYm9ydGluZzsKKworICAg
IGlmIChlcnJvcikKKyAgICAgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlOjpjcmVhdGVFcnJvcihjbGllbnRJZGVudGlmaWVyKCksICplcnJvcikpOworCiAgICAg
c3RvcENhcHR1cmUoKTsKICAgICBhYm9ydFJlY29nbml0aW9uKCk7CiB9CiAKIHZvaWQgU3BlZWNo
UmVjb2duaXplcjo6c3RvcCgpCiB7Ci0gICAgQVNTRVJUKG1fY2xpZW50SWRlbnRpZmllcik7Cisg
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFib3J0aW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6Oklu
YWN0aXZlKQorICAgICAgICByZXR1cm47CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpTdG9wcGluZzsK
KwogICAgIHN0b3BDYXB0dXJlKCk7CiAgICAgc3RvcFJlY29nbml0aW9uKCk7CiB9CiAKK1NwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgU3BlZWNoUmVjb2duaXplcjo6
Y2xpZW50SWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVxdWVzdC0+Y2xpZW50
SWRlbnRpZmllcigpOworfQorCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAotdm9pZCBTcGVl
Y2hSZWNvZ25pemVyOjpzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJj
ZSwgYm9vbCBtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkLCBjb25zdCBTdHJpbmcmIGxvY2Fs
ZUlkZW50aWZpZXIsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0
X3QgbWF4QWx0ZXJuYXRpdmVzKQordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydChSZWY8UmVh
bHRpbWVNZWRpYVNvdXJjZT4mJiBzb3VyY2UsIGJvb2wgbW9ja1NwZWVjaFJlY29nbml0aW9uRW5h
YmxlZCkKIHsKLSAgICBBU1NFUlQoIW1fY2xpZW50SWRlbnRpZmllcik7Ci0gICAgbV9jbGllbnRJ
ZGVudGlmaWVyID0gY2xpZW50SWRlbnRpZmllcjsKLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlN0YXJ0KSk7Ci0KLSAgICBpZiAoIXN0YXJ0UmVjb2duaXRp
b24obW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCwgY2xpZW50SWRlbnRpZmllciwgbG9jYWxl
SWRlbnRpZmllciwgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVybmF0aXZlcykp
IHsKLSAgICAgICAgYXV0byBlcnJvciA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3Ig
eyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6U2VydmljZU5vdEFsbG93ZWQs
ICJGYWlsZWQgdG8gc3RhcnQgcmVjb2duaXRpb24iX3MgfTsKLSAgICAgICAgbV9kZWxlZ2F0ZUNh
bGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihjbGll
bnRJZGVudGlmaWVyLCBXVEZNb3ZlKGVycm9yKSkpOworICAgIGlmICghc3RhcnRSZWNvZ25pdGlv
bihtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkLCBjbGllbnRJZGVudGlmaWVyKCksIG1fcmVx
dWVzdC0+bGFuZygpLCBtX3JlcXVlc3QtPmNvbnRpbnVvdXMoKSwgbV9yZXF1ZXN0LT5pbnRlcmlt
UmVzdWx0cygpLCBtX3JlcXVlc3QtPm1heEFsdGVybmF0aXZlcygpKSkgeworICAgICAgICBhdXRv
IGVycm9yID0gU3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JU
eXBlOjpTZXJ2aWNlTm90QWxsb3dlZCwgIkZhaWxlZCB0byBzdGFydCByZWNvZ25pdGlvbiJfcyB9
OworICAgICAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNy
ZWF0ZUVycm9yKGNsaWVudElkZW50aWZpZXIoKSwgV1RGTW92ZShlcnJvcikpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorICAgIG1fc3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKKyAgICBtX2Rl
bGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVu
dGlmaWVyKCksIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3RhcnQpKTsKICAgICBzdGFy
dENhcHR1cmUoV1RGTW92ZShzb3VyY2UpKTsKIH0KIApAQCAtODgsMTUgKzEwNywxMiBAQCB2b2lk
IFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0Q2FwdHVyZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4m
JiBzb3VyY2UpCiAgICAgICAgICAgICB3ZWFrVGhpcy0+ZGF0YUNhcHR1cmVkKHRpbWUsIGRhdGEs
IGRlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7CiAgICAgfTsKIAotICAgIGF1dG8gc3RhdGVVcGRh
dGVDYWxsYmFjayA9IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShjb25zdCBh
dXRvJiB1cGRhdGUpIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBBU1NFUlQobV9jbGllbnRJZGVudGlmaWVyICYmIG1fY2xpZW50SWRlbnRp
Zmllci52YWx1ZSgpID09IHVwZGF0ZS5jbGllbnRJZGVudGlmaWVyKCkpOwotICAgICAgICBtX2Rl
bGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKKyAgICBhdXRvIHN0YXRlVXBkYXRlQ2FsbGJhY2sgPSBb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oY29uc3QgYXV0byYgdXBkYXRlKSB7CisgICAg
ICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2RlbGVnYXRlQ2FsbGJh
Y2sodXBkYXRlKTsKICAgICB9OwogCi0gICAgbV9zb3VyY2UgPSBtYWtlVW5pcXVlPFNwZWVjaFJl
Y29nbml0aW9uQ2FwdHVyZVNvdXJjZT4oKm1fY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShkYXRh
Q2FsbGJhY2spLCBXVEZNb3ZlKHN0YXRlVXBkYXRlQ2FsbGJhY2spLCBXVEZNb3ZlKHNvdXJjZSkp
OworICAgIG1fc291cmNlID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3Vy
Y2U+KGNsaWVudElkZW50aWZpZXIoKSwgV1RGTW92ZShkYXRhQ2FsbGJhY2spLCBXVEZNb3ZlKHN0
YXRlVXBkYXRlQ2FsbGJhY2spLCBXVEZNb3ZlKHNvdXJjZSkpOwogfQogCiAjZW5kaWYKQEAgLTEw
Nyw3ICsxMjMsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0b3BDYXB0dXJlKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV9zb3VyY2UgPSBudWxscHRyOwotICAgIG1fZGVsZWdhdGVDYWxs
YmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKCptX2NsaWVudElkZW50aWZpZXIs
IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6QXVkaW9FbmQpKTsKKyAgICBtX2RlbGVnYXRl
Q2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVudGlmaWVy
KCksIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6QXVkaW9FbmQpKTsKIH0KIAogI2lmICFI
QVZFKFNQRUVDSFJFQ09HTklaRVIpCkBAIC0xMTgsMjcgKzEzNCwxNyBAQCB2b2lkIFNwZWVjaFJl
Y29nbml6ZXI6OmRhdGFDYXB0dXJlZChjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1
ZGlvRGF0YSYsCiAKIGJvb2wgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNvZ25pdGlvbihib29s
LCBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmLCBib29sLCBib29sLCB1aW50NjRfdCkKIHsKLSAgICBtX2lzUmVjb2duaXppbmcgPSB0cnVl
OwogICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmFib3J0UmVj
b2duaXRpb24oKQogewotICAgIG1faXNSZWNvZ25pemluZyA9IGZhbHNlOwotICAgIG1fZGVsZWdh
dGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKCptX2NsaWVudElkZW50
aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CisgICAgbV9kZWxlZ2F0
ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoY2xpZW50SWRlbnRpZmll
cigpLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOwogfQogCiB2b2lkIFNwZWVj
aFJlY29nbml6ZXI6OnN0b3BSZWNvZ25pdGlvbigpCiB7Ci0gICAgbV9pc1JlY29nbml6aW5nID0g
ZmFsc2U7Ci0gICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpj
cmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpF
bmQpKTsKLX0KLQotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpyZXNldFJlY29nbml0aW9uKCkKLXsK
LSAgICBpZiAoIW1faXNSZWNvZ25pemluZykKLSAgICAgICAgcmV0dXJuOwotICAgIGFib3J0UmVj
b2duaXRpb24oKTsKKyAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRh
dGU6OmNyZWF0ZShjbGllbnRJZGVudGlmaWVyKCksIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlw
ZTo6RW5kKSk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXplci5oCmluZGV4IDE2MDJhZjc2NjllYzliZGI5NTQ0MWM2MjMwMjAy
NDFkMWMzNDQyZTIuLjJiOTU4Njk2NDBkMjI4ZTIxZWFlMGMwYTEwNzZkYjkyOTA2MzA1NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNv
dXJjZS5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkVycm9yLmgiCiAKICNpZiBIQVZF
KFNQRUVDSFJFQ09HTklaRVIpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMzUsMjcg
KzM2LDMyIEBAIE9CSkNfQ0xBU1MgV2ViU3BlZWNoUmVjb2duaXplclRhc2s7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OwogY2xhc3MgU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGU7CiAKIGNsYXNzIFNwZWVjaFJlY29nbml6ZXIgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXplcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHVzaW5nIERlbGVnYXRlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2
b2lkKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik+OwotICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNwZWVjaFJlY29nbml6ZXIoRGVsZWdhdGVDYWxsYmFjayYmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB+U3BlZWNoUmVjb2duaXplcigpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTcGVlY2hSZWNvZ25pemVyKERlbGVnYXRlQ2FsbGJhY2smJiwgVW5pcXVl
UmVmPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgflNw
ZWVjaFJlY29nbml6ZXIoKTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiwgYm9vbCBtb2NrU3BlZWNoUmVjb2du
aXRpb25FbmFibGVkLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29udGlu
dW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0KFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmLCBi
b29sIG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQpOwogI2VuZGlmCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZXNldCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJvcnQoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFib3J0KE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJy
b3I+JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcCgpOwog
Ci0gICAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
cj4gY3VycmVudENsaWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudElkZW50
aWZpZXI7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIoKSBjb25zdDsKICAgICBTcGVlY2hSZWNv
Z25pdGlvbkNhcHR1cmVTb3VyY2UqIHNvdXJjZSgpIHsgcmV0dXJuIG1fc291cmNlLmdldCgpOyB9
CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzdG9wSW50ZXJuYWwoKTsKKyAgICBlbnVtIGNsYXNzIFN0
YXRlIHsKKyAgICAgICAgSW5hY3RpdmUsCisgICAgICAgIFJ1bm5pbmcsCisgICAgICAgIFN0b3Bw
aW5nLAorICAgICAgICBBYm9ydGluZworICAgIH07CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogICAgIHZvaWQgc3RhcnRDYXB0dXJlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmKTsKQEAg
LTY1LDE3ICs3MSwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlvbihib29s
IG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQsIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9jYWxlSWRlbnRpZmllciwgYm9vbCBj
b250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBhbHRlcm5hdGl2ZXMpOwog
ICAgIHZvaWQgYWJvcnRSZWNvZ25pdGlvbigpOwogICAgIHZvaWQgc3RvcFJlY29nbml0aW9uKCk7
Ci0gICAgdm9pZCByZXNldFJlY29nbml0aW9uKCk7CiAKLSAgICBPcHRpb25hbDxTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyPiBtX2NsaWVudElkZW50aWZpZXI7CiAg
ICAgRGVsZWdhdGVDYWxsYmFjayBtX2RlbGVnYXRlQ2FsbGJhY2s7CisgICAgVW5pcXVlUmVmPFNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gbV9yZXF1ZXN0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxT
cGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2U+IG1fc291cmNlOworICAgIFN0YXRlIG1fc3Rh
dGUgeyBTdGF0ZTo6SW5hY3RpdmUgfTsKIAogI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKICAg
ICBSZXRhaW5QdHI8V2ViU3BlZWNoUmVjb2duaXplclRhc2s+IG1fdGFzazsKLSNlbHNlCi0gICAg
Ly8gRm9yIHRlc3RpbmcuCi0gICAgYm9vbCBtX2lzUmVjb2duaXppbmcgeyBmYWxzZSB9OwogI2Vu
ZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2Nv
YS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0KaW5kZXggYmQyZmZkNGI1Y2YzYTliMGMw
YzZhMTg2YmQ4N2FhZTM1MDFhNjk3Ni4uN2Q1YmM4ZmJhZDk2OWNjY2Q1MzFkMGQ5OWZhNzIwNTgx
NWJjODQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2Ev
U3BlZWNoUmVjb2duaXplckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQpAQCAtNDUsMTEgKzQ1LDkgQEAgdm9p
ZCBTcGVlY2hSZWNvZ25pemVyOjpkYXRhQ2FwdHVyZWQoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBj
b25zdCBQbGF0Zm9ybUF1ZGlvRGEKIGJvb2wgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNvZ25p
dGlvbihib29sIG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQsIFNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2Nh
bGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2
NF90IGFsdGVybmF0aXZlcykKIHsKICAgICBhdXRvIHRhc2tDbGFzcyA9IG1vY2tTcGVlY2hSZWNv
Z25pdGlvbkVuYWJsZWQgPyBbV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrIGNsYXNzXSA6IFtX
ZWJTcGVlY2hSZWNvZ25pemVyVGFzayBjbGFzc107Ci0gICAgbV90YXNrID0gYWRvcHROUyhbW3Rh
c2tDbGFzcyBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOmlkZW50aWZpZXIgbG9jYWxlOmxvY2Fs
ZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczpjb250aW51b3VzIHJlcG9ydEludGVy
aW1SZXN1bHRzOmludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczphbHRlcm5hdGl2ZXMgZGVs
ZWdhdGVDYWxsYmFjazpbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oY29uc3Qg
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmIHVwZGF0ZSkgewotICAgICAgICBpZiAo
IXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fZGVsZWdhdGVDYWxs
YmFjayh1cGRhdGUpOworICAgIG1fdGFzayA9IGFkb3B0TlMoW1t0YXNrQ2xhc3MgYWxsb2NdIGlu
aXRXaXRoSWRlbnRpZmllcjppZGVudGlmaWVyIGxvY2FsZTpsb2NhbGVJZGVudGlmaWVyIGRvTXVs
dGlwbGVSZWNvZ25pdGlvbnM6Y29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czppbnRlcmlt
UmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6YWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6W3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uVXBkYXRlJiB1cGRhdGUpIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAg
d2Vha1RoaXMtPm1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOwogICAgIH1dKTsKIAogICAgIHJl
dHVybiAhIW1fdGFzazsKQEAgLTY3LDE1ICs2NSw2IEBAIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6
YWJvcnRSZWNvZ25pdGlvbigpCiAgICAgW21fdGFzayBhYm9ydF07CiB9CiAKLXZvaWQgU3BlZWNo
UmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlvbigpCi17Ci0gICAgaWYgKCFtX3Rhc2spCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGF1dG8gdGFzayA9IHN0ZDo6ZXhjaGFuZ2UobV90YXNrLCBudWxs
cHRyKTsKLSAgICBbdGFzayBhYm9ydF07Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAppbmRleCA5Zjk2NzRhZWI1ZWRl
ZTM4NjM3OTNhNjAyYTZjNmEwZWZlMzk3ZjVjLi4zODZkYjliMDRmZWZjNWNhOGE1NDNjNjQwOGEx
OWFhYWFhNzU5NWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIuY3BwCkBAIC03MSw2NCArNzEsNDEgQEAgdm9pZCBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcjo6cmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KFdlYkNvcmU6OlNwZWVj
aFJlY29nbmkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIGlkZW50aWZpZXIg
PSB3ZWFrUmVxdWVzdC0+Y2xpZW50SWRlbnRpZmllcigpOworICAgICAgICBhdXRvIHJlcXVlc3Qg
PSBtX3JlcXVlc3RzLnRha2UoaWRlbnRpZmllcik7CiAgICAgICAgIGlmIChlcnJvcikgewotICAg
ICAgICAgICAgbV9yZXF1ZXN0cy5yZW1vdmUoaWRlbnRpZmllcik7CiAgICAgICAgICAgICBzZW5k
VXBkYXRlKGlkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6
RXJyb3IsIFdURk1vdmUoZXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIGhhbmRsZVJlcXVlc3QoKndlYWtSZXF1ZXN0KTsKKyAgICAgICAgQVNTRVJUKHJl
cXVlc3QpOworICAgICAgICBoYW5kbGVSZXF1ZXN0KG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVu
aXF1ZVB0cihXVEZNb3ZlKHJlcXVlc3QpKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVx
dWVzdChVbmlxdWVSZWY8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiYmIHJlcXVl
c3QpCiB7Ci0gICAgaWYgKCFtX3JlY29nbml6ZXIpIHsKLSAgICAgICAgbV9yZWNvZ25pemVyID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyPihbdGhpcywgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKV0oYXV0byYgdXBkYXRlKSB7Ci0gICAgICAgICAgICBpZiAoIXdlYWtU
aGlzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgYXV0byBjbGllbnRJ
ZGVudGlmaWVyID0gdXBkYXRlLmNsaWVudElkZW50aWZpZXIoKTsKLSAgICAgICAgICAgIGlmICgh
bV9yZXF1ZXN0cy5jb250YWlucyhjbGllbnRJZGVudGlmaWVyKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgICAgIHNlbmRVcGRhdGUodXBkYXRlKTsKLQotICAgICAgICAgICAg
YXV0byB0eXBlID0gdXBkYXRlLnR5cGUoKTsKLSAgICAgICAgICAgIGlmICh0eXBlICE9IFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IgJiYgdHlwZSAhPSBXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgICAgIGlmIChtX2lzUmVzZXR0aW5nKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1faXNSZXNldHRpbmcgPSB0cnVlOwotCi0gICAgICAgICAgICBt
X3JlY29nbml6ZXItPnJlc2V0KCk7Ci0gICAgICAgICAgICBtX3JlcXVlc3RzLnJlbW92ZShjbGll
bnRJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIG1faXNSZXNldHRpbmcgPSBmYWxzZTsKLSAgICAg
ICAgfSk7Ci0gICAgfQotCi0gICAgaWYgKGF1dG8gY3VycmVudENsaWVudElkZW50aWZpZXIgPSBt
X3JlY29nbml6ZXItPmN1cnJlbnRDbGllbnRJZGVudGlmaWVyKCkpIHsKKyAgICBpZiAobV9yZWNv
Z25pemVyKSB7CiAgICAgICAgIGF1dG8gZXJyb3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkFib3J0ZWQsICJB
bm90aGVyIHJlcXVlc3QgaXMgc3RhcnRlZCJfcyB9OwotICAgICAgICBzZW5kVXBkYXRlKCpjdXJy
ZW50Q2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
OjpFcnJvciwgZXJyb3IpOwotICAgICAgICBtX3JlY29nbml6ZXItPnJlc2V0KCk7CisgICAgICAg
IG1fcmVjb2duaXplci0+YWJvcnQoZXJyb3IpOwogICAgIH0KIAotICAgIGF1dG8gY2xpZW50SWRl
bnRpZmllciA9IHJlcXVlc3QuY2xpZW50SWRlbnRpZmllcigpOworICAgIGF1dG8gY2xpZW50SWRl
bnRpZmllciA9IHJlcXVlc3QtPmNsaWVudElkZW50aWZpZXIoKTsKKyAgICBtX3JlY29nbml6ZXIg
PSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI+KFt3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKHRoaXMpXShhdXRvJiB1cGRhdGUpIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAg
ICAgICAgICAgd2Vha1RoaXMtPnNlbmRVcGRhdGUodXBkYXRlKTsKKyAgICB9LCBXVEZNb3ZlKHJl
cXVlc3QpKTsKKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgYXV0byBzb3VyY2VPckVy
cm9yID0gbV9yZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24oKTsKICAgICBpZiAoIXNv
dXJjZU9yRXJyb3IpIHsKLSAgICAgICAgbV9yZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRlbnRpZmll
cik7CiAgICAgICAgIHNlbmRVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6
OmNyZWF0ZUVycm9yKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
RXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QXVkaW9DYXB0dXJl
LCBzb3VyY2VPckVycm9yLmVycm9yTWVzc2FnZSB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBXZWJQcm9jZXNzUHJveHk6Om11dGVDYXB0dXJlSW5QYWdlc0V4Y2VwdChtX2lkZW50
aWZpZXIpOwotCiAgICAgYm9vbCBtb2NrRGV2aWNlQ2FwdHVyZXNFbmFibGVkID0gbV9jaGVja0lm
TW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCgpOwotICAgIG1fcmVjb2duaXplci0+c3RhcnQo
Y2xpZW50SWRlbnRpZmllciwgc291cmNlT3JFcnJvci5zb3VyY2UoKSwgbW9ja0RldmljZUNhcHR1
cmVzRW5hYmxlZCwgcmVxdWVzdC5sYW5nKCksIHJlcXVlc3QuY29udGludW91cygpLCByZXF1ZXN0
LmludGVyaW1SZXN1bHRzKCksIHJlcXVlc3QubWF4QWx0ZXJuYXRpdmVzKCkpOworICAgIG1fcmVj
b2duaXplci0+c3RhcnQoc291cmNlT3JFcnJvci5zb3VyY2UoKSwgbW9ja0RldmljZUNhcHR1cmVz
RW5hYmxlZCk7CiAjZWxzZQotICAgIG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIp
OwogICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25VcGRhdGVUeXBlOjpFcnJvciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7
IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBdWRpb0NhcHR1cmUsICJBdWRp
byBjYXB0dXJlIGlzIG5vdCBpbXBsZW1lbnRlZCJfcyB9KTsKICNlbmRpZgogfQpAQCAtMTM2LDMy
ICsxMTMsMzMgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVzdChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHIKIHZvaWQgU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OnN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQogewogICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50
SWRlbnRpZmllcik7Ci0gICAgaWYgKG1fcmVjb2duaXplciAmJiBtX3JlY29nbml6ZXItPmN1cnJl
bnRDbGllbnRJZGVudGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikgewotICAgICAgICBtX3Jl
Y29nbml6ZXItPnN0b3AoKTsKKworICAgIGlmIChtX3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVu
dGlmaWVyKSkgeworICAgICAgICBzZW5kVXBkYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmIChtX3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKSkKLSAgICAg
ICAgc2VuZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGU6OkVuZCk7CisgICAgaWYgKG1fcmVjb2duaXplciAmJiBtX3JlY29nbml6ZXIt
PmNsaWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlmaWVyKQorICAgICAgICBtX3JlY29n
bml6ZXItPnN0b3AoKTsKIH0KIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGll
bnRJZGVudGlmaWVyKQogewogICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50SWRlbnRpZmllcik7Ci0g
ICAgaWYgKG1fcmVjb2duaXplciAmJiBtX3JlY29nbml6ZXItPmN1cnJlbnRDbGllbnRJZGVudGlm
aWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikgewotICAgICAgICBtX3JlY29nbml6ZXItPmFib3J0
KCk7CisgICAgaWYgKG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpKSB7CisgICAg
ICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGVUeXBlOjpFbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1f
cmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpKQotICAgICAgICBzZW5kVXBkYXRlKGNs
aWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5k
KTsKKyAgICBpZiAobV9yZWNvZ25pemVyICYmIG1fcmVjb2duaXplci0+Y2xpZW50SWRlbnRpZmll
cigpID09IGNsaWVudElkZW50aWZpZXIpCisgICAgICAgIG1fcmVjb2duaXplci0+YWJvcnQoKTsK
IH0KIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aW52YWxpZGF0ZShXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZp
ZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJZGVudGlmaWVyKTsKICAgICBpZiAobV9y
ZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRlbnRpZmllcikpIHsKLSAgICAgICAgaWYgKG1fcmVjb2du
aXplciAmJiBtX3JlY29nbml6ZXItPmN1cnJlbnRDbGllbnRJZGVudGlmaWVyKCkgPT0gY2xpZW50
SWRlbnRpZmllcikKKyAgICAgICAgaWYgKG1fcmVjb2duaXplciAmJiBtX3JlY29nbml6ZXItPmNs
aWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlmaWVyKQogICAgICAgICAgICAgbV9yZWNv
Z25pemVyLT5hYm9ydCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCmluZGV4IDJmYzI0OGE4ZTEzYmM3NjY1NTQxNjAx
NzQ4NWU5NDFkYmVkY2VhMTcuLjMwMjE4ZWIyYzZmYWQ3MmI4NzdiNmNiZWFiNWQyNzZlNzI4ZmJm
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9u
U2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBy
ZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0Jik7Ci0gICAgdm9pZCBoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdCYpOworICAgIHZvaWQgaGFuZGxlUmVxdWVzdChVbmlxdWVSZWY8V2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0PiYmKTsKICAgICB2b2lkIHNlbmRVcGRhdGUoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkVycm9yPiA9IFdURjo6bnVsbG9wdCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uUmVzdWx0RGF0YT4+ID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lkIHNlbmRV
cGRhdGUoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKTsKIAo=
</data>
<flag name="commit-queue"
          id="437225"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419069</attachid>
            <date>2021-02-02 14:52:34 -0800</date>
            <delta_ts>2021-02-03 11:30:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219699-20210202145233.patch</filename>
            <type>text/plain</type>
            <size>20804</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzcwMDExZTZmMDJjMWI4
NTE3NDZjMjI1NTU3Zjk0ZDJlZmJkOWM5Yi4uYjc3ODRkZjRjZGE3ZGFlNGM3MDVjNTI1NGJmYTE2
MGZlNGEzZGEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTAyLTAyICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGEgU3BlZWNoUmVj
b2duaXplciBmb3IgZWFjaCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY5OQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzIzOTIwOTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTWFrZSBTcGVlY2hSZWNvZ25pemVyIHRha2UgdGhlIG93bmVyd2hpcCBvZiB0
aGUgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0IGl0J3MgYWJvdXQgdG8gaGFuZGxlLCBhbmQgbWFu
YWdlIGl0cyAKKyAgICAgICAgc3RhdGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OlNw
ZWVjaFJlY29nbml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6flNw
ZWVjaFJlY29nbml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6YWJv
cnQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcCk6CisgICAgICAg
IChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpjbGllbnRJZGVudGlmaWVyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0Q2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pemVyOjpzdG9wQ2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml6ZXI6OmFib3J0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXplcjo6c3RvcFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml6ZXI6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6
ZXI6OnJlc2V0UmVjb2duaXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml6ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6
OmN1cnJlbnRDbGllbnRJZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24pOiBEZWxldGVkLgorCiAyMDIx
LTAyLTAyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgU3Vw
cG9ydCBCaWdJbnQ2NEFycmF5L0JpZ1VpbnQ2NEFycmF5IGluIHN0cnVjdHVyZWQtY2xvbmluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA1YzliN2UxODI5YmRhYWI0ODU4OTQyMjdmOWRhYTkzZTNmNzJhNzIyLi4wNjAy
MTVjNjMzMDI1ZjlkZWRlZDdlMGUwYmE1ZjRkOTU4NmQ2NGVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIzIEBACisyMDIxLTAyLTAyICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAg
ICAgICAgQ3JlYXRlIGEgU3BlZWNoUmVjb2duaXplciBmb3IgZWFjaCBTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxOTY5OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzIzOTIwOTc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgdXNlZCB0aGUgc2FtZSBTcGVl
Y2hSZWNvZ25pemVyIGZvciBtdWx0aXBsZSByZXF1ZXN0cywgc28gd2UgaGFkIHRvIHJlc2V0IFNw
ZWVjaFJlY29nbml6ZXIgc3RhdGUgYmV0d2VlbgorICAgICAgICByZXF1ZXN0cywgd2hpY2ggbWFr
ZXMgdGhpbmdzIGNvbXBsaWNhdGVkIGFuZCBoYXJkIHRvIGRlYnVnIChsaWtlIG5lc3RlZCByZXNl
dCBjYWxscykuIE5vdyB3ZSBoYXZlIG9uZSBkZWRpY2F0ZWQKKyAgICAgICAgU3BlZWNoUmVjb2du
aXplciBmb3IgZWFjaCByZXF1ZXN0LgorCisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXI6OnJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVj
aFJlY29nbml0aW9uU2VydmVyOjpoYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcjo6YWJvcnQpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6aW52YWxpZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uU2VydmVyLmg6CisKIDIwMjEtMDItMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlY292ZXIgTWVkaWFTdHJlYW1UcmFjayBhdWRpbyByZW5kZXJpbmcg
ZnJvbSBHUFVQcm9jZXNzIGNyYXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml6ZXIuY3BwCmluZGV4IGNhZDQ4YTk3NDJiYjllMDE0MzRmYmE4NWRk
MGMxMGE5YzAxZmY0ODguLjAxZjIyZDFiYjk4NjE3YjRlODI2OGI0Mzg4ZGM3ZTlmMGY3ODNhYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6
ZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
U3BlZWNoUmVjb2duaXplci5oIgogCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCIKICNpbmNsdWRlIDx3dGYv
TWVkaWFUaW1lLmg+CiAKQEAgLTM1LDQ5ICszNiw2NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVNwZWVjaFJlY29nbml6ZXI6OlNwZWVjaFJlY29nbml6ZXIoRGVsZWdhdGVDYWxsYmFjayYm
IGNhbGxiYWNrKQotICAgIDogbV9kZWxlZ2F0ZUNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQor
U3BlZWNoUmVjb2duaXplcjo6U3BlZWNoUmVjb2duaXplcihEZWxlZ2F0ZUNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFVuaXF1ZVJlZjxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+JiYgcmVxdWVzdCkKKyAg
ICA6IG1fcmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKQogeworICAgIG1fZGVsZWdhdGVDYWxsYmFj
ayA9IFt0aGlzLCBkZWxlZ2F0ZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIHVw
ZGF0ZSkgeworICAgICAgICBBU1NFUlQoY2xpZW50SWRlbnRpZmllcigpID09IHVwZGF0ZS5jbGll
bnRJZGVudGlmaWVyKCkpOworICAgICAgICBkZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7CisKKyAg
ICAgICAgaWYgKHVwZGF0ZS50eXBlKCkgPT0gU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpF
cnJvcikKKyAgICAgICAgICAgIGFib3J0KCk7CisgICAgICAgIGlmICh1cGRhdGUudHlwZSgpID09
ICBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkKKyAgICAgICAgICAgIG1fc3RhdGUg
PSBTdGF0ZTo6SW5hY3RpdmU7CisgICAgfTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpy
ZXNldCgpCitTcGVlY2hSZWNvZ25pemVyOjp+U3BlZWNoUmVjb2duaXplcigpCiB7Ci0gICAgaWYg
KCFtX2NsaWVudElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0b3BDYXB0dXJl
KCk7Ci0gICAgcmVzZXRSZWNvZ25pdGlvbigpOwotICAgIG1fY2xpZW50SWRlbnRpZmllciA9IFdU
Rjo6bnVsbG9wdDsKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWJvcnRpbmcgfHwgbV9zdGF0
ZSA9PSBTdGF0ZTo6U3RvcHBpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmluZykKKyAgICAg
ICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoY2xp
ZW50SWRlbnRpZmllcigpLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOwogfQog
Ci12b2lkIFNwZWVjaFJlY29nbml6ZXI6OmFib3J0KCkKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6
YWJvcnQoT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJiBlcnJvcikKIHsKLSAgICBB
U1NFUlQobV9jbGllbnRJZGVudGlmaWVyKTsKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWJv
cnRpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6SW5hY3RpdmUpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX3N0YXRlID0gU3RhdGU6OkFib3J0aW5nOworCisgICAgaWYgKGVycm9yKQorICAgICAgICBt
X2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKGNs
aWVudElkZW50aWZpZXIoKSwgKmVycm9yKSk7CisKICAgICBzdG9wQ2FwdHVyZSgpOwogICAgIGFi
b3J0UmVjb2duaXRpb24oKTsKIH0KIAogdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wKCkKIHsK
LSAgICBBU1NFUlQobV9jbGllbnRJZGVudGlmaWVyKTsKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0
ZTo6QWJvcnRpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6SW5hY3RpdmUpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX3N0YXRlID0gU3RhdGU6OlN0b3BwaW5nOworCiAgICAgc3RvcENhcHR1cmUoKTsK
ICAgICBzdG9wUmVjb2duaXRpb24oKTsKIH0KIAorU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciBTcGVlY2hSZWNvZ25pemVyOjpjbGllbnRJZGVudGlmaWVyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9yZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCk7Cit9CisKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmll
ciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlLCBib29sIG1vY2tTcGVlY2hSZWNv
Z25pdGlvbkVuYWJsZWQsIGNvbnN0IFN0cmluZyYgbG9jYWxlSWRlbnRpZmllciwgYm9vbCBjb250
aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpCit2
b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNv
dXJjZSwgYm9vbCBtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkKQogewotICAgIEFTU0VSVCgh
bV9jbGllbnRJZGVudGlmaWVyKTsKLSAgICBtX2NsaWVudElkZW50aWZpZXIgPSBjbGllbnRJZGVu
dGlmaWVyOwotICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6
Y3JlYXRlKCptX2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6
U3RhcnQpKTsKLQotICAgIGlmICghc3RhcnRSZWNvZ25pdGlvbihtb2NrU3BlZWNoUmVjb2duaXRp
b25FbmFibGVkLCBjbGllbnRJZGVudGlmaWVyLCBsb2NhbGVJZGVudGlmaWVyLCBjb250aW51b3Vz
LCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzKSkgewotICAgICAgICBhdXRvIGVycm9y
ID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uRXJyb3JUeXBlOjpTZXJ2aWNlTm90QWxsb3dlZCwgIkZhaWxlZCB0byBzdGFydCByZWNv
Z25pdGlvbiJfcyB9OwotICAgICAgICBtX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKGNsaWVudElkZW50aWZpZXIsIFdURk1vdmUo
ZXJyb3IpKSk7CisgICAgaWYgKCFzdGFydFJlY29nbml0aW9uKG1vY2tTcGVlY2hSZWNvZ25pdGlv
bkVuYWJsZWQsIGNsaWVudElkZW50aWZpZXIoKSwgbV9yZXF1ZXN0LT5sYW5nKCksIG1fcmVxdWVz
dC0+Y29udGludW91cygpLCBtX3JlcXVlc3QtPmludGVyaW1SZXN1bHRzKCksIG1fcmVxdWVzdC0+
bWF4QWx0ZXJuYXRpdmVzKCkpKSB7CisgICAgICAgIGF1dG8gZXJyb3IgPSBTcGVlY2hSZWNvZ25p
dGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OlNlcnZpY2VOb3RBbGxvd2Vk
LCAiRmFpbGVkIHRvIHN0YXJ0IHJlY29nbml0aW9uIl9zIH07CisgICAgICAgIG1fZGVsZWdhdGVD
YWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRlbnRp
ZmllcigpLCBXVEZNb3ZlKGVycm9yKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAg
bV9zdGF0ZSA9IFN0YXRlOjpSdW5uaW5nOworICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZpZXIoKSwgU3BlZWNoUmVjb2du
aXRpb25VcGRhdGVUeXBlOjpTdGFydCkpOwogICAgIHN0YXJ0Q2FwdHVyZShXVEZNb3ZlKHNvdXJj
ZSkpOwogfQogCkBAIC04OCwxNSArMTA2LDEyIEBAIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3Rh
cnRDYXB0dXJlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKICAgICAgICAgICAg
IHdlYWtUaGlzLT5kYXRhQ2FwdHVyZWQodGltZSwgZGF0YSwgZGVzY3JpcHRpb24sIHNhbXBsZUNv
dW50KTsKICAgICB9OwogCi0gICAgYXV0byBzdGF0ZVVwZGF0ZUNhbGxiYWNrID0gW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IGF1dG8mIHVwZGF0ZSkgewotICAgICAg
ICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEFTU0VSVCht
X2NsaWVudElkZW50aWZpZXIgJiYgbV9jbGllbnRJZGVudGlmaWVyLnZhbHVlKCkgPT0gdXBkYXRl
LmNsaWVudElkZW50aWZpZXIoKSk7Ci0gICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUp
OworICAgIGF1dG8gc3RhdGVVcGRhdGVDYWxsYmFjayA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpXShjb25zdCBhdXRvJiB1cGRhdGUpIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAg
ICAgICAgICAgd2Vha1RoaXMtPm1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOwogICAgIH07CiAK
LSAgICBtX3NvdXJjZSA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNl
PigqbV9jbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGFDYWxsYmFjayksIFdURk1vdmUoc3Rh
dGVVcGRhdGVDYWxsYmFjayksIFdURk1vdmUoc291cmNlKSk7CisgICAgbV9zb3VyY2UgPSBtYWtl
VW5pcXVlPFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZT4oY2xpZW50SWRlbnRpZmllcigp
LCBXVEZNb3ZlKGRhdGFDYWxsYmFjayksIFdURk1vdmUoc3RhdGVVcGRhdGVDYWxsYmFjayksIFdU
Rk1vdmUoc291cmNlKSk7CiB9CiAKICNlbmRpZgpAQCAtMTA3LDcgKzEyMiw3IEBAIHZvaWQgU3Bl
ZWNoUmVjb2duaXplcjo6c3RvcENhcHR1cmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Nv
dXJjZSA9IG51bGxwdHI7Ci0gICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRh
dGVUeXBlOjpBdWRpb0VuZCkpOworICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZpZXIoKSwgU3BlZWNoUmVjb2duaXRpb25V
cGRhdGVUeXBlOjpBdWRpb0VuZCkpOwogfQogCiAjaWYgIUhBVkUoU1BFRUNIUkVDT0dOSVpFUikK
QEAgLTExOCwyNyArMTMzLDE3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6ZGF0YUNhcHR1cmVk
KGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwKIAogYm9vbCBTcGVl
Y2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKGJvb2wsIFNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wsIHVpbnQ2
NF90KQogewotICAgIG1faXNSZWNvZ25pemluZyA9IHRydWU7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25pdGlvbigpCiB7Ci0gICAgbV9p
c1JlY29nbml6aW5nID0gZmFsc2U7Ci0gICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRp
b25VcGRhdGVUeXBlOjpFbmQpKTsKKyAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVudGlmaWVyKCksIFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlVHlwZTo6RW5kKSk7CiB9CiAKIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcFJlY29n
bml0aW9uKCkKIHsKLSAgICBtX2lzUmVjb2duaXppbmcgPSBmYWxzZTsKLSAgICBtX2RlbGVnYXRl
Q2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlm
aWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOwotfQotCi12b2lkIFNwZWVj
aFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24oKQotewotICAgIGlmICghbV9pc1JlY29nbml6
aW5nKQotICAgICAgICByZXR1cm47Ci0gICAgYWJvcnRSZWNvZ25pdGlvbigpOworICAgIG1fZGVs
ZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVudElkZW50
aWZpZXIoKSwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKIH0KIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
emVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgK
aW5kZXggMTYwMmFmNzY2OWVjOWJkYjk1NDQxYzYyMzAyMDI0MWQxYzM0NDJlMi4uNDUwZDllYzUz
MDYwMWEyZGFiMTg1ZDczMzhmNmUyNDQxNzA5NTQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaApAQCAtMjcsNiArMjcsOCBAQAogCiAj
aW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAiU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNw
ZWVjaFJlY29nbml0aW9uRXJyb3IuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKICNp
ZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAt
MzUsMjcgKzM3LDMyIEBAIE9CSkNfQ0xBU1MgV2ViU3BlZWNoUmVjb2duaXplclRhc2s7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OwogY2xh
c3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU7CiAKIGNsYXNzIFNwZWVjaFJlY29nbml6ZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXplcj4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHVzaW5nIERlbGVnYXRlQ2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik+OwotICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNwZWVjaFJlY29nbml6ZXIoRGVsZWdhdGVDYWxsYmFjayYmKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB+U3BlZWNoUmVjb2duaXplcigpID0gZGVmYXVsdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBTcGVlY2hSZWNvZ25pemVyKERlbGVnYXRlQ2FsbGJhY2smJiwg
VW5pcXVlUmVmPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4mJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgflNwZWVjaFJlY29nbml6ZXIoKTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnRJZGVudGlmaWVyLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiwgYm9vbCBtb2NrU3BlZWNo
UmVjb2duaXRpb25FbmFibGVkLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wg
Y29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVz
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0KFJlZjxSZWFsdGltZU1lZGlhU291cmNl
PiYmLCBib29sIG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQpOwogI2VuZGlmCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJvcnQo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFib3J0KE9wdGlvbmFsPFNwZWVjaFJlY29nbml0
aW9uRXJyb3I+JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Rv
cCgpOwogCi0gICAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllcj4gY3VycmVudENsaWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dElkZW50aWZpZXI7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIoKSBjb25zdDsKICAgICBTcGVl
Y2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UqIHNvdXJjZSgpIHsgcmV0dXJuIG1fc291cmNlLmdl
dCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzdG9wSW50ZXJuYWwoKTsKKyAgICBlbnVtIGNs
YXNzIFN0YXRlIHsKKyAgICAgICAgSW5hY3RpdmUsCisgICAgICAgIFJ1bm5pbmcsCisgICAgICAg
IFN0b3BwaW5nLAorICAgICAgICBBYm9ydGluZworICAgIH07CiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogICAgIHZvaWQgc3RhcnRDYXB0dXJlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYm
KTsKQEAgLTY1LDE3ICs3MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgc3RhcnRSZWNvZ25pdGlv
bihib29sIG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQsIFNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9jYWxlSWRlbnRpZmllciwg
Ym9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBhbHRlcm5hdGl2
ZXMpOwogICAgIHZvaWQgYWJvcnRSZWNvZ25pdGlvbigpOwogICAgIHZvaWQgc3RvcFJlY29nbml0
aW9uKCk7Ci0gICAgdm9pZCByZXNldFJlY29nbml0aW9uKCk7CiAKLSAgICBPcHRpb25hbDxTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyPiBtX2NsaWVudElkZW50aWZp
ZXI7CiAgICAgRGVsZWdhdGVDYWxsYmFjayBtX2RlbGVnYXRlQ2FsbGJhY2s7CisgICAgVW5pcXVl
UmVmPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gbV9yZXF1ZXN0OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2U+IG1fc291cmNlOworICAgIFN0YXRl
IG1fc3RhdGUgeyBTdGF0ZTo6SW5hY3RpdmUgfTsKIAogI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpF
UikKICAgICBSZXRhaW5QdHI8V2ViU3BlZWNoUmVjb2duaXplclRhc2s+IG1fdGFzazsKLSNlbHNl
Ci0gICAgLy8gRm9yIHRlc3RpbmcuCi0gICAgYm9vbCBtX2lzUmVjb2duaXppbmcgeyBmYWxzZSB9
OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0KaW5kZXggYmQyZmZkNGI1Y2Yz
YTliMGMwYzZhMTg2YmQ4N2FhZTM1MDFhNjk3Ni4uN2Q1YmM4ZmJhZDk2OWNjY2Q1MzFkMGQ5OWZh
NzIwNTgxNWJjODQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
Y29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQpAQCAtNDUsMTEgKzQ1LDkg
QEAgdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpkYXRhQ2FwdHVyZWQoY29uc3QgTWVkaWFUaW1lJiB0
aW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGEKIGJvb2wgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRS
ZWNvZ25pdGlvbihib29sIG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQsIFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMs
IHVpbnQ2NF90IGFsdGVybmF0aXZlcykKIHsKICAgICBhdXRvIHRhc2tDbGFzcyA9IG1vY2tTcGVl
Y2hSZWNvZ25pdGlvbkVuYWJsZWQgPyBbV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrIGNsYXNz
XSA6IFtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBjbGFzc107Ci0gICAgbV90YXNrID0gYWRvcHRO
UyhbW3Rhc2tDbGFzcyBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOmlkZW50aWZpZXIgbG9jYWxl
OmxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczpjb250aW51b3VzIHJlcG9y
dEludGVyaW1SZXN1bHRzOmludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczphbHRlcm5hdGl2
ZXMgZGVsZWdhdGVDYWxsYmFjazpbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0o
Y29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmIHVwZGF0ZSkgewotICAgICAg
ICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fZGVsZWdh
dGVDYWxsYmFjayh1cGRhdGUpOworICAgIG1fdGFzayA9IGFkb3B0TlMoW1t0YXNrQ2xhc3MgYWxs
b2NdIGluaXRXaXRoSWRlbnRpZmllcjppZGVudGlmaWVyIGxvY2FsZTpsb2NhbGVJZGVudGlmaWVy
IGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6Y29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czpp
bnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6YWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJh
Y2s6W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlJiB1cGRhdGUpIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAg
ICAgICAgd2Vha1RoaXMtPm1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOwogICAgIH1dKTsKIAog
ICAgIHJldHVybiAhIW1fdGFzazsKQEAgLTY3LDE1ICs2NSw2IEBAIHZvaWQgU3BlZWNoUmVjb2du
aXplcjo6YWJvcnRSZWNvZ25pdGlvbigpCiAgICAgW21fdGFzayBhYm9ydF07CiB9CiAKLXZvaWQg
U3BlZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlvbigpCi17Ci0gICAgaWYgKCFtX3Rhc2sp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gdGFzayA9IHN0ZDo6ZXhjaGFuZ2UobV90YXNr
LCBudWxscHRyKTsKLSAgICBbdGFzayBhYm9ydF07Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAppbmRleCA5Zjk2NzRh
ZWI1ZWRlZTM4NjM3OTNhNjAyYTZjNmEwZWZlMzk3ZjVjLi4zODZkYjliMDRmZWZjNWNhOGE1NDNj
NjQwOGExOWFhYWFhNzU5NWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCkBAIC03MSw2NCArNzEsNDEgQEAgdm9pZCBTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KFdlYkNvcmU6
OlNwZWVjaFJlY29nbmkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIGlkZW50
aWZpZXIgPSB3ZWFrUmVxdWVzdC0+Y2xpZW50SWRlbnRpZmllcigpOworICAgICAgICBhdXRvIHJl
cXVlc3QgPSBtX3JlcXVlc3RzLnRha2UoaWRlbnRpZmllcik7CiAgICAgICAgIGlmIChlcnJvcikg
ewotICAgICAgICAgICAgbV9yZXF1ZXN0cy5yZW1vdmUoaWRlbnRpZmllcik7CiAgICAgICAgICAg
ICBzZW5kVXBkYXRlKGlkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZTo6RXJyb3IsIFdURk1vdmUoZXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGhhbmRsZVJlcXVlc3QoKndlYWtSZXF1ZXN0KTsKKyAgICAgICAgQVNT
RVJUKHJlcXVlc3QpOworICAgICAgICBoYW5kbGVSZXF1ZXN0KG1ha2VVbmlxdWVSZWZGcm9tTm9u
TnVsbFVuaXF1ZVB0cihXVEZNb3ZlKHJlcXVlc3QpKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFu
ZGxlUmVxdWVzdChVbmlxdWVSZWY8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiYm
IHJlcXVlc3QpCiB7Ci0gICAgaWYgKCFtX3JlY29nbml6ZXIpIHsKLSAgICAgICAgbV9yZWNvZ25p
emVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyPihbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oYXV0byYgdXBkYXRlKSB7Ci0gICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgYXV0byBj
bGllbnRJZGVudGlmaWVyID0gdXBkYXRlLmNsaWVudElkZW50aWZpZXIoKTsKLSAgICAgICAgICAg
IGlmICghbV9yZXF1ZXN0cy5jb250YWlucyhjbGllbnRJZGVudGlmaWVyKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIHNlbmRVcGRhdGUodXBkYXRlKTsKLQotICAgICAg
ICAgICAgYXV0byB0eXBlID0gdXBkYXRlLnR5cGUoKTsKLSAgICAgICAgICAgIGlmICh0eXBlICE9
IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IgJiYgdHlwZSAhPSBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgICAgIGlmIChtX2lzUmVzZXR0aW5nKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIG1faXNSZXNldHRpbmcgPSB0cnVlOwotCi0gICAgICAg
ICAgICBtX3JlY29nbml6ZXItPnJlc2V0KCk7Ci0gICAgICAgICAgICBtX3JlcXVlc3RzLnJlbW92
ZShjbGllbnRJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIG1faXNSZXNldHRpbmcgPSBmYWxzZTsK
LSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgaWYgKGF1dG8gY3VycmVudENsaWVudElkZW50aWZp
ZXIgPSBtX3JlY29nbml6ZXItPmN1cnJlbnRDbGllbnRJZGVudGlmaWVyKCkpIHsKKyAgICBpZiAo
bV9yZWNvZ25pemVyKSB7CiAgICAgICAgIGF1dG8gZXJyb3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkFib3J0
ZWQsICJBbm90aGVyIHJlcXVlc3QgaXMgc3RhcnRlZCJfcyB9OwotICAgICAgICBzZW5kVXBkYXRl
KCpjdXJyZW50Q2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRh
dGVUeXBlOjpFcnJvciwgZXJyb3IpOwotICAgICAgICBtX3JlY29nbml6ZXItPnJlc2V0KCk7Cisg
ICAgICAgIG1fcmVjb2duaXplci0+YWJvcnQoZXJyb3IpOwogICAgIH0KIAotICAgIGF1dG8gY2xp
ZW50SWRlbnRpZmllciA9IHJlcXVlc3QuY2xpZW50SWRlbnRpZmllcigpOworICAgIGF1dG8gY2xp
ZW50SWRlbnRpZmllciA9IHJlcXVlc3QtPmNsaWVudElkZW50aWZpZXIoKTsKKyAgICBtX3JlY29n
bml6ZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI+KFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpXShhdXRvJiB1cGRhdGUpIHsKKyAgICAgICAgaWYgKHdlYWtUaGlz
KQorICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmRVcGRhdGUodXBkYXRlKTsKKyAgICB9LCBXVEZN
b3ZlKHJlcXVlc3QpKTsKKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgYXV0byBzb3Vy
Y2VPckVycm9yID0gbV9yZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24oKTsKICAgICBp
ZiAoIXNvdXJjZU9yRXJyb3IpIHsKLSAgICAgICAgbV9yZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRl
bnRpZmllcik7CiAgICAgICAgIHNlbmRVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25V
cGRhdGU6OmNyZWF0ZUVycm9yKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QXVkaW9D
YXB0dXJlLCBzb3VyY2VPckVycm9yLmVycm9yTWVzc2FnZSB9KSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBXZWJQcm9jZXNzUHJveHk6Om11dGVDYXB0dXJlSW5QYWdlc0V4Y2VwdCht
X2lkZW50aWZpZXIpOwotCiAgICAgYm9vbCBtb2NrRGV2aWNlQ2FwdHVyZXNFbmFibGVkID0gbV9j
aGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCgpOwotICAgIG1fcmVjb2duaXplci0+
c3RhcnQoY2xpZW50SWRlbnRpZmllciwgc291cmNlT3JFcnJvci5zb3VyY2UoKSwgbW9ja0Rldmlj
ZUNhcHR1cmVzRW5hYmxlZCwgcmVxdWVzdC5sYW5nKCksIHJlcXVlc3QuY29udGludW91cygpLCBy
ZXF1ZXN0LmludGVyaW1SZXN1bHRzKCksIHJlcXVlc3QubWF4QWx0ZXJuYXRpdmVzKCkpOworICAg
IG1fcmVjb2duaXplci0+c3RhcnQoc291cmNlT3JFcnJvci5zb3VyY2UoKSwgbW9ja0RldmljZUNh
cHR1cmVzRW5hYmxlZCk7CiAjZWxzZQotICAgIG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50
aWZpZXIpOwogICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25F
cnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBdWRpb0NhcHR1cmUs
ICJBdWRpbyBjYXB0dXJlIGlzIG5vdCBpbXBsZW1lbnRlZCJfcyB9KTsKICNlbmRpZgogfQpAQCAt
MTM2LDMyICsxMTMsMzMgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVx
dWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHIKIHZvaWQgU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXI6OnN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQogewogICAgIE1FU1NBR0VfQ0hFQ0so
Y2xpZW50SWRlbnRpZmllcik7Ci0gICAgaWYgKG1fcmVjb2duaXplciAmJiBtX3JlY29nbml6ZXIt
PmN1cnJlbnRDbGllbnRJZGVudGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikgewotICAgICAg
ICBtX3JlY29nbml6ZXItPnN0b3AoKTsKKworICAgIGlmIChtX3JlcXVlc3RzLnJlbW92ZShjbGll
bnRJZGVudGlmaWVyKSkgeworICAgICAgICBzZW5kVXBkYXRlKGNsaWVudElkZW50aWZpZXIsIFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGlmIChtX3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKSkK
LSAgICAgICAgc2VuZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7CisgICAgaWYgKG1fcmVjb2duaXplciAmJiBtX3JlY29n
bml6ZXItPmNsaWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlmaWVyKQorICAgICAgICBt
X3JlY29nbml6ZXItPnN0b3AoKTsKIH0KIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6
YWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciBjbGllbnRJZGVudGlmaWVyKQogewogICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50SWRlbnRpZmll
cik7Ci0gICAgaWYgKG1fcmVjb2duaXplciAmJiBtX3JlY29nbml6ZXItPmN1cnJlbnRDbGllbnRJ
ZGVudGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikgewotICAgICAgICBtX3JlY29nbml6ZXIt
PmFib3J0KCk7CisgICAgaWYgKG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpKSB7
CisgICAgICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpKQotICAgICAgICBzZW5kVXBk
YXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlw
ZTo6RW5kKTsKKyAgICBpZiAobV9yZWNvZ25pemVyICYmIG1fcmVjb2duaXplci0+Y2xpZW50SWRl
bnRpZmllcigpID09IGNsaWVudElkZW50aWZpZXIpCisgICAgICAgIG1fcmVjb2duaXplci0+YWJv
cnQoKTsKIH0KIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aW52YWxpZGF0ZShXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElk
ZW50aWZpZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJZGVudGlmaWVyKTsKICAgICBp
ZiAobV9yZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRlbnRpZmllcikpIHsKLSAgICAgICAgaWYgKG1f
cmVjb2duaXplciAmJiBtX3JlY29nbml6ZXItPmN1cnJlbnRDbGllbnRJZGVudGlmaWVyKCkgPT0g
Y2xpZW50SWRlbnRpZmllcikKKyAgICAgICAgaWYgKG1fcmVjb2duaXplciAmJiBtX3JlY29nbml6
ZXItPmNsaWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlmaWVyKQogICAgICAgICAgICAg
bV9yZWNvZ25pemVyLT5hYm9ydCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCmluZGV4IDJmYzI0OGE4ZTEzYmM3NjY1
NTQxNjAxNzQ4NWU5NDFkYmVkY2VhMTcuLjMwMjE4ZWIyYzZmYWQ3MmI4NzdiNmNiZWFiNWQyNzZl
NzI4ZmJmYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
dm9pZCByZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0Jik7Ci0gICAgdm9pZCBoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uUmVxdWVzdCYpOworICAgIHZvaWQgaGFuZGxlUmVxdWVzdChVbmlxdWVSZWY8V2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiYmKTsKICAgICB2b2lkIHNlbmRVcGRhdGUoV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkVycm9yPiA9IFdURjo6bnVsbG9wdCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+ID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lk
IHNlbmRVcGRhdGUoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419161</attachid>
            <date>2021-02-03 11:30:31 -0800</date>
            <delta_ts>2021-02-03 11:44:59 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-219699-20210203113031.patch</filename>
            <type>text/plain</type>
            <size>21022</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjRjZTJmNzdhZTU3MDQ1
YTAxMjUxMzAwNjFlYjE0ZDA5MWQxNzk3Ny4uNmJjOTg3NWY4YjY4MWIwMWVlZmUwMGQwZTcxNzhl
MjU5MGUxMWFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTAyLTAzICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGEgU3BlZWNoUmVj
b2duaXplciBmb3IgZWFjaCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY5OQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzIzOTIwOTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4K
KworICAgICAgICBNYWtlIFNwZWVjaFJlY29nbml6ZXIgdGFrZSB0aGUgb3duZXJ3aGlwIG9mIHRo
ZSBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QgaXQncyBhYm91dCB0byBoYW5kbGUsIGFuZCBtYW5h
Z2UgaXRzIAorICAgICAgICBzdGF0ZS4KKworICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6U3Bl
ZWNoUmVjb2duaXplcik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjp+U3Bl
ZWNoUmVjb2duaXplcik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjphYm9y
dCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdG9wKToKKyAgICAgICAg
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OmNsaWVudElkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnRDYXB0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml6ZXI6OnN0b3BDYXB0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml6ZXI6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXplcjo6YWJvcnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pemVyOjpzdG9wUmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXplcjo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXpl
cjo6cmVzZXRSZWNvZ25pdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXplci5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6
c2V0SW5hY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6Y3VycmVu
dENsaWVudElkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvc3Bl
ZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml6ZXI6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlvbik6IERlbGV0ZWQuCisKIDIwMjEtMDItMDMg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ugc3VyZSBH
UFVQcm9jZXNzIE1lZGlhUmVjb3JkZXIgaGFuZGxlcyBjb3JyZWN0bHkgbXV0ZWQgdHJhY2tzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDk1ZDlhMmE5MmYzMDFmYTRmNDE3MmEwYjk2ZjBkNjBlNGZhNGI1Y2YuLjFhZWIw
YmRkMjIzNjU0NjJmNjRhMDk2MWY0M2RjOGNjYjViNTIwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjMgQEAKKzIwMjEtMDItMDMgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBlLmNvbT4KKworICAg
ICAgICBDcmVhdGUgYSBTcGVlY2hSZWNvZ25pemVyIGZvciBlYWNoIFNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE5Njk5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM5MjA5Nz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFdlIHVzZWQgdGhlIHNhbWUgU3BlZWNo
UmVjb2duaXplciBmb3IgbXVsdGlwbGUgcmVxdWVzdHMsIHNvIHdlIGhhZCB0byByZXNldCBTcGVl
Y2hSZWNvZ25pemVyIHN0YXRlIGJldHdlZW4KKyAgICAgICAgcmVxdWVzdHMsIHdoaWNoIG1ha2Vz
IHRoaW5ncyBjb21wbGljYXRlZCBhbmQgaGFyZCB0byBkZWJ1ZyAobGlrZSBuZXN0ZWQgcmVzZXQg
Y2FsbHMpLiBOb3cgd2UgaGF2ZSBvbmUgZGVkaWNhdGVkCisgICAgICAgIFNwZWVjaFJlY29nbml6
ZXIgZm9yIGVhY2ggcmVxdWVzdC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVy
OjpyZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVj
aFJlY29nbml0aW9uU2VydmVyOjpzdG9wKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXI6OmFib3J0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI6OmludmFsaWRhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5oOgorCiAyMDIxLTAyLTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIHN1cmUgR1BVUHJvY2VzcyBNZWRpYVJlY29yZGVyIGhhbmRsZXMg
Y29ycmVjdGx5IG11dGVkIHRyYWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcAppbmRleCBjYWQ0OGE5NzQyYmI5ZTAxNDM0ZmJhODVk
ZDBjMTBhOWMwMWZmNDg4Li5jM2M5NDlkN2RiMGU0NWU3MTU5ZTNhYjA2OTNiOTBkNGE0YjVjN2Rm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
emVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
emVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlNwZWVjaFJlY29nbml6ZXIuaCIKIAorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dC5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgiCiAjaW5jbHVkZSA8d3Rm
L01lZGlhVGltZS5oPgogCkBAIC0zNSw0OSArMzYsNjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1TcGVlY2hSZWNvZ25pemVyOjpTcGVlY2hSZWNvZ25pemVyKERlbGVnYXRlQ2FsbGJhY2sm
JiBjYWxsYmFjaykKLSAgICA6IG1fZGVsZWdhdGVDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkK
K1NwZWVjaFJlY29nbml6ZXI6OlNwZWVjaFJlY29nbml6ZXIoRGVsZWdhdGVDYWxsYmFjayYmIGNh
bGxiYWNrLCBVbmlxdWVSZWY8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiYmIHJlcXVlc3QpCisg
ICAgOiBtX3JlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSkKIHsKKyAgICBtX2RlbGVnYXRlQ2FsbGJh
Y2sgPSBbdGhpcywgZGVsZWdhdGVDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiB1
cGRhdGUpIHsKKyAgICAgICAgQVNTRVJUKGNsaWVudElkZW50aWZpZXIoKSA9PSB1cGRhdGUuY2xp
ZW50SWRlbnRpZmllcigpKTsKKyAgICAgICAgZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOworICAg
IH07CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXplcjo6cmVzZXQoKQorU3BlZWNoUmVjb2duaXpl
cjo6flNwZWVjaFJlY29nbml6ZXIoKQogewotICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBzdG9wQ2FwdHVyZSgpOwotICAgIHJlc2V0UmVjb2duaXRp
b24oKTsKLSAgICBtX2NsaWVudElkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OkFib3J0aW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OlN0b3BwaW5nIHx8
IG1fc3RhdGUgPT0gU3RhdGU6OlJ1bm5pbmcpCisgICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayhT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZpZXIoKSwgU3BlZWNo
UmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVy
OjphYm9ydCgpCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmFib3J0KE9wdGlvbmFsPFNwZWVjaFJl
Y29nbml0aW9uRXJyb3I+JiYgZXJyb3IpCiB7Ci0gICAgQVNTRVJUKG1fY2xpZW50SWRlbnRpZmll
cik7CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFib3J0aW5nIHx8IG1fc3RhdGUgPT0gU3Rh
dGU6OkluYWN0aXZlKQorICAgICAgICByZXR1cm47CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpBYm9y
dGluZzsKKworICAgIGlmIChlcnJvcikKKyAgICAgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihjbGllbnRJZGVudGlmaWVyKCksICplcnJv
cikpOworCiAgICAgc3RvcENhcHR1cmUoKTsKICAgICBhYm9ydFJlY29nbml0aW9uKCk7CiB9CiAK
IHZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcCgpCiB7Ci0gICAgQVNTRVJUKG1fY2xpZW50SWRl
bnRpZmllcik7CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFib3J0aW5nIHx8IG1fc3RhdGUg
PT0gU3RhdGU6OkluYWN0aXZlKQorICAgICAgICByZXR1cm47CisgICAgbV9zdGF0ZSA9IFN0YXRl
OjpTdG9wcGluZzsKKwogICAgIHN0b3BDYXB0dXJlKCk7CiAgICAgc3RvcFJlY29nbml0aW9uKCk7
CiB9CiAKK1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgU3BlZWNo
UmVjb2duaXplcjo6Y2xpZW50SWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVx
dWVzdC0+Y2xpZW50SWRlbnRpZmllcigpOworfQorCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFJlZjxSZWFsdGltZU1lZGlhU291
cmNlPiYmIHNvdXJjZSwgYm9vbCBtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkLCBjb25zdCBT
dHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVz
dWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKQordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpz
dGFydChSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3VyY2UsIGJvb2wgbW9ja1NwZWVjaFJl
Y29nbml0aW9uRW5hYmxlZCkKIHsKLSAgICBBU1NFUlQoIW1fY2xpZW50SWRlbnRpZmllcik7Ci0g
ICAgbV9jbGllbnRJZGVudGlmaWVyID0gY2xpZW50SWRlbnRpZmllcjsKLSAgICBtX2RlbGVnYXRl
Q2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlm
aWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlN0YXJ0KSk7Ci0KLSAgICBpZiAoIXN0
YXJ0UmVjb2duaXRpb24obW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCwgY2xpZW50SWRlbnRp
ZmllciwgbG9jYWxlSWRlbnRpZmllciwgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFs
dGVybmF0aXZlcykpIHsKLSAgICAgICAgYXV0byBlcnJvciA9IFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6U2Vydmlj
ZU5vdEFsbG93ZWQsICJGYWlsZWQgdG8gc3RhcnQgcmVjb2duaXRpb24iX3MgfTsKLSAgICAgICAg
bV9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVh
dGVFcnJvcihjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGVycm9yKSkpOworICAgIGlmICghc3Rh
cnRSZWNvZ25pdGlvbihtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkLCBjbGllbnRJZGVudGlm
aWVyKCksIG1fcmVxdWVzdC0+bGFuZygpLCBtX3JlcXVlc3QtPmNvbnRpbnVvdXMoKSwgbV9yZXF1
ZXN0LT5pbnRlcmltUmVzdWx0cygpLCBtX3JlcXVlc3QtPm1heEFsdGVybmF0aXZlcygpKSkgewor
ICAgICAgICBhdXRvIGVycm9yID0gU3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNwZWVjaFJlY29n
bml0aW9uRXJyb3JUeXBlOjpTZXJ2aWNlTm90QWxsb3dlZCwgIkZhaWxlZCB0byBzdGFydCByZWNv
Z25pdGlvbiJfcyB9OworICAgICAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRp
b25VcGRhdGU6OmNyZWF0ZUVycm9yKGNsaWVudElkZW50aWZpZXIoKSwgV1RGTW92ZShlcnJvcikp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIG1fc3RhdGUgPSBTdGF0ZTo6UnVubmlu
ZzsKKyAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0
ZShjbGllbnRJZGVudGlmaWVyKCksIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3RhcnQp
KTsKICAgICBzdGFydENhcHR1cmUoV1RGTW92ZShzb3VyY2UpKTsKIH0KIApAQCAtODgsMTUgKzEw
MSwxMiBAQCB2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0Q2FwdHVyZShSZWY8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4mJiBzb3VyY2UpCiAgICAgICAgICAgICB3ZWFrVGhpcy0+ZGF0YUNhcHR1cmVk
KHRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7CiAgICAgfTsKIAotICAgIGF1
dG8gc3RhdGVVcGRhdGVDYWxsYmFjayA9IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpXShjb25zdCBhdXRvJiB1cGRhdGUpIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBBU1NFUlQobV9jbGllbnRJZGVudGlmaWVyICYmIG1f
Y2xpZW50SWRlbnRpZmllci52YWx1ZSgpID09IHVwZGF0ZS5jbGllbnRJZGVudGlmaWVyKCkpOwot
ICAgICAgICBtX2RlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKKyAgICBhdXRvIHN0YXRlVXBkYXRl
Q2FsbGJhY2sgPSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oY29uc3QgYXV0byYgdXBk
YXRlKSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2Rl
bGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKICAgICB9OwogCi0gICAgbV9zb3VyY2UgPSBtYWtlVW5p
cXVlPFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZT4oKm1fY2xpZW50SWRlbnRpZmllciwg
V1RGTW92ZShkYXRhQ2FsbGJhY2spLCBXVEZNb3ZlKHN0YXRlVXBkYXRlQ2FsbGJhY2spLCBXVEZN
b3ZlKHNvdXJjZSkpOworICAgIG1fc291cmNlID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlv
bkNhcHR1cmVTb3VyY2U+KGNsaWVudElkZW50aWZpZXIoKSwgV1RGTW92ZShkYXRhQ2FsbGJhY2sp
LCBXVEZNb3ZlKHN0YXRlVXBkYXRlQ2FsbGJhY2spLCBXVEZNb3ZlKHNvdXJjZSkpOwogfQogCiAj
ZW5kaWYKQEAgLTEwNyw3ICsxMTcsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0b3BDYXB0
dXJlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zb3VyY2UgPSBudWxscHRyOwotICAgIG1f
ZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKCptX2NsaWVu
dElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6QXVkaW9FbmQpKTsKKyAg
ICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGll
bnRJZGVudGlmaWVyKCksIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6QXVkaW9FbmQpKTsK
IH0KIAogI2lmICFIQVZFKFNQRUVDSFJFQ09HTklaRVIpCkBAIC0xMTgsMjcgKzEyOCwxNyBAQCB2
b2lkIFNwZWVjaFJlY29nbml6ZXI6OmRhdGFDYXB0dXJlZChjb25zdCBNZWRpYVRpbWUmLCBjb25z
dCBQbGF0Zm9ybUF1ZGlvRGF0YSYsCiAKIGJvb2wgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNv
Z25pdGlvbihib29sLCBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmLCBib29sLCBib29sLCB1aW50NjRfdCkKIHsKLSAgICBtX2lzUmVjb2du
aXppbmcgPSB0cnVlOwogICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFNwZWVjaFJlY29nbml6
ZXI6OmFib3J0UmVjb2duaXRpb24oKQogewotICAgIG1faXNSZWNvZ25pemluZyA9IGZhbHNlOwot
ICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKCpt
X2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7Cisg
ICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoY2xp
ZW50SWRlbnRpZmllcigpLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOwogfQog
CiB2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0b3BSZWNvZ25pdGlvbigpCiB7Ci0gICAgbV9pc1Jl
Y29nbml6aW5nID0gZmFsc2U7Ci0gICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25V
cGRhdGVUeXBlOjpFbmQpKTsKLX0KLQotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpyZXNldFJlY29n
bml0aW9uKCkKLXsKLSAgICBpZiAoIW1faXNSZWNvZ25pemluZykKLSAgICAgICAgcmV0dXJuOwot
ICAgIGFib3J0UmVjb2duaXRpb24oKTsKKyAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVj
b2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVudGlmaWVyKCksIFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlVHlwZTo6RW5kKSk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oCmluZGV4IDE2MDJhZjc2NjllYzliZGI5
NTQ0MWM2MjMwMjAyNDFkMWMzNDQyZTIuLmRjMTlmZWU5M2JjMDVmYWE2OTgyYzEzZmFiYzcxOTli
ZGQ1ZWQ4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pemVyLmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0
aW9uQ2FwdHVyZVNvdXJjZS5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkVycm9yLmgi
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVS
KQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTM1LDI3ICszNywzNCBAQCBPQkpDX0NM
QVNTIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlOwogCiBjbGFzcyBTcGVlY2hSZWNvZ25pemVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNw
ZWVjaFJlY29nbml6ZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB1c2luZyBEZWxlZ2F0ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZSYpPjsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTcGVlY2hS
ZWNvZ25pemVyKERlbGVnYXRlQ2FsbGJhY2smJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgflNwZWVj
aFJlY29nbml6ZXIoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU3Bl
ZWNoUmVjb2duaXplcihEZWxlZ2F0ZUNhbGxiYWNrJiYsIFVuaXF1ZVJlZjxTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIH5TcGVlY2hSZWNvZ25pemVyKCk7
CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Rh
cnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgUmVmPFJlYWx0
aW1lTWVkaWFTb3VyY2U+JiYsIGJvb2wgbW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCwgY29u
c3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJp
bVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcyk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzdGFydChSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiwgYm9vbCBtb2NrU3BlZWNoUmVj
b2duaXRpb25FbmFibGVkKTsKICNlbmRpZgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXQo
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFib3J0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhYm9ydChPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmID0gV1RGOjpudWxs
b3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3AoKTsKIAotICAgIE9wdGlvbmFsPFNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXI+IGN1cnJlbnRDbGllbnRJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRJZGVudGlmaWVyOyB9CisgICAgV0VC
Q09SRV9FWFBPUlQgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBj
bGllbnRJZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291
cmNlKiBzb3VyY2UoKSB7IHJldHVybiBtX3NvdXJjZS5nZXQoKTsgfQogCisgICAgdm9pZCBzZXRJ
bmFjdGl2ZSgpIHsgbV9zdGF0ZSA9IFN0YXRlOjpJbmFjdGl2ZTsgfQorCiBwcml2YXRlOgotICAg
IHZvaWQgc3RvcEludGVybmFsKCk7CisgICAgZW51bSBjbGFzcyBTdGF0ZSB7CisgICAgICAgIElu
YWN0aXZlLAorICAgICAgICBSdW5uaW5nLAorICAgICAgICBTdG9wcGluZywKKyAgICAgICAgQWJv
cnRpbmcKKyAgICB9OwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICB2b2lkIHN0YXJ0
Q2FwdHVyZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7CkBAIC02NSwxNyArNzQsMTQgQEAg
cHJpdmF0ZToKICAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oYm9vbCBtb2NrU3BlZWNoUmVjb2du
aXRpb25FbmFibGVkLCBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29udGludW91cywgYm9vbCBp
bnRlcmltUmVzdWx0cywgdWludDY0X3QgYWx0ZXJuYXRpdmVzKTsKICAgICB2b2lkIGFib3J0UmVj
b2duaXRpb24oKTsKICAgICB2b2lkIHN0b3BSZWNvZ25pdGlvbigpOwotICAgIHZvaWQgcmVzZXRS
ZWNvZ25pdGlvbigpOwogCi0gICAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllcj4gbV9jbGllbnRJZGVudGlmaWVyOwogICAgIERlbGVnYXRlQ2FsbGJh
Y2sgbV9kZWxlZ2F0ZUNhbGxiYWNrOworICAgIFVuaXF1ZVJlZjxTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3Q+IG1fcmVxdWVzdDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BlZWNoUmVjb2duaXRpb25D
YXB0dXJlU291cmNlPiBtX3NvdXJjZTsKKyAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OkluYWN0
aXZlIH07CiAKICNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCiAgICAgUmV0YWluUHRyPFdlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrPiBtX3Rhc2s7Ci0jZWxzZQotICAgIC8vIEZvciB0ZXN0aW5nLgot
ICAgIGJvb2wgbV9pc1JlY29nbml6aW5nIHsgZmFsc2UgfTsKICNlbmRpZgogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXpl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVj
b2duaXplckNvY29hLm1tCmluZGV4IGJkMmZmZDRiNWNmM2E5YjBjMGM2YTE4NmJkODdhYWUzNTAx
YTY5NzYuLjdkNWJjOGZiYWQ5NjljY2NkNTMxZDBkOTlmYTcyMDU4MTViYzg0OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hS
ZWNvZ25pemVyQ29jb2EubW0KQEAgLTQ1LDExICs0NSw5IEBAIHZvaWQgU3BlZWNoUmVjb2duaXpl
cjo6ZGF0YUNhcHR1cmVkKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgUGxhdGZvcm1BdWRp
b0RhCiBib29sIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0UmVjb2duaXRpb24oYm9vbCBtb2NrU3Bl
ZWNoUmVjb2duaXRpb25FbmFibGVkLCBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9jYWxlSWRlbnRpZmllciwgYm9v
bCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBhbHRlcm5hdGl2ZXMp
CiB7CiAgICAgYXV0byB0YXNrQ2xhc3MgPSBtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkID8g
W1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayBjbGFzc10gOiBbV2ViU3BlZWNoUmVjb2duaXpl
clRhc2sgY2xhc3NdOwotICAgIG1fdGFzayA9IGFkb3B0TlMoW1t0YXNrQ2xhc3MgYWxsb2NdIGlu
aXRXaXRoSWRlbnRpZmllcjppZGVudGlmaWVyIGxvY2FsZTpsb2NhbGVJZGVudGlmaWVyIGRvTXVs
dGlwbGVSZWNvZ25pdGlvbnM6Y29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czppbnRlcmlt
UmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6YWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6W3Ro
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlJiB1cGRhdGUpIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBtX2RlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKKyAg
ICBtX3Rhc2sgPSBhZG9wdE5TKFtbdGFza0NsYXNzIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6
aWRlbnRpZmllciBsb2NhbGU6bG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVjb2duaXRpb25z
OmNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6aW50ZXJpbVJlc3VsdHMgbWF4QWx0ZXJu
YXRpdmVzOmFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNrOlt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpXShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYgdXBkYXRl
KSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2RlbGVn
YXRlQ2FsbGJhY2sodXBkYXRlKTsKICAgICB9XSk7CiAKICAgICByZXR1cm4gISFtX3Rhc2s7CkBA
IC02NywxNSArNjUsNiBAQCB2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmFib3J0UmVjb2duaXRpb24o
KQogICAgIFttX3Rhc2sgYWJvcnRdOwogfQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnJlc2V0
UmVjb2duaXRpb24oKQotewotICAgIGlmICghbV90YXNrKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBhdXRvIHRhc2sgPSBzdGQ6OmV4Y2hhbmdlKG1fdGFzaywgbnVsbHB0cik7Ci0gICAgW3Rhc2sg
YWJvcnRdOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBIQVZFKFNQ
RUVDSFJFQ09HTklaRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5jcHAKaW5kZXggOWY5Njc0YWViNWVkZWUzODYzNzkzYTYwMmE2YzZh
MGVmZTM5N2Y1Yy4uNDViYjk2NzUyOTM4YzU1YTgyZTU3Y2IzNDM5ZDAwOGZkMmVkN2U2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVy
LmNwcApAQCAtNzEsNjQgKzcxLDQ0IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJl
cXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pCiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gd2Vha1JlcXVlc3QtPmNs
aWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgYXV0byByZXF1ZXN0ID0gbV9yZXF1ZXN0cy50YWtl
KGlkZW50aWZpZXIpOwogICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIG1fcmVxdWVz
dHMucmVtb3ZlKGlkZW50aWZpZXIpOwogICAgICAgICAgICAgc2VuZFVwZGF0ZShpZGVudGlmaWVy
LCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yLCBXVEZNb3ZlKGVy
cm9yKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBoYW5kbGVS
ZXF1ZXN0KCp3ZWFrUmVxdWVzdCk7CisgICAgICAgIEFTU0VSVChyZXF1ZXN0KTsKKyAgICAgICAg
aGFuZGxlUmVxdWVzdChtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIoV1RGTW92ZShy
ZXF1ZXN0KSkpOwogICAgIH0pOwogfQogCi12b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpo
YW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCkK
K3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QoVW5pcXVlUmVmPFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4mJiByZXF1ZXN0KQogewotICAgIGlmICgh
bV9yZWNvZ25pemVyKSB7Ci0gICAgICAgIG1fcmVjb2duaXplciA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXplcj4oW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyld
KGF1dG8mIHVwZGF0ZSkgewotICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGF1dG8gY2xpZW50SWRlbnRpZmllciA9IHVwZGF0
ZS5jbGllbnRJZGVudGlmaWVyKCk7Ci0gICAgICAgICAgICBpZiAoIW1fcmVxdWVzdHMuY29udGFp
bnMoY2xpZW50SWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgIGlmICht
X3JlY29nbml6ZXIpCisgICAgICAgIG1fcmVjb2duaXplci0+YWJvcnQoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpB
Ym9ydGVkLCAiQW5vdGhlciByZXF1ZXN0IGlzIHN0YXJ0ZWQiX3MgfSk7CiAKKyAgICBhdXRvIGNs
aWVudElkZW50aWZpZXIgPSByZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCk7CisgICAgbV9yZWNv
Z25pemVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyPihbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oYXV0byYgdXBkYXRlKSB7CisgICAgICAgIGlmICgh
d2Vha1RoaXMpCiAgICAgICAgICAgICBzZW5kVXBkYXRlKHVwZGF0ZSk7CiAKLSAgICAgICAgICAg
IGF1dG8gdHlwZSA9IHVwZGF0ZS50eXBlKCk7Ci0gICAgICAgICAgICBpZiAodHlwZSAhPSBXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yICYmIHR5cGUgIT0gV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgICAgICBpZiAobV9pc1Jlc2V0dGluZykKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBtX2lzUmVzZXR0aW5nID0gdHJ1ZTsKLQotICAgICAgICAgICAg
bV9yZWNvZ25pemVyLT5yZXNldCgpOwotICAgICAgICAgICAgbV9yZXF1ZXN0cy5yZW1vdmUoY2xp
ZW50SWRlbnRpZmllcik7Ci0gICAgICAgICAgICBtX2lzUmVzZXR0aW5nID0gZmFsc2U7Ci0gICAg
ICAgIH0pOwotICAgIH0KLQotICAgIGlmIChhdXRvIGN1cnJlbnRDbGllbnRJZGVudGlmaWVyID0g
bV9yZWNvZ25pemVyLT5jdXJyZW50Q2xpZW50SWRlbnRpZmllcigpKSB7Ci0gICAgICAgIGF1dG8g
ZXJyb3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25FcnJvclR5cGU6OkFib3J0ZWQsICJBbm90aGVyIHJlcXVlc3QgaXMgc3RhcnRl
ZCJfcyB9OwotICAgICAgICBzZW5kVXBkYXRlKCpjdXJyZW50Q2xpZW50SWRlbnRpZmllciwgV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvciwgZXJyb3IpOwotICAgICAg
ICBtX3JlY29nbml6ZXItPnJlc2V0KCk7Ci0gICAgfQorICAgICAgICBpZiAodXBkYXRlLnR5cGUo
KSA9PSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yKQorICAgICAg
ICAgICAgbV9yZWNvZ25pemVyLT5hYm9ydCgpOworICAgICAgICBlbHNlIGlmICh1cGRhdGUudHlw
ZSgpID09IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKQorICAgICAg
ICAgICAgbV9yZWNvZ25pemVyLT5zZXRJbmFjdGl2ZSgpOworICAgIH0sIFdURk1vdmUocmVxdWVz
dCkpOwogCi0gICAgYXV0byBjbGllbnRJZGVudGlmaWVyID0gcmVxdWVzdC5jbGllbnRJZGVudGlm
aWVyKCk7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBhdXRvIHNvdXJjZU9yRXJyb3Ig
PSBtX3JlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbigpOwogICAgIGlmICghc291cmNl
T3JFcnJvcikgewotICAgICAgICBtX3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsK
ICAgICAgICAgc2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3Jl
YXRlRXJyb3IoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJv
ciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBdWRpb0NhcHR1cmUsIHNv
dXJjZU9yRXJyb3IuZXJyb3JNZXNzYWdlIH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIFdlYlByb2Nlc3NQcm94eTo6bXV0ZUNhcHR1cmVJblBhZ2VzRXhjZXB0KG1faWRlbnRpZmll
cik7Ci0KICAgICBib29sIG1vY2tEZXZpY2VDYXB0dXJlc0VuYWJsZWQgPSBtX2NoZWNrSWZNb2Nr
U3BlZWNoUmVjb2duaXRpb25FbmFibGVkKCk7Ci0gICAgbV9yZWNvZ25pemVyLT5zdGFydChjbGll
bnRJZGVudGlmaWVyLCBzb3VyY2VPckVycm9yLnNvdXJjZSgpLCBtb2NrRGV2aWNlQ2FwdHVyZXNF
bmFibGVkLCByZXF1ZXN0LmxhbmcoKSwgcmVxdWVzdC5jb250aW51b3VzKCksIHJlcXVlc3QuaW50
ZXJpbVJlc3VsdHMoKSwgcmVxdWVzdC5tYXhBbHRlcm5hdGl2ZXMoKSk7CisgICAgbV9yZWNvZ25p
emVyLT5zdGFydChzb3VyY2VPckVycm9yLnNvdXJjZSgpLCBtb2NrRGV2aWNlQ2FwdHVyZXNFbmFi
bGVkKTsKICNlbHNlCi0gICAgbV9yZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRlbnRpZmllcik7CiAg
ICAgc2VuZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGU6OkVycm9yLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkF1ZGlvQ2FwdHVyZSwgIkF1ZGlvIGNh
cHR1cmUgaXMgbm90IGltcGxlbWVudGVkIl9zIH0pOwogI2VuZGlmCiB9CkBAIC0xMzYsMzIgKzEx
NiwzMyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpoYW5kbGVSZXF1ZXN0KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcgogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6c3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyIGNsaWVudElkZW50aWZpZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJZGVu
dGlmaWVyKTsKLSAgICBpZiAobV9yZWNvZ25pemVyICYmIG1fcmVjb2duaXplci0+Y3VycmVudENs
aWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlmaWVyKSB7Ci0gICAgICAgIG1fcmVjb2du
aXplci0+c3RvcCgpOworCisgICAgaWYgKG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZp
ZXIpKSB7CisgICAgICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpKQotICAgICAgICBz
ZW5kVXBkYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBk
YXRlVHlwZTo6RW5kKTsKKyAgICBpZiAobV9yZWNvZ25pemVyICYmIG1fcmVjb2duaXplci0+Y2xp
ZW50SWRlbnRpZmllcigpID09IGNsaWVudElkZW50aWZpZXIpCisgICAgICAgIG1fcmVjb2duaXpl
ci0+c3RvcCgpOwogfQogCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjphYm9ydChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElk
ZW50aWZpZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJZGVudGlmaWVyKTsKLSAgICBp
ZiAobV9yZWNvZ25pemVyICYmIG1fcmVjb2duaXplci0+Y3VycmVudENsaWVudElkZW50aWZpZXIo
KSA9PSBjbGllbnRJZGVudGlmaWVyKSB7Ci0gICAgICAgIG1fcmVjb2duaXplci0+YWJvcnQoKTsK
KyAgICBpZiAobV9yZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAg
c2VuZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGU6OkVuZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9yZXF1
ZXN0cy5yZW1vdmUoY2xpZW50SWRlbnRpZmllcikpCi0gICAgICAgIHNlbmRVcGRhdGUoY2xpZW50
SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOwor
ICAgIGlmIChtX3JlY29nbml6ZXIgJiYgbV9yZWNvZ25pemVyLT5jbGllbnRJZGVudGlmaWVyKCkg
PT0gY2xpZW50SWRlbnRpZmllcikKKyAgICAgICAgbV9yZWNvZ25pemVyLT5hYm9ydCgpOwogfQog
CiB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjppbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikK
IHsKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElkZW50aWZpZXIpOwogICAgIGlmIChtX3JlcXVl
c3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKSkgewotICAgICAgICBpZiAobV9yZWNvZ25pemVy
ICYmIG1fcmVjb2duaXplci0+Y3VycmVudENsaWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVu
dGlmaWVyKQorICAgICAgICBpZiAobV9yZWNvZ25pemVyICYmIG1fcmVjb2duaXplci0+Y2xpZW50
SWRlbnRpZmllcigpID09IGNsaWVudElkZW50aWZpZXIpCiAgICAgICAgICAgICBtX3JlY29nbml6
ZXItPmFib3J0KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5kZXggMmZjMjQ4YThlMTNiYzc2NjU1NDE2MDE3NDg1
ZTk0MWRiZWRjZWExNy4uMzAyMThlYjJjNmZhZDcyYjg3N2I2Y2JlYWI1ZDI3NmU3MjhmYmZiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHJlcXVl
c3RQZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Qm
KTsKLSAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0Jik7CisgICAgdm9pZCBoYW5kbGVSZXF1ZXN0KFVuaXF1ZVJlZjxXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3Q+JiYpOwogICAgIHZvaWQgc2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
RXJyb3I+ID0gV1RGOjpudWxsb3B0LCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25SZXN1bHREYXRhPj4gPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgc2VuZFVwZGF0
ZShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpOwogCg==
</data>
<flag name="commit-queue"
          id="437334"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419169</attachid>
            <date>2021-02-03 12:09:37 -0800</date>
            <delta_ts>2021-02-03 12:40:22 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-219699-20210203120936.patch</filename>
            <type>text/plain</type>
            <size>21682</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjRjZTJmNzdhZTU3MDQ1
YTAxMjUxMzAwNjFlYjE0ZDA5MWQxNzk3Ny4uNmJjOTg3NWY4YjY4MWIwMWVlZmUwMGQwZTcxNzhl
MjU5MGUxMWFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTAyLTAzICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGEgU3BlZWNoUmVj
b2duaXplciBmb3IgZWFjaCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY5OQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzIzOTIwOTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4K
KworICAgICAgICBNYWtlIFNwZWVjaFJlY29nbml6ZXIgdGFrZSB0aGUgb3duZXJ3aGlwIG9mIHRo
ZSBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QgaXQncyBhYm91dCB0byBoYW5kbGUsIGFuZCBtYW5h
Z2UgaXRzIAorICAgICAgICBzdGF0ZS4KKworICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6U3Bl
ZWNoUmVjb2duaXplcik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjp+U3Bl
ZWNoUmVjb2duaXplcik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjphYm9y
dCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdG9wKToKKyAgICAgICAg
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OmNsaWVudElkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnRDYXB0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml6ZXI6OnN0b3BDYXB0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml6ZXI6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXplcjo6YWJvcnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pemVyOjpzdG9wUmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXplcjo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXpl
cjo6cmVzZXRSZWNvZ25pdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXplci5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6
c2V0SW5hY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6Y3VycmVu
dENsaWVudElkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvc3Bl
ZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml6ZXI6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlvbik6IERlbGV0ZWQuCisKIDIwMjEtMDItMDMg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ugc3VyZSBH
UFVQcm9jZXNzIE1lZGlhUmVjb3JkZXIgaGFuZGxlcyBjb3JyZWN0bHkgbXV0ZWQgdHJhY2tzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDk1ZDlhMmE5MmYzMDFmYTRmNDE3MmEwYjk2ZjBkNjBlNGZhNGI1Y2YuLjFhZWIw
YmRkMjIzNjU0NjJmNjRhMDk2MWY0M2RjOGNjYjViNTIwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjMgQEAKKzIwMjEtMDItMDMgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBlLmNvbT4KKworICAg
ICAgICBDcmVhdGUgYSBTcGVlY2hSZWNvZ25pemVyIGZvciBlYWNoIFNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE5Njk5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM5MjA5Nz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFdlIHVzZWQgdGhlIHNhbWUgU3BlZWNo
UmVjb2duaXplciBmb3IgbXVsdGlwbGUgcmVxdWVzdHMsIHNvIHdlIGhhZCB0byByZXNldCBTcGVl
Y2hSZWNvZ25pemVyIHN0YXRlIGJldHdlZW4KKyAgICAgICAgcmVxdWVzdHMsIHdoaWNoIG1ha2Vz
IHRoaW5ncyBjb21wbGljYXRlZCBhbmQgaGFyZCB0byBkZWJ1ZyAobGlrZSBuZXN0ZWQgcmVzZXQg
Y2FsbHMpLiBOb3cgd2UgaGF2ZSBvbmUgZGVkaWNhdGVkCisgICAgICAgIFNwZWVjaFJlY29nbml6
ZXIgZm9yIGVhY2ggcmVxdWVzdC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVy
OjpyZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVj
aFJlY29nbml0aW9uU2VydmVyOjpzdG9wKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXI6OmFib3J0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI6OmludmFsaWRhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5oOgorCiAyMDIxLTAyLTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIHN1cmUgR1BVUHJvY2VzcyBNZWRpYVJlY29yZGVyIGhhbmRsZXMg
Y29ycmVjdGx5IG11dGVkIHRyYWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcAppbmRleCBjYWQ0OGE5NzQyYmI5ZTAxNDM0ZmJhODVk
ZDBjMTBhOWMwMWZmNDg4Li4wOTgyOWY4YjRhYWVkNDZhOTYwNjFmOTA3NjcyNTU0NDBkODMyYWQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
emVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
emVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlNwZWVjaFJlY29nbml6ZXIuaCIKIAorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dC5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgiCiAjaW5jbHVkZSA8d3Rm
L01lZGlhVGltZS5oPgogCkBAIC0zNSw0OSArMzYsNTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1TcGVlY2hSZWNvZ25pemVyOjpTcGVlY2hSZWNvZ25pemVyKERlbGVnYXRlQ2FsbGJhY2sm
JiBjYWxsYmFjaykKLSAgICA6IG1fZGVsZWdhdGVDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkK
K1NwZWVjaFJlY29nbml6ZXI6OlNwZWVjaFJlY29nbml6ZXIoRGVsZWdhdGVDYWxsYmFjayYmIGRl
bGVnYXRlQ2FsbGJhY2ssIFVuaXF1ZVJlZjxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+JiYgcmVx
dWVzdCkKKyAgICA6IG1fZGVsZWdhdGVDYWxsYmFjayhXVEZNb3ZlKGRlbGVnYXRlQ2FsbGJhY2sp
KQorICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpCiB7CiB9CiAKLXZvaWQgU3BlZWNo
UmVjb2duaXplcjo6cmVzZXQoKQorU3BlZWNoUmVjb2duaXplcjo6flNwZWVjaFJlY29nbml6ZXIo
KQogewotICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBzdG9wQ2FwdHVyZSgpOwotICAgIHJlc2V0UmVjb2duaXRpb24oKTsKLSAgICBtX2NsaWVudElk
ZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFib3J0
aW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OlN0b3BwaW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OlJ1
bm5pbmcpCisgICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZpZXIoKSwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
OjpFbmQpKTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjphYm9ydCgpCit2b2lkIFNwZWVj
aFJlY29nbml6ZXI6OmFib3J0KE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYgZXJy
b3IpCiB7Ci0gICAgQVNTRVJUKG1fY2xpZW50SWRlbnRpZmllcik7CisgICAgaWYgKG1fc3RhdGUg
PT0gU3RhdGU6OkFib3J0aW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkluYWN0aXZlKQorICAgICAg
ICByZXR1cm47CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpBYm9ydGluZzsKKworICAgIGlmIChlcnJv
cikKKyAgICAgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpj
cmVhdGVFcnJvcihjbGllbnRJZGVudGlmaWVyKCksICplcnJvcikpOworCiAgICAgc3RvcENhcHR1
cmUoKTsKICAgICBhYm9ydFJlY29nbml0aW9uKCk7CiB9CiAKIHZvaWQgU3BlZWNoUmVjb2duaXpl
cjo6c3RvcCgpCiB7Ci0gICAgQVNTRVJUKG1fY2xpZW50SWRlbnRpZmllcik7CisgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OkFib3J0aW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkluYWN0aXZlKQor
ICAgICAgICByZXR1cm47CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpTdG9wcGluZzsKKwogICAgIHN0
b3BDYXB0dXJlKCk7CiAgICAgc3RvcFJlY29nbml0aW9uKCk7CiB9CiAKK1NwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgU3BlZWNoUmVjb2duaXplcjo6Y2xpZW50SWRl
bnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVxdWVzdC0+Y2xpZW50SWRlbnRpZmll
cigpOworfQorCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAotdm9pZCBTcGVlY2hSZWNvZ25p
emVyOjpzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNs
aWVudElkZW50aWZpZXIsIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSwgYm9vbCBt
b2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZp
ZXIsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0
ZXJuYXRpdmVzKQordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydChSZWY8UmVhbHRpbWVNZWRp
YVNvdXJjZT4mJiBzb3VyY2UsIGJvb2wgbW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCkKIHsK
LSAgICBBU1NFUlQoIW1fY2xpZW50SWRlbnRpZmllcik7Ci0gICAgbV9jbGllbnRJZGVudGlmaWVy
ID0gY2xpZW50SWRlbnRpZmllcjsKLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGU6OlN0YXJ0KSk7Ci0KLSAgICBpZiAoIXN0YXJ0UmVjb2duaXRpb24obW9ja1Nw
ZWVjaFJlY29nbml0aW9uRW5hYmxlZCwgY2xpZW50SWRlbnRpZmllciwgbG9jYWxlSWRlbnRpZmll
ciwgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVybmF0aXZlcykpIHsKLSAgICAg
ICAgYXV0byBlcnJvciA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6U2VydmljZU5vdEFsbG93ZWQsICJGYWlsZWQg
dG8gc3RhcnQgcmVjb2duaXRpb24iX3MgfTsKLSAgICAgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihjbGllbnRJZGVudGlm
aWVyLCBXVEZNb3ZlKGVycm9yKSkpOworICAgIGlmICghc3RhcnRSZWNvZ25pdGlvbihtb2NrU3Bl
ZWNoUmVjb2duaXRpb25FbmFibGVkLCBjbGllbnRJZGVudGlmaWVyKCksIG1fcmVxdWVzdC0+bGFu
ZygpLCBtX3JlcXVlc3QtPmNvbnRpbnVvdXMoKSwgbV9yZXF1ZXN0LT5pbnRlcmltUmVzdWx0cygp
LCBtX3JlcXVlc3QtPm1heEFsdGVybmF0aXZlcygpKSkgeworICAgICAgICBhdXRvIGVycm9yID0g
U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpTZXJ2
aWNlTm90QWxsb3dlZCwgIkZhaWxlZCB0byBzdGFydCByZWNvZ25pdGlvbiJfcyB9OworICAgICAg
ICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9y
KGNsaWVudElkZW50aWZpZXIoKSwgV1RGTW92ZShlcnJvcikpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIG1fc3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKKyAgICBtX2RlbGVnYXRlQ2Fs
bGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVudGlmaWVyKCks
IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3RhcnQpKTsKICAgICBzdGFydENhcHR1cmUo
V1RGTW92ZShzb3VyY2UpKTsKIH0KIApAQCAtODgsMTUgKzk4LDEyIEBAIHZvaWQgU3BlZWNoUmVj
b2duaXplcjo6c3RhcnRDYXB0dXJlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkK
ICAgICAgICAgICAgIHdlYWtUaGlzLT5kYXRhQ2FwdHVyZWQodGltZSwgZGF0YSwgZGVzY3JpcHRp
b24sIHNhbXBsZUNvdW50KTsKICAgICB9OwogCi0gICAgYXV0byBzdGF0ZVVwZGF0ZUNhbGxiYWNr
ID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IGF1dG8mIHVwZGF0
ZSkgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIEFTU0VSVChtX2NsaWVudElkZW50aWZpZXIgJiYgbV9jbGllbnRJZGVudGlmaWVyLnZhbHVl
KCkgPT0gdXBkYXRlLmNsaWVudElkZW50aWZpZXIoKSk7Ci0gICAgICAgIG1fZGVsZWdhdGVDYWxs
YmFjayh1cGRhdGUpOworICAgIGF1dG8gc3RhdGVVcGRhdGVDYWxsYmFjayA9IFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpXShjb25zdCBhdXRvJiB1cGRhdGUpIHsKKyAgICAgICAgaWYgKHdl
YWtUaGlzKQorICAgICAgICAgICAgd2Vha1RoaXMtPm1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUp
OwogICAgIH07CiAKLSAgICBtX3NvdXJjZSA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25D
YXB0dXJlU291cmNlPigqbV9jbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGFDYWxsYmFjayks
IFdURk1vdmUoc3RhdGVVcGRhdGVDYWxsYmFjayksIFdURk1vdmUoc291cmNlKSk7CisgICAgbV9z
b3VyY2UgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZT4oY2xpZW50
SWRlbnRpZmllcigpLCBXVEZNb3ZlKGRhdGFDYWxsYmFjayksIFdURk1vdmUoc3RhdGVVcGRhdGVD
YWxsYmFjayksIFdURk1vdmUoc291cmNlKSk7CiB9CiAKICNlbmRpZgpAQCAtMTA3LDcgKzExNCw3
IEBAIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcENhcHR1cmUoKQogICAgICAgICByZXR1cm47
CiAKICAgICBtX3NvdXJjZSA9IG51bGxwdHI7Ci0gICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVj
b2duaXRpb25VcGRhdGVUeXBlOjpBdWRpb0VuZCkpOworICAgIG1fZGVsZWdhdGVDYWxsYmFjayhT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZpZXIoKSwgU3BlZWNo
UmVjb2duaXRpb25VcGRhdGVUeXBlOjpBdWRpb0VuZCkpOwogfQogCiAjaWYgIUhBVkUoU1BFRUNI
UkVDT0dOSVpFUikKQEAgLTExOCwyNyArMTI1LDE3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6
ZGF0YUNhcHR1cmVkKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwK
IAogYm9vbCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKGJvb2wsIFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJvb2ws
IGJvb2wsIHVpbnQ2NF90KQogewotICAgIG1faXNSZWNvZ25pemluZyA9IHRydWU7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25pdGlvbigp
CiB7Ci0gICAgbV9pc1JlY29nbml6aW5nID0gZmFsc2U7Ci0gICAgbV9kZWxlZ2F0ZUNhbGxiYWNr
KFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKKyAgICBtX2RlbGVnYXRlQ2FsbGJhY2so
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVudGlmaWVyKCksIFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CiB9CiAKIHZvaWQgU3BlZWNoUmVjb2duaXpl
cjo6c3RvcFJlY29nbml0aW9uKCkKIHsKLSAgICBtX2lzUmVjb2duaXppbmcgPSBmYWxzZTsKLSAg
ICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9j
bGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOwotfQot
Ci12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24oKQotewotICAgIGlmICgh
bV9pc1JlY29nbml6aW5nKQotICAgICAgICByZXR1cm47Ci0gICAgYWJvcnRSZWNvZ25pdGlvbigp
OworICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRl
KGNsaWVudElkZW50aWZpZXIoKSwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pemVyLmgKaW5kZXggMTYwMmFmNzY2OWVjOWJkYjk1NDQxYzYyMzAyMDI0MWQxYzM0NDJl
Mi4uZGMxOWZlZTkzYmMwNWZhYTY5ODJjMTNmYWJjNzE5OWJkZDVlZDg2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaApAQCAtMjcsNiAr
MjcsOCBAQAogCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlLmgiCiAj
aW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgor
I2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uRXJyb3IuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAKICNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgpAQCAtMzUsMjcgKzM3LDM0IEBAIE9CSkNfQ0xBU1MgV2ViU3BlZWNoUmVjb2duaXpl
clRhc2s7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0OwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU7CiAKIGNsYXNzIFNwZWVjaFJl
Y29nbml6ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXplcj4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHVzaW5nIERlbGVnYXRlQ2Fs
bGJhY2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik+Owot
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNwZWVjaFJlY29nbml6ZXIoRGVsZWdhdGVDYWxs
YmFjayYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB+U3BlZWNoUmVjb2duaXplcigpID0gZGVmYXVs
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTcGVlY2hSZWNvZ25pemVyKERlbGVnYXRl
Q2FsbGJhY2smJiwgVW5pcXVlUmVmPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgflNwZWVjaFJlY29nbml6ZXIoKTsKIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiwgYm9v
bCBtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50
aWZpZXIsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4
QWx0ZXJuYXRpdmVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0KFJlZjxSZWFsdGlt
ZU1lZGlhU291cmNlPiYmLCBib29sIG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQpOwogI2Vu
ZGlmCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYWJvcnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFib3J0KE9wdGlvbmFsPFNw
ZWVjaFJlY29nbml0aW9uRXJyb3I+JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3RvcCgpOwogCi0gICAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllcj4gY3VycmVudENsaWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2NsaWVudElkZW50aWZpZXI7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIoKSBjb25z
dDsKICAgICBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UqIHNvdXJjZSgpIHsgcmV0dXJu
IG1fc291cmNlLmdldCgpOyB9CiAKKyAgICB2b2lkIHNldEluYWN0aXZlKCkgeyBtX3N0YXRlID0g
U3RhdGU6OkluYWN0aXZlOyB9CisKIHByaXZhdGU6Ci0gICAgdm9pZCBzdG9wSW50ZXJuYWwoKTsK
KyAgICBlbnVtIGNsYXNzIFN0YXRlIHsKKyAgICAgICAgSW5hY3RpdmUsCisgICAgICAgIFJ1bm5p
bmcsCisgICAgICAgIFN0b3BwaW5nLAorICAgICAgICBBYm9ydGluZworICAgIH07CiAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogICAgIHZvaWQgc3RhcnRDYXB0dXJlKFJlZjxSZWFsdGltZU1l
ZGlhU291cmNlPiYmKTsKQEAgLTY1LDE3ICs3NCwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgc3Rh
cnRSZWNvZ25pdGlvbihib29sIG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQsIFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9jYWxl
SWRlbnRpZmllciwgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRf
dCBhbHRlcm5hdGl2ZXMpOwogICAgIHZvaWQgYWJvcnRSZWNvZ25pdGlvbigpOwogICAgIHZvaWQg
c3RvcFJlY29nbml0aW9uKCk7Ci0gICAgdm9pZCByZXNldFJlY29nbml0aW9uKCk7CiAKLSAgICBP
cHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyPiBtX2Ns
aWVudElkZW50aWZpZXI7CiAgICAgRGVsZWdhdGVDYWxsYmFjayBtX2RlbGVnYXRlQ2FsbGJhY2s7
CisgICAgVW5pcXVlUmVmPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gbV9yZXF1ZXN0OwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2U+IG1fc291cmNl
OworICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6SW5hY3RpdmUgfTsKIAogI2lmIEhBVkUoU1BF
RUNIUkVDT0dOSVpFUikKICAgICBSZXRhaW5QdHI8V2ViU3BlZWNoUmVjb2duaXplclRhc2s+IG1f
dGFzazsKLSNlbHNlCi0gICAgLy8gRm9yIHRlc3RpbmcuCi0gICAgYm9vbCBtX2lzUmVjb2duaXpp
bmcgeyBmYWxzZSB9OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0KaW5kZXgg
YmQyZmZkNGI1Y2YzYTliMGMwYzZhMTg2YmQ4N2FhZTM1MDFhNjk3Ni4uN2Q1YmM4ZmJhZDk2OWNj
Y2Q1MzFkMGQ5OWZhNzIwNTgxNWJjODQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQpAQCAt
NDUsMTEgKzQ1LDkgQEAgdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpkYXRhQ2FwdHVyZWQoY29uc3Qg
TWVkaWFUaW1lJiB0aW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGEKIGJvb2wgU3BlZWNoUmVjb2du
aXplcjo6c3RhcnRSZWNvZ25pdGlvbihib29sIG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQs
IFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50
ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IGFsdGVybmF0aXZlcykKIHsKICAgICBhdXRvIHRhc2tDbGFz
cyA9IG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQgPyBbV2ViU3BlZWNoUmVjb2duaXplclRh
c2tNb2NrIGNsYXNzXSA6IFtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBjbGFzc107Ci0gICAgbV90
YXNrID0gYWRvcHROUyhbW3Rhc2tDbGFzcyBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOmlkZW50
aWZpZXIgbG9jYWxlOmxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczpjb250
aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOmludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZl
czphbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazpbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cih0aGlzKV0oY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmIHVwZGF0
ZSkgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOworICAgIG1fdGFzayA9IGFkb3B0TlMoW1t0
YXNrQ2xhc3MgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjppZGVudGlmaWVyIGxvY2FsZTpsb2Nh
bGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6Y29udGludW91cyByZXBvcnRJbnRl
cmltUmVzdWx0czppbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6YWx0ZXJuYXRpdmVzIGRl
bGVnYXRlQ2FsbGJhY2s6W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiB1cGRhdGUpIHsKKyAgICAgICAgaWYgKHdlYWtU
aGlzKQorICAgICAgICAgICAgd2Vha1RoaXMtPm1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOwog
ICAgIH1dKTsKIAogICAgIHJldHVybiAhIW1fdGFzazsKQEAgLTY3LDE1ICs2NSw2IEBAIHZvaWQg
U3BlZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25pdGlvbigpCiAgICAgW21fdGFzayBhYm9ydF07
CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlvbigpCi17Ci0gICAg
aWYgKCFtX3Rhc2spCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gdGFzayA9IHN0ZDo6ZXhj
aGFuZ2UobV90YXNrLCBudWxscHRyKTsKLSAgICBbdGFzayBhYm9ydF07Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcApp
bmRleCA5Zjk2NzRhZWI1ZWRlZTM4NjM3OTNhNjAyYTZjNmEwZWZlMzk3ZjVjLi4zYjFkMGU4OGMz
MGZjYzdlNDk2ZTIxNGQ2N2YwYjVmM2Q5OGU0ZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCkBAIC03MSw2NCArNzEsNDYg
QEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1
ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbmkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBhdXRvIGlkZW50aWZpZXIgPSB3ZWFrUmVxdWVzdC0+Y2xpZW50SWRlbnRpZmllcigpOworICAg
ICAgICBhdXRvIHJlcXVlc3QgPSBtX3JlcXVlc3RzLnRha2UoaWRlbnRpZmllcik7CiAgICAgICAg
IGlmIChlcnJvcikgewotICAgICAgICAgICAgbV9yZXF1ZXN0cy5yZW1vdmUoaWRlbnRpZmllcik7
CiAgICAgICAgICAgICBzZW5kVXBkYXRlKGlkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlVHlwZTo6RXJyb3IsIFdURk1vdmUoZXJyb3IpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGhhbmRsZVJlcXVlc3QoKndlYWtSZXF1ZXN0KTsK
KyAgICAgICAgQVNTRVJUKHJlcXVlc3QpOworICAgICAgICBoYW5kbGVSZXF1ZXN0KG1ha2VVbmlx
dWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cihXVEZNb3ZlKHJlcXVlc3QpKSk7CiAgICAgfSk7CiB9
CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6aGFuZGxlUmVxdWVzdChVbmlxdWVSZWY8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0PiYmIHJlcXVlc3QpCiB7Ci0gICAgaWYgKCFtX3JlY29nbml6ZXIpIHsKLSAgICAg
ICAgbV9yZWNvZ25pemVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyPihb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oYXV0byYgdXBkYXRlKSB7Ci0gICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICBpZiAo
bV9yZWNvZ25pemVyKQorICAgICAgICBtX3JlY29nbml6ZXItPmFib3J0KFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6
QWJvcnRlZCwgIkFub3RoZXIgcmVxdWVzdCBpcyBzdGFydGVkIl9zIH0pOwogCi0gICAgICAgICAg
ICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSB1cGRhdGUuY2xpZW50SWRlbnRpZmllcigpOwotICAg
ICAgICAgICAgaWYgKCFtX3JlcXVlc3RzLmNvbnRhaW5zKGNsaWVudElkZW50aWZpZXIpKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgc2VuZFVwZGF0ZSh1cGRhdGUpOwot
Ci0gICAgICAgICAgICBhdXRvIHR5cGUgPSB1cGRhdGUudHlwZSgpOwotICAgICAgICAgICAgaWYg
KHR5cGUgIT0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvciAmJiB0
eXBlICE9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgaWYgKG1faXNSZXNldHRpbmcpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9pc1Jlc2V0dGluZyA9IHRydWU7Cisg
ICAgYXV0byBjbGllbnRJZGVudGlmaWVyID0gcmVxdWVzdC0+Y2xpZW50SWRlbnRpZmllcigpOwor
ICAgIG1fcmVjb2duaXplciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcj4o
W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGF1dG8mIHVwZGF0ZSkgeworICAg
ICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBt
X3JlY29nbml6ZXItPnJlc2V0KCk7Ci0gICAgICAgICAgICBtX3JlcXVlc3RzLnJlbW92ZShjbGll
bnRJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIG1faXNSZXNldHRpbmcgPSBmYWxzZTsKLSAgICAg
ICAgfSk7Ci0gICAgfQorICAgICAgICBzZW5kVXBkYXRlKHVwZGF0ZSk7CiAKLSAgICBpZiAoYXV0
byBjdXJyZW50Q2xpZW50SWRlbnRpZmllciA9IG1fcmVjb2duaXplci0+Y3VycmVudENsaWVudElk
ZW50aWZpZXIoKSkgewotICAgICAgICBhdXRvIGVycm9yID0gV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBYm9ydGVk
LCAiQW5vdGhlciByZXF1ZXN0IGlzIHN0YXJ0ZWQiX3MgfTsKLSAgICAgICAgc2VuZFVwZGF0ZSgq
Y3VycmVudENsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZTo6RXJyb3IsIGVycm9yKTsKLSAgICAgICAgbV9yZWNvZ25pemVyLT5yZXNldCgpOwotICAg
IH0KKyAgICAgICAgaWYgKHVwZGF0ZS50eXBlKCkgPT0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGVUeXBlOjpFcnJvcikKKyAgICAgICAgICAgIG1fcmVjb2duaXplci0+YWJvcnQoKTsK
KyAgICAgICAgZWxzZSBpZiAodXBkYXRlLnR5cGUoKSA9PSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZVR5cGU6OkVuZCkKKyAgICAgICAgICAgIG1fcmVjb2duaXplci0+c2V0SW5hY3Rp
dmUoKTsKKyAgICB9LCBXVEZNb3ZlKHJlcXVlc3QpKTsKIAotICAgIGF1dG8gY2xpZW50SWRlbnRp
ZmllciA9IHJlcXVlc3QuY2xpZW50SWRlbnRpZmllcigpOwogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAgICAgYXV0byBzb3VyY2VPckVycm9yID0gbV9yZWFsdGltZU1lZGlhU291cmNlQ3JlYXRl
RnVuY3Rpb24oKTsKICAgICBpZiAoIXNvdXJjZU9yRXJyb3IpIHsKLSAgICAgICAgbV9yZXF1ZXN0
cy5yZW1vdmUoY2xpZW50SWRlbnRpZmllcik7CiAgICAgICAgIHNlbmRVcGRhdGUoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKGNsaWVudElkZW50aWZpZXIsIFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkVycm9yVHlwZTo6QXVkaW9DYXB0dXJlLCBzb3VyY2VPckVycm9yLmVycm9yTWVzc2FnZSB9KSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBXZWJQcm9jZXNzUHJveHk6Om11dGVDYXB0
dXJlSW5QYWdlc0V4Y2VwdChtX2lkZW50aWZpZXIpOwotCiAgICAgYm9vbCBtb2NrRGV2aWNlQ2Fw
dHVyZXNFbmFibGVkID0gbV9jaGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCgpOwot
ICAgIG1fcmVjb2duaXplci0+c3RhcnQoY2xpZW50SWRlbnRpZmllciwgc291cmNlT3JFcnJvci5z
b3VyY2UoKSwgbW9ja0RldmljZUNhcHR1cmVzRW5hYmxlZCwgcmVxdWVzdC5sYW5nKCksIHJlcXVl
c3QuY29udGludW91cygpLCByZXF1ZXN0LmludGVyaW1SZXN1bHRzKCksIHJlcXVlc3QubWF4QWx0
ZXJuYXRpdmVzKCkpOworICAgIG1fcmVjb2duaXplci0+c3RhcnQoc291cmNlT3JFcnJvci5zb3Vy
Y2UoKSwgbW9ja0RldmljZUNhcHR1cmVzRW5hYmxlZCk7CiAjZWxzZQotICAgIG1fcmVxdWVzdHMu
cmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOwogICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmll
ciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvciwgV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JU
eXBlOjpBdWRpb0NhcHR1cmUsICJBdWRpbyBjYXB0dXJlIGlzIG5vdCBpbXBsZW1lbnRlZCJfcyB9
KTsKICNlbmRpZgogfQpAQCAtMTM2LDM0ICsxMTgsMzMgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6aGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Qm
IHIKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0b3AoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQogewog
ICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50SWRlbnRpZmllcik7Ci0gICAgaWYgKG1fcmVjb2duaXpl
ciAmJiBtX3JlY29nbml6ZXItPmN1cnJlbnRDbGllbnRJZGVudGlmaWVyKCkgPT0gY2xpZW50SWRl
bnRpZmllcikgewotICAgICAgICBtX3JlY29nbml6ZXItPnN0b3AoKTsKKworICAgIGlmIChtX3Jl
cXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKSkgeworICAgICAgICBzZW5kVXBkYXRlKGNs
aWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5k
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX3JlcXVlc3RzLnJlbW92ZShj
bGllbnRJZGVudGlmaWVyKSkKLSAgICAgICAgc2VuZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7CisgICAgaWYgKG1fcmVj
b2duaXplciAmJiBtX3JlY29nbml6ZXItPmNsaWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVu
dGlmaWVyKQorICAgICAgICBtX3JlY29nbml6ZXItPnN0b3AoKTsKIH0KIAogdm9pZCBTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQogewogICAgIE1FU1NBR0VfQ0hF
Q0soY2xpZW50SWRlbnRpZmllcik7Ci0gICAgaWYgKG1fcmVjb2duaXplciAmJiBtX3JlY29nbml6
ZXItPmN1cnJlbnRDbGllbnRJZGVudGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikgewotICAg
ICAgICBtX3JlY29nbml6ZXItPmFib3J0KCk7CisgICAgaWYgKG1fcmVxdWVzdHMucmVtb3ZlKGNs
aWVudElkZW50aWZpZXIpKSB7CisgICAgICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwg
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIp
KQotICAgICAgICBzZW5kVXBkYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKTsKKyAgICBpZiAobV9yZWNvZ25pemVyICYmIG1fcmVj
b2duaXplci0+Y2xpZW50SWRlbnRpZmllcigpID09IGNsaWVudElkZW50aWZpZXIpCisgICAgICAg
IG1fcmVjb2duaXplci0+YWJvcnQoKTsKIH0KIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cjo6aW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJ
ZGVudGlmaWVyKTsKLSAgICBpZiAobV9yZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRlbnRpZmllcikp
IHsKLSAgICAgICAgaWYgKG1fcmVjb2duaXplciAmJiBtX3JlY29nbml6ZXItPmN1cnJlbnRDbGll
bnRJZGVudGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikKLSAgICAgICAgICAgIG1fcmVjb2du
aXplci0+YWJvcnQoKTsKLSAgICB9CisgICAgaWYgKG1fcmVjb2duaXplciAmJiBtX3JlY29nbml6
ZXItPmNsaWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlmaWVyKQorICAgICAgICBtX3Jl
Y29nbml6ZXItPmFib3J0KCk7CiB9CiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnNl
bmRVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllciBjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5
cGUgdHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gZXJyb3Is
IE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PiBy
ZXN1bHQpCkBAIC0xNzgsNiArMTU5LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6
c2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGkKIAogdm9p
ZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c2VuZFVwZGF0ZShjb25zdCBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZSYgdXBkYXRlKQogeworICAgIFdURkxvZ0Fsd2F5cygiWyVwXVNw
ZWVjaFJlY29nbml0aW9uU2VydmVyOjpzZW5kVXBkYXRlIHVwZGF0ZS50eXBlWyVkXSwgdXBkYXRl
LmNsaWVudElkZW50aWZpZXJbJWxsdV0iLCB0aGlzLCB1cGRhdGUudHlwZSgpLCB1cGRhdGUuY2xp
ZW50SWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbjo6RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgK
aW5kZXggMmZjMjQ4YThlMTNiYzc2NjU1NDE2MDE3NDg1ZTk0MWRiZWRjZWExNy4uMzAyMThlYjJj
NmZhZDcyYjg3N2I2Y2JlYWI1ZDI3NmU3MjhmYmZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKLSAgICB2b2lkIGhhbmRsZVJlcXVl
c3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7CisgICAgdm9pZCBoYW5kbGVS
ZXF1ZXN0KFVuaXF1ZVJlZjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+JiYpOwog
ICAgIHZvaWQgc2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIE9w
dGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+ID0gV1RGOjpudWxsb3B0LCBP
cHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gPSBX
VEY6Om51bGxvcHQpOwogICAgIHZvaWQgc2VuZFVwZGF0ZShjb25zdCBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZSYpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>