<?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>160605</bug_id>
          
          <creation_ts>2016-08-05 12:36:26 -0700</creation_ts>
          <short_desc>Lay WebProcess/UIProcess groundwork for an IPC GamepadProvider</short_desc>
          <delta_ts>2016-08-08 10:28:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>160623</dependson>
          <blocked>134076</blocked>
    
    <blocked>134675</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ryanhaddad</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1218008</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-05 12:36:26 -0700</bug_when>
    <thetext>Lay WebProcess/UIProcess groundwork for an IPC GamepadProvider</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218014</commentid>
    <comment_count>1</comment_count>
      <attachid>285442</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-05 12:57:38 -0700</bug_when>
    <thetext>Created attachment 285442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218018</commentid>
    <comment_count>2</comment_count>
      <attachid>285443</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-05 13:09:11 -0700</bug_when>
    <thetext>Created attachment 285443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218023</commentid>
    <comment_count>3</comment_count>
      <attachid>285445</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-05 13:16:27 -0700</bug_when>
    <thetext>Created attachment 285445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218026</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-05 13:21:47 -0700</bug_when>
    <thetext>This EFL build error appears to be bull.

Source/WebKit2/CMakeFiles/WebKit2.dir/WebProcess/Gamepad/WebGamepadProvider.cpp.o.d -o Source/WebKit2/CMakeFiles/WebKit2.dir/WebProcess/Gamepad/WebGamepadProvider.cpp.o -c ../../Source/WebKit2/WebProcess/Gamepad/WebGamepadProvider.cpp
In file included from ../../Source/WebKit2/WebProcess/Gamepad/WebGamepadProvider.cpp:27:0:
../../Source/WebKit2/WebProcess/Gamepad/WebGamepadProvider.h:33:35: error: &apos;WebCore&apos; has not been declared
 class WebGamepadProvider : public WebCore::GamepadProvider {

Except... yes, it has been, in &lt;WebCore/GamepadProvider.h&gt; which is included in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218032</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-05 13:28:39 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; This EFL build error appears to be bull.
&gt; 
&gt; Source/WebKit2/CMakeFiles/WebKit2.dir/WebProcess/Gamepad/WebGamepadProvider.
&gt; cpp.o.d -o
&gt; Source/WebKit2/CMakeFiles/WebKit2.dir/WebProcess/Gamepad/WebGamepadProvider.
&gt; cpp.o -c ../../Source/WebKit2/WebProcess/Gamepad/WebGamepadProvider.cpp
&gt; In file included from
&gt; ../../Source/WebKit2/WebProcess/Gamepad/WebGamepadProvider.cpp:27:0:
&gt; ../../Source/WebKit2/WebProcess/Gamepad/WebGamepadProvider.h:33:35: error:
&gt; &apos;WebCore&apos; has not been declared
&gt;  class WebGamepadProvider : public WebCore::GamepadProvider {
&gt; 
&gt; Except... yes, it has been, in &lt;WebCore/GamepadProvider.h&gt; which is included
&gt; in this file.

I tried to fix other Linux build errors a few times, but this one has got me confused.

Clearly the Mac build works, clearly the C++ is right - It&apos;s entirely unclear why the linux builds don&apos;t think the WebCore namespace exists, etc etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218037</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-08-05 13:37:12 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Except... yes, it has been, in &lt;WebCore/GamepadProvider.h&gt; which is included
&gt; in this file.

Nope, because ENABLE(GAMEPAD) is OFF for both ports!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218038</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-05 13:38:55 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #4)
&gt; &gt; Except... yes, it has been, in &lt;WebCore/GamepadProvider.h&gt; which is included
&gt; &gt; in this file.
&gt; 
&gt; Nope, because ENABLE(GAMEPAD) is OFF for both ports!

Duh!  Okay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218039</commentid>
    <comment_count>8</comment_count>
      <attachid>285446</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-05 13:41:16 -0700</bug_when>
    <thetext>Created attachment 285446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218067</commentid>
    <comment_count>9</comment_count>
      <attachid>285446</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-05 14:56:23 -0700</bug_when>
    <thetext>Comment on attachment 285446
Patch

Clearing flags on attachment: 285446

Committed r204195: &lt;http://trac.webkit.org/changeset/204195&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218068</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-05 14:56:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218146</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-05 17:53:00 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 160623</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218150</commentid>
    <comment_count>12</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-08-05 17:55:37 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Re-opened since this is blocked by bug 160623
LayoutTests and API tests started failing after this change.

ASSERTION FAILED: m_processPoolsUsingGamepads.contains(&amp;pool)
/Volumes/Data/slave/elcapitan-debug/build/Source/WebKit2/UIProcess/Gamepad/UIGamepadProvider.cpp(77) : void WebKit::UIGamepadProvider::processPoolStoppedUsingGamepads(WebKit::WebProcessPool &amp;)
1   0x106d5fff0 WTFCrash
2   0x109763af2 WebKit::UIGamepadProvider::processPoolStoppedUsingGamepads(WebKit::WebProcessPool&amp;)
3   0x109ac03e2 WebKit::WebProcessPool::processStoppedUsingGamepads(WebKit::WebProcessProxy*)
4   0x109ac0368 WebKit::WebProcessPool::disconnectProcess(WebKit::WebProcessProxy*)
5   0x109aefbf9 WebKit::WebProcessProxy::shutDown()
6   0x109af016a WebKit::WebProcessProxy::removeWebPage(unsigned long long)
7   0x109948898 WebKit::WebPageProxy::close()
8   0x109bb28e1 WebKit::WebViewImpl::~WebViewImpl()
9   0x109bb2e35 WebKit::WebViewImpl::~WebViewImpl()
10  0x109c8b776 -[WKView dealloc]
11  0x7fff9b751ac4 (anonymous namespace)::AutoreleasePoolPage::pop(void*)
12  0x7fff8f3c0c12 _CFAutoreleasePoolPop
13  0x7fff940059ea -[NSAutoreleasePool drain]
14  0x1057cc84c main
15  0x7fff87f615ad start
16  0x2

https://build.webkit.org/builders/Apple%20El%20Capitan%20Debug%20WK2%20(Tests)/builds/7132</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218190</commentid>
    <comment_count>13</comment_count>
      <attachid>285482</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-05 22:22:02 -0700</bug_when>
    <thetext>Created attachment 285482
New PFL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218191</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-05 22:24:26 -0700</bug_when>
    <thetext>With the updated patch, API tests all run fine locally, and layout tests are 50% the way through without issue (finishing up as I type)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218225</commentid>
    <comment_count>15</comment_count>
      <attachid>285482</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-06 01:01:44 -0700</bug_when>
    <thetext>Comment on attachment 285482
New PFL

Clearing flags on attachment: 285482

Committed r204222: &lt;http://trac.webkit.org/changeset/204222&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218226</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-06 01:01:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218371</commentid>
    <comment_count>17</comment_count>
      <attachid>285446</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-07 10:10:42 -0700</bug_when>
    <thetext>Comment on attachment 285446
Patch

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

Looks like you possibly already landed this?

&gt; Source/WebKit2/UIProcess/Gamepad/UIGamepadProvider.cpp:72
&gt; +    if (m_processPoolsUsingGamepads.size() == 1)
&gt; +        platformStartMonitoringGamepads();

Same comment as above about the size 1 check.

&gt; Source/WebKit2/UIProcess/Gamepad/UIGamepadProvider.cpp:81
&gt; +    if (m_processPoolsUsingGamepads.isEmpty())
&gt; +        platformStopMonitoringGamepads();

Same comment as above about the empty set check.

&gt; Source/WebKit2/UIProcess/Gamepad/UIGamepadProvider.h:30
&gt; +#include &lt;WebCore/GamepadProvider.h&gt;

I don’t understand why this include is needed.

&gt; Source/WebKit2/UIProcess/Gamepad/UIGamepadProvider.h:41
&gt; +    UIGamepadProvider();
&gt; +    ~UIGamepadProvider() final;

Is there a way to avoid having these be public? Only the singleton function needs to run the constructor, and ideally the destructor would be deleted rather than final; we don’t want to generate the untested code for destroying an object that we never intend to destroy.

&gt; Source/WebKit2/UIProcess/Gamepad/UIGamepadProvider.h:47
&gt; +    void platformGamepadConnected(WebCore::PlatformGamepad&amp;) final;
&gt; +    void platformGamepadDisconnected(WebCore::PlatformGamepad&amp;) final;
&gt; +    void platformGamepadInputActivity() final;

Should these be private?

&gt; Source/WebKit2/UIProcess/Gamepad/mac/UIGamepadProviderHID.cpp:40
&gt; +    HIDGamepadProvider::singleton().startMonitoringGamepads(this);

Why does this function take a pointer rather than a reference?

&gt; Source/WebKit2/UIProcess/Gamepad/mac/UIGamepadProviderHID.cpp:46
&gt; +    HIDGamepadProvider::singleton().stopMonitoringGamepads(this);

Same question.

&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:1248
&gt; +    auto* webProcessProxy = WebProcessProxy::fromConnection(&amp;connection);

Inside a short function like this, might be nicer to use a shorter name like either proxy or process for this local variable.

&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:1256
&gt; +    if (m_processesUsingGamepads.size() == 1)
&gt; +        UIGamepadProvider::singleton().processPoolStartedUsingGamepads(*this);

Same comment as above about the size 1 check.

&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:1261
&gt; +    auto* webProcessProxy = WebProcessProxy::fromConnection(&amp;connection);

Inside a short function like this, might be nicer to use a shorter name like either proxy or process for this local variable.

&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:1274
&gt; +    if (m_processesUsingGamepads.isEmpty())
&gt; +        UIGamepadProvider::singleton().processPoolStoppedUsingGamepads(*this);

Same comment as above about the empty set check. Except unlike the others, this doesn’t have the assertion inside the function. Maybe it should.

&gt; Source/WebKit2/UIProcess/WebProcessPool.h:394
&gt; +    void processStoppedUsingGamepads(WebProcessProxy*);

Should take a reference, not a pointer.

&gt; Source/WebKit2/UIProcess/WebProcessPool.h:396
&gt; +    HashSet&lt;WebProcessProxy*&gt; m_processesUsingGamepads;

Normally we try to group data member declarations together rather than interspersing them among the function members even if it means multiple conditional sections. So could this go with the other data members?

&gt; Source/WebKit2/WebProcess/Gamepad/WebGamepadProvider.cpp:59
&gt; +    if (m_clients.size() == 1)
&gt; +        WebProcess::singleton().send(Messages::WebProcessPool::StartedUsingGamepads(), 0);

Even though we assert that the set doesn’t already contain a client, code would be more robust if it checked for emptiness before and cached that in a boolean rather than checking the size after for 1. That way if the assertion is wrong we still can’t get mismatched started/stopped messages.

&gt; Source/WebKit2/WebProcess/Gamepad/WebGamepadProvider.cpp:68
&gt; +    if (m_clients.isEmpty())
&gt; +        WebProcess::singleton().send(Messages::WebProcessPool::StoppedUsingGamepads(), 0);

Even though we assert that the set contains the client beforehand, code would be robust if it checked the return value of remove and only checked if the set is empty if the remove returned true (actually removed something). That way if the assertion is wrong we still can’t get mismatched started/stopped messages.

&gt; Source/WebKit2/WebProcess/Gamepad/WebGamepadProvider.h:38
&gt; +    WebGamepadProvider();
&gt; +    ~WebGamepadProvider() final;

Is there a way to avoid having these be public? Only the NeverDestroyed inside the singleton function needs to run the constructor, and ideally the destructor would be deleted rather than final; we don’t want to generate the untested code for destroying an object that we never intend to destroy.

&gt; Source/WebKit2/WebProcess/Gamepad/WebGamepadProvider.h:44
&gt; +    void startMonitoringGamepads(WebCore::GamepadProviderClient*) final;
&gt; +    void stopMonitoringGamepads(WebCore::GamepadProviderClient*) final;
&gt; +    const Vector&lt;WebCore::PlatformGamepad*&gt;&amp; platformGamepads() final;

Can we make these private instead of public?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218374</commentid>
    <comment_count>18</comment_count>
      <attachid>285446</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-07 10:17:15 -0700</bug_when>
    <thetext>Comment on attachment 285446
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/Gamepad/WebGamepadProvider.cpp:59
&gt;&gt; +        WebProcess::singleton().send(Messages::WebProcessPool::StartedUsingGamepads(), 0);
&gt; 
&gt; Even though we assert that the set doesn’t already contain a client, code would be more robust if it checked for emptiness before and cached that in a boolean rather than checking the size after for 1. That way if the assertion is wrong we still can’t get mismatched started/stopped messages.

This is the size 1 comment I kept referring to as &quot;above&quot;. Guess it wasn’t above.

&gt;&gt; Source/WebKit2/WebProcess/Gamepad/WebGamepadProvider.cpp:68
&gt;&gt; +        WebProcess::singleton().send(Messages::WebProcessPool::StoppedUsingGamepads(), 0);
&gt; 
&gt; Even though we assert that the set contains the client beforehand, code would be robust if it checked the return value of remove and only checked if the set is empty if the remove returned true (actually removed something). That way if the assertion is wrong we still can’t get mismatched started/stopped messages.

This is the empty set check comment I kept referring to as &quot;above&quot;. Guess it wasn’t above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218499</commentid>
    <comment_count>19</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-08 09:05:48 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Comment on attachment 285446 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=285446&amp;action=review
&gt; 
&gt; Looks like you possibly already landed this?
&gt; 

I did, but am revisiting it anyways.

Re: all of your feedback about set management, will do.

Re: your feedback on making constructors private an deleting destructors, I didn&apos;t simply because I would&apos;ve had to friend NeverDestroyed&lt;&gt;, but we do that elsewhere so I&apos;ll also do it here.

Re: your feedback on pointer vs reference, that&apos;s leftover from years ago, just before we aggressively started referenc-izing the code base. Will-do now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218511</commentid>
    <comment_count>20</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-08 09:48:41 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #17)
&gt; &gt; Comment on attachment 285446 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=285446&amp;action=review
&gt; &gt; 
&gt; &gt; Looks like you possibly already landed this?

&gt; 
&gt; Re: your feedback on making constructors private an deleting destructors, I
&gt; didn&apos;t simply because I would&apos;ve had to friend NeverDestroyed&lt;&gt;, but we do
&gt; that elsewhere so I&apos;ll also do it here.
&gt; 

I&apos;m going to punt on deleting the destructors, because the base GamepadProvider class does currently expose a virtual destructor meaning it can&apos;t be deleted in derived classes.

Guaranteeing that any GamepadProvider is never deleted, and therefore deleting the constructor on the base class *is* something that should be possible, but it can wait.

In the meantime, I made all the derived class destructors private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218514</commentid>
    <comment_count>21</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-08 09:54:48 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218515</commentid>
    <comment_count>22</comment_count>
      <attachid>285570</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-08 09:54:50 -0700</bug_when>
    <thetext>Created attachment 285570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218516</commentid>
    <comment_count>23</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-08 09:55:30 -0700</bug_when>
    <thetext>New patch addressing all of Darin&apos;s review feedback.

Putting straight in cq+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218517</commentid>
    <comment_count>24</comment_count>
      <attachid>285570</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-08 09:55:49 -0700</bug_when>
    <thetext>Comment on attachment 285570
Patch

Rejecting attachment 285570 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 285570, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Darin&apos;s suggestions found in /Volumes/Data/EWS/WebKit/Source/WebCore/ChangeLog does not appear to be a valid reviewer according to contributors.json.
/Volumes/Data/EWS/WebKit/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://webkit-queues.webkit.org/results/1835206</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218522</commentid>
    <comment_count>25</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-08 10:28:44 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Comment on attachment 285570 [details]
&gt; Patch
&gt; 
&gt; Rejecting attachment 285570 [details] from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;,
&gt; &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;,
&gt; &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 285570,
&gt; &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit
&gt; 
&gt; Darin&apos;s suggestions found in
&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/ChangeLog does not appear to be a
&gt; valid reviewer according to contributors.json.
&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/ChangeLog neither lists a valid
&gt; reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case
&gt; insensitive).
&gt; 
&gt; Full output: http://webkit-queues.webkit.org/results/1835206

Well, if the CQ won&apos;t let me be all cute with the reviewed-by-line, I&apos;ll land manually.

https://trac.webkit.org/changeset/204257</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285442</attachid>
            <date>2016-08-05 12:57:38 -0700</date>
            <delta_ts>2016-08-05 13:09:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160605-20160805125611.patch</filename>
            <type>text/plain</type>
            <size>35876</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzAyMzBkYWMyNWFjNzdl
YjBkYzgzYjJmMWIzYjFmMjAzZmE4YmJmYy4uNWJkMjBiMmNiNDc2MzI5YzY3YjE4ZTZiY2Y3YmE3
M2JlYjg0NTM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE2LTA4LTA1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBMYXkgV2ViUHJvY2Vzcy9V
SVByb2Nlc3MgZ3JvdW5kd29yayBmb3IgYW4gSVBDIEdhbWVwYWRQcm92aWRlci4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDYwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2g6CisgICAg
ICAgICAgLSBJbnRyb2R1Y2VzIHRoZSBHYW1lcGFkUHJvdmlkZXIgdGhhdCB0aGUgV2ViUHJvY2Vz
cyB3aWxsIHVzZSAoV2ViR2FtZXBhZFByb3ZpZGVyKQorICAgICAgICAgIC0gSGFzIHRoYXQgcHJv
dmlkZXIgbWVzc2FnZSB0byB0aGUgVUlQcm9jZXNzIG5vdGlmeWluZyBpbnRlcmVzdCBpbiBnYW1l
cGFkIHN0YXRlCisgICAgICAgICAgLSBJbnRyb2R1Y2VzIGEgR2FtZXBhZFByb3ZpZGVyQ2xpZW50
IGluIHRoZSBVSVByb2Nlc3MgKFVJR2FtZXBhZFByb3ZpZGVyKSB0aGF0IHdpbGwgdXNlCisgICAg
ICAgICAgICBvbmUgb2YgdGhlIGV4aXN0aW5nIEdhbWVwYWRQcm92aWRlcnMgdG8gcGFzcyBnYW1l
cGFkIHN0YXRlIGFsb25nIHRvIFdlYlByb2Nlc3Nlcy4KKyAgICAgICAgICAtIEFkZHMgYW4gZW1w
dHkgc2tlbGV0b24gZm9yIHRoZSBzb29uLXRvLWJlLXVzZWQgV2ViR2FtZXBhZCwgd2hpY2ggd2ls
bCBiZSB0aGUgCisgICAgICAgICAgICAiUGxhdGZvcm1HYW1lcGFkIiBmb3IgV2ViUHJvY2Vzc2Vz
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogVUlQcm9jZXNzL0dhbWVwYWRzL1VJR2Ft
ZXBhZFByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3Zp
ZGVyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6VUlH
YW1lcGFkUHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6flVJ
R2FtZXBhZFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBs
YXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3Zp
ZGVyOjpwbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpVSUdh
bWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSk6CisgICAgICAgIChX
ZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwcm9jZXNzUG9vbFN0YXJ0ZWRVc2luZ0dhbWVwYWRz
KToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnByb2Nlc3NQb29sU3RvcHBl
ZFVzaW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxh
dGZvcm1TdGFydE1vbml0b3JpbmdHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBh
ZFByb3ZpZGVyOjpwbGF0Zm9ybVN0b3BNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9HYW1lcGFkcy9VSUdhbWVwYWRQcm92aWRlci5oOiBBZGRlZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9HYW1lcGFkcy9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25pdG9y
aW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZv
cm1TdG9wTW9uaXRvcmluZ0dhbWVwYWRzKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp+V2ViUHJvY2Vz
c1Bvb2wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RhcnRlZFVzaW5nR2FtZXBh
ZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RvcHBlZFVzaW5nR2FtZXBh
ZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc1N0b3BwZWRVc2lu
Z0dhbWVwYWRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW46CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZC5oOiBBZGRlZC4KKyAgICAg
ICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6V2ViR2FtZXBhZFByb3ZpZGVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjp+V2ViR2FtZXBhZFByb3Zp
ZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpzdGFydE1vbml0b3Jp
bmdHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6c3RvcE1v
bml0b3JpbmdHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6
cGxhdGZvcm1HYW1lcGFkcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVw
YWRQcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisK
IDIwMTYtMDgtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBD
cmFzaCB1bmRlciBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnByb2Nlc3NEaWRD
cmFzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDJhYjBjZGZjMmY0NjNiYjBkMGQwZjViMDM3
MzI0MjEwNjI2MTc3YTQuLjM3YTJlMGFhYzRlNjhlMzA3NDkxZDQ1YzBkOWZjN2YyNmRjOGNjZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0zNCw2ICszNCw3IEBAIHNldChXZWJLaXQyX0lOQ0xV
REVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0F1dG9tYXRpb24i
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9EYXRhYmFzZXMiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9Eb3dubG9hZHMiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9HYW1lcGFkcyIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0luc3BlY3RvclNlcnZl
ciIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0xhdW5jaGVyIgogICAgICIke1dFQktJ
VDJfRElSfS9VSVByb2Nlc3MvTmV0d29yayIKQEAgLTUzLDYgKzU0LDcgQEAgc2V0KFdlYktpdDJf
SU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0RhdGFi
YXNlcy9JbmRleGVkREIiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvRmlsZUFQSSIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9GdWxsU2NyZWVuIgorICAgICIke1dFQktJ
VDJfRElSfS9XZWJQcm9jZXNzL0dhbWVwYWRzIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0ljb25EYXRh
YmFzZSIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZSIKQEAg
LTQ3OCw2ICs0ODAsOCBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmNwcAogICAgIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eU1hcC5jcHAKIAorICAgIFVJUHJvY2Vzcy9HYW1lcGFkcy9VSUdhbWVwYWRQcm92aWRlci5j
cHAKKwogICAgIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuY3BwCiAgICAg
VUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuY3BwCiAgICAgVUlQ
cm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuY3BwCkBAIC01MjUsNiArNTI5
LDkgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcAogCisgICAgV2ViUHJvY2Vzcy9HYW1lcGFkcy9XZWJHYW1l
cGFkLmNwcAorICAgIFdlYlByb2Nlc3MvR2FtZXBhZHMvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcAor
CiAgICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci5jcHAKICAgICBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFu
YWdlci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWRz
L1VJR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFk
cy9VSUdhbWVwYWRQcm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNjMTEzYTg4ZTZlYzY3MDY5MmYz
ZWIxOGE4ZGI5MGI2M2U1Y2Q4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9HYW1lcGFkcy9VSUdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTAsMCArMSw5OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVSUdhbWVwYWRQcm92
aWRlci5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0hJREdh
bWVwYWRQcm92aWRlci5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1VJR2FtZXBhZFBy
b3ZpZGVyJiBVSUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8VUlHYW1lcGFkUHJvdmlkZXI+IHNoYXJlZFByb3ZpZGVyOworICAgIHJldHVy
biBzaGFyZWRQcm92aWRlcjsKK30KKworVUlHYW1lcGFkUHJvdmlkZXI6OlVJR2FtZXBhZFByb3Zp
ZGVyKCkKK3sKK30KKworVUlHYW1lcGFkUHJvdmlkZXI6On5VSUdhbWVwYWRQcm92aWRlcigpCit7
CisgICAgaWYgKCFtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMuaXNFbXB0eSgpKQorICAgICAg
ICBwbGF0Zm9ybVN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKTsKK30KKwordm9pZCBVSUdhbWVwYWRQ
cm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYpCit7Cit9
CisKK3ZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZChQ
bGF0Zm9ybUdhbWVwYWQmKQoreworfQorCit2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9y
bUdhbWVwYWRJbnB1dEFjdGl2aXR5KCkKK3sKK30KKwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6
cHJvY2Vzc1Bvb2xTdGFydGVkVXNpbmdHYW1lcGFkcyhXZWJQcm9jZXNzUG9vbCYgcG9vbCkKK3sK
KyAgICBBU1NFUlQoIW1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcy5jb250YWlucygmcG9vbCkp
OworICAgIG1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcy5hZGQoJnBvb2wpOworCisgICAgaWYg
KG1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcy5zaXplKCkgPT0gMSkKKyAgICAgICAgcGxhdGZv
cm1TdGFydE1vbml0b3JpbmdHYW1lcGFkcygpOworfQorCit2b2lkIFVJR2FtZXBhZFByb3ZpZGVy
Ojpwcm9jZXNzUG9vbFN0b3BwZWRVc2luZ0dhbWVwYWRzKFdlYlByb2Nlc3NQb29sJiBwb29sKQor
eworICAgIEFTU0VSVChtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMuY29udGFpbnMoJnBvb2wp
KTsKKyAgICBtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMucmVtb3ZlKCZwb29sKTsKKworICAg
IGlmIChtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMuaXNFbXB0eSgpKQorICAgICAgICBwbGF0
Zm9ybVN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKTsKK30KKworI2lmICFQTEFURk9STShNQUMpCit2
b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKCkK
K3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBvdGhlciBwbGF0Zm9ybXMKK30KKwordm9p
ZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmluZ0dhbWVwYWRzKCkKK3sK
KyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBvdGhlciBwbGF0Zm9ybXMKK30KKyNlbmRpZiAv
LyAhUExBVEZPUk0oTUFDKQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkcy9VSUdhbWVwYWRQcm92aWRl
ci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWRzL1VJR2FtZXBhZFByb3ZpZGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGZhMmFmZDBhZjgwNjYwNDkzYmNkZDk5YTMzNzJlMTBiMjFmZTRjMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkcy9VSUdh
bWVwYWRQcm92aWRlci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPFdlYkNvcmUvR2FtZXBhZFByb3ZpZGVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9HYW1lcGFkUHJvdmlkZXJDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CisKK2NsYXNzIFVJ
R2FtZXBhZFByb3ZpZGVyIDogcHVibGljIFdlYkNvcmU6OkdhbWVwYWRQcm92aWRlckNsaWVudCB7
CitwdWJsaWM6CisgICAgVUlHYW1lcGFkUHJvdmlkZXIoKTsKKyAgICB+VUlHYW1lcGFkUHJvdmlk
ZXIoKSBmaW5hbDsKKworICAgIHN0YXRpYyBVSUdhbWVwYWRQcm92aWRlciYgc2luZ2xldG9uKCk7
CisKKyAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZChXZWJDb3JlOjpQbGF0Zm9ybUdh
bWVwYWQmKSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZChXZWJD
b3JlOjpQbGF0Zm9ybUdhbWVwYWQmKSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZElu
cHV0QWN0aXZpdHkoKSBmaW5hbDsKKworICAgIHZvaWQgcHJvY2Vzc1Bvb2xTdGFydGVkVXNpbmdH
YW1lcGFkcyhXZWJQcm9jZXNzUG9vbCYpOworICAgIHZvaWQgcHJvY2Vzc1Bvb2xTdG9wcGVkVXNp
bmdHYW1lcGFkcyhXZWJQcm9jZXNzUG9vbCYpOworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZv
cm1TdGFydE1vbml0b3JpbmdHYW1lcGFkcygpOworICAgIHZvaWQgcGxhdGZvcm1TdG9wTW9uaXRv
cmluZ0dhbWVwYWRzKCk7CisKKyAgICBIYXNoU2V0PFdlYlByb2Nlc3NQb29sKj4gbV9wcm9jZXNz
UG9vbHNVc2luZ0dhbWVwYWRzOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0dhbWVwYWRzL21hYy9VSUdhbWVwYWRQcm92aWRlckhJRC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZHMvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mOGU0N2I2ZjczNmU5ZDgyOWQ1MzczYTk0NmNmZmUxYzc5ZDYyYTJmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWRzL21hYy9VSUdh
bWVwYWRQcm92aWRlckhJRC5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVSUdhbWVwYWRQcm92aWRlci5oIgorCisjaWYgRU5B
QkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0hJREdhbWVwYWRQcm92aWRlci5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQg
VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoKQorewor
ICAgIEFTU0VSVCghbV9wcm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzLmlzRW1wdHkoKSk7CisgICAg
SElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdGFydE1vbml0b3JpbmdHYW1lcGFkcyh0
aGlzKTsKK30KKwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmlu
Z0dhbWVwYWRzKCkKK3sKKyAgICBBU1NFUlQobV9wcm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzLmlz
RW1wdHkoKSk7CisgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdG9wTW9uaXRv
cmluZ0dhbWVwYWRzKHRoaXMpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDVkNzFj
MGQ1NWUwNGY3ZGNkMDE4Nzk1NWVkYzExZjVjODhkM2I5MzIuLmYwNjY4ZmE5ZjNmOWVjOWQxZWY1
NGZiM2YzZTQwNjRiZjlmMWFiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNp
b24uaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2Vy
LmgiCisjaW5jbHVkZSAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXS0NvbnRleHRQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKICNpbmNsdWRlICJX
ZWJDZXJ0aWZpY2F0ZUluZm8uaCIKQEAgLTI1OSw2ICsyNjAsMTEgQEAgV2ViUHJvY2Vzc1Bvb2w6
On5XZWJQcm9jZXNzUG9vbCgpCiAKICAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKICAgICAgICAg
bV9uZXR3b3JrUHJvY2Vzcy0+c2h1dERvd25Qcm9jZXNzKCk7CisKKyNpZiBFTkFCTEUoR0FNRVBB
RCkKKyAgICBpZiAoIW1fcHJvY2Vzc2VzVXNpbmdHYW1lcGFkcy5pc0VtcHR5KCkpCisgICAgICAg
IFVJR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5wcm9jZXNzUG9vbFN0b3BwZWRVc2luZ0dh
bWVwYWRzKCp0aGlzKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFs
aXplQ2xpZW50KGNvbnN0IFdLQ29udGV4dENsaWVudEJhc2UqIGNsaWVudCkKQEAgLTc1Miw2ICs3
NTgsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vz
c1Byb3h5KiBwcm9jZXNzKQogICAgIHN0YXRpY19jYXN0PFdlYkNvbnRleHRTdXBwbGVtZW50Kj4o
c3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKSktPnByb2Nlc3NEaWRDbG9z
ZShwcm9jZXNzKTsKIAogICAgIG1fcHJvY2Vzc2VzLnJlbW92ZUZpcnN0KHByb2Nlc3MpOworCisj
aWYgRU5BQkxFKEdBTUVQQUQpCisgICAgcHJvY2Vzc1N0b3BwZWRVc2luZ0dhbWVwYWRzKHByb2Nl
c3MpOworI2VuZGlmCiB9CiAKIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0
ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQoKQpAQCAtMTIzMSw2ICsx
MjQxLDQxIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpZEdldFN0YXRpc3RpY3MoY29uc3QgU3Rh
dGlzdGljc0RhdGEmIHN0YXRpc3RpY3NEYXRhLCB1aW50CiAgICAgcmVxdWVzdC0+Y29tcGxldGVk
UmVxdWVzdChyZXF1ZXN0SUQsIHN0YXRpc3RpY3NEYXRhKTsKIH0KIAorI2lmIEVOQUJMRShHQU1F
UEFEKQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpzdGFydGVkVXNpbmdHYW1lcGFkcyhJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgYXV0byogd2ViUHJvY2Vzc1Byb3h5ID0gV2Vi
UHJvY2Vzc1Byb3h5Ojpmcm9tQ29ubmVjdGlvbigmY29ubmVjdGlvbik7CisgICAgaWYgKCF3ZWJQ
cm9jZXNzUHJveHkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVCghbV9wcm9jZXNzZXNV
c2luZ0dhbWVwYWRzLmNvbnRhaW5zKHdlYlByb2Nlc3NQcm94eSkpOworICAgIG1fcHJvY2Vzc2Vz
VXNpbmdHYW1lcGFkcy5hZGQod2ViUHJvY2Vzc1Byb3h5KTsKKworICAgIGlmIChtX3Byb2Nlc3Nl
c1VzaW5nR2FtZXBhZHMuc2l6ZSgpID09IDEpCisgICAgICAgIFVJR2FtZXBhZFByb3ZpZGVyOjpz
aW5nbGV0b24oKS5wcm9jZXNzUG9vbFN0YXJ0ZWRVc2luZ0dhbWVwYWRzKCp0aGlzKTsKK30KKwor
dm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RvcHBlZFVzaW5nR2FtZXBhZHMoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uKQoreworICAgIGF1dG8qIHdlYlByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQ
cm94eTo6ZnJvbUNvbm5lY3Rpb24oJmNvbm5lY3Rpb24pOworICAgIGlmICghd2ViUHJvY2Vzc1By
b3h5KQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9wcm9jZXNzZXNVc2luZ0dhbWVw
YWRzLmNvbnRhaW5zKHdlYlByb2Nlc3NQcm94eSkpOworICAgIHByb2Nlc3NTdG9wcGVkVXNpbmdH
YW1lcGFkcyh3ZWJQcm9jZXNzUHJveHkpOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9j
ZXNzU3RvcHBlZFVzaW5nR2FtZXBhZHMoV2ViUHJvY2Vzc1Byb3h5KiB3ZWJQcm9jZXNzUHJveHkp
Cit7CisgICAgbV9wcm9jZXNzZXNVc2luZ0dhbWVwYWRzLnJlbW92ZSh3ZWJQcm9jZXNzUHJveHkp
OworCisgICAgaWYgKG1fcHJvY2Vzc2VzVXNpbmdHYW1lcGFkcy5pc0VtcHR5KCkpCisgICAgICAg
IFVJR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5wcm9jZXNzUG9vbFN0b3BwZWRVc2luZ0dh
bWVwYWRzKCp0aGlzKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQorCiB2b2lkIFdl
YlByb2Nlc3NQb29sOjpnYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3RzKCkKIHsKICAgICBz
ZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkdhcmJhZ2VDb2xsZWN0SmF2
YVNjcmlwdE9iamVjdHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCmluZGV4IGQ1N2IwOWU1MDc3OGZiODMyYjg3MDc4OTYzOGRkZGFjM2MwNjZhYzAuLjMxOTA3
MjVhNDIyZmZmMjExNzI1NTZhMDA1Zjc5NzRkNzQ0MTJhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zODcsNiArMzg3LDE1IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGRpZEdldFN0YXRpc3RpY3MoY29uc3QgU3RhdGlzdGljc0RhdGEmLCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKIAorI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIHZvaWQgc3RhcnRlZFVz
aW5nR2FtZXBhZHMoSVBDOjpDb25uZWN0aW9uJik7CisgICAgdm9pZCBzdG9wcGVkVXNpbmdHYW1l
cGFkcyhJUEM6OkNvbm5lY3Rpb24mKTsKKworICAgIHZvaWQgcHJvY2Vzc1N0b3BwZWRVc2luZ0dh
bWVwYWRzKFdlYlByb2Nlc3NQcm94eSopOworCisgICAgSGFzaFNldDxXZWJQcm9jZXNzUHJveHkq
PiBtX3Byb2Nlc3Nlc1VzaW5nR2FtZXBhZHM7CisjZW5kaWYKKwogICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyLgogICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJQcm9jZXNzUG9v
bE1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgppbmRleCA3NmI3
NWNmZjZlNTQ0Zjc3Mjc1MTM0ZTg1YjU3ZGFjZWM5NjU4NzgyLi44ZWJhOGU1MzBjNWQ0ZDE1Zjk0
ZGFjZGFkYmIxNDE2NjYxZmU5NzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmluCkBAIC0yNiw2ICsyNiwxMSBAQCBtZXNzYWdl
cyAtPiBXZWJQcm9jZXNzUG9vbCB7CiAKICAgICBEaWRHZXRTdGF0aXN0aWNzKHN0cnVjdCBXZWJL
aXQ6OlN0YXRpc3RpY3NEYXRhIHN0YXRpc3RpY3NEYXRhLCB1aW50NjRfdCBjYWxsYmFja0lEKQog
CisjaWYgRU5BQkxFKEdBTUVQQUQpCisgICAgU3RhcnRlZFVzaW5nR2FtZXBhZHMoKSBXYW50c0Nv
bm5lY3Rpb24KKyAgICBTdG9wcGVkVXNpbmdHYW1lcGFkcygpIFdhbnRzQ29ubmVjdGlvbgorI2Vu
ZGlmCisKICAgICAjIFBsdWctaW4gbWVzc2FnZXMuCiAgICAgdm9pZCBBZGRQbHVnSW5BdXRvU3Rh
cnRPcmlnaW5IYXNoKFN0cmluZyBwYWdlT3JpZ2luLCB1aW50MzJfdCBoYXNoLCBXZWJDb3JlOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIHZvaWQgUGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFj
dGlvbih1aW50MzJfdCBoYXNoLCBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc1
M2UwMjlkZWE5NTdlNzA4MDY2MDY5NmJmMDEwMzU2ZTIzOTNmOTEuLjg3YWVlNTQ5OGViYjRhMGI5
NjliYWFkYmVhYjBkYjE3YmY5YTJlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkzNiw2ICs5MzYsMTEgQEAKIAkJNTE0RDlG
NTcxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0RDlGNTUxOTExOUQzNTAwMDA2M0E3
IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oICovOyB9OwogCQk1MTREOUY1ODE5MTE5RDM1MDAwMDYz
QTcgLyogU2VydmljZXNDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE0RDlGNTYxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29u
dHJvbGxlci5tbSAqLzsgfTsKIAkJNTE1NzhCODMxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTc4Qjgy
MTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggKi87IH07CisJCTUxNUJFMTc3MUQ1M0ZFODcw
MEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxNzMxRDUzRkREQzAwREQ3QzY4IC8qIFdlYkdh
bWVwYWRQcm92aWRlci5jcHAgKi87IH07CisJCTUxNUJFMTc5MUQ1M0ZFOEYwMEREN0M2OCAvKiBX
ZWJHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNUJFMTc0MUQ1M0ZEREMwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIu
aCAqLzsgfTsKKwkJNTE1QkUxODAxRDU0RUZGNDAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJF
MTdDMUQ1NEVGQzUwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5jcHAgKi87IH07CisJCTUx
NUJFMTgxMUQ1NEVGRjQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxN0QxRDU0RUZDNTAwREQ3
QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyLmggKi87IH07CisJCTUxNUJFMUEzMUQ1NTIzRTEwMERE
N0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlckhJRC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTFBMjFENTUyM0RFMDBERDdDNjggLyogVUlHYW1l
cGFkUHJvdmlkZXJISUQuY3BwICovOyB9OwogCQk1MTVFNzcyNzE4M0RENkY2MDAwNzIwM0YgLyog
QXN5bmNSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNUU3NzI1MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuY3BwICovOyB9
OwogCQk1MTVFNzcyODE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFNzcyNjE4M0RENkY2MDAw
NzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggKi87IH07CiAJCTUxNUU3NzJCMTg0MDA4QjkwMDA3MjAz
RiAvKiBEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1RTc3MjkxODQwMDhCOTAwMDcyMDNG
IC8qIERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi87IH07CkBAIC0yOTc1
LDYgKzI5ODAsMTMgQEAKIAkJNTE0RDlGNTUxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlc0NvbnRy
b2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0RDlGNTYxOTExOUQzNTAw
MDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFNlcnZpY2VzQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MTVCRTE3MzFENTNGRERDMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdhbWVwYWRQcm92
aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNUJFMTc0MUQ1M0ZEREMw
MEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxNUJFMTdDMUQ1NEVGQzUwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVSUdhbWVwYWRQcm92aWRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNUJFMTdEMUQ1NEVGQzUwMEREN0M2OCAv
KiBVSUdhbWVwYWRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
SUdhbWVwYWRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTVCRTE5
RjFENTUwQUIwMDBERDdDNjggLyogV2ViR2FtZXBhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJHYW1lcGFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTE1QkUxQTAxRDU1MEFCMDAwREQ3QzY4IC8qIFdlYkdhbWVwYWQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR2FtZXBhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MTVCRTFBMjFENTUyM0RFMDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXJI
SUQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVUlHYW1lcGFkUHJv
dmlkZXJISUQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVFNzcyNTE4M0RE
NkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFzeW5jUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNUU3NzI2MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxNUU3NzI5MTg0MDA4QjkwMDA3MjAzRiAvKiBEYXRhYmFzZVByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTU0NjksNiArNTQ4MSwzNSBAQAogCQkJcGF0aCA9IEF1dGhlbnRpY2F0
aW9uOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNTE1QkUxNzIxRDUzRkRC
OTAwREQ3QzY4IC8qIEdhbWVwYWQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCTUxNUJFMTlGMUQ1NTBBQjAwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmNwcCAq
LywKKwkJCQk1MTVCRTFBMDFENTUwQUIwMDBERDdDNjggLyogV2ViR2FtZXBhZC5oICovLAorCQkJ
CTUxNUJFMTczMUQ1M0ZEREMwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuY3BwICovLAor
CQkJCTUxNUJFMTc0MUQ1M0ZEREMwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuaCAqLywK
KwkJCSk7CisJCQlwYXRoID0gR2FtZXBhZDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCTUxNUJFMTdCMUQ1NEVGNUEwMEREN0M2OCAvKiBHYW1lcGFkcyAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTE1QkUxQTExRDU1MjNCMzAwREQ3
QzY4IC8qIG1hYyAqLywKKwkJCQk1MTVCRTE3QzFENTRFRkM1MDBERDdDNjggLyogVUlHYW1lcGFk
UHJvdmlkZXIuY3BwICovLAorCQkJCTUxNUJFMTdEMUQ1NEVGQzUwMEREN0M2OCAvKiBVSUdhbWVw
YWRQcm92aWRlci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBHYW1lcGFkczsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTUxNUJFMUExMUQ1NTIzQjMwMEREN0M2OCAvKiBtYWMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUxNUJFMUEy
MUQ1NTIzREUwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlckhJRC5jcHAgKi8sCisJCQkpOwor
CQkJcGF0aCA9IG1hYzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTUxNjMx
OTkzMTYyODk4MEUwMEUyMkYwMCAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKApAQCAtNTgxMyw2ICs1ODU0LDcgQEAKIAkJCQlCQ0FDQzQzQjE2QjI0QzVE
MDBCNkUwOTIgLyogRW50cnlQb2ludCAqLywKIAkJCQlFMTcwODc2RDE2RDZDQTcyMDBGOTkyMjYg
LyogRmlsZUFQSSAqLywKIAkJCQlDRDczQkEzRDEzMUEyQTIxMDBFRURFRDIgLyogRnVsbFNjcmVl
biAqLywKKwkJCQk1MTVCRTE3MjFENTNGREI5MDBERDdDNjggLyogR2FtZXBhZCAqLywKIAkJCQlC
QzBFNUZDQjEyRDY5NkREMDAxMkE3MkEgLyogR2VvbG9jYXRpb24gKi8sCiAJCQkJNTFGQkI5QzEx
MzJFMDc5MjAwRjMyN0I0IC8qIEljb25EYXRhYmFzZSAqLywKIAkJCQlCQzIwNEVERjExQzgzRTcy
MDA4RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGUgKi8sCkBAIC01OTUwLDYgKzU5OTIsNyBAQAogCQkJ
CTk5NTVBNkU4MUM3OTgwOTAwMEVCNkE5MyAvKiBBdXRvbWF0aW9uICovLAogCQkJCTFBQkMzREYy
MTg5OUU0MTUwMDRGMDYyNiAvKiBDb2NvYSAqLywKIAkJCQkxQUI3RDRDNzEyODhBQTlBMDBDRkQw
OEMgLyogRG93bmxvYWRzICovLAorCQkJCTUxNUJFMTdCMUQ1NEVGNUEwMEREN0M2OCAvKiBHYW1l
cGFkcyAqLywKIAkJCQkyREE5NDRBODE4ODRFOUFCMDBFRDg2REIgLyogaW9zICovLAogCQkJCUJD
MTExQjE4MTEyRjVGQjQwMDMzN0JBQiAvKiBMYXVuY2hlciAqLywKIAkJCQlCQ0NGMDg1QzExM0Yz
Qjc1MDBDNjUwQzUgLyogbWFjICovLApAQCAtNzMzMCw2ICs3MzczLDcgQEAKIAkJCQlBMUE0RkU1
QzE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzc5QTg3M0ExOEJCRkUwRjAwNTg4QUYyIC8qIF9XS0VsZW1lbnRBY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTM3OUE4NzNDMThCQkZGMDcwMDU4OEFGMiAvKiBfV0tFbGVtZW50QWN0
aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNUJFMTgxMUQ1NEVGRjQwMEREN0M2
OCAvKiBVSUdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFEMDFCQzkxOTA1
RDM3RTAwQzlDNDVGIC8qIF9XS0Vycm9yUmVjb3ZlcnlBdHRlbXB0aW5nLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzMTdGRTdDRjFDNDg3REJEMDBBMENBODkgLyogX1dLRXhwZXJpbWVudGFsRmVhdHVy
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE3RkU3Q0QxQzQ4N0RBRTAwQTBDQTg5IC8qIF9XS0V4
cGVyaW1lbnRhbEZlYXR1cmVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDI1LDYgKzgw
NjksNyBAQAogCQkJCTFBQjdENzhEMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUY0NTkyRjE5NDY0QjIwMDBGOUQ0QTIgLyogV0tFcnJvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNGRDU0OEMxMzJEODI2ODAwNTVEODE2IC8qIFdLRXJyb3JDRi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTE1QkUxNzkxRDUzRkU4RjAwREQ3QzY4IC8qIFdlYkdhbWVw
YWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdCNTA0NTIxOUVFRjMxMzAwQ0UyQ0Y4
IC8qIFdLRXJyb3JQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzVGQzEyNEZGMDI3
MDA2OEYyMEEgLyogV0tFcnJvclJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc4M0QxMjUw
RkFERDAwNjhGMjBBIC8qIFdLRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtODg5Nyw2ICs4OTQy
LDcgQEAKIAkJCQkxQTNENjEwNTEzQTdGMDNBMDBGOTVENEUgLyogQXJndW1lbnRDb2RlcnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBRjBDNEIxMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50
Q29kZXJzQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE3OUZEOUYxMzREMzgyNTAwMTVCODgz
IC8qIEFyZ3VtZW50Q29kZXJzTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE1QkUxQTMxRDU1
MjNFMTAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVySElELmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDMDMyREE1MTBGNDM3RDEwMDU4QzE1QSAvKiBBcmd1bWVudERlY29kZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkMwMzJEQTcxMEY0MzdEMTAwNThDMTVBIC8qIEFyZ3VtZW50RW5jb2Rl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTlDNEE1ODE4QjgxMTc0MDA3QkRDQjYgLyogQXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MTk2LDYgKzkyNDIs
NyBAQAogCQkJCTFBNDRCOTVCMTZCNzNGOUYwMEI3QkJEOCAvKiBTdG9yYWdlTWFuYWdlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQUIzMUE5NjE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1h
bmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0NEI5NTcxNkI3
MzdBQTAwQjdCQkQ4IC8qIFN0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTUxNUJFMTc3MUQ1M0ZFODcwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUFFMDBENkIxODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVy
ZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTZCRDg1RTE1MDE5QkMzMDA3MUY0MjQgLyog
U3RyaW5nVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMVpaNDE3RUYxMkMwMEQ4NzAw
MkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTky
NDQsNiArOTI5MSw3IEBACiAJCQkJN0M0QUJFRDAxQUE4RTlGMDAwODhBQTM3IC8qIFdlYkNvbXBp
bGVkQ29udGVudEV4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzRBQkVENDFBQThG
Q0I4MDA4OEFBMzcgLyogV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzRBNjI4RjE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29ubmVjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTVCRTE4MDFENTRFRkY0MDBERDdDNjggLyogVUlHYW1l
cGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0QTYyOTExNDczMTJCRTAwNkM2
ODFBIC8qIFdlYkNvbm5lY3Rpb25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUExRkVD
MUMxNjI3QjQ1NzAwNzAwRjZEIC8qIFdlYkNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNEMzY3NUMxNDhDMjZDMDAwNDQ3RTg3IC8qIFdlYkNvbm5lY3Rp
b25Ub1VJUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZmE3MTQ2ZTVmN2Jh
NGIyNzI1OTcyYTRhNDRhMjk1NjdkOTliOWY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWQuY3BwCkBAIC0wLDAgKzEsMzEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR2FtZXBhZC5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvR2FtZXBhZC9XZWJHYW1lcGFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE0YWNjYTg3MjY2YTg0ZmUxNTYz
ODAwMmJlYTQ4ODI2ZjZhZDY1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkLmgKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41MjVhYzdiZDE3NmJhZDg4NjdlZGM0ODk5Yzc3YmFjODg0OWNhNDFmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdh
bWVwYWRQcm92aWRlci5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHYW1lcGFkUHJvdmlkZXIuaCIKKworI2lmIEVOQUJM
RShHQU1FUEFEKQorCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlByb2Nl
c3NQb29sTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJHYW1lcGFk
UHJvdmlkZXImIFdlYkdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8V2ViR2FtZXBhZFByb3ZpZGVyPiBwcm92aWRlcjsKKyAgICByZXR1cm4g
cHJvdmlkZXI7Cit9CisKK1dlYkdhbWVwYWRQcm92aWRlcjo6V2ViR2FtZXBhZFByb3ZpZGVyKCkK
K3sKK30KKworV2ViR2FtZXBhZFByb3ZpZGVyOjp+V2ViR2FtZXBhZFByb3ZpZGVyKCkKK3sKK30K
Kwordm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVw
YWRQcm92aWRlckNsaWVudCogY2xpZW50KQoreworICAgIEFTU0VSVCghbV9jbGllbnRzLmNvbnRh
aW5zKGNsaWVudCkpOworICAgIG1fY2xpZW50cy5hZGQoY2xpZW50KTsKKworICAgIGlmIChtX2Ns
aWVudHMuc2l6ZSgpID09IDEpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlbmQo
TWVzc2FnZXM6OldlYlByb2Nlc3NQb29sOjpTdGFydGVkVXNpbmdHYW1lcGFkcygpLCAwKTsKK30K
Kwordm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBh
ZFByb3ZpZGVyQ2xpZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlu
cyhjbGllbnQpKTsKKyAgICBtX2NsaWVudHMucmVtb3ZlKGNsaWVudCk7CisKKyAgICBpZiAobV9j
bGllbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2VuZChN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Bvb2w6OlN0b3BwZWRVc2luZ0dhbWVwYWRzKCksIDApOworfQor
Citjb25zdCBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4mIFdlYkdhbWVwYWRQcm92aWRlcjo6cGxh
dGZvcm1HYW1lcGFkcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxQbGF0
Zm9ybUdhbWVwYWQqPj4gZ2FtZXBhZHM7CisgICAgcmV0dXJuIGdhbWVwYWRzOworfQorCit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDY1YmE0
YjRjMWQyODZlOTU0OThhMWI3ZDk5ZWIwZjA0OGYwZGJmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5oCkBAIC0w
LDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNv
cmUvR2FtZXBhZFByb3ZpZGVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkdhbWVwYWRQcm92aWRlciA6IHB1YmxpYyBXZWJDb3Jl
OjpHYW1lcGFkUHJvdmlkZXIgeworcHVibGljOgorICAgIFdlYkdhbWVwYWRQcm92aWRlcigpOwor
ICAgIH5XZWJHYW1lcGFkUHJvdmlkZXIoKSBmaW5hbDsKKworICAgIHN0YXRpYyBXZWJHYW1lcGFk
UHJvdmlkZXImIHNpbmdsZXRvbigpOworCisgICAgdm9pZCBzdGFydE1vbml0b3JpbmdHYW1lcGFk
cyhXZWJDb3JlOjpHYW1lcGFkUHJvdmlkZXJDbGllbnQqKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BN
b25pdG9yaW5nR2FtZXBhZHMoV2ViQ29yZTo6R2FtZXBhZFByb3ZpZGVyQ2xpZW50KikgZmluYWw7
CisgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZCo+JiBwbGF0Zm9ybUdh
bWVwYWRzKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgSGFzaFNldDxXZWJDb3JlOjpHYW1lcGFk
UHJvdmlkZXJDbGllbnQqPiBtX2NsaWVudHM7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAxNDc1Mjg3ZDI3ZDBmZjY1MmJlOTUxYzRkYWZjNTY1
NGJjZTNkNDQ2Li5iYTJjYjljM2MxZWMzMWZmNDVhMDE1YjJjNTMxNThhZTI3NWY1NWM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAK
ICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5o
IgogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJH
YW1lcGFkUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXIuaCIKICNp
bmNsdWRlICJXZWJJY29uRGF0YWJhc2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkxvYWRlclN0cmF0
ZWd5LmgiCkBAIC00MDAsNiArNDAxLDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdl
YlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAg
ICAgIH0KICAgICB9CiAjZW5kaWYKKworI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIEdhbWVwYWRQ
cm92aWRlcjo6c2luZ2xldG9uKCkuc2V0U2hhcmVkUHJvdmlkZXIoV2ViR2FtZXBhZFByb3ZpZGVy
OjpzaW5nbGV0b24oKSk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285443</attachid>
            <date>2016-08-05 13:09:11 -0700</date>
            <delta_ts>2016-08-05 13:16:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160605-20160805130744.patch</filename>
            <type>text/plain</type>
            <size>35928</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzAyMzBkYWMyNWFjNzdl
YjBkYzgzYjJmMWIzYjFmMjAzZmE4YmJmYy4uNWJkMjBiMmNiNDc2MzI5YzY3YjE4ZTZiY2Y3YmE3
M2JlYjg0NTM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE2LTA4LTA1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBMYXkgV2ViUHJvY2Vzcy9V
SVByb2Nlc3MgZ3JvdW5kd29yayBmb3IgYW4gSVBDIEdhbWVwYWRQcm92aWRlci4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDYwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2g6CisgICAg
ICAgICAgLSBJbnRyb2R1Y2VzIHRoZSBHYW1lcGFkUHJvdmlkZXIgdGhhdCB0aGUgV2ViUHJvY2Vz
cyB3aWxsIHVzZSAoV2ViR2FtZXBhZFByb3ZpZGVyKQorICAgICAgICAgIC0gSGFzIHRoYXQgcHJv
dmlkZXIgbWVzc2FnZSB0byB0aGUgVUlQcm9jZXNzIG5vdGlmeWluZyBpbnRlcmVzdCBpbiBnYW1l
cGFkIHN0YXRlCisgICAgICAgICAgLSBJbnRyb2R1Y2VzIGEgR2FtZXBhZFByb3ZpZGVyQ2xpZW50
IGluIHRoZSBVSVByb2Nlc3MgKFVJR2FtZXBhZFByb3ZpZGVyKSB0aGF0IHdpbGwgdXNlCisgICAg
ICAgICAgICBvbmUgb2YgdGhlIGV4aXN0aW5nIEdhbWVwYWRQcm92aWRlcnMgdG8gcGFzcyBnYW1l
cGFkIHN0YXRlIGFsb25nIHRvIFdlYlByb2Nlc3Nlcy4KKyAgICAgICAgICAtIEFkZHMgYW4gZW1w
dHkgc2tlbGV0b24gZm9yIHRoZSBzb29uLXRvLWJlLXVzZWQgV2ViR2FtZXBhZCwgd2hpY2ggd2ls
bCBiZSB0aGUgCisgICAgICAgICAgICAiUGxhdGZvcm1HYW1lcGFkIiBmb3IgV2ViUHJvY2Vzc2Vz
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogVUlQcm9jZXNzL0dhbWVwYWRzL1VJR2Ft
ZXBhZFByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3Zp
ZGVyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6VUlH
YW1lcGFkUHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6flVJ
R2FtZXBhZFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBs
YXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3Zp
ZGVyOjpwbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpVSUdh
bWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSk6CisgICAgICAgIChX
ZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwcm9jZXNzUG9vbFN0YXJ0ZWRVc2luZ0dhbWVwYWRz
KToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnByb2Nlc3NQb29sU3RvcHBl
ZFVzaW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxh
dGZvcm1TdGFydE1vbml0b3JpbmdHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBh
ZFByb3ZpZGVyOjpwbGF0Zm9ybVN0b3BNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9HYW1lcGFkcy9VSUdhbWVwYWRQcm92aWRlci5oOiBBZGRlZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9HYW1lcGFkcy9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25pdG9y
aW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZv
cm1TdG9wTW9uaXRvcmluZ0dhbWVwYWRzKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp+V2ViUHJvY2Vz
c1Bvb2wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RhcnRlZFVzaW5nR2FtZXBh
ZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RvcHBlZFVzaW5nR2FtZXBh
ZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc1N0b3BwZWRVc2lu
Z0dhbWVwYWRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW46CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZC5oOiBBZGRlZC4KKyAgICAg
ICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6V2ViR2FtZXBhZFByb3ZpZGVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjp+V2ViR2FtZXBhZFByb3Zp
ZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpzdGFydE1vbml0b3Jp
bmdHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6c3RvcE1v
bml0b3JpbmdHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6
cGxhdGZvcm1HYW1lcGFkcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVw
YWRQcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisK
IDIwMTYtMDgtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBD
cmFzaCB1bmRlciBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnByb2Nlc3NEaWRD
cmFzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDJhYjBjZGZjMmY0NjNiYjBkMGQwZjViMDM3
MzI0MjEwNjI2MTc3YTQuLmE2ODQyNTU2ODhjMjliMzY3NGM0Y2FlZmM0NjZjNzU0YTc3NzllMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0zNCw2ICszNCw3IEBAIHNldChXZWJLaXQyX0lOQ0xV
REVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0F1dG9tYXRpb24i
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9EYXRhYmFzZXMiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9Eb3dubG9hZHMiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9HYW1lcGFkIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVy
IgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvTGF1bmNoZXIiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9OZXR3b3JrIgpAQCAtNTMsNiArNTQsNyBAQCBzZXQoV2ViS2l0Ml9J
TkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvRGF0YWJh
c2VzL0luZGV4ZWREQiIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9GaWxlQVBJIgog
ICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4iCisgICAgIiR7V0VCS0lU
Ml9ESVJ9L1dlYlByb2Nlc3MvR2FtZXBhZCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbiIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JY29uRGF0YWJh
c2UiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUiCkBAIC00
NzgsNiArNDgwLDggQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHlNYXAuY3BwCiAKKyAgICBVSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAK
KwogICAgIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuY3BwCiAgICAgVUlQ
cm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuY3BwCiAgICAgVUlQcm9j
ZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuY3BwCkBAIC01MjUsNiArNTI5LDkg
QEAgc2V0KFdlYktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1
bGxTY3JlZW5NYW5hZ2VyLmNwcAogCisgICAgV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWQu
Y3BwCisgICAgV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKKwogICAg
IFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuY3BwCiAgICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIu
Y3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2Ft
ZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2Ft
ZXBhZFByb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2MxMTNhODhlNmVjNjcwNjkyZjNlYjE4YThk
YjkwYjYzZTVjZDhkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVUlHYW1lcGFkUHJvdmlkZXIuaCIK
KworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSA8V2ViQ29yZS9ISURHYW1lcGFkUHJv
dmlkZXIuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitVSUdhbWVwYWRQcm92aWRlciYg
VUlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFVJR2FtZXBhZFByb3ZpZGVyPiBzaGFyZWRQcm92aWRlcjsKKyAgICByZXR1cm4gc2hhcmVk
UHJvdmlkZXI7Cit9CisKK1VJR2FtZXBhZFByb3ZpZGVyOjpVSUdhbWVwYWRQcm92aWRlcigpCit7
Cit9CisKK1VJR2FtZXBhZFByb3ZpZGVyOjp+VUlHYW1lcGFkUHJvdmlkZXIoKQoreworICAgIGlm
ICghbV9wcm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzLmlzRW1wdHkoKSkKKyAgICAgICAgcGxhdGZv
cm1TdG9wTW9uaXRvcmluZ0dhbWVwYWRzKCk7Cit9CisKK3ZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmKQoreworfQorCit2b2lk
IFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoUGxhdGZvcm1H
YW1lcGFkJikKK3sKK30KKwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFk
SW5wdXRBY3Rpdml0eSgpCit7Cit9CisKK3ZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnByb2Nlc3NQ
b29sU3RhcnRlZFVzaW5nR2FtZXBhZHMoV2ViUHJvY2Vzc1Bvb2wmIHBvb2wpCit7CisgICAgQVNT
RVJUKCFtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMuY29udGFpbnMoJnBvb2wpKTsKKyAgICBt
X3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMuYWRkKCZwb29sKTsKKworICAgIGlmIChtX3Byb2Nl
c3NQb29sc1VzaW5nR2FtZXBhZHMuc2l6ZSgpID09IDEpCisgICAgICAgIHBsYXRmb3JtU3RhcnRN
b25pdG9yaW5nR2FtZXBhZHMoKTsKK30KKwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cHJvY2Vz
c1Bvb2xTdG9wcGVkVXNpbmdHYW1lcGFkcyhXZWJQcm9jZXNzUG9vbCYgcG9vbCkKK3sKKyAgICBB
U1NFUlQobV9wcm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzLmNvbnRhaW5zKCZwb29sKSk7CisgICAg
bV9wcm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzLnJlbW92ZSgmcG9vbCk7CisKKyAgICBpZiAobV9w
cm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzLmlzRW1wdHkoKSkKKyAgICAgICAgcGxhdGZvcm1TdG9w
TW9uaXRvcmluZ0dhbWVwYWRzKCk7Cit9CisKKyNpZiAhUExBVEZPUk0oTUFDKQordm9pZCBVSUdh
bWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TdGFydE1vbml0b3JpbmdHYW1lcGFkcygpCit7CisgICAg
Ly8gRklYTUU6IEltcGxlbWVudCBmb3Igb3RoZXIgcGxhdGZvcm1zCit9CisKK3ZvaWQgVUlHYW1l
cGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RvcE1vbml0b3JpbmdHYW1lcGFkcygpCit7CisgICAgLy8g
RklYTUU6IEltcGxlbWVudCBmb3Igb3RoZXIgcGxhdGZvcm1zCit9CisjZW5kaWYgLy8gIVBMQVRG
T1JNKE1BQykKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kZmEyYWZkMGFmODA2NjA0OTNiY2RkOTlhMzM3MmUxMGIyMWZlNGMxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlk
ZXIuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDxXZWJDb3JlL0dhbWVwYWRQcm92aWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR2FtZXBh
ZFByb3ZpZGVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYlByb2Nlc3NQb29sOworCitjbGFzcyBVSUdhbWVwYWRQcm92
aWRlciA6IHB1YmxpYyBXZWJDb3JlOjpHYW1lcGFkUHJvdmlkZXJDbGllbnQgeworcHVibGljOgor
ICAgIFVJR2FtZXBhZFByb3ZpZGVyKCk7CisgICAgflVJR2FtZXBhZFByb3ZpZGVyKCkgZmluYWw7
CisKKyAgICBzdGF0aWMgVUlHYW1lcGFkUHJvdmlkZXImIHNpbmdsZXRvbigpOworCisgICAgdm9p
ZCBwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkJikgZmlu
YWw7CisgICAgdm9pZCBwbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoV2ViQ29yZTo6UGxhdGZv
cm1HYW1lcGFkJikgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5
KCkgZmluYWw7CisKKyAgICB2b2lkIHByb2Nlc3NQb29sU3RhcnRlZFVzaW5nR2FtZXBhZHMoV2Vi
UHJvY2Vzc1Bvb2wmKTsKKyAgICB2b2lkIHByb2Nlc3NQb29sU3RvcHBlZFVzaW5nR2FtZXBhZHMo
V2ViUHJvY2Vzc1Bvb2wmKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHBsYXRmb3JtU3RhcnRNb25p
dG9yaW5nR2FtZXBhZHMoKTsKKyAgICB2b2lkIHBsYXRmb3JtU3RvcE1vbml0b3JpbmdHYW1lcGFk
cygpOworCisgICAgSGFzaFNldDxXZWJQcm9jZXNzUG9vbCo+IG1fcHJvY2Vzc1Bvb2xzVXNpbmdH
YW1lcGFkczsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9H
YW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlckhJRC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4
ZTQ3YjZmNzM2ZTlkODI5ZDUzNzNhOTQ2Y2ZmZTFjNzlkNjJhMmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJI
SUQuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQor
CisjaW5jbHVkZSA8V2ViQ29yZS9ISURHYW1lcGFkUHJvdmlkZXIuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFVJR2FtZXBhZFByb3Zp
ZGVyOjpwbGF0Zm9ybVN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKCkKK3sKKyAgICBBU1NFUlQoIW1f
cHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcy5pc0VtcHR5KCkpOworICAgIEhJREdhbWVwYWRQcm92
aWRlcjo6c2luZ2xldG9uKCkuc3RhcnRNb25pdG9yaW5nR2FtZXBhZHModGhpcyk7Cit9CisKK3Zv
aWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RvcE1vbml0b3JpbmdHYW1lcGFkcygpCit7
CisgICAgQVNTRVJUKG1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcy5pc0VtcHR5KCkpOworICAg
IEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RvcE1vbml0b3JpbmdHYW1lcGFkcyh0
aGlzKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA1ZDcxYzBkNTVlMDRmN2RjZDAx
ODc5NTVlZGMxMWY1Yzg4ZDNiOTMyLi5mMDY2OGZhOWYzZjllYzlkMWVmNTRmYjNmM2U0MDY0YmY5
ZjFhYmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
QEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVk
ZSAiU3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgorI2luY2x1ZGUg
IlVJR2FtZXBhZFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uLmgiCiAjaW5jbHVkZSAiV2ViQ2VydGlmaWNhdGVJ
bmZvLmgiCkBAIC0yNTksNiArMjYwLDExIEBAIFdlYlByb2Nlc3NQb29sOjp+V2ViUHJvY2Vzc1Bv
b2woKQogCiAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nl
c3MtPnNodXREb3duUHJvY2VzcygpOworCisjaWYgRU5BQkxFKEdBTUVQQUQpCisgICAgaWYgKCFt
X3Byb2Nlc3Nlc1VzaW5nR2FtZXBhZHMuaXNFbXB0eSgpKQorICAgICAgICBVSUdhbWVwYWRQcm92
aWRlcjo6c2luZ2xldG9uKCkucHJvY2Vzc1Bvb2xTdG9wcGVkVXNpbmdHYW1lcGFkcygqdGhpcyk7
CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZUNsaWVudChjb25z
dCBXS0NvbnRleHRDbGllbnRCYXNlKiBjbGllbnQpCkBAIC03NTIsNiArNzU4LDEwIEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2Vz
cykKICAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNzRGlkQ2xvc2UocHJvY2Vzcyk7CiAK
ICAgICBtX3Byb2Nlc3Nlcy5yZW1vdmVGaXJzdChwcm9jZXNzKTsKKworI2lmIEVOQUJMRShHQU1F
UEFEKQorICAgIHByb2Nlc3NTdG9wcGVkVXNpbmdHYW1lcGFkcyhwcm9jZXNzKTsKKyNlbmRpZgog
fQogCiBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNz
UmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCkKQEAgLTEyMzEsNiArMTI0MSw0MSBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpkaWRHZXRTdGF0aXN0aWNzKGNvbnN0IFN0YXRpc3RpY3NEYXRhJiBz
dGF0aXN0aWNzRGF0YSwgdWludAogICAgIHJlcXVlc3QtPmNvbXBsZXRlZFJlcXVlc3QocmVxdWVz
dElELCBzdGF0aXN0aWNzRGF0YSk7CiB9CiAKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKwordm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c3RhcnRlZFVzaW5nR2FtZXBhZHMoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uKQoreworICAgIGF1dG8qIHdlYlByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6
ZnJvbUNvbm5lY3Rpb24oJmNvbm5lY3Rpb24pOworICAgIGlmICghd2ViUHJvY2Vzc1Byb3h5KQor
ICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoIW1fcHJvY2Vzc2VzVXNpbmdHYW1lcGFkcy5j
b250YWlucyh3ZWJQcm9jZXNzUHJveHkpKTsKKyAgICBtX3Byb2Nlc3Nlc1VzaW5nR2FtZXBhZHMu
YWRkKHdlYlByb2Nlc3NQcm94eSk7CisKKyAgICBpZiAobV9wcm9jZXNzZXNVc2luZ0dhbWVwYWRz
LnNpemUoKSA9PSAxKQorICAgICAgICBVSUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkucHJv
Y2Vzc1Bvb2xTdGFydGVkVXNpbmdHYW1lcGFkcygqdGhpcyk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnN0b3BwZWRVc2luZ0dhbWVwYWRzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikK
K3sKKyAgICBhdXRvKiB3ZWJQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmZyb21Db25u
ZWN0aW9uKCZjb25uZWN0aW9uKTsKKyAgICBpZiAoIXdlYlByb2Nlc3NQcm94eSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgQVNTRVJUKG1fcHJvY2Vzc2VzVXNpbmdHYW1lcGFkcy5jb250YWlucyh3
ZWJQcm9jZXNzUHJveHkpKTsKKyAgICBwcm9jZXNzU3RvcHBlZFVzaW5nR2FtZXBhZHMod2ViUHJv
Y2Vzc1Byb3h5KTsKK30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc1N0b3BwZWRVc2lu
Z0dhbWVwYWRzKFdlYlByb2Nlc3NQcm94eSogd2ViUHJvY2Vzc1Byb3h5KQoreworICAgIG1fcHJv
Y2Vzc2VzVXNpbmdHYW1lcGFkcy5yZW1vdmUod2ViUHJvY2Vzc1Byb3h5KTsKKworICAgIGlmICht
X3Byb2Nlc3Nlc1VzaW5nR2FtZXBhZHMuaXNFbXB0eSgpKQorICAgICAgICBVSUdhbWVwYWRQcm92
aWRlcjo6c2luZ2xldG9uKCkucHJvY2Vzc1Bvb2xTdG9wcGVkVXNpbmdHYW1lcGFkcygqdGhpcyk7
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKKwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6
Z2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0cygpCiB7CiAgICAgc2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3Rz
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBkNTdi
MDllNTA3NzhmYjgzMmI4NzA3ODk2MzhkZGRhYzNjMDY2YWMwLi4zMTkwNzI1YTQyMmZmZjIxMTcy
NTU2YTAwNWY3OTc0ZDc0NDEyYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaApAQCAtMzg3LDYgKzM4NywxNSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRH
ZXRTdGF0aXN0aWNzKGNvbnN0IFN0YXRpc3RpY3NEYXRhJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7
CiAKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICB2b2lkIHN0YXJ0ZWRVc2luZ0dhbWVwYWRzKElQ
Qzo6Q29ubmVjdGlvbiYpOworICAgIHZvaWQgc3RvcHBlZFVzaW5nR2FtZXBhZHMoSVBDOjpDb25u
ZWN0aW9uJik7CisKKyAgICB2b2lkIHByb2Nlc3NTdG9wcGVkVXNpbmdHYW1lcGFkcyhXZWJQcm9j
ZXNzUHJveHkqKTsKKworICAgIEhhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5Kj4gbV9wcm9jZXNzZXNV
c2luZ0dhbWVwYWRzOworI2VuZGlmCisKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAg
ICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlUmVjZWl2
ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KaW5kZXggNzZiNzVjZmY2ZTU0NGY3NzI3
NTEzNGU4NWI1N2RhY2VjOTY1ODc4Mi4uOGViYThlNTMwYzVkNGQxNWY5NGRhY2RhZGJiMTQxNjY2
MWZlOTczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5tZXNzYWdlcy5pbgpAQCAtMjYsNiArMjYsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vz
c1Bvb2wgewogCiAgICAgRGlkR2V0U3RhdGlzdGljcyhzdHJ1Y3QgV2ViS2l0OjpTdGF0aXN0aWNz
RGF0YSBzdGF0aXN0aWNzRGF0YSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAorI2lmIEVOQUJMRShH
QU1FUEFEKQorICAgIFN0YXJ0ZWRVc2luZ0dhbWVwYWRzKCkgV2FudHNDb25uZWN0aW9uCisgICAg
U3RvcHBlZFVzaW5nR2FtZXBhZHMoKSBXYW50c0Nvbm5lY3Rpb24KKyNlbmRpZgorCiAgICAgIyBQ
bHVnLWluIG1lc3NhZ2VzLgogICAgIHZvaWQgQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChT
dHJpbmcgcGFnZU9yaWdpbiwgdWludDMyX3QgaGFzaCwgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Np
b25JRCkKICAgICB2b2lkIFBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odWludDMyX3Qg
aGFzaCwgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NTNlMDI5ZGVhOTU3ZTcw
ODA2NjA2OTZiZjAxMDM1NmUyMzkzZjkxLi4zNDFmNDFlZjI4MDZjNzRjNWRkYWZlZTU1MjVmN2Rk
ZmM5NjQwZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC05MzYsNiArOTM2LDExIEBACiAJCTUxNEQ5RjU3MTkxMTlEMzUwMDAw
NjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEQ5RjU1MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0Nv
bnRyb2xsZXIuaCAqLzsgfTsKIAkJNTE0RDlGNTgxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2Vz
Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNEQ5RjU2MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIubW0gKi87
IH07CiAJCTUxNTc4QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTU3OEI4MjEyMDlFQ0VGMDBBMzdD
NEEgLyogQVBJRGF0YS5oICovOyB9OworCQk1MTVCRTE3NzFENTNGRTg3MDBERDdDNjggLyogV2Vi
R2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNUJFMTczMUQ1M0ZEREMwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIu
Y3BwICovOyB9OworCQk1MTVCRTE3OTFENTNGRThGMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVC
RTE3NDFENTNGRERDMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmggKi87IH07CisJCTUx
NUJFMUE3MUQ1NTI5MzQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlckhJRC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTFBNjFENTUyOTMw
MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwICovOyB9OworCQk1MTVCRTFBODFE
NTUyOTM0MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxQTQxRDU1MjkyODAwREQ3QzY4IC8q
IFVJR2FtZXBhZFByb3ZpZGVyLmNwcCAqLzsgfTsKKwkJNTE1QkUxQTkxRDU1MjkzNDAwREQ3QzY4
IC8qIFVJR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTVCRTFBNTFENTUyOTI4MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlk
ZXIuaCAqLzsgfTsKIAkJNTE1RTc3MjcxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFNzcy
NTE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJNTE1RTc3Mjgx
ODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1RTc3MjYxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5j
UmVxdWVzdC5oICovOyB9OwogCQk1MTVFNzcyQjE4NDAwOEI5MDAwNzIwM0YgLyogRGF0YWJhc2VQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUU3NzI5MTg0MDA4QjkwMDA3MjAzRiAvKiBEYXRhYmFzZVBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovOyB9OwpAQCAtMjk3NSw2ICsyOTgwLDEzIEBA
CiAJCTUxNEQ5RjU1MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZXNDb250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEQ5RjU2MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2
aWNlc0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTZXJ2aWNlc0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
NTc4QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFQSURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1
QkUxNzMxRDUzRkREQzAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHYW1lcGFkUHJvdmlkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTVCRTE3NDFENTNGRERDMDBERDdDNjggLyogV2Vi
R2FtZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdh
bWVwYWRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTVCRTE5RjFE
NTUwQUIwMDBERDdDNjggLyogV2ViR2FtZXBhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJHYW1lcGFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTE1QkUxQTAxRDU1MEFCMDAwREQ3QzY4IC8qIFdlYkdhbWVwYWQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR2FtZXBhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MTVCRTFBNDFENTUyOTI4MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVUlHYW1lcGFkUHJvdmlkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTVCRTFBNTFENTUyOTI4MDBERDdD
NjggLyogVUlHYW1lcGFkUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVUlHYW1lcGFkUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1
QkUxQTYxRDU1MjkzMDAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVySElELmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVJR2FtZXBhZFByb3ZpZGVySElELmNwcDsg
cGF0aCA9IFVJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlckhJRC5jcHA7IHNv
dXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNTE1RTc3MjUxODNERDZGNjAwMDcyMDNGIC8q
IEFzeW5jUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
c3luY1JlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVFNzcyNjE4
M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFzeW5jUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTVFNzcyOTE4NDAwOEI5MDAwNzIwM0YgLyogRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01NDY5LDYgKzU0ODEsMzYgQEAKIAkJCXBhdGggPSBBdXRoZW50aWNhdGlvbjsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTUxNUJFMTcyMUQ1M0ZEQjkwMEREN0M2OCAvKiBH
YW1lcGFkICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk1
MTVCRTE5RjFENTUwQUIwMDBERDdDNjggLyogV2ViR2FtZXBhZC5jcHAgKi8sCisJCQkJNTE1QkUx
QTAxRDU1MEFCMDAwREQ3QzY4IC8qIFdlYkdhbWVwYWQuaCAqLywKKwkJCQk1MTVCRTE3MzFENTNG
RERDMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCAqLywKKwkJCQk1MTVCRTE3NDFE
NTNGRERDMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmggKi8sCisJCQkpOworCQkJcGF0
aCA9IEdhbWVwYWQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk1MTVCRTE3
QjFENTRFRjVBMDBERDdDNjggLyogR2FtZXBhZCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJNTE1QkUxQTExRDU1MjNCMzAwREQ3QzY4IC8qIG1hYyAqLywK
KwkJCQk1MTVCRTFBNDFENTUyOTI4MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXIuY3BwICov
LAorCQkJCTUxNUJFMUE1MUQ1NTI5MjgwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5oICov
LAorCQkJKTsKKwkJCXBhdGggPSBHYW1lcGFkOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKKwkJNTE1QkUxQTExRDU1MjNCMzAwREQ3QzY4IC8qIG1hYyAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTE1QkUxQTYxRDU1MjkzMDAwREQ3QzY4
IC8qIFVJR2FtZXBhZFByb3ZpZGVySElELmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0gbWFjOwor
CQkJcGF0aCA9IFVJUHJvY2Vzcy9HYW1lcGFkL21hYzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CiAJCTUxNjMxOTkzMTYyODk4MEUwMEUyMkYwMCAvKiBtYWMgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNTgxMyw2ICs1ODU1LDcgQEAKIAkJ
CQlCQ0FDQzQzQjE2QjI0QzVEMDBCNkUwOTIgLyogRW50cnlQb2ludCAqLywKIAkJCQlFMTcwODc2
RDE2RDZDQTcyMDBGOTkyMjYgLyogRmlsZUFQSSAqLywKIAkJCQlDRDczQkEzRDEzMUEyQTIxMDBF
RURFRDIgLyogRnVsbFNjcmVlbiAqLywKKwkJCQk1MTVCRTE3MjFENTNGREI5MDBERDdDNjggLyog
R2FtZXBhZCAqLywKIAkJCQlCQzBFNUZDQjEyRDY5NkREMDAxMkE3MkEgLyogR2VvbG9jYXRpb24g
Ki8sCiAJCQkJNTFGQkI5QzExMzJFMDc5MjAwRjMyN0I0IC8qIEljb25EYXRhYmFzZSAqLywKIAkJ
CQlCQzIwNEVERjExQzgzRTcyMDA4RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGUgKi8sCkBAIC01OTUw
LDYgKzU5OTMsNyBAQAogCQkJCTk5NTVBNkU4MUM3OTgwOTAwMEVCNkE5MyAvKiBBdXRvbWF0aW9u
ICovLAogCQkJCTFBQkMzREYyMTg5OUU0MTUwMDRGMDYyNiAvKiBDb2NvYSAqLywKIAkJCQkxQUI3
RDRDNzEyODhBQTlBMDBDRkQwOEMgLyogRG93bmxvYWRzICovLAorCQkJCTUxNUJFMTdCMUQ1NEVG
NUEwMEREN0M2OCAvKiBHYW1lcGFkICovLAogCQkJCTJEQTk0NEE4MTg4NEU5QUIwMEVEODZEQiAv
KiBpb3MgKi8sCiAJCQkJQkMxMTFCMTgxMTJGNUZCNDAwMzM3QkFCIC8qIExhdW5jaGVyICovLAog
CQkJCUJDQ0YwODVDMTEzRjNCNzUwMEM2NTBDNSAvKiBtYWMgKi8sCkBAIC03NTE4LDYgKzc1NjIs
NyBAQAogCQkJCTJEQTk0NEE0MTg4NEU0RjAwMEVEODZEQiAvKiBHZXN0dXJlVHlwZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJEQTA0OUI4MTgwQ0NEMEEwMEFBRkE5RSAvKiBHcmFwaGljc0xheWVy
Q0FSZW1vdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwQ0U3MkFEMTI0N0U3OEQwMEJDMEVDNCAv
KiBIYW5kbGVNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTVCRTFBOTFENTUyOTM0MDBE
RDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzc1QTFC
MUIzMzY4MjcwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTM3RjkwREUzMTM3NjU2MEUwMDUxQ0Y2OCAvKiBIVFRQQ29va2llQWNjZXB0UG9saWN5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUUzNTFDQjE4MEYyQ0NDMDBFNTNCRTkgLyogSURCVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTgwMjUsNiArODA3MCw3IEBACiAJCQkJMUFCN0Q3
OEQxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
RjQ1OTJGMTk0NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0ZENTQ4QzEzMkQ4MjY4MDA1NUQ4MTYgLyogV0tFcnJvckNGLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MTVCRTE3OTFENTNGRThGMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzN0I1MDQ1MjE5RUVGMzEzMDBDRTJDRjggLyogV0tFcnJvclByaXZhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NUZDMTI0RkYwMjcwMDY4RjIwQSAvKiBXS0Vycm9y
UmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzgzRDEyNTBGQUREMDA2OEYyMEEgLyogV0tF
dmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC05MTc2LDYgKzkyMjIsNyBAQAogCQkJCUUxNzkwODhE
MTY5QkFBNjIwMDY5MDRDNyAvKiBTZWNJdGVtU2hpbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MTc5MDg5MDE2OUJBQTdGMDA2OTA0QzcgLyogU2VjSXRlbVNoaW1NZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4RTY5MEIxNjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1T
aGltUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE1QkUxQTcxRDU1MjkzNDAwREQ3QzY4
IC8qIFVJR2FtZXBhZFByb3ZpZGVySElELmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOEU2OTE3
MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxNEQ5RjU4MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0Nv
bnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUZERTY1OTE5NTRBNDJCMDBDNDhGRkEg
LyogU2Vzc2lvblN0YXRlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTE5Niw2ICs5MjQzLDcgQEAK
IAkJCQkxQTQ0Qjk1QjE2QjczRjlGMDBCN0JCRDggLyogU3RvcmFnZU1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUFCMzFBOTYxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNDRCOTU3MTZCNzM3QUEw
MEI3QkJEOCAvKiBTdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MTVCRTE3NzFENTNGRTg3MDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBRTAwRDZCMTgzMjdDMTIwMDA4N0RENyAvKiBTdHJpbmdSZWZlcmVuY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjk2QkQ4NUUxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmlu
Z1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFaWjQxN0VGMTJDMDBEODcwMDJCRTY3
QiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MjQ0LDYg
KzkyOTIsNyBAQAogCQkJCTdDNEFCRUQwMUFBOEU5RjAwMDg4QUEzNyAvKiBXZWJDb21waWxlZENv
bnRlbnRFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M0QUJFRDQxQUE4RkNCODAw
ODhBQTM3IC8qIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM0QTYyOEYxNDczMTJCRTAwNkM2ODFBIC8qIFdlYkNvbm5lY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTE1QkUxQTgxRDU1MjkzNDAwREQ3QzY4IC8qIFVJR2FtZXBhZFBy
b3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNEE2MjkxMTQ3MzEyQkUwMDZDNjgxQSAv
KiBXZWJDb25uZWN0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMUZFQzFDMTYy
N0I0NTcwMDcwMEY2RCAvKiBXZWJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDRDM2NzVDMTQ4QzI2QzAwMDQ0N0U4NyAvKiBXZWJDb25uZWN0aW9uVG9V
SVByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0dhbWVwYWQvV2ViR2FtZXBhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGZhNzE0NmU1ZjdiYTRiMjcy
NTk3MmE0YTQ0YTI5NTY3ZDk5YjlmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkLmNwcApAQCAtMCwwICsxLDMxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdhbWVwYWQuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dh
bWVwYWQvV2ViR2FtZXBhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhNGFjY2E4NzI2NmE4NGZlMTU2MzgwMDJi
ZWE0ODgyNmY2YWQ2NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0dhbWVwYWQvV2ViR2FtZXBhZC5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTI1YWM3YmQxNzZiYWQ4ODY3ZWRjNDg5OWM3N2JhYzg4NDljYTQxZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFk
UHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViR2FtZXBhZFByb3ZpZGVyLmgiCisKKyNpZiBFTkFCTEUoR0FN
RVBBRCkKKworI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUG9v
bE1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViR2FtZXBhZFByb3Zp
ZGVyJiBXZWJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFdlYkdhbWVwYWRQcm92aWRlcj4gcHJvdmlkZXI7CisgICAgcmV0dXJuIHByb3Zp
ZGVyOworfQorCitXZWJHYW1lcGFkUHJvdmlkZXI6OldlYkdhbWVwYWRQcm92aWRlcigpCit7Cit9
CisKK1dlYkdhbWVwYWRQcm92aWRlcjo6fldlYkdhbWVwYWRQcm92aWRlcigpCit7Cit9CisKK3Zv
aWQgV2ViR2FtZXBhZFByb3ZpZGVyOjpzdGFydE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJv
dmlkZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucyhj
bGllbnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKGNsaWVudCk7CisKKyAgICBpZiAobV9jbGllbnRz
LnNpemUoKSA9PSAxKQorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUG9vbDo6U3RhcnRlZFVzaW5nR2FtZXBhZHMoKSwgMCk7Cit9CisKK3Zv
aWQgV2ViR2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92
aWRlckNsaWVudCogY2xpZW50KQoreworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMoY2xp
ZW50KSk7CisgICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOworCisgICAgaWYgKG1fY2xpZW50
cy5pc0VtcHR5KCkpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3NQb29sOjpTdG9wcGVkVXNpbmdHYW1lcGFkcygpLCAwKTsKK30KKworY29u
c3QgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZCo+JiBXZWJHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3Jt
R2FtZXBhZHMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8UGxhdGZvcm1H
YW1lcGFkKj4+IGdhbWVwYWRzOworICAgIHJldHVybiBnYW1lcGFkczsKK30KKworfQorCisjZW5k
aWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWQ2NWJhNGI0YzFk
Mjg2ZTk1NDk4YTFiN2Q5OWViMGYwNDhmMGRiZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuaApAQCAtMCwwICsx
LDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL0dh
bWVwYWRQcm92aWRlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBXZWJHYW1lcGFkUHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29yZTo6R2Ft
ZXBhZFByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBXZWJHYW1lcGFkUHJvdmlkZXIoKTsKKyAgICB+
V2ViR2FtZXBhZFByb3ZpZGVyKCkgZmluYWw7CisKKyAgICBzdGF0aWMgV2ViR2FtZXBhZFByb3Zp
ZGVyJiBzaW5nbGV0b24oKTsKKworICAgIHZvaWQgc3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoV2Vi
Q29yZTo6R2FtZXBhZFByb3ZpZGVyQ2xpZW50KikgZmluYWw7CisgICAgdm9pZCBzdG9wTW9uaXRv
cmluZ0dhbWVwYWRzKFdlYkNvcmU6OkdhbWVwYWRQcm92aWRlckNsaWVudCopIGZpbmFsOworICAg
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQbGF0Zm9ybUdhbWVwYWQqPiYgcGxhdGZvcm1HYW1lcGFk
cygpIGZpbmFsOworCitwcml2YXRlOgorICAgIEhhc2hTZXQ8V2ViQ29yZTo6R2FtZXBhZFByb3Zp
ZGVyQ2xpZW50Kj4gbV9jbGllbnRzOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggMTQ3NTI4N2QyN2QwZmY2NTJiZTk1MWM0ZGFmYzU2NTRiY2Uz
ZDQ0Ni4uYmEyY2I5YzNjMWVjMzFmZjQ1YTAxNWIyYzUzMTU4YWUyNzVmNTVjNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNp
bmNsdWRlICJXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR2FtZXBh
ZFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiV2ViSWNvbkRhdGFiYXNlUHJveHkuaCIKICNpbmNsdWRlICJXZWJMb2FkZXJTdHJhdGVneS5o
IgpAQCAtNDAwLDYgKzQwMSwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9j
ZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICAgICB9
CiAgICAgfQogI2VuZGlmCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBHYW1lcGFkUHJvdmlk
ZXI6OnNpbmdsZXRvbigpLnNldFNoYXJlZFByb3ZpZGVyKFdlYkdhbWVwYWRQcm92aWRlcjo6c2lu
Z2xldG9uKCkpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285445</attachid>
            <date>2016-08-05 13:16:27 -0700</date>
            <delta_ts>2016-08-05 13:41:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160605-20160805131500.patch</filename>
            <type>text/plain</type>
            <size>35980</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzAyMzBkYWMyNWFjNzdl
YjBkYzgzYjJmMWIzYjFmMjAzZmE4YmJmYy4uNWJkMjBiMmNiNDc2MzI5YzY3YjE4ZTZiY2Y3YmE3
M2JlYjg0NTM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE2LTA4LTA1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBMYXkgV2ViUHJvY2Vzcy9V
SVByb2Nlc3MgZ3JvdW5kd29yayBmb3IgYW4gSVBDIEdhbWVwYWRQcm92aWRlci4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDYwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2g6CisgICAg
ICAgICAgLSBJbnRyb2R1Y2VzIHRoZSBHYW1lcGFkUHJvdmlkZXIgdGhhdCB0aGUgV2ViUHJvY2Vz
cyB3aWxsIHVzZSAoV2ViR2FtZXBhZFByb3ZpZGVyKQorICAgICAgICAgIC0gSGFzIHRoYXQgcHJv
dmlkZXIgbWVzc2FnZSB0byB0aGUgVUlQcm9jZXNzIG5vdGlmeWluZyBpbnRlcmVzdCBpbiBnYW1l
cGFkIHN0YXRlCisgICAgICAgICAgLSBJbnRyb2R1Y2VzIGEgR2FtZXBhZFByb3ZpZGVyQ2xpZW50
IGluIHRoZSBVSVByb2Nlc3MgKFVJR2FtZXBhZFByb3ZpZGVyKSB0aGF0IHdpbGwgdXNlCisgICAg
ICAgICAgICBvbmUgb2YgdGhlIGV4aXN0aW5nIEdhbWVwYWRQcm92aWRlcnMgdG8gcGFzcyBnYW1l
cGFkIHN0YXRlIGFsb25nIHRvIFdlYlByb2Nlc3Nlcy4KKyAgICAgICAgICAtIEFkZHMgYW4gZW1w
dHkgc2tlbGV0b24gZm9yIHRoZSBzb29uLXRvLWJlLXVzZWQgV2ViR2FtZXBhZCwgd2hpY2ggd2ls
bCBiZSB0aGUgCisgICAgICAgICAgICAiUGxhdGZvcm1HYW1lcGFkIiBmb3IgV2ViUHJvY2Vzc2Vz
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogVUlQcm9jZXNzL0dhbWVwYWRzL1VJR2Ft
ZXBhZFByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3Zp
ZGVyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6VUlH
YW1lcGFkUHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6flVJ
R2FtZXBhZFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBs
YXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3Zp
ZGVyOjpwbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpVSUdh
bWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSk6CisgICAgICAgIChX
ZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwcm9jZXNzUG9vbFN0YXJ0ZWRVc2luZ0dhbWVwYWRz
KToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnByb2Nlc3NQb29sU3RvcHBl
ZFVzaW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxh
dGZvcm1TdGFydE1vbml0b3JpbmdHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBh
ZFByb3ZpZGVyOjpwbGF0Zm9ybVN0b3BNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9HYW1lcGFkcy9VSUdhbWVwYWRQcm92aWRlci5oOiBBZGRlZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9HYW1lcGFkcy9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25pdG9y
aW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZv
cm1TdG9wTW9uaXRvcmluZ0dhbWVwYWRzKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp+V2ViUHJvY2Vz
c1Bvb2wpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RhcnRlZFVzaW5nR2FtZXBh
ZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RvcHBlZFVzaW5nR2FtZXBh
ZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc1N0b3BwZWRVc2lu
Z0dhbWVwYWRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW46CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZC5oOiBBZGRlZC4KKyAgICAg
ICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6V2ViR2FtZXBhZFByb3ZpZGVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjp+V2ViR2FtZXBhZFByb3Zp
ZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpzdGFydE1vbml0b3Jp
bmdHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6c3RvcE1v
bml0b3JpbmdHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6
cGxhdGZvcm1HYW1lcGFkcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVw
YWRQcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisK
IDIwMTYtMDgtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBD
cmFzaCB1bmRlciBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnByb2Nlc3NEaWRD
cmFzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDJhYjBjZGZjMmY0NjNiYjBkMGQwZjViMDM3
MzI0MjEwNjI2MTc3YTQuLmE2ODQyNTU2ODhjMjliMzY3NGM0Y2FlZmM0NjZjNzU0YTc3NzllMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0zNCw2ICszNCw3IEBAIHNldChXZWJLaXQyX0lOQ0xV
REVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0F1dG9tYXRpb24i
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9EYXRhYmFzZXMiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9Eb3dubG9hZHMiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9HYW1lcGFkIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVy
IgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvTGF1bmNoZXIiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9OZXR3b3JrIgpAQCAtNTMsNiArNTQsNyBAQCBzZXQoV2ViS2l0Ml9J
TkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvRGF0YWJh
c2VzL0luZGV4ZWREQiIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9GaWxlQVBJIgog
ICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4iCisgICAgIiR7V0VCS0lU
Ml9ESVJ9L1dlYlByb2Nlc3MvR2FtZXBhZCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbiIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JY29uRGF0YWJh
c2UiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUiCkBAIC00
NzgsNiArNDgwLDggQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHlNYXAuY3BwCiAKKyAgICBVSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAK
KwogICAgIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuY3BwCiAgICAgVUlQ
cm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuY3BwCiAgICAgVUlQcm9j
ZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuY3BwCkBAIC01MjUsNiArNTI5LDkg
QEAgc2V0KFdlYktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1
bGxTY3JlZW5NYW5hZ2VyLmNwcAogCisgICAgV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWQu
Y3BwCisgICAgV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKKwogICAg
IFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuY3BwCiAgICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIu
Y3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2Ft
ZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2Ft
ZXBhZFByb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2MxMTNhODhlNmVjNjcwNjkyZjNlYjE4YThk
YjkwYjYzZTVjZDhkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVUlHYW1lcGFkUHJvdmlkZXIuaCIK
KworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSA8V2ViQ29yZS9ISURHYW1lcGFkUHJv
dmlkZXIuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitVSUdhbWVwYWRQcm92aWRlciYg
VUlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFVJR2FtZXBhZFByb3ZpZGVyPiBzaGFyZWRQcm92aWRlcjsKKyAgICByZXR1cm4gc2hhcmVk
UHJvdmlkZXI7Cit9CisKK1VJR2FtZXBhZFByb3ZpZGVyOjpVSUdhbWVwYWRQcm92aWRlcigpCit7
Cit9CisKK1VJR2FtZXBhZFByb3ZpZGVyOjp+VUlHYW1lcGFkUHJvdmlkZXIoKQoreworICAgIGlm
ICghbV9wcm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzLmlzRW1wdHkoKSkKKyAgICAgICAgcGxhdGZv
cm1TdG9wTW9uaXRvcmluZ0dhbWVwYWRzKCk7Cit9CisKK3ZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmKQoreworfQorCit2b2lk
IFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoUGxhdGZvcm1H
YW1lcGFkJikKK3sKK30KKwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFk
SW5wdXRBY3Rpdml0eSgpCit7Cit9CisKK3ZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnByb2Nlc3NQ
b29sU3RhcnRlZFVzaW5nR2FtZXBhZHMoV2ViUHJvY2Vzc1Bvb2wmIHBvb2wpCit7CisgICAgQVNT
RVJUKCFtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMuY29udGFpbnMoJnBvb2wpKTsKKyAgICBt
X3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMuYWRkKCZwb29sKTsKKworICAgIGlmIChtX3Byb2Nl
c3NQb29sc1VzaW5nR2FtZXBhZHMuc2l6ZSgpID09IDEpCisgICAgICAgIHBsYXRmb3JtU3RhcnRN
b25pdG9yaW5nR2FtZXBhZHMoKTsKK30KKwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cHJvY2Vz
c1Bvb2xTdG9wcGVkVXNpbmdHYW1lcGFkcyhXZWJQcm9jZXNzUG9vbCYgcG9vbCkKK3sKKyAgICBB
U1NFUlQobV9wcm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzLmNvbnRhaW5zKCZwb29sKSk7CisgICAg
bV9wcm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzLnJlbW92ZSgmcG9vbCk7CisKKyAgICBpZiAobV9w
cm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzLmlzRW1wdHkoKSkKKyAgICAgICAgcGxhdGZvcm1TdG9w
TW9uaXRvcmluZ0dhbWVwYWRzKCk7Cit9CisKKyNpZiAhUExBVEZPUk0oTUFDKQordm9pZCBVSUdh
bWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TdGFydE1vbml0b3JpbmdHYW1lcGFkcygpCit7CisgICAg
Ly8gRklYTUU6IEltcGxlbWVudCBmb3Igb3RoZXIgcGxhdGZvcm1zCit9CisKK3ZvaWQgVUlHYW1l
cGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RvcE1vbml0b3JpbmdHYW1lcGFkcygpCit7CisgICAgLy8g
RklYTUU6IEltcGxlbWVudCBmb3Igb3RoZXIgcGxhdGZvcm1zCit9CisjZW5kaWYgLy8gIVBMQVRG
T1JNKE1BQykKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMzcyYzAyYTYyNWY3ZjNlNjgzMWJlY2QyMjU4ZWVhYmQ3MzRiYzRkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlk
ZXIuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgPFdlYkNvcmUvR2FtZXBhZFByb3ZpZGVyLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9HYW1lcGFkUHJvdmlkZXJDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7
CisKK2NsYXNzIFVJR2FtZXBhZFByb3ZpZGVyIDogcHVibGljIFdlYkNvcmU6OkdhbWVwYWRQcm92
aWRlckNsaWVudCB7CitwdWJsaWM6CisgICAgVUlHYW1lcGFkUHJvdmlkZXIoKTsKKyAgICB+VUlH
YW1lcGFkUHJvdmlkZXIoKSBmaW5hbDsKKworICAgIHN0YXRpYyBVSUdhbWVwYWRQcm92aWRlciYg
c2luZ2xldG9uKCk7CisKKyAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZChXZWJDb3Jl
OjpQbGF0Zm9ybUdhbWVwYWQmKSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZERpc2Nv
bm5lY3RlZChXZWJDb3JlOjpQbGF0Zm9ybUdhbWVwYWQmKSBmaW5hbDsKKyAgICB2b2lkIHBsYXRm
b3JtR2FtZXBhZElucHV0QWN0aXZpdHkoKSBmaW5hbDsKKworICAgIHZvaWQgcHJvY2Vzc1Bvb2xT
dGFydGVkVXNpbmdHYW1lcGFkcyhXZWJQcm9jZXNzUG9vbCYpOworICAgIHZvaWQgcHJvY2Vzc1Bv
b2xTdG9wcGVkVXNpbmdHYW1lcGFkcyhXZWJQcm9jZXNzUG9vbCYpOworCitwcml2YXRlOgorICAg
IHZvaWQgcGxhdGZvcm1TdGFydE1vbml0b3JpbmdHYW1lcGFkcygpOworICAgIHZvaWQgcGxhdGZv
cm1TdG9wTW9uaXRvcmluZ0dhbWVwYWRzKCk7CisKKyAgICBIYXNoU2V0PFdlYlByb2Nlc3NQb29s
Kj4gbV9wcm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzOworfTsKKworfQorCisjZW5kaWYgLy8gRU5B
QkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBh
ZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGU0N2I2
ZjczNmU5ZDgyOWQ1MzczYTk0NmNmZmUxYzc5ZDYyYTJmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNw
cApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlVJR2FtZXBhZFByb3ZpZGVyLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2lu
Y2x1ZGUgPFdlYkNvcmUvSElER2FtZXBhZFByb3ZpZGVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6
cGxhdGZvcm1TdGFydE1vbml0b3JpbmdHYW1lcGFkcygpCit7CisgICAgQVNTRVJUKCFtX3Byb2Nl
c3NQb29sc1VzaW5nR2FtZXBhZHMuaXNFbXB0eSgpKTsKKyAgICBISURHYW1lcGFkUHJvdmlkZXI6
OnNpbmdsZXRvbigpLnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKHRoaXMpOworfQorCit2b2lkIFVJ
R2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKQoreworICAg
IEFTU0VSVChtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMuaXNFbXB0eSgpKTsKKyAgICBISURH
YW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0b3BNb25pdG9yaW5nR2FtZXBhZHModGhpcyk7
Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNWQ3MWMwZDU1ZTA0ZjdkY2QwMTg3OTU1
ZWRjMTFmNWM4OGQzYjkzMi4uZjA2NjhmYTlmM2Y5ZWM5ZDFlZjU0ZmIzZjNlNDA2NGJmOWYxYWJm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC00
Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlN0
YXRpc3RpY3NEYXRhLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKKyNpbmNsdWRlICJVSUdh
bWVwYWRQcm92aWRlci5oIgogI2luY2x1ZGUgIldLQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIgogI2luY2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5o
IgpAQCAtMjU5LDYgKzI2MCwxMSBAQCBXZWJQcm9jZXNzUG9vbDo6fldlYlByb2Nlc3NQb29sKCkK
IAogICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKQogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5z
aHV0RG93blByb2Nlc3MoKTsKKworI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIGlmICghbV9wcm9j
ZXNzZXNVc2luZ0dhbWVwYWRzLmlzRW1wdHkoKSkKKyAgICAgICAgVUlHYW1lcGFkUHJvdmlkZXI6
OnNpbmdsZXRvbigpLnByb2Nlc3NQb29sU3RvcHBlZFVzaW5nR2FtZXBhZHMoKnRoaXMpOworI2Vu
ZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tD
b250ZXh0Q2xpZW50QmFzZSogY2xpZW50KQpAQCAtNzUyLDYgKzc1OCwxMCBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAg
ICAgc3RhdGljX2Nhc3Q8V2ViQ29udGV4dFN1cHBsZW1lbnQqPihzdXBwbGVtZW50PFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5PigpKS0+cHJvY2Vzc0RpZENsb3NlKHByb2Nlc3MpOwogCiAgICAg
bV9wcm9jZXNzZXMucmVtb3ZlRmlyc3QocHJvY2Vzcyk7CisKKyNpZiBFTkFCTEUoR0FNRVBBRCkK
KyAgICBwcm9jZXNzU3RvcHBlZFVzaW5nR2FtZXBhZHMocHJvY2Vzcyk7CisjZW5kaWYKIH0KIAog
V2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3Bl
Y3RpbmdQcm9jZXNzQ291bnRMaW1pdCgpCkBAIC0xMjMxLDYgKzEyNDEsNDEgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZGlkR2V0U3RhdGlzdGljcyhjb25zdCBTdGF0aXN0aWNzRGF0YSYgc3RhdGlz
dGljc0RhdGEsIHVpbnQKICAgICByZXF1ZXN0LT5jb21wbGV0ZWRSZXF1ZXN0KHJlcXVlc3RJRCwg
c3RhdGlzdGljc0RhdGEpOwogfQogCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKK3ZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnN0YXJ0ZWRVc2luZ0dhbWVwYWRzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bikKK3sKKyAgICBhdXRvKiB3ZWJQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmZyb21D
b25uZWN0aW9uKCZjb25uZWN0aW9uKTsKKyAgICBpZiAoIXdlYlByb2Nlc3NQcm94eSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQVNTRVJUKCFtX3Byb2Nlc3Nlc1VzaW5nR2FtZXBhZHMuY29udGFp
bnMod2ViUHJvY2Vzc1Byb3h5KSk7CisgICAgbV9wcm9jZXNzZXNVc2luZ0dhbWVwYWRzLmFkZCh3
ZWJQcm9jZXNzUHJveHkpOworCisgICAgaWYgKG1fcHJvY2Vzc2VzVXNpbmdHYW1lcGFkcy5zaXpl
KCkgPT0gMSkKKyAgICAgICAgVUlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnByb2Nlc3NQ
b29sU3RhcnRlZFVzaW5nR2FtZXBhZHMoKnRoaXMpOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29s
OjpzdG9wcGVkVXNpbmdHYW1lcGFkcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7Cisg
ICAgYXV0byogd2ViUHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpmcm9tQ29ubmVjdGlv
bigmY29ubmVjdGlvbik7CisgICAgaWYgKCF3ZWJQcm9jZXNzUHJveHkpCisgICAgICAgIHJldHVy
bjsKKworICAgIEFTU0VSVChtX3Byb2Nlc3Nlc1VzaW5nR2FtZXBhZHMuY29udGFpbnMod2ViUHJv
Y2Vzc1Byb3h5KSk7CisgICAgcHJvY2Vzc1N0b3BwZWRVc2luZ0dhbWVwYWRzKHdlYlByb2Nlc3NQ
cm94eSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NTdG9wcGVkVXNpbmdHYW1l
cGFkcyhXZWJQcm9jZXNzUHJveHkqIHdlYlByb2Nlc3NQcm94eSkKK3sKKyAgICBtX3Byb2Nlc3Nl
c1VzaW5nR2FtZXBhZHMucmVtb3ZlKHdlYlByb2Nlc3NQcm94eSk7CisKKyAgICBpZiAobV9wcm9j
ZXNzZXNVc2luZ0dhbWVwYWRzLmlzRW1wdHkoKSkKKyAgICAgICAgVUlHYW1lcGFkUHJvdmlkZXI6
OnNpbmdsZXRvbigpLnByb2Nlc3NQb29sU3RvcHBlZFVzaW5nR2FtZXBhZHMoKnRoaXMpOworfQor
CisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdhcmJh
Z2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoKQogewogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6R2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0cygpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZDU3YjA5ZTUw
Nzc4ZmI4MzJiODcwNzg5NjM4ZGRkYWMzYzA2NmFjMC4uMzE5MDcyNWE0MjJmZmYyMTE3MjU1NmEw
MDVmNzk3NGQ3NDQxMmE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKQEAgLTM4Nyw2ICszODcsMTUgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkR2V0U3Rh
dGlzdGljcyhjb25zdCBTdGF0aXN0aWNzRGF0YSYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCisj
aWYgRU5BQkxFKEdBTUVQQUQpCisgICAgdm9pZCBzdGFydGVkVXNpbmdHYW1lcGFkcyhJUEM6OkNv
bm5lY3Rpb24mKTsKKyAgICB2b2lkIHN0b3BwZWRVc2luZ0dhbWVwYWRzKElQQzo6Q29ubmVjdGlv
biYpOworCisgICAgdm9pZCBwcm9jZXNzU3RvcHBlZFVzaW5nR2FtZXBhZHMoV2ViUHJvY2Vzc1By
b3h5Kik7CisKKyAgICBIYXNoU2V0PFdlYlByb2Nlc3NQcm94eSo+IG1fcHJvY2Vzc2VzVXNpbmdH
YW1lcGFkczsKKyNlbmRpZgorCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgLy8g
SW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYlByb2Nlc3NQb29sTWVzc2FnZVJlY2VpdmVyLmNw
cAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNz
YWdlRGVjb2RlciYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmluCmluZGV4IDc2Yjc1Y2ZmNmU1NDRmNzcyNzUxMzRl
ODViNTdkYWNlYzk2NTg3ODIuLjhlYmE4ZTUzMGM1ZDRkMTVmOTRkYWNkYWRiYjE0MTY2NjFmZTk3
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
bWVzc2FnZXMuaW4KQEAgLTI2LDYgKzI2LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQb29s
IHsKIAogICAgIERpZEdldFN0YXRpc3RpY3Moc3RydWN0IFdlYktpdDo6U3RhdGlzdGljc0RhdGEg
c3RhdGlzdGljc0RhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKKyNpZiBFTkFCTEUoR0FNRVBB
RCkKKyAgICBTdGFydGVkVXNpbmdHYW1lcGFkcygpIFdhbnRzQ29ubmVjdGlvbgorICAgIFN0b3Bw
ZWRVc2luZ0dhbWVwYWRzKCkgV2FudHNDb25uZWN0aW9uCisjZW5kaWYKKwogICAgICMgUGx1Zy1p
biBtZXNzYWdlcy4KICAgICB2b2lkIEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goU3RyaW5n
IHBhZ2VPcmlnaW4sIHVpbnQzMl90IGhhc2gsIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CiAgICAgdm9pZCBQbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVpbnQzMl90IGhhc2gs
IFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzUzZTAyOWRlYTk1N2U3MDgwNjYw
Njk2YmYwMTAzNTZlMjM5M2Y5MS4uMzQxZjQxZWYyODA2Yzc0YzVkZGFmZWU1NTI1ZjdkZGZjOTY0
MGU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtOTM2LDYgKzkzNiwxMSBAQAogCQk1MTREOUY1NzE5MTE5RDM1MDAwMDYzQTcg
LyogU2VydmljZXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTREOUY1NTE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9s
bGVyLmggKi87IH07CiAJCTUxNEQ5RjU4MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRy
b2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTREOUY1NjE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLm1tICovOyB9Owog
CQk1MTU3OEI4MzEyMDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8q
IEFQSURhdGEuaCAqLzsgfTsKKwkJNTE1QkUxNzcxRDUzRkU4NzAwREQ3QzY4IC8qIFdlYkdhbWVw
YWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTVCRTE3MzFENTNGRERDMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCAq
LzsgfTsKKwkJNTE1QkUxNzkxRDUzRkU4RjAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxNzQx
RDUzRkREQzAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5oICovOyB9OworCQk1MTVCRTFB
NzFENTUyOTM0MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxQTYxRDU1MjkzMDAwREQ3
QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVySElELmNwcCAqLzsgfTsKKwkJNTE1QkUxQTgxRDU1Mjkz
NDAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMUE0MUQ1NTI5MjgwMEREN0M2OCAvKiBVSUdh
bWVwYWRQcm92aWRlci5jcHAgKi87IH07CisJCTUxNUJFMUE5MUQ1NTI5MzQwMEREN0M2OCAvKiBV
SUdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE1QkUxQTUxRDU1MjkyODAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyLmgg
Ki87IH07CiAJCTUxNUU3NzI3MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1RTc3MjUxODNE
RDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5jcHAgKi87IH07CiAJCTUxNUU3NzI4MTgzREQ2
RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUU3NzI2MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVl
c3QuaCAqLzsgfTsKIAkJNTE1RTc3MkIxODQwMDhCOTAwMDcyMDNGIC8qIERhdGFiYXNlUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTVFNzcyOTE4NDAwOEI5MDAwNzIwM0YgLyogRGF0YWJhc2VQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAqLzsgfTsKQEAgLTI5NzUsNiArMjk4MCwxMyBAQAogCQk1
MTREOUY1NTE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VzQ29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTREOUY1NjE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXND
b250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Vy
dmljZXNDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTU3OEI4
MjEyMDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBUElEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNUJFMTcz
MUQ1M0ZEREMwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR2FtZXBhZFByb3ZpZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1QkUxNzQxRDUzRkREQzAwREQ3QzY4IC8qIFdlYkdhbWVw
YWRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHYW1lcGFk
UHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1QkUxOUYxRDU1MEFC
MDAwREQ3QzY4IC8qIFdlYkdhbWVwYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViR2FtZXBhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUx
NUJFMUEwMUQ1NTBBQjAwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkdhbWVwYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTE1QkUxQTQxRDU1MjkyODAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVJR2FtZXBhZFByb3ZpZGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1QkUxQTUxRDU1MjkyODAwREQ3QzY4IC8q
IFVJR2FtZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVJ
R2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNUJFMUE2
MUQ1NTI5MzAwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlckhJRC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVSUdhbWVwYWRQcm92aWRlckhJRC5jcHA7IHBhdGgg
PSBVSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwOyBzb3VyY2VU
cmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTUxNUU3NzI1MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3lu
Y1JlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXN5bmNS
ZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1RTc3MjYxODNERDZG
NjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBc3luY1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1RTc3
MjkxODQwMDhCOTAwMDcyMDNGIC8qIERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ2
OSw2ICs1NDgxLDM2IEBACiAJCQlwYXRoID0gQXV0aGVudGljYXRpb247CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OworCQk1MTVCRTE3MjFENTNGREI5MDBERDdDNjggLyogR2FtZXBh
ZCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTE1QkUx
OUYxRDU1MEFCMDAwREQ3QzY4IC8qIFdlYkdhbWVwYWQuY3BwICovLAorCQkJCTUxNUJFMUEwMUQ1
NTBBQjAwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmggKi8sCisJCQkJNTE1QkUxNzMxRDUzRkREQzAw
REQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5jcHAgKi8sCisJCQkJNTE1QkUxNzQxRDUzRkRE
QzAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBH
YW1lcGFkOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNTE1QkUxN0IxRDU0
RUY1QTAwREQ3QzY4IC8qIEdhbWVwYWQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCTUxNUJFMUExMUQ1NTIzQjMwMEREN0M2OCAvKiBtYWMgKi8sCisJCQkJ
NTE1QkUxQTQxRDU1MjkyODAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyLmNwcCAqLywKKwkJ
CQk1MTVCRTFBNTFENTUyOTI4MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXIuaCAqLywKKwkJ
CSk7CisJCQlwYXRoID0gR2FtZXBhZDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CisJCTUxNUJFMUExMUQ1NTIzQjMwMEREN0M2OCAvKiBtYWMgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUxNUJFMUE2MUQ1NTI5MzAwMEREN0M2OCAvKiBV
SUdhbWVwYWRQcm92aWRlckhJRC5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IG1hYzsKKwkJCXBh
dGggPSBVSVByb2Nlc3MvR2FtZXBhZC9tYWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OwogCQk1MTYzMTk5MzE2Mjg5ODBFMDBFMjJGMDAgLyogbWFjICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTU4MTMsNiArNTg1NSw3IEBACiAJCQkJQkNB
Q0M0M0IxNkIyNEM1RDAwQjZFMDkyIC8qIEVudHJ5UG9pbnQgKi8sCiAJCQkJRTE3MDg3NkQxNkQ2
Q0E3MjAwRjk5MjI2IC8qIEZpbGVBUEkgKi8sCiAJCQkJQ0Q3M0JBM0QxMzFBMkEyMTAwRUVERUQy
IC8qIEZ1bGxTY3JlZW4gKi8sCisJCQkJNTE1QkUxNzIxRDUzRkRCOTAwREQ3QzY4IC8qIEdhbWVw
YWQgKi8sCiAJCQkJQkMwRTVGQ0IxMkQ2OTZERDAwMTJBNzJBIC8qIEdlb2xvY2F0aW9uICovLAog
CQkJCTUxRkJCOUMxMTMyRTA3OTIwMEYzMjdCNCAvKiBJY29uRGF0YWJhc2UgKi8sCiAJCQkJQkMy
MDRFREYxMUM4M0U3MjAwOEYzMzc1IC8qIEluamVjdGVkQnVuZGxlICovLApAQCAtNTk1MCw2ICs1
OTkzLDcgQEAKIAkJCQk5OTU1QTZFODFDNzk4MDkwMDBFQjZBOTMgLyogQXV0b21hdGlvbiAqLywK
IAkJCQkxQUJDM0RGMjE4OTlFNDE1MDA0RjA2MjYgLyogQ29jb2EgKi8sCiAJCQkJMUFCN0Q0Qzcx
Mjg4QUE5QTAwQ0ZEMDhDIC8qIERvd25sb2FkcyAqLywKKwkJCQk1MTVCRTE3QjFENTRFRjVBMDBE
RDdDNjggLyogR2FtZXBhZCAqLywKIAkJCQkyREE5NDRBODE4ODRFOUFCMDBFRDg2REIgLyogaW9z
ICovLAogCQkJCUJDMTExQjE4MTEyRjVGQjQwMDMzN0JBQiAvKiBMYXVuY2hlciAqLywKIAkJCQlC
Q0NGMDg1QzExM0YzQjc1MDBDNjUwQzUgLyogbWFjICovLApAQCAtNzUxOCw2ICs3NTYyLDcgQEAK
IAkJCQkyREE5NDRBNDE4ODRFNEYwMDBFRDg2REIgLyogR2VzdHVyZVR5cGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyREEwNDlCODE4MENDRDBBMDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVt
b3RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMENFNzJBRDEyNDdFNzhEMDBCQzBFQzQgLyogSGFu
ZGxlTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE1QkUxQTkxRDU1MjkzNDAwREQ3QzY4
IC8qIFVJR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUM3NUExQjFCMzM2
ODI3MDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRpc2FibGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzN0Y5MERFMzEzNzY1NjBFMDA1MUNGNjggLyogSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTFFMzUxQ0IxODBGMkNDQzAwRTUzQkU5IC8qIElEQlV0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDI1LDYgKzgwNzAsNyBAQAogCQkJCTFBQjdENzhEMTI4
OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUY0NTky
RjE5NDY0QjIwMDBGOUQ0QTIgLyogV0tFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGRDU0
OEMxMzJEODI2ODAwNTVEODE2IC8qIFdLRXJyb3JDRi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE1
QkUxNzkxRDUzRkU4RjAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzdCNTA0NTIxOUVFRjMxMzAwQ0UyQ0Y4IC8qIFdLRXJyb3JQcml2YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzQwNzVGQzEyNEZGMDI3MDA2OEYyMEEgLyogV0tFcnJvclJlZi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc4M0QxMjUwRkFERDAwNjhGMjBBIC8qIFdLRXZlbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtOTE3Niw2ICs5MjIyLDcgQEAKIAkJCQlFMTc5MDg4RDE2OUJB
QTYyMDA2OTA0QzcgLyogU2VjSXRlbVNoaW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE3OTA4
OTAxNjlCQUE3RjAwNjkwNEM3IC8qIFNlY0l0ZW1TaGltTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUUxOEU2OTBCMTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVBy
b3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxNUJFMUE3MUQ1NTI5MzQwMEREN0M2OCAvKiBV
SUdhbWVwYWRQcm92aWRlckhJRC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFNjkxNzE2OUI2
NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MTREOUY1ODE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9s
bGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGREU2NTkxOTU0QTQyQjAwQzQ4RkZBIC8qIFNl
c3Npb25TdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkxOTYsNiArOTI0Myw3IEBACiAJCQkJ
MUE0NEI5NUIxNkI3M0Y5RjAwQjdCQkQ4IC8qIFN0b3JhZ2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBQjMxQTk2MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTQ0Qjk1NzE2QjczN0FBMDBCN0JC
RDggLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE1QkUx
NzcxRDUzRkU4NzAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQUUwMEQ2QjE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTI5NkJEODVFMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGls
aXRpZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxWlo0MTdFRjEyQzAwRDg3MDAyQkU2N0IgLyog
VGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTI0NCw2ICs5Mjky
LDcgQEAKIAkJCQk3QzRBQkVEMDFBQThFOUYwMDA4OEFBMzcgLyogV2ViQ29tcGlsZWRDb250ZW50
RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNEFCRUQ0MUFBOEZDQjgwMDg4QUEz
NyAvKiBXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDNEE2MjhGMTQ3MzEyQkUwMDZDNjgxQSAvKiBXZWJDb25uZWN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTUxNUJFMUE4MUQ1NTI5MzQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzRBNjI5MTE0NzMxMkJFMDA2QzY4MUEgLyogV2Vi
Q29ubmVjdGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTFGRUMxQzE2MjdCNDU3
MDA3MDBGNkQgLyogV2ViQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQ0QzNjc1QzE0OEMyNkMwMDA0NDdFODcgLyogV2ViQ29ubmVjdGlvblRvVUlQcm9j
ZXNzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9H
YW1lcGFkL1dlYkdhbWVwYWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmYTcxNDZlNWY3YmE0YjI3MjU5NzJh
NGE0NGEyOTU2N2Q5OWI5ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZC5jcHAKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHYW1lcGFkLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0dhbWVwYWQvV2ViR2FtZXBhZC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFk
L1dlYkdhbWVwYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTRhY2NhODcyNjZhODRmZTE1NjM4MDAyYmVhNDg4
MjZmNmFkNjU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9H
YW1lcGFkL1dlYkdhbWVwYWQuaApAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUyNWFjN2JkMTc2YmFkODg2N2VkYzQ4OTljNzdiYWM4ODQ5Y2E0MWYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3Zp
ZGVyLmNwcApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYkdhbWVwYWRQcm92aWRlci5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQp
CisKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNz
YWdlcy5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkdhbWVwYWRQcm92aWRlciYg
V2ViR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxXZWJHYW1lcGFkUHJvdmlkZXI+IHByb3ZpZGVyOworICAgIHJldHVybiBwcm92aWRlcjsK
K30KKworV2ViR2FtZXBhZFByb3ZpZGVyOjpXZWJHYW1lcGFkUHJvdmlkZXIoKQoreworfQorCitX
ZWJHYW1lcGFkUHJvdmlkZXI6On5XZWJHYW1lcGFkUHJvdmlkZXIoKQoreworfQorCit2b2lkIFdl
YkdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVy
Q2xpZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJUKCFtX2NsaWVudHMuY29udGFpbnMoY2xpZW50
KSk7CisgICAgbV9jbGllbnRzLmFkZChjbGllbnQpOworCisgICAgaWYgKG1fY2xpZW50cy5zaXpl
KCkgPT0gMSkKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2VuZChNZXNzYWdlczo6
V2ViUHJvY2Vzc1Bvb2w6OlN0YXJ0ZWRVc2luZ0dhbWVwYWRzKCksIDApOworfQorCit2b2lkIFdl
YkdhbWVwYWRQcm92aWRlcjo6c3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJD
bGllbnQqIGNsaWVudCkKK3sKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKGNsaWVudCkp
OworICAgIG1fY2xpZW50cy5yZW1vdmUoY2xpZW50KTsKKworICAgIGlmIChtX2NsaWVudHMuaXNF
bXB0eSgpKQorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUG9vbDo6U3RvcHBlZFVzaW5nR2FtZXBhZHMoKSwgMCk7Cit9CisKK2NvbnN0IFZl
Y3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiYgV2ViR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVw
YWRzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFBsYXRmb3JtR2FtZXBh
ZCo+PiBnYW1lcGFkczsKKyAgICByZXR1cm4gZ2FtZXBhZHM7Cit9CisKK30KKworI2VuZGlmIC8v
IEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9H
YW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9H
YW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkNjViYTRiNGMxZDI4NmU5
NTQ5OGExYjdkOTllYjBmMDQ4ZjBkYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmgKQEAgLTAsMCArMSw0OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9HYW1lcGFk
UHJvdmlkZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViR2FtZXBhZFByb3ZpZGVyIDogcHVibGljIFdlYkNvcmU6OkdhbWVwYWRQ
cm92aWRlciB7CitwdWJsaWM6CisgICAgV2ViR2FtZXBhZFByb3ZpZGVyKCk7CisgICAgfldlYkdh
bWVwYWRQcm92aWRlcigpIGZpbmFsOworCisgICAgc3RhdGljIFdlYkdhbWVwYWRQcm92aWRlciYg
c2luZ2xldG9uKCk7CisKKyAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKFdlYkNvcmU6
OkdhbWVwYWRQcm92aWRlckNsaWVudCopIGZpbmFsOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdH
YW1lcGFkcyhXZWJDb3JlOjpHYW1lcGFkUHJvdmlkZXJDbGllbnQqKSBmaW5hbDsKKyAgICBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkKj4mIHBsYXRmb3JtR2FtZXBhZHMoKSBm
aW5hbDsKKworcHJpdmF0ZToKKyAgICBIYXNoU2V0PFdlYkNvcmU6OkdhbWVwYWRQcm92aWRlckNs
aWVudCo+IG1fY2xpZW50czsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDE0NzUyODdkMjdkMGZmNjUyYmU5NTFjNGRhZmM1NjU0YmNlM2Q0NDYu
LmJhMmNiOWMzYzFlYzMxZmY0NWEwMTViMmM1MzE1OGFlMjc1ZjU1YzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVk
ZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdhbWVwYWRQcm92
aWRlci5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIldl
Ykljb25EYXRhYmFzZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViTG9hZGVyU3RyYXRlZ3kuaCIKQEAg
LTQwMCw2ICs0MDEsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAgICAgfQogICAg
IH0KICNlbmRpZgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisgICAgR2FtZXBhZFByb3ZpZGVyOjpz
aW5nbGV0b24oKS5zZXRTaGFyZWRQcm92aWRlcihXZWJHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRv
bigpKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285446</attachid>
            <date>2016-08-05 13:41:16 -0700</date>
            <delta_ts>2016-08-08 09:54:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160605-20160805133949.patch</filename>
            <type>text/plain</type>
            <size>36138</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzAyMzBkYWMyNWFjNzdl
YjBkYzgzYjJmMWIzYjFmMjAzZmE4YmJmYy4uNTg3OWFhYjE4MGM2YjJhODU4ZjQ1MmVhNTYxZTRl
Zjc3MTRmZTNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE2LTA4LTA1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBMYXkgV2ViUHJvY2Vzcy9V
SVByb2Nlc3MgZ3JvdW5kd29yayBmb3IgYW4gSVBDIEdhbWVwYWRQcm92aWRlci4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDYwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgVGhpcyBwYXRjaDoKKyAg
ICAgICAgICAtIEludHJvZHVjZXMgdGhlIEdhbWVwYWRQcm92aWRlciB0aGF0IHRoZSBXZWJQcm9j
ZXNzIHdpbGwgdXNlIChXZWJHYW1lcGFkUHJvdmlkZXIpCisgICAgICAgICAgLSBIYXMgdGhhdCBw
cm92aWRlciBtZXNzYWdlIHRvIHRoZSBVSVByb2Nlc3Mgbm90aWZ5aW5nIGludGVyZXN0IGluIGdh
bWVwYWQgc3RhdGUKKyAgICAgICAgICAtIEludHJvZHVjZXMgYSBHYW1lcGFkUHJvdmlkZXJDbGll
bnQgaW4gdGhlIFVJUHJvY2VzcyAoVUlHYW1lcGFkUHJvdmlkZXIpIHRoYXQgd2lsbCB1c2UKKyAg
ICAgICAgICAgIG9uZSBvZiB0aGUgZXhpc3RpbmcgR2FtZXBhZFByb3ZpZGVycyB0byBwYXNzIGdh
bWVwYWQgc3RhdGUgYWxvbmcgdG8gV2ViUHJvY2Vzc2VzLgorICAgICAgICAgIC0gQWRkcyBhbiBl
bXB0eSBza2VsZXRvbiBmb3IgdGhlIHNvb24tdG8tYmUtdXNlZCBXZWJHYW1lcGFkLCB3aGljaCB3
aWxsIGJlIHRoZSAKKyAgICAgICAgICAgICJQbGF0Zm9ybUdhbWVwYWQiIGZvciBXZWJQcm9jZXNz
ZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZHMvVUlH
YW1lcGFkUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJv
dmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpV
SUdhbWVwYWRQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjp+
VUlHYW1lcGFkUHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6
cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJv
dmlkZXI6OnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OlVJ
R2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2aXR5KToKKyAgICAgICAg
KFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnByb2Nlc3NQb29sU3RhcnRlZFVzaW5nR2FtZXBh
ZHMpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cHJvY2Vzc1Bvb2xTdG9w
cGVkVXNpbmdHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpw
bGF0Zm9ybVN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1l
cGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RvcE1vbml0b3JpbmdHYW1lcGFkcyk6CisgICAgICAgICog
VUlQcm9jZXNzL0dhbWVwYWRzL1VJR2FtZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0dhbWVwYWRzL21hYy9VSUdhbWVwYWRQcm92aWRlckhJRC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TdGFydE1vbml0
b3JpbmdHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0
Zm9ybVN0b3BNb25pdG9yaW5nR2FtZXBhZHMpOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9j
ZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGFydGVkVXNpbmdHYW1l
cGFkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdG9wcGVkVXNpbmdHYW1l
cGFkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzU3RvcHBlZFVz
aW5nR2FtZXBhZHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbjoKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZC5jcHA6IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkLmg6IEFkZGVkLgorICAg
ICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpXZWJHYW1lcGFkUHJvdmlk
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1lcGFkUHJvdmlkZXI6On5XZWJHYW1lcGFkUHJv
dmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRv
cmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpzdG9w
TW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVy
OjpwbGF0Zm9ybUdhbWVwYWRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2Ft
ZXBhZFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToK
KwogMjAxNi0wOC0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IENyYXNoIHVuZGVyIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6cHJvY2Vzc0Rp
ZENyYXNoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMmFiMGNkZmMyZjQ2M2JiMGQwZDBmNWIw
MzczMjQyMTA2MjYxNzdhNC4uYTY4NDI1NTY4OGMyOWIzNjc0YzRjYWVmYzQ2NmM3NTRhNzc3OWUw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTM0LDYgKzM0LDcgQEAgc2V0KFdlYktpdDJfSU5D
TFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQXV0b21hdGlv
biIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0RhdGFiYXNlcyIKICAgICAiJHtXRUJL
SVQyX0RJUn0vVUlQcm9jZXNzL0Rvd25sb2FkcyIKKyAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0dhbWVwYWQiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2
ZXIiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9MYXVuY2hlciIKICAgICAiJHtXRUJL
SVQyX0RJUn0vVUlQcm9jZXNzL05ldHdvcmsiCkBAIC01Myw2ICs1NCw3IEBAIHNldChXZWJLaXQy
X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9EYXRh
YmFzZXMvSW5kZXhlZERCIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0ZpbGVBUEki
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvRnVsbFNjcmVlbiIKKyAgICAiJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9HYW1lcGFkIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0ljb25EYXRh
YmFzZSIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZSIKQEAg
LTQ3OCw2ICs0ODAsOCBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmNwcAogICAgIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eU1hcC5jcHAKIAorICAgIFVJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNw
cAorCiAgICAgVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9IVFRQUmVxdWVzdC5jcHAKICAgICBV
SVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5jcHAKICAgICBVSVBy
b2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZlci5jcHAKQEAgLTUyNSw2ICs1Mjks
OSBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2Vi
RnVsbFNjcmVlbk1hbmFnZXIuY3BwCiAKKyAgICBXZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBh
ZC5jcHAKKyAgICBXZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcAorCiAg
ICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5jcHAKICAgICBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdl
ci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvVUlH
YW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvVUlH
YW1lcGFkUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzYzExM2E4OGU2ZWM2NzA2OTJmM2ViMThh
OGRiOTBiNjNlNWNkOGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVSUdhbWVwYWRQcm92aWRlci5o
IgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0hJREdhbWVwYWRQ
cm92aWRlci5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1VJR2FtZXBhZFByb3ZpZGVy
JiBVSUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VUlHYW1lcGFkUHJvdmlkZXI+IHNoYXJlZFByb3ZpZGVyOworICAgIHJldHVybiBzaGFy
ZWRQcm92aWRlcjsKK30KKworVUlHYW1lcGFkUHJvdmlkZXI6OlVJR2FtZXBhZFByb3ZpZGVyKCkK
K3sKK30KKworVUlHYW1lcGFkUHJvdmlkZXI6On5VSUdhbWVwYWRQcm92aWRlcigpCit7CisgICAg
aWYgKCFtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMuaXNFbXB0eSgpKQorICAgICAgICBwbGF0
Zm9ybVN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKTsKK30KKwordm9pZCBVSUdhbWVwYWRQcm92aWRl
cjo6cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYpCit7Cit9CisKK3Zv
aWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZChQbGF0Zm9y
bUdhbWVwYWQmKQoreworfQorCit2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVw
YWRJbnB1dEFjdGl2aXR5KCkKK3sKK30KKwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cHJvY2Vz
c1Bvb2xTdGFydGVkVXNpbmdHYW1lcGFkcyhXZWJQcm9jZXNzUG9vbCYgcG9vbCkKK3sKKyAgICBB
U1NFUlQoIW1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcy5jb250YWlucygmcG9vbCkpOworICAg
IG1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcy5hZGQoJnBvb2wpOworCisgICAgaWYgKG1fcHJv
Y2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcy5zaXplKCkgPT0gMSkKKyAgICAgICAgcGxhdGZvcm1TdGFy
dE1vbml0b3JpbmdHYW1lcGFkcygpOworfQorCit2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwcm9j
ZXNzUG9vbFN0b3BwZWRVc2luZ0dhbWVwYWRzKFdlYlByb2Nlc3NQb29sJiBwb29sKQoreworICAg
IEFTU0VSVChtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMuY29udGFpbnMoJnBvb2wpKTsKKyAg
ICBtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMucmVtb3ZlKCZwb29sKTsKKworICAgIGlmICht
X3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMuaXNFbXB0eSgpKQorICAgICAgICBwbGF0Zm9ybVN0
b3BNb25pdG9yaW5nR2FtZXBhZHMoKTsKK30KKworI2lmICFQTEFURk9STShNQUMpCit2b2lkIFVJ
R2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKCkKK3sKKyAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBvdGhlciBwbGF0Zm9ybXMKK30KKwordm9pZCBVSUdh
bWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmluZ0dhbWVwYWRzKCkKK3sKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGZvciBvdGhlciBwbGF0Zm9ybXMKK30KKyNlbmRpZiAvLyAhUExB
VEZPUk0oTUFDKQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYzNzJjMDJhNjI1ZjdmM2U2ODMxYmVjZDIyNThlZWFiZDczNGJjNGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92
aWRlci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSA8V2ViQ29yZS9HYW1lcGFkUHJvdmlkZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0dhbWVwYWRQcm92aWRlckNsaWVudC5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQcm9jZXNzUG9v
bDsKKworY2xhc3MgVUlHYW1lcGFkUHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29yZTo6R2FtZXBhZFBy
b3ZpZGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBVSUdhbWVwYWRQcm92aWRlcigpOworICAgIH5V
SUdhbWVwYWRQcm92aWRlcigpIGZpbmFsOworCisgICAgc3RhdGljIFVJR2FtZXBhZFByb3ZpZGVy
JiBzaW5nbGV0b24oKTsKKworICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKFdlYkNv
cmU6OlBsYXRmb3JtR2FtZXBhZCYpIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkRGlz
Y29ubmVjdGVkKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZCYpIGZpbmFsOworICAgIHZvaWQgcGxh
dGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSgpIGZpbmFsOworCisgICAgdm9pZCBwcm9jZXNzUG9v
bFN0YXJ0ZWRVc2luZ0dhbWVwYWRzKFdlYlByb2Nlc3NQb29sJik7CisgICAgdm9pZCBwcm9jZXNz
UG9vbFN0b3BwZWRVc2luZ0dhbWVwYWRzKFdlYlByb2Nlc3NQb29sJik7CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCBwbGF0Zm9ybVN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKCk7CisgICAgdm9pZCBwbGF0
Zm9ybVN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKTsKKworICAgIEhhc2hTZXQ8V2ViUHJvY2Vzc1Bv
b2wqPiBtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHM7Cit9OworCit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1l
cGFkL21hYy9VSUdhbWVwYWRQcm92aWRlckhJRC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4ZTQ3
YjZmNzM2ZTlkODI5ZDUzNzNhOTQ2Y2ZmZTFjNzlkNjJhMmYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQu
Y3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisj
aW5jbHVkZSA8V2ViQ29yZS9ISURHYW1lcGFkUHJvdmlkZXIuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFVJR2FtZXBhZFByb3ZpZGVy
OjpwbGF0Zm9ybVN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKCkKK3sKKyAgICBBU1NFUlQoIW1fcHJv
Y2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcy5pc0VtcHR5KCkpOworICAgIEhJREdhbWVwYWRQcm92aWRl
cjo6c2luZ2xldG9uKCkuc3RhcnRNb25pdG9yaW5nR2FtZXBhZHModGhpcyk7Cit9CisKK3ZvaWQg
VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RvcE1vbml0b3JpbmdHYW1lcGFkcygpCit7Cisg
ICAgQVNTRVJUKG1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcy5pc0VtcHR5KCkpOworICAgIEhJ
REdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RvcE1vbml0b3JpbmdHYW1lcGFkcyh0aGlz
KTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA1ZDcxYzBkNTVlMDRmN2RjZDAxODc5
NTVlZGMxMWY1Yzg4ZDNiOTMyLi5mMDY2OGZhOWYzZjllYzlkMWVmNTRmYjNmM2U0MDY0YmY5ZjFh
YmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAi
U3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgorI2luY2x1ZGUgIlVJ
R2FtZXBhZFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uLmgiCiAjaW5jbHVkZSAiV2ViQ2VydGlmaWNhdGVJbmZv
LmgiCkBAIC0yNTksNiArMjYwLDExIEBAIFdlYlByb2Nlc3NQb29sOjp+V2ViUHJvY2Vzc1Bvb2wo
KQogCiAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnNodXREb3duUHJvY2VzcygpOworCisjaWYgRU5BQkxFKEdBTUVQQUQpCisgICAgaWYgKCFtX3By
b2Nlc3Nlc1VzaW5nR2FtZXBhZHMuaXNFbXB0eSgpKQorICAgICAgICBVSUdhbWVwYWRQcm92aWRl
cjo6c2luZ2xldG9uKCkucHJvY2Vzc1Bvb2xTdG9wcGVkVXNpbmdHYW1lcGFkcygqdGhpcyk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZUNsaWVudChjb25zdCBX
S0NvbnRleHRDbGllbnRCYXNlKiBjbGllbnQpCkBAIC03NTIsNiArNzU4LDEwIEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykK
ICAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNzRGlkQ2xvc2UocHJvY2Vzcyk7CiAKICAg
ICBtX3Byb2Nlc3Nlcy5yZW1vdmVGaXJzdChwcm9jZXNzKTsKKworI2lmIEVOQUJMRShHQU1FUEFE
KQorICAgIHByb2Nlc3NTdG9wcGVkVXNpbmdHYW1lcGFkcyhwcm9jZXNzKTsKKyNlbmRpZgogfQog
CiBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzUmVz
cGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCkKQEAgLTEyMzEsNiArMTI0MSw0MSBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpkaWRHZXRTdGF0aXN0aWNzKGNvbnN0IFN0YXRpc3RpY3NEYXRhJiBzdGF0
aXN0aWNzRGF0YSwgdWludAogICAgIHJlcXVlc3QtPmNvbXBsZXRlZFJlcXVlc3QocmVxdWVzdElE
LCBzdGF0aXN0aWNzRGF0YSk7CiB9CiAKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKwordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c3RhcnRlZFVzaW5nR2FtZXBhZHMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uKQoreworICAgIGF1dG8qIHdlYlByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6ZnJv
bUNvbm5lY3Rpb24oJmNvbm5lY3Rpb24pOworICAgIGlmICghd2ViUHJvY2Vzc1Byb3h5KQorICAg
ICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoIW1fcHJvY2Vzc2VzVXNpbmdHYW1lcGFkcy5jb250
YWlucyh3ZWJQcm9jZXNzUHJveHkpKTsKKyAgICBtX3Byb2Nlc3Nlc1VzaW5nR2FtZXBhZHMuYWRk
KHdlYlByb2Nlc3NQcm94eSk7CisKKyAgICBpZiAobV9wcm9jZXNzZXNVc2luZ0dhbWVwYWRzLnNp
emUoKSA9PSAxKQorICAgICAgICBVSUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkucHJvY2Vz
c1Bvb2xTdGFydGVkVXNpbmdHYW1lcGFkcygqdGhpcyk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnN0b3BwZWRVc2luZ0dhbWVwYWRzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sK
KyAgICBhdXRvKiB3ZWJQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmZyb21Db25uZWN0
aW9uKCZjb25uZWN0aW9uKTsKKyAgICBpZiAoIXdlYlByb2Nlc3NQcm94eSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgQVNTRVJUKG1fcHJvY2Vzc2VzVXNpbmdHYW1lcGFkcy5jb250YWlucyh3ZWJQ
cm9jZXNzUHJveHkpKTsKKyAgICBwcm9jZXNzU3RvcHBlZFVzaW5nR2FtZXBhZHMod2ViUHJvY2Vz
c1Byb3h5KTsKK30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc1N0b3BwZWRVc2luZ0dh
bWVwYWRzKFdlYlByb2Nlc3NQcm94eSogd2ViUHJvY2Vzc1Byb3h5KQoreworICAgIG1fcHJvY2Vz
c2VzVXNpbmdHYW1lcGFkcy5yZW1vdmUod2ViUHJvY2Vzc1Byb3h5KTsKKworICAgIGlmIChtX3By
b2Nlc3Nlc1VzaW5nR2FtZXBhZHMuaXNFbXB0eSgpKQorICAgICAgICBVSUdhbWVwYWRQcm92aWRl
cjo6c2luZ2xldG9uKCkucHJvY2Vzc1Bvb2xTdG9wcGVkVXNpbmdHYW1lcGFkcygqdGhpcyk7Cit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKKwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2Fy
YmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0cygpCiB7CiAgICAgc2VuZFRvQWxsUHJvY2Vzc2Vz
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3RzKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBkNTdiMDll
NTA3NzhmYjgzMmI4NzA3ODk2MzhkZGRhYzNjMDY2YWMwLi4zMTkwNzI1YTQyMmZmZjIxMTcyNTU2
YTAwNWY3OTc0ZDc0NDEyYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaApAQCAtMzg3LDYgKzM4NywxNSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRHZXRT
dGF0aXN0aWNzKGNvbnN0IFN0YXRpc3RpY3NEYXRhJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAK
KyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICB2b2lkIHN0YXJ0ZWRVc2luZ0dhbWVwYWRzKElQQzo6
Q29ubmVjdGlvbiYpOworICAgIHZvaWQgc3RvcHBlZFVzaW5nR2FtZXBhZHMoSVBDOjpDb25uZWN0
aW9uJik7CisKKyAgICB2b2lkIHByb2Nlc3NTdG9wcGVkVXNpbmdHYW1lcGFkcyhXZWJQcm9jZXNz
UHJveHkqKTsKKworICAgIEhhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5Kj4gbV9wcm9jZXNzZXNVc2lu
Z0dhbWVwYWRzOworI2VuZGlmCisKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICAv
LyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1l
c3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KaW5kZXggNzZiNzVjZmY2ZTU0NGY3NzI3NTEz
NGU4NWI1N2RhY2VjOTY1ODc4Mi4uOGViYThlNTMwYzVkNGQxNWY5NGRhY2RhZGJiMTQxNjY2MWZl
OTczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5tZXNzYWdlcy5pbgpAQCAtMjYsNiArMjYsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Bv
b2wgewogCiAgICAgRGlkR2V0U3RhdGlzdGljcyhzdHJ1Y3QgV2ViS2l0OjpTdGF0aXN0aWNzRGF0
YSBzdGF0aXN0aWNzRGF0YSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAorI2lmIEVOQUJMRShHQU1F
UEFEKQorICAgIFN0YXJ0ZWRVc2luZ0dhbWVwYWRzKCkgV2FudHNDb25uZWN0aW9uCisgICAgU3Rv
cHBlZFVzaW5nR2FtZXBhZHMoKSBXYW50c0Nvbm5lY3Rpb24KKyNlbmRpZgorCiAgICAgIyBQbHVn
LWluIG1lc3NhZ2VzLgogICAgIHZvaWQgQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChTdHJp
bmcgcGFnZU9yaWdpbiwgdWludDMyX3QgaGFzaCwgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKICAgICB2b2lkIFBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odWludDMyX3QgaGFz
aCwgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NTNlMDI5ZGVhOTU3ZTcwODA2
NjA2OTZiZjAxMDM1NmUyMzkzZjkxLi4zNDFmNDFlZjI4MDZjNzRjNWRkYWZlZTU1MjVmN2RkZmM5
NjQwZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC05MzYsNiArOTM2LDExIEBACiAJCTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNB
NyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNEQ5RjU1MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRy
b2xsZXIuaCAqLzsgfTsKIAkJNTE0RDlGNTgxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29u
dHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNEQ5RjU2MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIubW0gKi87IH07
CiAJCTUxNTc4QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTU3OEI4MjEyMDlFQ0VGMDBBMzdDNEEg
LyogQVBJRGF0YS5oICovOyB9OworCQk1MTVCRTE3NzFENTNGRTg3MDBERDdDNjggLyogV2ViR2Ft
ZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNUJFMTczMUQ1M0ZEREMwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuY3Bw
ICovOyB9OworCQk1MTVCRTE3OTFENTNGRThGMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTE3
NDFENTNGRERDMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmggKi87IH07CisJCTUxNUJF
MUE3MUQ1NTI5MzQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlckhJRC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTFBNjFENTUyOTMwMDBE
RDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwICovOyB9OworCQk1MTVCRTFBODFENTUy
OTM0MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxQTQxRDU1MjkyODAwREQ3QzY4IC8qIFVJ
R2FtZXBhZFByb3ZpZGVyLmNwcCAqLzsgfTsKKwkJNTE1QkUxQTkxRDU1MjkzNDAwREQ3QzY4IC8q
IFVJR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTVCRTFBNTFENTUyOTI4MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXIu
aCAqLzsgfTsKIAkJNTE1RTc3MjcxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFNzcyNTE4
M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJNTE1RTc3MjgxODNE
RDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1RTc3MjYxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVx
dWVzdC5oICovOyB9OwogCQk1MTVFNzcyQjE4NDAwOEI5MDAwNzIwM0YgLyogRGF0YWJhc2VQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNUU3NzI5MTg0MDA4QjkwMDA3MjAzRiAvKiBEYXRhYmFzZVByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovOyB9OwpAQCAtMjk3NSw2ICsyOTgwLDEzIEBACiAJ
CTUxNEQ5RjU1MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZXNDb250cm9sbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEQ5RjU2MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNl
c0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBT
ZXJ2aWNlc0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNTc4
QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFQSURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1QkUx
NzMxRDUzRkREQzAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHYW1lcGFkUHJvdmlkZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MTVCRTE3NDFENTNGRERDMDBERDdDNjggLyogV2ViR2Ft
ZXBhZFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdhbWVw
YWRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTVCRTE5RjFENTUw
QUIwMDBERDdDNjggLyogV2ViR2FtZXBhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJHYW1lcGFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTE1QkUxQTAxRDU1MEFCMDAwREQ3QzY4IC8qIFdlYkdhbWVwYWQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViR2FtZXBhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTVCRTFBNDFENTUyOTI4MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVUlHYW1lcGFkUHJvdmlkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTVCRTFBNTFENTUyOTI4MDBERDdDNjgg
LyogVUlHYW1lcGFkUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VUlHYW1lcGFkUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1QkUx
QTYxRDU1MjkzMDAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVySElELmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVJR2FtZXBhZFByb3ZpZGVySElELmNwcDsgcGF0
aCA9IFVJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlckhJRC5jcHA7IHNvdXJj
ZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNTE1RTc3MjUxODNERDZGNjAwMDcyMDNGIC8qIEFz
eW5jUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3lu
Y1JlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVFNzcyNjE4M0RE
NkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFzeW5jUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVF
NzcyOTE4NDAwOEI5MDAwNzIwM0YgLyogRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01
NDY5LDYgKzU0ODEsMzYgQEAKIAkJCXBhdGggPSBBdXRoZW50aWNhdGlvbjsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTUxNUJFMTcyMUQ1M0ZEQjkwMEREN0M2OCAvKiBHYW1l
cGFkICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk1MTVC
RTE5RjFENTUwQUIwMDBERDdDNjggLyogV2ViR2FtZXBhZC5jcHAgKi8sCisJCQkJNTE1QkUxQTAx
RDU1MEFCMDAwREQ3QzY4IC8qIFdlYkdhbWVwYWQuaCAqLywKKwkJCQk1MTVCRTE3MzFENTNGRERD
MDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCAqLywKKwkJCQk1MTVCRTE3NDFENTNG
RERDMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmggKi8sCisJCQkpOworCQkJcGF0aCA9
IEdhbWVwYWQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk1MTVCRTE3QjFE
NTRFRjVBMDBERDdDNjggLyogR2FtZXBhZCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJNTE1QkUxQTExRDU1MjNCMzAwREQ3QzY4IC8qIG1hYyAqLywKKwkJ
CQk1MTVCRTFBNDFENTUyOTI4MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXIuY3BwICovLAor
CQkJCTUxNUJFMUE1MUQ1NTI5MjgwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5oICovLAor
CQkJKTsKKwkJCXBhdGggPSBHYW1lcGFkOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKKwkJNTE1QkUxQTExRDU1MjNCMzAwREQ3QzY4IC8qIG1hYyAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTE1QkUxQTYxRDU1MjkzMDAwREQ3QzY4IC8q
IFVJR2FtZXBhZFByb3ZpZGVySElELmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0gbWFjOworCQkJ
cGF0aCA9IFVJUHJvY2Vzcy9HYW1lcGFkL21hYzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CiAJCTUxNjMxOTkzMTYyODk4MEUwMEUyMkYwMCAvKiBtYWMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNTgxMyw2ICs1ODU1LDcgQEAKIAkJCQlC
Q0FDQzQzQjE2QjI0QzVEMDBCNkUwOTIgLyogRW50cnlQb2ludCAqLywKIAkJCQlFMTcwODc2RDE2
RDZDQTcyMDBGOTkyMjYgLyogRmlsZUFQSSAqLywKIAkJCQlDRDczQkEzRDEzMUEyQTIxMDBFRURF
RDIgLyogRnVsbFNjcmVlbiAqLywKKwkJCQk1MTVCRTE3MjFENTNGREI5MDBERDdDNjggLyogR2Ft
ZXBhZCAqLywKIAkJCQlCQzBFNUZDQjEyRDY5NkREMDAxMkE3MkEgLyogR2VvbG9jYXRpb24gKi8s
CiAJCQkJNTFGQkI5QzExMzJFMDc5MjAwRjMyN0I0IC8qIEljb25EYXRhYmFzZSAqLywKIAkJCQlC
QzIwNEVERjExQzgzRTcyMDA4RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGUgKi8sCkBAIC01OTUwLDYg
KzU5OTMsNyBAQAogCQkJCTk5NTVBNkU4MUM3OTgwOTAwMEVCNkE5MyAvKiBBdXRvbWF0aW9uICov
LAogCQkJCTFBQkMzREYyMTg5OUU0MTUwMDRGMDYyNiAvKiBDb2NvYSAqLywKIAkJCQkxQUI3RDRD
NzEyODhBQTlBMDBDRkQwOEMgLyogRG93bmxvYWRzICovLAorCQkJCTUxNUJFMTdCMUQ1NEVGNUEw
MEREN0M2OCAvKiBHYW1lcGFkICovLAogCQkJCTJEQTk0NEE4MTg4NEU5QUIwMEVEODZEQiAvKiBp
b3MgKi8sCiAJCQkJQkMxMTFCMTgxMTJGNUZCNDAwMzM3QkFCIC8qIExhdW5jaGVyICovLAogCQkJ
CUJDQ0YwODVDMTEzRjNCNzUwMEM2NTBDNSAvKiBtYWMgKi8sCkBAIC03NTE4LDYgKzc1NjIsNyBA
QAogCQkJCTJEQTk0NEE0MTg4NEU0RjAwMEVEODZEQiAvKiBHZXN0dXJlVHlwZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJEQTA0OUI4MTgwQ0NEMEEwMEFBRkE5RSAvKiBHcmFwaGljc0xheWVyQ0FS
ZW1vdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwQ0U3MkFEMTI0N0U3OEQwMEJDMEVDNCAvKiBI
YW5kbGVNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTVCRTFBOTFENTUyOTM0MDBERDdD
NjggLyogVUlHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzc1QTFCMUIz
MzY4MjcwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTM3RjkwREUzMTM3NjU2MEUwMDUxQ0Y2OCAvKiBIVFRQQ29va2llQWNjZXB0UG9saWN5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MUUzNTFDQjE4MEYyQ0NDMDBFNTNCRTkgLyogSURCVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTgwMjUsNiArODA3MCw3IEBACiAJCQkJMUFCN0Q3OEQx
Mjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjQ1
OTJGMTk0NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0ZE
NTQ4QzEzMkQ4MjY4MDA1NUQ4MTYgLyogV0tFcnJvckNGLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MTVCRTE3OTFENTNGRThGMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzN0I1MDQ1MjE5RUVGMzEzMDBDRTJDRjggLyogV0tFcnJvclByaXZhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNDA3NUZDMTI0RkYwMjcwMDY4RjIwQSAvKiBXS0Vycm9yUmVm
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzgzRDEyNTBGQUREMDA2OEYyMEEgLyogV0tFdmVu
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC05MTc2LDYgKzkyMjIsNyBAQAogCQkJCUUxNzkwODhEMTY5
QkFBNjIwMDY5MDRDNyAvKiBTZWNJdGVtU2hpbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTc5
MDg5MDE2OUJBQTdGMDA2OTA0QzcgLyogU2VjSXRlbVNoaW1NZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTE4RTY5MEIxNjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGlt
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE1QkUxQTcxRDU1MjkzNDAwREQ3QzY4IC8q
IFVJR2FtZXBhZFByb3ZpZGVySElELmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOEU2OTE3MTY5
QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxNEQ5RjU4MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRy
b2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUZERTY1OTE5NTRBNDJCMDBDNDhGRkEgLyog
U2Vzc2lvblN0YXRlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTE5Niw2ICs5MjQzLDcgQEAKIAkJ
CQkxQTQ0Qjk1QjE2QjczRjlGMDBCN0JCRDggLyogU3RvcmFnZU1hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFCMzFBOTYxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNDRCOTU3MTZCNzM3QUEwMEI3
QkJEOCAvKiBTdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTVC
RTE3NzFENTNGRTg3MDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBRTAwRDZCMTgzMjdDMTIwMDA4N0RENyAvKiBTdHJpbmdSZWZlcmVuY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMjk2QkQ4NUUxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0
aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFaWjQxN0VGMTJDMDBEODcwMDJCRTY3QiAv
KiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MjQ0LDYgKzky
OTIsNyBAQAogCQkJCTdDNEFCRUQwMUFBOEU5RjAwMDg4QUEzNyAvKiBXZWJDb21waWxlZENvbnRl
bnRFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M0QUJFRDQxQUE4RkNCODAwODhB
QTM3IC8qIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM0QTYyOEYxNDczMTJCRTAwNkM2ODFBIC8qIFdlYkNvbm5lY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNTE1QkUxQTgxRDU1MjkzNDAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3Zp
ZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNEE2MjkxMTQ3MzEyQkUwMDZDNjgxQSAvKiBX
ZWJDb25uZWN0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMUZFQzFDMTYyN0I0
NTcwMDcwMEY2RCAvKiBXZWJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDRDM2NzVDMTQ4QzI2QzAwMDQ0N0U4NyAvKiBXZWJDb25uZWN0aW9uVG9VSVBy
b2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0dhbWVwYWQvV2ViR2FtZXBhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWQyNzBjNTQzNTZhZDlkMTQxYWNi
NjZmYzE0NWM0Y2MwNDM1MmFiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkLmNwcApAQCAtMCwwICsxLDM1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdhbWVwYWQuaCIKKworI2lm
IEVOQUJMRShHQU1FUEFEKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworfQorCisjZW5kaWYgLy8g
RU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dh
bWVwYWQvV2ViR2FtZXBhZC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dl
YkdhbWVwYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDk5MDg2MjExYjRlMjZkODc2NmM4MmI1MDg4NWU5Yzdi
YmYyNWI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1l
cGFkL1dlYkdhbWVwYWQuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjVh
YzdiZDE3NmJhZDg4NjdlZGM0ODk5Yzc3YmFjODg0OWNhNDFmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAK
QEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJHYW1lcGFkUHJvdmlkZXIuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIK
KyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJHYW1lcGFkUHJvdmlkZXImIFdlYkdhbWVw
YWRQcm92aWRlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2Vi
R2FtZXBhZFByb3ZpZGVyPiBwcm92aWRlcjsKKyAgICByZXR1cm4gcHJvdmlkZXI7Cit9CisKK1dl
YkdhbWVwYWRQcm92aWRlcjo6V2ViR2FtZXBhZFByb3ZpZGVyKCkKK3sKK30KKworV2ViR2FtZXBh
ZFByb3ZpZGVyOjp+V2ViR2FtZXBhZFByb3ZpZGVyKCkKK3sKK30KKwordm9pZCBXZWJHYW1lcGFk
UHJvdmlkZXI6OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCog
Y2xpZW50KQoreworICAgIEFTU0VSVCghbV9jbGllbnRzLmNvbnRhaW5zKGNsaWVudCkpOworICAg
IG1fY2xpZW50cy5hZGQoY2xpZW50KTsKKworICAgIGlmIChtX2NsaWVudHMuc2l6ZSgpID09IDEp
CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nl
c3NQb29sOjpTdGFydGVkVXNpbmdHYW1lcGFkcygpLCAwKTsKK30KKwordm9pZCBXZWJHYW1lcGFk
UHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50KiBj
bGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucyhjbGllbnQpKTsKKyAgICBt
X2NsaWVudHMucmVtb3ZlKGNsaWVudCk7CisKKyAgICBpZiAobV9jbGllbnRzLmlzRW1wdHkoKSkK
KyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
c1Bvb2w6OlN0b3BwZWRVc2luZ0dhbWVwYWRzKCksIDApOworfQorCitjb25zdCBWZWN0b3I8UGxh
dGZvcm1HYW1lcGFkKj4mIFdlYkdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkcygpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPj4gZ2Ft
ZXBhZHM7CisgICAgcmV0dXJuIGdhbWVwYWRzOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
R0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9X
ZWJHYW1lcGFkUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9X
ZWJHYW1lcGFkUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODg2MThjYmRlYWY3ZWU5YWE4OGYzYmFm
OWZkMGFiNmEwOWE5NGE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSA8
V2ViQ29yZS9HYW1lcGFkUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViR2FtZXBhZFByb3ZpZGVyIDogcHVibGljIFdl
YkNvcmU6OkdhbWVwYWRQcm92aWRlciB7CitwdWJsaWM6CisgICAgV2ViR2FtZXBhZFByb3ZpZGVy
KCk7CisgICAgfldlYkdhbWVwYWRQcm92aWRlcigpIGZpbmFsOworCisgICAgc3RhdGljIFdlYkdh
bWVwYWRQcm92aWRlciYgc2luZ2xldG9uKCk7CisKKyAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ0dh
bWVwYWRzKFdlYkNvcmU6OkdhbWVwYWRQcm92aWRlckNsaWVudCopIGZpbmFsOworICAgIHZvaWQg
c3RvcE1vbml0b3JpbmdHYW1lcGFkcyhXZWJDb3JlOjpHYW1lcGFkUHJvdmlkZXJDbGllbnQqKSBm
aW5hbDsKKyAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkKj4mIHBsYXRm
b3JtR2FtZXBhZHMoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBIYXNoU2V0PFdlYkNvcmU6Okdh
bWVwYWRQcm92aWRlckNsaWVudCo+IG1fY2xpZW50czsKK307CisKK30KKworI2VuZGlmIC8vIEVO
QUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggMTQ3NTI4N2QyN2QwZmY2NTJiZTk1MWM0ZGFmYzU2NTRiY2UzZDQ0Ni4uYmEyY2I5YzNjMWVj
MzFmZjQ1YTAxNWIyYzUzMTU4YWUyNzVmNTVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR2FtZXBhZFByb3ZpZGVyLmgiCiAjaW5j
bHVkZSAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNl
UHJveHkuaCIKICNpbmNsdWRlICJXZWJMb2FkZXJTdHJhdGVneS5oIgpAQCAtNDAwLDYgKzQwMSwx
MCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICAgICB9CiAgICAgfQogI2VuZGlmCisK
KyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNl
dFNoYXJlZFByb3ZpZGVyKFdlYkdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkpOworI2VuZGlm
CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285482</attachid>
            <date>2016-08-05 22:22:02 -0700</date>
            <delta_ts>2016-08-08 09:54:44 -0700</delta_ts>
            <desc>New PFL</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>35300</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMmFiMGNkZi4uYTY4NDI1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTM0LDYgKzM0LDcgQEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQXV0b21hdGlvbiIKICAgICAiJHtXRUJLSVQy
X0RJUn0vVUlQcm9jZXNzL0RhdGFiYXNlcyIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNz
L0Rvd25sb2FkcyIKKyAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0dhbWVwYWQiCiAgICAg
IiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9MYXVuY2hlciIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNz
L05ldHdvcmsiCkBAIC01Myw2ICs1NCw3IEBAIHNldChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJ
RVMKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCIgog
ICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0ZpbGVBUEkiCiAgICAgIiR7V0VCS0lUMl9E
SVJ9L1dlYlByb2Nlc3MvRnVsbFNjcmVlbiIKKyAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vz
cy9HYW1lcGFkIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uIgog
ICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZSIKICAgICAiJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZSIKQEAgLTQ3OCw2ICs0ODAsOCBAQCBz
ZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmNwcAogICAgIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKIAorICAg
IFVJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcAorCiAgICAgVUlQcm9jZXNz
L0luc3BlY3RvclNlcnZlci9IVFRQUmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvSW5zcGVjdG9y
U2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5jcHAKICAgICBVSVByb2Nlc3MvSW5zcGVjdG9yU2Vy
dmVyL1dlYlNvY2tldFNlcnZlci5jcHAKQEAgLTUyNSw2ICs1MjksOSBAQCBzZXQoV2ViS2l0Ml9T
T1VSQ0VTCiAKICAgICBXZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIu
Y3BwCiAKKyAgICBXZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZC5jcHAKKyAgICBXZWJQcm9j
ZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcAorCiAgICAgV2ViUHJvY2Vzcy9HZW9s
b2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKICAgICBXZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDc0NDk4Y2JmLi4wY2JlODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMTYt
MDgtMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIExheSBX
ZWJQcm9jZXNzL1VJUHJvY2VzcyBncm91bmR3b3JrIGZvciBhbiBJUEMgR2FtZXBhZFByb3ZpZGVy
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNjA1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBUaGlz
IHBhdGNoOgorICAgICAgICAgIC0gSW50cm9kdWNlcyB0aGUgR2FtZXBhZFByb3ZpZGVyIHRoYXQg
dGhlIFdlYlByb2Nlc3Mgd2lsbCB1c2UgKFdlYkdhbWVwYWRQcm92aWRlcikKKyAgICAgICAgICAt
IEhhcyB0aGF0IHByb3ZpZGVyIG1lc3NhZ2UgdG8gdGhlIFVJUHJvY2VzcyBub3RpZnlpbmcgaW50
ZXJlc3QgaW4gZ2FtZXBhZCBzdGF0ZQorICAgICAgICAgIC0gSW50cm9kdWNlcyBhIEdhbWVwYWRQ
cm92aWRlckNsaWVudCBpbiB0aGUgVUlQcm9jZXNzIChVSUdhbWVwYWRQcm92aWRlcikgdGhhdCB3
aWxsIHVzZQorICAgICAgICAgICAgb25lIG9mIHRoZSBleGlzdGluZyBHYW1lcGFkUHJvdmlkZXJz
IHRvIHBhc3MgZ2FtZXBhZCBzdGF0ZSBhbG9uZyB0byBXZWJQcm9jZXNzZXMuCisgICAgICAgICAg
LSBBZGRzIGFuIGVtcHR5IHNrZWxldG9uIGZvciB0aGUgc29vbi10by1iZS11c2VkIFdlYkdhbWVw
YWQsIHdoaWNoIHdpbGwgYmUgdGhlIAorICAgICAgICAgICAgIlBsYXRmb3JtR2FtZXBhZCIgZm9y
IFdlYlByb2Nlc3Nlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIFVJUHJvY2Vzcy9H
YW1lcGFkcy9VSUdhbWVwYWRQcm92aWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpV
SUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFk
UHJvdmlkZXI6OlVJR2FtZXBhZFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFk
UHJvdmlkZXI6On5VSUdhbWVwYWRQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBh
ZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpV
SUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKToKKyAgICAgICAg
KFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkp
OgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cHJvY2Vzc1Bvb2xTdGFydGVk
VXNpbmdHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwcm9j
ZXNzUG9vbFN0b3BwZWRVc2luZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFk
UHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAgICAoV2Vi
S2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmluZ0dhbWVwYWRzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZHMvVUlHYW1lcGFkUHJvdmlkZXIuaDogQWRkZWQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZHMvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElE
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9y
bVN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJv
dmlkZXI6OnBsYXRmb3JtU3RvcE1vbml0b3JpbmdHYW1lcGFkcyk6CisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6fldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRp
c2Nvbm5lY3RQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXJ0
ZWRVc2luZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0b3Bw
ZWRVc2luZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nl
c3NTdG9wcGVkVXNpbmdHYW1lcGFkcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmluOgor
ICAgICAgICAgICAgICAgIAorICAgICAgICAqIFdlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFk
LmNwcDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWQuaDog
QWRkZWQuCisgICAgICAgIAorICAgICAgICAqIFdlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFk
UHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVy
OjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1lcGFkUHJvdmlkZXI6OldlYkdh
bWVwYWRQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6fldl
YkdhbWVwYWRQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6
c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1lcGFkUHJv
dmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1l
cGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2Ft
ZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdl
YlByb2Nlc3MpOgorCiAyMDE2LTA3LTI5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWZhY3RvciBkYXRhIHBhc3NlZCBhbG9uZyBmb3IgYSAiR2V0UmVjb3Jk
IiByZXF1ZXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQv
VUlHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQv
VUlHYW1lcGFkUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjYzYzExM2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2Ft
ZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVSUdhbWVwYWRQcm92aWRlci5oIgorCisj
aWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0hJREdhbWVwYWRQcm92aWRl
ci5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1VJR2FtZXBhZFByb3ZpZGVyJiBVSUdh
bWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
VUlHYW1lcGFkUHJvdmlkZXI+IHNoYXJlZFByb3ZpZGVyOworICAgIHJldHVybiBzaGFyZWRQcm92
aWRlcjsKK30KKworVUlHYW1lcGFkUHJvdmlkZXI6OlVJR2FtZXBhZFByb3ZpZGVyKCkKK3sKK30K
KworVUlHYW1lcGFkUHJvdmlkZXI6On5VSUdhbWVwYWRQcm92aWRlcigpCit7CisgICAgaWYgKCFt
X3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMuaXNFbXB0eSgpKQorICAgICAgICBwbGF0Zm9ybVN0
b3BNb25pdG9yaW5nR2FtZXBhZHMoKTsKK30KKwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxh
dGZvcm1HYW1lcGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYpCit7Cit9CisKK3ZvaWQgVUlH
YW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZERpc2Nvbm5lY3RlZChQbGF0Zm9ybUdhbWVw
YWQmKQoreworfQorCit2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRJbnB1
dEFjdGl2aXR5KCkKK3sKK30KKwordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cHJvY2Vzc1Bvb2xT
dGFydGVkVXNpbmdHYW1lcGFkcyhXZWJQcm9jZXNzUG9vbCYgcG9vbCkKK3sKKyAgICBBU1NFUlQo
IW1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcy5jb250YWlucygmcG9vbCkpOworICAgIG1fcHJv
Y2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcy5hZGQoJnBvb2wpOworCisgICAgaWYgKG1fcHJvY2Vzc1Bv
b2xzVXNpbmdHYW1lcGFkcy5zaXplKCkgPT0gMSkKKyAgICAgICAgcGxhdGZvcm1TdGFydE1vbml0
b3JpbmdHYW1lcGFkcygpOworfQorCit2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwcm9jZXNzUG9v
bFN0b3BwZWRVc2luZ0dhbWVwYWRzKFdlYlByb2Nlc3NQb29sJiBwb29sKQoreworICAgIEFTU0VS
VChtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMuY29udGFpbnMoJnBvb2wpKTsKKyAgICBtX3By
b2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMucmVtb3ZlKCZwb29sKTsKKworICAgIGlmIChtX3Byb2Nl
c3NQb29sc1VzaW5nR2FtZXBhZHMuaXNFbXB0eSgpKQorICAgICAgICBwbGF0Zm9ybVN0b3BNb25p
dG9yaW5nR2FtZXBhZHMoKTsKK30KKworI2lmICFQTEFURk9STShNQUMpCit2b2lkIFVJR2FtZXBh
ZFByb3ZpZGVyOjpwbGF0Zm9ybVN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKCkKK3sKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50IGZvciBvdGhlciBwbGF0Zm9ybXMKK30KKwordm9pZCBVSUdhbWVwYWRQ
cm92aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmluZ0dhbWVwYWRzKCkKK3sKKyAgICAvLyBGSVhN
RTogSW1wbGVtZW50IGZvciBvdGhlciBwbGF0Zm9ybXMKK30KKyNlbmRpZiAvLyAhUExBVEZPUk0o
TUFDKQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNzJjMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5oCkBAIC0wLDAg
KzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHQU1FUEFE
KQorCisjaW5jbHVkZSA8V2ViQ29yZS9HYW1lcGFkUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0dhbWVwYWRQcm92aWRlckNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQcm9jZXNzUG9vbDsKKworY2xhc3MgVUlH
YW1lcGFkUHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29yZTo6R2FtZXBhZFByb3ZpZGVyQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICBVSUdhbWVwYWRQcm92aWRlcigpOworICAgIH5VSUdhbWVwYWRQcm92aWRl
cigpIGZpbmFsOworCisgICAgc3RhdGljIFVJR2FtZXBhZFByb3ZpZGVyJiBzaW5nbGV0b24oKTsK
KworICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKFdlYkNvcmU6OlBsYXRmb3JtR2Ft
ZXBhZCYpIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKFdlYkNv
cmU6OlBsYXRmb3JtR2FtZXBhZCYpIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkSW5w
dXRBY3Rpdml0eSgpIGZpbmFsOworCisgICAgdm9pZCBwcm9jZXNzUG9vbFN0YXJ0ZWRVc2luZ0dh
bWVwYWRzKFdlYlByb2Nlc3NQb29sJik7CisgICAgdm9pZCBwcm9jZXNzUG9vbFN0b3BwZWRVc2lu
Z0dhbWVwYWRzKFdlYlByb2Nlc3NQb29sJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9y
bVN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKCk7CisgICAgdm9pZCBwbGF0Zm9ybVN0b3BNb25pdG9y
aW5nR2FtZXBhZHMoKTsKKworICAgIEhhc2hTZXQ8V2ViUHJvY2Vzc1Bvb2wqPiBtX3Byb2Nlc3NQ
b29sc1VzaW5nR2FtZXBhZHM7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVw
YWRQcm92aWRlckhJRC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9tYWMv
VUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmY4ZTQ3YjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
R2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVUlHYW1lcGFkUHJvdmlk
ZXIuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSA8V2ViQ29yZS9ISURHYW1l
cGFkUHJvdmlkZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0YXJ0TW9uaXRvcmlu
Z0dhbWVwYWRzKCkKK3sKKyAgICBBU1NFUlQoIW1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcy5p
c0VtcHR5KCkpOworICAgIEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RhcnRNb25p
dG9yaW5nR2FtZXBhZHModGhpcyk7Cit9CisKK3ZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRm
b3JtU3RvcE1vbml0b3JpbmdHYW1lcGFkcygpCit7CisgICAgQVNTRVJUKG1fcHJvY2Vzc1Bvb2xz
VXNpbmdHYW1lcGFkcy5pc0VtcHR5KCkpOworICAgIEhJREdhbWVwYWRQcm92aWRlcjo6c2luZ2xl
dG9uKCkuc3RvcE1vbml0b3JpbmdHYW1lcGFkcyh0aGlzKTsKK30KKworfQorCisjZW5kaWYgLy8g
RU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAppbmRleCA1ZDcxYzBkLi45MjJiNmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJTYW5kYm94
RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJUZXh0
Q2hlY2tlci5oIgorI2luY2x1ZGUgIlVJR2FtZXBhZFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV0tD
b250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uLmgiCiAjaW5j
bHVkZSAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCkBAIC0yNTksNiArMjYwLDExIEBAIFdlYlByb2Nl
c3NQb29sOjp+V2ViUHJvY2Vzc1Bvb2woKQogCiAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCiAg
ICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNodXREb3duUHJvY2VzcygpOworCisjaWYgRU5BQkxF
KEdBTUVQQUQpCisgICAgaWYgKCFtX3Byb2Nlc3Nlc1VzaW5nR2FtZXBhZHMuaXNFbXB0eSgpKQor
ICAgICAgICBVSUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkucHJvY2Vzc1Bvb2xTdG9wcGVk
VXNpbmdHYW1lcGFkcygqdGhpcyk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6
aW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKiBjbGllbnQpCkBAIC03
NTIsNiArNzU4LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdl
YlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxl
bWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNz
RGlkQ2xvc2UocHJvY2Vzcyk7CiAKICAgICBtX3Byb2Nlc3Nlcy5yZW1vdmVGaXJzdChwcm9jZXNz
KTsKKworI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIGlmIChtX3Byb2Nlc3Nlc1VzaW5nR2FtZXBh
ZHMuY29udGFpbnMocHJvY2VzcykpCisgICAgICAgIHByb2Nlc3NTdG9wcGVkVXNpbmdHYW1lcGFk
cyhwcm9jZXNzKTsKKyNlbmRpZgogfQogCiBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29s
OjpjcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCkKQEAgLTEy
MzEsNiArMTI0Miw0MiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRHZXRTdGF0aXN0aWNzKGNv
bnN0IFN0YXRpc3RpY3NEYXRhJiBzdGF0aXN0aWNzRGF0YSwgdWludAogICAgIHJlcXVlc3QtPmNv
bXBsZXRlZFJlcXVlc3QocmVxdWVzdElELCBzdGF0aXN0aWNzRGF0YSk7CiB9CiAKKyNpZiBFTkFC
TEUoR0FNRVBBRCkKKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RhcnRlZFVzaW5nR2FtZXBhZHMo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIGF1dG8qIHdlYlByb2Nlc3NQcm94
eSA9IFdlYlByb2Nlc3NQcm94eTo6ZnJvbUNvbm5lY3Rpb24oJmNvbm5lY3Rpb24pOworICAgIGlm
ICghd2ViUHJvY2Vzc1Byb3h5KQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoIW1fcHJv
Y2Vzc2VzVXNpbmdHYW1lcGFkcy5jb250YWlucyh3ZWJQcm9jZXNzUHJveHkpKTsKKyAgICBtX3By
b2Nlc3Nlc1VzaW5nR2FtZXBhZHMuYWRkKHdlYlByb2Nlc3NQcm94eSk7CisKKyAgICBpZiAobV9w
cm9jZXNzZXNVc2luZ0dhbWVwYWRzLnNpemUoKSA9PSAxKQorICAgICAgICBVSUdhbWVwYWRQcm92
aWRlcjo6c2luZ2xldG9uKCkucHJvY2Vzc1Bvb2xTdGFydGVkVXNpbmdHYW1lcGFkcygqdGhpcyk7
Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnN0b3BwZWRVc2luZ0dhbWVwYWRzKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBhdXRvKiB3ZWJQcm9jZXNzUHJveHkgPSBXZWJQ
cm9jZXNzUHJveHk6OmZyb21Db25uZWN0aW9uKCZjb25uZWN0aW9uKTsKKyAgICBpZiAoIXdlYlBy
b2Nlc3NQcm94eSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1fcHJvY2Vzc2VzVXNp
bmdHYW1lcGFkcy5jb250YWlucyh3ZWJQcm9jZXNzUHJveHkpKTsKKyAgICBwcm9jZXNzU3RvcHBl
ZFVzaW5nR2FtZXBhZHMod2ViUHJvY2Vzc1Byb3h5KTsKK30KKwordm9pZCBXZWJQcm9jZXNzUG9v
bDo6cHJvY2Vzc1N0b3BwZWRVc2luZ0dhbWVwYWRzKFdlYlByb2Nlc3NQcm94eSogd2ViUHJvY2Vz
c1Byb3h5KQoreworICAgIEFTU0VSVChtX3Byb2Nlc3Nlc1VzaW5nR2FtZXBhZHMuY29udGFpbnMo
d2ViUHJvY2Vzc1Byb3h5KSk7CisgICAgbV9wcm9jZXNzZXNVc2luZ0dhbWVwYWRzLnJlbW92ZSh3
ZWJQcm9jZXNzUHJveHkpOworCisgICAgaWYgKG1fcHJvY2Vzc2VzVXNpbmdHYW1lcGFkcy5pc0Vt
cHR5KCkpCisgICAgICAgIFVJR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5wcm9jZXNzUG9v
bFN0b3BwZWRVc2luZ0dhbWVwYWRzKCp0aGlzKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShHQU1F
UEFEKQorCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpnYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmpl
Y3RzKCkKIHsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6Okdh
cmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGQ1N2IwOWUuLjMxOTA3MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zODcsNiArMzg3LDE1IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGRpZEdldFN0YXRpc3RpY3MoY29uc3QgU3RhdGlzdGljc0RhdGEmLCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKIAorI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIHZvaWQgc3Rh
cnRlZFVzaW5nR2FtZXBhZHMoSVBDOjpDb25uZWN0aW9uJik7CisgICAgdm9pZCBzdG9wcGVkVXNp
bmdHYW1lcGFkcyhJUEM6OkNvbm5lY3Rpb24mKTsKKworICAgIHZvaWQgcHJvY2Vzc1N0b3BwZWRV
c2luZ0dhbWVwYWRzKFdlYlByb2Nlc3NQcm94eSopOworCisgICAgSGFzaFNldDxXZWJQcm9jZXNz
UHJveHkqPiBtX3Byb2Nlc3Nlc1VzaW5nR2FtZXBhZHM7CisjZW5kaWYKKwogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyLgogICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJQcm9j
ZXNzUG9vbE1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgppbmRl
eCA3NmI3NWNmLi44ZWJhOGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmluCkBAIC0yNiw2ICsyNiwxMSBAQCBtZXNzYWdlcyAt
PiBXZWJQcm9jZXNzUG9vbCB7CiAKICAgICBEaWRHZXRTdGF0aXN0aWNzKHN0cnVjdCBXZWJLaXQ6
OlN0YXRpc3RpY3NEYXRhIHN0YXRpc3RpY3NEYXRhLCB1aW50NjRfdCBjYWxsYmFja0lEKQogCisj
aWYgRU5BQkxFKEdBTUVQQUQpCisgICAgU3RhcnRlZFVzaW5nR2FtZXBhZHMoKSBXYW50c0Nvbm5l
Y3Rpb24KKyAgICBTdG9wcGVkVXNpbmdHYW1lcGFkcygpIFdhbnRzQ29ubmVjdGlvbgorI2VuZGlm
CisKICAgICAjIFBsdWctaW4gbWVzc2FnZXMuCiAgICAgdm9pZCBBZGRQbHVnSW5BdXRvU3RhcnRP
cmlnaW5IYXNoKFN0cmluZyBwYWdlT3JpZ2luLCB1aW50MzJfdCBoYXNoLCBXZWJDb3JlOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQogICAgIHZvaWQgUGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlv
bih1aW50MzJfdCBoYXNoLCBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc1M2Uw
MjkuLjM0MWY0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTkzNiw2ICs5MzYsMTEgQEAKIAkJNTE0RDlGNTcxOTExOUQzNTAw
MDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0RDlGNTUxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2Vz
Q29udHJvbGxlci5oICovOyB9OwogCQk1MTREOUY1ODE5MTE5RDM1MDAwMDYzQTcgLyogU2Vydmlj
ZXNDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE0RDlGNTYxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSAq
LzsgfTsKIAkJNTE1NzhCODMxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTc4QjgyMTIwOUVDRUYwMEEz
N0M0QSAvKiBBUElEYXRhLmggKi87IH07CisJCTUxNUJFMTc3MUQ1M0ZFODcwMEREN0M2OCAvKiBX
ZWJHYW1lcGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE1QkUxNzMxRDUzRkREQzAwREQ3QzY4IC8qIFdlYkdhbWVwYWRQcm92aWRl
ci5jcHAgKi87IH07CisJCTUxNUJFMTc5MUQ1M0ZFOEYwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NUJFMTc0MUQ1M0ZEREMwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuaCAqLzsgfTsKKwkJ
NTE1QkUxQTcxRDU1MjkzNDAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVySElELmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMUE2MUQ1NTI5
MzAwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlckhJRC5jcHAgKi87IH07CisJCTUxNUJFMUE4
MUQ1NTI5MzQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTFBNDFENTUyOTI4MDBERDdDNjgg
LyogVUlHYW1lcGFkUHJvdmlkZXIuY3BwICovOyB9OworCQk1MTVCRTFBOTFENTUyOTM0MDBERDdD
NjggLyogVUlHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNUJFMUE1MUQ1NTI5MjgwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92
aWRlci5oICovOyB9OwogCQk1MTVFNzcyNzE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUU3
NzI1MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuY3BwICovOyB9OwogCQk1MTVFNzcy
ODE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFNzcyNjE4M0RENkY2MDAwNzIwM0YgLyogQXN5
bmNSZXF1ZXN0LmggKi87IH07CiAJCTUxNUU3NzJCMTg0MDA4QjkwMDA3MjAzRiAvKiBEYXRhYmFz
ZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1RTc3MjkxODQwMDhCOTAwMDcyMDNGIC8qIERhdGFiYXNl
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi87IH07CkBAIC0yOTc1LDYgKzI5ODAsMTMg
QEAKIAkJNTE0RDlGNTUxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlc0NvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0RDlGNTYxOTExOUQzNTAwMDA2M0E3IC8qIFNl
cnZpY2VzQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFNlcnZpY2VzQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVBJRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MTVCRTE3MzFENTNGRERDMDBERDdDNjggLyogV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdhbWVwYWRQcm92aWRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNUJFMTc0MUQ1M0ZEREMwMEREN0M2OCAvKiBX
ZWJHYW1lcGFkUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
R2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNUJFMTlG
MUQ1NTBBQjAwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkdhbWVwYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTVCRTFBMDFENTUwQUIwMDBERDdDNjggLyogV2ViR2FtZXBhZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHYW1lcGFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxNUJFMUE0MUQ1NTI5MjgwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVSUdhbWVwYWRQcm92aWRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNUJFMUE1MUQ1NTI5MjgwMERE
N0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBVSUdhbWVwYWRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MTVCRTFBNjFENTUyOTMwMDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVUlHYW1lcGFkUHJvdmlkZXJISUQuY3Bw
OyBwYXRoID0gVUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNwcDsg
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk1MTVFNzcyNTE4M0RENkY2MDAwNzIwM0Yg
LyogQXN5bmNSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFzeW5jUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUU3NzI2
MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXN5bmNSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxNUU3NzI5MTg0MDA4QjkwMDA3MjAzRiAvKiBEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YWJhc2VQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTU0NjksNiArNTQ4MSwzNiBAQAogCQkJcGF0aCA9IEF1dGhlbnRpY2F0aW9uOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNTE1QkUxNzIxRDUzRkRCOTAwREQ3QzY4IC8q
IEdhbWVwYWQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTUxNUJFMTlGMUQ1NTBBQjAwMEREN0M2OCAvKiBXZWJHYW1lcGFkLmNwcCAqLywKKwkJCQk1MTVC
RTFBMDFENTUwQUIwMDBERDdDNjggLyogV2ViR2FtZXBhZC5oICovLAorCQkJCTUxNUJFMTczMUQ1
M0ZEREMwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuY3BwICovLAorCQkJCTUxNUJFMTc0
MUQ1M0ZEREMwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuaCAqLywKKwkJCSk7CisJCQlw
YXRoID0gR2FtZXBhZDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTUxNUJF
MTdCMUQ1NEVGNUEwMEREN0M2OCAvKiBHYW1lcGFkICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQk1MTVCRTFBMTFENTUyM0IzMDBERDdDNjggLyogbWFjICov
LAorCQkJCTUxNUJFMUE0MUQ1NTI5MjgwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5jcHAg
Ki8sCisJCQkJNTE1QkUxQTUxRDU1MjkyODAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyLmgg
Ki8sCisJCQkpOworCQkJcGF0aCA9IEdhbWVwYWQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OworCQk1MTVCRTFBMTFENTUyM0IzMDBERDdDNjggLyogbWFjICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk1MTVCRTFBNjFENTUyOTMwMDBERDdD
NjggLyogVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBtYWM7
CisJCQlwYXRoID0gVUlQcm9jZXNzL0dhbWVwYWQvbWFjOworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKIAkJNTE2MzE5OTMxNjI4OTgwRTAwRTIyRjAwIC8qIG1hYyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC01ODEzLDYgKzU4NTUsNyBAQAog
CQkJCUJDQUNDNDNCMTZCMjRDNUQwMEI2RTA5MiAvKiBFbnRyeVBvaW50ICovLAogCQkJCUUxNzA4
NzZEMTZENkNBNzIwMEY5OTIyNiAvKiBGaWxlQVBJICovLAogCQkJCUNENzNCQTNEMTMxQTJBMjEw
MEVFREVEMiAvKiBGdWxsU2NyZWVuICovLAorCQkJCTUxNUJFMTcyMUQ1M0ZEQjkwMEREN0M2OCAv
KiBHYW1lcGFkICovLAogCQkJCUJDMEU1RkNCMTJENjk2REQwMDEyQTcyQSAvKiBHZW9sb2NhdGlv
biAqLywKIAkJCQk1MUZCQjlDMTEzMkUwNzkyMDBGMzI3QjQgLyogSWNvbkRhdGFiYXNlICovLAog
CQkJCUJDMjA0RURGMTFDODNFNzIwMDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZSAqLywKQEAgLTU5
NTAsNiArNTk5Myw3IEBACiAJCQkJOTk1NUE2RTgxQzc5ODA5MDAwRUI2QTkzIC8qIEF1dG9tYXRp
b24gKi8sCiAJCQkJMUFCQzNERjIxODk5RTQxNTAwNEYwNjI2IC8qIENvY29hICovLAogCQkJCTFB
QjdENEM3MTI4OEFBOUEwMENGRDA4QyAvKiBEb3dubG9hZHMgKi8sCisJCQkJNTE1QkUxN0IxRDU0
RUY1QTAwREQ3QzY4IC8qIEdhbWVwYWQgKi8sCiAJCQkJMkRBOTQ0QTgxODg0RTlBQjAwRUQ4NkRC
IC8qIGlvcyAqLywKIAkJCQlCQzExMUIxODExMkY1RkI0MDAzMzdCQUIgLyogTGF1bmNoZXIgKi8s
CiAJCQkJQkNDRjA4NUMxMTNGM0I3NTAwQzY1MEM1IC8qIG1hYyAqLywKQEAgLTc1MTgsNiArNzU2
Miw3IEBACiAJCQkJMkRBOTQ0QTQxODg0RTRGMDAwRUQ4NkRCIC8qIEdlc3R1cmVUeXBlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkRBMDQ5QjgxODBDQ0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5
ZXJDQVJlbW90ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzBDRTcyQUQxMjQ3RTc4RDAwQkMwRUM0
IC8qIEhhbmRsZU1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNUJFMUE5MUQ1NTI5MzQw
MEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNzVB
MUIxQjMzNjgyNzAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzdGOTBERTMxMzc2NTYwRTAwNTFDRjY4IC8qIEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTM1MUNCMTgwRjJDQ0MwMEU1M0JFOSAvKiBJREJV
dGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtODAyNSw2ICs4MDcwLDcgQEAKIAkJCQkxQUI3
RDc4RDEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFGNDU5MkYxOTQ2NEIyMDAwRjlENEEyIC8qIFdLRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDRkQ1NDhDMTMyRDgyNjgwMDU1RDgxNiAvKiBXS0Vycm9yQ0YuaCBpbiBIZWFkZXJzICovLAor
CQkJCTUxNUJFMTc5MUQ1M0ZFOEYwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTM3QjUwNDUyMTlFRUYzMTMwMENFMkNGOCAvKiBXS0Vycm9yUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc1RkMxMjRGRjAyNzAwNjhGMjBBIC8qIFdLRXJy
b3JSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3ODNEMTI1MEZBREQwMDY4RjIwQSAvKiBX
S0V2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTkxNzYsNiArOTIyMiw3IEBACiAJCQkJRTE3OTA4
OEQxNjlCQUE2MjAwNjkwNEM3IC8qIFNlY0l0ZW1TaGltLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUUxNzkwODkwMTY5QkFBN0YwMDY5MDRDNyAvKiBTZWNJdGVtU2hpbU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFNjkwQjE2OUI1NjNGMDA5QjY2NzAgLyogU2VjSXRl
bVNoaW1Qcm94eS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTVCRTFBNzFENTUyOTM0MDBERDdD
NjggLyogVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4RTY5
MTcxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0RDlGNTgxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2Vz
Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBRkRFNjU5MTk1NEE0MkIwMEM0OEZG
QSAvKiBTZXNzaW9uU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MTk2LDYgKzkyNDMsNyBA
QAogCQkJCTFBNDRCOTVCMTZCNzNGOUYwMEI3QkJEOCAvKiBTdG9yYWdlTWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQUIzMUE5NjE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFn
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0NEI5NTcxNkI3MzdB
QTAwQjdCQkQ4IC8qIFN0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUxNUJFMTc3MUQ1M0ZFODcwMEREN0M2OCAvKiBXZWJHYW1lcGFkUHJvdmlkZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUFFMDBENkIxODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5j
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTZCRDg1RTE1MDE5QkMzMDA3MUY0MjQgLyogU3Ry
aW5nVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMVpaNDE3RUYxMkMwMEQ4NzAwMkJF
NjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkyNDQs
NiArOTI5Miw3IEBACiAJCQkJN0M0QUJFRDAxQUE4RTlGMDAwODhBQTM3IC8qIFdlYkNvbXBpbGVk
Q29udGVudEV4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzRBQkVENDFBQThGQ0I4
MDA4OEFBMzcgLyogV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzRBNjI4RjE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29ubmVjdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1MTVCRTFBODFENTUyOTM0MDBERDdDNjggLyogVUlHYW1lcGFk
UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0QTYyOTExNDczMTJCRTAwNkM2ODFB
IC8qIFdlYkNvbm5lY3Rpb25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUExRkVDMUMx
NjI3QjQ1NzAwNzAwRjZEIC8qIFdlYkNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNEMzY3NUMxNDhDMjZDMDAwNDQ3RTg3IC8qIFdlYkNvbm5lY3Rpb25U
b1VJUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi45ZDI3MGM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWQuY3BwCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR2FtZXBhZC5oIgorCisjaWYgRU5B
QkxFKEdBTUVQQUQpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2FtZXBh
ZC9XZWJHYW1lcGFkLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2Ft
ZXBhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0OTkwODYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBh
ZC5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShHQU1FUEFEKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworfQorCisjZW5kaWYgLy8gRU5B
QkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dhbWVw
YWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2Ft
ZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjUyNWFjN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtMCwwICsxLDc5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdhbWVwYWRQcm92aWRl
ci5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1dlYkdhbWVwYWRQcm92aWRlciYgV2ViR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24o
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJHYW1lcGFkUHJvdmlkZXI+IHByb3Zp
ZGVyOworICAgIHJldHVybiBwcm92aWRlcjsKK30KKworV2ViR2FtZXBhZFByb3ZpZGVyOjpXZWJH
YW1lcGFkUHJvdmlkZXIoKQoreworfQorCitXZWJHYW1lcGFkUHJvdmlkZXI6On5XZWJHYW1lcGFk
UHJvdmlkZXIoKQoreworfQorCit2b2lkIFdlYkdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25pdG9y
aW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJU
KCFtX2NsaWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFkZChjbGllbnQp
OworCisgICAgaWYgKG1fY2xpZW50cy5zaXplKCkgPT0gMSkKKyAgICAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Bvb2w6OlN0YXJ0ZWRVc2luZ0dh
bWVwYWRzKCksIDApOworfQorCit2b2lkIFdlYkdhbWVwYWRQcm92aWRlcjo6c3RvcE1vbml0b3Jp
bmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBBU1NFUlQo
bV9jbGllbnRzLmNvbnRhaW5zKGNsaWVudCkpOworICAgIG1fY2xpZW50cy5yZW1vdmUoY2xpZW50
KTsKKworICAgIGlmIChtX2NsaWVudHMuaXNFbXB0eSgpKQorICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUG9vbDo6U3RvcHBlZFVzaW5nR2Ft
ZXBhZHMoKSwgMCk7Cit9CisKK2NvbnN0IFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiYgV2ViR2Ft
ZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VmVjdG9yPFBsYXRmb3JtR2FtZXBhZCo+PiBnYW1lcGFkczsKKyAgICByZXR1cm4gZ2Ft
ZXBhZHM7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ODYxOGMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVy
LmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0dhbWVwYWRQcm92aWRlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJH
YW1lcGFkUHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29yZTo6R2FtZXBhZFByb3ZpZGVyIHsKK3B1Ymxp
YzoKKyAgICBXZWJHYW1lcGFkUHJvdmlkZXIoKTsKKyAgICB+V2ViR2FtZXBhZFByb3ZpZGVyKCkg
ZmluYWw7CisKKyAgICBzdGF0aWMgV2ViR2FtZXBhZFByb3ZpZGVyJiBzaW5nbGV0b24oKTsKKwor
ICAgIHZvaWQgc3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoV2ViQ29yZTo6R2FtZXBhZFByb3ZpZGVy
Q2xpZW50KikgZmluYWw7CisgICAgdm9pZCBzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKFdlYkNvcmU6
OkdhbWVwYWRQcm92aWRlckNsaWVudCopIGZpbmFsOworICAgIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpQbGF0Zm9ybUdhbWVwYWQqPiYgcGxhdGZvcm1HYW1lcGFkcygpIGZpbmFsOworCitwcml2YXRl
OgorICAgIEhhc2hTZXQ8V2ViQ29yZTo6R2FtZXBhZFByb3ZpZGVyQ2xpZW50Kj4gbV9jbGllbnRz
OworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAxNDc1Mjg3Li5iYTJjYjljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHYW1lcGFk
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRl
ICJXZWJJY29uRGF0YWJhc2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkxvYWRlclN0cmF0ZWd5Lmgi
CkBAIC00MDAsNiArNDAxLDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nl
c3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgICAgIH0K
ICAgICB9CiAjZW5kaWYKKworI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIEdhbWVwYWRQcm92aWRl
cjo6c2luZ2xldG9uKCkuc2V0U2hhcmVkUHJvdmlkZXIoV2ViR2FtZXBhZFByb3ZpZGVyOjpzaW5n
bGV0b24oKSk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285570</attachid>
            <date>2016-08-08 09:54:50 -0700</date>
            <delta_ts>2016-08-08 09:55:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160605-20160808095318.patch</filename>
            <type>text/plain</type>
            <size>19175</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjBmYjE0NjVmNGE3OTMy
MTUwNDFmZjU3NTkyMmRiODUwOWZhZmZiYi4uMjE4MDYxYzVjYjljNzdhN2JmMzYyMDVhYTM3OGQ2
ZjYyMWY5ZjIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTA4LTA4ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRyZXNzaW5nIGxhdGUg
cmV2aWV3IGZlZWRiYWNrIGluIGJ1ZyAxNjA2MDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDYwNQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
J3Mgc3VnZ2VzdGlvbnMuCisKKyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvR2FtZXBhZE1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZE1hbmFnZXI6Om1heWJlU3RhcnRNb25p
dG9yaW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZE1hbmFnZXI6Om1heWJl
U3RvcE1vbml0b3JpbmdHYW1lcGFkcyk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dh
bWVwYWQvRW1wdHlHYW1lcGFkUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlH
YW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkVtcHR5R2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9nYW1lcGFkL0VtcHR5R2FtZXBhZFByb3ZpZGVyLmg6CisgICAgICAgIAor
ICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZFByb3ZpZGVyLmg6CisgICAgICAgIAor
ICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRvcmluZ0dhbWVw
YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6c3RvcE1vbml0b3Jp
bmdHYW1lcGFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3Jt
R2FtZXBhZHMpOiBEZWxldGVkLgorCiAyMDE2LTA4LTA3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggR09iamVjdCBE
T00gYmluZGluZ3MgQVBJIGJyZWFrIGFmdGVyIHIyMDQyMzYuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGQ2ODRk
Y2IyMjA5Y2VlMGNlYTllMjgzMjM3MmM4MzAwNjFiMzRkZS4uZGZkMGZmM2ZiNjEwNWFhZDNmMTgw
Y2M4MmQyMWU2NTJmY2JiYTZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE2LTA4
LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRyZXNz
aW5nIGxhdGUgcmV2aWV3IGZlZWRiYWNrIGluIGJ1ZyAxNjA2MDUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDYwNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluJ3Mgc3VnZ2VzdGlvbnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9V
SUdhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVy
Ojpwcm9jZXNzUG9vbFN0YXJ0ZWRVc2luZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6VUlH
YW1lcGFkUHJvdmlkZXI6OnByb2Nlc3NQb29sU3RvcHBlZFVzaW5nR2FtZXBhZHMpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmg6CisgICAgICAgIAorICAg
ICAgICAqIFVJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlckhJRC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0YXJ0TW9uaXRvcmlu
Z0dhbWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3Jt
U3RvcE1vbml0b3JpbmdHYW1lcGFkcyk6CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkaXNj
b25uZWN0UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGFydGVk
VXNpbmdHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdG9wcGVk
VXNpbmdHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNz
U3RvcHBlZFVzaW5nR2FtZXBhZHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oOgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpzdGFydE1v
bml0b3JpbmdHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6
c3RvcE1vbml0b3JpbmdHYW1lcGFkcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dl
YkdhbWVwYWRQcm92aWRlci5oOgorCiAyMDE2LTA4LTA3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBCYWQgcGVyZm9ybWFuY2UgaW4g
YWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgbW9kZSB3aXRoIHRoZSBtb2Rlc2V0dGluZyBpbnRlbCBk
cml2ZXIgYW5kIERSSTMgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nYW1lcGFkL0dhbWVwYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Ft
ZXBhZC9HYW1lcGFkTWFuYWdlci5jcHAKaW5kZXggOTZiNmNiMjJhNGUyMTQwMjc0OWNhNGE3OTYx
OTNhOWUzZmNhOTRhNy4uOWI5ZDdhOWYxMmU5MjY0NzZjMDIxYTMwYzVhZmRjODQwYzY4NWZhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZE1hbmFnZXIu
Y3BwCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBHYW1lcGFkTWFuYWdlcjo6bWF5YmVTdGFydE1v
bml0b3JpbmdHYW1lcGFkcygpCiAgICAgaWYgKCFtX25hdmlnYXRvcnMuaXNFbXB0eSgpIHx8ICFt
X2RvbVdpbmRvd3MuaXNFbXB0eSgpKSB7CiAgICAgICAgIExPRyhHYW1lcGFkLCAiR2FtZXBhZE1h
bmFnZXIgaGFzICVpIE5hdmlnYXRvckdhbWVwYWRzIGFuZCAlaSBET01XaW5kb3dzIHJlZ2lzdGVy
ZWQsIGlzIHN0YXJ0aW5nIGdhbWVwYWQgbW9uaXRvcmluZyIsIG1fbmF2aWdhdG9ycy5zaXplKCks
IG1fZG9tV2luZG93cy5zaXplKCkpOwogICAgICAgICBtX2lzTW9uaXRvcmluZ0dhbWVwYWRzID0g
dHJ1ZTsKLSAgICAgICAgR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdGFydE1vbml0b3Jp
bmdHYW1lcGFkcyh0aGlzKTsKKyAgICAgICAgR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5z
dGFydE1vbml0b3JpbmdHYW1lcGFkcygqdGhpcyk7CiAgICAgfQogfQogCkBAIC0yMzEsNyArMjMx
LDcgQEAgdm9pZCBHYW1lcGFkTWFuYWdlcjo6bWF5YmVTdG9wTW9uaXRvcmluZ0dhbWVwYWRzKCkK
ICAgICBpZiAobV9uYXZpZ2F0b3JzLmlzRW1wdHkoKSAmJiBtX2RvbVdpbmRvd3MuaXNFbXB0eSgp
KSB7CiAgICAgICAgIExPRyhHYW1lcGFkLCAiR2FtZXBhZE1hbmFnZXIgaGFzIG5vIE5hdmlnYXRv
ckdhbWVwYWRzIG9yIERPTVdpbmRvd3MgcmVnaXN0ZXJlZCwgaXMgc3RvcHBpbmcgZ2FtZXBhZCBt
b25pdG9yaW5nIik7CiAgICAgICAgIG1faXNNb25pdG9yaW5nR2FtZXBhZHMgPSBmYWxzZTsKLSAg
ICAgICAgR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdG9wTW9uaXRvcmluZ0dhbWVwYWRz
KHRoaXMpOworICAgICAgICBHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0b3BNb25pdG9y
aW5nR2FtZXBhZHMoKnRoaXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9FbXB0eUdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL0VtcHR5R2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCBhMmRk
ZGRhOTAwYmQyYzEwNzQwOWZlNWI3ZmVkNDQ2MDQxYThmMjMxLi42MjQwMWM4YWE3OWVlOTFjN2Vk
NTQzOGNlY2YyNWNjZDlkNGMwYzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL0VtcHR5R2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL0VtcHR5R2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtMzIsMTEgKzMyLDEx
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBFbXB0eUdhbWVwYWRQcm92aWRlcjo6
c3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50KikKK3ZvaWQgRW1w
dHlHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRl
ckNsaWVudCYpCiB7CiB9CiAKLXZvaWQgRW1wdHlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9y
aW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50KiApCit2b2lkIEVtcHR5R2FtZXBhZFBy
b3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvRW1wdHlH
YW1lcGFkUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvRW1wdHlH
YW1lcGFkUHJvdmlkZXIuaAppbmRleCBiZDY0NzVmMGQzZmU0YzVhNzg1YmY4YTliMzg2NDY1ODJl
MTMxODIwLi40Yjc1NDZhYTA0YWZiZjI2NTg5MjQxZmU1NjMyMTBkM2UxNDJjMzExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0VtcHR5R2FtZXBhZFByb3ZpZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9FbXB0eUdhbWVwYWRQcm92
aWRlci5oCkBAIC0zNSw4ICszNSw5IEBAIGNsYXNzIEVtcHR5R2FtZXBhZFByb3ZpZGVyIDogcHVi
bGljIEdhbWVwYWRQcm92aWRlciB7CiBwdWJsaWM6CiAgICAgfkVtcHR5R2FtZXBhZFByb3ZpZGVy
KCkgZmluYWwgeyB9CiAKLSAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQ
cm92aWRlckNsaWVudCopIGZpbmFsOwotICAgIHZvaWQgc3RvcE1vbml0b3JpbmdHYW1lcGFkcyhH
YW1lcGFkUHJvdmlkZXJDbGllbnQqKSBmaW5hbDsKK3ByaXZhdGU6CisgICAgdm9pZCBzdGFydE1v
bml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICB2b2lk
IHN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JikgZmluYWw7CiAg
ICAgY29uc3QgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZCo+JiBwbGF0Zm9ybUdhbWVwYWRzKCkgZmlu
YWw7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dh
bWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFk
UHJvdmlkZXIuaAppbmRleCAzM2E4ODM4YzIzNzI0OWRhYWEyM2ZkNjQyZGQ2YzlkZmJlMWZiNDFh
Li4yODAyMTMyNzVkNjRiYmE0OTIzOTljNGUzYjhlNDI5YzE4OGJlNmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZFByb3ZpZGVyLmgKQEAgLTQxLDgg
KzQxLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBHYW1lcGFkUHJvdmlk
ZXImIHNpbmdsZXRvbigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFNoYXJl
ZFByb3ZpZGVyKEdhbWVwYWRQcm92aWRlciYpOwogCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0TW9u
aXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCopID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgc3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQqKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRl
ckNsaWVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcE1vbml0b3JpbmdHYW1lcGFkcyhH
YW1lcGFkUHJvdmlkZXJDbGllbnQmKSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8UGxh
dGZvcm1HYW1lcGFkKj4mIHBsYXRmb3JtR2FtZXBhZHMoKSA9IDA7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3Zp
ZGVyLmNwcAppbmRleCA2ZjQ0MWU2ZmFiZjZiN2IwOWE3NjRiNjYyM2JiMmM0MzQ4NmEwY2Q1Li5j
NWE0MzVmOWUwOTA5ZGEyODc1ZGEzMjVmNGViYjEzYmE0NWU2NTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRl
ci5jcHAKQEAgLTE0MywyMSArMTQzLDIxIEBAIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpjbG9z
ZUFuZFVuc2NoZWR1bGVNYW5hZ2VyKCkKICAgICBtX2Nvbm5lY3Rpb25EZWxheVRpbWVyLnN0b3Ao
KTsKIH0KIAotdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRz
KEdhbWVwYWRQcm92aWRlckNsaWVudCogY2xpZW50KQordm9pZCBISURHYW1lcGFkUHJvdmlkZXI6
OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYgY2xpZW50KQog
ewogICAgIGJvb2wgc2hvdWxkT3BlbkFuZFNjaGVkdWxlTWFuYWdlciA9IG1fY2xpZW50cy5pc0Vt
cHR5KCk7CiAKLSAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucyhjbGllbnQpKTsKLSAgICBt
X2NsaWVudHMuYWRkKGNsaWVudCk7CisgICAgQVNTRVJUKCFtX2NsaWVudHMuY29udGFpbnMoJmNs
aWVudCkpOworICAgIG1fY2xpZW50cy5hZGQoJmNsaWVudCk7CiAKICAgICBpZiAoc2hvdWxkT3Bl
bkFuZFNjaGVkdWxlTWFuYWdlcikKICAgICAgICAgb3BlbkFuZFNjaGVkdWxlTWFuYWdlcigpOwog
fQotdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBh
ZFByb3ZpZGVyQ2xpZW50KiBjbGllbnQpCit2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6c3RvcE1v
bml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQmIGNsaWVudCkKIHsKLSAgICBB
U1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKGNsaWVudCkpOworICAgIEFTU0VSVChtX2NsaWVudHMu
Y29udGFpbnMoJmNsaWVudCkpOwogCi0gICAgYm9vbCBzaG91bGRDbG9zZUFuZFVuc2NoZWR1bGVN
YW5hZ2VyID0gbV9jbGllbnRzLnJlbW92ZShjbGllbnQpICYmIG1fY2xpZW50cy5pc0VtcHR5KCk7
CisgICAgYm9vbCBzaG91bGRDbG9zZUFuZFVuc2NoZWR1bGVNYW5hZ2VyID0gbV9jbGllbnRzLnJl
bW92ZSgmY2xpZW50KSAmJiBtX2NsaWVudHMuaXNFbXB0eSgpOwogCiAgICAgaWYgKHNob3VsZENs
b3NlQW5kVW5zY2hlZHVsZU1hbmFnZXIpCiAgICAgICAgIGNsb3NlQW5kVW5zY2hlZHVsZU1hbmFn
ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJ
REdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMv
SElER2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggNzhkZTAwYzdlNjFlNTY0OGRmZmY4Y2U1OTU4NjY4
MGVlMzgzOGVkOC4uZjY2MTU0ZmMwNWI4ZjcyYjhhYWU3Yzg0OGY0YmIzMGYyYzg5N2RkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2Ft
ZXBhZFByb3ZpZGVyLmgKQEAgLTQ3LDkgKzQ3LDkgQEAgY2xhc3MgSElER2FtZXBhZFByb3ZpZGVy
IDogcHVibGljIEdhbWVwYWRQcm92aWRlciB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIEhJREdhbWVwYWRQcm92aWRlciYgc2luZ2xldG9uKCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgc3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50Kik7Ci0gICAg
dmlydHVhbCB2b2lkIHN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50
Kik7Ci0gICAgdmlydHVhbCBjb25zdCBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4mIHBsYXRmb3Jt
R2FtZXBhZHMoKSB7IHJldHVybiBtX2dhbWVwYWRWZWN0b3I7IH0KKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYpIGZp
bmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1l
cGFkUHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKKyAgICBjb25zdCBWZWN0b3I8UGxhdGZvcm1HYW1l
cGFkKj4mIHBsYXRmb3JtR2FtZXBhZHMoKSBmaW5hbCB7IHJldHVybiBtX2dhbWVwYWRWZWN0b3I7
IH0KIAogICAgIHZvaWQgZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYpOwogICAgIHZvaWQgZGV2
aWNlUmVtb3ZlZChJT0hJRERldmljZVJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggNjNjMTEzYTg4ZTZl
YzY3MDY5MmYzZWIxOGE4ZGI5MGI2M2U1Y2Q4ZC4uOGNhZDU1MjRlZDQxZGVlYmM5YmM3NmI3NDdh
MGY3NTQ5MTMwOWE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVw
YWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9H
YW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtNjUsMTkgKzY1LDIzIEBAIHZvaWQgVUlH
YW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoKQogCiB2b2lkIFVJ
R2FtZXBhZFByb3ZpZGVyOjpwcm9jZXNzUG9vbFN0YXJ0ZWRVc2luZ0dhbWVwYWRzKFdlYlByb2Nl
c3NQb29sJiBwb29sKQogeworICAgIGJvb2wgd2VyZUFueVByb2Nlc3NQb29sc1VzaW5nR2FtZXBh
ZHMgPSAhbV9wcm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzLmlzRW1wdHkoKTsKKwogICAgIEFTU0VS
VCghbV9wcm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzLmNvbnRhaW5zKCZwb29sKSk7CiAgICAgbV9w
cm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzLmFkZCgmcG9vbCk7CiAKLSAgICBpZiAobV9wcm9jZXNz
UG9vbHNVc2luZ0dhbWVwYWRzLnNpemUoKSA9PSAxKQorICAgIGlmICghd2VyZUFueVByb2Nlc3NQ
b29sc1VzaW5nR2FtZXBhZHMpCiAgICAgICAgIHBsYXRmb3JtU3RhcnRNb25pdG9yaW5nR2FtZXBh
ZHMoKTsKIH0KIAogdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cHJvY2Vzc1Bvb2xTdG9wcGVkVXNp
bmdHYW1lcGFkcyhXZWJQcm9jZXNzUG9vbCYgcG9vbCkKIHsKKyAgICBib29sIHdlcmVBbnlQcm9j
ZXNzUG9vbHNVc2luZ0dhbWVwYWRzID0gIW1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcy5pc0Vt
cHR5KCk7CisKICAgICBBU1NFUlQobV9wcm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzLmNvbnRhaW5z
KCZwb29sKSk7CiAgICAgbV9wcm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzLnJlbW92ZSgmcG9vbCk7
CiAKLSAgICBpZiAobV9wcm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzLmlzRW1wdHkoKSkKKyAgICBp
ZiAod2VyZUFueVByb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMgJiYgbV9wcm9jZXNzUG9vbHNVc2lu
Z0dhbWVwYWRzLmlzRW1wdHkoKSkKICAgICAgICAgcGxhdGZvcm1TdG9wTW9uaXRvcmluZ0dhbWVw
YWRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFk
L1VJR2FtZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9V
SUdhbWVwYWRQcm92aWRlci5oCmluZGV4IGYzNzJjMDJhNjI1ZjdmM2U2ODMxYmVjZDIyNThlZWFi
ZDczNGJjNGQuLjA2OWVjMTRhMjQwOGQ0YjRiM2JhYjA5ZTJjY2Y3YzZhN2M1OGEzODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVy
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlk
ZXIuaApAQCAtMjcsOSArMjcsOSBAQAogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAKLSNpbmNsdWRl
IDxXZWJDb3JlL0dhbWVwYWRQcm92aWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR2FtZXBhZFBy
b3ZpZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTM3LDIyICszNywy
MyBAQCBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAogY2xhc3MgVUlHYW1lcGFkUHJvdmlkZXIgOiBw
dWJsaWMgV2ViQ29yZTo6R2FtZXBhZFByb3ZpZGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBVSUdh
bWVwYWRQcm92aWRlcigpOwotICAgIH5VSUdhbWVwYWRQcm92aWRlcigpIGZpbmFsOwotCiAgICAg
c3RhdGljIFVJR2FtZXBhZFByb3ZpZGVyJiBzaW5nbGV0b24oKTsKIAotICAgIHZvaWQgcGxhdGZv
cm1HYW1lcGFkQ29ubmVjdGVkKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZCYpIGZpbmFsOwotICAg
IHZvaWQgcGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBh
ZCYpIGZpbmFsOwotICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSgpIGZpbmFs
OwotCiAgICAgdm9pZCBwcm9jZXNzUG9vbFN0YXJ0ZWRVc2luZ0dhbWVwYWRzKFdlYlByb2Nlc3NQ
b29sJik7CiAgICAgdm9pZCBwcm9jZXNzUG9vbFN0b3BwZWRVc2luZ0dhbWVwYWRzKFdlYlByb2Nl
c3NQb29sJik7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPFVJR2FtZXBh
ZFByb3ZpZGVyPjsKKyAgICBVSUdhbWVwYWRQcm92aWRlcigpOworICAgIH5VSUdhbWVwYWRQcm92
aWRlcigpIGZpbmFsOworCiAgICAgdm9pZCBwbGF0Zm9ybVN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRz
KCk7CiAgICAgdm9pZCBwbGF0Zm9ybVN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKTsKIAorICAgIHZv
aWQgcGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZCYpIGZp
bmFsOworICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKFdlYkNvcmU6OlBsYXRm
b3JtR2FtZXBhZCYpIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0
eSgpIGZpbmFsOworCiAgICAgSGFzaFNldDxXZWJQcm9jZXNzUG9vbCo+IG1fcHJvY2Vzc1Bvb2xz
VXNpbmdHYW1lcGFkczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlckhJRC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwCmluZGV4IGY4ZTQ3
YjZmNzM2ZTlkODI5ZDUzNzNhOTQ2Y2ZmZTFjNzlkNjJhMmYuLjE1ODE1YWQ0YzE3NDFhOThlNjdh
NWE2MWE5NGJmY2M3ZjAwYzkwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlckhJRC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNwcApAQCAtMzcs
MTMgKzM3LDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6
cGxhdGZvcm1TdGFydE1vbml0b3JpbmdHYW1lcGFkcygpCiB7CiAgICAgQVNTRVJUKCFtX3Byb2Nl
c3NQb29sc1VzaW5nR2FtZXBhZHMuaXNFbXB0eSgpKTsKLSAgICBISURHYW1lcGFkUHJvdmlkZXI6
OnNpbmdsZXRvbigpLnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKHRoaXMpOworICAgIEhJREdhbWVw
YWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoKnRoaXMpOwog
fQogCiB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0b3BNb25pdG9yaW5nR2FtZXBh
ZHMoKQogewogICAgIEFTU0VSVChtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMuaXNFbXB0eSgp
KTsKLSAgICBISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnN0b3BNb25pdG9yaW5nR2Ft
ZXBhZHModGhpcyk7CisgICAgSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdG9wTW9u
aXRvcmluZ0dhbWVwYWRzKCp0aGlzKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggOTIyYjZjNjhjMmQ4YjU3MTUwNWRjZDM2MGZlZjkx
MzJmMmFjYzI2Yi4uZjlmMjRlYTE4NWY4MzBlNTIxZWJhYTc1ZDBhNTcyMGQwOGEyNjdhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC03NjEsNyAr
NzYxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vz
c1Byb3h5KiBwcm9jZXNzKQogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAgICAgaWYgKG1fcHJvY2Vz
c2VzVXNpbmdHYW1lcGFkcy5jb250YWlucyhwcm9jZXNzKSkKLSAgICAgICAgcHJvY2Vzc1N0b3Bw
ZWRVc2luZ0dhbWVwYWRzKHByb2Nlc3MpOworICAgICAgICBwcm9jZXNzU3RvcHBlZFVzaW5nR2Ft
ZXBhZHMoKnByb2Nlc3MpOwogI2VuZGlmCiB9CiAKQEAgLTEyNDYsMzMgKzEyNDYsMzcgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6ZGlkR2V0U3RhdGlzdGljcyhjb25zdCBTdGF0aXN0aWNzRGF0YSYg
c3RhdGlzdGljc0RhdGEsIHVpbnQKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RhcnRlZFVzaW5n
R2FtZXBhZHMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewotICAgIGF1dG8qIHdlYlBy
b2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6ZnJvbUNvbm5lY3Rpb24oJmNvbm5lY3Rpb24p
OwotICAgIGlmICghd2ViUHJvY2Vzc1Byb3h5KQorICAgIGF1dG8qIHByb3h5ID0gV2ViUHJvY2Vz
c1Byb3h5Ojpmcm9tQ29ubmVjdGlvbigmY29ubmVjdGlvbik7CisgICAgaWYgKCFwcm94eSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFtX3Byb2Nlc3Nlc1VzaW5nR2FtZXBhZHMuY29u
dGFpbnMod2ViUHJvY2Vzc1Byb3h5KSk7Ci0gICAgbV9wcm9jZXNzZXNVc2luZ0dhbWVwYWRzLmFk
ZCh3ZWJQcm9jZXNzUHJveHkpOworICAgIGJvb2wgd2VyZUFueVByb2Nlc3Nlc1VzaW5nR2FtZXBh
ZHMgPSAhbV9wcm9jZXNzZXNVc2luZ0dhbWVwYWRzLmlzRW1wdHkoKTsKKworICAgIEFTU0VSVCgh
bV9wcm9jZXNzZXNVc2luZ0dhbWVwYWRzLmNvbnRhaW5zKHByb3h5KSk7CisgICAgbV9wcm9jZXNz
ZXNVc2luZ0dhbWVwYWRzLmFkZChwcm94eSk7CiAKLSAgICBpZiAobV9wcm9jZXNzZXNVc2luZ0dh
bWVwYWRzLnNpemUoKSA9PSAxKQorICAgIGlmICghd2VyZUFueVByb2Nlc3Nlc1VzaW5nR2FtZXBh
ZHMpCiAgICAgICAgIFVJR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5wcm9jZXNzUG9vbFN0
YXJ0ZWRVc2luZ0dhbWVwYWRzKCp0aGlzKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3Rv
cHBlZFVzaW5nR2FtZXBhZHMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewotICAgIGF1
dG8qIHdlYlByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6ZnJvbUNvbm5lY3Rpb24oJmNv
bm5lY3Rpb24pOwotICAgIGlmICghd2ViUHJvY2Vzc1Byb3h5KQorICAgIGF1dG8qIHByb3h5ID0g
V2ViUHJvY2Vzc1Byb3h5Ojpmcm9tQ29ubmVjdGlvbigmY29ubmVjdGlvbik7CisgICAgaWYgKCFw
cm94eSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKG1fcHJvY2Vzc2VzVXNpbmdHYW1l
cGFkcy5jb250YWlucyh3ZWJQcm9jZXNzUHJveHkpKTsKLSAgICBwcm9jZXNzU3RvcHBlZFVzaW5n
R2FtZXBhZHMod2ViUHJvY2Vzc1Byb3h5KTsKKyAgICBBU1NFUlQobV9wcm9jZXNzZXNVc2luZ0dh
bWVwYWRzLmNvbnRhaW5zKHByb3h5KSk7CisgICAgcHJvY2Vzc1N0b3BwZWRVc2luZ0dhbWVwYWRz
KCpwcm94eSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NTdG9wcGVkVXNpbmdH
YW1lcGFkcyhXZWJQcm9jZXNzUHJveHkqIHdlYlByb2Nlc3NQcm94eSkKK3ZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NTdG9wcGVkVXNpbmdHYW1lcGFkcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nl
c3MpCiB7Ci0gICAgQVNTRVJUKG1fcHJvY2Vzc2VzVXNpbmdHYW1lcGFkcy5jb250YWlucyh3ZWJQ
cm9jZXNzUHJveHkpKTsKLSAgICBtX3Byb2Nlc3Nlc1VzaW5nR2FtZXBhZHMucmVtb3ZlKHdlYlBy
b2Nlc3NQcm94eSk7CisgICAgYm9vbCB3ZXJlQW55UHJvY2Vzc2VzVXNpbmdHYW1lcGFkcyA9ICFt
X3Byb2Nlc3Nlc1VzaW5nR2FtZXBhZHMuaXNFbXB0eSgpOworCisgICAgQVNTRVJUKG1fcHJvY2Vz
c2VzVXNpbmdHYW1lcGFkcy5jb250YWlucygmcHJvY2VzcykpOworICAgIG1fcHJvY2Vzc2VzVXNp
bmdHYW1lcGFkcy5yZW1vdmUoJnByb2Nlc3MpOwogCi0gICAgaWYgKG1fcHJvY2Vzc2VzVXNpbmdH
YW1lcGFkcy5pc0VtcHR5KCkpCisgICAgaWYgKHdlcmVBbnlQcm9jZXNzZXNVc2luZ0dhbWVwYWRz
ICYmIG1fcHJvY2Vzc2VzVXNpbmdHYW1lcGFkcy5pc0VtcHR5KCkpCiAgICAgICAgIFVJR2FtZXBh
ZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5wcm9jZXNzUG9vbFN0b3BwZWRVc2luZ0dhbWVwYWRzKCp0
aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRl
eCAzMTkwNzI1YTQyMmZmZjIxMTcyNTU2YTAwNWY3OTc0ZDc0NDEyYTQxLi5jZmVmMWY2OTA3Njg4
ZjE4ZjI3MTQ2YmEzMThlMzU2MGViM2RhYjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzkxLDkgKzM5MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dGFydGVkVXNpbmdHYW1lcGFkcyhJUEM6OkNvbm5lY3Rpb24mKTsKICAgICB2b2lkIHN0b3BwZWRV
c2luZ0dhbWVwYWRzKElQQzo6Q29ubmVjdGlvbiYpOwogCi0gICAgdm9pZCBwcm9jZXNzU3RvcHBl
ZFVzaW5nR2FtZXBhZHMoV2ViUHJvY2Vzc1Byb3h5Kik7Ci0KLSAgICBIYXNoU2V0PFdlYlByb2Nl
c3NQcm94eSo+IG1fcHJvY2Vzc2VzVXNpbmdHYW1lcGFkczsKKyAgICB2b2lkIHByb2Nlc3NTdG9w
cGVkVXNpbmdHYW1lcGFkcyhXZWJQcm9jZXNzUHJveHkmKTsKICNlbmRpZgogCiAgICAgLy8gSVBD
OjpNZXNzYWdlUmVjZWl2ZXIuCkBAIC01NDgsNiArNTQ2LDEwIEBAIHByaXZhdGU6CiAjaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3Ry
aW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+PiBtX3BsdWdpbkxvYWRDbGllbnRQb2xpY2ll
czsKICNlbmRpZgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisgICAgSGFzaFNldDxXZWJQcm9jZXNz
UHJveHkqPiBtX3Byb2Nlc3Nlc1VzaW5nR2FtZXBhZHM7CisjZW5kaWYKIH07CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dhbWVw
YWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2Ft
ZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IDUyNWFjN2JkMTc2YmFkODg2N2VkYzQ4
OTljNzdiYWM4ODQ5Y2E0MWYuLjJjZTU1YWNlNDE4ZGUxNTdkOGYwZTczY2RiOGE1MDA1MTRlYWZm
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1l
cGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9X
ZWJHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC01MCwyMSArNTAsMjUgQEAgV2ViR2FtZXBhZFByb3Zp
ZGVyOjp+V2ViR2FtZXBhZFByb3ZpZGVyKCkKIHsKIH0KIAotdm9pZCBXZWJHYW1lcGFkUHJvdmlk
ZXI6OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCogY2xpZW50
KQordm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVw
YWRQcm92aWRlckNsaWVudCYgY2xpZW50KQogewotICAgIEFTU0VSVCghbV9jbGllbnRzLmNvbnRh
aW5zKGNsaWVudCkpOwotICAgIG1fY2xpZW50cy5hZGQoY2xpZW50KTsKKyAgICBib29sIHByb2Nl
c3NIYWRHYW1lcGFkQ2xpZW50cyA9ICFtX2NsaWVudHMuaXNFbXB0eSgpOwogCi0gICAgaWYgKG1f
Y2xpZW50cy5zaXplKCkgPT0gMSkKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucygmY2xp
ZW50KSk7CisgICAgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsKKworICAgIGlmICghcHJvY2Vzc0hh
ZEdhbWVwYWRDbGllbnRzKQogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUG9vbDo6U3RhcnRlZFVzaW5nR2FtZXBhZHMoKSwgMCk7CiB9CiAK
LXZvaWQgV2ViR2FtZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQ
cm92aWRlckNsaWVudCogY2xpZW50KQordm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25p
dG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgQVNT
RVJUKG1fY2xpZW50cy5jb250YWlucyhjbGllbnQpKTsKLSAgICBtX2NsaWVudHMucmVtb3ZlKGNs
aWVudCk7CisgICAgYm9vbCBwcm9jZXNzSGFkR2FtZXBhZENsaWVudHMgPSAhbV9jbGllbnRzLmlz
RW1wdHkoKTsKKworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOworICAg
IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7CiAKLSAgICBpZiAobV9jbGllbnRzLmlzRW1wdHko
KSkKKyAgICBpZiAocHJvY2Vzc0hhZEdhbWVwYWRDbGllbnRzICYmIG1fY2xpZW50cy5pc0VtcHR5
KCkpCiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3NQb29sOjpTdG9wcGVkVXNpbmdHYW1lcGFkcygpLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5oCmlu
ZGV4IGU4ODYxOGNiZGVhZjdlZTlhYTg4ZjNiYWY5ZmQwYWI2YTA5YTk0YTQuLmUyODM0MGRlZjRi
OWVlNGY3NTFlMDZhMmU1MTdmMmZiZTUxODdkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmgKQEAgLTI5LDIxICsy
OSwyMyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9HYW1lcGFkUHJvdmlkZXIuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViR2FtZXBhZFByb3ZpZGVyIDogcHVibGljIFdlYkNv
cmU6OkdhbWVwYWRQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAgV2ViR2FtZXBhZFByb3ZpZGVyKCk7
Ci0gICAgfldlYkdhbWVwYWRQcm92aWRlcigpIGZpbmFsOwotCiAgICAgc3RhdGljIFdlYkdhbWVw
YWRQcm92aWRlciYgc2luZ2xldG9uKCk7CiAKLSAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ0dhbWVw
YWRzKFdlYkNvcmU6OkdhbWVwYWRQcm92aWRlckNsaWVudCopIGZpbmFsOwotICAgIHZvaWQgc3Rv
cE1vbml0b3JpbmdHYW1lcGFkcyhXZWJDb3JlOjpHYW1lcGFkUHJvdmlkZXJDbGllbnQqKSBmaW5h
bDsKK3ByaXZhdGU6CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPFdlYkdhbWVwYWRQcm92aWRl
cj47CisgICAgV2ViR2FtZXBhZFByb3ZpZGVyKCk7CisgICAgfldlYkdhbWVwYWRQcm92aWRlcigp
IGZpbmFsOworICAgIAorICAgIHZvaWQgc3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoV2ViQ29yZTo6
R2FtZXBhZFByb3ZpZGVyQ2xpZW50JikgZmluYWw7CisgICAgdm9pZCBzdG9wTW9uaXRvcmluZ0dh
bWVwYWRzKFdlYkNvcmU6OkdhbWVwYWRQcm92aWRlckNsaWVudCYpIGZpbmFsOwogICAgIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpQbGF0Zm9ybUdhbWVwYWQqPiYgcGxhdGZvcm1HYW1lcGFkcygpIGZp
bmFsOwogCi1wcml2YXRlOgogICAgIEhhc2hTZXQ8V2ViQ29yZTo6R2FtZXBhZFByb3ZpZGVyQ2xp
ZW50Kj4gbV9jbGllbnRzOwogfTsKIAo=
</data>
<flag name="commit-queue"
          id="309192"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>