<?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>168479</bug_id>
          
          <creation_ts>2017-02-16 15:51:29 -0800</creation_ts>
          <short_desc>[WK2] Support termination of unresponsive WebContent processes that are in the background</short_desc>
          <delta_ts>2017-02-21 12:42:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=168604</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>andersca</cc>
    
    <cc>barraclough</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>krollin</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mitz</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1277976</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-16 15:51:29 -0800</bug_when>
    <thetext>Support termination of unresponsive WebContent processes that are in the background. This protects us against cases where a background tab is unresponsive and has high CPU usage, thus draining the battery without the user knowing about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277978</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-16 15:52:05 -0800</bug_when>
    <thetext>&lt;rdar://problem/30558745&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278016</commentid>
    <comment_count>2</comment_count>
      <attachid>301856</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-16 16:49:23 -0800</bug_when>
    <thetext>Created attachment 301856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278017</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-16 16:50:32 -0800</bug_when>
    <thetext>Attachment 301856 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebProcessProxy.cpp:106:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278090</commentid>
    <comment_count>4</comment_count>
      <attachid>301856</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2017-02-16 20:16:22 -0800</bug_when>
    <thetext>Comment on attachment 301856
Patch

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

&gt; Source/WebKit2/UIProcess/BackgroundWebProcessResponsivenessTimer.cpp:34
&gt; +static const std::chrono::seconds maximumInterval { 86400 }; // 24 hours.

How was 86400 decided? My inclination would be to say it&apos;s too high. If the wedged webpage is on a laptop or phone, it could drain the battery in an hour or two, if not sooner. If I have a web page loaded and it gets wedged 2 days later, we won&apos;t know it for another day (other than by the battery dying). We&apos;d like to catch issues before then. Perhaps a max time of 1 hour?

Question from a noob: what happens to the timer and the checking when a device is turned off or MobileSafari is switched out? Does the timer continue to run? What happens when the device is turned back on or MobileSafari is re-entered? Does the timer continue from where it was when MobileSafari was exited? Or does it resume after incorporating the full elapsed time? If the latter, do we want that? In other words, if we were due to check the process in an hour, but then turned off the phone for two hours, what behavior do we want when MobileSafari starts again?

This patch was inspired by a web page that responded poorly while in the background, and while Safari was started with this page already in the background. Does this patch do what we want in that case? In particular, I&apos;m thinking that we should perhaps reset the interval back to 20 seconds in order to catch pages that don&apos;t awaken in the background politely.

(Crib notes on checking)
Intervals: 20 40 80 160 320 640 1280 2560 3600 3600 ...
Checks: 20 60 140 300 620 1260 2540 5100 8700 12300 ...
Or: 20s 1m 2m20s 5min 10m20s 21m 42m20s 1h25m 2h25m 3h25m ...

&gt; Source/WebKit2/UIProcess/BackgroundWebProcessResponsivenessTimer.cpp:70
&gt; +            page-&gt;terminateProcess(WebPageProxy::TerminationReason::UnresponsiveWhileInBackground);

Are there possible race conditions here? I don&apos;t know what calling terminateProcess could lead to. Could the other pages in the process get notification that the process has terminated and then delete themselves before you get a chance to mark them with UnresponsiveWhileInBackground? Could they be removed from m_webProcessProxy.m_pageMap while you&apos;re still iterating over it (leading to the iterator becoming invalid, or the pages returned from it being invalid)? Could the WebProcessProxy that m_webProcessProxy refers to be deleted out from under you (you&apos;re not doing anything to protect its lifetime)?

Or is all that safely deferred until timerFired is done?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278099</commentid>
    <comment_count>5</comment_count>
      <attachid>301856</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-16 20:48:29 -0800</bug_when>
    <thetext>Comment on attachment 301856
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/BackgroundWebProcessResponsivenessTimer.cpp:34
&gt;&gt; +static const std::chrono::seconds maximumInterval { 86400 }; // 24 hours.
&gt; 
&gt; How was 86400 decided? My inclination would be to say it&apos;s too high. If the wedged webpage is on a laptop or phone, it could drain the battery in an hour or two, if not sooner. If I have a web page loaded and it gets wedged 2 days later, we won&apos;t know it for another day (other than by the battery dying). We&apos;d like to catch issues before then. Perhaps a max time of 1 hour?
&gt; 
&gt; Question from a noob: what happens to the timer and the checking when a device is turned off or MobileSafari is switched out? Does the timer continue to run? What happens when the device is turned back on or MobileSafari is re-entered? Does the timer continue from where it was when MobileSafari was exited? Or does it resume after incorporating the full elapsed time? If the latter, do we want that? In other words, if we were due to check the process in an hour, but then turned off the phone for two hours, what behavior do we want when MobileSafari starts again?
&gt; 
&gt; This patch was inspired by a web page that responded poorly while in the background, and while Safari was started with this page already in the background. Does this patch do what we want in that case? In particular, I&apos;m thinking that we should perhaps reset the interval back to 20 seconds in order to catch pages that don&apos;t awaken in the background politely.
&gt; 
&gt; (Crib notes on checking)
&gt; Intervals: 20 40 80 160 320 640 1280 2560 3600 3600 ...
&gt; Checks: 20 60 140 300 620 1260 2540 5100 8700 12300 ...
&gt; Or: 20s 1m 2m20s 5min 10m20s 21m 42m20s 1h25m 2h25m 3h25m ...

1. Let&apos;s discuss the max interval with Gavin. I came up with the current value myself and was mostly used as a way not to overflow.

2. I am not 100% sure but I believe that if you close your laptop lid and a timer was scheduled to fire while the system is suspended, then it will fire as soon as the system resumes.

3. The patch works great in cases like &lt;rdar://problem/29808005&gt;. I do not understand why you want to reset to 20 seconds, or when you would want to reset to 20 seconds. To be clear, in the case of a session restore, if one of the background tabs that was restored starts mis-behaving right away, then we will notice it after 20 seconds (because the responsiveness timer started as soon as the tab started loading, given that the tab was in the background).

&gt;&gt; Source/WebKit2/UIProcess/BackgroundWebProcessResponsivenessTimer.cpp:70
&gt;&gt; +            page-&gt;terminateProcess(WebPageProxy::TerminationReason::UnresponsiveWhileInBackground);
&gt; 
&gt; Are there possible race conditions here? I don&apos;t know what calling terminateProcess could lead to. Could the other pages in the process get notification that the process has terminated and then delete themselves before you get a chance to mark them with UnresponsiveWhileInBackground? Could they be removed from m_webProcessProxy.m_pageMap while you&apos;re still iterating over it (leading to the iterator becoming invalid, or the pages returned from it being invalid)? Could the WebProcessProxy that m_webProcessProxy refers to be deleted out from under you (you&apos;re not doing anything to protect its lifetime)?
&gt; 
&gt; Or is all that safely deferred until timerFired is done?

This could indeed be unsafe if the client were to mess with the pages in a delegate. I think I will have to copy the pages before looping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278286</commentid>
    <comment_count>6</comment_count>
      <attachid>301941</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-17 09:14:59 -0800</bug_when>
    <thetext>Created attachment 301941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278287</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-17 09:16:32 -0800</bug_when>
    <thetext>Attachment 301941 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebProcessProxy.cpp:106:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278307</commentid>
    <comment_count>8</comment_count>
      <attachid>301951</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-17 10:19:46 -0800</bug_when>
    <thetext>Created attachment 301951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278309</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-17 10:22:29 -0800</bug_when>
    <thetext>Attachment 301951 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebProcessProxy.cpp:106:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278323</commentid>
    <comment_count>10</comment_count>
      <attachid>301941</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2017-02-17 10:53:28 -0800</bug_when>
    <thetext>Comment on attachment 301941
Patch

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

&gt; Source/WebKit2/UIProcess/BackgroundWebProcessResponsivenessTimer.cpp:34
&gt; +static const std::chrono::seconds maximumInterval { 14400 }; // 4 hours.

Per conversation I like 8hrs. :-)

&gt; Source/WebKit2/UIProcess/WebProcessProxy.cpp:274
&gt; +    updateBackgroundResponsivenessTimer();

Is this call not redundant?

When a page is created/destroyed, if it changes the visible page count that automatically triggers updateBackgroundResponsivenessTimer. If it doesn&apos;t nothing to do.

I guess you do need a one time updateBackgroundResponsivenessTimer when the WebProcessProxy is first created (or the first page added) to get the timer going in the first place – maybe that could be from the constructor?

Do we need any special handling around process disconnect / reconnect? (If the processes crashes should we be suspending the timer.)

&gt; Source/WebKit2/UIProcess/WebProcessProxy.cpp:282
&gt; +    updateBackgroundResponsivenessTimer();

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278334</commentid>
    <comment_count>11</comment_count>
      <attachid>301941</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-17 11:08:44 -0800</bug_when>
    <thetext>Comment on attachment 301941
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/BackgroundWebProcessResponsivenessTimer.cpp:34
&gt;&gt; +static const std::chrono::seconds maximumInterval { 14400 }; // 4 hours.
&gt; 
&gt; Per conversation I like 8hrs. :-)

Yes, this is taken care of in the latest iteration.

&gt;&gt; Source/WebKit2/UIProcess/WebProcessProxy.cpp:274
&gt;&gt; +    updateBackgroundResponsivenessTimer();
&gt; 
&gt; Is this call not redundant?
&gt; 
&gt; When a page is created/destroyed, if it changes the visible page count that automatically triggers updateBackgroundResponsivenessTimer. If it doesn&apos;t nothing to do.
&gt; 
&gt; I guess you do need a one time updateBackgroundResponsivenessTimer when the WebProcessProxy is first created (or the first page added) to get the timer going in the first place – maybe that could be from the constructor?
&gt; 
&gt; Do we need any special handling around process disconnect / reconnect? (If the processes crashes should we be suspending the timer.)

This function is called when a page&apos;s process has crashed and we reconnect it to a fresh WebProcess.

Our policy to start the responsiveness timer is that:
1. There should be pages
2. There should be no-visible pages

In the case of a page crash and then reconnect, this method will be called. It is possible that when this is called, the page is not visible and we want to start the responsiveness timer. So I do not think this is redundant.

&gt;&gt; Source/WebKit2/UIProcess/WebProcessProxy.cpp:282
&gt;&gt; +    updateBackgroundResponsivenessTimer();
&gt; 
&gt; ditto

If you remove the last page that was visible, and they are still pages, then we want to start the responsiveness timer.
If we remove the last page (i.e. the process has no more pages), we want to stop the responsiveness timer.

So I think his call is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278750</commentid>
    <comment_count>12</comment_count>
      <attachid>301951</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-02-19 12:29:50 -0800</bug_when>
    <thetext>Comment on attachment 301951
Patch

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

&gt; Source/WebKit2/UIProcess/BackgroundWebProcessResponsivenessTimer.cpp:34
&gt; +static const std::chrono::seconds initialInterval { 20 };
&gt; +static const std::chrono::seconds maximumInterval { 28800 }; // 8 hours.

These are better written as

static const std::chrono::seconds initialInterval { 20s };
static const std::chrono::seconds maximumInterval { 8h };

No need for comment.

&gt; Source/WebKit2/UIProcess/BackgroundWebProcessResponsivenessTimer.h:33
&gt; +class BackgroundWebProcessResponsivenessTimer {

It has a timer but is it a timer? Maybe UnresponsiveWebProcessTerminator or similar would describe it better?

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1592
&gt; +            m_process-&gt;responsivenessTimer().stop();

...especially since we have a ResponsivenessTimer already that is something else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278780</commentid>
    <comment_count>13</comment_count>
      <attachid>302099</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-19 16:23:06 -0800</bug_when>
    <thetext>Created attachment 302099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278781</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-19 16:24:41 -0800</bug_when>
    <thetext>Attachment 302099 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebProcessProxy.cpp:106:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278785</commentid>
    <comment_count>15</comment_count>
      <attachid>302099</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-19 17:03:09 -0800</bug_when>
    <thetext>Comment on attachment 302099
Patch

Rejecting attachment 302099 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;, 302099, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebKit2/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/3156555</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278800</commentid>
    <comment_count>16</comment_count>
      <attachid>302105</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-19 18:02:52 -0800</bug_when>
    <thetext>Created attachment 302105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278801</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-19 18:05:38 -0800</bug_when>
    <thetext>Attachment 302105 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebProcessProxy.cpp:106:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278809</commentid>
    <comment_count>18</comment_count>
      <attachid>302105</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-19 18:40:27 -0800</bug_when>
    <thetext>Comment on attachment 302105
Patch

Clearing flags on attachment: 302105

Committed r212619: &lt;http://trac.webkit.org/changeset/212619&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278810</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-19 18:40:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278811</commentid>
    <comment_count>20</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-02-19 18:44:33 -0800</bug_when>
    <thetext>What’s the rationale behind reporting these via the API differently from how termination of a Web process by the OS due to memory pressure is reported to the client?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278813</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-19 18:49:32 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; What’s the rationale behind reporting these via the API differently from how
&gt; termination of a Web process by the OS due to memory pressure is reported to
&gt; the client?

Can you clarify? We do call the processDidCrash client delegate in most cases. The only case we opted not to call this delegate is when the tab has never been visible. We thought it was not worth displaying a crash banner in this case since it is not useful to the user. To the user, it will just look as if the tab started loading when he switched to it, which is not surprising behavior in case of session restore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278815</commentid>
    <comment_count>22</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-02-19 18:59:32 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; What’s the rationale behind reporting these via the API differently from how
&gt; &gt; termination of a Web process by the OS due to memory pressure is reported to
&gt; &gt; the client?
&gt; 
&gt; Can you clarify? We do call the processDidCrash client delegate in most
&gt; cases. The only case we opted not to call this delegate is when the tab has
&gt; never been visible.

And that differs from the case where the OS would have killed such a Web content process, I believe, which seems like an arbitrary inconsistency.

&gt; We thought it was not worth displaying a crash banner in
&gt; this case since it is not useful to the user.

Displaying crash UI is the client app’s domain. I think it’s best if the framework faithfully, or at least consistently, represents to the client what is happening.

It seems like this change also introduces another API curiosity: a navigation (the reload) triggered not by the user nor by the webpage nor by the API. It seems like this could be confusing to the client’s navigation delegate, depending on how it’s reported (what is the navigation action being reported by the API in this case?).

&gt; To the user, it will just look
&gt; as if the tab started loading when he switched to it, which is not
&gt; surprising behavior in case of session restore.

I do think that what things look like “to the user” is really the domain of the app, not the framework. Admittedly, this new behavior is opt-in, so apps sort of know what they’re signing up for when they opt in, but it seems like a weird contract. Consider an app like an email client, that after initially loading an email message in an off-screen web view performs some operations that read or modify the content. It may not know to repeat those operations after an automatic reload happened. Or, if it naively assumes that email messages don’t reload, then it may erroneously repeat something that shouldn’t be repeated (say: add a calendar event from an email message).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278816</commentid>
    <comment_count>23</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-02-19 19:03:00 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; I do think that what things look like “to the user” is really the domain of
&gt; the app, not the framework. Admittedly, this new behavior is opt-in, so apps
&gt; sort of know what they’re signing up for when they opt in, but it seems like
&gt; a weird contract. Consider an app like an email client, that after initially
&gt; loading an email message in an off-screen web view performs some operations
&gt; that read or modify the content. It may not know to repeat those operations
&gt; after an automatic reload happened. Or, if it naively assumes that email
&gt; messages don’t reload, then it may erroneously repeat something that
&gt; shouldn’t be repeated (say: add a calendar event from an email message).

Further, consider that the email client executes some JavaScript code when an email message loads (in the offscreen web view) and that it’s this code that causes the Web process to become unresponsive. Now, the email app may have a failsafe mechanism that after some number of crashes of the Web process, it stops trying to reload the message into it. But if it is not aware of these crashes nor of the unresponsiveness that induced them, then it may just repeatedly enter the high-CPU-usage condition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278826</commentid>
    <comment_count>24</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-02-19 19:24:33 -0800</bug_when>
    <thetext>Given that there is already API for reporting to the client app that a Web process is unresponsive, and given that this new API is opt-in, it seems plainly redundant. An app that wants this behavior can just implement it using the existing API.

It seems like the issue this change was meant to address is that we only classify a Web process as “unresponsive” if someone is actually expecting a response from it, but off-screen web views may not be expected to respond, and therefor may be “unresponsive” for extended periods of time. It seems like this may also be the case for an on-screen web view, if it’s done loading and no user interaction is taking place. So really, shouldn’t we just address this by expanding the notion of “unresponsive” to include “would have been unresponsive if anyone actually bothered to ask it to do anything”?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278827</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-19 19:29:09 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; What’s the rationale behind reporting these via the API differently from how
&gt; &gt; &gt; termination of a Web process by the OS due to memory pressure is reported to
&gt; &gt; &gt; the client?
&gt; &gt; 
&gt; &gt; Can you clarify? We do call the processDidCrash client delegate in most
&gt; &gt; cases. The only case we opted not to call this delegate is when the tab has
&gt; &gt; never been visible.
&gt; 
&gt; And that differs from the case where the OS would have killed such a Web
&gt; content process, I believe, which seems like an arbitrary inconsistency.

To be clear, the part that is inconsistent and when we decide to reload instead of calling processDidCrash, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278828</commentid>
    <comment_count>26</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-02-19 19:30:22 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #22)
&gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; &gt; What’s the rationale behind reporting these via the API differently from how
&gt; &gt; &gt; &gt; termination of a Web process by the OS due to memory pressure is reported to
&gt; &gt; &gt; &gt; the client?
&gt; &gt; &gt; 
&gt; &gt; &gt; Can you clarify? We do call the processDidCrash client delegate in most
&gt; &gt; &gt; cases. The only case we opted not to call this delegate is when the tab has
&gt; &gt; &gt; never been visible.
&gt; &gt; 
&gt; &gt; And that differs from the case where the OS would have killed such a Web
&gt; &gt; content process, I believe, which seems like an arbitrary inconsistency.
&gt; 
&gt; To be clear, the part that is inconsistent and when we decide to reload
&gt; instead of calling processDidCrash, right?

Right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278829</commentid>
    <comment_count>27</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-19 19:30:54 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; What’s the rationale behind reporting these via the API differently from how
&gt; &gt; &gt; termination of a Web process by the OS due to memory pressure is reported to
&gt; &gt; &gt; the client?
&gt; &gt; 
&gt; &gt; Can you clarify? We do call the processDidCrash client delegate in most
&gt; &gt; cases. The only case we opted not to call this delegate is when the tab has
&gt; &gt; never been visible.
&gt; 
&gt; And that differs from the case where the OS would have killed such a Web
&gt; content process, I believe, which seems like an arbitrary inconsistency.
&gt; 
&gt; &gt; We thought it was not worth displaying a crash banner in
&gt; &gt; this case since it is not useful to the user.
&gt; 
&gt; Displaying crash UI is the client app’s domain. I think it’s best if the
&gt; framework faithfully, or at least consistently, represents to the client
&gt; what is happening.

I think this is a good point. I&apos;ll discuss this with Gavin next week and he suggested this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278830</commentid>
    <comment_count>28</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-19 19:36:43 -0800</bug_when>
    <thetext>Note that part of the reason we wanted to do this in WebKit instead of client side is:
1. The next step is to kill processes that use too much CPU in the background too, not just unresponsive ones.
2. I believe doing this on client side is a bit more awkward because I don&apos;t think there is an API abstraction for a WebContent process, only WKPages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278832</commentid>
    <comment_count>29</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-02-19 19:42:45 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; Note that part of the reason we wanted to do this in WebKit instead of
&gt; client side is:
&gt; 1. The next step is to kill processes that use too much CPU in the
&gt; background too, not just unresponsive ones.

I can see this as a natural extension of the operating system’s existing behavior of killing processes when under memory pressure, so it seems OK if the framework does it and reports it to the client the same way.

&gt; 2. I believe doing this on client side is a bit more awkward because I don&apos;t
&gt; think there is an API abstraction for a WebContent process, only WKPages.

Advanced clients already take process-sharing considerations into account when they respond to unresponsiveness (Safari on macOS is one such client that I know of, and I think the iOS version does that too). Perhaps the API that allows them to do this can be made better. Less advanced clients are probably going to only ever have one web view per process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278927</commentid>
    <comment_count>30</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-20 07:36:45 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; Given that there is already API for reporting to the client app that a Web
&gt; process is unresponsive

Really? What&apos;s that API?

Mildly-related problem: We have an issue in Epiphany where attempting to Stop or close an unresponsive web process takes a very long time (I think 30 seconds). It would be useful for us to have a way to detect this and kill the process immediately. I do think this should really be handled by WebKit, not the application, though: if the web process doesn&apos;t respond to Stop or close within a second or two, something&apos;s gone wrong and it surely needs to be killed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278929</commentid>
    <comment_count>31</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-02-20 07:48:02 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #24)
&gt; &gt; Given that there is already API for reporting to the client app that a Web
&gt; &gt; process is unresponsive
&gt; 
&gt; Really? What&apos;s that API?

_webViewWebProcessDidBecomeUnresponsive: in WKNavigationDelegatePrivate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278951</commentid>
    <comment_count>32</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-20 09:14:59 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; _webViewWebProcessDidBecomeUnresponsive: in WKNavigationDelegatePrivate.

OK thanks, bug #168604.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279478</commentid>
    <comment_count>33</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-21 12:42:28 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #22)
&gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; &gt; What’s the rationale behind reporting these via the API differently from how
&gt; &gt; &gt; &gt; termination of a Web process by the OS due to memory pressure is reported to
&gt; &gt; &gt; &gt; the client?
&gt; &gt; &gt; 
&gt; &gt; &gt; Can you clarify? We do call the processDidCrash client delegate in most
&gt; &gt; &gt; cases. The only case we opted not to call this delegate is when the tab has
&gt; &gt; &gt; never been visible.
&gt; &gt; 
&gt; &gt; And that differs from the case where the OS would have killed such a Web
&gt; &gt; content process, I believe, which seems like an arbitrary inconsistency.
&gt; &gt; 
&gt; &gt; &gt; We thought it was not worth displaying a crash banner in
&gt; &gt; &gt; this case since it is not useful to the user.
&gt; &gt; 
&gt; &gt; Displaying crash UI is the client app’s domain. I think it’s best if the
&gt; &gt; framework faithfully, or at least consistently, represents to the client
&gt; &gt; what is happening.
&gt; 
&gt; I think this is a good point. I&apos;ll discuss this with Gavin next week and he
&gt; suggested this.

Gavin is OK always reporting this to the client as a crash.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301856</attachid>
            <date>2017-02-16 16:49:23 -0800</date>
            <delta_ts>2017-02-17 09:14:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168479-20170216164646.patch</filename>
            <type>text/plain</type>
            <size>32079</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmM5YjE1MDVkYWE5OWJj
NDFkNjgzZTU1MGViMTgyNjg3Mjg1NWI1NS4uZmYyZDAzZjcxODFlODUzZWFiMzYzNzQxZTQwODQ4
MDA0MjllYWI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE3LTAyLTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gU3VwcG9ydCB0ZXJt
aW5hdGlvbiBvZiB1bnJlc3BvbnNpdmUgV2ViQ29udGVudCBwcm9jZXNzZXMgdGhhdCBhcmUgaW4g
dGhlIGJhY2tncm91bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2ODQ3OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA1NTg3NDU+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCB0ZXJtaW5h
dGlvbiBvZiB1bnJlc3BvbnNpdmUgV2ViQ29udGVudCBwcm9jZXNzZXMgdGhhdCBhcmUgaW4gdGhl
IGJhY2tncm91bmQuCisgICAgICAgIFRoaXMgcHJvdGVjdHMgdXMgYWdhaW5zdCBjYXNlcyB3aGVy
ZSBhIGJhY2tncm91bmQgdGFiIGlzIHVucmVzcG9uc2l2ZSBhbmQgaGFzIGhpZ2ggQ1BVCisgICAg
ICAgIHVzYWdlLCB0aHVzIGRyYWluaW5nIHRoZSBiYXR0ZXJ5IHdpdGhvdXQgdGhlIHVzZXIga25v
d2luZyBhYm91dCBpdCAoZS5nLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk4MDgwMDU+KS4K
KworICAgICAgICBUaGUgZmVhdHVyZSB3b3JrcyBhcyBmb2xsb3dzOgorICAgICAgICAtIElmIGEg
V2ViUHJvY2Vzc1Byb3h5IGhhcyBwYWdlcyBidXQgbm9uZSBvZiB0aGVtIGFyZSB2aXNpYmxlLCB0
aGVuIGl0IHdpbGwgY2hlY2sKKyAgICAgICAgICByZWd1bGFybHkgaWYgaXRzIGFzc29jaWF0ZWQg
V2ViQ29udGVudCBwcm9jZXNzIGlzIHN0aWxsIHJlc3BvbnNpdmUuCisgICAgICAgIC0gRXZlcnkg
dGltZSB3ZSBmaW5kIHRoYXQgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBpcyByZXNwb25zaXZlLCB3
ZSBleHBvbmVudGlhbGx5CisgICAgICAgICAgYmFjayBvZmYgdGhlIHRpbWVyIHRvIGF2b2lkIHdh
a2luZyB1cCB0aGUgcHJvY2VzcyB0b28gb2Z0ZW4uIFRoZSB0aW1lciBpbml0aWFsbHkKKyAgICAg
ICAgICB1c2VzIGEgMjAgc2Vjb25kcyBpbnRlcnZhbCBhbmQgY2FuIGJhY2sgb2ZmIHVwIHRvIDI0
IGhvdXJzLgorICAgICAgICAtIElmIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgaXMgdW5yZXNwb25z
aXZlLCB0aGVuIHdlIHRlcm1pbmF0ZSBpdC4gTm8gbm90aWZpY2F0aW9uCisgICAgICAgICAgaXMg
c2hvd24gdG8gdGhlIHVzZXIgYW5kIHRoZSB0ZXJtaW5hdGlvbiBpcyBub3QgaW1tZWRpYXRlbHkg
b2JzZXJ2YWJsZSBzaW5jZSB0aGUKKyAgICAgICAgICB0YWIgaXMgbm90IHZpc2libGUgYW5kIGl0
cyB0aXRsZSByZW1haW5zLiBUaGUgdGFiIGlzIG5vdCBpbW1lZGlhdGVseSByZWxvYWRlZAorICAg
ICAgICAgIHNvIGFzIHRvIGF2b2lkIGdldHRpbmcgYmFjayBpbnRvIGEgYmFkIHN0YXRlIGluIHRo
ZSBiYWNrZ3JvdW5kIChhbmQgaGF2ZSBhCisgICAgICAgICAgeW8teW8gZWZmZWN0KS4KKyAgICAg
ICAgLSBJZiB0aGUgdXNlciBzd2l0Y2hlcyB0byBhIHRhYiB0aGF0IHdhcyBwcmV2aW91c2x5IGtp
bGxlZCBmb3IgYmVpbmcgdW5yZXNwb25zaXZlCisgICAgICAgICAgd2hpbGUgaW4gdGhlIGJhY2tn
cm91bmQsIHdlIHdpbGwgdGhlbiByZWxvYWQgdGhlIHRhYiBpbiBhIGZyZXNoIFdlYkNvbnRlbnQK
KyAgICAgICAgICBwcm9jZXNzLiBUaGUgY3Jhc2ggYmFubmVyIHdpbGwgb25seSBiZSBzaG93biBp
ZiB0aGUgdGFiIGhhcyBldmVyIGJlZW4gdmlzaWJsZS4KKyAgICAgICAgICBJZiBpdCB3YXNuJ3Qg
ZXZlciB2aXNpYmxlIChlLmcuIHNlc3Npb24gcmVzdG9yZSBjYXNlKSwgdGhlbiBpdCB3aWxsIGxv
b2sgYXMgaWYKKyAgICAgICAgICB0aGUgdGFiIGxvYWRzIGZvciB0aGUgZmlyc3QgdGltZSB3aGVu
IHRoZSB1c2VyIHN3aXRjaGVzIHRvIGl0LgorCisgICAgICAgIFRoZSBmdW5jdGlvbmFsaXR5IGlz
IGRpc2FibGVkIGJ5IGRlZmF1bHQgYW5kIGNhbiBiZSBlbmFibGVkIGJ5IHRoZSBjbGllbnQgdmlh
IHRoZSBuZXcKKyAgICAgICAgV0tDb250ZXh0U2V0VW5yZXNwb25zaXZlQmFja2dyb3VuZFByb2Nl
c3Nlc1Rlcm1pbmF0aW9uRW5hYmxlZCgpIHByaXZhdGUgQVBJLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRTZXRVbnJlc3BvbnNpdmVCYWNrZ3Jv
dW5kUHJvY2Vzc2VzVGVybWluYXRpb25FbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9CYWNrZ3JvdW5kV2Vi
UHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
QmFja2dyb3VuZFdlYlByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyOjpCYWNrZ3JvdW5kV2ViUHJv
Y2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIpOgorICAgICAgICAoV2ViS2l0OjpCYWNrZ3JvdW5kV2Vi
UHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXI6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYktp
dDo6QmFja2dyb3VuZFdlYlByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyOjp0aW1lckZpcmVkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQmFja2dyb3VuZFdlYlByb2Nlc3NSZXNwb25zaXZlbmVzc1Rp
bWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3Bv
bnNpdmVuZXNzVGltZXI6OnNob3VsZEJlQWN0aXZlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWF0dGFjaFRv
V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVsb2FkQWZ0ZXJC
ZWluZ0tpbGxlZEluQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojp0ZXJtaW5hdGVQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KToKKyAgICAgICAg
KFdlYktpdDo6bV9iYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6YWRkRXhpc3RpbmdXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5Ojp1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OnZpc2libGVQYWdlQ291bnQpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAxNy0wMi0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMTIz
OTQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggMjQ0ZmYzOTFlNjg1NDRkM2UyMTIwYjY0
ODg5ZDVjNDZjZDI0YTU3Ny4uMThkMWUyYjk3ODNkN2IyYTU1NzNiZDdlZjNlYjkyYmEwMTYyNjRm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcApAQCAtOTYsNiArOTYsNyBAQCBSZWY8UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkoKQogICAg
IGNvcHktPm1fbWF4aW11bVByb2Nlc3NDb3VudCA9IHRoaXMtPm1fbWF4aW11bVByb2Nlc3NDb3Vu
dDsKICAgICBjb3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hlTW9kZWw7CiAgICAgY29w
eS0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkID0gdGhpcy0+bV9kaXNr
Q2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkOworICAgIGNvcHktPm1fdW5yZXNwb25z
aXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxlZCA9IHRoaXMtPm1fdW5yZXNw
b25zaXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxlZDsKICAgICBjb3B5LT5t
X2Rpc2tDYWNoZVNpemVPdmVycmlkZSA9IHRoaXMtPm1fZGlza0NhY2hlU2l6ZU92ZXJyaWRlOwog
ICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHRoaXMtPm1fYXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1
YmRpcmVjdG9yeU5hbWUgPSB0aGlzLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVj
dG9yeU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAppbmRleCAxMDQwN2RhMTkwNTAwOWIzN2Q3YWFi
ZjcwMThmMzZjMzQxN2ZjNjIxLi5kNDJiNzQ5Yjk3Zjk4MmIwNWZkNDYwNWU4ZWZjZDViZTc5MzYz
MzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKQEAgLTU1LDYgKzU1LDkgQEAgcHVibGljOgogICAg
IGJvb2wgZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZDsgfQogICAgIHZvaWQg
c2V0RGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpIHsg
bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkID0gZW5hYmxlZDsgfQogCisg
ICAgYm9vbCB1bnJlc3BvbnNpdmVCYWNrZ3JvdW5kUHJvY2Vzc2VzVGVybWluYXRpb25FbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV91bnJlc3BvbnNpdmVCYWNrZ3JvdW5kUHJvY2Vzc2VzVGVybWlu
YXRpb25FbmFibGVkOyB9CisgICAgdm9pZCBzZXRVbnJlc3BvbnNpdmVCYWNrZ3JvdW5kUHJvY2Vz
c2VzVGVybWluYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3VucmVzcG9uc2l2ZUJhY2tn
cm91bmRQcm9jZXNzZXNUZXJtaW5hdGlvbkVuYWJsZWQgPSBlbmFibGVkOyB9CisKICAgICBXZWJL
aXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVNb2RlbDsg
fQogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkg
eyBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOyB9CiAKQEAgLTEyMSw2ICsxMjQsNyBAQCBwcml2
YXRlOgogCiAgICAgdW5zaWduZWQgbV9tYXhpbXVtUHJvY2Vzc0NvdW50IHsgMCB9OwogICAgIGJv
b2wgbV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fdW5yZXNwb25zaXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxl
ZCB7IGZhbHNlIH07CiAgICAgV2ViS2l0OjpDYWNoZU1vZGVsIG1fY2FjaGVNb2RlbCB7IFdlYktp
dDo6Q2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyIH07CiAgICAgaW50NjRfdCBtX2Rpc2tDYWNo
ZVNpemVPdmVycmlkZSB7IC0xIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5jcHAKaW5kZXggNzQ4MmRlNjgxNGQ4YjJmZjBhMmExMTQ4Y2M3MWU3OWQwYTkx
Yzc4Ni4uMmNjZTRkYTUwMjU3MzRlODIzZDQ4ZGM3ZjBjMjA0MzRhOGJjNDQ2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTM5Nyw2ICszOTcs
MTEgQEAgdm9pZCBXS0NvbnRleHRTZXREaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFi
bGVkKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLAogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+Y29u
ZmlndXJhdGlvbigpLnNldERpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQodmFs
dWUpOwogfQogCit2b2lkIFdLQ29udGV4dFNldFVucmVzcG9uc2l2ZUJhY2tncm91bmRQcm9jZXNz
ZXNUZXJtaW5hdGlvbkVuYWJsZWQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGJvb2wgdmFsdWUp
Cit7CisgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5jb25maWd1cmF0aW9uKCkuc2V0VW5yZXNwb25z
aXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxlZCh2YWx1ZSk7Cit9CisKIFdL
Q29va2llTWFuYWdlclJlZiBXS0NvbnRleHRHZXRDb29raWVNYW5hZ2VyKFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmKQogewogICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnN1cHBs
ZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCmluZGV4IDY3NDJmZmJhMTM3NmRlYzEz
YjNmY2NjYTgzNWI4N2U0MGNjOTI2ZjUuLjRkODA0OGFmYzlhNzAxMTMzY2Q4NTc2YzFhMjczMGQz
N2UwOGIxZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dFByaXZhdGUuaApAQCAtNjIsNiArNjIsOCBAQCBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRT
ZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbihXS0NvbnRleHRSZWYgY29udAog
CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXREaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRp
b25FbmFibGVkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBib29sIHZhbHVlKTsKIAorV0tfRVhQT1JU
IHZvaWQgV0tDb250ZXh0U2V0VW5yZXNwb25zaXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0
aW9uRW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCB2YWx1ZSk7CisKIFdLX0VYUE9S
VCB2b2lkIFdLQ29udGV4dFNldEljb25EYXRhYmFzZVBhdGgoV0tDb250ZXh0UmVmIGNvbnRleHQs
IFdLU3RyaW5nUmVmIGljb25EYXRhYmFzZVBhdGgpOwogCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRl
eHRBbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoV0tDb250ZXh0UmVmIGNvbnRl
eHQsIFdLQ2VydGlmaWNhdGVJbmZvUmVmIGNlcnRpZmljYXRlLCBXS1N0cmluZ1JlZiBob3N0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNrZ3JvdW5kV2ViUHJvY2Vz
c1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0JhY2tn
cm91bmRXZWJQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTM1ZTg3
YTE2ZmI4Y2E2MmZjMmM4NTMwZDE5MTQxYmRlZTI3MjcwMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNz
VGltZXIuY3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQmFja2dyb3VuZFdlYlByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmgi
CisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMg
Y29uc3Qgc3RkOjpjaHJvbm86OnNlY29uZHMgaW5pdGlhbEludGVydmFsIHsgMjAgfTsKK3N0YXRp
YyBjb25zdCBzdGQ6OmNocm9ubzo6c2Vjb25kcyBtYXhpbXVtSW50ZXJ2YWwgeyA4NjQwMCB9OyAv
LyAyNCBob3Vycy4KKworQmFja2dyb3VuZFdlYlByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyOjpC
YWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIoV2ViUHJvY2Vzc1Byb3h5JiB3
ZWJQcm9jZXNzUHJveHkpCisgICAgOiBtX3dlYlByb2Nlc3NQcm94eSh3ZWJQcm9jZXNzUHJveHkp
CisgICAgLCBtX2ludGVydmFsKGluaXRpYWxJbnRlcnZhbCkKKyAgICAsIG1fdGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmQmFja2dyb3VuZFdlYlByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVy
Ojp0aW1lckZpcmVkKQoreworfQorCit2b2lkIEJhY2tncm91bmRXZWJQcm9jZXNzUmVzcG9uc2l2
ZW5lc3NUaW1lcjo6dXBkYXRlU3RhdGUoKQoreworICAgIGlmICghc2hvdWxkQmVBY3RpdmUoKSkg
eworICAgICAgICBpZiAobV90aW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAgICAgICBtX2ludGVy
dmFsID0gaW5pdGlhbEludGVydmFsOworICAgICAgICAgICAgbV90aW1lci5zdG9wKCk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV90aW1lci5pc0FjdGl2
ZSgpKQorICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChtX2ludGVydmFsKTsKK30KKwordm9p
ZCBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXI6OnRpbWVyRmlyZWQoKQor
eworICAgIEFTU0VSVChzaG91bGRCZUFjdGl2ZSgpKTsKKyAgICBtX3dlYlByb2Nlc3NQcm94eS5p
c1Jlc3BvbnNpdmUoW3RoaXNdKGJvb2wgcHJvY2Vzc0lzUmVzcG9uc2l2ZSkgeworICAgICAgICBp
ZiAocHJvY2Vzc0lzUmVzcG9uc2l2ZSkgeworICAgICAgICAgICAgLy8gRXhwb25lbnRpYWwgYmFj
a29mZiB0byBhdm9pZCB3YWtpbmcgdXAgdGhlIHByb2Nlc3MgdG9vIG9mdGVuLgorICAgICAgICAg
ICAgbV9pbnRlcnZhbCA9IHN0ZDo6bWluKG1faW50ZXJ2YWwgKiAyLCBtYXhpbXVtSW50ZXJ2YWwp
OworICAgICAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QobV9pbnRlcnZhbCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQZXJm
b3JtYW5jZUxvZ2dpbmcsICJLaWxsaW5nIGEgYmFja2dyb3VuZCBXZWJQcm9jZXNzIGJlY2F1c2Ug
aXQgaXMgbm90IHJlc3BvbnNpdmUiKTsKKyAgICAgICAgZm9yIChhdXRvKiBwYWdlIDogbV93ZWJQ
cm9jZXNzUHJveHkucGFnZXMoKSkKKyAgICAgICAgICAgIHBhZ2UtPnRlcm1pbmF0ZVByb2Nlc3Mo
V2ViUGFnZVByb3h5OjpUZXJtaW5hdGlvblJlYXNvbjo6VW5yZXNwb25zaXZlV2hpbGVJbkJhY2tn
cm91bmQpOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVu
ZXNzVGltZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNrZ3JvdW5kV2ViUHJvY2Vz
c1Jlc3BvbnNpdmVuZXNzVGltZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NGRkYjJiZjZkMWZlNGZlNmVlY2Nk
OWZiNzYzNDMxZjJhMGI0MjYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0JhY2tncm91bmRXZWJQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oCkBAIC0wLDAg
KzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IEJhY2tncm91bmRXZWJQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1l
cihXZWJQcm9jZXNzUHJveHkmKTsKKyAgICB2b2lkIHVwZGF0ZVN0YXRlKCk7CisKK3ByaXZhdGU6
CisgICAgdm9pZCB0aW1lckZpcmVkKCk7CisgICAgYm9vbCBzaG91bGRCZUFjdGl2ZSgpIGNvbnN0
IHsgcmV0dXJuICFtX3dlYlByb2Nlc3NQcm94eS52aXNpYmxlUGFnZUNvdW50KCkgJiYgbV93ZWJQ
cm9jZXNzUHJveHkucGFnZUNvdW50KCk7IH0KKworICAgIFdlYlByb2Nlc3NQcm94eSYgbV93ZWJQ
cm9jZXNzUHJveHk7CisgICAgc3RkOjpjaHJvbm86OnNlY29uZHMgbV9pbnRlcnZhbDsKKyAgICBS
dW5Mb29wOjpUaW1lcjxCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXI+IG1f
dGltZXI7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IGIzZDY0ODFjZmVjMTMwZGI5MGEyYmQ5Y2M1MDAzZTAyZmNjODY1MGYuLjA5M2RhYjY1
OTljMmViMTcyOGQxNjIzNGU4N2ZkMGQwMWRlMWUwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03MTYsNiArNzE2LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKCkKICAgICBBU1NFUlQobV9wcm9jZXNzLT5zdGF0ZSgp
ID09IFdlYlByb2Nlc3NQcm94eTo6U3RhdGU6OlRlcm1pbmF0ZWQpOwogCiAgICAgbV9pc1ZhbGlk
ID0gdHJ1ZTsKKyAgICBtX3dhc0tpbGxlZEZvckJlaW5nVW5yZXNwb25zaXZlV2hpbGVJbkJhY2tn
cm91bmQgPSBmYWxzZTsKICAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UobV9wYWdlSUQpOwog
ICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwogCkBAIC0xNTE3LDE0ICsxNTE4
LDMwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3RGlkRW50ZXJXaW5kb3coKQogICAgIH0KIH0K
IAordm9pZCBXZWJQYWdlUHJveHk6OnJlbG9hZEFmdGVyQmVpbmdLaWxsZWRJbkJhY2tncm91bmQo
KQoreworICAgIEFTU0VSVCghaXNWYWxpZCgpKTsKKworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoIiVwIC0gUmVsb2FkaW5nIHRhYiB0aGF0IHdhcyBraWxsZWQgaW4gdGhlIGJhY2tncm91bmQi
LCB0aGlzKTsKKworICAgIC8vIE9ubHkgcmVwb3J0IGFzIGEgY3Jhc2ggaWYgdGhlIHBhZ2Ugd2Fz
IGV2ZXIgdmlzaWJsZSwgb3RoZXJ3aXNlIHNpbGVudGx5IHJlbG9hZC4KKyAgICBpZiAobV9oYXNF
dmVyQmVlblZpc2libGUpCisgICAgICAgIHByb2Nlc3NEaWRDcmFzaCgpOworICAgIGVsc2UKKyAg
ICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3NGb3JSZWxvYWQoKTsKK30KKwogdm9pZCBXZWJQYWdl
UHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+aW52YWxpZGF0ZSgpOwog
I2VuZGlmCiAKLSAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICBpZiAoIWlzVmFsaWQoKSkgeworICAg
ICAgICBpZiAobV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgJiBBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGUgJiYgbV93YXNLaWxsZWRGb3JCZWluZ1VucmVzcG9uc2l2ZVdoaWxl
SW5CYWNrZ3JvdW5kKQorICAgICAgICAgICAgcmVsb2FkQWZ0ZXJCZWluZ0tpbGxlZEluQmFja2dy
b3VuZCgpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgLy8gSWYgdGhlIHZpc2liaWxp
dHkgc3RhdGUgbWF5IGhhdmUgY2hhbmdlZCwgdGhlbiBzbyBtYXkgdGhlIHZpc3VhbGx5IGlkbGUg
JiBvY2NsdWRlZCBhZ25vc3RpYyBzdGF0ZS4KICAgICBpZiAobV9wb3RlbnRpYWxseUNoYW5nZWRB
Y3Rpdml0eVN0YXRlRmxhZ3MgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCkBAIC0xNTU2LDE4
ICsxNTczLDI2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFu
Z2UoKQogICAgIC8vIFRoaXMgbXVzdCBoYXBwZW4gYWZ0ZXIgdGhlIFNldEFjdGl2aXR5U3RhdGUg
bWVzc2FnZSBpcyBzZW50LCB0byBlbnN1cmUgdGhlIHBhZ2UgdmlzaWJpbGl0eSBldmVudCBjYW4g
ZmlyZS4KICAgICB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAKLSAgICAvLyBJZiB3ZSd2ZSBzdGFy
dGVkIHRoZSByZXNwb25zaXZlbmVzcyB0aW1lciBhcyBwYXJ0IG9mIHRlbGxpbmcgdGhlIHdlYiBw
cm9jZXNzIHRvIHVwZGF0ZSB0aGUgYmFja2luZyBzdG9yZQotICAgIC8vIHN0YXRlLCBpdCBtaWdo
dCBub3Qgc2VuZCBiYWNrIGEgcmVwbHkgKHNpbmNlIGl0IHdvbid0IHBhaW50IGFueXRoaW5nIGlm
IHRoZSB3ZWIgcGFnZSBpcyBoaWRkZW4pIHNvIHdlCi0gICAgLy8gc3RvcCB0aGUgdW5yZXNwb25z
aXZlbmVzcyB0aW1lciBoZXJlLgotICAgIGlmICgoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZSkgJiYgIWlzVmlld1Zpc2libGUoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5yZXNwb25z
aXZlbmVzc1RpbWVyKCkuc3RvcCgpOwotCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBp
ZiAoKChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSAmJiAhaXNWaWV3VmlzaWJs
ZSgpKSB8fCAoKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSkgJiYgIW1f
cGFnZUNsaWVudC5pc1ZpZXdXaW5kb3dBY3RpdmUoKSkKICAgICAgICAgfHwgKChjaGFuZ2VkICYg
QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkKSAmJiAhKG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5
U3RhdGU6OklzRm9jdXNlZCkpKQogICAgICAgICByZXF1ZXN0UG9pbnRlclVubG9jaygpOwogI2Vu
ZGlmCiAKKyAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgeworICAg
ICAgICBpZiAoaXNWaWV3VmlzaWJsZSgpKSB7CisgICAgICAgICAgICBtX2hhc0V2ZXJCZWVuVmlz
aWJsZSA9IHRydWU7CisgICAgICAgICAgICBtX3Zpc2libGVQYWdlVG9rZW4gPSBtX3Byb2Nlc3Mt
PnZpc2libGVQYWdlVG9rZW4oKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fdmlz
aWJsZVBhZ2VUb2tlbiA9IG51bGxwdHI7CisKKyAgICAgICAgICAgIC8vIElmIHdlJ3ZlIHN0YXJ0
ZWQgdGhlIHJlc3BvbnNpdmVuZXNzIHRpbWVyIGFzIHBhcnQgb2YgdGVsbGluZyB0aGUgd2ViIHBy
b2Nlc3MgdG8gdXBkYXRlIHRoZSBiYWNraW5nIHN0b3JlCisgICAgICAgICAgICAvLyBzdGF0ZSwg
aXQgbWlnaHQgbm90IHNlbmQgYmFjayBhIHJlcGx5IChzaW5jZSBpdCB3b24ndCBwYWludCBhbnl0
aGluZyBpZiB0aGUgd2ViIHBhZ2UgaXMgaGlkZGVuKSBzbyB3ZQorICAgICAgICAgICAgLy8gc3Rv
cCB0aGUgdW5yZXNwb25zaXZlbmVzcyB0aW1lciBoZXJlLgorICAgICAgICAgICAgbV9wcm9jZXNz
LT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RvcCgpOworICAgICAgICB9CisgICAgfQorCiAgICAg
aWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KSB7CiAgICAgICAgIGlmIChp
c0luV2luZG93KCkpCiAgICAgICAgICAgICB2aWV3RGlkRW50ZXJXaW5kb3coKTsKQEAgLTIzNzMs
NyArMjM5OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1l
KGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lKQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShlbmNvZGluZ05hbWUpLCBtX3Bh
Z2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp0ZXJtaW5hdGVQcm9jZXNzKCkKK3ZvaWQg
V2ViUGFnZVByb3h5Ojp0ZXJtaW5hdGVQcm9jZXNzKFRlcm1pbmF0aW9uUmVhc29uIHRlcm1pbmF0
aW9uUmVhc29uKQogewogICAgIC8vIE5PVEU6IFRoaXMgdXNlcyBhIGNoZWNrIG9mIG1faXNWYWxp
ZCByYXRoZXIgdGhhbiBjYWxsaW5nIGlzVmFsaWQoKSBzaW5jZQogICAgIC8vIHdlIHdhbnQgdGhp
cyB0byBydW4gZXZlbiBmb3IgcGFnZXMgYmVpbmcgY2xvc2VkIG9yIHRoYXQgYWxyZWFkeSBjbG9z
ZWQuCkBAIC0yMzgyLDYgKzI0MDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dGVybWluYXRlUHJv
Y2VzcygpCiAKICAgICBtX3Byb2Nlc3MtPnJlcXVlc3RUZXJtaW5hdGlvbigpOwogICAgIHJlc2V0
U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoKTsKKyAgICBtX3dhc0tpbGxlZEZvckJlaW5nVW5yZXNw
b25zaXZlV2hpbGVJbkJhY2tncm91bmQgPSB0ZXJtaW5hdGlvblJlYXNvbiA9PSBUZXJtaW5hdGlv
blJlYXNvbjo6VW5yZXNwb25zaXZlV2hpbGVJbkJhY2tncm91bmQ7CiB9CiAKIFNlc3Npb25TdGF0
ZSBXZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZShjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4mIGZpbHRlcikgY29uc3QKQEAgLTU0NzcsNiArNTUwMyw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKCkKICAg
ICBtX2FjdGl2aXR5VG9rZW4gPSBudWxscHRyOwogI2VuZGlmCiAgICAgbV9wYWdlSXNVc2VyT2Jz
ZXJ2YWJsZUNvdW50ID0gbnVsbHB0cjsKKyAgICBtX3Zpc2libGVQYWdlVG9rZW4gPSBudWxscHRy
OwogCiAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CiAgICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3M2E3ZmU4Y2Nl
YjU5MDk3MjNiMTczNzQ5ZmNkZTc3NGE2OGE3NjNjLi5kY2VmOGQ1MTE4MmUwYjZlMmY3MzM1MjZj
Yjg5NjBmODY0ZTkwNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC0yMzMsNiArMjMzLDEwIEBAIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEVkaXRpbmdSYW5n
ZT4gRWRpdGluZ1JhbmdlQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBT
dHJpbmcmPiBTdHJpbmdDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cyY+IFNjcmlwdFZhbHVlQ2FsbGJhY2s7CiAKK2VudW0gVmlzaWJsZVdlYlBhZ2VDb3VudGVyVHlw
ZSB7IH07Cit1c2luZyBWaXNpYmxlV2ViUGFnZUNvdW50ZXIgPSBSZWZDb3VudGVyPFZpc2libGVX
ZWJQYWdlQ291bnRlclR5cGU+OwordXNpbmcgVmlzaWJsZVdlYlBhZ2VUb2tlbiA9IFZpc2libGVX
ZWJQYWdlQ291bnRlcjo6VG9rZW47CisKICNpZiBQTEFURk9STShHVEspCiB0eXBlZGVmIEdlbmVy
aWNDYWxsYmFjazxBUEk6OkVycm9yKj4gUHJpbnRGaW5pc2hlZENhbGxiYWNrOwogI2VuZGlmCkBA
IC02ODEsNyArNjg1LDggQEAgcHVibGljOgogCiAgICAgZG91YmxlIGVzdGltYXRlZFByb2dyZXNz
KCkgY29uc3Q7CiAKLSAgICB2b2lkIHRlcm1pbmF0ZVByb2Nlc3MoKTsKKyAgICBlbnVtIGNsYXNz
IFRlcm1pbmF0aW9uUmVhc29uIHsgVW5yZXNwb25zaXZlV2hpbGVJbkJhY2tncm91bmQsIE90aGVy
IH07CisgICAgdm9pZCB0ZXJtaW5hdGVQcm9jZXNzKFRlcm1pbmF0aW9uUmVhc29uID0gVGVybWlu
YXRpb25SZWFzb246Ok90aGVyKTsKIAogICAgIFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUoY29u
c3Qgc3RkOjpmdW5jdGlvbjxib29sIChXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+JiA9IG51bGxw
dHIpIGNvbnN0OwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IHJlc3RvcmVGcm9tU2Vzc2lv
blN0YXRlKFNlc3Npb25TdGF0ZSwgYm9vbCBuYXZpZ2F0ZSk7CkBAIC0xNTk5LDYgKzE2MDQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7CiAgICAg
dm9pZCB2aWV3RGlkTGVhdmVXaW5kb3coKTsKICAgICB2b2lkIHZpZXdEaWRFbnRlcldpbmRvdygp
OworICAgIHZvaWQgcmVsb2FkQWZ0ZXJCZWluZ0tpbGxlZEluQmFja2dyb3VuZCgpOwogCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIHZvaWQgZGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3Qo
Y29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmLCBib29sIGNvbnRlbnRQcmV2ZW50c0RlZmF1bHQs
IGNvbnN0IFVzZXJEYXRhJik7CkBAIC0xOTU0LDYgKzE5NjAsNyBAQCBwcml2YXRlOgogICAgIFVz
ZXJPYnNlcnZhYmxlUGFnZUNvdW50ZXI6OlRva2VuIG1fcGFnZUlzVXNlck9ic2VydmFibGVDb3Vu
dDsKICAgICBQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZFRva2VuIG1fcHJldmVudFByb2Nlc3NT
dXBwcmVzc2lvbkNvdW50OwogICAgIEhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0Nv
dW50ZXI6OlRva2VuIG1faGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXND
b3VudDsKKyAgICBWaXNpYmxlV2ViUGFnZVRva2VuIG1fdmlzaWJsZVBhZ2VUb2tlbjsKICAgICAg
ICAgCiAgICAgV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yIG1fc2Nyb2xsUGlubmluZ0Jl
aGF2aW9yOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxl
PiBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZTsKQEAgLTE5NzIsNiArMTk3OSw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2hhc0hhZFNlbGVjdGlvbkNoYW5nZXNGcm9tVXNlckludGVyYWN0aW9uIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fbmVlZHNIaWRkZW5Db250ZW50RWRpdGFibGVRdWlyayB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX25lZWRzUGxhaW5UZXh0UXVpcmsgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9oYXNFdmVyQmVlblZpc2libGUgeyBmYWxzZSB9OwogCiAjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCiAgICAgYm9vbCBtX2hhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRz
IHsgZmFsc2UgfTsKQEAgLTE5OTcsNiArMjAwNSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAg
IGJvb2wgbV9pc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wgeyBmYWxzZSB9OworICAgIGJvb2wg
bV93YXNLaWxsZWRGb3JCZWluZ1VucmVzcG9uc2l2ZVdoaWxlSW5CYWNrZ3JvdW5kIHsgZmFsc2Ug
fTsKICAgICAgICAgCiAgICAgV2Vha1B0ckZhY3Rvcnk8V2ViUGFnZVByb3h5PiBtX3dlYWtQdHJG
YWN0b3J5OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKaW5kZXggZTE5NGNkYTdiZjNkMjQzNjM3ODAyMGZhMWZkYmU4OGZmZThlNjliZC4uZTA1NjYw
Zjg0N2FkYTZiNzgyMThjYzMyMjMyMzI0ZWE2NGQ3MTBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJBUElGcmFtZUhhbmRsZS5oIgogI2luY2x1ZGUgIkFQSVBhZ2VHcm91cEhhbmRsZS5oIgogI2lu
Y2x1ZGUgIkFQSVBhZ2VIYW5kbGUuaCIKKyNpbmNsdWRlICJCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jl
c3BvbnNpdmVuZXNzVGltZXIuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTEwMSw2ICsx
MDIsOCBAQCBXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYg
cHJvY2Vzc1Bvb2wpCiAgICAgLCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJtaW5hdGlvbldhc0Rp
c2FibGVkKDApCiAgICAgLCBtX3Rocm90dGxlcigqdGhpcykKICAgICAsIG1faXNSZXNwb25zaXZl
KE5vT3JNYXliZTo6TWF5YmUpCisgICAgLCBtX3Zpc2libGVQYWdlQ291bnRlcihbdGhpc10oUmVm
Q291bnRlckV2ZW50KSB7IHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7IH0p
CisgICAgLCBtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKHByb2Nlc3NQb29sLmNvbmZp
Z3VyYXRpb24oKS51bnJlc3BvbnNpdmVCYWNrZ3JvdW5kUHJvY2Vzc2VzVGVybWluYXRpb25FbmFi
bGVkKCkgPyBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tncm91bmRXZWJQcm9jZXNzUmVzcG9uc2l2ZW5l
c3NUaW1lcj4oKnRoaXMpIDogbnVsbHB0cikKIHsKICAgICBXZWJQYXN0ZWJvYXJkUHJveHk6OnNp
bmdsZXRvbigpLmFkZFdlYlByb2Nlc3NQcm94eSgqdGhpcyk7CiAKQEAgLTI1NSw2ICsyNTgsOCBA
QCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNs
aWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSQogICAgIG1fcGFnZU1hcC5zZXQocGFnZUlELCB3ZWJQ
YWdlLnB0cigpKTsKICAgICBnbG9iYWxQYWdlTWFwKCkuc2V0KHBhZ2VJRCwgd2ViUGFnZS5wdHIo
KSk7CiAKKyAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOworCiAgICAg
cmV0dXJuIHdlYlBhZ2U7CiB9CiAKQEAgLTI2NSwxMiArMjcwLDE2IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjphZGRFeGlzdGluZ1dlYlBhZ2UoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCB1aW50NjRf
dCBwYWdlSUQpCiAKICAgICBtX3BhZ2VNYXAuc2V0KHBhZ2VJRCwgd2ViUGFnZSk7CiAgICAgZ2xv
YmFsUGFnZU1hcCgpLnNldChwYWdlSUQsIHdlYlBhZ2UpOworCisgICAgdXBkYXRlQmFja2dyb3Vu
ZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92
ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlEKQogewogICAgIG1fcGFnZU1hcC5yZW1vdmUocGFnZUlE
KTsKICAgICBnbG9iYWxQYWdlTWFwKCkucmVtb3ZlKHBhZ2VJRCk7CisKKyAgICB1cGRhdGVCYWNr
Z3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogICAgIAogICAgIFZlY3Rvcjx1aW50NjRfdD4g
aXRlbUlEc1RvUmVtb3ZlOwogICAgIGZvciAoYXV0byYgaWRBbmRJdGVtIDogbV9iYWNrRm9yd2Fy
ZExpc3RJdGVtTWFwKSB7CkBAIC03MDgsNiArNzE3LDExIEBAIHNpemVfdCBXZWJQcm9jZXNzUHJv
eHk6OmZyYW1lQ291bnRJblBhZ2UoV2ViUGFnZVByb3h5KiBwYWdlKSBjb25zdAogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKK2F1dG8gV2ViUHJvY2Vzc1Byb3h5Ojp2aXNpYmxlUGFnZVRva2VuKCkg
Y29uc3QgLT4gVmlzaWJsZVdlYlBhZ2VUb2tlbgoreworICAgIHJldHVybiBtX3Zpc2libGVQYWdl
Q291bnRlci5jb3VudCgpOworfQorCiBSZWZQdHI8QVBJOjpVc2VySW5pdGlhdGVkQWN0aW9uPiBX
ZWJQcm9jZXNzUHJveHk6OnVzZXJJbml0aWF0ZWRBY3Rpdml0eSh1aW50NjRfdCBpZGVudGlmaWVy
KQogewogICAgIGlmICghVXNlckluaXRpYXRlZEFjdGlvbk1hcDo6aXNWYWxpZEtleShpZGVudGlm
aWVyKSB8fCAhaWRlbnRpZmllcikKQEAgLTEwNzMsNiArMTA4NywxMiBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZGlkUmVjZWl2ZU1haW5UaHJlYWRQaW5nKCkKICAgICAgICAgY2FsbGJhY2soaXNX
ZWJQcm9jZXNzUmVzcG9uc2l2ZSk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVC
YWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpCit7CisgICAgaWYgKG1fYmFja2dyb3VuZFJl
c3BvbnNpdmVuZXNzVGltZXIpCisgICAgICAgIG1fYmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGlt
ZXItPnVwZGF0ZVN0YXRlKCk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBjb25zdCBIYXNo
U2V0PFN0cmluZz4mIFdlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1QYXRoc1dpdGhBc3N1bWVkUmVh
ZEFjY2VzcygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgK
aW5kZXggMTU4NDY3YTcyM2YzZGVlOWY3YmFjNmNmODQwYTQxYWQyYjg2M2QxNi4uZmRjNDQ5YWI1
ZDI1NWU0NDdkOTlmYmY0MGViZDBhOWNhNzViOGNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtNTQsNiArNTQsNyBAQCBzdHJ1Y3QgUGx1Z2luSW5m
bzsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEJhY2tncm91bmRXZWJQcm9jZXNzUmVz
cG9uc2l2ZW5lc3NUaW1lcjsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHk7CiBjbGFzcyBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViUGFnZUdyb3VwOwpAQCAtODMsNiArODQsNyBA
QCBwdWJsaWM6CiAKICAgICBXVEY6Okl0ZXJhdG9yUmFuZ2U8V2ViUGFnZVByb3h5TWFwOjpjb25z
dF9pdGVyYXRvcjo6VmFsdWVzPiBwYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZU1hcC52YWx1
ZXMoKTsgfQogICAgIHVuc2lnbmVkIHBhZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZU1h
cC5zaXplKCk7IH0KKyAgICB1bnNpZ25lZCB2aXNpYmxlUGFnZUNvdW50KCkgY29uc3QgeyByZXR1
cm4gbV92aXNpYmxlUGFnZUNvdW50ZXIudmFsdWUoKTsgfQogCiAgICAgdm9pZCBhZGRWaXNpdGVk
TGlua1N0b3JlKFZpc2l0ZWRMaW5rU3RvcmUmKTsKICAgICB2b2lkIGFkZFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Jik7CkBAIC0xMDAs
NiArMTAyLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lc0Zyb21QYWdlKFdl
YlBhZ2VQcm94eSopOyAvLyBJbmNsdWRpbmcgbWFpbiBmcmFtZS4KICAgICBzaXplX3QgZnJhbWVD
b3VudEluUGFnZShXZWJQYWdlUHJveHkqKSBjb25zdDsgLy8gSW5jbHVkaW5nIG1haW4gZnJhbWUu
CiAKKyAgICBWaXNpYmxlV2ViUGFnZVRva2VuIHZpc2libGVQYWdlVG9rZW4oKSBjb25zdDsKKwog
ICAgIHZvaWQgdXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpOwogCiAgICAgdm9pZCByZWdpc3Rlck5l
d1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSopOwpAQCAtMTg5
LDYgKzE5Myw4IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmc+
JiBwbGF0Zm9ybVBhdGhzV2l0aEFzc3VtZWRSZWFkQWNjZXNzKCk7CiAKKyAgICB2b2lkIHVwZGF0
ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CisKICAgICAvLyBJUEM6OkNvbm5lY3Rp
b246OkNsaWVudAogICAgIGZyaWVuZCBjbGFzcyBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jikgb3ZlcnJpZGU7CkBAIC0yNDcsNiArMjUzLDkgQEAgcHJpdmF0ZToKIAogICAgIGVudW0gY2xh
c3MgTm9Pck1heWJlIHsgTm8sIE1heWJlIH0gbV9pc1Jlc3BvbnNpdmU7CiAgICAgVmVjdG9yPHN0
ZDo6ZnVuY3Rpb248dm9pZChib29sIHdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUpPj4gbV9pc1Jlc3Bv
bnNpdmVDYWxsYmFja3M7CisKKyAgICBWaXNpYmxlV2ViUGFnZUNvdW50ZXIgbV92aXNpYmxlUGFn
ZUNvdW50ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEJhY2tncm91bmRXZWJQcm9jZXNzUmVzcG9u
c2l2ZW5lc3NUaW1lcj4gbV9iYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDkwMDRkYjBmYzBlYWEzZjNjZmZjN2VlYTllOGYwMjU1
ZTZmYWNlMTguLjQxODAxZTRjNDc2YzAyNDBiNDJlZmRmZGNlYTJhZGIwMGY4MDg0ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTg5OSw2ICs4OTksOCBAQAogCQk0MUZBRjVGODFFM0MxMDIxMDAxQUU2NzggLyogTGliV2ViUlRD
UmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRkFGNUY2MUUzQzBCNDcwMDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5oICovOyB9Owog
CQk0MUZBRjVGOTFFM0MxMDI1MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQUY1RjcxRTNDMEI0
NzAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmNwcCAqLzsgfTsKIAkJNDQ1MEFFQzAxREMz
RkFFNTAwOTk0M0YyIC8qIFNoYXJlZE1lbW9yeUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBBRUJGMURDM0ZBRTUwMDk5NDNGMiAvKiBT
aGFyZWRNZW1vcnlDb2NvYS5jcHAgKi87IH07CisJCTQ2QTJCNjA4MUU1Njc2QTYwMEMzREVEQSAv
KiBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBMkI2MDYxRTU2NzVBMjAwQzNE
RURBIC8qIEJhY2tncm91bmRXZWJQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi87IH07
CisJCTQ2QTJCNjA5MUU1Njc2QTYwMEMzREVEQSAvKiBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3Bv
bnNpdmVuZXNzVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jl
c3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsKIAkJNEEzQ0MxOEExOUIwNjNFNzAwRDE0QUVGIC8q
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjM5MTlBRjdCMDQwMDJFQkFC
NSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgKi87IH07CiAJ
CTRBM0NDMThCMTlCMDY0MEYwMEQxNEFFRiAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEE0MTBGM0ExOUFGN0IwNDAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmggKi87IH07CiAJCTRBM0NDMThDMTlCMDY0MTUwMEQxNEFFRiAvKiBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjNCMTlBRjdCMDQwMDJFQkFCNSAvKiBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcCAqLzsgfTsKQEAgLTMwNTAsNiArMzA1Miw4IEBA
CiAJCTQxRkFGNUY2MUUzQzBCNDcwMDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENSZXNvbHZlci5oOyBwYXRoID0g
TmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDFGQUY1RjcxRTNDMEI0NzAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ1Jlc29sdmVy
LmNwcDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ1MEFFQkYxREMzRkFFNTAwOTk0M0YyIC8qIFNoYXJl
ZE1lbW9yeUNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNo
YXJlZE1lbW9yeUNvY29hLmNwcDsgcGF0aCA9IGNvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZBMkI2MDYxRTU2NzVBMjAwQzNERURBIC8q
IEJhY2tncm91bmRXZWJQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVu
ZXNzVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkEyQjYwNzFFNTY3
NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFdlYlByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tncm91bmRXZWJQcm9jZXNzUmVz
cG9uc2l2ZW5lc3NUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTQxMEYz
NTE5QUY3QUMzMDAyRUJBQjUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzYxOUFGN0FD
MzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTQxMEYzOTE5QUY3QjA0MDAyRUJBQjUgLyogVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQxNCw2ICs2NDE4LDggQEAK
IAkJCQkxQUFGMDg5RTE5MjY4MUFDMDBCNjM5MEMgLyogVXNlckNvbnRlbnQgKi8sCiAJCQkJMUE1
M0MyQTMxQTMyNTY5MTAwNEU4QzcwIC8qIFdlYnNpdGVEYXRhICovLAogCQkJCTdDRDEwMkQ5MTg2
Njc3MDYwMEVENDI5RCAvKiBBdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmggKi8sCisJCQkJNDZBMkI2
MDYxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRXZWJQcm9jZXNzUmVzcG9uc2l2ZW5lc3NU
aW1lci5jcHAgKi8sCisJCQkJNDZBMkI2MDcxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRX
ZWJQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovLAogCQkJCUUxNTEzQzY0MTY2RUFCQjIw
MDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5jcHAgKi8sCiAJCQkJRTE1MTNDNjUxNjZFQUJC
MjAwMTQ5RkNCIC8qIENoaWxkUHJvY2Vzc1Byb3h5LmggKi8sCiAJCQkJQkMyNjUyMTIxMTgyNjA4
MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuY3BwICovLApAQCAtNzk1Niw2ICs3OTYyLDcg
QEAKIAkJCQk0RjYwMTQzMjE1NUM1QUEyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NzA1MTExQkU0MTBFNjAwODc0QUYxIC8qIEJsb2NrU1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMwNjVGQTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVN
b2RlbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZBMkI2MDkxRTU2NzZBNjAwQzNERURBIC8qIEJh
Y2tncm91bmRXZWJQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFBMkU1MUQxMkU0QzA1RTAwQkM0OTY2IC8qIENHVXRpbGl0aWVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTJEOTU2RjEyODQ4NTY0MDAxRUI5NjIgLyogQ2hpbGRQcm9jZXNzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MUZBRUMzQTFCMDY1NzYzMDAwOUM0RTcgLyogQ2hpbGRQcm9jZXNzTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTYzNyw2ICs5NjQ0LDcgQEAKIAkJCQk1MzIxNTk1
MzFEQkFFNzE4MDA1NEFBM0MgLyogTmV0d29ya1Nlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNUMyMENCOUQxQkIwRENGQTAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9uQ29jb2EubW0gaW4g
U291cmNlcyAqLywKIAkJCQkzMUEyRUM1NTE0ODk5ODJFMDA4MTBENzEgLyogTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDZBMkI2MDgxRTU2NzZB
NjAwQzNERURBIC8qIEJhY2tncm91bmRXZWJQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzMTMxMjYxRTE0OEZGODJDMDBCQTJBMzkgLyogTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQTJF
QzUwMTQ4OTk4MDUwMDgxMEQ3MSAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJEODQ4QzEyN0Y2QTQ5MDAxRUI5NjIg
LyogTlBJZGVudGlmaWVyRGF0YS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk5OTYsNyArMTAwMDQs
NyBAQAogCQkJCTM3NjA4ODFFMTUwNDEzRTkwMEZDODJDNyAvKiBXZWJSZW5kZXJPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwQUZGQjkxNjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291
cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgx
QiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNkJFOTY5QTIxRTQzQjhBNDAwOEI3NDgz
IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTZCRTk2OUEyMUU0M0I4QTQwMDhCNzQ4MyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUMg
LyogV2ViUlRDU29ja2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
RjA2MEUxMTY1NDMxODUwMEYzMjgyQyAvKiBXZWJSVENSZXNvbHZlck1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUQgLyogTmV0d29y
a1JUQ1NvY2tldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwMTg3LDcg
KzEwMTk1LDcgQEAKIAkJCQkzNzk0ODQwODE1MEM0Qjk3MDBFNTJDRTkgLyogV0tSZW5kZXJMYXll
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzYwODgyMjE1MDQxNEY3MDBGQzgyQzcgLyogV0tS
ZW5kZXJPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzMzNjc2M0ExMzBDOTlEQzAwNkM5
REUyIC8qIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDZCRTk2OTlFMUU0M0I0MUQwMDhCNzQ4MyAvKiBXS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTZCRTk2
OTlFMUU0M0I0MUQwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBN0UzNzc4MThFNEE0RkUwMDNEMEZGRiAvKiBXS1Njcmlw
dE1lc3NhZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkNCNEU1NTE4QkJFMDQ0MDAwRkNGQzkg
LyogV0tTY3JvbGxWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFDRDFDNjYxQjM0QjlEQzAw
MTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW4ubW0gaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301941</attachid>
            <date>2017-02-17 09:14:59 -0800</date>
            <delta_ts>2017-02-19 16:12:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168479-20170217091221.patch</filename>
            <type>text/plain</type>
            <size>31561</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzM1MjM1OGY4ZWI4Nzhj
MThmZGVhNTY2MmZlNzQ5N2Q4ZjM5MmU4My4uOGY3Y2U0Zjc3N2Q4NjIyYjNhYzk2YjMzZGU0ZjUw
MjA1YzgyOGZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE3LTAyLTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gU3VwcG9ydCB0ZXJt
aW5hdGlvbiBvZiB1bnJlc3BvbnNpdmUgV2ViQ29udGVudCBwcm9jZXNzZXMgdGhhdCBhcmUgaW4g
dGhlIGJhY2tncm91bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2ODQ3OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA1NTg3NDU+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCB0ZXJtaW5h
dGlvbiBvZiB1bnJlc3BvbnNpdmUgV2ViQ29udGVudCBwcm9jZXNzZXMgdGhhdCBhcmUgaW4gdGhl
IGJhY2tncm91bmQuCisgICAgICAgIFRoaXMgcHJvdGVjdHMgdXMgYWdhaW5zdCBjYXNlcyB3aGVy
ZSBhIGJhY2tncm91bmQgdGFiIGlzIHVucmVzcG9uc2l2ZSBhbmQgaGFzIGhpZ2ggQ1BVCisgICAg
ICAgIHVzYWdlLCB0aHVzIGRyYWluaW5nIHRoZSBiYXR0ZXJ5IHdpdGhvdXQgdGhlIHVzZXIga25v
d2luZyBhYm91dCBpdCAoZS5nLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk4MDgwMDU+KS4K
KworICAgICAgICBUaGUgZmVhdHVyZSB3b3JrcyBhcyBmb2xsb3dzOgorICAgICAgICAtIElmIGEg
V2ViUHJvY2Vzc1Byb3h5IGhhcyBwYWdlcyBidXQgbm9uZSBvZiB0aGVtIGFyZSB2aXNpYmxlLCB0
aGVuIGl0IHdpbGwgY2hlY2sKKyAgICAgICAgICByZWd1bGFybHkgaWYgaXRzIGFzc29jaWF0ZWQg
V2ViQ29udGVudCBwcm9jZXNzIGlzIHN0aWxsIHJlc3BvbnNpdmUuCisgICAgICAgIC0gRXZlcnkg
dGltZSB3ZSBmaW5kIHRoYXQgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBpcyByZXNwb25zaXZlLCB3
ZSBleHBvbmVudGlhbGx5CisgICAgICAgICAgYmFjayBvZmYgdGhlIHRpbWVyIHRvIGF2b2lkIHdh
a2luZyB1cCB0aGUgcHJvY2VzcyB0b28gb2Z0ZW4uIFRoZSB0aW1lciBpbml0aWFsbHkKKyAgICAg
ICAgICB1c2VzIGEgMjAgc2Vjb25kcyBpbnRlcnZhbCBhbmQgY2FuIGJhY2sgb2ZmIHVwIHRvIDQg
aG91cnMuCisgICAgICAgIC0gSWYgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBpcyB1bnJlc3BvbnNp
dmUsIHRoZW4gd2UgdGVybWluYXRlIGl0LiBObyBub3RpZmljYXRpb24KKyAgICAgICAgICBpcyBz
aG93biB0byB0aGUgdXNlciBhbmQgdGhlIHRlcm1pbmF0aW9uIGlzIG5vdCBpbW1lZGlhdGVseSBv
YnNlcnZhYmxlIHNpbmNlIHRoZQorICAgICAgICAgIHRhYiBpcyBub3QgdmlzaWJsZSBhbmQgaXRz
IHRpdGxlIHJlbWFpbnMuIFRoZSB0YWIgaXMgbm90IGltbWVkaWF0ZWx5IHJlbG9hZGVkCisgICAg
ICAgICAgc28gYXMgdG8gYXZvaWQgZ2V0dGluZyBiYWNrIGludG8gYSBiYWQgc3RhdGUgaW4gdGhl
IGJhY2tncm91bmQgKGFuZCBoYXZlIGEKKyAgICAgICAgICB5by15byBlZmZlY3QpLgorICAgICAg
ICAtIElmIHRoZSB1c2VyIHN3aXRjaGVzIHRvIGEgdGFiIHRoYXQgd2FzIHByZXZpb3VzbHkga2ls
bGVkIGZvciBiZWluZyB1bnJlc3BvbnNpdmUKKyAgICAgICAgICB3aGlsZSBpbiB0aGUgYmFja2dy
b3VuZCwgd2Ugd2lsbCB0aGVuIHJlbG9hZCB0aGUgdGFiIGluIGEgZnJlc2ggV2ViQ29udGVudAor
ICAgICAgICAgIHByb2Nlc3MuIFRoZSBjcmFzaCBiYW5uZXIgd2lsbCBvbmx5IGJlIHNob3duIGlm
IHRoZSB0YWIgaGFzIGV2ZXIgYmVlbiB2aXNpYmxlLgorICAgICAgICAgIElmIGl0IHdhc24ndCBl
dmVyIHZpc2libGUgKGUuZy4gc2Vzc2lvbiByZXN0b3JlIGNhc2UpLCB0aGVuIGl0IHdpbGwgbG9v
ayBhcyBpZgorICAgICAgICAgIHRoZSB0YWIgbG9hZHMgZm9yIHRoZSBmaXJzdCB0aW1lIHdoZW4g
dGhlIHVzZXIgc3dpdGNoZXMgdG8gaXQuCisKKyAgICAgICAgVGhlIGZ1bmN0aW9uYWxpdHkgaXMg
ZGlzYWJsZWQgYnkgZGVmYXVsdCBhbmQgY2FuIGJlIGVuYWJsZWQgYnkgdGhlIGNsaWVudCB2aWEg
dGhlIG5ldworICAgICAgICBXS0NvbnRleHRTZXRVbnJlc3BvbnNpdmVCYWNrZ3JvdW5kUHJvY2Vz
c2VzVGVybWluYXRpb25FbmFibGVkKCkgcHJpdmF0ZSBBUEkuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dFNldFVucmVzcG9uc2l2ZUJhY2tncm91
bmRQcm9jZXNzZXNUZXJtaW5hdGlvbkVuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0JhY2tncm91bmRXZWJQ
cm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpC
YWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXI6OkJhY2tncm91bmRXZWJQcm9j
ZXNzUmVzcG9uc2l2ZW5lc3NUaW1lcik6CisgICAgICAgIChXZWJLaXQ6OkJhY2tncm91bmRXZWJQ
cm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lcjo6dXBkYXRlU3RhdGUpOgorICAgICAgICAoV2ViS2l0
OjpCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXI6OnRpbWVyRmlyZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9CYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGlt
ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkJhY2tncm91bmRXZWJQcm9jZXNzUmVzcG9u
c2l2ZW5lc3NUaW1lcjo6c2hvdWxkQmVBY3RpdmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9X
ZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWxvYWRBZnRlckJl
aW5nS2lsbGVkSW5CYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
aXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnRlcm1pbmF0ZVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
c2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjptX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5OjphZGRFeGlzdGluZ1dlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OnVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6dmlzaWJsZVBhZ2VDb3VudCk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCiAyMDE3LTAyLTE2ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIG1ldGhvZHMgV0tQYWdlR2V0RGVidWdQ
YWludEZsYWdzIGFuZCBXS1BhZ2VTZXREZWJ1Z1BhaW50RmxhZ3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQK
aW5kZXggYTAzNDE4ZTZmYzBhNmUyNjM3YTEwMWJhMTFmZDE2ZTYyODA5NDI3MS4uZTg4YWU4MWEw
MDgzZmEwNTEyMmFhMGVlOTg3ZmIzYTM2OGEwNTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAg
LTI3Myw2ICsyNzMsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBTaGFyZWQvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGEuY3BwCiAKKyAgICBVSVByb2Nlc3MvQmFja2dyb3VuZFdlYlByb2Nl
c3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcAogICAgIFVJUHJvY2Vzcy9DaGlsZFByb2Nlc3NQcm94
eS5jcHAKICAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKICAgICBVSVByb2Nlc3Mv
RnJhbWVMb2FkU3RhdGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggMjQ0ZmYzOTFl
Njg1NDRkM2UyMTIwYjY0ODg5ZDVjNDZjZDI0YTU3Ny4uMThkMWUyYjk3ODNkN2IyYTU1NzNiZDdl
ZjNlYjkyYmEwMTYyNjRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcApAQCAtOTYsNiArOTYs
NyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b246OmNvcHkoKQogICAgIGNvcHktPm1fbWF4aW11bVByb2Nlc3NDb3VudCA9IHRoaXMtPm1fbWF4
aW11bVByb2Nlc3NDb3VudDsKICAgICBjb3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hl
TW9kZWw7CiAgICAgY29weS0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVk
ID0gdGhpcy0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkOworICAgIGNv
cHktPm1fdW5yZXNwb25zaXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxlZCA9
IHRoaXMtPm1fdW5yZXNwb25zaXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxl
ZDsKICAgICBjb3B5LT5tX2Rpc2tDYWNoZVNpemVPdmVycmlkZSA9IHRoaXMtPm1fZGlza0NhY2hl
U2l6ZU92ZXJyaWRlOwogICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHRo
aXMtPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2FwcGxpY2F0aW9u
Q2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSB0aGlzLT5tX2FwcGxpY2F0aW9uQ2FjaGVG
bGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAppbmRleCAxMDQwN2Rh
MTkwNTAwOWIzN2Q3YWFiZjcwMThmMzZjMzQxN2ZjNjIxLi5kNDJiNzQ5Yjk3Zjk4MmIwNWZkNDYw
NWU4ZWZjZDViZTc5MzYzMzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKQEAgLTU1LDYgKzU1LDkg
QEAgcHVibGljOgogICAgIGJvb2wgZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxl
ZDsgfQogICAgIHZvaWQgc2V0RGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZChi
b29sIGVuYWJsZWQpIHsgbV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkID0g
ZW5hYmxlZDsgfQogCisgICAgYm9vbCB1bnJlc3BvbnNpdmVCYWNrZ3JvdW5kUHJvY2Vzc2VzVGVy
bWluYXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV91bnJlc3BvbnNpdmVCYWNrZ3JvdW5k
UHJvY2Vzc2VzVGVybWluYXRpb25FbmFibGVkOyB9CisgICAgdm9pZCBzZXRVbnJlc3BvbnNpdmVC
YWNrZ3JvdW5kUHJvY2Vzc2VzVGVybWluYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3Vu
cmVzcG9uc2l2ZUJhY2tncm91bmRQcm9jZXNzZXNUZXJtaW5hdGlvbkVuYWJsZWQgPSBlbmFibGVk
OyB9CisKICAgICBXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FjaGVNb2RlbDsgfQogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChXZWJLaXQ6OkNhY2hlTW9k
ZWwgY2FjaGVNb2RlbCkgeyBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOyB9CiAKQEAgLTEyMSw2
ICsxMjQsNyBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV9tYXhpbXVtUHJvY2Vzc0NvdW50
IHsgMCB9OwogICAgIGJvb2wgbV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVk
IHsgZmFsc2UgfTsKKyAgICBib29sIG1fdW5yZXNwb25zaXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rl
cm1pbmF0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgV2ViS2l0OjpDYWNoZU1vZGVsIG1fY2Fj
aGVNb2RlbCB7IFdlYktpdDo6Q2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyIH07CiAgICAgaW50
NjRfdCBtX2Rpc2tDYWNoZVNpemVPdmVycmlkZSB7IC0xIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggNzQ4MmRlNjgxNGQ4YjJmZjBhMmEx
MTQ4Y2M3MWU3OWQwYTkxYzc4Ni4uMmNjZTRkYTUwMjU3MzRlODIzZDQ4ZGM3ZjBjMjA0MzRhOGJj
NDQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAK
QEAgLTM5Nyw2ICszOTcsMTEgQEAgdm9pZCBXS0NvbnRleHRTZXREaXNrQ2FjaGVTcGVjdWxhdGl2
ZVZhbGlkYXRpb25FbmFibGVkKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLAogICAgIHRvSW1wbChj
b250ZXh0UmVmKS0+Y29uZmlndXJhdGlvbigpLnNldERpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRh
dGlvbkVuYWJsZWQodmFsdWUpOwogfQogCit2b2lkIFdLQ29udGV4dFNldFVucmVzcG9uc2l2ZUJh
Y2tncm91bmRQcm9jZXNzZXNUZXJtaW5hdGlvbkVuYWJsZWQoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYsIGJvb2wgdmFsdWUpCit7CisgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5jb25maWd1cmF0aW9u
KCkuc2V0VW5yZXNwb25zaXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxlZCh2
YWx1ZSk7Cit9CisKIFdLQ29va2llTWFuYWdlclJlZiBXS0NvbnRleHRHZXRDb29raWVNYW5hZ2Vy
KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogewogICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29u
dGV4dFJlZiktPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCmluZGV4IDY3
NDJmZmJhMTM3NmRlYzEzYjNmY2NjYTgzNWI4N2U0MGNjOTI2ZjUuLjRkODA0OGFmYzlhNzAxMTMz
Y2Q4NTc2YzFhMjczMGQzN2UwOGIxZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaApAQCAtNjIsNiArNjIsOCBAQCBXS19FWFBPUlQg
dm9pZCBXS0NvbnRleHRTZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbihXS0Nv
bnRleHRSZWYgY29udAogCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXREaXNrQ2FjaGVTcGVj
dWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBib29sIHZhbHVl
KTsKIAorV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0VW5yZXNwb25zaXZlQmFja2dyb3VuZFBy
b2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCB2YWx1
ZSk7CisKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEljb25EYXRhYmFzZVBhdGgoV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIGljb25EYXRhYmFzZVBhdGgpOwogCiBXS19FWFBP
UlQgdm9pZCBXS0NvbnRleHRBbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoV0tD
b250ZXh0UmVmIGNvbnRleHQsIFdLQ2VydGlmaWNhdGVJbmZvUmVmIGNlcnRpZmljYXRlLCBXS1N0
cmluZ1JlZiBob3N0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNr
Z3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0JhY2tncm91bmRXZWJQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWZlMjc3YzZhMWVhMGEzZjUwZmU5ZTFkZGFhMjZlN2E2MmI3OTVkZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNrZ3JvdW5kV2ViUHJvY2Vz
c1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQmFja2dyb3VuZFdlYlByb2Nlc3NSZXNwb25z
aXZlbmVzc1RpbWVyLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86OnNlY29uZHMgaW5pdGlhbEludGVydmFs
IHsgMjAgfTsKK3N0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6c2Vjb25kcyBtYXhpbXVtSW50ZXJ2
YWwgeyAxNDQwMCB9OyAvLyA0IGhvdXJzLgorCitCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNp
dmVuZXNzVGltZXI6OkJhY2tncm91bmRXZWJQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lcihXZWJQ
cm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSkKKyAgICA6IG1fd2ViUHJvY2Vzc1Byb3h5KHdl
YlByb2Nlc3NQcm94eSkKKyAgICAsIG1faW50ZXJ2YWwoaW5pdGlhbEludGVydmFsKQorICAgICwg
bV90aW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3Bv
bnNpdmVuZXNzVGltZXI6OnRpbWVyRmlyZWQpCit7Cit9CisKK3ZvaWQgQmFja2dyb3VuZFdlYlBy
b2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyOjp1cGRhdGVTdGF0ZSgpCit7CisgICAgaWYgKCFzaG91
bGRCZUFjdGl2ZSgpKSB7CisgICAgICAgIGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAg
ICAgICAgIG1faW50ZXJ2YWwgPSBpbml0aWFsSW50ZXJ2YWw7CisgICAgICAgICAgICBtX3RpbWVy
LnN0b3AoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFt
X3RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KG1faW50ZXJ2
YWwpOworfQorCitzdGF0aWMgVmVjdG9yPFJlZlB0cjxXZWJQYWdlUHJveHk+PiBwYWdlc0NvcHko
V1RGOjpJdGVyYXRvclJhbmdlPFdlYlByb2Nlc3NQcm94eTo6V2ViUGFnZVByb3h5TWFwOjpjb25z
dF9pdGVyYXRvcjo6VmFsdWVzPiBwYWdlcykKK3sKKyAgICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2VQ
cm94eT4+IHZlY3RvcjsKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlcykKKyAgICAgICAgdmVj
dG9yLmFwcGVuZChwYWdlKTsKKyAgICByZXR1cm4gdmVjdG9yOworfQorCit2b2lkIEJhY2tncm91
bmRXZWJQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lcjo6dGltZXJGaXJlZCgpCit7CisgICAgQVNT
RVJUKHNob3VsZEJlQWN0aXZlKCkpOworICAgIG1fd2ViUHJvY2Vzc1Byb3h5LmlzUmVzcG9uc2l2
ZShbdGhpc10oYm9vbCBwcm9jZXNzSXNSZXNwb25zaXZlKSB7CisgICAgICAgIGlmIChwcm9jZXNz
SXNSZXNwb25zaXZlKSB7CisgICAgICAgICAgICAvLyBFeHBvbmVudGlhbCBiYWNrb2ZmIHRvIGF2
b2lkIHdha2luZyB1cCB0aGUgcHJvY2VzcyB0b28gb2Z0ZW4uCisgICAgICAgICAgICBtX2ludGVy
dmFsID0gc3RkOjptaW4obV9pbnRlcnZhbCAqIDIsIG1heGltdW1JbnRlcnZhbCk7CisgICAgICAg
ICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChtX2ludGVydmFsKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9n
Z2luZywgIktpbGxpbmcgYSBiYWNrZ3JvdW5kIFdlYlByb2Nlc3MgYmVjYXVzZSBpdCBpcyBub3Qg
cmVzcG9uc2l2ZSIpOworICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlc0NvcHkobV93ZWJQ
cm9jZXNzUHJveHkucGFnZXMoKSkpCisgICAgICAgICAgICBwYWdlLT50ZXJtaW5hdGVQcm9jZXNz
KFdlYlBhZ2VQcm94eTo6VGVybWluYXRpb25SZWFzb246OlVucmVzcG9uc2l2ZVdoaWxlSW5CYWNr
Z3JvdW5kKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQmFja2dyb3VuZFdlYlByb2Nlc3NSZXNwb25zaXZl
bmVzc1RpbWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQmFja2dyb3VuZFdlYlByb2Nl
c3NSZXNwb25zaXZlbmVzc1RpbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRkZGIyYmY2ZDFmZTRmZTZlZWNj
ZDlmYjc2MzQzMWYyYTBiNDI2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9CYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaApAQCAtMCww
ICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgQmFja2dyb3VuZFdlYlByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyIHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGlt
ZXIoV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAgdm9pZCB1cGRhdGVTdGF0ZSgpOworCitwcml2YXRl
OgorICAgIHZvaWQgdGltZXJGaXJlZCgpOworICAgIGJvb2wgc2hvdWxkQmVBY3RpdmUoKSBjb25z
dCB7IHJldHVybiAhbV93ZWJQcm9jZXNzUHJveHkudmlzaWJsZVBhZ2VDb3VudCgpICYmIG1fd2Vi
UHJvY2Vzc1Byb3h5LnBhZ2VDb3VudCgpOyB9CisKKyAgICBXZWJQcm9jZXNzUHJveHkmIG1fd2Vi
UHJvY2Vzc1Byb3h5OworICAgIHN0ZDo6Y2hyb25vOjpzZWNvbmRzIG1faW50ZXJ2YWw7CisgICAg
UnVuTG9vcDo6VGltZXI8QmFja2dyb3VuZFdlYlByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyPiBt
X3RpbWVyOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCBiM2Q2NDgxY2ZlYzEzMGRiOTBhMmJkOWNjNTAwM2UwMmZjYzg2NTBmLi4wOTNkYWI2
NTk5YzJlYjE3MjhkMTYyMzRlODdmZDBkMDFkZTFlMDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzE2LDYgKzcxNiw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcygpCiAgICAgQVNTRVJUKG1fcHJvY2Vzcy0+c3RhdGUo
KSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpUZXJtaW5hdGVkKTsKIAogICAgIG1faXNWYWxp
ZCA9IHRydWU7CisgICAgbV93YXNLaWxsZWRGb3JCZWluZ1VucmVzcG9uc2l2ZVdoaWxlSW5CYWNr
Z3JvdW5kID0gZmFsc2U7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKG1fcGFnZUlEKTsK
ICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKIApAQCAtMTUxNywxNCArMTUx
OCwzMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld0RpZEVudGVyV2luZG93KCkKICAgICB9CiB9
CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWxvYWRBZnRlckJlaW5nS2lsbGVkSW5CYWNrZ3JvdW5k
KCkKK3sKKyAgICBBU1NFUlQoIWlzVmFsaWQoKSk7CisKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCIlcCAtIFJlbG9hZGluZyB0YWIgdGhhdCB3YXMga2lsbGVkIGluIHRoZSBiYWNrZ3JvdW5k
IiwgdGhpcyk7CisKKyAgICAvLyBPbmx5IHJlcG9ydCBhcyBhIGNyYXNoIGlmIHRoZSBwYWdlIHdh
cyBldmVyIHZpc2libGUsIG90aGVyd2lzZSBzaWxlbnRseSByZWxvYWQuCisgICAgaWYgKG1faGFz
RXZlckJlZW5WaXNpYmxlKQorICAgICAgICBwcm9jZXNzRGlkQ3Jhc2goKTsKKyAgICBlbHNlCisg
ICAgICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzRm9yUmVsb2FkKCk7Cit9CisKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKQogewogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXItPmludmFsaWRhdGUoKTsK
ICNlbmRpZgogCi0gICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgaWYgKCFpc1ZhbGlkKCkpIHsKKyAg
ICAgICAgaWYgKG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzICYgQWN0aXZp
dHlTdGF0ZTo6SXNWaXNpYmxlICYmIG1fd2FzS2lsbGVkRm9yQmVpbmdVbnJlc3BvbnNpdmVXaGls
ZUluQmFja2dyb3VuZCkKKyAgICAgICAgICAgIHJlbG9hZEFmdGVyQmVpbmdLaWxsZWRJbkJhY2tn
cm91bmQoKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIElmIHRoZSB2aXNpYmls
aXR5IHN0YXRlIG1heSBoYXZlIGNoYW5nZWQsIHRoZW4gc28gbWF5IHRoZSB2aXN1YWxseSBpZGxl
ICYgb2NjbHVkZWQgYWdub3N0aWMgc3RhdGUuCiAgICAgaWYgKG1fcG90ZW50aWFsbHlDaGFuZ2Vk
QWN0aXZpdHlTdGF0ZUZsYWdzICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQpAQCAtMTU1Niwx
OCArMTU3MywyNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hh
bmdlKCkKICAgICAvLyBUaGlzIG11c3QgaGFwcGVuIGFmdGVyIHRoZSBTZXRBY3Rpdml0eVN0YXRl
IG1lc3NhZ2UgaXMgc2VudCwgdG8gZW5zdXJlIHRoZSBwYWdlIHZpc2liaWxpdHkgZXZlbnQgY2Fu
IGZpcmUuCiAgICAgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogCi0gICAgLy8gSWYgd2UndmUgc3Rh
cnRlZCB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIgYXMgcGFydCBvZiB0ZWxsaW5nIHRoZSB3ZWIg
cHJvY2VzcyB0byB1cGRhdGUgdGhlIGJhY2tpbmcgc3RvcmUKLSAgICAvLyBzdGF0ZSwgaXQgbWln
aHQgbm90IHNlbmQgYmFjayBhIHJlcGx5IChzaW5jZSBpdCB3b24ndCBwYWludCBhbnl0aGluZyBp
ZiB0aGUgd2ViIHBhZ2UgaXMgaGlkZGVuKSBzbyB3ZQotICAgIC8vIHN0b3AgdGhlIHVucmVzcG9u
c2l2ZW5lc3MgdGltZXIgaGVyZS4KLSAgICBpZiAoKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJ
c1Zpc2libGUpICYmICFpc1ZpZXdWaXNpYmxlKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+cmVzcG9u
c2l2ZW5lc3NUaW1lcigpLnN0b3AoKTsKLQogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAg
aWYgKCgoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgJiYgIWlzVmlld1Zpc2li
bGUoKSkgfHwgKChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpICYmICFt
X3BhZ2VDbGllbnQuaXNWaWV3V2luZG93QWN0aXZlKCkpCiAgICAgICAgIHx8ICgoY2hhbmdlZCAm
IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCkgJiYgIShtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0
eVN0YXRlOjpJc0ZvY3VzZWQpKSkKICAgICAgICAgcmVxdWVzdFBvaW50ZXJVbmxvY2soKTsKICNl
bmRpZgogCisgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpIHsKKyAg
ICAgICAgaWYgKGlzVmlld1Zpc2libGUoKSkgeworICAgICAgICAgICAgbV9oYXNFdmVyQmVlblZp
c2libGUgPSB0cnVlOworICAgICAgICAgICAgbV92aXNpYmxlUGFnZVRva2VuID0gbV9wcm9jZXNz
LT52aXNpYmxlUGFnZVRva2VuKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Zp
c2libGVQYWdlVG9rZW4gPSBudWxscHRyOworCisgICAgICAgICAgICAvLyBJZiB3ZSd2ZSBzdGFy
dGVkIHRoZSByZXNwb25zaXZlbmVzcyB0aW1lciBhcyBwYXJ0IG9mIHRlbGxpbmcgdGhlIHdlYiBw
cm9jZXNzIHRvIHVwZGF0ZSB0aGUgYmFja2luZyBzdG9yZQorICAgICAgICAgICAgLy8gc3RhdGUs
IGl0IG1pZ2h0IG5vdCBzZW5kIGJhY2sgYSByZXBseSAoc2luY2UgaXQgd29uJ3QgcGFpbnQgYW55
dGhpbmcgaWYgdGhlIHdlYiBwYWdlIGlzIGhpZGRlbikgc28gd2UKKyAgICAgICAgICAgIC8vIHN0
b3AgdGhlIHVucmVzcG9uc2l2ZW5lc3MgdGltZXIgaGVyZS4KKyAgICAgICAgICAgIG1fcHJvY2Vz
cy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0b3AoKTsKKyAgICAgICAgfQorICAgIH0KKwogICAg
IGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdykgewogICAgICAgICBpZiAo
aXNJbldpbmRvdygpKQogICAgICAgICAgICAgdmlld0RpZEVudGVyV2luZG93KCk7CkBAIC0yMzcz
LDcgKzIzOTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFt
ZShjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSkKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmdOYW1lKSwgbV9w
YWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dGVybWluYXRlUHJvY2VzcygpCit2b2lk
IFdlYlBhZ2VQcm94eTo6dGVybWluYXRlUHJvY2VzcyhUZXJtaW5hdGlvblJlYXNvbiB0ZXJtaW5h
dGlvblJlYXNvbikKIHsKICAgICAvLyBOT1RFOiBUaGlzIHVzZXMgYSBjaGVjayBvZiBtX2lzVmFs
aWQgcmF0aGVyIHRoYW4gY2FsbGluZyBpc1ZhbGlkKCkgc2luY2UKICAgICAvLyB3ZSB3YW50IHRo
aXMgdG8gcnVuIGV2ZW4gZm9yIHBhZ2VzIGJlaW5nIGNsb3NlZCBvciB0aGF0IGFscmVhZHkgY2xv
c2VkLgpAQCAtMjM4Miw2ICsyNDA3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRlcm1pbmF0ZVBy
b2Nlc3MoKQogCiAgICAgbV9wcm9jZXNzLT5yZXF1ZXN0VGVybWluYXRpb24oKTsKICAgICByZXNl
dFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKCk7CisgICAgbV93YXNLaWxsZWRGb3JCZWluZ1VucmVz
cG9uc2l2ZVdoaWxlSW5CYWNrZ3JvdW5kID0gdGVybWluYXRpb25SZWFzb24gPT0gVGVybWluYXRp
b25SZWFzb246OlVucmVzcG9uc2l2ZVdoaWxlSW5CYWNrZ3JvdW5kOwogfQogCiBTZXNzaW9uU3Rh
dGUgV2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGUoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+JiBmaWx0ZXIpIGNvbnN0CkBAIC01NDc3LDYgKzU1MDMs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCgpCiAg
ICAgbV9hY3Rpdml0eVRva2VuID0gbnVsbHB0cjsKICNlbmRpZgogICAgIG1fcGFnZUlzVXNlck9i
c2VydmFibGVDb3VudCA9IG51bGxwdHI7CisgICAgbV92aXNpYmxlUGFnZVRva2VuID0gbnVsbHB0
cjsKIAogICAgIG1faXNWYWxpZCA9IGZhbHNlOwogICAgIG1faXNQYWdlU3VzcGVuZGVkID0gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNzNhN2ZlOGNj
ZWI1OTA5NzIzYjE3Mzc0OWZjZGU3NzRhNjhhNzYzYy4uZGNlZjhkNTExODJlMGI2ZTJmNzMzNTI2
Y2I4OTYwZjg2NGU5MDU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMjMzLDYgKzIzMywxMCBAQCB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxFZGl0aW5nUmFu
Z2U+IEVkaXRpbmdSYW5nZUNhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3Qg
U3RyaW5nJj4gU3RyaW5nQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHMmPiBTY3JpcHRWYWx1ZUNhbGxiYWNrOwogCitlbnVtIFZpc2libGVXZWJQYWdlQ291bnRlclR5
cGUgeyB9OwordXNpbmcgVmlzaWJsZVdlYlBhZ2VDb3VudGVyID0gUmVmQ291bnRlcjxWaXNpYmxl
V2ViUGFnZUNvdW50ZXJUeXBlPjsKK3VzaW5nIFZpc2libGVXZWJQYWdlVG9rZW4gPSBWaXNpYmxl
V2ViUGFnZUNvdW50ZXI6OlRva2VuOworCiAjaWYgUExBVEZPUk0oR1RLKQogdHlwZWRlZiBHZW5l
cmljQ2FsbGJhY2s8QVBJOjpFcnJvcio+IFByaW50RmluaXNoZWRDYWxsYmFjazsKICNlbmRpZgpA
QCAtNjgxLDcgKzY4NSw4IEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBlc3RpbWF0ZWRQcm9ncmVz
cygpIGNvbnN0OwogCi0gICAgdm9pZCB0ZXJtaW5hdGVQcm9jZXNzKCk7CisgICAgZW51bSBjbGFz
cyBUZXJtaW5hdGlvblJlYXNvbiB7IFVucmVzcG9uc2l2ZVdoaWxlSW5CYWNrZ3JvdW5kLCBPdGhl
ciB9OworICAgIHZvaWQgdGVybWluYXRlUHJvY2VzcyhUZXJtaW5hdGlvblJlYXNvbiA9IFRlcm1p
bmF0aW9uUmVhc29uOjpPdGhlcik7CiAKICAgICBTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlKGNv
bnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpPiYgPSBudWxs
cHRyKSBjb25zdDsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiByZXN0b3JlRnJvbVNlc3Np
b25TdGF0ZShTZXNzaW9uU3RhdGUsIGJvb2wgbmF2aWdhdGUpOwpAQCAtMTU5OSw2ICsxNjA0LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpOwogICAg
IHZvaWQgdmlld0RpZExlYXZlV2luZG93KCk7CiAgICAgdm9pZCB2aWV3RGlkRW50ZXJXaW5kb3co
KTsKKyAgICB2b2lkIHJlbG9hZEFmdGVyQmVpbmdLaWxsZWRJbkJhY2tncm91bmQoKTsKIAogI2lm
IFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0
KGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiwgYm9vbCBjb250ZW50UHJldmVudHNEZWZhdWx0
LCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTk1NCw2ICsxOTYwLDcgQEAgcHJpdmF0ZToKICAgICBV
c2VyT2JzZXJ2YWJsZVBhZ2VDb3VudGVyOjpUb2tlbiBtX3BhZ2VJc1VzZXJPYnNlcnZhYmxlQ291
bnQ7CiAgICAgUHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRUb2tlbiBtX3ByZXZlbnRQcm9jZXNz
U3VwcHJlc3Npb25Db3VudDsKICAgICBIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXND
b3VudGVyOjpUb2tlbiBtX2hpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdBdXRvSW5jcmVhc2Vz
Q291bnQ7CisgICAgVmlzaWJsZVdlYlBhZ2VUb2tlbiBtX3Zpc2libGVQYWdlVG9rZW47CiAgICAg
ICAgIAogICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBtX3Njcm9sbFBpbm5pbmdC
ZWhhdmlvcjsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHls
ZT4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7CkBAIC0xOTcyLDYgKzE5NzksNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9oYXNIYWRTZWxlY3Rpb25DaGFuZ2VzRnJvbVVzZXJJbnRlcmFjdGlvbiB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX25lZWRzSGlkZGVuQ29udGVudEVkaXRhYmxlUXVpcmsgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9uZWVkc1BsYWluVGV4dFF1aXJrIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faGFzRXZlckJlZW5WaXNpYmxlIHsgZmFsc2UgfTsKIAogI2lmIEVOQUJMRShNRURJQV9T
RVNTSU9OKQogICAgIGJvb2wgbV9oYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50
cyB7IGZhbHNlIH07CkBAIC0xOTk3LDYgKzIwMDUsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAg
ICBib29sIG1faXNVc2luZ0hpZ2hQZXJmb3JtYW5jZVdlYkdMIHsgZmFsc2UgfTsKKyAgICBib29s
IG1fd2FzS2lsbGVkRm9yQmVpbmdVbnJlc3BvbnNpdmVXaGlsZUluQmFja2dyb3VuZCB7IGZhbHNl
IH07CiAgICAgICAgIAogICAgIFdlYWtQdHJGYWN0b3J5PFdlYlBhZ2VQcm94eT4gbV93ZWFrUHRy
RmFjdG9yeTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCmluZGV4IGUxOTRjZGE3YmYzZDI0MzYzNzgwMjBmYTFmZGJlODhmZmU4ZTY5YmQuLmUwNTY2
MGY4NDdhZGE2Yjc4MjE4Y2MzMjIzMjMyNGVhNjRkNzEwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQVBJRnJhbWVIYW5kbGUuaCIKICNpbmNsdWRlICJBUElQYWdlR3JvdXBIYW5kbGUuaCIKICNp
bmNsdWRlICJBUElQYWdlSGFuZGxlLmgiCisjaW5jbHVkZSAiQmFja2dyb3VuZFdlYlByb2Nlc3NS
ZXNwb25zaXZlbmVzc1RpbWVyLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkRvd25sb2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0xMDEsNiAr
MTAyLDggQEAgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wm
IHByb2Nlc3NQb29sKQogICAgICwgbV9udW1iZXJPZlRpbWVzU3VkZGVuVGVybWluYXRpb25XYXNE
aXNhYmxlZCgwKQogICAgICwgbV90aHJvdHRsZXIoKnRoaXMpCiAgICAgLCBtX2lzUmVzcG9uc2l2
ZShOb09yTWF5YmU6Ok1heWJlKQorICAgICwgbV92aXNpYmxlUGFnZUNvdW50ZXIoW3RoaXNdKFJl
ZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOyB9
KQorICAgICwgbV9iYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcihwcm9jZXNzUG9vbC5jb25m
aWd1cmF0aW9uKCkudW5yZXNwb25zaXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5h
YmxlZCgpID8gc3RkOjptYWtlX3VuaXF1ZTxCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVu
ZXNzVGltZXI+KCp0aGlzKSA6IG51bGxwdHIpCiB7CiAgICAgV2ViUGFzdGVib2FyZFByb3h5Ojpz
aW5nbGV0b24oKS5hZGRXZWJQcm9jZXNzUHJveHkoKnRoaXMpOwogCkBAIC0yNTUsNiArMjU4LDgg
QEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKFBhZ2VD
bGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEkKICAgICBtX3BhZ2VNYXAuc2V0KHBhZ2VJRCwgd2Vi
UGFnZS5wdHIoKSk7CiAgICAgZ2xvYmFsUGFnZU1hcCgpLnNldChwYWdlSUQsIHdlYlBhZ2UucHRy
KCkpOwogCisgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKKwogICAg
IHJldHVybiB3ZWJQYWdlOwogfQogCkBAIC0yNjUsMTIgKzI3MCwxNiBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6YWRkRXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgdWludDY0
X3QgcGFnZUlEKQogCiAgICAgbV9wYWdlTWFwLnNldChwYWdlSUQsIHdlYlBhZ2UpOwogICAgIGds
b2JhbFBhZ2VNYXAoKS5zZXQocGFnZUlELCB3ZWJQYWdlKTsKKworICAgIHVwZGF0ZUJhY2tncm91
bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1v
dmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkKIHsKICAgICBtX3BhZ2VNYXAucmVtb3ZlKHBhZ2VJ
RCk7CiAgICAgZ2xvYmFsUGFnZU1hcCgpLnJlbW92ZShwYWdlSUQpOworCisgICAgdXBkYXRlQmFj
a2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKICAgICAKICAgICBWZWN0b3I8dWludDY0X3Q+
IGl0ZW1JRHNUb1JlbW92ZTsKICAgICBmb3IgKGF1dG8mIGlkQW5kSXRlbSA6IG1fYmFja0Zvcndh
cmRMaXN0SXRlbU1hcCkgewpAQCAtNzA4LDYgKzcxNywxMSBAQCBzaXplX3QgV2ViUHJvY2Vzc1By
b3h5OjpmcmFtZUNvdW50SW5QYWdlKFdlYlBhZ2VQcm94eSogcGFnZSkgY29uc3QKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCithdXRvIFdlYlByb2Nlc3NQcm94eTo6dmlzaWJsZVBhZ2VUb2tlbigp
IGNvbnN0IC0+IFZpc2libGVXZWJQYWdlVG9rZW4KK3sKKyAgICByZXR1cm4gbV92aXNpYmxlUGFn
ZUNvdW50ZXIuY291bnQoKTsKK30KKwogUmVmUHRyPEFQSTo6VXNlckluaXRpYXRlZEFjdGlvbj4g
V2ViUHJvY2Vzc1Byb3h5Ojp1c2VySW5pdGlhdGVkQWN0aXZpdHkodWludDY0X3QgaWRlbnRpZmll
cikKIHsKICAgICBpZiAoIVVzZXJJbml0aWF0ZWRBY3Rpb25NYXA6OmlzVmFsaWRLZXkoaWRlbnRp
ZmllcikgfHwgIWlkZW50aWZpZXIpCkBAIC0xMDczLDYgKzEwODcsMTIgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmRpZFJlY2VpdmVNYWluVGhyZWFkUGluZygpCiAgICAgICAgIGNhbGxiYWNrKGlz
V2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRl
QmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKQoreworICAgIGlmIChtX2JhY2tncm91bmRS
ZXNwb25zaXZlbmVzc1RpbWVyKQorICAgICAgICBtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1Rp
bWVyLT51cGRhdGVTdGF0ZSgpOworfQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogY29uc3QgSGFz
aFNldDxTdHJpbmc+JiBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtUGF0aHNXaXRoQXNzdW1lZFJl
YWRBY2Nlc3MoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CmluZGV4IDE1ODQ2N2E3MjNmM2RlZTlmN2JhYzZjZjg0MGE0MWFkMmI4NjNkMTYuLmZkYzQ0OWFi
NWQyNTVlNDQ3ZDk5ZmJmNDBlYmQwYTljYTc1YjhjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTU0LDYgKzU0LDcgQEAgc3RydWN0IFBsdWdpbklu
Zm87CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jl
c3BvbnNpdmVuZXNzVGltZXI7CiBjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdlYlBhZ2VHcm91cDsKQEAgLTgzLDYgKzg0LDcg
QEAgcHVibGljOgogCiAgICAgV1RGOjpJdGVyYXRvclJhbmdlPFdlYlBhZ2VQcm94eU1hcDo6Y29u
c3RfaXRlcmF0b3I6OlZhbHVlcz4gcGFnZXMoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VNYXAudmFs
dWVzKCk7IH0KICAgICB1bnNpZ25lZCBwYWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VN
YXAuc2l6ZSgpOyB9CisgICAgdW5zaWduZWQgdmlzaWJsZVBhZ2VDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fdmlzaWJsZVBhZ2VDb3VudGVyLnZhbHVlKCk7IH0KIAogICAgIHZvaWQgYWRkVmlzaXRl
ZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlJik7CiAgICAgdm9pZCBhZGRXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSYpOwpAQCAtMTAw
LDYgKzEwMiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZXNGcm9tUGFnZShX
ZWJQYWdlUHJveHkqKTsgLy8gSW5jbHVkaW5nIG1haW4gZnJhbWUuCiAgICAgc2l6ZV90IGZyYW1l
Q291bnRJblBhZ2UoV2ViUGFnZVByb3h5KikgY29uc3Q7IC8vIEluY2x1ZGluZyBtYWluIGZyYW1l
LgogCisgICAgVmlzaWJsZVdlYlBhZ2VUb2tlbiB2aXNpYmxlUGFnZVRva2VuKCkgY29uc3Q7CisK
ICAgICB2b2lkIHVwZGF0ZVRleHRDaGVja2VyU3RhdGUoKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJO
ZXdXZWJCYWNrRm9yd2FyZExpc3RJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qKTsKQEAgLTE4
OSw2ICsxOTMsOCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5n
PiYgcGxhdGZvcm1QYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2VzcygpOwogCisgICAgdm9pZCB1cGRh
dGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOworCiAgICAgLy8gSVBDOjpDb25uZWN0
aW9uOjpDbGllbnQKICAgICBmcmllbmQgY2xhc3MgV2ViQ29ubmVjdGlvblRvV2ViUHJvY2VzczsK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOwpAQCAtMjQ3LDYgKzI1Myw5IEBAIHByaXZhdGU6CiAKICAgICBlbnVtIGNs
YXNzIE5vT3JNYXliZSB7IE5vLCBNYXliZSB9IG1faXNSZXNwb25zaXZlOwogICAgIFZlY3Rvcjxz
dGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCB3ZWJQcm9jZXNzSXNSZXNwb25zaXZlKT4+IG1faXNSZXNw
b25zaXZlQ2FsbGJhY2tzOworCisgICAgVmlzaWJsZVdlYlBhZ2VDb3VudGVyIG1fdmlzaWJsZVBh
Z2VDb3VudGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3Bv
bnNpdmVuZXNzVGltZXI+IG1fYmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNjlmNjFmNGI2NGJmNTA2ZGUyYzc1ODY3MTE1YWM2
ZWU4OGIwYmEzLi5hMDgzMDhjODJhNDk3MmVlYzc3NjQzZTZiNjc1YTY4MzNhMjI0NGJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC04OTksNiArODk5LDggQEAKIAkJNDFGQUY1RjgxRTNDMTAyMTAwMUFFNjc4IC8qIExpYldlYlJU
Q1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUZBRjVGNjFFM0MwQjQ3MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuaCAqLzsgfTsK
IAkJNDFGQUY1RjkxRTNDMTAyNTAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFGNUY3MUUzQzBC
NDcwMDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5jcHAgKi87IH07CiAJCTQ0NTBBRUMwMURD
M0ZBRTUwMDk5NDNGMiAvKiBTaGFyZWRNZW1vcnlDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDUwQUVCRjFEQzNGQUU1MDA5OTQzRjIgLyog
U2hhcmVkTWVtb3J5Q29jb2EuY3BwICovOyB9OworCQk0NkEyQjYwODFFNTY3NkE2MDBDM0RFREEg
LyogQmFja2dyb3VuZFdlYlByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTJCNjA2MUU1Njc1QTIwMEMz
REVEQSAvKiBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovOyB9
OworCQk0NkEyQjYwOTFFNTY3NkE2MDBDM0RFREEgLyogQmFja2dyb3VuZFdlYlByb2Nlc3NSZXNw
b25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFdlYlByb2Nlc3NS
ZXNwb25zaXZlbmVzc1RpbWVyLmggKi87IH07CiAJCTRBM0NDMThBMTlCMDYzRTcwMEQxNEFFRiAv
KiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzOTE5QUY3QjA0MDAyRUJB
QjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwICovOyB9Owog
CQk0QTNDQzE4QjE5QjA2NDBGMDBEMTRBRUYgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRBNDEwRjNBMTlBRjdCMDQwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5oICovOyB9OwogCQk0QTNDQzE4QzE5QjA2NDE1MDBEMTRBRUYgLyogVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzQjE5QUY3QjA0MDAyRUJBQjUgLyogVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAgKi87IH07CkBAIC0zMDQ5LDYgKzMwNTEsOCBA
QAogCQk0MUZBRjVGNjFFM0MwQjQ3MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDUmVzb2x2ZXIuaDsgcGF0aCA9
IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxRkFGNUY3MUUzQzBCNDcwMDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMaWJXZWJSVENSZXNvbHZl
ci5jcHA7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTBBRUJGMURDM0ZBRTUwMDk5NDNGMiAvKiBTaGFy
ZWRNZW1vcnlDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBT
aGFyZWRNZW1vcnlDb2NvYS5jcHA7IHBhdGggPSBjb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAv
KiBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFja2dyb3VuZFdlYlByb2Nlc3NSZXNwb25zaXZl
bmVzc1RpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZBMkI2MDcxRTU2
NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRXZWJQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jl
c3BvbnNpdmVuZXNzVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBG
MzUxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNDEwRjM2MTlBRjdB
QzMwMDJFQkFCNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzkxOUFGN0IwNDAwMkVCQUI1IC8qIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0MTEsNiArNjQxNSw4IEBA
CiAJCQkJMUFBRjA4OUUxOTI2ODFBQzAwQjYzOTBDIC8qIFVzZXJDb250ZW50ICovLAogCQkJCTFB
NTNDMkEzMUEzMjU2OTEwMDRFOEM3MCAvKiBXZWJzaXRlRGF0YSAqLywKIAkJCQk3Q0QxMDJEOTE4
NjY3NzA2MDBFRDQyOUQgLyogQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oICovLAorCQkJCTQ2QTJC
NjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNz
VGltZXIuY3BwICovLAorCQkJCTQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5k
V2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCAqLywKIAkJCQlFMTUxM0M2NDE2NkVBQkIy
MDAxNDlGQ0IgLyogQ2hpbGRQcm9jZXNzUHJveHkuY3BwICovLAogCQkJCUUxNTEzQzY1MTY2RUFC
QjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5oICovLAogCQkJCUJDMjY1MjEyMTE4MjYw
ODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmNwcCAqLywKQEAgLTc5NTMsNiArNzk1OSw3
IEBACiAJCQkJNEY2MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTcwNTExMUJFNDEwRTYwMDg3NEFGMSAvKiBCbG9ja1NQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDY1RkExMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hl
TW9kZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QTJCNjA5MUU1Njc2QTYwMEMzREVEQSAvKiBC
YWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBQTJFNTFEMTJFNEMwNUUwMEJDNDk2NiAvKiBDR1V0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUEyRDk1NkYxMjg0ODU2NDAwMUVCOTYyIC8qIENoaWxkUHJvY2Vzcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFGQUVDM0ExQjA2NTc2MzAwMDlDNEU3IC8qIENoaWxkUHJvY2Vzc01l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTk2MzQsNiArOTY0MSw3IEBACiAJCQkJNTMyMTU5
NTMxREJBRTcxODAwNTRBQTNDIC8qIE5ldHdvcmtTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVDMjBDQjlEMUJCMERDRkEwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzFBMkVDNTUxNDg5OTgyRTAwODEwRDcxIC8qIE5vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ2QTJCNjA4MUU1Njc2
QTYwMEMzREVEQSAvKiBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzEzMTI2MUUxNDhGRjgyQzAwQkEyQTM5IC8qIE5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUEy
RUM1MDE0ODk5ODA1MDA4MTBENzEgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDg0OEMxMjdGNkE0OTAwMUVCOTYy
IC8qIE5QSWRlbnRpZmllckRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301951</attachid>
            <date>2017-02-17 10:19:46 -0800</date>
            <delta_ts>2017-02-19 16:23:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168479-20170217101707.patch</filename>
            <type>text/plain</type>
            <size>31561</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzM1MjM1OGY4ZWI4Nzhj
MThmZGVhNTY2MmZlNzQ5N2Q4ZjM5MmU4My4uMGM5MDMwZGM5MzE1MDJhZGY0OGYxNmM3Yzc3MmE3
ZGNmMjUwY2YyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE3LTAyLTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gU3VwcG9ydCB0ZXJt
aW5hdGlvbiBvZiB1bnJlc3BvbnNpdmUgV2ViQ29udGVudCBwcm9jZXNzZXMgdGhhdCBhcmUgaW4g
dGhlIGJhY2tncm91bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2ODQ3OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA1NTg3NDU+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCB0ZXJtaW5h
dGlvbiBvZiB1bnJlc3BvbnNpdmUgV2ViQ29udGVudCBwcm9jZXNzZXMgdGhhdCBhcmUgaW4gdGhl
IGJhY2tncm91bmQuCisgICAgICAgIFRoaXMgcHJvdGVjdHMgdXMgYWdhaW5zdCBjYXNlcyB3aGVy
ZSBhIGJhY2tncm91bmQgdGFiIGlzIHVucmVzcG9uc2l2ZSBhbmQgaGFzIGhpZ2ggQ1BVCisgICAg
ICAgIHVzYWdlLCB0aHVzIGRyYWluaW5nIHRoZSBiYXR0ZXJ5IHdpdGhvdXQgdGhlIHVzZXIga25v
d2luZyBhYm91dCBpdCAoZS5nLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk4MDgwMDU+KS4K
KworICAgICAgICBUaGUgZmVhdHVyZSB3b3JrcyBhcyBmb2xsb3dzOgorICAgICAgICAtIElmIGEg
V2ViUHJvY2Vzc1Byb3h5IGhhcyBwYWdlcyBidXQgbm9uZSBvZiB0aGVtIGFyZSB2aXNpYmxlLCB0
aGVuIGl0IHdpbGwgY2hlY2sKKyAgICAgICAgICByZWd1bGFybHkgaWYgaXRzIGFzc29jaWF0ZWQg
V2ViQ29udGVudCBwcm9jZXNzIGlzIHN0aWxsIHJlc3BvbnNpdmUuCisgICAgICAgIC0gRXZlcnkg
dGltZSB3ZSBmaW5kIHRoYXQgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBpcyByZXNwb25zaXZlLCB3
ZSBleHBvbmVudGlhbGx5CisgICAgICAgICAgYmFjayBvZmYgdGhlIHRpbWVyIHRvIGF2b2lkIHdh
a2luZyB1cCB0aGUgcHJvY2VzcyB0b28gb2Z0ZW4uIFRoZSB0aW1lciBpbml0aWFsbHkKKyAgICAg
ICAgICB1c2VzIGEgMjAgc2Vjb25kcyBpbnRlcnZhbCBhbmQgY2FuIGJhY2sgb2ZmIHVwIHRvIDgg
aG91cnMuCisgICAgICAgIC0gSWYgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBpcyB1bnJlc3BvbnNp
dmUsIHRoZW4gd2UgdGVybWluYXRlIGl0LiBObyBub3RpZmljYXRpb24KKyAgICAgICAgICBpcyBz
aG93biB0byB0aGUgdXNlciBhbmQgdGhlIHRlcm1pbmF0aW9uIGlzIG5vdCBpbW1lZGlhdGVseSBv
YnNlcnZhYmxlIHNpbmNlIHRoZQorICAgICAgICAgIHRhYiBpcyBub3QgdmlzaWJsZSBhbmQgaXRz
IHRpdGxlIHJlbWFpbnMuIFRoZSB0YWIgaXMgbm90IGltbWVkaWF0ZWx5IHJlbG9hZGVkCisgICAg
ICAgICAgc28gYXMgdG8gYXZvaWQgZ2V0dGluZyBiYWNrIGludG8gYSBiYWQgc3RhdGUgaW4gdGhl
IGJhY2tncm91bmQgKGFuZCBoYXZlIGEKKyAgICAgICAgICB5by15byBlZmZlY3QpLgorICAgICAg
ICAtIElmIHRoZSB1c2VyIHN3aXRjaGVzIHRvIGEgdGFiIHRoYXQgd2FzIHByZXZpb3VzbHkga2ls
bGVkIGZvciBiZWluZyB1bnJlc3BvbnNpdmUKKyAgICAgICAgICB3aGlsZSBpbiB0aGUgYmFja2dy
b3VuZCwgd2Ugd2lsbCB0aGVuIHJlbG9hZCB0aGUgdGFiIGluIGEgZnJlc2ggV2ViQ29udGVudAor
ICAgICAgICAgIHByb2Nlc3MuIFRoZSBjcmFzaCBiYW5uZXIgd2lsbCBvbmx5IGJlIHNob3duIGlm
IHRoZSB0YWIgaGFzIGV2ZXIgYmVlbiB2aXNpYmxlLgorICAgICAgICAgIElmIGl0IHdhc24ndCBl
dmVyIHZpc2libGUgKGUuZy4gc2Vzc2lvbiByZXN0b3JlIGNhc2UpLCB0aGVuIGl0IHdpbGwgbG9v
ayBhcyBpZgorICAgICAgICAgIHRoZSB0YWIgbG9hZHMgZm9yIHRoZSBmaXJzdCB0aW1lIHdoZW4g
dGhlIHVzZXIgc3dpdGNoZXMgdG8gaXQuCisKKyAgICAgICAgVGhlIGZ1bmN0aW9uYWxpdHkgaXMg
ZGlzYWJsZWQgYnkgZGVmYXVsdCBhbmQgY2FuIGJlIGVuYWJsZWQgYnkgdGhlIGNsaWVudCB2aWEg
dGhlIG5ldworICAgICAgICBXS0NvbnRleHRTZXRVbnJlc3BvbnNpdmVCYWNrZ3JvdW5kUHJvY2Vz
c2VzVGVybWluYXRpb25FbmFibGVkKCkgcHJpdmF0ZSBBUEkuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dFNldFVucmVzcG9uc2l2ZUJhY2tncm91
bmRQcm9jZXNzZXNUZXJtaW5hdGlvbkVuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0JhY2tncm91bmRXZWJQ
cm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpC
YWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXI6OkJhY2tncm91bmRXZWJQcm9j
ZXNzUmVzcG9uc2l2ZW5lc3NUaW1lcik6CisgICAgICAgIChXZWJLaXQ6OkJhY2tncm91bmRXZWJQ
cm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lcjo6dXBkYXRlU3RhdGUpOgorICAgICAgICAoV2ViS2l0
OjpCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXI6OnRpbWVyRmlyZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9CYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGlt
ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkJhY2tncm91bmRXZWJQcm9jZXNzUmVzcG9u
c2l2ZW5lc3NUaW1lcjo6c2hvdWxkQmVBY3RpdmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9X
ZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWxvYWRBZnRlckJl
aW5nS2lsbGVkSW5CYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
aXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnRlcm1pbmF0ZVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
c2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjptX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5OjphZGRFeGlzdGluZ1dlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OnVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6dmlzaWJsZVBhZ2VDb3VudCk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCiAyMDE3LTAyLTE2ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIG1ldGhvZHMgV0tQYWdlR2V0RGVidWdQ
YWludEZsYWdzIGFuZCBXS1BhZ2VTZXREZWJ1Z1BhaW50RmxhZ3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQK
aW5kZXggYTAzNDE4ZTZmYzBhNmUyNjM3YTEwMWJhMTFmZDE2ZTYyODA5NDI3MS4uZTg4YWU4MWEw
MDgzZmEwNTEyMmFhMGVlOTg3ZmIzYTM2OGEwNTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAg
LTI3Myw2ICsyNzMsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBTaGFyZWQvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGEuY3BwCiAKKyAgICBVSVByb2Nlc3MvQmFja2dyb3VuZFdlYlByb2Nl
c3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcAogICAgIFVJUHJvY2Vzcy9DaGlsZFByb2Nlc3NQcm94
eS5jcHAKICAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKICAgICBVSVByb2Nlc3Mv
RnJhbWVMb2FkU3RhdGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggMjQ0ZmYzOTFl
Njg1NDRkM2UyMTIwYjY0ODg5ZDVjNDZjZDI0YTU3Ny4uMThkMWUyYjk3ODNkN2IyYTU1NzNiZDdl
ZjNlYjkyYmEwMTYyNjRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcApAQCAtOTYsNiArOTYs
NyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b246OmNvcHkoKQogICAgIGNvcHktPm1fbWF4aW11bVByb2Nlc3NDb3VudCA9IHRoaXMtPm1fbWF4
aW11bVByb2Nlc3NDb3VudDsKICAgICBjb3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hl
TW9kZWw7CiAgICAgY29weS0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVk
ID0gdGhpcy0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkOworICAgIGNv
cHktPm1fdW5yZXNwb25zaXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxlZCA9
IHRoaXMtPm1fdW5yZXNwb25zaXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxl
ZDsKICAgICBjb3B5LT5tX2Rpc2tDYWNoZVNpemVPdmVycmlkZSA9IHRoaXMtPm1fZGlza0NhY2hl
U2l6ZU92ZXJyaWRlOwogICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHRo
aXMtPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2FwcGxpY2F0aW9u
Q2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSB0aGlzLT5tX2FwcGxpY2F0aW9uQ2FjaGVG
bGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAppbmRleCAxMDQwN2Rh
MTkwNTAwOWIzN2Q3YWFiZjcwMThmMzZjMzQxN2ZjNjIxLi5kNDJiNzQ5Yjk3Zjk4MmIwNWZkNDYw
NWU4ZWZjZDViZTc5MzYzMzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKQEAgLTU1LDYgKzU1LDkg
QEAgcHVibGljOgogICAgIGJvb2wgZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxl
ZDsgfQogICAgIHZvaWQgc2V0RGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZChi
b29sIGVuYWJsZWQpIHsgbV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkID0g
ZW5hYmxlZDsgfQogCisgICAgYm9vbCB1bnJlc3BvbnNpdmVCYWNrZ3JvdW5kUHJvY2Vzc2VzVGVy
bWluYXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV91bnJlc3BvbnNpdmVCYWNrZ3JvdW5k
UHJvY2Vzc2VzVGVybWluYXRpb25FbmFibGVkOyB9CisgICAgdm9pZCBzZXRVbnJlc3BvbnNpdmVC
YWNrZ3JvdW5kUHJvY2Vzc2VzVGVybWluYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3Vu
cmVzcG9uc2l2ZUJhY2tncm91bmRQcm9jZXNzZXNUZXJtaW5hdGlvbkVuYWJsZWQgPSBlbmFibGVk
OyB9CisKICAgICBXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FjaGVNb2RlbDsgfQogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChXZWJLaXQ6OkNhY2hlTW9k
ZWwgY2FjaGVNb2RlbCkgeyBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOyB9CiAKQEAgLTEyMSw2
ICsxMjQsNyBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV9tYXhpbXVtUHJvY2Vzc0NvdW50
IHsgMCB9OwogICAgIGJvb2wgbV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVk
IHsgZmFsc2UgfTsKKyAgICBib29sIG1fdW5yZXNwb25zaXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rl
cm1pbmF0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgV2ViS2l0OjpDYWNoZU1vZGVsIG1fY2Fj
aGVNb2RlbCB7IFdlYktpdDo6Q2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyIH07CiAgICAgaW50
NjRfdCBtX2Rpc2tDYWNoZVNpemVPdmVycmlkZSB7IC0xIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggNzQ4MmRlNjgxNGQ4YjJmZjBhMmEx
MTQ4Y2M3MWU3OWQwYTkxYzc4Ni4uMmNjZTRkYTUwMjU3MzRlODIzZDQ4ZGM3ZjBjMjA0MzRhOGJj
NDQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAK
QEAgLTM5Nyw2ICszOTcsMTEgQEAgdm9pZCBXS0NvbnRleHRTZXREaXNrQ2FjaGVTcGVjdWxhdGl2
ZVZhbGlkYXRpb25FbmFibGVkKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLAogICAgIHRvSW1wbChj
b250ZXh0UmVmKS0+Y29uZmlndXJhdGlvbigpLnNldERpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRh
dGlvbkVuYWJsZWQodmFsdWUpOwogfQogCit2b2lkIFdLQ29udGV4dFNldFVucmVzcG9uc2l2ZUJh
Y2tncm91bmRQcm9jZXNzZXNUZXJtaW5hdGlvbkVuYWJsZWQoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYsIGJvb2wgdmFsdWUpCit7CisgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5jb25maWd1cmF0aW9u
KCkuc2V0VW5yZXNwb25zaXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxlZCh2
YWx1ZSk7Cit9CisKIFdLQ29va2llTWFuYWdlclJlZiBXS0NvbnRleHRHZXRDb29raWVNYW5hZ2Vy
KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogewogICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29u
dGV4dFJlZiktPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCmluZGV4IDY3
NDJmZmJhMTM3NmRlYzEzYjNmY2NjYTgzNWI4N2U0MGNjOTI2ZjUuLjRkODA0OGFmYzlhNzAxMTMz
Y2Q4NTc2YzFhMjczMGQzN2UwOGIxZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaApAQCAtNjIsNiArNjIsOCBAQCBXS19FWFBPUlQg
dm9pZCBXS0NvbnRleHRTZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbihXS0Nv
bnRleHRSZWYgY29udAogCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXREaXNrQ2FjaGVTcGVj
dWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBib29sIHZhbHVl
KTsKIAorV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0VW5yZXNwb25zaXZlQmFja2dyb3VuZFBy
b2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCB2YWx1
ZSk7CisKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEljb25EYXRhYmFzZVBhdGgoV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIGljb25EYXRhYmFzZVBhdGgpOwogCiBXS19FWFBP
UlQgdm9pZCBXS0NvbnRleHRBbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoV0tD
b250ZXh0UmVmIGNvbnRleHQsIFdLQ2VydGlmaWNhdGVJbmZvUmVmIGNlcnRpZmljYXRlLCBXS1N0
cmluZ1JlZiBob3N0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNr
Z3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0JhY2tncm91bmRXZWJQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTI3NDE0ODA0OTUxZmZjOTUwYjcyOWUzODEzZWVhY2Y4ZTA2ZGRkMgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNrZ3JvdW5kV2ViUHJvY2Vz
c1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQmFja2dyb3VuZFdlYlByb2Nlc3NSZXNwb25z
aXZlbmVzc1RpbWVyLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86OnNlY29uZHMgaW5pdGlhbEludGVydmFs
IHsgMjAgfTsKK3N0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6c2Vjb25kcyBtYXhpbXVtSW50ZXJ2
YWwgeyAyODgwMCB9OyAvLyA4IGhvdXJzLgorCitCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNp
dmVuZXNzVGltZXI6OkJhY2tncm91bmRXZWJQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lcihXZWJQ
cm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSkKKyAgICA6IG1fd2ViUHJvY2Vzc1Byb3h5KHdl
YlByb2Nlc3NQcm94eSkKKyAgICAsIG1faW50ZXJ2YWwoaW5pdGlhbEludGVydmFsKQorICAgICwg
bV90aW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3Bv
bnNpdmVuZXNzVGltZXI6OnRpbWVyRmlyZWQpCit7Cit9CisKK3ZvaWQgQmFja2dyb3VuZFdlYlBy
b2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyOjp1cGRhdGVTdGF0ZSgpCit7CisgICAgaWYgKCFzaG91
bGRCZUFjdGl2ZSgpKSB7CisgICAgICAgIGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAg
ICAgICAgIG1faW50ZXJ2YWwgPSBpbml0aWFsSW50ZXJ2YWw7CisgICAgICAgICAgICBtX3RpbWVy
LnN0b3AoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFt
X3RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KG1faW50ZXJ2
YWwpOworfQorCitzdGF0aWMgVmVjdG9yPFJlZlB0cjxXZWJQYWdlUHJveHk+PiBwYWdlc0NvcHko
V1RGOjpJdGVyYXRvclJhbmdlPFdlYlByb2Nlc3NQcm94eTo6V2ViUGFnZVByb3h5TWFwOjpjb25z
dF9pdGVyYXRvcjo6VmFsdWVzPiBwYWdlcykKK3sKKyAgICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2VQ
cm94eT4+IHZlY3RvcjsKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlcykKKyAgICAgICAgdmVj
dG9yLmFwcGVuZChwYWdlKTsKKyAgICByZXR1cm4gdmVjdG9yOworfQorCit2b2lkIEJhY2tncm91
bmRXZWJQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lcjo6dGltZXJGaXJlZCgpCit7CisgICAgQVNT
RVJUKHNob3VsZEJlQWN0aXZlKCkpOworICAgIG1fd2ViUHJvY2Vzc1Byb3h5LmlzUmVzcG9uc2l2
ZShbdGhpc10oYm9vbCBwcm9jZXNzSXNSZXNwb25zaXZlKSB7CisgICAgICAgIGlmIChwcm9jZXNz
SXNSZXNwb25zaXZlKSB7CisgICAgICAgICAgICAvLyBFeHBvbmVudGlhbCBiYWNrb2ZmIHRvIGF2
b2lkIHdha2luZyB1cCB0aGUgcHJvY2VzcyB0b28gb2Z0ZW4uCisgICAgICAgICAgICBtX2ludGVy
dmFsID0gc3RkOjptaW4obV9pbnRlcnZhbCAqIDIsIG1heGltdW1JbnRlcnZhbCk7CisgICAgICAg
ICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChtX2ludGVydmFsKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9n
Z2luZywgIktpbGxpbmcgYSBiYWNrZ3JvdW5kIFdlYlByb2Nlc3MgYmVjYXVzZSBpdCBpcyBub3Qg
cmVzcG9uc2l2ZSIpOworICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlc0NvcHkobV93ZWJQ
cm9jZXNzUHJveHkucGFnZXMoKSkpCisgICAgICAgICAgICBwYWdlLT50ZXJtaW5hdGVQcm9jZXNz
KFdlYlBhZ2VQcm94eTo6VGVybWluYXRpb25SZWFzb246OlVucmVzcG9uc2l2ZVdoaWxlSW5CYWNr
Z3JvdW5kKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQmFja2dyb3VuZFdlYlByb2Nlc3NSZXNwb25zaXZl
bmVzc1RpbWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQmFja2dyb3VuZFdlYlByb2Nl
c3NSZXNwb25zaXZlbmVzc1RpbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRkZGIyYmY2ZDFmZTRmZTZlZWNj
ZDlmYjc2MzQzMWYyYTBiNDI2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9CYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaApAQCAtMCww
ICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgQmFja2dyb3VuZFdlYlByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyIHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGlt
ZXIoV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAgdm9pZCB1cGRhdGVTdGF0ZSgpOworCitwcml2YXRl
OgorICAgIHZvaWQgdGltZXJGaXJlZCgpOworICAgIGJvb2wgc2hvdWxkQmVBY3RpdmUoKSBjb25z
dCB7IHJldHVybiAhbV93ZWJQcm9jZXNzUHJveHkudmlzaWJsZVBhZ2VDb3VudCgpICYmIG1fd2Vi
UHJvY2Vzc1Byb3h5LnBhZ2VDb3VudCgpOyB9CisKKyAgICBXZWJQcm9jZXNzUHJveHkmIG1fd2Vi
UHJvY2Vzc1Byb3h5OworICAgIHN0ZDo6Y2hyb25vOjpzZWNvbmRzIG1faW50ZXJ2YWw7CisgICAg
UnVuTG9vcDo6VGltZXI8QmFja2dyb3VuZFdlYlByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyPiBt
X3RpbWVyOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCBiM2Q2NDgxY2ZlYzEzMGRiOTBhMmJkOWNjNTAwM2UwMmZjYzg2NTBmLi4wOTNkYWI2
NTk5YzJlYjE3MjhkMTYyMzRlODdmZDBkMDFkZTFlMDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzE2LDYgKzcxNiw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcygpCiAgICAgQVNTRVJUKG1fcHJvY2Vzcy0+c3RhdGUo
KSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpUZXJtaW5hdGVkKTsKIAogICAgIG1faXNWYWxp
ZCA9IHRydWU7CisgICAgbV93YXNLaWxsZWRGb3JCZWluZ1VucmVzcG9uc2l2ZVdoaWxlSW5CYWNr
Z3JvdW5kID0gZmFsc2U7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKG1fcGFnZUlEKTsK
ICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKIApAQCAtMTUxNywxNCArMTUx
OCwzMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld0RpZEVudGVyV2luZG93KCkKICAgICB9CiB9
CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWxvYWRBZnRlckJlaW5nS2lsbGVkSW5CYWNrZ3JvdW5k
KCkKK3sKKyAgICBBU1NFUlQoIWlzVmFsaWQoKSk7CisKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCIlcCAtIFJlbG9hZGluZyB0YWIgdGhhdCB3YXMga2lsbGVkIGluIHRoZSBiYWNrZ3JvdW5k
IiwgdGhpcyk7CisKKyAgICAvLyBPbmx5IHJlcG9ydCBhcyBhIGNyYXNoIGlmIHRoZSBwYWdlIHdh
cyBldmVyIHZpc2libGUsIG90aGVyd2lzZSBzaWxlbnRseSByZWxvYWQuCisgICAgaWYgKG1faGFz
RXZlckJlZW5WaXNpYmxlKQorICAgICAgICBwcm9jZXNzRGlkQ3Jhc2goKTsKKyAgICBlbHNlCisg
ICAgICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzRm9yUmVsb2FkKCk7Cit9CisKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKQogewogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXItPmludmFsaWRhdGUoKTsK
ICNlbmRpZgogCi0gICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgaWYgKCFpc1ZhbGlkKCkpIHsKKyAg
ICAgICAgaWYgKG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzICYgQWN0aXZp
dHlTdGF0ZTo6SXNWaXNpYmxlICYmIG1fd2FzS2lsbGVkRm9yQmVpbmdVbnJlc3BvbnNpdmVXaGls
ZUluQmFja2dyb3VuZCkKKyAgICAgICAgICAgIHJlbG9hZEFmdGVyQmVpbmdLaWxsZWRJbkJhY2tn
cm91bmQoKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIElmIHRoZSB2aXNpYmls
aXR5IHN0YXRlIG1heSBoYXZlIGNoYW5nZWQsIHRoZW4gc28gbWF5IHRoZSB2aXN1YWxseSBpZGxl
ICYgb2NjbHVkZWQgYWdub3N0aWMgc3RhdGUuCiAgICAgaWYgKG1fcG90ZW50aWFsbHlDaGFuZ2Vk
QWN0aXZpdHlTdGF0ZUZsYWdzICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQpAQCAtMTU1Niwx
OCArMTU3MywyNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hh
bmdlKCkKICAgICAvLyBUaGlzIG11c3QgaGFwcGVuIGFmdGVyIHRoZSBTZXRBY3Rpdml0eVN0YXRl
IG1lc3NhZ2UgaXMgc2VudCwgdG8gZW5zdXJlIHRoZSBwYWdlIHZpc2liaWxpdHkgZXZlbnQgY2Fu
IGZpcmUuCiAgICAgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogCi0gICAgLy8gSWYgd2UndmUgc3Rh
cnRlZCB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIgYXMgcGFydCBvZiB0ZWxsaW5nIHRoZSB3ZWIg
cHJvY2VzcyB0byB1cGRhdGUgdGhlIGJhY2tpbmcgc3RvcmUKLSAgICAvLyBzdGF0ZSwgaXQgbWln
aHQgbm90IHNlbmQgYmFjayBhIHJlcGx5IChzaW5jZSBpdCB3b24ndCBwYWludCBhbnl0aGluZyBp
ZiB0aGUgd2ViIHBhZ2UgaXMgaGlkZGVuKSBzbyB3ZQotICAgIC8vIHN0b3AgdGhlIHVucmVzcG9u
c2l2ZW5lc3MgdGltZXIgaGVyZS4KLSAgICBpZiAoKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJ
c1Zpc2libGUpICYmICFpc1ZpZXdWaXNpYmxlKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+cmVzcG9u
c2l2ZW5lc3NUaW1lcigpLnN0b3AoKTsKLQogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAg
aWYgKCgoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgJiYgIWlzVmlld1Zpc2li
bGUoKSkgfHwgKChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpICYmICFt
X3BhZ2VDbGllbnQuaXNWaWV3V2luZG93QWN0aXZlKCkpCiAgICAgICAgIHx8ICgoY2hhbmdlZCAm
IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCkgJiYgIShtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0
eVN0YXRlOjpJc0ZvY3VzZWQpKSkKICAgICAgICAgcmVxdWVzdFBvaW50ZXJVbmxvY2soKTsKICNl
bmRpZgogCisgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpIHsKKyAg
ICAgICAgaWYgKGlzVmlld1Zpc2libGUoKSkgeworICAgICAgICAgICAgbV9oYXNFdmVyQmVlblZp
c2libGUgPSB0cnVlOworICAgICAgICAgICAgbV92aXNpYmxlUGFnZVRva2VuID0gbV9wcm9jZXNz
LT52aXNpYmxlUGFnZVRva2VuKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Zp
c2libGVQYWdlVG9rZW4gPSBudWxscHRyOworCisgICAgICAgICAgICAvLyBJZiB3ZSd2ZSBzdGFy
dGVkIHRoZSByZXNwb25zaXZlbmVzcyB0aW1lciBhcyBwYXJ0IG9mIHRlbGxpbmcgdGhlIHdlYiBw
cm9jZXNzIHRvIHVwZGF0ZSB0aGUgYmFja2luZyBzdG9yZQorICAgICAgICAgICAgLy8gc3RhdGUs
IGl0IG1pZ2h0IG5vdCBzZW5kIGJhY2sgYSByZXBseSAoc2luY2UgaXQgd29uJ3QgcGFpbnQgYW55
dGhpbmcgaWYgdGhlIHdlYiBwYWdlIGlzIGhpZGRlbikgc28gd2UKKyAgICAgICAgICAgIC8vIHN0
b3AgdGhlIHVucmVzcG9uc2l2ZW5lc3MgdGltZXIgaGVyZS4KKyAgICAgICAgICAgIG1fcHJvY2Vz
cy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0b3AoKTsKKyAgICAgICAgfQorICAgIH0KKwogICAg
IGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdykgewogICAgICAgICBpZiAo
aXNJbldpbmRvdygpKQogICAgICAgICAgICAgdmlld0RpZEVudGVyV2luZG93KCk7CkBAIC0yMzcz
LDcgKzIzOTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFt
ZShjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSkKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmdOYW1lKSwgbV9w
YWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dGVybWluYXRlUHJvY2VzcygpCit2b2lk
IFdlYlBhZ2VQcm94eTo6dGVybWluYXRlUHJvY2VzcyhUZXJtaW5hdGlvblJlYXNvbiB0ZXJtaW5h
dGlvblJlYXNvbikKIHsKICAgICAvLyBOT1RFOiBUaGlzIHVzZXMgYSBjaGVjayBvZiBtX2lzVmFs
aWQgcmF0aGVyIHRoYW4gY2FsbGluZyBpc1ZhbGlkKCkgc2luY2UKICAgICAvLyB3ZSB3YW50IHRo
aXMgdG8gcnVuIGV2ZW4gZm9yIHBhZ2VzIGJlaW5nIGNsb3NlZCBvciB0aGF0IGFscmVhZHkgY2xv
c2VkLgpAQCAtMjM4Miw2ICsyNDA3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRlcm1pbmF0ZVBy
b2Nlc3MoKQogCiAgICAgbV9wcm9jZXNzLT5yZXF1ZXN0VGVybWluYXRpb24oKTsKICAgICByZXNl
dFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKCk7CisgICAgbV93YXNLaWxsZWRGb3JCZWluZ1VucmVz
cG9uc2l2ZVdoaWxlSW5CYWNrZ3JvdW5kID0gdGVybWluYXRpb25SZWFzb24gPT0gVGVybWluYXRp
b25SZWFzb246OlVucmVzcG9uc2l2ZVdoaWxlSW5CYWNrZ3JvdW5kOwogfQogCiBTZXNzaW9uU3Rh
dGUgV2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGUoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+JiBmaWx0ZXIpIGNvbnN0CkBAIC01NDc3LDYgKzU1MDMs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCgpCiAg
ICAgbV9hY3Rpdml0eVRva2VuID0gbnVsbHB0cjsKICNlbmRpZgogICAgIG1fcGFnZUlzVXNlck9i
c2VydmFibGVDb3VudCA9IG51bGxwdHI7CisgICAgbV92aXNpYmxlUGFnZVRva2VuID0gbnVsbHB0
cjsKIAogICAgIG1faXNWYWxpZCA9IGZhbHNlOwogICAgIG1faXNQYWdlU3VzcGVuZGVkID0gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNzNhN2ZlOGNj
ZWI1OTA5NzIzYjE3Mzc0OWZjZGU3NzRhNjhhNzYzYy4uZGNlZjhkNTExODJlMGI2ZTJmNzMzNTI2
Y2I4OTYwZjg2NGU5MDU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMjMzLDYgKzIzMywxMCBAQCB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxFZGl0aW5nUmFu
Z2U+IEVkaXRpbmdSYW5nZUNhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3Qg
U3RyaW5nJj4gU3RyaW5nQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHMmPiBTY3JpcHRWYWx1ZUNhbGxiYWNrOwogCitlbnVtIFZpc2libGVXZWJQYWdlQ291bnRlclR5
cGUgeyB9OwordXNpbmcgVmlzaWJsZVdlYlBhZ2VDb3VudGVyID0gUmVmQ291bnRlcjxWaXNpYmxl
V2ViUGFnZUNvdW50ZXJUeXBlPjsKK3VzaW5nIFZpc2libGVXZWJQYWdlVG9rZW4gPSBWaXNpYmxl
V2ViUGFnZUNvdW50ZXI6OlRva2VuOworCiAjaWYgUExBVEZPUk0oR1RLKQogdHlwZWRlZiBHZW5l
cmljQ2FsbGJhY2s8QVBJOjpFcnJvcio+IFByaW50RmluaXNoZWRDYWxsYmFjazsKICNlbmRpZgpA
QCAtNjgxLDcgKzY4NSw4IEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBlc3RpbWF0ZWRQcm9ncmVz
cygpIGNvbnN0OwogCi0gICAgdm9pZCB0ZXJtaW5hdGVQcm9jZXNzKCk7CisgICAgZW51bSBjbGFz
cyBUZXJtaW5hdGlvblJlYXNvbiB7IFVucmVzcG9uc2l2ZVdoaWxlSW5CYWNrZ3JvdW5kLCBPdGhl
ciB9OworICAgIHZvaWQgdGVybWluYXRlUHJvY2VzcyhUZXJtaW5hdGlvblJlYXNvbiA9IFRlcm1p
bmF0aW9uUmVhc29uOjpPdGhlcik7CiAKICAgICBTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlKGNv
bnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpPiYgPSBudWxs
cHRyKSBjb25zdDsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiByZXN0b3JlRnJvbVNlc3Np
b25TdGF0ZShTZXNzaW9uU3RhdGUsIGJvb2wgbmF2aWdhdGUpOwpAQCAtMTU5OSw2ICsxNjA0LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpOwogICAg
IHZvaWQgdmlld0RpZExlYXZlV2luZG93KCk7CiAgICAgdm9pZCB2aWV3RGlkRW50ZXJXaW5kb3co
KTsKKyAgICB2b2lkIHJlbG9hZEFmdGVyQmVpbmdLaWxsZWRJbkJhY2tncm91bmQoKTsKIAogI2lm
IFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0
KGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiwgYm9vbCBjb250ZW50UHJldmVudHNEZWZhdWx0
LCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTk1NCw2ICsxOTYwLDcgQEAgcHJpdmF0ZToKICAgICBV
c2VyT2JzZXJ2YWJsZVBhZ2VDb3VudGVyOjpUb2tlbiBtX3BhZ2VJc1VzZXJPYnNlcnZhYmxlQ291
bnQ7CiAgICAgUHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRUb2tlbiBtX3ByZXZlbnRQcm9jZXNz
U3VwcHJlc3Npb25Db3VudDsKICAgICBIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXND
b3VudGVyOjpUb2tlbiBtX2hpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdBdXRvSW5jcmVhc2Vz
Q291bnQ7CisgICAgVmlzaWJsZVdlYlBhZ2VUb2tlbiBtX3Zpc2libGVQYWdlVG9rZW47CiAgICAg
ICAgIAogICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBtX3Njcm9sbFBpbm5pbmdC
ZWhhdmlvcjsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHls
ZT4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7CkBAIC0xOTcyLDYgKzE5NzksNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9oYXNIYWRTZWxlY3Rpb25DaGFuZ2VzRnJvbVVzZXJJbnRlcmFjdGlvbiB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX25lZWRzSGlkZGVuQ29udGVudEVkaXRhYmxlUXVpcmsgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9uZWVkc1BsYWluVGV4dFF1aXJrIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faGFzRXZlckJlZW5WaXNpYmxlIHsgZmFsc2UgfTsKIAogI2lmIEVOQUJMRShNRURJQV9T
RVNTSU9OKQogICAgIGJvb2wgbV9oYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50
cyB7IGZhbHNlIH07CkBAIC0xOTk3LDYgKzIwMDUsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAg
ICBib29sIG1faXNVc2luZ0hpZ2hQZXJmb3JtYW5jZVdlYkdMIHsgZmFsc2UgfTsKKyAgICBib29s
IG1fd2FzS2lsbGVkRm9yQmVpbmdVbnJlc3BvbnNpdmVXaGlsZUluQmFja2dyb3VuZCB7IGZhbHNl
IH07CiAgICAgICAgIAogICAgIFdlYWtQdHJGYWN0b3J5PFdlYlBhZ2VQcm94eT4gbV93ZWFrUHRy
RmFjdG9yeTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCmluZGV4IGUxOTRjZGE3YmYzZDI0MzYzNzgwMjBmYTFmZGJlODhmZmU4ZTY5YmQuLmUwNTY2
MGY4NDdhZGE2Yjc4MjE4Y2MzMjIzMjMyNGVhNjRkNzEwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQVBJRnJhbWVIYW5kbGUuaCIKICNpbmNsdWRlICJBUElQYWdlR3JvdXBIYW5kbGUuaCIKICNp
bmNsdWRlICJBUElQYWdlSGFuZGxlLmgiCisjaW5jbHVkZSAiQmFja2dyb3VuZFdlYlByb2Nlc3NS
ZXNwb25zaXZlbmVzc1RpbWVyLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkRvd25sb2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0xMDEsNiAr
MTAyLDggQEAgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wm
IHByb2Nlc3NQb29sKQogICAgICwgbV9udW1iZXJPZlRpbWVzU3VkZGVuVGVybWluYXRpb25XYXNE
aXNhYmxlZCgwKQogICAgICwgbV90aHJvdHRsZXIoKnRoaXMpCiAgICAgLCBtX2lzUmVzcG9uc2l2
ZShOb09yTWF5YmU6Ok1heWJlKQorICAgICwgbV92aXNpYmxlUGFnZUNvdW50ZXIoW3RoaXNdKFJl
ZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOyB9
KQorICAgICwgbV9iYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcihwcm9jZXNzUG9vbC5jb25m
aWd1cmF0aW9uKCkudW5yZXNwb25zaXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5h
YmxlZCgpID8gc3RkOjptYWtlX3VuaXF1ZTxCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVu
ZXNzVGltZXI+KCp0aGlzKSA6IG51bGxwdHIpCiB7CiAgICAgV2ViUGFzdGVib2FyZFByb3h5Ojpz
aW5nbGV0b24oKS5hZGRXZWJQcm9jZXNzUHJveHkoKnRoaXMpOwogCkBAIC0yNTUsNiArMjU4LDgg
QEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKFBhZ2VD
bGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEkKICAgICBtX3BhZ2VNYXAuc2V0KHBhZ2VJRCwgd2Vi
UGFnZS5wdHIoKSk7CiAgICAgZ2xvYmFsUGFnZU1hcCgpLnNldChwYWdlSUQsIHdlYlBhZ2UucHRy
KCkpOwogCisgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKKwogICAg
IHJldHVybiB3ZWJQYWdlOwogfQogCkBAIC0yNjUsMTIgKzI3MCwxNiBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6YWRkRXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgdWludDY0
X3QgcGFnZUlEKQogCiAgICAgbV9wYWdlTWFwLnNldChwYWdlSUQsIHdlYlBhZ2UpOwogICAgIGds
b2JhbFBhZ2VNYXAoKS5zZXQocGFnZUlELCB3ZWJQYWdlKTsKKworICAgIHVwZGF0ZUJhY2tncm91
bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1v
dmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkKIHsKICAgICBtX3BhZ2VNYXAucmVtb3ZlKHBhZ2VJ
RCk7CiAgICAgZ2xvYmFsUGFnZU1hcCgpLnJlbW92ZShwYWdlSUQpOworCisgICAgdXBkYXRlQmFj
a2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKICAgICAKICAgICBWZWN0b3I8dWludDY0X3Q+
IGl0ZW1JRHNUb1JlbW92ZTsKICAgICBmb3IgKGF1dG8mIGlkQW5kSXRlbSA6IG1fYmFja0Zvcndh
cmRMaXN0SXRlbU1hcCkgewpAQCAtNzA4LDYgKzcxNywxMSBAQCBzaXplX3QgV2ViUHJvY2Vzc1By
b3h5OjpmcmFtZUNvdW50SW5QYWdlKFdlYlBhZ2VQcm94eSogcGFnZSkgY29uc3QKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCithdXRvIFdlYlByb2Nlc3NQcm94eTo6dmlzaWJsZVBhZ2VUb2tlbigp
IGNvbnN0IC0+IFZpc2libGVXZWJQYWdlVG9rZW4KK3sKKyAgICByZXR1cm4gbV92aXNpYmxlUGFn
ZUNvdW50ZXIuY291bnQoKTsKK30KKwogUmVmUHRyPEFQSTo6VXNlckluaXRpYXRlZEFjdGlvbj4g
V2ViUHJvY2Vzc1Byb3h5Ojp1c2VySW5pdGlhdGVkQWN0aXZpdHkodWludDY0X3QgaWRlbnRpZmll
cikKIHsKICAgICBpZiAoIVVzZXJJbml0aWF0ZWRBY3Rpb25NYXA6OmlzVmFsaWRLZXkoaWRlbnRp
ZmllcikgfHwgIWlkZW50aWZpZXIpCkBAIC0xMDczLDYgKzEwODcsMTIgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmRpZFJlY2VpdmVNYWluVGhyZWFkUGluZygpCiAgICAgICAgIGNhbGxiYWNrKGlz
V2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRl
QmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKQoreworICAgIGlmIChtX2JhY2tncm91bmRS
ZXNwb25zaXZlbmVzc1RpbWVyKQorICAgICAgICBtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1Rp
bWVyLT51cGRhdGVTdGF0ZSgpOworfQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogY29uc3QgSGFz
aFNldDxTdHJpbmc+JiBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtUGF0aHNXaXRoQXNzdW1lZFJl
YWRBY2Nlc3MoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CmluZGV4IDE1ODQ2N2E3MjNmM2RlZTlmN2JhYzZjZjg0MGE0MWFkMmI4NjNkMTYuLmZkYzQ0OWFi
NWQyNTVlNDQ3ZDk5ZmJmNDBlYmQwYTljYTc1YjhjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTU0LDYgKzU0LDcgQEAgc3RydWN0IFBsdWdpbklu
Zm87CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jl
c3BvbnNpdmVuZXNzVGltZXI7CiBjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdlYlBhZ2VHcm91cDsKQEAgLTgzLDYgKzg0LDcg
QEAgcHVibGljOgogCiAgICAgV1RGOjpJdGVyYXRvclJhbmdlPFdlYlBhZ2VQcm94eU1hcDo6Y29u
c3RfaXRlcmF0b3I6OlZhbHVlcz4gcGFnZXMoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VNYXAudmFs
dWVzKCk7IH0KICAgICB1bnNpZ25lZCBwYWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VN
YXAuc2l6ZSgpOyB9CisgICAgdW5zaWduZWQgdmlzaWJsZVBhZ2VDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fdmlzaWJsZVBhZ2VDb3VudGVyLnZhbHVlKCk7IH0KIAogICAgIHZvaWQgYWRkVmlzaXRl
ZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlJik7CiAgICAgdm9pZCBhZGRXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSYpOwpAQCAtMTAw
LDYgKzEwMiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZXNGcm9tUGFnZShX
ZWJQYWdlUHJveHkqKTsgLy8gSW5jbHVkaW5nIG1haW4gZnJhbWUuCiAgICAgc2l6ZV90IGZyYW1l
Q291bnRJblBhZ2UoV2ViUGFnZVByb3h5KikgY29uc3Q7IC8vIEluY2x1ZGluZyBtYWluIGZyYW1l
LgogCisgICAgVmlzaWJsZVdlYlBhZ2VUb2tlbiB2aXNpYmxlUGFnZVRva2VuKCkgY29uc3Q7CisK
ICAgICB2b2lkIHVwZGF0ZVRleHRDaGVja2VyU3RhdGUoKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJO
ZXdXZWJCYWNrRm9yd2FyZExpc3RJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qKTsKQEAgLTE4
OSw2ICsxOTMsOCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5n
PiYgcGxhdGZvcm1QYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2VzcygpOwogCisgICAgdm9pZCB1cGRh
dGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOworCiAgICAgLy8gSVBDOjpDb25uZWN0
aW9uOjpDbGllbnQKICAgICBmcmllbmQgY2xhc3MgV2ViQ29ubmVjdGlvblRvV2ViUHJvY2VzczsK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOwpAQCAtMjQ3LDYgKzI1Myw5IEBAIHByaXZhdGU6CiAKICAgICBlbnVtIGNs
YXNzIE5vT3JNYXliZSB7IE5vLCBNYXliZSB9IG1faXNSZXNwb25zaXZlOwogICAgIFZlY3Rvcjxz
dGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCB3ZWJQcm9jZXNzSXNSZXNwb25zaXZlKT4+IG1faXNSZXNw
b25zaXZlQ2FsbGJhY2tzOworCisgICAgVmlzaWJsZVdlYlBhZ2VDb3VudGVyIG1fdmlzaWJsZVBh
Z2VDb3VudGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3Bv
bnNpdmVuZXNzVGltZXI+IG1fYmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNjlmNjFmNGI2NGJmNTA2ZGUyYzc1ODY3MTE1YWM2
ZWU4OGIwYmEzLi5hMDgzMDhjODJhNDk3MmVlYzc3NjQzZTZiNjc1YTY4MzNhMjI0NGJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC04OTksNiArODk5LDggQEAKIAkJNDFGQUY1RjgxRTNDMTAyMTAwMUFFNjc4IC8qIExpYldlYlJU
Q1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUZBRjVGNjFFM0MwQjQ3MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuaCAqLzsgfTsK
IAkJNDFGQUY1RjkxRTNDMTAyNTAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFGNUY3MUUzQzBC
NDcwMDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5jcHAgKi87IH07CiAJCTQ0NTBBRUMwMURD
M0ZBRTUwMDk5NDNGMiAvKiBTaGFyZWRNZW1vcnlDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDUwQUVCRjFEQzNGQUU1MDA5OTQzRjIgLyog
U2hhcmVkTWVtb3J5Q29jb2EuY3BwICovOyB9OworCQk0NkEyQjYwODFFNTY3NkE2MDBDM0RFREEg
LyogQmFja2dyb3VuZFdlYlByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTJCNjA2MUU1Njc1QTIwMEMz
REVEQSAvKiBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovOyB9
OworCQk0NkEyQjYwOTFFNTY3NkE2MDBDM0RFREEgLyogQmFja2dyb3VuZFdlYlByb2Nlc3NSZXNw
b25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFdlYlByb2Nlc3NS
ZXNwb25zaXZlbmVzc1RpbWVyLmggKi87IH07CiAJCTRBM0NDMThBMTlCMDYzRTcwMEQxNEFFRiAv
KiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzOTE5QUY3QjA0MDAyRUJB
QjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwICovOyB9Owog
CQk0QTNDQzE4QjE5QjA2NDBGMDBEMTRBRUYgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRBNDEwRjNBMTlBRjdCMDQwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5oICovOyB9OwogCQk0QTNDQzE4QzE5QjA2NDE1MDBEMTRBRUYgLyogVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzQjE5QUY3QjA0MDAyRUJBQjUgLyogVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAgKi87IH07CkBAIC0zMDQ5LDYgKzMwNTEsOCBA
QAogCQk0MUZBRjVGNjFFM0MwQjQ3MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDUmVzb2x2ZXIuaDsgcGF0aCA9
IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxRkFGNUY3MUUzQzBCNDcwMDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMaWJXZWJSVENSZXNvbHZl
ci5jcHA7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTBBRUJGMURDM0ZBRTUwMDk5NDNGMiAvKiBTaGFy
ZWRNZW1vcnlDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBT
aGFyZWRNZW1vcnlDb2NvYS5jcHA7IHBhdGggPSBjb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAv
KiBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFja2dyb3VuZFdlYlByb2Nlc3NSZXNwb25zaXZl
bmVzc1RpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZBMkI2MDcxRTU2
NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRXZWJQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jl
c3BvbnNpdmVuZXNzVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBG
MzUxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNDEwRjM2MTlBRjdB
QzMwMDJFQkFCNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzkxOUFGN0IwNDAwMkVCQUI1IC8qIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0MTEsNiArNjQxNSw4IEBA
CiAJCQkJMUFBRjA4OUUxOTI2ODFBQzAwQjYzOTBDIC8qIFVzZXJDb250ZW50ICovLAogCQkJCTFB
NTNDMkEzMUEzMjU2OTEwMDRFOEM3MCAvKiBXZWJzaXRlRGF0YSAqLywKIAkJCQk3Q0QxMDJEOTE4
NjY3NzA2MDBFRDQyOUQgLyogQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oICovLAorCQkJCTQ2QTJC
NjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNz
VGltZXIuY3BwICovLAorCQkJCTQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5k
V2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCAqLywKIAkJCQlFMTUxM0M2NDE2NkVBQkIy
MDAxNDlGQ0IgLyogQ2hpbGRQcm9jZXNzUHJveHkuY3BwICovLAogCQkJCUUxNTEzQzY1MTY2RUFC
QjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5oICovLAogCQkJCUJDMjY1MjEyMTE4MjYw
ODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmNwcCAqLywKQEAgLTc5NTMsNiArNzk1OSw3
IEBACiAJCQkJNEY2MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTcwNTExMUJFNDEwRTYwMDg3NEFGMSAvKiBCbG9ja1NQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDY1RkExMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hl
TW9kZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QTJCNjA5MUU1Njc2QTYwMEMzREVEQSAvKiBC
YWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBQTJFNTFEMTJFNEMwNUUwMEJDNDk2NiAvKiBDR1V0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUEyRDk1NkYxMjg0ODU2NDAwMUVCOTYyIC8qIENoaWxkUHJvY2Vzcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFGQUVDM0ExQjA2NTc2MzAwMDlDNEU3IC8qIENoaWxkUHJvY2Vzc01l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTk2MzQsNiArOTY0MSw3IEBACiAJCQkJNTMyMTU5
NTMxREJBRTcxODAwNTRBQTNDIC8qIE5ldHdvcmtTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVDMjBDQjlEMUJCMERDRkEwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzFBMkVDNTUxNDg5OTgyRTAwODEwRDcxIC8qIE5vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ2QTJCNjA4MUU1Njc2
QTYwMEMzREVEQSAvKiBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzEzMTI2MUUxNDhGRjgyQzAwQkEyQTM5IC8qIE5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUEy
RUM1MDE0ODk5ODA1MDA4MTBENzEgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDg0OEMxMjdGNkE0OTAwMUVCOTYy
IC8qIE5QSWRlbnRpZmllckRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302099</attachid>
            <date>2017-02-19 16:23:06 -0800</date>
            <delta_ts>2017-02-19 18:02:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168479-20170219162024.patch</filename>
            <type>text/plain</type>
            <size>31519</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmNkMTA5Y2MwNjlmOTdl
ZDU4ZGQ0MGQ4M2RiMWIxMjA0YjVhODcyNC4uZWZlOGE4NDQ2ZTQ5YTBhNTMxMjk5NGIyNGRlZGY5
YmFkOWYxZDZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE3LTAyLTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gU3VwcG9ydCB0ZXJt
aW5hdGlvbiBvZiB1bnJlc3BvbnNpdmUgV2ViQ29udGVudCBwcm9jZXNzZXMgdGhhdCBhcmUgaW4g
dGhlIGJhY2tncm91bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2ODQ3OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA1NTg3NDU+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCB0ZXJtaW5h
dGlvbiBvZiB1bnJlc3BvbnNpdmUgV2ViQ29udGVudCBwcm9jZXNzZXMgdGhhdCBhcmUgaW4gdGhl
IGJhY2tncm91bmQuCisgICAgICAgIFRoaXMgcHJvdGVjdHMgdXMgYWdhaW5zdCBjYXNlcyB3aGVy
ZSBhIGJhY2tncm91bmQgdGFiIGlzIHVucmVzcG9uc2l2ZSBhbmQgaGFzIGhpZ2ggQ1BVCisgICAg
ICAgIHVzYWdlLCB0aHVzIGRyYWluaW5nIHRoZSBiYXR0ZXJ5IHdpdGhvdXQgdGhlIHVzZXIga25v
d2luZyBhYm91dCBpdCAoZS5nLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk4MDgwMDU+KS4K
KworICAgICAgICBUaGUgZmVhdHVyZSB3b3JrcyBhcyBmb2xsb3dzOgorICAgICAgICAtIElmIGEg
V2ViUHJvY2Vzc1Byb3h5IGhhcyBwYWdlcyBidXQgbm9uZSBvZiB0aGVtIGFyZSB2aXNpYmxlLCB0
aGVuIGl0IHdpbGwgY2hlY2sKKyAgICAgICAgICByZWd1bGFybHkgaWYgaXRzIGFzc29jaWF0ZWQg
V2ViQ29udGVudCBwcm9jZXNzIGlzIHN0aWxsIHJlc3BvbnNpdmUuCisgICAgICAgIC0gRXZlcnkg
dGltZSB3ZSBmaW5kIHRoYXQgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBpcyByZXNwb25zaXZlLCB3
ZSBleHBvbmVudGlhbGx5CisgICAgICAgICAgYmFjayBvZmYgdGhlIHRpbWVyIHRvIGF2b2lkIHdh
a2luZyB1cCB0aGUgcHJvY2VzcyB0b28gb2Z0ZW4uIFRoZSB0aW1lciBpbml0aWFsbHkKKyAgICAg
ICAgICB1c2VzIGEgMjAgc2Vjb25kcyBpbnRlcnZhbCBhbmQgY2FuIGJhY2sgb2ZmIHVwIHRvIDgg
aG91cnMuCisgICAgICAgIC0gSWYgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBpcyB1bnJlc3BvbnNp
dmUsIHRoZW4gd2UgdGVybWluYXRlIGl0LiBObyBub3RpZmljYXRpb24KKyAgICAgICAgICBpcyBz
aG93biB0byB0aGUgdXNlciBhbmQgdGhlIHRlcm1pbmF0aW9uIGlzIG5vdCBpbW1lZGlhdGVseSBv
YnNlcnZhYmxlIHNpbmNlIHRoZQorICAgICAgICAgIHRhYiBpcyBub3QgdmlzaWJsZSBhbmQgaXRz
IHRpdGxlIHJlbWFpbnMuIFRoZSB0YWIgaXMgbm90IGltbWVkaWF0ZWx5IHJlbG9hZGVkCisgICAg
ICAgICAgc28gYXMgdG8gYXZvaWQgZ2V0dGluZyBiYWNrIGludG8gYSBiYWQgc3RhdGUgaW4gdGhl
IGJhY2tncm91bmQgKGFuZCBoYXZlIGEKKyAgICAgICAgICB5by15byBlZmZlY3QpLgorICAgICAg
ICAtIElmIHRoZSB1c2VyIHN3aXRjaGVzIHRvIGEgdGFiIHRoYXQgd2FzIHByZXZpb3VzbHkga2ls
bGVkIGZvciBiZWluZyB1bnJlc3BvbnNpdmUKKyAgICAgICAgICB3aGlsZSBpbiB0aGUgYmFja2dy
b3VuZCwgd2Ugd2lsbCB0aGVuIHJlbG9hZCB0aGUgdGFiIGluIGEgZnJlc2ggV2ViQ29udGVudAor
ICAgICAgICAgIHByb2Nlc3MuIFRoZSBjcmFzaCBiYW5uZXIgd2lsbCBvbmx5IGJlIHNob3duIGlm
IHRoZSB0YWIgaGFzIGV2ZXIgYmVlbiB2aXNpYmxlLgorICAgICAgICAgIElmIGl0IHdhc24ndCBl
dmVyIHZpc2libGUgKGUuZy4gc2Vzc2lvbiByZXN0b3JlIGNhc2UpLCB0aGVuIGl0IHdpbGwgbG9v
ayBhcyBpZgorICAgICAgICAgIHRoZSB0YWIgbG9hZHMgZm9yIHRoZSBmaXJzdCB0aW1lIHdoZW4g
dGhlIHVzZXIgc3dpdGNoZXMgdG8gaXQuCisKKyAgICAgICAgVGhlIGZ1bmN0aW9uYWxpdHkgaXMg
ZGlzYWJsZWQgYnkgZGVmYXVsdCBhbmQgY2FuIGJlIGVuYWJsZWQgYnkgdGhlIGNsaWVudCB2aWEg
dGhlIG5ldworICAgICAgICBXS0NvbnRleHRTZXRVbnJlc3BvbnNpdmVCYWNrZ3JvdW5kUHJvY2Vz
c2VzVGVybWluYXRpb25FbmFibGVkKCkgcHJpdmF0ZSBBUEkuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5jcHA6CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29u
dGV4dFNldFVucmVzcG9uc2l2ZUJhY2tncm91bmRQcm9jZXNzZXNUZXJtaW5hdGlvbkVuYWJsZWQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1VucmVzcG9uc2l2ZVdlYlByb2Nlc3NUZXJtaW5hdG9yLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlVucmVzcG9uc2l2ZVdlYlByb2Nlc3NUZXJtaW5hdG9yOjpVbnJl
c3BvbnNpdmVXZWJQcm9jZXNzVGVybWluYXRvcik6CisgICAgICAgIChXZWJLaXQ6OlVucmVzcG9u
c2l2ZVdlYlByb2Nlc3NUZXJtaW5hdG9yOjp1cGRhdGVTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OnBhZ2VzQ29weSk6CisgICAgICAgIChXZWJLaXQ6OlVucmVzcG9uc2l2ZVdlYlByb2Nlc3NUZXJt
aW5hdG9yOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVW5yZXNwb25zaXZlV2Vi
UHJvY2Vzc1Rlcm1pbmF0b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVucmVzcG9uc2l2
ZVdlYlByb2Nlc3NUZXJtaW5hdG9yOjpzaG91bGRCZUFjdGl2ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVh
dHRhY2hUb1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbG9h
ZEFmdGVyQmVpbmdLaWxsZWRJbkJhY2tncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6dGVybWluYXRlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6Om1fYmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OmFkZEV4aXN0aW5nV2ViUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6cmVtb3ZlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6dXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5Ojp2aXNpYmxlUGFnZUNvdW50KToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTctMDItMTggIE1pY2hhZWwgQ2F0YW56YXJvICA8
bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlbW92ZSBDT09SRElOQVRFRF9HUkFQ
SElDU19NVUxUSVBST0NFU1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggYTAzNDE4ZTZmYzBhNmUy
NjM3YTEwMWJhMTFmZDE2ZTYyODA5NDI3MS4uNGFlZWVlNjc1YzI0ZmMyNGRlZGU4MjlmZmQ3YzZi
OGI1OGFmOTI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTI4NSw2ICsyODUsNyBAQCBzZXQo
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCiAg
ICAgVUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9UZXh0Q2hl
Y2tlckNvbXBsZXRpb24uY3BwCisgICAgVUlQcm9jZXNzL1VucmVzcG9uc2l2ZVdlYlByb2Nlc3NU
ZXJtaW5hdG9yLmNwcAogICAgIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94
eS5jcHAKICAgICBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwCiAgICAgVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggMjQ0ZmYzOTFlNjg1NDRkM2UyMTIwYjY0ODg5
ZDVjNDZjZDI0YTU3Ny4uMThkMWUyYjk3ODNkN2IyYTU1NzNiZDdlZjNlYjkyYmEwMTYyNjRmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcApAQCAtOTYsNiArOTYsNyBAQCBSZWY8UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkoKQogICAgIGNv
cHktPm1fbWF4aW11bVByb2Nlc3NDb3VudCA9IHRoaXMtPm1fbWF4aW11bVByb2Nlc3NDb3VudDsK
ICAgICBjb3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hlTW9kZWw7CiAgICAgY29weS0+
bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkID0gdGhpcy0+bV9kaXNrQ2Fj
aGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkOworICAgIGNvcHktPm1fdW5yZXNwb25zaXZl
QmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxlZCA9IHRoaXMtPm1fdW5yZXNwb25z
aXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxlZDsKICAgICBjb3B5LT5tX2Rp
c2tDYWNoZVNpemVPdmVycmlkZSA9IHRoaXMtPm1fZGlza0NhY2hlU2l6ZU92ZXJyaWRlOwogICAg
IGNvcHktPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHRoaXMtPm1fYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUgPSB0aGlzLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9y
eU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAppbmRleCAxMDQwN2RhMTkwNTAwOWIzN2Q3YWFiZjcw
MThmMzZjMzQxN2ZjNjIxLi5kNDJiNzQ5Yjk3Zjk4MmIwNWZkNDYwNWU4ZWZjZDViZTc5MzYzMzM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKQEAgLTU1LDYgKzU1LDkgQEAgcHVibGljOgogICAgIGJv
b2wgZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0
RGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9k
aXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkID0gZW5hYmxlZDsgfQogCisgICAg
Ym9vbCB1bnJlc3BvbnNpdmVCYWNrZ3JvdW5kUHJvY2Vzc2VzVGVybWluYXRpb25FbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV91bnJlc3BvbnNpdmVCYWNrZ3JvdW5kUHJvY2Vzc2VzVGVybWluYXRp
b25FbmFibGVkOyB9CisgICAgdm9pZCBzZXRVbnJlc3BvbnNpdmVCYWNrZ3JvdW5kUHJvY2Vzc2Vz
VGVybWluYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3VucmVzcG9uc2l2ZUJhY2tncm91
bmRQcm9jZXNzZXNUZXJtaW5hdGlvbkVuYWJsZWQgPSBlbmFibGVkOyB9CisKICAgICBXZWJLaXQ6
OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVNb2RlbDsgfQog
ICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkgeyBt
X2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOyB9CiAKQEAgLTEyMSw2ICsxMjQsNyBAQCBwcml2YXRl
OgogCiAgICAgdW5zaWduZWQgbV9tYXhpbXVtUHJvY2Vzc0NvdW50IHsgMCB9OwogICAgIGJvb2wg
bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1fdW5yZXNwb25zaXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxlZCB7
IGZhbHNlIH07CiAgICAgV2ViS2l0OjpDYWNoZU1vZGVsIG1fY2FjaGVNb2RlbCB7IFdlYktpdDo6
Q2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyIH07CiAgICAgaW50NjRfdCBtX2Rpc2tDYWNoZVNp
emVPdmVycmlkZSB7IC0xIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5jcHAKaW5kZXggNzQ4MmRlNjgxNGQ4YjJmZjBhMmExMTQ4Y2M3MWU3OWQwYTkxYzc4
Ni4uMmNjZTRkYTUwMjU3MzRlODIzZDQ4ZGM3ZjBjMjA0MzRhOGJjNDQ2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTM5Nyw2ICszOTcsMTEg
QEAgdm9pZCBXS0NvbnRleHRTZXREaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVk
KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLAogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+Y29uZmln
dXJhdGlvbigpLnNldERpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQodmFsdWUp
OwogfQogCit2b2lkIFdLQ29udGV4dFNldFVucmVzcG9uc2l2ZUJhY2tncm91bmRQcm9jZXNzZXNU
ZXJtaW5hdGlvbkVuYWJsZWQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGJvb2wgdmFsdWUpCit7
CisgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5jb25maWd1cmF0aW9uKCkuc2V0VW5yZXNwb25zaXZl
QmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxlZCh2YWx1ZSk7Cit9CisKIFdLQ29v
a2llTWFuYWdlclJlZiBXS0NvbnRleHRHZXRDb29raWVNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250
ZXh0UmVmKQogewogICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnN1cHBsZW1l
bnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCmluZGV4IDY3NDJmZmJhMTM3NmRlYzEzYjNm
Y2NjYTgzNWI4N2U0MGNjOTI2ZjUuLjRkODA0OGFmYzlhNzAxMTMzY2Q4NTc2YzFhMjczMGQzN2Uw
OGIxZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dFByaXZhdGUuaApAQCAtNjIsNiArNjIsOCBAQCBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRD
YW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbihXS0NvbnRleHRSZWYgY29udAogCiBX
S19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXREaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25F
bmFibGVkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBib29sIHZhbHVlKTsKIAorV0tfRVhQT1JUIHZv
aWQgV0tDb250ZXh0U2V0VW5yZXNwb25zaXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9u
RW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCB2YWx1ZSk7CisKIFdLX0VYUE9SVCB2
b2lkIFdLQ29udGV4dFNldEljb25EYXRhYmFzZVBhdGgoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdL
U3RyaW5nUmVmIGljb25EYXRhYmFzZVBhdGgpOwogCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRB
bGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoV0tDb250ZXh0UmVmIGNvbnRleHQs
IFdLQ2VydGlmaWNhdGVJbmZvUmVmIGNlcnRpZmljYXRlLCBXS1N0cmluZ1JlZiBob3N0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9VbnJlc3BvbnNpdmVXZWJQcm9jZXNz
VGVybWluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVW5yZXNwb25zaXZlV2Vi
UHJvY2Vzc1Rlcm1pbmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkODZkNjdlMzk0NGM1Y2ZkMmMyNjkz
MzQxMTdiYmFiOTFlMDIyNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvVW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3IuY3BwCkBAIC0wLDAgKzEsODIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVW5yZXNwb25z
aXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3IuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6c2Vjb25kcyBpbml0
aWFsSW50ZXJ2YWwgeyAyMHMgfTsKK3N0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6c2Vjb25kcyBt
YXhpbXVtSW50ZXJ2YWwgeyA4aCB9OworCitVbnJlc3BvbnNpdmVXZWJQcm9jZXNzVGVybWluYXRv
cjo6VW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3IoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQ
cm9jZXNzUHJveHkpCisgICAgOiBtX3dlYlByb2Nlc3NQcm94eSh3ZWJQcm9jZXNzUHJveHkpCisg
ICAgLCBtX2ludGVydmFsKGluaXRpYWxJbnRlcnZhbCkKKyAgICAsIG1fdGltZXIoUnVuTG9vcDo6
bWFpbigpLCB0aGlzLCAmVW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3I6OnRpbWVyRmly
ZWQpCit7Cit9CisKK3ZvaWQgVW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3I6OnVwZGF0
ZVN0YXRlKCkKK3sKKyAgICBpZiAoIXNob3VsZEJlQWN0aXZlKCkpIHsKKyAgICAgICAgaWYgKG1f
dGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICAgICAgbV9pbnRlcnZhbCA9IGluaXRpYWxJbnRl
cnZhbDsKKyAgICAgICAgICAgIG1fdGltZXIuc3RvcCgpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fdGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV90
aW1lci5zdGFydE9uZVNob3QobV9pbnRlcnZhbCk7Cit9CisKK3N0YXRpYyBWZWN0b3I8UmVmUHRy
PFdlYlBhZ2VQcm94eT4+IHBhZ2VzQ29weShXVEY6Okl0ZXJhdG9yUmFuZ2U8V2ViUHJvY2Vzc1By
b3h5OjpXZWJQYWdlUHJveHlNYXA6OmNvbnN0X2l0ZXJhdG9yOjpWYWx1ZXM+IHBhZ2VzKQorewor
ICAgIFZlY3RvcjxSZWZQdHI8V2ViUGFnZVByb3h5Pj4gdmVjdG9yOworICAgIGZvciAoYXV0byYg
cGFnZSA6IHBhZ2VzKQorICAgICAgICB2ZWN0b3IuYXBwZW5kKHBhZ2UpOworICAgIHJldHVybiB2
ZWN0b3I7Cit9CisKK3ZvaWQgVW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3I6OnRpbWVy
RmlyZWQoKQoreworICAgIEFTU0VSVChzaG91bGRCZUFjdGl2ZSgpKTsKKyAgICBtX3dlYlByb2Nl
c3NQcm94eS5pc1Jlc3BvbnNpdmUoW3RoaXNdKGJvb2wgcHJvY2Vzc0lzUmVzcG9uc2l2ZSkgewor
ICAgICAgICBpZiAocHJvY2Vzc0lzUmVzcG9uc2l2ZSkgeworICAgICAgICAgICAgLy8gRXhwb25l
bnRpYWwgYmFja29mZiB0byBhdm9pZCB3YWtpbmcgdXAgdGhlIHByb2Nlc3MgdG9vIG9mdGVuLgor
ICAgICAgICAgICAgbV9pbnRlcnZhbCA9IHN0ZDo6bWluKG1faW50ZXJ2YWwgKiAyLCBtYXhpbXVt
SW50ZXJ2YWwpOworICAgICAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QobV9pbnRlcnZhbCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJLaWxsaW5nIGEgYmFja2dyb3VuZCBXZWJQcm9jZXNz
IGJlY2F1c2UgaXQgaXMgbm90IHJlc3BvbnNpdmUiKTsKKyAgICAgICAgZm9yIChhdXRvJiBwYWdl
IDogcGFnZXNDb3B5KG1fd2ViUHJvY2Vzc1Byb3h5LnBhZ2VzKCkpKQorICAgICAgICAgICAgcGFn
ZS0+dGVybWluYXRlUHJvY2VzcyhXZWJQYWdlUHJveHk6OlRlcm1pbmF0aW9uUmVhc29uOjpVbnJl
c3BvbnNpdmVXaGlsZUluQmFja2dyb3VuZCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VucmVzcG9uc2l2
ZVdlYlByb2Nlc3NUZXJtaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVW5yZXNw
b25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzE0ZGQ2NDlkYjQ0YzNm
YzM3ODQ0MTM1OWM5MWM0ZmZjZTQ4ZWNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1VucmVzcG9uc2l2ZVdlYlByb2Nlc3NUZXJtaW5hdG9yLmgKQEAgLTAsMCAr
MSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5LmgiCisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFVucmVzcG9uc2l2ZVdlYlByb2Nlc3NUZXJtaW5hdG9yIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBVbnJlc3BvbnNpdmVXZWJQcm9jZXNzVGVybWluYXRvcihXZWJQcm9jZXNzUHJv
eHkmKTsKKyAgICB2b2lkIHVwZGF0ZVN0YXRlKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCB0aW1l
ckZpcmVkKCk7CisgICAgYm9vbCBzaG91bGRCZUFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuICFtX3dl
YlByb2Nlc3NQcm94eS52aXNpYmxlUGFnZUNvdW50KCkgJiYgbV93ZWJQcm9jZXNzUHJveHkucGFn
ZUNvdW50KCk7IH0KKworICAgIFdlYlByb2Nlc3NQcm94eSYgbV93ZWJQcm9jZXNzUHJveHk7Cisg
ICAgc3RkOjpjaHJvbm86OnNlY29uZHMgbV9pbnRlcnZhbDsKKyAgICBSdW5Mb29wOjpUaW1lcjxV
bnJlc3BvbnNpdmVXZWJQcm9jZXNzVGVybWluYXRvcj4gbV90aW1lcjsKK307CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOWMzZDJlMTg0NzQ2Mjgx
NjcwMGE3YWI4ZTE0NDNiYzQ5YjRjMWY2Ni4uZGQ2N2FkNmQ2NzFhOTA3MmQ2YzA5ZGNkNDQ2ZjYw
MDM3MDg3YzlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTcxMiw2ICs3MTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nl
c3MoKQogICAgIEFTU0VSVChtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpT
dGF0ZTo6VGVybWluYXRlZCk7CiAKICAgICBtX2lzVmFsaWQgPSB0cnVlOworICAgIG1fd2FzS2ls
bGVkRm9yQmVpbmdVbnJlc3BvbnNpdmVXaGlsZUluQmFja2dyb3VuZCA9IGZhbHNlOwogICAgIG1f
cHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZShtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2VJRCk7CiAKQEAgLTE1MTMsMTQgKzE1MTQsMzAgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnZpZXdEaWRFbnRlcldpbmRvdygpCiAgICAgfQogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVsb2FkQWZ0ZXJCZWluZ0tpbGxlZEluQmFja2dyb3VuZCgpCit7CisgICAgQVNTRVJUKCFpc1Zh
bGlkKCkpOworCisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgLSBSZWxvYWRpbmcgdGFi
IHRoYXQgd2FzIGtpbGxlZCBpbiB0aGUgYmFja2dyb3VuZCIsIHRoaXMpOworCisgICAgLy8gT25s
eSByZXBvcnQgYXMgYSBjcmFzaCBpZiB0aGUgcGFnZSB3YXMgZXZlciB2aXNpYmxlLCBvdGhlcndp
c2Ugc2lsZW50bHkgcmVsb2FkLgorICAgIGlmIChtX2hhc0V2ZXJCZWVuVmlzaWJsZSkKKyAgICAg
ICAgcHJvY2Vzc0RpZENyYXNoKCk7CisgICAgZWxzZQorICAgICAgICByZWF0dGFjaFRvV2ViUHJv
Y2Vzc0ZvclJlbG9hZCgpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0
eVN0YXRlQ2hhbmdlKCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBtX2FjdGl2aXR5U3Rh
dGVDaGFuZ2VEaXNwYXRjaGVyLT5pbnZhbGlkYXRlKCk7CiAjZW5kaWYKIAotICAgIGlmICghaXNW
YWxpZCgpKQorICAgIGlmICghaXNWYWxpZCgpKSB7CisgICAgICAgIGlmIChtX3BvdGVudGlhbGx5
Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSAmJiBt
X3dhc0tpbGxlZEZvckJlaW5nVW5yZXNwb25zaXZlV2hpbGVJbkJhY2tncm91bmQpCisgICAgICAg
ICAgICByZWxvYWRBZnRlckJlaW5nS2lsbGVkSW5CYWNrZ3JvdW5kKCk7CiAgICAgICAgIHJldHVy
bjsKKyAgICB9CiAKICAgICAvLyBJZiB0aGUgdmlzaWJpbGl0eSBzdGF0ZSBtYXkgaGF2ZSBjaGFu
Z2VkLCB0aGVuIHNvIG1heSB0aGUgdmlzdWFsbHkgaWRsZSAmIG9jY2x1ZGVkIGFnbm9zdGljIHN0
YXRlLgogICAgIGlmIChtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyAmIEFj
dGl2aXR5U3RhdGU6OklzVmlzaWJsZSkKQEAgLTE1NTIsMTggKzE1NjksMjYgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiAgICAgLy8gVGhpcyBtdXN0
IGhhcHBlbiBhZnRlciB0aGUgU2V0QWN0aXZpdHlTdGF0ZSBtZXNzYWdlIGlzIHNlbnQsIHRvIGVu
c3VyZSB0aGUgcGFnZSB2aXNpYmlsaXR5IGV2ZW50IGNhbiBmaXJlLgogICAgIHVwZGF0ZVRocm90
dGxlU3RhdGUoKTsKIAotICAgIC8vIElmIHdlJ3ZlIHN0YXJ0ZWQgdGhlIHJlc3BvbnNpdmVuZXNz
IHRpbWVyIGFzIHBhcnQgb2YgdGVsbGluZyB0aGUgd2ViIHByb2Nlc3MgdG8gdXBkYXRlIHRoZSBi
YWNraW5nIHN0b3JlCi0gICAgLy8gc3RhdGUsIGl0IG1pZ2h0IG5vdCBzZW5kIGJhY2sgYSByZXBs
eSAoc2luY2UgaXQgd29uJ3QgcGFpbnQgYW55dGhpbmcgaWYgdGhlIHdlYiBwYWdlIGlzIGhpZGRl
bikgc28gd2UKLSAgICAvLyBzdG9wIHRoZSB1bnJlc3BvbnNpdmVuZXNzIHRpbWVyIGhlcmUuCi0g
ICAgaWYgKChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSAmJiAhaXNWaWV3Vmlz
aWJsZSgpKQotICAgICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdG9wKCk7
Ci0KICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIGlmICgoKGNoYW5nZWQgJiBBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGUpICYmICFpc1ZpZXdWaXNpYmxlKCkpIHx8ICgoY2hhbmdlZCAmIEFj
dGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKSAmJiAhbV9wYWdlQ2xpZW50LmlzVmlld1dpbmRv
d0FjdGl2ZSgpKQogICAgICAgICB8fCAoKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc0ZvY3Vz
ZWQpICYmICEobV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkKSkpCiAg
ICAgICAgIHJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CiAjZW5kaWYKIAorICAgIGlmIChjaGFuZ2Vk
ICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSB7CisgICAgICAgIGlmIChpc1ZpZXdWaXNpYmxl
KCkpIHsKKyAgICAgICAgICAgIG1faGFzRXZlckJlZW5WaXNpYmxlID0gdHJ1ZTsKKyAgICAgICAg
ICAgIG1fdmlzaWJsZVBhZ2VUb2tlbiA9IG1fcHJvY2Vzcy0+dmlzaWJsZVBhZ2VUb2tlbigpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV92aXNpYmxlUGFnZVRva2VuID0gbnVsbHB0
cjsKKworICAgICAgICAgICAgLy8gSWYgd2UndmUgc3RhcnRlZCB0aGUgcmVzcG9uc2l2ZW5lc3Mg
dGltZXIgYXMgcGFydCBvZiB0ZWxsaW5nIHRoZSB3ZWIgcHJvY2VzcyB0byB1cGRhdGUgdGhlIGJh
Y2tpbmcgc3RvcmUKKyAgICAgICAgICAgIC8vIHN0YXRlLCBpdCBtaWdodCBub3Qgc2VuZCBiYWNr
IGEgcmVwbHkgKHNpbmNlIGl0IHdvbid0IHBhaW50IGFueXRoaW5nIGlmIHRoZSB3ZWIgcGFnZSBp
cyBoaWRkZW4pIHNvIHdlCisgICAgICAgICAgICAvLyBzdG9wIHRoZSB1bnJlc3BvbnNpdmVuZXNz
IHRpbWVyIGhlcmUuCisgICAgICAgICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIo
KS5zdG9wKCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5
U3RhdGU6OklzSW5XaW5kb3cpIHsKICAgICAgICAgaWYgKGlzSW5XaW5kb3coKSkKICAgICAgICAg
ICAgIHZpZXdEaWRFbnRlcldpbmRvdygpOwpAQCAtMjM2OSw3ICsyMzk0LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGlu
Z05hbWUpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXN0b21U
ZXh0RW5jb2RpbmdOYW1lKGVuY29kaW5nTmFtZSksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnRlcm1pbmF0ZVByb2Nlc3MoKQordm9pZCBXZWJQYWdlUHJveHk6OnRlcm1pbmF0
ZVByb2Nlc3MoVGVybWluYXRpb25SZWFzb24gdGVybWluYXRpb25SZWFzb24pCiB7CiAgICAgLy8g
Tk9URTogVGhpcyB1c2VzIGEgY2hlY2sgb2YgbV9pc1ZhbGlkIHJhdGhlciB0aGFuIGNhbGxpbmcg
aXNWYWxpZCgpIHNpbmNlCiAgICAgLy8gd2Ugd2FudCB0aGlzIHRvIHJ1biBldmVuIGZvciBwYWdl
cyBiZWluZyBjbG9zZWQgb3IgdGhhdCBhbHJlYWR5IGNsb3NlZC4KQEAgLTIzNzgsNiArMjQwMyw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0ZXJtaW5hdGVQcm9jZXNzKCkKIAogICAgIG1fcHJvY2Vz
cy0+cmVxdWVzdFRlcm1pbmF0aW9uKCk7CiAgICAgcmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRl
ZCgpOworICAgIG1fd2FzS2lsbGVkRm9yQmVpbmdVbnJlc3BvbnNpdmVXaGlsZUluQmFja2dyb3Vu
ZCA9IHRlcm1pbmF0aW9uUmVhc29uID09IFRlcm1pbmF0aW9uUmVhc29uOjpVbnJlc3BvbnNpdmVX
aGlsZUluQmFja2dyb3VuZDsKIH0KIAogU2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94eTo6c2Vzc2lv
blN0YXRlKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYp
PiYgZmlsdGVyKSBjb25zdApAQCAtNTQ0OCw2ICs1NDc0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoKQogICAgIG1fYWN0aXZpdHlUb2tlbiA9IG51
bGxwdHI7CiAjZW5kaWYKICAgICBtX3BhZ2VJc1VzZXJPYnNlcnZhYmxlQ291bnQgPSBudWxscHRy
OworICAgIG1fdmlzaWJsZVBhZ2VUb2tlbiA9IG51bGxwdHI7CiAKICAgICBtX2lzVmFsaWQgPSBm
YWxzZTsKICAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDRiOGNkNTIyN2IzNmRlYjNiMmYyOGE4ZTkyYWFmYTA4
YWNhZDI5YzUuLjBhMjkwZmMyZWNmZmVlZjExN2U5NTI4ODhlOGE1NmI5NTA5Y2UzZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIzMyw2ICsyMzMsMTAgQEAg
dHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8RWRpdGluZ1JhbmdlPiBFZGl0aW5nUmFuZ2VDYWxsYmFj
azsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmluZyY+IFN0cmluZ0NhbGxiYWNr
OwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBi
b29sLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJj4gU2NyaXB0VmFsdWVDYWxsYmFj
azsKIAorZW51bSBWaXNpYmxlV2ViUGFnZUNvdW50ZXJUeXBlIHsgfTsKK3VzaW5nIFZpc2libGVX
ZWJQYWdlQ291bnRlciA9IFJlZkNvdW50ZXI8VmlzaWJsZVdlYlBhZ2VDb3VudGVyVHlwZT47Cit1
c2luZyBWaXNpYmxlV2ViUGFnZVRva2VuID0gVmlzaWJsZVdlYlBhZ2VDb3VudGVyOjpUb2tlbjsK
KwogI2lmIFBMQVRGT1JNKEdUSykKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RXJyb3Iq
PiBQcmludEZpbmlzaGVkQ2FsbGJhY2s7CiAjZW5kaWYKQEAgLTY3MSw3ICs2NzUsOCBAQCBwdWJs
aWM6CiAKICAgICBkb3VibGUgZXN0aW1hdGVkUHJvZ3Jlc3MoKSBjb25zdDsKIAotICAgIHZvaWQg
dGVybWluYXRlUHJvY2VzcygpOworICAgIGVudW0gY2xhc3MgVGVybWluYXRpb25SZWFzb24geyBV
bnJlc3BvbnNpdmVXaGlsZUluQmFja2dyb3VuZCwgT3RoZXIgfTsKKyAgICB2b2lkIHRlcm1pbmF0
ZVByb2Nlc3MoVGVybWluYXRpb25SZWFzb24gPSBUZXJtaW5hdGlvblJlYXNvbjo6T3RoZXIpOwog
CiAgICAgU2Vzc2lvblN0YXRlIHNlc3Npb25TdGF0ZShjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wg
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4mID0gbnVsbHB0cikgY29uc3Q7CiAgICAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gcmVzdG9yZUZyb21TZXNzaW9uU3RhdGUoU2Vzc2lvblN0YXRlLCBi
b29sIG5hdmlnYXRlKTsKQEAgLTE1NzAsNiArMTU3NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICAgICB2b2lkIHZpZXdEaWRMZWF2ZVdpbmRv
dygpOwogICAgIHZvaWQgdmlld0RpZEVudGVyV2luZG93KCk7CisgICAgdm9pZCByZWxvYWRBZnRl
ckJlaW5nS2lsbGVkSW5CYWNrZ3JvdW5kKCk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9p
ZCBkaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdChjb25zdCBXZWJIaXRUZXN0UmVzdWx0
RGF0YSYsIGJvb2wgY29udGVudFByZXZlbnRzRGVmYXVsdCwgY29uc3QgVXNlckRhdGEmKTsKQEAg
LTE5MjUsNiArMTkzMSw3IEBAIHByaXZhdGU6CiAgICAgVXNlck9ic2VydmFibGVQYWdlQ291bnRl
cjo6VG9rZW4gbV9wYWdlSXNVc2VyT2JzZXJ2YWJsZUNvdW50OwogICAgIFByb2Nlc3NTdXBwcmVz
c2lvbkRpc2FibGVkVG9rZW4gbV9wcmV2ZW50UHJvY2Vzc1N1cHByZXNzaW9uQ291bnQ7CiAgICAg
SGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzQ291bnRlcjo6VG9rZW4gbV9oaWRkZW5Q
YWdlRE9NVGltZXJUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0NvdW50OworICAgIFZpc2libGVXZWJQ
YWdlVG9rZW4gbV92aXNpYmxlUGFnZVRva2VuOwogICAgICAgICAKICAgICBXZWJDb3JlOjpTY3Jv
bGxQaW5uaW5nQmVoYXZpb3IgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3I7CiAgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IG1fc2Nyb2xsYmFyT3ZlcmxheVN0
eWxlOwpAQCAtMTk0Myw2ICsxOTUwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzSGFkU2Vs
ZWN0aW9uQ2hhbmdlc0Zyb21Vc2VySW50ZXJhY3Rpb24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9u
ZWVkc0hpZGRlbkNvbnRlbnRFZGl0YWJsZVF1aXJrIHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVl
ZHNQbGFpblRleHRRdWlyayB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0V2ZXJCZWVuVmlzaWJs
ZSB7IGZhbHNlIH07CiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICAgICBib29sIG1faGFz
TWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHMgeyBmYWxzZSB9OwpAQCAtMTk2OCw2
ICsxOTc2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgYm9vbCBtX2lzVXNpbmdIaWdoUGVy
Zm9ybWFuY2VXZWJHTCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3dhc0tpbGxlZEZvckJlaW5nVW5y
ZXNwb25zaXZlV2hpbGVJbkJhY2tncm91bmQgeyBmYWxzZSB9OwogICAgICAgICAKICAgICBXZWFr
UHRyRmFjdG9yeTxXZWJQYWdlUHJveHk+IG1fd2Vha1B0ckZhY3Rvcnk7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBlMTk0Y2RhN2JmM2Qy
NDM2Mzc4MDIwZmExZmRiZTg4ZmZlOGU2OWJkLi5kOGJjNWI3NmY1OTYxYzVlMTliYzZjZjAyMGE3
OTA1M2QwYjhlM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRl
LmgiCisjaW5jbHVkZSAiVW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3IuaCIKICNpbmNs
dWRlICJVc2VyRGF0YS5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNp
bmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKQEAgLTEwMSw2ICsxMDIsOCBAQCBXZWJQcm9jZXNz
UHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCiAgICAg
LCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJtaW5hdGlvbldhc0Rpc2FibGVkKDApCiAgICAgLCBt
X3Rocm90dGxlcigqdGhpcykKICAgICAsIG1faXNSZXNwb25zaXZlKE5vT3JNYXliZTo6TWF5YmUp
CisgICAgLCBtX3Zpc2libGVQYWdlQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVw
ZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7IH0pCisgICAgLCBtX2JhY2tncm91
bmRSZXNwb25zaXZlbmVzc1RpbWVyKHByb2Nlc3NQb29sLmNvbmZpZ3VyYXRpb24oKS51bnJlc3Bv
bnNpdmVCYWNrZ3JvdW5kUHJvY2Vzc2VzVGVybWluYXRpb25FbmFibGVkKCkgPyBzdGQ6Om1ha2Vf
dW5pcXVlPFVucmVzcG9uc2l2ZVdlYlByb2Nlc3NUZXJtaW5hdG9yPigqdGhpcykgOiBudWxscHRy
KQogewogICAgIFdlYlBhc3RlYm9hcmRQcm94eTo6c2luZ2xldG9uKCkuYWRkV2ViUHJvY2Vzc1By
b3h5KCp0aGlzKTsKIApAQCAtMjU1LDYgKzI1OCw4IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlBy
b2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJ
CiAgICAgbV9wYWdlTWFwLnNldChwYWdlSUQsIHdlYlBhZ2UucHRyKCkpOwogICAgIGdsb2JhbFBh
Z2VNYXAoKS5zZXQocGFnZUlELCB3ZWJQYWdlLnB0cigpKTsKIAorICAgIHVwZGF0ZUJhY2tncm91
bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CisKICAgICByZXR1cm4gd2ViUGFnZTsKIH0KIApAQCAt
MjY1LDEyICsyNzAsMTYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZEV4aXN0aW5nV2ViUGFn
ZShXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIHVpbnQ2NF90IHBhZ2VJRCkKIAogICAgIG1fcGFnZU1h
cC5zZXQocGFnZUlELCB3ZWJQYWdlKTsKICAgICBnbG9iYWxQYWdlTWFwKCkuc2V0KHBhZ2VJRCwg
d2ViUGFnZSk7CisKKyAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwog
fQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQp
CiB7CiAgICAgbV9wYWdlTWFwLnJlbW92ZShwYWdlSUQpOwogICAgIGdsb2JhbFBhZ2VNYXAoKS5y
ZW1vdmUocGFnZUlEKTsKKworICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVy
KCk7CiAgICAgCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBpdGVtSURzVG9SZW1vdmU7CiAgICAgZm9y
IChhdXRvJiBpZEFuZEl0ZW0gOiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW1NYXApIHsKQEAgLTcwOCw2
ICs3MTcsMTEgQEAgc2l6ZV90IFdlYlByb2Nlc3NQcm94eTo6ZnJhbWVDb3VudEluUGFnZShXZWJQ
YWdlUHJveHkqIHBhZ2UpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorYXV0byBXZWJQ
cm9jZXNzUHJveHk6OnZpc2libGVQYWdlVG9rZW4oKSBjb25zdCAtPiBWaXNpYmxlV2ViUGFnZVRv
a2VuCit7CisgICAgcmV0dXJuIG1fdmlzaWJsZVBhZ2VDb3VudGVyLmNvdW50KCk7Cit9CisKIFJl
ZlB0cjxBUEk6OlVzZXJJbml0aWF0ZWRBY3Rpb24+IFdlYlByb2Nlc3NQcm94eTo6dXNlckluaXRp
YXRlZEFjdGl2aXR5KHVpbnQ2NF90IGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFVc2VySW5pdGlh
dGVkQWN0aW9uTWFwOjppc1ZhbGlkS2V5KGlkZW50aWZpZXIpIHx8ICFpZGVudGlmaWVyKQpAQCAt
MTA3Myw2ICsxMDg3LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWFpblRo
cmVhZFBpbmcoKQogICAgICAgICBjYWxsYmFjayhpc1dlYlByb2Nlc3NSZXNwb25zaXZlKTsKIH0K
IAordm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1Rp
bWVyKCkKK3sKKyAgICBpZiAobV9iYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcikKKyAgICAg
ICAgbV9iYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lci0+dXBkYXRlU3RhdGUoKTsKK30KKwog
I2lmICFQTEFURk9STShDT0NPQSkKIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgV2ViUHJvY2Vzc1By
b3h5OjpwbGF0Zm9ybVBhdGhzV2l0aEFzc3VtZWRSZWFkQWNjZXNzKCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCAxNTg0NjdhNzIzZjNkZWU5Zjdi
YWM2Y2Y4NDBhNDFhZDJiODYzZDE2Li5lMzE4OTRlOTA0NmUzMDc1Y2I2YzE0MGI4NTBjZWRiYTBk
MWI3OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBA
IC01NSw2ICs1NSw3IEBAIHN0cnVjdCBQbHVnaW5JbmZvOwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHk7CitjbGFzcyBVbnJlc3BvbnNpdmVXZWJQcm9jZXNz
VGVybWluYXRvcjsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBXZWJQYWdl
R3JvdXA7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKQEAgLTgzLDYgKzg0LDcgQEAgcHVibGljOgog
CiAgICAgV1RGOjpJdGVyYXRvclJhbmdlPFdlYlBhZ2VQcm94eU1hcDo6Y29uc3RfaXRlcmF0b3I6
OlZhbHVlcz4gcGFnZXMoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VNYXAudmFsdWVzKCk7IH0KICAg
ICB1bnNpZ25lZCBwYWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VNYXAuc2l6ZSgpOyB9
CisgICAgdW5zaWduZWQgdmlzaWJsZVBhZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJs
ZVBhZ2VDb3VudGVyLnZhbHVlKCk7IH0KIAogICAgIHZvaWQgYWRkVmlzaXRlZExpbmtTdG9yZShW
aXNpdGVkTGlua1N0b3JlJik7CiAgICAgdm9pZCBhZGRXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eShXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSYpOwpAQCAtMTAwLDYgKzEwMiw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZXNGcm9tUGFnZShXZWJQYWdlUHJveHkq
KTsgLy8gSW5jbHVkaW5nIG1haW4gZnJhbWUuCiAgICAgc2l6ZV90IGZyYW1lQ291bnRJblBhZ2Uo
V2ViUGFnZVByb3h5KikgY29uc3Q7IC8vIEluY2x1ZGluZyBtYWluIGZyYW1lLgogCisgICAgVmlz
aWJsZVdlYlBhZ2VUb2tlbiB2aXNpYmxlUGFnZVRva2VuKCkgY29uc3Q7CisKICAgICB2b2lkIHVw
ZGF0ZVRleHRDaGVja2VyU3RhdGUoKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJOZXdXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qKTsKQEAgLTE4OSw2ICsxOTMsOCBA
QCBwcml2YXRlOgogCiAgICAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgcGxhdGZvcm1Q
YXRoc1dpdGhBc3N1bWVkUmVhZEFjY2VzcygpOwogCisgICAgdm9pZCB1cGRhdGVCYWNrZ3JvdW5k
UmVzcG9uc2l2ZW5lc3NUaW1lcigpOworCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQK
ICAgICBmcmllbmQgY2xhc3MgV2ViQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRl
OwpAQCAtMjQ3LDYgKzI1Myw5IEBAIHByaXZhdGU6CiAKICAgICBlbnVtIGNsYXNzIE5vT3JNYXli
ZSB7IE5vLCBNYXliZSB9IG1faXNSZXNwb25zaXZlOwogICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9u
PHZvaWQoYm9vbCB3ZWJQcm9jZXNzSXNSZXNwb25zaXZlKT4+IG1faXNSZXNwb25zaXZlQ2FsbGJh
Y2tzOworCisgICAgVmlzaWJsZVdlYlBhZ2VDb3VudGVyIG1fdmlzaWJsZVBhZ2VDb3VudGVyOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxVbnJlc3BvbnNpdmVXZWJQcm9jZXNzVGVybWluYXRvcj4gbV9i
YWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDM3ZjYyN2ZiODQzMGNkYzEzYTgyZDNhZDRlNTk4NmRlNjIzN2VlZGMuLjdkNWUyNzgw
NDA3ZTVmY2Q3ZDNlNTU2MzZlOTAwY2FmMjQ1YWNkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg5OSw2ICs4OTksOCBAQAog
CQk0MUZBRjVGODFFM0MxMDIxMDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFGNUY2MUUzQzBCNDcw
MDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5oICovOyB9OwogCQk0MUZBRjVGOTFFM0MxMDI1
MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQUY1RjcxRTNDMEI0NzAwMUFFNjc4IC8qIExpYldl
YlJUQ1Jlc29sdmVyLmNwcCAqLzsgfTsKIAkJNDQ1MEFFQzAxREMzRkFFNTAwOTk0M0YyIC8qIFNo
YXJlZE1lbW9yeUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ0NTBBRUJGMURDM0ZBRTUwMDk5NDNGMiAvKiBTaGFyZWRNZW1vcnlDb2NvYS5j
cHAgKi87IH07CisJCTQ2QTJCNjA4MUU1Njc2QTYwMEMzREVEQSAvKiBVbnJlc3BvbnNpdmVXZWJQ
cm9jZXNzVGVybWluYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkEyQjYwNjFFNTY3NUEyMDBDM0RFREEgLyogVW5yZXNwb25zaXZlV2ViUHJv
Y2Vzc1Rlcm1pbmF0b3IuY3BwICovOyB9OworCQk0NkEyQjYwOTFFNTY3NkE2MDBDM0RFREEgLyog
VW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBVbnJl
c3BvbnNpdmVXZWJQcm9jZXNzVGVybWluYXRvci5oICovOyB9OwogCQk0QTNDQzE4QTE5QjA2M0U3
MDBEMTRBRUYgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGMzkxOUFG
N0IwNDAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cCAqLzsgfTsKIAkJNEEzQ0MxOEIxOUIwNjQwRjAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QTQxMEYzQTE5QUY3QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCAqLzsgfTsKIAkJNEEzQ0MxOEMxOUIwNjQxNTAwRDE0
QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGM0IxOUFGN0IwNDAwMkVCQUI1
IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwICovOyB9OwpAQCAtMzA1MCw2
ICszMDUyLDggQEAKIAkJNDFGQUY1RjYxRTNDMEI0NzAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29s
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1Jlc29sdmVy
Lmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUZBRjVGNzFFM0MwQjQ3MDAxQUU2NzggLyogTGliV2ViUlRD
UmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2Vi
UlRDUmVzb2x2ZXIuY3BwOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDUwQUVCRjFEQzNGQUU1MDA5OTQz
RjIgLyogU2hhcmVkTWVtb3J5Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gU2hhcmVkTWVtb3J5Q29jb2EuY3BwOyBwYXRoID0gY29jb2EvU2hhcmVkTWVtb3J5
Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkEyQjYwNjFFNTY3NUEy
MDBDM0RFREEgLyogVW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1p
bmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkEyQjYwNzFFNTY3NUEy
MDBDM0RFREEgLyogVW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzUxOUFGN0FDMzAwMkVCQUI1
IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNDEwRjM2MTlBRjdBQzMwMDJFQkFCNSAvKiBXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNEE0MTBGMzkxOUFGN0IwNDAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0NTcsNiArNjQ2MSw4IEBACiAJCQkJMUFBNDE3QzkxMkMw
MENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyLmggKi8sCiAJCQkJMUJCNDE3QzkxMkMwMENDQTAw
MkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHAgKi8sCiAJCQkJMUNDNDE3QzkxMkMw
MENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5oICovLAorCQkJCTQ2QTJCNjA2
MUU1Njc1QTIwMEMzREVEQSAvKiBVbnJlc3BvbnNpdmVXZWJQcm9jZXNzVGVybWluYXRvci5jcHAg
Ki8sCisJCQkJNDZBMkI2MDcxRTU2NzVBMjAwQzNERURBIC8qIFVucmVzcG9uc2l2ZVdlYlByb2Nl
c3NUZXJtaW5hdG9yLmggKi8sCiAJCQkJMDcyOTdGOUMxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcCAqLywKIAkJCQkwNzI5N0Y5RDFDMTdCQkVBMDAz
RjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaCAqLywKIAkJCQk0QTQxMEYz
OTE5QUY3QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwICovLApAQCAtNzk2NCw2ICs3OTcwLDcgQEAKIAkJCQk0RjYwMTQzMjE1NUM1QUEyMDAx
RkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NzA1
MTExQkU0MTBFNjAwODc0QUYxIC8qIEJsb2NrU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMw
NjVGQTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDZBMkI2MDkxRTU2NzZBNjAwQzNERURBIC8qIFVucmVzcG9uc2l2ZVdlYlByb2Nlc3NUZXJtaW5h
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUEyRTUxRDEyRTRDMDVFMDBCQzQ5NjYgLyogQ0dV
dGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMkQ5NTZGMTI4NDg1NjQwMDFFQjk2MiAv
KiBDaGlsZFByb2Nlc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRkFFQzNBMUIwNjU3NjMwMDA5
QzRFNyAvKiBDaGlsZFByb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC05NjQ1LDYg
Kzk2NTIsNyBAQAogCQkJCTUzMjE1OTUzMURCQUU3MTgwMDU0QUEzQyAvKiBOZXR3b3JrU2Vzc2lv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzIwQ0I5RDFCQjBEQ0ZBMDA4OTVCQjEgLyogTmV0
d29ya1Nlc3Npb25Db2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxQTJFQzU1MTQ4OTk4MkUw
MDgxMEQ3MSAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0NkEyQjYwODFFNTY3NkE2MDBDM0RFREEgLyogVW5yZXNwb25zaXZlV2ViUHJvY2Vz
c1Rlcm1pbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEzMTI2MUUxNDhGRjgyQzAwQkEy
QTM5IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzMUEyRUM1MDE0ODk5ODA1MDA4MTBENzEgLyogTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDg0OEMx
MjdGNkE0OTAwMUVCOTYyIC8qIE5QSWRlbnRpZmllckRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302105</attachid>
            <date>2017-02-19 18:02:52 -0800</date>
            <delta_ts>2017-02-19 18:40:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168479-20170219180009.patch</filename>
            <type>text/plain</type>
            <size>31519</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmNkMTA5Y2MwNjlmOTdl
ZDU4ZGQ0MGQ4M2RiMWIxMjA0YjVhODcyNC4uN2Y4ZGM4NTQzN2VlNjRmYjVkODQ2ZjQ0YWNhMDJk
Njc4MmY1YjI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE3LTAyLTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gU3VwcG9ydCB0ZXJt
aW5hdGlvbiBvZiB1bnJlc3BvbnNpdmUgV2ViQ29udGVudCBwcm9jZXNzZXMgdGhhdCBhcmUgaW4g
dGhlIGJhY2tncm91bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2ODQ3OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA1NTg3NDU+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgU3VwcG9ydCB0ZXJtaW5h
dGlvbiBvZiB1bnJlc3BvbnNpdmUgV2ViQ29udGVudCBwcm9jZXNzZXMgdGhhdCBhcmUgaW4gdGhl
IGJhY2tncm91bmQuCisgICAgICAgIFRoaXMgcHJvdGVjdHMgdXMgYWdhaW5zdCBjYXNlcyB3aGVy
ZSBhIGJhY2tncm91bmQgdGFiIGlzIHVucmVzcG9uc2l2ZSBhbmQgaGFzIGhpZ2ggQ1BVCisgICAg
ICAgIHVzYWdlLCB0aHVzIGRyYWluaW5nIHRoZSBiYXR0ZXJ5IHdpdGhvdXQgdGhlIHVzZXIga25v
d2luZyBhYm91dCBpdCAoZS5nLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk4MDgwMDU+KS4K
KworICAgICAgICBUaGUgZmVhdHVyZSB3b3JrcyBhcyBmb2xsb3dzOgorICAgICAgICAtIElmIGEg
V2ViUHJvY2Vzc1Byb3h5IGhhcyBwYWdlcyBidXQgbm9uZSBvZiB0aGVtIGFyZSB2aXNpYmxlLCB0
aGVuIGl0IHdpbGwgY2hlY2sKKyAgICAgICAgICByZWd1bGFybHkgaWYgaXRzIGFzc29jaWF0ZWQg
V2ViQ29udGVudCBwcm9jZXNzIGlzIHN0aWxsIHJlc3BvbnNpdmUuCisgICAgICAgIC0gRXZlcnkg
dGltZSB3ZSBmaW5kIHRoYXQgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBpcyByZXNwb25zaXZlLCB3
ZSBleHBvbmVudGlhbGx5CisgICAgICAgICAgYmFjayBvZmYgdGhlIHRpbWVyIHRvIGF2b2lkIHdh
a2luZyB1cCB0aGUgcHJvY2VzcyB0b28gb2Z0ZW4uIFRoZSB0aW1lciBpbml0aWFsbHkKKyAgICAg
ICAgICB1c2VzIGEgMjAgc2Vjb25kcyBpbnRlcnZhbCBhbmQgY2FuIGJhY2sgb2ZmIHVwIHRvIDgg
aG91cnMuCisgICAgICAgIC0gSWYgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBpcyB1bnJlc3BvbnNp
dmUsIHRoZW4gd2UgdGVybWluYXRlIGl0LiBObyBub3RpZmljYXRpb24KKyAgICAgICAgICBpcyBz
aG93biB0byB0aGUgdXNlciBhbmQgdGhlIHRlcm1pbmF0aW9uIGlzIG5vdCBpbW1lZGlhdGVseSBv
YnNlcnZhYmxlIHNpbmNlIHRoZQorICAgICAgICAgIHRhYiBpcyBub3QgdmlzaWJsZSBhbmQgaXRz
IHRpdGxlIHJlbWFpbnMuIFRoZSB0YWIgaXMgbm90IGltbWVkaWF0ZWx5IHJlbG9hZGVkCisgICAg
ICAgICAgc28gYXMgdG8gYXZvaWQgZ2V0dGluZyBiYWNrIGludG8gYSBiYWQgc3RhdGUgaW4gdGhl
IGJhY2tncm91bmQgKGFuZCBoYXZlIGEKKyAgICAgICAgICB5by15byBlZmZlY3QpLgorICAgICAg
ICAtIElmIHRoZSB1c2VyIHN3aXRjaGVzIHRvIGEgdGFiIHRoYXQgd2FzIHByZXZpb3VzbHkga2ls
bGVkIGZvciBiZWluZyB1bnJlc3BvbnNpdmUKKyAgICAgICAgICB3aGlsZSBpbiB0aGUgYmFja2dy
b3VuZCwgd2Ugd2lsbCB0aGVuIHJlbG9hZCB0aGUgdGFiIGluIGEgZnJlc2ggV2ViQ29udGVudAor
ICAgICAgICAgIHByb2Nlc3MuIFRoZSBjcmFzaCBiYW5uZXIgd2lsbCBvbmx5IGJlIHNob3duIGlm
IHRoZSB0YWIgaGFzIGV2ZXIgYmVlbiB2aXNpYmxlLgorICAgICAgICAgIElmIGl0IHdhc24ndCBl
dmVyIHZpc2libGUgKGUuZy4gc2Vzc2lvbiByZXN0b3JlIGNhc2UpLCB0aGVuIGl0IHdpbGwgbG9v
ayBhcyBpZgorICAgICAgICAgIHRoZSB0YWIgbG9hZHMgZm9yIHRoZSBmaXJzdCB0aW1lIHdoZW4g
dGhlIHVzZXIgc3dpdGNoZXMgdG8gaXQuCisKKyAgICAgICAgVGhlIGZ1bmN0aW9uYWxpdHkgaXMg
ZGlzYWJsZWQgYnkgZGVmYXVsdCBhbmQgY2FuIGJlIGVuYWJsZWQgYnkgdGhlIGNsaWVudCB2aWEg
dGhlIG5ldworICAgICAgICBXS0NvbnRleHRTZXRVbnJlc3BvbnNpdmVCYWNrZ3JvdW5kUHJvY2Vz
c2VzVGVybWluYXRpb25FbmFibGVkKCkgcHJpdmF0ZSBBUEkuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5jcHA6CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29u
dGV4dFNldFVucmVzcG9uc2l2ZUJhY2tncm91bmRQcm9jZXNzZXNUZXJtaW5hdGlvbkVuYWJsZWQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1VucmVzcG9uc2l2ZVdlYlByb2Nlc3NUZXJtaW5hdG9yLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlVucmVzcG9uc2l2ZVdlYlByb2Nlc3NUZXJtaW5hdG9yOjpVbnJl
c3BvbnNpdmVXZWJQcm9jZXNzVGVybWluYXRvcik6CisgICAgICAgIChXZWJLaXQ6OlVucmVzcG9u
c2l2ZVdlYlByb2Nlc3NUZXJtaW5hdG9yOjp1cGRhdGVTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OnBhZ2VzQ29weSk6CisgICAgICAgIChXZWJLaXQ6OlVucmVzcG9uc2l2ZVdlYlByb2Nlc3NUZXJt
aW5hdG9yOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVW5yZXNwb25zaXZlV2Vi
UHJvY2Vzc1Rlcm1pbmF0b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlVucmVzcG9uc2l2
ZVdlYlByb2Nlc3NUZXJtaW5hdG9yOjpzaG91bGRCZUFjdGl2ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVh
dHRhY2hUb1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbG9h
ZEFmdGVyQmVpbmdLaWxsZWRJbkJhY2tncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6dGVybWluYXRlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6Om1fYmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OmFkZEV4aXN0aW5nV2ViUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6cmVtb3ZlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6dXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5Ojp2aXNpYmxlUGFnZUNvdW50KToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTctMDItMTggIE1pY2hhZWwgQ2F0YW56YXJvICA8
bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlbW92ZSBDT09SRElOQVRFRF9HUkFQ
SElDU19NVUxUSVBST0NFU1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggYTAzNDE4ZTZmYzBhNmUy
NjM3YTEwMWJhMTFmZDE2ZTYyODA5NDI3MS4uNGFlZWVlNjc1YzI0ZmMyNGRlZGU4MjlmZmQ3YzZi
OGI1OGFmOTI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTI4NSw2ICsyODUsNyBAQCBzZXQo
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCiAg
ICAgVUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9UZXh0Q2hl
Y2tlckNvbXBsZXRpb24uY3BwCisgICAgVUlQcm9jZXNzL1VucmVzcG9uc2l2ZVdlYlByb2Nlc3NU
ZXJtaW5hdG9yLmNwcAogICAgIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94
eS5jcHAKICAgICBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwCiAgICAgVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggMjQ0ZmYzOTFlNjg1NDRkM2UyMTIwYjY0ODg5
ZDVjNDZjZDI0YTU3Ny4uMThkMWUyYjk3ODNkN2IyYTU1NzNiZDdlZjNlYjkyYmEwMTYyNjRmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcApAQCAtOTYsNiArOTYsNyBAQCBSZWY8UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkoKQogICAgIGNv
cHktPm1fbWF4aW11bVByb2Nlc3NDb3VudCA9IHRoaXMtPm1fbWF4aW11bVByb2Nlc3NDb3VudDsK
ICAgICBjb3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hlTW9kZWw7CiAgICAgY29weS0+
bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkID0gdGhpcy0+bV9kaXNrQ2Fj
aGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkOworICAgIGNvcHktPm1fdW5yZXNwb25zaXZl
QmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxlZCA9IHRoaXMtPm1fdW5yZXNwb25z
aXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxlZDsKICAgICBjb3B5LT5tX2Rp
c2tDYWNoZVNpemVPdmVycmlkZSA9IHRoaXMtPm1fZGlza0NhY2hlU2l6ZU92ZXJyaWRlOwogICAg
IGNvcHktPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHRoaXMtPm1fYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUgPSB0aGlzLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9y
eU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAppbmRleCAxMDQwN2RhMTkwNTAwOWIzN2Q3YWFiZjcw
MThmMzZjMzQxN2ZjNjIxLi5kNDJiNzQ5Yjk3Zjk4MmIwNWZkNDYwNWU4ZWZjZDViZTc5MzYzMzM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKQEAgLTU1LDYgKzU1LDkgQEAgcHVibGljOgogICAgIGJv
b2wgZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0
RGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9k
aXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkID0gZW5hYmxlZDsgfQogCisgICAg
Ym9vbCB1bnJlc3BvbnNpdmVCYWNrZ3JvdW5kUHJvY2Vzc2VzVGVybWluYXRpb25FbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV91bnJlc3BvbnNpdmVCYWNrZ3JvdW5kUHJvY2Vzc2VzVGVybWluYXRp
b25FbmFibGVkOyB9CisgICAgdm9pZCBzZXRVbnJlc3BvbnNpdmVCYWNrZ3JvdW5kUHJvY2Vzc2Vz
VGVybWluYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3VucmVzcG9uc2l2ZUJhY2tncm91
bmRQcm9jZXNzZXNUZXJtaW5hdGlvbkVuYWJsZWQgPSBlbmFibGVkOyB9CisKICAgICBXZWJLaXQ6
OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVNb2RlbDsgfQog
ICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkgeyBt
X2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOyB9CiAKQEAgLTEyMSw2ICsxMjQsNyBAQCBwcml2YXRl
OgogCiAgICAgdW5zaWduZWQgbV9tYXhpbXVtUHJvY2Vzc0NvdW50IHsgMCB9OwogICAgIGJvb2wg
bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1fdW5yZXNwb25zaXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxlZCB7
IGZhbHNlIH07CiAgICAgV2ViS2l0OjpDYWNoZU1vZGVsIG1fY2FjaGVNb2RlbCB7IFdlYktpdDo6
Q2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyIH07CiAgICAgaW50NjRfdCBtX2Rpc2tDYWNoZVNp
emVPdmVycmlkZSB7IC0xIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5jcHAKaW5kZXggNzQ4MmRlNjgxNGQ4YjJmZjBhMmExMTQ4Y2M3MWU3OWQwYTkxYzc4
Ni4uMmNjZTRkYTUwMjU3MzRlODIzZDQ4ZGM3ZjBjMjA0MzRhOGJjNDQ2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTM5Nyw2ICszOTcsMTEg
QEAgdm9pZCBXS0NvbnRleHRTZXREaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVk
KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLAogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+Y29uZmln
dXJhdGlvbigpLnNldERpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQodmFsdWUp
OwogfQogCit2b2lkIFdLQ29udGV4dFNldFVucmVzcG9uc2l2ZUJhY2tncm91bmRQcm9jZXNzZXNU
ZXJtaW5hdGlvbkVuYWJsZWQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGJvb2wgdmFsdWUpCit7
CisgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5jb25maWd1cmF0aW9uKCkuc2V0VW5yZXNwb25zaXZl
QmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9uRW5hYmxlZCh2YWx1ZSk7Cit9CisKIFdLQ29v
a2llTWFuYWdlclJlZiBXS0NvbnRleHRHZXRDb29raWVNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250
ZXh0UmVmKQogewogICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnN1cHBsZW1l
bnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCmluZGV4IDY3NDJmZmJhMTM3NmRlYzEzYjNm
Y2NjYTgzNWI4N2U0MGNjOTI2ZjUuLjRkODA0OGFmYzlhNzAxMTMzY2Q4NTc2YzFhMjczMGQzN2Uw
OGIxZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dFByaXZhdGUuaApAQCAtNjIsNiArNjIsOCBAQCBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRD
YW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbihXS0NvbnRleHRSZWYgY29udAogCiBX
S19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXREaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25F
bmFibGVkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBib29sIHZhbHVlKTsKIAorV0tfRVhQT1JUIHZv
aWQgV0tDb250ZXh0U2V0VW5yZXNwb25zaXZlQmFja2dyb3VuZFByb2Nlc3Nlc1Rlcm1pbmF0aW9u
RW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCB2YWx1ZSk7CisKIFdLX0VYUE9SVCB2
b2lkIFdLQ29udGV4dFNldEljb25EYXRhYmFzZVBhdGgoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdL
U3RyaW5nUmVmIGljb25EYXRhYmFzZVBhdGgpOwogCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRB
bGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoV0tDb250ZXh0UmVmIGNvbnRleHQs
IFdLQ2VydGlmaWNhdGVJbmZvUmVmIGNlcnRpZmljYXRlLCBXS1N0cmluZ1JlZiBob3N0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9VbnJlc3BvbnNpdmVXZWJQcm9jZXNz
VGVybWluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVW5yZXNwb25zaXZlV2Vi
UHJvY2Vzc1Rlcm1pbmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkODZkNjdlMzk0NGM1Y2ZkMmMyNjkz
MzQxMTdiYmFiOTFlMDIyNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvVW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3IuY3BwCkBAIC0wLDAgKzEsODIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVW5yZXNwb25z
aXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3IuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6c2Vjb25kcyBpbml0
aWFsSW50ZXJ2YWwgeyAyMHMgfTsKK3N0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6c2Vjb25kcyBt
YXhpbXVtSW50ZXJ2YWwgeyA4aCB9OworCitVbnJlc3BvbnNpdmVXZWJQcm9jZXNzVGVybWluYXRv
cjo6VW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3IoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQ
cm9jZXNzUHJveHkpCisgICAgOiBtX3dlYlByb2Nlc3NQcm94eSh3ZWJQcm9jZXNzUHJveHkpCisg
ICAgLCBtX2ludGVydmFsKGluaXRpYWxJbnRlcnZhbCkKKyAgICAsIG1fdGltZXIoUnVuTG9vcDo6
bWFpbigpLCB0aGlzLCAmVW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3I6OnRpbWVyRmly
ZWQpCit7Cit9CisKK3ZvaWQgVW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3I6OnVwZGF0
ZVN0YXRlKCkKK3sKKyAgICBpZiAoIXNob3VsZEJlQWN0aXZlKCkpIHsKKyAgICAgICAgaWYgKG1f
dGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICAgICAgbV9pbnRlcnZhbCA9IGluaXRpYWxJbnRl
cnZhbDsKKyAgICAgICAgICAgIG1fdGltZXIuc3RvcCgpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fdGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV90
aW1lci5zdGFydE9uZVNob3QobV9pbnRlcnZhbCk7Cit9CisKK3N0YXRpYyBWZWN0b3I8UmVmUHRy
PFdlYlBhZ2VQcm94eT4+IHBhZ2VzQ29weShXVEY6Okl0ZXJhdG9yUmFuZ2U8V2ViUHJvY2Vzc1By
b3h5OjpXZWJQYWdlUHJveHlNYXA6OmNvbnN0X2l0ZXJhdG9yOjpWYWx1ZXM+IHBhZ2VzKQorewor
ICAgIFZlY3RvcjxSZWZQdHI8V2ViUGFnZVByb3h5Pj4gdmVjdG9yOworICAgIGZvciAoYXV0byYg
cGFnZSA6IHBhZ2VzKQorICAgICAgICB2ZWN0b3IuYXBwZW5kKHBhZ2UpOworICAgIHJldHVybiB2
ZWN0b3I7Cit9CisKK3ZvaWQgVW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3I6OnRpbWVy
RmlyZWQoKQoreworICAgIEFTU0VSVChzaG91bGRCZUFjdGl2ZSgpKTsKKyAgICBtX3dlYlByb2Nl
c3NQcm94eS5pc1Jlc3BvbnNpdmUoW3RoaXNdKGJvb2wgcHJvY2Vzc0lzUmVzcG9uc2l2ZSkgewor
ICAgICAgICBpZiAocHJvY2Vzc0lzUmVzcG9uc2l2ZSkgeworICAgICAgICAgICAgLy8gRXhwb25l
bnRpYWwgYmFja29mZiB0byBhdm9pZCB3YWtpbmcgdXAgdGhlIHByb2Nlc3MgdG9vIG9mdGVuLgor
ICAgICAgICAgICAgbV9pbnRlcnZhbCA9IHN0ZDo6bWluKG1faW50ZXJ2YWwgKiAyLCBtYXhpbXVt
SW50ZXJ2YWwpOworICAgICAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QobV9pbnRlcnZhbCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJLaWxsaW5nIGEgYmFja2dyb3VuZCBXZWJQcm9jZXNz
IGJlY2F1c2UgaXQgaXMgbm90IHJlc3BvbnNpdmUiKTsKKyAgICAgICAgZm9yIChhdXRvJiBwYWdl
IDogcGFnZXNDb3B5KG1fd2ViUHJvY2Vzc1Byb3h5LnBhZ2VzKCkpKQorICAgICAgICAgICAgcGFn
ZS0+dGVybWluYXRlUHJvY2VzcyhXZWJQYWdlUHJveHk6OlRlcm1pbmF0aW9uUmVhc29uOjpVbnJl
c3BvbnNpdmVXaGlsZUluQmFja2dyb3VuZCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VucmVzcG9uc2l2
ZVdlYlByb2Nlc3NUZXJtaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVW5yZXNw
b25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzE0ZGQ2NDlkYjQ0YzNm
YzM3ODQ0MTM1OWM5MWM0ZmZjZTQ4ZWNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1VucmVzcG9uc2l2ZVdlYlByb2Nlc3NUZXJtaW5hdG9yLmgKQEAgLTAsMCAr
MSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5LmgiCisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFVucmVzcG9uc2l2ZVdlYlByb2Nlc3NUZXJtaW5hdG9yIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBVbnJlc3BvbnNpdmVXZWJQcm9jZXNzVGVybWluYXRvcihXZWJQcm9jZXNzUHJv
eHkmKTsKKyAgICB2b2lkIHVwZGF0ZVN0YXRlKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCB0aW1l
ckZpcmVkKCk7CisgICAgYm9vbCBzaG91bGRCZUFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuICFtX3dl
YlByb2Nlc3NQcm94eS52aXNpYmxlUGFnZUNvdW50KCkgJiYgbV93ZWJQcm9jZXNzUHJveHkucGFn
ZUNvdW50KCk7IH0KKworICAgIFdlYlByb2Nlc3NQcm94eSYgbV93ZWJQcm9jZXNzUHJveHk7Cisg
ICAgc3RkOjpjaHJvbm86OnNlY29uZHMgbV9pbnRlcnZhbDsKKyAgICBSdW5Mb29wOjpUaW1lcjxV
bnJlc3BvbnNpdmVXZWJQcm9jZXNzVGVybWluYXRvcj4gbV90aW1lcjsKK307CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOWMzZDJlMTg0NzQ2Mjgx
NjcwMGE3YWI4ZTE0NDNiYzQ5YjRjMWY2Ni4uZGQ2N2FkNmQ2NzFhOTA3MmQ2YzA5ZGNkNDQ2ZjYw
MDM3MDg3YzlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTcxMiw2ICs3MTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nl
c3MoKQogICAgIEFTU0VSVChtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpT
dGF0ZTo6VGVybWluYXRlZCk7CiAKICAgICBtX2lzVmFsaWQgPSB0cnVlOworICAgIG1fd2FzS2ls
bGVkRm9yQmVpbmdVbnJlc3BvbnNpdmVXaGlsZUluQmFja2dyb3VuZCA9IGZhbHNlOwogICAgIG1f
cHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZShtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2VJRCk7CiAKQEAgLTE1MTMsMTQgKzE1MTQsMzAgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnZpZXdEaWRFbnRlcldpbmRvdygpCiAgICAgfQogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVsb2FkQWZ0ZXJCZWluZ0tpbGxlZEluQmFja2dyb3VuZCgpCit7CisgICAgQVNTRVJUKCFpc1Zh
bGlkKCkpOworCisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgLSBSZWxvYWRpbmcgdGFi
IHRoYXQgd2FzIGtpbGxlZCBpbiB0aGUgYmFja2dyb3VuZCIsIHRoaXMpOworCisgICAgLy8gT25s
eSByZXBvcnQgYXMgYSBjcmFzaCBpZiB0aGUgcGFnZSB3YXMgZXZlciB2aXNpYmxlLCBvdGhlcndp
c2Ugc2lsZW50bHkgcmVsb2FkLgorICAgIGlmIChtX2hhc0V2ZXJCZWVuVmlzaWJsZSkKKyAgICAg
ICAgcHJvY2Vzc0RpZENyYXNoKCk7CisgICAgZWxzZQorICAgICAgICByZWF0dGFjaFRvV2ViUHJv
Y2Vzc0ZvclJlbG9hZCgpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0
eVN0YXRlQ2hhbmdlKCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBtX2FjdGl2aXR5U3Rh
dGVDaGFuZ2VEaXNwYXRjaGVyLT5pbnZhbGlkYXRlKCk7CiAjZW5kaWYKIAotICAgIGlmICghaXNW
YWxpZCgpKQorICAgIGlmICghaXNWYWxpZCgpKSB7CisgICAgICAgIGlmIChtX3BvdGVudGlhbGx5
Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSAmJiBt
X3dhc0tpbGxlZEZvckJlaW5nVW5yZXNwb25zaXZlV2hpbGVJbkJhY2tncm91bmQpCisgICAgICAg
ICAgICByZWxvYWRBZnRlckJlaW5nS2lsbGVkSW5CYWNrZ3JvdW5kKCk7CiAgICAgICAgIHJldHVy
bjsKKyAgICB9CiAKICAgICAvLyBJZiB0aGUgdmlzaWJpbGl0eSBzdGF0ZSBtYXkgaGF2ZSBjaGFu
Z2VkLCB0aGVuIHNvIG1heSB0aGUgdmlzdWFsbHkgaWRsZSAmIG9jY2x1ZGVkIGFnbm9zdGljIHN0
YXRlLgogICAgIGlmIChtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyAmIEFj
dGl2aXR5U3RhdGU6OklzVmlzaWJsZSkKQEAgLTE1NTIsMTggKzE1NjksMjYgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiAgICAgLy8gVGhpcyBtdXN0
IGhhcHBlbiBhZnRlciB0aGUgU2V0QWN0aXZpdHlTdGF0ZSBtZXNzYWdlIGlzIHNlbnQsIHRvIGVu
c3VyZSB0aGUgcGFnZSB2aXNpYmlsaXR5IGV2ZW50IGNhbiBmaXJlLgogICAgIHVwZGF0ZVRocm90
dGxlU3RhdGUoKTsKIAotICAgIC8vIElmIHdlJ3ZlIHN0YXJ0ZWQgdGhlIHJlc3BvbnNpdmVuZXNz
IHRpbWVyIGFzIHBhcnQgb2YgdGVsbGluZyB0aGUgd2ViIHByb2Nlc3MgdG8gdXBkYXRlIHRoZSBi
YWNraW5nIHN0b3JlCi0gICAgLy8gc3RhdGUsIGl0IG1pZ2h0IG5vdCBzZW5kIGJhY2sgYSByZXBs
eSAoc2luY2UgaXQgd29uJ3QgcGFpbnQgYW55dGhpbmcgaWYgdGhlIHdlYiBwYWdlIGlzIGhpZGRl
bikgc28gd2UKLSAgICAvLyBzdG9wIHRoZSB1bnJlc3BvbnNpdmVuZXNzIHRpbWVyIGhlcmUuCi0g
ICAgaWYgKChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSAmJiAhaXNWaWV3Vmlz
aWJsZSgpKQotICAgICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdG9wKCk7
Ci0KICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIGlmICgoKGNoYW5nZWQgJiBBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGUpICYmICFpc1ZpZXdWaXNpYmxlKCkpIHx8ICgoY2hhbmdlZCAmIEFj
dGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKSAmJiAhbV9wYWdlQ2xpZW50LmlzVmlld1dpbmRv
d0FjdGl2ZSgpKQogICAgICAgICB8fCAoKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc0ZvY3Vz
ZWQpICYmICEobV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkKSkpCiAg
ICAgICAgIHJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CiAjZW5kaWYKIAorICAgIGlmIChjaGFuZ2Vk
ICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSB7CisgICAgICAgIGlmIChpc1ZpZXdWaXNpYmxl
KCkpIHsKKyAgICAgICAgICAgIG1faGFzRXZlckJlZW5WaXNpYmxlID0gdHJ1ZTsKKyAgICAgICAg
ICAgIG1fdmlzaWJsZVBhZ2VUb2tlbiA9IG1fcHJvY2Vzcy0+dmlzaWJsZVBhZ2VUb2tlbigpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV92aXNpYmxlUGFnZVRva2VuID0gbnVsbHB0
cjsKKworICAgICAgICAgICAgLy8gSWYgd2UndmUgc3RhcnRlZCB0aGUgcmVzcG9uc2l2ZW5lc3Mg
dGltZXIgYXMgcGFydCBvZiB0ZWxsaW5nIHRoZSB3ZWIgcHJvY2VzcyB0byB1cGRhdGUgdGhlIGJh
Y2tpbmcgc3RvcmUKKyAgICAgICAgICAgIC8vIHN0YXRlLCBpdCBtaWdodCBub3Qgc2VuZCBiYWNr
IGEgcmVwbHkgKHNpbmNlIGl0IHdvbid0IHBhaW50IGFueXRoaW5nIGlmIHRoZSB3ZWIgcGFnZSBp
cyBoaWRkZW4pIHNvIHdlCisgICAgICAgICAgICAvLyBzdG9wIHRoZSB1bnJlc3BvbnNpdmVuZXNz
IHRpbWVyIGhlcmUuCisgICAgICAgICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIo
KS5zdG9wKCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5
U3RhdGU6OklzSW5XaW5kb3cpIHsKICAgICAgICAgaWYgKGlzSW5XaW5kb3coKSkKICAgICAgICAg
ICAgIHZpZXdEaWRFbnRlcldpbmRvdygpOwpAQCAtMjM2OSw3ICsyMzk0LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGlu
Z05hbWUpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXN0b21U
ZXh0RW5jb2RpbmdOYW1lKGVuY29kaW5nTmFtZSksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnRlcm1pbmF0ZVByb2Nlc3MoKQordm9pZCBXZWJQYWdlUHJveHk6OnRlcm1pbmF0
ZVByb2Nlc3MoVGVybWluYXRpb25SZWFzb24gdGVybWluYXRpb25SZWFzb24pCiB7CiAgICAgLy8g
Tk9URTogVGhpcyB1c2VzIGEgY2hlY2sgb2YgbV9pc1ZhbGlkIHJhdGhlciB0aGFuIGNhbGxpbmcg
aXNWYWxpZCgpIHNpbmNlCiAgICAgLy8gd2Ugd2FudCB0aGlzIHRvIHJ1biBldmVuIGZvciBwYWdl
cyBiZWluZyBjbG9zZWQgb3IgdGhhdCBhbHJlYWR5IGNsb3NlZC4KQEAgLTIzNzgsNiArMjQwMyw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0ZXJtaW5hdGVQcm9jZXNzKCkKIAogICAgIG1fcHJvY2Vz
cy0+cmVxdWVzdFRlcm1pbmF0aW9uKCk7CiAgICAgcmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRl
ZCgpOworICAgIG1fd2FzS2lsbGVkRm9yQmVpbmdVbnJlc3BvbnNpdmVXaGlsZUluQmFja2dyb3Vu
ZCA9IHRlcm1pbmF0aW9uUmVhc29uID09IFRlcm1pbmF0aW9uUmVhc29uOjpVbnJlc3BvbnNpdmVX
aGlsZUluQmFja2dyb3VuZDsKIH0KIAogU2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94eTo6c2Vzc2lv
blN0YXRlKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYp
PiYgZmlsdGVyKSBjb25zdApAQCAtNTQ0OCw2ICs1NDc0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoKQogICAgIG1fYWN0aXZpdHlUb2tlbiA9IG51
bGxwdHI7CiAjZW5kaWYKICAgICBtX3BhZ2VJc1VzZXJPYnNlcnZhYmxlQ291bnQgPSBudWxscHRy
OworICAgIG1fdmlzaWJsZVBhZ2VUb2tlbiA9IG51bGxwdHI7CiAKICAgICBtX2lzVmFsaWQgPSBm
YWxzZTsKICAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDRiOGNkNTIyN2IzNmRlYjNiMmYyOGE4ZTkyYWFmYTA4
YWNhZDI5YzUuLjBhMjkwZmMyZWNmZmVlZjExN2U5NTI4ODhlOGE1NmI5NTA5Y2UzZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIzMyw2ICsyMzMsMTAgQEAg
dHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8RWRpdGluZ1JhbmdlPiBFZGl0aW5nUmFuZ2VDYWxsYmFj
azsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmluZyY+IFN0cmluZ0NhbGxiYWNr
OwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBi
b29sLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJj4gU2NyaXB0VmFsdWVDYWxsYmFj
azsKIAorZW51bSBWaXNpYmxlV2ViUGFnZUNvdW50ZXJUeXBlIHsgfTsKK3VzaW5nIFZpc2libGVX
ZWJQYWdlQ291bnRlciA9IFJlZkNvdW50ZXI8VmlzaWJsZVdlYlBhZ2VDb3VudGVyVHlwZT47Cit1
c2luZyBWaXNpYmxlV2ViUGFnZVRva2VuID0gVmlzaWJsZVdlYlBhZ2VDb3VudGVyOjpUb2tlbjsK
KwogI2lmIFBMQVRGT1JNKEdUSykKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RXJyb3Iq
PiBQcmludEZpbmlzaGVkQ2FsbGJhY2s7CiAjZW5kaWYKQEAgLTY3MSw3ICs2NzUsOCBAQCBwdWJs
aWM6CiAKICAgICBkb3VibGUgZXN0aW1hdGVkUHJvZ3Jlc3MoKSBjb25zdDsKIAotICAgIHZvaWQg
dGVybWluYXRlUHJvY2VzcygpOworICAgIGVudW0gY2xhc3MgVGVybWluYXRpb25SZWFzb24geyBV
bnJlc3BvbnNpdmVXaGlsZUluQmFja2dyb3VuZCwgT3RoZXIgfTsKKyAgICB2b2lkIHRlcm1pbmF0
ZVByb2Nlc3MoVGVybWluYXRpb25SZWFzb24gPSBUZXJtaW5hdGlvblJlYXNvbjo6T3RoZXIpOwog
CiAgICAgU2Vzc2lvblN0YXRlIHNlc3Npb25TdGF0ZShjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wg
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4mID0gbnVsbHB0cikgY29uc3Q7CiAgICAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gcmVzdG9yZUZyb21TZXNzaW9uU3RhdGUoU2Vzc2lvblN0YXRlLCBi
b29sIG5hdmlnYXRlKTsKQEAgLTE1NzAsNiArMTU3NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICAgICB2b2lkIHZpZXdEaWRMZWF2ZVdpbmRv
dygpOwogICAgIHZvaWQgdmlld0RpZEVudGVyV2luZG93KCk7CisgICAgdm9pZCByZWxvYWRBZnRl
ckJlaW5nS2lsbGVkSW5CYWNrZ3JvdW5kKCk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9p
ZCBkaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdChjb25zdCBXZWJIaXRUZXN0UmVzdWx0
RGF0YSYsIGJvb2wgY29udGVudFByZXZlbnRzRGVmYXVsdCwgY29uc3QgVXNlckRhdGEmKTsKQEAg
LTE5MjUsNiArMTkzMSw3IEBAIHByaXZhdGU6CiAgICAgVXNlck9ic2VydmFibGVQYWdlQ291bnRl
cjo6VG9rZW4gbV9wYWdlSXNVc2VyT2JzZXJ2YWJsZUNvdW50OwogICAgIFByb2Nlc3NTdXBwcmVz
c2lvbkRpc2FibGVkVG9rZW4gbV9wcmV2ZW50UHJvY2Vzc1N1cHByZXNzaW9uQ291bnQ7CiAgICAg
SGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzQ291bnRlcjo6VG9rZW4gbV9oaWRkZW5Q
YWdlRE9NVGltZXJUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0NvdW50OworICAgIFZpc2libGVXZWJQ
YWdlVG9rZW4gbV92aXNpYmxlUGFnZVRva2VuOwogICAgICAgICAKICAgICBXZWJDb3JlOjpTY3Jv
bGxQaW5uaW5nQmVoYXZpb3IgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3I7CiAgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IG1fc2Nyb2xsYmFyT3ZlcmxheVN0
eWxlOwpAQCAtMTk0Myw2ICsxOTUwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzSGFkU2Vs
ZWN0aW9uQ2hhbmdlc0Zyb21Vc2VySW50ZXJhY3Rpb24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9u
ZWVkc0hpZGRlbkNvbnRlbnRFZGl0YWJsZVF1aXJrIHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVl
ZHNQbGFpblRleHRRdWlyayB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0V2ZXJCZWVuVmlzaWJs
ZSB7IGZhbHNlIH07CiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICAgICBib29sIG1faGFz
TWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHMgeyBmYWxzZSB9OwpAQCAtMTk2OCw2
ICsxOTc2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgYm9vbCBtX2lzVXNpbmdIaWdoUGVy
Zm9ybWFuY2VXZWJHTCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3dhc0tpbGxlZEZvckJlaW5nVW5y
ZXNwb25zaXZlV2hpbGVJbkJhY2tncm91bmQgeyBmYWxzZSB9OwogICAgICAgICAKICAgICBXZWFr
UHRyRmFjdG9yeTxXZWJQYWdlUHJveHk+IG1fd2Vha1B0ckZhY3Rvcnk7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBlMTk0Y2RhN2JmM2Qy
NDM2Mzc4MDIwZmExZmRiZTg4ZmZlOGU2OWJkLi5kOGJjNWI3NmY1OTYxYzVlMTliYzZjZjAyMGE3
OTA1M2QwYjhlM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRl
LmgiCisjaW5jbHVkZSAiVW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3IuaCIKICNpbmNs
dWRlICJVc2VyRGF0YS5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNp
bmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKQEAgLTEwMSw2ICsxMDIsOCBAQCBXZWJQcm9jZXNz
UHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCiAgICAg
LCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJtaW5hdGlvbldhc0Rpc2FibGVkKDApCiAgICAgLCBt
X3Rocm90dGxlcigqdGhpcykKICAgICAsIG1faXNSZXNwb25zaXZlKE5vT3JNYXliZTo6TWF5YmUp
CisgICAgLCBtX3Zpc2libGVQYWdlQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVw
ZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7IH0pCisgICAgLCBtX2JhY2tncm91
bmRSZXNwb25zaXZlbmVzc1RpbWVyKHByb2Nlc3NQb29sLmNvbmZpZ3VyYXRpb24oKS51bnJlc3Bv
bnNpdmVCYWNrZ3JvdW5kUHJvY2Vzc2VzVGVybWluYXRpb25FbmFibGVkKCkgPyBzdGQ6Om1ha2Vf
dW5pcXVlPFVucmVzcG9uc2l2ZVdlYlByb2Nlc3NUZXJtaW5hdG9yPigqdGhpcykgOiBudWxscHRy
KQogewogICAgIFdlYlBhc3RlYm9hcmRQcm94eTo6c2luZ2xldG9uKCkuYWRkV2ViUHJvY2Vzc1By
b3h5KCp0aGlzKTsKIApAQCAtMjU1LDYgKzI1OCw4IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlBy
b2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJ
CiAgICAgbV9wYWdlTWFwLnNldChwYWdlSUQsIHdlYlBhZ2UucHRyKCkpOwogICAgIGdsb2JhbFBh
Z2VNYXAoKS5zZXQocGFnZUlELCB3ZWJQYWdlLnB0cigpKTsKIAorICAgIHVwZGF0ZUJhY2tncm91
bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CisKICAgICByZXR1cm4gd2ViUGFnZTsKIH0KIApAQCAt
MjY1LDEyICsyNzAsMTYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZEV4aXN0aW5nV2ViUGFn
ZShXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIHVpbnQ2NF90IHBhZ2VJRCkKIAogICAgIG1fcGFnZU1h
cC5zZXQocGFnZUlELCB3ZWJQYWdlKTsKICAgICBnbG9iYWxQYWdlTWFwKCkuc2V0KHBhZ2VJRCwg
d2ViUGFnZSk7CisKKyAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwog
fQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQp
CiB7CiAgICAgbV9wYWdlTWFwLnJlbW92ZShwYWdlSUQpOwogICAgIGdsb2JhbFBhZ2VNYXAoKS5y
ZW1vdmUocGFnZUlEKTsKKworICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVy
KCk7CiAgICAgCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBpdGVtSURzVG9SZW1vdmU7CiAgICAgZm9y
IChhdXRvJiBpZEFuZEl0ZW0gOiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW1NYXApIHsKQEAgLTcwOCw2
ICs3MTcsMTEgQEAgc2l6ZV90IFdlYlByb2Nlc3NQcm94eTo6ZnJhbWVDb3VudEluUGFnZShXZWJQ
YWdlUHJveHkqIHBhZ2UpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorYXV0byBXZWJQ
cm9jZXNzUHJveHk6OnZpc2libGVQYWdlVG9rZW4oKSBjb25zdCAtPiBWaXNpYmxlV2ViUGFnZVRv
a2VuCit7CisgICAgcmV0dXJuIG1fdmlzaWJsZVBhZ2VDb3VudGVyLmNvdW50KCk7Cit9CisKIFJl
ZlB0cjxBUEk6OlVzZXJJbml0aWF0ZWRBY3Rpb24+IFdlYlByb2Nlc3NQcm94eTo6dXNlckluaXRp
YXRlZEFjdGl2aXR5KHVpbnQ2NF90IGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFVc2VySW5pdGlh
dGVkQWN0aW9uTWFwOjppc1ZhbGlkS2V5KGlkZW50aWZpZXIpIHx8ICFpZGVudGlmaWVyKQpAQCAt
MTA3Myw2ICsxMDg3LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWFpblRo
cmVhZFBpbmcoKQogICAgICAgICBjYWxsYmFjayhpc1dlYlByb2Nlc3NSZXNwb25zaXZlKTsKIH0K
IAordm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1Rp
bWVyKCkKK3sKKyAgICBpZiAobV9iYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcikKKyAgICAg
ICAgbV9iYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lci0+dXBkYXRlU3RhdGUoKTsKK30KKwog
I2lmICFQTEFURk9STShDT0NPQSkKIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgV2ViUHJvY2Vzc1By
b3h5OjpwbGF0Zm9ybVBhdGhzV2l0aEFzc3VtZWRSZWFkQWNjZXNzKCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCAxNTg0NjdhNzIzZjNkZWU5Zjdi
YWM2Y2Y4NDBhNDFhZDJiODYzZDE2Li5lMzE4OTRlOTA0NmUzMDc1Y2I2YzE0MGI4NTBjZWRiYTBk
MWI3OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBA
IC01NSw2ICs1NSw3IEBAIHN0cnVjdCBQbHVnaW5JbmZvOwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHk7CitjbGFzcyBVbnJlc3BvbnNpdmVXZWJQcm9jZXNz
VGVybWluYXRvcjsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBXZWJQYWdl
R3JvdXA7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKQEAgLTgzLDYgKzg0LDcgQEAgcHVibGljOgog
CiAgICAgV1RGOjpJdGVyYXRvclJhbmdlPFdlYlBhZ2VQcm94eU1hcDo6Y29uc3RfaXRlcmF0b3I6
OlZhbHVlcz4gcGFnZXMoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VNYXAudmFsdWVzKCk7IH0KICAg
ICB1bnNpZ25lZCBwYWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VNYXAuc2l6ZSgpOyB9
CisgICAgdW5zaWduZWQgdmlzaWJsZVBhZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJs
ZVBhZ2VDb3VudGVyLnZhbHVlKCk7IH0KIAogICAgIHZvaWQgYWRkVmlzaXRlZExpbmtTdG9yZShW
aXNpdGVkTGlua1N0b3JlJik7CiAgICAgdm9pZCBhZGRXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eShXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSYpOwpAQCAtMTAwLDYgKzEwMiw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZXNGcm9tUGFnZShXZWJQYWdlUHJveHkq
KTsgLy8gSW5jbHVkaW5nIG1haW4gZnJhbWUuCiAgICAgc2l6ZV90IGZyYW1lQ291bnRJblBhZ2Uo
V2ViUGFnZVByb3h5KikgY29uc3Q7IC8vIEluY2x1ZGluZyBtYWluIGZyYW1lLgogCisgICAgVmlz
aWJsZVdlYlBhZ2VUb2tlbiB2aXNpYmxlUGFnZVRva2VuKCkgY29uc3Q7CisKICAgICB2b2lkIHVw
ZGF0ZVRleHRDaGVja2VyU3RhdGUoKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJOZXdXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qKTsKQEAgLTE4OSw2ICsxOTMsOCBA
QCBwcml2YXRlOgogCiAgICAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgcGxhdGZvcm1Q
YXRoc1dpdGhBc3N1bWVkUmVhZEFjY2VzcygpOwogCisgICAgdm9pZCB1cGRhdGVCYWNrZ3JvdW5k
UmVzcG9uc2l2ZW5lc3NUaW1lcigpOworCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQK
ICAgICBmcmllbmQgY2xhc3MgV2ViQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRl
OwpAQCAtMjQ3LDYgKzI1Myw5IEBAIHByaXZhdGU6CiAKICAgICBlbnVtIGNsYXNzIE5vT3JNYXli
ZSB7IE5vLCBNYXliZSB9IG1faXNSZXNwb25zaXZlOwogICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9u
PHZvaWQoYm9vbCB3ZWJQcm9jZXNzSXNSZXNwb25zaXZlKT4+IG1faXNSZXNwb25zaXZlQ2FsbGJh
Y2tzOworCisgICAgVmlzaWJsZVdlYlBhZ2VDb3VudGVyIG1fdmlzaWJsZVBhZ2VDb3VudGVyOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxVbnJlc3BvbnNpdmVXZWJQcm9jZXNzVGVybWluYXRvcj4gbV9i
YWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDM3ZjYyN2ZiODQzMGNkYzEzYTgyZDNhZDRlNTk4NmRlNjIzN2VlZGMuLjdkNWUyNzgw
NDA3ZTVmY2Q3ZDNlNTU2MzZlOTAwY2FmMjQ1YWNkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg5OSw2ICs4OTksOCBAQAog
CQk0MUZBRjVGODFFM0MxMDIxMDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFGNUY2MUUzQzBCNDcw
MDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5oICovOyB9OwogCQk0MUZBRjVGOTFFM0MxMDI1
MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQUY1RjcxRTNDMEI0NzAwMUFFNjc4IC8qIExpYldl
YlJUQ1Jlc29sdmVyLmNwcCAqLzsgfTsKIAkJNDQ1MEFFQzAxREMzRkFFNTAwOTk0M0YyIC8qIFNo
YXJlZE1lbW9yeUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ0NTBBRUJGMURDM0ZBRTUwMDk5NDNGMiAvKiBTaGFyZWRNZW1vcnlDb2NvYS5j
cHAgKi87IH07CisJCTQ2QTJCNjA4MUU1Njc2QTYwMEMzREVEQSAvKiBVbnJlc3BvbnNpdmVXZWJQ
cm9jZXNzVGVybWluYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkEyQjYwNjFFNTY3NUEyMDBDM0RFREEgLyogVW5yZXNwb25zaXZlV2ViUHJv
Y2Vzc1Rlcm1pbmF0b3IuY3BwICovOyB9OworCQk0NkEyQjYwOTFFNTY3NkE2MDBDM0RFREEgLyog
VW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBVbnJl
c3BvbnNpdmVXZWJQcm9jZXNzVGVybWluYXRvci5oICovOyB9OwogCQk0QTNDQzE4QTE5QjA2M0U3
MDBEMTRBRUYgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGMzkxOUFG
N0IwNDAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cCAqLzsgfTsKIAkJNEEzQ0MxOEIxOUIwNjQwRjAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QTQxMEYzQTE5QUY3QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCAqLzsgfTsKIAkJNEEzQ0MxOEMxOUIwNjQxNTAwRDE0
QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGM0IxOUFGN0IwNDAwMkVCQUI1
IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwICovOyB9OwpAQCAtMzA1MCw2
ICszMDUyLDggQEAKIAkJNDFGQUY1RjYxRTNDMEI0NzAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29s
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1Jlc29sdmVy
Lmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUZBRjVGNzFFM0MwQjQ3MDAxQUU2NzggLyogTGliV2ViUlRD
UmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2Vi
UlRDUmVzb2x2ZXIuY3BwOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDUwQUVCRjFEQzNGQUU1MDA5OTQz
RjIgLyogU2hhcmVkTWVtb3J5Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gU2hhcmVkTWVtb3J5Q29jb2EuY3BwOyBwYXRoID0gY29jb2EvU2hhcmVkTWVtb3J5
Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkEyQjYwNjFFNTY3NUEy
MDBDM0RFREEgLyogVW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1p
bmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkEyQjYwNzFFNTY3NUEy
MDBDM0RFREEgLyogVW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5yZXNwb25zaXZlV2ViUHJvY2Vzc1Rlcm1pbmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGMzUxOUFGN0FDMzAwMkVCQUI1
IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNDEwRjM2MTlBRjdBQzMwMDJFQkFCNSAvKiBXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNEE0MTBGMzkxOUFGN0IwNDAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0NTcsNiArNjQ2MSw4IEBACiAJCQkJMUFBNDE3QzkxMkMw
MENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyLmggKi8sCiAJCQkJMUJCNDE3QzkxMkMwMENDQTAw
MkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHAgKi8sCiAJCQkJMUNDNDE3QzkxMkMw
MENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5oICovLAorCQkJCTQ2QTJCNjA2
MUU1Njc1QTIwMEMzREVEQSAvKiBVbnJlc3BvbnNpdmVXZWJQcm9jZXNzVGVybWluYXRvci5jcHAg
Ki8sCisJCQkJNDZBMkI2MDcxRTU2NzVBMjAwQzNERURBIC8qIFVucmVzcG9uc2l2ZVdlYlByb2Nl
c3NUZXJtaW5hdG9yLmggKi8sCiAJCQkJMDcyOTdGOUMxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcCAqLywKIAkJCQkwNzI5N0Y5RDFDMTdCQkVBMDAz
RjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaCAqLywKIAkJCQk0QTQxMEYz
OTE5QUY3QjA0MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwICovLApAQCAtNzk2NCw2ICs3OTcwLDcgQEAKIAkJCQk0RjYwMTQzMjE1NUM1QUEyMDAx
RkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NzA1
MTExQkU0MTBFNjAwODc0QUYxIC8qIEJsb2NrU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMw
NjVGQTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDZBMkI2MDkxRTU2NzZBNjAwQzNERURBIC8qIFVucmVzcG9uc2l2ZVdlYlByb2Nlc3NUZXJtaW5h
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUEyRTUxRDEyRTRDMDVFMDBCQzQ5NjYgLyogQ0dV
dGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMkQ5NTZGMTI4NDg1NjQwMDFFQjk2MiAv
KiBDaGlsZFByb2Nlc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRkFFQzNBMUIwNjU3NjMwMDA5
QzRFNyAvKiBDaGlsZFByb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC05NjQ1LDYg
Kzk2NTIsNyBAQAogCQkJCTUzMjE1OTUzMURCQUU3MTgwMDU0QUEzQyAvKiBOZXR3b3JrU2Vzc2lv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzIwQ0I5RDFCQjBEQ0ZBMDA4OTVCQjEgLyogTmV0
d29ya1Nlc3Npb25Db2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxQTJFQzU1MTQ4OTk4MkUw
MDgxMEQ3MSAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0NkEyQjYwODFFNTY3NkE2MDBDM0RFREEgLyogVW5yZXNwb25zaXZlV2ViUHJvY2Vz
c1Rlcm1pbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEzMTI2MUUxNDhGRjgyQzAwQkEy
QTM5IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzMUEyRUM1MDE0ODk5ODA1MDA4MTBENzEgLyogTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDg0OEMx
MjdGNkE0OTAwMUVCOTYyIC8qIE5QSWRlbnRpZmllckRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>