<?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>222217</bug_id>
          
          <creation_ts>2021-02-19 18:39:49 -0800</creation_ts>
          <short_desc>PCM: Introduce PrivateClickMeasurementNetworkLoader</short_desc>
          <delta_ts>2021-03-30 19:52:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=223956</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=223957</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>221291</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1731720</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-02-19 18:39:49 -0800</bug_when>
    <thetext>Figure out a new way to do the network pipeline such that contents of the response can be processed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734111</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-26 18:40:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/74817863&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744262</commentid>
    <comment_count>2</comment_count>
      <attachid>424386</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-03-26 11:50:54 -0700</bug_when>
    <thetext>Created attachment 424386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744266</commentid>
    <comment_count>3</comment_count>
      <attachid>424388</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-03-26 12:05:45 -0700</bug_when>
    <thetext>Created attachment 424388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745044</commentid>
    <comment_count>4</comment_count>
      <attachid>424388</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-30 00:39:52 -0700</bug_when>
    <thetext>Comment on attachment 424388
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkSession.cpp:124
&gt;      m_privateClickMeasurement = makeUnique&lt;PrivateClickMeasurementManager&gt;(*this, networkProcess, parameters.sessionID);

Since we are creating the PCM here, let&apos;s pass the network load function as a parameter to the constructor.

&gt; Source/WebKit/NetworkProcess/NetworkSession.cpp:125
&gt; +    m_privateClickMeasurement-&gt;setNetworkLoadFunction([this, weakThis = makeWeakPtr(this)] (NetworkLoadParameters&amp;&amp; loadParameters, CompletionHandler&lt;void(const WebCore::ResourceError&amp;, const WebCore::ResourceResponse&amp;, const RefPtr&lt;JSON::Object&gt;&amp;)&gt;&amp;&amp; completionHandler) {

Could use auto&amp;&amp; loadParameters, auto&amp;&amp; completionHandler.

&gt; Source/WebKit/NetworkProcess/NetworkSession.cpp:127
&gt;              return;

We probably need to call completionHandler if weakThis is null.
No need to capture &apos;this&apos; as well.
You could replace with PrivateClickMeasurementNetworkLoader::start(*weakThis,...

&gt; Source/WebKit/NetworkProcess/NetworkSession.h:218
&gt; +    HashSet&lt;std::unique_ptr&lt;PrivateClickMeasurementNetworkLoader&gt;&gt; m_privateClickMeasurementNetworkLoaders;

I think Alex added support for map/set of UniqueRef. You could have a try here.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:155
&gt; +    ASSERT(m_networkLoadFunction);

You could add this one in the constructor if we pass it a construction time.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:156
&gt; +    m_networkLoadFunction(WTFMove(loadParameters), [weakThis = makeWeakPtr(*this), this, attribution = WTFMove(attribution), callback = WTFMove(callback)] (const WebCore::ResourceError&amp; error, const WebCore::ResourceResponse&amp; response, const RefPtr&lt;JSON::Object&gt;&amp; jsonObject) mutable {

Could use more auto.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:166
&gt; +            m_networkProcess-&gt;broadcastConsoleMessage(weakThis-&gt;m_sessionID, MessageSource::PrivateClickMeasurement, MessageLevel::Error, makeString(&quot;[Private Click Measurement] JSON response is empty for token public key request.&quot;_s));

Either stop capture &apos;this&apos; and use weakThis everywhere or use this.
Do we need the call to makeString?

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementNetworkLoader.cpp:41
&gt; +    auto loader = std::unique_ptr&lt;PrivateClickMeasurementNetworkLoader&gt;(new PrivateClickMeasurementNetworkLoader(session, WTFMove(parameters), WTFMove(completionHandler)));

makeUnique?

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementNetworkLoader.cpp:79
&gt; +            m_decoder = TextResourceDecoder::create(&quot;application/json&quot;_s, &quot;UTF-8&quot;);

Could use a one liner maybe:
m_decoder = TextResourceDecoder::create(&quot;application/json&quot;_s,  m_response.textEncodingName().isEmpty() ? TextEncoding(&quot;UTF-8&quot;) : TextEncoding(m_response.textEncodingName()));

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementNetworkLoader.cpp:92
&gt; +    if (!jsonValue)

if (auto jsonValue = ...)

&gt; LayoutTests/http/tests/privateClickMeasurement/resources/fraudPreventionTestURL.py:60
&gt; +    &apos;Content-Type: application/json\r\n\r\n&apos;

We do not check Content-Type in PCM loader.
Should we do so? Should we test with and without it?

Do we have coverage for the case of empty application/json body</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745301</commentid>
    <comment_count>5</comment_count>
      <attachid>424388</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-03-30 14:01:22 -0700</bug_when>
    <thetext>Comment on attachment 424388
Patch

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

Thanks Youenn for r+ this patch.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkSession.cpp:124
&gt;&gt;      m_privateClickMeasurement = makeUnique&lt;PrivateClickMeasurementManager&gt;(*this, networkProcess, parameters.sessionID);
&gt; 
&gt; Since we are creating the PCM here, let&apos;s pass the network load function as a parameter to the constructor.

Sounds good to me.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkSession.cpp:125
&gt;&gt; +    m_privateClickMeasurement-&gt;setNetworkLoadFunction([this, weakThis = makeWeakPtr(this)] (NetworkLoadParameters&amp;&amp; loadParameters, CompletionHandler&lt;void(const WebCore::ResourceError&amp;, const WebCore::ResourceResponse&amp;, const RefPtr&lt;JSON::Object&gt;&amp;)&gt;&amp;&amp; completionHandler) {
&gt; 
&gt; Could use auto&amp;&amp; loadParameters, auto&amp;&amp; completionHandler.

It sounds like black magic. Fixed.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkSession.cpp:127
&gt;&gt;              return;
&gt; 
&gt; We probably need to call completionHandler if weakThis is null.
&gt; No need to capture &apos;this&apos; as well.
&gt; You could replace with PrivateClickMeasurementNetworkLoader::start(*weakThis,...

Fixed.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkSession.h:218
&gt;&gt; +    HashSet&lt;std::unique_ptr&lt;PrivateClickMeasurementNetworkLoader&gt;&gt; m_privateClickMeasurementNetworkLoaders;
&gt; 
&gt; I think Alex added support for map/set of UniqueRef. You could have a try here.

I&apos;m not sure though.

&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:155
&gt;&gt; +    ASSERT(m_networkLoadFunction);
&gt; 
&gt; You could add this one in the constructor if we pass it a construction time.

Fixed.

&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:156
&gt;&gt; +    m_networkLoadFunction(WTFMove(loadParameters), [weakThis = makeWeakPtr(*this), this, attribution = WTFMove(attribution), callback = WTFMove(callback)] (const WebCore::ResourceError&amp; error, const WebCore::ResourceResponse&amp; response, const RefPtr&lt;JSON::Object&gt;&amp; jsonObject) mutable {
&gt; 
&gt; Could use more auto.

Fixed.

&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:166
&gt;&gt; +            m_networkProcess-&gt;broadcastConsoleMessage(weakThis-&gt;m_sessionID, MessageSource::PrivateClickMeasurement, MessageLevel::Error, makeString(&quot;[Private Click Measurement] JSON response is empty for token public key request.&quot;_s));
&gt; 
&gt; Either stop capture &apos;this&apos; and use weakThis everywhere or use this.
&gt; Do we need the call to makeString?

Fixed.

&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementNetworkLoader.cpp:41
&gt;&gt; +    auto loader = std::unique_ptr&lt;PrivateClickMeasurementNetworkLoader&gt;(new PrivateClickMeasurementNetworkLoader(session, WTFMove(parameters), WTFMove(completionHandler)));
&gt; 
&gt; makeUnique?

No, we couldn&apos;t. The constructor is private.

&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementNetworkLoader.cpp:79
&gt;&gt; +            m_decoder = TextResourceDecoder::create(&quot;application/json&quot;_s, &quot;UTF-8&quot;);
&gt; 
&gt; Could use a one liner maybe:
&gt; m_decoder = TextResourceDecoder::create(&quot;application/json&quot;_s,  m_response.textEncodingName().isEmpty() ? TextEncoding(&quot;UTF-8&quot;) : TextEncoding(m_response.textEncodingName()));

Fixed.

&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementNetworkLoader.cpp:92
&gt;&gt; +    if (!jsonValue)
&gt; 
&gt; if (auto jsonValue = ...)

Fixed.

&gt;&gt; LayoutTests/http/tests/privateClickMeasurement/resources/fraudPreventionTestURL.py:60
&gt;&gt; +    &apos;Content-Type: application/json\r\n\r\n&apos;
&gt; 
&gt; We do not check Content-Type in PCM loader.
&gt; Should we do so? Should we test with and without it?
&gt; 
&gt; Do we have coverage for the case of empty application/json body

Added the check, and the test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745308</commentid>
    <comment_count>6</comment_count>
      <attachid>424388</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-03-30 14:11:44 -0700</bug_when>
    <thetext>Comment on attachment 424388
Patch

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

Looks good over all. Please see my comments.

&gt; Source/WebKit/ChangeLog:9
&gt; +        This patch refactors PrivateClickMeasurementManager to use the newly introduced PrivateClickMeasurementNetworkLoader

I would say &quot;... to use a newly introduced ...&quot; since this patch adds that class.

&gt; Source/WebKit/ChangeLog:10
&gt; +        instead of the PingLoad to handle network traffics such that PCMM can then extract contents of the response.

&quot;... such that PCMM can receive and process response bodies.&quot;

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:-125
&gt; -    loadParameters.identifier = ++identifier;

Do we know why NetworkResourceLoadParameters needs an identifier but NetworkLoadParameters doesn&apos;t?

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementNetworkLoader.cpp:64
&gt; +    fail(ResourceError { ResourceError::Type::Cancellation });

Interesting solution.

&gt;&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementNetworkLoader.cpp:79
&gt;&gt;&gt; +            m_decoder = TextResourceDecoder::create(&quot;application/json&quot;_s, &quot;UTF-8&quot;);
&gt;&gt; 
&gt;&gt; Could use a one liner maybe:
&gt;&gt; m_decoder = TextResourceDecoder::create(&quot;application/json&quot;_s,  m_response.textEncodingName().isEmpty() ? TextEncoding(&quot;UTF-8&quot;) : TextEncoding(m_response.textEncodingName()));
&gt; 
&gt; Fixed.

You should use WebCore::HTTPHeaderValues::applicationJSONContentType() and there you&apos;ll see this comment:
    // The default encoding is UTF-8: https://www.ietf.org/rfc/rfc4627.txt.
... which means you don&apos;t need to set UTF-8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745317</commentid>
    <comment_count>7</comment_count>
      <attachid>424388</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-03-30 14:20:31 -0700</bug_when>
    <thetext>Comment on attachment 424388
Patch

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

Thanks John for reviewing the patch.

&gt;&gt; Source/WebKit/ChangeLog:9
&gt;&gt; +        This patch refactors PrivateClickMeasurementManager to use the newly introduced PrivateClickMeasurementNetworkLoader
&gt; 
&gt; I would say &quot;... to use a newly introduced ...&quot; since this patch adds that class.

Fixed.

&gt;&gt; Source/WebKit/ChangeLog:10
&gt;&gt; +        instead of the PingLoad to handle network traffics such that PCMM can then extract contents of the response.
&gt; 
&gt; &quot;... such that PCMM can receive and process response bodies.&quot;

Fixed.

&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:-125
&gt;&gt; -    loadParameters.identifier = ++identifier;
&gt; 
&gt; Do we know why NetworkResourceLoadParameters needs an identifier but NetworkLoadParameters doesn&apos;t?

A good question for Youenn.

&gt;&gt;&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementNetworkLoader.cpp:79
&gt;&gt;&gt;&gt; +            m_decoder = TextResourceDecoder::create(&quot;application/json&quot;_s, &quot;UTF-8&quot;);
&gt;&gt;&gt; 
&gt;&gt;&gt; Could use a one liner maybe:
&gt;&gt;&gt; m_decoder = TextResourceDecoder::create(&quot;application/json&quot;_s,  m_response.textEncodingName().isEmpty() ? TextEncoding(&quot;UTF-8&quot;) : TextEncoding(m_response.textEncodingName()));
&gt;&gt; 
&gt;&gt; Fixed.
&gt; 
&gt; You should use WebCore::HTTPHeaderValues::applicationJSONContentType() and there you&apos;ll see this comment:
&gt;     // The default encoding is UTF-8: https://www.ietf.org/rfc/rfc4627.txt.
&gt; ... which means you don&apos;t need to set UTF-8.

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745328</commentid>
    <comment_count>8</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-03-30 14:33:42 -0700</bug_when>
    <thetext>I filed two follow-up bugs and linked them here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745426</commentid>
    <comment_count>9</comment_count>
      <attachid>424721</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-03-30 17:41:10 -0700</bug_when>
    <thetext>Created attachment 424721
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745428</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-30 17:41:56 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 424721 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745441</commentid>
    <comment_count>11</comment_count>
      <attachid>424724</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-03-30 18:24:23 -0700</bug_when>
    <thetext>Created attachment 424724
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745478</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-30 19:52:42 -0700</bug_when>
    <thetext>Committed r275260: &lt;https://commits.webkit.org/r275260&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 424724.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424386</attachid>
            <date>2021-03-26 11:50:54 -0700</date>
            <delta_ts>2021-03-26 12:05:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222217-20210326115053.patch</filename>
            <type>text/plain</type>
            <size>35193</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0ODE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI1NDg5MmQzODY2MWY5NTQw
YzhjMWZhN2M2NjVkNzViYTY1MTEyMzMuLjU0YjRhNTg0YWI4NWFmYjI3MTkyMzRmZTE5NzYzNjBh
MTFjNGE0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMjEtMDMtMjYgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBQQ006IEludHJvZHVjZSBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjIxNworICAgICAgICA8cmRhcjovLzc0ODE3ODYz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggcmVmYWN0b3JzIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlciB0byB1c2UgdGhl
IG5ld2x5IGludHJvZHVjZWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyCisg
ICAgICAgIGluc3RlYWQgb2YgdGhlIFBpbmdMb2FkIHRvIGhhbmRsZSBuZXR3b3JrIHRyYWZmaWNz
IHN1Y2ggdGhhdCBQQ01NIGNhbiB0aGVuIGV4dHJhY3QgY29udGVudHMgb2YgdGhlIHJlc3BvbnNl
LgorCisgICAgICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlciBpcyBhIHN0
cmlwcGVkIGRvd24gdmVyc2lvbiBvZiB0aGUgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIs
IHdoaWNoIGlzIGFsc28KKyAgICAgICAgYSBkZXJpdmVkIGNsYXNzIG9mIE5ldHdvcmtMb2FkQ2xp
ZW50LgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IHRlc3QgY29udGVudHMgd2l0aGluIGV4aXN0
aW5nIHRlc3QgZmlsZXMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246OmFkZFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xv
YWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpyZW1vdmVQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIpOgorICAgICAgICBNb2RpZmllcyB0aGUgUENNTSB0
byB1c2UgUENNTkwuIEFuZCB0aGVuIGludHJvZHVjZXMgYSBoYXNoIHRhYmxlIHRvIG1hbmFnZSB0
aGUgbGlmZXRpbWUgb2YgZWFjaCBQQ01OTC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
KToKKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVOZXR3b3JrTG9hZFBhcmFtZXRlcnMpOgorICAg
ICAgICAoV2ViS2l0OjpnZW5lcmF0ZU5ldHdvcmtMb2FkUGFyYW1ldGVyc0Zvckh0dHBQb3N0KToK
KyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVOZXR3b3JrTG9hZFBhcmFtZXRlcnNGb3JIdHRwR2V0
KToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRU
b2tlblB1YmxpY0tleSk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5rYWJsZVRva2VuKToKKyAgICAgICAgKFdlYktpdDo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJlQ29udmVyc2lvblJlcXVlc3RJbXBsKToK
KyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnNGb3JIdHRwUG9zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRl
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnNGb3JIdHRwR2V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaDoKKyAg
ICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzZXROZXR3b3Jr
TG9hZEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjpzZXRQaW5nTG9hZEZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgTW9kaWZpZXMg
dGhlIFBDTU0gdG8gdXNlIFBDTU5MLiBTcGVjaWZpY2FsbHksIGNoYW5nZXMgdGhlIHRva2VuX3B1
YmxpY19rZXkgYW5kIHVubGlua2FibGVfdG9rZW4gdG8gYmUgZXh0cmFjdGVkCisgICAgICAgIGZy
b20gdGhlIEpTT04gY29udGVudCBvZiB0aGUgcmVzcG9uc2UuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpz
dGFydCk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xv
YWRlcjo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyKToKKyAgICAgICAgKFdl
YktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpmYWlsKToKKyAgICAg
ICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjp3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnROZXR3b3JrTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6
OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE5ldHdvcmtMb2FkZXI6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpkaWRDb21wbGV0ZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmg6
IEFkZGVkLgorICAgICAgICBJbnRyb2R1Y2VzIHRoZSBQQ01OTC4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eS5oOgorICAg
ICAgICBGaXhlcyBhbiBVbmlmaWVkIEJ1aWxkIGlzc3VlLgorCisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
IFNvbWUgcGFwZXJ3b3JrLgorCiAyMDIxLTAzLTIyICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0dQVVBdIEFkZCBhICJ3YWxsVGltZSIgZmllbGQgdG8gc3RydWN0
IFJlbW90ZU1lZGlhUGxheWVyU3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNzFkNzdkNmM4OGIyM2I1ZTRiODk3MWZkZmRiNzE1
OGI4NTRlM2E2My4uOGE0YmYzNTY0OWQzYjcyZTNmYWJlNjAzMTE5MjMyODhhOTY5NjJmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAg
LTEyMiwxMSArMTIyLDExIEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZWQp
OwogICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBtYWtlVW5pcXVlPFByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlcj4oKnRoaXMsIG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJzLnNl
c3Npb25JRCk7Ci0gICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC0+c2V0UGluZ0xvYWRGdW5j
dGlvbihbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC0+c2V0TmV0d29ya0xvYWRGdW5jdGlvbihbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKV0gKE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVmUHRyPEpTT046Ok9iamVjdD4mKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAvLyBQaW5nTG9hZCBtYW5hZ2VzIGl0cyBvd24gbGlmZXRpbWUsIGRl
bGV0aW5nIGl0c2VsZiB3aGVuIGl0cyBwdXJwb3NlIGhhcyBiZWVuIGZ1bGZpbGxlZC4KLSAgICAg
ICAgbmV3IFBpbmdMb2FkKG1fbmV0d29ya1Byb2Nlc3MsIG1fc2Vzc2lvbklELCBXVEZNb3ZlKGxv
YWRQYXJhbWV0ZXJzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCisgICAgICAgIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6c3RhcnQoKnRoaXMsIFdURk1vdmUo
bG9hZFBhcmFtZXRlcnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CiAj
ZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
aAppbmRleCAxYjYxMjczMGMxNDFkZjFkN2UxODFkYjhkNjU3ZTg5MzA1YzJjYTRhLi44ZDQ5ODc2
YjA2ZDY1NjhkNjMzYzJiNDAwNzNmM2UzNmQxYWQ3OWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNs
dWRlICJOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIgogI2luY2x1ZGUgIlByZWZldGNoQ2Fj
aGUuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuaCIK
ICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaCIKQEAgLTE2MSw2ICsxNjIsOSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEmIGFwcEJvdW5kTmF2aWdhdGlvblRlc3Rp
bmdEYXRhKCkgeyByZXR1cm4gbV9hcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YTsgfQogI2Vu
ZGlmCisKKyAgICB2b2lkIGFkZFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcihz
dGQ6OnVuaXF1ZV9wdHI8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyPiYmIGxv
YWRlcikgeyBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcnMuYWRkKFdURk1v
dmUobG9hZGVyKSk7IH0KKyAgICB2b2lkIHJlbW92ZVByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0
d29ya0xvYWRlcihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIqIGxvYWRlcikg
eyBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcnMucmVtb3ZlKGxvYWRlcik7
IH0KICAgICAKIHByb3RlY3RlZDoKICAgICBOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYs
IGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJik7CkBAIC0yMTAsNiArMjE0
LDggQEAgcHJvdGVjdGVkOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEFwcEJvdW5kTmF2aWdh
dGlvblRlc3RpbmdEYXRhIG1fYXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE7CiAjZW5kaWYK
KworICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0
d29ya0xvYWRlcj4+IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyczsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCmlu
ZGV4IGUyMDI4YTU3ZjJhYmViY2NhOGFkY2RiODhkODFlMzJjNGI4NTYzNzMuLmRkMjUyZDFhMDdj
OGNkNGY1MzUwOTU1M2IwODc4N2U3ZmUzZjU0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
ci5jcHAKQEAgLTU3LDEwICs1Nyw2IEBAIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiBuCiAgICAgLCBt
X25ldHdvcmtTZXNzaW9uKG1ha2VXZWFrUHRyKG5ldHdvcmtTZXNzaW9uKSkKICAgICAsIG1fbmV0
d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQp
Ci0gICAgLCBtX3BpbmdMb2FkRnVuY3Rpb24oW10oTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMmJiBwYXJhbXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgewotICAgICAgICBVTlVTRURfUEFSQU0ocGFyYW1zKTsKLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcigpLCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlKCkpOwotICAgIH0pCiB7CiAgICAgLy8gV2Ugc2hvdWxkIHNlbmQgYW55IHBlbmRpbmcg
YXR0cmlidXRpb25zIG9uIHNlc3Npb24tc3RhcnQgaW4gY2FzZSB0aGVpcgogICAgIC8vIHNlbmQg
ZGVsYXkgaGFzIGV4cGlyZWQgd2hpbGUgdGhlIHNlc3Npb24gd2FzIGNsb3NlZC4gV2FpdGluZyA1
IHNlY29uZHMgYWNjb3VudHMgZm9yIHRoZQpAQCAtMTA1LDEwICsxMDEsOCBAQCB2b2lkIFByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQmJgogI2VuZGlmCiB9CiAKLXN0YXRpYyBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyBnZW5lcmF0ZU5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKFVSTCYmIHVybCwg
Y29uc3QgU3RyaW5nJiBodHRwTWV0aG9kLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGpzb25QYXls
b2FkLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQgZGF0YVR5cGVDYXJy
aWVkKQorc3RhdGljIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBnZW5lcmF0ZU5ldHdvcmtMb2FkUGFy
YW1ldGVycyhVUkwmJiB1cmwsIGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCwgUmVmUHRyPEpTT046
Ok9iamVjdD4mJiBqc29uUGF5bG9hZCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFD
YXJyaWVkIGRhdGFUeXBlQ2FycmllZCkKIHsKLSAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmll
ciA9IDA7Ci0gICAgCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgeyBXVEZNb3ZlKHVybCkg
fTsKICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoaHR0cE1ldGhvZCk7CiAgICAgcmVxdWVzdC5z
ZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNhY2hlQ29udHJvbCwgV2ViQ29yZTo6
SFRUUEhlYWRlclZhbHVlczo6bWF4QWdlMCgpKTsKQEAgLTExNywzMSArMTExLDI0IEBAIHN0YXRp
YyBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBnZW5lcmF0ZU5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzKFVSTCYmCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoV2ViQ29yZTo6
Rm9ybURhdGE6OmNyZWF0ZShqc29uUGF5bG9hZC0+dG9KU09OU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSkpOwogICAgIH0KIAotICAgIEZldGNoT3B0aW9ucyBvcHRpb25zOwotICAgIG9wdGlvbnMuY3Jl
ZGVudGlhbHMgPSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0OwotICAgIG9wdGlvbnMu
cmVkaXJlY3QgPSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0OjpFcnJvcjsKLQotICAgIE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOwotICAgIGxvYWRQYXJhbWV0ZXJz
LmlkZW50aWZpZXIgPSArK2lkZW50aWZpZXI7CisgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIGxv
YWRQYXJhbWV0ZXJzOwogICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QgPSByZXF1ZXN0OwogICAg
IGxvYWRQYXJhbWV0ZXJzLnBhcmVudFBJRCA9IHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwog
ICAgIGxvYWRQYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gU3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzczsKLSAgICBsb2FkUGFyYW1ldGVycy5vcHRp
b25zID0gb3B0aW9uczsKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0ID0gdHJ1ZTsKLSAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRSZXN0
cmljdEhUVFBSZXNwb25zZUFjY2VzcyA9IGZhbHNlOwogICAgIGxvYWRQYXJhbWV0ZXJzLnBjbURh
dGFDYXJyaWVkID0gZGF0YVR5cGVDYXJyaWVkOwotICAgIAorCiAgICAgcmV0dXJuIGxvYWRQYXJh
bWV0ZXJzOwogfQogCi1zdGF0aWMgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgZ2VuZXJh
dGVOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyc0Zvckh0dHBQb3N0KFVSTCYmIHVybCwgUmVm
PEpTT046Ok9iamVjdD4mJiBqc29uUGF5bG9hZCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBj
bURhdGFDYXJyaWVkIGRhdGFUeXBlQ2FycmllZCkKK3N0YXRpYyBOZXR3b3JrTG9hZFBhcmFtZXRl
cnMgZ2VuZXJhdGVOZXR3b3JrTG9hZFBhcmFtZXRlcnNGb3JIdHRwUG9zdChVUkwmJiB1cmwsIFJl
ZjxKU09OOjpPYmplY3Q+JiYganNvblBheWxvYWQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQ
Y21EYXRhQ2FycmllZCBkYXRhVHlwZUNhcnJpZWQpCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMoV1RGTW92ZSh1cmwpLCAiUE9TVCJfcywgV1RGTW92
ZShqc29uUGF5bG9hZCksIGRhdGFUeXBlQ2FycmllZCk7CisgICAgcmV0dXJuIGdlbmVyYXRlTmV0
d29ya0xvYWRQYXJhbWV0ZXJzKFdURk1vdmUodXJsKSwgIlBPU1QiX3MsIFdURk1vdmUoanNvblBh
eWxvYWQpLCBkYXRhVHlwZUNhcnJpZWQpOwogfQogCi1zdGF0aWMgTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMgZ2VuZXJhdGVOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyc0Zvckh0dHBH
ZXQoVVJMJiYgdXJsLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQgZGF0
YVR5cGVDYXJyaWVkKQorc3RhdGljIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBnZW5lcmF0ZU5ldHdv
cmtMb2FkUGFyYW1ldGVyc0Zvckh0dHBHZXQoVVJMJiYgdXJsLCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6UGNtRGF0YUNhcnJpZWQgZGF0YVR5cGVDYXJyaWVkKQogewotICAgIHJldHVybiBnZW5l
cmF0ZU5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKFdURk1vdmUodXJsKSwgIkdFVCJfcywg
bnVsbHB0ciwgZGF0YVR5cGVDYXJyaWVkKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVOZXR3b3JrTG9h
ZFBhcmFtZXRlcnMoV1RGTW92ZSh1cmwpLCAiR0VUIl9zLCBudWxscHRyLCBkYXRhVHlwZUNhcnJp
ZWQpOwogfQogCiB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0VG9rZW5Q
dWJsaWNLZXkoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwgRnVuY3Rpb248
dm9pZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uLCBjb25zdCBTdHJpbmcm
IHB1YmxpY0tleUJhc2U2NFVSTCk+JiYgY2FsbGJhY2spCkBAIC0xNjAsMTIgKzE0NywxMyBAQCB2
b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0VG9rZW5QdWJsaWNLZXkoUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQmJgogICAgIGlmICh0b2tlblB1YmxpY0tleVVSTC5pc0VtcHR5
KCkgfHwgIXRva2VuUHVibGljS2V5VVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byBsb2FkUGFyYW1ldGVycyA9IGdlbmVyYXRlTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnNGb3JIdHRwR2V0KFdURk1vdmUodG9rZW5QdWJsaWNLZXlVUkwpLCBwY21EYXRhQ2Fycmll
ZCk7CisgICAgYXV0byBsb2FkUGFyYW1ldGVycyA9IGdlbmVyYXRlTmV0d29ya0xvYWRQYXJhbWV0
ZXJzRm9ySHR0cEdldChXVEZNb3ZlKHRva2VuUHVibGljS2V5VVJMKSwgcGNtRGF0YUNhcnJpZWQp
OwogCiAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkFib3V0
IHRvIGZpcmUgYSB0b2tlbiBwdWJsaWMga2V5IHJlcXVlc3QuIik7CiAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UobV9zZXNzaW9uSUQsIE1lc3NhZ2VTb3VyY2U6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2YXRlIENs
aWNrIE1lYXN1cmVtZW50XSBBYm91dCB0byBmaXJlIGEgdG9rZW4gcHVibGljIGtleSByZXF1ZXN0
LiJfcyk7CiAKLSAgICBtX3BpbmdMb2FkRnVuY3Rpb24oV1RGTW92ZShsb2FkUGFyYW1ldGVycyks
IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpcywgYXR0cmlidXRpb24gPSBXVEZN
b3ZlKGF0dHJpYnV0aW9uKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkgbXV0YWJsZSB7CisgICAgQVNTRVJUKG1fbmV0d29ya0xvYWRGdW5jdGlv
bik7CisgICAgbV9uZXR3b3JrTG9hZEZ1bmN0aW9uKFdURk1vdmUobG9hZFBhcmFtZXRlcnMpLCBb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXMsIGF0dHJpYnV0aW9uID0gV1RGTW92
ZShhdHRyaWJ1dGlvbiksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIGNvbnN0IFJlZlB0cjxKU09OOjpPYmplY3Q+JiBqc29uT2JqZWN0KSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAt
MTc0LDkgKzE2MiwxMiBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0
VG9rZW5QdWJsaWNLZXkoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJgogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRklYTUUoMjIyMjE3KTogUmV0cmlldmUgdGhl
IHB1YmxpYyBrZXkgZnJvbSB0aGUgY29udGVudCBpbnN0ZWFkIG9mIHRoZSBoZWFkZXIuCi0gICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW5hbWVkIHRvIHRva2VuIHB1YmxpYyBrZXkg
d2l0aG91dCAidW5saW5rYmxlIiBvciAic2VjcmV0IiB3aGVuIDIyMjIxNyBpcyBmaXhlZC4KLSAg
ICAgICAgY2FsbGJhY2soV1RGTW92ZShhdHRyaWJ1dGlvbiksIHJlc3BvbnNlLmh0dHBIZWFkZXJG
aWVsZHMoKS5nZXQoInVubGlua2FibGVfdG9rZW5fcHVibGljX2tleSJfcykpOworICAgICAgICBp
ZiAoIWpzb25PYmplY3QpIHsKKyAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2FkY2Fz
dENvbnNvbGVNZXNzYWdlKHdlYWtUaGlzLT5tX3Nlc3Npb25JRCwgTWVzc2FnZVNvdXJjZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQ
cml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBKU09OIHJlc3BvbnNlIGlzIGVtcHR5IGZvciB0b2tl
biBwdWJsaWMga2V5IHJlcXVlc3QuIl9zKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGF0dHJpYnV0aW9uKSwganNvbk9iamVjdC0+
Z2V0U3RyaW5nKCJ0b2tlbl9wdWJsaWNfa2V5Il9zKSk7CiAgICAgfSk7CiAKIH0KQEAgLTE5Nywx
MiArMTg4LDEzIEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWdu
ZWRVbmxpbmthYmxlVG9rZW4oUHJpdmF0ZUNsaWNrTWVhc3VyCiAgICAgaWYgKHRva2VuU2lnbmF0
dXJlVVJMLmlzRW1wdHkoKSB8fCAhdG9rZW5TaWduYXR1cmVVUkwuaXNWYWxpZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIGxvYWRQYXJhbWV0ZXJzID0gZ2VuZXJhdGVOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVyc0Zvckh0dHBQb3N0KFdURk1vdmUodG9rZW5TaWduYXR1cmVVUkwp
LCBhdHRyaWJ1dGlvbi50b2tlblNpZ25hdHVyZUpTT04oKSwgcGNtRGF0YUNhcnJpZWQpOworICAg
IGF1dG8gbG9hZFBhcmFtZXRlcnMgPSBnZW5lcmF0ZU5ldHdvcmtMb2FkUGFyYW1ldGVyc0Zvckh0
dHBQb3N0KFdURk1vdmUodG9rZW5TaWduYXR1cmVVUkwpLCBhdHRyaWJ1dGlvbi50b2tlblNpZ25h
dHVyZUpTT04oKSwgcGNtRGF0YUNhcnJpZWQpOwogCiAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkFib3V0IHRvIGZpcmUgYSB1bmxpbmthYmxlIHRva2VuIHNp
Z25pbmcgcmVxdWVzdC4iKTsKICAgICBtX25ldHdvcmtQcm9jZXNzLT5icm9hZGNhc3RDb25zb2xl
TWVzc2FnZShtX3Nlc3Npb25JRCwgTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQsIE1lc3NhZ2VMZXZlbDo6TG9nLCAiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEFib3V0
IHRvIGZpcmUgYSB1bmxpbmthYmxlIHRva2VuIHNpZ25pbmcgcmVxdWVzdC4iX3MpOwogCi0gICAg
bV9waW5nTG9hZEZ1bmN0aW9uKFdURk1vdmUobG9hZFBhcmFtZXRlcnMpLCBbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyksIHRoaXMsIGF0dHJpYnV0aW9uID0gV1RGTW92ZShhdHRyaWJ1dGlv
bildIChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIG11dGFibGUgeworICAgIEFTU0VSVChtX25ldHdv
cmtMb2FkRnVuY3Rpb24pOworICAgIG1fbmV0d29ya0xvYWRGdW5jdGlvbihXVEZNb3ZlKGxvYWRQ
YXJhbWV0ZXJzKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzLCBhdHRyaWJ1
dGlvbiA9IFdURk1vdmUoYXR0cmlidXRpb24pXSAoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXJyb3IsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYganNvbk9iamVjdCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTIxMSw5ICsyMDMsMTIgQEAg
dm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVubGlua2FibGVU
b2tlbihQcml2YXRlQ2xpY2tNZWFzdXIKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIC8vIEZJWE1FKDIyMjIxNyk6IFJldHJpZXZlIHRoZSBzaWduYXR1cmUgZnJvbSB0
aGUgY29udGVudCBpbnN0ZWFkIG9mIHRoZSBoZWFkZXIuCi0gICAgICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBiZSByZW5hbWVkIHRvIHVubGlua2FibGUgdG9rZW4gd2hlbiAyMjIyMTcgaXMgZml4
ZWQuCi0gICAgICAgIGF1dG8gc2lnbmF0dXJlQmFzZTY0VVJMID0gcmVzcG9uc2UuaHR0cEhlYWRl
ckZpZWxkcygpLmdldCgic2VjcmV0X3Rva2VuX3NpZ25hdHVyZSJfcyk7CisgICAgICAgIGlmICgh
anNvbk9iamVjdCkgeworICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRjYXN0Q29u
c29sZU1lc3NhZ2Uod2Vha1RoaXMtPm1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZh
dGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEpTT04gcmVzcG9uc2UgaXMgZW1wdHkgZm9yIHRva2VuIHNp
Z25pbmcgcmVxdWVzdC4iX3MpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGF1dG8gc2lnbmF0dXJlQmFzZTY0VVJMID0ganNvbk9iamVjdC0+Z2V0U3RyaW5nKCJ1
bmxpbmthYmxlX3Rva2VuIl9zKTsKICAgICAgICAgaWYgKHNpZ25hdHVyZUJhc2U2NFVSTC5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTMyOCwxMiArMzIzLDEzIEBAIHZvaWQg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJlQ29udmVyc2lvblJlcXVlc3RJbXBs
KGNvbnN0IFByaXZhdGVDbGljCiAgICAgaWYgKGF0dHJpYnV0aW9uVVJMLmlzRW1wdHkoKSB8fCAh
YXR0cmlidXRpb25VUkwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxv
YWRQYXJhbWV0ZXJzID0gZ2VuZXJhdGVOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyc0Zvckh0
dHBQb3N0KFdURk1vdmUoYXR0cmlidXRpb25VUkwpLCBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblJl
cG9ydEpTT04oKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpOb25Q
ZXJzb25hbGx5SWRlbnRpZmlhYmxlKTsKKyAgICBhdXRvIGxvYWRQYXJhbWV0ZXJzID0gZ2VuZXJh
dGVOZXR3b3JrTG9hZFBhcmFtZXRlcnNGb3JIdHRwUG9zdChXVEZNb3ZlKGF0dHJpYnV0aW9uVVJM
KSwgYXR0cmlidXRpb24uYXR0cmlidXRpb25SZXBvcnRKU09OKCksIFByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpQY21EYXRhQ2FycmllZDo6Tm9uUGVyc29uYWxseUlkZW50aWZpYWJsZSk7CiAKICAg
ICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiQWJvdXQgdG8gZmly
ZSBhbiBhdHRyaWJ1dGlvbiByZXF1ZXN0LiIpOwogICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2Fk
Y2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpMb2csICJbUHJpdmF0ZSBDbGljayBNZWFzdXJl
bWVudF0gQWJvdXQgdG8gZmlyZSBhbiBhdHRyaWJ1dGlvbiByZXF1ZXN0LiJfcyk7CiAKLSAgICBt
X3BpbmdMb2FkRnVuY3Rpb24oV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKV0oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSB7CisgICAgQVNTRVJUKG1f
bmV0d29ya0xvYWRGdW5jdGlvbik7CisgICAgbV9uZXR3b3JrTG9hZEZ1bmN0aW9uKFdURk1vdmUo
bG9hZFBhcmFtZXRlcnMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgY29uc3QgUmVmUHRyPEpTT046Ok9iamVjdD4mKSB7CiAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
ci5oCmluZGV4IDc0MWE4MWUwYzU1ZmYzNTk2YzA3MWNhY2Q3N2E0ZGZiN2ExZDMxYzkuLmYwZGIz
MTVmYWQ0M2Q3ZmM1NWNmM2ViMGFhOTBiN2ZkN2UxN2Q3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXIuaApAQCAtMjUsOCArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIk5l
dHdvcmtMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCi0jaW5j
bHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJs
ZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9K
U09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApAQCAtNDYsMTIgKzQ3LDEyIEBAIGNsYXNzIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQcml2YXRlQ2xpY2tNZWFz
dXJlCiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAKLSAgICB1c2luZyBS
ZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5n
IFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ7Ci0gICAgdXNpbmcgU291cmNlU2l0ZSA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpTb3VyY2VTaXRlOwogICAgIHVzaW5nIEF0dHJpYnV0ZU9uU2l0ZSA9IFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGVPblNpdGU7CiAgICAgdXNpbmcgQXR0cmli
dXRpb25UcmlnZ2VyRGF0YSA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRy
aWJ1dGlvblRyaWdnZXJEYXRhOwotCisgICAgdXNpbmcgTmV0d29ya0xvYWRDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYp
PjsKKyAgICB1c2luZyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OworICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW47CisgICAgdXNpbmcgU291cmNlU2l0ZSA9IFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlOwogICAgIGV4cGxpY2l0IFByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlcihOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtQcm9jZXNzJiwgUEFM
OjpTZXNzaW9uSUQpOwogCiAgICAgdm9pZCBzdG9yZVVuYXR0cmlidXRlZChQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCYmKTsKQEAgLTU5LDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIo
KTsKICAgICB2b2lkIGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVE
b21haW4mKTsKICAgICB2b2lkIHRvU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
KT4mJikgY29uc3Q7Ci0gICAgdm9pZCBzZXRQaW5nTG9hZEZ1bmN0aW9uKEZ1bmN0aW9uPHZvaWQo
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpPiYmKT4mJiBwaW5nTG9hZEZ1bmN0aW9uKSB7IG1fcGluZ0xvYWRGdW5jdGlvbiA9IFdU
Rk1vdmUocGluZ0xvYWRGdW5jdGlvbik7IH0KKyAgICB2b2lkIHNldE5ldHdvcmtMb2FkRnVuY3Rp
b24oRnVuY3Rpb248dm9pZChOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29ya0xvYWRDYWxs
YmFjayYmKT4mJiBuZXR3b3JrTG9hZEZ1bmN0aW9uKSB7IG1fbmV0d29ya0xvYWRGdW5jdGlvbiA9
IFdURk1vdmUobmV0d29ya0xvYWRGdW5jdGlvbik7IH0KICAgICB2b2lkIHNldE92ZXJyaWRlVGlt
ZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUpIHsgbV9pc1J1bm5pbmdUZXN0ID0gdmFsdWU7IH0KICAg
ICB2b2lkIHNldFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhVUkwmJik7CiAgICAgdm9pZCBz
ZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoVVJMJiYpOwpAQCAtODgsNyArODksNyBAQCBw
cml2YXRlOgogICAgIFdlYWtQdHI8TmV0d29ya1Nlc3Npb24+IG1fbmV0d29ya1Nlc3Npb247CiAg
ICAgUmVmPE5ldHdvcmtQcm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOwogICAgIFBBTDo6U2Vzc2lv
bklEIG1fc2Vzc2lvbklEOwotICAgIEZ1bmN0aW9uPHZvaWQoTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpPiYmKT4gbV9waW5nTG9h
ZEZ1bmN0aW9uOworICAgIEZ1bmN0aW9uPHZvaWQoTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYsIE5l
dHdvcmtMb2FkQ2FsbGJhY2smJik+IG1fbmV0d29ya0xvYWRGdW5jdGlvbjsKIAogICAgIHN0cnVj
dCBBdHRyaWJ1dGlvblJlcG9ydFRlc3RDb25maWcgewogICAgICAgICBVUkwgYXR0cmlidXRpb25S
ZXBvcnRTb3VyY2VVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmI0NGZjOGFmMGM5YWE5NjFhOTQxZmY2NDRiMmVmMzZmZTZiZjZmYgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmNwcApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE5ldHdvcmtMb2FkZXIuaCIKKworI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCisjaW5jbHVkZSAi
TmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1RleHRSZXNvdXJjZURlY29kZXIu
aD4KKworI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwordm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE5ldHdvcmtMb2FkZXI6OnN0YXJ0KE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrTG9h
ZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGF1dG8gbG9hZGVyID0gc3RkOjp1bmlxdWVfcHRyPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50TmV0d29ya0xvYWRlcj4obmV3IFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRl
cihzZXNzaW9uLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkpOworICAgIHNlc3Npb24uYWRkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVy
KFdURk1vdmUobG9hZGVyKSk7Cit9CisKK1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xv
YWRlcjo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyKE5ldHdvcmtTZXNzaW9u
JiBzZXNzaW9uLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBDYWxsYmFjayYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIDogbV9zZXNzaW9uKG1ha2VXZWFrUHRyKHNlc3Npb24p
KQorICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkK
K3sKKyAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51
bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksICptX3Nlc3Npb24pOworICAgIG1fbmV0d29ya0xv
YWQtPnN0YXJ0KCk7Cit9CisKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9h
ZGVyOjpmYWlsKFJlc291cmNlRXJyb3ImJiBlcnJvcikKK3sKKyAgICBpZiAoIW1fY29tcGxldGlv
bkhhbmRsZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShlcnJvciksIHsgfSwgbnVsbHB0cik7CisgICAgZGlkQ29tcGxldGUoKTsKK30KKwordm9p
ZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJl
c3BvbnNlJiYpCit7CisgICAgZmFpbChSZXNvdXJjZUVycm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlw
ZTo6Q2FuY2VsbGF0aW9uIH0pOworfQorCit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0
d29ya0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQ
b2xpY3lBY3Rpb246OlVzZSk7Cit9CisKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3
b3JrTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3sKKyAgICBpZiAoIW1fZGVjb2Rlcikgewor
ICAgICAgICBpZiAoIW1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGlj
YXRpb24vanNvbiJfcywgbV9yZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUo
ImFwcGxpY2F0aW9uL2pzb24iX3MsICJVVEYtOCIpOworICAgIH0KKworICAgIGlmIChhdXRvIHNp
emUgPSBidWZmZXItPnNpemUoKSkKKyAgICAgICAgbV9qc29uU3RyaW5nLmFwcGVuZChtX2RlY29k
ZXItPmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOworfQorCit2b2lkIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmKQoreworICAgIGlmIChtX2RlY29kZXIpCisgICAgICAgIG1f
anNvblN0cmluZy5hcHBlbmQobV9kZWNvZGVyLT5mbHVzaCgpKTsKKworICAgIGF1dG8ganNvblZh
bHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihtX2pzb25TdHJpbmcudG9TdHJpbmcoKSk7Cisg
ICAgaWYgKCFqc29uVmFsdWUpCisgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoeyB9LCBtX3Jl
c3BvbnNlLCBudWxscHRyKTsKKyAgICBlbHNlCisgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIo
eyB9LCBtX3Jlc3BvbnNlLCBqc29uVmFsdWUtPmFzT2JqZWN0KCkpOworCisgICAgZGlkQ29tcGxl
dGUoKTsKK30KKwordm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6OmRp
ZEZhaWxMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGZhaWwoUmVz
b3VyY2VFcnJvcihlcnJvcikpOworfQorCit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0
d29ya0xvYWRlcjo6ZGlkQ29tcGxldGUoKQoreworICAgIG1fbmV0d29ya0xvYWQgPSBudWxscHRy
OworICAgIGlmIChtX3Nlc3Npb24pCisgICAgICAgIG1fc2Vzc2lvbi0+cmVtb3ZlUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5
NzJkMDVlNWNiZmQ4OGVkNjM2OTMxOTdlNWQ2MDVmYjMwZDM0ZjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0
d29ya0xvYWRlci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCisjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQu
aCIKKyNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1RleHRSZXNvdXJjZURlY29kZXIuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgTmV0d29ya1Nlc3Npb247CisKK2NsYXNzIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29y
a0xvYWRlciBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrTG9hZENsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdXNpbmcgQ2FsbGJhY2sgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVmUHRyPEpTT046Ok9iamVjdD4mKT47CisgICAg
c3RhdGljIHZvaWQgc3RhcnQoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMm
JiwgQ2FsbGJhY2smJik7CisKK3ByaXZhdGU6CisgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRO
ZXR3b3JrTG9hZGVyKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYsIENh
bGxiYWNrJiYpOworCisgICAgLy8gTmV0d29ya0xvYWRDbGllbnQuCisgICAgdm9pZCBkaWRTZW5k
RGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90
YWxCeXRlc1RvQmVTZW50KSBmaW5hbCB7IH0KKyAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9y
Q3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgd2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOworICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpIGZpbmFsOworCisgICAgdm9pZCBmYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik7
CisgICAgdm9pZCBkaWRDb21wbGV0ZSgpOworCisgICAgV2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4g
bV9zZXNzaW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4gbV9uZXR3b3JrTG9h
ZDsKKyAgICBDYWxsYmFjayBtX2NvbXBsZXRpb25IYW5kbGVyOworCisgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXh0UmVzb3Vy
Y2VEZWNvZGVyPiBtX2RlY29kZXI7CisgICAgU3RyaW5nQnVpbGRlciBtX2pzb25TdHJpbmc7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1h
bmFnZXJQcm94eS5oCmluZGV4IGZhMmQ2MTgzMTZhMDA5YzQ2MDAyYzdkODg0YWVmZjM1ZTdiZDAx
NWIuLjg1Yzc2ZDE4MGEyOGU2M2FlOTM1MjIxOGU3NmU1MmY4NWNlZDM1MzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3Rl
TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogI2lm
IEVOQUJMRShXRUJfUlRDKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlckNvbm5lY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JUQ0RhdGFDaGFubmVsUmVtb3Rl
U291cmNlQ29ubmVjdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CmluZGV4IDNlZWQ0YjJhMDdlMGNlOTYwY2MzOTFmYzFkNjRkMDI4MTc4MzA1MzYuLjZjNDAxMDYx
OTIxM2Y4YjZmYzQzNTI5MjEyOWI0ZDA1OTJjOTgyOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNTgsNiAr
NTgsNyBAQCBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
Y3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyLmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIu
Y3BwCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIu
Y3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQWN0aXZpdHlUcmFja2VyLmNwcAogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2Yzc3ZDBkMTU1M2VkODk4NjlkMmExMDlh
OThmNzU1NTAwYmUwZTRhLi4xM2M2NWI5ZDdlYmM4YTFmNWQ0MzdjNGQ5NjExNzY3OWNhZDJkMzMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEyMTQsNiArMTIxNCw3IEBACiAJCTU3RkQzMTg1MjJCMzUxNjkwMDhEMEU4QiAvKiBTT0F1
dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1N0ZEMzE3QzIyQjM1MTRBMDA4RDBFOEIgLyogU09BdXRob3JpemF0aW9uU2Vz
c2lvbi5oICovOyB9OwogCQk1N0ZEMzE4NjIyQjM1MTZDMDA4RDBFOEIgLyogU3ViRnJhbWVTT0F1
dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1N0ZEMzE3RDIyQjM1MTRBMDA4RDBFOEIgLyogU3ViRnJhbWVTT0F1dGhvcml6
YXRpb25TZXNzaW9uLmggKi87IH07CiAJCTU3RkQzMTg3MjJCMzUxNzAwMDhEMEU4QiAvKiBXS1NP
QXV0aG9yaXphdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1N0ZEMzE3MTIyQjM1MTQ4MDA4RDBFOEIgLyogV0tTT0F1dGhvcml6YXRp
b25EZWxlZ2F0ZS5oICovOyB9OworCQk1N0ZFNjg4QzI2MEFCQjNEMDBCRjQ1RTQgLyogUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0ZFNjg4QTI2MEFCQjNEMDBCRjQ1RTQgLyogUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmggKi87IH07CiAJCTVDMEIxNzc4MUU3Qzg4
MEUwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMEIxNzc0MUU3Qzg3
OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKIAkJNUMwQjE3NzkxRTdDODgyMTAwRTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzBCMTc3NjFFN0M4NzlDMDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFtTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLzsgfTsKIAkJNUMxMjFFODQyNDEwMjA4RDAwNDg2RjlCIC8qIEZyYW1lVHJlZU5v
ZGVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzEyMUU4MzI0MTAxRjcwMDA0ODZGOUIgLyogRnJhbWVUcmVlTm9kZURhdGEuaCAqLzsgfTsKQEAg
LTQzMjIsNiArNDMyMyw4IEBACiAJCTU3RkQzMTdEMjJCMzUxNEEwMDhEMEU4QiAvKiBTdWJGcmFt
ZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3RkQzMTdFMjJCMzUxNEEwMDhEMEU4QiAvKiBXS1NPQXV0aG9yaXphdGlvbkRl
bGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTT0F1
dGhvcml6YXRpb25EZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdG
RDMxN0YyMkIzNTE0QTAwOEQwRThCIC8qIFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTT0F1dGhvcml6YXRpb25TZXNzaW9u
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0ZFNjg4QTI2MEFCQjNEMDBCRjQ1
RTQgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1N0ZFNjg4QjI2MEFCQjNEMDBCRjQ1RTQgLyogUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVD
bGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDMDA5OTNCMjQxN0ZCN0UwMEQ1M0MyNSAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
QzBBMTBDMTIzNTI0MUEzMDA1M0UyQ0EgLyogTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtTY2hlbWVSZWdpc3RyeS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMEIxNzc0MUU3Qzg3OUMwMEU5MTIz
QyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2
ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3JrU29ja2V0U3RyZWFt
TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
QEAgLTg0OTEsNiArODQ5NCw4IEBACiAJCQkJODNBMEVEMzIxRjc0N0NDNjAwMzI5OUVCIC8qIFBy
ZWNvbm5lY3RUYXNrLmggKi8sCiAJCQkJNkJEMDU4NjQyMjBDRThDMjAwMEJFRDVDIC8qIFByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAgKi8sCiAJCQkJNkJEMDU4NjMyMjBDRThDMjAw
MEJFRDVDIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oICovLAorCQkJCTU3RkU2
ODhCMjYwQUJCM0QwMEJGNDVFNCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2Fk
ZXIuY3BwICovLAorCQkJCTU3RkU2ODhBMjYwQUJCM0QwMEJGNDVFNCAvKiBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuaCAqLywKIAkJCQlFMUI3ODQ3MDE2M0YyNDY5MDAwN0I2
OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCAqLywKIAkJCQk0MTI4N0Q0RDIyNUMxNjFG
MDA5QTNFMjYgLyogV2ViU29ja2V0VGFzay5oICovLAogCQkJKTsKQEAgLTEyMDAxLDYgKzEyMDA2
LDcgQEAKIAkJCQlBQUIxNDVFNjIyM0Y5MzEyMDBFNDg5RDggLyogUHJlZmV0Y2hDYWNoZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTFDQzFCOTAxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNkJEMDU4NjUyMjBDRThDMjAwMEJFRDVDIC8qIFByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTdGRTY4OEMyNjBB
QkIzRDAwQkY0NUU0IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODZGOTUzNjUxOEZGNThGNTAwMURCMkVGIC8qIFByb2Nlc3NBc3Nl
cnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUE3QzU4MTEzNkUxOUMwMEZCNzE2NyAvKiBQ
cm9jZXNzTGF1bmNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2M0ZENDgyMUVCOTRFQzAwMEEy
OTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDBjNTdkOTJjNzU3MDQzYmMxYjBmMGRiMGU0NTE3ODQ0ODEzNGRiYmYuLjA2NzlkYTU5YWJlODcy
NjJmOGM1NDk1OWMxYWFkMDM5YTJjNDZkOTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0w
My0yNiAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFBDTTog
SW50cm9kdWNlIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjE3CisgICAgICAgIDxy
ZGFyOi8vNzQ4MTc4NjM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9m
cmF1ZFByZXZlbnRpb25UZXN0VVJMLnB5OgorICAgICAgICBDaGFuZ2VzIHRoZSB0b2tlbl9wdWJs
aWNfa2V5IGFuZCB1bmxpbmthYmxlX3Rva2VuIHRvIGJlIHJldHVybmVkIHZpYSBKU09OIGNvbnRl
bnRzLgorCiAyMDIxLTAzLTIyICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0dQVVBdIEFkZCBhICJ3YWxsVGltZSIgZmllbGQgdG8gc3RydWN0IFJlbW90ZU1lZGlh
UGxheWVyU3RhdGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2ZyYXVkUHJldmVudGlvblRlc3RVUkwucHkgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9mcmF1
ZFByZXZlbnRpb25UZXN0VVJMLnB5CmluZGV4IDYxODg1YzJhYTMzNGFjNTBiNGUwNzllMTAyNWM1
OGZjYWJhNjg0YjcuLmRkN2EwMzgwMDEyNWI1MDRkOTIyY2FjODBkMDVjMGM4YzgyMTJhOWEgMTAw
NzU1Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
cmVzb3VyY2VzL2ZyYXVkUHJldmVudGlvblRlc3RVUkwucHkKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZnJhdWRQcmV2ZW50aW9u
VGVzdFVSTC5weQpAQCAtNTYsOCArNTYsNyBAQCBpZiBpc19sYXN0X3JlcXVlc3Q6CiAKIHN5cy5z
dGRvdXQud3JpdGUoCiAgICAgJ3N0YXR1czogMjAxXHJcbicKLSAgICAndW5saW5rYWJsZV90b2tl
bl9wdWJsaWNfa2V5OiBBQkNEXHJcbicKLSAgICAnc2VjcmV0X3Rva2VuX3NpZ25hdHVyZTogQUJD
RFxyXG4nCiAgICAgJ1NldC1Db29raWU6IGNvb2tpZVNldEluVG9rZW5TaWduaW5nUmVzcG9uc2U9
MTsgcGF0aD0vXHJcbicKLSAgICAnQ29udGVudC1UeXBlOiB0ZXh0L2h0bWxcclxuXHJcbicKKyAg
ICAnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXHJcblxyXG4nCisgICAgJ3sidG9rZW5f
cHVibGljX2tleSI6ICJBQkNEIiwgInVubGlua2FibGVfdG9rZW4iOiAiQUJDRCJ9JwogKQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424388</attachid>
            <date>2021-03-26 12:05:45 -0700</date>
            <delta_ts>2021-03-30 00:39:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222217-20210326120544.patch</filename>
            <type>text/plain</type>
            <size>35268</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU5NTg3ZjVkZjNjNDNmNjNk
YTg5NmIwZWQxNWJmMjllZTk4ZDFkNjEuLjljODk1MTQzMzhiNzMzMWIxYWZkMmYwMGUxYjQ4M2Nh
Njg1Mzc0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMjEtMDMtMjYgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBQQ006IEludHJvZHVjZSBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjIxNworICAgICAgICA8cmRhcjovLzc0ODE3ODYz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggcmVmYWN0b3JzIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlciB0byB1c2UgdGhl
IG5ld2x5IGludHJvZHVjZWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyCisg
ICAgICAgIGluc3RlYWQgb2YgdGhlIFBpbmdMb2FkIHRvIGhhbmRsZSBuZXR3b3JrIHRyYWZmaWNz
IHN1Y2ggdGhhdCBQQ01NIGNhbiB0aGVuIGV4dHJhY3QgY29udGVudHMgb2YgdGhlIHJlc3BvbnNl
LgorCisgICAgICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlciBpcyBhIHN0
cmlwcGVkIGRvd24gdmVyc2lvbiBvZiB0aGUgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIs
IHdoaWNoIGlzIGFsc28KKyAgICAgICAgYSBkZXJpdmVkIGNsYXNzIG9mIE5ldHdvcmtMb2FkQ2xp
ZW50LgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IHRlc3QgY29udGVudHMgd2l0aGluIGV4aXN0
aW5nIHRlc3QgZmlsZXMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246OmFkZFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xv
YWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpyZW1vdmVQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIpOgorICAgICAgICBNb2RpZmllcyB0aGUgUENNTSB0
byB1c2UgUENNTkwuIEFuZCB0aGVuIGludHJvZHVjZXMgYSBoYXNoIHRhYmxlIHRvIG1hbmFnZSB0
aGUgbGlmZXRpbWUgb2YgZWFjaCBQQ01OTC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
KToKKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVOZXR3b3JrTG9hZFBhcmFtZXRlcnMpOgorICAg
ICAgICAoV2ViS2l0OjpnZW5lcmF0ZU5ldHdvcmtMb2FkUGFyYW1ldGVyc0Zvckh0dHBQb3N0KToK
KyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVOZXR3b3JrTG9hZFBhcmFtZXRlcnNGb3JIdHRwR2V0
KToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRU
b2tlblB1YmxpY0tleSk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5rYWJsZVRva2VuKToKKyAgICAgICAgKFdlYktpdDo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJlQ29udmVyc2lvblJlcXVlc3RJbXBsKToK
KyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnNGb3JIdHRwUG9zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRl
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnNGb3JIdHRwR2V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaDoKKyAg
ICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzZXROZXR3b3Jr
TG9hZEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjpzZXRQaW5nTG9hZEZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgTW9kaWZpZXMg
dGhlIFBDTU0gdG8gdXNlIFBDTU5MLiBTcGVjaWZpY2FsbHksIGNoYW5nZXMgdGhlIHRva2VuX3B1
YmxpY19rZXkgYW5kIHVubGlua2FibGVfdG9rZW4gdG8gYmUgZXh0cmFjdGVkCisgICAgICAgIGZy
b20gdGhlIEpTT04gY29udGVudCBvZiB0aGUgcmVzcG9uc2UuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpz
dGFydCk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xv
YWRlcjo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyKToKKyAgICAgICAgKFdl
YktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpmYWlsKToKKyAgICAg
ICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjp3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnROZXR3b3JrTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6
OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE5ldHdvcmtMb2FkZXI6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpkaWRDb21wbGV0ZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmg6
IEFkZGVkLgorICAgICAgICBJbnRyb2R1Y2VzIHRoZSBQQ01OTC4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eS5oOgorICAg
ICAgICBGaXhlcyBhbiBVbmlmaWVkIEJ1aWxkIGlzc3VlLgorCisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
IFNvbWUgcGFwZXJ3b3JrLgorCiAyMDIxLTAzLTI2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRA
YXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IGxvZ2dpbmcgbWluaW1hbCBpbmZvIGFib3V0IHVw
bG9hZGluZyBtZWRpYSBmaWxlcyBpbiB0aGUgc3lzdGVtIGRpYWdub3NlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IGFiZjJmN2ZhNGFm
NTM2Mjk1ZGJkY2M3MGU1NjljMzZmMmU4MTQ4NTcuLmZlZmJkZTkzOTQxYjI5MGM3NDk0MTQwMzE1
ODdkZmYyN2UzODZjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwCkBAIC0xMjIsMTEgKzEyMiwxMSBAQCBOZXR3b3JrU2Vzc2lvbjo6TmV0
d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3Jr
U2VzcwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5lbmFibGVkKTsKICAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gbWFr
ZVVuaXF1ZTxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KCp0aGlzLCBuZXR3b3JrUHJv
Y2VzcywgcGFyYW1ldGVycy5zZXNzaW9uSUQpOwotICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQtPnNldFBpbmdMb2FkRnVuY3Rpb24oW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyldKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeworICAgIG1f
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQtPnNldE5ldHdvcmtMb2FkRnVuY3Rpb24oW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiBsb2Fk
UGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlZlB0cjxK
U09OOjpPYmplY3Q+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgLy8gUGluZ0xvYWQgbWFuYWdlcyBp
dHMgb3duIGxpZmV0aW1lLCBkZWxldGluZyBpdHNlbGYgd2hlbiBpdHMgcHVycG9zZSBoYXMgYmVl
biBmdWxmaWxsZWQuCi0gICAgICAgIG5ldyBQaW5nTG9hZChtX25ldHdvcmtQcm9jZXNzLCBtX3Nl
c3Npb25JRCwgV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKworICAgICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6OnN0
YXJ0KCp0aGlzLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogICAgIH0pOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggYWYzNGY4MjViNmFlNWE2NGUzMDNjOWY0M2Y0ZmJk
NjYzNThlNGE3Ny4uZDg5NjYwZDU0N2I1MWUyNDE2Y2JlZjJiMDQzZDQwMzkzODI2NWMxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMjcs
NiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCIKICNp
bmNsdWRlICJQcmVmZXRjaENhY2hlLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnROZXR3b3JrTG9hZGVyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCkBAIC0xNjEsNiArMTYyLDkgQEAgcHVibGljOgogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJiBhcHBC
b3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSgpIHsgcmV0dXJuIG1fYXBwQm91bmROYXZpZ2F0aW9u
VGVzdGluZ0RhdGE7IH0KICNlbmRpZgorCisgICAgdm9pZCBhZGRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE5ldHdvcmtMb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFByaXZhdGVDbGlja01lYXN1cmVtZW50
TmV0d29ya0xvYWRlcj4mJiBsb2FkZXIpIHsgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdv
cmtMb2FkZXJzLmFkZChXVEZNb3ZlKGxvYWRlcikpOyB9CisgICAgdm9pZCByZW1vdmVQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3
b3JrTG9hZGVyKiBsb2FkZXIpIHsgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2Fk
ZXJzLnJlbW92ZShsb2FkZXIpOyB9CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgTmV0d29ya1Nlc3Np
b24oTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cyYpOwpAQCAtMjEwLDYgKzIxNCw4IEBAIHByb3RlY3RlZDoKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBtX2FwcEJvdW5kTmF2aWdhdGlvblRl
c3RpbmdEYXRhOwogI2VuZGlmCisKKyAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI+PiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50
TmV0d29ya0xvYWRlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyLmNwcAppbmRleCBhYjFmZDM4ZDY0M2Q0ZDc2Y2Y3YzA5NzVmZmY1MDg4NGYy
NDcxN2U0Li43NDU3MjVjZWUxYjk3ZjA0OWQxMDczOTEyNjRkMGQ5MWNmZjcyMjM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCkBAIC01NywxMCArNTcsNiBAQCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXI6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcihOZXR3b3Jr
U2Vzc2lvbiYgbgogICAgICwgbV9uZXR3b3JrU2Vzc2lvbihtYWtlV2Vha1B0cihuZXR3b3JrU2Vz
c2lvbikpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQogICAgICwgbV9z
ZXNzaW9uSUQoc2Vzc2lvbklEKQotICAgICwgbV9waW5nTG9hZEZ1bmN0aW9uKFtdKE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsKLSAgICAgICAgVU5VU0VEX1BBUkFNKHBhcmFt
cyk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OlJlc291cmNlRXJyb3IoKSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSgpKTsKLSAgICB9KQogewogICAgIC8vIFdlIHNob3Vs
ZCBzZW5kIGFueSBwZW5kaW5nIGF0dHJpYnV0aW9ucyBvbiBzZXNzaW9uLXN0YXJ0IGluIGNhc2Ug
dGhlaXIKICAgICAvLyBzZW5kIGRlbGF5IGhhcyBleHBpcmVkIHdoaWxlIHRoZSBzZXNzaW9uIHdh
cyBjbG9zZWQuIFdhaXRpbmcgNSBzZWNvbmRzIGFjY291bnRzIGZvciB0aGUKQEAgLTEwNSwxMCAr
MTAxLDggQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnN0b3JlVW5hdHRy
aWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYKICNlbmRpZgogfQogCi1zdGF0aWMgTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgZ2VuZXJhdGVOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyhVUkwmJiB1cmwsIGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCwgUmVmUHRyPEpTT046
Ok9iamVjdD4mJiBqc29uUGF5bG9hZCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFD
YXJyaWVkIGRhdGFUeXBlQ2FycmllZCkKK3N0YXRpYyBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgZ2Vu
ZXJhdGVOZXR3b3JrTG9hZFBhcmFtZXRlcnMoVVJMJiYgdXJsLCBjb25zdCBTdHJpbmcmIGh0dHBN
ZXRob2QsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYganNvblBheWxvYWQsIFByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpQY21EYXRhQ2FycmllZCBkYXRhVHlwZUNhcnJpZWQpCiB7Ci0gICAgc3RhdGlj
IHVpbnQ2NF90IGlkZW50aWZpZXIgPSAwOwotICAgIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0IHsgV1RGTW92ZSh1cmwpIH07CiAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKGh0dHBNZXRo
b2QpOwogICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDYWNo
ZUNvbnRyb2wsIFdlYkNvcmU6OkhUVFBIZWFkZXJWYWx1ZXM6Om1heEFnZTAoKSk7CkBAIC0xMTcs
MzEgKzExMSwyNCBAQCBzdGF0aWMgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgZ2VuZXJh
dGVOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyhVUkwmJgogICAgICAgICByZXF1ZXN0LnNl
dEhUVFBCb2R5KFdlYkNvcmU6OkZvcm1EYXRhOjpjcmVhdGUoanNvblBheWxvYWQtPnRvSlNPTlN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICB9CiAKLSAgICBGZXRjaE9wdGlvbnMgb3B0aW9u
czsKLSAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6
T21pdDsKLSAgICBvcHRpb25zLnJlZGlyZWN0ID0gRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6RXJy
b3I7Ci0KLSAgICBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsK
LSAgICBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyID0gKytpZGVudGlmaWVyOworICAgIE5ldHdv
cmtMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsKICAgICBsb2FkUGFyYW1ldGVycy5yZXF1
ZXN0ID0gcmVxdWVzdDsKICAgICBsb2FkUGFyYW1ldGVycy5wYXJlbnRQSUQgPSBwcmVzZW50aW5n
QXBwbGljYXRpb25QSUQoKTsKICAgICBsb2FkUGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSA9IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3M7Ci0gICAg
bG9hZFBhcmFtZXRlcnMub3B0aW9ucyA9IG9wdGlvbnM7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hv
dWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCA9IHRydWU7Ci0gICAgbG9hZFBh
cmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgPSBmYWxzZTsKICAgICBs
b2FkUGFyYW1ldGVycy5wY21EYXRhQ2FycmllZCA9IGRhdGFUeXBlQ2FycmllZDsKLSAgICAKKwog
ICAgIHJldHVybiBsb2FkUGFyYW1ldGVyczsKIH0KIAotc3RhdGljIE5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzIGdlbmVyYXRlTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnNGb3JIdHRw
UG9zdChVUkwmJiB1cmwsIFJlZjxKU09OOjpPYmplY3Q+JiYganNvblBheWxvYWQsIFByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZCBkYXRhVHlwZUNhcnJpZWQpCitzdGF0aWMg
TmV0d29ya0xvYWRQYXJhbWV0ZXJzIGdlbmVyYXRlTmV0d29ya0xvYWRQYXJhbWV0ZXJzRm9ySHR0
cFBvc3QoVVJMJiYgdXJsLCBSZWY8SlNPTjo6T2JqZWN0PiYmIGpzb25QYXlsb2FkLCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQgZGF0YVR5cGVDYXJyaWVkKQogewotICAg
IHJldHVybiBnZW5lcmF0ZU5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKFdURk1vdmUodXJs
KSwgIlBPU1QiX3MsIFdURk1vdmUoanNvblBheWxvYWQpLCBkYXRhVHlwZUNhcnJpZWQpOworICAg
IHJldHVybiBnZW5lcmF0ZU5ldHdvcmtMb2FkUGFyYW1ldGVycyhXVEZNb3ZlKHVybCksICJQT1NU
Il9zLCBXVEZNb3ZlKGpzb25QYXlsb2FkKSwgZGF0YVR5cGVDYXJyaWVkKTsKIH0KIAotc3RhdGlj
IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIGdlbmVyYXRlTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnNGb3JIdHRwR2V0KFVSTCYmIHVybCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OlBjbURhdGFDYXJyaWVkIGRhdGFUeXBlQ2FycmllZCkKK3N0YXRpYyBOZXR3b3JrTG9hZFBhcmFt
ZXRlcnMgZ2VuZXJhdGVOZXR3b3JrTG9hZFBhcmFtZXRlcnNGb3JIdHRwR2V0KFVSTCYmIHVybCwg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkIGRhdGFUeXBlQ2FycmllZCkK
IHsKLSAgICByZXR1cm4gZ2VuZXJhdGVOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyhXVEZN
b3ZlKHVybCksICJHRVQiX3MsIG51bGxwdHIsIGRhdGFUeXBlQ2FycmllZCk7CisgICAgcmV0dXJu
IGdlbmVyYXRlTmV0d29ya0xvYWRQYXJhbWV0ZXJzKFdURk1vdmUodXJsKSwgIkdFVCJfcywgbnVs
bHB0ciwgZGF0YVR5cGVDYXJyaWVkKTsKIH0KIAogdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXI6OmdldFRva2VuUHVibGljS2V5KFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0
cmlidXRpb24sIEZ1bmN0aW9uPHZvaWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1
dGlvbiwgY29uc3QgU3RyaW5nJiBwdWJsaWNLZXlCYXNlNjRVUkwpPiYmIGNhbGxiYWNrKQpAQCAt
MTYwLDEyICsxNDcsMTMgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6Omdl
dFRva2VuUHVibGljS2V5KFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYKICAgICBpZiAodG9rZW5Q
dWJsaWNLZXlVUkwuaXNFbXB0eSgpIHx8ICF0b2tlblB1YmxpY0tleVVSTC5pc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbG9hZFBhcmFtZXRlcnMgPSBnZW5lcmF0ZU5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzRm9ySHR0cEdldChXVEZNb3ZlKHRva2VuUHVibGljS2V5
VVJMKSwgcGNtRGF0YUNhcnJpZWQpOworICAgIGF1dG8gbG9hZFBhcmFtZXRlcnMgPSBnZW5lcmF0
ZU5ldHdvcmtMb2FkUGFyYW1ldGVyc0Zvckh0dHBHZXQoV1RGTW92ZSh0b2tlblB1YmxpY0tleVVS
TCksIHBjbURhdGFDYXJyaWVkKTsKIAogICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQsICJBYm91dCB0byBmaXJlIGEgdG9rZW4gcHVibGljIGtleSByZXF1ZXN0LiIp
OwogICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vzc2lv
bklELCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVs
OjpMb2csICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQWJvdXQgdG8gZmlyZSBhIHRva2Vu
IHB1YmxpYyBrZXkgcmVxdWVzdC4iX3MpOwogCi0gICAgbV9waW5nTG9hZEZ1bmN0aW9uKFdURk1v
dmUobG9hZFBhcmFtZXRlcnMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXMs
IGF0dHJpYnV0aW9uID0gV1RGTW92ZShhdHRyaWJ1dGlvbiksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldIChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIG11dGFibGUgeworICAgIEFTU0VSVCht
X25ldHdvcmtMb2FkRnVuY3Rpb24pOworICAgIG1fbmV0d29ya0xvYWRGdW5jdGlvbihXVEZNb3Zl
KGxvYWRQYXJhbWV0ZXJzKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzLCBh
dHRyaWJ1dGlvbiA9IFdURk1vdmUoYXR0cmlidXRpb24pLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXSAoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZWZQdHI8SlNPTjo6T2JqZWN0
PiYganNvbk9iamVjdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTE3NCw5ICsxNjIsMTIgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXI6OmdldFRva2VuUHVibGljS2V5KFByaXZhdGVDbGlja01lYXN1cmVtZW50
JiYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEZJWE1FKDIy
MjIxNyk6IFJldHJpZXZlIHRoZSBwdWJsaWMga2V5IGZyb20gdGhlIGNvbnRlbnQgaW5zdGVhZCBv
ZiB0aGUgaGVhZGVyLgotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVuYW1lZCB0
byB0b2tlbiBwdWJsaWMga2V5IHdpdGhvdXQgInVubGlua2JsZSIgb3IgInNlY3JldCIgd2hlbiAy
MjIyMTcgaXMgZml4ZWQuCi0gICAgICAgIGNhbGxiYWNrKFdURk1vdmUoYXR0cmlidXRpb24pLCBy
ZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuZ2V0KCJ1bmxpbmthYmxlX3Rva2VuX3B1YmxpY19r
ZXkiX3MpKTsKKyAgICAgICAgaWYgKCFqc29uT2JqZWN0KSB7CisgICAgICAgICAgICBtX25ldHdv
cmtQcm9jZXNzLT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZSh3ZWFrVGhpcy0+bV9zZXNzaW9uSUQs
IE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gSlNPTiByZXNwb25z
ZSBpcyBlbXB0eSBmb3IgdG9rZW4gcHVibGljIGtleSByZXF1ZXN0LiJfcykpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShhdHRyaWJ1
dGlvbiksIGpzb25PYmplY3QtPmdldFN0cmluZygidG9rZW5fcHVibGljX2tleSJfcykpOwogICAg
IH0pOwogCiB9CkBAIC0xOTcsMTIgKzE4OCwxMyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5rYWJsZVRva2VuKFByaXZhdGVDbGlja01lYXN1cgog
ICAgIGlmICh0b2tlblNpZ25hdHVyZVVSTC5pc0VtcHR5KCkgfHwgIXRva2VuU2lnbmF0dXJlVVJM
LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBsb2FkUGFyYW1ldGVycyA9
IGdlbmVyYXRlTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnNGb3JIdHRwUG9zdChXVEZNb3Zl
KHRva2VuU2lnbmF0dXJlVVJMKSwgYXR0cmlidXRpb24udG9rZW5TaWduYXR1cmVKU09OKCksIHBj
bURhdGFDYXJyaWVkKTsKKyAgICBhdXRvIGxvYWRQYXJhbWV0ZXJzID0gZ2VuZXJhdGVOZXR3b3Jr
TG9hZFBhcmFtZXRlcnNGb3JIdHRwUG9zdChXVEZNb3ZlKHRva2VuU2lnbmF0dXJlVVJMKSwgYXR0
cmlidXRpb24udG9rZW5TaWduYXR1cmVKU09OKCksIHBjbURhdGFDYXJyaWVkKTsKIAogICAgIFJF
TEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJBYm91dCB0byBmaXJlIGEg
dW5saW5rYWJsZSB0b2tlbiBzaWduaW5nIHJlcXVlc3QuIik7CiAgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UobV9zZXNzaW9uSUQsIE1lc3NhZ2VTb3VyY2U6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2YXRlIENsaWNr
IE1lYXN1cmVtZW50XSBBYm91dCB0byBmaXJlIGEgdW5saW5rYWJsZSB0b2tlbiBzaWduaW5nIHJl
cXVlc3QuIl9zKTsKIAotICAgIG1fcGluZ0xvYWRGdW5jdGlvbihXVEZNb3ZlKGxvYWRQYXJhbWV0
ZXJzKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzLCBhdHRyaWJ1dGlvbiA9
IFdURk1vdmUoYXR0cmlidXRpb24pXSAoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJy
b3IsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBtdXRhYmxlIHsK
KyAgICBBU1NFUlQobV9uZXR3b3JrTG9hZEZ1bmN0aW9uKTsKKyAgICBtX25ldHdvcmtMb2FkRnVu
Y3Rpb24oV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKSwgdGhpcywgYXR0cmlidXRpb24gPSBXVEZNb3ZlKGF0dHJpYnV0aW9uKV0gKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgY29uc3QgUmVmUHRyPEpTT046Ok9iamVjdD4mIGpzb25PYmplY3QpIG11
dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCkBA
IC0yMTEsOSArMjAzLDEyIEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpn
ZXRTaWduZWRVbmxpbmthYmxlVG9rZW4oUHJpdmF0ZUNsaWNrTWVhc3VyCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICAvLyBGSVhNRSgyMjIyMTcpOiBSZXRyaWV2ZSB0
aGUgc2lnbmF0dXJlIGZyb20gdGhlIGNvbnRlbnQgaW5zdGVhZCBvZiB0aGUgaGVhZGVyLgotICAg
ICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVuYW1lZCB0byB1bmxpbmthYmxlIHRva2Vu
IHdoZW4gMjIyMjE3IGlzIGZpeGVkLgotICAgICAgICBhdXRvIHNpZ25hdHVyZUJhc2U2NFVSTCA9
IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5nZXQoInNlY3JldF90b2tlbl9zaWduYXR1cmUi
X3MpOworICAgICAgICBpZiAoIWpzb25PYmplY3QpIHsKKyAgICAgICAgICAgIG1fbmV0d29ya1By
b2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKHdlYWtUaGlzLT5tX3Nlc3Npb25JRCwgTWVz
c2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBKU09OIHJlc3BvbnNlIGlz
IGVtcHR5IGZvciB0b2tlbiBzaWduaW5nIHJlcXVlc3QuIl9zKSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHNpZ25hdHVyZUJhc2U2NFVSTCA9IGpzb25P
YmplY3QtPmdldFN0cmluZygidW5saW5rYWJsZV90b2tlbiJfcyk7CiAgICAgICAgIGlmIChzaWdu
YXR1cmVCYXNlNjRVUkwuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zMjgs
MTIgKzMyMywxMyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6ZmlyZUNv
bnZlcnNpb25SZXF1ZXN0SW1wbChjb25zdCBQcml2YXRlQ2xpYwogICAgIGlmIChhdHRyaWJ1dGlv
blVSTC5pc0VtcHR5KCkgfHwgIWF0dHJpYnV0aW9uVVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byBsb2FkUGFyYW1ldGVycyA9IGdlbmVyYXRlTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnNGb3JIdHRwUG9zdChXVEZNb3ZlKGF0dHJpYnV0aW9uVVJMKSwgYXR0cmli
dXRpb24uYXR0cmlidXRpb25SZXBvcnRKU09OKCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQ
Y21EYXRhQ2FycmllZDo6Tm9uUGVyc29uYWxseUlkZW50aWZpYWJsZSk7CisgICAgYXV0byBsb2Fk
UGFyYW1ldGVycyA9IGdlbmVyYXRlTmV0d29ya0xvYWRQYXJhbWV0ZXJzRm9ySHR0cFBvc3QoV1RG
TW92ZShhdHRyaWJ1dGlvblVSTCksIGF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uUmVwb3J0SlNPTigp
LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6Ok5vblBlcnNvbmFsbHlJ
ZGVudGlmaWFibGUpOwogCiAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCwgIkFib3V0IHRvIGZpcmUgYW4gYXR0cmlidXRpb24gcmVxdWVzdC4iKTsKICAgICBtX25l
dHdvcmtQcm9jZXNzLT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShtX3Nlc3Npb25JRCwgTWVzc2Fn
ZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6TG9nLCAiW1By
aXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEFib3V0IHRvIGZpcmUgYW4gYXR0cmlidXRpb24gcmVx
dWVzdC4iX3MpOwogCi0gICAgbV9waW5nTG9hZEZ1bmN0aW9uKFdURk1vdmUobG9hZFBhcmFtZXRl
cnMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImIGVycm9yLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkgeworICAgIEFTU0VSVChtX25ldHdvcmtMb2FkRnVuY3Rpb24pOworICAgIG1fbmV0d29ya0xv
YWRGdW5jdGlvbihXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpXShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlZlB0cjxKU09OOjpPYmpl
Y3Q+JikgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXIuaAppbmRleCA3ZTRlYmJlZmU2OWVmNmM3OTdiMTk0Y2NlY2Y2
OWM4MDZhYmIzNWI2Li45MzM3YmMwNjlkOWY2YTE0YWEyZjIyNmU1MmJiMjA2NDI1MmFkNzIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzcy5oIgotI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
RXJyb3IuaD4KQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQ2LDEyICs0NywxMiBAQCBj
bGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8UHJpdmF0ZUNsaWNrTWVhc3VyZQogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogCi0gICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjsKLSAgICB1c2luZyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OwotICAgIHVzaW5nIFNvdXJjZVNpdGUgPSBXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZTsKICAgICB1c2luZyBBdHRyaWJ1dGlv
bkRlc3RpbmF0aW9uU2l0ZSA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRy
aWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZTsKICAgICB1c2luZyBBdHRyaWJ1dGlvblRyaWdnZXJEYXRh
ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRh
dGE7Ci0KKyAgICB1c2luZyBOZXR3b3JrTG9hZENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIGNvbnN0IFJlZlB0cjxKU09OOjpPYmplY3Q+Jik+OworICAgIHVzaW5nIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7
CisgICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bjsKKyAgICB1c2luZyBTb3VyY2VTaXRlID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OlNvdXJjZVNpdGU7CiAgICAgZXhwbGljaXQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya1Byb2Nlc3MmLCBQQUw6OlNlc3Npb25JRCk7CiAK
ICAgICB2b2lkIHN0b3JlVW5hdHRyaWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYpOwpA
QCAtNTksNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcigpOwogICAgIHZvaWQgY2xl
YXJGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIHZv
aWQgdG9TdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKSBjb25zdDsKLSAg
ICB2b2lkIHNldFBpbmdMb2FkRnVuY3Rpb24oRnVuY3Rpb248dm9pZChOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik+JiYpPiYmIHBp
bmdMb2FkRnVuY3Rpb24pIHsgbV9waW5nTG9hZEZ1bmN0aW9uID0gV1RGTW92ZShwaW5nTG9hZEZ1
bmN0aW9uKTsgfQorICAgIHZvaWQgc2V0TmV0d29ya0xvYWRGdW5jdGlvbihGdW5jdGlvbjx2b2lk
KE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmLCBOZXR3b3JrTG9hZENhbGxiYWNrJiYpPiYmIG5ldHdv
cmtMb2FkRnVuY3Rpb24pIHsgbV9uZXR3b3JrTG9hZEZ1bmN0aW9uID0gV1RGTW92ZShuZXR3b3Jr
TG9hZEZ1bmN0aW9uKTsgfQogICAgIHZvaWQgc2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9v
bCB2YWx1ZSkgeyBtX2lzUnVubmluZ1Rlc3QgPSB2YWx1ZTsgfQogICAgIHZvaWQgc2V0VG9rZW5Q
dWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVSTCYmKTsKICAgICB2b2lkIHNldFRva2VuU2lnbmF0dXJl
VVJMRm9yVGVzdGluZyhVUkwmJik7CkBAIC04OCw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgV2Vh
a1B0cjxOZXR3b3JrU2Vzc2lvbj4gbV9uZXR3b3JrU2Vzc2lvbjsKICAgICBSZWY8TmV0d29ya1By
b2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7
Ci0gICAgRnVuY3Rpb248dm9pZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik+JiYpPiBtX3BpbmdMb2FkRnVuY3Rpb247CisgICAg
RnVuY3Rpb248dm9pZChOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29ya0xvYWRDYWxsYmFj
ayYmKT4gbV9uZXR3b3JrTG9hZEZ1bmN0aW9uOwogCiAgICAgc3RydWN0IEF0dHJpYnV0aW9uUmVw
b3J0VGVzdENvbmZpZyB7CiAgICAgICAgIFVSTCBhdHRyaWJ1dGlvblJlcG9ydFNvdXJjZVVSTDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnROZXR3b3JrTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjQ0
ZmM4YWYwYzlhYTk2MWE5NDFmZjY0NGIyZWYzNmZlNmJmNmZiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdv
cmtMb2FkZXIuY3BwCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5o
IgorCisjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvVGV4dFJlc291cmNlRGVjb2Rlci5oPgorCisjaW5jbHVkZSA8
d3RmL0pTT05WYWx1ZXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6
c3RhcnQoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMsIENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBsb2Fk
ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVy
PihuZXcgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyKHNlc3Npb24sIFdURk1v
dmUocGFyYW1ldGVycyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgc2Vzc2lv
bi5hZGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIoV1RGTW92ZShsb2FkZXIp
KTsKK30KKworUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdv
cmtMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgOiBtX3Nlc3Npb24obWFrZVdlYWtQdHIoc2Vzc2lvbikpCisgICAgLCBtX2NvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQoreworICAgIG1fbmV0d29y
a0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShw
YXJhbWV0ZXJzKSwgKm1fc2Vzc2lvbik7CisgICAgbV9uZXR3b3JrTG9hZC0+c3RhcnQoKTsKK30K
Kwordm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6OmZhaWwoUmVzb3Vy
Y2VFcnJvciYmIGVycm9yKQoreworICAgIGlmICghbV9jb21wbGV0aW9uSGFuZGxlcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGVycm9yKSwgeyB9
LCBudWxscHRyKTsKKyAgICBkaWRDb21wbGV0ZSgpOworfQorCit2b2lkIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TmV0d29ya0xvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJikKK3sKKyAg
ICBmYWlsKFJlc291cmNlRXJyb3IgeyBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24g
fSk7Cit9CisKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9yZXNwb25zZSA9IFdU
Rk1vdmUocmVzcG9uc2UpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6VXNl
KTsKK30KKwordm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKQoreworICAgIGlmICghbV9kZWNvZGVyKSB7CisgICAgICAgIGlmICghbV9y
ZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9kZWNv
ZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi9qc29uIl9zLCBt
X3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24vanNv
biJfcywgIlVURi04Iik7CisgICAgfQorCisgICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6
ZSgpKQorICAgICAgICBtX2pzb25TdHJpbmcuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZl
ci0+ZGF0YSgpLCBzaXplKSk7Cit9CisKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3
b3JrTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpCit7CisgICAgaWYgKG1fZGVjb2RlcikKKyAgICAgICAgbV9qc29uU3RyaW5nLmFwcGVu
ZChtX2RlY29kZXItPmZsdXNoKCkpOworCisgICAgYXV0byBqc29uVmFsdWUgPSBKU09OOjpWYWx1
ZTo6cGFyc2VKU09OKG1fanNvblN0cmluZy50b1N0cmluZygpKTsKKyAgICBpZiAoIWpzb25WYWx1
ZSkKKyAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcih7IH0sIG1fcmVzcG9uc2UsIG51bGxwdHIp
OworICAgIGVsc2UKKyAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcih7IH0sIG1fcmVzcG9uc2Us
IGpzb25WYWx1ZS0+YXNPYmplY3QoKSk7CisKKyAgICBkaWRDb21wbGV0ZSgpOworfQorCit2b2lk
IFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgZmFpbChSZXNvdXJjZUVycm9yKGVycm9y
KSk7Cit9CisKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpkaWRD
b21wbGV0ZSgpCit7CisgICAgbV9uZXR3b3JrTG9hZCA9IG51bGxwdHI7CisgICAgaWYgKG1fc2Vz
c2lvbikKKyAgICAgICAgbV9zZXNzaW9uLT5yZW1vdmVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5l
dHdvcmtMb2FkZXIodGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5l
dHdvcmtMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTk3MmQwNWU1Y2JmZDg4ZWQ2
MzY5MzE5N2U1ZDYwNWZiMzBkMzRmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmgKQEAg
LTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTmV0
d29ya0xvYWQuaCIKKyNpbmNsdWRlICJOZXR3b3JrTG9hZENsaWVudC5oIgorI2luY2x1ZGUgIk5l
dHdvcmtMb2FkUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvVGV4dFJlc291cmNlRGVj
b2Rlci5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrU2Vzc2lv
bjsKKworY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyIGZpbmFsIDog
cHVibGljIE5ldHdvcmtMb2FkQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICB1c2luZyBDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYpPjsKKyAgICBzdGF0aWMgdm9pZCBzdGFy
dChOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmLCBDYWxsYmFjayYmKTsK
KworcHJpdmF0ZToKKyAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIoTmV0
d29ya1Nlc3Npb24mLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiwgQ2FsbGJhY2smJik7CisKKyAg
ICAvLyBOZXR3b3JrTG9hZENsaWVudC4KKyAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
IGZpbmFsIHsgfQorICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9p
ZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CisK
KyAgICB2b2lkIGZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKKyAgICB2b2lkIGRpZENv
bXBsZXRlKCk7CisKKyAgICBXZWFrUHRyPE5ldHdvcmtTZXNzaW9uPiBtX3Nlc3Npb247CisgICAg
c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiBtX25ldHdvcmtMb2FkOworICAgIENhbGxiYWNr
IG1fY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7CisgICAgUmVmUHRyPFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVj
b2RlcjsKKyAgICBTdHJpbmdCdWlsZGVyIG1fanNvblN0cmluZzsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5LmgKaW5k
ZXggZmEyZDYxODMxNmEwMDljNDYwMDJjN2Q4ODRhZWZmMzVlN2JkMDE1Yi4uODVjNzZkMTgwYTI4
ZTYzYWU5MzUyMjE4ZTc2ZTUyZjg1Y2VkMzUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJl
bW90ZU1hbmFnZXJQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWYgRU5BQkxFKFdFQl9SVEMp
CiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2VDb25uZWN0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggM2VlZDRiMmEw
N2UwY2U5NjBjYzM5MWZjMWQ2NGQwMjgxNzgzMDUzNi4uNmM0MDEwNjE5MjEzZjhiNmZjNDM1Mjky
MTI5YjRkMDU5MmM5ODI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC01OCw2ICs1OCw3IEBAIEdQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKIEdQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCiAKIE5ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKK05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5jcHAKIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtBY3Rpdml0eVRyYWNrZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDdlZmY0ZjI2ZTMzNTEyMmIwZjZlYjU5Y2I4MDE0YzExYmFkZTBlZWYu
LjZjNjMzMDk4MmJjMTJiNjM1MmNmOTAzMjljZTRlMmQ0ZGZkMTY2NmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIxNSw2ICsxMjE1
LDcgQEAKIAkJNTdGRDMxODYyMkIzNTE2QzAwOEQwRThCIC8qIFN1YkZyYW1lU09BdXRob3JpemF0
aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTdGRDMxN0QyMkIzNTE0QTAwOEQwRThCIC8qIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vz
c2lvbi5oICovOyB9OwogCQk1N0ZEMzE4NzIyQjM1MTcwMDA4RDBFOEIgLyogV0tTT0F1dGhvcml6
YXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTdGRDMxNzEyMkIzNTE0ODAwOEQwRThCIC8qIFdLU09BdXRob3JpemF0aW9uRGVsZWdh
dGUuaCAqLzsgfTsKIAkJNTdGRTY4NkQyNjA0ODI3ODAwQkY0NUU0IC8qIF9XS0F1dGhlbnRpY2F0
b3JBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1N0ZFNjg2QzI2MDQ4Mjc4MDBCRjQ1RTQgLyogX1dLQXV0aGVudGljYXRvckF0dGFjaG1l
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1
N0ZFNjg4QzI2MEFCQjNEMDBCRjQ1RTQgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3Jr
TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
N0ZFNjg4QTI2MEFCQjNEMDBCRjQ1RTQgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3Jr
TG9hZGVyLmggKi87IH07CiAJCTVDMEIxNzc4MUU3Qzg4MEUwMEU5MTIzQyAvKiBOZXR3b3JrU29j
a2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDMEIxNzc0MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29j
a2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNUMwQjE3NzkxRTdDODgyMTAw
RTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzBCMTc3NjFFN0M4NzlDMDBFOTEy
M0MgLyogV2ViU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNUMxMjFF
ODQyNDEwMjA4RDAwNDg2RjlCIC8qIEZyYW1lVHJlZU5vZGVEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzEyMUU4MzI0MTAxRjcwMDA0ODZGOUIg
LyogRnJhbWVUcmVlTm9kZURhdGEuaCAqLzsgfTsKQEAgLTQzMjYsNiArNDMyNyw4IEBACiAJCTU3
RkQzMTdFMjJCMzUxNEEwMDhEMEU4QiAvKiBXS1NPQXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTT0F1dGhvcml6YXRpb25E
ZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdGRDMxN0YyMkIzNTE0
QTAwOEQwRThCIC8qIFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1N0ZFNjg2QzI2MDQ4Mjc4MDBCRjQ1RTQgLyogX1dLQXV0
aGVudGljYXRvckF0dGFjaG1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXV0aGVudGljYXRvckF0
dGFjaG1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdGRTY4OEEyNjBBQkIz
RDAwQkY0NUU0IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdGRTY4OEIyNjBBQkIzRDAwQkY0NUU0IC8qIFByaXZh
dGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzAwOTkzQjI0MTdGQjdFMDBENTNDMjUgLyogUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUMwQTEwQzEyMzUyNDFBMzAwNTNFMkNBIC8qIE5ldHdvcmtTY2hlbWVSZWdpc3RyeS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrU2NoZW1lUmVn
aXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzBCMTc3NDFFN0M4NzlD
MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvTmV0d29ya1NvY2tl
dFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CkBAIC04NDk1LDYgKzg0OTgsOCBAQAogCQkJCTgzQTBFRDMyMUY3NDdDQzYwMDMyOTlF
QiAvKiBQcmVjb25uZWN0VGFzay5oICovLAogCQkJCTZCRDA1ODY0MjIwQ0U4QzIwMDBCRUQ1QyAv
KiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwICovLAogCQkJCTZCRDA1ODYzMjIw
Q0U4QzIwMDBCRUQ1QyAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCAqLywKKwkJ
CQk1N0ZFNjg4QjI2MEFCQjNEMDBCRjQ1RTQgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3
b3JrTG9hZGVyLmNwcCAqLywKKwkJCQk1N0ZFNjg4QTI2MEFCQjNEMDBCRjQ1RTQgLyogUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmggKi8sCiAJCQkJRTFCNzg0NzAxNjNGMjQ2
OTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmggKi8sCiAJCQkJNDEyODdENEQy
MjVDMTYxRjAwOUEzRTI2IC8qIFdlYlNvY2tldFRhc2suaCAqLywKIAkJCSk7CkBAIC0xMjAwNyw2
ICsxMjAxMiw3IEBACiAJCQkJQUFCMTQ1RTYyMjNGOTMxMjAwRTQ4OUQ4IC8qIFByZWZldGNoQ2Fj
aGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQ0MxQjkwMTJEN0VBREYwMDYyNTgzOCAvKiBQcmlu
dEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTZCRDA1ODY1MjIwQ0U4QzIwMDBCRUQ1QyAvKiBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3RkU2
ODhDMjYwQUJCM0QwMEJGNDVFNCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2Fk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2Rjk1MzY1MThGRjU4RjUwMDFEQjJFRiAvKiBQcm9j
ZXNzQXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFBN0M1ODExMzZFMTlDMDBGQjcx
NjcgLyogUHJvY2Vzc0xhdW5jaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjNGRDQ4MjFFQjk0
RUMwMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2ZmFhNTYwMTc4MTcyOWUyZjhkZTc4OTlmMzA4MzU4MzNkODMwNGUwLi45ZDQ1ZDAz
YTEwZmE2NmUwNWNjNjNmZjZkYjAwNjAxOWMyOWNlNTg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMjEtMDMtMjYgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAg
ICBQQ006IEludHJvZHVjZSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjIxNworICAg
ICAgICA8cmRhcjovLzc0ODE3ODYzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNv
dXJjZXMvZnJhdWRQcmV2ZW50aW9uVGVzdFVSTC5weToKKyAgICAgICAgQ2hhbmdlcyB0aGUgdG9r
ZW5fcHVibGljX2tleSBhbmQgdW5saW5rYWJsZV90b2tlbiB0byBiZSByZXR1cm5lZCB2aWEgSlNP
TiBjb250ZW50cy4KKwogMjAyMS0wMy0yNiAgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpA
aWdhbGlhLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgY2FjaGVkUHJvcGVydHlWYWx1ZSBmb3Ig
V2ViWFIgW1NhbWVPYmplY3RdIGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2ZyYXVkUHJldmVudGlv
blRlc3RVUkwucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L3Jlc291cmNlcy9mcmF1ZFByZXZlbnRpb25UZXN0VVJMLnB5CmluZGV4IDYxODg1YzJhYTMz
NGFjNTBiNGUwNzllMTAyNWM1OGZjYWJhNjg0YjcuLmRkN2EwMzgwMDEyNWI1MDRkOTIyY2FjODBk
MDVjMGM4YzgyMTJhOWEgMTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2ZyYXVkUHJldmVudGlvblRlc3RVUkwucHkKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJj
ZXMvZnJhdWRQcmV2ZW50aW9uVGVzdFVSTC5weQpAQCAtNTYsOCArNTYsNyBAQCBpZiBpc19sYXN0
X3JlcXVlc3Q6CiAKIHN5cy5zdGRvdXQud3JpdGUoCiAgICAgJ3N0YXR1czogMjAxXHJcbicKLSAg
ICAndW5saW5rYWJsZV90b2tlbl9wdWJsaWNfa2V5OiBBQkNEXHJcbicKLSAgICAnc2VjcmV0X3Rv
a2VuX3NpZ25hdHVyZTogQUJDRFxyXG4nCiAgICAgJ1NldC1Db29raWU6IGNvb2tpZVNldEluVG9r
ZW5TaWduaW5nUmVzcG9uc2U9MTsgcGF0aD0vXHJcbicKLSAgICAnQ29udGVudC1UeXBlOiB0ZXh0
L2h0bWxcclxuXHJcbicKKyAgICAnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXHJcblxy
XG4nCisgICAgJ3sidG9rZW5fcHVibGljX2tleSI6ICJBQkNEIiwgInVubGlua2FibGVfdG9rZW4i
OiAiQUJDRCJ9JwogKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="review"
          id="444037"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424721</attachid>
            <date>2021-03-30 17:41:10 -0700</date>
            <delta_ts>2021-03-30 18:24:05 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-222217-20210330174109.patch</filename>
            <type>text/plain</type>
            <size>48459</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU5NTg3ZjVkZjNjNDNmNjNk
YTg5NmIwZWQxNWJmMjllZTk4ZDFkNjEuLmQzODczOGIzNmY2NWNmNjJjZGExM2Q5MTBmMTQ1MjJm
NGQ2MDE0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMjEtMDMtMjYgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBQQ006IEludHJvZHVjZSBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjIxNworICAgICAgICA8cmRhcjovLzc0ODE3ODYz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgVGhpcyBw
YXRjaCByZWZhY3RvcnMgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyIHRvIHVzZSBhIG5l
d2x5IGludHJvZHVjZWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyCisgICAg
ICAgIGluc3RlYWQgb2YgdGhlIFBpbmdMb2FkIHRvIGhhbmRsZSBuZXR3b3JrIHRyYWZmaWNzIHN1
Y2ggdGhhdCBQQ01NIGNhbiByZWNlaXZlIGFuZCBwcm9jZXNzIHJlc3BvbnNlIGJvZGllcy4KKwor
ICAgICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIgaXMgYSBzdHJpcHBl
ZCBkb3duIHZlcnNpb24gb2YgdGhlIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLCB3aGlj
aCBpcyBhbHNvCisgICAgICAgIGEgZGVyaXZlZCBjbGFzcyBvZiBOZXR3b3JrTG9hZENsaWVudC4K
KworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyB0ZXN0IGNvbnRlbnRzIHdpdGhpbiBleGlzdGluZyB0
ZXN0IGZpbGVzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24pOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTZXNzaW9uOjphZGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6cmVtb3ZlUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnROZXR3b3JrTG9hZGVyKToKKyAgICAgICAgTW9kaWZpZXMgdGhlIFBDTU0gdG8gdXNl
IFBDTU5MLiBBbmQgdGhlbiBpbnRyb2R1Y2VzIGEgaGFzaCB0YWJsZSB0byBtYW5hZ2UgdGhlIGxp
ZmV0aW1lIG9mIGVhY2ggUENNTkwuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXI6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcik6Cisg
ICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlTmV0d29ya0xvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAg
KFdlYktpdDo6Z2VuZXJhdGVOZXR3b3JrTG9hZFBhcmFtZXRlcnNGb3JIdHRwUG9zdCk6CisgICAg
ICAgIChXZWJLaXQ6OmdlbmVyYXRlTmV0d29ya0xvYWRQYXJhbWV0ZXJzRm9ySHR0cEdldCk6Cisg
ICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0VG9rZW5Q
dWJsaWNLZXkpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tlbik6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlcjo6ZmlyZUNvbnZlcnNpb25SZXF1ZXN0SW1wbCk6CisgICAg
ICAgIChXZWJLaXQ6OmdlbmVyYXRlTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZU5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzRm9ySHR0cFBvc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZU5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzRm9ySHR0cEdldCk6IERlbGV0ZWQuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmg6CisgICAgICAg
IChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c2V0TmV0d29ya0xvYWRG
dW5jdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
cjo6c2V0UGluZ0xvYWRGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIE1vZGlmaWVzIHRoZSBQ
Q01NIHRvIHVzZSBQQ01OTC4gU3BlY2lmaWNhbGx5LCBjaGFuZ2VzIHRoZSB0b2tlbl9wdWJsaWNf
a2V5IGFuZCB1bmxpbmthYmxlX3Rva2VuIHRvIGJlIGV4dHJhY3RlZAorICAgICAgICBmcm9tIHRo
ZSBKU09OIGNvbnRlbnQgb2YgdGhlIHJlc3BvbnNlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6c3RhcnQp
OgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcik6CisgICAgICAgIChXZWJLaXQ6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6ZmFpbCk6CisgICAgICAgIChX
ZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6d2lsbFNlbmRSZWRp
cmVjdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
TmV0d29ya0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRO
ZXR3b3JrTG9hZGVyOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5oOiBBZGRl
ZC4KKyAgICAgICAgSW50cm9kdWNlcyB0aGUgUENNTkwuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAg
Rml4ZXMgYW4gVW5pZmllZCBCdWlsZCBpc3N1ZS4KKworICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBTb21l
IHBhcGVyd29yay4KKwogMjAyMS0wMy0yNiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxl
LmNvbT4KIAogICAgICAgICBBbGxvdyBsb2dnaW5nIG1pbmltYWwgaW5mbyBhYm91dCB1cGxvYWRp
bmcgbWVkaWEgZmlsZXMgaW4gdGhlIHN5c3RlbSBkaWFnbm9zZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCBhYmYyZjdmYTRhZjUzNjI5
NWRiZGNjNzBlNTY5YzM2ZjJlODE0ODU3Li4wOTY5MTE4ZmViNDMxZWZlMTg1MTRlNTYxZTgyYjVm
ZWM4NDVmNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcApAQCAtMTIxLDEyICsxMjEsMTEgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtT
ZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MK
IAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgc2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycy5lbmFibGVkKTsKLSAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gbWFrZVVu
aXF1ZTxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KCp0aGlzLCBuZXR3b3JrUHJvY2Vz
cywgcGFyYW1ldGVycy5zZXNzaW9uSUQpOwotICAgIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQt
PnNldFBpbmdMb2FkRnVuY3Rpb24oW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyld
KE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeworICAgIG1fcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBtYWtlVW5pcXVlPFByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlcj4oKnRoaXMsIG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJzLnNlc3Npb25JRCwgW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChhdXRvJiYgbG9hZFBhcmFtZXRlcnMsIGF1dG8m
JiBjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAvLyBQaW5nTG9hZCBtYW5hZ2VzIGl0cyBvd24gbGlmZXRpbWUs
IGRlbGV0aW5nIGl0c2VsZiB3aGVuIGl0cyBwdXJwb3NlIGhhcyBiZWVuIGZ1bGZpbGxlZC4KLSAg
ICAgICAgbmV3IFBpbmdMb2FkKG1fbmV0d29ya1Byb2Nlc3MsIG1fc2Vzc2lvbklELCBXVEZNb3Zl
KGxvYWRQYXJhbWV0ZXJzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCisgICAgICAg
IFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6c3RhcnQoKndlYWtUaGlzLCBX
VEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAg
IH0pOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmgKaW5kZXggYWYzNGY4MjViNmFlNWE2NGUzMDNjOWY0M2Y0ZmJkNjYzNThlNGE3Ny4u
ZDg5NjYwZDU0N2I1MWUyNDE2Y2JlZjJiMDQzZDQwMzkzODI2NWMxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMjcsNiArMjcsNyBAQAog
CiAjaW5jbHVkZSAiTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCIKICNpbmNsdWRlICJQcmVm
ZXRjaENhY2hlLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgiCkBAIC0xNjEsNiArMTYyLDkgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJiBhcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YSgpIHsgcmV0dXJuIG1fYXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE7
IH0KICNlbmRpZgorCisgICAgdm9pZCBhZGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtM
b2FkZXIoc3RkOjp1bmlxdWVfcHRyPFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRl
cj4mJiBsb2FkZXIpIHsgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJzLmFk
ZChXVEZNb3ZlKGxvYWRlcikpOyB9CisgICAgdm9pZCByZW1vdmVQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE5ldHdvcmtMb2FkZXIoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyKiBs
b2FkZXIpIHsgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJzLnJlbW92ZShs
b2FkZXIpOyB9CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgTmV0d29ya1Nlc3Npb24oTmV0d29ya1By
b2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYpOwpAQCAtMjEw
LDYgKzIxNCw4IEBAIHByb3RlY3RlZDoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBBcHBCb3Vu
ZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBtX2FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOwog
I2VuZGlmCisKKyAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE5ldHdvcmtMb2FkZXI+PiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRl
cnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
LmNwcAppbmRleCBhYjFmZDM4ZDY0M2Q0ZDc2Y2Y3YzA5NzVmZmY1MDg4NGYyNDcxN2U0Li42MWNl
MzNkYzg1NzcwNzNjMmI4YzhkMmE5MjExYWNkOWE0M2Q3MzhlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXIuY3BwCkBAIC01MiwxNiArNTIsMTUgQEAgdXNpbmcgRXBoZW1lcmFsU291cmNlTm9u
Y2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2U7CiAKIGNv
bnN0ZXhwciBTZWNvbmRzIGRlYnVnTW9kZVNlY29uZHNVbnRpbFNlbmQgeyAxMF9zIH07CiAKLVBy
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCitQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXI6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcihOZXR3b3JrU2Vzc2lv
biYgbmV0d29ya1Nlc3Npb24sIE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkKE5ldHdvcmtMb2FkUGFyYW1ldGVycyYm
LCBOZXR3b3JrTG9hZENhbGxiYWNrJiYpPiYmIG5ldHdvcmtMb2FkRnVuY3Rpb24pCiAgICAgOiBt
X2ZpcmVQZW5kaW5nQXR0cmlidXRpb25SZXF1ZXN0c1RpbWVyKCp0aGlzLCAmUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHMpCiAgICAg
LCBtX25ldHdvcmtTZXNzaW9uKG1ha2VXZWFrUHRyKG5ldHdvcmtTZXNzaW9uKSkKICAgICAsIG1f
bmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9u
SUQpCi0gICAgLCBtX3BpbmdMb2FkRnVuY3Rpb24oW10oTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMmJiBwYXJhbXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgewotICAgICAgICBVTlVTRURfUEFSQU0ocGFyYW1zKTsKLSAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcigpLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlKCkpOwotICAgIH0pCisgICAgLCBtX25ldHdvcmtMb2FkRnVuY3Rpb24oV1RGTW92
ZShuZXR3b3JrTG9hZEZ1bmN0aW9uKSkKIHsKKyAgICBBU1NFUlQobV9uZXR3b3JrTG9hZEZ1bmN0
aW9uKTsKKwogICAgIC8vIFdlIHNob3VsZCBzZW5kIGFueSBwZW5kaW5nIGF0dHJpYnV0aW9ucyBv
biBzZXNzaW9uLXN0YXJ0IGluIGNhc2UgdGhlaXIKICAgICAvLyBzZW5kIGRlbGF5IGhhcyBleHBp
cmVkIHdoaWxlIHRoZSBzZXNzaW9uIHdhcyBjbG9zZWQuIFdhaXRpbmcgNSBzZWNvbmRzIGFjY291
bnRzIGZvciB0aGUKICAgICAvLyBkZWxheSBpbiBkYXRhYmFzZSBzdGFydHVwLgpAQCAtMTA1LDEw
ICsxMDQsOCBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c3RvcmVVbmF0
dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJgogI2VuZGlmCiB9CiAKLXN0YXRpYyBO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBnZW5lcmF0ZU5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzKFVSTCYmIHVybCwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kLCBSZWZQdHI8SlNP
Tjo6T2JqZWN0PiYmIGpzb25QYXlsb2FkLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0
YUNhcnJpZWQgZGF0YVR5cGVDYXJyaWVkKQorc3RhdGljIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBn
ZW5lcmF0ZU5ldHdvcmtMb2FkUGFyYW1ldGVycyhVUkwmJiB1cmwsIGNvbnN0IFN0cmluZyYgaHR0
cE1ldGhvZCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBqc29uUGF5bG9hZCwgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkIGRhdGFUeXBlQ2FycmllZCkKIHsKLSAgICBzdGF0
aWMgdWludDY0X3QgaWRlbnRpZmllciA9IDA7Ci0gICAgCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QgeyBXVEZNb3ZlKHVybCkgfTsKICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoaHR0cE1l
dGhvZCk7CiAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNh
Y2hlQ29udHJvbCwgV2ViQ29yZTo6SFRUUEhlYWRlclZhbHVlczo6bWF4QWdlMCgpKTsKQEAgLTEx
NywzMSArMTE0LDI0IEBAIHN0YXRpYyBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBnZW5l
cmF0ZU5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKFVSTCYmCiAgICAgICAgIHJlcXVlc3Qu
c2V0SFRUUEJvZHkoV2ViQ29yZTo6Rm9ybURhdGE6OmNyZWF0ZShqc29uUGF5bG9hZC0+dG9KU09O
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIH0KIAotICAgIEZldGNoT3B0aW9ucyBvcHRp
b25zOwotICAgIG9wdGlvbnMuY3JlZGVudGlhbHMgPSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxz
OjpPbWl0OwotICAgIG9wdGlvbnMucmVkaXJlY3QgPSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0OjpF
cnJvcjsKLQotICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJz
OwotICAgIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSArK2lkZW50aWZpZXI7CisgICAgTmV0
d29ya0xvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOwogICAgIGxvYWRQYXJhbWV0ZXJzLnJl
cXVlc3QgPSByZXF1ZXN0OwogICAgIGxvYWRQYXJhbWV0ZXJzLnBhcmVudFBJRCA9IHByZXNlbnRp
bmdBcHBsaWNhdGlvblBJRCgpOwogICAgIGxvYWRQYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxz
UG9saWN5ID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzczsKLSAg
ICBsb2FkUGFyYW1ldGVycy5vcHRpb25zID0gb3B0aW9uczsKICAgICBsb2FkUGFyYW1ldGVycy5z
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0ID0gdHJ1ZTsKLSAgICBsb2Fk
UGFyYW1ldGVycy5zaG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFjY2VzcyA9IGZhbHNlOwogICAg
IGxvYWRQYXJhbWV0ZXJzLnBjbURhdGFDYXJyaWVkID0gZGF0YVR5cGVDYXJyaWVkOwotICAgIAor
CiAgICAgcmV0dXJuIGxvYWRQYXJhbWV0ZXJzOwogfQogCi1zdGF0aWMgTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMgZ2VuZXJhdGVOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyc0Zvckh0
dHBQb3N0KFVSTCYmIHVybCwgUmVmPEpTT046Ok9iamVjdD4mJiBqc29uUGF5bG9hZCwgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkIGRhdGFUeXBlQ2FycmllZCkKK3N0YXRp
YyBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgZ2VuZXJhdGVOZXR3b3JrTG9hZFBhcmFtZXRlcnNGb3JI
dHRwUG9zdChVUkwmJiB1cmwsIFJlZjxKU09OOjpPYmplY3Q+JiYganNvblBheWxvYWQsIFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZCBkYXRhVHlwZUNhcnJpZWQpCiB7Ci0g
ICAgcmV0dXJuIGdlbmVyYXRlTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMoV1RGTW92ZSh1
cmwpLCAiUE9TVCJfcywgV1RGTW92ZShqc29uUGF5bG9hZCksIGRhdGFUeXBlQ2FycmllZCk7Cisg
ICAgcmV0dXJuIGdlbmVyYXRlTmV0d29ya0xvYWRQYXJhbWV0ZXJzKFdURk1vdmUodXJsKSwgIlBP
U1QiX3MsIFdURk1vdmUoanNvblBheWxvYWQpLCBkYXRhVHlwZUNhcnJpZWQpOwogfQogCi1zdGF0
aWMgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgZ2VuZXJhdGVOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVyc0Zvckh0dHBHZXQoVVJMJiYgdXJsLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6UGNtRGF0YUNhcnJpZWQgZGF0YVR5cGVDYXJyaWVkKQorc3RhdGljIE5ldHdvcmtMb2FkUGFy
YW1ldGVycyBnZW5lcmF0ZU5ldHdvcmtMb2FkUGFyYW1ldGVyc0Zvckh0dHBHZXQoVVJMJiYgdXJs
LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQgZGF0YVR5cGVDYXJyaWVk
KQogewotICAgIHJldHVybiBnZW5lcmF0ZU5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKFdU
Rk1vdmUodXJsKSwgIkdFVCJfcywgbnVsbHB0ciwgZGF0YVR5cGVDYXJyaWVkKTsKKyAgICByZXR1
cm4gZ2VuZXJhdGVOZXR3b3JrTG9hZFBhcmFtZXRlcnMoV1RGTW92ZSh1cmwpLCAiR0VUIl9zLCBu
dWxscHRyLCBkYXRhVHlwZUNhcnJpZWQpOwogfQogCiB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlcjo6Z2V0VG9rZW5QdWJsaWNLZXkoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBh
dHRyaWJ1dGlvbiwgRnVuY3Rpb248dm9pZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJp
YnV0aW9uLCBjb25zdCBTdHJpbmcmIHB1YmxpY0tleUJhc2U2NFVSTCk+JiYgY2FsbGJhY2spCkBA
IC0xNjAsMjMgKzE1MCwyNiBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6
Z2V0VG9rZW5QdWJsaWNLZXkoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJgogICAgIGlmICh0b2tl
blB1YmxpY0tleVVSTC5pc0VtcHR5KCkgfHwgIXRva2VuUHVibGljS2V5VVJMLmlzVmFsaWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBsb2FkUGFyYW1ldGVycyA9IGdlbmVyYXRlTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnNGb3JIdHRwR2V0KFdURk1vdmUodG9rZW5QdWJsaWNL
ZXlVUkwpLCBwY21EYXRhQ2FycmllZCk7CisgICAgYXV0byBsb2FkUGFyYW1ldGVycyA9IGdlbmVy
YXRlTmV0d29ya0xvYWRQYXJhbWV0ZXJzRm9ySHR0cEdldChXVEZNb3ZlKHRva2VuUHVibGljS2V5
VVJMKSwgcGNtRGF0YUNhcnJpZWQpOwogCiAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCwgIkFib3V0IHRvIGZpcmUgYSB0b2tlbiBwdWJsaWMga2V5IHJlcXVlc3Qu
Iik7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UobV9zZXNz
aW9uSUQsIE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2
ZWw6OkxvZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBBYm91dCB0byBmaXJlIGEgdG9r
ZW4gcHVibGljIGtleSByZXF1ZXN0LiJfcyk7CiAKLSAgICBtX3BpbmdMb2FkRnVuY3Rpb24oV1RG
TW92ZShsb2FkUGFyYW1ldGVycyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhp
cywgYXR0cmlidXRpb24gPSBXVEZNb3ZlKGF0dHJpYnV0aW9uKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0gKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgbXV0YWJsZSB7CisgICAgbV9uZXR3
b3JrTG9hZEZ1bmN0aW9uKFdURk1vdmUobG9hZFBhcmFtZXRlcnMpLCBbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyksIHRoaXMsIGF0dHJpYnV0aW9uID0gV1RGTW92ZShhdHRyaWJ1dGlvbiks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChhdXRvJiBlcnJvciwgYXV0byYgcmVzcG9u
c2UsIGF1dG8mIGpzb25PYmplY3QpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKLSAg
ICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKHdlYWtU
aGlzLT5tX3Nlc3Npb25JRCwgTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQs
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVt
ZW50XSBSZWNlaXZlZCBlcnJvcjogJyJfcywgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSwg
IicgZm9yIHRva2VuIHB1YmxpYyBrZXkgcmVxdWVzdC4iX3MpKTsKKyAgICAgICAgICAgIG1fbmV0
d29ya1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vzc2lvbklELCBNZXNzYWdl
U291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFr
ZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFJlY2VpdmVkIGVycm9yOiAnIl9z
LCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLCAiJyBmb3IgdG9rZW4gcHVibGljIGtleSBy
ZXF1ZXN0LiJfcykpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
Ly8gRklYTUUoMjIyMjE3KTogUmV0cmlldmUgdGhlIHB1YmxpYyBrZXkgZnJvbSB0aGUgY29udGVu
dCBpbnN0ZWFkIG9mIHRoZSBoZWFkZXIuCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBi
ZSByZW5hbWVkIHRvIHRva2VuIHB1YmxpYyBrZXkgd2l0aG91dCAidW5saW5rYmxlIiBvciAic2Vj
cmV0IiB3aGVuIDIyMjIxNyBpcyBmaXhlZC4KLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShhdHRy
aWJ1dGlvbiksIHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5nZXQoInVubGlua2FibGVfdG9r
ZW5fcHVibGljX2tleSJfcykpOworICAgICAgICBpZiAoIWpzb25PYmplY3QpIHsKKyAgICAgICAg
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vzc2lvbklE
LCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpF
cnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEpTT04gcmVzcG9u
c2UgaXMgZW1wdHkgZm9yIHRva2VuIHB1YmxpYyBrZXkgcmVxdWVzdC4iX3MpKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoYXR0cmli
dXRpb24pLCBqc29uT2JqZWN0LT5nZXRTdHJpbmcoInRva2VuX3B1YmxpY19rZXkiX3MpKTsKICAg
ICB9KTsKIAogfQpAQCAtMTk3LDIzICsxOTAsMjYgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tlbihQcml2YXRlQ2xpY2tNZWFzdXIK
ICAgICBpZiAodG9rZW5TaWduYXR1cmVVUkwuaXNFbXB0eSgpIHx8ICF0b2tlblNpZ25hdHVyZVVS
TC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbG9hZFBhcmFtZXRlcnMg
PSBnZW5lcmF0ZU5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzRm9ySHR0cFBvc3QoV1RGTW92
ZSh0b2tlblNpZ25hdHVyZVVSTCksIGF0dHJpYnV0aW9uLnRva2VuU2lnbmF0dXJlSlNPTigpLCBw
Y21EYXRhQ2FycmllZCk7CisgICAgYXV0byBsb2FkUGFyYW1ldGVycyA9IGdlbmVyYXRlTmV0d29y
a0xvYWRQYXJhbWV0ZXJzRm9ySHR0cFBvc3QoV1RGTW92ZSh0b2tlblNpZ25hdHVyZVVSTCksIGF0
dHJpYnV0aW9uLnRva2VuU2lnbmF0dXJlSlNPTigpLCBwY21EYXRhQ2FycmllZCk7CiAKICAgICBS
RUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiQWJvdXQgdG8gZmlyZSBh
IHVubGlua2FibGUgdG9rZW4gc2lnbmluZyByZXF1ZXN0LiIpOwogICAgIG1fbmV0d29ya1Byb2Nl
c3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpMb2csICJbUHJpdmF0ZSBDbGlj
ayBNZWFzdXJlbWVudF0gQWJvdXQgdG8gZmlyZSBhIHVubGlua2FibGUgdG9rZW4gc2lnbmluZyBy
ZXF1ZXN0LiJfcyk7CiAKLSAgICBtX3BpbmdMb2FkRnVuY3Rpb24oV1RGTW92ZShsb2FkUGFyYW1l
dGVycyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpcywgYXR0cmlidXRpb24g
PSBXVEZNb3ZlKGF0dHJpYnV0aW9uKV0gKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgbXV0YWJsZSB7
CisgICAgbV9uZXR3b3JrTG9hZEZ1bmN0aW9uKFdURk1vdmUobG9hZFBhcmFtZXRlcnMpLCBbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXMsIGF0dHJpYnV0aW9uID0gV1RGTW92ZShh
dHRyaWJ1dGlvbildIChhdXRvJiBlcnJvciwgYXV0byYgcmVzcG9uc2UsIGF1dG8mIGpzb25PYmpl
Y3QpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIG1fbmV0d29y
a1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKHdlYWtUaGlzLT5tX3Nlc3Npb25JRCwg
TWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBSZWNlaXZlZCBlcnJv
cjogJyJfcywgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSwgIicgZm9yIHNlY3JldCB0b2tl
biBzaWduaW5nIHJlcXVlc3QuIl9zKSk7CisgICAgICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5i
cm9hZGNhc3RDb25zb2xlTWVzc2FnZShtX3Nlc3Npb25JRCwgTWVzc2FnZVNvdXJjZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQcml2
YXRlIENsaWNrIE1lYXN1cmVtZW50XSBSZWNlaXZlZCBlcnJvcjogJyJfcywgZXJyb3IubG9jYWxp
emVkRGVzY3JpcHRpb24oKSwgIicgZm9yIHNlY3JldCB0b2tlbiBzaWduaW5nIHJlcXVlc3QuIl9z
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWpzb25P
YmplY3QpIHsKKyAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVN
ZXNzYWdlKG1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCwgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3Vy
ZW1lbnRdIEpTT04gcmVzcG9uc2UgaXMgZW1wdHkgZm9yIHRva2VuIHNpZ25pbmcgcmVxdWVzdC4i
X3MpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEZJWE1F
KDIyMjIxNyk6IFJldHJpZXZlIHRoZSBzaWduYXR1cmUgZnJvbSB0aGUgY29udGVudCBpbnN0ZWFk
IG9mIHRoZSBoZWFkZXIuCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW5hbWVk
IHRvIHVubGlua2FibGUgdG9rZW4gd2hlbiAyMjIyMTcgaXMgZml4ZWQuCi0gICAgICAgIGF1dG8g
c2lnbmF0dXJlQmFzZTY0VVJMID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmdldCgic2Vj
cmV0X3Rva2VuX3NpZ25hdHVyZSJfcyk7CisgICAgICAgIGF1dG8gc2lnbmF0dXJlQmFzZTY0VVJM
ID0ganNvbk9iamVjdC0+Z2V0U3RyaW5nKCJ1bmxpbmthYmxlX3Rva2VuIl9zKTsKICAgICAgICAg
aWYgKHNpZ25hdHVyZUJhc2U2NFVSTC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAK
QEAgLTMyOCwxNyArMzI0LDE3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
OjpmaXJlQ29udmVyc2lvblJlcXVlc3RJbXBsKGNvbnN0IFByaXZhdGVDbGljCiAgICAgaWYgKGF0
dHJpYnV0aW9uVVJMLmlzRW1wdHkoKSB8fCAhYXR0cmlidXRpb25VUkwuaXNWYWxpZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxvYWRQYXJhbWV0ZXJzID0gZ2VuZXJhdGVOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVyc0Zvckh0dHBQb3N0KFdURk1vdmUoYXR0cmlidXRpb25VUkwp
LCBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblJlcG9ydEpTT04oKSwgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpOb25QZXJzb25hbGx5SWRlbnRpZmlhYmxlKTsKKyAgICBh
dXRvIGxvYWRQYXJhbWV0ZXJzID0gZ2VuZXJhdGVOZXR3b3JrTG9hZFBhcmFtZXRlcnNGb3JIdHRw
UG9zdChXVEZNb3ZlKGF0dHJpYnV0aW9uVVJMKSwgYXR0cmlidXRpb24uYXR0cmlidXRpb25SZXBv
cnRKU09OKCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZDo6Tm9uUGVy
c29uYWxseUlkZW50aWZpYWJsZSk7CiAKICAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlj
a01lYXN1cmVtZW50LCAiQWJvdXQgdG8gZmlyZSBhbiBhdHRyaWJ1dGlvbiByZXF1ZXN0LiIpOwog
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vzc2lvbklE
LCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpM
b2csICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQWJvdXQgdG8gZmlyZSBhbiBhdHRyaWJ1
dGlvbiByZXF1ZXN0LiJfcyk7CiAKLSAgICBtX3BpbmdMb2FkRnVuY3Rpb24oV1RGTW92ZShsb2Fk
UGFyYW1ldGVycyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKSB7CisgICAgbV9uZXR3b3JrTG9hZEZ1bmN0aW9uKFdURk1vdmUobG9hZFBhcmFt
ZXRlcnMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXNdKGF1dG8mIGVycm9y
LCBhdXRvJiByZXNwb25zZSwgYXV0byYpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAg
ICAgICB3ZWFrVGhpcy0+bV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uo
d2Vha1RoaXMtPm1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCwgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnRdIFJlY2VpdmVkIGVycm9yOiAnIl9zLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlv
bigpLCAiJyBmb3IgYWQgY2xpY2sgYXR0cmlidXRpb24gcmVxdWVzdC4iX3MpKTsKKyAgICAgICAg
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vzc2lvbklE
LCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpF
cnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFJlY2VpdmVkIGVy
cm9yOiAnIl9zLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLCAiJyBmb3IgYWQgY2xpY2sg
YXR0cmlidXRpb24gcmVxdWVzdC4iX3MpKTsKICAgICAgICAgfQogICAgIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyLmgKaW5kZXggN2U0ZWJiZWZlNjllZjZjNzk3YjE5NGNjZWNmNjljODA2
YWJiMzViNi4uMTQ1NmYyY2U0OTViMDI3ODg4Y2I3MjBkZGVmNjM1Zjk2YzA2ZmM4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlci5oCkBAIC0yNSw4ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3MuaCIKLSNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9y
Lmg+CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00NiwyMCArNDcsMTkgQEAgY2xhc3Mg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBy
aXZhdGVDbGlja01lYXN1cmUKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
IAotICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW47Ci0gICAgdXNpbmcgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDsKLSAgICB1c2luZyBTb3VyY2VTaXRlID0gV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGU7CiAgICAgdXNpbmcgQXR0cmlidXRpb25EZXN0
aW5hdGlvblNpdGUgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRp
b25EZXN0aW5hdGlvblNpdGU7CiAgICAgdXNpbmcgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwot
Ci0gICAgZXhwbGljaXQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyKE5ldHdvcmtTZXNz
aW9uJiwgTmV0d29ya1Byb2Nlc3MmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgdXNpbmcgTmV0d29y
a0xvYWRDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZWZQ
dHI8SlNPTjo6T2JqZWN0PiYpPjsKKyAgICB1c2luZyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OworICAgIHVzaW5nIFJlZ2lzdHJhYmxl
RG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CisgICAgdXNpbmcgU291cmNlU2l0
ZSA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlOworICAgIGV4
cGxpY2l0IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcihOZXR3b3JrU2Vzc2lvbiYsIE5l
dHdvcmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQoTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzJiYsIE5ldHdvcmtMb2FkQ2FsbGJhY2smJik+JiYpOwogCiAgICAgdm9pZCBzdG9y
ZVVuYXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmKTsKICAgICB2b2lkIGhhbmRs
ZUF0dHJpYnV0aW9uKEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgY29uc3QgVVJMJiByZXF1ZXN0
VVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCk7CiAg
ICAgdm9pZCBjbGVhcigpOwogICAgIHZvaWQgY2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIHZvaWQgdG9TdHJpbmcoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcpPiYmKSBjb25zdDsKLSAgICB2b2lkIHNldFBpbmdMb2FkRnVuY3Rpb24o
RnVuY3Rpb248dm9pZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik+JiYpPiYmIHBpbmdMb2FkRnVuY3Rpb24pIHsgbV9waW5nTG9h
ZEZ1bmN0aW9uID0gV1RGTW92ZShwaW5nTG9hZEZ1bmN0aW9uKTsgfQogICAgIHZvaWQgc2V0T3Zl
cnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSkgeyBtX2lzUnVubmluZ1Rlc3QgPSB2YWx1
ZTsgfQogICAgIHZvaWQgc2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVSTCYmKTsKICAg
ICB2b2lkIHNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwmJik7CkBAIC04OCw3ICs4
OCw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4gbV9uZXR3b3JrU2Vz
c2lvbjsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CiAgICAgUEFM
OjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0gICAgRnVuY3Rpb248dm9pZChOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik+JiYpPiBt
X3BpbmdMb2FkRnVuY3Rpb247CisgICAgRnVuY3Rpb248dm9pZChOZXR3b3JrTG9hZFBhcmFtZXRl
cnMmJiwgTmV0d29ya0xvYWRDYWxsYmFjayYmKT4gbV9uZXR3b3JrTG9hZEZ1bmN0aW9uOwogCiAg
ICAgc3RydWN0IEF0dHJpYnV0aW9uUmVwb3J0VGVzdENvbmZpZyB7CiAgICAgICAgIFVSTCBhdHRy
aWJ1dGlvblJlcG9ydFNvdXJjZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9h
ZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41MzIwNWM3ZTQ2YjYxODM3MTc3NmY5YWFiZGM4Y2JiMDZiZDFk
YTRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuY3BwCkBAIC0wLDAgKzEsMTE0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByaXZhdGVDbGlja01l
YXN1cmVtZW50TmV0d29ya0xvYWRlci5oIgorCisjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKKyNp
bmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdp
c3RyeS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGV4dFJlc291cmNlRGVjb2Rlci5oPgorCisjaW5j
bHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xv
YWRlcjo6c3RhcnQoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtMb2FkUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMsIENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byBsb2FkZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3Jr
TG9hZGVyPihuZXcgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyKHNlc3Npb24s
IFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAg
c2Vzc2lvbi5hZGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIoV1RGTW92ZShs
b2FkZXIpKTsKK30KKworUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24s
IE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENhbGxiYWNrJiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgOiBtX3Nlc3Npb24obWFrZVdlYWtQdHIoc2Vzc2lvbikpCisgICAgLCBt
X2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQoreworICAgIG1f
bmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RG
TW92ZShwYXJhbWV0ZXJzKSwgKm1fc2Vzc2lvbik7CisgICAgbV9uZXR3b3JrTG9hZC0+c3RhcnQo
KTsKK30KKwordm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6OmZhaWwo
UmVzb3VyY2VFcnJvciYmIGVycm9yKQoreworICAgIGlmICghbV9jb21wbGV0aW9uSGFuZGxlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGVycm9y
KSwgeyB9LCBudWxscHRyKTsKKyAgICBkaWRDb21wbGV0ZSgpOworfQorCit2b2lkIFByaXZhdGVD
bGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJikK
K3sKKyAgICBmYWlsKFJlc291cmNlRXJyb3IgeyBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxs
YXRpb24gfSk7Cit9CisKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEpTT05NSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgp
KSkgeworICAgICAgICBmYWlsKHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9u
c2UudXJsKCksICJNSU1FIFR5cGUgaXMgbm90IGEgSlNPTiBNSU1FIHR5cGUiX3MgfSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7Cit9CisKK3ZvaWQgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3sKKyAgICBp
ZiAoIW1fZGVjb2RlcikKKyAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6
Y3JlYXRlKCJhcHBsaWNhdGlvbi9qc29uIl9zLCBtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUo
KS5pc0VtcHR5KCkgPyBUZXh0RW5jb2RpbmcoIlVURi04IikgOiBUZXh0RW5jb2RpbmcobV9yZXNw
b25zZS50ZXh0RW5jb2RpbmdOYW1lKCkpKTsKKworICAgIGlmIChhdXRvIHNpemUgPSBidWZmZXIt
PnNpemUoKSkKKyAgICAgICAgbV9qc29uU3RyaW5nLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShi
dWZmZXItPmRhdGEoKSwgc2l6ZSkpOworfQorCit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50
TmV0d29ya0xvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKQoreworICAgIGlmIChtX2RlY29kZXIpCisgICAgICAgIG1fanNvblN0cmluZy5h
cHBlbmQobV9kZWNvZGVyLT5mbHVzaCgpKTsKKworICAgIGlmIChhdXRvIGpzb25WYWx1ZSA9IEpT
T046OlZhbHVlOjpwYXJzZUpTT04obV9qc29uU3RyaW5nLnRvU3RyaW5nKCkpKQorICAgICAgICBt
X2NvbXBsZXRpb25IYW5kbGVyKHsgfSwgbV9yZXNwb25zZSwganNvblZhbHVlLT5hc09iamVjdCgp
KTsKKyAgICBlbHNlCisgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoeyB9LCBtX3Jlc3BvbnNl
LCBudWxscHRyKTsKKworICAgIGRpZENvbXBsZXRlKCk7Cit9CisKK3ZvaWQgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpkaWRGYWlsTG9hZGluZyhjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikKK3sKKyAgICBmYWlsKFJlc291cmNlRXJyb3IoZXJyb3IpKTsKK30KKwordm9p
ZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6OmRpZENvbXBsZXRlKCkKK3sK
KyAgICBtX25ldHdvcmtMb2FkID0gbnVsbHB0cjsKKyAgICBpZiAobV9zZXNzaW9uKQorICAgICAg
ICBtX3Nlc3Npb24tPnJlbW92ZVByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcih0
aGlzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5l
dHdvcmtMb2FkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTcyZDA1ZTVjYmZkODhlZDYzNjkzMTk3ZTVkNjA1
ZmIzMGQzNGYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuaApAQCAtMCwwICsxLDcwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgor
I2luY2x1ZGUgIk5ldHdvcmtMb2FkQ2xpZW50LmgiCisjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJh
bWV0ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0UmVzb3VyY2VEZWNvZGVyLmg+CisjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtTZXNzaW9uOworCitjbGFzcyBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIgZmluYWwgOiBwdWJsaWMgTmV0d29y
a0xvYWRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IHVzaW5nIENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJl
ZlB0cjxKU09OOjpPYmplY3Q+Jik+OworICAgIHN0YXRpYyB2b2lkIHN0YXJ0KE5ldHdvcmtTZXNz
aW9uJiwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYsIENhbGxiYWNrJiYpOworCitwcml2YXRlOgor
ICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcihOZXR3b3JrU2Vzc2lvbiYs
IE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmLCBDYWxsYmFjayYmKTsKKworICAgIC8vIE5ldHdvcmtM
b2FkQ2xpZW50LgorICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVz
U2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWwgeyB9Cisg
ICAgYm9vbCBpc1N5bmNocm9ub3VzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZp
bmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZhaWxMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKKworICAgIHZvaWQgZmFp
bChXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOworICAgIHZvaWQgZGlkQ29tcGxldGUoKTsKKwor
ICAgIFdlYWtQdHI8TmV0d29ya1Nlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya0xvYWQ+IG1fbmV0d29ya0xvYWQ7CisgICAgQ2FsbGJhY2sgbV9jb21wbGV0aW9u
SGFuZGxlcjsKKworICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOworICAgIFN0
cmluZ0J1aWxkZXIgbV9qc29uU3RyaW5nOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9SVENEYXRhQ2hh
bm5lbFJlbW90ZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkuaAppbmRleCBmYTJkNjE4MzE2
YTAwOWM0NjAwMmM3ZDg4NGFlZmYzNWU3YmQwMTViLi44NWM3NmQxODBhMjhlNjNhZTkzNTIyMThl
NzZlNTJmODVjZWQzNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclBy
b3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAogI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZUNvbm5lY3Rpb24uaD4KICNpbmNsdWRl
IDx3dGYvV29ya1F1ZXVlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAzZWVkNGIyYTA3ZTBjZTk2MGNjMzkx
ZmMxZDY0ZDAyODE3ODMwNTM2Li42YzQwMTA2MTkyMTNmOGI2ZmM0MzUyOTIxMjliNGQwNTkyYzk4
MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKQEAgLTU4LDYgKzU4LDcgQEAgR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKIAogTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Fj
dGl2aXR5VHJhY2tlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggN2VmZjRmMjZlMzM1MTIyYjBmNmViNTljYjgwMTRjMTFiYWRlMGVlZi4uNmM2MzMwOTgyYmMx
MmI2MzUyY2Y5MDMyOWNlNGUyZDRkZmQxNjY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjE1LDYgKzEyMTUsNyBAQAogCQk1N0ZE
MzE4NjIyQjM1MTZDMDA4RDBFOEIgLyogU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0ZEMzE3RDIy
QjM1MTRBMDA4RDBFOEIgLyogU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggKi87IH07
CiAJCTU3RkQzMTg3MjJCMzUxNzAwMDhEMEU4QiAvKiBXS1NPQXV0aG9yaXphdGlvbkRlbGVnYXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0ZEMzE3
MTIyQjM1MTQ4MDA4RDBFOEIgLyogV0tTT0F1dGhvcml6YXRpb25EZWxlZ2F0ZS5oICovOyB9Owog
CQk1N0ZFNjg2RDI2MDQ4Mjc4MDBCRjQ1RTQgLyogX1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RkU2ODZD
MjYwNDgyNzgwMEJGNDVFNCAvKiBfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU3RkU2ODhDMjYwQUJC
M0QwMEJGNDVFNCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RkU2ODhBMjYwQUJC
M0QwMEJGNDVFNCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuaCAqLzsg
fTsKIAkJNUMwQjE3NzgxRTdDODgwRTAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUMwQjE3NzQxRTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1QzBCMTc3OTFFN0M4ODIxMDBFOTEyM0MgLyogV2Vi
U29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMEIxNzc2MUU3Qzg3OUMwMEU5MTIzQyAvKiBXZWJTb2Nr
ZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1QzEyMUU4NDI0MTAyMDhEMDA0
ODZGOUIgLyogRnJhbWVUcmVlTm9kZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTIxRTgzMjQxMDFGNzAwMDQ4NkY5QiAvKiBGcmFtZVRyZWVO
b2RlRGF0YS5oICovOyB9OwpAQCAtNDMyNiw2ICs0MzI3LDggQEAKIAkJNTdGRDMxN0UyMkIzNTE0
QTAwOEQwRThCIC8qIFdLU09BdXRob3JpemF0aW9uRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1NPQXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0ZEMzE3RjIyQjM1MTRBMDA4RDBFOEIgLyog
U09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3RkU2ODZDMjYwNDgyNzgwMEJGNDVFNCAvKiBfV0tBdXRoZW50aWNhdG9yQXR0
YWNobWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0ZFNjg4QTI2MEFCQjNEMDBCRjQ1RTQgLyog
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBy
aXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1N0ZFNjg4QjI2MEFCQjNEMDBCRjQ1RTQgLyogUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnROZXR3b3JrTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01l
YXN1cmVtZW50TmV0d29ya0xvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDMDA5OTNCMjQxN0ZCN0UwMEQ1M0MyNSAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzBBMTBD
MTIzNTI0MUEzMDA1M0UyQ0EgLyogTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtTY2hlbWVSZWdpc3RyeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMEIxNzc0MUU3Qzg3OUMwMEU5MTIzQyAvKiBO
ZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3JrU29ja2V0U3RyZWFtTWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTg0
OTUsNiArODQ5OCw4IEBACiAJCQkJODNBMEVEMzIxRjc0N0NDNjAwMzI5OUVCIC8qIFByZWNvbm5l
Y3RUYXNrLmggKi8sCiAJCQkJNkJEMDU4NjQyMjBDRThDMjAwMEJFRDVDIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlci5jcHAgKi8sCiAJCQkJNkJEMDU4NjMyMjBDRThDMjAwMEJFRDVD
IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oICovLAorCQkJCTU3RkU2ODhCMjYw
QUJCM0QwMEJGNDVFNCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuY3Bw
ICovLAorCQkJCTU3RkU2ODhBMjYwQUJCM0QwMEJGNDVFNCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE5ldHdvcmtMb2FkZXIuaCAqLywKIAkJCQlFMUI3ODQ3MDE2M0YyNDY5MDAwN0I2OTIgLyog
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCAqLywKIAkJCQk0MTI4N0Q0RDIyNUMxNjFGMDA5QTNF
MjYgLyogV2ViU29ja2V0VGFzay5oICovLAogCQkJKTsKQEAgLTEyMDA3LDYgKzEyMDEyLDcgQEAK
IAkJCQlBQUIxNDVFNjIyM0Y5MzEyMDBFNDg5RDggLyogUHJlZmV0Y2hDYWNoZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTFDQzFCOTAxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNkJEMDU4NjUyMjBDRThDMjAwMEJFRDVDIC8qIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTdGRTY4OEMyNjBBQkIzRDAw
QkY0NUU0IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODZGOTUzNjUxOEZGNThGNTAwMURCMkVGIC8qIFByb2Nlc3NBc3NlcnRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUE3QzU4MTEzNkUxOUMwMEZCNzE2NyAvKiBQcm9jZXNz
TGF1bmNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgyQyAv
KiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZmYWE1
NjAxNzgxNzI5ZTJmOGRlNzg5OWYzMDgzNTgzM2Q4MzA0ZTAuLjY1NTFiNjBmNzE1ZDI1NDE5NjQ5
NmI5NzNlMGFlMzc0YjhhYzU4NDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wMy0yNiAg
Smlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFBDTTogSW50cm9k
dWNlIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjE3CisgICAgICAgIDxyZGFyOi8v
NzQ4MTc4NjM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAg
ICAqIGh0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2ZyYXVkUHJl
dmVudGlvblRlc3RVUkwucHk6CisgICAgICAgIENoYW5nZXMgdGhlIHRva2VuX3B1YmxpY19rZXkg
YW5kIHVubGlua2FibGVfdG9rZW4gdG8gYmUgcmV0dXJuZWQgdmlhIEpTT04gY29udGVudHMuCisK
IDIwMjEtMDMtMjYgIEltYW5vbCBGZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CiAK
ICAgICAgICAgSW1wbGVtZW50IGNhY2hlZFByb3BlcnR5VmFsdWUgZm9yIFdlYlhSIFtTYW1lT2Jq
ZWN0XSBhdHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZh
dGVDbGlja01lYXN1cmVtZW50L3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Ut
bm9uY2UtbnVsbC1jb250ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC13aXRoLXNv
dXJjZS1ub25jZS1udWxsLWNvbnRlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1ZjVjZjg0
NmE0OGIyOGIwNjk5Y2MwNmM0YmM3NWExMTgwMmU1M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3ByaXZhdGUtY2xpY2st
bWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9uY2UtbnVsbC1jb250ZW50LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE1IEBACitUZXN0cyB0aGF0IHRoZSBwcmVzZW5jZSBvZiBhIHNvdXJjZSBub25j
ZSB0cmlnZ2VycyBhIHRva2VuIHNpZ25pbmcgcmVxdWVzdC4KKworCisKKy0tLS0tLS0tCitGcmFt
ZTogJzwhLS1mcmFtZTEtLT4nCistLS0tLS0tLQorVG9rZW4gc2lnbmluZyByZXF1ZXN0IG5vdCBy
ZWNlaXZlZCAtIHRpbWVkIG91dC4KKworVW5hdHRyaWJ1dGVkIFByaXZhdGUgQ2xpY2sgTWVhc3Vy
ZW1lbnRzOgorV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgMQorU291cmNlIHNpdGU6
IDEyNy4wLjAuMQorQXR0cmlidXRlIG9uIHNpdGU6IGxvY2FsaG9zdAorU291cmNlIElEOiAzCitO
byBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGEuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQt
d2l0aC1zb3VyY2Utbm9uY2UtbnVsbC1jb250ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0
aC1zb3VyY2Utbm9uY2UtbnVsbC1jb250ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGIyNzkyZmYxMTQ5
NDI3NGFhMWQ4Yzk2ZjAzNzBiMmIxZDRjOTkwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcHJpdmF0ZS1jbGljay1tZWFz
dXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS1udWxsLWNvbnRlbnQuaHRtbApAQCAtMCwwICsxLDcw
IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJs
ZVZpZXdwb3J0PXRydWUgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcmF1ZFByZXZlbnRpb25FbmFi
bGVkPXRydWUgXSAtLT4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJz
ZXQ9IlVURi04Ij4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2
aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgorICAgIDxzY3Jp
cHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJzZXRUaW1lb3V0KHJ1blRlc3QsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5U
ZXN0cyB0aGF0IHRoZSBwcmVzZW5jZSBvZiBhIHNvdXJjZSBub25jZSB0cmlnZ2VycyBhIHRva2Vu
IHNpZ25pbmcgcmVxdWVzdC48L2Rpdj4KKzxhIGlkPSJ0YXJnZXRMaW5rIiBhdHRyaWJ1dGlvbnNv
dXJjZWlkPTMgYXR0cmlidXRpb25kZXN0aW5hdGlvbj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwIiBh
dHRyaWJ1dGlvbnNvdXJjZW5vbmNlPSJBQkNERUZhYmNkZWYwMTIzNDU2Nzg5Ij5MaW5rPC9hPjxi
cj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGNvbnN0IGN1cnJlbnRU
aW1lTWlsbGlzID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTsKKyAgICBjb25zdCBoaWdoRW50cm9w
eUJpdHMgPSBjdXJyZW50VGltZU1pbGxpcyAtIChNYXRoLmZsb29yKGN1cnJlbnRUaW1lTWlsbGlz
IC8gMTAwMDAwMCkgKiAxMDAwMDAwKTsKKyAgICBjb25zdCBkdW1teSA9IGhpZ2hFbnRyb3B5Qml0
cyArICIiICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwKTsKKworICAgIGlmICghd2lu
ZG93LmxvY2F0aW9uLnNlYXJjaCkKKyAgICAgICAgcHJlcGFyZVRlc3QoKTsKKworICAgIGZ1bmN0
aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SUQpIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SUQpOworICAgICAgICB2YXIgY2VudGVyWCA9
IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgICAgICB2
YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAy
OworICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCisg
ICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRw
dXQiKS5pbm5lclRleHQgPSAiRkFJTCBQcm9taXNlIHJlamVjdGVkLiI7CisgICAgICAgICAgICAg
ICAgdGVhckRvd25BbmRGaW5pc2goKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBhcHBlbmRJZnJhbWUodXJsLCBvbmxvYWRDYWxsYmFjaykgeworICAg
ICAgICBsZXQgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIp
OworICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9IHVybDsKKyAgICAgICAgaWYgKG9ubG9hZENh
bGxiYWNrKQorICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5vbmxvYWQgPSBvbmxvYWRDYWxsYmFj
azsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBhcHBlbmRUb2tlblNpZ25hdHVyZUlmcmFtZUFuZEZpbmlzaChk
dW1teSkgeworICAgICAgICAvLyB0ZWFyRG93bkFuZEZpbmlzaCgpOworICAgICAgICBhcHBlbmRJ
ZnJhbWUoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNv
dXJjZXMvZ2V0VG9rZW5TaWduaW5nRGF0YS5weT90aW1lb3V0X21zPTIwMCZkdW1teT0iICsgZHVt
bXksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKSk7CisgICAgICAgICAgICB0ZWFyRG93
bkFuZEZpbmlzaCgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0
KCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIGlmICgh
d2luZG93LmxvY2F0aW9uLnNlYXJjaCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZnJhdWRQ
cmV2ZW50aW9uVGVzdFVSTC5weT9kdW1teT0iICsgZHVtbXkgKyAiJm51bGxDb250ZW50PXRydWUi
KTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50
VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2ZyYXVkUHJldmVudGlvblRlc3RVUkwucHk/ZHVt
bXk9IiArIGR1bW15ICsgIiZsYXN0PXRydWUiKTsKKworICAgICAgICAgICAgICAgIHRhcmdldExp
bmsuaHJlZiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
cHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS13cm9uZy1jb250ZW50
LXR5cGUuaHRtbD9kdW1teT0iICsgZHVtbXk7CisgICAgICAgICAgICAgICAgYWN0aXZhdGVFbGVt
ZW50KCJ0YXJnZXRMaW5rIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGxldCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gp
OworICAgICAgICAgICAgICAgIGFwcGVuZFRva2VuU2lnbmF0dXJlSWZyYW1lQW5kRmluaXNoKHBh
cmFtcy5nZXQoImR1bW15IikpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJG
QUlMIE5vIHRlc3RSdW5uZXIuIjsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50LXdpdGgtc291cmNlLW5vbmNl
LXdyb25nLWNvbnRlbnQtdHlwZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1z
b3VyY2Utbm9uY2Utd3JvbmctY29udGVudC10eXBlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
NWY1Y2Y4NDZhNDhiMjhiMDY5OWNjMDZjNGJjNzVhMTE4MDJlNTNjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9wcml2YXRl
LWNsaWNrLW1lYXN1cmVtZW50LXdpdGgtc291cmNlLW5vbmNlLXdyb25nLWNvbnRlbnQtdHlwZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGVzdHMgdGhhdCB0aGUgcHJlc2VuY2Ugb2Yg
YSBzb3VyY2Ugbm9uY2UgdHJpZ2dlcnMgYSB0b2tlbiBzaWduaW5nIHJlcXVlc3QuCisKKworCist
LS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWUxLS0+JworLS0tLS0tLS0KK1Rva2VuIHNpZ25pbmcg
cmVxdWVzdCBub3QgcmVjZWl2ZWQgLSB0aW1lZCBvdXQuCisKK1VuYXR0cmlidXRlZCBQcml2YXRl
IENsaWNrIE1lYXN1cmVtZW50czoKK1dlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50IDEK
K1NvdXJjZSBzaXRlOiAxMjcuMC4wLjEKK0F0dHJpYnV0ZSBvbiBzaXRlOiBsb2NhbGhvc3QKK1Nv
dXJjZSBJRDogMworTm8gYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9wcml2YXRlLWNsaWNr
LW1lYXN1cmVtZW50LXdpdGgtc291cmNlLW5vbmNlLXdyb25nLWNvbnRlbnQtdHlwZS5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9wcml2YXRlLWNs
aWNrLW1lYXN1cmVtZW50LXdpdGgtc291cmNlLW5vbmNlLXdyb25nLWNvbnRlbnQtdHlwZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVjNGJjMDViMDllMTFlMzc0NjQ5YmIyMGJhZDk4YzFiNTk0Y2U1MDQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1
cmVtZW50L3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9uY2Utd3Jvbmct
Y29udGVudC10eXBlLmh0bWwKQEAgLTAsMCArMSw3MCBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0g
d2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50RnJhdWRQcmV2ZW50aW9uRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbCBsYW5n
PSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPG1ldGEgbmFt
ZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0x
LCB1c2VyLXNjYWxhYmxlPW5vIj4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2Vz
L3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGls
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dChydW5UZXN0
LCAwKSI+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGVzdHMgdGhhdCB0aGUgcHJlc2VuY2Ugb2Yg
YSBzb3VyY2Ugbm9uY2UgdHJpZ2dlcnMgYSB0b2tlbiBzaWduaW5nIHJlcXVlc3QuPC9kaXY+Cis8
YSBpZD0idGFyZ2V0TGluayIgYXR0cmlidXRpb25zb3VyY2VpZD0zIGF0dHJpYnV0aW9uZGVzdGlu
YXRpb249Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIgYXR0cmlidXRpb25zb3VyY2Vub25jZT0iQUJD
REVGYWJjZGVmMDEyMzQ1Njc4OSI+TGluazwvYT48YnI+Cis8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2
PgorPHNjcmlwdD4KKyAgICBjb25zdCBjdXJyZW50VGltZU1pbGxpcyA9IChuZXcgRGF0ZSgpKS5n
ZXRUaW1lKCk7CisgICAgY29uc3QgaGlnaEVudHJvcHlCaXRzID0gY3VycmVudFRpbWVNaWxsaXMg
LSAoTWF0aC5mbG9vcihjdXJyZW50VGltZU1pbGxpcyAvIDEwMDAwMDApICogMTAwMDAwMCk7Cisg
ICAgY29uc3QgZHVtbXkgPSBoaWdoRW50cm9weUJpdHMgKyAiIiArIE1hdGguZmxvb3IoTWF0aC5y
YW5kb20oKSAqIDEwMCk7CisKKyAgICBpZiAoIXdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpCisgICAg
ICAgIHByZXBhcmVUZXN0KCk7CisKKyAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVu
dElEKSB7CisgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxl
bWVudElEKTsKKyAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVt
ZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNl
dFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgVUlIZWxwZXIuYWN0aXZh
dGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAorICAgICAgICAgICAgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgUHJv
bWlzZSByZWplY3RlZC4iOworICAgICAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYXBwZW5kSWZy
YW1lKHVybCwgb25sb2FkQ2FsbGJhY2spIHsKKyAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICAgICAgaWZyYW1lRWxlbWVudC5z
cmMgPSB1cmw7CisgICAgICAgIGlmIChvbmxvYWRDYWxsYmFjaykKKyAgICAgICAgICAgIGlmcmFt
ZUVsZW1lbnQub25sb2FkID0gb25sb2FkQ2FsbGJhY2s7CisgICAgICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYXBwZW5k
VG9rZW5TaWduYXR1cmVJZnJhbWVBbmRGaW5pc2goZHVtbXkpIHsKKyAgICAgICAgLy8gdGVhckRv
d25BbmRGaW5pc2goKTsKKyAgICAgICAgYXBwZW5kSWZyYW1lKCJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2dldFRva2VuU2lnbmluZ0RhdGEu
cHk/dGltZW91dF9tcz0yMDAmZHVtbXk9IiArIGR1bW15LCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CisgICAgICAgICAg
ICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJn
ZXRMaW5rIikpOworICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKKyAgICAgICAgfSk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgICAgICBpZiAoIXdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpIHsK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9r
ZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2ZyYXVkUHJldmVudGlvblRlc3RVUkwucHk/ZHVtbXk9
IiArIGR1bW15ICsgIiZ3cm9uZ0NvbnRlbnRUeXBlPXRydWUiKTsKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JU
ZXN0aW5nKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVz
b3VyY2VzL2ZyYXVkUHJldmVudGlvblRlc3RVUkwucHk/ZHVtbXk9IiArIGR1bW15ICsgIiZsYXN0
PXRydWUiKTsKKworICAgICAgICAgICAgICAgIHRhcmdldExpbmsuaHJlZiA9ICJodHRwOi8vbG9j
YWxob3N0OjgwMDAvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcHJpdmF0ZS1jbGljay1tZWFzdXJl
bWVudC13aXRoLXNvdXJjZS1ub25jZS13cm9uZy1jb250ZW50LXR5cGUuaHRtbD9kdW1teT0iICsg
ZHVtbXk7CisgICAgICAgICAgICAgICAgYWN0aXZhdGVFbGVtZW50KCJ0YXJnZXRMaW5rIik7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxldCBwYXJhbXMgPSBuZXcgVVJM
U2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpOworICAgICAgICAgICAgICAgIGFw
cGVuZFRva2VuU2lnbmF0dXJlSWZyYW1lQW5kRmluaXNoKHBhcmFtcy5nZXQoImR1bW15IikpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIE5vIHRlc3RSdW5uZXIuIjsK
KyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJj
ZXMvZnJhdWRQcmV2ZW50aW9uVGVzdFVSTC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2ZyYXVkUHJldmVudGlvblRlc3RVUkwucHkK
aW5kZXggNjE4ODVjMmFhMzM0YWM1MGI0ZTA3OWUxMDI1YzU4ZmNhYmE2ODRiNy4uMmJkOWZmNmZl
YTQ1MzZhZTIzNjY3ZTUyODFmZWY3NTBiMWU2MTE3ZiAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZnJhdWRQcmV2ZW50
aW9uVGVzdFVSTC5weQorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01l
YXN1cmVtZW50L3Jlc291cmNlcy9mcmF1ZFByZXZlbnRpb25UZXN0VVJMLnB5CkBAIC0xMSw2ICsx
MSw4IEBAIHN5cy5wYXRoLmluc2VydCgwLCBodHRwX3Jvb3QpCiB0b2tlbl9zaWduaW5nX2ZpbGUg
PSBvcGVuKCd7fS50bXAnLmZvcm1hdCh0b2tlbl9zaWduaW5nX2ZpbGVwYXRoKSwgJ2EnKQogY29v
a2llc19mb3VuZCA9IEZhbHNlCiBpc19sYXN0X3JlcXVlc3QgPSBGYWxzZQoraXNfd3JvbmdfY29u
dGVudF90eXBlID0gRmFsc2UKK2lzX251bGxfY29udGVudCA9IEZhbHNlCiAKIHJlcXVlc3RfbWV0
aG9kID0gb3MuZW52aXJvbi5nZXQoJ1JFUVVFU1RfTUVUSE9EJywgTm9uZSkKIGhvc3QgPSBvcy5l
bnZpcm9uLmdldCgnSFRUUF9IT1NUJywgTm9uZSkKQEAgLTQzLDYgKzQ1LDE0IEBAIGlmIHVyaToK
ICAgICBpZiBwb3NpdGlvbl9vZl9kdW1teSAhPSAtMToKICAgICAgICAgaXNfbGFzdF9yZXF1ZXN0
ID0gVHJ1ZQogCisgICAgcG9zaXRpb25fb2ZfZHVtbXkgPSB1cmkuZmluZCgnJndyb25nQ29udGVu
dFR5cGU9JykKKyAgICBpZiBwb3NpdGlvbl9vZl9kdW1teSAhPSAtMToKKyAgICAgICAgaXNfd3Jv
bmdfY29udGVudF90eXBlID0gVHJ1ZQorCisgICAgcG9zaXRpb25fb2ZfZHVtbXkgPSB1cmkuZmlu
ZCgnJm51bGxDb250ZW50PScpCisgICAgaWYgcG9zaXRpb25fb2ZfZHVtbXkgIT0gLTE6CisgICAg
ICAgIGlzX251bGxfY29udGVudCA9IFRydWUKKwogaWYgbm90IGNvb2tpZXNfZm91bmQ6CiAgICAg
dG9rZW5fc2lnbmluZ19maWxlLndyaXRlKCdObyBjb29raWVzIGluIHRva2VuIHNpZ25pbmcgcmVx
dWVzdC5cbicpCiAKQEAgLTU0LDEwICs2NCwxNyBAQCBpZiBpc19sYXN0X3JlcXVlc3Q6CiAgICAg
aWYgb3MucGF0aC5pc2ZpbGUoJ3t9LnRtcCcuZm9ybWF0KHRva2VuX3NpZ25pbmdfZmlsZXBhdGgp
KToKICAgICAgICAgb3MucmVuYW1lKCd7fS50bXAnLmZvcm1hdCh0b2tlbl9zaWduaW5nX2ZpbGVw
YXRoKSwgdG9rZW5fc2lnbmluZ19maWxlcGF0aCkKIAorY29udGVudF90eXBlID0gJ2FwcGxpY2F0
aW9uL2pzb24nCitpZiBpc193cm9uZ19jb250ZW50X3R5cGU6CisgICAgY29udGVudF90eXBlID0g
J3RleHQvaHRtbCcKKworY29udGVudCA9ICd7InRva2VuX3B1YmxpY19rZXkiOiAiQUJDRCIsICJ1
bmxpbmthYmxlX3Rva2VuIjogIkFCQ0QifScKK2lmIGlzX251bGxfY29udGVudDoKKyAgICBjb250
ZW50ID0gJycKKwogc3lzLnN0ZG91dC53cml0ZSgKICAgICAnc3RhdHVzOiAyMDFcclxuJwotICAg
ICd1bmxpbmthYmxlX3Rva2VuX3B1YmxpY19rZXk6IEFCQ0RcclxuJwotICAgICdzZWNyZXRfdG9r
ZW5fc2lnbmF0dXJlOiBBQkNEXHJcbicKICAgICAnU2V0LUNvb2tpZTogY29va2llU2V0SW5Ub2tl
blNpZ25pbmdSZXNwb25zZT0xOyBwYXRoPS9cclxuJwotICAgICdDb250ZW50LVR5cGU6IHRleHQv
aHRtbFxyXG5cclxuJworICAgICdDb250ZW50LVR5cGU6IHt9XHJcblxyXG4nCisgICAgJ3t9Jy5m
b3JtYXQoY29udGVudF90eXBlLCBjb250ZW50KQogKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvcmVzb3VyY2VzL2dldFRva2VuU2lnbmluZ0RhdGEucHkgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9nZXRUb2tlblNpZ25pbmdE
YXRhLnB5CmluZGV4IGQ3NTE0ZjQ5NzU2ODI5N2ZlOTM4M2IzM2FhYzY0NjZhOWIzYTVhYzUuLjNl
YWY2ZjlmZjkxZmQ2OTRmNWY5ZTM2MWM1YmY4ZDM0NmQ5ZTJjMjcgMTAwNzU1Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2dldFRv
a2VuU2lnbmluZ0RhdGEucHkKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZ2V0VG9rZW5TaWduaW5nRGF0YS5weQpAQCAtMjgsNyAr
MjgsNyBAQCB3aGlsZSBub190aW1lb3V0IG9yIHRpbWVvdXRfbXNlY3MgPiAwOgogICAgICAgICBi
cmVhawogCiAgICAgdGltZS5zbGVlcCgwLjAxKQotICAgIGlmIG5vX3RpbWVvdXQ6CisgICAgaWYg
bm90IG5vX3RpbWVvdXQ6CiAgICAgICAgIHRpbWVvdXRfbXNlY3MgLT0gMTAKIAogc3lzLnN0ZG91
dC53cml0ZSgK
</data>
<flag name="commit-queue"
          id="444464"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424724</attachid>
            <date>2021-03-30 18:24:23 -0700</date>
            <delta_ts>2021-03-30 19:52:43 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-222217-20210330182422.patch</filename>
            <type>text/plain</type>
            <size>48542</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRjZDZlYmMxZjI3ZGY3OGNk
ZjI2YTgwNTFlNzQ4MDY3M2VkMDcxZTQuLmM5MTJhODgyMzY4OGE3YjA0YjY3OGQyMzRlYmJlNWY5
NzI2ODQxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMjEtMDMtMjYgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBQQ006IEludHJvZHVjZSBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjIxNworICAgICAgICA8cmRhcjovLzc0ODE3ODYz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgVGhpcyBw
YXRjaCByZWZhY3RvcnMgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyIHRvIHVzZSBhIG5l
d2x5IGludHJvZHVjZWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyCisgICAg
ICAgIGluc3RlYWQgb2YgdGhlIFBpbmdMb2FkIHRvIGhhbmRsZSBuZXR3b3JrIHRyYWZmaWNzIHN1
Y2ggdGhhdCBQQ01NIGNhbiByZWNlaXZlIGFuZCBwcm9jZXNzIHJlc3BvbnNlIGJvZGllcy4KKwor
ICAgICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIgaXMgYSBzdHJpcHBl
ZCBkb3duIHZlcnNpb24gb2YgdGhlIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLCB3aGlj
aCBpcyBhbHNvCisgICAgICAgIGEgZGVyaXZlZCBjbGFzcyBvZiBOZXR3b3JrTG9hZENsaWVudC4K
KworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyB0ZXN0IGNvbnRlbnRzIHdpdGhpbiBleGlzdGluZyB0
ZXN0IGZpbGVzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24pOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTZXNzaW9uOjphZGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6cmVtb3ZlUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnROZXR3b3JrTG9hZGVyKToKKyAgICAgICAgTW9kaWZpZXMgdGhlIFBDTU0gdG8gdXNl
IFBDTU5MLiBBbmQgdGhlbiBpbnRyb2R1Y2VzIGEgaGFzaCB0YWJsZSB0byBtYW5hZ2UgdGhlIGxp
ZmV0aW1lIG9mIGVhY2ggUENNTkwuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXI6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcik6Cisg
ICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlTmV0d29ya0xvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAg
KFdlYktpdDo6Z2VuZXJhdGVOZXR3b3JrTG9hZFBhcmFtZXRlcnNGb3JIdHRwUG9zdCk6CisgICAg
ICAgIChXZWJLaXQ6OmdlbmVyYXRlTmV0d29ya0xvYWRQYXJhbWV0ZXJzRm9ySHR0cEdldCk6Cisg
ICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0VG9rZW5Q
dWJsaWNLZXkpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tlbik6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlcjo6ZmlyZUNvbnZlcnNpb25SZXF1ZXN0SW1wbCk6CisgICAg
ICAgIChXZWJLaXQ6OmdlbmVyYXRlTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZU5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzRm9ySHR0cFBvc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZU5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzRm9ySHR0cEdldCk6IERlbGV0ZWQuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmg6CisgICAgICAg
IChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c2V0TmV0d29ya0xvYWRG
dW5jdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
cjo6c2V0UGluZ0xvYWRGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIE1vZGlmaWVzIHRoZSBQ
Q01NIHRvIHVzZSBQQ01OTC4gU3BlY2lmaWNhbGx5LCBjaGFuZ2VzIHRoZSB0b2tlbl9wdWJsaWNf
a2V5IGFuZCB1bmxpbmthYmxlX3Rva2VuIHRvIGJlIGV4dHJhY3RlZAorICAgICAgICBmcm9tIHRo
ZSBKU09OIGNvbnRlbnQgb2YgdGhlIHJlc3BvbnNlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6c3RhcnQp
OgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcik6CisgICAgICAgIChXZWJLaXQ6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6ZmFpbCk6CisgICAgICAgIChX
ZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6d2lsbFNlbmRSZWRp
cmVjdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
TmV0d29ya0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRO
ZXR3b3JrTG9hZGVyOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5oOiBBZGRl
ZC4KKyAgICAgICAgSW50cm9kdWNlcyB0aGUgUENNTkwuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAg
Rml4ZXMgYW4gVW5pZmllZCBCdWlsZCBpc3N1ZS4KKworICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBTb21l
IHBhcGVyd29yay4KKwogMjAyMS0wMy0zMCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFsbG93IFdlYkF1dGhuIHByb2Nlc3MgdGFsayB0byB0aGUgQVNECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4
IDczNDE4Mjg4NTI0OGE3ZGZhMmJmZTU5MzZlMWIwODZiMmI4NDQyNTkuLjRkOTQzMDE0NWNlNzYy
MzkwMTdkMzYxYTdlNjcwNmI1NjJkOGVkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0xMjEsMTIgKzEyMSwxMSBAQCBOZXR3b3Jr
U2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBj
b25zdCBOZXR3b3JrU2VzcwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZWQpOwotICAgIG1fcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQgPSBtYWtlVW5pcXVlPFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcj4oKnRo
aXMsIG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJzLnNlc3Npb25JRCk7Ci0gICAgbV9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC0+c2V0UGluZ0xvYWRGdW5jdGlvbihbdGhpcywgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKV0oTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFy
YW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSB7CisgICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IG1ha2VVbmlxdWU8UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyPigqdGhpcywgbmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRl
cnMuc2Vzc2lvbklELCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKGF1dG8mJiBsb2Fk
UGFyYW1ldGVycywgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGlmICghd2Vh
a1RoaXMpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIC8vIFBpbmdMb2FkIG1hbmFnZXMg
aXRzIG93biBsaWZldGltZSwgZGVsZXRpbmcgaXRzZWxmIHdoZW4gaXRzIHB1cnBvc2UgaGFzIGJl
ZW4gZnVsZmlsbGVkLgotICAgICAgICBuZXcgUGluZ0xvYWQobV9uZXR3b3JrUHJvY2VzcywgbV9z
ZXNzaW9uSUQsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisKKyAgICAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpz
dGFydCgqd2Vha1RoaXMsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgfSk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCBlMzkyZTk2MTdjMjE3OGZhNDNkYWJmYmU3
ODRmZWY1MjNmNjcwZjQxLi45ZWE2OWJlMTgzOGM4NjZmYWRmMzFiYmNlNzc0NThmMWEyMjgwODk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBA
IC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5o
IgogI2luY2x1ZGUgIlByZWZldGNoQ2FjaGUuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE5ldHdvcmtMb2FkZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCIKICNpbmNsdWRlICJXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKQEAgLTE2MSw2ICsxNjIsOSBAQCBwdWJsaWM6
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEm
IGFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKCkgeyByZXR1cm4gbV9hcHBCb3VuZE5hdmln
YXRpb25UZXN0aW5nRGF0YTsgfQogI2VuZGlmCisKKyAgICB2b2lkIGFkZFByaXZhdGVDbGlja01l
YXN1cmVtZW50TmV0d29ya0xvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnROZXR3b3JrTG9hZGVyPiYmIGxvYWRlcikgeyBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50
TmV0d29ya0xvYWRlcnMuYWRkKFdURk1vdmUobG9hZGVyKSk7IH0KKyAgICB2b2lkIHJlbW92ZVBy
aXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcihQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE5ldHdvcmtMb2FkZXIqIGxvYWRlcikgeyBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29y
a0xvYWRlcnMucmVtb3ZlKGxvYWRlcik7IH0KICAgICAKIHByb3RlY3RlZDoKICAgICBOZXR3b3Jr
U2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzJik7CkBAIC0yMTAsNiArMjE0LDggQEAgcHJvdGVjdGVkOgogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIG1fYXBwQm91bmROYXZpZ2F0
aW9uVGVzdGluZ0RhdGE7CiAjZW5kaWYKKworICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPFBy
aXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcj4+IG1fcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnROZXR3b3JrTG9hZGVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXIuY3BwCmluZGV4IDU1ODdmN2MxMjMzODU5MjM2ZmQwYTkyNjM4Y2Jl
YWM0YTU1MGE4ZDMuLmRiZjhiNDk5ZmY5NjliNWYyYzFiMGI0MmU4NGEyMjZhYzYwYzU2N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKQEAgLTUyLDE2ICs1MiwxNSBAQCB1c2luZyBF
cGhlbWVyYWxTb3VyY2VOb25jZSA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxT
b3VyY2VOb25jZTsKIAogY29uc3RleHByIFNlY29uZHMgZGVidWdNb2RlU2Vjb25kc1VudGlsU2Vu
ZCB7IDEwX3MgfTsKIAotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXIoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBOZXR3
b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK1By
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQoTmV0d29y
a0xvYWRQYXJhbWV0ZXJzJiYsIE5ldHdvcmtMb2FkQ2FsbGJhY2smJik+JiYgbmV0d29ya0xvYWRG
dW5jdGlvbikKICAgICA6IG1fZmlyZVBlbmRpbmdBdHRyaWJ1dGlvblJlcXVlc3RzVGltZXIoKnRo
aXMsICZQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZpcmVQZW5kaW5nQXR0cmlidXRp
b25SZXF1ZXN0cykKICAgICAsIG1fbmV0d29ya1Nlc3Npb24obWFrZVdlYWtQdHIobmV0d29ya1Nl
c3Npb24pKQogICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKICAgICAsIG1f
c2Vzc2lvbklEKHNlc3Npb25JRCkKLSAgICAsIG1fcGluZ0xvYWRGdW5jdGlvbihbXShOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShwYXJh
bXMpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpSZXNvdXJjZUVycm9yKCks
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UoKSk7Ci0gICAgfSkKKyAgICAsIG1fbmV0d29ya0xv
YWRGdW5jdGlvbihXVEZNb3ZlKG5ldHdvcmtMb2FkRnVuY3Rpb24pKQogeworICAgIEFTU0VSVCht
X25ldHdvcmtMb2FkRnVuY3Rpb24pOworCiAgICAgLy8gV2Ugc2hvdWxkIHNlbmQgYW55IHBlbmRp
bmcgYXR0cmlidXRpb25zIG9uIHNlc3Npb24tc3RhcnQgaW4gY2FzZSB0aGVpcgogICAgIC8vIHNl
bmQgZGVsYXkgaGFzIGV4cGlyZWQgd2hpbGUgdGhlIHNlc3Npb24gd2FzIGNsb3NlZC4gV2FpdGlu
ZyA1IHNlY29uZHMgYWNjb3VudHMgZm9yIHRoZQogICAgIC8vIGRlbGF5IGluIGRhdGFiYXNlIHN0
YXJ0dXAuCkBAIC0xMDUsMTAgKzEwNCw4IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmCiAjZW5k
aWYKIH0KIAotc3RhdGljIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIGdlbmVyYXRlTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMoVVJMJiYgdXJsLCBjb25zdCBTdHJpbmcmIGh0dHBN
ZXRob2QsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYganNvblBheWxvYWQsIFByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpQY21EYXRhQ2FycmllZCBkYXRhVHlwZUNhcnJpZWQpCitzdGF0aWMgTmV0d29y
a0xvYWRQYXJhbWV0ZXJzIGdlbmVyYXRlTmV0d29ya0xvYWRQYXJhbWV0ZXJzKFVSTCYmIHVybCwg
Y29uc3QgU3RyaW5nJiBodHRwTWV0aG9kLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGpzb25QYXls
b2FkLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQgZGF0YVR5cGVDYXJy
aWVkKQogewotICAgIHN0YXRpYyB1aW50NjRfdCBpZGVudGlmaWVyID0gMDsKLSAgICAKICAgICBS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCB7IFdURk1vdmUodXJsKSB9OwogICAgIHJlcXVlc3Quc2V0
SFRUUE1ldGhvZChodHRwTWV0aG9kKTsKICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q2FjaGVDb250cm9sLCBXZWJDb3JlOjpIVFRQSGVhZGVyVmFsdWVzOjpt
YXhBZ2UwKCkpOwpAQCAtMTE3LDMxICsxMTQsMjQgQEAgc3RhdGljIE5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzIGdlbmVyYXRlTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMoVVJMJiYK
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShXZWJDb3JlOjpGb3JtRGF0YTo6Y3JlYXRlKGpz
b25QYXlsb2FkLT50b0pTT05TdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgfQogCi0gICAg
RmV0Y2hPcHRpb25zIG9wdGlvbnM7Ci0gICAgb3B0aW9ucy5jcmVkZW50aWFscyA9IEZldGNoT3B0
aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQ7Ci0gICAgb3B0aW9ucy5yZWRpcmVjdCA9IEZldGNoT3B0
aW9uczo6UmVkaXJlY3Q6OkVycm9yOwotCi0gICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMgbG9hZFBhcmFtZXRlcnM7Ci0gICAgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciA9ICsraWRl
bnRpZmllcjsKKyAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CiAgICAg
bG9hZFBhcmFtZXRlcnMucmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgbG9hZFBhcmFtZXRlcnMucGFy
ZW50UElEID0gcHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CiAgICAgbG9hZFBhcmFtZXRlcnMu
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1l
cmFsU3RhdGVsZXNzOwotICAgIGxvYWRQYXJhbWV0ZXJzLm9wdGlvbnMgPSBvcHRpb25zOwogICAg
IGxvYWRQYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qg
PSB0cnVlOwotICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNj
ZXNzID0gZmFsc2U7CiAgICAgbG9hZFBhcmFtZXRlcnMucGNtRGF0YUNhcnJpZWQgPSBkYXRhVHlw
ZUNhcnJpZWQ7Ci0gICAgCisKICAgICByZXR1cm4gbG9hZFBhcmFtZXRlcnM7CiB9CiAKLXN0YXRp
YyBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBnZW5lcmF0ZU5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzRm9ySHR0cFBvc3QoVVJMJiYgdXJsLCBSZWY8SlNPTjo6T2JqZWN0PiYmIGpz
b25QYXlsb2FkLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQgZGF0YVR5
cGVDYXJyaWVkKQorc3RhdGljIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBnZW5lcmF0ZU5ldHdvcmtM
b2FkUGFyYW1ldGVyc0Zvckh0dHBQb3N0KFVSTCYmIHVybCwgUmVmPEpTT046Ok9iamVjdD4mJiBq
c29uUGF5bG9hZCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkIGRhdGFU
eXBlQ2FycmllZCkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyhXVEZNb3ZlKHVybCksICJQT1NUIl9zLCBXVEZNb3ZlKGpzb25QYXlsb2FkKSwgZGF0
YVR5cGVDYXJyaWVkKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVOZXR3b3JrTG9hZFBhcmFtZXRlcnMo
V1RGTW92ZSh1cmwpLCAiUE9TVCJfcywgV1RGTW92ZShqc29uUGF5bG9hZCksIGRhdGFUeXBlQ2Fy
cmllZCk7CiB9CiAKLXN0YXRpYyBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBnZW5lcmF0
ZU5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzRm9ySHR0cEdldChVUkwmJiB1cmwsIFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZCBkYXRhVHlwZUNhcnJpZWQpCitzdGF0
aWMgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIGdlbmVyYXRlTmV0d29ya0xvYWRQYXJhbWV0ZXJzRm9y
SHR0cEdldChVUkwmJiB1cmwsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2Fycmll
ZCBkYXRhVHlwZUNhcnJpZWQpCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMoV1RGTW92ZSh1cmwpLCAiR0VUIl9zLCBudWxscHRyLCBkYXRhVHlwZUNh
cnJpZWQpOworICAgIHJldHVybiBnZW5lcmF0ZU5ldHdvcmtMb2FkUGFyYW1ldGVycyhXVEZNb3Zl
KHVybCksICJHRVQiX3MsIG51bGxwdHIsIGRhdGFUeXBlQ2FycmllZCk7CiB9CiAKIHZvaWQgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRUb2tlblB1YmxpY0tleShQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0
cmlidXRpb25SZXBvcnRFbmRwb2ludCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50LCBGdW5jdGlv
bjx2b2lkKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb24sIGNvbnN0IFN0cmlu
ZyYgcHVibGljS2V5QmFzZTY0VVJMKT4mJiBjYWxsYmFjaykKQEAgLTE2MiwyMyArMTUyLDI2IEBA
IHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRUb2tlblB1YmxpY0tleShQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmCiAgICAgaWYgKHRva2VuUHVibGljS2V5VVJMLmlzRW1w
dHkoKSB8fCAhdG9rZW5QdWJsaWNLZXlVUkwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIGxvYWRQYXJhbWV0ZXJzID0gZ2VuZXJhdGVOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVyc0Zvckh0dHBHZXQoV1RGTW92ZSh0b2tlblB1YmxpY0tleVVSTCksIHBjbURhdGFDYXJy
aWVkKTsKKyAgICBhdXRvIGxvYWRQYXJhbWV0ZXJzID0gZ2VuZXJhdGVOZXR3b3JrTG9hZFBhcmFt
ZXRlcnNGb3JIdHRwR2V0KFdURk1vdmUodG9rZW5QdWJsaWNLZXlVUkwpLCBwY21EYXRhQ2Fycmll
ZCk7CiAKICAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiQWJv
dXQgdG8gZmlyZSBhIHRva2VuIHB1YmxpYyBrZXkgcmVxdWVzdC4iKTsKICAgICBtX25ldHdvcmtQ
cm9jZXNzLT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShtX3Nlc3Npb25JRCwgTWVzc2FnZVNvdXJj
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6TG9nLCAiW1ByaXZhdGUg
Q2xpY2sgTWVhc3VyZW1lbnRdIEFib3V0IHRvIGZpcmUgYSB0b2tlbiBwdWJsaWMga2V5IHJlcXVl
c3QuIl9zKTsKIAotICAgIG1fcGluZ0xvYWRGdW5jdGlvbihXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJz
KSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzLCBhdHRyaWJ1dGlvbiA9IFdU
Rk1vdmUoYXR0cmlidXRpb24pLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKSBtdXRhYmxlIHsKKyAgICBtX25ldHdvcmtMb2FkRnVuY3Rpb24oV1RG
TW92ZShsb2FkUGFyYW1ldGVycyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhp
cywgYXR0cmlidXRpb24gPSBXVEZNb3ZlKGF0dHJpYnV0aW9uKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0gKGF1dG8mIGVycm9yLCBhdXRvJiByZXNwb25zZSwgYXV0byYganNvbk9iamVj
dCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgewotICAgICAgICAgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uod2Vha1RoaXMtPm1fc2Vzc2lvbklELCBN
ZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpFcnJv
ciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFJlY2VpdmVkIGVycm9y
OiAnIl9zLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLCAiJyBmb3IgdG9rZW4gcHVibGlj
IGtleSByZXF1ZXN0LiJfcykpOworICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRj
YXN0Q29uc29sZU1lc3NhZ2UobV9zZXNzaW9uSUQsIE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBD
bGljayBNZWFzdXJlbWVudF0gUmVjZWl2ZWQgZXJyb3I6ICciX3MsIGVycm9yLmxvY2FsaXplZERl
c2NyaXB0aW9uKCksICInIGZvciB0b2tlbiBwdWJsaWMga2V5IHJlcXVlc3QuIl9zKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICAvLyBGSVhNRSgyMjIyMTcpOiBS
ZXRyaWV2ZSB0aGUgcHVibGljIGtleSBmcm9tIHRoZSBjb250ZW50IGluc3RlYWQgb2YgdGhlIGhl
YWRlci4KLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlbmFtZWQgdG8gdG9rZW4g
cHVibGljIGtleSB3aXRob3V0ICJ1bmxpbmtibGUiIG9yICJzZWNyZXQiIHdoZW4gMjIyMjE3IGlz
IGZpeGVkLgotICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGF0dHJpYnV0aW9uKSwgcmVzcG9uc2Uu
aHR0cEhlYWRlckZpZWxkcygpLmdldCgidW5saW5rYWJsZV90b2tlbl9wdWJsaWNfa2V5Il9zKSk7
CisgICAgICAgIGlmICghanNvbk9iamVjdCkgeworICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UobV9zZXNzaW9uSUQsIE1lc3NhZ2VTb3VyY2U6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJb
UHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gSlNPTiByZXNwb25zZSBpcyBlbXB0eSBmb3IgdG9r
ZW4gcHVibGljIGtleSByZXF1ZXN0LiJfcykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShhdHRyaWJ1dGlvbiksIGpzb25PYmplY3Qt
PmdldFN0cmluZygidG9rZW5fcHVibGljX2tleSJfcykpOwogICAgIH0pOwogCiB9CkBAIC0xOTks
MjMgKzE5MiwyNiBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2ln
bmVkVW5saW5rYWJsZVRva2VuKFByaXZhdGVDbGlja01lYXN1cgogICAgIGlmICh0b2tlblNpZ25h
dHVyZVVSTC5pc0VtcHR5KCkgfHwgIXRva2VuU2lnbmF0dXJlVVJMLmlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byBsb2FkUGFyYW1ldGVycyA9IGdlbmVyYXRlTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnNGb3JIdHRwUG9zdChXVEZNb3ZlKHRva2VuU2lnbmF0dXJlVVJM
KSwgYXR0cmlidXRpb24udG9rZW5TaWduYXR1cmVKU09OKCksIHBjbURhdGFDYXJyaWVkKTsKKyAg
ICBhdXRvIGxvYWRQYXJhbWV0ZXJzID0gZ2VuZXJhdGVOZXR3b3JrTG9hZFBhcmFtZXRlcnNGb3JI
dHRwUG9zdChXVEZNb3ZlKHRva2VuU2lnbmF0dXJlVVJMKSwgYXR0cmlidXRpb24udG9rZW5TaWdu
YXR1cmVKU09OKCksIHBjbURhdGFDYXJyaWVkKTsKIAogICAgIFJFTEVBU0VfTE9HX0lORk8oUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJBYm91dCB0byBmaXJlIGEgdW5saW5rYWJsZSB0b2tlbiBz
aWduaW5nIHJlcXVlc3QuIik7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRjYXN0Q29uc29s
ZU1lc3NhZ2UobV9zZXNzaW9uSUQsIE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50LCBNZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBBYm91
dCB0byBmaXJlIGEgdW5saW5rYWJsZSB0b2tlbiBzaWduaW5nIHJlcXVlc3QuIl9zKTsKIAotICAg
IG1fcGluZ0xvYWRGdW5jdGlvbihXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgW3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzLCBhdHRyaWJ1dGlvbiA9IFdURk1vdmUoYXR0cmlidXRp
b24pXSAoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBtdXRhYmxlIHsKKyAgICBtX25ldHdvcmtMb2Fk
RnVuY3Rpb24oV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgdGhpcywgYXR0cmlidXRpb24gPSBXVEZNb3ZlKGF0dHJpYnV0aW9uKV0gKGF1dG8m
IGVycm9yLCBhdXRvJiByZXNwb25zZSwgYXV0byYganNvbk9iamVjdCkgbXV0YWJsZSB7CiAgICAg
ICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKCFl
cnJvci5pc051bGwoKSkgewotICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRjYXN0
Q29uc29sZU1lc3NhZ2Uod2Vha1RoaXMtPm1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1By
aXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFJlY2VpdmVkIGVycm9yOiAnIl9zLCBlcnJvci5sb2Nh
bGl6ZWREZXNjcmlwdGlvbigpLCAiJyBmb3Igc2VjcmV0IHRva2VuIHNpZ25pbmcgcmVxdWVzdC4i
X3MpKTsKKyAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNz
YWdlKG1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwg
TWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1l
bnRdIFJlY2VpdmVkIGVycm9yOiAnIl9zLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLCAi
JyBmb3Igc2VjcmV0IHRva2VuIHNpZ25pbmcgcmVxdWVzdC4iX3MpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghanNvbk9iamVjdCkgeworICAgICAgICAg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UobV9zZXNzaW9uSUQs
IE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gSlNPTiByZXNwb25z
ZSBpcyBlbXB0eSBmb3IgdG9rZW4gc2lnbmluZyByZXF1ZXN0LiJfcykpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRklYTUUoMjIyMjE3KTogUmV0cmlldmUg
dGhlIHNpZ25hdHVyZSBmcm9tIHRoZSBjb250ZW50IGluc3RlYWQgb2YgdGhlIGhlYWRlci4KLSAg
ICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlbmFtZWQgdG8gdW5saW5rYWJsZSB0b2tl
biB3aGVuIDIyMjIxNyBpcyBmaXhlZC4KLSAgICAgICAgYXV0byBzaWduYXR1cmVCYXNlNjRVUkwg
PSByZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuZ2V0KCJzZWNyZXRfdG9rZW5fc2lnbmF0dXJl
Il9zKTsKKyAgICAgICAgYXV0byBzaWduYXR1cmVCYXNlNjRVUkwgPSBqc29uT2JqZWN0LT5nZXRT
dHJpbmcoInVubGlua2FibGVfdG9rZW4iX3MpOwogICAgICAgICBpZiAoc2lnbmF0dXJlQmFzZTY0
VVJMLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzQ3LDE3ICszNDMsMTcg
QEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZpcmVDb252ZXJzaW9uUmVx
dWVzdEltcGwoY29uc3QgUHJpdmF0ZUNsaWMKICAgICBpZiAoYXR0cmlidXRpb25VUkwuaXNFbXB0
eSgpIHx8ICFhdHRyaWJ1dGlvblVSTC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8gbG9hZFBhcmFtZXRlcnMgPSBnZW5lcmF0ZU5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzRm9ySHR0cFBvc3QoV1RGTW92ZShhdHRyaWJ1dGlvblVSTCksIGF0dHJpYnV0aW9uLmF0dHJp
YnV0aW9uUmVwb3J0SlNPTigpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJp
ZWQ6Ok5vblBlcnNvbmFsbHlJZGVudGlmaWFibGUpOworICAgIGF1dG8gbG9hZFBhcmFtZXRlcnMg
PSBnZW5lcmF0ZU5ldHdvcmtMb2FkUGFyYW1ldGVyc0Zvckh0dHBQb3N0KFdURk1vdmUoYXR0cmli
dXRpb25VUkwpLCBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblJlcG9ydEpTT04oKSwgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpOb25QZXJzb25hbGx5SWRlbnRpZmlhYmxl
KTsKIAogICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJBYm91
dCB0byBmaXJlIGFuIGF0dHJpYnV0aW9uIHJlcXVlc3QuIik7CiAgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UobV9zZXNzaW9uSUQsIE1lc3NhZ2VTb3VyY2U6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2YXRlIENsaWNr
IE1lYXN1cmVtZW50XSBBYm91dCB0byBmaXJlIGFuIGF0dHJpYnV0aW9uIHJlcXVlc3QuIl9zKTsK
IAotICAgIG1fcGluZ0xvYWRGdW5jdGlvbihXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBl
cnJvciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIHsKKyAgICBt
X25ldHdvcmtMb2FkRnVuY3Rpb24oV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10oYXV0byYgZXJyb3IsIGF1dG8mIHJlc3BvbnNlLCBh
dXRvJikgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX25l
dHdvcmtQcm9jZXNzLT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZSh3ZWFrVGhpcy0+bV9zZXNzaW9u
SUQsIE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gUmVjZWl2ZWQg
ZXJyb3I6ICciX3MsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCksICInIGZvciBhZCBjbGlj
ayBhdHRyaWJ1dGlvbiByZXF1ZXN0LiJfcykpOworICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UobV9zZXNzaW9uSUQsIE1lc3NhZ2VTb3VyY2U6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJb
UHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gUmVjZWl2ZWQgZXJyb3I6ICciX3MsIGVycm9yLmxv
Y2FsaXplZERlc2NyaXB0aW9uKCksICInIGZvciBhZCBjbGljayBhdHRyaWJ1dGlvbiByZXF1ZXN0
LiJfcykpOwogICAgICAgICB9CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaApp
bmRleCBhMTk2Yzc2YTM4NTBjNmE4NTFiMzZlNGRmMWRiMDQ5YjlkNTFkMGMwLi43MzZiOWRiNzdi
NGQzNGVhZGMwYzk5MmY1MzlhNDJiMjRkNTBmZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
LmgKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJOZXR3b3Jr
TG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgotI2luY2x1ZGUg
Ik5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KQEAgLTM1LDYgKzM1LDcg
QEAKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSlNPTlZh
bHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKQEAgLTQ2LDIwICs0NywxOSBAQCBjbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UHJpdmF0ZUNsaWNrTWVhc3VyZQog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogCi0gICAgdXNpbmcgUmVnaXN0
cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Owot
ICAgIHVzaW5nIFNvdXJjZVNpdGUgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
U291cmNlU2l0ZTsKICAgICB1c2luZyBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSA9IFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZTsK
ICAgICB1c2luZyBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7Ci0KLSAgICBleHBsaWNpdCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrUHJvY2Vz
cyYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB1c2luZyBOZXR3b3JrTG9hZENhbGxiYWNrID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlZlB0cjxKU09OOjpPYmplY3Q+Jik+
OworICAgIHVzaW5nIFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ7CisgICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbjsKKyAgICB1c2luZyBTb3VyY2VTaXRlID0gV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGU7CisgICAgZXhwbGljaXQgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya1Byb2Nlc3MmLCBQQUw6
OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZChOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29y
a0xvYWRDYWxsYmFjayYmKT4mJik7CiAKICAgICB2b2lkIHN0b3JlVW5hdHRyaWJ1dGVkKFByaXZh
dGVDbGlja01lYXN1cmVtZW50JiYpOwogICAgIHZvaWQgaGFuZGxlQXR0cmlidXRpb24oQXR0cmli
dXRpb25UcmlnZ2VyRGF0YSYmLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKICAgICB2b2lkIGNsZWFyKCk7CiAg
ICAgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
Jik7CiAgICAgdm9pZCB0b1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYp
IGNvbnN0OwotICAgIHZvaWQgc2V0UGluZ0xvYWRGdW5jdGlvbihGdW5jdGlvbjx2b2lkKE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KT4mJik+JiYgcGluZ0xvYWRGdW5jdGlvbikgeyBtX3BpbmdMb2FkRnVuY3Rpb24gPSBXVEZNb3Zl
KHBpbmdMb2FkRnVuY3Rpb24pOyB9CiAgICAgdm9pZCBzZXRPdmVycmlkZVRpbWVyRm9yVGVzdGlu
Zyhib29sIHZhbHVlKSB7IG1faXNSdW5uaW5nVGVzdCA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXRU
b2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoVVJMJiYpOwogICAgIHZvaWQgc2V0VG9rZW5TaWdu
YXR1cmVVUkxGb3JUZXN0aW5nKFVSTCYmKTsKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAg
ICBXZWFrUHRyPE5ldHdvcmtTZXNzaW9uPiBtX25ldHdvcmtTZXNzaW9uOwogICAgIFJlZjxOZXR3
b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Np
b25JRDsKLSAgICBGdW5jdGlvbjx2b2lkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKT4mJik+IG1fcGluZ0xvYWRGdW5jdGlvbjsK
KyAgICBGdW5jdGlvbjx2b2lkKE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmLCBOZXR3b3JrTG9hZENh
bGxiYWNrJiYpPiBtX25ldHdvcmtMb2FkRnVuY3Rpb247CiAKICAgICBzdHJ1Y3QgQXR0cmlidXRp
b25SZXBvcnRUZXN0Q29uZmlnIHsKICAgICAgICAgVVJMIGF0dHJpYnV0aW9uUmVwb3J0U291cmNl
VVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjUzMjA1YzdlNDZiNjE4MzcxNzc2ZjlhYWJkYzhjYmIwNmJkMWRhNGQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
TmV0d29ya0xvYWRlci5jcHAKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9h
ZGVyLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgorI2luY2x1ZGUgIk5ldHdvcmtTZXNz
aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9UZXh0UmVzb3VyY2VEZWNvZGVyLmg+CisKKyNpbmNsdWRlIDx3dGYvSlNPTlZhbHVl
cy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpzdGFydChOZXR3b3Jr
U2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgQ2Fs
bGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGxvYWRlciA9IHN0ZDo6dW5p
cXVlX3B0cjxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI+KG5ldyBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIoc2Vzc2lvbiwgV1RGTW92ZShwYXJhbWV0ZXJz
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICBzZXNzaW9uLmFkZFByaXZhdGVD
bGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcihXVEZNb3ZlKGxvYWRlcikpOworfQorCitQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
TmV0d29ya0xvYWRlcihOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0xvYWRQYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycywgQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICA6IG1f
c2Vzc2lvbihtYWtlV2Vha1B0cihzZXNzaW9uKSkKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCit7CisgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VV
bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAq
bV9zZXNzaW9uKTsKKyAgICBtX25ldHdvcmtMb2FkLT5zdGFydCgpOworfQorCit2b2lkIFByaXZh
dGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcjo6ZmFpbChSZXNvdXJjZUVycm9yJiYgZXJy
b3IpCit7CisgICAgaWYgKCFtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZXJyb3IpLCB7IH0sIG51bGxwdHIpOwor
ICAgIGRpZENvbXBsZXRlKCk7Cit9CisKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3
b3JrTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBS
ZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmKQoreworICAgIGZhaWwoUmVzb3Vy
Y2VFcnJvciB7IFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbiB9KTsKK30KKwordm9p
ZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkSlNPTk1JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpKSB7CisgICAgICAgIGZhaWwo
eyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgIk1JTUUgVHlw
ZSBpcyBub3QgYSBKU09OIE1JTUUgdHlwZSJfcyB9KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9yZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBv
bGljeUFjdGlvbjo6VXNlKTsKK30KKwordm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdv
cmtMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQoreworICAgIGlmICghbV9kZWNvZGVyKQorICAg
ICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9u
L2pzb24iX3MsIG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpLmlzRW1wdHkoKSA/IFRleHRF
bmNvZGluZygiVVRGLTgiKSA6IFRleHRFbmNvZGluZyhtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05h
bWUoKSkpOworCisgICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICBt
X2pzb25TdHJpbmcuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXpl
KSk7Cit9CisKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCit7CisgICAg
aWYgKG1fZGVjb2RlcikKKyAgICAgICAgbV9qc29uU3RyaW5nLmFwcGVuZChtX2RlY29kZXItPmZs
dXNoKCkpOworCisgICAgaWYgKGF1dG8ganNvblZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNP
TihtX2pzb25TdHJpbmcudG9TdHJpbmcoKSkpCisgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIo
eyB9LCBtX3Jlc3BvbnNlLCBqc29uVmFsdWUtPmFzT2JqZWN0KCkpOworICAgIGVsc2UKKyAgICAg
ICAgbV9jb21wbGV0aW9uSGFuZGxlcih7IH0sIG1fcmVzcG9uc2UsIG51bGxwdHIpOworCisgICAg
ZGlkQ29tcGxldGUoKTsKK30KKwordm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtM
b2FkZXI6OmRpZEZhaWxMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAg
IGZhaWwoUmVzb3VyY2VFcnJvcihlcnJvcikpOworfQorCit2b2lkIFByaXZhdGVDbGlja01lYXN1
cmVtZW50TmV0d29ya0xvYWRlcjo6ZGlkQ29tcGxldGUoKQoreworICAgIG1fbmV0d29ya0xvYWQg
PSBudWxscHRyOworICAgIGlmIChtX3Nlc3Npb24pCisgICAgICAgIG1fc2Vzc2lvbi0+cmVtb3Zl
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyKHRoaXMpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE5NzJkMDVlNWNiZmQ4OGVkNjM2OTMxOTdlNWQ2MDVmYjMwZDM0ZjAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TmV0d29ya0xvYWRlci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCisjaW5jbHVkZSAiTmV0d29ya0xv
YWRDbGllbnQuaCIKKyNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL1RleHRSZXNvdXJjZURlY29kZXIuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgTmV0d29ya1Nlc3Npb247CisKK2NsYXNzIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50TmV0d29ya0xvYWRlciBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrTG9hZENsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdXNpbmcgQ2FsbGJhY2sgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVmUHRyPEpTT046Ok9iamVjdD4m
KT47CisgICAgc3RhdGljIHZvaWQgc3RhcnQoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrTG9hZFBh
cmFtZXRlcnMmJiwgQ2FsbGJhY2smJik7CisKK3ByaXZhdGU6CisgICAgUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnROZXR3b3JrTG9hZGVyKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0xvYWRQYXJhbWV0
ZXJzJiYsIENhbGxiYWNrJiYpOworCisgICAgLy8gTmV0d29ya0xvYWRDbGllbnQuCisgICAgdm9p
ZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25n
IGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBmaW5hbCB7IH0KKyAgICBib29sIGlzU3luY2hyb25v
dXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBbGxvd2VkVG9B
c2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmlu
YWw7CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpIGZpbmFsOworCisgICAgdm9pZCBmYWlsKFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImJik7CisgICAgdm9pZCBkaWRDb21wbGV0ZSgpOworCisgICAgV2Vha1B0cjxOZXR3b3Jr
U2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4gbV9u
ZXR3b3JrTG9hZDsKKyAgICBDYWxsYmFjayBtX2NvbXBsZXRpb25IYW5kbGVyOworCisgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOworICAgIFJlZlB0cjxXZWJDb3JlOjpU
ZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CisgICAgU3RyaW5nQnVpbGRlciBtX2pzb25T
dHJpbmc7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9SVENEYXRhQ2hhbm5l
bFJlbW90ZU1hbmFnZXJQcm94eS5oCmluZGV4IGZhMmQ2MTgzMTZhMDA5YzQ2MDAyYzdkODg0YWVm
ZjM1ZTdiZDAxNWIuLjg1Yzc2ZDE4MGEyOGU2M2FlOTM1MjIxOGU3NmU1MmY4NWNlZDM1MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkuaApAQCAtMjcsNiArMjcs
NyBAQAogI2lmIEVOQUJMRShXRUJfUlRDKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlU291cmNlQ29ubmVjdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CmluZGV4IDNlZWQ0YjJhMDdlMGNlOTYwY2MzOTFmYzFkNjRkMDI4MTc4MzA1MzYu
LjZjNDAxMDYxOTIxM2Y4YjZmYzQzNTI5MjEyOWI0ZDA1OTJjOTgyOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApA
QCAtNTgsNiArNTgsNyBAQCBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyLmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdv
cmtMb2FkZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQWN0aXZpdHlUcmFja2VyLmNwcAog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYTY5ZTJjNmViYjI3OWI2
MmY0M2Y3ZTRkNzMzZTkzNDdhMzRhMDUwLi5hYjNmNzMyOWVjMTRiZDllNjRjMjlmODJjYjE2MWI2
MWIzN2JlZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTEyMTYsNiArMTIxNiw3IEBACiAJCTU3RkQzMTg2MjJCMzUxNkMwMDhEMEU4
QiAvKiBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RkQzMTdEMjJCMzUxNEEwMDhEMEU4QiAvKiBT
dWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaCAqLzsgfTsKIAkJNTdGRDMxODcyMkIzNTE3
MDAwOEQwRThCIC8qIFdLU09BdXRob3JpemF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RkQzMTcxMjJCMzUxNDgwMDhEMEU4QiAv
KiBXS1NPQXV0aG9yaXphdGlvbkRlbGVnYXRlLmggKi87IH07CiAJCTU3RkU2ODZEMjYwNDgyNzgw
MEJGNDVFNCAvKiBfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdGRTY4NkMyNjA0ODI3ODAwQkY0NUU0IC8q
IF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTdGRTY4OEMyNjBBQkIzRDAwQkY0NUU0IC8qIFByaXZh
dGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdGRTY4OEEyNjBBQkIzRDAwQkY0NUU0IC8qIFByaXZh
dGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5oICovOyB9OwogCQk1QzBCMTc3ODFFN0M4
ODBFMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzBCMTc3NDFFN0M4
NzlDMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87
IH07CiAJCTVDMEIxNzc5MUU3Qzg4MjEwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW1NZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUMwQjE3NzYxRTdDODc5QzAwRTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CiAJCTVDMTIxRTg0MjQxMDIwOEQwMDQ4NkY5QiAvKiBGcmFtZVRyZWVO
b2RlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUMxMjFFODMyNDEwMUY3MDAwNDg2RjlCIC8qIEZyYW1lVHJlZU5vZGVEYXRhLmggKi87IH07CkBA
IC00MzQxLDYgKzQzNDIsOCBAQAogCQk1N0ZEMzE3RTIyQjM1MTRBMDA4RDBFOEIgLyogV0tTT0F1
dGhvcml6YXRpb25EZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdLU09BdXRob3JpemF0aW9uRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3RkQzMTdGMjJCMzUxNEEwMDhEMEU4QiAvKiBTT0F1dGhvcml6YXRpb25TZXNz
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU09BdXRob3Jp
emF0aW9uU2Vzc2lvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdGRTY4NkMy
NjA0ODI3ODAwQkY0NUU0IC8qIF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTU3RkU2ODhBMjYwQUJCM0QwMEJGNDVFNCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE5ldHdvcmtMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnROZXR3b3JrTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3RkU2ODhC
MjYwQUJCM0QwMEJGNDVFNCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9h
ZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMwMDk5M0IyNDE3RkI3RTAw
RDUzQzI1IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMEExMEMxMjM1MjQxQTMwMDUzRTJDQSAv
KiBOZXR3b3JrU2NoZW1lUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTmV0d29ya1NjaGVtZVJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUMwQjE3NzQxRTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1N
ZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
TmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQyL05ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtODUyMiw2ICs4NTI1LDggQEAKIAkJ
CQk4M0EwRUQzMjFGNzQ3Q0M2MDAzMjk5RUIgLyogUHJlY29ubmVjdFRhc2suaCAqLywKIAkJCQk2
QkQwNTg2NDIyMENFOEMyMDAwQkVENUMgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
LmNwcCAqLywKIAkJCQk2QkQwNTg2MzIyMENFOEMyMDAwQkVENUMgLyogUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyLmggKi8sCisJCQkJNTdGRTY4OEIyNjBBQkIzRDAwQkY0NUU0IC8qIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5jcHAgKi8sCisJCQkJNTdGRTY4OEEy
NjBBQkIzRDAwQkY0NUU0IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlci5o
ICovLAogCQkJCUUxQjc4NDcwMTYzRjI0NjkwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5oICovLAogCQkJCTQxMjg3RDREMjI1QzE2MUYwMDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNr
LmggKi8sCiAJCQkpOwpAQCAtMTIwNDUsNiArMTIwNTAsNyBAQAogCQkJCUFBQjE0NUU2MjIzRjkz
MTIwMEU0ODlEOCAvKiBQcmVmZXRjaENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUNDMUI5
MDEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk2QkQw
NTg2NTIyMENFOEMyMDAwQkVENUMgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1N0ZFNjg4QzI2MEFCQjNEMDBCRjQ1RTQgLyogUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkY5NTM2
NTE4RkY1OEY1MDAxREIyRUYgLyogUHJvY2Vzc0Fzc2VydGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxQTdDNTgxMTM2RTE5QzAwRkI3MTY3IC8qIFByb2Nlc3NMYXVuY2hlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDYzRkQ0ODIxRUI5NEVDMDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlv
blJlYXNvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmUzYzU4ZDVkZDZmNDc5MjMzNjczNzBk
NTdlMWIyMzQ0NzAwYWMxMC4uZWE0Y2ZjZGZmOTA5YTJmYWE1M2E2NTM3ZDIzMWI3NmYyYTBjYjIz
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAzLTI2ICBKaWV3ZW4gVGFuICA8amlld2Vu
X3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBJbnRyb2R1Y2UgUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnROZXR3b3JrTG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjIyMTcKKyAgICAgICAgPHJkYXI6Ly83NDgxNzg2Mz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogaHR0cC90ZXN0cy9wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZnJhdWRQcmV2ZW50aW9uVGVzdFVSTC5weToK
KyAgICAgICAgQ2hhbmdlcyB0aGUgdG9rZW5fcHVibGljX2tleSBhbmQgdW5saW5rYWJsZV90b2tl
biB0byBiZSByZXR1cm5lZCB2aWEgSlNPTiBjb250ZW50cy4KKwogMjAyMS0wMy0zMCAgUm9iZXJ0
IEplbm5lciAgPGplbm5lckBhcHBsZS5jb20+CiAKICAgICAgICAgWyBtYWNPUyBEZWJ1ZyBdIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL3hoci10aW1lb3V0LWxvbmd0YXNrLmFu
eS53b3JrZXIuaHRtbCBpcyBhIGZsYWtleSB0ZXh0IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcHJpdmF0ZS1jbGljay1t
ZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS1udWxsLWNvbnRlbnQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9wcml2YXRlLWNs
aWNrLW1lYXN1cmVtZW50LXdpdGgtc291cmNlLW5vbmNlLW51bGwtY29udGVudC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTVmNWNmODQ2YTQ4YjI4YjA2OTljYzA2YzRiYzc1YTExODAyZTUzYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS1udWxs
LWNvbnRlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3RzIHRoYXQgdGhlIHBy
ZXNlbmNlIG9mIGEgc291cmNlIG5vbmNlIHRyaWdnZXJzIGEgdG9rZW4gc2lnbmluZyByZXF1ZXN0
LgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lMS0tPicKKy0tLS0tLS0tCitUb2tl
biBzaWduaW5nIHJlcXVlc3Qgbm90IHJlY2VpdmVkIC0gdGltZWQgb3V0LgorCitVbmF0dHJpYnV0
ZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudHM6CitXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCAxCitTb3VyY2Ugc2l0ZTogMTI3LjAuMC4xCitBdHRyaWJ1dGUgb24gc2l0ZTogbG9j
YWxob3N0CitTb3VyY2UgSUQ6IDMKK05vIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcHJp
dmF0ZS1jbGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS1udWxsLWNvbnRlbnQuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcHJpdmF0
ZS1jbGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS1udWxsLWNvbnRlbnQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kYjI3OTJmZjExNDk0Mjc0YWExZDhjOTZmMDM3MGIyYjFkNGM5OTA5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50LXdpdGgtc291cmNlLW5vbmNlLW51bGwtY29u
dGVudC5odG1sCkBAIC0wLDAgKzEsNzAgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10
ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEZyYXVkUHJldmVudGlvbkVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWwgbGFuZz0iZW4iPgor
PGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxtZXRhIG5hbWU9InZpZXdw
b3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdXNlci1z
Y2FsYWJsZT1ubyI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxw
ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQocnVuVGVzdCwgMCkiPgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPlRlc3RzIHRoYXQgdGhlIHByZXNlbmNlIG9mIGEgc291cmNl
IG5vbmNlIHRyaWdnZXJzIGEgdG9rZW4gc2lnbmluZyByZXF1ZXN0LjwvZGl2PgorPGEgaWQ9InRh
cmdldExpbmsiIGF0dHJpYnV0aW9uc291cmNlaWQ9MyBhdHRyaWJ1dGlvbmRlc3RpbmF0aW9uPSJo
dHRwOi8vbG9jYWxob3N0OjgwMDAiIGF0dHJpYnV0aW9uc291cmNlbm9uY2U9IkFCQ0RFRmFiY2Rl
ZjAxMjM0NTY3ODkiPkxpbms8L2E+PGJyPgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzxzY3Jp
cHQ+CisgICAgY29uc3QgY3VycmVudFRpbWVNaWxsaXMgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgp
OworICAgIGNvbnN0IGhpZ2hFbnRyb3B5Qml0cyA9IGN1cnJlbnRUaW1lTWlsbGlzIC0gKE1hdGgu
Zmxvb3IoY3VycmVudFRpbWVNaWxsaXMgLyAxMDAwMDAwKSAqIDEwMDAwMDApOworICAgIGNvbnN0
IGR1bW15ID0gaGlnaEVudHJvcHlCaXRzICsgIiIgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkg
KiAxMDApOworCisgICAgaWYgKCF3aW5kb3cubG9jYXRpb24uc2VhcmNoKQorICAgICAgICBwcmVw
YXJlVGVzdCgpOworCisgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJRCkgewor
ICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJRCk7
CisgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZz
ZXRXaWR0aCAvIDI7CisgICAgICAgIHZhciBjZW50ZXJZID0gZWxlbWVudC5vZmZzZXRUb3AgKyBl
bGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgIFVJSGVscGVyLmFjdGl2YXRlQXQoY2Vu
dGVyWCwgY2VudGVyWSkudGhlbigKKyAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIFByb21pc2UgcmVq
ZWN0ZWQuIjsKKyAgICAgICAgICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgpOworICAgICAgICAg
ICAgfQorICAgICAgICApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFwcGVuZElmcmFtZSh1cmws
IG9ubG9hZENhbGxiYWNrKSB7CisgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgIGlmcmFtZUVsZW1lbnQuc3JjID0gdXJs
OworICAgICAgICBpZiAob25sb2FkQ2FsbGJhY2spCisgICAgICAgICAgICBpZnJhbWVFbGVtZW50
Lm9ubG9hZCA9IG9ubG9hZENhbGxiYWNrOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGlmcmFtZUVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFwcGVuZFRva2VuU2ln
bmF0dXJlSWZyYW1lQW5kRmluaXNoKGR1bW15KSB7CisgICAgICAgIC8vIHRlYXJEb3duQW5kRmlu
aXNoKCk7CisgICAgICAgIGFwcGVuZElmcmFtZSgiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3ByaXZh
dGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9nZXRUb2tlblNpZ25pbmdEYXRhLnB5P3RpbWVv
dXRfbXM9MjAwJmR1bW15PSIgKyBkdW1teSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0
UnVubmVyLmR1bXBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOworICAgICAgICAgICAgZG9jdW1l
bnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0TGluayIp
KTsKKyAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CisgICAgICAgIH0pOworICAgIH0K
KworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICAgICAgaWYgKCF3aW5kb3cubG9jYXRpb24uc2VhcmNoKSB7CisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGlj
S2V5VVJMRm9yVGVzdGluZygiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3ByaXZhdGVDbGlja01lYXN1
cmVtZW50L3Jlc291cmNlcy9mcmF1ZFByZXZlbnRpb25UZXN0VVJMLnB5P2R1bW15PSIgKyBkdW1t
eSArICImbnVsbENvbnRlbnQ9dHJ1ZSIpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZnJhdWRQ
cmV2ZW50aW9uVGVzdFVSTC5weT9kdW1teT0iICsgZHVtbXkgKyAiJmxhc3Q9dHJ1ZSIpOworCisg
ICAgICAgICAgICAgICAgdGFyZ2V0TGluay5ocmVmID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50LXdpdGgtc291
cmNlLW5vbmNlLXdyb25nLWNvbnRlbnQtdHlwZS5odG1sP2R1bW15PSIgKyBkdW1teTsKKyAgICAg
ICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoInRhcmdldExpbmsiKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMo
d2luZG93LmxvY2F0aW9uLnNlYXJjaCk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9rZW5TaWdu
YXR1cmVJZnJhbWVBbmRGaW5pc2gocGFyYW1zLmdldCgiZHVtbXkiKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
b3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgTm8gdGVzdFJ1bm5lci4iOworICAgICAgICB9Cisg
ICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3ByaXZhdGUtY2xpY2stbWVhc3Vy
ZW1lbnQtd2l0aC1zb3VyY2Utbm9uY2Utd3JvbmctY29udGVudC10eXBlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcHJpdmF0ZS1j
bGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS13cm9uZy1jb250ZW50LXR5cGUtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1ZjVjZjg0NmE0OGIyOGIwNjk5Y2MwNmM0YmM3NWExMTgw
MmU1M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVD
bGlja01lYXN1cmVtZW50L3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9u
Y2Utd3JvbmctY29udGVudC10eXBlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUZXN0
cyB0aGF0IHRoZSBwcmVzZW5jZSBvZiBhIHNvdXJjZSBub25jZSB0cmlnZ2VycyBhIHRva2VuIHNp
Z25pbmcgcmVxdWVzdC4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZTEtLT4nCist
LS0tLS0tLQorVG9rZW4gc2lnbmluZyByZXF1ZXN0IG5vdCByZWNlaXZlZCAtIHRpbWVkIG91dC4K
KworVW5hdHRyaWJ1dGVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRzOgorV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgMQorU291cmNlIHNpdGU6IDEyNy4wLjAuMQorQXR0cmlidXRl
IG9uIHNpdGU6IGxvY2FsaG9zdAorU291cmNlIElEOiAzCitObyBhdHRyaWJ1dGlvbiB0cmlnZ2Vy
IGRhdGEuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01l
YXN1cmVtZW50L3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9uY2Utd3Jv
bmctY29udGVudC10eXBlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9uY2Ut
d3JvbmctY29udGVudC10eXBlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM0YmMwNWIwOWUxMWUzNzQ2NDli
YjIwYmFkOThjMWI1OTRjZTUwNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC13
aXRoLXNvdXJjZS1ub25jZS13cm9uZy1jb250ZW50LXR5cGUuaHRtbApAQCAtMCwwICsxLDcwIEBA
Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZp
ZXdwb3J0PXRydWUgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcmF1ZFByZXZlbnRpb25FbmFibGVk
PXRydWUgXSAtLT4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9
IlVURi04Ij4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNl
LXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgorICAgIDxzY3JpcHQg
c3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJzZXRUaW1lb3V0KHJ1blRlc3QsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0
cyB0aGF0IHRoZSBwcmVzZW5jZSBvZiBhIHNvdXJjZSBub25jZSB0cmlnZ2VycyBhIHRva2VuIHNp
Z25pbmcgcmVxdWVzdC48L2Rpdj4KKzxhIGlkPSJ0YXJnZXRMaW5rIiBhdHRyaWJ1dGlvbnNvdXJj
ZWlkPTMgYXR0cmlidXRpb25kZXN0aW5hdGlvbj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwIiBhdHRy
aWJ1dGlvbnNvdXJjZW5vbmNlPSJBQkNERUZhYmNkZWYwMTIzNDU2Nzg5Ij5MaW5rPC9hPjxicj4K
KzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGNvbnN0IGN1cnJlbnRUaW1l
TWlsbGlzID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTsKKyAgICBjb25zdCBoaWdoRW50cm9weUJp
dHMgPSBjdXJyZW50VGltZU1pbGxpcyAtIChNYXRoLmZsb29yKGN1cnJlbnRUaW1lTWlsbGlzIC8g
MTAwMDAwMCkgKiAxMDAwMDAwKTsKKyAgICBjb25zdCBkdW1teSA9IGhpZ2hFbnRyb3B5Qml0cyAr
ICIiICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwKTsKKworICAgIGlmICghd2luZG93
LmxvY2F0aW9uLnNlYXJjaCkKKyAgICAgICAgcHJlcGFyZVRlc3QoKTsKKworICAgIGZ1bmN0aW9u
IGFjdGl2YXRlRWxlbWVudChlbGVtZW50SUQpIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SUQpOworICAgICAgICB2YXIgY2VudGVyWCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgICAgICB2YXIg
Y2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOwor
ICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCisgICAg
ICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQi
KS5pbm5lclRleHQgPSAiRkFJTCBQcm9taXNlIHJlamVjdGVkLiI7CisgICAgICAgICAgICAgICAg
dGVhckRvd25BbmRGaW5pc2goKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBhcHBlbmRJZnJhbWUodXJsLCBvbmxvYWRDYWxsYmFjaykgeworICAgICAg
ICBsZXQgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwor
ICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9IHVybDsKKyAgICAgICAgaWYgKG9ubG9hZENhbGxi
YWNrKQorICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5vbmxvYWQgPSBvbmxvYWRDYWxsYmFjazsK
KyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBhcHBlbmRUb2tlblNpZ25hdHVyZUlmcmFtZUFuZEZpbmlzaChkdW1t
eSkgeworICAgICAgICAvLyB0ZWFyRG93bkFuZEZpbmlzaCgpOworICAgICAgICBhcHBlbmRJZnJh
bWUoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJj
ZXMvZ2V0VG9rZW5TaWduaW5nRGF0YS5weT90aW1lb3V0X21zPTIwMCZkdW1teT0iICsgZHVtbXks
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKSk7CisgICAgICAgICAgICB0ZWFyRG93bkFu
ZEZpbmlzaCgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkg
eworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIGlmICghd2lu
ZG93LmxvY2F0aW9uLnNlYXJjaCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoImh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZnJhdWRQcmV2
ZW50aW9uVGVzdFVSTC5weT9kdW1teT0iICsgZHVtbXkgKyAiJndyb25nQ29udGVudFR5cGU9dHJ1
ZSIpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZnJhdWRQcmV2ZW50aW9uVGVzdFVSTC5weT9k
dW1teT0iICsgZHVtbXkgKyAiJmxhc3Q9dHJ1ZSIpOworCisgICAgICAgICAgICAgICAgdGFyZ2V0
TGluay5ocmVmID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50LXdpdGgtc291cmNlLW5vbmNlLXdyb25nLWNvbnRl
bnQtdHlwZS5odG1sP2R1bW15PSIgKyBkdW1teTsKKyAgICAgICAgICAgICAgICBhY3RpdmF0ZUVs
ZW1lbnQoInRhcmdldExpbmsiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgbGV0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJj
aCk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9rZW5TaWduYXR1cmVJZnJhbWVBbmRGaW5pc2go
cGFyYW1zLmdldCgiZHVtbXkiKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0g
IkZBSUwgTm8gdGVzdFJ1bm5lci4iOworICAgICAgICB9CisgICAgfQorPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVD
bGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9mcmF1ZFByZXZlbnRpb25UZXN0VVJMLnB5IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZnJh
dWRQcmV2ZW50aW9uVGVzdFVSTC5weQppbmRleCBmZWE2NzkxNzY4MWJmMWUyM2IyZTliYzdmYTlh
ZTkxOTM1YzhiY2UwLi4yYmQ5ZmY2ZmVhNDUzNmFlMjM2NjdlNTI4MWZlZjc1MGIxZTYxMTdmIDEw
MDc1NQotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50
L3Jlc291cmNlcy9mcmF1ZFByZXZlbnRpb25UZXN0VVJMLnB5CisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2ZyYXVkUHJldmVudGlv
blRlc3RVUkwucHkKQEAgLTExLDYgKzExLDggQEAgc3lzLnBhdGguaW5zZXJ0KDAsIGh0dHBfcm9v
dCkKIHRva2VuX3NpZ25pbmdfZmlsZSA9IG9wZW4oJ3t9LnRtcCcuZm9ybWF0KHRva2VuX3NpZ25p
bmdfZmlsZXBhdGgpLCAnYScpCiBjb29raWVzX2ZvdW5kID0gRmFsc2UKIGlzX2xhc3RfcmVxdWVz
dCA9IEZhbHNlCitpc193cm9uZ19jb250ZW50X3R5cGUgPSBGYWxzZQoraXNfbnVsbF9jb250ZW50
ID0gRmFsc2UKIAogcmVxdWVzdF9tZXRob2QgPSBvcy5lbnZpcm9uLmdldCgnUkVRVUVTVF9NRVRI
T0QnLCBOb25lKQogaG9zdCA9IG9zLmVudmlyb24uZ2V0KCdIVFRQX0hPU1QnLCBOb25lKQpAQCAt
NDMsNiArNDUsMTQgQEAgaWYgdXJpOgogICAgIGlmIHBvc2l0aW9uX29mX2R1bW15ICE9IC0xOgog
ICAgICAgICBpc19sYXN0X3JlcXVlc3QgPSBUcnVlCiAKKyAgICBwb3NpdGlvbl9vZl9kdW1teSA9
IHVyaS5maW5kKCcmd3JvbmdDb250ZW50VHlwZT0nKQorICAgIGlmIHBvc2l0aW9uX29mX2R1bW15
ICE9IC0xOgorICAgICAgICBpc193cm9uZ19jb250ZW50X3R5cGUgPSBUcnVlCisKKyAgICBwb3Np
dGlvbl9vZl9kdW1teSA9IHVyaS5maW5kKCcmbnVsbENvbnRlbnQ9JykKKyAgICBpZiBwb3NpdGlv
bl9vZl9kdW1teSAhPSAtMToKKyAgICAgICAgaXNfbnVsbF9jb250ZW50ID0gVHJ1ZQorCiBpZiBu
b3QgY29va2llc19mb3VuZDoKICAgICB0b2tlbl9zaWduaW5nX2ZpbGUud3JpdGUoJ05vIGNvb2tp
ZXMgaW4gdG9rZW4gc2lnbmluZyByZXF1ZXN0LlxuJykKIApAQCAtNTQsMTAgKzY0LDE3IEBAIGlm
IGlzX2xhc3RfcmVxdWVzdDoKICAgICBpZiBvcy5wYXRoLmlzZmlsZSgne30udG1wJy5mb3JtYXQo
dG9rZW5fc2lnbmluZ19maWxlcGF0aCkpOgogICAgICAgICBvcy5yZW5hbWUoJ3t9LnRtcCcuZm9y
bWF0KHRva2VuX3NpZ25pbmdfZmlsZXBhdGgpLCB0b2tlbl9zaWduaW5nX2ZpbGVwYXRoKQogCitj
b250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24vanNvbicKK2lmIGlzX3dyb25nX2NvbnRlbnRfdHlw
ZToKKyAgICBjb250ZW50X3R5cGUgPSAndGV4dC9odG1sJworCitjb250ZW50ID0gJ3sidG9rZW5f
cHVibGljX2tleSI6ICJBQkNEIiwgInVubGlua2FibGVfdG9rZW4iOiAiQUJDRCJ9JworaWYgaXNf
bnVsbF9jb250ZW50OgorICAgIGNvbnRlbnQgPSAnJworCiBzeXMuc3Rkb3V0LndyaXRlKAogICAg
ICdzdGF0dXM6IDIwMVxyXG4nCi0gICAgJ3VubGlua2FibGVfdG9rZW5fcHVibGljX2tleTogQUJD
RFxyXG4nCi0gICAgJ3NlY3JldF90b2tlbl9zaWduYXR1cmU6IEFCQ0RcclxuJwogICAgICdTZXQt
Q29va2llOiBjb29raWVTZXRJblRva2VuU2lnbmluZ1Jlc3BvbnNlPTE7IHBhdGg9L1xyXG4nCi0g
ICAgJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sXHJcblxyXG4nCi0pCisgICAgJ0NvbnRlbnQtVHlw
ZToge31cclxuXHJcbicKKyAgICAne30nLmZvcm1hdChjb250ZW50X3R5cGUsIGNvbnRlbnQpCisp
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZ2V0VG9rZW5TaWduaW5n
RGF0YS5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
cmVzb3VyY2VzL2dldFRva2VuU2lnbmluZ0RhdGEucHkKaW5kZXggZDc1MTRmNDk3NTY4Mjk3ZmU5
MzgzYjMzYWFjNjQ2NmE5YjNhNWFjNS4uM2VhZjZmOWZmOTFmZDY5NGY1ZjllMzYxYzViZjhkMzQ2
ZDllMmMyNyAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9yZXNvdXJjZXMvZ2V0VG9rZW5TaWduaW5nRGF0YS5weQorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9nZXRUb2tl
blNpZ25pbmdEYXRhLnB5CkBAIC0yOCw3ICsyOCw3IEBAIHdoaWxlIG5vX3RpbWVvdXQgb3IgdGlt
ZW91dF9tc2VjcyA+IDA6CiAgICAgICAgIGJyZWFrCiAKICAgICB0aW1lLnNsZWVwKDAuMDEpCi0g
ICAgaWYgbm9fdGltZW91dDoKKyAgICBpZiBub3Qgbm9fdGltZW91dDoKICAgICAgICAgdGltZW91
dF9tc2VjcyAtPSAxMAogCiBzeXMuc3Rkb3V0LndyaXRlKAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>