<?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>231674</bug_id>
          
          <creation_ts>2021-10-13 06:30:22 -0700</creation_ts>
          <short_desc>Support in-process testing of IPC messages</short_desc>
          <delta_ts>2022-02-14 05:12:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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=236589</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=236590</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nils">nls.wk</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>mkwst</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1803733</commentid>
    <comment_count>0</comment_count>
    <who name="Nils">nls.wk</who>
    <bug_when>2021-10-13 06:30:22 -0700</bug_when>
    <thetext>Add entry point for in-process IPC fuzzing and export function to be used during fuzzing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803740</commentid>
    <comment_count>1</comment_count>
    <who name="Nils">nls.wk</who>
    <bug_when>2021-10-13 06:44:00 -0700</bug_when>
    <thetext>&lt;rdar://84189314&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803741</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-13 06:46:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/84195963&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803750</commentid>
    <comment_count>3</comment_count>
      <attachid>441072</attachid>
    <who name="Nils">nls.wk</who>
    <bug_when>2021-10-13 07:07:56 -0700</bug_when>
    <thetext>Created attachment 441072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803770</commentid>
    <comment_count>4</comment_count>
      <attachid>441081</attachid>
    <who name="Nils">nls.wk</who>
    <bug_when>2021-10-13 08:20:36 -0700</bug_when>
    <thetext>Created attachment 441081
Patch

Fix iOS builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803789</commentid>
    <comment_count>5</comment_count>
      <attachid>441086</attachid>
    <who name="Nils">nls.wk</who>
    <bug_when>2021-10-13 08:58:42 -0700</bug_when>
    <thetext>Created attachment 441086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804768</commentid>
    <comment_count>6</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-10-15 05:13:44 -0700</bug_when>
    <thetext>It&apos;s a great start!

Once this is in, it might be very hard to fix WebKit IPC without breaking the fuzzer. As such it&apos;d be great if:
1) It didn&apos;t expect things to be called inside the implementation ad-hoc
2) It used the expected threading model

It&apos;s not clear to me whether the &quot;start fuzzing&quot; message is a specific WebKit message you want to override, or do you just want &quot;start fuzzing&quot; message. Below is written from the standpoint that one just wants to start the testing, not override a specific message.

I think more structural approach would be:
1) Define IPC interface IPCTestingAPI.messages.in:
messages -&gt; IPCTester NotRefCounted {
  StartMessageTesting()
}


2) Register this interface in all the project toplevel processes you want to test.

3) When receiving the message, post a task to main runloop to run the externally loaded fuzz driver

4) The fuzz driver should get WebKit function and context in, so that when the fuzz driver calls into webkit with the test case, webkit code can just use the context to setup the call state.

So the pseudocode would be:

extern &quot;C&quot; typedef (*OneInputFunc)(char* data, size_t sz, void* context);

extern &quot;C&quot; void (*messageTestDriver)(OneInputFunc, void* context);

extern &quot;C&quot; void testOneMessage(char* data, size_t sz, void* context)
{
    IPC::Connection* connection = reinterpret_cast&lt;Connection*&gt;(context);
    auto decoder = IPC::Decoder::create(data, sz, nullptr, Vector&lt;IPC::Attachment&gt; { });
    if (!decoder)
        return 0;
    if (!decoder-&gt;isValid())
        return 0;
    connection-&gt;dispatchIncomingMessageForTesting(WTFMove(decoder));
}

void AuxiliaryProcess::startMessageTesting()
{
    if (!messageTestDriver)
        messageTestDriver = dyldload(..);
    // When receiving the StartMessageTesting, run the tester in next mainloop iteration.
    RunLoop().dispatch([connection = m_connection] {
        m_connection-&gt;setIgnoreInvalidMessageForTesting();
        // Ref above keeps the connection alive.
        messageTestDriver(testOneMessage, connection.get());
    }
};

void Connection::dispatchIncomingMessageForTesting(Decoder decoder) {
   m_connectionQueue-&gt;dispatch([decoder = WTFMove(decoder)] {
       processIncomingMessage(WTFMove(decoder));
   });
}


--

In your current impl, you&apos;d run your fuzzer driver loop inside one of the Connection private implementation methods for dispatching one message, re-entering the connection message dispatch logic while sending multiple messages. This is not the way it&apos;s intended to work.


Note: running the message testing in main loop will have the side-effect that the message processing loop runs concurrently. This means that if other processes send messages to the process you&apos;re testing, these messages would be processed in between your test messages. This may or may not interfere with your goal, so care should be taken if this must be further changed. Same with message sends, IIUC correctly, your current never-ending fuzz loop would prevent any messages sent by the tested process to be queued instead of actually sent. When run in main loop, sent messages would be sent business as usual.

also, you could just name the methods, variables and such in &quot;normal webkit way&quot;. E.g. ptfFuzzNow, TryLoadPTF all break the logic of the naming. Even if PFT is a project of some kind, it would be less surprising to use just normal, general names to describe the concept.

fuzz == message testing ?
pftFuzzNow == messageTestDriver?

PTFTestOneInputConnection = messageTestOneInput ? testMessage? sendTestMessage ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805032</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-10-15 14:48:47 -0700</bug_when>
    <thetext>(Adding a few folks who might have additional context)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816406</commentid>
    <comment_count>8</comment_count>
      <attachid>444666</attachid>
    <who name="Nils">nls.wk</who>
    <bug_when>2021-11-18 06:41:07 -0800</bug_when>
    <thetext>Created attachment 444666
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817465</commentid>
    <comment_count>9</comment_count>
      <attachid>445030</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-23 07:16:35 -0800</bug_when>
    <thetext>Created attachment 445030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817467</commentid>
    <comment_count>10</comment_count>
      <attachid>445032</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-23 07:20:28 -0800</bug_when>
    <thetext>Created attachment 445032
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825981</commentid>
    <comment_count>11</comment_count>
      <attachid>447713</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-21 05:32:18 -0800</bug_when>
    <thetext>Created attachment 447713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825986</commentid>
    <comment_count>12</comment_count>
      <attachid>447714</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-21 06:03:05 -0800</bug_when>
    <thetext>Created attachment 447714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826001</commentid>
    <comment_count>13</comment_count>
      <attachid>447716</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-21 07:59:59 -0800</bug_when>
    <thetext>Created attachment 447716
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832468</commentid>
    <comment_count>14</comment_count>
      <attachid>447716</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-01-20 09:37:48 -0800</bug_when>
    <thetext>Comment on attachment 447716
Patch

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

r=me

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:286
&gt; +#if ENABLE(IPC_TESTING_API)

Seems like this could just be part of the protected region of lines 279-284?

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:374
&gt; +#if ENABLE(IPC_TESTING_API)

Seems like this could be inside the IPC_TESTING_API macro area (lines 367-371)?

&gt; Source/WebKit/Platform/IPC/Connection.cpp:1291
&gt; +    if (!iterator-&gt;value.isValidKey(identifier))

Why don&apos;t we want to mark the connection as dispatching an invalid message anymore?

&gt; Source/WebKit/Platform/IPC/Decoder.h:51
&gt; +    using BufferDeallocator = Function&lt;void(const uint8_t*, size_t)&gt;;

Much nicer!

&gt; Source/WebKit/WebAuthnProcess/WebAuthnConnectionToWebProcess.h:87
&gt; +

Nit: Extra blank line!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832516</commentid>
    <comment_count>15</comment_count>
      <attachid>447716</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-20 11:56:45 -0800</bug_when>
    <thetext>Comment on attachment 447716
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:286
&gt;&gt; +#if ENABLE(IPC_TESTING_API)
&gt; 
&gt; Seems like this could just be part of the protected region of lines 279-284?

No, people add new checks, so they should add new checks between these ifdefs. Added a comment.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:374
&gt;&gt; +#if ENABLE(IPC_TESTING_API)
&gt; 
&gt; Seems like this could be inside the IPC_TESTING_API macro area (lines 367-371)?

Same here. The above ifdef is part of a list, where as below ifdef is part of the function postamble . added a comment.

&gt;&gt; Source/WebKit/Platform/IPC/Connection.cpp:1291
&gt;&gt; +    if (!iterator-&gt;value.isValidKey(identifier))
&gt; 
&gt; Why don&apos;t we want to mark the connection as dispatching an invalid message anymore?

moved to the caller since there&apos;s two error cases (two nullptr exits)

&gt;&gt; Source/WebKit/WebAuthnProcess/WebAuthnConnectionToWebProcess.h:87
&gt;&gt; +
&gt; 
&gt; Nit: Extra blank line!

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832517</commentid>
    <comment_count>16</comment_count>
      <attachid>449600</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-20 11:57:31 -0800</bug_when>
    <thetext>Created attachment 449600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832700</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-21 00:34:03 -0800</bug_when>
    <thetext>Committed r288354 (246260@main): &lt;https://commits.webkit.org/246260@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 449600.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441072</attachid>
            <date>2021-10-13 07:07:56 -0700</date>
            <delta_ts>2021-10-13 08:44:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231674-20211013160754.patch</filename>
            <type>text/plain</type>
            <size>13617</size>
            <attacher name="Nils">nls.wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzOTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc4NmIxOGZlODAxOGRkNDg5
MzUwYThiNzNjYTBjZGY0NDkwNWM5NDMuLmUzZmI4NGJmZjFkNzYyM2NmODlmZjNiNDYyZGFmNDM4
Mjg0MDQ3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMTAtMTMgIE5pbHMgU29t
bWVyICA8bmxzLndrQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRzIGVudHJ5IHBvaW50IGZvciBp
bi1wcm9jZXNzIElQQyBmdXp6aW5nIGFuZCBleHBvcnRzIGZ1bmN0aW9uIHRvIGJlIHVzZWQgZm9y
IGZ1enppbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzE2NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgYXMgdGVzdGluZyB3b3VsZCByZXF1aXJlIGludGVybmFsIHRvb2xzLgor
CisgICAgICAgICogUGxhdGZvcm0vRXh0cmFQcml2YXRlU3ltYm9sc0ZvclRBUEkuaDoKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hGdXp6TWVzc2FnZSk6CisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjEtMTAtMTEgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFBy
b2Nlc3NdIFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIFBhcnQgODogQ29uc29s
aWRhdGUgRGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9FeHRyYVByaXZhdGVTeW1ib2xzRm9yVEFQSS5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9FeHRyYVByaXZhdGVTeW1ib2xzRm9yVEFQSS5oCmluZGV4IGZiN2FjMGJjNGMxY2M4
OTAzYmE5MjU0YzE0MjMxZDM2NjlkZDQyOGYuLjMwMjFjMGExMTE1NjQ5ODFlMjY5MDg3ZDJlNTYy
YjAzM2QxMmFjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vRXh0cmFQcml2
YXRlU3ltYm9sc0ZvclRBUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0V4dHJhUHJp
dmF0ZVN5bWJvbHNGb3JUQVBJLmgKQEAgLTM2LDYgKzM2LDkgQEAgdm9pZCBXZWJDb250ZW50U2Vy
dmljZUluaXRpYWxpemVyKCk7CiB2b2lkIEdQVVNlcnZpY2VJbml0aWFsaXplcigpOwogdm9pZCBX
ZWJBdXRoblNlcnZpY2VJbml0aWFsaXplcigpOwogCisvLyBGdXp6aW5nIGVudHJ5cG9pbnRzIHdp
bGwgb25seSBldmVyIGJlIGNhbGxlZCBieSBpbnRlcm5hbCB0b29scwordm9pZCBQVEZUZXN0T25l
SW5wdXRDb25uZWN0aW9uKCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IGQ2ZWE5YzhjYTUzYzlk
NTgwMmM2MGI2ZDNkZDQzMmExODVjOWJkYTkuLmRkYzFlYzI2ZjZhOTk3YTZlMGM5MGJkYzE2N2M0
ZjYyOTZmZWNhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3Bw
CkBAIC00OCw2ICs0OCwxMCBAQAogI2luY2x1ZGUgIlVuaXhNZXNzYWdlLmgiCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisjaW5jbHVkZSAiSVBDRnV6emluZy5oIgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBJUEMgewogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xMDYwLDYg
KzEwNjQsOSBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShEZWNvZGVyJiBkZWNv
ZGVyKQogCiB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4gbWVzc2FnZSkKIHsKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIElu
aXRpYWxpemVQVEZDb25uZWN0aW9uRnV6emluZyh0aGlzLCBtZXNzYWdlLT5tZXNzYWdlTmFtZSgp
KTsKKyNlbmRpZgogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgaWYgKCFpc1Zh
bGlkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uaAppbmRleCBjMjhmYzdhY2VmZDJiMjM2NWQ4Y2U0YzNiMzIzODdmOGUxMzkxOWQ4Li5jZWE5
OWNiOTI1MGEyNzg3OGM5NTdiYzdhMDhhMDYxMTEyNzAzNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0zMTYsNiArMzE2LDggQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXRJZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3RpbmcoKSB7IG1faWdub3JlSW52YWxp
ZE1lc3NhZ2VGb3JUZXN0aW5nID0gdHJ1ZTsgfQogICAgIGJvb2wgaWdub3JlSW52YWxpZE1lc3Nh
Z2VGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRl
c3Rpbmc7IH0KKworICAgIHZvaWQgZGlzcGF0Y2hGdXp6TWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4gZGVjb2RlcikgeyB0aGlzLT5kaXNwYXRjaE1lc3NhZ2UoV1RGTW92ZShkZWNvZGVy
KSk7IH0KICNlbmRpZgogCiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2Uo
TWVzc2FnZVJlY2VpdmVyJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSVBDRnV6emluZy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9JUENGdXp6aW5nLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjFkMWU3NTI1Y2Qx
MTE5MzE0MDRiNjA5M2VhNGI5MjkxMTU0OTlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvSVBDRnV6emluZy5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJUENGdXp6aW5nLmgiCisKKyNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorCisjaW5jbHVkZSA8
ZGxmY24uaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaWYg
RU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKworbmFtZXNwYWNlIElQQyB7CisKK3ZvaWQgVHJ5TG9h
ZFBURigpCit7CisgICAgaWYgKCFwdGZMb2FkRmFpbGVkICYmICFwdGZBbHJlYWR5TG9hZGVkKSB7
CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiWy1dIEluIFRyeUxvYWRQVEYoKSBwaWQ6JWRcbiIs
IGdldHBpZCgpKTsKKyAgICAgICAgcHRmRnV6ek5vd190IHB0ZkZ1enpOb3cgPSAocHRmRnV6ek5v
d190KWRsc3ltKFJUTERfREVGQVVMVCwgIlBURkZ1enpOb3ciKTsKKyAgICAgICAgZnByaW50Zihz
dGRlcnIsICJbLV0gUFRGRnV6ek5vdzogJXBcbiIsIHB0ZkZ1enpOb3cpOworICAgICAgICBpZiAo
IXB0ZkZ1enpOb3cpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiWy1dIFBURkZ1enpO
b3cgbm90IGxvYWRlZC5cbiIpOworICAgICAgICAgICAgcHRmTG9hZEZhaWxlZCA9IHRydWU7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJb
LV0gZXhlY3V0aW5nIFBURkZ1enpOb3dcbiIpOworICAgICAgICBwdGZBbHJlYWR5TG9hZGVkID0g
dHJ1ZTsKKyAgICAgICAgcHRmRnV6ek5vdygpOworICAgIH0KK30KKwordm9pZCBJbml0aWFsaXpl
UFRGQ29ubmVjdGlvbkZ1enppbmcoQ29ubmVjdGlvbiAqaXBjQ29ubmVjdGlvbiwgTWVzc2FnZU5h
bWUgbWVzc2FnZU5hbWUpCit7CisgICAgaWYgKCFwdGZNZXNzYWdlTmFtZSkgeworICAgICAgICBj
aGFyKiBjID0gZ2V0ZW52KCJQT0xMT0NLX01FU1NBR0VfTkFNRSIpOworICAgICAgICBpZiAoIWMp
CisgICAgICAgICAgICBwdGZNZXNzYWdlTmFtZSA9IDB4ZmZmZmZmZmY7IC8vIGludmFsaWQKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcHRmTWVzc2FnZU5hbWUgPSBhdG9pKGMpOworICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIlstXSBwdGZNZXNzYWdlTmFtZTogJXVcbiIsIHB0Zk1lc3NhZ2VO
YW1lKTsKKyAgICB9CisgICAgaWYgKCFwdGZMb2FkRmFpbGVkICYmICFwdGZBbHJlYWR5TG9hZGVk
CisgICAgICAgICYmIG1lc3NhZ2VOYW1lID09IHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+
KHB0Zk1lc3NhZ2VOYW1lKSkgeworICAgICAgICBwdGZMYXN0Q29ubmVjdGlvbiA9IGlwY0Nvbm5l
Y3Rpb247CisgICAgICAgIGlwY0Nvbm5lY3Rpb24tPnNldElnbm9yZUludmFsaWRNZXNzYWdlRm9y
VGVzdGluZygpOworICAgICAgICBUcnlMb2FkUFRGKCk7CisgICAgfQorfQorCit9CisKK2ludCBQ
VEZUZXN0T25lSW5wdXRDb25uZWN0aW9uKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBzeikKK3sK
KyAgICBhdXRvIGRlY29kZXIgPSBJUEM6OkRlY29kZXI6OmNyZWF0ZShkYXRhLCBzeiwgbnVsbHB0
ciwgVmVjdG9yPElQQzo6QXR0YWNobWVudD4geyB9KTsKKyAgICBpZiAoIWRlY29kZXIpCisgICAg
ICAgIHJldHVybiAwOworICAgIGlmICghZGVjb2Rlci0+aXNWYWxpZCgpKQorICAgICAgICByZXR1
cm4gMDsKKyAgICBJUEM6OnB0Zkxhc3RDb25uZWN0aW9uLT5kaXNwYXRjaEZ1enpNZXNzYWdlKFdU
Rk1vdmUoZGVjb2RlcikpOworICAgIHJldHVybiAwOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0lQQ0Z1enppbmcuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0lQQ0Z1enppbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMDNlOTc1NTM3MTc5YjBmYmUw
NzFmYjdjNjFmNjFlNDY0YjI0ZWIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvSVBDRnV6emluZy5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisKKyNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIldLRGVjbGFyYXRp
b25TcGVjaWZpZXJzLmgiCisKKyNpbmNsdWRlIDxkbGZjbi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+
CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKK25hbWVzcGFjZSBJUEMgeworCitzdGF0aWMgYm9vbCBw
dGZMb2FkRmFpbGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBwdGZBbHJlYWR5TG9hZGVkID0gZmFs
c2U7CisKK3N0YXRpYyBJUEM6OkNvbm5lY3Rpb24gKnB0Zkxhc3RDb25uZWN0aW9uID0gbnVsbHB0
cjsKK3N0YXRpYyB1bnNpZ25lZCBwdGZNZXNzYWdlTmFtZSA9IDA7CisKK3R5cGVkZWYgaW50ICgq
cHRmRnV6ek5vd190KSh2b2lkKTsKKwordm9pZCBUcnlMb2FkUFRGKHZvaWQpOwordm9pZCBJbml0
aWFsaXplUFRGQ29ubmVjdGlvbkZ1enppbmcoQ29ubmVjdGlvbiosIE1lc3NhZ2VOYW1lKTsKKwor
fQorCitleHRlcm4gIkMiIFdLX0VYUE9SVCBpbnQgUFRGVGVzdE9uZUlucHV0Q29ubmVjdGlvbihj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgc3opOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDViMzJlYmEyMjA4YTRkODQ5
YzQ1NzA3MWJjYTQzODk2MjUyMTcwZTUuLjJkZjY5NjM3ZWM3MzA5YTMwZjc2YTdiYjIyYzM1NjI5
M2ZkZTAxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNDc5LDYgKzQ3OSw4IEBACiAJCTI3NDlGNjQ1MjE0NjU2MUUwMDgzODBCRiAv
KiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzNFMEQwMTI0MDhFODYwMDM2MEYzRiAvKiBJbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCAqLzsgfTsKIAkJMjc5NDk4MDUyMkU4MEI3RDAwODJFNjhD
IC8qIFdLUGFnZVN0YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyNzk0OTgwMDIyRTgwMEJGMDA4MkU2OEMgLyogV0tQYWdlU3RhdGVDbGll
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQky
OTBGNDI3MjE3MkEwQzc0MDA5MzlGRjAgLyogQXV4aWxpYXJ5UHJvY2Vzc1N1cHBsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MEY0MjcxMTcy
QTBDNzQwMDkzOUZGMCAvKiBBdXhpbGlhcnlQcm9jZXNzU3VwcGxlbWVudC5oICovOyB9OworCQky
OTIzMTQyNjI3MTU4RkYwMDBDQkFEREIgLyogSVBDRnV6emluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkyMzE0MjUyNzE1ODZFMTAwQ0JBRERCIC8q
IElQQ0Z1enppbmcuaCAqLzsgfTsKKwkJMjkyMzE0MjgyNzE1QkRFNjAwQ0JBRERCIC8qIElQQ0Z1
enppbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjkyMzE0MjcyNzE1QkRFNjAwQ0JBRERCIC8qIElQQ0Z1enppbmcuY3BwICovOyB9OwogCQkyOTIz
MkRGNDE4QjI5RDY4MDBEMDU5NkYgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkyMzJERjMx
OEIyOUQ2ODAwRDA1OTZGIC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMuaCAqLzsg
fTsKIAkJMjkzRUJFQUIxNjI3RDlDOTAwNUY4OUYxIC8qIFdLRE9NVGV4dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkzRUJFQTkxNjI3RDlDOTAwNUY4
OUYxIC8qIFdLRE9NVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTI5NTAxNzI0MTYyQTQ1MDQwMDRBOUQ3MSAvKiBXS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTUwMTcyMzE2MkE0NTA0MDA0QTlENzEgLyogV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMjAzLDYgKzMyMDUs
OCBAQAogCQkyNkY5QTgzQTE4QTM0NjNGMDBBRUI4OEEgLyogV0tXZWJWaWV3UHJpdmF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS1dlYlZpZXdQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTI3OTQ5ODAwMjJFODAwQkYwMDgyRTY4QyAvKiBXS1BhZ2VTdGF0ZUNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VTdGF0ZUNsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTBGNDI3MTE3MkEwQzc0MDA5MzlGRjAgLyogQXV4
aWxpYXJ5UHJvY2Vzc1N1cHBsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXV4aWxpYXJ5UHJvY2Vzc1N1cHBsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMjkyMzE0MjUyNzE1ODZFMTAwQ0JBRERCIC8qIElQQ0Z1enppbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSVBDRnV6emluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTIzMTQy
NzI3MTVCREU2MDBDQkFEREIgLyogSVBDRnV6emluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
UENGdXp6aW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjkyMzJERjExOEIy
OUQxMTAwRDA1OTZGIC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTIzMkRGMzE4QjI5
RDY4MDBEMDU5NkYgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0TWFj
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5MjMyREY1MThCMjlEQ0UwMEQwNTk2
RiAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RJT1MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTczNzEsNiArNzM3NSw4IEBACiAJCQkJMUFFMDBENjkx
ODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMUFFMDBENkEx
ODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5oICovLAogCQkJCUY0ODU3MEEyMjY0
NEJFQzQwMEMwNUY3MSAvKiBUaW1lb3V0LmggKi8sCisJCQkJMjkyMzE0MjUyNzE1ODZFMTAwQ0JB
RERCIC8qIElQQ0Z1enppbmcuaCAqLywKKwkJCQkyOTIzMTQyNzI3MTVCREU2MDBDQkFEREIgLyog
SVBDRnV6emluZy5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IElQQzsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0xMjM0Nyw2ICsxMjM1Myw3IEBACiAJCQkJQkNBOEM2QjAxMUUzQzA4
NzAwODEyRkI3IC8qIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzMzRTBEMTEyNDA4RTg2MDAzNjBGM0YgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxNERGNzcxMjBCNUI3OTAwODI2QzBDIC8qIEluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQuaCBpbiBIZWFkZXJzICovLAorCQkJCTI5MjMxNDI2MjcxNThG
RjAwMENCQUREQiAvKiBJUENGdXp6aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREQ0NUFERTFF
NUY4OTcyMDA2QzM1NUYgLyogSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNFNTUwRTE1MjI4Mzc1MjIwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTE5Nzk0MDUyM0RCQzRCQjAwMjU3ODkyIC8qIEluc3BlY3RvckJy
b3dzZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDU5Nyw2ICsxNDYwNCw3IEBACiAJCQkJ
Q0RFNTU1MzMyNDA2RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERTU1NTM0MjQwNkVCOEMwMDhBM0REQiAv
KiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNERTU1NTM1MjQwNkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjkyMzE0MjgyNzE1
QkRFNjAwQ0JBRERCIC8qIElQQ0Z1enppbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QzRUVG
NDYyNTc5QzI2MTAwNjU2M0JCIC8qIFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rv
cnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzkyMzE0QjIz
OUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMTc4OUUyM0JFOUNGQzAwNUYwRkFBIC8q
IFJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5jcHAgaW4gU291cmNlcyAqLywK
</data>
<flag name="commit-queue"
          id="465215"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441081</attachid>
            <date>2021-10-13 08:20:36 -0700</date>
            <delta_ts>2021-10-13 08:58:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231674-20211013172034.patch</filename>
            <type>text/plain</type>
            <size>609</size>
            <attacher name="Nils">nls.wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzOTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0V4dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0V4dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmgKaW5kZXggMzAyMWMwYTExMTU2NDk4MWUy
NjkwODdkMmU1NjJiMDMzZDEyYWM3Mi4uZDAwZWEyMTAwOTI5ZTVlMDk5ZWNkMmI5ZDRlNjIzYThi
MWJhNGRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9FeHRyYVByaXZhdGVT
eW1ib2xzRm9yVEFQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vRXh0cmFQcml2YXRl
U3ltYm9sc0ZvclRBUEkuaApAQCAtMzcsNyArMzcsOSBAQCB2b2lkIEdQVVNlcnZpY2VJbml0aWFs
aXplcigpOwogdm9pZCBXZWJBdXRoblNlcnZpY2VJbml0aWFsaXplcigpOwogCiAvLyBGdXp6aW5n
IGVudHJ5cG9pbnRzIHdpbGwgb25seSBldmVyIGJlIGNhbGxlZCBieSBpbnRlcm5hbCB0b29scwor
I2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCiB2b2lkIFBURlRlc3RPbmVJbnB1dENvbm5lY3Rp
b24oKTsKKyNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441086</attachid>
            <date>2021-10-13 08:58:42 -0700</date>
            <delta_ts>2021-11-18 06:40:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231674-20211013175840.patch</filename>
            <type>text/plain</type>
            <size>13604</size>
            <attacher name="Nils">nls.wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzOTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc4NmIxOGZlODAxOGRkNDg5
MzUwYThiNzNjYTBjZGY0NDkwNWM5NDMuLmUzZmI4NGJmZjFkNzYyM2NmODlmZjNiNDYyZGFmNDM4
Mjg0MDQ3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMTAtMTMgIE5pbHMgU29t
bWVyICA8bmxzLndrQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRzIGVudHJ5IHBvaW50IGZvciBp
bi1wcm9jZXNzIElQQyBmdXp6aW5nIGFuZCBleHBvcnRzIGZ1bmN0aW9uIHRvIGJlIHVzZWQgZm9y
IGZ1enppbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzE2NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgYXMgdGVzdGluZyB3b3VsZCByZXF1aXJlIGludGVybmFsIHRvb2xzLgor
CisgICAgICAgICogUGxhdGZvcm0vRXh0cmFQcml2YXRlU3ltYm9sc0ZvclRBUEkuaDoKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hGdXp6TWVzc2FnZSk6CisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjEtMTAtMTEgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFBy
b2Nlc3NdIFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIFBhcnQgODogQ29uc29s
aWRhdGUgRGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9FeHRyYVByaXZhdGVTeW1ib2xzRm9yVEFQSS5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9FeHRyYVByaXZhdGVTeW1ib2xzRm9yVEFQSS5oCmluZGV4IGZiN2FjMGJjNGMxY2M4
OTAzYmE5MjU0YzE0MjMxZDM2NjlkZDQyOGYuLmQwMGVhMjEwMDkyOWU1ZTA5OWVjZDJiOWQ0ZTYy
M2E4YjFiYTRkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vRXh0cmFQcml2
YXRlU3ltYm9sc0ZvclRBUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0V4dHJhUHJp
dmF0ZVN5bWJvbHNGb3JUQVBJLmgKQEAgLTM2LDYgKzM2LDExIEBAIHZvaWQgV2ViQ29udGVudFNl
cnZpY2VJbml0aWFsaXplcigpOwogdm9pZCBHUFVTZXJ2aWNlSW5pdGlhbGl6ZXIoKTsKIHZvaWQg
V2ViQXV0aG5TZXJ2aWNlSW5pdGlhbGl6ZXIoKTsKIAorLy8gRnV6emluZyBlbnRyeXBvaW50cyB3
aWxsIG9ubHkgZXZlciBiZSBjYWxsZWQgYnkgaW50ZXJuYWwgdG9vbHMKKyNpZiBFTkFCTEUoSVBD
X1RFU1RJTkdfQVBJKQordm9pZCBQVEZUZXN0T25lSW5wdXRDb25uZWN0aW9uKCk7CisjZW5kaWYK
KwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggZDZlYTljOGNhNTNjOWQ1ODAyYzYwYjZkM2RkNDMyYTE4
NWM5YmRhOS4uZGRjMWVjMjZmNmE5OTdhNmUwYzkwYmRjMTY3YzRmNjI5NmZlY2ExYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTQ4LDYgKzQ4LDEwIEBA
CiAjaW5jbHVkZSAiVW5peE1lc3NhZ2UuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKElQQ19URVNU
SU5HX0FQSSkKKyNpbmNsdWRlICJJUENGdXp6aW5nLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIElQ
QyB7CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTEwNjAsNiArMTA2NCw5IEBAIHZvaWQgQ29u
bmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKERlY29kZXImIGRlY29kZXIpCiAKIHZvaWQgQ29ubmVj
dGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBtZXNzYWdlKQog
eworI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisgICAgSW5pdGlhbGl6ZVBURkNvbm5lY3Rp
b25GdXp6aW5nKHRoaXMsIG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpOworI2VuZGlmCiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IGMyOGZjN2Fj
ZWZkMmIyMzY1ZDhjZTRjM2IzMjM4N2Y4ZTEzOTE5ZDguLmNlYTk5Y2I5MjUwYTI3ODc4Yzk1N2Jj
N2EwOGEwNjExMTI3MDM0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmgKQEAgLTMxNiw2ICszMTYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldElnbm9yZUludmFs
aWRNZXNzYWdlRm9yVGVzdGluZygpIHsgbV9pZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3Rpbmcg
PSB0cnVlOyB9CiAgICAgYm9vbCBpZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3RpbmcoKSBjb25z
dCB7IHJldHVybiBtX2lnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZzsgfQorCisgICAgdm9p
ZCBkaXNwYXRjaEZ1enpNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBkZWNvZGVyKSB7
IHRoaXMtPmRpc3BhdGNoTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpKTsgfQogI2VuZGlmCiAKICAg
ICB2b2lkIGRpc3BhdGNoTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShNZXNzYWdlUmVjZWl2ZXImLCBz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9JUENGdXp6aW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0lQ
Q0Z1enppbmcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiMWQxZTc1MjVjZDExMTkzMTQwNGI2MDkzZWE0Yjky
OTExNTQ5OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9J
UENGdXp6aW5nLmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIklQQ0Z1enppbmcuaCIKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisKKyNpbmNsdWRlIDxkbGZjbi5oPgorI2luY2x1ZGUg
PHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdf
QVBJKQorCituYW1lc3BhY2UgSVBDIHsKKwordm9pZCBUcnlMb2FkUFRGKCkKK3sKKyAgICBpZiAo
IXB0ZkxvYWRGYWlsZWQgJiYgIXB0ZkFscmVhZHlMb2FkZWQpIHsKKyAgICAgICAgZnByaW50Zihz
dGRlcnIsICJbLV0gSW4gVHJ5TG9hZFBURigpIHBpZDolZFxuIiwgZ2V0cGlkKCkpOworICAgICAg
ICBwdGZGdXp6Tm93X3QgcHRmRnV6ek5vdyA9IChwdGZGdXp6Tm93X3QpZGxzeW0oUlRMRF9ERUZB
VUxULCAiUFRGRnV6ek5vdyIpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlstXSBQVEZGdXp6
Tm93OiAlcFxuIiwgcHRmRnV6ek5vdyk7CisgICAgICAgIGlmICghcHRmRnV6ek5vdykgeworICAg
ICAgICAgICAgZnByaW50ZihzdGRlcnIsICJbLV0gUFRGRnV6ek5vdyBub3QgbG9hZGVkLlxuIik7
CisgICAgICAgICAgICBwdGZMb2FkRmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlstXSBleGVjdXRpbmcgUFRGRnV6
ek5vd1xuIik7CisgICAgICAgIHB0ZkFscmVhZHlMb2FkZWQgPSB0cnVlOworICAgICAgICBwdGZG
dXp6Tm93KCk7CisgICAgfQorfQorCit2b2lkIEluaXRpYWxpemVQVEZDb25uZWN0aW9uRnV6emlu
ZyhDb25uZWN0aW9uICppcGNDb25uZWN0aW9uLCBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKK3sK
KyAgICBpZiAoIXB0Zk1lc3NhZ2VOYW1lKSB7CisgICAgICAgIGNoYXIqIGMgPSBnZXRlbnYoIlBP
TExPQ0tfTUVTU0FHRV9OQU1FIik7CisgICAgICAgIGlmICghYykKKyAgICAgICAgICAgIHB0Zk1l
c3NhZ2VOYW1lID0gMHhmZmZmZmZmZjsgLy8gaW52YWxpZAorICAgICAgICBlbHNlCisgICAgICAg
ICAgICBwdGZNZXNzYWdlTmFtZSA9IGF0b2koYyk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
Wy1dIHB0Zk1lc3NhZ2VOYW1lOiAldVxuIiwgcHRmTWVzc2FnZU5hbWUpOworICAgIH0KKyAgICBp
ZiAoIXB0ZkxvYWRGYWlsZWQgJiYgIXB0ZkFscmVhZHlMb2FkZWQKKyAgICAgICAgJiYgbWVzc2Fn
ZU5hbWUgPT0gc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4ocHRmTWVzc2FnZU5hbWUpKSB7
CisgICAgICAgIHB0Zkxhc3RDb25uZWN0aW9uID0gaXBjQ29ubmVjdGlvbjsKKyAgICAgICAgaXBj
Q29ubmVjdGlvbi0+c2V0SWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nKCk7CisgICAgICAg
IFRyeUxvYWRQVEYoKTsKKyAgICB9Cit9CisKK30KKworaW50IFBURlRlc3RPbmVJbnB1dENvbm5l
Y3Rpb24oY29uc3QgdWludDhfdCogZGF0YSwgaW50IHN6KQoreworICAgIGF1dG8gZGVjb2RlciA9
IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGRhdGEsIHN6LCBudWxscHRyLCBWZWN0b3I8SVBDOjpBdHRh
Y2htZW50PiB7IH0pOworICAgIGlmICghZGVjb2RlcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
aWYgKCFkZWNvZGVyLT5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiAwOworICAgIElQQzo6cHRm
TGFzdENvbm5lY3Rpb24tPmRpc3BhdGNoRnV6ek1lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvSVBDRnV6emluZy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSVBDRnV6
emluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYwM2U5NzU1MzcxNzliMGZiZTA3MWZiN2M2MWY2MWU0NjRiMjRl
YjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENGdXp6
aW5nLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiV0tEZWNsYXJhdGlvblNwZWNpZmllcnMuaCIKKwor
I2luY2x1ZGUgPGRsZmNuLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1bmlzdGQu
aD4KKworbmFtZXNwYWNlIElQQyB7CisKK3N0YXRpYyBib29sIHB0ZkxvYWRGYWlsZWQgPSBmYWxz
ZTsKK3N0YXRpYyBib29sIHB0ZkFscmVhZHlMb2FkZWQgPSBmYWxzZTsKKworc3RhdGljIElQQzo6
Q29ubmVjdGlvbiAqcHRmTGFzdENvbm5lY3Rpb24gPSBudWxscHRyOworc3RhdGljIHVuc2lnbmVk
IHB0Zk1lc3NhZ2VOYW1lID0gMDsKKwordHlwZWRlZiBpbnQgKCpwdGZGdXp6Tm93X3QpKHZvaWQp
OworCit2b2lkIFRyeUxvYWRQVEYodm9pZCk7Cit2b2lkIEluaXRpYWxpemVQVEZDb25uZWN0aW9u
RnV6emluZyhDb25uZWN0aW9uKiwgTWVzc2FnZU5hbWUpOworCit9CisKK2V4dGVybiAiQyIgV0tf
RVhQT1JUIGludCBQVEZUZXN0T25lSW5wdXRDb25uZWN0aW9uKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBzeik7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNWIzMmViYTIyMDhhNGQ4NDljNDU3MDcxYmNhNDM4OTYyNTIx
NzBlNS4uZDdkYTBhMWMyYjFkZDNiNGJmNDI3ZTdmM2Q1MzI3YmJiODkzNTViMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NzksNiAr
NDc5LDggQEAKIAkJMjc0OUY2NDUyMTQ2NTYxRTAwODM4MEJGIC8qIEluamVjdGVkQnVuZGxlUmFu
Z2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMzM0UwRDAxMjQwOEU4NjAwMzYwRjNGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUu
Y3BwICovOyB9OwogCQkyNzk0OTgwNTIyRTgwQjdEMDA4MkU2OEMgLyogV0tQYWdlU3RhdGVDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI3OTQ5
ODAwMjJFODAwQkYwMDgyRTY4QyAvKiBXS1BhZ2VTdGF0ZUNsaWVudC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTI5MEY0MjcyMTcyQTBDNzQwMDkz
OUZGMCAvKiBBdXhpbGlhcnlQcm9jZXNzU3VwcGxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkwRjQyNzExNzJBMEM3NDAwOTM5RkYwIC8qIEF1
eGlsaWFyeVByb2Nlc3NTdXBwbGVtZW50LmggKi87IH07CisJCTI5MjMxNDI2MjcxNThGRjAwMENC
QUREQiAvKiBJUENGdXp6aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyOTIzMTQyNTI3MTU4NkUxMDBDQkFEREIgLyogSVBDRnV6emluZy5oICovOyB9
OworCQkyOTIzMTQyODI3MTVCREU2MDBDQkFEREIgLyogSVBDRnV6emluZy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTIzMTQyNzI3MTVCREU2MDBD
QkFEREIgLyogSVBDRnV6emluZy5jcHAgKi87IH07CiAJCTI5MjMyREY0MThCMjlENjgwMEQwNTk2
RiAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0TWFjLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTIzMkRGMzE4QjI5RDY4MDBEMDU5NkYgLyog
V0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5oICovOyB9OwogCQkyOTNFQkVBQjE2MjdE
OUM5MDA1Rjg5RjEgLyogV0tET01UZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyOTNFQkVBOTE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01UZXh0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjk1MDE3
MjQxNjJBNDUwNDAwNEE5RDcxIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlclByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI5NTAxNzIzMTYyQTQ1MDQwMDRBOUQ3MSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMyMDMsNiArMzIwNSw4IEBACiAJCTI2RjlBODNBMThB
MzQ2M0YwMEFFQjg4QSAvKiBXS1dlYlZpZXdQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vi
Vmlld1ByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjc5NDk4MDAyMkU4
MDBCRjAwODJFNjhDIC8qIFdLUGFnZVN0YXRlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLUGFnZVN0YXRlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTI5MEY0MjcxMTcyQTBDNzQwMDkzOUZGMCAvKiBBdXhpbGlhcnlQcm9jZXNzU3VwcGxl
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXhpbGlhcnlQcm9jZXNz
U3VwcGxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTIzMTQyNTI3MTU4
NkUxMDBDQkFEREIgLyogSVBDRnV6emluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJUENGdXp6aW5nLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5MjMxNDI3MjcxNUJERTYwMENCQUREQiAv
KiBJUENGdXp6aW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElQQ0Z1enppbmcuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTIzMkRGMTE4QjI5RDExMDBEMDU5NkYgLyogV0tB
Y2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5MjMyREYzMThCMjlENjgwMEQwNTk2RiAvKiBXS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjkyMzJERjUxOEIyOURDRTAwRDA1OTZGIC8qIFdLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tB
Y2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzMzOSw2ICs3MzQzLDggQEAKIAkJCQk5QkQ4QUI0OTI1ODIwRTUyMDA1Mzg2RjggLyog
Rm9udFJlZmVyZW5jZS5oICovLAogCQkJCTQxNTFFNUMzMUZCQjkwQTkwMEU0N0UyRCAvKiBGb3Jt
RGF0YVJlZmVyZW5jZS5oICovLAogCQkJCUMwQ0U3MkFDMTI0N0U3OEQwMEJDMEVDNCAvKiBIYW5k
bGVNZXNzYWdlLmggKi8sCisJCQkJMjkyMzE0MjcyNzE1QkRFNjAwQ0JBRERCIC8qIElQQ0Z1enpp
bmcuY3BwICovLAorCQkJCTI5MjMxNDI1MjcxNTg2RTEwMENCQUREQiAvKiBJUENGdXp6aW5nLmgg
Ki8sCiAJCQkJQTMxRjYwQTIyNUNDN0RCODAwQUYxNEY0IC8qIElQQ1NlbWFwaG9yZS5oICovLAog
CQkJCTlCRjVFQzYzMjU0MTBFOTkwMDk4NEU3NyAvKiBKU0lQQ0JpbmRpbmcuY3BwICovLAogCQkJ
CTlCNDc5MDhFMjUzMTUxQ0MwMEVDMTFBQiAvKiBKU0lQQ0JpbmRpbmcuaCAqLywKQEAgLTEyMzU0
LDYgKzEyMzYwLDcgQEAKIAkJCQlBNUUzOTFGRDIxODNDMUY4MDBDOEZCMzEgLyogSW5zcGVjdG9y
VGFyZ2V0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1QkNFNURGMUM1MDc2NkEwMENERTNG
QSAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkQ0RDJDODExREY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1
ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkyOTIzMTQyNjI3MTU4RkYwMDBDQkFEREIgLyogSVBD
RnV6emluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTMxRjYwQTQyNUNDN0RCOTAwQUYxNEY0IC8q
IElQQ1NlbWFwaG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI0NzkwOEYyNTMxNTFDQzAwRUMx
MUFCIC8qIEpTSVBDQmluZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNDlBNDkxMUZGQThD
RTAwNDhCNDY0IC8qIEpTTlBNZXRob2QuaCBpbiBIZWFkZXJzICovLApAQCAtMTQ1MDksNiArMTQ1
MTYsNyBAQAogCQkJCUMxQTE1MkQ3MjRFNUEyOUEwMDk3OEM4QiAvKiBIYW5kbGVYUENFbmRwb2lu
dE1lc3NhZ2VzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjc0OUY2NDQyMTQ2NTYxQjAwODM4MEJG
IC8qIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNzQ5
RjY0NTIxNDY1NjFFMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkyOTIzMTQyODI3MTVCREU2MDBDQkFEREIgLyogSVBDRnV6emluZy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5QkY1RUM2NDI1NDExNDU2MDA5ODRFNzcgLyogSlNJUENC
aW5kaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQxMjEyQ0Y5RjAwMDEyOEFGRCAv
KiBKU05QTWV0aG9kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQyMjEyQ0Y5RjAwMDEy
OEFGRCAvKiBKU05QT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444666</attachid>
            <date>2021-11-18 06:41:07 -0800</date>
            <delta_ts>2021-11-23 07:16:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231674-20211118154106.patch</filename>
            <type>text/plain</type>
            <size>18572</size>
            <attacher name="Nils">nls.wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1ODUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcwMzg0MWNmMjM3ZmZhM2Rj
N2JkYjlmMzFjYjQ4NWM2ODUzZmE4MDQuLmQwMGZhNzk2YTlmMmZlNDlhZTBkYjMzYWE0YzNiNTEz
MzA0ZjMxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMTEtMTggIE5pbHMgU29t
bWVyICA8bmxzLndrQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRzIGVudHJ5cG9pbnQgZm9yIGlu
LXByb2Nlc3MgSVBDIGZ1enppbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzE2NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWluZ01lc3NhZ2VGb3JUZXN0aW5nKToKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6CisgICAgICAgICogUGxh
dGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5j
cHA6CisgICAgICAgIChJUEM6OkRlY29kZXI6OmNyZWF0ZUZvclRlc3RpbmcpOgorICAgICAgICAo
SVBDOjpEZWNvZGVyOjp+RGVjb2Rlcik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIu
aDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6c2V0U2VtYXBob3JlRm9yVGVzdGluZyk6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL0lQQ0Z1enppbmcuY3BwOiBBZGRlZC4KKyAgICAgICAgKElQQzo6
c3RhcnRNZXNzYWdlVGVzdGluZyk6CisgICAgICAgIChJUEM6OnRlc3RPbmVNZXNzYWdlKToKKyAg
ICAgICAgKElQQzo6dHJ5TG9hZFRlc3REcml2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9J
UENGdXp6aW5nLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21vZGVsLnB5Ogor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTExLTE1
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByZXZlcnRpbmcgcjI4NTgxMi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29u
bmVjdGlvbi5jcHAKaW5kZXggNWUyNTZkODM5YmRlNDkyYWVkZTliNzRmNTRkY2YyMTlmZjRiNjgx
My4uMTI3ZmE1NmYyNjdhYmFkZmZmMmE0YTA3MGE2OGFjMmNlYTYzOTMzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTQ5LDYgKzQ5LDEwIEBACiAjaW5j
bHVkZSAiVW5peE1lc3NhZ2UuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQ
SSkKKyNpbmNsdWRlICJJUENGdXp6aW5nLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIElQQyB7CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTg3NSw2ICs4NzksMTMgQEAgdm9pZCBDb25uZWN0aW9u
OjphZGRNZXNzYWdlT2JzZXJ2ZXIoY29uc3QgTWVzc2FnZU9ic2VydmVyJiBvYnNlcnZlcikKIHsK
ICAgICBtX21lc3NhZ2VPYnNlcnZlcnMuYXBwZW5kKG9ic2VydmVyKTsKIH0KKwordm9pZCBDb25u
ZWN0aW9uOjpkaXNwYXRjaEluY29taW5nTWVzc2FnZUZvclRlc3Rpbmcoc3RkOjp1bmlxdWVfcHRy
PElQQzo6RGVjb2Rlcj4gZGVjb2RlcikKK3sKKyAgICBtX2Nvbm5lY3Rpb25RdWV1ZS0+ZGlzcGF0
Y2goW3RoaXMsIGRlY29kZXIgPSBXVEZNb3ZlKGRlY29kZXIpXSgpIG11dGFibGUgeworICAgICAg
ICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKFdURk1vdmUoZGVjb2RlcikpOworICAgIH0pOworfQog
I2VuZGlmCiAKIHZvaWQgQ29ubmVjdGlvbjo6cG9zdENvbm5lY3Rpb25EaWRDbG9zZU9uQ29ubmVj
dGlvbldvcmtRdWV1ZSgpCkBAIC05OTQsNiArMTAwNSwxMCBAQCB2b2lkIENvbm5lY3Rpb246OmRp
c3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYgZGVjb2RlcikKICAgICB9CiAKICNpZiBFTkFCTEUo
SVBDX1RFU1RJTkdfQVBJKQorICAgIGlmICghd2FzSGFuZGxlZCkgeworICAgICAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1lOjpTdGFydE1lc3NhZ2VUZXN0aW5nKQor
ICAgICAgICAgICAgc3RhcnRNZXNzYWdlVGVzdGluZygqdGhpcyk7CisgICAgfQogICAgIEFTU0VS
VChkZWNvZGVyLmlzVmFsaWQoKSB8fCBtX2lnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZyk7
CiAjZWxzZQogICAgIEFTU0VSVChkZWNvZGVyLmlzVmFsaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggODkyZTc1NjQ5YjU4ZTRhZjgwNmU4YzM2MDFkNDlm
NWNjNGE2YTFhNy4uMWE5MmQ4ZmI4YTM1M2IzNDFkNzIxMWM2OWEyYTcwM2ZmYzhiZTFmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMzIwLDYgKzMyMCw4IEBA
IHB1YmxpYzoKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQogICAgIHZvaWQgYWRkTWVzc2Fn
ZU9ic2VydmVyKGNvbnN0IE1lc3NhZ2VPYnNlcnZlciYpOwogCisgICAgdm9pZCBkaXNwYXRjaElu
Y29taW5nTWVzc2FnZUZvclRlc3Rpbmcoc3RkOjp1bmlxdWVfcHRyPElQQzo6RGVjb2Rlcj4pOwor
CiAgICAgdm9pZCBzZXRJZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3RpbmcoKSB7IG1faWdub3Jl
SW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nID0gdHJ1ZTsgfQogICAgIGJvb2wgaWdub3JlSW52YWxp
ZE1lc3NhZ2VGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVJbnZhbGlkTWVzc2Fn
ZUZvclRlc3Rpbmc7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNw
cAppbmRleCAzYzBhMTRmODFmZmY1M2VkYjYyNzVmOTM4N2I1OTYzNWUwMTY2MmIzLi5jNmM0YTdi
YjAxMjg1MDY1MTFlOWY2NzMxNDk5ZjM1MTMwNjZkYjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcApAQCAtNzIsMTIgKzcyLDI4IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiBEZWNvZGVyOjpjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVy
U2l6CiAgICAgcmV0dXJuIGRlY29kZXItPmlzVmFsaWQoKSA/IFdURk1vdmUoZGVjb2RlcikgOiBu
dWxscHRyOwogfQogCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKK3N0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPiBEZWNvZGVyOjpjcmVhdGVGb3JUZXN0aW5nKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZl
ciwgc2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWlu
dDhfdCosIHNpemVfdCksIFZlY3RvcjxBdHRhY2htZW50PiYmIGF0dGFjaG1lbnRzLCBCaW5hcnlT
ZW1hcGhvcmUqIHNlbWFwaG9yZSkKK3sKKyAgICBhdXRvIGRlY29kZXIgPSBEZWNvZGVyOjpjcmVh
dGUoYnVmZmVyLCBidWZmZXJTaXplLCBidWZmZXJEZWFsbG9jYXRvciwgV1RGTW92ZShhdHRhY2ht
ZW50cykpOworICAgIGlmIChkZWNvZGVyKQorICAgICAgICBkZWNvZGVyLT5zZXRTZW1hcGhvcmVG
b3JUZXN0aW5nKHNlbWFwaG9yZSk7CisgICAgZWxzZSAKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICByZXR1cm4gZGVjb2Rlci0+aXNWYWxpZCgpID8gV1RGTW92ZShkZWNvZGVyKSA6IG51
bGxwdHI7Cit9CisjZW5kaWYKKwogRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZm
ZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3IpKGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpLCBWZWN0b3I8QXR0YWNobWVudD4mJiBhdHRhY2htZW50cykKICAgICA6
IG1fYnVmZmVyIHsgYnVmZmVyIH0KICAgICAsIG1fYnVmZmVyUG9zIHsgbV9idWZmZXIgfQogICAg
ICwgbV9idWZmZXJFbmQgeyBtX2J1ZmZlciArIGJ1ZmZlclNpemUgfQogICAgICwgbV9idWZmZXJE
ZWFsbG9jYXRvciB7IGJ1ZmZlckRlYWxsb2NhdG9yIH0KICAgICAsIG1fYXR0YWNobWVudHMgeyBX
VEZNb3ZlKGF0dGFjaG1lbnRzKSB9CisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICAs
IG1fdGVzdGluZ1NlbWFwaG9yZSB7IG51bGxwdHIgfQorI2VuZGlmCiB7CiAgICAgaWYgKFVOTElL
RUxZKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2J1ZmZlcikgJSBhbGlnbm9mKHVpbnQ2
NF90KSkpIHsKICAgICAgICAgbWFya0ludmFsaWQoKTsKQEAgLTEwMCw2ICsxMTYsOSBAQCBEZWNv
ZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbVNpemUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSQogICAgICwgbV9idWZmZXJFbmQgeyBtX2J1ZmZlciArIHN0cmVh
bVNpemUgfQogICAgICwgbV9idWZmZXJEZWFsbG9jYXRvcihbXSAoY29uc3QgdWludDhfdCosIHNp
emVfdCkgeyB9KQogICAgICwgbV9kZXN0aW5hdGlvbklEKGRlc3RpbmF0aW9uSUQpCisjaWYgRU5B
QkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICAsIG1fdGVzdGluZ1NlbWFwaG9yZSB7IG51bGxwdHIg
fQorI2VuZGlmCiB7CiAgICAgaWYgKFVOTElLRUxZKCFkZWNvZGUobV9tZXNzYWdlTmFtZSkpKQog
ICAgICAgICByZXR1cm47CkBAIC0xMTQsNiArMTMzLDExIEBAIERlY29kZXI6On5EZWNvZGVyKCkK
ICAgICBlbHNlCiAgICAgICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dWludDhfdCo+KG1fYnVmZmVy
KSk7CiAKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIGlmIChtX3Rlc3RpbmdTZW1h
cGhvcmUpCisgICAgICAgIG1fdGVzdGluZ1NlbWFwaG9yZS0+c2lnbmFsKCk7CisjZW5kaWYKKwog
ICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGRpc3Bvc2Ugb2YgdGhlIG1hY2ggcG9ydHMgaW4gY2Fz
ZXMgb2YgZmFpbHVyZS4KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRGVjb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCmluZGV4
IGIyNjVlYTZjZDkyNjRhZmMyMjQ5NTM5YTM1YjJkZTM5MTc3NGI5M2QuLmZiYjI1ZGU3NTM2OTg1
Yzc5NDg3OWFjYzdjY2RiZDkxNDhlMDgwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNv
ZGVyLmgKQEAgLTMyLDYgKzMyLDEwIEBACiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisjaW5j
bHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CisjZW5kaWYKKwogI2lmIFBMQVRG
T1JNKE1BQykKICNpbmNsdWRlICJJbXBvcnRhbmNlQXNzZXJ0aW9uLmgiCiAjZW5kaWYKQEAgLTE0
NCw2ICsxNDgsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSVBD
RGVjb2RlciA9IHRydWU7CiAKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlRm9yVGVzdGluZyhjb25zdCB1aW50OF90
KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3IpKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBWZWN0b3I8QXR0YWNobWVudD4mJiwgQmluYXJ5U2VtYXBo
b3JlKik7CisKKyAgICB2b2lkIHNldFNlbWFwaG9yZUZvclRlc3RpbmcoQmluYXJ5U2VtYXBob3Jl
KiBzZW1hcGhvcmUpIHsgbV90ZXN0aW5nU2VtYXBob3JlID0gc2VtYXBob3JlOyB9CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICBEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWludDhfdCosIHNpemVf
dCksIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKIApAQCAtMTY1LDYgKzE3NSwxMCBAQCBwcml2YXRl
OgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBJbXBvcnRhbmNlQXNzZXJ0aW9uIG1faW1wb3J0YW5j
ZUFzc2VydGlvbjsKICNlbmRpZgorCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICBC
aW5hcnlTZW1hcGhvcmUqIG1fdGVzdGluZ1NlbWFwaG9yZTsKKyNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENG
dXp6aW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0lQQ0Z1enppbmcuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmVhZWM1MjQxYWRmMDY0ZDljNTkzMGM1NjY1YWI2ODg2ZTZmNGM4MDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENGdXp6aW5nLmNwcApA
QCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyNpbmNsdWRlICJJUENGdXp6aW5nLmgiCisKKyNpbmNs
dWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorCisjaW5jbHVkZSA8ZGxm
Y24uaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCituYW1lc3Bh
Y2UgSVBDIHsKKwordm9pZCBzdGFydE1lc3NhZ2VUZXN0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbikKK3sKKyAgICB0ZXN0RHJpdmVyRnVuY3Rpb24gbWVzc2FnZVRlc3REcml2ZXIgPSB0
cnlMb2FkVGVzdERyaXZlcigpOworICAgIGlmIChtZXNzYWdlVGVzdERyaXZlcikgeworICAgICAg
ICBhdXRvIHdvcmtRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJ0ZXN0aW5nV29ya1F1ZXVlIik7
CisgICAgICAgIC8vIFdoZW4gcmVjZWl2aW5nIHRoZSBTdGFydE1lc3NhZ2VUZXN0aW5nLCBydW4g
dGhlIHRlc3RlciBpbiBuZXh0IG1haW5sb29wIGl0ZXJhdGlvbi4KKyAgICAgICAgLy8gVE9ETzog
UmVmUHRyIHsgdGhpcyB9CisgICAgICAgIHdvcmtRdWV1ZS0+ZGlzcGF0Y2goW3dvcmtRdWV1ZSA9
IFdURk1vdmUod29ya1F1ZXVlKSwgcHJvdGVjdGVkQ29ubmVjdGlvbiA9IFJlZiB7IGNvbm5lY3Rp
b24gfSwgbWVzc2FnZVRlc3REcml2ZXJdIHsKKyAgICAgICAgICAgIHByb3RlY3RlZENvbm5lY3Rp
b24tPnNldElnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZygpOworICAgICAgICAgICAgLy8g
UmVmIGFib3ZlIGtlZXBzIHRoZSBjb25uZWN0aW9uIGFsaXZlLgorICAgICAgICAgICAgbWVzc2Fn
ZVRlc3REcml2ZXIodGVzdE9uZU1lc3NhZ2UsICh2b2lkICopcHJvdGVjdGVkQ29ubmVjdGlvbi5w
dHIoKSk7CisgICAgICAgIH0pOworICAgIH0KK30KKworaW50IHRlc3RPbmVNZXNzYWdlKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzeiwgdm9pZCogY29udGV4dCkKK3sKKyAgICBDb25uZWN0
aW9uKiBjb25uZWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxDb25uZWN0aW9uKj4oY29udGV4dCk7
CisKKyAgICAvLyBFeGl0IHRoZSBwcm9jZXNzIGlmIHRoZSBjb25uZWN0aW9uIGhhcyBiZWNvbWUg
aW52YWxpZAorICAgIGlmICghY29ubmVjdGlvbi0+aXNWYWxpZCgpKQorICAgICAgICBleGl0KDAp
OworCisgICAgYXV0byBzZW1hcGhvcmUgPSBzdGQ6OnVuaXF1ZV9wdHI8QmluYXJ5U2VtYXBob3Jl
PihuZXcgQmluYXJ5U2VtYXBob3JlKTsKKyAgICB7CisgICAgICAgIGF1dG8gZGVjb2RlciA9IERl
Y29kZXI6OmNyZWF0ZUZvclRlc3RpbmcoZGF0YSwgc3osIG51bGxwdHIsIFZlY3RvcjxBdHRhY2ht
ZW50PiB7IH0sIHNlbWFwaG9yZS5nZXQoKSk7CisgICAgICAgIGlmIChkZWNvZGVyICYmIGRlY29k
ZXItPmlzVmFsaWQoKSkKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPmRpc3BhdGNoSW5jb21pbmdN
ZXNzYWdlRm9yVGVzdGluZyhXVEZNb3ZlKGRlY29kZXIpKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHNlbWFwaG9yZS0+d2FpdCgpOworICAgIHJldHVy
biAwOworfQorCit0ZXN0RHJpdmVyRnVuY3Rpb24gdHJ5TG9hZFRlc3REcml2ZXIoKQoreworICAg
IGlmICghdGVzdERyaXZlckxvYWRGYWlsZWQpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJb
LV0gSW4gdHJ5TG9hZFRlc3REcml2ZXIoKSBwaWQ6JWRcbiIsIGdldHBpZCgpKTsKKyAgICAgICAg
dGVzdERyaXZlckZ1bmN0aW9uIHRlc3REcml2ZXIgPSAodGVzdERyaXZlckZ1bmN0aW9uKWRsc3lt
KFJUTERfREVGQVVMVCwgIlBURkZ1enpOb3dGdW5jQ3R4Iik7CisgICAgICAgIGlmICghdGVzdERy
aXZlcikgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJbLV0gUFRGRnV6ek5vd0Z1bmND
dHggbm90IGxvYWRlZC5cbiIpOworICAgICAgICAgICAgdGVzdERyaXZlckxvYWRGYWlsZWQgPSB0
cnVlOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHRlc3REcml2ZXI7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSVBDRnV6emluZy5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSVBDRnV6emluZy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNk
MDM5N2VjYjZlZDgzODE3MzIzOWM1ZDAzMWRiMTY5NjFlMmVkZDAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENGdXp6aW5nLmgKQEAgLTAsMCArMSw1MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQ
SSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXS0RlY2xhcmF0aW9uU3Bl
Y2lmaWVycy5oIgorCisjaW5jbHVkZSA8ZGxmY24uaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2lu
Y2x1ZGUgPHVuaXN0ZC5oPgorCituYW1lc3BhY2UgSVBDIHsKKwordm9pZCBzdGFydE1lc3NhZ2VU
ZXN0aW5nKElQQzo6Q29ubmVjdGlvbiYpOworCitzdGF0aWMgYm9vbCB0ZXN0RHJpdmVyTG9hZEZh
aWxlZCA9IGZhbHNlOworCit0eXBlZGVmIGludCAoKk9uZUlucHV0RnVuYykoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHN6LCB2b2lkKiBjb250ZXh0KTsKKwordHlwZWRlZiBpbnQgKCp0ZXN0
RHJpdmVyRnVuY3Rpb24pKE9uZUlucHV0RnVuYywgdm9pZCogY29udGV4dCk7CisKK2ludCB0ZXN0
T25lTWVzc2FnZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc3osIHZvaWQqIGNvbnRleHQp
OworCit0ZXN0RHJpdmVyRnVuY3Rpb24gdHJ5TG9hZFRlc3REcml2ZXIoKTsKKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9kZWwucHkgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5CmluZGV4IDY5ZjAxOTYzMTBjZmNi
NzEyOTdlY2ZjYjI2MjNkZmJkN2U1OTJkMzkuLjBkOWQwNzE2YzQyZmY4YmQxODY4M2M0ZDQ2Mjg5
OGM2YjA5NTM3MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9k
ZWwucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weQpAQCAtNzks
NiArNzksNyBAQCBpcGNfcmVjZWl2ZXIgPSBNZXNzYWdlUmVjZWl2ZXIobmFtZT0iSVBDIiwgc3Vw
ZXJjbGFzcz1Ob25lLCBhdHRyaWJ1dGVzPVtCVUlMVElOXwogICAgIE1lc3NhZ2UoJ1NldFN0cmVh
bURlc3RpbmF0aW9uSUQnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwg
Y29uZGl0aW9uPU5vbmUpLAogICAgIE1lc3NhZ2UoJ1Byb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2Un
LCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUp
LAogICAgIE1lc3NhZ2UoJ1Rlcm1pbmF0ZScsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9B
VFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSksCisgICAgTWVzc2FnZSgnU3RhcnRNZXNzYWdlVGVz
dGluZycsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEUsIFNZTkNIUk9OT1VT
X0FUVFJJQlVURV0sIGNvbmRpdGlvbj0iRU5BQkxFKElQQ19URVNUSU5HX0FQSSkiKQogXSwgY29u
ZGl0aW9uPU5vbmUpCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNjQzMWQ0MGIwNTZhNWFkZDJjNDFmMTFhMzVkMDRhNTRlZjEyODAz
MS4uODgwZTNjZTU3ODdiYzEyODBlNmM0Y2Q4NzIwMzZlMzM0MmUwODY3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MzYsNiArNDM2
LDggQEAKIAkJMjk4NEY1ODgxNjRCQTA5NTAwNEJDMEM2IC8qIExlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyOTg0RjU4NjE2NEJBMDk1MDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMjk4NEY1ODkxNjRC
QTA5NTAwNEJDMEM2IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTg0RjU4NzE2NEJB
MDk1MDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCAqLzsg
fTsKIAkJMjlBRDMwOTMxNjRCNEM1RDAwNzJERUE5IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyOUFEMzA5MjE2NEI0QzVEMDA3MkRFQTkgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHkuaCAqLzsgfTsKKwkJMjlCRTY3MEUyNzQzQjFCODAwRkQ0QTEwIC8qIElQQ0Z1enppbmcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QkU2NzBD
Mjc0M0IxQjcwMEZENEExMCAvKiBJUENGdXp6aW5nLmggKi87IH07CisJCTI5QkU2NzBGMjc0M0Ix
QjgwMEZENEExMCAvKiBJUENGdXp6aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDI5QkU2NzBEMjc0M0IxQjgwMEZENEExMCAvKiBJUENGdXp6aW5n
LmNwcCAqLzsgfTsKIAkJMjlDRDU1QUExMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyOUNENTVBODEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2Vi
UGFnZU9iamVjdEJhc2UuaCAqLzsgfTsKIAkJMkQwQzU2RkQyMjlGMURFQTAwQkQzM0U3IC8qIERl
dmljZU1hbmFnZW1lbnRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkQwQzU2RkIyMjlGMURFQTAwQkQzM0U3IC8qIERldmljZU1hbmFnZW1l
bnRTb2Z0TGluay5oICovOyB9OwogCQkyRDBDNTZGRTIyOUYxREVBMDBCRDMzRTcgLyogRGV2aWNl
TWFuYWdlbWVudFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkQwQzU2RkMyMjlGMURFQTAwQkQzM0U3IC8qIERldmljZU1hbmFnZW1lbnRT
b2Z0TGluay5tbSAqLzsgfTsKQEAgLTMwMjEsNiArMzAyMyw4IEBACiAJCTI5ODRGNTg3MTY0QkEw
OTUwMDRCQzBDNiAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJN
ZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9MZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQkyOUFEMzA5MjE2NEI0QzVEMDA3MkRFQTkgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkuaDsgcGF0aCA9IEN1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
OUFEMzA5NzE2NEI0RTIxMDA3MkRFQTkgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW47IHBhdGggPSBDdXN0b21Qcm90b2NvbHMvTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTI5QkU2NzBDMjc0M0IxQjcwMEZENEExMCAvKiBJUENGdXp6aW5nLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElQQ0Z1enppbmcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMjlCRTY3MEQyNzQzQjFCODAwRkQ0QTEwIC8qIElQQ0Z1enppbmcu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSVBDRnV6emluZy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5Q0Q1NUE4MTI4RTI5NEYwMDEzM0M4NSAv
KiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyOUNENTVBOTEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlEMDRFMjgyMUY3QzczRDAwNzY3NDFEIC8qIEFwcGxp
Y2F0aW9uU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwbGljYXRpb25TZXJ2aWNlc1NQ
SS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzAyMiw2ICs3MDI2LDggQEAKIAkJ
CQk5QkQ4QUI0OTI1ODIwRTUyMDA1Mzg2RjggLyogRm9udFJlZmVyZW5jZS5oICovLAogCQkJCTQx
NTFFNUMzMUZCQjkwQTkwMEU0N0UyRCAvKiBGb3JtRGF0YVJlZmVyZW5jZS5oICovLAogCQkJCUMw
Q0U3MkFDMTI0N0U3OEQwMEJDMEVDNCAvKiBIYW5kbGVNZXNzYWdlLmggKi8sCisJCQkJMjlCRTY3
MEQyNzQzQjFCODAwRkQ0QTEwIC8qIElQQ0Z1enppbmcuY3BwICovLAorCQkJCTI5QkU2NzBDMjc0
M0IxQjcwMEZENEExMCAvKiBJUENGdXp6aW5nLmggKi8sCiAJCQkJQTMxRjYwQTIyNUNDN0RCODAw
QUYxNEY0IC8qIElQQ1NlbWFwaG9yZS5oICovLAogCQkJCTlCRjVFQzYzMjU0MTBFOTkwMDk4NEU3
NyAvKiBKU0lQQ0JpbmRpbmcuY3BwICovLAogCQkJCTlCNDc5MDhFMjUzMTUxQ0MwMEVDMTFBQiAv
KiBKU0lQQ0JpbmRpbmcuaCAqLywKQEAgLTEyMDI5LDYgKzEyMDM1LDcgQEAKIAkJCQlCQ0VFN0RD
NTEyOEI2NDVEMDA5ODI3REEgLyogSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDNDk4NjE4MTI0RDEwRTIwMEQ4MzRFMSAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NDc3ODUzMTc2RkNDMDgwMENEQzdCQiAvKiBJ
bmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHRNZWRpYVR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTI5QkU2NzBFMjc0M0IxQjgwMEZENEExMCAvKiBJUENGdXp6aW5nLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzgxNDdENTEyRjY2RDMxMDA3QjJDMzIgLyogSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzRCRUVBQjEyMEEwQTVGMDBGQkEwQzcgLyog
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTI5MzVFNDEy
ODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMTQ1NDQsNiArMTQ1NTEsNyBAQAogCQkJCTkzRDZCNzhBMjU0Q0Q0
M0UwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QTUzMEYxRjQ3QTg2MjAwRENEQzBBIC8qIFdl
YlNXQ2xpZW50Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0NjBGNDg4RjFGOTk2RjcxMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjlCRTY3MEYyNzQzQjFC
ODAwRkQ0QTEwIC8qIElQQ0Z1enppbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM1NkYyREYy
MTUyQjcyMzAwRTZENURGIC8qIFdlYlNXT3JpZ2luU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTM1NkYyRTEyMTUyQjc2NjAwRTZENURGIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MTdBNTJEODFGNDNBOURBMDBEQ0RDMEEgLyogV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445030</attachid>
            <date>2021-11-23 07:16:35 -0800</date>
            <delta_ts>2021-11-23 07:36:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231674-20211123171633.patch</filename>
            <type>text/plain</type>
            <size>46710</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5NDhlMThhZjI5OWM2OTdk
NDc3YTJjYjE0MTIzZDk3YjA2OThkMjkuLjM5YmE3N2I5ZGYzOGQ3NmU2Y2U4ZDQ2ZDY4NmMwZDdk
Zjc5MTVjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMjEtMTEtMjMgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGluLXByb2Nl
c3MgSVBDIG1lc3NhZ2UgdGVzdGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMxNjc0CisgICAgICAgIDxyZGFyOi8vODQxODkzMTQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIElQQ1Rlc3RlciBz
ZXJ2aWNlIHRvIFVJLCBHUFUsIE5ldHdvcmssIEF1dGhuIHByb2Nlc3MuCisgICAgICAgIFRoZSBz
ZXJ2aWNlIGNhbiBiZSB1c2VkIHRvIHNlbmQgcmFuZG9tIG1lc3NhZ2VzIHRvIHRoZSBwcm9jZXNz
ZXMuCisKKyAgICAgICAgVGVzdDogaXBjL3N0YXJ0LW1lc3NhZ2UtdGVzdGluZy5odG1sCisKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1h
a2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNz
YWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0
Y2hTeW5jTWVzc2FnZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlz
cGF0Y2hJbmNvbWluZ01lc3NhZ2VGb3JUZXN0aW5nKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5o
OgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVj
b2Rlcjo6Y3JlYXRlKToKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6RGVjb2Rlcik6CisgICAgICAg
IChJUEM6OkRlY29kZXI6On5EZWNvZGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06Cisg
ICAgICAgIChJUEM6OmNyZWF0ZU1lc3NhZ2VEZWNvZGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9J
UEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnBy
b2Nlc3NNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4u
Y3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVyKToKKyAgICAg
ICAgKiBTaGFyZWQvSVBDVGVzdGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Om1lc3Nh
Z2VUZXN0RHJpdmVyKToKKyAgICAgICAgKFdlYktpdDo6cnVuTWVzc2FnZVRlc3RpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpJUENUZXN0ZXI6On5JUENUZXN0ZXIpOgorICAgICAgICAoV2ViS2l0OjpJ
UENUZXN0ZXI6OnN0YXJ0TWVzc2FnZVRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0
ZXI6OnN0b3BNZXNzYWdlVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3Rlcjo6c3Rv
cElmTmVlZGVkKToKKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVyLmg6IEFkZGVkLgorICAgICAg
ICAqIFNoYXJlZC9JUENUZXN0ZXIubWVzc2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbi4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTGVnYWN5
U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmRlY29kZUxlZ2Fj
eVNlc3Npb25TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpzaG91bGRTZW5kUGVuZGluZ01lc3NhZ2UpOgorICAgICAgICAqIFdlYkF1dGhuUHJvY2Vzcy9X
ZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hTeW5jTWVzc2Fn
ZSk6CisgICAgICAgICogV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAqIFdlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU01lc3NhZ2VMaXN0ZW5lcjo6ZGlk
UmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU01lc3Nh
Z2VMaXN0ZW5lcjo6d2lsbFNlbmRNZXNzYWdlKToKKwogMjAyMS0xMS0xOCAgQW50b2luZSBRdWlu
dCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbTW9kZWxdIGFkZCBzdXBwb3J0IGZv
ciBwYXVzaW5nIGFuZCByZXN1bWluZyBhbmltYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNzk5YWQ3NWIyYTFhYjIxMGQwODFkNTlm
ZDViNGIwMmQ4YjZkYWViNC4uY2FkMjEyNGJkOTUyMmQwMzU2OTg5ZjgwOGQ2NTU1NWM2ZDYxMjIw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApA
QCAtMTIyLDYgKzEyMiw3IEBAICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L1NoYXJlZC9IVFRQU1VwZ3JhZGUvSFRUUFNVcGdyYWRlTGlzdC50eHQKKyQoUFJPSkVDVF9ESVIp
L1NoYXJlZC9JUENUZXN0ZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9Ob3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1l
c3NhZ2VSZWNlaXZlci5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggYTY1ZmMzNjE4NGNmZjhmNzc1MmQ2ODUyNzk4NjE1
NGI2YWY4MDFjNC4uMTU1NjAwZjYwYjc5NGFhMDQ2NTkxYjEzYjc5ZTQwMGJmY2E3YzRhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAor
KysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC00
Niw2ICs0Niw5IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L0dQVVByb2Nlc3NNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvR1BVUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvR1BVUHJvY2Vzc1Byb3h5
TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
R1BVUHJvY2Vzc1Byb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL0lQQ1Rlc3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL0lQQ1Rlc3Rlck1lc3NhZ2Vz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL0lQQ1Rlc3Rl
ck1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9MZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlc1JlcGxpZXMu
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGRkZTVjNjNmZTNmNGIzMTUyOTdkYjRi
Njg0ODljMjlkZTViYmE0NWMuLjI5MGIyNDAyYmY4NDY2NzIyOTYyNTJmOTIzNTc3ZGFmM2I4MzQ3
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE0OSw2ICsxNDksNyBAQCBNRVNT
QUdFX1JFQ0VJVkVSUyA9IFwKIAlTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25N
YW5hZ2VyIFwKIAlTaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2Fn
ZUhhbmRsZXIgXAogCVNoYXJlZC9XZWJDb25uZWN0aW9uIFwKKwlTaGFyZWQvSVBDVGVzdGVyIFwK
IAlVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSBcCiAJVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5IFwKIAlVSVByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NQcm94eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNTJhZTg4MTkzNzFhM2VkZDYw
Y2Q3MjBjZDA4NGJiM2M4NTdmYTdjZC4uN2FiOGFiYzRkZGFlZTc2ZDU3MmZhZWVjMzUxNTc4ZDA3
YmZjOWZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTQ3LDYgKzE0NywxMCBAQAogI2luY2x1ZGUgIlJl
bW90ZVdDTGF5ZXJUcmVlSG9zdC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdf
QVBJKQorI2luY2x1ZGUgIklQQ1Rlc3Rlck1lc3NhZ2VzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNzc3LDYgKzc4MSwxMiBA
QCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQwogICAgICAgICAgICAgbV9yZW1vdGVSZW1vdGVDb21t
YW5kTGlzdGVuZXItPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OklQQ1Rlc3Rl
cjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIG1faXBjVGVzdGVyLmRpZFJlY2Vp
dmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisjZW5kaWYKIAogICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaE1l
c3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CkBAIC04NTAsNiArODYwLDEyIEBAIGJvb2wg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKQogICAgICAgICAvLyBTa2lwIG1lc3NhZ2VzIGZvciBhbHJlYWR5IHJlbW92ZWQgcmVjZWl2
ZXJzLgogICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShJUENfVEVTVElO
R19BUEkpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpJUENUZXN0ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBtX2lwY1Rlc3Rl
ci5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVy
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogI2VuZGlmCiAgICAgcmV0dXJuIG1lc3Nh
Z2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlciwg
cmVwbHlFbmNvZGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGFlNzk1MDUyNTg2MGRlM2NmNmEyYjE3ODhm
ZTM1YTVlYWJkYTU2N2QuLjllOWNiN2RhZjYwOGIyNWE0YmVlY2NlMGE2N2I2N2NmNGM3MzlkYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaApAQCAtNjEsNiArNjEsMTAgQEAKICNpbmNsdWRlICJXQ0xheWVyVHJlZUhvc3RJ
ZGVudGlmaWVyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisjaW5j
bHVkZSAiSVBDVGVzdGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwpAQCAtMzQ0LDYgKzM0
OCw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pICYmIEhBVkUo
QVZBVURJT19ST1VUSU5HX0FSQklURVIpCiAgICAgVW5pcXVlUmVmPExvY2FsQXVkaW9TZXNzaW9u
Um91dGluZ0FyYml0cmF0b3I+IG1fcm91dGluZ0FyYml0cmF0b3I7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIElQQ1Rlc3RlciBtX2lwY1Rlc3RlcjsKKyNlbmRpZgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IDI5MWNjOTg5MmU4MTAyN2Q5Y2FlZDFkOWRiNzA2MWQ3M2U2NzQxNzAuLjNlODAzYjg1YWRk
ZThhMjczNGNlYjM1YzlmOTliZDkxZTljZmFhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCkBAIC04NCw2ICs4NCwxMCBAQAogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorI2luY2x1ZGUg
IklQQ1Rlc3Rlck1lc3NhZ2VzLmgiCisjZW5kaWYKKwogI2RlZmluZSBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhjaGFubmVsLCAiJXAgLSBbd2Vi
UHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjoiIGZtdCwgdGhpcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19f
VkFfQVJHU19fKQogI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWws
IGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCAiJXAgLSBbd2ViUHJvY2Vzc0lk
ZW50aWZpZXI9JSIgUFJJdTY0ICJdIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjoiIGZt
dCwgdGhpcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19f
KQogCkBAIC0yNzEsNiArMjc1LDE4IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvCiAgICAgICAg
IHJldHVybiBwYXltZW50Q29vcmRpbmF0b3IoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OklQQ1Rlc3Rlcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIG1faXBjVGVzdGVyLmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIGlmIChjb25uZWN0aW9uLmln
bm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZygpKQorICAgICAgICByZXR1cm47CisjZW5kaWYK
KwogICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5kbGVkIG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlICcl
cyciLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKTsKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KQEAgLTM0Nyw2ICszNjMsMTcgQEAgYm9vbCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmUKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAgICAgICAg
IHJldHVybiBwYXltZW50Q29vcmRpbmF0b3IoKS5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2RlciwgcmVwbHkpOwogI2VuZGlmCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQ
SSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OklQ
Q1Rlc3Rlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIG1faXBjVGVzdGVyLmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQ
SSkKKyAgICBpZiAoY29ubmVjdGlvbi5pZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3RpbmcoKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKIAogICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5k
bGVkIG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlICclcyciLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkpKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAppbmRleCBlODE3YjdiNjJkMjQ5Nzg3ZGM0YWIxOWVkZWJiMGM0ZjY4NTEyZjJlLi4y
Yjg1MmNiYzIzYmFhNzkyNDRmNzdkZGZhMjBjNmQ4OWFmMzNmMGM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCkBAIC01Niw2ICs1NiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KIAorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkp
CisjaW5jbHVkZSAiSVBDVGVzdGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFBBTCB7CiBjbGFz
cyBTZXNzaW9uSUQ7CiB9CkBAIC00MTUsNiArNDE5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgCiAg
ICAgSGFzaFNldDxVUkw+IG1fYmxvYlVSTHM7CiAgICAgSGFzaFNldDxVUkw+IG1fYmxvYlVSTEhh
bmRsZXM7CisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICBJUENUZXN0ZXIgbV9pcGNU
ZXN0ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCA1ZTI1NmQ4MzliZGU0OTJhZWRlOWI3
NGY1NGRjZjIxOWZmNGI2ODEzLi41MzFjZDkwMzIwZTU4MTgyZTA5MGM2MzlhNjhmNmJkYmMzZGJi
MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtODc1
LDYgKzg3NSwxMyBAQCB2b2lkIENvbm5lY3Rpb246OmFkZE1lc3NhZ2VPYnNlcnZlcihjb25zdCBN
ZXNzYWdlT2JzZXJ2ZXImIG9ic2VydmVyKQogewogICAgIG1fbWVzc2FnZU9ic2VydmVycy5hcHBl
bmQob2JzZXJ2ZXIpOwogfQorCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNz
YWdlRm9yVGVzdGluZyhzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJiBkZWNvZGVyKQoreworICAg
IG1fY29ubmVjdGlvblF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGRlY29kZXIgPSBXVEZNb3ZlKGRlY29kZXIpXSgpIG11dGFibGUgeworICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5wcm9jZXNzSW5jb21pbmdNZXNzYWdlKFdURk1vdmUoZGVjb2RlcikpOworICAg
IH0pOworfQogI2VuZGlmCiAKIHZvaWQgQ29ubmVjdGlvbjo6cG9zdENvbm5lY3Rpb25EaWRDbG9z
ZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSgpCkBAIC0xMDU3LDcgKzEwNjQsOCBAQCB2b2lkIENvbm5l
Y3Rpb246OmRpc3BhdGNoTWVzc2FnZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBSZWNlaXZlck5hbWU6OkFzeW5jUmVwbHkpIHsKICAg
ICAgICAgYXV0byBoYW5kbGVyID0gdGFrZUFzeW5jUmVwbHlIYW5kbGVyKCp0aGlzLCBkZWNvZGVy
LmRlc3RpbmF0aW9uSUQoKSk7CiAgICAgICAgIGlmICghaGFuZGxlcikgewotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBpZiAoIW1faWdub3JlSW52YWxpZE1l
c3NhZ2VGb3JUZXN0aW5nKQorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGhhbmRsZXIoJmRlY29kZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDg5MmU3NTY0OWI1
OGU0YWY4MDZlOGMzNjAxZDQ5ZjVjYzRhNmExYTcuLjYwYTRkOTg0MmM4MDMwMTNhZTI0NDdjZmUy
OTYzNDc5ZTkxMjE1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgK
QEAgLTMyMiw2ICszMjIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldElnbm9yZUludmFsaWRN
ZXNzYWdlRm9yVGVzdGluZygpIHsgbV9pZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3RpbmcgPSB0
cnVlOyB9CiAgICAgYm9vbCBpZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3RpbmcoKSBjb25zdCB7
IHJldHVybiBtX2lnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZzsgfQorICAgIHZvaWQgZGlz
cGF0Y2hJbmNvbWluZ01lc3NhZ2VGb3JUZXN0aW5nKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYm
KTsKICNlbmRpZgogCiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoTWVz
c2FnZVJlY2VpdmVyJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EZWNvZGVyLmNwcAppbmRleCAxMzMzNjQ3MzRiODBlN2FjMWNhMzI4ZTUyMGVm
ODY3NmI0YWM3MzBlLi4zNmIzZWEzY2ZlNjliYmFiNzU3ZWY1MDFhZDMwOGFkNTQyOWNlOThmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcApAQCAtNDcsMzIgKzQ3LDMyIEBA
IHN0YXRpYyBjb25zdCB1aW50OF90KiBjb3B5QnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlclNpemUpCiAgICAgcmV0dXJuIGJ1ZmZlckNvcHk7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiBEZWNvZGVyOjpjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBz
aXplX3QgYnVmZmVyU2l6ZSwgdm9pZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50OF90
Kiwgc2l6ZV90KSwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudHMpCitzdGQ6OnVuaXF1
ZV9wdHI8RGVjb2Rlcj4gRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6
ZV90IGJ1ZmZlclNpemUsIFZlY3RvcjxBdHRhY2htZW50PiYmIGF0dGFjaG1lbnRzKQogewogICAg
IEFTU0VSVChidWZmZXIpOwogICAgIGlmIChVTkxJS0VMWSghYnVmZmVyKSkgewogICAgICAgICBS
RUxFQVNFX0xPR19GQVVMVChJUEMsICJEZWNvZGVyOjpjcmVhdGUoKSBjYWxsZWQgd2l0aCBhIG51
bGwgYnVmZmVyIChidWZmZXJTaXplOiAlbHUpIiwgYnVmZmVyU2l6ZSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KKyAgICByZXR1cm4gRGVjb2Rlcjo6Y3JlYXRlKGNvcHlCdWZmZXIo
YnVmZmVyLCBidWZmZXJTaXplKSwgYnVmZmVyU2l6ZSwgW10oY29uc3QgdWludDhfdCogcHRyLCBz
aXplX3QpIHsgZmFzdEZyZWUoY29uc3RfY2FzdDx1aW50OF90Kj4ocHRyKSk7IH0sIFdURk1vdmUo
YXR0YWNobWVudHMpKTsgLy8gTk9MSU5UCit9CiAKLSAgICBjb25zdCB1aW50OF90KiBidWZmZXJD
b3B5OwotICAgIGlmICghYnVmZmVyRGVhbGxvY2F0b3IpIHsKLSAgICAgICAgYnVmZmVyQ29weSA9
IGNvcHlCdWZmZXIoYnVmZmVyLCBidWZmZXJTaXplKTsKLSAgICAgICAgQVNTRVJUKGJ1ZmZlckNv
cHkpOwotICAgICAgICBpZiAoVU5MSUtFTFkoIWJ1ZmZlckNvcHkpKQotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfSBlbHNlCi0gICAgICAgIGJ1ZmZlckNvcHkgPSBidWZmZXI7Ci0K
LSAgICBhdXRvIGRlY29kZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4obmV3IERlY29kZXIo
YnVmZmVyQ29weSwgYnVmZmVyU2l6ZSwgYnVmZmVyRGVhbGxvY2F0b3IsIFdURk1vdmUoYXR0YWNo
bWVudHMpKSk7CitzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIEJ1ZmZlckRlYWxsb2NhdG9yJiYg
YnVmZmVyRGVhbGxvY2F0b3IsIFZlY3RvcjxBdHRhY2htZW50PiYmIGF0dGFjaG1lbnRzKQorewor
ICAgIEFTU0VSVChidWZmZXIpOworICAgIGlmIChVTkxJS0VMWSghYnVmZmVyKSkgeworICAgICAg
ICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJEZWNvZGVyOjpjcmVhdGUoKSBjYWxsZWQgd2l0aCBh
IG51bGwgYnVmZmVyIChidWZmZXJTaXplOiAlbHUpIiwgYnVmZmVyU2l6ZSk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKyAgICBhdXRvIGRlY29kZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4obmV3IERlY29kZXIoYnVmZmVyLCBidWZmZXJTaXplLCBXVEZNb3ZlKGJ1ZmZlckRl
YWxsb2NhdG9yKSwgV1RGTW92ZShhdHRhY2htZW50cykpKTsKICAgICByZXR1cm4gZGVjb2Rlci0+
aXNWYWxpZCgpID8gV1RGTW92ZShkZWNvZGVyKSA6IG51bGxwdHI7CiB9CiAKLURlY29kZXI6OkRl
Y29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgdm9pZCAoKmJ1
ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSwgVmVjdG9yPEF0dGFjaG1l
bnQ+JiYgYXR0YWNobWVudHMpCitEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZl
ciwgc2l6ZV90IGJ1ZmZlclNpemUsIEJ1ZmZlckRlYWxsb2NhdG9yJiYgYnVmZmVyRGVhbGxvY2F0
b3IsIFZlY3RvcjxBdHRhY2htZW50PiYmIGF0dGFjaG1lbnRzKQogICAgIDogbV9idWZmZXIgeyBi
dWZmZXIgfQogICAgICwgbV9idWZmZXJQb3MgeyBtX2J1ZmZlciB9CiAgICAgLCBtX2J1ZmZlckVu
ZCB7IG1fYnVmZmVyICsgYnVmZmVyU2l6ZSB9Ci0gICAgLCBtX2J1ZmZlckRlYWxsb2NhdG9yIHsg
YnVmZmVyRGVhbGxvY2F0b3IgfQorICAgICwgbV9idWZmZXJEZWFsbG9jYXRvciB7IFdURk1vdmUo
YnVmZmVyRGVhbGxvY2F0b3IpIH0KICAgICAsIG1fYXR0YWNobWVudHMgeyBXVEZNb3ZlKGF0dGFj
aG1lbnRzKSB9CiB7CiAgICAgaWYgKFVOTElLRUxZKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihtX2J1ZmZlcikgJSBhbGlnbm9mKHVpbnQ2NF90KSkpIHsKQEAgLTEwNCwxMiArMTA0LDcgQEAg
RGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1TaXpl
LCB1aW50NjRfdCBkZXN0aW5hdGlvbkkKIERlY29kZXI6On5EZWNvZGVyKCkKIHsKICAgICBBU1NF
UlQobV9idWZmZXIpOwotCi0gICAgaWYgKG1fYnVmZmVyRGVhbGxvY2F0b3IpCi0gICAgICAgIG1f
YnVmZmVyRGVhbGxvY2F0b3IobV9idWZmZXIsIG1fYnVmZmVyRW5kIC0gbV9idWZmZXIpOwotICAg
IGVsc2UKLSAgICAgICAgZmFzdEZyZWUoY29uc3RfY2FzdDx1aW50OF90Kj4obV9idWZmZXIpKTsK
LQorICAgIG1fYnVmZmVyRGVhbGxvY2F0b3IobV9idWZmZXIsIG1fYnVmZmVyRW5kIC0gbV9idWZm
ZXIpOwogICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGRpc3Bvc2Ugb2YgdGhlIG1hY2ggcG9ydHMg
aW4gY2FzZXMgb2YgZmFpbHVyZS4KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvRGVjb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5o
CmluZGV4IDcwNTM1YWZiNWM5ZGVlYjI2NzJhMDYwNzViOWE4Y2ExNWQ3OTk0NDIuLmE5MzU2ZWEx
MDhiYWEzNjBiOGVmOTM5YjBhNDVlM2JiYWFjMjNhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIK
ICNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNp
bmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00
Niw3ICs0Nyw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4gc3RydWN0IEhhc01vZGVy
bkRlY29kZXI7CiBjbGFzcyBEZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZShjb25z
dCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxv
Y2F0b3IpKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBWZWN0b3I8QXR0YWNobWVudD4mJik7Cisg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGUoY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYpOworICAgIHVz
aW5nIEJ1ZmZlckRlYWxsb2NhdG9yID0gRnVuY3Rpb248dm9pZChjb25zdCB1aW50OF90Kiwgc2l6
ZV90KT47CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGUoY29uc3Qg
dWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgQnVmZmVyRGVhbGxvY2F0b3ImJiwg
VmVjdG9yPEF0dGFjaG1lbnQ+JiYpOwogICAgIERlY29kZXIoY29uc3QgdWludDhfdCogc3RyZWFt
LCBzaXplX3Qgc3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAKICAgICB+RGVj
b2RlcigpOwpAQCAtMTM5LDcgKzE0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNJUENEZWNvZGVyID0gdHJ1ZTsKIAogcHJpdmF0ZToKLSAgICBEZWNvZGVyKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9j
YXRvcikoY29uc3QgdWludDhfdCosIHNpemVfdCksIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKKyAg
ICBEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIEJ1ZmZl
ckRlYWxsb2NhdG9yJiYsIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKIAogICAgIGJvb2wgYWxpZ25C
dWZmZXJQb3NpdGlvbihzaXplX3QgYWxpZ25tZW50LCBzaXplX3QpOwogICAgIGJvb2wgYnVmZmVy
SXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QgYWxpZ25tZW50LCBzaXplX3QpIGNvbnN0OwpA
QCAtMTQ3LDcgKzE1MCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXI7
CiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXJQb3M7CiAgICAgY29uc3QgdWludDhfdCogbV9i
dWZmZXJFbmQ7Ci0gICAgdm9pZCAoKm1fYnVmZmVyRGVhbGxvY2F0b3IpKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpOworICAgIEJ1ZmZlckRlYWxsb2NhdG9yIG1fYnVmZmVyRGVhbGxvY2F0b3I7CiAK
ICAgICBWZWN0b3I8QXR0YWNobWVudD4gbV9hdHRhY2htZW50czsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCmluZGV4IDYzOGNm
MzBmYjFlOWViNGFjNTg1Mjg5OWZmMjNkNzYxNmY0ZjkwODkuLmEzYTVmNDk5NTZiZjE1Y2Y4MGRm
MzI3MjhlMTMzN2I0ZGU5OTg5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAgLTQyNiw3ICs0MjYsNyBAQCBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hl
YWRlcl90KiBoZWFkZXIsCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQog
Ci0gICAgICAgIHJldHVybiBEZWNvZGVyOjpjcmVhdGUoYm9keSwgYm9keVNpemUsIG51bGxwdHIs
IFZlY3RvcjxBdHRhY2htZW50PiB7IH0pOworICAgICAgICByZXR1cm4gRGVjb2Rlcjo6Y3JlYXRl
KGJvZHksIGJvZHlTaXplLCB7IH0pOwogICAgIH0KIAogICAgIG1hY2hfbXNnX2JvZHlfdCogYm9k
eSA9IHJlaW50ZXJwcmV0X2Nhc3Q8bWFjaF9tc2dfYm9keV90Kj4oaGVhZGVyICsgMSk7CkBAIC00
ODcsNyArNDg3LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNz
YWdlRGVjb2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVyLAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gRGVjb2Rlcjo6Y3JlYXRlKG1lc3NhZ2VCb2R5LCBt
ZXNzYWdlQm9keVNpemUsIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKKyAgICByZXR1
cm4gRGVjb2Rlcjo6Y3JlYXRlKG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIFdURk1vdmUo
YXR0YWNobWVudHMpKTsKIH0KIAogLy8gVGhlIHJlY2VpdmUgYnVmZmVyIHNpemUgc2hvdWxkIGFs
d2F5cyBpbmNsdWRlIHRoZSBtYXhpbXVtIHRyYWlsZXIgc2l6ZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggZjIyMWY5MDlm
ZTRlNDkwY2FmNmZmMGQ0ODZiODlmNzQzMDNlYjE3Yi4uNzQ2ZjNmNmZkN2ZiYmEwOGJjMDk1MTE0
N2MwNjIzNjRhYmUyMWRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
dW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
dW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTI0NSw3ICsyNDUsNyBAQCBib29sIENvbm5lY3Rp
b246OnByb2Nlc3NNZXNzYWdlKCkKICAgICBpZiAobWVzc2FnZUluZm8uaXNCb2R5T3V0T2ZMaW5l
KCkpCiAgICAgICAgIG1lc3NhZ2VCb2R5ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob29s
TWVzc2FnZUJvZHktPmRhdGEoKSk7CiAKLSAgICBhdXRvIGRlY29kZXIgPSBEZWNvZGVyOjpjcmVh
dGUobWVzc2FnZUJvZHksIG1lc3NhZ2VJbmZvLmJvZHlTaXplKCksIG51bGxwdHIsIFdURk1vdmUo
YXR0YWNobWVudHMpKTsKKyAgICBhdXRvIGRlY29kZXIgPSBEZWNvZGVyOjpjcmVhdGUobWVzc2Fn
ZUJvZHksIG1lc3NhZ2VJbmZvLmJvZHlTaXplKCksIFdURk1vdmUoYXR0YWNobWVudHMpKTsKICAg
ICBBU1NFUlQoZGVjb2Rlcik7CiAgICAgaWYgKCFkZWNvZGVyKQogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlv
bldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5j
cHAKaW5kZXggYWZmMzlmYzEwMmVkMDQ3MTIxZjNmMWMyYWZhODg5ZTA4MjIyODE5OC4uZGE4ZDdm
MGZiOGVjMDdmNThlNjgxZDhhYjg5MmE4Mjk3ZDM2ODhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBA
IHZvaWQgQ29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcigpCiAKICAgICAgICAgaWYgKCFtX3Jl
YWRCdWZmZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgbWVzc2FnZSwg
bGV0J3MgZGlzcGF0Y2ggaXQuCi0gICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBEZWNvZGVyOjpj
cmVhdGUobV9yZWFkQnVmZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVyLnNpemUoKSwgbnVsbHB0ciwg
eyB9KTsKKyAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IERlY29kZXI6OmNyZWF0ZShtX3JlYWRC
dWZmZXIuZGF0YSgpLCBtX3JlYWRCdWZmZXIuc2l6ZSgpLCB7IH0pOwogICAgICAgICAgICAgQVNT
RVJUKGRlY29kZXIpOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyKQogICAgICAgICAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljNGY2NTMy
M2JiNjMxYTZhY2IzN2I0MzU3NjVlODYzMWVlYzVmYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3BwCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklQQ1Rlc3Rlci5oIgorCisjaWYg
RU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiRGVjb2Rlci5oIgorCisjaW5jbHVkZSA8ZGxmY24uaD4KKyNpbmNsdWRlIDxzdGRpby5oPgor
I2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRv
bU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgorCisv
LyBUaGUgdGVzdGVyIEFQSS4KK2V4dGVybiAiQyIgeworLy8gUmV0dXJucyAwIGlmIGRyaXZlciBz
aG91bGQgY29udGludWUuCit0eXBlZGVmIGludCAoKldLTWVzc2FnZVRlc3RTZW5kTWVzc2FnZUZ1
bmMpKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzeiwgdm9pZCogY29udGV4dCk7Cit0eXBl
ZGVmIHZvaWQgKCpXS01lc3NhZ2VUZXN0RHJpdmVyRnVuYykoV0tNZXNzYWdlVGVzdFNlbmRNZXNz
YWdlRnVuYyBzZW5kTWVzc2FnZUZ1bmMsIHZvaWQqIGNvbnRleHQpOworfQorCituYW1lc3BhY2Ug
eworc3RydWN0IFNlbmRNZXNzYWdlQ29udGV4dCB7CisgICAgSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uOworICAgIHN0ZDo6YXRvbWljPGJvb2w+JiBzaG91bGRTdG9wOworfTsKK30KKworZXh0
ZXJuICJDIiB7CisKK3N0YXRpYyB2b2lkIGRlZmF1bHRUZXN0RHJpdmVyKFdLTWVzc2FnZVRlc3RT
ZW5kTWVzc2FnZUZ1bmMgc2VuZE1lc3NhZ2VGdW5jLCB2b2lkKiBjb250ZXh0KQoreworICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhKDEwMDApOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDsg
aSsrKSB7CisgICAgICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSk7CisgICAgICAgIGludCByZXQgPSBzZW5kTWVzc2FnZUZ1bmMoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKHJldCkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQgc2VuZFRlc3RNZXNzYWdlKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCB2b2lkKiBjb250ZXh0KQoreworICAgIGF1dG8g
bWVzc2FnZUNvbnRleHQgPSByZWludGVycHJldF9jYXN0PFNlbmRNZXNzYWdlQ29udGV4dCo+KGNv
bnRleHQpOworICAgIGlmIChtZXNzYWdlQ29udGV4dC0+c2hvdWxkU3RvcCkKKyAgICAgICAgcmV0
dXJuIDE7CisgICAgYXV0byYgdGVzdGVkQ29ubmVjdGlvbiA9IG1lc3NhZ2VDb250ZXh0LT5jb25u
ZWN0aW9uOworICAgIGlmICghdGVzdGVkQ29ubmVjdGlvbi5pc1ZhbGlkKCkpCisgICAgICAgIHJl
dHVybiAxOworICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7CisgICAgYXV0byBkZWNvZGVy
ID0gSVBDOjpEZWNvZGVyOjpjcmVhdGUoZGF0YSwgc2l6ZSwgWyZzZW1hcGhvcmVdIChjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSB7IHNlbWFwaG9yZS5zaWduYWwoKTsgfSwgeyB9KTsgLy8gTk9MSU5U
CisgICAgaWYgKGRlY29kZXIpIHsKKyAgICAgICAgdGVzdGVkQ29ubmVjdGlvbi5kaXNwYXRjaElu
Y29taW5nTWVzc2FnZUZvclRlc3RpbmcoV1RGTW92ZShkZWNvZGVyKSk7CisgICAgICAgIHNlbWFw
aG9yZS53YWl0KCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdGF0aWMgV0tNZXNzYWdlVGVzdERyaXZlckZ1bmMgbWVzc2FnZVRlc3REcml2
ZXIoU3RyaW5nJiYgZHJpdmVyTmFtZSkKK3sKKyAgICBpZiAoZHJpdmVyTmFtZS5pc0VtcHR5KCkp
CisgICAgICAgIGRyaXZlck5hbWUgPSBnZXRlbnYoIldFQktJVF9NRVNTQUdFX1RFU1RfRFJJVkVS
Iik7CisgICAgaWYgKGRyaXZlck5hbWUuaXNFbXB0eSgpIHx8IGRyaXZlck5hbWUgPT0gImRlZmF1
bHQiKQorICAgICAgICByZXR1cm4gZGVmYXVsdFRlc3REcml2ZXI7CisgICAgYXV0byB0ZXN0RHJp
dmVyID0gcmVpbnRlcnByZXRfY2FzdDxXS01lc3NhZ2VUZXN0RHJpdmVyRnVuYz4oZGxzeW0oUlRM
RF9ERUZBVUxULCBkcml2ZXJOYW1lLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VCh0ZXN0RHJpdmVyKTsKKyAgICByZXR1cm4gdGVzdERyaXZlcjsKK30KKworc3RhdGljIHZvaWQg
cnVuTWVzc2FnZVRlc3RpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzdGQ6OmF0b21p
Yzxib29sPiYgc2hvdWxkU3RvcCwgU3RyaW5nJiYgZHJpdmVyTmFtZSkKK3sKKyAgICBjb25uZWN0
aW9uLnNldElnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZygpOworICAgIFNlbmRNZXNzYWdl
Q29udGV4dCBjb250ZXh0IHsgY29ubmVjdGlvbiwgc2hvdWxkU3RvcCB9OworICAgIGF1dG8gZHJp
dmVyID0gbWVzc2FnZVRlc3REcml2ZXIoV1RGTW92ZShkcml2ZXJOYW1lKSk7CisgICAgZHJpdmVy
KHNlbmRUZXN0TWVzc2FnZSwgJmNvbnRleHQpOworfQorCitJUENUZXN0ZXI6OklQQ1Rlc3Rlcigp
ID0gZGVmYXVsdDsKKworSVBDVGVzdGVyOjp+SVBDVGVzdGVyKCkKK3sKKyAgICBzdG9wSWZOZWVk
ZWQoKTsKK30KKwordm9pZCBJUENUZXN0ZXI6OnN0YXJ0TWVzc2FnZVRlc3RpbmcoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJpbmcmJiBkcml2ZXJOYW1lKQoreworICAgIGlmICghbV90
ZXN0UXVldWUpCisgICAgICAgIG1fdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIklQQyB0
ZXN0aW5nIHdvcmsgcXVldWUiKTsKKyAgICBtX3Rlc3RRdWV1ZS0+ZGlzcGF0Y2goW2Nvbm5lY3Rp
b24gPSBSZWYgeyBjb25uZWN0aW9uIH0sICZzaG91bGRTdG9wID0gbV9zaG91bGRTdG9wLCBkcml2
ZXJOYW1lID0gV1RGTW92ZShkcml2ZXJOYW1lKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcnVuTWVz
c2FnZVRlc3RpbmcoY29ubmVjdGlvbiwgc2hvdWxkU3RvcCwgV1RGTW92ZShkcml2ZXJOYW1lKSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgSVBDVGVzdGVyOjpzdG9wTWVzc2FnZVRlc3RpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzdG9wSWZOZWVk
ZWQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIElQQ1Rlc3Rlcjo6c3Rv
cElmTmVlZGVkKCkKK3sKKyAgICBpZiAobV90ZXN0UXVldWUpIHsKKyAgICAgICAgbV9zaG91bGRT
dG9wID0gdHJ1ZTsKKyAgICAgICAgbV90ZXN0UXVldWUtPmRpc3BhdGNoU3luYyhbXSB7IH0pOwor
ICAgICAgICBtX3Rlc3RRdWV1ZSA9IG51bGxwdHI7CisgICAgfQorfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9JUENUZXN0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDk5MDkzNWJkNTUxZDRlZWI1ODM1
NDNlMTJlY2ZkM2I4NDcxODVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvSVBDVGVzdGVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgorI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJUENUZXN0ZXIgZmluYWwgOiBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIElQQ1Rlc3RlcigpOworICAgIH5JUENU
ZXN0ZXIoKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7Citwcml2YXRlOgor
ICAgIC8vIE1lc3NhZ2VzLgorICAgIHZvaWQgc3RhcnRNZXNzYWdlVGVzdGluZyhJUEM6OkNvbm5l
Y3Rpb24mLCBTdHJpbmcmJiBkcml2ZXJOYW1lKTsKKyAgICB2b2lkIHN0b3BNZXNzYWdlVGVzdGlu
ZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+KTsKKworICAgIHZvaWQgc3RvcElmTmVlZGVkKCk7
CisKKyAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX3Rlc3RRdWV1ZTsKKyAgICBzdGQ6OmF0b21pYzxi
b29sPiBtX3Nob3VsZFN0b3AgeyBmYWxzZSB9OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzViZTg1YzBj
ODlhNDA2MDg2OGZjZDlhZDYxZTI4ODI4MDFmMjExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzEgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShJUENfVEVT
VElOR19BUEkpCisKK21lc3NhZ2VzIC0+IElQQ1Rlc3RlciBOb3RSZWZDb3VudGVkIHsKKyAgICBT
dGFydE1lc3NhZ2VUZXN0aW5nKFN0cmluZyBkcml2ZXJOYW1lKSBXYW50c0Nvbm5lY3Rpb24KKyAg
ICBTdG9wTWVzc2FnZVRlc3RpbmcoKSAtPiAoKSBTeW5jaHJvbm91cworfQorCisKKyNlbmRpZgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDhlM2FkMTljOWY1N2E1
ZGY0ODYwN2IwZjNmNjMzNDY5MDAyNTIwYjcuLjliMjg1YWVhNThlOTg2YmM5YmUxYzY3OGExODQy
NDE1Y2Y3ZDE0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjE3LDYgKzIxNyw3IEBAIFNoYXJlZC9FZGl0
b3JTdGF0ZS5jcHAKIFNoYXJlZC9Gb250SW5mby5jcHAKIFNoYXJlZC9GcmFtZUluZm9EYXRhLmNw
cAogU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcAorU2hhcmVkL0lQQ1Rlc3Rlci5j
cHAKIFNoYXJlZC9MYXllclRyZWVDb250ZXh0LmNwcAogU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNw
cAogU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcApAQCAtODM3LDYgKzgzOCw3IEBAIFdl
YlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCiAKIFdl
YlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcAogCitJUENUZXN0ZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5TWVzc2FnZVJlY2Vp
dmVyLmNwcAogUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAog
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdO
b25lLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGlu
Z05vbmUuY3BwCmluZGV4IGVkMTQ0NDljYmYzZTQ3YzU5MDJmOWM5ZTRlYzVkYTlhZmJkMjgwMTEu
LjJjNzkxMGRkOTMzZmQ0ZGZhMjA4NWYwOGI1MmRkODRiMjI5NzIyMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUu
Y3BwCkBAIC00OCw3ICs0OCw3IEBAIFJlZlB0cjxBUEk6OkRhdGE+IGVuY29kZUxlZ2FjeVNlc3Np
b25TdGF0ZShjb25zdCBTZXNzaW9uU3RhdGUmIHNlc3Npb25TdGF0ZSkKIAogYm9vbCBkZWNvZGVM
ZWdhY3lTZXNzaW9uU3RhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBT
ZXNzaW9uU3RhdGUmIHNlc3Npb25TdGF0ZSkKIHsKLSAgICBhdXRvIGRlY29kZXIgPSBJUEM6OkRl
Y29kZXI6OmNyZWF0ZShkYXRhLCBkYXRhU2l6ZSwgbnVsbHB0ciwgVmVjdG9yPElQQzo6QXR0YWNo
bWVudD4oKSk7CisgICAgYXV0byBkZWNvZGVyID0gSVBDOjpEZWNvZGVyOjpjcmVhdGUoZGF0YSwg
ZGF0YVNpemUsIHsgfSk7CiAgICAgaWYgKCFkZWNvZGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA3NDI0
ZjA4ZTVlZWZiZTMzNjE3Njk4NWVkYjBjMDNmZWNhMWY1MjlmLi4yZTE1N2U0M2YyNThjMDQ0ZTk0
Y2M0NDE5Njc1NmU5Y2YwZmRlZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCkBAIC0xNDcsNiArMTQ3LDEwIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWRMZWFrQ291bnRlci5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQor
I2luY2x1ZGUgIklQQ1Rlc3Rlck1lc3NhZ2VzLmgiCisjZW5kaWYKKwogI2RlZmluZSBXRUJQUk9D
RVNTUE9PTF9SRUxFQVNFX0xPRyhjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0coY2hhbm5l
bCwgIiVwIC0gV2ViUHJvY2Vzc1Bvb2w6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2Rl
ZmluZSBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoY2hhbm5lbCwgZm10LCAuLi4p
IFJFTEVBU0VfTE9HKGNoYW5uZWwsICJXZWJQcm9jZXNzUG9vbDo6IiBmbXQsICMjX19WQV9BUkdT
X18pCiAjZGVmaW5lIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZt
dCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCAiJXAgLSBXZWJQcm9jZXNzUG9vbDo6
IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCkBAIC0yNDIsNiArMjQ2LDkgQEAgV2ViUHJvY2Vz
c1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uKQogI2VuZGlmCiAKICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlByb2Nlc3NQb29sOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKKyNpZiBFTkFCTEUo
SVBDX1RFU1RJTkdfQVBJKQorICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6SVBDVGVz
dGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faXBjVGVzdGVyKTsKKyNlbmRpZgogCiAgICAg
Ly8gTk9URTogVGhlc2Ugc3ViLW9iamVjdHMgbXVzdCBiZSBpbml0aWFsaXplZCBhZnRlciBtX21l
c3NhZ2VSZWNlaXZlck1hcC4uCiAgICAgYWRkU3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eT4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4
IGE5NDM4YWUzZGIxYmFjNDUzNWYxZTkyZmUyMGViYzFmODg5YTcyNDAuLmI4MzQyMWQxNjlhODk2
YzI0ZGUwYTk4NDgxZjYzYTE5NWZiZTI5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaApAQCAtNzUsNiArNzUsMTEgQEAgT0JKQ19DTEFTUyBXS1dlYkluc3BlY3Rv
clByZWZlcmVuY2VPYnNlcnZlcjsKICNpbmNsdWRlIDxwYWwvc3lzdGVtL1N5c3RlbVNsZWVwTGlz
dGVuZXIuaD4KICNlbmRpZgogCisKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorI2luY2x1
ZGUgIklQQ1Rlc3Rlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXV0b21h
dGlvbkNsaWVudDsKIGNsYXNzIERvd25sb2FkQ2xpZW50OwpAQCAtNzk4LDYgKzgwMyw5IEBAIHBy
aXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBvd2VyT2JzZXJ2ZXI+IG1fcG93
ZXJPYnNlcnZlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UEFMOjpTeXN0ZW1TbGVlcExpc3RlbmVy
PiBtX3N5c3RlbVNsZWVwTGlzdGVuZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdf
QVBJKQorICAgIElQQ1Rlc3RlciBtX2lwY1Rlc3RlcjsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDExODFjYTdkNjU4YjQ5NDY1M2ZmODBhNjIyMDk1NTE0OWEzMzc4ODguLmQwOGM3YzYx
ODVhYTM4MGEyMWU3ZDVjYTAxNTE0ZTI0ODUzNWM3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIGJvb2wgV2ViUHJv
Y2Vzc1Byb3h5OjpzaG91bGRTZW5kUGVuZGluZ01lc3NhZ2UoY29uc3QgUGVuZGluZ01lc3NhZ2Um
IG1lc3NhZ2UpCiAgICAgaWYgKG1lc3NhZ2UuZW5jb2Rlci0+bWVzc2FnZU5hbWUoKSA9PSBJUEM6
Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRSZXF1ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2gp
IHsKICAgICAgICAgYXV0byBidWZmZXIgPSBtZXNzYWdlLmVuY29kZXItPmJ1ZmZlcigpOwogICAg
ICAgICBhdXRvIGJ1ZmZlclNpemUgPSBtZXNzYWdlLmVuY29kZXItPmJ1ZmZlclNpemUoKTsKLSAg
ICAgICAgYXV0byBkZWNvZGVyID0gSVBDOjpEZWNvZGVyOjpjcmVhdGUoYnVmZmVyLCBidWZmZXJT
aXplLCBudWxscHRyLCB7IH0pOworICAgICAgICBhdXRvIGRlY29kZXIgPSBJUEM6OkRlY29kZXI6
OmNyZWF0ZShidWZmZXIsIGJ1ZmZlclNpemUsIHsgfSk7CiAgICAgICAgIEFTU0VSVChkZWNvZGVy
KTsKICAgICAgICAgaWYgKCFkZWNvZGVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhu
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNzllN2Y0NDE3YWExY2MzNDE4OTAxNjg0
NDI1ZGY3YzlkMzdmMmE3Zi4uMTcyMWU4YmVhNTQwYjY4MThhYWIxNDY5Njk4M2MwNzJhZjI4YWYz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vz
cy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zMyw2ICszMywxMCBAQAog
I2luY2x1ZGUgIldlYkF1dGhuUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGlj
YXRvclJlc3BvbnNlRGF0YS5oPgogCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyNpbmNs
dWRlICJJUENUZXN0ZXJNZXNzYWdlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTY3LDYgKzcxLDI5IEBAIHZvaWQgV2ViQXV0
aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjCiAgICAgQ1JBU0goKTsKIH0KIAorYm9vbCBXZWJBdXRobkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQor
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6SVBDVGVz
dGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgbV9pcGNUZXN0ZXIuZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBXZWJBdXRobkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+
JiByZXBseUVuY29kZXIpCit7CisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OklQQ1Rlc3Rlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIG1faXBjVGVzdGVyLmRpZFJlY2VpdmVTeW5j
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKwogdm9pZCBX
ZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1ha2VDcmVkZW50aWFsKFZlY3Rvcjx1aW50
OF90PiYmIGhhc2gsIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmJiBvcHRpb25z
LCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYg
aGFuZGxlcikKIHsKICAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgV1RGTW92ZShv
cHRpb25zKSwgbnVsbHB0ciwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFi
bGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFN0
cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAppbmRleCAyNzNiNDYxNTRjMmE1NDVjYzQ0YmFhNzEwOGMyNzgwYmNmYjAxNzFlLi40
OWZiNjQxNDdjYWEzMmNiMDE4YWRjMmNkMDE3ZTE0M2RkOGUzNTJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaApAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nl
c3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorI2lmIEVOQUJM
RShJUENfVEVTVElOR19BUEkpCisjaW5jbHVkZSAiSVBDVGVzdGVyLmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogZW51bSBjbGFzcyBBdXRoZW50aWNhdG9yQXR0YWNobWVudDsKIHN0
cnVjdCBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhOwpAQCAtNjcsNiArNzEsMTAgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5h
bWUpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsK
KworICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpOworICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgLy8gUmVjZWl2ZXJz
LgogICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgV2ViQ29y
ZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYmLCBib29sIHByb2Nlc3NpbmdV
c2VyR2VzdHVyZSwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOwpAQCAtNzYsOSArODQsMTMg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJl
cXVlc3REYXRhJiYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKIAorCiAgICAgUmVmPElQ
Qzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFJlZjxXZWJBdXRoblByb2Nlc3M+IG1f
V2ViQXV0aG5Qcm9jZXNzOwogICAgIGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1f
d2ViUHJvY2Vzc0lkZW50aWZpZXI7CisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICBJ
UENUZXN0ZXIgbV9pcGNUZXN0ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJBdXRoblBy
b2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGFj
NzNhOTUzNmE4OTIwMjJlMzNmYTZjMTQxNzI4NTlkZTJkNWY0ZWMuLmU5OGQwYTYyODUyNGE5MDAz
MGFjM2IzNDdjNDYyNTUwZmI5NDNmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0
aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVU
SE4pCiAKLW1lc3NhZ2VzIC0+IFdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7CittZXNz
YWdlcyAtPiBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3Nh
Z2UgewogCiAgICAgTWFrZUNyZWRlbnRpYWwoVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMsIGJvb2wg
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1l
bnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBB
c3luYwogICAgIEdldEFzc2VydGlvbihWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNv
cmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zLCBib29sIHByb2Nl
c3NpbmdVc2VyR2VzdHVyZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9u
c2VEYXRhIGRhdGEsIGVudW06aW50IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0
dGFjaG1lbnQsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhIGV4Y2VwdGlvbikgQXN5bmMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDVkYjU2MTNmOGQ2YzA4OGNhYzcxNmQwODU3YTg3NjA5OWYwYmMyY2MuLjFjZWRjM2YwNjhmOGU3
YWM1MzMyMGQxMDJhMWEyYmJmYjIwMGYyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM4Miw2ICsxMzgyLDcgQEAKIAkJN0I3MzEy
NDIyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzOTI1Q0M4NTI1MDAz
QjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCAqLzsgfTsKIAkJN0JBQjExMTAyNURE
MDJCMzAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQUIxMTBGMjVERDAyQjIw
MDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi87IH07CiAJCTdC
Q0Y3MERFMjYxNUQwNkUwMEU0RkI3MCAvKiBTY29wZWRSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0
Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QkNGNzBDQjI2MTQ5MzVFMDBFNEZCNzAgLyogU2NvcGVkUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVz
dENvY29hLm1tICovOyB9OworCQk3QkREQTMxOTI3NDdDMDQwMDAzODY1OUUgLyogSVBDVGVzdGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkREQTMx
ODI3NDdCRkUwMDAzODY1OUUgLyogSVBDVGVzdGVyLmggKi87IH07CiAJCTdDMDY1RjJDMUM4Q0Q5
NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDY1RjJBMUM4Q0Q5NUYw
MEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLzsgfTsKIAkJ
N0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE3MTczQjBCQ0Ew
MDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEzM0UxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQ
SURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggKi87IH07CkBA
IC00OTM0LDYgKzQ5MzUsOCBAQAogCQk3QkNGNzBDQzI2MTQ5MzVGMDBFNEZCNzAgLyogU2NvcGVk
V2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNj
b3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCQ0Y3MENEMjYxNDkzNUYwMEU0RkI3MCAvKiBTY29wZWRSZW5kZXJpbmdS
ZXNvdXJjZXNSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZFJlbmRlcmluZ1Jlc291cmNl
c1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRjcwQ0UyNjE0OTM1
RjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JEREEzMTcyNzQ3QkZFMDAwMzg2NTlFIC8qIElQQ1Rl
c3Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJUENUZXN0ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QkREQTMxODI3NDdCRkUwMDAzODY1OUUgLyogSVBDVGVzdGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IElQQ1Rlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QkU3MjY1NzI1NzRGNjcyMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0JFNzI2NjgyNTc2ODBFRjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjI5MUM4Q0Q5
NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
RGF0YVR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5MDcsNiArNjkx
MCw4IEBACiAJCTFBQURERjRCMTBEODJBRjAwMEQzRDYzRCAvKiBTaGFyZWQgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTdCRERBMzE3Mjc0N0JGRTAwMDM4
NjU5RSAvKiBJUENUZXN0ZXIuY3BwICovLAorCQkJCTdCRERBMzE4Mjc0N0JGRTAwMDM4NjU5RSAv
KiBJUENUZXN0ZXIuaCAqLywKIAkJCQlCQ0REQjMxNDEyNEVCQ0VGMDA0OEQxM0MgLyogQVBJICov
LAogCQkJCTFBQjFGNzc2MUQxQjMwQTkwMDdDOUJEMSAvKiBBcHBsZVBheSAqLywKIAkJCQk1MThF
OEVGMTE2QjIwOEYwMDBFOTE0MjkgLyogQXV0aGVudGljYXRpb24gKi8sCkBAIC0xMzM3Myw2ICsx
MzM3OCw3IEBACiAJCQkJNUNEMjg2NTgxRTcyMzVEMTAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVM
aXN0U3RvcmVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU0QzE4QkJFMDQ0MDAw
RkNGQzkgLyogV0tDb250ZW50Vmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDQjRFNkMxOEJC
RjI2QTAwMEZDRkM5IC8qIFdLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJN0JEREEzMTkyNzQ3QzA0MDAwMzg2NTlFIC8qIElQQ1Rlc3Rlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYwNDE1OUUyM0M3Q0M3MzAwNjBBM0UyIC8qIFdLQ29udGVudFZpZXdNYWMuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMTA2NUZDMjNFQzk1NzIwMDU0NDNENiAvKiBXS0NvbnRlbnRX
b3JsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExMDY1RkQyM0VDOTU3QjAwNTQ0M0Q2IC8qIFdL
Q29udGVudFdvcmxkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAppbmRleCBlMWEzMTQwMTJh
ZDhjNDBkNzU0YzBiYmM4NzkxOTAwOTZkNGI4N2I5Li41NGY0NjU3Zjg0MDY0NDFkZmM0MzhkOGM1
MGZkMWI3OTU2Yjg1NGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9JUENUZXN0aW5nQVBJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9JUENUZXN0aW5nQVBJLmNwcApAQCAtMTg4Niw3ICsxODg2LDcgQEAgdm9pZCBKU01lc3Nh
Z2VMaXN0ZW5lcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQogICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRvSlMobV9jb250ZXh0KTsKICAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAKLSAgICBhdXRvIG11dGFibGVE
ZWNvZGVyID0gSVBDOjpEZWNvZGVyOjpjcmVhdGUoZGVjb2Rlci5idWZmZXIoKSwgZGVjb2Rlci5s
ZW5ndGgoKSwgbnVsbHB0ciwgeyB9KTsKKyAgICBhdXRvIG11dGFibGVEZWNvZGVyID0gSVBDOjpE
ZWNvZGVyOjpjcmVhdGUoZGVjb2Rlci5idWZmZXIoKSwgZGVjb2Rlci5sZW5ndGgoKSwgeyB9KTsK
ICAgICBhdXRvKiBkZXNjcmlwdGlvbiA9IGpzRGVzY3JpcHRpb25Gcm9tRGVjb2RlcihnbG9iYWxP
YmplY3QsICptdXRhYmxlRGVjb2Rlcik7CiAKICAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdID0g
eyBkZXNjcmlwdGlvbiA/IHRvUmVmKGdsb2JhbE9iamVjdCwgZGVzY3JpcHRpb24pIDogSlNWYWx1
ZU1ha2VVbmRlZmluZWQobV9jb250ZXh0KSB9OwpAQCAtMTkwMyw3ICsxOTAzLDcgQEAgdm9pZCBK
U01lc3NhZ2VMaXN0ZW5lcjo6d2lsbFNlbmRNZXNzYWdlKGNvbnN0IElQQzo6RW5jb2RlciYgZW5j
b2RlciwgT3B0aW9uU2V0PEkKICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB0b0pTKG1fY29udGV4
dCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QtPnZtKCkpOwogCi0g
ICAgYXV0byBkZWNvZGVyID0gSVBDOjpEZWNvZGVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwg
ZW5jb2Rlci5idWZmZXJTaXplKCksIG51bGxwdHIsIHsgfSk7CisgICAgYXV0byBkZWNvZGVyID0g
SVBDOjpEZWNvZGVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXpl
KCksIHsgfSk7CiAgICAgYXV0byogZGVzY3JpcHRpb24gPSBqc0Rlc2NyaXB0aW9uRnJvbURlY29k
ZXIoZ2xvYmFsT2JqZWN0LCAqZGVjb2Rlcik7CiAKICAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
ID0geyBkZXNjcmlwdGlvbiA/IHRvUmVmKGdsb2JhbE9iamVjdCwgZGVzY3JpcHRpb24pIDogSlNW
YWx1ZU1ha2VVbmRlZmluZWQobV9jb250ZXh0KSB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRlZjM0N2U2NmVlMGRjM2Q3
OGRmMWE1NmNkOGQ0YjYyMzIwOGQwYmUuLjc0MzA2ZmYwMDQyYmZlMTA5MWQ5NWFmZjU2ODVkNjNk
ZjE3N2JlMzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMS0yMyAgS2ltbW8gS2lubnVu
ZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgaW4tcHJvY2VzcyBJ
UEMgbWVzc2FnZSB0ZXN0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzE2NzQKKyAgICAgICAgPHJkYXI6Ly84NDE4OTMxND4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gZXhhbXBsZSBtZXNz
YWdlIHRlc3RlciBpbnZvY2F0aW9uIHRlc3QuCisKKyAgICAgICAgKiBpcGMvc3RhcnQtbWVzc2Fn
ZS10ZXN0aW5nLmh0bWw6IEFkZGVkLgorCiAyMDIxLTExLTE4ICBGcsOpZMOpcmljIFdhbmcgIDxm
d2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE51bGxwdHIgY3Jhc2ggaW4gU2ltcGxpZmllZEJh
Y2t3YXJkc1RleHRJdGVyYXRvcjo6cmFuZ2UoKSB2aWEgcHJldmlvdXNTZW50ZW5jZVBvc2l0aW9u
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pcGMvc3RhcnQtbWVzc2FnZS10ZXN0aW5nLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pcGMvc3RhcnQtbWVzc2FnZS10ZXN0aW5nLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGIwOTM1YTVmZGZlNDVmMmRiOWM3OTIwOTg5Y2UzZjc2ZGY5MGRiNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2lwYy9zdGFydC1tZXNzYWdlLXRlc3RpbmcuaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIElQQ1Rlc3Rp
bmdBUElFbmFibGVkPXRydWUgXSAtLT4KKzxib2R5PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwordmFyIGRyaXZlck5hbWUg
PSB7dHlwZTogIlN0cmluZyIsIHZhbHVlOiAiZGVmYXVsdCJ9OworCitmdW5jdGlvbiBzdG9wKCkg
eworICAgIGlmICh3aW5kb3cuSVBDKSB7CisgICAgICAgIElQQy5zZW5kU3luY01lc3NhZ2UoIkdQ
VSIsIDAsIElQQy5tZXNzYWdlcy5JUENUZXN0ZXJfU3RvcE1lc3NhZ2VUZXN0aW5nLm5hbWUsIFtd
KTsKKyAgICAgICAgSVBDLnNlbmRTeW5jTWVzc2FnZSgiTmV0d29ya2luZyIsIDAsIElQQy5tZXNz
YWdlcy5JUENUZXN0ZXJfU3RvcE1lc3NhZ2VUZXN0aW5nLm5hbWUsIFtdKTsKKyAgICAgICAgSVBD
LnNlbmRTeW5jTWVzc2FnZSgiVUkiLCAwLCBJUEMubWVzc2FnZXMuSVBDVGVzdGVyX1N0b3BNZXNz
YWdlVGVzdGluZy5uYW1lLCBbXSk7CisgICAgICAgIGNvbnNvbGUubG9nKCJzdG9wcGVkIik7Cisg
ICAgfQorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Cit9CisKK2lmICh3aW5kb3cuSVBDKSB7CisgICAgSVBDLnNlbmRNZXNzYWdlKCJH
UFUiLCAwLCBJUEMubWVzc2FnZXMuSVBDVGVzdGVyX1N0YXJ0TWVzc2FnZVRlc3RpbmcubmFtZSwg
W2RyaXZlck5hbWVdKTsKKyAgICBJUEMuc2VuZE1lc3NhZ2UoIk5ldHdvcmtpbmciLCAwLCBJUEMu
bWVzc2FnZXMuSVBDVGVzdGVyX1N0YXJ0TWVzc2FnZVRlc3RpbmcubmFtZSwgW2RyaXZlck5hbWVd
KTsKKyAgICBJUEMuc2VuZE1lc3NhZ2UoIlVJIiwgMCwgSVBDLm1lc3NhZ2VzLklQQ1Rlc3Rlcl9T
dGFydE1lc3NhZ2VUZXN0aW5nLm5hbWUsIFtkcml2ZXJOYW1lXSk7CisgICAgY29uc29sZS5sb2co
InN0YXJ0ZWQiKTsKK30KK3NldFRpbWVvdXQoc3RvcCwgMzAwMCk7CisKKzwvc2NyaXB0PgorPHA+
VGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2guPC9wPgorPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="commit-queue"
          id="470165"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445032</attachid>
            <date>2021-11-23 07:20:28 -0800</date>
            <delta_ts>2021-12-21 05:32:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231674-20211123172026.patch</filename>
            <type>text/plain</type>
            <size>46894</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5NDhlMThhZjI5OWM2OTdk
NDc3YTJjYjE0MTIzZDk3YjA2OThkMjkuLjM5YmE3N2I5ZGYzOGQ3NmU2Y2U4ZDQ2ZDY4NmMwZDdk
Zjc5MTVjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMjEtMTEtMjMgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGluLXByb2Nl
c3MgSVBDIG1lc3NhZ2UgdGVzdGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMxNjc0CisgICAgICAgIDxyZGFyOi8vODQxODkzMTQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIElQQ1Rlc3RlciBz
ZXJ2aWNlIHRvIFVJLCBHUFUsIE5ldHdvcmssIEF1dGhuIHByb2Nlc3MuCisgICAgICAgIFRoZSBz
ZXJ2aWNlIGNhbiBiZSB1c2VkIHRvIHNlbmQgcmFuZG9tIG1lc3NhZ2VzIHRvIHRoZSBwcm9jZXNz
ZXMuCisKKyAgICAgICAgVGVzdDogaXBjL3N0YXJ0LW1lc3NhZ2UtdGVzdGluZy5odG1sCisKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1h
a2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNz
YWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0
Y2hTeW5jTWVzc2FnZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlz
cGF0Y2hJbmNvbWluZ01lc3NhZ2VGb3JUZXN0aW5nKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5o
OgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVj
b2Rlcjo6Y3JlYXRlKToKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6RGVjb2Rlcik6CisgICAgICAg
IChJUEM6OkRlY29kZXI6On5EZWNvZGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06Cisg
ICAgICAgIChJUEM6OmNyZWF0ZU1lc3NhZ2VEZWNvZGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9J
UEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnBy
b2Nlc3NNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4u
Y3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVyKToKKyAgICAg
ICAgKiBTaGFyZWQvSVBDVGVzdGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Om1lc3Nh
Z2VUZXN0RHJpdmVyKToKKyAgICAgICAgKFdlYktpdDo6cnVuTWVzc2FnZVRlc3RpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpJUENUZXN0ZXI6On5JUENUZXN0ZXIpOgorICAgICAgICAoV2ViS2l0OjpJ
UENUZXN0ZXI6OnN0YXJ0TWVzc2FnZVRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0
ZXI6OnN0b3BNZXNzYWdlVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3Rlcjo6c3Rv
cElmTmVlZGVkKToKKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVyLmg6IEFkZGVkLgorICAgICAg
ICAqIFNoYXJlZC9JUENUZXN0ZXIubWVzc2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbi4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTGVnYWN5
U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmRlY29kZUxlZ2Fj
eVNlc3Npb25TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpzaG91bGRTZW5kUGVuZGluZ01lc3NhZ2UpOgorICAgICAgICAqIFdlYkF1dGhuUHJvY2Vzcy9X
ZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hTeW5jTWVzc2Fn
ZSk6CisgICAgICAgICogV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAqIFdlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU01lc3NhZ2VMaXN0ZW5lcjo6ZGlk
UmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU01lc3Nh
Z2VMaXN0ZW5lcjo6d2lsbFNlbmRNZXNzYWdlKToKKwogMjAyMS0xMS0xOCAgQW50b2luZSBRdWlu
dCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbTW9kZWxdIGFkZCBzdXBwb3J0IGZv
ciBwYXVzaW5nIGFuZCByZXN1bWluZyBhbmltYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNzk5YWQ3NWIyYTFhYjIxMGQwODFkNTlm
ZDViNGIwMmQ4YjZkYWViNC4uY2FkMjEyNGJkOTUyMmQwMzU2OTg5ZjgwOGQ2NTU1NWM2ZDYxMjIw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApA
QCAtMTIyLDYgKzEyMiw3IEBAICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L1NoYXJlZC9IVFRQU1VwZ3JhZGUvSFRUUFNVcGdyYWRlTGlzdC50eHQKKyQoUFJPSkVDVF9ESVIp
L1NoYXJlZC9JUENUZXN0ZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9Ob3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1l
c3NhZ2VSZWNlaXZlci5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggYTY1ZmMzNjE4NGNmZjhmNzc1MmQ2ODUyNzk4NjE1
NGI2YWY4MDFjNC4uMTU1NjAwZjYwYjc5NGFhMDQ2NTkxYjEzYjc5ZTQwMGJmY2E3YzRhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAor
KysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC00
Niw2ICs0Niw5IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L0dQVVByb2Nlc3NNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvR1BVUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvR1BVUHJvY2Vzc1Byb3h5
TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
R1BVUHJvY2Vzc1Byb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL0lQQ1Rlc3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL0lQQ1Rlc3Rlck1lc3NhZ2Vz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL0lQQ1Rlc3Rl
ck1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9MZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlc1JlcGxpZXMu
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGRkZTVjNjNmZTNmNGIzMTUyOTdkYjRi
Njg0ODljMjlkZTViYmE0NWMuLjI5MGIyNDAyYmY4NDY2NzIyOTYyNTJmOTIzNTc3ZGFmM2I4MzQ3
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE0OSw2ICsxNDksNyBAQCBNRVNT
QUdFX1JFQ0VJVkVSUyA9IFwKIAlTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25N
YW5hZ2VyIFwKIAlTaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2Fn
ZUhhbmRsZXIgXAogCVNoYXJlZC9XZWJDb25uZWN0aW9uIFwKKwlTaGFyZWQvSVBDVGVzdGVyIFwK
IAlVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSBcCiAJVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5IFwKIAlVSVByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NQcm94eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNTJhZTg4MTkzNzFhM2VkZDYw
Y2Q3MjBjZDA4NGJiM2M4NTdmYTdjZC4uN2FiOGFiYzRkZGFlZTc2ZDU3MmZhZWVjMzUxNTc4ZDA3
YmZjOWZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTQ3LDYgKzE0NywxMCBAQAogI2luY2x1ZGUgIlJl
bW90ZVdDTGF5ZXJUcmVlSG9zdC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdf
QVBJKQorI2luY2x1ZGUgIklQQ1Rlc3Rlck1lc3NhZ2VzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNzc3LDYgKzc4MSwxMiBA
QCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQwogICAgICAgICAgICAgbV9yZW1vdGVSZW1vdGVDb21t
YW5kTGlzdGVuZXItPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OklQQ1Rlc3Rl
cjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIG1faXBjVGVzdGVyLmRpZFJlY2Vp
dmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisjZW5kaWYKIAogICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaE1l
c3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CkBAIC04NTAsNiArODYwLDEyIEBAIGJvb2wg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKQogICAgICAgICAvLyBTa2lwIG1lc3NhZ2VzIGZvciBhbHJlYWR5IHJlbW92ZWQgcmVjZWl2
ZXJzLgogICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShJUENfVEVTVElO
R19BUEkpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpJUENUZXN0ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBtX2lwY1Rlc3Rl
ci5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVy
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogI2VuZGlmCiAgICAgcmV0dXJuIG1lc3Nh
Z2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlciwg
cmVwbHlFbmNvZGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGFlNzk1MDUyNTg2MGRlM2NmNmEyYjE3ODhm
ZTM1YTVlYWJkYTU2N2QuLjllOWNiN2RhZjYwOGIyNWE0YmVlY2NlMGE2N2I2N2NmNGM3MzlkYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaApAQCAtNjEsNiArNjEsMTAgQEAKICNpbmNsdWRlICJXQ0xheWVyVHJlZUhvc3RJ
ZGVudGlmaWVyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisjaW5j
bHVkZSAiSVBDVGVzdGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwpAQCAtMzQ0LDYgKzM0
OCw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pICYmIEhBVkUo
QVZBVURJT19ST1VUSU5HX0FSQklURVIpCiAgICAgVW5pcXVlUmVmPExvY2FsQXVkaW9TZXNzaW9u
Um91dGluZ0FyYml0cmF0b3I+IG1fcm91dGluZ0FyYml0cmF0b3I7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIElQQ1Rlc3RlciBtX2lwY1Rlc3RlcjsKKyNlbmRpZgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IDI5MWNjOTg5MmU4MTAyN2Q5Y2FlZDFkOWRiNzA2MWQ3M2U2NzQxNzAuLjNlODAzYjg1YWRk
ZThhMjczNGNlYjM1YzlmOTliZDkxZTljZmFhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCkBAIC04NCw2ICs4NCwxMCBAQAogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorI2luY2x1ZGUg
IklQQ1Rlc3Rlck1lc3NhZ2VzLmgiCisjZW5kaWYKKwogI2RlZmluZSBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhjaGFubmVsLCAiJXAgLSBbd2Vi
UHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjoiIGZtdCwgdGhpcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19f
VkFfQVJHU19fKQogI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWws
IGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCAiJXAgLSBbd2ViUHJvY2Vzc0lk
ZW50aWZpZXI9JSIgUFJJdTY0ICJdIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjoiIGZt
dCwgdGhpcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19f
KQogCkBAIC0yNzEsNiArMjc1LDE4IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvCiAgICAgICAg
IHJldHVybiBwYXltZW50Q29vcmRpbmF0b3IoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OklQQ1Rlc3Rlcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIG1faXBjVGVzdGVyLmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIGlmIChjb25uZWN0aW9uLmln
bm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZygpKQorICAgICAgICByZXR1cm47CisjZW5kaWYK
KwogICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5kbGVkIG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlICcl
cyciLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKTsKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KQEAgLTM0Nyw2ICszNjMsMTcgQEAgYm9vbCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmUKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAgICAgICAg
IHJldHVybiBwYXltZW50Q29vcmRpbmF0b3IoKS5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2RlciwgcmVwbHkpOwogI2VuZGlmCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQ
SSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OklQ
Q1Rlc3Rlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIG1faXBjVGVzdGVyLmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQ
SSkKKyAgICBpZiAoY29ubmVjdGlvbi5pZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3RpbmcoKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKIAogICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5k
bGVkIG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlICclcyciLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkpKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAppbmRleCBlODE3YjdiNjJkMjQ5Nzg3ZGM0YWIxOWVkZWJiMGM0ZjY4NTEyZjJlLi4y
Yjg1MmNiYzIzYmFhNzkyNDRmNzdkZGZhMjBjNmQ4OWFmMzNmMGM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCkBAIC01Niw2ICs1NiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KIAorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkp
CisjaW5jbHVkZSAiSVBDVGVzdGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFBBTCB7CiBjbGFz
cyBTZXNzaW9uSUQ7CiB9CkBAIC00MTUsNiArNDE5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgCiAg
ICAgSGFzaFNldDxVUkw+IG1fYmxvYlVSTHM7CiAgICAgSGFzaFNldDxVUkw+IG1fYmxvYlVSTEhh
bmRsZXM7CisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICBJUENUZXN0ZXIgbV9pcGNU
ZXN0ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCA1ZTI1NmQ4MzliZGU0OTJhZWRlOWI3
NGY1NGRjZjIxOWZmNGI2ODEzLi41MzFjZDkwMzIwZTU4MTgyZTA5MGM2MzlhNjhmNmJkYmMzZGJi
MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtODc1
LDYgKzg3NSwxMyBAQCB2b2lkIENvbm5lY3Rpb246OmFkZE1lc3NhZ2VPYnNlcnZlcihjb25zdCBN
ZXNzYWdlT2JzZXJ2ZXImIG9ic2VydmVyKQogewogICAgIG1fbWVzc2FnZU9ic2VydmVycy5hcHBl
bmQob2JzZXJ2ZXIpOwogfQorCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNz
YWdlRm9yVGVzdGluZyhzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJiBkZWNvZGVyKQoreworICAg
IG1fY29ubmVjdGlvblF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGRlY29kZXIgPSBXVEZNb3ZlKGRlY29kZXIpXSgpIG11dGFibGUgeworICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5wcm9jZXNzSW5jb21pbmdNZXNzYWdlKFdURk1vdmUoZGVjb2RlcikpOworICAg
IH0pOworfQogI2VuZGlmCiAKIHZvaWQgQ29ubmVjdGlvbjo6cG9zdENvbm5lY3Rpb25EaWRDbG9z
ZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSgpCkBAIC0xMDU3LDcgKzEwNjQsOCBAQCB2b2lkIENvbm5l
Y3Rpb246OmRpc3BhdGNoTWVzc2FnZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBSZWNlaXZlck5hbWU6OkFzeW5jUmVwbHkpIHsKICAg
ICAgICAgYXV0byBoYW5kbGVyID0gdGFrZUFzeW5jUmVwbHlIYW5kbGVyKCp0aGlzLCBkZWNvZGVy
LmRlc3RpbmF0aW9uSUQoKSk7CiAgICAgICAgIGlmICghaGFuZGxlcikgewotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBpZiAoIW1faWdub3JlSW52YWxpZE1l
c3NhZ2VGb3JUZXN0aW5nKQorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGhhbmRsZXIoJmRlY29kZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDg5MmU3NTY0OWI1
OGU0YWY4MDZlOGMzNjAxZDQ5ZjVjYzRhNmExYTcuLjYwYTRkOTg0MmM4MDMwMTNhZTI0NDdjZmUy
OTYzNDc5ZTkxMjE1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgK
QEAgLTMyMiw2ICszMjIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldElnbm9yZUludmFsaWRN
ZXNzYWdlRm9yVGVzdGluZygpIHsgbV9pZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3RpbmcgPSB0
cnVlOyB9CiAgICAgYm9vbCBpZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3RpbmcoKSBjb25zdCB7
IHJldHVybiBtX2lnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZzsgfQorICAgIHZvaWQgZGlz
cGF0Y2hJbmNvbWluZ01lc3NhZ2VGb3JUZXN0aW5nKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYm
KTsKICNlbmRpZgogCiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoTWVz
c2FnZVJlY2VpdmVyJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EZWNvZGVyLmNwcAppbmRleCAxMzMzNjQ3MzRiODBlN2FjMWNhMzI4ZTUyMGVm
ODY3NmI0YWM3MzBlLi4zNmIzZWEzY2ZlNjliYmFiNzU3ZWY1MDFhZDMwOGFkNTQyOWNlOThmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcApAQCAtNDcsMzIgKzQ3LDMyIEBA
IHN0YXRpYyBjb25zdCB1aW50OF90KiBjb3B5QnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlclNpemUpCiAgICAgcmV0dXJuIGJ1ZmZlckNvcHk7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiBEZWNvZGVyOjpjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBz
aXplX3QgYnVmZmVyU2l6ZSwgdm9pZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50OF90
Kiwgc2l6ZV90KSwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudHMpCitzdGQ6OnVuaXF1
ZV9wdHI8RGVjb2Rlcj4gRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6
ZV90IGJ1ZmZlclNpemUsIFZlY3RvcjxBdHRhY2htZW50PiYmIGF0dGFjaG1lbnRzKQogewogICAg
IEFTU0VSVChidWZmZXIpOwogICAgIGlmIChVTkxJS0VMWSghYnVmZmVyKSkgewogICAgICAgICBS
RUxFQVNFX0xPR19GQVVMVChJUEMsICJEZWNvZGVyOjpjcmVhdGUoKSBjYWxsZWQgd2l0aCBhIG51
bGwgYnVmZmVyIChidWZmZXJTaXplOiAlbHUpIiwgYnVmZmVyU2l6ZSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KKyAgICByZXR1cm4gRGVjb2Rlcjo6Y3JlYXRlKGNvcHlCdWZmZXIo
YnVmZmVyLCBidWZmZXJTaXplKSwgYnVmZmVyU2l6ZSwgW10oY29uc3QgdWludDhfdCogcHRyLCBz
aXplX3QpIHsgZmFzdEZyZWUoY29uc3RfY2FzdDx1aW50OF90Kj4ocHRyKSk7IH0sIFdURk1vdmUo
YXR0YWNobWVudHMpKTsgLy8gTk9MSU5UCit9CiAKLSAgICBjb25zdCB1aW50OF90KiBidWZmZXJD
b3B5OwotICAgIGlmICghYnVmZmVyRGVhbGxvY2F0b3IpIHsKLSAgICAgICAgYnVmZmVyQ29weSA9
IGNvcHlCdWZmZXIoYnVmZmVyLCBidWZmZXJTaXplKTsKLSAgICAgICAgQVNTRVJUKGJ1ZmZlckNv
cHkpOwotICAgICAgICBpZiAoVU5MSUtFTFkoIWJ1ZmZlckNvcHkpKQotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfSBlbHNlCi0gICAgICAgIGJ1ZmZlckNvcHkgPSBidWZmZXI7Ci0K
LSAgICBhdXRvIGRlY29kZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4obmV3IERlY29kZXIo
YnVmZmVyQ29weSwgYnVmZmVyU2l6ZSwgYnVmZmVyRGVhbGxvY2F0b3IsIFdURk1vdmUoYXR0YWNo
bWVudHMpKSk7CitzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIEJ1ZmZlckRlYWxsb2NhdG9yJiYg
YnVmZmVyRGVhbGxvY2F0b3IsIFZlY3RvcjxBdHRhY2htZW50PiYmIGF0dGFjaG1lbnRzKQorewor
ICAgIEFTU0VSVChidWZmZXIpOworICAgIGlmIChVTkxJS0VMWSghYnVmZmVyKSkgeworICAgICAg
ICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJEZWNvZGVyOjpjcmVhdGUoKSBjYWxsZWQgd2l0aCBh
IG51bGwgYnVmZmVyIChidWZmZXJTaXplOiAlbHUpIiwgYnVmZmVyU2l6ZSk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKyAgICBhdXRvIGRlY29kZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4obmV3IERlY29kZXIoYnVmZmVyLCBidWZmZXJTaXplLCBXVEZNb3ZlKGJ1ZmZlckRl
YWxsb2NhdG9yKSwgV1RGTW92ZShhdHRhY2htZW50cykpKTsKICAgICByZXR1cm4gZGVjb2Rlci0+
aXNWYWxpZCgpID8gV1RGTW92ZShkZWNvZGVyKSA6IG51bGxwdHI7CiB9CiAKLURlY29kZXI6OkRl
Y29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgdm9pZCAoKmJ1
ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSwgVmVjdG9yPEF0dGFjaG1l
bnQ+JiYgYXR0YWNobWVudHMpCitEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZl
ciwgc2l6ZV90IGJ1ZmZlclNpemUsIEJ1ZmZlckRlYWxsb2NhdG9yJiYgYnVmZmVyRGVhbGxvY2F0
b3IsIFZlY3RvcjxBdHRhY2htZW50PiYmIGF0dGFjaG1lbnRzKQogICAgIDogbV9idWZmZXIgeyBi
dWZmZXIgfQogICAgICwgbV9idWZmZXJQb3MgeyBtX2J1ZmZlciB9CiAgICAgLCBtX2J1ZmZlckVu
ZCB7IG1fYnVmZmVyICsgYnVmZmVyU2l6ZSB9Ci0gICAgLCBtX2J1ZmZlckRlYWxsb2NhdG9yIHsg
YnVmZmVyRGVhbGxvY2F0b3IgfQorICAgICwgbV9idWZmZXJEZWFsbG9jYXRvciB7IFdURk1vdmUo
YnVmZmVyRGVhbGxvY2F0b3IpIH0KICAgICAsIG1fYXR0YWNobWVudHMgeyBXVEZNb3ZlKGF0dGFj
aG1lbnRzKSB9CiB7CiAgICAgaWYgKFVOTElLRUxZKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihtX2J1ZmZlcikgJSBhbGlnbm9mKHVpbnQ2NF90KSkpIHsKQEAgLTEwNCwxMiArMTA0LDcgQEAg
RGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1TaXpl
LCB1aW50NjRfdCBkZXN0aW5hdGlvbkkKIERlY29kZXI6On5EZWNvZGVyKCkKIHsKICAgICBBU1NF
UlQobV9idWZmZXIpOwotCi0gICAgaWYgKG1fYnVmZmVyRGVhbGxvY2F0b3IpCi0gICAgICAgIG1f
YnVmZmVyRGVhbGxvY2F0b3IobV9idWZmZXIsIG1fYnVmZmVyRW5kIC0gbV9idWZmZXIpOwotICAg
IGVsc2UKLSAgICAgICAgZmFzdEZyZWUoY29uc3RfY2FzdDx1aW50OF90Kj4obV9idWZmZXIpKTsK
LQorICAgIG1fYnVmZmVyRGVhbGxvY2F0b3IobV9idWZmZXIsIG1fYnVmZmVyRW5kIC0gbV9idWZm
ZXIpOwogICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGRpc3Bvc2Ugb2YgdGhlIG1hY2ggcG9ydHMg
aW4gY2FzZXMgb2YgZmFpbHVyZS4KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvRGVjb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5o
CmluZGV4IDcwNTM1YWZiNWM5ZGVlYjI2NzJhMDYwNzViOWE4Y2ExNWQ3OTk0NDIuLmE5MzU2ZWEx
MDhiYWEzNjBiOGVmOTM5YjBhNDVlM2JiYWFjMjNhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIK
ICNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNp
bmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00
Niw3ICs0Nyw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4gc3RydWN0IEhhc01vZGVy
bkRlY29kZXI7CiBjbGFzcyBEZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZShjb25z
dCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxv
Y2F0b3IpKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBWZWN0b3I8QXR0YWNobWVudD4mJik7Cisg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGUoY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYpOworICAgIHVz
aW5nIEJ1ZmZlckRlYWxsb2NhdG9yID0gRnVuY3Rpb248dm9pZChjb25zdCB1aW50OF90Kiwgc2l6
ZV90KT47CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGUoY29uc3Qg
dWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgQnVmZmVyRGVhbGxvY2F0b3ImJiwg
VmVjdG9yPEF0dGFjaG1lbnQ+JiYpOwogICAgIERlY29kZXIoY29uc3QgdWludDhfdCogc3RyZWFt
LCBzaXplX3Qgc3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAKICAgICB+RGVj
b2RlcigpOwpAQCAtMTM5LDcgKzE0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNJUENEZWNvZGVyID0gdHJ1ZTsKIAogcHJpdmF0ZToKLSAgICBEZWNvZGVyKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9j
YXRvcikoY29uc3QgdWludDhfdCosIHNpemVfdCksIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKKyAg
ICBEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIEJ1ZmZl
ckRlYWxsb2NhdG9yJiYsIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKIAogICAgIGJvb2wgYWxpZ25C
dWZmZXJQb3NpdGlvbihzaXplX3QgYWxpZ25tZW50LCBzaXplX3QpOwogICAgIGJvb2wgYnVmZmVy
SXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QgYWxpZ25tZW50LCBzaXplX3QpIGNvbnN0OwpA
QCAtMTQ3LDcgKzE1MCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXI7
CiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXJQb3M7CiAgICAgY29uc3QgdWludDhfdCogbV9i
dWZmZXJFbmQ7Ci0gICAgdm9pZCAoKm1fYnVmZmVyRGVhbGxvY2F0b3IpKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpOworICAgIEJ1ZmZlckRlYWxsb2NhdG9yIG1fYnVmZmVyRGVhbGxvY2F0b3I7CiAK
ICAgICBWZWN0b3I8QXR0YWNobWVudD4gbV9hdHRhY2htZW50czsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCmluZGV4IDYzOGNm
MzBmYjFlOWViNGFjNTg1Mjg5OWZmMjNkNzYxNmY0ZjkwODkuLmEzYTVmNDk5NTZiZjE1Y2Y4MGRm
MzI3MjhlMTMzN2I0ZGU5OTg5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAgLTQyNiw3ICs0MjYsNyBAQCBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hl
YWRlcl90KiBoZWFkZXIsCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQog
Ci0gICAgICAgIHJldHVybiBEZWNvZGVyOjpjcmVhdGUoYm9keSwgYm9keVNpemUsIG51bGxwdHIs
IFZlY3RvcjxBdHRhY2htZW50PiB7IH0pOworICAgICAgICByZXR1cm4gRGVjb2Rlcjo6Y3JlYXRl
KGJvZHksIGJvZHlTaXplLCB7IH0pOwogICAgIH0KIAogICAgIG1hY2hfbXNnX2JvZHlfdCogYm9k
eSA9IHJlaW50ZXJwcmV0X2Nhc3Q8bWFjaF9tc2dfYm9keV90Kj4oaGVhZGVyICsgMSk7CkBAIC00
ODcsNyArNDg3LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNz
YWdlRGVjb2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVyLAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gRGVjb2Rlcjo6Y3JlYXRlKG1lc3NhZ2VCb2R5LCBt
ZXNzYWdlQm9keVNpemUsIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKKyAgICByZXR1
cm4gRGVjb2Rlcjo6Y3JlYXRlKG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIFdURk1vdmUo
YXR0YWNobWVudHMpKTsKIH0KIAogLy8gVGhlIHJlY2VpdmUgYnVmZmVyIHNpemUgc2hvdWxkIGFs
d2F5cyBpbmNsdWRlIHRoZSBtYXhpbXVtIHRyYWlsZXIgc2l6ZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggZjIyMWY5MDlm
ZTRlNDkwY2FmNmZmMGQ0ODZiODlmNzQzMDNlYjE3Yi4uNzQ2ZjNmNmZkN2ZiYmEwOGJjMDk1MTE0
N2MwNjIzNjRhYmUyMWRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
dW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
dW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTI0NSw3ICsyNDUsNyBAQCBib29sIENvbm5lY3Rp
b246OnByb2Nlc3NNZXNzYWdlKCkKICAgICBpZiAobWVzc2FnZUluZm8uaXNCb2R5T3V0T2ZMaW5l
KCkpCiAgICAgICAgIG1lc3NhZ2VCb2R5ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob29s
TWVzc2FnZUJvZHktPmRhdGEoKSk7CiAKLSAgICBhdXRvIGRlY29kZXIgPSBEZWNvZGVyOjpjcmVh
dGUobWVzc2FnZUJvZHksIG1lc3NhZ2VJbmZvLmJvZHlTaXplKCksIG51bGxwdHIsIFdURk1vdmUo
YXR0YWNobWVudHMpKTsKKyAgICBhdXRvIGRlY29kZXIgPSBEZWNvZGVyOjpjcmVhdGUobWVzc2Fn
ZUJvZHksIG1lc3NhZ2VJbmZvLmJvZHlTaXplKCksIFdURk1vdmUoYXR0YWNobWVudHMpKTsKICAg
ICBBU1NFUlQoZGVjb2Rlcik7CiAgICAgaWYgKCFkZWNvZGVyKQogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlv
bldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5j
cHAKaW5kZXggYWZmMzlmYzEwMmVkMDQ3MTIxZjNmMWMyYWZhODg5ZTA4MjIyODE5OC4uZGE4ZDdm
MGZiOGVjMDdmNThlNjgxZDhhYjg5MmE4Mjk3ZDM2ODhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBA
IHZvaWQgQ29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcigpCiAKICAgICAgICAgaWYgKCFtX3Jl
YWRCdWZmZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgbWVzc2FnZSwg
bGV0J3MgZGlzcGF0Y2ggaXQuCi0gICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBEZWNvZGVyOjpj
cmVhdGUobV9yZWFkQnVmZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVyLnNpemUoKSwgbnVsbHB0ciwg
eyB9KTsKKyAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IERlY29kZXI6OmNyZWF0ZShtX3JlYWRC
dWZmZXIuZGF0YSgpLCBtX3JlYWRCdWZmZXIuc2l6ZSgpLCB7IH0pOwogICAgICAgICAgICAgQVNT
RVJUKGRlY29kZXIpOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyKQogICAgICAgICAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhYmEwYjA4
ODc3YzQ3MmE1MDcxZmYzYWEzZDg4MDEwMmY1N2M4OWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3BwCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklQQ1Rlc3Rlci5oIgorCisjaWYg
RU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiRGVjb2Rlci5oIgorCisjaW5jbHVkZSA8ZGxmY24uaD4KKyNpbmNsdWRlIDxzdGRpby5oPgor
I2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRv
bU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgorCisv
LyBUaGUgdGVzdGVyIEFQSS4KK2V4dGVybiAiQyIgeworLy8gUmV0dXJucyAwIGlmIGRyaXZlciBz
aG91bGQgY29udGludWUuCit0eXBlZGVmIGludCAoKldLTWVzc2FnZVRlc3RTZW5kTWVzc2FnZUZ1
bmMpKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzeiwgdm9pZCogY29udGV4dCk7Cit0eXBl
ZGVmIHZvaWQgKCpXS01lc3NhZ2VUZXN0RHJpdmVyRnVuYykoV0tNZXNzYWdlVGVzdFNlbmRNZXNz
YWdlRnVuYyBzZW5kTWVzc2FnZUZ1bmMsIHZvaWQqIGNvbnRleHQpOworfQorCituYW1lc3BhY2Ug
eworc3RydWN0IFNlbmRNZXNzYWdlQ29udGV4dCB7CisgICAgSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uOworICAgIHN0ZDo6YXRvbWljPGJvb2w+JiBzaG91bGRTdG9wOworfTsKK30KKworZXh0
ZXJuICJDIiB7CisKK3N0YXRpYyB2b2lkIGRlZmF1bHRUZXN0RHJpdmVyKFdLTWVzc2FnZVRlc3RT
ZW5kTWVzc2FnZUZ1bmMgc2VuZE1lc3NhZ2VGdW5jLCB2b2lkKiBjb250ZXh0KQoreworICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhKDEwMDApOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDsg
aSsrKSB7CisgICAgICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSk7CisgICAgICAgIGludCByZXQgPSBzZW5kTWVzc2FnZUZ1bmMoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKHJldCkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQgc2VuZFRlc3RNZXNzYWdlKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCB2b2lkKiBjb250ZXh0KQoreworICAgIGF1dG8g
bWVzc2FnZUNvbnRleHQgPSByZWludGVycHJldF9jYXN0PFNlbmRNZXNzYWdlQ29udGV4dCo+KGNv
bnRleHQpOworICAgIGlmIChtZXNzYWdlQ29udGV4dC0+c2hvdWxkU3RvcCkKKyAgICAgICAgcmV0
dXJuIDE7CisgICAgYXV0byYgdGVzdGVkQ29ubmVjdGlvbiA9IG1lc3NhZ2VDb250ZXh0LT5jb25u
ZWN0aW9uOworICAgIGlmICghdGVzdGVkQ29ubmVjdGlvbi5pc1ZhbGlkKCkpCisgICAgICAgIHJl
dHVybiAxOworICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7CisgICAgYXV0byBkZWNvZGVy
ID0gSVBDOjpEZWNvZGVyOjpjcmVhdGUoZGF0YSwgc2l6ZSwgWyZzZW1hcGhvcmVdIChjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSB7IHNlbWFwaG9yZS5zaWduYWwoKTsgfSwgeyB9KTsgLy8gTk9MSU5U
CisgICAgaWYgKGRlY29kZXIpIHsKKyAgICAgICAgdGVzdGVkQ29ubmVjdGlvbi5kaXNwYXRjaElu
Y29taW5nTWVzc2FnZUZvclRlc3RpbmcoV1RGTW92ZShkZWNvZGVyKSk7CisgICAgICAgIHNlbWFw
aG9yZS53YWl0KCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdGF0aWMgV0tNZXNzYWdlVGVzdERyaXZlckZ1bmMgbWVzc2FnZVRlc3REcml2
ZXIoU3RyaW5nJiYgZHJpdmVyTmFtZSkKK3sKKyAgICBpZiAoZHJpdmVyTmFtZS5pc0VtcHR5KCkg
fHwgZHJpdmVyTmFtZSA9PSAiZGVmYXVsdCIpCisgICAgICAgIGRyaXZlck5hbWUgPSBnZXRlbnYo
IldFQktJVF9NRVNTQUdFX1RFU1RfREVGQVVMVF9EUklWRVIiKTsKKyAgICBpZiAoZHJpdmVyTmFt
ZS5pc0VtcHR5KCkgfHwgZHJpdmVyTmFtZSA9PSAiZGVmYXVsdCIpCisgICAgICAgIHJldHVybiBk
ZWZhdWx0VGVzdERyaXZlcjsKKyAgICBhdXRvIHRlc3REcml2ZXIgPSByZWludGVycHJldF9jYXN0
PFdLTWVzc2FnZVRlc3REcml2ZXJGdW5jPihkbHN5bShSVExEX0RFRkFVTFQsIGRyaXZlck5hbWUu
dXRmOCgpLmRhdGEoKSkpOworICAgIFJFTEVBU0VfQVNTRVJUKHRlc3REcml2ZXIpOworICAgIHJl
dHVybiB0ZXN0RHJpdmVyOworfQorCitzdGF0aWMgdm9pZCBydW5NZXNzYWdlVGVzdGluZyhJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHN0ZDo6YXRvbWljPGJvb2w+JiBzaG91bGRTdG9wLCBT
dHJpbmcmJiBkcml2ZXJOYW1lKQoreworICAgIGNvbm5lY3Rpb24uc2V0SWdub3JlSW52YWxpZE1l
c3NhZ2VGb3JUZXN0aW5nKCk7CisgICAgU2VuZE1lc3NhZ2VDb250ZXh0IGNvbnRleHQgeyBjb25u
ZWN0aW9uLCBzaG91bGRTdG9wIH07CisgICAgYXV0byBkcml2ZXIgPSBtZXNzYWdlVGVzdERyaXZl
cihXVEZNb3ZlKGRyaXZlck5hbWUpKTsKKyAgICBkcml2ZXIoc2VuZFRlc3RNZXNzYWdlLCAmY29u
dGV4dCk7Cit9CisKK0lQQ1Rlc3Rlcjo6SVBDVGVzdGVyKCkgPSBkZWZhdWx0OworCitJUENUZXN0
ZXI6On5JUENUZXN0ZXIoKQoreworICAgIHN0b3BJZk5lZWRlZCgpOworfQorCit2b2lkIElQQ1Rl
c3Rlcjo6c3RhcnRNZXNzYWdlVGVzdGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0
cmluZyYmIGRyaXZlck5hbWUpCit7CisgICAgaWYgKCFtX3Rlc3RRdWV1ZSkKKyAgICAgICAgbV90
ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiSVBDIHRlc3Rpbmcgd29yayBxdWV1ZSIpOwor
ICAgIG1fdGVzdFF1ZXVlLT5kaXNwYXRjaChbY29ubmVjdGlvbiA9IFJlZiB7IGNvbm5lY3Rpb24g
fSwgJnNob3VsZFN0b3AgPSBtX3Nob3VsZFN0b3AsIGRyaXZlck5hbWUgPSBXVEZNb3ZlKGRyaXZl
ck5hbWUpXSgpIG11dGFibGUgeworICAgICAgICBydW5NZXNzYWdlVGVzdGluZyhjb25uZWN0aW9u
LCBzaG91bGRTdG9wLCBXVEZNb3ZlKGRyaXZlck5hbWUpKTsKKyAgICB9KTsKK30KKwordm9pZCBJ
UENUZXN0ZXI6OnN0b3BNZXNzYWdlVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIHN0b3BJZk5lZWRlZCgpOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7Cit9CisKK3ZvaWQgSVBDVGVzdGVyOjpzdG9wSWZOZWVkZWQoKQoreworICAgIGlm
IChtX3Rlc3RRdWV1ZSkgeworICAgICAgICBtX3Nob3VsZFN0b3AgPSB0cnVlOworICAgICAgICBt
X3Rlc3RRdWV1ZS0+ZGlzcGF0Y2hTeW5jKFtdIHsgfSk7CisgICAgICAgIG1fdGVzdFF1ZXVlID0g
bnVsbHB0cjsKKyAgICB9Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9JUENUZXN0ZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ0OTkwOTM1YmQ1NTFkNGVlYjU4MzU0M2UxMmVjZmQzYjg0NzE4NWUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaApAQCAtMCww
ICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSVBDX1RF
U1RJTkdfQVBJKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8YXRv
bWljPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIElQQ1Rlc3RlciBmaW5hbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Citw
dWJsaWM6CisgICAgSVBDVGVzdGVyKCk7CisgICAgfklQQ1Rlc3RlcigpOworCisgICAgLy8gSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgYm9vbCBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVm
PElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKK3ByaXZhdGU6CisgICAgLy8gTWVzc2FnZXMuCisgICAg
dm9pZCBzdGFydE1lc3NhZ2VUZXN0aW5nKElQQzo6Q29ubmVjdGlvbiYsIFN0cmluZyYmIGRyaXZl
ck5hbWUpOworICAgIHZvaWQgc3RvcE1lc3NhZ2VUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4pOworCisgICAgdm9pZCBzdG9wSWZOZWVkZWQoKTsKKworICAgIFJlZlB0cjxXb3JrUXVl
dWU+IG1fdGVzdFF1ZXVlOworICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fc2hvdWxkU3RvcCB7IGZh
bHNlIH07Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvSVBDVGVzdGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVy
Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3NWJlODVjMGM4OWE0MDYwODY4ZmNkOWFkNjFlMjg4
MjgwMWYyMTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0
ZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKworbWVzc2FnZXMg
LT4gSVBDVGVzdGVyIE5vdFJlZkNvdW50ZWQgeworICAgIFN0YXJ0TWVzc2FnZVRlc3RpbmcoU3Ry
aW5nIGRyaXZlck5hbWUpIFdhbnRzQ29ubmVjdGlvbgorICAgIFN0b3BNZXNzYWdlVGVzdGluZygp
IC0+ICgpIFN5bmNocm9ub3VzCit9CisKKworI2VuZGlmClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggOGUzYWQxOWM5ZjU3YTVkZjQ4NjA3YjBmM2Y2MzM0NjkwMDI1
MjBiNy4uOWIyODVhZWE1OGU5ODZiYzliZTFjNjc4YTE4NDI0MTVjZjdkMTQ2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC0yMTcsNiArMjE3LDcgQEAgU2hhcmVkL0VkaXRvclN0YXRlLmNwcAogU2hhcmVkL0Zv
bnRJbmZvLmNwcAogU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwCiBTaGFyZWQvSW5zcGVjdG9yRXh0
ZW5zaW9uVHlwZXMuY3BwCitTaGFyZWQvSVBDVGVzdGVyLmNwcAogU2hhcmVkL0xheWVyVHJlZUNv
bnRleHQuY3BwCiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCiBTaGFyZWQvTmF2aWdhdGlvbkFj
dGlvbkRhdGEuY3BwCkBAIC04MzcsNiArODM4LDcgQEAgV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKIAogV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhS
U3lzdGVtUHJveHkuY3BwCiAKK0lQQ1Rlc3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAKIE5ldHdvcmtC
cm9hZGNhc3RDaGFubmVsUmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSVENEYXRhQ2hhbm5l
bFJlbW90ZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSVENEYXRhQ2hhbm5lbFJlbW90ZU1h
bmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHAKaW5kZXggZWQxNDQ0
OWNiZjNlNDdjNTkwMmY5YzllNGVjNWRhOWFmYmQyODAxMS4uMmM3OTEwZGQ5MzNmZDRkZmEyMDg1
ZjA4YjUyZGQ4NGIyMjk3MjIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAg
UmVmUHRyPEFQSTo6RGF0YT4gZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlKGNvbnN0IFNlc3Npb25T
dGF0ZSYgc2Vzc2lvblN0YXRlKQogCiBib29sIGRlY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YVNpemUsIFNlc3Npb25TdGF0ZSYgc2Vzc2lvblN0
YXRlKQogewotICAgIGF1dG8gZGVjb2RlciA9IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGRhdGEsIGRh
dGFTaXplLCBudWxscHRyLCBWZWN0b3I8SVBDOjpBdHRhY2htZW50PigpKTsKKyAgICBhdXRvIGRl
Y29kZXIgPSBJUEM6OkRlY29kZXI6OmNyZWF0ZShkYXRhLCBkYXRhU2l6ZSwgeyB9KTsKICAgICBp
ZiAoIWRlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDc0MjRmMDhlNWVlZmJlMzM2MTc2OTg1ZWRi
MGMwM2ZlY2ExZjUyOWYuLjJlMTU3ZTQzZjI1OGMwNDRlOTRjYzQ0MTk2NzU2ZTljZjBmZGVlNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTE0Nyw2
ICsxNDcsMTAgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisjaW5jbHVkZSAiSVBDVGVzdGVyTWVz
c2FnZXMuaCIKKyNlbmRpZgorCiAjZGVmaW5lIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HKGNo
YW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhjaGFubmVsLCAiJXAgLSBXZWJQcm9jZXNzUG9v
bDo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIFdFQlBST0NFU1NQT09MX1JF
TEVBU0VfTE9HX1NUQVRJQyhjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0coY2hhbm5lbCwg
IldlYlByb2Nlc3NQb29sOjoiIGZtdCwgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgV0VCUFJPQ0VT
U1BPT0xfUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VS
Uk9SKGNoYW5uZWwsICIlcCAtIFdlYlByb2Nlc3NQb29sOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FS
R1NfXykKQEAgLTI0Miw2ICsyNDYsOSBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wo
QVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAjZW5kaWYKIAog
ICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUHJvY2Vzc1Bvb2w6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgKnRoaXMpOworI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisgICAg
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpJUENUZXN0ZXI6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9pcGNUZXN0ZXIpOworI2VuZGlmCiAKICAgICAvLyBOT1RFOiBUaGVzZSBzdWItb2Jq
ZWN0cyBtdXN0IGJlIGluaXRpYWxpemVkIGFmdGVyIG1fbWVzc2FnZVJlY2VpdmVyTWFwLi4KICAg
ICBhZGRTdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggYTk0MzhhZTNkYjFiYWM0NTM1ZjFl
OTJmZTIwZWJjMWY4ODlhNzI0MC4uYjgzNDIxZDE2OWE4OTZjMjRkZTBhOTg0ODFmNjNhMTk1ZmJl
Mjk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC03NSw2
ICs3NSwxMSBAQCBPQkpDX0NMQVNTIFdLV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVyOwog
I2luY2x1ZGUgPHBhbC9zeXN0ZW0vU3lzdGVtU2xlZXBMaXN0ZW5lci5oPgogI2VuZGlmCiAKKwor
I2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisjaW5jbHVkZSAiSVBDVGVzdGVyLmgiCisjZW5k
aWYKKwogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBBdXRvbWF0aW9uQ2xpZW50OwogY2xhc3MgRG93
bmxvYWRDbGllbnQ7CkBAIC03OTgsNiArODAzLDkgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6UG93ZXJPYnNlcnZlcj4gbV9wb3dlck9ic2VydmVyOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQQUw6OlN5c3RlbVNsZWVwTGlzdGVuZXI+IG1fc3lzdGVtU2xlZXBMaXN0ZW5l
cjsKICNlbmRpZgorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisgICAgSVBDVGVzdGVyIG1f
aXBjVGVzdGVyOworI2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggMTE4MWNhN2Q2NThiNDk0
NjUzZmY4MGE2MjIwOTU1MTQ5YTMzNzg4OC4uZDA4YzdjNjE4NWFhMzgwYTIxZTdkNWNhMDE1MTRl
MjQ4NTM1YzdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCkBAIC00NDcsNyArNDQ3LDcgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6OnNob3VsZFNlbmRQ
ZW5kaW5nTWVzc2FnZShjb25zdCBQZW5kaW5nTWVzc2FnZSYgbWVzc2FnZSkKICAgICBpZiAobWVz
c2FnZS5lbmNvZGVyLT5tZXNzYWdlTmFtZSgpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2Vf
TG9hZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaCkgewogICAgICAgICBhdXRvIGJ1ZmZl
ciA9IG1lc3NhZ2UuZW5jb2Rlci0+YnVmZmVyKCk7CiAgICAgICAgIGF1dG8gYnVmZmVyU2l6ZSA9
IG1lc3NhZ2UuZW5jb2Rlci0+YnVmZmVyU2l6ZSgpOwotICAgICAgICBhdXRvIGRlY29kZXIgPSBJ
UEM6OkRlY29kZXI6OmNyZWF0ZShidWZmZXIsIGJ1ZmZlclNpemUsIG51bGxwdHIsIHsgfSk7Cisg
ICAgICAgIGF1dG8gZGVjb2RlciA9IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGJ1ZmZlciwgYnVmZmVy
U2l6ZSwgeyB9KTsKICAgICAgICAgQVNTRVJUKGRlY29kZXIpOwogICAgICAgICBpZiAoIWRlY29k
ZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAppbmRleCA3OWU3ZjQ0MTdhYTFjYzM0MTg5MDE2ODQ0MjVkZjdjOWQzN2YyYTdmLi4xNzIx
ZThiZWE1NDBiNjgxOGFhYjE0Njk2OTgzYzA3MmFmMjhhZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKQEAgLTMzLDYgKzMzLDEwIEBACiAjaW5jbHVkZSAiV2ViQXV0aG5Qcm9j
ZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmg+CiAK
KyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorI2luY2x1ZGUgIklQQ1Rlc3Rlck1lc3NhZ2Vz
LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIApAQCAtNjcsNiArNzEsMjkgQEAgdm9pZCBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGMKICAgICBDUkFT
SCgpOwogfQogCitib29sIFdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQoreworI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpJUENUZXN0ZXI6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSkgeworICAgICAgICBtX2lwY1Rlc3Rlci5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIFdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlz
cGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK3sKKyNp
ZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSBNZXNzYWdlczo6SVBDVGVzdGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsK
KyAgICAgICAgbV9pcGNUZXN0ZXIuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRp
ZgorICAgIHJldHVybiBmYWxzZTsKK30KKworCiB2b2lkIFdlYkF1dGhuQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6bWFrZUNyZWRlbnRpYWwoVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYmIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewogICAgIGhhbmRs
ZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBudWxscHRyLCBXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgc3RkOjpudWxs
b3B0LCB7IH0sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RG
TW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vz
cy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0
aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDI3M2I0NjE1
NGMyYTU0NWNjNDRiYWE3MTA4YzI3ODBiY2ZiMDE3MWUuLjQ5ZmI2NDE0N2NhYTMyY2IwMThhZGMy
Y2QwMTdlMTQzZGQ4ZTM1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9j
ZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zMiw2
ICszMiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyNp
bmNsdWRlICJJUENUZXN0ZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVt
IGNsYXNzIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50Owogc3RydWN0IEF1dGhlbnRpY2F0b3JSZXNw
b25zZURhdGE7CkBAIC02Nyw2ICs3MSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2xvc2Uo
SVBDOjpDb25uZWN0aW9uJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
KyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOworCisgICAgYm9vbCBkaXNwYXRjaE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAgYm9vbCBkaXNwYXRj
aFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJ
UEM6OkVuY29kZXI+Jik7CiAKICAgICAvLyBSZWNlaXZlcnMuCiAgICAgdm9pZCBtYWtlQ3JlZGVu
dGlhbChWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zJiYsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29t
cGxldGlvbkhhbmRsZXImJik7CkBAIC03Niw5ICs4NCwxMyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBoYW5kbGVSZXF1ZXN0KFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEmJiwgUmVxdWVzdENv
bXBsZXRpb25IYW5kbGVyJiYpOwogCisKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb247CiAgICAgUmVmPFdlYkF1dGhuUHJvY2Vzcz4gbV9XZWJBdXRoblByb2Nlc3M7CiAgICAg
Y29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsK
KyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIElQQ1Rlc3RlciBtX2lwY1Rlc3RlcjsK
KyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYWM3M2E5NTM2YTg5MjAyMmUzM2ZhNmMx
NDE3Mjg1OWRlMmQ1ZjRlYy4uZTk4ZDBhNjI4NTI0YTkwMDMwYWMzYjM0N2M0NjI1NTBmYjk0M2Y3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0
aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MjIsNyArMjIsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAotbWVzc2FnZXMgLT4gV2Vi
QXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzIHsKK21lc3NhZ2VzIC0+IFdlYkF1dGhuQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7CiAKICAgICBNYWtlQ3JlZGVu
dGlhbChWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUp
IC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRhLCBlbnVt
OmludCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBzdHJ1Y3Qg
V2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCiAgICAgR2V0QXNzZXJ0aW9u
KFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAo
c3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQg
V2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWRiNTYxM2Y4ZDZjMDg4Y2FjNzE2
ZDA4NTdhODc2MDk5ZjBiYzJjYy4uODczMjIzMGJkMDg5ZjhiMmJhZDgxMDA3OTJlMGUyYWY5MWVm
NDBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMzgyLDYgKzEzODIsNyBAQAogCQk3QjczMTI0MjI1Q0M4NTI1MDAzQjI3OTYgLyog
U3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM5MjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0
aW9uRW5jb2Rlci5oICovOyB9OwogCQk3QkFCMTExMDI1REQwMkIzMDA4RkM0NzkgLyogU2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0JBQjExMEYyNUREMDJCMjAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2
ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLzsgfTsKIAkJN0JDRjcwREUyNjE1RDA2RTAwRTRGQjcw
IC8qIFNjb3BlZFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQ0Y3MENCMjYxNDkzNUUwMEU0RkI3
MCAvKiBTY29wZWRSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EubW0gKi87IH07CisJCTdC
RERBMzE5Mjc0N0MwNDAwMDM4NjU5RSAvKiBJUENUZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCRERBMzE4Mjc0N0JGRTAwMDM4NjU5RSAvKiBJ
UENUZXN0ZXIuaCAqLzsgfTsKIAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovOyB9OwogCQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZB
RTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0MxMzVBQTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5m
b3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QzFCQTMzRTFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxQkEzM0MxQTRBMEU2MDAw
NDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCAqLzsgfTsKQEAgLTQ5MzQsNiArNDkzNSw4IEBACiAJ
CTdCQ0Y3MENDMjYxNDkzNUYwMEU0RkI3MCAvKiBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNl
c1JlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNv
dXJjZXNSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRjcwQ0Qy
NjE0OTM1RjAwRTRGQjcwIC8qIFNjb3BlZFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2NvcGVkUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QkNGNzBDRTI2MTQ5MzVGMDBFNEZCNzAgLyogU2NvcGVkV2Vi
R0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZFdlYkdM
UmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QkREQTMxNzI3NDdCRkUwMDAzODY1OUUgLyogSVBDVGVzdGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IElQQ1Rlc3Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRERB
MzE4Mjc0N0JGRTAwMDM4NjU5RSAvKiBJUENUZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSVBDVGVz
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjU3MjU3NEY2NzIwMEU4
NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlv
bnNHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY2ODI1
NzY4MEVGMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjk3Niw2ICs2OTc5LDggQEAKIAkJCQlCQ0NGNkIyMzEy
QzkzRTdBMDA4RjlDMzUgLyogSW1hZ2VPcHRpb25zLmggKi8sCiAJCQkJOTk5QjdFRDgyNTUwRTRB
ODAwRjQ1MEE0IC8qIEluc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcCAqLywKIAkJCQk5OUJFM0Ix
NjI1NDMzQjk0MDBDNjU1MUMgLyogSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCAqLywKKwkJCQk3
QkREQTMxNzI3NDdCRkUwMDAzODY1OUUgLyogSVBDVGVzdGVyLmNwcCAqLywKKwkJCQk3QkREQTMx
ODI3NDdCRkUwMDAzODY1OUUgLyogSVBDVGVzdGVyLmggKi8sCiAJCQkJMUE5MkRDMTIxMkY4QkFC
OTAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHQuY3BwICovLAogCQkJCTFBOTJEQzEwMTJGOEJB
NDYwMDE3QUY2NSAvKiBMYXllclRyZWVDb250ZXh0LmggKi8sCiAJCQkJMkQxMDg3NUUxRDJDNTcz
RTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmNwcCAqLywKQEAgLTEyNjgwLDYgKzEyNjg1LDcg
QEAKIAkJCQlDNUJDRTVERjFDNTA3NjZBMDBDREUzRkEgLyogSW50ZXJhY3Rpb25JbmZvcm1hdGlv
bkF0UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJENEQyQzgxMURGNjBCRjMwMDJFQjEw
QyAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTMxRjYwQTQyNUNDN0RCOTAwQUYxNEY0IC8qIElQQ1NlbWFwaG9yZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJN0JEREEzMTkyNzQ3QzA0MDAwMzg2NTlFIC8qIElQQ1Rlc3Rlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOUI0NzkwOEYyNTMxNTFDQzAwRUMxMUFCIC8qIEpTSVBDQmluZGluZy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzE2NjNFNUIyNEFFQUEyRjAwQzZBM0IyIC8qIExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VYUENDb25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTA5Mzc4MTRGQjEy
OEMwMDExMzhEOSAvKiBMYXllckhvc3RpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKaW5k
ZXggZTFhMzE0MDEyYWQ4YzQwZDc1NGMwYmJjODc5MTkwMDk2ZDRiODdiOS4uNTRmNDY1N2Y4NDA2
NDQxZGZjNDM4ZDhjNTBmZDFiNzk1NmI4NTRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKQEAgLTE4ODYsNyArMTg4Niw3IEBA
IHZvaWQgSlNNZXNzYWdlTGlzdGVuZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IElQQzo6RGVj
b2RlciYgZGVjb2RlcikKICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB0b0pTKG1fY29udGV4dCk7
CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QtPnZtKCkpOwogCi0gICAg
YXV0byBtdXRhYmxlRGVjb2RlciA9IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGRlY29kZXIuYnVmZmVy
KCksIGRlY29kZXIubGVuZ3RoKCksIG51bGxwdHIsIHsgfSk7CisgICAgYXV0byBtdXRhYmxlRGVj
b2RlciA9IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGRlY29kZXIuYnVmZmVyKCksIGRlY29kZXIubGVu
Z3RoKCksIHsgfSk7CiAgICAgYXV0byogZGVzY3JpcHRpb24gPSBqc0Rlc2NyaXB0aW9uRnJvbURl
Y29kZXIoZ2xvYmFsT2JqZWN0LCAqbXV0YWJsZURlY29kZXIpOwogCiAgICAgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSA9IHsgZGVzY3JpcHRpb24gPyB0b1JlZihnbG9iYWxPYmplY3QsIGRlc2NyaXB0
aW9uKSA6IEpTVmFsdWVNYWtlVW5kZWZpbmVkKG1fY29udGV4dCkgfTsKQEAgLTE5MDMsNyArMTkw
Myw3IEBAIHZvaWQgSlNNZXNzYWdlTGlzdGVuZXI6OndpbGxTZW5kTWVzc2FnZShjb25zdCBJUEM6
OkVuY29kZXImIGVuY29kZXIsIE9wdGlvblNldDxJCiAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0g
dG9KUyhtX2NvbnRleHQpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0
LT52bSgpKTsKIAotICAgIGF1dG8gZGVjb2RlciA9IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGVuY29k
ZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpLCBudWxscHRyLCB7IH0pOworICAgIGF1
dG8gZGVjb2RlciA9IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29k
ZXIuYnVmZmVyU2l6ZSgpLCB7IH0pOwogICAgIGF1dG8qIGRlc2NyaXB0aW9uID0ganNEZXNjcmlw
dGlvbkZyb21EZWNvZGVyKGdsb2JhbE9iamVjdCwgKmRlY29kZXIpOwogCiAgICAgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSA9IHsgZGVzY3JpcHRpb24gPyB0b1JlZihnbG9iYWxPYmplY3QsIGRlc2Ny
aXB0aW9uKSA6IEpTVmFsdWVNYWtlVW5kZWZpbmVkKG1fY29udGV4dCkgfTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0ZWYz
NDdlNjZlZTBkYzNkNzhkZjFhNTZjZDhkNGI2MjMyMDhkMGJlLi43NDMwNmZmMDA0MmJmZTEwOTFk
OTVhZmY1Njg1ZDYzZGYxNzdiZTM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTEtMjMg
IEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0
IGluLXByb2Nlc3MgSVBDIG1lc3NhZ2UgdGVzdGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNjc0CisgICAgICAgIDxyZGFyOi8vODQxODkzMTQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFu
IGV4YW1wbGUgbWVzc2FnZSB0ZXN0ZXIgaW52b2NhdGlvbiB0ZXN0LgorCisgICAgICAgICogaXBj
L3N0YXJ0LW1lc3NhZ2UtdGVzdGluZy5odG1sOiBBZGRlZC4KKwogMjAyMS0xMS0xOCAgRnLDqWTD
qXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBOdWxscHRyIGNyYXNoIGlu
IFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OnJhbmdlKCkgdmlhIHByZXZpb3VzU2Vu
dGVuY2VQb3NpdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaXBjL3N0YXJ0LW1lc3NhZ2Ut
dGVzdGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaXBjL3N0YXJ0LW1lc3NhZ2UtdGVzdGluZy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBiMDkzNWE1ZmRmZTQ1ZjJkYjljNzkyMDk4OWNlM2Y3NmRmOTBkYjQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pcGMvc3RhcnQtbWVzc2FnZS10ZXN0aW5nLmh0
bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5u
ZXIgWyBJUENUZXN0aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8Ym9keT4KKzxzY3JpcHQ+Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKK3Zh
ciBkcml2ZXJOYW1lID0ge3R5cGU6ICJTdHJpbmciLCB2YWx1ZTogImRlZmF1bHQifTsKKworZnVu
Y3Rpb24gc3RvcCgpIHsKKyAgICBpZiAod2luZG93LklQQykgeworICAgICAgICBJUEMuc2VuZFN5
bmNNZXNzYWdlKCJHUFUiLCAwLCBJUEMubWVzc2FnZXMuSVBDVGVzdGVyX1N0b3BNZXNzYWdlVGVz
dGluZy5uYW1lLCBbXSk7CisgICAgICAgIElQQy5zZW5kU3luY01lc3NhZ2UoIk5ldHdvcmtpbmci
LCAwLCBJUEMubWVzc2FnZXMuSVBDVGVzdGVyX1N0b3BNZXNzYWdlVGVzdGluZy5uYW1lLCBbXSk7
CisgICAgICAgIElQQy5zZW5kU3luY01lc3NhZ2UoIlVJIiwgMCwgSVBDLm1lc3NhZ2VzLklQQ1Rl
c3Rlcl9TdG9wTWVzc2FnZVRlc3RpbmcubmFtZSwgW10pOworICAgICAgICBjb25zb2xlLmxvZygi
c3RvcHBlZCIpOworICAgIH0KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitpZiAod2luZG93LklQQykgeworICAgIElQQy5z
ZW5kTWVzc2FnZSgiR1BVIiwgMCwgSVBDLm1lc3NhZ2VzLklQQ1Rlc3Rlcl9TdGFydE1lc3NhZ2VU
ZXN0aW5nLm5hbWUsIFtkcml2ZXJOYW1lXSk7CisgICAgSVBDLnNlbmRNZXNzYWdlKCJOZXR3b3Jr
aW5nIiwgMCwgSVBDLm1lc3NhZ2VzLklQQ1Rlc3Rlcl9TdGFydE1lc3NhZ2VUZXN0aW5nLm5hbWUs
IFtkcml2ZXJOYW1lXSk7CisgICAgSVBDLnNlbmRNZXNzYWdlKCJVSSIsIDAsIElQQy5tZXNzYWdl
cy5JUENUZXN0ZXJfU3RhcnRNZXNzYWdlVGVzdGluZy5uYW1lLCBbZHJpdmVyTmFtZV0pOworICAg
IGNvbnNvbGUubG9nKCJzdGFydGVkIik7Cit9CitzZXRUaW1lb3V0KHN0b3AsIDMwMDApOworCis8
L3NjcmlwdD4KKzxwPlRlc3QgcGFzc2VzIGlmIGl0IGRvZXMgbm90IGNyYXNoLjwvcD4KKzwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447713</attachid>
            <date>2021-12-21 05:32:18 -0800</date>
            <delta_ts>2021-12-21 06:27:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231674-20211221153216.patch</filename>
            <type>text/plain</type>
            <size>48594</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFiZDFiZDFkZmU1YWM3MjNj
Y2Y5ZWQ4NThlODYwMzQ4Y2UzN2E0OTYuLmJhYjk5ZjM5ZTJlZjRkNDY4MjliMjZlMDA3NWI1ZTY5
M2M2ZGVlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMjEtMTItMjEgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGluLXByb2Nl
c3MgdGVzdGluZyBvZiBJUEMgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMTY3NAorICAgICAgICA8cmRhcjovLzg0MTg5MzE0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBJUENUZXN0
ZXIgc2VydmljZSB0byBVSSwgR1BVLCBOZXR3b3JrLCBBdXRobiBwcm9jZXNzLgorICAgICAgICBU
aGUgc2VydmljZSBjYW4gYmUgdXNlZCB0byBzZW5kIHJhbmRvbSBtZXNzYWdlcyB0byB0aGUgcHJv
Y2Vzc2VzLgorCisgICAgICAgIFRlc3Q6IGlwYy9zdGFydC1tZXNzYWdlLXRlc3RpbmcuaHRtbAor
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNo
TWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRp
c3BhdGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlRm9yVGVzdGluZyk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQpOgorICAgICAgICBSZW1vdmUgYXNzZXJ0cyBmcm9tIHRha2VBc3luY1JlcGx5SGFuZGxl
ciwgdGhleSdyZSBhbHJlYWR5IHByZXNlbnQKKyAgICAgICAgaW4gdGhlIGNhbGxlci4gVGhlIGNh
bGxlciBjYW4gZmlsdGVyIHRoZW0gYmFzZWQgb24gdGhlIHRlc3RpbmcgZmxhZywKKyAgICAgICAg
YWxsb3dpbmcgdGVzdGluZyB3aXRob3V0IGFzc2VydHMuCisgICAgICAgICogUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHA6CisgICAg
ICAgIChJUEM6OkRlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgIChJUEM6OkRlY29kZXI6OkRlY29k
ZXIpOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjp+RGVjb2Rlcik6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL0RlY29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlv
bkNvY29hLm1tOgorICAgICAgICAoSVBDOjpjcmVhdGVNZXNzYWdlRGVjb2Rlcik6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3dpbi9D
b25uZWN0aW9uV2luLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVhZEV2ZW50SGFu
ZGxlcik6CisgICAgICAgICogU2hhcmVkL0lQQ1Rlc3Rlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjptZXNzYWdlVGVzdERyaXZlcik6CisgICAgICAgIChXZWJLaXQ6OnJ1bk1lc3NhZ2VU
ZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGVyOjp+SVBDVGVzdGVyKToKKyAgICAg
ICAgKFdlYktpdDo6SVBDVGVzdGVyOjpzdGFydE1lc3NhZ2VUZXN0aW5nKToKKyAgICAgICAgKFdl
YktpdDo6SVBDVGVzdGVyOjpzdG9wTWVzc2FnZVRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpJ
UENUZXN0ZXI6OnN0b3BJZk5lZWRlZCk6CisgICAgICAgICogU2hhcmVkL0lQQ1Rlc3Rlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4uCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQ
cm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpkZWNvZGVMZWdhY3lTZXNzaW9uU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6c2hvdWxkU2VuZFBlbmRpbmdNZXNzYWdlKToKKyAgICAgICAgKiBXZWJB
dXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3Bh
dGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIFdlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5D
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9JUENU
ZXN0aW5nQVBJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNNZXNzYWdl
TGlzdGVuZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGlu
Z0FQSTo6SlNNZXNzYWdlTGlzdGVuZXI6OndpbGxTZW5kTWVzc2FnZSk6CisKIDIwMjEtMTItMjEg
IEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBJUEMgc3Ry
ZWFtcyBzaG91bGQgbm90IGFjY2VwdCAwLWxlbmd0aCBzdHJlYW0gYnVmZmVycwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDQwNGE3MjJjNzY5
MDAwMGEwZjAzYjlhODAwZGZjNWI3YTFlMzBiZDAuLjRjNjYyMjBjZjEyMmE1M2I3NDY5ZDQ0MDBj
N2NkZGIyMzVjOGI3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKQEAgLTEyMyw2ICsxMjMsNyBAQCAkKFBST0pFQ1RfRElSKS9TaGFyZWQvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9TaGFyZWQvSFRUUFNVcGdyYWRlL0hUVFBTVXBncmFkZUxpc3QudHh0Cisk
KFBST0pFQ1RfRElSKS9TaGFyZWQvSVBDVGVzdGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL1BsdWdp
bnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDM2N2UwYWMxMGY4YzUwYzBm
M2Y0YzE4NTEzMThlZGI1NjUxYWFlODYuLmUzYjU1ODQwYWUxZWFmNTdmNWViZjc1NDJlNWUxZmQ0
MGU1ZGQ0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdApAQCAtNDYsNiArNDYsOSBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L0dQVVByb2Nlc3NNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9HUFVQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L0dQVVBy
b2Nlc3NQcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQvR1BVUHJvY2Vzc1Byb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvSVBDVGVzdGVyTWVzc2FnZVJlY2VpdmVyLmNw
cAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9JUENUZXN0ZXJN
ZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L0lQ
Q1Rlc3Rlck1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlc1JlcGxp
ZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGI2MjE4OWNiNDc4ZjVlZTJkMTZm
ZDUzMTg0MWI4YzI2NmVjYjk3ZTEuLjdhZDQ5ZTM3MzVmNGI0NzhjNDE2ZDkyOTVjMTM5YmU5OGZk
NmNlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE0OCw2ICsxNDgsNyBAQCBN
RVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25NYW5hZ2VyIFwKIAlTaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXIgXAogCVNoYXJlZC9XZWJDb25uZWN0aW9uIFwKKwlTaGFyZWQvSVBDVGVzdGVy
IFwKIAlVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSBcCiAJVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5IFwKIAlVSVByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NQcm94eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNzJhNDIyZDRhZWZkNjY1
MWZmOWRjZjc4NDM3YzA2NDJiMmU1MTdkYi4uODViMzkxMWNkMTc4ODEwMWZjZjkxOTY2OTFlZWU1
NzI2ODg5NzM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTQ5LDYgKzE0OSwxMCBAQAogI2luY2x1ZGUg
IldDQ29udGVudEJ1ZmZlck1hbmFnZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKElQQ19URVNU
SU5HX0FQSSkKKyNpbmNsdWRlICJJUENUZXN0ZXJNZXNzYWdlcy5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTc5NSw2ICs3OTks
MTIgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEMKICAgICAgICAgICAgIG1fcmVtb3RlUmVtb3Rl
Q29tbWFuZExpc3RlbmVyLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkp
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpJUENU
ZXN0ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBtX2lwY1Rlc3Rlci5kaWRS
ZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorI2VuZGlmCiAKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0
Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQpAQCAtODY4LDYgKzg3OCwxMiBAQCBi
b29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLAogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkKICAgICAgICAgLy8gU2tpcCBtZXNzYWdlcyBmb3IgYWxyZWFkeSByZW1vdmVkIHJl
Y2VpdmVycy4KICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBFTkFCTEUoSVBDX1RF
U1RJTkdfQVBJKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6SVBDVGVzdGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgbV9pcGNU
ZXN0ZXIuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5j
b2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICNlbmRpZgogICAgIHJldHVybiBt
ZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA5ODFiNDhlODdlNmQ4ODYyMmJjZWRk
OGIyOThhMDJlM2EwMDBlN2JhLi5jOGFiYmY0NTA5ZjIyY2VhYzJiZTBlYzFkZTViMzdjNGU4NTBl
YmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKQEAgLTY0LDYgKzY0LDEwIEBACiAjaW5jbHVkZSAiV0NMYXllclRyZWVI
b3N0SWRlbnRpZmllci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQor
I2luY2x1ZGUgIklQQ1Rlc3Rlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKQEAgLTM0OSw2
ICszNTMsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKSAmJiBI
QVZFKEFWQVVESU9fUk9VVElOR19BUkJJVEVSKQogICAgIFVuaXF1ZVJlZjxMb2NhbEF1ZGlvU2Vz
c2lvblJvdXRpbmdBcmJpdHJhdG9yPiBtX3JvdXRpbmdBcmJpdHJhdG9yOwogI2VuZGlmCisjaWYg
RU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICBJUENUZXN0ZXIgbV9pcGNUZXN0ZXI7CisjZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAppbmRleCA5YzZkZDhjZTRkOGYwNmEyMDNiNjQwYWEyMmEwMjVlOTk3ZjMxMDM2Li44NjVhM2Y4
N2IxYTg1Y2M1ZTY5YzVlZGVjNWFjNGNlMTk0MTZhZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcApAQCAtODUsNiArODUsMTAgQEAKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyNpbmNs
dWRlICJJUENUZXN0ZXJNZXNzYWdlcy5oIgorI2VuZGlmCisKICNkZWZpbmUgQ09OTkVDVElPTl9S
RUxFQVNFX0xPRyhjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0coY2hhbm5lbCwgIiVwIC0g
W3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6IiBmbXQsIHRoaXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwg
IyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihjaGFu
bmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgIiVwIC0gW3dlYlByb2Nl
c3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
IiBmbXQsIHRoaXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FS
R1NfXykKIApAQCAtMjcyLDYgKzI3NiwxOCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3RpbwogICAg
ICAgICByZXR1cm4gcGF5bWVudENvb3JkaW5hdG9yKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisg
ICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpJUENUZXN0
ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBtX2lwY1Rlc3Rlci5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZgorCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICBpZiAoY29ubmVjdGlv
bi5pZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3RpbmcoKSkKKyAgICAgICAgcmV0dXJuOworI2Vu
ZGlmCisKICAgICBXVEZMb2dBbHdheXMoIlVuaGFuZGxlZCBuZXR3b3JrIHByb2Nlc3MgbWVzc2Fn
ZSAnJXMnIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSk7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CkBAIC0zNDgsNiArMzY0LDE3IEBAIGJvb2wgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQogICAg
ICAgICByZXR1cm4gcGF5bWVudENvb3JkaW5hdG9yKCkuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5KTsKICNlbmRpZgorI2lmIEVOQUJMRShJUENfVEVTVElO
R19BUEkpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpJUENUZXN0ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBtX2lwY1Rlc3Rl
ci5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHkpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKworI2lmIEVOQUJMRShJUENfVEVTVElO
R19BUEkpCisgICAgaWYgKGNvbm5lY3Rpb24uaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5n
KCkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAKICAgICBXVEZMb2dBbHdheXMoIlVu
aGFuZGxlZCBuZXR3b3JrIHByb2Nlc3MgbWVzc2FnZSAnJXMnIiwgZGVzY3JpcHRpb24oZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpKSk7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKaW5kZXggZTgxN2I3YjYyZDI0OTc4N2RjNGFiMTllZGViYjBjNGY2ODUxMmYy
ZS4uMmI4NTJjYmMyM2JhYTc5MjQ0Zjc3ZGRmYTIwYzZkODlhZjMzZjBjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaApAQCAtNTYsNiArNTYsMTAgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdf
QVBJKQorI2luY2x1ZGUgIklQQ1Rlc3Rlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBQQUwgewog
Y2xhc3MgU2Vzc2lvbklEOwogfQpAQCAtNDE1LDYgKzQxOSw5IEBAIHByaXZhdGU6CiAgICAgICAg
IAogICAgIEhhc2hTZXQ8VVJMPiBtX2Jsb2JVUkxzOwogICAgIEhhc2hTZXQ8VVJMPiBtX2Jsb2JV
UkxIYW5kbGVzOworI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisgICAgSVBDVGVzdGVyIG1f
aXBjVGVzdGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggMGRkZjBkNjBiNjdkZTJhMzEz
MjNkY2UwZjc5OGI0ZmZhYjY1YWMzNi4uNDRkNWVjNWQyMWIxNTY3YzgyYWI0NjZlYjc3MzJkOTk5
NWQxYTI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAg
LTg3NCw2ICs4NzQsMTMgQEAgdm9pZCBDb25uZWN0aW9uOjphZGRNZXNzYWdlT2JzZXJ2ZXIoY29u
c3QgTWVzc2FnZU9ic2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBtX21lc3NhZ2VPYnNlcnZlcnMu
YXBwZW5kKG9ic2VydmVyKTsKIH0KKwordm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaEluY29taW5n
TWVzc2FnZUZvclRlc3Rpbmcoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYgZGVjb2RlcikKK3sK
KyAgICBtX2Nvbm5lY3Rpb25RdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBkZWNvZGVyID0gV1RGTW92ZShkZWNvZGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
cHJvdGVjdGVkVGhpcy0+cHJvY2Vzc0luY29taW5nTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpKTsK
KyAgICB9KTsKK30KICNlbmRpZgogCiB2b2lkIENvbm5lY3Rpb246OnBvc3RDb25uZWN0aW9uRGlk
Q2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoKQpAQCAtMTA1Niw2ICsxMDYzLDExIEBAIHZvaWQg
Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKGRl
Y29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IFJlY2VpdmVyTmFtZTo6QXN5bmNSZXBseSkg
ewogICAgICAgICBhdXRvIGhhbmRsZXIgPSB0YWtlQXN5bmNSZXBseUhhbmRsZXIoKnRoaXMsIGRl
Y29kZXIuZGVzdGluYXRpb25JRCgpKTsKICAgICAgICAgaWYgKCFoYW5kbGVyKSB7CisgICAgICAg
ICAgICBtYXJrQ3VycmVudGx5RGlzcGF0Y2hlZE1lc3NhZ2VBc0ludmFsaWQoKTsKKyNpZiBFTkFC
TEUoSVBDX1RFU1RJTkdfQVBJKQorICAgICAgICAgICAgaWYgKG1faWdub3JlSW52YWxpZE1lc3Nh
Z2VGb3JUZXN0aW5nKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyNlbmRpZgogICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTEyNzQsMTcgKzEyODYsMTEgQEAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEZWNvZGVyKik+
IHRha2VBc3luY1JlcGx5SGFuZGxlcihDb25uZWN0aW9uJiBjb25uZWN0aW9uLAogICAgIExvY2tl
ciBsb2NrZXIgeyBhc3luY1JlcGx5SGFuZGxlck1hcExvY2sgfTsKICAgICBhdXRvJiBtYXAgPSBh
c3luY1JlcGx5SGFuZGxlck1hcCgpOwogICAgIGF1dG8gaXRlcmF0b3IgPSBtYXAuZmluZChyZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJmNvbm5lY3Rpb24pKTsKLSAgICBpZiAoaXRlcmF0b3Ig
IT0gbWFwLmVuZCgpKSB7Ci0gICAgICAgIGlmICghaXRlcmF0b3ItPnZhbHVlLmlzVmFsaWRLZXko
aWRlbnRpZmllcikpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICAgICAgY29ubmVjdGlvbi5tYXJrQ3VycmVudGx5RGlzcGF0Y2hlZE1lc3NhZ2VBc0ludmFsaWQo
KTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VS
VChpdGVyYXRvci0+dmFsdWUuY29udGFpbnMoaWRlbnRpZmllcikpOwotICAgICAgICByZXR1cm4g
aXRlcmF0b3ItPnZhbHVlLnRha2UoaWRlbnRpZmllcik7Ci0gICAgfQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChpdGVyYXRvciA9PSBtYXAu
ZW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXRlcmF0b3ItPnZhbHVl
LmlzVmFsaWRLZXkoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiBpdGVyYXRvci0+dmFsdWUudGFrZShpZGVudGlmaWVyKTsKIH0KIAogdm9pZCBDb25uZWN0
aW9uOjp3YWtlVXBSdW5Mb29wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aAppbmRleCA4OTJlNzU2NDliNThlNGFmODA2ZThjMzYwMWQ0OWY1Y2M0YTZhMWE3Li42MGE0ZDk4
NDJjODAzMDEzYWUyNDQ3Y2ZlMjk2MzQ3OWU5MTIxNTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0zMjIsNiArMzIyLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZXRJZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3RpbmcoKSB7IG1faWdub3JlSW52YWxpZE1l
c3NhZ2VGb3JUZXN0aW5nID0gdHJ1ZTsgfQogICAgIGJvb2wgaWdub3JlSW52YWxpZE1lc3NhZ2VG
b3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3Rp
bmc7IH0KKyAgICB2b2lkIGRpc3BhdGNoSW5jb21pbmdNZXNzYWdlRm9yVGVzdGluZyhzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2Rlcj4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdl
UmVjZWl2ZXJNZXNzYWdlKE1lc3NhZ2VSZWNlaXZlciYsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggMTMzMzY0NzM0
YjgwZTdhYzFjYTMyOGU1MjBlZjg2NzZiNGFjNzMwZS4uMzZiM2VhM2NmZTY5YmJhYjc1N2VmNTAx
YWQzMDhhZDU0MjljZTk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAK
QEAgLTQ3LDMyICs0NywzMiBAQCBzdGF0aWMgY29uc3QgdWludDhfdCogY29weUJ1ZmZlcihjb25z
dCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKQogICAgIHJldHVybiBidWZmZXJD
b3B5OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9j
YXRvcikoY29uc3QgdWludDhfdCosIHNpemVfdCksIFZlY3RvcjxBdHRhY2htZW50PiYmIGF0dGFj
aG1lbnRzKQorc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IERlY29kZXI6OmNyZWF0ZShjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBWZWN0b3I8QXR0YWNobWVudD4mJiBh
dHRhY2htZW50cykKIHsKICAgICBBU1NFUlQoYnVmZmVyKTsKICAgICBpZiAoVU5MSUtFTFkoIWJ1
ZmZlcikpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoSVBDLCAiRGVjb2Rlcjo6Y3JlYXRl
KCkgY2FsbGVkIHdpdGggYSBudWxsIGJ1ZmZlciAoYnVmZmVyU2l6ZTogJWx1KSIsIGJ1ZmZlclNp
emUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CisgICAgcmV0dXJuIERlY29kZXI6
OmNyZWF0ZShjb3B5QnVmZmVyKGJ1ZmZlciwgYnVmZmVyU2l6ZSksIGJ1ZmZlclNpemUsIFtdKGNv
bnN0IHVpbnQ4X3QqIHB0ciwgc2l6ZV90KSB7IGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dWludDhfdCo+
KHB0cikpOyB9LCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7IC8vIE5PTElOVAorfQogCi0gICAgY29u
c3QgdWludDhfdCogYnVmZmVyQ29weTsKLSAgICBpZiAoIWJ1ZmZlckRlYWxsb2NhdG9yKSB7Ci0g
ICAgICAgIGJ1ZmZlckNvcHkgPSBjb3B5QnVmZmVyKGJ1ZmZlciwgYnVmZmVyU2l6ZSk7Ci0gICAg
ICAgIEFTU0VSVChidWZmZXJDb3B5KTsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFidWZmZXJDb3B5
KSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0gZWxzZQotICAgICAgICBidWZm
ZXJDb3B5ID0gYnVmZmVyOwotCi0gICAgYXV0byBkZWNvZGVyID0gc3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+KG5ldyBEZWNvZGVyKGJ1ZmZlckNvcHksIGJ1ZmZlclNpemUsIGJ1ZmZlckRlYWxsb2Nh
dG9yLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSkpOworc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IERl
Y29kZXI6OmNyZWF0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBC
dWZmZXJEZWFsbG9jYXRvciYmIGJ1ZmZlckRlYWxsb2NhdG9yLCBWZWN0b3I8QXR0YWNobWVudD4m
JiBhdHRhY2htZW50cykKK3sKKyAgICBBU1NFUlQoYnVmZmVyKTsKKyAgICBpZiAoVU5MSUtFTFko
IWJ1ZmZlcikpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoSVBDLCAiRGVjb2Rlcjo6Y3Jl
YXRlKCkgY2FsbGVkIHdpdGggYSBudWxsIGJ1ZmZlciAoYnVmZmVyU2l6ZTogJWx1KSIsIGJ1ZmZl
clNpemUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgYXV0byBkZWNvZGVy
ID0gc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+KG5ldyBEZWNvZGVyKGJ1ZmZlciwgYnVmZmVyU2l6
ZSwgV1RGTW92ZShidWZmZXJEZWFsbG9jYXRvciksIFdURk1vdmUoYXR0YWNobWVudHMpKSk7CiAg
ICAgcmV0dXJuIGRlY29kZXItPmlzVmFsaWQoKSA/IFdURk1vdmUoZGVjb2RlcikgOiBudWxscHRy
OwogfQogCi1EZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWludDhfdCosIHNpemVf
dCksIFZlY3RvcjxBdHRhY2htZW50PiYmIGF0dGFjaG1lbnRzKQorRGVjb2Rlcjo6RGVjb2Rlcihj
b25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBCdWZmZXJEZWFsbG9jYXRv
ciYmIGJ1ZmZlckRlYWxsb2NhdG9yLCBWZWN0b3I8QXR0YWNobWVudD4mJiBhdHRhY2htZW50cykK
ICAgICA6IG1fYnVmZmVyIHsgYnVmZmVyIH0KICAgICAsIG1fYnVmZmVyUG9zIHsgbV9idWZmZXIg
fQogICAgICwgbV9idWZmZXJFbmQgeyBtX2J1ZmZlciArIGJ1ZmZlclNpemUgfQotICAgICwgbV9i
dWZmZXJEZWFsbG9jYXRvciB7IGJ1ZmZlckRlYWxsb2NhdG9yIH0KKyAgICAsIG1fYnVmZmVyRGVh
bGxvY2F0b3IgeyBXVEZNb3ZlKGJ1ZmZlckRlYWxsb2NhdG9yKSB9CiAgICAgLCBtX2F0dGFjaG1l
bnRzIHsgV1RGTW92ZShhdHRhY2htZW50cykgfQogewogICAgIGlmIChVTkxJS0VMWShyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4obV9idWZmZXIpICUgYWxpZ25vZih1aW50NjRfdCkpKSB7CkBA
IC0xMDQsMTIgKzEwNCw3IEBAIERlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogc3RyZWFt
LCBzaXplX3Qgc3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGluYXRpb25JCiBEZWNvZGVyOjp+RGVj
b2RlcigpCiB7CiAgICAgQVNTRVJUKG1fYnVmZmVyKTsKLQotICAgIGlmIChtX2J1ZmZlckRlYWxs
b2NhdG9yKQotICAgICAgICBtX2J1ZmZlckRlYWxsb2NhdG9yKG1fYnVmZmVyLCBtX2J1ZmZlckVu
ZCAtIG1fYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dWlu
dDhfdCo+KG1fYnVmZmVyKSk7Ci0KKyAgICBtX2J1ZmZlckRlYWxsb2NhdG9yKG1fYnVmZmVyLCBt
X2J1ZmZlckVuZCAtIG1fYnVmZmVyKTsKICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBkaXNwb3Nl
IG9mIHRoZSBtYWNoIHBvcnRzIGluIGNhc2VzIG9mIGZhaWx1cmUuCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCA3MDUzNWFmYjVjOWRlZWIyNjcyYTA2MDc1YjlhOGNh
MTVkNzk5NDQyLi5hOTM1NmVhMTA4YmFhMzYwYjhlZjkzOWIwYTQ1ZTNiYmFhYzIzYTRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNs
dWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIApAQCAtNDYsNyArNDcsOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5h
bWU+IHN0cnVjdCBIYXNNb2Rlcm5EZWNvZGVyOwogY2xhc3MgRGVjb2RlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwg
dm9pZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSwgVmVjdG9y
PEF0dGFjaG1lbnQ+JiYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3Jl
YXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIFZlY3RvcjxBdHRh
Y2htZW50PiYmKTsKKyAgICB1c2luZyBCdWZmZXJEZWFsbG9jYXRvciA9IEZ1bmN0aW9uPHZvaWQo
Y29uc3QgdWludDhfdCosIHNpemVfdCk+OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIEJ1
ZmZlckRlYWxsb2NhdG9yJiYsIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKICAgICBEZWNvZGVyKGNv
bnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbVNpemUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQpOwogCiAgICAgfkRlY29kZXIoKTsKQEAgLTEzOSw3ICsxNDIsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSVBDRGVjb2RlciA9IHRydWU7CiAKIHByaXZhdGU6
Ci0gICAgRGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCB2
b2lkICgqYnVmZmVyRGVhbGxvY2F0b3IpKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBWZWN0b3I8
QXR0YWNobWVudD4mJik7CisgICAgRGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVf
dCBidWZmZXJTaXplLCBCdWZmZXJEZWFsbG9jYXRvciYmLCBWZWN0b3I8QXR0YWNobWVudD4mJik7
CiAKICAgICBib29sIGFsaWduQnVmZmVyUG9zaXRpb24oc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90
KTsKICAgICBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IGFsaWdubWVu
dCwgc2l6ZV90KSBjb25zdDsKQEAgLTE0Nyw3ICsxNTAsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0
IHVpbnQ4X3QqIG1fYnVmZmVyOwogICAgIGNvbnN0IHVpbnQ4X3QqIG1fYnVmZmVyUG9zOwogICAg
IGNvbnN0IHVpbnQ4X3QqIG1fYnVmZmVyRW5kOwotICAgIHZvaWQgKCptX2J1ZmZlckRlYWxsb2Nh
dG9yKShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBCdWZmZXJEZWFsbG9jYXRvciBtX2J1
ZmZlckRlYWxsb2NhdG9yOwogCiAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IG1fYXR0YWNobWVudHM7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rp
b25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25D
b2NvYS5tbQppbmRleCA2MzhjZjMwZmIxZTllYjRhYzU4NTI4OTlmZjIzZDc2MTZmNGY5MDg5Li5h
M2E1ZjQ5OTU2YmYxNWNmODBkZjMyNzI4ZTEzMzdiNGRlOTk4OTZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCkBAIC00MjYs
NyArNDI2LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdl
RGVjb2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVyLAogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gRGVjb2Rlcjo6Y3JlYXRlKGJvZHks
IGJvZHlTaXplLCBudWxscHRyLCBWZWN0b3I8QXR0YWNobWVudD4geyB9KTsKKyAgICAgICAgcmV0
dXJuIERlY29kZXI6OmNyZWF0ZShib2R5LCBib2R5U2l6ZSwgeyB9KTsKICAgICB9CiAKICAgICBt
YWNoX21zZ19ib2R5X3QqIGJvZHkgPSByZWludGVycHJldF9jYXN0PG1hY2hfbXNnX2JvZHlfdCo+
KGhlYWRlciArIDEpOwpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlciwK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIERlY29kZXI6OmNy
ZWF0ZShtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFj
aG1lbnRzKSk7CisgICAgcmV0dXJuIERlY29kZXI6OmNyZWF0ZShtZXNzYWdlQm9keSwgbWVzc2Fn
ZUJvZHlTaXplLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiB9CiAKIC8vIFRoZSByZWNlaXZlIGJ1
ZmZlciBzaXplIHNob3VsZCBhbHdheXMgaW5jbHVkZSB0aGUgbWF4aW11bSB0cmFpbGVyIHNpemUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXgu
Y3BwCmluZGV4IGYyMjFmOTA5ZmU0ZTQ5MGNhZjZmZjBkNDg2Yjg5Zjc0MzAzZWIxN2IuLjc0NmYz
ZjZmZDdmYmJhMDhiYzA5NTExNDdjMDYyMzY0YWJlMjFkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCkBAIC0yNDUsNyArMjQ1
LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSgpCiAgICAgaWYgKG1lc3NhZ2VJ
bmZvLmlzQm9keU91dE9mTGluZSgpKQogICAgICAgICBtZXNzYWdlQm9keSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KG9vbE1lc3NhZ2VCb2R5LT5kYXRhKCkpOwogCi0gICAgYXV0byBkZWNv
ZGVyID0gRGVjb2Rlcjo6Y3JlYXRlKG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgp
LCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgYXV0byBkZWNvZGVyID0gRGVj
b2Rlcjo6Y3JlYXRlKG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgpLCBXVEZNb3Zl
KGF0dGFjaG1lbnRzKSk7CiAgICAgQVNTRVJUKGRlY29kZXIpOwogICAgIGlmICghZGVjb2RlcikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
d2luL0Nvbm5lY3Rpb25XaW4uY3BwCmluZGV4IGFmZjM5ZmMxMDJlZDA0NzEyMWYzZjFjMmFmYTg4
OWUwODIyMjgxOTguLmRhOGQ3ZjBmYjhlYzA3ZjU4ZTY4MWQ4YWI4OTJhODI5N2QzNjg4YTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAK
QEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlYWRFdmVudEhhbmRsZXIoKQog
CiAgICAgICAgIGlmICghbV9yZWFkQnVmZmVyLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8g
V2UgaGF2ZSBhIG1lc3NhZ2UsIGxldCdzIGRpc3BhdGNoIGl0LgotICAgICAgICAgICAgYXV0byBk
ZWNvZGVyID0gRGVjb2Rlcjo6Y3JlYXRlKG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVhZEJ1ZmZl
ci5zaXplKCksIG51bGxwdHIsIHsgfSk7CisgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBEZWNv
ZGVyOjpjcmVhdGUobV9yZWFkQnVmZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVyLnNpemUoKSwgeyB9
KTsKICAgICAgICAgICAgIEFTU0VSVChkZWNvZGVyKTsKICAgICAgICAgICAgIGlmICghZGVjb2Rl
cikKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9JUENUZXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iYWJhMGIwODg3N2M0NzJhNTA3MWZmM2FhM2Q4ODAxMDJmNTdjODlhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcApAQCAtMCww
ICsxLDEzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJ
UENUZXN0ZXIuaCIKKworI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIKKworI2luY2x1ZGUgPGRsZmNuLmg+Cisj
aW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvQ3J5
cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5h
cnlTZW1hcGhvcmUuaD4KKworLy8gVGhlIHRlc3RlciBBUEkuCitleHRlcm4gIkMiIHsKKy8vIFJl
dHVybnMgMCBpZiBkcml2ZXIgc2hvdWxkIGNvbnRpbnVlLgordHlwZWRlZiBpbnQgKCpXS01lc3Nh
Z2VUZXN0U2VuZE1lc3NhZ2VGdW5jKShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc3osIHZv
aWQqIGNvbnRleHQpOwordHlwZWRlZiB2b2lkICgqV0tNZXNzYWdlVGVzdERyaXZlckZ1bmMpKFdL
TWVzc2FnZVRlc3RTZW5kTWVzc2FnZUZ1bmMgc2VuZE1lc3NhZ2VGdW5jLCB2b2lkKiBjb250ZXh0
KTsKK30KKworbmFtZXNwYWNlIHsKK3N0cnVjdCBTZW5kTWVzc2FnZUNvbnRleHQgeworICAgIElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbjsKKyAgICBzdGQ6OmF0b21pYzxib29sPiYgc2hvdWxk
U3RvcDsKK307Cit9CisKK2V4dGVybiAiQyIgeworCitzdGF0aWMgdm9pZCBkZWZhdWx0VGVzdERy
aXZlcihXS01lc3NhZ2VUZXN0U2VuZE1lc3NhZ2VGdW5jIHNlbmRNZXNzYWdlRnVuYywgdm9pZCog
Y29udGV4dCkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YSgxMDAwKTsKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRv
bVZhbHVlcyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBpbnQgcmV0ID0gc2Vu
ZE1lc3NhZ2VGdW5jKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgY29udGV4dCk7CisgICAgICAg
IGlmIChyZXQpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorfQorCitzdGF0aWMgaW50IHNl
bmRUZXN0TWVzc2FnZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgdm9pZCogY29u
dGV4dCkKK3sKKyAgICBhdXRvIG1lc3NhZ2VDb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxTZW5k
TWVzc2FnZUNvbnRleHQqPihjb250ZXh0KTsKKyAgICBpZiAobWVzc2FnZUNvbnRleHQtPnNob3Vs
ZFN0b3ApCisgICAgICAgIHJldHVybiAxOworICAgIGF1dG8mIHRlc3RlZENvbm5lY3Rpb24gPSBt
ZXNzYWdlQ29udGV4dC0+Y29ubmVjdGlvbjsKKyAgICBpZiAoIXRlc3RlZENvbm5lY3Rpb24uaXNW
YWxpZCgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBCaW5hcnlTZW1hcGhvcmUgc2VtYXBob3Jl
OworICAgIGF1dG8gZGVjb2RlciA9IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGRhdGEsIHNpemUsIFsm
c2VtYXBob3JlXSAoY29uc3QgdWludDhfdCosIHNpemVfdCkgeyBzZW1hcGhvcmUuc2lnbmFsKCk7
IH0sIHsgfSk7IC8vIE5PTElOVAorICAgIGlmIChkZWNvZGVyKSB7CisgICAgICAgIHRlc3RlZENv
bm5lY3Rpb24uZGlzcGF0Y2hJbmNvbWluZ01lc3NhZ2VGb3JUZXN0aW5nKFdURk1vdmUoZGVjb2Rl
cikpOworICAgICAgICBzZW1hcGhvcmUud2FpdCgpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30K
KworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFdLTWVzc2FnZVRlc3REcml2ZXJG
dW5jIG1lc3NhZ2VUZXN0RHJpdmVyKFN0cmluZyYmIGRyaXZlck5hbWUpCit7CisgICAgaWYgKGRy
aXZlck5hbWUuaXNFbXB0eSgpIHx8IGRyaXZlck5hbWUgPT0gImRlZmF1bHQiKQorICAgICAgICBk
cml2ZXJOYW1lID0gZ2V0ZW52KCJXRUJLSVRfTUVTU0FHRV9URVNUX0RFRkFVTFRfRFJJVkVSIik7
CisgICAgaWYgKGRyaXZlck5hbWUuaXNFbXB0eSgpIHx8IGRyaXZlck5hbWUgPT0gImRlZmF1bHQi
KQorICAgICAgICByZXR1cm4gZGVmYXVsdFRlc3REcml2ZXI7CisgICAgYXV0byB0ZXN0RHJpdmVy
ID0gcmVpbnRlcnByZXRfY2FzdDxXS01lc3NhZ2VUZXN0RHJpdmVyRnVuYz4oZGxzeW0oUlRMRF9E
RUZBVUxULCBkcml2ZXJOYW1lLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh0
ZXN0RHJpdmVyKTsKKyAgICByZXR1cm4gdGVzdERyaXZlcjsKK30KKworc3RhdGljIHZvaWQgcnVu
TWVzc2FnZVRlc3RpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzdGQ6OmF0b21pYzxi
b29sPiYgc2hvdWxkU3RvcCwgU3RyaW5nJiYgZHJpdmVyTmFtZSkKK3sKKyAgICBjb25uZWN0aW9u
LnNldElnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZygpOworICAgIFNlbmRNZXNzYWdlQ29u
dGV4dCBjb250ZXh0IHsgY29ubmVjdGlvbiwgc2hvdWxkU3RvcCB9OworICAgIGF1dG8gZHJpdmVy
ID0gbWVzc2FnZVRlc3REcml2ZXIoV1RGTW92ZShkcml2ZXJOYW1lKSk7CisgICAgZHJpdmVyKHNl
bmRUZXN0TWVzc2FnZSwgJmNvbnRleHQpOworfQorCitJUENUZXN0ZXI6OklQQ1Rlc3RlcigpID0g
ZGVmYXVsdDsKKworSVBDVGVzdGVyOjp+SVBDVGVzdGVyKCkKK3sKKyAgICBzdG9wSWZOZWVkZWQo
KTsKK30KKwordm9pZCBJUENUZXN0ZXI6OnN0YXJ0TWVzc2FnZVRlc3RpbmcoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBTdHJpbmcmJiBkcml2ZXJOYW1lKQoreworICAgIGlmICghbV90ZXN0
UXVldWUpCisgICAgICAgIG1fdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIklQQyB0ZXN0
aW5nIHdvcmsgcXVldWUiKTsKKyAgICBtX3Rlc3RRdWV1ZS0+ZGlzcGF0Y2goW2Nvbm5lY3Rpb24g
PSBSZWYgeyBjb25uZWN0aW9uIH0sICZzaG91bGRTdG9wID0gbV9zaG91bGRTdG9wLCBkcml2ZXJO
YW1lID0gV1RGTW92ZShkcml2ZXJOYW1lKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcnVuTWVzc2Fn
ZVRlc3RpbmcoY29ubmVjdGlvbiwgc2hvdWxkU3RvcCwgV1RGTW92ZShkcml2ZXJOYW1lKSk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgSVBDVGVzdGVyOjpzdG9wTWVzc2FnZVRlc3RpbmcoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzdG9wSWZOZWVkZWQo
KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIElQQ1Rlc3Rlcjo6c3RvcElm
TmVlZGVkKCkKK3sKKyAgICBpZiAobV90ZXN0UXVldWUpIHsKKyAgICAgICAgbV9zaG91bGRTdG9w
ID0gdHJ1ZTsKKyAgICAgICAgbV90ZXN0UXVldWUtPmRpc3BhdGNoU3luYyhbXSB7IH0pOworICAg
ICAgICBtX3Rlc3RRdWV1ZSA9IG51bGxwdHI7CisgICAgfQorfQorCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9JUENUZXN0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDk5MDkzNWJkNTUxZDRlZWI1ODM1NDNl
MTJlY2ZkM2I4NDcxODVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
SVBDVGVzdGVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgorI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJUENUZXN0ZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIElQQ1Rlc3RlcigpOworICAgIH5JUENUZXN0
ZXIoKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFs
OworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7Citwcml2YXRlOgorICAg
IC8vIE1lc3NhZ2VzLgorICAgIHZvaWQgc3RhcnRNZXNzYWdlVGVzdGluZyhJUEM6OkNvbm5lY3Rp
b24mLCBTdHJpbmcmJiBkcml2ZXJOYW1lKTsKKyAgICB2b2lkIHN0b3BNZXNzYWdlVGVzdGluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+KTsKKworICAgIHZvaWQgc3RvcElmTmVlZGVkKCk7CisK
KyAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX3Rlc3RRdWV1ZTsKKyAgICBzdGQ6OmF0b21pYzxib29s
PiBtX3Nob3VsZFN0b3AgeyBmYWxzZSB9OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0lQQ1Rlc3Rlci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjVhOTllOThlNTBk
ZWIzY2Q1MTlkMWE0N2M4YzJlNTQ0NzI0NWFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvSVBDVGVzdGVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShJUENfVEVTVElO
R19BUEkpCisKK21lc3NhZ2VzIC0+IElQQ1Rlc3RlciBOb3RSZWZDb3VudGVkIHsKKyAgICBTdGFy
dE1lc3NhZ2VUZXN0aW5nKFN0cmluZyBkcml2ZXJOYW1lKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBT
dG9wTWVzc2FnZVRlc3RpbmcoKSAtPiAoKSBTeW5jaHJvbm91cworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CmluZGV4IDY3OTYzNzg5ZmEzNDdiZjhhZDU2NGY5NWQzYWYxYzliOWE3ZmMzOTcuLjBmYTJj
YmI2YjlhNDI3MWE1NjVkYjJhY2ZkY2U3YjczY2Y4ZDVlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjIy
LDYgKzIyMiw3IEBAIFNoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKIFNoYXJlZC9Gb250SW5mby5jcHAK
IFNoYXJlZC9GcmFtZUluZm9EYXRhLmNwcAogU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVz
LmNwcAorU2hhcmVkL0lQQ1Rlc3Rlci5jcHAKIFNoYXJlZC9MYXllclRyZWVDb250ZXh0LmNwcAog
U2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAogU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNw
cApAQCAtODQ0LDYgKzg0NSw3IEBAIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIuY3BwCiAKIFdlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5
LmNwcAogCitJUENUZXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBOZXR3b3JrQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAogUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5h
Z2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9M
ZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCmluZGV4IGVkMTQ0NDljYmYzZTQ3YzU5
MDJmOWM5ZTRlYzVkYTlhZmJkMjgwMTEuLjJjNzkxMGRkOTMzZmQ0ZGZhMjA4NWYwOGI1MmRkODRi
MjI5NzIyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Np
b25TdGF0ZUNvZGluZ05vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2Fj
eVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCkBAIC00OCw3ICs0OCw3IEBAIFJlZlB0cjxBUEk6
OkRhdGE+IGVuY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShjb25zdCBTZXNzaW9uU3RhdGUmIHNlc3Np
b25TdGF0ZSkKIAogYm9vbCBkZWNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBTZXNzaW9uU3RhdGUmIHNlc3Npb25TdGF0ZSkKIHsKLSAg
ICBhdXRvIGRlY29kZXIgPSBJUEM6OkRlY29kZXI6OmNyZWF0ZShkYXRhLCBkYXRhU2l6ZSwgbnVs
bHB0ciwgVmVjdG9yPElQQzo6QXR0YWNobWVudD4oKSk7CisgICAgYXV0byBkZWNvZGVyID0gSVBD
OjpEZWNvZGVyOjpjcmVhdGUoZGF0YSwgZGF0YVNpemUsIHsgfSk7CiAgICAgaWYgKCFkZWNvZGVy
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAppbmRleCAwOTYxMzY3YTYxZTg5NjQ3YzQwYzAzOTYyYTRiYTNkMGVhNmIx
YWI5Li4zZGViZGNiMzVlZjY1ODg0MjRhMGRhYzA0NjBkMjk5ZmRmYzNjNWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xNDcsNiArMTQ3LDEwIEBA
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorI2luY2x1ZGUgIklQQ1Rlc3Rlck1lc3NhZ2VzLmgiCisj
ZW5kaWYKKwogI2RlZmluZSBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPRyhjaGFubmVsLCBmbXQs
IC4uLikgUkVMRUFTRV9MT0coY2hhbm5lbCwgIiVwIC0gV2ViUHJvY2Vzc1Bvb2w6OiIgZm10LCB0
aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19T
VEFUSUMoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HKGNoYW5uZWwsICJXZWJQcm9jZXNz
UG9vbDo6IiBmbXQsICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIFdFQlBST0NFU1NQT09MX1JFTEVB
U0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihjaGFubmVs
LCAiJXAgLSBXZWJQcm9jZXNzUG9vbDo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCkBAIC0y
NDIsNiArMjQ2LDkgQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogI2VuZGlmCiAKICAgICBhZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlByb2Nlc3NQb29sOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksICp0aGlzKTsKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIGFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6SVBDVGVzdGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faXBj
VGVzdGVyKTsKKyNlbmRpZgogCiAgICAgLy8gTk9URTogVGhlc2Ugc3ViLW9iamVjdHMgbXVzdCBi
ZSBpbml0aWFsaXplZCBhZnRlciBtX21lc3NhZ2VSZWNlaXZlck1hcC4uCiAgICAgYWRkU3VwcGxl
bWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDU5YWIxMmEzYTdhYThlMDkzMTlmYjdmZjBhYjNhMGU5
ODJkY2RiN2UuLjQzMmM2NWVlOTk0OWNhYmIzYzkyNzlkNjE1ODFmODM0Njc2YjIxMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzUsNiArNzUsMTEgQEAg
T0JKQ19DTEFTUyBXS1dlYkluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZlcjsKICNpbmNsdWRlIDxw
YWwvc3lzdGVtL1N5c3RlbVNsZWVwTGlzdGVuZXIuaD4KICNlbmRpZgogCisKKyNpZiBFTkFCTEUo
SVBDX1RFU1RJTkdfQVBJKQorI2luY2x1ZGUgIklQQ1Rlc3Rlci5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBBUEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKIGNsYXNzIERvd25sb2FkQ2xpZW50
OwpAQCAtODAzLDYgKzgwOCw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlBvd2VyT2JzZXJ2ZXI+IG1fcG93ZXJPYnNlcnZlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UEFMOjpTeXN0ZW1TbGVlcExpc3RlbmVyPiBtX3N5c3RlbVNsZWVwTGlzdGVuZXI7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIElQQ1Rlc3RlciBtX2lwY1Rlc3RlcjsK
KyNlbmRpZgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGZkZmQ0OGNhMWViYzBhNzQ3NzJmNThiZjkw
ZjViOGE0ZTc5YjNhYWQuLjAzZGUzMmVlNmE0NjBlYTRhOGJiYzA0ZjBmY2ViYWMzZmY5MGVlNzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDY0
LDcgKzQ2NCw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpzaG91bGRTZW5kUGVuZGluZ01lc3Nh
Z2UoY29uc3QgUGVuZGluZ01lc3NhZ2UmIG1lc3NhZ2UpCiAgICAgaWYgKG1lc3NhZ2UuZW5jb2Rl
ci0+bWVzc2FnZU5hbWUoKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRSZXF1ZXN0
V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2gpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBtZXNzYWdl
LmVuY29kZXItPmJ1ZmZlcigpOwogICAgICAgICBhdXRvIGJ1ZmZlclNpemUgPSBtZXNzYWdlLmVu
Y29kZXItPmJ1ZmZlclNpemUoKTsKLSAgICAgICAgYXV0byBkZWNvZGVyID0gSVBDOjpEZWNvZGVy
OjpjcmVhdGUoYnVmZmVyLCBidWZmZXJTaXplLCBudWxscHRyLCB7IH0pOworICAgICAgICBhdXRv
IGRlY29kZXIgPSBJUEM6OkRlY29kZXI6OmNyZWF0ZShidWZmZXIsIGJ1ZmZlclNpemUsIHsgfSk7
CiAgICAgICAgIEFTU0VSVChkZWNvZGVyKTsKICAgICAgICAgaWYgKCFkZWNvZGVyKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJBdXRoblBy
b2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
NzllN2Y0NDE3YWExY2MzNDE4OTAxNjg0NDI1ZGY3YzlkMzdmMmE3Zi4uMTcyMWU4YmVhNTQwYjY4
MThhYWIxNDY5Njk4M2MwNzJhZjI4YWYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJB
dXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCkBAIC0zMyw2ICszMywxMCBAQAogI2luY2x1ZGUgIldlYkF1dGhuUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YS5oPgogCisjaWYgRU5BQkxF
KElQQ19URVNUSU5HX0FQSSkKKyNpbmNsdWRlICJJUENUZXN0ZXJNZXNzYWdlcy5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTY3
LDYgKzcxLDI5IEBAIHZvaWQgV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjCiAgICAgQ1JBU0goKTsKIH0KIAor
Ym9vbCBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyNpZiBF
TkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6SVBDVGVzdGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAg
ICAgICAgbV9pcGNUZXN0ZXIuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIs
IFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCit7CisjaWYgRU5BQkxFKElQ
Q19URVNUSU5HX0FQSSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6OklQQ1Rlc3Rlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIG1f
aXBjVGVzdGVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBs
eUVuY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKKwogdm9pZCBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1h
a2VDcmVkZW50aWFsKFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMmJiBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVx
dWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsKICAgICBoYW5kbGVSZXF1ZXN0KHsg
V1RGTW92ZShoYXNoKSwgV1RGTW92ZShvcHRpb25zKSwgbnVsbHB0ciwgV2ViQXV0aGVudGljYXRp
b25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCBw
cm9jZXNzaW5nVXNlckdlc3R1cmUsIFN0cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoaGFuZGxl
cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5D
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9X
ZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAyNzNiNDYxNTRjMmE1NDVjYzQ0
YmFhNzEwOGMyNzgwYmNmYjAxNzFlLi40OWZiNjQxNDdjYWEzMmNiMDE4YWRjMmNkMDE3ZTE0M2Rk
OGUzNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRo
bkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJv
Y2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMzIsNiArMzIsMTAgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KIAorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisjaW5jbHVkZSAiSVBD
VGVzdGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogZW51bSBjbGFzcyBBdXRo
ZW50aWNhdG9yQXR0YWNobWVudDsKIHN0cnVjdCBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhOwpA
QCAtNjcsNiArNzEsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVj
dGlvbiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgYm9vbCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5p
cXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKKworICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVy
PiYpOwogCiAgICAgLy8gUmVjZWl2ZXJzLgogICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoVmVjdG9y
PHVpbnQ4X3Q+JiYgaGFzaCwgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyYmLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBsZXRpb25IYW5k
bGVyJiYpOwpAQCAtNzYsOSArODQsMTMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaGFuZGxlUmVx
dWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYsIFJlcXVlc3RDb21wbGV0aW9uSGFu
ZGxlciYmKTsKIAorCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAg
IFJlZjxXZWJBdXRoblByb2Nlc3M+IG1fV2ViQXV0aG5Qcm9jZXNzOwogICAgIGNvbnN0IFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7CisjaWYgRU5BQkxF
KElQQ19URVNUSU5HX0FQSSkKKyAgICBJUENUZXN0ZXIgbV9pcGNUZXN0ZXI7CisjZW5kaWYKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJB
dXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IGFjNzNhOTUzNmE4OTIwMjJlMzNmYTZjMTQxNzI4NTlkZTJk
NWY0ZWMuLmU5OGQwYTYyODUyNGE5MDAzMGFjM2IzNDdjNDYyNTUwZmI5NDNmN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9X
ZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIyLDcgKzIyLDcg
QEAKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKLW1lc3NhZ2VzIC0+IFdlYkF1dGhuQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyB7CittZXNzYWdlcyAtPiBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogCiAgICAgTWFrZUNyZWRlbnRpYWwoVmVjdG9y
PHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAoc3RydWN0
IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQgV2ViQ29y
ZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYwogICAgIEdldEFzc2VydGlvbihWZWN0b3I8dWlu
dDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucyBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgLT4gKHN0cnVjdCBXZWJD
b3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEsIGVudW06aW50IFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRp
b25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk4ZDk0M2VmN2QxNmQ1ZjFiM2Y4MjcwMjAzYmU0YWEy
MWExNDRkNTguLjM1NzdhYmU4MGZjNTU5NjljNDI3YTEyNzkyMzUwYWY0NzcxYjBjMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMy
Myw2ICsxMzIzLDcgQEAKIAkJN0I3MzEyNDIyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5l
Y3Rpb25FbmNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjczMTIzOTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIu
aCAqLzsgfTsKIAkJN0JBQjExMTAyNUREMDJCMzAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCQUIxMTBGMjVERDAyQjIwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVj
ZWl2ZVF1ZXVlLmggKi87IH07CiAJCTdCQ0Y3MERFMjYxNUQwNkUwMEU0RkI3MCAvKiBTY29wZWRS
ZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkNGNzBDQjI2MTQ5MzVFMDBFNEZCNzAgLyogU2NvcGVk
UmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLm1tICovOyB9OworCQk3QkREQTMxOTI3NDdD
MDQwMDAzODY1OUUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
RGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdp
bkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNF
MUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJ
RGljdGlvbmFyeS5oICovOyB9OwpAQCAtNTAyNCw2ICs1MDI1LDggQEAKIAkJN0I0ODNGMUMyNUNE
REE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1
ZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXNzYWdlUmVj
ZWl2ZVF1ZXVlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0ODNGMUUy
NUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCNTBFOTdGMjc3MUY2Q0UwMDNEQUFDNCAvKiBJUENUZXN0ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSVBDVGVzdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I1MEU5ODAyNzcxRjZDRjAwM0RBQUM0IC8qIElQQ1Rlc3Rlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJUENUZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMw
QjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMjI1Q0M4
NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwNzMsNiArNzA3Niw4IEBACiAJCQkJMTE4
NTAyNjAyNjczQjBEQTAwQTY0MjVFIC8qIFhSICovLAogCQkJCUUzQkNFODc3MjY3MjUyMTIwMDEx
RDhEQiAvKiBBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMuY3BwICovLAogCQkJCUUzQkNFODc4MjY3
MjUyMTIwMDExRDhEQiAvKiBBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMuaCAqLywKKwkJCQk3QjUw
RTk3RjI3NzFGNkNFMDAzREFBQzQgLyogSVBDVGVzdGVyLmNwcCAqLywKKwkJCQk3QjUwRTk4MDI3
NzFGNkNGMDAzREFBQzQgLyogSVBDVGVzdGVyLmggKi8sCiAJCQkJQTdENzkyRDUxNzY3Q0I2RTAw
ODgxQ0JFIC8qIEFjdGl2aXR5QXNzZXJ0aW9uLmNwcCAqLywKIAkJCQlBN0Q3OTJENDE3NjdDQjA5
MDA4ODFDQkUgLyogQWN0aXZpdHlBc3NlcnRpb24uaCAqLywKIAkJCQlCQzMyOUQ5QTE2QUNDRTk5
MDAzMTZERTIgLyogQVBJV2ViQXJjaGl2ZS5oICovLApAQCAtMTI5NTIsNiArMTI5NTcsNyBAQAog
CQkJCUM1QkNFNURGMUM1MDc2NkEwMENERTNGQSAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0RDJDODExREY2MEJGMzAwMkVCMTBDIC8q
IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMzFG
NjBBNDI1Q0M3REI5MDBBRjE0RjQgLyogSVBDU2VtYXBob3JlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3QkREQTMxOTI3NDdDMDQwMDAzODY1OUUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OUI0NzkwOEYyNTMxNTFDQzAwRUMxMUFCIC8qIEpTSVBDQmluZGluZy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzE2NjNFNUIyNEFFQUEyRjAwQzZBM0IyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VY
UENDb25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTA5Mzc4MTRGQjEyOEMwMDExMzhE
OSAvKiBMYXllckhvc3RpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKaW5kZXggZTFhMzE0
MDEyYWQ4YzQwZDc1NGMwYmJjODc5MTkwMDk2ZDRiODdiOS4uNTRmNDY1N2Y4NDA2NDQxZGZjNDM4
ZDhjNTBmZDFiNzk1NmI4NTRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKQEAgLTE4ODYsNyArMTg4Niw3IEBAIHZvaWQgSlNN
ZXNzYWdlTGlzdGVuZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IElQQzo6RGVjb2RlciYgZGVj
b2RlcikKICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB0b0pTKG1fY29udGV4dCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QtPnZtKCkpOwogCi0gICAgYXV0byBtdXRh
YmxlRGVjb2RlciA9IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGRlY29kZXIuYnVmZmVyKCksIGRlY29k
ZXIubGVuZ3RoKCksIG51bGxwdHIsIHsgfSk7CisgICAgYXV0byBtdXRhYmxlRGVjb2RlciA9IElQ
Qzo6RGVjb2Rlcjo6Y3JlYXRlKGRlY29kZXIuYnVmZmVyKCksIGRlY29kZXIubGVuZ3RoKCksIHsg
fSk7CiAgICAgYXV0byogZGVzY3JpcHRpb24gPSBqc0Rlc2NyaXB0aW9uRnJvbURlY29kZXIoZ2xv
YmFsT2JqZWN0LCAqbXV0YWJsZURlY29kZXIpOwogCiAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSA9IHsgZGVzY3JpcHRpb24gPyB0b1JlZihnbG9iYWxPYmplY3QsIGRlc2NyaXB0aW9uKSA6IEpT
VmFsdWVNYWtlVW5kZWZpbmVkKG1fY29udGV4dCkgfTsKQEAgLTE5MDMsNyArMTkwMyw3IEBAIHZv
aWQgSlNNZXNzYWdlTGlzdGVuZXI6OndpbGxTZW5kTWVzc2FnZShjb25zdCBJUEM6OkVuY29kZXIm
IGVuY29kZXIsIE9wdGlvblNldDxJCiAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdG9KUyhtX2Nv
bnRleHQpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0LT52bSgpKTsK
IAotICAgIGF1dG8gZGVjb2RlciA9IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVy
KCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpLCBudWxscHRyLCB7IH0pOworICAgIGF1dG8gZGVjb2Rl
ciA9IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVy
U2l6ZSgpLCB7IH0pOwogICAgIGF1dG8qIGRlc2NyaXB0aW9uID0ganNEZXNjcmlwdGlvbkZyb21E
ZWNvZGVyKGdsb2JhbE9iamVjdCwgKmRlY29kZXIpOwogCiAgICAgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSA9IHsgZGVzY3JpcHRpb24gPyB0b1JlZihnbG9iYWxPYmplY3QsIGRlc2NyaXB0aW9uKSA6
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKG1fY29udGV4dCkgfTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwOGMwNzg3Y2YyMzg1
NmE5MzVhZGJhYjM0OWQ1OTk4MmE3Y2VkOTgwLi5mY2Q1ODRhZGViZmQ0ZjMzYzI1YWRjZjc4ZjE3
YTA0ZDU3NWMxMmVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTItMjEgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGluLXByb2Nl
c3MgdGVzdGluZyBvZiBJUEMgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMTY3NAorICAgICAgICA8cmRhcjovLzg0MTg5MzE0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGRvbmUtaXBjLWZ1
eml6bmcKKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogaXBjL3N0YXJ0
LW1lc3NhZ2UtdGVzdGluZy5odG1sOiBBZGRlZC4KKwogMjAyMS0xMi0yMCAgSm9uIExlZSAgPGpv
bmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZ2FyZGVuIEdQVSBQcm9jZXNz
IHRlc3QgZXhwZWN0YXRpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1MWFjOTMzNjUzYzNjNmZh
ODNjMzA5NDYwMGQ5N2Y5Yjk0NDQ2YjY0Li5iNzk2MTBjNWZiMTg2MjkwZDE5NTNkMjdhOTY4NWZj
NjhiMzYyNmIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUwNTYsNiArNTA1Niw5IEBAIHdlYmtp
dC5vcmcvYi8yMzMzNDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9u
L29mZnNldC1yb3RhdGUtMDAyCiAjIElQQyB0ZXN0IGZhaWxpbmcgaW4gRGVidWcgbW9kZSBkdWUg
dG8gYXNzZXJ0LgogWyBEZWJ1ZyBdIGlwYy9zZW5kLWludmFsaWQtbWVzc2FnZS5odG1sIFsgU2tp
cCBdCiAKKyMgVGhlIHRlc3QgaW52b2tlcyByYW5kb20gbWVzc2FnZXMsIHBvdGVudGlhbGx5IHBy
b2R1Y2VzIHJhbmRvbSByZXN1bHRzLgoraXBjL3N0YXJ0LW1lc3NhZ2UtdGVzdGluZy5odG1sIFsg
U2tpcCBdCisKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zaGFkb3ct
cGFydHMvaW50ZXJhY3Rpb24td2l0aC1uZXN0ZWQtcHNldWRvLWNsYXNzLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIzNDMxNSBbIERlYnVnIF0gZmFzdC9sYXllcnMv
dG9wLWxheWVyLWFuY2VzdG9yLW9wYWNpdHktYW5kLXRyYW5zZm9ybS1jcmFzaC5odG1sIFsgU2tp
cCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pcGMvc3RhcnQtbWVzc2FnZS10ZXN0aW5nLmh0
bWwgYi9MYXlvdXRUZXN0cy9pcGMvc3RhcnQtbWVzc2FnZS10ZXN0aW5nLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGIwOTM1YTVmZGZlNDVmMmRiOWM3OTIwOTg5Y2UzZjc2ZGY5MGRiNAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2lwYy9zdGFydC1tZXNzYWdlLXRlc3RpbmcuaHRtbApAQCAtMCww
ICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIElQQ1Rl
c3RpbmdBUElFbmFibGVkPXRydWUgXSAtLT4KKzxib2R5PgorPHNjcmlwdD4KK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwordmFyIGRyaXZlck5h
bWUgPSB7dHlwZTogIlN0cmluZyIsIHZhbHVlOiAiZGVmYXVsdCJ9OworCitmdW5jdGlvbiBzdG9w
KCkgeworICAgIGlmICh3aW5kb3cuSVBDKSB7CisgICAgICAgIElQQy5zZW5kU3luY01lc3NhZ2Uo
IkdQVSIsIDAsIElQQy5tZXNzYWdlcy5JUENUZXN0ZXJfU3RvcE1lc3NhZ2VUZXN0aW5nLm5hbWUs
IFtdKTsKKyAgICAgICAgSVBDLnNlbmRTeW5jTWVzc2FnZSgiTmV0d29ya2luZyIsIDAsIElQQy5t
ZXNzYWdlcy5JUENUZXN0ZXJfU3RvcE1lc3NhZ2VUZXN0aW5nLm5hbWUsIFtdKTsKKyAgICAgICAg
SVBDLnNlbmRTeW5jTWVzc2FnZSgiVUkiLCAwLCBJUEMubWVzc2FnZXMuSVBDVGVzdGVyX1N0b3BN
ZXNzYWdlVGVzdGluZy5uYW1lLCBbXSk7CisgICAgICAgIGNvbnNvbGUubG9nKCJzdG9wcGVkIik7
CisgICAgfQorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Cit9CisKK2lmICh3aW5kb3cuSVBDKSB7CisgICAgSVBDLnNlbmRNZXNzYWdl
KCJHUFUiLCAwLCBJUEMubWVzc2FnZXMuSVBDVGVzdGVyX1N0YXJ0TWVzc2FnZVRlc3RpbmcubmFt
ZSwgW2RyaXZlck5hbWVdKTsKKyAgICBJUEMuc2VuZE1lc3NhZ2UoIk5ldHdvcmtpbmciLCAwLCBJ
UEMubWVzc2FnZXMuSVBDVGVzdGVyX1N0YXJ0TWVzc2FnZVRlc3RpbmcubmFtZSwgW2RyaXZlck5h
bWVdKTsKKyAgICBJUEMuc2VuZE1lc3NhZ2UoIlVJIiwgMCwgSVBDLm1lc3NhZ2VzLklQQ1Rlc3Rl
cl9TdGFydE1lc3NhZ2VUZXN0aW5nLm5hbWUsIFtkcml2ZXJOYW1lXSk7CisgICAgY29uc29sZS5s
b2coInN0YXJ0ZWQiKTsKK30KK3NldFRpbWVvdXQoc3RvcCwgMzAwMCk7CisKKzwvc2NyaXB0Pgor
PHA+VGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2guPC9wPgorPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="commit-queue"
          id="473414"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447714</attachid>
            <date>2021-12-21 06:03:05 -0800</date>
            <delta_ts>2021-12-21 07:59:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231674-20211221160303.patch</filename>
            <type>text/plain</type>
            <size>49072</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFiZDFiZDFkZmU1YWM3MjNj
Y2Y5ZWQ4NThlODYwMzQ4Y2UzN2E0OTYuLmJhYjk5ZjM5ZTJlZjRkNDY4MjliMjZlMDA3NWI1ZTY5
M2M2ZGVlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMjEtMTItMjEgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGluLXByb2Nl
c3MgdGVzdGluZyBvZiBJUEMgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMTY3NAorICAgICAgICA8cmRhcjovLzg0MTg5MzE0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBJUENUZXN0
ZXIgc2VydmljZSB0byBVSSwgR1BVLCBOZXR3b3JrLCBBdXRobiBwcm9jZXNzLgorICAgICAgICBU
aGUgc2VydmljZSBjYW4gYmUgdXNlZCB0byBzZW5kIHJhbmRvbSBtZXNzYWdlcyB0byB0aGUgcHJv
Y2Vzc2VzLgorCisgICAgICAgIFRlc3Q6IGlwYy9zdGFydC1tZXNzYWdlLXRlc3RpbmcuaHRtbAor
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNo
TWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRp
c3BhdGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlRm9yVGVzdGluZyk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQpOgorICAgICAgICBSZW1vdmUgYXNzZXJ0cyBmcm9tIHRha2VBc3luY1JlcGx5SGFuZGxl
ciwgdGhleSdyZSBhbHJlYWR5IHByZXNlbnQKKyAgICAgICAgaW4gdGhlIGNhbGxlci4gVGhlIGNh
bGxlciBjYW4gZmlsdGVyIHRoZW0gYmFzZWQgb24gdGhlIHRlc3RpbmcgZmxhZywKKyAgICAgICAg
YWxsb3dpbmcgdGVzdGluZyB3aXRob3V0IGFzc2VydHMuCisgICAgICAgICogUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHA6CisgICAg
ICAgIChJUEM6OkRlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgIChJUEM6OkRlY29kZXI6OkRlY29k
ZXIpOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjp+RGVjb2Rlcik6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL0RlY29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlv
bkNvY29hLm1tOgorICAgICAgICAoSVBDOjpjcmVhdGVNZXNzYWdlRGVjb2Rlcik6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3dpbi9D
b25uZWN0aW9uV2luLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVhZEV2ZW50SGFu
ZGxlcik6CisgICAgICAgICogU2hhcmVkL0lQQ1Rlc3Rlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjptZXNzYWdlVGVzdERyaXZlcik6CisgICAgICAgIChXZWJLaXQ6OnJ1bk1lc3NhZ2VU
ZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGVyOjp+SVBDVGVzdGVyKToKKyAgICAg
ICAgKFdlYktpdDo6SVBDVGVzdGVyOjpzdGFydE1lc3NhZ2VUZXN0aW5nKToKKyAgICAgICAgKFdl
YktpdDo6SVBDVGVzdGVyOjpzdG9wTWVzc2FnZVRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpJ
UENUZXN0ZXI6OnN0b3BJZk5lZWRlZCk6CisgICAgICAgICogU2hhcmVkL0lQQ1Rlc3Rlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4uCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQ
cm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpkZWNvZGVMZWdhY3lTZXNzaW9uU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6c2hvdWxkU2VuZFBlbmRpbmdNZXNzYWdlKToKKyAgICAgICAgKiBXZWJB
dXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3Bh
dGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIFdlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5D
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9JUENU
ZXN0aW5nQVBJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNNZXNzYWdl
TGlzdGVuZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGlu
Z0FQSTo6SlNNZXNzYWdlTGlzdGVuZXI6OndpbGxTZW5kTWVzc2FnZSk6CisKIDIwMjEtMTItMjEg
IEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBJUEMgc3Ry
ZWFtcyBzaG91bGQgbm90IGFjY2VwdCAwLWxlbmd0aCBzdHJlYW0gYnVmZmVycwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0
cy50eHQKaW5kZXggMjU5ZTQ3MmI1N2QwYzY0ZmY3NDM3OWYyYzkyOWM4NzJjZmVmZTA4MS4uNzU2
ZGE4OGI0NWY3MDQyZjQyM2I3MzRjNzY0ZTY1NjZkNDQ2ZWZhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
CkBAIC0yMTQsNiArMjE0LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eQogCiAg
ICAgU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MKKyAgICBTaGFyZWQvSVBDVGVzdGVyCiAgICAgU2hh
cmVkL1dlYkNvbm5lY3Rpb24KIAogICAgIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbk1hbmFnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAppbmRleCA0MDRhNzIyYzc2OTAwMDBhMGYwM2I5YTgwMGRmYzViN2ExZTMwYmQwLi40YzY2
MjIwY2YxMjJhNTNiNzQ2OWQ0NDAwYzdjZGRiMjM1YzhiNzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xMjMsNiArMTIzLDcgQEAgJChQ
Uk9KRUNUX0RJUikvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvQXV4aWxpYXJ5
UHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL0hUVFBTVXBncmFkZS9I
VFRQU1VwZ3JhZGVMaXN0LnR4dAorJChQUk9KRUNUX0RJUikvU2hhcmVkL0lQQ1Rlc3Rlci5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQv
Tm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLm1lc3NhZ2Vz
LmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApp
bmRleCAzNjdlMGFjMTBmOGM1MGMwZjNmNGMxODUxMzE4ZWRiNTY1MWFhZTg2Li5lM2I1NTg0MGFl
MWVhZjU3ZjVlYmY3NTQyZTVlMWZkNDBlNWRkNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTQ2LDYgKzQ2LDkgQEAgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9HUFVQcm9jZXNzTWVzc2FnZXNSZXBs
aWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvR1BVUHJv
Y2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdC9HUFVQcm9jZXNzUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L0dQVVByb2Nlc3NQcm94eU1lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L0lQQ1Rl
c3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQvSVBDVGVzdGVyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdC9JUENUZXN0ZXJNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRl
eCBiNjIxODljYjQ3OGY1ZWUyZDE2ZmQ1MzE4NDFiOGMyNjZlY2I5N2UxLi43YWQ0OWUzNzM1ZjRi
NDc4YzQxNmQ5Mjk1YzEzOWJlOThmZDZjZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CkBAIC0xNDgsNiArMTQ4LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJU2hhcmVkL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlciBcCiAJU2hhcmVkL05vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyIFwKIAlTaGFyZWQvV2ViQ29ubmVjdGlv
biBcCisJU2hhcmVkL0lQQ1Rlc3RlciBcCiAJVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHkgXAogCVVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eSBcCiAJVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CmluZGV4IDcyYTQyMmQ0YWVmZDY2NTFmZjlkY2Y3ODQzN2MwNjQyYjJlNTE3ZGIuLjg1YjM5MTFj
ZDE3ODgxMDFmY2Y5MTk2NjkxZWVlNTcyNjg4OTczNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTE0OSw2
ICsxNDksMTAgQEAKICNpbmNsdWRlICJXQ0NvbnRlbnRCdWZmZXJNYW5hZ2VyLmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisjaW5jbHVkZSAiSVBDVGVzdGVyTWVzc2Fn
ZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCkBAIC03OTUsNiArNzk5LDEyIEBAIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDCiAgICAg
ICAgICAgICBtX3JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci0+ZGlkUmVjZWl2ZU1lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyNpZiBF
TkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6SVBDVGVzdGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAg
ICAgICAgbV9pcGNUZXN0ZXIuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgogCiAgICAgcmV0dXJuIG1lc3Nh
Z2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0K
QEAgLTg2OCw2ICs4NzgsMTIgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNw
YXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAgICAgICAgIC8vIFNraXAgbWVzc2FnZXMg
Zm9yIGFscmVhZHkgcmVtb3ZlZCByZWNlaXZlcnMuCiAgICAgICAgIHJldHVybiB0cnVlOworI2Vu
ZGlmCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OklQQ1Rlc3Rlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSB7CisgICAgICAgIG1faXBjVGVzdGVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CiAjZW5kaWYKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hTeW5jTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXgg
OTgxYjQ4ZTg3ZTZkODg2MjJiY2VkZDhiMjk4YTAyZTNhMDAwZTdiYS4uYzhhYmJmNDUwOWYyMmNl
YWMyYmUwZWMxZGU1YjM3YzRlODUwZWJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC02NCw2ICs2NCwxMCBAQAog
I2luY2x1ZGUgIldDTGF5ZXJUcmVlSG9zdElkZW50aWZpZXIuaCIKICNlbmRpZgogCisjaWYgRU5B
QkxFKElQQ19URVNUSU5HX0FQSSkKKyNpbmNsdWRlICJJUENUZXN0ZXIuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIHN0cnVjdCBTZWN1cml0
eU9yaWdpbkRhdGE7CkBAIC0zNDksNiArMzUzLDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoUk9V
VElOR19BUkJJVFJBVElPTikgJiYgSEFWRShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKICAgICBV
bmlxdWVSZWY8TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcj4gbV9yb3V0aW5nQXJi
aXRyYXRvcjsKICNlbmRpZgorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisgICAgSVBDVGVz
dGVyIG1faXBjVGVzdGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggOWM2ZGQ4Y2U0ZDhmMDZhMjAzYjY0MGFhMjJh
MDI1ZTk5N2YzMTAzNi4uODY1YTNmODdiMWE4NWNjNWU2OWM1ZWRlYzVhYzRjZTE5NDE2YWVlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTg1LDYgKzg1LDEwIEBACiAjaW5jbHVk
ZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShJ
UENfVEVTVElOR19BUEkpCisjaW5jbHVkZSAiSVBDVGVzdGVyTWVzc2FnZXMuaCIKKyNlbmRpZgor
CiAjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVB
U0VfTE9HKGNoYW5uZWwsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0g
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OiIgZm10LCB0aGlzLCB3ZWJQcm9jZXNzSWRl
bnRpZmllcigpLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKGNo
YW5uZWwsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OiIgZm10LCB0aGlzLCB3ZWJQcm9jZXNzSWRlbnRpZmllcigp
LnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCiAKQEAgLTI3Miw2ICsyNzYsMTggQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW8KICAgICAgICAgcmV0dXJuIHBheW1lbnRDb29yZGluYXRvcigpLmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSA9PSBNZXNzYWdlczo6SVBDVGVzdGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAg
ICAgbV9pcGNUZXN0ZXIuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworI2lmIEVOQUJMRShJUENfVEVTVElOR19B
UEkpCisgICAgaWYgKGNvbm5lY3Rpb24uaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nKCkp
CisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgV1RGTG9nQWx3YXlzKCJVbmhhbmRsZWQg
bmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgJyVzJyIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSkpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtMzQ4LDYgKzM2NCwx
NyBAQCBib29sIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkKICAgICAgICAgcmV0dXJuIHBheW1lbnRDb29yZGluYXRvcigpLmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseSk7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6SVBDVGVzdGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
IHsKKyAgICAgICAgbV9pcGNUZXN0ZXIuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIsIHJlcGx5KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisK
KyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIGlmIChjb25uZWN0aW9uLmlnbm9yZUlu
dmFsaWRNZXNzYWdlRm9yVGVzdGluZygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgog
CiAgICAgV1RGTG9nQWx3YXlzKCJVbmhhbmRsZWQgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgJyVz
JyIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSkpOwogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGU4MTdiN2I2MmQyNDk3ODdk
YzRhYjE5ZWRlYmIwYzRmNjg1MTJmMmUuLjJiODUyY2JjMjNiYWE3OTI0NGY3N2RkZmEyMGM2ZDg5
YWYzM2YwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTU2LDYgKzU2LDEwIEBACiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCisj
aWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyNpbmNsdWRlICJJUENUZXN0ZXIuaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgUEFMIHsKIGNsYXNzIFNlc3Npb25JRDsKIH0KQEAgLTQxNSw2ICs0MTks
OSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICBIYXNoU2V0PFVSTD4gbV9ibG9iVVJMczsKICAg
ICBIYXNoU2V0PFVSTD4gbV9ibG9iVVJMSGFuZGxlczsKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdf
QVBJKQorICAgIElQQ1Rlc3RlciBtX2lwY1Rlc3RlcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCmlu
ZGV4IDBkZGYwZDYwYjY3ZGUyYTMxMzIzZGNlMGY3OThiNGZmYWI2NWFjMzYuLjQ0ZDVlYzVkMjFi
MTU2N2M4MmFiNDY2ZWI3NzMyZDk5OTVkMWEyNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC04NzQsNiArODc0LDEzIEBAIHZvaWQgQ29ubmVjdGlvbjo6
YWRkTWVzc2FnZU9ic2VydmVyKGNvbnN0IE1lc3NhZ2VPYnNlcnZlciYgb2JzZXJ2ZXIpCiB7CiAg
ICAgbV9tZXNzYWdlT2JzZXJ2ZXJzLmFwcGVuZChvYnNlcnZlcik7CiB9CisKK3ZvaWQgQ29ubmVj
dGlvbjo6ZGlzcGF0Y2hJbmNvbWluZ01lc3NhZ2VGb3JUZXN0aW5nKHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiYmIGRlY29kZXIpCit7CisgICAgbV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoKFtw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGVjb2RlciA9IFdURk1vdmUoZGVjb2Rlcild
KCkgbXV0YWJsZSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPnByb2Nlc3NJbmNvbWluZ01lc3Nh
Z2UoV1RGTW92ZShkZWNvZGVyKSk7CisgICAgfSk7Cit9CiAjZW5kaWYKIAogdm9pZCBDb25uZWN0
aW9uOjpwb3N0Q29ubmVjdGlvbkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKCkKQEAgLTEw
NTYsNiArMTA2MywxMSBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBSZWNl
aXZlck5hbWU6OkFzeW5jUmVwbHkpIHsKICAgICAgICAgYXV0byBoYW5kbGVyID0gdGFrZUFzeW5j
UmVwbHlIYW5kbGVyKCp0aGlzLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAgICAgICAgIGlm
ICghaGFuZGxlcikgeworICAgICAgICAgICAgbWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdl
QXNJbnZhbGlkKCk7CisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICAgICAgICAgIGlm
IChtX2lnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZykKKyAgICAgICAgICAgICAgICByZXR1
cm47CisjZW5kaWYKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMjc0LDE3ICsxMjg2LDExIEBAIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRGVjb2RlciopPiB0YWtlQXN5bmNSZXBseUhhbmRsZXIoQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwKICAgICBMb2NrZXIgbG9ja2VyIHsgYXN5bmNSZXBseUhhbmRsZXJNYXBMb2Nr
IH07CiAgICAgYXV0byYgbWFwID0gYXN5bmNSZXBseUhhbmRsZXJNYXAoKTsKICAgICBhdXRvIGl0
ZXJhdG9yID0gbWFwLmZpbmQocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCZjb25uZWN0aW9u
KSk7Ci0gICAgaWYgKGl0ZXJhdG9yICE9IG1hcC5lbmQoKSkgewotICAgICAgICBpZiAoIWl0ZXJh
dG9yLT52YWx1ZS5pc1ZhbGlkS2V5KGlkZW50aWZpZXIpKSB7Ci0gICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGNvbm5lY3Rpb24ubWFya0N1cnJlbnRseURpc3Bh
dGNoZWRNZXNzYWdlQXNJbnZhbGlkKCk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgfQotICAgICAgICBBU1NFUlQoaXRlcmF0b3ItPnZhbHVlLmNvbnRhaW5zKGlkZW50aWZp
ZXIpKTsKLSAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZS50YWtlKGlkZW50aWZpZXIpOwot
ICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBpZiAoaXRlcmF0b3IgPT0gbWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBpZiAoIWl0ZXJhdG9yLT52YWx1ZS5pc1ZhbGlkS2V5KGlkZW50aWZpZXIpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlLnRha2UoaWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6d2FrZVVwUnVuTG9vcCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggODkyZTc1NjQ5YjU4ZTRhZjgwNmU4YzM2MDFk
NDlmNWNjNGE2YTFhNy4uNjBhNGQ5ODQyYzgwMzAxM2FlMjQ0N2NmZTI5NjM0NzllOTEyMTUzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMzIyLDYgKzMyMiw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5n
KCkgeyBtX2lnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZyA9IHRydWU7IH0KICAgICBib29s
IGlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIG1faWdub3Jl
SW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nOyB9CisgICAgdm9pZCBkaXNwYXRjaEluY29taW5nTWVz
c2FnZUZvclRlc3Rpbmcoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpOwogI2VuZGlmCiAKICAg
ICB2b2lkIGRpc3BhdGNoTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShNZXNzYWdlUmVjZWl2ZXImLCBz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29k
ZXIuY3BwCmluZGV4IDEzMzM2NDczNGI4MGU3YWMxY2EzMjhlNTIwZWY4Njc2YjRhYzczMGUuLjM2
YjNlYTNjZmU2OWJiYWI3NTdlZjUwMWFkMzA4YWQ1NDI5Y2U5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0RlY29kZXIuY3BwCkBAIC00NywzMiArNDcsMzIgQEAgc3RhdGljIGNvbnN0IHVp
bnQ4X3QqIGNvcHlCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6
ZSkKICAgICByZXR1cm4gYnVmZmVyQ29weTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
IERlY29kZXI6OmNyZWF0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXpl
LCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3IpKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBWZWN0
b3I8QXR0YWNobWVudD4mJiBhdHRhY2htZW50cykKK3N0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBE
ZWNvZGVyOjpjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwg
VmVjdG9yPEF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudHMpCiB7CiAgICAgQVNTRVJUKGJ1ZmZlcik7
CiAgICAgaWYgKFVOTElLRUxZKCFidWZmZXIpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxU
KElQQywgIkRlY29kZXI6OmNyZWF0ZSgpIGNhbGxlZCB3aXRoIGEgbnVsbCBidWZmZXIgKGJ1ZmZl
clNpemU6ICVsdSkiLCBidWZmZXJTaXplKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQorICAgIHJldHVybiBEZWNvZGVyOjpjcmVhdGUoY29weUJ1ZmZlcihidWZmZXIsIGJ1ZmZlclNp
emUpLCBidWZmZXJTaXplLCBbXShjb25zdCB1aW50OF90KiBwdHIsIHNpemVfdCkgeyBmYXN0RnJl
ZShjb25zdF9jYXN0PHVpbnQ4X3QqPihwdHIpKTsgfSwgV1RGTW92ZShhdHRhY2htZW50cykpOyAv
LyBOT0xJTlQKK30KIAotICAgIGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlckNvcHk7Ci0gICAgaWYgKCFi
dWZmZXJEZWFsbG9jYXRvcikgewotICAgICAgICBidWZmZXJDb3B5ID0gY29weUJ1ZmZlcihidWZm
ZXIsIGJ1ZmZlclNpemUpOwotICAgICAgICBBU1NFUlQoYnVmZmVyQ29weSk7Ci0gICAgICAgIGlm
IChVTkxJS0VMWSghYnVmZmVyQ29weSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9IGVsc2UKLSAgICAgICAgYnVmZmVyQ29weSA9IGJ1ZmZlcjsKLQotICAgIGF1dG8gZGVjb2Rl
ciA9IHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPihuZXcgRGVjb2RlcihidWZmZXJDb3B5LCBidWZm
ZXJTaXplLCBidWZmZXJEZWFsbG9jYXRvciwgV1RGTW92ZShhdHRhY2htZW50cykpKTsKK3N0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPiBEZWNvZGVyOjpjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVy
LCBzaXplX3QgYnVmZmVyU2l6ZSwgQnVmZmVyRGVhbGxvY2F0b3ImJiBidWZmZXJEZWFsbG9jYXRv
ciwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudHMpCit7CisgICAgQVNTRVJUKGJ1ZmZl
cik7CisgICAgaWYgKFVOTElLRUxZKCFidWZmZXIpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0ZB
VUxUKElQQywgIkRlY29kZXI6OmNyZWF0ZSgpIGNhbGxlZCB3aXRoIGEgbnVsbCBidWZmZXIgKGJ1
ZmZlclNpemU6ICVsdSkiLCBidWZmZXJTaXplKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorICAgIGF1dG8gZGVjb2RlciA9IHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPihuZXcgRGVj
b2RlcihidWZmZXIsIGJ1ZmZlclNpemUsIFdURk1vdmUoYnVmZmVyRGVhbGxvY2F0b3IpLCBXVEZN
b3ZlKGF0dGFjaG1lbnRzKSkpOwogICAgIHJldHVybiBkZWNvZGVyLT5pc1ZhbGlkKCkgPyBXVEZN
b3ZlKGRlY29kZXIpIDogbnVsbHB0cjsKIH0KIAotRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50
OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3Ip
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBWZWN0b3I8QXR0YWNobWVudD4mJiBhdHRhY2htZW50
cykKK0RlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVy
U2l6ZSwgQnVmZmVyRGVhbGxvY2F0b3ImJiBidWZmZXJEZWFsbG9jYXRvciwgVmVjdG9yPEF0dGFj
aG1lbnQ+JiYgYXR0YWNobWVudHMpCiAgICAgOiBtX2J1ZmZlciB7IGJ1ZmZlciB9CiAgICAgLCBt
X2J1ZmZlclBvcyB7IG1fYnVmZmVyIH0KICAgICAsIG1fYnVmZmVyRW5kIHsgbV9idWZmZXIgKyBi
dWZmZXJTaXplIH0KLSAgICAsIG1fYnVmZmVyRGVhbGxvY2F0b3IgeyBidWZmZXJEZWFsbG9jYXRv
ciB9CisgICAgLCBtX2J1ZmZlckRlYWxsb2NhdG9yIHsgV1RGTW92ZShidWZmZXJEZWFsbG9jYXRv
cikgfQogICAgICwgbV9hdHRhY2htZW50cyB7IFdURk1vdmUoYXR0YWNobWVudHMpIH0KIHsKICAg
ICBpZiAoVU5MSUtFTFkocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fYnVmZmVyKSAlIGFs
aWdub2YodWludDY0X3QpKSkgewpAQCAtMTA0LDEyICsxMDQsNyBAQCBEZWNvZGVyOjpEZWNvZGVy
KGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbVNpemUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSQogRGVjb2Rlcjo6fkRlY29kZXIoKQogewogICAgIEFTU0VSVChtX2J1ZmZlcik7Ci0K
LSAgICBpZiAobV9idWZmZXJEZWFsbG9jYXRvcikKLSAgICAgICAgbV9idWZmZXJEZWFsbG9jYXRv
cihtX2J1ZmZlciwgbV9idWZmZXJFbmQgLSBtX2J1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBm
YXN0RnJlZShjb25zdF9jYXN0PHVpbnQ4X3QqPihtX2J1ZmZlcikpOwotCisgICAgbV9idWZmZXJE
ZWFsbG9jYXRvcihtX2J1ZmZlciwgbV9idWZmZXJFbmQgLSBtX2J1ZmZlcik7CiAgICAgLy8gRklY
TUU6IFdlIG5lZWQgdG8gZGlzcG9zZSBvZiB0aGUgbWFjaCBwb3J0cyBpbiBjYXNlcyBvZiBmYWls
dXJlLgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKaW5kZXggNzA1MzVhZmI1
YzlkZWViMjY3MmEwNjA3NWI5YThjYTE1ZDc5OTQ0Mi4uYTkzNTZlYTEwOGJhYTM2MGI4ZWY5Mzli
MGE0NWUzYmJhYWMyM2E0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9PcHRp
b25TZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQ2LDcgKzQ3LDkgQEAgdGVt
cGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPiBzdHJ1Y3QgSGFzTW9kZXJuRGVjb2RlcjsKIGNsYXNz
IERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZl
ciwgc2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWlu
dDhfdCosIHNpemVfdCksIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBi
dWZmZXJTaXplLCBWZWN0b3I8QXR0YWNobWVudD4mJik7CisgICAgdXNpbmcgQnVmZmVyRGVhbGxv
Y2F0b3IgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPjsKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBidWZmZXIs
IHNpemVfdCBidWZmZXJTaXplLCBCdWZmZXJEZWFsbG9jYXRvciYmLCBWZWN0b3I8QXR0YWNobWVu
dD4mJik7CiAgICAgRGVjb2Rlcihjb25zdCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1T
aXplLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKIAogICAgIH5EZWNvZGVyKCk7CkBAIC0xMzks
NyArMTQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lQQ0RlY29k
ZXIgPSB0cnVlOwogCiBwcml2YXRlOgotICAgIERlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVy
LCBzaXplX3QgYnVmZmVyU2l6ZSwgdm9pZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50
OF90Kiwgc2l6ZV90KSwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYpOworICAgIERlY29kZXIoY29uc3Qg
dWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgQnVmZmVyRGVhbGxvY2F0b3ImJiwg
VmVjdG9yPEF0dGFjaG1lbnQ+JiYpOwogCiAgICAgYm9vbCBhbGlnbkJ1ZmZlclBvc2l0aW9uKHNp
emVfdCBhbGlnbm1lbnQsIHNpemVfdCk7CiAgICAgYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9D
b250YWluKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCkgY29uc3Q7CkBAIC0xNDcsNyArMTUwLDcg
QEAgcHJpdmF0ZToKICAgICBjb25zdCB1aW50OF90KiBtX2J1ZmZlcjsKICAgICBjb25zdCB1aW50
OF90KiBtX2J1ZmZlclBvczsKICAgICBjb25zdCB1aW50OF90KiBtX2J1ZmZlckVuZDsKLSAgICB2
b2lkICgqbV9idWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAg
QnVmZmVyRGVhbGxvY2F0b3IgbV9idWZmZXJEZWFsbG9jYXRvcjsKIAogICAgIFZlY3RvcjxBdHRh
Y2htZW50PiBtX2F0dGFjaG1lbnRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KaW5kZXggNjM4Y2YzMGZiMWU5ZWI0YWM1ODUy
ODk5ZmYyM2Q3NjE2ZjRmOTA4OS4uYTNhNWY0OTk1NmJmMTVjZjgwZGYzMjcyOGUxMzM3YjRkZTk5
ODk2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVj
dGlvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5l
Y3Rpb25Db2NvYS5tbQpAQCAtNDI2LDcgKzQyNiw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlciwK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJu
IERlY29kZXI6OmNyZWF0ZShib2R5LCBib2R5U2l6ZSwgbnVsbHB0ciwgVmVjdG9yPEF0dGFjaG1l
bnQ+IHsgfSk7CisgICAgICAgIHJldHVybiBEZWNvZGVyOjpjcmVhdGUoYm9keSwgYm9keVNpemUs
IHsgfSk7CiAgICAgfQogCiAgICAgbWFjaF9tc2dfYm9keV90KiBib2R5ID0gcmVpbnRlcnByZXRf
Y2FzdDxtYWNoX21zZ19ib2R5X3QqPihoZWFkZXIgKyAxKTsKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hf
bXNnX2hlYWRlcl90KiBoZWFkZXIsCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAot
ICAgIHJldHVybiBEZWNvZGVyOjpjcmVhdGUobWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwg
bnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOworICAgIHJldHVybiBEZWNvZGVyOjpjcmVh
dGUobWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgV1RGTW92ZShhdHRhY2htZW50cykpOwog
fQogCiAvLyBUaGUgcmVjZWl2ZSBidWZmZXIgc2l6ZSBzaG91bGQgYWx3YXlzIGluY2x1ZGUgdGhl
IG1heGltdW0gdHJhaWxlciBzaXplLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCBmMjIxZjkwOWZlNGU0OTBjYWY2ZmYwZDQ4
NmI4OWY3NDMwM2ViMTdiLi43NDZmM2Y2ZmQ3ZmJiYTA4YmMwOTUxMTQ3YzA2MjM2NGFiZTIxZGVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6cHJvY2Vzc01lc3Nh
Z2UoKQogICAgIGlmIChtZXNzYWdlSW5mby5pc0JvZHlPdXRPZkxpbmUoKSkKICAgICAgICAgbWVz
c2FnZUJvZHkgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvb2xNZXNzYWdlQm9keS0+ZGF0
YSgpKTsKIAotICAgIGF1dG8gZGVjb2RlciA9IERlY29kZXI6OmNyZWF0ZShtZXNzYWdlQm9keSwg
bWVzc2FnZUluZm8uYm9keVNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOwor
ICAgIGF1dG8gZGVjb2RlciA9IERlY29kZXI6OmNyZWF0ZShtZXNzYWdlQm9keSwgbWVzc2FnZUlu
Zm8uYm9keVNpemUoKSwgV1RGTW92ZShhdHRhY2htZW50cykpOwogICAgIEFTU0VSVChkZWNvZGVy
KTsKICAgICBpZiAoIWRlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAppbmRleCBhZmYzOWZj
MTAyZWQwNDcxMjFmM2YxYzJhZmE4ODllMDgyMjI4MTk4Li5kYThkN2YwZmI4ZWMwN2Y1OGU2ODFk
OGFiODkyYTgyOTdkMzY4OGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy93aW4vQ29ubmVjdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
d2luL0Nvbm5lY3Rpb25XaW4uY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBDb25uZWN0aW9u
OjpyZWFkRXZlbnRIYW5kbGVyKCkKIAogICAgICAgICBpZiAoIW1fcmVhZEJ1ZmZlci5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBtZXNzYWdlLCBsZXQncyBkaXNwYXRjaCBp
dC4KLSAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IERlY29kZXI6OmNyZWF0ZShtX3JlYWRCdWZm
ZXIuZGF0YSgpLCBtX3JlYWRCdWZmZXIuc2l6ZSgpLCBudWxscHRyLCB7IH0pOworICAgICAgICAg
ICAgYXV0byBkZWNvZGVyID0gRGVjb2Rlcjo6Y3JlYXRlKG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1f
cmVhZEJ1ZmZlci5zaXplKCksIHsgfSk7CiAgICAgICAgICAgICBBU1NFUlQoZGVjb2Rlcik7CiAg
ICAgICAgICAgICBpZiAoIWRlY29kZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0lQQ1Rlc3Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFiYTBiMDg4NzdjNDcyYTUwNzFmZjNh
YTNkODgwMTAyZjU3Yzg5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0lQQ1Rlc3Rlci5jcHAKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSVBDVGVzdGVyLmgiCisKKyNpZiBFTkFCTEUoSVBDX1RFU1RJ
TkdfQVBJKQorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisK
KyNpbmNsdWRlIDxkbGZjbi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3Rk
Lmg+CisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CisjaW5j
bHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CisKKy8vIFRoZSB0ZXN0ZXIgQVBJ
LgorZXh0ZXJuICJDIiB7CisvLyBSZXR1cm5zIDAgaWYgZHJpdmVyIHNob3VsZCBjb250aW51ZS4K
K3R5cGVkZWYgaW50ICgqV0tNZXNzYWdlVGVzdFNlbmRNZXNzYWdlRnVuYykoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHN6LCB2b2lkKiBjb250ZXh0KTsKK3R5cGVkZWYgdm9pZCAoKldLTWVz
c2FnZVRlc3REcml2ZXJGdW5jKShXS01lc3NhZ2VUZXN0U2VuZE1lc3NhZ2VGdW5jIHNlbmRNZXNz
YWdlRnVuYywgdm9pZCogY29udGV4dCk7Cit9CisKK25hbWVzcGFjZSB7CitzdHJ1Y3QgU2VuZE1l
c3NhZ2VDb250ZXh0IHsKKyAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb247CisgICAgc3Rk
OjphdG9taWM8Ym9vbD4mIHNob3VsZFN0b3A7Cit9OworfQorCitleHRlcm4gIkMiIHsKKworc3Rh
dGljIHZvaWQgZGVmYXVsdFRlc3REcml2ZXIoV0tNZXNzYWdlVGVzdFNlbmRNZXNzYWdlRnVuYyBz
ZW5kTWVzc2FnZUZ1bmMsIHZvaWQqIGNvbnRleHQpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGEoMTAwMCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAg
Y3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsK
KyAgICAgICAgaW50IHJldCA9IHNlbmRNZXNzYWdlRnVuYyhkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCksIGNvbnRleHQpOworICAgICAgICBpZiAocmV0KQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KK30KKworc3RhdGljIGludCBzZW5kVGVzdE1lc3NhZ2UoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUsIHZvaWQqIGNvbnRleHQpCit7CisgICAgYXV0byBtZXNzYWdlQ29udGV4dCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8U2VuZE1lc3NhZ2VDb250ZXh0Kj4oY29udGV4dCk7CisgICAgaWYg
KG1lc3NhZ2VDb250ZXh0LT5zaG91bGRTdG9wKQorICAgICAgICByZXR1cm4gMTsKKyAgICBhdXRv
JiB0ZXN0ZWRDb25uZWN0aW9uID0gbWVzc2FnZUNvbnRleHQtPmNvbm5lY3Rpb247CisgICAgaWYg
KCF0ZXN0ZWRDb25uZWN0aW9uLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgQmlu
YXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKKyAgICBhdXRvIGRlY29kZXIgPSBJUEM6OkRlY29kZXI6
OmNyZWF0ZShkYXRhLCBzaXplLCBbJnNlbWFwaG9yZV0gKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
IHsgc2VtYXBob3JlLnNpZ25hbCgpOyB9LCB7IH0pOyAvLyBOT0xJTlQKKyAgICBpZiAoZGVjb2Rl
cikgeworICAgICAgICB0ZXN0ZWRDb25uZWN0aW9uLmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlRm9y
VGVzdGluZyhXVEZNb3ZlKGRlY29kZXIpKTsKKyAgICAgICAgc2VtYXBob3JlLndhaXQoKTsKKyAg
ICB9CisgICAgcmV0dXJuIDA7Cit9CisKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRp
YyBXS01lc3NhZ2VUZXN0RHJpdmVyRnVuYyBtZXNzYWdlVGVzdERyaXZlcihTdHJpbmcmJiBkcml2
ZXJOYW1lKQoreworICAgIGlmIChkcml2ZXJOYW1lLmlzRW1wdHkoKSB8fCBkcml2ZXJOYW1lID09
ICJkZWZhdWx0IikKKyAgICAgICAgZHJpdmVyTmFtZSA9IGdldGVudigiV0VCS0lUX01FU1NBR0Vf
VEVTVF9ERUZBVUxUX0RSSVZFUiIpOworICAgIGlmIChkcml2ZXJOYW1lLmlzRW1wdHkoKSB8fCBk
cml2ZXJOYW1lID09ICJkZWZhdWx0IikKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRUZXN0RHJpdmVy
OworICAgIGF1dG8gdGVzdERyaXZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8V0tNZXNzYWdlVGVzdERy
aXZlckZ1bmM+KGRsc3ltKFJUTERfREVGQVVMVCwgZHJpdmVyTmFtZS51dGY4KCkuZGF0YSgpKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQodGVzdERyaXZlcik7CisgICAgcmV0dXJuIHRlc3REcml2ZXI7
Cit9CisKK3N0YXRpYyB2b2lkIHJ1bk1lc3NhZ2VUZXN0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgc3RkOjphdG9taWM8Ym9vbD4mIHNob3VsZFN0b3AsIFN0cmluZyYmIGRyaXZlck5h
bWUpCit7CisgICAgY29ubmVjdGlvbi5zZXRJZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3Rpbmco
KTsKKyAgICBTZW5kTWVzc2FnZUNvbnRleHQgY29udGV4dCB7IGNvbm5lY3Rpb24sIHNob3VsZFN0
b3AgfTsKKyAgICBhdXRvIGRyaXZlciA9IG1lc3NhZ2VUZXN0RHJpdmVyKFdURk1vdmUoZHJpdmVy
TmFtZSkpOworICAgIGRyaXZlcihzZW5kVGVzdE1lc3NhZ2UsICZjb250ZXh0KTsKK30KKworSVBD
VGVzdGVyOjpJUENUZXN0ZXIoKSA9IGRlZmF1bHQ7CisKK0lQQ1Rlc3Rlcjo6fklQQ1Rlc3Rlcigp
Cit7CisgICAgc3RvcElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgSVBDVGVzdGVyOjpzdGFydE1lc3Nh
Z2VUZXN0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyaW5nJiYgZHJpdmVyTmFt
ZSkKK3sKKyAgICBpZiAoIW1fdGVzdFF1ZXVlKQorICAgICAgICBtX3Rlc3RRdWV1ZSA9IFdvcmtR
dWV1ZTo6Y3JlYXRlKCJJUEMgdGVzdGluZyB3b3JrIHF1ZXVlIik7CisgICAgbV90ZXN0UXVldWUt
PmRpc3BhdGNoKFtjb25uZWN0aW9uID0gUmVmIHsgY29ubmVjdGlvbiB9LCAmc2hvdWxkU3RvcCA9
IG1fc2hvdWxkU3RvcCwgZHJpdmVyTmFtZSA9IFdURk1vdmUoZHJpdmVyTmFtZSldKCkgbXV0YWJs
ZSB7CisgICAgICAgIHJ1bk1lc3NhZ2VUZXN0aW5nKGNvbm5lY3Rpb24sIHNob3VsZFN0b3AsIFdU
Rk1vdmUoZHJpdmVyTmFtZSkpOworICAgIH0pOworfQorCit2b2lkIElQQ1Rlc3Rlcjo6c3RvcE1l
c3NhZ2VUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgc3RvcElmTmVlZGVkKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwor
dm9pZCBJUENUZXN0ZXI6OnN0b3BJZk5lZWRlZCgpCit7CisgICAgaWYgKG1fdGVzdFF1ZXVlKSB7
CisgICAgICAgIG1fc2hvdWxkU3RvcCA9IHRydWU7CisgICAgICAgIG1fdGVzdFF1ZXVlLT5kaXNw
YXRjaFN5bmMoW10geyB9KTsKKyAgICAgICAgbV90ZXN0UXVldWUgPSBudWxscHRyOworICAgIH0K
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rl
c3Rlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ5
OTA5MzViZDU1MWQ0ZWViNTgzNTQzZTEyZWNmZDNiODQ3MTg1ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisKKyNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8
d3RmL1dvcmtRdWV1ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSVBDVGVzdGVy
IGZpbmFsIDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBJUENU
ZXN0ZXIoKTsKKyAgICB+SVBDVGVzdGVyKCk7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYp
IGZpbmFsOworcHJpdmF0ZToKKyAgICAvLyBNZXNzYWdlcy4KKyAgICB2b2lkIHN0YXJ0TWVzc2Fn
ZVRlc3RpbmcoSVBDOjpDb25uZWN0aW9uJiwgU3RyaW5nJiYgZHJpdmVyTmFtZSk7CisgICAgdm9p
ZCBzdG9wTWVzc2FnZVRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPik7CisKKyAgICB2
b2lkIHN0b3BJZk5lZWRlZCgpOworCisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV90ZXN0UXVldWU7
CisgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9zaG91bGRTdG9wIHsgZmFsc2UgfTsKK307CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIubWVzc2FnZXMuaW4KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzY1YTk5ZTk4ZTUwZGViM2NkNTE5ZDFhNDdjOGMyZTU0NDcyNDVhZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5tZXNzYWdlcy5pbgpA
QCAtMCwwICsxLDMwIEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorCittZXNzYWdlcyAtPiBJUENUZXN0ZXIgTm90
UmVmQ291bnRlZCB7CisgICAgU3RhcnRNZXNzYWdlVGVzdGluZyhTdHJpbmcgZHJpdmVyTmFtZSkg
V2FudHNDb25uZWN0aW9uCisgICAgU3RvcE1lc3NhZ2VUZXN0aW5nKCkgLT4gKCkgU3luY2hyb25v
dXMKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA2Nzk2Mzc4OWZhMzQ3YmY4YWQ1NjRmOTVk
M2FmMWM5YjlhN2ZjMzk3Li4wZmEyY2JiNmI5YTQyNzFhNTY1ZGIyYWNmZGNlN2I3M2NmOGQ1ZTZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKQEAgLTIyMiw2ICsyMjIsNyBAQCBTaGFyZWQvRWRpdG9yU3RhdGUuY3Bw
CiBTaGFyZWQvRm9udEluZm8uY3BwCiBTaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHAKIFNoYXJlZC9J
bnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAKK1NoYXJlZC9JUENUZXN0ZXIuY3BwCiBTaGFyZWQv
TGF5ZXJUcmVlQ29udGV4dC5jcHAKIFNoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKIFNoYXJlZC9O
YXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAKQEAgLTg0NCw2ICs4NDUsNyBAQCBXZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAogCiBXZWJQcm9jZXNzL1hS
L1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5jcHAKIAorSVBDVGVzdGVyTWVzc2FnZVJlY2VpdmVyLmNw
cAogTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJU
Q0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJUQ0RhdGFDaGFu
bmVsUmVtb3RlTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNwcApp
bmRleCBlZDE0NDQ5Y2JmM2U0N2M1OTAyZjljOWU0ZWM1ZGE5YWZiZDI4MDExLi4yYzc5MTBkZDkz
M2ZkNGRmYTIwODVmMDhiNTJkZDg0YjIyOTcyMjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNwcApAQCAtNDgs
NyArNDgsNyBAQCBSZWZQdHI8QVBJOjpEYXRhPiBlbmNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoY29u
c3QgU2Vzc2lvblN0YXRlJiBzZXNzaW9uU3RhdGUpCiAKIGJvb2wgZGVjb2RlTGVnYWN5U2Vzc2lv
blN0YXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSwgU2Vzc2lvblN0YXRl
JiBzZXNzaW9uU3RhdGUpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gSVBDOjpEZWNvZGVyOjpjcmVh
dGUoZGF0YSwgZGF0YVNpemUsIG51bGxwdHIsIFZlY3RvcjxJUEM6OkF0dGFjaG1lbnQ+KCkpOwor
ICAgIGF1dG8gZGVjb2RlciA9IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGRhdGEsIGRhdGFTaXplLCB7
IH0pOwogICAgIGlmICghZGVjb2RlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMDk2MTM2N2E2MWU4OTY0
N2M0MGMwMzk2MmE0YmEzZDBlYTZiMWFiOS4uM2RlYmRjYjM1ZWY2NTg4NDI0YTBkYWMwNDYwZDI5
OWZkZmMzYzVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cApAQCAtMTQ3LDYgKzE0NywxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50
ZXIuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyNpbmNsdWRlICJJ
UENUZXN0ZXJNZXNzYWdlcy5oIgorI2VuZGlmCisKICNkZWZpbmUgV0VCUFJPQ0VTU1BPT0xfUkVM
RUFTRV9MT0coY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HKGNoYW5uZWwsICIlcCAtIFdl
YlByb2Nlc3NQb29sOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgV0VCUFJP
Q0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xP
RyhjaGFubmVsLCAiV2ViUHJvY2Vzc1Bvb2w6OiIgZm10LCAjI19fVkFfQVJHU19fKQogI2RlZmlu
ZSBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCBmbXQsIC4uLikgUkVM
RUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgIiVwIC0gV2ViUHJvY2Vzc1Bvb2w6OiIgZm10LCB0aGlz
LCAjI19fVkFfQVJHU19fKQpAQCAtMjQyLDYgKzI0Niw5IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQ
cm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikK
ICNlbmRpZgogCiAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUG9v
bDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CisjaWYgRU5BQkxFKElQQ19URVNUSU5H
X0FQSSkKKyAgICBhZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OklQQ1Rlc3Rlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2lwY1Rlc3Rlcik7CisjZW5kaWYKIAogICAgIC8vIE5PVEU6IFRo
ZXNlIHN1Yi1vYmplY3RzIG11c3QgYmUgaW5pdGlhbGl6ZWQgYWZ0ZXIgbV9tZXNzYWdlUmVjZWl2
ZXJNYXAuLgogICAgIGFkZFN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA1OWFiMTJhM2E3
YWE4ZTA5MzE5ZmI3ZmYwYWIzYTBlOTgyZGNkYjdlLi40MzJjNjVlZTk5NDljYWJiM2M5Mjc5ZDYx
NTgxZjgzNDY3NmIyMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKQEAgLTc1LDYgKzc1LDExIEBAIE9CSkNfQ0xBU1MgV0tXZWJJbnNwZWN0b3JQcmVmZXJlbmNl
T2JzZXJ2ZXI7CiAjaW5jbHVkZSA8cGFsL3N5c3RlbS9TeXN0ZW1TbGVlcExpc3RlbmVyLmg+CiAj
ZW5kaWYKIAorCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyNpbmNsdWRlICJJUENUZXN0
ZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEF1dG9tYXRpb25DbGllbnQ7
CiBjbGFzcyBEb3dubG9hZENsaWVudDsKQEAgLTgwMyw2ICs4MDgsOSBAQCBwcml2YXRlOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpQb3dlck9ic2VydmVyPiBtX3Bvd2VyT2JzZXJ2ZXI7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBBTDo6U3lzdGVtU2xlZXBMaXN0ZW5lcj4gbV9zeXN0ZW1T
bGVlcExpc3RlbmVyOwogI2VuZGlmCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICBJ
UENUZXN0ZXIgbV9pcGNUZXN0ZXI7CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBmZGZk
NDhjYTFlYmMwYTc0NzcyZjU4YmY5MGY1YjhhNGU3OWIzYWFkLi4wM2RlMzJlZTZhNDYwZWE0YThi
YmMwNGYwZmNlYmFjM2ZmOTBlZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBib29sIFdlYlByb2Nlc3NQcm94eTo6
c2hvdWxkU2VuZFBlbmRpbmdNZXNzYWdlKGNvbnN0IFBlbmRpbmdNZXNzYWdlJiBtZXNzYWdlKQog
ICAgIGlmIChtZXNzYWdlLmVuY29kZXItPm1lc3NhZ2VOYW1lKCkgPT0gSVBDOjpNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9Mb2FkUmVxdWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoKSB7CiAgICAgICAg
IGF1dG8gYnVmZmVyID0gbWVzc2FnZS5lbmNvZGVyLT5idWZmZXIoKTsKICAgICAgICAgYXV0byBi
dWZmZXJTaXplID0gbWVzc2FnZS5lbmNvZGVyLT5idWZmZXJTaXplKCk7Ci0gICAgICAgIGF1dG8g
ZGVjb2RlciA9IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGJ1ZmZlciwgYnVmZmVyU2l6ZSwgbnVsbHB0
ciwgeyB9KTsKKyAgICAgICAgYXV0byBkZWNvZGVyID0gSVBDOjpEZWNvZGVyOjpjcmVhdGUoYnVm
ZmVyLCBidWZmZXJTaXplLCB7IH0pOwogICAgICAgICBBU1NFUlQoZGVjb2Rlcik7CiAgICAgICAg
IGlmICghZGVjb2RlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCmluZGV4IDc5ZTdmNDQxN2FhMWNjMzQxODkwMTY4NDQyNWRmN2M5ZDM3
ZjJhN2YuLjE3MjFlOGJlYTU0MGI2ODE4YWFiMTQ2OTY5ODNjMDcyYWYyOGFmMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5D
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMzMsNiArMzMsMTAgQEAKICNpbmNsdWRlICJX
ZWJBdXRoblByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JSZXNwb25z
ZURhdGEuaD4KIAorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisjaW5jbHVkZSAiSVBDVGVz
dGVyTWVzc2FnZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC02Nyw2ICs3MSwyOSBAQCB2b2lkIFdlYkF1dGhuQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
YwogICAgIENSQVNIKCk7CiB9CiAKK2Jvb2wgV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29k
ZXImIGRlY29kZXIpCit7CisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OklQQ1Rlc3Rlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIG1faXBjVGVzdGVyLmRpZFJlY2VpdmVNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5k
aWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNv
ZGVyKQoreworI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpJUENUZXN0ZXI6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgeworICAgICAgICBtX2lwY1Rlc3Rlci5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorI2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQorCisKIHZvaWQgV2ViQXV0aG5Db25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjptYWtlQ3JlZGVudGlhbChWZWN0b3I8dWludDhfdD4mJiBoYXNo
LCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiYgb3B0aW9ucywgYm9vbCBwcm9j
ZXNzaW5nVXNlckdlc3R1cmUsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7
CiAgICAgaGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG51
bGxwdHIsIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRy
LCBzdGQ6Om51bGxvcHQsIHsgfSwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVs
bHB0ciB9LCBXVEZNb3ZlKGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
QXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5k
ZXggMjczYjQ2MTU0YzJhNTQ1Y2M0NGJhYTcxMDhjMjc4MGJjZmIwMTcxZS4uNDlmYjY0MTQ3Y2Fh
MzJjYjAxOGFkYzJjZDAxN2UxNDNkZDhlMzUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKQEAgLTMyLDYgKzMyLDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKKyNpZiBFTkFCTEUoSVBDX1RFU1RJ
TkdfQVBJKQorI2luY2x1ZGUgIklQQ1Rlc3Rlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGVudW0gY2xhc3MgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ7CiBzdHJ1Y3QgQXV0aGVu
dGljYXRvclJlc3BvbnNlRGF0YTsKQEAgLTY3LDYgKzcxLDEwIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIGZpbmFsOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CisKKyAgICBib29s
IGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKyAgICBi
b29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKIAogICAgIC8vIFJlY2VpdmVycy4KICAgICB2b2lk
IG1ha2VDcmVkZW50aWFsKFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFdlYkNvcmU6OlB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmJiwgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUs
IFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKQEAgLTc2LDkgKzg0LDEzIEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYm
LCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7CiAKKwogICAgIFJlZjxJUEM6OkNvbm5lY3Rp
b24+IG1fY29ubmVjdGlvbjsKICAgICBSZWY8V2ViQXV0aG5Qcm9jZXNzPiBtX1dlYkF1dGhuUHJv
Y2VzczsKICAgICBjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyOworI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisgICAgSVBDVGVzdGVyIG1f
aXBjVGVzdGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1
dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBhYzczYTk1MzZhODky
MDIyZTMzZmE2YzE0MTcyODU5ZGUyZDVmNGVjLi5lOThkMGE2Mjg1MjRhOTAwMzBhYzNiMzQ3YzQ2
MjU1MGZiOTQzZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9X
ZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCi1tZXNz
YWdlcyAtPiBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgeworbWVzc2FnZXMgLT4gV2Vi
QXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKIAogICAg
IE1ha2VDcmVkZW50aWFsKFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdV
c2VyR2VzdHVyZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRh
IGRhdGEsIGVudW06aW50IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1l
bnQsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKICAgICBH
ZXRBc3NlcnRpb24oVmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdl
c3R1cmUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRh
LCBlbnVtOmludCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBz
dHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5OGQ5NDNlZjdk
MTZkNWYxYjNmODI3MDIwM2JlNGFhMjFhMTQ0ZDU4Li4zNTc3YWJlODBmYzU1OTY5YzQyN2ExMjc5
MjM1MGFmNDc3MWIwYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEzMjMsNiArMTMyMyw3IEBACiAJCTdCNzMxMjQyMjVDQzg1MjUw
MDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi87IH07CiAJCTdCQUIxMTEwMjVERDAyQjMwMDhGQzQ3
OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkFCMTEwRjI1REQwMkIyMDA4RkM0NzkgLyog
U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovOyB9OwogCQk3QkNGNzBERTI2MTVE
MDZFMDBFNEZCNzAgLyogU2NvcGVkUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JDRjcwQ0IyNjE0
OTM1RTAwRTRGQjcwIC8qIFNjb3BlZFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5tbSAq
LzsgfTsKKwkJN0JEREEzMTkyNzQ3QzA0MDAwMzg2NTlFIC8qIChudWxsKSBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgfTsKIAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8q
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovOyB9OwogCQk3QzEzNUFBOTE3M0Iw
QkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxMzVBQTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdL
UGx1Z2luSW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QzFCQTMzRTFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxQkEzM0Mx
QTRBMEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCAqLzsgfTsKQEAgLTUwMjQsNiArNTAy
NSw4IEBACiAJCTdCNDgzRjFDMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2
IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCNDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1
ZXVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1
ZXVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjUwRTk3RjI3NzFGNkNFMDAz
REFBQzQgLyogSVBDVGVzdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElQQ1Rlc3Rlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNTBFOTgwMjc3MUY2Q0YwMDNEQUFDNCAv
KiBJUENUZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSVBDVGVzdGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMxMjVDQzg1MjMwMDNC
Mjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MDcz
LDYgKzcwNzYsOCBAQAogCQkJCTExODUwMjYwMjY3M0IwREEwMEE2NDI1RSAvKiBYUiAqLywKIAkJ
CQlFM0JDRTg3NzI2NzI1MjEyMDAxMUQ4REIgLyogQWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzLmNw
cCAqLywKIAkJCQlFM0JDRTg3ODI2NzI1MjEyMDAxMUQ4REIgLyogQWNjZXNzaWJpbGl0eVByZWZl
cmVuY2VzLmggKi8sCisJCQkJN0I1MEU5N0YyNzcxRjZDRTAwM0RBQUM0IC8qIElQQ1Rlc3Rlci5j
cHAgKi8sCisJCQkJN0I1MEU5ODAyNzcxRjZDRjAwM0RBQUM0IC8qIElQQ1Rlc3Rlci5oICovLAog
CQkJCUE3RDc5MkQ1MTc2N0NCNkUwMDg4MUNCRSAvKiBBY3Rpdml0eUFzc2VydGlvbi5jcHAgKi8s
CiAJCQkJQTdENzkyRDQxNzY3Q0IwOTAwODgxQ0JFIC8qIEFjdGl2aXR5QXNzZXJ0aW9uLmggKi8s
CiAJCQkJQkMzMjlEOUExNkFDQ0U5OTAwMzE2REUyIC8qIEFQSVdlYkFyY2hpdmUuaCAqLywKQEAg
LTEyOTUyLDYgKzEyOTU3LDcgQEAKIAkJCQlDNUJDRTVERjFDNTA3NjZBMDBDREUzRkEgLyogSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJENEQy
QzgxMURGNjBCRjMwMDJFQjEwQyAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTMxRjYwQTQyNUNDN0RCOTAwQUYxNEY0IC8qIElQQ1NlbWFwaG9y
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0JEREEzMTkyNzQ3QzA0MDAwMzg2NTlFIC8qIChudWxs
KSBpbiBIZWFkZXJzICovLAogCQkJCTlCNDc5MDhGMjUzMTUxQ0MwMEVDMTFBQiAvKiBKU0lQQ0Jp
bmRpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxNjYzRTVCMjRBRUFBMkYwMEM2QTNCMiAvKiBM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0UwOTM3ODE0RkIxMjhDMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENU
ZXN0aW5nQVBJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3Rp
bmdBUEkuY3BwCmluZGV4IGUxYTMxNDAxMmFkOGM0MGQ3NTRjMGJiYzg3OTE5MDA5NmQ0Yjg3Yjku
LjU0ZjQ2NTdmODQwNjQ0MWRmYzQzOGQ4YzUwZmQxYjc5NTZiODU0ZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCkBAIC0xODg2
LDcgKzE4ODYsNyBAQCB2b2lkIEpTTWVzc2FnZUxpc3RlbmVyOjpkaWRSZWNlaXZlTWVzc2FnZShj
b25zdCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdG9K
UyhtX2NvbnRleHQpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0LT52
bSgpKTsKIAotICAgIGF1dG8gbXV0YWJsZURlY29kZXIgPSBJUEM6OkRlY29kZXI6OmNyZWF0ZShk
ZWNvZGVyLmJ1ZmZlcigpLCBkZWNvZGVyLmxlbmd0aCgpLCBudWxscHRyLCB7IH0pOworICAgIGF1
dG8gbXV0YWJsZURlY29kZXIgPSBJUEM6OkRlY29kZXI6OmNyZWF0ZShkZWNvZGVyLmJ1ZmZlcigp
LCBkZWNvZGVyLmxlbmd0aCgpLCB7IH0pOwogICAgIGF1dG8qIGRlc2NyaXB0aW9uID0ganNEZXNj
cmlwdGlvbkZyb21EZWNvZGVyKGdsb2JhbE9iamVjdCwgKm11dGFibGVEZWNvZGVyKTsKIAogICAg
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10gPSB7IGRlc2NyaXB0aW9uID8gdG9SZWYoZ2xvYmFsT2Jq
ZWN0LCBkZXNjcmlwdGlvbikgOiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChtX2NvbnRleHQpIH07CkBA
IC0xOTAzLDcgKzE5MDMsNyBAQCB2b2lkIEpTTWVzc2FnZUxpc3RlbmVyOjp3aWxsU2VuZE1lc3Nh
Z2UoY29uc3QgSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBPcHRpb25TZXQ8SQogICAgIGF1dG8qIGds
b2JhbE9iamVjdCA9IHRvSlMobV9jb250ZXh0KTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2Nr
KGdsb2JhbE9iamVjdC0+dm0oKSk7CiAKLSAgICBhdXRvIGRlY29kZXIgPSBJUEM6OkRlY29kZXI6
OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSwgbnVsbHB0ciwg
eyB9KTsKKyAgICBhdXRvIGRlY29kZXIgPSBJUEM6OkRlY29kZXI6OmNyZWF0ZShlbmNvZGVyLmJ1
ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSwgeyB9KTsKICAgICBhdXRvKiBkZXNjcmlwdGlv
biA9IGpzRGVzY3JpcHRpb25Gcm9tRGVjb2RlcihnbG9iYWxPYmplY3QsICpkZWNvZGVyKTsKIAog
ICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzW10gPSB7IGRlc2NyaXB0aW9uID8gdG9SZWYoZ2xvYmFs
T2JqZWN0LCBkZXNjcmlwdGlvbikgOiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChtX2NvbnRleHQpIH07
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMDhjMDc4N2NmMjM4NTZhOTM1YWRiYWIzNDlkNTk5ODJhN2NlZDk4MC4uZmNkNTg0
YWRlYmZkNGYzM2MyNWFkY2Y3OGYxN2EwNGQ1NzVjMTJlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDIxLTEyLTIxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgU3VwcG9ydCBpbi1wcm9jZXNzIHRlc3Rpbmcgb2YgSVBDIG1lc3NhZ2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE2NzQKKyAgICAgICAg
PHJkYXI6Ly84NDE4OTMxND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBkb25lLWlwYy1mdXppem5nCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICAqIGlwYy9zdGFydC1tZXNzYWdlLXRlc3RpbmcuaHRtbDogQWRkZWQuCisKIDIw
MjEtMTItMjAgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIGdhcmRlbiBHUFUgUHJvY2VzcyB0ZXN0IGV4cGVjdGF0aW9ucwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggNTFhYzkzMzY1M2MzYzZmYTgzYzMwOTQ2MDBkOTdmOWI5NDQ0NmI2NC4uYjc5NjEwYzVm
YjE4NjI5MGQxOTUzZDI3YTk2ODVmYzY4YjM2MjZiMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC01
MDU2LDYgKzUwNTYsOSBAQCB3ZWJraXQub3JnL2IvMjMzMzQ0IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtcm90YXRlLTAwMgogIyBJUEMgdGVzdCBmYWls
aW5nIGluIERlYnVnIG1vZGUgZHVlIHRvIGFzc2VydC4KIFsgRGVidWcgXSBpcGMvc2VuZC1pbnZh
bGlkLW1lc3NhZ2UuaHRtbCBbIFNraXAgXQogCisjIFRoZSB0ZXN0IGludm9rZXMgcmFuZG9tIG1l
c3NhZ2VzLCBwb3RlbnRpYWxseSBwcm9kdWNlcyByYW5kb20gcmVzdWx0cy4KK2lwYy9zdGFydC1t
ZXNzYWdlLXRlc3RpbmcuaHRtbCBbIFNraXAgXQorCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3Mtc2hhZG93LXBhcnRzL2ludGVyYWN0aW9uLXdpdGgtbmVzdGVkLXBzZXVk
by1jbGFzcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMzQzMTUg
WyBEZWJ1ZyBdIGZhc3QvbGF5ZXJzL3RvcC1sYXllci1hbmNlc3Rvci1vcGFjaXR5LWFuZC10cmFu
c2Zvcm0tY3Jhc2guaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaXBjL3N0
YXJ0LW1lc3NhZ2UtdGVzdGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaXBjL3N0YXJ0LW1lc3NhZ2Ut
dGVzdGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiMDkzNWE1ZmRmZTQ1ZjJkYjljNzkyMDk4OWNlM2Y3
NmRmOTBkYjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pcGMvc3RhcnQtbWVzc2Fn
ZS10ZXN0aW5nLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyBJUENUZXN0aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8Ym9keT4K
KzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisKK3ZhciBkcml2ZXJOYW1lID0ge3R5cGU6ICJTdHJpbmciLCB2YWx1ZTogImRlZmF1
bHQifTsKKworZnVuY3Rpb24gc3RvcCgpIHsKKyAgICBpZiAod2luZG93LklQQykgeworICAgICAg
ICBJUEMuc2VuZFN5bmNNZXNzYWdlKCJHUFUiLCAwLCBJUEMubWVzc2FnZXMuSVBDVGVzdGVyX1N0
b3BNZXNzYWdlVGVzdGluZy5uYW1lLCBbXSk7CisgICAgICAgIElQQy5zZW5kU3luY01lc3NhZ2Uo
Ik5ldHdvcmtpbmciLCAwLCBJUEMubWVzc2FnZXMuSVBDVGVzdGVyX1N0b3BNZXNzYWdlVGVzdGlu
Zy5uYW1lLCBbXSk7CisgICAgICAgIElQQy5zZW5kU3luY01lc3NhZ2UoIlVJIiwgMCwgSVBDLm1l
c3NhZ2VzLklQQ1Rlc3Rlcl9TdG9wTWVzc2FnZVRlc3RpbmcubmFtZSwgW10pOworICAgICAgICBj
b25zb2xlLmxvZygic3RvcHBlZCIpOworICAgIH0KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitpZiAod2luZG93LklQQykg
eworICAgIElQQy5zZW5kTWVzc2FnZSgiR1BVIiwgMCwgSVBDLm1lc3NhZ2VzLklQQ1Rlc3Rlcl9T
dGFydE1lc3NhZ2VUZXN0aW5nLm5hbWUsIFtkcml2ZXJOYW1lXSk7CisgICAgSVBDLnNlbmRNZXNz
YWdlKCJOZXR3b3JraW5nIiwgMCwgSVBDLm1lc3NhZ2VzLklQQ1Rlc3Rlcl9TdGFydE1lc3NhZ2VU
ZXN0aW5nLm5hbWUsIFtkcml2ZXJOYW1lXSk7CisgICAgSVBDLnNlbmRNZXNzYWdlKCJVSSIsIDAs
IElQQy5tZXNzYWdlcy5JUENUZXN0ZXJfU3RhcnRNZXNzYWdlVGVzdGluZy5uYW1lLCBbZHJpdmVy
TmFtZV0pOworICAgIGNvbnNvbGUubG9nKCJzdGFydGVkIik7Cit9CitzZXRUaW1lb3V0KHN0b3As
IDMwMDApOworCis8L3NjcmlwdD4KKzxwPlRlc3QgcGFzc2VzIGlmIGl0IGRvZXMgbm90IGNyYXNo
LjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447716</attachid>
            <date>2021-12-21 07:59:59 -0800</date>
            <delta_ts>2022-01-20 11:57:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231674-20211221175957.patch</filename>
            <type>text/plain</type>
            <size>49398</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFiZDFiZDFkZmU1YWM3MjNj
Y2Y5ZWQ4NThlODYwMzQ4Y2UzN2E0OTYuLmJhYjk5ZjM5ZTJlZjRkNDY4MjliMjZlMDA3NWI1ZTY5
M2M2ZGVlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMjEtMTItMjEgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGluLXByb2Nl
c3MgdGVzdGluZyBvZiBJUEMgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMTY3NAorICAgICAgICA8cmRhcjovLzg0MTg5MzE0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBJUENUZXN0
ZXIgc2VydmljZSB0byBVSSwgR1BVLCBOZXR3b3JrLCBBdXRobiBwcm9jZXNzLgorICAgICAgICBU
aGUgc2VydmljZSBjYW4gYmUgdXNlZCB0byBzZW5kIHJhbmRvbSBtZXNzYWdlcyB0byB0aGUgcHJv
Y2Vzc2VzLgorCisgICAgICAgIFRlc3Q6IGlwYy9zdGFydC1tZXNzYWdlLXRlc3RpbmcuaHRtbAor
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNo
TWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRp
c3BhdGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlRm9yVGVzdGluZyk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQpOgorICAgICAgICBSZW1vdmUgYXNzZXJ0cyBmcm9tIHRha2VBc3luY1JlcGx5SGFuZGxl
ciwgdGhleSdyZSBhbHJlYWR5IHByZXNlbnQKKyAgICAgICAgaW4gdGhlIGNhbGxlci4gVGhlIGNh
bGxlciBjYW4gZmlsdGVyIHRoZW0gYmFzZWQgb24gdGhlIHRlc3RpbmcgZmxhZywKKyAgICAgICAg
YWxsb3dpbmcgdGVzdGluZyB3aXRob3V0IGFzc2VydHMuCisgICAgICAgICogUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHA6CisgICAg
ICAgIChJUEM6OkRlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgIChJUEM6OkRlY29kZXI6OkRlY29k
ZXIpOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjp+RGVjb2Rlcik6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL0RlY29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlv
bkNvY29hLm1tOgorICAgICAgICAoSVBDOjpjcmVhdGVNZXNzYWdlRGVjb2Rlcik6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3dpbi9D
b25uZWN0aW9uV2luLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVhZEV2ZW50SGFu
ZGxlcik6CisgICAgICAgICogU2hhcmVkL0lQQ1Rlc3Rlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjptZXNzYWdlVGVzdERyaXZlcik6CisgICAgICAgIChXZWJLaXQ6OnJ1bk1lc3NhZ2VU
ZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGVyOjp+SVBDVGVzdGVyKToKKyAgICAg
ICAgKFdlYktpdDo6SVBDVGVzdGVyOjpzdGFydE1lc3NhZ2VUZXN0aW5nKToKKyAgICAgICAgKFdl
YktpdDo6SVBDVGVzdGVyOjpzdG9wTWVzc2FnZVRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpJ
UENUZXN0ZXI6OnN0b3BJZk5lZWRlZCk6CisgICAgICAgICogU2hhcmVkL0lQQ1Rlc3Rlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4uCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQ
cm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpkZWNvZGVMZWdhY3lTZXNzaW9uU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6c2hvdWxkU2VuZFBlbmRpbmdNZXNzYWdlKToKKyAgICAgICAgKiBXZWJB
dXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3Bh
dGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIFdlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5D
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9JUENU
ZXN0aW5nQVBJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNNZXNzYWdl
TGlzdGVuZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGlu
Z0FQSTo6SlNNZXNzYWdlTGlzdGVuZXI6OndpbGxTZW5kTWVzc2FnZSk6CisKIDIwMjEtMTItMjEg
IEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBJUEMgc3Ry
ZWFtcyBzaG91bGQgbm90IGFjY2VwdCAwLWxlbmd0aCBzdHJlYW0gYnVmZmVycwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0
cy50eHQKaW5kZXggMjU5ZTQ3MmI1N2QwYzY0ZmY3NDM3OWYyYzkyOWM4NzJjZmVmZTA4MS4uNzU2
ZGE4OGI0NWY3MDQyZjQyM2I3MzRjNzY0ZTY1NjZkNDQ2ZWZhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
CkBAIC0yMTQsNiArMjE0LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eQogCiAg
ICAgU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MKKyAgICBTaGFyZWQvSVBDVGVzdGVyCiAgICAgU2hh
cmVkL1dlYkNvbm5lY3Rpb24KIAogICAgIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbk1hbmFnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAppbmRleCA0MDRhNzIyYzc2OTAwMDBhMGYwM2I5YTgwMGRmYzViN2ExZTMwYmQwLi40YzY2
MjIwY2YxMjJhNTNiNzQ2OWQ0NDAwYzdjZGRiMjM1YzhiNzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xMjMsNiArMTIzLDcgQEAgJChQ
Uk9KRUNUX0RJUikvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvQXV4aWxpYXJ5
UHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL0hUVFBTVXBncmFkZS9I
VFRQU1VwZ3JhZGVMaXN0LnR4dAorJChQUk9KRUNUX0RJUikvU2hhcmVkL0lQQ1Rlc3Rlci5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQv
Tm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLm1lc3NhZ2Vz
LmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApp
bmRleCAzNjdlMGFjMTBmOGM1MGMwZjNmNGMxODUxMzE4ZWRiNTY1MWFhZTg2Li5lM2I1NTg0MGFl
MWVhZjU3ZjVlYmY3NTQyZTVlMWZkNDBlNWRkNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTQ2LDYgKzQ2LDkgQEAgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9HUFVQcm9jZXNzTWVzc2FnZXNSZXBs
aWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvR1BVUHJv
Y2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdC9HUFVQcm9jZXNzUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L0dQVVByb2Nlc3NQcm94eU1lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L0lQQ1Rl
c3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQvSVBDVGVzdGVyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdC9JUENUZXN0ZXJNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRl
eCBiNjIxODljYjQ3OGY1ZWUyZDE2ZmQ1MzE4NDFiOGMyNjZlY2I5N2UxLi43YWQ0OWUzNzM1ZjRi
NDc4YzQxNmQ5Mjk1YzEzOWJlOThmZDZjZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CkBAIC0xNDgsNiArMTQ4LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJU2hhcmVkL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlciBcCiAJU2hhcmVkL05vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyIFwKIAlTaGFyZWQvV2ViQ29ubmVjdGlv
biBcCisJU2hhcmVkL0lQQ1Rlc3RlciBcCiAJVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHkgXAogCVVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eSBcCiAJVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CmluZGV4IDcyYTQyMmQ0YWVmZDY2NTFmZjlkY2Y3ODQzN2MwNjQyYjJlNTE3ZGIuLjg1YjM5MTFj
ZDE3ODgxMDFmY2Y5MTk2NjkxZWVlNTcyNjg4OTczNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTE0OSw2
ICsxNDksMTAgQEAKICNpbmNsdWRlICJXQ0NvbnRlbnRCdWZmZXJNYW5hZ2VyLmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisjaW5jbHVkZSAiSVBDVGVzdGVyTWVzc2Fn
ZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCkBAIC03OTUsNiArNzk5LDEyIEBAIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDCiAgICAg
ICAgICAgICBtX3JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci0+ZGlkUmVjZWl2ZU1lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyNpZiBF
TkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6SVBDVGVzdGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAg
ICAgICAgbV9pcGNUZXN0ZXIuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgogCiAgICAgcmV0dXJuIG1lc3Nh
Z2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0K
QEAgLTg2OCw2ICs4NzgsMTIgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNw
YXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAgICAgICAgIC8vIFNraXAgbWVzc2FnZXMg
Zm9yIGFscmVhZHkgcmVtb3ZlZCByZWNlaXZlcnMuCiAgICAgICAgIHJldHVybiB0cnVlOworI2Vu
ZGlmCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OklQQ1Rlc3Rlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSB7CisgICAgICAgIG1faXBjVGVzdGVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CiAjZW5kaWYKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hTeW5jTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXgg
OTgxYjQ4ZTg3ZTZkODg2MjJiY2VkZDhiMjk4YTAyZTNhMDAwZTdiYS4uYzhhYmJmNDUwOWYyMmNl
YWMyYmUwZWMxZGU1YjM3YzRlODUwZWJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC02NCw2ICs2NCwxMCBAQAog
I2luY2x1ZGUgIldDTGF5ZXJUcmVlSG9zdElkZW50aWZpZXIuaCIKICNlbmRpZgogCisjaWYgRU5B
QkxFKElQQ19URVNUSU5HX0FQSSkKKyNpbmNsdWRlICJJUENUZXN0ZXIuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIHN0cnVjdCBTZWN1cml0
eU9yaWdpbkRhdGE7CkBAIC0zNDksNiArMzUzLDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoUk9V
VElOR19BUkJJVFJBVElPTikgJiYgSEFWRShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKICAgICBV
bmlxdWVSZWY8TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvcj4gbV9yb3V0aW5nQXJi
aXRyYXRvcjsKICNlbmRpZgorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisgICAgSVBDVGVz
dGVyIG1faXBjVGVzdGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggOWM2ZGQ4Y2U0ZDhmMDZhMjAzYjY0MGFhMjJh
MDI1ZTk5N2YzMTAzNi4uODY1YTNmODdiMWE4NWNjNWU2OWM1ZWRlYzVhYzRjZTE5NDE2YWVlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTg1LDYgKzg1LDEwIEBACiAjaW5jbHVk
ZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShJ
UENfVEVTVElOR19BUEkpCisjaW5jbHVkZSAiSVBDVGVzdGVyTWVzc2FnZXMuaCIKKyNlbmRpZgor
CiAjZGVmaW5lIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVB
U0VfTE9HKGNoYW5uZWwsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0g
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OiIgZm10LCB0aGlzLCB3ZWJQcm9jZXNzSWRl
bnRpZmllcigpLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SKGNo
YW5uZWwsICIlcCAtIFt3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQgIl0gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OiIgZm10LCB0aGlzLCB3ZWJQcm9jZXNzSWRlbnRpZmllcigp
LnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCiAKQEAgLTI3Miw2ICsyNzYsMTggQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW8KICAgICAgICAgcmV0dXJuIHBheW1lbnRDb29yZGluYXRvcigpLmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSA9PSBNZXNzYWdlczo6SVBDVGVzdGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAg
ICAgbV9pcGNUZXN0ZXIuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworI2lmIEVOQUJMRShJUENfVEVTVElOR19B
UEkpCisgICAgaWYgKGNvbm5lY3Rpb24uaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nKCkp
CisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgV1RGTG9nQWx3YXlzKCJVbmhhbmRsZWQg
bmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgJyVzJyIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSkpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtMzQ4LDYgKzM2NCwx
NyBAQCBib29sIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkKICAgICAgICAgcmV0dXJuIHBheW1lbnRDb29yZGluYXRvcigpLmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseSk7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6SVBDVGVzdGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
IHsKKyAgICAgICAgbV9pcGNUZXN0ZXIuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIsIHJlcGx5KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisK
KyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIGlmIChjb25uZWN0aW9uLmlnbm9yZUlu
dmFsaWRNZXNzYWdlRm9yVGVzdGluZygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgog
CiAgICAgV1RGTG9nQWx3YXlzKCJVbmhhbmRsZWQgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgJyVz
JyIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSkpOwogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGU4MTdiN2I2MmQyNDk3ODdk
YzRhYjE5ZWRlYmIwYzRmNjg1MTJmMmUuLjJiODUyY2JjMjNiYWE3OTI0NGY3N2RkZmEyMGM2ZDg5
YWYzM2YwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTU2LDYgKzU2LDEwIEBACiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCisj
aWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyNpbmNsdWRlICJJUENUZXN0ZXIuaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgUEFMIHsKIGNsYXNzIFNlc3Npb25JRDsKIH0KQEAgLTQxNSw2ICs0MTks
OSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICBIYXNoU2V0PFVSTD4gbV9ibG9iVVJMczsKICAg
ICBIYXNoU2V0PFVSTD4gbV9ibG9iVVJMSGFuZGxlczsKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdf
QVBJKQorICAgIElQQ1Rlc3RlciBtX2lwY1Rlc3RlcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCmlu
ZGV4IDBkZGYwZDYwYjY3ZGUyYTMxMzIzZGNlMGY3OThiNGZmYWI2NWFjMzYuLjQ0ZDVlYzVkMjFi
MTU2N2M4MmFiNDY2ZWI3NzMyZDk5OTVkMWEyNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC04NzQsNiArODc0LDEzIEBAIHZvaWQgQ29ubmVjdGlvbjo6
YWRkTWVzc2FnZU9ic2VydmVyKGNvbnN0IE1lc3NhZ2VPYnNlcnZlciYgb2JzZXJ2ZXIpCiB7CiAg
ICAgbV9tZXNzYWdlT2JzZXJ2ZXJzLmFwcGVuZChvYnNlcnZlcik7CiB9CisKK3ZvaWQgQ29ubmVj
dGlvbjo6ZGlzcGF0Y2hJbmNvbWluZ01lc3NhZ2VGb3JUZXN0aW5nKHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiYmIGRlY29kZXIpCit7CisgICAgbV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoKFtw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGVjb2RlciA9IFdURk1vdmUoZGVjb2Rlcild
KCkgbXV0YWJsZSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPnByb2Nlc3NJbmNvbWluZ01lc3Nh
Z2UoV1RGTW92ZShkZWNvZGVyKSk7CisgICAgfSk7Cit9CiAjZW5kaWYKIAogdm9pZCBDb25uZWN0
aW9uOjpwb3N0Q29ubmVjdGlvbkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKCkKQEAgLTEw
NTYsNiArMTA2MywxMSBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBSZWNl
aXZlck5hbWU6OkFzeW5jUmVwbHkpIHsKICAgICAgICAgYXV0byBoYW5kbGVyID0gdGFrZUFzeW5j
UmVwbHlIYW5kbGVyKCp0aGlzLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAgICAgICAgIGlm
ICghaGFuZGxlcikgeworICAgICAgICAgICAgbWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdl
QXNJbnZhbGlkKCk7CisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICAgICAgICAgIGlm
IChtX2lnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZykKKyAgICAgICAgICAgICAgICByZXR1
cm47CisjZW5kaWYKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMjc0LDE3ICsxMjg2LDExIEBAIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRGVjb2RlciopPiB0YWtlQXN5bmNSZXBseUhhbmRsZXIoQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwKICAgICBMb2NrZXIgbG9ja2VyIHsgYXN5bmNSZXBseUhhbmRsZXJNYXBMb2Nr
IH07CiAgICAgYXV0byYgbWFwID0gYXN5bmNSZXBseUhhbmRsZXJNYXAoKTsKICAgICBhdXRvIGl0
ZXJhdG9yID0gbWFwLmZpbmQocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCZjb25uZWN0aW9u
KSk7Ci0gICAgaWYgKGl0ZXJhdG9yICE9IG1hcC5lbmQoKSkgewotICAgICAgICBpZiAoIWl0ZXJh
dG9yLT52YWx1ZS5pc1ZhbGlkS2V5KGlkZW50aWZpZXIpKSB7Ci0gICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGNvbm5lY3Rpb24ubWFya0N1cnJlbnRseURpc3Bh
dGNoZWRNZXNzYWdlQXNJbnZhbGlkKCk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgfQotICAgICAgICBBU1NFUlQoaXRlcmF0b3ItPnZhbHVlLmNvbnRhaW5zKGlkZW50aWZp
ZXIpKTsKLSAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZS50YWtlKGlkZW50aWZpZXIpOwot
ICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBpZiAoaXRlcmF0b3IgPT0gbWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBpZiAoIWl0ZXJhdG9yLT52YWx1ZS5pc1ZhbGlkS2V5KGlkZW50aWZpZXIpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlLnRha2UoaWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6d2FrZVVwUnVuTG9vcCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggODkyZTc1NjQ5YjU4ZTRhZjgwNmU4YzM2MDFk
NDlmNWNjNGE2YTFhNy4uNjBhNGQ5ODQyYzgwMzAxM2FlMjQ0N2NmZTI5NjM0NzllOTEyMTUzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMzIyLDYgKzMyMiw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5n
KCkgeyBtX2lnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZyA9IHRydWU7IH0KICAgICBib29s
IGlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIG1faWdub3Jl
SW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nOyB9CisgICAgdm9pZCBkaXNwYXRjaEluY29taW5nTWVz
c2FnZUZvclRlc3Rpbmcoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpOwogI2VuZGlmCiAKICAg
ICB2b2lkIGRpc3BhdGNoTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShNZXNzYWdlUmVjZWl2ZXImLCBz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29k
ZXIuY3BwCmluZGV4IDEzMzM2NDczNGI4MGU3YWMxY2EzMjhlNTIwZWY4Njc2YjRhYzczMGUuLmRj
NGI2OTJlNDcyZGY1Y2U0MGM1YzJjMzVjNDNkMmVmZTViYzBjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0RlY29kZXIuY3BwCkBAIC00NywzMiArNDcsMzIgQEAgc3RhdGljIGNvbnN0IHVp
bnQ4X3QqIGNvcHlCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6
ZSkKICAgICByZXR1cm4gYnVmZmVyQ29weTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
IERlY29kZXI6OmNyZWF0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXpl
LCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3IpKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBWZWN0
b3I8QXR0YWNobWVudD4mJiBhdHRhY2htZW50cykKK3N0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBE
ZWNvZGVyOjpjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwg
VmVjdG9yPEF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudHMpCiB7CiAgICAgQVNTRVJUKGJ1ZmZlcik7
CiAgICAgaWYgKFVOTElLRUxZKCFidWZmZXIpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxU
KElQQywgIkRlY29kZXI6OmNyZWF0ZSgpIGNhbGxlZCB3aXRoIGEgbnVsbCBidWZmZXIgKGJ1ZmZl
clNpemU6ICVsdSkiLCBidWZmZXJTaXplKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQorICAgIHJldHVybiBEZWNvZGVyOjpjcmVhdGUoY29weUJ1ZmZlcihidWZmZXIsIGJ1ZmZlclNp
emUpLCBidWZmZXJTaXplLCBbXShjb25zdCB1aW50OF90KiBwdHIsIHNpemVfdCkgeyBmYXN0RnJl
ZShjb25zdF9jYXN0PHVpbnQ4X3QqPihwdHIpKTsgfSwgV1RGTW92ZShhdHRhY2htZW50cykpOyAv
LyBOT0xJTlQKK30KIAotICAgIGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlckNvcHk7Ci0gICAgaWYgKCFi
dWZmZXJEZWFsbG9jYXRvcikgewotICAgICAgICBidWZmZXJDb3B5ID0gY29weUJ1ZmZlcihidWZm
ZXIsIGJ1ZmZlclNpemUpOwotICAgICAgICBBU1NFUlQoYnVmZmVyQ29weSk7Ci0gICAgICAgIGlm
IChVTkxJS0VMWSghYnVmZmVyQ29weSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9IGVsc2UKLSAgICAgICAgYnVmZmVyQ29weSA9IGJ1ZmZlcjsKLQotICAgIGF1dG8gZGVjb2Rl
ciA9IHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPihuZXcgRGVjb2RlcihidWZmZXJDb3B5LCBidWZm
ZXJTaXplLCBidWZmZXJEZWFsbG9jYXRvciwgV1RGTW92ZShhdHRhY2htZW50cykpKTsKK3N0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPiBEZWNvZGVyOjpjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVy
LCBzaXplX3QgYnVmZmVyU2l6ZSwgQnVmZmVyRGVhbGxvY2F0b3ImJiBidWZmZXJEZWFsbG9jYXRv
ciwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudHMpCit7CisgICAgQVNTRVJUKGJ1ZmZl
cik7CisgICAgaWYgKFVOTElLRUxZKCFidWZmZXIpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0ZB
VUxUKElQQywgIkRlY29kZXI6OmNyZWF0ZSgpIGNhbGxlZCB3aXRoIGEgbnVsbCBidWZmZXIgKGJ1
ZmZlclNpemU6ICVsdSkiLCBidWZmZXJTaXplKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorICAgIGF1dG8gZGVjb2RlciA9IHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPihuZXcgRGVj
b2RlcihidWZmZXIsIGJ1ZmZlclNpemUsIFdURk1vdmUoYnVmZmVyRGVhbGxvY2F0b3IpLCBXVEZN
b3ZlKGF0dGFjaG1lbnRzKSkpOwogICAgIHJldHVybiBkZWNvZGVyLT5pc1ZhbGlkKCkgPyBXVEZN
b3ZlKGRlY29kZXIpIDogbnVsbHB0cjsKIH0KIAotRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50
OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3Ip
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBWZWN0b3I8QXR0YWNobWVudD4mJiBhdHRhY2htZW50
cykKK0RlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVy
U2l6ZSwgQnVmZmVyRGVhbGxvY2F0b3ImJiBidWZmZXJEZWFsbG9jYXRvciwgVmVjdG9yPEF0dGFj
aG1lbnQ+JiYgYXR0YWNobWVudHMpCiAgICAgOiBtX2J1ZmZlciB7IGJ1ZmZlciB9CiAgICAgLCBt
X2J1ZmZlclBvcyB7IG1fYnVmZmVyIH0KICAgICAsIG1fYnVmZmVyRW5kIHsgbV9idWZmZXIgKyBi
dWZmZXJTaXplIH0KLSAgICAsIG1fYnVmZmVyRGVhbGxvY2F0b3IgeyBidWZmZXJEZWFsbG9jYXRv
ciB9CisgICAgLCBtX2J1ZmZlckRlYWxsb2NhdG9yIHsgV1RGTW92ZShidWZmZXJEZWFsbG9jYXRv
cikgfQogICAgICwgbV9hdHRhY2htZW50cyB7IFdURk1vdmUoYXR0YWNobWVudHMpIH0KIHsKICAg
ICBpZiAoVU5MSUtFTFkocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fYnVmZmVyKSAlIGFs
aWdub2YodWludDY0X3QpKSkgewpAQCAtOTQsNyArOTQsNyBAQCBEZWNvZGVyOjpEZWNvZGVyKGNv
bnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbVNpemUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSQogICAgIDogbV9idWZmZXIgeyBzdHJlYW0gfQogICAgICwgbV9idWZmZXJQb3MgeyBtX2J1
ZmZlciB9CiAgICAgLCBtX2J1ZmZlckVuZCB7IG1fYnVmZmVyICsgc3RyZWFtU2l6ZSB9Ci0gICAg
LCBtX2J1ZmZlckRlYWxsb2NhdG9yKFtdIChjb25zdCB1aW50OF90Kiwgc2l6ZV90KSB7IH0pCisg
ICAgLCBtX2J1ZmZlckRlYWxsb2NhdG9yIHsgbnVsbHB0ciB9CiAgICAgLCBtX2Rlc3RpbmF0aW9u
SUQoZGVzdGluYXRpb25JRCkKIHsKICAgICBpZiAoVU5MSUtFTFkoIWRlY29kZShtX21lc3NhZ2VO
YW1lKSkpCkBAIC0xMDQsMTIgKzEwNCw4IEBAIERlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhf
dCogc3RyZWFtLCBzaXplX3Qgc3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGluYXRpb25JCiBEZWNv
ZGVyOjp+RGVjb2RlcigpCiB7CiAgICAgQVNTRVJUKG1fYnVmZmVyKTsKLQogICAgIGlmIChtX2J1
ZmZlckRlYWxsb2NhdG9yKQogICAgICAgICBtX2J1ZmZlckRlYWxsb2NhdG9yKG1fYnVmZmVyLCBt
X2J1ZmZlckVuZCAtIG1fYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIGZhc3RGcmVlKGNvbnN0
X2Nhc3Q8dWludDhfdCo+KG1fYnVmZmVyKSk7Ci0KICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBk
aXNwb3NlIG9mIHRoZSBtYWNoIHBvcnRzIGluIGNhc2VzIG9mIGZhaWx1cmUuCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCA3MDUzNWFmYjVjOWRlZWIyNjcyYTA2MDc1
YjlhOGNhMTVkNzk5NDQyLi5hOTM1NmVhMTA4YmFhMzYwYjhlZjkzOWIwYTQ1ZTNiYmFhYzIzYTRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDYsNyArNDcsOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSwg
dHlwZW5hbWU+IHN0cnVjdCBIYXNNb2Rlcm5EZWNvZGVyOwogY2xhc3MgRGVjb2RlciB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxEZWNvZGVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVy
U2l6ZSwgdm9pZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSwg
VmVjdG9yPEF0dGFjaG1lbnQ+JiYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIFZlY3Rv
cjxBdHRhY2htZW50PiYmKTsKKyAgICB1c2luZyBCdWZmZXJEZWFsbG9jYXRvciA9IEZ1bmN0aW9u
PHZvaWQoY29uc3QgdWludDhfdCosIHNpemVfdCk+OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNp
emUsIEJ1ZmZlckRlYWxsb2NhdG9yJiYsIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKICAgICBEZWNv
ZGVyKGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbVNpemUsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQpOwogCiAgICAgfkRlY29kZXIoKTsKQEAgLTEzOSw3ICsxNDIsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSVBDRGVjb2RlciA9IHRydWU7CiAKIHBy
aXZhdGU6Ci0gICAgRGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJT
aXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3IpKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBW
ZWN0b3I8QXR0YWNobWVudD4mJik7CisgICAgRGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIs
IHNpemVfdCBidWZmZXJTaXplLCBCdWZmZXJEZWFsbG9jYXRvciYmLCBWZWN0b3I8QXR0YWNobWVu
dD4mJik7CiAKICAgICBib29sIGFsaWduQnVmZmVyUG9zaXRpb24oc2l6ZV90IGFsaWdubWVudCwg
c2l6ZV90KTsKICAgICBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IGFs
aWdubWVudCwgc2l6ZV90KSBjb25zdDsKQEAgLTE0Nyw3ICsxNTAsNyBAQCBwcml2YXRlOgogICAg
IGNvbnN0IHVpbnQ4X3QqIG1fYnVmZmVyOwogICAgIGNvbnN0IHVpbnQ4X3QqIG1fYnVmZmVyUG9z
OwogICAgIGNvbnN0IHVpbnQ4X3QqIG1fYnVmZmVyRW5kOwotICAgIHZvaWQgKCptX2J1ZmZlckRl
YWxsb2NhdG9yKShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBCdWZmZXJEZWFsbG9jYXRv
ciBtX2J1ZmZlckRlYWxsb2NhdG9yOwogCiAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IG1fYXR0YWNo
bWVudHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nv
bm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5l
Y3Rpb25Db2NvYS5tbQppbmRleCA2MzhjZjMwZmIxZTllYjRhYzU4NTI4OTlmZjIzZDc2MTZmNGY5
MDg5Li5hM2E1ZjQ5OTU2YmYxNWNmODBkZjMyNzI4ZTEzMzdiNGRlOTk4OTZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCkBA
IC00MjYsNyArNDI2LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVN
ZXNzYWdlRGVjb2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVyLAogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gRGVjb2Rlcjo6Y3JlYXRl
KGJvZHksIGJvZHlTaXplLCBudWxscHRyLCBWZWN0b3I8QXR0YWNobWVudD4geyB9KTsKKyAgICAg
ICAgcmV0dXJuIERlY29kZXI6OmNyZWF0ZShib2R5LCBib2R5U2l6ZSwgeyB9KTsKICAgICB9CiAK
ICAgICBtYWNoX21zZ19ib2R5X3QqIGJvZHkgPSByZWludGVycHJldF9jYXN0PG1hY2hfbXNnX2Jv
ZHlfdCo+KGhlYWRlciArIDEpOwpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhl
YWRlciwKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIERlY29k
ZXI6OmNyZWF0ZShtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBudWxscHRyLCBXVEZNb3Zl
KGF0dGFjaG1lbnRzKSk7CisgICAgcmV0dXJuIERlY29kZXI6OmNyZWF0ZShtZXNzYWdlQm9keSwg
bWVzc2FnZUJvZHlTaXplLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiB9CiAKIC8vIFRoZSByZWNl
aXZlIGJ1ZmZlciBzaXplIHNob3VsZCBhbHdheXMgaW5jbHVkZSB0aGUgbWF4aW11bSB0cmFpbGVy
IHNpemUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5l
Y3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlv
blVuaXguY3BwCmluZGV4IGYyMjFmOTA5ZmU0ZTQ5MGNhZjZmZjBkNDg2Yjg5Zjc0MzAzZWIxN2Iu
Ljc0NmYzZjZmZDdmYmJhMDhiYzA5NTExNDdjMDYyMzY0YWJlMjFkZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCkBAIC0yNDUs
NyArMjQ1LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSgpCiAgICAgaWYgKG1l
c3NhZ2VJbmZvLmlzQm9keU91dE9mTGluZSgpKQogICAgICAgICBtZXNzYWdlQm9keSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9vbE1lc3NhZ2VCb2R5LT5kYXRhKCkpOwogCi0gICAgYXV0
byBkZWNvZGVyID0gRGVjb2Rlcjo6Y3JlYXRlKG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5
U2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgYXV0byBkZWNvZGVy
ID0gRGVjb2Rlcjo6Y3JlYXRlKG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgpLCBX
VEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiAgICAgQVNTRVJUKGRlY29kZXIpOwogICAgIGlmICghZGVj
b2RlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCmluZGV4IGFmZjM5ZmMxMDJlZDA0NzEyMWYzZjFj
MmFmYTg4OWUwODIyMjgxOTguLmRhOGQ3ZjBmYjhlYzA3ZjU4ZTY4MWQ4YWI4OTJhODI5N2QzNjg4
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9u
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldp
bi5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlYWRFdmVudEhhbmRs
ZXIoKQogCiAgICAgICAgIGlmICghbV9yZWFkQnVmZmVyLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgLy8gV2UgaGF2ZSBhIG1lc3NhZ2UsIGxldCdzIGRpc3BhdGNoIGl0LgotICAgICAgICAgICAg
YXV0byBkZWNvZGVyID0gRGVjb2Rlcjo6Y3JlYXRlKG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVh
ZEJ1ZmZlci5zaXplKCksIG51bGxwdHIsIHsgfSk7CisgICAgICAgICAgICBhdXRvIGRlY29kZXIg
PSBEZWNvZGVyOjpjcmVhdGUobV9yZWFkQnVmZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVyLnNpemUo
KSwgeyB9KTsKICAgICAgICAgICAgIEFTU0VSVChkZWNvZGVyKTsKICAgICAgICAgICAgIGlmICgh
ZGVjb2RlcikKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9JUENUZXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iYWJhMGIwODg3N2M0NzJhNTA3MWZmM2FhM2Q4ODAxMDJmNTdjODlh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcApA
QCAtMCwwICsxLDEzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJJUENUZXN0ZXIuaCIKKworI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIKKworI2luY2x1ZGUgPGRsZmNu
Lmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3
dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGhyZWFk
cy9CaW5hcnlTZW1hcGhvcmUuaD4KKworLy8gVGhlIHRlc3RlciBBUEkuCitleHRlcm4gIkMiIHsK
Ky8vIFJldHVybnMgMCBpZiBkcml2ZXIgc2hvdWxkIGNvbnRpbnVlLgordHlwZWRlZiBpbnQgKCpX
S01lc3NhZ2VUZXN0U2VuZE1lc3NhZ2VGdW5jKShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c3osIHZvaWQqIGNvbnRleHQpOwordHlwZWRlZiB2b2lkICgqV0tNZXNzYWdlVGVzdERyaXZlckZ1
bmMpKFdLTWVzc2FnZVRlc3RTZW5kTWVzc2FnZUZ1bmMgc2VuZE1lc3NhZ2VGdW5jLCB2b2lkKiBj
b250ZXh0KTsKK30KKworbmFtZXNwYWNlIHsKK3N0cnVjdCBTZW5kTWVzc2FnZUNvbnRleHQgewor
ICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbjsKKyAgICBzdGQ6OmF0b21pYzxib29sPiYg
c2hvdWxkU3RvcDsKK307Cit9CisKK2V4dGVybiAiQyIgeworCitzdGF0aWMgdm9pZCBkZWZhdWx0
VGVzdERyaXZlcihXS01lc3NhZ2VUZXN0U2VuZE1lc3NhZ2VGdW5jIHNlbmRNZXNzYWdlRnVuYywg
dm9pZCogY29udGV4dCkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YSgxMDAwKTsKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBjcnlwdG9ncmFwaGljYWxs
eVJhbmRvbVZhbHVlcyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBpbnQgcmV0
ID0gc2VuZE1lc3NhZ2VGdW5jKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgY29udGV4dCk7Cisg
ICAgICAgIGlmIChyZXQpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorfQorCitzdGF0aWMg
aW50IHNlbmRUZXN0TWVzc2FnZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgdm9p
ZCogY29udGV4dCkKK3sKKyAgICBhdXRvIG1lc3NhZ2VDb250ZXh0ID0gcmVpbnRlcnByZXRfY2Fz
dDxTZW5kTWVzc2FnZUNvbnRleHQqPihjb250ZXh0KTsKKyAgICBpZiAobWVzc2FnZUNvbnRleHQt
PnNob3VsZFN0b3ApCisgICAgICAgIHJldHVybiAxOworICAgIGF1dG8mIHRlc3RlZENvbm5lY3Rp
b24gPSBtZXNzYWdlQ29udGV4dC0+Y29ubmVjdGlvbjsKKyAgICBpZiAoIXRlc3RlZENvbm5lY3Rp
b24uaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBCaW5hcnlTZW1hcGhvcmUgc2Vt
YXBob3JlOworICAgIGF1dG8gZGVjb2RlciA9IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGRhdGEsIHNp
emUsIFsmc2VtYXBob3JlXSAoY29uc3QgdWludDhfdCosIHNpemVfdCkgeyBzZW1hcGhvcmUuc2ln
bmFsKCk7IH0sIHsgfSk7IC8vIE5PTElOVAorICAgIGlmIChkZWNvZGVyKSB7CisgICAgICAgIHRl
c3RlZENvbm5lY3Rpb24uZGlzcGF0Y2hJbmNvbWluZ01lc3NhZ2VGb3JUZXN0aW5nKFdURk1vdmUo
ZGVjb2RlcikpOworICAgICAgICBzZW1hcGhvcmUud2FpdCgpOworICAgIH0KKyAgICByZXR1cm4g
MDsKK30KKworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFdLTWVzc2FnZVRlc3RE
cml2ZXJGdW5jIG1lc3NhZ2VUZXN0RHJpdmVyKFN0cmluZyYmIGRyaXZlck5hbWUpCit7CisgICAg
aWYgKGRyaXZlck5hbWUuaXNFbXB0eSgpIHx8IGRyaXZlck5hbWUgPT0gImRlZmF1bHQiKQorICAg
ICAgICBkcml2ZXJOYW1lID0gZ2V0ZW52KCJXRUJLSVRfTUVTU0FHRV9URVNUX0RFRkFVTFRfRFJJ
VkVSIik7CisgICAgaWYgKGRyaXZlck5hbWUuaXNFbXB0eSgpIHx8IGRyaXZlck5hbWUgPT0gImRl
ZmF1bHQiKQorICAgICAgICByZXR1cm4gZGVmYXVsdFRlc3REcml2ZXI7CisgICAgYXV0byB0ZXN0
RHJpdmVyID0gcmVpbnRlcnByZXRfY2FzdDxXS01lc3NhZ2VUZXN0RHJpdmVyRnVuYz4oZGxzeW0o
UlRMRF9ERUZBVUxULCBkcml2ZXJOYW1lLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBSRUxFQVNFX0FT
U0VSVCh0ZXN0RHJpdmVyKTsKKyAgICByZXR1cm4gdGVzdERyaXZlcjsKK30KKworc3RhdGljIHZv
aWQgcnVuTWVzc2FnZVRlc3RpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzdGQ6OmF0
b21pYzxib29sPiYgc2hvdWxkU3RvcCwgU3RyaW5nJiYgZHJpdmVyTmFtZSkKK3sKKyAgICBjb25u
ZWN0aW9uLnNldElnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZygpOworICAgIFNlbmRNZXNz
YWdlQ29udGV4dCBjb250ZXh0IHsgY29ubmVjdGlvbiwgc2hvdWxkU3RvcCB9OworICAgIGF1dG8g
ZHJpdmVyID0gbWVzc2FnZVRlc3REcml2ZXIoV1RGTW92ZShkcml2ZXJOYW1lKSk7CisgICAgZHJp
dmVyKHNlbmRUZXN0TWVzc2FnZSwgJmNvbnRleHQpOworfQorCitJUENUZXN0ZXI6OklQQ1Rlc3Rl
cigpID0gZGVmYXVsdDsKKworSVBDVGVzdGVyOjp+SVBDVGVzdGVyKCkKK3sKKyAgICBzdG9wSWZO
ZWVkZWQoKTsKK30KKwordm9pZCBJUENUZXN0ZXI6OnN0YXJ0TWVzc2FnZVRlc3RpbmcoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJpbmcmJiBkcml2ZXJOYW1lKQoreworICAgIGlmICgh
bV90ZXN0UXVldWUpCisgICAgICAgIG1fdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIklQ
QyB0ZXN0aW5nIHdvcmsgcXVldWUiKTsKKyAgICBtX3Rlc3RRdWV1ZS0+ZGlzcGF0Y2goW2Nvbm5l
Y3Rpb24gPSBSZWYgeyBjb25uZWN0aW9uIH0sICZzaG91bGRTdG9wID0gbV9zaG91bGRTdG9wLCBk
cml2ZXJOYW1lID0gV1RGTW92ZShkcml2ZXJOYW1lKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcnVu
TWVzc2FnZVRlc3RpbmcoY29ubmVjdGlvbiwgc2hvdWxkU3RvcCwgV1RGTW92ZShkcml2ZXJOYW1l
KSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSVBDVGVzdGVyOjpzdG9wTWVzc2FnZVRlc3RpbmcoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzdG9wSWZO
ZWVkZWQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIElQQ1Rlc3Rlcjo6
c3RvcElmTmVlZGVkKCkKK3sKKyAgICBpZiAobV90ZXN0UXVldWUpIHsKKyAgICAgICAgbV9zaG91
bGRTdG9wID0gdHJ1ZTsKKyAgICAgICAgbV90ZXN0UXVldWUtPmRpc3BhdGNoU3luYyhbXSB7IH0p
OworICAgICAgICBtX3Rlc3RRdWV1ZSA9IG51bGxwdHI7CisgICAgfQorfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDk5MDkzNWJkNTUxZDRlZWI1
ODM1NDNlMTJlY2ZkM2I4NDcxODVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvSVBDVGVzdGVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKworI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgorI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJUENUZXN0ZXIgZmluYWwgOiBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIElQQ1Rlc3RlcigpOworICAgIH5J
UENUZXN0ZXIoKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7Citwcml2YXRl
OgorICAgIC8vIE1lc3NhZ2VzLgorICAgIHZvaWQgc3RhcnRNZXNzYWdlVGVzdGluZyhJUEM6OkNv
bm5lY3Rpb24mLCBTdHJpbmcmJiBkcml2ZXJOYW1lKTsKKyAgICB2b2lkIHN0b3BNZXNzYWdlVGVz
dGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+KTsKKworICAgIHZvaWQgc3RvcElmTmVlZGVk
KCk7CisKKyAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX3Rlc3RRdWV1ZTsKKyAgICBzdGQ6OmF0b21p
Yzxib29sPiBtX3Nob3VsZFN0b3AgeyBmYWxzZSB9OworfTsKKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjVhOTll
OThlNTBkZWIzY2Q1MTlkMWE0N2M4YzJlNTQ0NzI0NWFkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShJUENf
VEVTVElOR19BUEkpCisKK21lc3NhZ2VzIC0+IElQQ1Rlc3RlciBOb3RSZWZDb3VudGVkIHsKKyAg
ICBTdGFydE1lc3NhZ2VUZXN0aW5nKFN0cmluZyBkcml2ZXJOYW1lKSBXYW50c0Nvbm5lY3Rpb24K
KyAgICBTdG9wTWVzc2FnZVRlc3RpbmcoKSAtPiAoKSBTeW5jaHJvbm91cworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CmluZGV4IDY3OTYzNzg5ZmEzNDdiZjhhZDU2NGY5NWQzYWYxYzliOWE3ZmMzOTcu
LjBmYTJjYmI2YjlhNDI3MWE1NjVkYjJhY2ZkY2U3YjczY2Y4ZDVlNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApA
QCAtMjIyLDYgKzIyMiw3IEBAIFNoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKIFNoYXJlZC9Gb250SW5m
by5jcHAKIFNoYXJlZC9GcmFtZUluZm9EYXRhLmNwcAogU2hhcmVkL0luc3BlY3RvckV4dGVuc2lv
blR5cGVzLmNwcAorU2hhcmVkL0lQQ1Rlc3Rlci5jcHAKIFNoYXJlZC9MYXllclRyZWVDb250ZXh0
LmNwcAogU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAogU2hhcmVkL05hdmlnYXRpb25BY3Rpb25E
YXRhLmNwcApAQCAtODQ0LDYgKzg0NSw3IEBAIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCiAKIFdlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3Rl
bVByb3h5LmNwcAogCitJUENUZXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBOZXR3b3JrQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAogUlRDRGF0YUNoYW5uZWxSZW1v
dGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2Vy
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCmluZGV4IGVkMTQ0NDljYmYz
ZTQ3YzU5MDJmOWM5ZTRlYzVkYTlhZmJkMjgwMTEuLjJjNzkxMGRkOTMzZmQ0ZGZhMjA4NWYwOGI1
MmRkODRiMjI5NzIyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2Fj
eVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCkBAIC00OCw3ICs0OCw3IEBAIFJlZlB0
cjxBUEk6OkRhdGE+IGVuY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShjb25zdCBTZXNzaW9uU3RhdGUm
IHNlc3Npb25TdGF0ZSkKIAogYm9vbCBkZWNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBTZXNzaW9uU3RhdGUmIHNlc3Npb25TdGF0ZSkK
IHsKLSAgICBhdXRvIGRlY29kZXIgPSBJUEM6OkRlY29kZXI6OmNyZWF0ZShkYXRhLCBkYXRhU2l6
ZSwgbnVsbHB0ciwgVmVjdG9yPElQQzo6QXR0YWNobWVudD4oKSk7CisgICAgYXV0byBkZWNvZGVy
ID0gSVBDOjpEZWNvZGVyOjpjcmVhdGUoZGF0YSwgZGF0YVNpemUsIHsgfSk7CiAgICAgaWYgKCFk
ZWNvZGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCAwOTYxMzY3YTYxZTg5NjQ3YzQwYzAzOTYyYTRiYTNk
MGVhNmIxYWI5Li4zZGViZGNiMzVlZjY1ODg0MjRhMGRhYzA0NjBkMjk5ZmRmYzNjNWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xNDcsNiArMTQ3
LDEwIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorI2luY2x1ZGUgIklQQ1Rlc3Rlck1lc3NhZ2Vz
LmgiCisjZW5kaWYKKwogI2RlZmluZSBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPRyhjaGFubmVs
LCBmbXQsIC4uLikgUkVMRUFTRV9MT0coY2hhbm5lbCwgIiVwIC0gV2ViUHJvY2Vzc1Bvb2w6OiIg
Zm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBXRUJQUk9DRVNTUE9PTF9SRUxFQVNF
X0xPR19TVEFUSUMoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HKGNoYW5uZWwsICJXZWJQ
cm9jZXNzUG9vbDo6IiBmbXQsICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIFdFQlBST0NFU1NQT09M
X1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihj
aGFubmVsLCAiJXAgLSBXZWJQcm9jZXNzUG9vbDo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18p
CkBAIC0yNDIsNiArMjQ2LDkgQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogI2VuZGlmCiAKICAgICBh
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlByb2Nlc3NQb29sOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksICp0aGlzKTsKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIGFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6SVBDVGVzdGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1faXBjVGVzdGVyKTsKKyNlbmRpZgogCiAgICAgLy8gTk9URTogVGhlc2Ugc3ViLW9iamVjdHMg
bXVzdCBiZSBpbml0aWFsaXplZCBhZnRlciBtX21lc3NhZ2VSZWNlaXZlck1hcC4uCiAgICAgYWRk
U3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDU5YWIxMmEzYTdhYThlMDkzMTlmYjdmZjBh
YjNhMGU5ODJkY2RiN2UuLjQzMmM2NWVlOTk0OWNhYmIzYzkyNzlkNjE1ODFmODM0Njc2YjIxMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzUsNiArNzUs
MTEgQEAgT0JKQ19DTEFTUyBXS1dlYkluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZlcjsKICNpbmNs
dWRlIDxwYWwvc3lzdGVtL1N5c3RlbVNsZWVwTGlzdGVuZXIuaD4KICNlbmRpZgogCisKKyNpZiBF
TkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorI2luY2x1ZGUgIklQQ1Rlc3Rlci5oIgorI2VuZGlmCisK
IG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKIGNsYXNzIERvd25sb2Fk
Q2xpZW50OwpAQCAtODAzLDYgKzgwOCw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OlBvd2VyT2JzZXJ2ZXI+IG1fcG93ZXJPYnNlcnZlcjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UEFMOjpTeXN0ZW1TbGVlcExpc3RlbmVyPiBtX3N5c3RlbVNsZWVwTGlzdGVuZXI7CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIElQQ1Rlc3RlciBtX2lwY1Rl
c3RlcjsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGZkZmQ0OGNhMWViYzBhNzQ3NzJm
NThiZjkwZjViOGE0ZTc5YjNhYWQuLjAzZGUzMmVlNmE0NjBlYTRhOGJiYzA0ZjBmY2ViYWMzZmY5
MGVlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApA
QCAtNDY0LDcgKzQ2NCw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpzaG91bGRTZW5kUGVuZGlu
Z01lc3NhZ2UoY29uc3QgUGVuZGluZ01lc3NhZ2UmIG1lc3NhZ2UpCiAgICAgaWYgKG1lc3NhZ2Uu
ZW5jb2Rlci0+bWVzc2FnZU5hbWUoKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRS
ZXF1ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2gpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBt
ZXNzYWdlLmVuY29kZXItPmJ1ZmZlcigpOwogICAgICAgICBhdXRvIGJ1ZmZlclNpemUgPSBtZXNz
YWdlLmVuY29kZXItPmJ1ZmZlclNpemUoKTsKLSAgICAgICAgYXV0byBkZWNvZGVyID0gSVBDOjpE
ZWNvZGVyOjpjcmVhdGUoYnVmZmVyLCBidWZmZXJTaXplLCBudWxscHRyLCB7IH0pOworICAgICAg
ICBhdXRvIGRlY29kZXIgPSBJUEM6OkRlY29kZXI6OmNyZWF0ZShidWZmZXIsIGJ1ZmZlclNpemUs
IHsgfSk7CiAgICAgICAgIEFTU0VSVChkZWNvZGVyKTsKICAgICAgICAgaWYgKCFkZWNvZGVyKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJB
dXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggNzllN2Y0NDE3YWExY2MzNDE4OTAxNjg0NDI1ZGY3YzlkMzdmMmE3Zi4uMTcyMWU4YmVh
NTQwYjY4MThhYWIxNDY5Njk4M2MwNzJhZjI4YWYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC0zMyw2ICszMywxMCBAQAogI2luY2x1ZGUgIldlYkF1dGhuUHJvY2Vzcy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YS5oPgogCisjaWYg
RU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyNpbmNsdWRlICJJUENUZXN0ZXJNZXNzYWdlcy5oIgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
QEAgLTY3LDYgKzcxLDI5IEBAIHZvaWQgV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjCiAgICAgQ1JBU0goKTsK
IH0KIAorYm9vbCBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sK
KyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6SVBDVGVzdGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
IHsKKyAgICAgICAgbV9pcGNUZXN0ZXIuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNo
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCit7CisjaWYgRU5B
QkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgPT0gTWVzc2FnZXM6OklQQ1Rlc3Rlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAg
ICAgIG1faXBjVGVzdGVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
LCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKKwogdm9pZCBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6Om1ha2VDcmVkZW50aWFsKFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFB1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnMmJiBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsKICAgICBoYW5kbGVSZXF1
ZXN0KHsgV1RGTW92ZShoYXNoKSwgV1RGTW92ZShvcHRpb25zKSwgbnVsbHB0ciwgV2ViQXV0aGVu
dGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwg
eyB9LCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFN0cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUo
aGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2Vi
QXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJv
Y2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAyNzNiNDYxNTRjMmE1
NDVjYzQ0YmFhNzEwOGMyNzgwYmNmYjAxNzFlLi40OWZiNjQxNDdjYWEzMmNiMDE4YWRjMmNkMDE3
ZTE0M2RkOGUzNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9X
ZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1
dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMzIsNiArMzIs
MTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIAorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisjaW5jbHVk
ZSAiSVBDVGVzdGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogZW51bSBjbGFz
cyBBdXRoZW50aWNhdG9yQXR0YWNobWVudDsKIHN0cnVjdCBBdXRoZW50aWNhdG9yUmVzcG9uc2VE
YXRhOwpAQCAtNjcsNiArNzEsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENsb3NlKElQQzo6
Q29ubmVjdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAg
Ym9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKKworICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIGJvb2wgZGlzcGF0Y2hTeW5j
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpF
bmNvZGVyPiYpOwogCiAgICAgLy8gUmVjZWl2ZXJzLgogICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwo
VmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyYmLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBsZXRp
b25IYW5kbGVyJiYpOwpAQCAtNzYsOSArODQsMTMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaGFu
ZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYsIFJlcXVlc3RDb21wbGV0
aW9uSGFuZGxlciYmKTsKIAorCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9u
OwogICAgIFJlZjxXZWJBdXRoblByb2Nlc3M+IG1fV2ViQXV0aG5Qcm9jZXNzOwogICAgIGNvbnN0
IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7CisjaWYg
RU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICBJUENUZXN0ZXIgbV9pcGNUZXN0ZXI7CisjZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGFjNzNhOTUzNmE4OTIwMjJlMzNmYTZjMTQxNzI4
NTlkZTJkNWY0ZWMuLmU5OGQwYTYyODUyNGE5MDAzMGFjM2IzNDdjNDYyNTUwZmI5NDNmN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJv
Y2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIyLDcg
KzIyLDcgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKLW1lc3NhZ2VzIC0+IFdlYkF1dGhu
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyB7CittZXNzYWdlcyAtPiBXZWJBdXRobkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogCiAgICAgTWFrZUNyZWRlbnRpYWwo
VmVjdG9yPHVpbnQ4X3Q+IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zIG9wdGlvbnMsIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSAtPiAo
c3RydWN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSwgZW51bTppbnQg
V2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCwgc3RydWN0IFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uKSBBc3luYwogICAgIEdldEFzc2VydGlvbihWZWN0
b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucyBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgLT4gKHN0cnVj
dCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEsIGVudW06aW50IFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIHN0cnVjdCBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk4ZDk0M2VmN2QxNmQ1ZjFiM2Y4MjcwMjAz
YmU0YWEyMWExNDRkNTguLjM1NzdhYmU4MGZjNTU5NjljNDI3YTEyNzkyMzUwYWY0NzcxYjBjMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTMyMyw2ICsxMzIzLDcgQEAKIAkJN0I3MzEyNDIyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVh
bUNvbm5lY3Rpb25FbmNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QjczMTIzOTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkVu
Y29kZXIuaCAqLzsgfTsKIAkJN0JBQjExMTAyNUREMDJCMzAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2
ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdCQUIxMTBGMjVERDAyQjIwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlLmggKi87IH07CiAJCTdCQ0Y3MERFMjYxNUQwNkUwMEU0RkI3MCAvKiBT
Y29wZWRSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkNGNzBDQjI2MTQ5MzVFMDBFNEZCNzAgLyog
U2NvcGVkUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLm1tICovOyB9OworCQk3QkREQTMx
OTI3NDdDMDQwMDAzODY1OUUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyRGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBX
S1BsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdD
MUJBMzNFMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkg
LyogQVBJRGljdGlvbmFyeS5oICovOyB9OwpAQCAtNTAyNCw2ICs1MDI1LDggQEAKIAkJN0I0ODNG
MUMyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2Vp
dmVRdWV1ZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXNz
YWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0
ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNTBFOTdGMjc3MUY2Q0UwMDNEQUFDNCAvKiBJUENUZXN0
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSVBDVGVzdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0I1MEU5ODAyNzcxRjZDRjAwM0RBQUM0IC8qIElQQ1Rlc3Rlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJUENUZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIz
MjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwNzMsNiArNzA3Niw4IEBACiAJ
CQkJMTE4NTAyNjAyNjczQjBEQTAwQTY0MjVFIC8qIFhSICovLAogCQkJCUUzQkNFODc3MjY3MjUy
MTIwMDExRDhEQiAvKiBBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMuY3BwICovLAogCQkJCUUzQkNF
ODc4MjY3MjUyMTIwMDExRDhEQiAvKiBBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMuaCAqLywKKwkJ
CQk3QjUwRTk3RjI3NzFGNkNFMDAzREFBQzQgLyogSVBDVGVzdGVyLmNwcCAqLywKKwkJCQk3QjUw
RTk4MDI3NzFGNkNGMDAzREFBQzQgLyogSVBDVGVzdGVyLmggKi8sCiAJCQkJQTdENzkyRDUxNzY3
Q0I2RTAwODgxQ0JFIC8qIEFjdGl2aXR5QXNzZXJ0aW9uLmNwcCAqLywKIAkJCQlBN0Q3OTJENDE3
NjdDQjA5MDA4ODFDQkUgLyogQWN0aXZpdHlBc3NlcnRpb24uaCAqLywKIAkJCQlCQzMyOUQ5QTE2
QUNDRTk5MDAzMTZERTIgLyogQVBJV2ViQXJjaGl2ZS5oICovLApAQCAtMTI5NTIsNiArMTI5NTcs
NyBAQAogCQkJCUM1QkNFNURGMUM1MDc2NkEwMENERTNGQSAvKiBJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0RDJDODExREY2MEJGMzAwMkVC
MTBDIC8qIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMzFGNjBBNDI1Q0M3REI5MDBBRjE0RjQgLyogSVBDU2VtYXBob3JlLmggaW4gSGVhZGVycyAq
LywKKwkJCQk3QkREQTMxOTI3NDdDMDQwMDAzODY1OUUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8s
CiAJCQkJOUI0NzkwOEYyNTMxNTFDQzAwRUMxMUFCIC8qIEpTSVBDQmluZGluZy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzE2NjNFNUIyNEFFQUEyRjAwQzZBM0IyIC8qIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VYUENDb25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTA5Mzc4MTRGQjEyOEMw
MDExMzhEOSAvKiBMYXllckhvc3RpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKaW5kZXgg
ZTFhMzE0MDEyYWQ4YzQwZDc1NGMwYmJjODc5MTkwMDk2ZDRiODdiOS4uNTRmNDY1N2Y4NDA2NDQx
ZGZjNDM4ZDhjNTBmZDFiNzk1NmI4NTRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKQEAgLTE4ODYsNyArMTg4Niw3IEBAIHZv
aWQgSlNNZXNzYWdlTGlzdGVuZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB0b0pTKG1fY29udGV4dCk7CiAg
ICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QtPnZtKCkpOwogCi0gICAgYXV0
byBtdXRhYmxlRGVjb2RlciA9IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGRlY29kZXIuYnVmZmVyKCks
IGRlY29kZXIubGVuZ3RoKCksIG51bGxwdHIsIHsgfSk7CisgICAgYXV0byBtdXRhYmxlRGVjb2Rl
ciA9IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGRlY29kZXIuYnVmZmVyKCksIGRlY29kZXIubGVuZ3Ro
KCksIHsgfSk7CiAgICAgYXV0byogZGVzY3JpcHRpb24gPSBqc0Rlc2NyaXB0aW9uRnJvbURlY29k
ZXIoZ2xvYmFsT2JqZWN0LCAqbXV0YWJsZURlY29kZXIpOwogCiAgICAgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSA9IHsgZGVzY3JpcHRpb24gPyB0b1JlZihnbG9iYWxPYmplY3QsIGRlc2NyaXB0aW9u
KSA6IEpTVmFsdWVNYWtlVW5kZWZpbmVkKG1fY29udGV4dCkgfTsKQEAgLTE5MDMsNyArMTkwMyw3
IEBAIHZvaWQgSlNNZXNzYWdlTGlzdGVuZXI6OndpbGxTZW5kTWVzc2FnZShjb25zdCBJUEM6OkVu
Y29kZXImIGVuY29kZXIsIE9wdGlvblNldDxJCiAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdG9K
UyhtX2NvbnRleHQpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0LT52
bSgpKTsKIAotICAgIGF1dG8gZGVjb2RlciA9IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGVuY29kZXIu
YnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpLCBudWxscHRyLCB7IH0pOworICAgIGF1dG8g
ZGVjb2RlciA9IElQQzo6RGVjb2Rlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIu
YnVmZmVyU2l6ZSgpLCB7IH0pOwogICAgIGF1dG8qIGRlc2NyaXB0aW9uID0ganNEZXNjcmlwdGlv
bkZyb21EZWNvZGVyKGdsb2JhbE9iamVjdCwgKmRlY29kZXIpOwogCiAgICAgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSA9IHsgZGVzY3JpcHRpb24gPyB0b1JlZihnbG9iYWxPYmplY3QsIGRlc2NyaXB0
aW9uKSA6IEpTVmFsdWVNYWtlVW5kZWZpbmVkKG1fY29udGV4dCkgfTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwOGMwNzg3
Y2YyMzg1NmE5MzVhZGJhYjM0OWQ1OTk4MmE3Y2VkOTgwLi5mY2Q1ODRhZGViZmQ0ZjMzYzI1YWRj
Zjc4ZjE3YTA0ZDU3NWMxMmVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTItMjEgIEtp
bW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGlu
LXByb2Nlc3MgdGVzdGluZyBvZiBJUEMgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTY3NAorICAgICAgICA8cmRhcjovLzg0MTg5MzE0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGRvbmUt
aXBjLWZ1eml6bmcKKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogaXBj
L3N0YXJ0LW1lc3NhZ2UtdGVzdGluZy5odG1sOiBBZGRlZC4KKwogMjAyMS0xMi0yMCAgSm9uIExl
ZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZ2FyZGVuIEdQVSBQ
cm9jZXNzIHRlc3QgZXhwZWN0YXRpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1MWFjOTMzNjUz
YzNjNmZhODNjMzA5NDYwMGQ5N2Y5Yjk0NDQ2YjY0Li5iNzk2MTBjNWZiMTg2MjkwZDE5NTNkMjdh
OTY4NWZjNjhiMzYyNmIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUwNTYsNiArNTA1Niw5IEBA
IHdlYmtpdC5vcmcvYi8yMzMzNDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
bW90aW9uL29mZnNldC1yb3RhdGUtMDAyCiAjIElQQyB0ZXN0IGZhaWxpbmcgaW4gRGVidWcgbW9k
ZSBkdWUgdG8gYXNzZXJ0LgogWyBEZWJ1ZyBdIGlwYy9zZW5kLWludmFsaWQtbWVzc2FnZS5odG1s
IFsgU2tpcCBdCiAKKyMgVGhlIHRlc3QgaW52b2tlcyByYW5kb20gbWVzc2FnZXMsIHBvdGVudGlh
bGx5IHByb2R1Y2VzIHJhbmRvbSByZXN1bHRzLgoraXBjL3N0YXJ0LW1lc3NhZ2UtdGVzdGluZy5o
dG1sIFsgU2tpcCBdCisKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1z
aGFkb3ctcGFydHMvaW50ZXJhY3Rpb24td2l0aC1uZXN0ZWQtcHNldWRvLWNsYXNzLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIzNDMxNSBbIERlYnVnIF0gZmFzdC9s
YXllcnMvdG9wLWxheWVyLWFuY2VzdG9yLW9wYWNpdHktYW5kLXRyYW5zZm9ybS1jcmFzaC5odG1s
IFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pcGMvc3RhcnQtbWVzc2FnZS10ZXN0
aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9pcGMvc3RhcnQtbWVzc2FnZS10ZXN0aW5nLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGIwOTM1YTVmZGZlNDVmMmRiOWM3OTIwOTg5Y2UzZjc2ZGY5MGRiNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2lwYy9zdGFydC1tZXNzYWdlLXRlc3RpbmcuaHRtbApA
QCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBb
IElQQ1Rlc3RpbmdBUElFbmFibGVkPXRydWUgXSAtLT4KKzxib2R5PgorPHNjcmlwdD4KK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwordmFyIGRy
aXZlck5hbWUgPSB7dHlwZTogIlN0cmluZyIsIHZhbHVlOiAiZGVmYXVsdCJ9OworCitmdW5jdGlv
biBzdG9wKCkgeworICAgIGlmICh3aW5kb3cuSVBDKSB7CisgICAgICAgIElQQy5zZW5kU3luY01l
c3NhZ2UoIkdQVSIsIDAsIElQQy5tZXNzYWdlcy5JUENUZXN0ZXJfU3RvcE1lc3NhZ2VUZXN0aW5n
Lm5hbWUsIFtdKTsKKyAgICAgICAgSVBDLnNlbmRTeW5jTWVzc2FnZSgiTmV0d29ya2luZyIsIDAs
IElQQy5tZXNzYWdlcy5JUENUZXN0ZXJfU3RvcE1lc3NhZ2VUZXN0aW5nLm5hbWUsIFtdKTsKKyAg
ICAgICAgSVBDLnNlbmRTeW5jTWVzc2FnZSgiVUkiLCAwLCBJUEMubWVzc2FnZXMuSVBDVGVzdGVy
X1N0b3BNZXNzYWdlVGVzdGluZy5uYW1lLCBbXSk7CisgICAgICAgIGNvbnNvbGUubG9nKCJzdG9w
cGVkIik7CisgICAgfQorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK2lmICh3aW5kb3cuSVBDKSB7CisgICAgSVBDLnNlbmRN
ZXNzYWdlKCJHUFUiLCAwLCBJUEMubWVzc2FnZXMuSVBDVGVzdGVyX1N0YXJ0TWVzc2FnZVRlc3Rp
bmcubmFtZSwgW2RyaXZlck5hbWVdKTsKKyAgICBJUEMuc2VuZE1lc3NhZ2UoIk5ldHdvcmtpbmci
LCAwLCBJUEMubWVzc2FnZXMuSVBDVGVzdGVyX1N0YXJ0TWVzc2FnZVRlc3RpbmcubmFtZSwgW2Ry
aXZlck5hbWVdKTsKKyAgICBJUEMuc2VuZE1lc3NhZ2UoIlVJIiwgMCwgSVBDLm1lc3NhZ2VzLklQ
Q1Rlc3Rlcl9TdGFydE1lc3NhZ2VUZXN0aW5nLm5hbWUsIFtkcml2ZXJOYW1lXSk7CisgICAgY29u
c29sZS5sb2coInN0YXJ0ZWQiKTsKK30KK3NldFRpbWVvdXQoc3RvcCwgMzAwMCk7CisKKzwvc2Ny
aXB0PgorPHA+VGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2guPC9wPgorPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449600</attachid>
            <date>2022-01-20 11:57:31 -0800</date>
            <delta_ts>2022-01-21 00:34:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231674-20220120215729.patch</filename>
            <type>text/plain</type>
            <size>49388</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcyYzY1ZWM5Zjg2ZWY4NmZl
Yzc4NWRkMDhkYzg1OWMyYmNhMmMyMTEuLjJjZjY3NDMxNmYzZjdlYzEyYzIxNmE3ZWNiOWNkOTg5
ZDY3M2E3MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMjItMDEtMjAgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGluLXByb2Nl
c3MgdGVzdGluZyBvZiBJUEMgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMTY3NAorICAgICAgICA8cmRhcjovLzg0MTg5MzE0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgQWRkIElQQ1Rlc3Rl
ciBzZXJ2aWNlIHRvIFVJLCBHUFUsIE5ldHdvcmssIEF1dGhuIHByb2Nlc3MuCisgICAgICAgIFRo
ZSBzZXJ2aWNlIGNhbiBiZSB1c2VkIHRvIHNlbmQgcmFuZG9tIG1lc3NhZ2VzIHRvIHRoZSBwcm9j
ZXNzZXMuCisKKyAgICAgICAgVGVzdDogaXBjL3N0YXJ0LW1lc3NhZ2UtdGVzdGluZy5odG1sCisK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
Lm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hN
ZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlz
cGF0Y2hTeW5jTWVzc2FnZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
ZGlzcGF0Y2hJbmNvbWluZ01lc3NhZ2VGb3JUZXN0aW5nKToKKyAgICAgICAgKElQQzo6Q29ubmVj
dGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCk6CisgICAgICAgIFJlbW92ZSBhc3NlcnRzIGZyb20gdGFrZUFzeW5jUmVwbHlIYW5kbGVy
LCB0aGV5J3JlIGFscmVhZHkgcHJlc2VudAorICAgICAgICBpbiB0aGUgY2FsbGVyLiBUaGUgY2Fs
bGVyIGNhbiBmaWx0ZXIgdGhlbSBiYXNlZCBvbiB0aGUgdGVzdGluZyBmbGFnLAorICAgICAgICBh
bGxvd2luZyB0ZXN0aW5nIHdpdGhvdXQgYXNzZXJ0cy4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAg
ICAgKElQQzo6RGVjb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6RGVjb2Rl
cik6CisgICAgICAgIChJUEM6OkRlY29kZXI6On5EZWNvZGVyKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvRGVjb2Rlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9u
Q29jb2EubW06CisgICAgICAgIChJUEM6OmNyZWF0ZU1lc3NhZ2VEZWNvZGVyKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChJUEM6OkNv
bm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvd2luL0Nv
bm5lY3Rpb25XaW4uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWFkRXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6Om1lc3NhZ2VUZXN0RHJpdmVyKToKKyAgICAgICAgKFdlYktpdDo6cnVuTWVzc2FnZVRl
c3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0ZXI6On5JUENUZXN0ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpJUENUZXN0ZXI6OnN0YXJ0TWVzc2FnZVRlc3RpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpJUENUZXN0ZXI6OnN0b3BNZXNzYWdlVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OklQ
Q1Rlc3Rlcjo6c3RvcElmTmVlZGVkKToKKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVyLmg6IEFk
ZGVkLgorICAgICAgICAqIFNoYXJlZC9JUENUZXN0ZXIubWVzc2FnZXMuaW46IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmRlY29kZUxlZ2FjeVNlc3Npb25TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5OjpzaG91bGRTZW5kUGVuZGluZ01lc3NhZ2UpOgorICAgICAgICAqIFdlYkF1
dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0
Y2hTeW5jTWVzc2FnZSk6CisgICAgICAgICogV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rl
c3RpbmdBUEkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU01lc3NhZ2VM
aXN0ZW5lcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5n
QVBJOjpKU01lc3NhZ2VMaXN0ZW5lcjo6d2lsbFNlbmRNZXNzYWdlKToKKwogMjAyMi0wMS0yMCAg
Um9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCBQbGF5U3RhdGlvbiAvIGNsYW5nLWNsIGJ1aWxkIGZpeCBmb2xsb3dpbmcgcjI4ODI5OC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0
L0NNYWtlTGlzdHMudHh0CmluZGV4IDI1OWU0NzJiNTdkMGM2NGZmNzQzNzlmMmM5MjljODcyY2Zl
ZmUwODEuLjc1NmRhODhiNDVmNzA0MmY0MjNiNzM0Yzc2NGU2NTY2ZDQ0NmVmYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFr
ZUxpc3RzLnR4dApAQCAtMjE0LDYgKzIxNCw3IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklM
RVMKICAgICBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2Vy
UHJveHkKIAogICAgIFNoYXJlZC9BdXhpbGlhcnlQcm9jZXNzCisgICAgU2hhcmVkL0lQQ1Rlc3Rl
cgogICAgIFNoYXJlZC9XZWJDb25uZWN0aW9uCiAKICAgICBTaGFyZWQvQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRpb25NYW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKaW5kZXggNDA0YTcyMmM3NjkwMDAwYTBmMDNiOWE4MDBkZmM1YjdhMWUz
MGJkMC4uNGM2NjIyMGNmMTIyYTUzYjc0NjlkNDQwMGM3Y2RkYjIzNWM4Yjc0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTIzLDYgKzEy
Myw3IEBAICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVk
L0F1eGlsaWFyeVByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9IVFRQ
U1VwZ3JhZGUvSFRUUFNVcGdyYWRlTGlzdC50eHQKKyQoUFJPSkVDVF9ESVIpL1NoYXJlZC9JUENU
ZXN0ZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9Ob3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZl
ci5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKaW5kZXggMzY3ZTBhYzEwZjhjNTBjMGYzZjRjMTg1MTMxOGVkYjU2NTFhYWU4Ni4u
ZTNiNTU4NDBhZTFlYWY1N2Y1ZWJmNzU0MmU1ZTFmZDQwZTVkZDRkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC00Niw2ICs0Niw5IEBA
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvR1BVUHJvY2Vzc01l
c3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L0dQVVByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvR1BVUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9HUFVQcm9jZXNzUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdC9JUENUZXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L0lQQ1Rlc3Rlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvSVBDVGVzdGVyTWVzc2FnZXNSZXBsaWVzLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdl
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L0xlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggYjYyMTg5Y2I0NzhmNWVlMmQxNmZkNTMxODQxYjhjMjY2ZWNiOTdlMS4uN2Fk
NDllMzczNWY0YjQ3OGM0MTZkOTI5NWMxMzliZTk4ZmQ2Y2U0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMubWFrZQpAQCAtMTQ4LDYgKzE0OCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVNo
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIgXAogCVNoYXJlZC9Ob3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlciBcCiAJU2hhcmVkL1dl
YkNvbm5lY3Rpb24gXAorCVNoYXJlZC9JUENUZXN0ZXIgXAogCVVJUHJvY2Vzcy9XZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5IFwKIAlVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHkgXAogCVVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5IFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAppbmRleCA3MmE0MjJkNGFlZmQ2NjUxZmY5ZGNmNzg0MzdjMDY0MmIyZTUxN2Ri
Li44NWIzOTExY2QxNzg4MTAxZmNmOTE5NjY5MWVlZTU3MjY4ODk3MzczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC0xNDksNiArMTQ5LDEwIEBACiAjaW5jbHVkZSAiV0NDb250ZW50QnVmZmVyTWFuYWdlci5o
IgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorI2luY2x1ZGUgIklQQ1Rl
c3Rlck1lc3NhZ2VzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIApAQCAtNzk1LDYgKzc5OSwxMiBAQCBib29sIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IElQQwogICAgICAgICAgICAgbV9yZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXItPmRpZFJlY2Vp
dmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OklQQ1Rlc3Rlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSB7CisgICAgICAgIG1faXBjVGVzdGVyLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKIAogICAgIHJl
dHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7CiB9CkBAIC04NjgsNiArODc4LDEyIEBAIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAg
ICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQogICAgICAgICAvLyBTa2lw
IG1lc3NhZ2VzIGZvciBhbHJlYWR5IHJlbW92ZWQgcmVjZWl2ZXJzLgogICAgICAgICByZXR1cm4g
dHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpJUENUZXN0ZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgeworICAgICAgICBtX2lwY1Rlc3Rlci5kaWRSZWNlaXZlU3luY01lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQogI2VuZGlmCiAgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3Bh
dGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCmluZGV4IDk4MWI0OGU4N2U2ZDg4NjIyYmNlZGQ4YjI5OGEwMmUzYTAwMGU3YmEuLmM4YWJi
ZjQ1MDlmMjJjZWFjMmJlMGVjMWRlNWIzN2M0ZTg1MGViZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNjQsNiAr
NjQsMTAgQEAKICNpbmNsdWRlICJXQ0xheWVyVHJlZUhvc3RJZGVudGlmaWVyLmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisjaW5jbHVkZSAiSVBDVGVzdGVyLmgiCisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBzdHJ1
Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwpAQCAtMzQ5LDYgKzM1Myw5IEBAIHByaXZhdGU6CiAjaWYg
RU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pICYmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklU
RVIpCiAgICAgVW5pcXVlUmVmPExvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3I+IG1f
cm91dGluZ0FyYml0cmF0b3I7CiAjZW5kaWYKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQor
ICAgIElQQ1Rlc3RlciBtX2lwY1Rlc3RlcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDhlZWJkMjJjZmM4YTU3YWM1
Y2Y3ZGRkZGNjYjYyNDZiYWUzMDk5Y2QuLjVjZWIzOTdmNWI0ZmIxZTJmNzQ4ZDk0NmZkZjRhYjVi
ZTRkZWVkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC04NSw2ICs4NSwxMCBA
QAogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oIgogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorI2luY2x1ZGUgIklQQ1Rlc3Rlck1lc3NhZ2VzLmgi
CisjZW5kaWYKKwogI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGNoYW5uZWwsIGZtdCwg
Li4uKSBSRUxFQVNFX0xPRyhjaGFubmVsLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIg
UFJJdTY0ICJdIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjoiIGZtdCwgdGhpcywgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xP
R19FUlJPUihjaGFubmVsLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJd
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjoiIGZtdCwgdGhpcywgd2ViUHJvY2Vzc0lk
ZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQogCkBAIC0yNzYsNiArMjgwLDE5
IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvCiAgICAgICAgIHJldHVybiBwYXltZW50Q29vcmRp
bmF0b3IoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICNlbmRpZgog
CisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OklQQ1Rlc3Rlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
KSB7CisgICAgICAgIG1faXBjVGVzdGVyLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICAvLyBBZGQgbmV3
IHJlY2VpdmVyIG5hbWUgdGVzdHMgYWJvdmUgdGhpcy4KKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdf
QVBJKQorICAgIGlmIChjb25uZWN0aW9uLmlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZygp
KQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5kbGVk
IG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlICclcyciLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkpKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTM1Myw2ICszNzAs
MTkgQEAgYm9vbCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmUKICAgICAgICAgcmV0dXJuIHBheW1lbnRDb29y
ZGluYXRvcigpLmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBs
eSk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpJUENUZXN0ZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgeworICAgICAgICBtX2lwY1Rlc3Rlci5kaWRSZWNlaXZlU3luY01lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisjZW5kaWYKKworICAgIC8vIEFkZCBuZXcgcmVjZWl2ZXIgbmFtZSB0ZXN0cyBhYm92ZSB0
aGlzLgorI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisgICAgaWYgKGNvbm5lY3Rpb24uaWdu
b3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nKCkpCisgICAgICAgIHJldHVybiB0cnVlOworI2Vu
ZGlmCisKICAgICBXVEZMb2dBbHdheXMoIlVuaGFuZGxlZCBuZXR3b3JrIHByb2Nlc3MgbWVzc2Fn
ZSAnJXMnIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSk7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CmluZGV4IDY1M2ZkNWVlYjUxZGNjYjYwYmU5ODUxNmMxNjBiYWE4Zjc3ZTA2ZjIuLjk5MmVjMDU2
MDcwYTM4MzY5NmZhNWU5YTJjYjIwOGJlZGEyMWEyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKQEAgLTU2LDYgKzU2LDEwIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvVVJMSGFzaC5oPgogCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyNpbmNs
dWRlICJJUENUZXN0ZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgUEFMIHsKIGNsYXNzIFNlc3Np
b25JRDsKIH0KQEAgLTQxNSw2ICs0MTksOSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICBIYXNo
U2V0PFVSTD4gbV9ibG9iVVJMczsKICAgICBIYXNoU2V0PFVSTD4gbV9ibG9iVVJMSGFuZGxlczsK
KyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAgIElQQ1Rlc3RlciBtX2lwY1Rlc3RlcjsK
KyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IDBkZGYwZDYwYjY3ZGUyYTMxMzIzZGNlMGY3OThi
NGZmYWI2NWFjMzYuLjQ0ZDVlYzVkMjFiMTU2N2M4MmFiNDY2ZWI3NzMyZDk5OTVkMWEyNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC04NzQsNiArODc0
LDEzIEBAIHZvaWQgQ29ubmVjdGlvbjo6YWRkTWVzc2FnZU9ic2VydmVyKGNvbnN0IE1lc3NhZ2VP
YnNlcnZlciYgb2JzZXJ2ZXIpCiB7CiAgICAgbV9tZXNzYWdlT2JzZXJ2ZXJzLmFwcGVuZChvYnNl
cnZlcik7CiB9CisKK3ZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWluZ01lc3NhZ2VGb3JU
ZXN0aW5nKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYmIGRlY29kZXIpCit7CisgICAgbV9jb25u
ZWN0aW9uUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGVj
b2RlciA9IFdURk1vdmUoZGVjb2RlcildKCkgbXV0YWJsZSB7CisgICAgICAgIHByb3RlY3RlZFRo
aXMtPnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSk7CisgICAgfSk7Cit9
CiAjZW5kaWYKIAogdm9pZCBDb25uZWN0aW9uOjpwb3N0Q29ubmVjdGlvbkRpZENsb3NlT25Db25u
ZWN0aW9uV29ya1F1ZXVlKCkKQEAgLTEwNTYsNiArMTA2MywxMSBAQCB2b2lkIENvbm5lY3Rpb246
OmRpc3BhdGNoTWVzc2FnZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBSZWNlaXZlck5hbWU6OkFzeW5jUmVwbHkpIHsKICAgICAgICAg
YXV0byBoYW5kbGVyID0gdGFrZUFzeW5jUmVwbHlIYW5kbGVyKCp0aGlzLCBkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSk7CiAgICAgICAgIGlmICghaGFuZGxlcikgeworICAgICAgICAgICAgbWFya0N1
cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCk7CisjaWYgRU5BQkxFKElQQ19URVNU
SU5HX0FQSSkKKyAgICAgICAgICAgIGlmIChtX2lnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGlu
ZykKKyAgICAgICAgICAgICAgICByZXR1cm47CisjZW5kaWYKICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMjc0LDE3
ICsxMjg2LDExIEBAIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGVjb2RlciopPiB0YWtlQXN5bmNS
ZXBseUhhbmRsZXIoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAgICBMb2NrZXIgbG9ja2VyIHsg
YXN5bmNSZXBseUhhbmRsZXJNYXBMb2NrIH07CiAgICAgYXV0byYgbWFwID0gYXN5bmNSZXBseUhh
bmRsZXJNYXAoKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbWFwLmZpbmQocmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KCZjb25uZWN0aW9uKSk7Ci0gICAgaWYgKGl0ZXJhdG9yICE9IG1hcC5lbmQo
KSkgewotICAgICAgICBpZiAoIWl0ZXJhdG9yLT52YWx1ZS5pc1ZhbGlkS2V5KGlkZW50aWZpZXIp
KSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGNvbm5l
Y3Rpb24ubWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlQoaXRlcmF0b3It
PnZhbHVlLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKLSAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52
YWx1ZS50YWtlKGlkZW50aWZpZXIpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbWFwLmVuZCgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWl0ZXJhdG9yLT52YWx1ZS5pc1ZhbGlkS2V5
KGlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gaXRlcmF0
b3ItPnZhbHVlLnRha2UoaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6d2FrZVVw
UnVuTG9vcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggODky
ZTc1NjQ5YjU4ZTRhZjgwNmU4YzM2MDFkNDlmNWNjNGE2YTFhNy4uNjBhNGQ5ODQyYzgwMzAxM2Fl
MjQ0N2NmZTI5NjM0NzllOTEyMTUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5l
Y3Rpb24uaApAQCAtMzIyLDYgKzMyMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SWdub3Jl
SW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nKCkgeyBtX2lnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVz
dGluZyA9IHRydWU7IH0KICAgICBib29sIGlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZygp
IGNvbnN0IHsgcmV0dXJuIG1faWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nOyB9CisgICAg
dm9pZCBkaXNwYXRjaEluY29taW5nTWVzc2FnZUZvclRlc3Rpbmcoc3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZVJlY2VpdmVyTWVz
c2FnZShNZXNzYWdlUmVjZWl2ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCmluZGV4IDEzMzM2NDczNGI4MGU3YWMxY2Ez
MjhlNTIwZWY4Njc2YjRhYzczMGUuLmRjNGI2OTJlNDcyZGY1Y2U0MGM1YzJjMzVjNDNkMmVmZTVi
YzBjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCkBAIC00NywzMiAr
NDcsMzIgQEAgc3RhdGljIGNvbnN0IHVpbnQ4X3QqIGNvcHlCdWZmZXIoY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSkKICAgICByZXR1cm4gYnVmZmVyQ29weTsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IERlY29kZXI6OmNyZWF0ZShjb25zdCB1aW50OF90KiBi
dWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3IpKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpLCBWZWN0b3I8QXR0YWNobWVudD4mJiBhdHRhY2htZW50cykKK3N0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBEZWNvZGVyOjpjcmVhdGUoY29uc3QgdWludDhfdCogYnVm
ZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudHMp
CiB7CiAgICAgQVNTRVJUKGJ1ZmZlcik7CiAgICAgaWYgKFVOTElLRUxZKCFidWZmZXIpKSB7CiAg
ICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKElQQywgIkRlY29kZXI6OmNyZWF0ZSgpIGNhbGxlZCB3
aXRoIGEgbnVsbCBidWZmZXIgKGJ1ZmZlclNpemU6ICVsdSkiLCBidWZmZXJTaXplKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorICAgIHJldHVybiBEZWNvZGVyOjpjcmVhdGUoY29w
eUJ1ZmZlcihidWZmZXIsIGJ1ZmZlclNpemUpLCBidWZmZXJTaXplLCBbXShjb25zdCB1aW50OF90
KiBwdHIsIHNpemVfdCkgeyBmYXN0RnJlZShjb25zdF9jYXN0PHVpbnQ4X3QqPihwdHIpKTsgfSwg
V1RGTW92ZShhdHRhY2htZW50cykpOyAvLyBOT0xJTlQKK30KIAotICAgIGNvbnN0IHVpbnQ4X3Qq
IGJ1ZmZlckNvcHk7Ci0gICAgaWYgKCFidWZmZXJEZWFsbG9jYXRvcikgewotICAgICAgICBidWZm
ZXJDb3B5ID0gY29weUJ1ZmZlcihidWZmZXIsIGJ1ZmZlclNpemUpOwotICAgICAgICBBU1NFUlQo
YnVmZmVyQ29weSk7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghYnVmZmVyQ29weSkpCi0gICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9IGVsc2UKLSAgICAgICAgYnVmZmVyQ29weSA9IGJ1
ZmZlcjsKLQotICAgIGF1dG8gZGVjb2RlciA9IHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPihuZXcg
RGVjb2RlcihidWZmZXJDb3B5LCBidWZmZXJTaXplLCBidWZmZXJEZWFsbG9jYXRvciwgV1RGTW92
ZShhdHRhY2htZW50cykpKTsKK3N0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBEZWNvZGVyOjpjcmVh
dGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgQnVmZmVyRGVhbGxv
Y2F0b3ImJiBidWZmZXJEZWFsbG9jYXRvciwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYgYXR0YWNobWVu
dHMpCit7CisgICAgQVNTRVJUKGJ1ZmZlcik7CisgICAgaWYgKFVOTElLRUxZKCFidWZmZXIpKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKElQQywgIkRlY29kZXI6OmNyZWF0ZSgpIGNhbGxl
ZCB3aXRoIGEgbnVsbCBidWZmZXIgKGJ1ZmZlclNpemU6ICVsdSkiLCBidWZmZXJTaXplKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIGF1dG8gZGVjb2RlciA9IHN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPihuZXcgRGVjb2RlcihidWZmZXIsIGJ1ZmZlclNpemUsIFdURk1vdmUo
YnVmZmVyRGVhbGxvY2F0b3IpLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSkpOwogICAgIHJldHVybiBk
ZWNvZGVyLT5pc1ZhbGlkKCkgPyBXVEZNb3ZlKGRlY29kZXIpIDogbnVsbHB0cjsKIH0KIAotRGVj
b2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCB2
b2lkICgqYnVmZmVyRGVhbGxvY2F0b3IpKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBWZWN0b3I8
QXR0YWNobWVudD4mJiBhdHRhY2htZW50cykKK0RlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhf
dCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgQnVmZmVyRGVhbGxvY2F0b3ImJiBidWZmZXJE
ZWFsbG9jYXRvciwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudHMpCiAgICAgOiBtX2J1
ZmZlciB7IGJ1ZmZlciB9CiAgICAgLCBtX2J1ZmZlclBvcyB7IG1fYnVmZmVyIH0KICAgICAsIG1f
YnVmZmVyRW5kIHsgbV9idWZmZXIgKyBidWZmZXJTaXplIH0KLSAgICAsIG1fYnVmZmVyRGVhbGxv
Y2F0b3IgeyBidWZmZXJEZWFsbG9jYXRvciB9CisgICAgLCBtX2J1ZmZlckRlYWxsb2NhdG9yIHsg
V1RGTW92ZShidWZmZXJEZWFsbG9jYXRvcikgfQogICAgICwgbV9hdHRhY2htZW50cyB7IFdURk1v
dmUoYXR0YWNobWVudHMpIH0KIHsKICAgICBpZiAoVU5MSUtFTFkocmVpbnRlcnByZXRfY2FzdDx1
aW50cHRyX3Q+KG1fYnVmZmVyKSAlIGFsaWdub2YodWludDY0X3QpKSkgewpAQCAtOTQsNyArOTQs
NyBAQCBEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVh
bVNpemUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSQogICAgIDogbV9idWZmZXIgeyBzdHJlYW0gfQog
ICAgICwgbV9idWZmZXJQb3MgeyBtX2J1ZmZlciB9CiAgICAgLCBtX2J1ZmZlckVuZCB7IG1fYnVm
ZmVyICsgc3RyZWFtU2l6ZSB9Ci0gICAgLCBtX2J1ZmZlckRlYWxsb2NhdG9yKFtdIChjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSB7IH0pCisgICAgLCBtX2J1ZmZlckRlYWxsb2NhdG9yIHsgbnVsbHB0
ciB9CiAgICAgLCBtX2Rlc3RpbmF0aW9uSUQoZGVzdGluYXRpb25JRCkKIHsKICAgICBpZiAoVU5M
SUtFTFkoIWRlY29kZShtX21lc3NhZ2VOYW1lKSkpCkBAIC0xMDQsMTIgKzEwNCw4IEBAIERlY29k
ZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogc3RyZWFtLCBzaXplX3Qgc3RyZWFtU2l6ZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JCiBEZWNvZGVyOjp+RGVjb2RlcigpCiB7CiAgICAgQVNTRVJUKG1f
YnVmZmVyKTsKLQogICAgIGlmIChtX2J1ZmZlckRlYWxsb2NhdG9yKQogICAgICAgICBtX2J1ZmZl
ckRlYWxsb2NhdG9yKG1fYnVmZmVyLCBtX2J1ZmZlckVuZCAtIG1fYnVmZmVyKTsKLSAgICBlbHNl
Ci0gICAgICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dWludDhfdCo+KG1fYnVmZmVyKSk7Ci0KICAg
ICAvLyBGSVhNRTogV2UgbmVlZCB0byBkaXNwb3NlIG9mIHRoZSBtYWNoIHBvcnRzIGluIGNhc2Vz
IG9mIGZhaWx1cmUuCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCA3
MDUzNWFmYjVjOWRlZWIyNjcyYTA2MDc1YjlhOGNhMTVkNzk5NDQyLi5hOTM1NmVhMTA4YmFhMzYw
YjhlZjkzOWIwYTQ1ZTNiYmFhYzIzYTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8
d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDYsNyArNDcs
OSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+IHN0cnVjdCBIYXNNb2Rlcm5EZWNvZGVy
OwogY2xhc3MgRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGUoY29uc3QgdWludDhf
dCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgdm9pZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShj
b25zdCB1aW50OF90Kiwgc2l6ZV90KSwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYpOworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlclNpemUsIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKKyAgICB1c2luZyBCdWZm
ZXJEZWFsbG9jYXRvciA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgdWludDhfdCosIHNpemVfdCk+Owor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3Qq
IGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIEJ1ZmZlckRlYWxsb2NhdG9yJiYsIFZlY3RvcjxB
dHRhY2htZW50PiYmKTsKICAgICBEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90
IHN0cmVhbVNpemUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogCiAgICAgfkRlY29kZXIoKTsK
QEAgLTEzOSw3ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
SVBDRGVjb2RlciA9IHRydWU7CiAKIHByaXZhdGU6Ci0gICAgRGVjb2Rlcihjb25zdCB1aW50OF90
KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3IpKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBWZWN0b3I8QXR0YWNobWVudD4mJik7CisgICAgRGVjb2Rl
cihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBCdWZmZXJEZWFsbG9j
YXRvciYmLCBWZWN0b3I8QXR0YWNobWVudD4mJik7CiAKICAgICBib29sIGFsaWduQnVmZmVyUG9z
aXRpb24oc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KTsKICAgICBib29sIGJ1ZmZlcklzTGFyZ2VF
bm91Z2hUb0NvbnRhaW4oc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KSBjb25zdDsKQEAgLTE0Nyw3
ICsxNTAsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IHVpbnQ4X3QqIG1fYnVmZmVyOwogICAgIGNv
bnN0IHVpbnQ4X3QqIG1fYnVmZmVyUG9zOwogICAgIGNvbnN0IHVpbnQ4X3QqIG1fYnVmZmVyRW5k
OwotICAgIHZvaWQgKCptX2J1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50OF90Kiwgc2l6ZV90
KTsKKyAgICBCdWZmZXJEZWFsbG9jYXRvciBtX2J1ZmZlckRlYWxsb2NhdG9yOwogCiAgICAgVmVj
dG9yPEF0dGFjaG1lbnQ+IG1fYXR0YWNobWVudHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQppbmRleCA2MzhjZjMwZmIxZTll
YjRhYzU4NTI4OTlmZjIzZDc2MTZmNGY5MDg5Li5hM2E1ZjQ5OTU2YmYxNWNmODBkZjMyNzI4ZTEz
MzdiNGRlOTk4OTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2Nv
YS9Db25uZWN0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29j
b2EvQ29ubmVjdGlvbkNvY29hLm1tCkBAIC00MjYsNyArNDI2LDcgQEAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2RlcihtYWNoX21zZ19oZWFkZXJfdCog
aGVhZGVyLAogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAg
ICByZXR1cm4gRGVjb2Rlcjo6Y3JlYXRlKGJvZHksIGJvZHlTaXplLCBudWxscHRyLCBWZWN0b3I8
QXR0YWNobWVudD4geyB9KTsKKyAgICAgICAgcmV0dXJuIERlY29kZXI6OmNyZWF0ZShib2R5LCBi
b2R5U2l6ZSwgeyB9KTsKICAgICB9CiAKICAgICBtYWNoX21zZ19ib2R5X3QqIGJvZHkgPSByZWlu
dGVycHJldF9jYXN0PG1hY2hfbXNnX2JvZHlfdCo+KGhlYWRlciArIDEpOwpAQCAtNDg3LDcgKzQ4
Nyw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURlY29k
ZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlciwKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgcmV0dXJuIERlY29kZXI6OmNyZWF0ZShtZXNzYWdlQm9keSwgbWVzc2FnZUJv
ZHlTaXplLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgcmV0dXJuIERlY29k
ZXI6OmNyZWF0ZShtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBXVEZNb3ZlKGF0dGFjaG1l
bnRzKSk7CiB9CiAKIC8vIFRoZSByZWNlaXZlIGJ1ZmZlciBzaXplIHNob3VsZCBhbHdheXMgaW5j
bHVkZSB0aGUgbWF4aW11bSB0cmFpbGVyIHNpemUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmluZGV4IGYyMjFmOTA5ZmU0ZTQ5MGNh
ZjZmZjBkNDg2Yjg5Zjc0MzAzZWIxN2IuLjc0NmYzZjZmZDdmYmJhMDhiYzA5NTExNDdjMDYyMzY0
YWJlMjFkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29u
bmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29u
bmVjdGlvblVuaXguY3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpwcm9j
ZXNzTWVzc2FnZSgpCiAgICAgaWYgKG1lc3NhZ2VJbmZvLmlzQm9keU91dE9mTGluZSgpKQogICAg
ICAgICBtZXNzYWdlQm9keSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9vbE1lc3NhZ2VC
b2R5LT5kYXRhKCkpOwogCi0gICAgYXV0byBkZWNvZGVyID0gRGVjb2Rlcjo6Y3JlYXRlKG1lc3Nh
Z2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1l
bnRzKSk7CisgICAgYXV0byBkZWNvZGVyID0gRGVjb2Rlcjo6Y3JlYXRlKG1lc3NhZ2VCb2R5LCBt
ZXNzYWdlSW5mby5ib2R5U2l6ZSgpLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiAgICAgQVNTRVJU
KGRlY29kZXIpOwogICAgIGlmICghZGVjb2RlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3Bw
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCmluZGV4
IGFmZjM5ZmMxMDJlZDA0NzEyMWYzZjFjMmFmYTg4OWUwODIyMjgxOTguLmRhOGQ3ZjBmYjhlYzA3
ZjU4ZTY4MWQ4YWI4OTJhODI5N2QzNjg4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIENv
bm5lY3Rpb246OnJlYWRFdmVudEhhbmRsZXIoKQogCiAgICAgICAgIGlmICghbV9yZWFkQnVmZmVy
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIG1lc3NhZ2UsIGxldCdzIGRp
c3BhdGNoIGl0LgotICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gRGVjb2Rlcjo6Y3JlYXRlKG1f
cmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVhZEJ1ZmZlci5zaXplKCksIG51bGxwdHIsIHsgfSk7Cisg
ICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBEZWNvZGVyOjpjcmVhdGUobV9yZWFkQnVmZmVyLmRh
dGEoKSwgbV9yZWFkQnVmZmVyLnNpemUoKSwgeyB9KTsKICAgICAgICAgICAgIEFTU0VSVChkZWNv
ZGVyKTsKICAgICAgICAgICAgIGlmICghZGVjb2RlcikKICAgICAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYWJhMGIwODg3N2M0NzJh
NTA3MWZmM2FhM2Q4ODAxMDJmNTdjODlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvSVBDVGVzdGVyLmNwcApAQCAtMCwwICsxLDEzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJUENUZXN0ZXIuaCIKKworI2lmIEVOQUJMRShJ
UENfVEVTVElOR19BUEkpCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRlY29k
ZXIuaCIKKworI2luY2x1ZGUgPGRsZmNuLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRl
IDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIu
aD4KKyNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KKworLy8gVGhlIHRl
c3RlciBBUEkuCitleHRlcm4gIkMiIHsKKy8vIFJldHVybnMgMCBpZiBkcml2ZXIgc2hvdWxkIGNv
bnRpbnVlLgordHlwZWRlZiBpbnQgKCpXS01lc3NhZ2VUZXN0U2VuZE1lc3NhZ2VGdW5jKShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc3osIHZvaWQqIGNvbnRleHQpOwordHlwZWRlZiB2b2lk
ICgqV0tNZXNzYWdlVGVzdERyaXZlckZ1bmMpKFdLTWVzc2FnZVRlc3RTZW5kTWVzc2FnZUZ1bmMg
c2VuZE1lc3NhZ2VGdW5jLCB2b2lkKiBjb250ZXh0KTsKK30KKworbmFtZXNwYWNlIHsKK3N0cnVj
dCBTZW5kTWVzc2FnZUNvbnRleHQgeworICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbjsK
KyAgICBzdGQ6OmF0b21pYzxib29sPiYgc2hvdWxkU3RvcDsKK307Cit9CisKK2V4dGVybiAiQyIg
eworCitzdGF0aWMgdm9pZCBkZWZhdWx0VGVzdERyaXZlcihXS01lc3NhZ2VUZXN0U2VuZE1lc3Nh
Z2VGdW5jIHNlbmRNZXNzYWdlRnVuYywgdm9pZCogY29udGV4dCkKK3sKKyAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YSgxMDAwKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDA7IGkrKykgewor
ICAgICAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpOworICAgICAgICBpbnQgcmV0ID0gc2VuZE1lc3NhZ2VGdW5jKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSwgY29udGV4dCk7CisgICAgICAgIGlmIChyZXQpCisgICAgICAgICAgICByZXR1
cm47CisgICAgfQorfQorCitzdGF0aWMgaW50IHNlbmRUZXN0TWVzc2FnZShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3Qgc2l6ZSwgdm9pZCogY29udGV4dCkKK3sKKyAgICBhdXRvIG1lc3NhZ2VD
b250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxTZW5kTWVzc2FnZUNvbnRleHQqPihjb250ZXh0KTsK
KyAgICBpZiAobWVzc2FnZUNvbnRleHQtPnNob3VsZFN0b3ApCisgICAgICAgIHJldHVybiAxOwor
ICAgIGF1dG8mIHRlc3RlZENvbm5lY3Rpb24gPSBtZXNzYWdlQ29udGV4dC0+Y29ubmVjdGlvbjsK
KyAgICBpZiAoIXRlc3RlZENvbm5lY3Rpb24uaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gMTsK
KyAgICBCaW5hcnlTZW1hcGhvcmUgc2VtYXBob3JlOworICAgIGF1dG8gZGVjb2RlciA9IElQQzo6
RGVjb2Rlcjo6Y3JlYXRlKGRhdGEsIHNpemUsIFsmc2VtYXBob3JlXSAoY29uc3QgdWludDhfdCos
IHNpemVfdCkgeyBzZW1hcGhvcmUuc2lnbmFsKCk7IH0sIHsgfSk7IC8vIE5PTElOVAorICAgIGlm
IChkZWNvZGVyKSB7CisgICAgICAgIHRlc3RlZENvbm5lY3Rpb24uZGlzcGF0Y2hJbmNvbWluZ01l
c3NhZ2VGb3JUZXN0aW5nKFdURk1vdmUoZGVjb2RlcikpOworICAgICAgICBzZW1hcGhvcmUud2Fp
dCgpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
Kworc3RhdGljIFdLTWVzc2FnZVRlc3REcml2ZXJGdW5jIG1lc3NhZ2VUZXN0RHJpdmVyKFN0cmlu
ZyYmIGRyaXZlck5hbWUpCit7CisgICAgaWYgKGRyaXZlck5hbWUuaXNFbXB0eSgpIHx8IGRyaXZl
ck5hbWUgPT0gImRlZmF1bHQiKQorICAgICAgICBkcml2ZXJOYW1lID0gZ2V0ZW52KCJXRUJLSVRf
TUVTU0FHRV9URVNUX0RFRkFVTFRfRFJJVkVSIik7CisgICAgaWYgKGRyaXZlck5hbWUuaXNFbXB0
eSgpIHx8IGRyaXZlck5hbWUgPT0gImRlZmF1bHQiKQorICAgICAgICByZXR1cm4gZGVmYXVsdFRl
c3REcml2ZXI7CisgICAgYXV0byB0ZXN0RHJpdmVyID0gcmVpbnRlcnByZXRfY2FzdDxXS01lc3Nh
Z2VUZXN0RHJpdmVyRnVuYz4oZGxzeW0oUlRMRF9ERUZBVUxULCBkcml2ZXJOYW1lLnV0ZjgoKS5k
YXRhKCkpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh0ZXN0RHJpdmVyKTsKKyAgICByZXR1cm4gdGVz
dERyaXZlcjsKK30KKworc3RhdGljIHZvaWQgcnVuTWVzc2FnZVRlc3RpbmcoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBzdGQ6OmF0b21pYzxib29sPiYgc2hvdWxkU3RvcCwgU3RyaW5nJiYg
ZHJpdmVyTmFtZSkKK3sKKyAgICBjb25uZWN0aW9uLnNldElnbm9yZUludmFsaWRNZXNzYWdlRm9y
VGVzdGluZygpOworICAgIFNlbmRNZXNzYWdlQ29udGV4dCBjb250ZXh0IHsgY29ubmVjdGlvbiwg
c2hvdWxkU3RvcCB9OworICAgIGF1dG8gZHJpdmVyID0gbWVzc2FnZVRlc3REcml2ZXIoV1RGTW92
ZShkcml2ZXJOYW1lKSk7CisgICAgZHJpdmVyKHNlbmRUZXN0TWVzc2FnZSwgJmNvbnRleHQpOwor
fQorCitJUENUZXN0ZXI6OklQQ1Rlc3RlcigpID0gZGVmYXVsdDsKKworSVBDVGVzdGVyOjp+SVBD
VGVzdGVyKCkKK3sKKyAgICBzdG9wSWZOZWVkZWQoKTsKK30KKwordm9pZCBJUENUZXN0ZXI6OnN0
YXJ0TWVzc2FnZVRlc3RpbmcoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJpbmcmJiBk
cml2ZXJOYW1lKQoreworICAgIGlmICghbV90ZXN0UXVldWUpCisgICAgICAgIG1fdGVzdFF1ZXVl
ID0gV29ya1F1ZXVlOjpjcmVhdGUoIklQQyB0ZXN0aW5nIHdvcmsgcXVldWUiKTsKKyAgICBtX3Rl
c3RRdWV1ZS0+ZGlzcGF0Y2goW2Nvbm5lY3Rpb24gPSBSZWYgeyBjb25uZWN0aW9uIH0sICZzaG91
bGRTdG9wID0gbV9zaG91bGRTdG9wLCBkcml2ZXJOYW1lID0gV1RGTW92ZShkcml2ZXJOYW1lKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgcnVuTWVzc2FnZVRlc3RpbmcoY29ubmVjdGlvbiwgc2hvdWxk
U3RvcCwgV1RGTW92ZShkcml2ZXJOYW1lKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSVBDVGVzdGVy
OjpzdG9wTWVzc2FnZVRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBzdG9wSWZOZWVkZWQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworfQorCit2b2lkIElQQ1Rlc3Rlcjo6c3RvcElmTmVlZGVkKCkKK3sKKyAgICBpZiAobV90ZXN0
UXVldWUpIHsKKyAgICAgICAgbV9zaG91bGRTdG9wID0gdHJ1ZTsKKyAgICAgICAgbV90ZXN0UXVl
dWUtPmRpc3BhdGNoU3luYyhbXSB7IH0pOworICAgICAgICBtX3Rlc3RRdWV1ZSA9IG51bGxwdHI7
CisgICAgfQorfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvSVBDVGVzdGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40NDk5MDkzNWJkNTUxZDRlZWI1ODM1NDNlMTJlY2ZkM2I4NDcxODVlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmgKQEAgLTAsMCArMSw1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQ
SSkKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPGF0b21pYz4KKyNp
bmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJ
UENUZXN0ZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgor
ICAgIElQQ1Rlc3RlcigpOworICAgIH5JUENUZXN0ZXIoKTsKKworICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVu
Y29kZXI+JikgZmluYWw7Citwcml2YXRlOgorICAgIC8vIE1lc3NhZ2VzLgorICAgIHZvaWQgc3Rh
cnRNZXNzYWdlVGVzdGluZyhJUEM6OkNvbm5lY3Rpb24mLCBTdHJpbmcmJiBkcml2ZXJOYW1lKTsK
KyAgICB2b2lkIHN0b3BNZXNzYWdlVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+KTsK
KworICAgIHZvaWQgc3RvcElmTmVlZGVkKCk7CisKKyAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX3Rl
c3RRdWV1ZTsKKyAgICBzdGQ6OmF0b21pYzxib29sPiBtX3Nob3VsZFN0b3AgeyBmYWxzZSB9Owor
fTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rl
c3Rlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5tZXNzYWdl
cy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43NjVhOTllOThlNTBkZWIzY2Q1MTlkMWE0N2M4YzJlNTQ0NzI0NWFk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLm1lc3Nh
Z2VzLmluCkBAIC0wLDAgKzEsMzAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisj
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisKK21lc3NhZ2VzIC0+IElQQ1Rl
c3RlciBOb3RSZWZDb3VudGVkIHsKKyAgICBTdGFydE1lc3NhZ2VUZXN0aW5nKFN0cmluZyBkcml2
ZXJOYW1lKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBTdG9wTWVzc2FnZVRlc3RpbmcoKSAtPiAoKSBT
eW5jaHJvbm91cworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDQ0NTczMTA5YWUzMzIzZDY5
ZTAyMjdiZDdhYTQxNWEzY2I4NzkzZjYuLmM1Yzg1NmY5Y2Q2OTQxZWYyZDRmZGFjMmY1Y2QxMzg0
YTFkZTljZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjIxLDYgKzIyMSw3IEBAIFNoYXJlZC9FZGl0b3JT
dGF0ZS5jcHAKIFNoYXJlZC9Gb250SW5mby5jcHAKIFNoYXJlZC9GcmFtZUluZm9EYXRhLmNwcAog
U2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcAorU2hhcmVkL0lQQ1Rlc3Rlci5jcHAK
IFNoYXJlZC9MYXllclRyZWVDb250ZXh0LmNwcAogU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAog
U2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcApAQCAtODQzLDYgKzg0NCw3IEBAIFdlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCiAKIFdlYlBy
b2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcAogCitJUENUZXN0ZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVy
LmNwcAogUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUlRD
RGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25l
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05v
bmUuY3BwCmluZGV4IGVkMTQ0NDljYmYzZTQ3YzU5MDJmOWM5ZTRlYzVkYTlhZmJkMjgwMTEuLjJj
NzkxMGRkOTMzZmQ0ZGZhMjA4NWYwOGI1MmRkODRiMjI5NzIyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3Bw
CkBAIC00OCw3ICs0OCw3IEBAIFJlZlB0cjxBUEk6OkRhdGE+IGVuY29kZUxlZ2FjeVNlc3Npb25T
dGF0ZShjb25zdCBTZXNzaW9uU3RhdGUmIHNlc3Npb25TdGF0ZSkKIAogYm9vbCBkZWNvZGVMZWdh
Y3lTZXNzaW9uU3RhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBTZXNz
aW9uU3RhdGUmIHNlc3Npb25TdGF0ZSkKIHsKLSAgICBhdXRvIGRlY29kZXIgPSBJUEM6OkRlY29k
ZXI6OmNyZWF0ZShkYXRhLCBkYXRhU2l6ZSwgbnVsbHB0ciwgVmVjdG9yPElQQzo6QXR0YWNobWVu
dD4oKSk7CisgICAgYXV0byBkZWNvZGVyID0gSVBDOjpEZWNvZGVyOjpjcmVhdGUoZGF0YSwgZGF0
YVNpemUsIHsgfSk7CiAgICAgaWYgKCFkZWNvZGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA2MGI5NDEx
ZDYwOTEyMDgxODZmNjA3NWFmMjk5N2FjNmRjZDA3NTg4Li42NmQ0OWZhYzNlYTY0MTU5YjFjODI0
YTIwZmVlNDE5ZjcwZGUzNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCkBAIC0xNDcsNiArMTQ3LDEwIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRM
ZWFrQ291bnRlci5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorI2lu
Y2x1ZGUgIklQQ1Rlc3Rlck1lc3NhZ2VzLmgiCisjZW5kaWYKKwogI2RlZmluZSBXRUJQUk9DRVNT
UE9PTF9SRUxFQVNFX0xPRyhjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0coY2hhbm5lbCwg
IiVwIC0gV2ViUHJvY2Vzc1Bvb2w6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmlu
ZSBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoY2hhbm5lbCwgZm10LCAuLi4pIFJF
TEVBU0VfTE9HKGNoYW5uZWwsICJXZWJQcm9jZXNzUG9vbDo6IiBmbXQsICMjX19WQV9BUkdTX18p
CiAjZGVmaW5lIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwg
Li4uKSBSRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCAiJXAgLSBXZWJQcm9jZXNzUG9vbDo6IiBm
bXQsIHRoaXMsICMjX19WQV9BUkdTX18pCkBAIC0yNTEsNiArMjU1LDkgQEAgV2ViUHJvY2Vzc1Bv
b2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1
cmF0aW9uKQogI2VuZGlmCiAKICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBy
b2Nlc3NQb29sOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKKyNpZiBFTkFCTEUoSVBD
X1RFU1RJTkdfQVBJKQorICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6SVBDVGVzdGVy
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faXBjVGVzdGVyKTsKKyNlbmRpZgogCiAgICAgLy8g
Tk9URTogVGhlc2Ugc3ViLW9iamVjdHMgbXVzdCBiZSBpbml0aWFsaXplZCBhZnRlciBtX21lc3Nh
Z2VSZWNlaXZlck1hcC4uCiAgICAgYWRkU3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eT4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDU5
YWIxMmEzYTdhYThlMDkzMTlmYjdmZjBhYjNhMGU5ODJkY2RiN2UuLjQzMmM2NWVlOTk0OWNhYmIz
YzkyNzlkNjE1ODFmODM0Njc2YjIxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaApAQCAtNzUsNiArNzUsMTEgQEAgT0JKQ19DTEFTUyBXS1dlYkluc3BlY3RvclBy
ZWZlcmVuY2VPYnNlcnZlcjsKICNpbmNsdWRlIDxwYWwvc3lzdGVtL1N5c3RlbVNsZWVwTGlzdGVu
ZXIuaD4KICNlbmRpZgogCisKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorI2luY2x1ZGUg
IklQQ1Rlc3Rlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXV0b21hdGlv
bkNsaWVudDsKIGNsYXNzIERvd25sb2FkQ2xpZW50OwpAQCAtODAzLDYgKzgwOCw5IEBAIHByaXZh
dGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBvd2VyT2JzZXJ2ZXI+IG1fcG93ZXJP
YnNlcnZlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UEFMOjpTeXN0ZW1TbGVlcExpc3RlbmVyPiBt
X3N5c3RlbVNsZWVwTGlzdGVuZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJ
KQorICAgIElQQ1Rlc3RlciBtX2lwY1Rlc3RlcjsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IDRjMWM0YjRhNTBlZmE0MGM3YjFhZjc4YjhiODRhNGY3OTE5YjEwZTEuLjM0MjU1NGRjMzQw
NzY2MzVjZjBhOWIyYzBjYWRkOTdmMGU3NTlkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIGJvb2wgV2ViUHJvY2Vz
c1Byb3h5OjpzaG91bGRTZW5kUGVuZGluZ01lc3NhZ2UoY29uc3QgUGVuZGluZ01lc3NhZ2UmIG1l
c3NhZ2UpCiAgICAgaWYgKG1lc3NhZ2UuZW5jb2Rlci0+bWVzc2FnZU5hbWUoKSA9PSBJUEM6Ok1l
c3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRSZXF1ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2gpIHsK
ICAgICAgICAgYXV0byBidWZmZXIgPSBtZXNzYWdlLmVuY29kZXItPmJ1ZmZlcigpOwogICAgICAg
ICBhdXRvIGJ1ZmZlclNpemUgPSBtZXNzYWdlLmVuY29kZXItPmJ1ZmZlclNpemUoKTsKLSAgICAg
ICAgYXV0byBkZWNvZGVyID0gSVBDOjpEZWNvZGVyOjpjcmVhdGUoYnVmZmVyLCBidWZmZXJTaXpl
LCBudWxscHRyLCB7IH0pOworICAgICAgICBhdXRvIGRlY29kZXIgPSBJUEM6OkRlY29kZXI6OmNy
ZWF0ZShidWZmZXIsIGJ1ZmZlclNpemUsIHsgfSk7CiAgICAgICAgIEFTU0VSVChkZWNvZGVyKTsK
ICAgICAgICAgaWYgKCFkZWNvZGVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNzllN2Y0NDE3YWExY2MzNDE4OTAxNjg0NDI1
ZGY3YzlkMzdmMmE3Zi4uMTcyMWU4YmVhNTQwYjY4MThhYWIxNDY5Njk4M2MwNzJhZjI4YWYzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9X
ZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zMyw2ICszMywxMCBAQAogI2lu
Y2x1ZGUgIldlYkF1dGhuUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRv
clJlc3BvbnNlRGF0YS5oPgogCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyNpbmNsdWRl
ICJJUENUZXN0ZXJNZXNzYWdlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTY3LDYgKzcxLDI5IEBAIHZvaWQgV2ViQXV0aG5D
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjCiAgICAgQ1JBU0goKTsKIH0KIAorYm9vbCBXZWJBdXRobkNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQorICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6SVBDVGVzdGVy
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgbV9pcGNUZXN0ZXIuZGlkUmVjZWl2
ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBXZWJBdXRobkNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiBy
ZXBseUVuY29kZXIpCit7CisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OklQQ1Rlc3Rlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIG1faXBjVGVzdGVyLmRpZFJlY2VpdmVTeW5jTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKwogdm9pZCBXZWJB
dXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1ha2VDcmVkZW50aWFsKFZlY3Rvcjx1aW50OF90
PiYmIGhhc2gsIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmJiBvcHRpb25zLCBi
b29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFu
ZGxlcikKIHsKICAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgV1RGTW92ZShvcHRp
b25zKSwgbnVsbHB0ciwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUs
IG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFN0cmlu
ZygpLCBudWxscHRyIH0sIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAppbmRleCAyNzNiNDYxNTRjMmE1NDVjYzQ0YmFhNzEwOGMyNzgwYmNmYjAxNzFlLi5lYzc1
NzYzMzY2NmJiZmI2OGZjNDlkMDUzZDliY2JhZDdiM2Y3N2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaApAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorI2lmIEVOQUJMRShJ
UENfVEVTVElOR19BUEkpCisjaW5jbHVkZSAiSVBDVGVzdGVyLmgiCisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogZW51bSBjbGFzcyBBdXRoZW50aWNhdG9yQXR0YWNobWVudDsKIHN0cnVj
dCBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhOwpAQCAtNjcsNiArNzEsMTAgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUp
IGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgZmluYWw7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKKwor
ICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
OworICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgLy8gUmVjZWl2ZXJzLgog
ICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgV2ViQ29yZTo6
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYmLCBib29sIHByb2Nlc3NpbmdVc2Vy
R2VzdHVyZSwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOwpAQCAtNzksNiArODcsOSBAQCBw
cml2YXRlOgogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBSZWY8
V2ViQXV0aG5Qcm9jZXNzPiBtX1dlYkF1dGhuUHJvY2VzczsKICAgICBjb25zdCBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOworI2lmIEVOQUJMRShJUENf
VEVTVElOR19BUEkpCisgICAgSVBDVGVzdGVyIG1faXBjVGVzdGVyOworI2VuZGlmCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Q
cm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgppbmRleCBhYzczYTk1MzZhODkyMDIyZTMzZmE2YzE0MTcyODU5ZGUyZDVmNGVj
Li5lOThkMGE2Mjg1MjRhOTAwMzBhYzNiMzQ3YzQ2MjU1MGZiOTQzZjdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0
aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yMiw3ICsyMiw3IEBACiAK
ICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCi1tZXNzYWdlcyAtPiBXZWJBdXRobkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgeworbWVzc2FnZXMgLT4gV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNz
IFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKIAogICAgIE1ha2VDcmVkZW50aWFsKFZlY3Rvcjx1aW50
OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgLT4gKHN0cnVjdCBXZWJD
b3JlOjpBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhIGRhdGEsIGVudW06aW50IFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRp
b25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKICAgICBHZXRBc3NlcnRpb24oVmVjdG9yPHVpbnQ4X3Q+
IGhhc2gsIHN0cnVjdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMg
b3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6
QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSBkYXRhLCBlbnVtOmludCBXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50LCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0
YSBleGNlcHRpb24pIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBhY2ExZmYxZGU0ODFjODkyYmI4ZThlMWJmZjllNjJkYTU2ODI1
MWRkLi4zNThhOWNhNmIwYmQ1ZTUxYmI2ODY0ZGEzMmU4MjRiMjU0MTU2YWFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMTgsNiAr
MTMxOCw3IEBACiAJCTdCNzMxMjQyMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9u
RW5jb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi87
IH07CiAJCTdCQUIxMTEwMjVERDAyQjMwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVj
ZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QkFCMTEwRjI1REQwMkIyMDA4RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZS5oICovOyB9OwogCQk3QkNGNzBERTI2MTVEMDZFMDBFNEZCNzAgLyogU2NvcGVkUmVuZGVy
aW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0JDRjcwQ0IyNjE0OTM1RTAwRTRGQjcwIC8qIFNjb3BlZFJlbmRl
cmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5tbSAqLzsgfTsKKwkJN0JEREEzMTkyNzQ3QzA0MDAw
Mzg2NTlFIC8qIChudWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgfTsK
IAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRh
dGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFU
eXBlcy5oICovOyB9OwogCQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZv
cm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0MxMzVBQTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzFCQTMzRTFBNEEw
RTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxQkEzM0MxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rp
b25hcnkuaCAqLzsgfTsKQEAgLTUwNDQsNiArNTA0NSw4IEBACiAJCTdCNDgzRjFDMjVDRERBOUIw
MDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVR
dWV1ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDgzRjFFMjVDRERB
OUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QjUwRTk3RjI3NzFGNkNFMDAzREFBQzQgLyogSVBDVGVzdGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IElQQ1Rlc3Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCNTBFOTgwMjc3MUY2Q0YwMDNEQUFDNCAvKiBJUENUZXN0ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSVBDVGVzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNjRDMEI2MjU0
QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzIyNUNDODUyMzAw
M0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MDk5LDYgKzcxMDIsOCBAQAogCQkJCTExODUwMjYw
MjY3M0IwREEwMEE2NDI1RSAvKiBYUiAqLywKIAkJCQlFM0JDRTg3NzI2NzI1MjEyMDAxMUQ4REIg
LyogQWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzLmNwcCAqLywKIAkJCQlFM0JDRTg3ODI2NzI1MjEy
MDAxMUQ4REIgLyogQWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzLmggKi8sCisJCQkJN0I1MEU5N0Yy
NzcxRjZDRTAwM0RBQUM0IC8qIElQQ1Rlc3Rlci5jcHAgKi8sCisJCQkJN0I1MEU5ODAyNzcxRjZD
RjAwM0RBQUM0IC8qIElQQ1Rlc3Rlci5oICovLAogCQkJCUE3RDc5MkQ1MTc2N0NCNkUwMDg4MUNC
RSAvKiBBY3Rpdml0eUFzc2VydGlvbi5jcHAgKi8sCiAJCQkJQTdENzkyRDQxNzY3Q0IwOTAwODgx
Q0JFIC8qIEFjdGl2aXR5QXNzZXJ0aW9uLmggKi8sCiAJCQkJQkMzMjlEOUExNkFDQ0U5OTAwMzE2
REUyIC8qIEFQSVdlYkFyY2hpdmUuaCAqLywKQEAgLTEyOTY3LDYgKzEyOTcyLDcgQEAKIAkJCQlD
NUJDRTVERjFDNTA3NjZBMDBDREUzRkEgLyogSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJENEQyQzgxMURGNjBCRjMwMDJFQjEwQyAvKiBJbnRl
cmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTMxRjYwQTQy
NUNDN0RCOTAwQUYxNEY0IC8qIElQQ1NlbWFwaG9yZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0JE
REEzMTkyNzQ3QzA0MDAwMzg2NTlFIC8qIChudWxsKSBpbiBIZWFkZXJzICovLAogCQkJCTlCNDc5
MDhGMjUzMTUxQ0MwMEVDMTFBQiAvKiBKU0lQQ0JpbmRpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUMxNjYzRTVCMjRBRUFBMkYwMEM2QTNCMiAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29u
c3RhbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0UwOTM3ODE0RkIxMjhDMDAxMTM4RDkgLyog
TGF5ZXJIb3N0aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCmluZGV4IGUxYTMxNDAxMmFk
OGM0MGQ3NTRjMGJiYzg3OTE5MDA5NmQ0Yjg3YjkuLjU0ZjQ2NTdmODQwNjQ0MWRmYzQzOGQ4YzUw
ZmQxYjc5NTZiODU0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCkBAIC0xODg2LDcgKzE4ODYsNyBAQCB2b2lkIEpTTWVzc2Fn
ZUxpc3RlbmVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBJUEM6OkRlY29kZXImIGRlY29kZXIp
CiAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdG9KUyhtX2NvbnRleHQpOwogICAgIEpTQzo6SlNM
b2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0LT52bSgpKTsKIAotICAgIGF1dG8gbXV0YWJsZURl
Y29kZXIgPSBJUEM6OkRlY29kZXI6OmNyZWF0ZShkZWNvZGVyLmJ1ZmZlcigpLCBkZWNvZGVyLmxl
bmd0aCgpLCBudWxscHRyLCB7IH0pOworICAgIGF1dG8gbXV0YWJsZURlY29kZXIgPSBJUEM6OkRl
Y29kZXI6OmNyZWF0ZShkZWNvZGVyLmJ1ZmZlcigpLCBkZWNvZGVyLmxlbmd0aCgpLCB7IH0pOwog
ICAgIGF1dG8qIGRlc2NyaXB0aW9uID0ganNEZXNjcmlwdGlvbkZyb21EZWNvZGVyKGdsb2JhbE9i
amVjdCwgKm11dGFibGVEZWNvZGVyKTsKIAogICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzW10gPSB7
IGRlc2NyaXB0aW9uID8gdG9SZWYoZ2xvYmFsT2JqZWN0LCBkZXNjcmlwdGlvbikgOiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChtX2NvbnRleHQpIH07CkBAIC0xOTAzLDcgKzE5MDMsNyBAQCB2b2lkIEpT
TWVzc2FnZUxpc3RlbmVyOjp3aWxsU2VuZE1lc3NhZ2UoY29uc3QgSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyLCBPcHRpb25TZXQ8SQogICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRvSlMobV9jb250ZXh0
KTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAKLSAg
ICBhdXRvIGRlY29kZXIgPSBJUEM6OkRlY29kZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBl
bmNvZGVyLmJ1ZmZlclNpemUoKSwgbnVsbHB0ciwgeyB9KTsKKyAgICBhdXRvIGRlY29kZXIgPSBJ
UEM6OkRlY29kZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUo
KSwgeyB9KTsKICAgICBhdXRvKiBkZXNjcmlwdGlvbiA9IGpzRGVzY3JpcHRpb25Gcm9tRGVjb2Rl
cihnbG9iYWxPYmplY3QsICpkZWNvZGVyKTsKIAogICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzW10g
PSB7IGRlc2NyaXB0aW9uID8gdG9SZWYoZ2xvYmFsT2JqZWN0LCBkZXNjcmlwdGlvbikgOiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChtX2NvbnRleHQpIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2RkZDMzYzM3NDg4MmI5MjQ5
NDZmMjM0YmRhMmFhZGZlMjUzMjQwNC4uYjA3ODRmOGY5MGI2YzVjN2MyYzEzMGE3NmIzN2E1Njc0
Njk4NTk3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAxLTIwICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBpbi1wcm9jZXNzIHRl
c3Rpbmcgb2YgSVBDIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzE2NzQKKyAgICAgICAgPHJkYXI6Ly84NDE4OTMxND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIGRvbmUtaXBjLWZ1eml6bmcK
KworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogaXBjL3N0YXJ0LW1lc3Nh
Z2UtdGVzdGluZy5odG1sOiBBZGRlZC4KKwogMjAyMi0wMS0yMCAgQWxleGV5IFNodmF5a2EgIDxh
c2h2YXlrYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FsbGJhY2sgZnVuY3Rpb25zIC8gaW50ZXJm
YWNlcyBzaG91bGQgdXNlIGdsb2JhbCBvYmplY3Qgb2YgaXRzIF92YWx1ZV8gZm9yIGVycm9ycyBh
bmQgbGlmZWN5Y2xlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4NzdkZmU0NWRkZjFmZjY3MWVmYjJh
NGI2N2ExMThiNDAyY2U2N2U4Li5mNmQxYTY4Y2QyMmNmMzYxNWRmNzAzZmU2Y2QyYWY1YWZkMjc3
YzY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUyMDUsNiArNTIwNSw5IEBAIHdlYmtpdC5vcmcv
Yi8yMzMzNDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNl
dC1yb3RhdGUtMDAyCiAjIElQQyB0ZXN0IGZhaWxpbmcgaW4gRGVidWcgbW9kZSBkdWUgdG8gYXNz
ZXJ0LgogWyBEZWJ1ZyBdIGlwYy9zZW5kLWludmFsaWQtbWVzc2FnZS5odG1sIFsgU2tpcCBdCiAK
KyMgVGhlIHRlc3QgaW52b2tlcyByYW5kb20gbWVzc2FnZXMsIHBvdGVudGlhbGx5IHByb2R1Y2Vz
IHJhbmRvbSByZXN1bHRzLgoraXBjL3N0YXJ0LW1lc3NhZ2UtdGVzdGluZy5odG1sIFsgU2tpcCBd
CisKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zaGFkb3ctcGFydHMv
aW50ZXJhY3Rpb24td2l0aC1uZXN0ZWQtcHNldWRvLWNsYXNzLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KIAogd2Via2l0Lm9yZy9iLzE4Mzk5NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3NvbS9jc3Mtc3R5bGUtYXR0ci1kZWNsLWJsb2NrLmh0bWwgWyBGYWlsdXJlIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lwYy9zdGFydC1tZXNzYWdlLXRlc3RpbmcuaHRtbCBi
L0xheW91dFRlc3RzL2lwYy9zdGFydC1tZXNzYWdlLXRlc3RpbmcuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YjA5MzVhNWZkZmU0NWYyZGI5Yzc5MjA5ODljZTNmNzZkZjkwZGI0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaXBjL3N0YXJ0LW1lc3NhZ2UtdGVzdGluZy5odG1sCkBAIC0wLDAgKzEs
MzEgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgSVBDVGVzdGlu
Z0FQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGJvZHk+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCit2YXIgZHJpdmVyTmFtZSA9
IHt0eXBlOiAiU3RyaW5nIiwgdmFsdWU6ICJkZWZhdWx0In07CisKK2Z1bmN0aW9uIHN0b3AoKSB7
CisgICAgaWYgKHdpbmRvdy5JUEMpIHsKKyAgICAgICAgSVBDLnNlbmRTeW5jTWVzc2FnZSgiR1BV
IiwgMCwgSVBDLm1lc3NhZ2VzLklQQ1Rlc3Rlcl9TdG9wTWVzc2FnZVRlc3RpbmcubmFtZSwgW10p
OworICAgICAgICBJUEMuc2VuZFN5bmNNZXNzYWdlKCJOZXR3b3JraW5nIiwgMCwgSVBDLm1lc3Nh
Z2VzLklQQ1Rlc3Rlcl9TdG9wTWVzc2FnZVRlc3RpbmcubmFtZSwgW10pOworICAgICAgICBJUEMu
c2VuZFN5bmNNZXNzYWdlKCJVSSIsIDAsIElQQy5tZXNzYWdlcy5JUENUZXN0ZXJfU3RvcE1lc3Nh
Z2VUZXN0aW5nLm5hbWUsIFtdKTsKKyAgICAgICAgY29uc29sZS5sb2coInN0b3BwZWQiKTsKKyAg
ICB9CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKK30KKworaWYgKHdpbmRvdy5JUEMpIHsKKyAgICBJUEMuc2VuZE1lc3NhZ2UoIkdQ
VSIsIDAsIElQQy5tZXNzYWdlcy5JUENUZXN0ZXJfU3RhcnRNZXNzYWdlVGVzdGluZy5uYW1lLCBb
ZHJpdmVyTmFtZV0pOworICAgIElQQy5zZW5kTWVzc2FnZSgiTmV0d29ya2luZyIsIDAsIElQQy5t
ZXNzYWdlcy5JUENUZXN0ZXJfU3RhcnRNZXNzYWdlVGVzdGluZy5uYW1lLCBbZHJpdmVyTmFtZV0p
OworICAgIElQQy5zZW5kTWVzc2FnZSgiVUkiLCAwLCBJUEMubWVzc2FnZXMuSVBDVGVzdGVyX1N0
YXJ0TWVzc2FnZVRlc3RpbmcubmFtZSwgW2RyaXZlck5hbWVdKTsKKyAgICBjb25zb2xlLmxvZygi
c3RhcnRlZCIpOworfQorc2V0VGltZW91dChzdG9wLCAzMDAwKTsKKworPC9zY3JpcHQ+Cis8cD5U
ZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBjcmFzaC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>