<?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>214102</bug_id>
          
          <creation_ts>2020-07-08 15:44:09 -0700</creation_ts>
          <short_desc>JSRunLoopTimer should use WTF::RunLoop rather than custom CF code</short_desc>
          <delta_ts>2020-07-22 08:07:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rackler</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1669915</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-08 15:44:09 -0700</bug_when>
    <thetext>JSRunLoopTimer should use WTF::RunLoop rather than custom CF code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669917</commentid>
    <comment_count>1</comment_count>
      <attachid>403813</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-08 15:51:41 -0700</bug_when>
    <thetext>Created attachment 403813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670147</commentid>
    <comment_count>2</comment_count>
      <attachid>403879</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-09 09:53:04 -0700</bug_when>
    <thetext>Created attachment 403879
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670539</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-10 12:50:35 -0700</bug_when>
    <thetext>We have testing for this now in https://bugs.webkit.org/show_bug.cgi?id=214193.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670542</commentid>
    <comment_count>4</comment_count>
      <attachid>403879</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-10 13:04:17 -0700</bug_when>
    <thetext>Comment on attachment 403879
Patch

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

&gt; Source/JavaScriptCore/runtime/JSRunLoopTimer.h:73
&gt; +            PerVMData(Manager&amp;, RefPtr&lt;WTF::RunLoop&gt;);

Seems like this argument should be WTF::RunLoop&amp;.

&gt; Source/JavaScriptCore/runtime/JSRunLoopTimer.h:76
&gt; +            RefPtr&lt;WTF::RunLoop&gt; runLoop;

Can this be Ref instead of RefPtr?

&gt; Source/JavaScriptCore/runtime/VM.h:357
&gt; +    RefPtr&lt;WTF::RunLoop&gt; m_runLoop;

Can this be Ref instead of RefPtr?

&gt; Source/JavaScriptCore/runtime/VM.h:1080
&gt; +    WTF::RunLoop* runLoop() const { return m_runLoop.get(); }

Can this return a reference rather than a pointer? It can never be null, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670564</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-10 13:57:01 -0700</bug_when>
    <thetext>*** Bug 214193 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670568</commentid>
    <comment_count>6</comment_count>
      <attachid>403997</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-10 14:01:12 -0700</bug_when>
    <thetext>Created attachment 403997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670571</commentid>
    <comment_count>7</comment_count>
      <attachid>403997</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-10 14:05:45 -0700</bug_when>
    <thetext>Comment on attachment 403997
Patch

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

&gt; Source/JavaScriptCore/runtime/VM.h:1080
&gt; +    WTF::RunLoop&amp; runLoop() const { return m_runLoop.get(); }

Don’t actually need get() here.

&gt; Source/WebCore/bindings/js/CommonVM.cpp:61
&gt; +    RunLoop* runLoop = &amp;RunLoop::current();

Seems like this could just be nullptr since current is the default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670575</commentid>
    <comment_count>8</comment_count>
      <attachid>404000</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-10 14:21:28 -0700</bug_when>
    <thetext>Created attachment 404000
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670582</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-10 14:44:35 -0700</bug_when>
    <thetext>ChangeLog entry in Source/JavaScriptCore/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670598</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-10 15:00:37 -0700</bug_when>
    <thetext>Committed r264242: &lt;https://trac.webkit.org/changeset/264242&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404000.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670599</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-10 15:01:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/65366297&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670714</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-10 21:35:09 -0700</bug_when>
    <thetext>Reverted r264242 for reason:

Caused many crashes on iOS bots

Committed r264262: &lt;https://trac.webkit.org/changeset/264262&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670715</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-10 21:35:29 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #12)
&gt; Reverted r264242 for reason:
&gt; 
&gt; Caused many crashes on iOS bots
&gt; 
&gt; Committed r264262: &lt;https://trac.webkit.org/changeset/264262&gt;

https://build.webkit.org/results/Apple%20iOS%2013%20Simulator%20Debug%20WK2%20(Tests)/r264243%20(4626)/results.html

ASSERTION FAILED: s_webRunLoop
/Volumes/Data/slave/ios-simulator-13-debug/build/Source/WTF/wtf/RunLoop.cpp(82) : static WTF::RunLoop &amp;WTF::RunLoop::web()
1   0x6c5525c49 WTFCrash
2   0x6c66c77db WTFCrashWithInfo(int, char const*, char const*, int)
3   0x6c55c9d4d WTF::RunLoop::web()
4   0x6cce5c048 WebCore::commonVMSlow()
5   0x6cb204fa3 WebCore::commonVM()
6   0x6cddc8724 WebCore::PageScriptDebugServer::PageScriptDebugServer(WebCore::Page&amp;)
7   0x6cddc877d WebCore::PageScriptDebugServer::PageScriptDebugServer(WebCore::Page&amp;)
8   0x6cdd8adf4 WebCore::InspectorController::InspectorController(WebCore::Page&amp;, WebCore::InspectorClient*)
9   0x6cdd8b3d5 WebCore::InspectorController::InspectorController(WebCore::Page&amp;, WebCore::InspectorClient*)
10  0x6ce33ce32 std::__1::__unique_if&lt;WebCore::InspectorController&gt;::__unique_single std::__1::make_unique&lt;WebCore::InspectorController, WebCore::Page&amp;, WebCore::InspectorClient*&amp;&gt;(WebCore::Page&amp;, WebCore::InspectorClient*&amp;)
11  0x6ce323bb4 decltype(auto) WTF::makeUnique&lt;WebCore::InspectorController, WebCore::Page&amp;, WebCore::InspectorClient*&amp;&gt;(WebCore::Page&amp;, WebCore::InspectorClient*&amp;)
12  0x6ce322836 WebCore::Page::Page(WebCore::PageConfiguration&amp;&amp;)
13  0x6ce32554d WebCore::Page::Page(WebCore::PageConfiguration&amp;&amp;)
14  0x6b194c88d std::__1::__unique_if&lt;WebCore::Page&gt;::__unique_single std::__1::make_unique&lt;WebCore::Page, WebCore::PageConfiguration&gt;(WebCore::PageConfiguration&amp;&amp;)
15  0x6b192351f decltype(auto) WTF::makeUnique&lt;WebCore::Page, WebCore::PageConfiguration&gt;(WebCore::PageConfiguration&amp;&amp;)
16  0x6b1920474 WebKit::WebPage::WebPage(WTF::ObjectIdentifier&lt;WebCore::PageIdentifierType&gt;, WebKit::WebPageCreationParameters&amp;&amp;)
17  0x6b191eb75 WebKit::WebPage::WebPage(WTF::ObjectIdentifier&lt;WebCore::PageIdentifierType&gt;, WebKit::WebPageCreationParameters&amp;&amp;)
18  0x6b191ea81 WebKit::WebPage::create(WTF::ObjectIdentifier&lt;WebCore::PageIdentifierType&gt;, WebKit::WebPageCreationParameters&amp;&amp;)
19  0x6b144bf84 WebKit::WebProcess::createWebPage(WTF::ObjectIdentifier&lt;WebCore::PageIdentifierType&gt;, WebKit::WebPageCreationParameters&amp;&amp;)
20  0x6b1c1787c void IPC::callMemberFunctionImpl&lt;WebKit::WebProcess, void (WebKit::WebProcess::*)(WTF::ObjectIdentifier&lt;WebCore::PageIdentifierType&gt;, WebKit::WebPageCreationParameters&amp;&amp;), std::__1::tuple&lt;WTF::ObjectIdentifier&lt;WebCore::PageIdentifierType&gt;, WebKit::WebPageCreationParameters&gt;, 0ul, 1ul&gt;(WebKit::WebProcess*, void (WebKit::WebProcess::*)(WTF::ObjectIdentifier&lt;WebCore::PageIdentifierType&gt;, WebKit::WebPageCreationParameters&amp;&amp;), std::__1::tuple&lt;WTF::ObjectIdentifier&lt;WebCore::PageIdentifierType&gt;, WebKit::WebPageCreationParameters&gt;&amp;&amp;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul&gt;)
21  0x6b1c162e0 void IPC::callMemberFunction&lt;WebKit::WebProcess, void (WebKit::WebProcess::*)(WTF::ObjectIdentifier&lt;WebCore::PageIdentifierType&gt;, WebKit::WebPageCreationParameters&amp;&amp;), std::__1::tuple&lt;WTF::ObjectIdentifier&lt;WebCore::PageIdentifierType&gt;, WebKit::WebPageCreationParameters&gt;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul&gt; &gt;(std::__1::tuple&lt;WTF::ObjectIdentifier&lt;WebCore::PageIdentifierType&gt;, WebKit::WebPageCreationParameters&gt;&amp;&amp;, WebKit::WebProcess*, void (WebKit::WebProcess::*)(WTF::ObjectIdentifier&lt;WebCore::PageIdentifierType&gt;, WebKit::WebPageCreationParameters&amp;&amp;))
22  0x6b1c0fe0e void IPC::handleMessage&lt;Messages::WebProcess::CreateWebPage, WebKit::WebProcess, void (WebKit::WebProcess::*)(WTF::ObjectIdentifier&lt;WebCore::PageIdentifierType&gt;, WebKit::WebPageCreationParameters&amp;&amp;)&gt;(IPC::Decoder&amp;, WebKit::WebProcess*, void (WebKit::WebProcess::*)(WTF::ObjectIdentifier&lt;WebCore::PageIdentifierType&gt;, WebKit::WebPageCreationParameters&amp;&amp;))
23  0x6b1c0de0c WebKit::WebProcess::didReceiveWebProcessMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
24  0x6b144c996 WebKit::WebProcess::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
25  0x6b011b89f IPC::Connection::dispatchMessage(IPC::Decoder&amp;)
26  0x6b011c1d0 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)
27  0x6b011c860 IPC::Connection::dispatchOneIncomingMessage()
28  0x6b013b618 IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_7::operator()()
29  0x6b013b52e WTF::Detail::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_7, void&gt;::call()
30  0x6c5551a42 WTF::Function&lt;void ()&gt;::operator()() const
31  0x6c55c9f55 WTF::RunLoop::performWork()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670723</commentid>
    <comment_count>14</comment_count>
      <attachid>404045</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-10 22:13:24 -0700</bug_when>
    <thetext>Created attachment 404045
Patch for landing - fixed iOS WK2 crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670747</commentid>
    <comment_count>15</comment_count>
      <attachid>404055</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-11 09:03:47 -0700</bug_when>
    <thetext>Created attachment 404055
Patch for landing - fixed iOS WK2 crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670763</commentid>
    <comment_count>16</comment_count>
      <attachid>404055</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-11 12:02:06 -0700</bug_when>
    <thetext>Comment on attachment 404055
Patch for landing - fixed iOS WK2 crash

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

&gt; Source/WebCore/bindings/js/CommonVM.cpp:61
&gt; +    if (RunLoop* web = RunLoop::webIfExists())
&gt; +        runLoop = web;

Is it OK that an early-created VM will permanently be on the current run loop, not the web run loop?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670764</commentid>
    <comment_count>17</comment_count>
      <attachid>404055</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-11 12:03:14 -0700</bug_when>
    <thetext>Comment on attachment 404055
Patch for landing - fixed iOS WK2 crash

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

&gt; Source/WebCore/bindings/js/CommonVM.cpp:60
&gt; +    if (RunLoop* web = RunLoop::webIfExists())

No need for this if statement. Could just be:

    runLoop = RunLoop::webIfExists();

Almost makes me wish RunLoop::webIfExists was a platform-independent function that returns nullptr on non-web-thread platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670775</commentid>
    <comment_count>18</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-11 13:12:15 -0700</bug_when>
    <thetext>&gt; Is it OK that an early-created VM will permanently be on the current run
&gt; loop, not the web run loop?

It&apos;s a bit of a brittle design, but I believe that was the previous behavior of &quot;vm.setRunLoop(WebThreadRunLoop())&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670776</commentid>
    <comment_count>19</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-11 13:15:47 -0700</bug_when>
    <thetext>I wonder if there&apos;s any way to get a crash log from the api-ios bot. 🤔</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670800</commentid>
    <comment_count>20</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-07-11 16:42:16 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #19)
&gt; I wonder if there&apos;s any way to get a crash log from the api-ios bot. 🤔
I emailed you the crash logs. There isn&apos;t any automated way currently. I or anyone from our team can manually get the logs from the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671105</commentid>
    <comment_count>21</comment_count>
      <attachid>404163</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-13 12:07:10 -0700</bug_when>
    <thetext>Created attachment 404163
Patch for landing - fixed iOS WK2 crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671138</commentid>
    <comment_count>22</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-13 13:43:13 -0700</bug_when>
    <thetext>Committed r264315: &lt;https://trac.webkit.org/changeset/264315&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404163.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673733</commentid>
    <comment_count>23</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-21 20:47:29 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673734</commentid>
    <comment_count>24</comment_count>
      <attachid>404897</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-21 20:47:31 -0700</bug_when>
    <thetext>Created attachment 404897
Patch for landing - fixed WASM crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673820</commentid>
    <comment_count>25</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-22 08:07:06 -0700</bug_when>
    <thetext>Committed r264696: &lt;https://trac.webkit.org/changeset/264696&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404897.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403813</attachid>
            <date>2020-07-08 15:51:41 -0700</date>
            <delta_ts>2020-07-09 09:53:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214102-20200708155140.patch</filename>
            <type>text/plain</type>
            <size>15269</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MTM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDIwLTA3LTA4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgSlNSdW5Mb29wVGltZXIgc2hvdWxkIHVzZSBXVEY6OlJ1bkxvb3AgcmF0aGVyIHRoYW4gY3Vz
dG9tIENGIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDEwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBnZW5lcmljIFJ1bkxvb3AgY29kZXBhdGggd2FzIGFscmVhZHkgbW9zdGx5IHJpZ2h0
LiBKdXN0IG5lZWRlZCB0bworICAgICAgICBjbGFyaWZ5IHRoZSBBUEkgdG8gZGVtb25zdHJhdGUg
dGhhdCBWTXMgZG8gbm90IGhvcCBmcm9tIG9uZSBSdW5Mb29wCisgICAgICAgIHRvIGFub3RoZXIu
CisKKyAgICAgICAgKiBydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6
ZXBvY2hUaW1lKTogUmVtb3ZlZCB0aGUgQ0YgcGF0aC4KKworICAgICAgICAoSlNDOjpKU1J1bkxv
b3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEpOiBJbmNsdWRlIGEgUnVuTG9v
cAorICAgICAgICBhcyBhIGNvbnN0cnVjdG9yIGFyZ3VtZW50IHNvIHRoYXQgdGhlIHdlYiB0aHJl
YWQgY2FuIG92ZXJyaWRlIGl0LgorCisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjp0aW1lckRpZEZpcmVDYWxsYmFjayk6IFJlbW92ZWQgdGhlIENGIHBhdGguCisKKyAgICAg
ICAgKEpTQzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6flBlclZNRGF0YSk6
IE5vIG5lZWQgdG8KKyAgICAgICAgZXhwbGljaXRseSBjbGVhciBvdXIgUnVuTG9vcCAtLSB0aGUg
UnVuTG9vcDo6VGltZXIgZGVzdHJ1Y3RvciB3aWxsIGRvCisgICAgICAgIHRoZSBqb2IuCisKKyAg
ICAgICAgKEpTQzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmlyZSk6CisgICAg
ICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAg
KEpTQzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnNjaGVkdWxlVGltZXIpOgorICAgICAgICAo
SlNDOjpKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6Y2FuY2VsVGltZXIpOiBSZW1vdmVkIHRoZSBD
RiBwYXRoLgorCisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURh
dGE6OnNldFJ1bkxvb3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6
TWFuYWdlcjo6ZGlkQ2hhbmdlUnVuTG9vcCk6IERlbGV0ZWQuIENoYW5naW5nCisgICAgICAgIFJ1
bkxvb3BzIGlzIG5vdCBhY3R1YWxseSBhIGZlYXR1cmUgd2UgdXNlLgorCisgICAgICAgICogcnVu
dGltZS9KU1J1bkxvb3BUaW1lci5oOgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6TWFu
YWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
UHJvbWlzZVRpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvbWlzZVRpbWVyOjpkb1dvcmspOgor
ICAgICAgICAoSlNDOjpQcm9taXNlVGltZXI6OnJ1blJ1bkxvb3ApOiBSZW1vdmVkIHRoZSBDRiBw
YXRoLgorCisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6
CisgICAgICAgIChKU0M6OlZNOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpWTTo6c2V0UnVuTG9v
cCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6
cnVuTG9vcCBjb25zdCk6IFJlcXVpcmUgYSBSdW5Mb29wIGluIHRoZSBWTSBjb25zdHJ1Y3RvciBp
bgorICAgICAgICBvcmRlciB0byBjbGFyaWZ5IHRoYXQgd2UgYWx3YXlzIGtub3cgb3VyIFJ1bkxv
b3AgYW5kIG5ldmVyIGNoYW5nZSBpdC4KKwogMjAyMC0wNy0wOCAgU2FhbSBCYXJhdGkgIDxzYmFy
YXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBmdXp6aW5nIHRvZ2dsZSBmb3IgTElDTQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVy
LmNwcAkocmV2aXNpb24gMjY0MDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNSdW5Mb29wVGltZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw0NSArNDAsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBpbmxpbmUgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OkVw
b2NoVGltZSBlcG9jaFRpbWUoU2Vjb25kcyBkZWxheSkKIHsKLSNpZiBVU0UoQ0YpCi0gICAgcmV0
dXJuIFNlY29uZHMgeyBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIGRlbGF5LnZhbHVlKCkg
fTsKLSNlbHNlCiAgICAgcmV0dXJuIE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVw
b2NoKCkgKyBkZWxheTsKLSNlbmRpZgotfQotCi0jaWYgVVNFKENGKQotdm9pZCBKU1J1bkxvb3BU
aW1lcjo6TWFuYWdlcjo6dGltZXJEaWRGaXJlQ2FsbGJhY2soQ0ZSdW5Mb29wVGltZXJSZWYsIHZv
aWQqIGNvbnRleHRQdHIpCi17Ci0gICAgc3RhdGljX2Nhc3Q8SlNSdW5Mb29wVGltZXI6Ok1hbmFn
ZXIqPihjb250ZXh0UHRyKS0+dGltZXJEaWRGaXJlKCk7CiB9CiAKLXZvaWQgSlNSdW5Mb29wVGlt
ZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6c2V0UnVuTG9vcChNYW5hZ2VyKiBtYW5hZ2VyLCBDRlJ1
bkxvb3BSZWYgbmV3UnVuTG9vcCkKLXsKLSAgICBpZiAocnVuTG9vcCkgewotICAgICAgICBDRlJ1
bkxvb3BSZW1vdmVUaW1lcihydW5Mb29wLmdldCgpLCB0aW1lci5nZXQoKSwga0NGUnVuTG9vcENv
bW1vbk1vZGVzKTsKLSAgICAgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHRpbWVyLmdldCgp
KTsKLSAgICAgICAgcnVuTG9vcC5jbGVhcigpOwotICAgICAgICB0aW1lci5jbGVhcigpOwotICAg
IH0KLQotICAgIGlmIChuZXdSdW5Mb29wKSB7Ci0gICAgICAgIHJ1bkxvb3AgPSBuZXdSdW5Mb29w
OwotICAgICAgICBtZW1zZXQoJmNvbnRleHQsIDAsIHNpemVvZihDRlJ1bkxvb3BUaW1lckNvbnRl
eHQpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobWFuYWdlcik7Ci0gICAgICAgIGNvbnRleHQu
aW5mbyA9IG1hbmFnZXI7Ci0gICAgICAgIHRpbWVyID0gYWRvcHRDRihDRlJ1bkxvb3BUaW1lckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIHNf
ZGVjYWRlLnNlY29uZHMoKSwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBzX2RlY2FkZS5z
ZWNvbmRzKCksIDAsIDAsIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpcmVDYWxs
YmFjaywgJmNvbnRleHQpKTsKLSAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIocnVuTG9vcC5nZXQo
KSwgdGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0KLSAgICAgICAgRXBvY2hU
aW1lIHNjaGVkdWxlVGltZSA9IGVwb2NoVGltZShzX2RlY2FkZSk7Ci0gICAgICAgIGZvciAoYXV0
byYgcGFpciA6IHRpbWVycykKLSAgICAgICAgICAgIHNjaGVkdWxlVGltZSA9IHN0ZDo6bWluKHBh
aXIuc2Vjb25kLCBzY2hlZHVsZVRpbWUpOwotICAgICAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRG
aXJlRGF0ZSh0aW1lci5nZXQoKSwgc2NoZWR1bGVUaW1lLnZhbHVlKCkpOwotICAgIH0KLX0KLSNl
bHNlCi1KU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEoTWFuYWdl
ciYgbWFuYWdlcikKLSAgICA6IHJ1bkxvb3AoJlJ1bkxvb3A6OmN1cnJlbnQoKSkKK0pTUnVuTG9v
cFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YShNYW5hZ2VyJiBtYW5hZ2VyLCBS
ZWZQdHI8UnVuTG9vcD4gcnVuTG9vcCkKKyAgICA6IHJ1bkxvb3AoV1RGTW92ZShydW5Mb29wKSkK
ICAgICAsIHRpbWVyKG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8TWFuYWdlcj4+KCpydW5Mb29w
LCAmbWFuYWdlciwgJkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpcmVDYWxsYmFj
aykpCiB7CiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKQEAgLTkxLDEzICs1Nyw5IEBAIHZvaWQg
SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmkKIHsKICAgICB0aW1lckRpZEZpcmUo
KTsKIH0KLSNlbmRpZgogCiBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjp+UGVy
Vk1EYXRhKCkKIHsKLSNpZiBVU0UoQ0YpCi0gICAgc2V0UnVuTG9vcChudWxscHRyLCBudWxscHRy
KTsKLSNlbmRpZgogfQogCiB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZp
cmUoKQpAQCAtMTA2LDIxICs2OCwxMiBAQCB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0
aW1lckRpZEZpCiAKICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2Nr
KTsKLSNpZiBVU0UoQ0YpCi0gICAgICAgIENGUnVuTG9vcFJlZiBjdXJyZW50UnVuTG9vcCA9IENG
UnVuTG9vcEdldEN1cnJlbnQoKTsKLSNlbHNlCiAgICAgICAgIFJ1bkxvb3AqIGN1cnJlbnRSdW5M
b29wID0gJlJ1bkxvb3A6OmN1cnJlbnQoKTsKLSNlbmRpZgogICAgICAgICBFcG9jaFRpbWUgbm93
RXBvY2hUaW1lID0gZXBvY2hUaW1lKDBfcyk7CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBt
X21hcHBpbmcpIHsKICAgICAgICAgICAgIFBlclZNRGF0YSYgZGF0YSA9ICplbnRyeS52YWx1ZTsK
LSNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBpZiAoZGF0YS5ydW5Mb29wLmdldCgpICE9IGN1cnJl
bnRSdW5Mb29wKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotI2Vsc2UKICAgICAgICAgICAg
IGlmIChkYXRhLnJ1bkxvb3AgIT0gY3VycmVudFJ1bkxvb3ApCiAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0jZW5kaWYKICAgICAgICAgICAgIAogICAgICAgICAgICAgRXBvY2hUaW1lIHNjaGVk
dWxlVGltZSA9IGVwb2NoVGltZShzX2RlY2FkZSk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGRhdGEudGltZXJzLnNpemUoKTsgKytpKSB7CkBAIC0xNDAsMTEgKzkzLDcgQEAg
dm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRGaQogICAgICAgICAgICAgICAg
IHRpbWVyc1RvRmlyZS5hcHBlbmQoV1RGTW92ZShwYWlyLmZpcnN0KSk7CiAgICAgICAgICAgICB9
CiAKLSNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0
ZShkYXRhLnRpbWVyLmdldCgpLCBzY2hlZHVsZVRpbWUudmFsdWUoKSk7Ci0jZWxzZQogICAgICAg
ICAgICAgZGF0YS50aW1lci0+c3RhcnRPbmVTaG90KHN0ZDo6bWF4KDBfcywgc2NoZWR1bGVUaW1l
IC0gTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKSkpOwotI2VuZGlmCiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTE2NCwxMCArMTEzLDcgQEAgSlNSdW5Mb29wVGltZXI6Ok1h
bmFnZXImIEpTUnVuTG9vcFRpbWVyOgogCiB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpy
ZWdpc3RlclZNKFZNJiB2bSkKIHsKLSAgICBhdXRvIGRhdGEgPSBtYWtlVW5pcXVlPFBlclZNRGF0
YT4oKnRoaXMpOwotI2lmIFVTRShDRikKLSAgICBkYXRhLT5zZXRSdW5Mb29wKHRoaXMsIHZtLnJ1
bkxvb3AoKSk7Ci0jZW5kaWYKKyAgICBhdXRvIGRhdGEgPSBtYWtlVW5pcXVlPFBlclZNRGF0YT4o
KnRoaXMsIHZtLnJ1bkxvb3AoKSk7CiAKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9j
ayk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX21hcHBpbmcuYWRkKHsgdm0uYXBpTG9jaygpIH0s
IFdURk1vdmUoZGF0YSkpOwpAQCAtMjA1LDExICsxNTEsNyBAQCB2b2lkIEpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpzY2hlZHVsZVRpCiAgICAgaWYgKCFmb3VuZCkKICAgICAgICAgZGF0YS50aW1l
cnMuYXBwZW5kKHsgdGltZXIsIGZpcmVFcG9jaFRpbWUgfSk7CiAKLSNpZiBVU0UoQ0YpCi0gICAg
Q0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoZGF0YS50aW1lci5nZXQoKSwgc2NoZWR1bGVU
aW1lLnZhbHVlKCkpOwotI2Vsc2UKICAgICBkYXRhLnRpbWVyLT5zdGFydE9uZVNob3Qoc3RkOjpt
YXgoMF9zLCBzY2hlZHVsZVRpbWUgLSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VF
cG9jaCgpKSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6Y2Fu
Y2VsVGltZXIoSlNSdW5Mb29wVGltZXImIHRpbWVyKQpAQCAtMjQwLDExICsxODIsNyBAQCB2b2lk
IEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpjYW5jZWxUaW1lCiAgICAgICAgIHNjaGVkdWxlVGlt
ZSA9IHN0ZDo6bWluKHNjaGVkdWxlVGltZSwgZGF0YS50aW1lcnNbaV0uc2Vjb25kKTsKICAgICB9
CiAKLSNpZiBVU0UoQ0YpCi0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoZGF0YS50
aW1lci5nZXQoKSwgc2NoZWR1bGVUaW1lLnZhbHVlKCkpOwotI2Vsc2UKICAgICBkYXRhLnRpbWVy
LT5zdGFydE9uZVNob3Qoc3RkOjptYXgoMF9zLCBzY2hlZHVsZVRpbWUgLSBNb25vdG9uaWNUaW1l
Ojpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpKSk7Ci0jZW5kaWYKIH0KIAogT3B0aW9uYWw8U2Vj
b25kcz4gSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVVbnRpbEZpcmUoSlNSdW5Mb29wVGlt
ZXImIHRpbWVyKQpAQCAtMjY0LDE4ICsyMDIsNiBAQCBPcHRpb25hbDxTZWNvbmRzPiBKU1J1bkxv
b3BUaW1lcjo6TWFuYWdlCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotI2lmIFVTRShD
RikKLXZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OmRpZENoYW5nZVJ1bkxvb3AoVk0mIHZt
LCBDRlJ1bkxvb3BSZWYgbmV3UnVuTG9vcCkKLXsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fbG9jayk7Ci0gICAgYXV0byBpdGVyID0gbV9tYXBwaW5nLmZpbmQoeyB2bS5hcGlMb2NrKCkg
fSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoaXRlciAhPSBtX21hcHBpbmcuZW5kKCkpOwotCi0gICAg
UGVyVk1EYXRhJiBkYXRhID0gKml0ZXItPnZhbHVlOwotICAgIGRhdGEuc2V0UnVuTG9vcCh0aGlz
LCBuZXdSdW5Mb29wKTsKLX0KLSNlbmRpZgotCiB2b2lkIEpTUnVuTG9vcFRpbWVyOjp0aW1lckRp
ZEZpcmUoKQogewogICAgIE5PX1RBSUxfQ0FMTFMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuaAkocmV2aXNpb24gMjY0MDMyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsMTAgKzMzLDYgQEAKICNpbmNsdWRlIDx3dGYvU2hhcmVkVGFzay5oPgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCi0jaWYgVVNFKENGKQotI2luY2x1
ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNl
IEpTQyB7CiAKIGNsYXNzIEpTTG9jazsKQEAgLTUwLDExICs0Niw4IEBAIHB1YmxpYzoKICAgICBj
bGFzcyBNYW5hZ2VyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKE1hbmFnZXIpOwotI2lmIFVTRShDRikKLSAgICAgICAgc3Rh
dGljIHZvaWQgdGltZXJEaWRGaXJlQ2FsbGJhY2soQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKTsK
LSNlbHNlCiAgICAgICAgIHZvaWQgdGltZXJEaWRGaXJlQ2FsbGJhY2soKTsKLSNlbmRpZgorCiAg
ICAgICAgIE1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKICAgICAgICAgdm9pZCB0aW1lckRpZEZpcmUo
KTsKQEAgLTcwLDEwICs2Myw2IEBAIHB1YmxpYzoKIAogICAgICAgICBPcHRpb25hbDxTZWNvbmRz
PiB0aW1lVW50aWxGaXJlKEpTUnVuTG9vcFRpbWVyJik7CiAKLSNpZiBVU0UoQ0YpCi0gICAgICAg
IHZvaWQgZGlkQ2hhbmdlUnVuTG9vcChWTSYsIENGUnVuTG9vcFJlZiBuZXdSdW5Mb29wKTsKLSNl
bmRpZgotCiAgICAgcHJpdmF0ZToKICAgICAgICAgTG9jayBtX2xvY2s7CiAKQEAgLTgxLDIyICs3
MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlclZNRGF0YSk7CiAgICAgICAgIHB1Ymxp
YzoKLSNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBQZXJWTURhdGEoTWFuYWdlciYpIHsgfQotI2Vs
c2UKLSAgICAgICAgICAgIFBlclZNRGF0YShNYW5hZ2VyJik7Ci0jZW5kaWYKKyAgICAgICAgICAg
IFBlclZNRGF0YShNYW5hZ2VyJiwgUmVmUHRyPFdURjo6UnVuTG9vcD4pOwogICAgICAgICAgICAg
flBlclZNRGF0YSgpOwogCi0jaWYgVVNFKENGKQotICAgICAgICAgICAgdm9pZCBzZXRSdW5Mb29w
KE1hbmFnZXIqLCBDRlJ1bkxvb3BSZWYpOwotICAgICAgICAgICAgUmV0YWluUHRyPENGUnVuTG9v
cFRpbWVyUmVmPiB0aW1lcjsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IHJ1
bkxvb3A7Ci0gICAgICAgICAgICBDRlJ1bkxvb3BUaW1lckNvbnRleHQgY29udGV4dDsKLSNlbHNl
Ci0gICAgICAgICAgICBSdW5Mb29wKiBydW5Mb29wOworICAgICAgICAgICAgUmVmUHRyPFdURjo6
UnVuTG9vcD4gcnVuTG9vcDsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSdW5Mb29wOjpU
aW1lcjxNYW5hZ2VyPj4gdGltZXI7Ci0jZW5kaWYKICAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnBh
aXI8UmVmPEpTUnVuTG9vcFRpbWVyPiwgRXBvY2hUaW1lPj4gdGltZXJzOwogICAgICAgICB9Owog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VUaW1lci5j
cHAJKHJldmlzaW9uIDI2NDAzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b21pc2VUaW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDEzICs3MCw4IEBAIHZvaWQgUHJv
bWlzZVRpbWVyOjpkb1dvcmsoVk0mIHZtKQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG1f
cGVuZGluZ1Byb21pc2VzLmlzRW1wdHkoKSAmJiBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFBy
b21pc2VzRmluaXNoKSB7Ci0jaWYgVVNFKENGKQotICAgICAgICBDRlJ1bkxvb3BTdG9wKHZtLnJ1
bkxvb3AoKSk7Ci0jZWxzZQorICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5pc0VtcHR5KCkgJiYg
bV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxQcm9taXNlc0ZpbmlzaCkKICAgICAgICAgUnVuTG9v
cDo6Y3VycmVudCgpLnN0b3AoKTsKLSNlbmRpZgotICAgIH0KIAogICAgIG1fdGFza0xvY2sudW5s
b2NrKCk7CiB9CkBAIC04NCwxNyArNzksMTAgQEAgdm9pZCBQcm9taXNlVGltZXI6OmRvV29yayhW
TSYgdm0pCiB2b2lkIFByb21pc2VUaW1lcjo6cnVuUnVuTG9vcCgpCiB7CiAgICAgQVNTRVJUKCFt
X2FwaUxvY2stPnZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotI2lmIFVT
RShDRikKLSAgICBBU1NFUlQoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpID09IG1fYXBpTG9jay0+dm0o
KS0+cnVuTG9vcCgpKTsKLSNlbmRpZgorICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09
IG1fYXBpTG9jay0+dm0oKS0+cnVuTG9vcCgpKTsKICAgICBtX3Nob3VsZFN0b3BSdW5Mb29wV2hl
bkFsbFByb21pc2VzRmluaXNoID0gdHJ1ZTsKLSAgICBpZiAobV9wZW5kaW5nUHJvbWlzZXMuc2l6
ZSgpKSB7Ci0jaWYgVVNFKENGKQotICAgICAgICBDRlJ1bkxvb3BSdW4oKTsKLSNlbHNlCisgICAg
aWYgKG1fcGVuZGluZ1Byb21pc2VzLnNpemUoKSkKICAgICAgICAgUnVuTG9vcDo6cnVuKCk7Ci0j
ZW5kaWYKLSAgICB9CiB9CiAKIHZvaWQgUHJvbWlzZVRpbWVyOjphZGRQZW5kaW5nUHJvbWlzZShW
TSYgdm0sIEpTUHJvbWlzZSogdGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+JiYgZGVwZW5k
ZW5jaWVzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24g
MjY0MDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjIsMTIgKzI2MiwxMCBAQCBpbmxpbmUgdW5zaWduZWQgVk06Om5leHRJRCgp
CiAKIHN0YXRpYyBib29sIHZtQ3JlYXRpb25TaG91bGRDcmFzaCA9IGZhbHNlOwogCi1WTTo6Vk0o
Vk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCitWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCkKICAgICA6IG1faWQobmV4
dElEKCkpCiAgICAgLCBtX2FwaUxvY2soYWRvcHRSZWYobmV3IEpTTG9jayh0aGlzKSkpCi0jaWYg
VVNFKENGKQotICAgICwgbV9ydW5Mb29wKENGUnVuTG9vcEdldEN1cnJlbnQoKSkKLSNlbmRpZiAv
LyBVU0UoQ0YpCisgICAgLCBtX3J1bkxvb3AocnVuTG9vcCA/IHJ1bkxvb3AgOiAmV1RGOjpSdW5M
b29wOjpjdXJyZW50KCkpCiAgICAgLCBtX3JhbmRvbShPcHRpb25zOjpzZWVkT2ZWTVJhbmRvbUZv
ckZ1enplcigpID8gT3B0aW9uczo6c2VlZE9mVk1SYW5kb21Gb3JGdXp6ZXIoKSA6IGNyeXB0b2dy
YXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpCiAgICAgLCBtX2ludGVncml0eVJhbmRvbSgqdGhpcykK
ICAgICAsIGhlYXAoKnRoaXMsIGhlYXBUeXBlKQpAQCAtNjcxLDkgKzY2OSw5IEBAIFJlZjxWTT4g
Vk06OmNyZWF0ZUNvbnRleHRHcm91cChIZWFwVHlwZSAKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBWTShBUElDb250ZXh0R3JvdXAsIGhlYXBUeXBlKSk7CiB9CiAKLVJlZjxWTT4gVk06OmNyZWF0
ZShIZWFwVHlwZSBoZWFwVHlwZSkKK1JlZjxWTT4gVk06OmNyZWF0ZShIZWFwVHlwZSBoZWFwVHlw
ZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZN
KERlZmF1bHQsIGhlYXBUeXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVk0oRGVmYXVs
dCwgaGVhcFR5cGUsIHJ1bkxvb3ApKTsKIH0KIAogYm9vbCBWTTo6c2hhcmVkSW5zdGFuY2VFeGlz
dHMoKQpAQCAtMTM1NSwxNSArMTM1Myw2IEBAIHZvaWQgVk06OnZlcmlmeUV4Y2VwdGlvbkNoZWNr
TmVlZElzU2F0aXMKIH0KICNlbmRpZgogCi0jaWYgVVNFKENGKQotdm9pZCBWTTo6c2V0UnVuTG9v
cChDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKLXsKLSAgICBBU1NFUlQocnVuTG9vcCk7Ci0gICAgbV9y
dW5Mb29wID0gcnVuTG9vcDsKLSAgICBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6c2hhcmVkKCku
ZGlkQ2hhbmdlUnVuTG9vcCgqdGhpcywgcnVuTG9vcCk7Ci19Ci0jZW5kaWYgLy8gVVNFKENGKQot
CiBTY3JhdGNoQnVmZmVyKiBWTTo6c2NyYXRjaEJ1ZmZlckZvclNpemUoc2l6ZV90IHNpemUpCiB7
CiAgICAgaWYgKCFzaXplKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZp
c2lvbiAyNjQwMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NCw2ICs5NCw3IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7Citj
bGFzcyBSdW5Mb29wOwogY2xhc3MgU2ltcGxlU3RhdHM7CiB9IC8vIG5hbWVzcGFjZSBXVEYKIHVz
aW5nIFdURjo6U2ltcGxlU3RhdHM7CkBAIC0zMTIsNyArMzEzLDcgQEAgcHVibGljOgogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHNoYXJlZEluc3RhbmNlRXhpc3RzKCk7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFZNJiBzaGFyZWRJbnN0YW5jZSgpOwogCi0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxWTT4gY3JlYXRlKEhlYXBUeXBlID0gU21hbGxIZWFw
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFZNPiBjcmVhdGUoSGVhcFR5cGUg
PSBTbWFsbEhlYXAsIFdURjo6UnVuTG9vcCogPSBudWxscHRyKTsKICAgICBzdGF0aWMgUmVmPFZN
PiBjcmVhdGVDb250ZXh0R3JvdXAoSGVhcFR5cGUgPSBTbWFsbEhlYXApOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIH5WTSgpOwogCkBAIC0zNTMsMTAgKzM1NCw3IEBAIHByaXZhdGU6CiAKICAgICB1
bnNpZ25lZCBtX2lkOwogICAgIFJlZlB0cjxKU0xvY2s+IG1fYXBpTG9jazsKLSNpZiBVU0UoQ0Yp
Ci0gICAgLy8gVGhlc2UgbmVlZCB0byBiZSBpbml0aWFsaXplZCBiZWZvcmUgaGVhcCBiZWxvdy4K
LSAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7Ci0jZW5kaWYKKyAgICBSZWZQ
dHI8V1RGOjpSdW5Mb29wPiBtX3J1bkxvb3A7CiAKICAgICBXZWFrUmFuZG9tIG1fcmFuZG9tOwog
ICAgIEludGVncml0eTo6UmFuZG9tIG1faW50ZWdyaXR5UmFuZG9tOwpAQCAtMTA3OSwxMCArMTA3
Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRFeGNlcHRpb25DaGVjaygpIGNvbnN0IHsgcmV0
dXJuIG1fbmVlZEV4Y2VwdGlvbkNoZWNrOyB9CiAjZW5kaWYKIAotI2lmIFVTRShDRikKLSAgICBD
RlJ1bkxvb3BSZWYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVuTG9vcC5nZXQoKTsgfQot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UnVuTG9vcChDRlJ1bkxvb3BSZWYpOwotI2Vu
ZGlmIC8vIFVTRShDRikKKyAgICBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVy
biBtX3J1bkxvb3AuZ2V0KCk7IH0KIAogICAgIHN0YXRpYyB2b2lkIHNldENyYXNoT25WTUNyZWF0
aW9uKGJvb2wpOwogCkBAIC0xMTAyLDcgKzEwOTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICBWTShWTVR5cGUsIEhl
YXBUeXBlKTsKKyAgICBWTShWTVR5cGUsIEhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqID0gbnVsbHB0
cik7CiAgICAgc3RhdGljIFZNKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOwogICAgIHZvaWQg
Y3JlYXRlTmF0aXZlVGh1bmsoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MDMyKQor
KysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjAtMDctMDggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAg
ICAgICBKU1J1bkxvb3BUaW1lciBzaG91bGQgdXNlIFdURjo6UnVuTG9vcCByYXRoZXIgdGhhbiBj
dXN0b20gQ0YgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE0MTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9Db21tb25WTS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21t
b25WTVNsb3cpOiBTdXBwbHkgYSBSdW5Mb29wIGF0IGNvbnN0cnVjdGlvbiB0aW1lIHNpbmNlCisg
ICAgICAgIEpTQyByZXF1aXJlcyB0aGF0IG5vdy4KKwogMjAyMC0wNy0wNyAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBVbmFibGUgdG8gc2Nyb2xsIGVs
Y29tZXJpY28ucGUgcGFnZSB1bnRpbCB0aGUgcGFnZSBmaW5pc2hlcyBsb2FkaW5nCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCShyZXZpc2lvbiAyNjQwMzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU1LDcgKzU1LDEzIEBAIEpTQzo6Vk0mIGNvbW1vblZNU2xvdygpCiAgICAgLy8gQWxzbywg
aW5pdGlhbGl6ZU1haW5UaHJlYWQoKSBkb2VzIG5vdGhpbmcgb24gaU9TLgogICAgIFNjcmlwdENv
bnRyb2xsZXI6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKLSAgICBhdXRvJiB2bSA9IEpTQzo6
Vk06OmNyZWF0ZShKU0M6OkxhcmdlSGVhcCkubGVha1JlZigpOworI2lmIFVTRShXRUJfVEhSRUFE
KQorICAgIFJ1bkxvb3AqIHJ1bkxvb3AgPSAmUnVuTG9vcDo6d2ViKCk7CisjZWxzZQorICAgIFJ1
bkxvb3AqIHJ1bkxvb3AgPSAmUnVuTG9vcDo6Y3VycmVudCgpOworI2VuZGlmCisKKyAgICBhdXRv
JiB2bSA9IEpTQzo6Vk06OmNyZWF0ZShKU0M6OkxhcmdlSGVhcCwgcnVuTG9vcCkubGVha1JlZigp
OwogCiAgICAgZ19jb21tb25WTU9yTnVsbCA9ICZ2bTsKIApAQCAtNjQsNyArNzAsNiBAQCBKU0M6
OlZNJiBjb21tb25WTVNsb3coKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKFdl
YlRocmVhZElzRW5hYmxlZCgpKQogICAgICAgICB2bS5hcGlMb2NrKCkubWFrZVdlYlRocmVhZEF3
YXJlKCk7Ci0gICAgdm0uc2V0UnVuTG9vcChXZWJUaHJlYWRSdW5Mb29wKCkpOwogICAgIHZtLmhl
YXAubWFjaGluZVRocmVhZHMoKS5hZGRDdXJyZW50VGhyZWFkKCk7CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403879</attachid>
            <date>2020-07-09 09:53:04 -0700</date>
            <delta_ts>2020-07-10 14:01:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214102-20200709095303.patch</filename>
            <type>text/plain</type>
            <size>15287</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MTM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDIwLTA3LTA4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgSlNSdW5Mb29wVGltZXIgc2hvdWxkIHVzZSBXVEY6OlJ1bkxvb3AgcmF0aGVyIHRoYW4gY3Vz
dG9tIENGIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDEwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBnZW5lcmljIFJ1bkxvb3AgY29kZXBhdGggd2FzIGFscmVhZHkgbW9zdGx5IHJpZ2h0
LiBKdXN0IG5lZWRlZCB0bworICAgICAgICBjbGFyaWZ5IHRoZSBBUEkgdG8gZGVtb25zdHJhdGUg
dGhhdCBWTXMgZG8gbm90IGhvcCBmcm9tIG9uZSBSdW5Mb29wCisgICAgICAgIHRvIGFub3RoZXIu
CisKKyAgICAgICAgKiBydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6
ZXBvY2hUaW1lKTogUmVtb3ZlZCB0aGUgQ0YgcGF0aC4KKworICAgICAgICAoSlNDOjpKU1J1bkxv
b3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEpOiBJbmNsdWRlIGEgUnVuTG9v
cAorICAgICAgICBhcyBhIGNvbnN0cnVjdG9yIGFyZ3VtZW50IHNvIHRoYXQgdGhlIHdlYiB0aHJl
YWQgY2FuIG92ZXJyaWRlIGl0LgorCisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjp0aW1lckRpZEZpcmVDYWxsYmFjayk6IFJlbW92ZWQgdGhlIENGIHBhdGguCisKKyAgICAg
ICAgKEpTQzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6flBlclZNRGF0YSk6
IE5vIG5lZWQgdG8KKyAgICAgICAgZXhwbGljaXRseSBjbGVhciBvdXIgUnVuTG9vcCAtLSB0aGUg
UnVuTG9vcDo6VGltZXIgZGVzdHJ1Y3RvciB3aWxsIGRvCisgICAgICAgIHRoZSBqb2IuCisKKyAg
ICAgICAgKEpTQzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmlyZSk6CisgICAg
ICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAg
KEpTQzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnNjaGVkdWxlVGltZXIpOgorICAgICAgICAo
SlNDOjpKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6Y2FuY2VsVGltZXIpOiBSZW1vdmVkIHRoZSBD
RiBwYXRoLgorCisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURh
dGE6OnNldFJ1bkxvb3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6
TWFuYWdlcjo6ZGlkQ2hhbmdlUnVuTG9vcCk6IERlbGV0ZWQuIENoYW5naW5nCisgICAgICAgIFJ1
bkxvb3BzIGlzIG5vdCBhY3R1YWxseSBhIGZlYXR1cmUgd2UgdXNlLgorCisgICAgICAgICogcnVu
dGltZS9KU1J1bkxvb3BUaW1lci5oOgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6TWFu
YWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
UHJvbWlzZVRpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvbWlzZVRpbWVyOjpkb1dvcmspOgor
ICAgICAgICAoSlNDOjpQcm9taXNlVGltZXI6OnJ1blJ1bkxvb3ApOiBSZW1vdmVkIHRoZSBDRiBw
YXRoLgorCisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6
CisgICAgICAgIChKU0M6OlZNOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpWTTo6c2V0UnVuTG9v
cCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6
cnVuTG9vcCBjb25zdCk6IFJlcXVpcmUgYSBSdW5Mb29wIGluIHRoZSBWTSBjb25zdHJ1Y3RvciBp
bgorICAgICAgICBvcmRlciB0byBjbGFyaWZ5IHRoYXQgd2UgYWx3YXlzIGtub3cgb3VyIFJ1bkxv
b3AgYW5kIG5ldmVyIGNoYW5nZSBpdC4KKwogMjAyMC0wNy0wOCAgU2FhbSBCYXJhdGkgIDxzYmFy
YXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBmdXp6aW5nIHRvZ2dsZSBmb3IgTElDTQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVy
LmNwcAkocmV2aXNpb24gMjY0MDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNSdW5Mb29wVGltZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw0NSArNDAsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBpbmxpbmUgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OkVw
b2NoVGltZSBlcG9jaFRpbWUoU2Vjb25kcyBkZWxheSkKIHsKLSNpZiBVU0UoQ0YpCi0gICAgcmV0
dXJuIFNlY29uZHMgeyBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIGRlbGF5LnZhbHVlKCkg
fTsKLSNlbHNlCiAgICAgcmV0dXJuIE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVw
b2NoKCkgKyBkZWxheTsKLSNlbmRpZgotfQotCi0jaWYgVVNFKENGKQotdm9pZCBKU1J1bkxvb3BU
aW1lcjo6TWFuYWdlcjo6dGltZXJEaWRGaXJlQ2FsbGJhY2soQ0ZSdW5Mb29wVGltZXJSZWYsIHZv
aWQqIGNvbnRleHRQdHIpCi17Ci0gICAgc3RhdGljX2Nhc3Q8SlNSdW5Mb29wVGltZXI6Ok1hbmFn
ZXIqPihjb250ZXh0UHRyKS0+dGltZXJEaWRGaXJlKCk7CiB9CiAKLXZvaWQgSlNSdW5Mb29wVGlt
ZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6c2V0UnVuTG9vcChNYW5hZ2VyKiBtYW5hZ2VyLCBDRlJ1
bkxvb3BSZWYgbmV3UnVuTG9vcCkKLXsKLSAgICBpZiAocnVuTG9vcCkgewotICAgICAgICBDRlJ1
bkxvb3BSZW1vdmVUaW1lcihydW5Mb29wLmdldCgpLCB0aW1lci5nZXQoKSwga0NGUnVuTG9vcENv
bW1vbk1vZGVzKTsKLSAgICAgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHRpbWVyLmdldCgp
KTsKLSAgICAgICAgcnVuTG9vcC5jbGVhcigpOwotICAgICAgICB0aW1lci5jbGVhcigpOwotICAg
IH0KLQotICAgIGlmIChuZXdSdW5Mb29wKSB7Ci0gICAgICAgIHJ1bkxvb3AgPSBuZXdSdW5Mb29w
OwotICAgICAgICBtZW1zZXQoJmNvbnRleHQsIDAsIHNpemVvZihDRlJ1bkxvb3BUaW1lckNvbnRl
eHQpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobWFuYWdlcik7Ci0gICAgICAgIGNvbnRleHQu
aW5mbyA9IG1hbmFnZXI7Ci0gICAgICAgIHRpbWVyID0gYWRvcHRDRihDRlJ1bkxvb3BUaW1lckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIHNf
ZGVjYWRlLnNlY29uZHMoKSwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBzX2RlY2FkZS5z
ZWNvbmRzKCksIDAsIDAsIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpcmVDYWxs
YmFjaywgJmNvbnRleHQpKTsKLSAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIocnVuTG9vcC5nZXQo
KSwgdGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0KLSAgICAgICAgRXBvY2hU
aW1lIHNjaGVkdWxlVGltZSA9IGVwb2NoVGltZShzX2RlY2FkZSk7Ci0gICAgICAgIGZvciAoYXV0
byYgcGFpciA6IHRpbWVycykKLSAgICAgICAgICAgIHNjaGVkdWxlVGltZSA9IHN0ZDo6bWluKHBh
aXIuc2Vjb25kLCBzY2hlZHVsZVRpbWUpOwotICAgICAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRG
aXJlRGF0ZSh0aW1lci5nZXQoKSwgc2NoZWR1bGVUaW1lLnZhbHVlKCkpOwotICAgIH0KLX0KLSNl
bHNlCi1KU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEoTWFuYWdl
ciYgbWFuYWdlcikKLSAgICA6IHJ1bkxvb3AoJlJ1bkxvb3A6OmN1cnJlbnQoKSkKK0pTUnVuTG9v
cFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YShNYW5hZ2VyJiBtYW5hZ2VyLCBS
ZWZQdHI8UnVuTG9vcD4gcnVuTG9vcFBhcmFtZXRlcikKKyAgICA6IHJ1bkxvb3AoV1RGTW92ZShy
dW5Mb29wUGFyYW1ldGVyKSkKICAgICAsIHRpbWVyKG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8
TWFuYWdlcj4+KCpydW5Mb29wLCAmbWFuYWdlciwgJkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0
aW1lckRpZEZpcmVDYWxsYmFjaykpCiB7CiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKQEAgLTkx
LDEzICs1Nyw5IEBAIHZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmkKIHsK
ICAgICB0aW1lckRpZEZpcmUoKTsKIH0KLSNlbmRpZgogCiBKU1J1bkxvb3BUaW1lcjo6TWFuYWdl
cjo6UGVyVk1EYXRhOjp+UGVyVk1EYXRhKCkKIHsKLSNpZiBVU0UoQ0YpCi0gICAgc2V0UnVuTG9v
cChudWxscHRyLCBudWxscHRyKTsKLSNlbmRpZgogfQogCiB2b2lkIEpTUnVuTG9vcFRpbWVyOjpN
YW5hZ2VyOjp0aW1lckRpZEZpcmUoKQpAQCAtMTA2LDIxICs2OCwxMiBAQCB2b2lkIEpTUnVuTG9v
cFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpCiAKICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9sb2NrKTsKLSNpZiBVU0UoQ0YpCi0gICAgICAgIENGUnVuTG9vcFJlZiBj
dXJyZW50UnVuTG9vcCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKLSNlbHNlCiAgICAgICAgIFJ1
bkxvb3AqIGN1cnJlbnRSdW5Mb29wID0gJlJ1bkxvb3A6OmN1cnJlbnQoKTsKLSNlbmRpZgogICAg
ICAgICBFcG9jaFRpbWUgbm93RXBvY2hUaW1lID0gZXBvY2hUaW1lKDBfcyk7CiAgICAgICAgIGZv
ciAoYXV0byYgZW50cnkgOiBtX21hcHBpbmcpIHsKICAgICAgICAgICAgIFBlclZNRGF0YSYgZGF0
YSA9ICplbnRyeS52YWx1ZTsKLSNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBpZiAoZGF0YS5ydW5M
b29wLmdldCgpICE9IGN1cnJlbnRSdW5Mb29wKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
I2Vsc2UKICAgICAgICAgICAgIGlmIChkYXRhLnJ1bkxvb3AgIT0gY3VycmVudFJ1bkxvb3ApCiAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0jZW5kaWYKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgRXBvY2hUaW1lIHNjaGVkdWxlVGltZSA9IGVwb2NoVGltZShzX2RlY2FkZSk7CiAgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGEudGltZXJzLnNpemUoKTsgKytpKSB7CkBA
IC0xNDAsMTEgKzkzLDcgQEAgdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRG
aQogICAgICAgICAgICAgICAgIHRpbWVyc1RvRmlyZS5hcHBlbmQoV1RGTW92ZShwYWlyLmZpcnN0
KSk7CiAgICAgICAgICAgICB9CiAKLSNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBDRlJ1bkxvb3BU
aW1lclNldE5leHRGaXJlRGF0ZShkYXRhLnRpbWVyLmdldCgpLCBzY2hlZHVsZVRpbWUudmFsdWUo
KSk7Ci0jZWxzZQogICAgICAgICAgICAgZGF0YS50aW1lci0+c3RhcnRPbmVTaG90KHN0ZDo6bWF4
KDBfcywgc2NoZWR1bGVUaW1lIC0gTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBv
Y2goKSkpOwotI2VuZGlmCiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE2NCwxMCArMTEzLDcgQEAg
SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXImIEpTUnVuTG9vcFRpbWVyOgogCiB2b2lkIEpTUnVuTG9v
cFRpbWVyOjpNYW5hZ2VyOjpyZWdpc3RlclZNKFZNJiB2bSkKIHsKLSAgICBhdXRvIGRhdGEgPSBt
YWtlVW5pcXVlPFBlclZNRGF0YT4oKnRoaXMpOwotI2lmIFVTRShDRikKLSAgICBkYXRhLT5zZXRS
dW5Mb29wKHRoaXMsIHZtLnJ1bkxvb3AoKSk7Ci0jZW5kaWYKKyAgICBhdXRvIGRhdGEgPSBtYWtl
VW5pcXVlPFBlclZNRGF0YT4oKnRoaXMsIHZtLnJ1bkxvb3AoKSk7CiAKICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX21hcHBpbmcuYWRk
KHsgdm0uYXBpTG9jaygpIH0sIFdURk1vdmUoZGF0YSkpOwpAQCAtMjA1LDExICsxNTEsNyBAQCB2
b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpzY2hlZHVsZVRpCiAgICAgaWYgKCFmb3VuZCkK
ICAgICAgICAgZGF0YS50aW1lcnMuYXBwZW5kKHsgdGltZXIsIGZpcmVFcG9jaFRpbWUgfSk7CiAK
LSNpZiBVU0UoQ0YpCi0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoZGF0YS50aW1l
ci5nZXQoKSwgc2NoZWR1bGVUaW1lLnZhbHVlKCkpOwotI2Vsc2UKICAgICBkYXRhLnRpbWVyLT5z
dGFydE9uZVNob3Qoc3RkOjptYXgoMF9zLCBzY2hlZHVsZVRpbWUgLSBNb25vdG9uaWNUaW1lOjpu
b3coKS5zZWNvbmRzU2luY2VFcG9jaCgpKSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBKU1J1bkxvb3BU
aW1lcjo6TWFuYWdlcjo6Y2FuY2VsVGltZXIoSlNSdW5Mb29wVGltZXImIHRpbWVyKQpAQCAtMjQw
LDExICsxODIsNyBAQCB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpjYW5jZWxUaW1lCiAg
ICAgICAgIHNjaGVkdWxlVGltZSA9IHN0ZDo6bWluKHNjaGVkdWxlVGltZSwgZGF0YS50aW1lcnNb
aV0uc2Vjb25kKTsKICAgICB9CiAKLSNpZiBVU0UoQ0YpCi0gICAgQ0ZSdW5Mb29wVGltZXJTZXRO
ZXh0RmlyZURhdGUoZGF0YS50aW1lci5nZXQoKSwgc2NoZWR1bGVUaW1lLnZhbHVlKCkpOwotI2Vs
c2UKICAgICBkYXRhLnRpbWVyLT5zdGFydE9uZVNob3Qoc3RkOjptYXgoMF9zLCBzY2hlZHVsZVRp
bWUgLSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpKSk7Ci0jZW5kaWYK
IH0KIAogT3B0aW9uYWw8U2Vjb25kcz4gSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVVbnRp
bEZpcmUoSlNSdW5Mb29wVGltZXImIHRpbWVyKQpAQCAtMjY0LDE4ICsyMDIsNiBAQCBPcHRpb25h
bDxTZWNvbmRzPiBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlCiAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKIH0KIAotI2lmIFVTRShDRikKLXZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OmRpZENo
YW5nZVJ1bkxvb3AoVk0mIHZtLCBDRlJ1bkxvb3BSZWYgbmV3UnVuTG9vcCkKLXsKLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7Ci0gICAgYXV0byBpdGVyID0gbV9tYXBwaW5nLmZp
bmQoeyB2bS5hcGlMb2NrKCkgfSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoaXRlciAhPSBtX21hcHBp
bmcuZW5kKCkpOwotCi0gICAgUGVyVk1EYXRhJiBkYXRhID0gKml0ZXItPnZhbHVlOwotICAgIGRh
dGEuc2V0UnVuTG9vcCh0aGlzLCBuZXdSdW5Mb29wKTsKLX0KLSNlbmRpZgotCiB2b2lkIEpTUnVu
TG9vcFRpbWVyOjp0aW1lckRpZEZpcmUoKQogewogICAgIE5PX1RBSUxfQ0FMTFMoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuaAkocmV2
aXNpb24gMjY0MDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29w
VGltZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDYgQEAKICNpbmNsdWRlIDx3dGYv
U2hhcmVkVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCi0j
aWYgVVNFKENGKQotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+Ci0j
ZW5kaWYKLQogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTTG9jazsKQEAgLTUwLDExICs0Niw4
IEBAIHB1YmxpYzoKICAgICBjbGFzcyBNYW5hZ2VyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1hbmFnZXIpOwotI2lmIFVT
RShDRikKLSAgICAgICAgc3RhdGljIHZvaWQgdGltZXJEaWRGaXJlQ2FsbGJhY2soQ0ZSdW5Mb29w
VGltZXJSZWYsIHZvaWQqKTsKLSNlbHNlCiAgICAgICAgIHZvaWQgdGltZXJEaWRGaXJlQ2FsbGJh
Y2soKTsKLSNlbmRpZgorCiAgICAgICAgIE1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKICAgICAgICAg
dm9pZCB0aW1lckRpZEZpcmUoKTsKQEAgLTcwLDEwICs2Myw2IEBAIHB1YmxpYzoKIAogICAgICAg
ICBPcHRpb25hbDxTZWNvbmRzPiB0aW1lVW50aWxGaXJlKEpTUnVuTG9vcFRpbWVyJik7CiAKLSNp
ZiBVU0UoQ0YpCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlUnVuTG9vcChWTSYsIENGUnVuTG9vcFJl
ZiBuZXdSdW5Mb29wKTsKLSNlbmRpZgotCiAgICAgcHJpdmF0ZToKICAgICAgICAgTG9jayBtX2xv
Y2s7CiAKQEAgLTgxLDIyICs3MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlclZNRGF0
YSk7CiAgICAgICAgIHB1YmxpYzoKLSNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBQZXJWTURhdGEo
TWFuYWdlciYpIHsgfQotI2Vsc2UKLSAgICAgICAgICAgIFBlclZNRGF0YShNYW5hZ2VyJik7Ci0j
ZW5kaWYKKyAgICAgICAgICAgIFBlclZNRGF0YShNYW5hZ2VyJiwgUmVmUHRyPFdURjo6UnVuTG9v
cD4pOwogICAgICAgICAgICAgflBlclZNRGF0YSgpOwogCi0jaWYgVVNFKENGKQotICAgICAgICAg
ICAgdm9pZCBzZXRSdW5Mb29wKE1hbmFnZXIqLCBDRlJ1bkxvb3BSZWYpOwotICAgICAgICAgICAg
UmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiB0aW1lcjsKLSAgICAgICAgICAgIFJldGFpblB0
cjxDRlJ1bkxvb3BSZWY+IHJ1bkxvb3A7Ci0gICAgICAgICAgICBDRlJ1bkxvb3BUaW1lckNvbnRl
eHQgY29udGV4dDsKLSNlbHNlCi0gICAgICAgICAgICBSdW5Mb29wKiBydW5Mb29wOworICAgICAg
ICAgICAgUmVmUHRyPFdURjo6UnVuTG9vcD4gcnVuTG9vcDsKICAgICAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxSdW5Mb29wOjpUaW1lcjxNYW5hZ2VyPj4gdGltZXI7Ci0jZW5kaWYKICAgICAgICAg
ICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEpTUnVuTG9vcFRpbWVyPiwgRXBvY2hUaW1lPj4gdGlt
ZXJzOwogICAgICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9taXNlVGltZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb21pc2VUaW1lci5jcHAJKHJldmlzaW9uIDI2NDAzMikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb21pc2VUaW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDEz
ICs3MCw4IEBAIHZvaWQgUHJvbWlzZVRpbWVyOjpkb1dvcmsoVk0mIHZtKQogICAgICAgICB9CiAg
ICAgfQogCi0gICAgaWYgKG1fcGVuZGluZ1Byb21pc2VzLmlzRW1wdHkoKSAmJiBtX3Nob3VsZFN0
b3BSdW5Mb29wV2hlbkFsbFByb21pc2VzRmluaXNoKSB7Ci0jaWYgVVNFKENGKQotICAgICAgICBD
RlJ1bkxvb3BTdG9wKHZtLnJ1bkxvb3AoKSk7Ci0jZWxzZQorICAgIGlmIChtX3BlbmRpbmdQcm9t
aXNlcy5pc0VtcHR5KCkgJiYgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxQcm9taXNlc0Zpbmlz
aCkKICAgICAgICAgUnVuTG9vcDo6Y3VycmVudCgpLnN0b3AoKTsKLSNlbmRpZgotICAgIH0KIAog
ICAgIG1fdGFza0xvY2sudW5sb2NrKCk7CiB9CkBAIC04NCwxNyArNzksMTAgQEAgdm9pZCBQcm9t
aXNlVGltZXI6OmRvV29yayhWTSYgdm0pCiB2b2lkIFByb21pc2VUaW1lcjo6cnVuUnVuTG9vcCgp
CiB7CiAgICAgQVNTRVJUKCFtX2FwaUxvY2stPnZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdB
UElMb2NrKCkpOwotI2lmIFVTRShDRikKLSAgICBBU1NFUlQoQ0ZSdW5Mb29wR2V0Q3VycmVudCgp
ID09IG1fYXBpTG9jay0+dm0oKS0+cnVuTG9vcCgpKTsKLSNlbmRpZgorICAgIEFTU0VSVCgmUnVu
TG9vcDo6Y3VycmVudCgpID09IG1fYXBpTG9jay0+dm0oKS0+cnVuTG9vcCgpKTsKICAgICBtX3No
b3VsZFN0b3BSdW5Mb29wV2hlbkFsbFByb21pc2VzRmluaXNoID0gdHJ1ZTsKLSAgICBpZiAobV9w
ZW5kaW5nUHJvbWlzZXMuc2l6ZSgpKSB7Ci0jaWYgVVNFKENGKQotICAgICAgICBDRlJ1bkxvb3BS
dW4oKTsKLSNlbHNlCisgICAgaWYgKG1fcGVuZGluZ1Byb21pc2VzLnNpemUoKSkKICAgICAgICAg
UnVuTG9vcDo6cnVuKCk7Ci0jZW5kaWYKLSAgICB9CiB9CiAKIHZvaWQgUHJvbWlzZVRpbWVyOjph
ZGRQZW5kaW5nUHJvbWlzZShWTSYgdm0sIEpTUHJvbWlzZSogdGlja2V0LCBWZWN0b3I8U3Ryb25n
PEpTQ2VsbD4+JiYgZGVwZW5kZW5jaWVzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAkocmV2aXNpb24gMjY0MDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIsMTIgKzI2MiwxMCBAQCBpbmxpbmUgdW5z
aWduZWQgVk06Om5leHRJRCgpCiAKIHN0YXRpYyBib29sIHZtQ3JlYXRpb25TaG91bGRDcmFzaCA9
IGZhbHNlOwogCi1WTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCitWTTo6
Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9v
cCkKICAgICA6IG1faWQobmV4dElEKCkpCiAgICAgLCBtX2FwaUxvY2soYWRvcHRSZWYobmV3IEpT
TG9jayh0aGlzKSkpCi0jaWYgVVNFKENGKQotICAgICwgbV9ydW5Mb29wKENGUnVuTG9vcEdldEN1
cnJlbnQoKSkKLSNlbmRpZiAvLyBVU0UoQ0YpCisgICAgLCBtX3J1bkxvb3AocnVuTG9vcCA/IHJ1
bkxvb3AgOiAmV1RGOjpSdW5Mb29wOjpjdXJyZW50KCkpCiAgICAgLCBtX3JhbmRvbShPcHRpb25z
OjpzZWVkT2ZWTVJhbmRvbUZvckZ1enplcigpID8gT3B0aW9uczo6c2VlZE9mVk1SYW5kb21Gb3JG
dXp6ZXIoKSA6IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpCiAgICAgLCBtX2ludGVn
cml0eVJhbmRvbSgqdGhpcykKICAgICAsIGhlYXAoKnRoaXMsIGhlYXBUeXBlKQpAQCAtNjcxLDkg
KzY2OSw5IEBAIFJlZjxWTT4gVk06OmNyZWF0ZUNvbnRleHRHcm91cChIZWFwVHlwZSAKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBWTShBUElDb250ZXh0R3JvdXAsIGhlYXBUeXBlKSk7CiB9CiAK
LVJlZjxWTT4gVk06OmNyZWF0ZShIZWFwVHlwZSBoZWFwVHlwZSkKK1JlZjxWTT4gVk06OmNyZWF0
ZShIZWFwVHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFZNKERlZmF1bHQsIGhlYXBUeXBlKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVk0oRGVmYXVsdCwgaGVhcFR5cGUsIHJ1bkxvb3ApKTsKIH0KIAogYm9vbCBWTTo6
c2hhcmVkSW5zdGFuY2VFeGlzdHMoKQpAQCAtMTM1NSwxNSArMTM1Myw2IEBAIHZvaWQgVk06OnZl
cmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXMKIH0KICNlbmRpZgogCi0jaWYgVVNFKENGKQot
dm9pZCBWTTo6c2V0UnVuTG9vcChDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKLXsKLSAgICBBU1NFUlQo
cnVuTG9vcCk7Ci0gICAgbV9ydW5Mb29wID0gcnVuTG9vcDsKLSAgICBKU1J1bkxvb3BUaW1lcjo6
TWFuYWdlcjo6c2hhcmVkKCkuZGlkQ2hhbmdlUnVuTG9vcCgqdGhpcywgcnVuTG9vcCk7Ci19Ci0j
ZW5kaWYgLy8gVVNFKENGKQotCiBTY3JhdGNoQnVmZmVyKiBWTTo6c2NyYXRjaEJ1ZmZlckZvclNp
emUoc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKCFzaXplKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCShyZXZpc2lvbiAyNjQwMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCw3IEBACiAjZW5kaWYKIAog
bmFtZXNwYWNlIFdURiB7CitjbGFzcyBSdW5Mb29wOwogY2xhc3MgU2ltcGxlU3RhdHM7CiB9IC8v
IG5hbWVzcGFjZSBXVEYKIHVzaW5nIFdURjo6U2ltcGxlU3RhdHM7CkBAIC0zMTIsNyArMzEzLDcg
QEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHNoYXJlZEluc3Rh
bmNlRXhpc3RzKCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFZNJiBzaGFyZWRJbnN0
YW5jZSgpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxWTT4gY3JlYXRlKEhl
YXBUeXBlID0gU21hbGxIZWFwKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFZN
PiBjcmVhdGUoSGVhcFR5cGUgPSBTbWFsbEhlYXAsIFdURjo6UnVuTG9vcCogPSBudWxscHRyKTsK
ICAgICBzdGF0aWMgUmVmPFZNPiBjcmVhdGVDb250ZXh0R3JvdXAoSGVhcFR5cGUgPSBTbWFsbEhl
YXApOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5WTSgpOwogCkBAIC0zNTMsMTAgKzM1NCw3IEBA
IHByaXZhdGU6CiAKICAgICB1bnNpZ25lZCBtX2lkOwogICAgIFJlZlB0cjxKU0xvY2s+IG1fYXBp
TG9jazsKLSNpZiBVU0UoQ0YpCi0gICAgLy8gVGhlc2UgbmVlZCB0byBiZSBpbml0aWFsaXplZCBi
ZWZvcmUgaGVhcCBiZWxvdy4KLSAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7
Ci0jZW5kaWYKKyAgICBSZWZQdHI8V1RGOjpSdW5Mb29wPiBtX3J1bkxvb3A7CiAKICAgICBXZWFr
UmFuZG9tIG1fcmFuZG9tOwogICAgIEludGVncml0eTo6UmFuZG9tIG1faW50ZWdyaXR5UmFuZG9t
OwpAQCAtMTA3OSwxMCArMTA3Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRFeGNlcHRpb25D
aGVjaygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZEV4Y2VwdGlvbkNoZWNrOyB9CiAjZW5kaWYKIAot
I2lmIFVTRShDRikKLSAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1f
cnVuTG9vcC5nZXQoKTsgfQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UnVuTG9vcChD
RlJ1bkxvb3BSZWYpOwotI2VuZGlmIC8vIFVTRShDRikKKyAgICBXVEY6OlJ1bkxvb3AqIHJ1bkxv
b3AoKSBjb25zdCB7IHJldHVybiBtX3J1bkxvb3AuZ2V0KCk7IH0KIAogICAgIHN0YXRpYyB2b2lk
IHNldENyYXNoT25WTUNyZWF0aW9uKGJvb2wpOwogCkBAIC0xMTAyLDcgKzEwOTcsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAK
LSAgICBWTShWTVR5cGUsIEhlYXBUeXBlKTsKKyAgICBWTShWTVR5cGUsIEhlYXBUeXBlLCBXVEY6
OlJ1bkxvb3AqID0gbnVsbHB0cik7CiAgICAgc3RhdGljIFZNKiYgc2hhcmVkSW5zdGFuY2VJbnRl
cm5hbCgpOwogICAgIHZvaWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gMjY0MDMyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDctMDggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVu
QGFwcGxlLmNvbT4KKworICAgICAgICBKU1J1bkxvb3BUaW1lciBzaG91bGQgdXNlIFdURjo6UnVu
TG9vcCByYXRoZXIgdGhhbiBjdXN0b20gQ0YgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Db21tb25WTS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb21tb25WTVNsb3cpOiBTdXBwbHkgYSBSdW5Mb29wIGF0IGNvbnN0cnVj
dGlvbiB0aW1lIHNpbmNlCisgICAgICAgIEpTQyByZXF1aXJlcyB0aGF0IG5vdy4KKwogMjAyMC0w
Ny0wNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bmFibGUgdG8gc2Nyb2xsIGVsY29tZXJpY28ucGUgcGFnZSB1bnRpbCB0aGUgcGFnZSBmaW5pc2hl
cyBsb2FkaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCShy
ZXZpc2lvbiAyNjQwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDEzIEBAIEpTQzo6Vk0mIGNvbW1vblZNU2xv
dygpCiAgICAgLy8gQWxzbywgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKSBkb2VzIG5vdGhpbmcgb24g
aU9TLgogICAgIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKLSAg
ICBhdXRvJiB2bSA9IEpTQzo6Vk06OmNyZWF0ZShKU0M6OkxhcmdlSGVhcCkubGVha1JlZigpOwor
I2lmIFVTRShXRUJfVEhSRUFEKQorICAgIFJ1bkxvb3AqIHJ1bkxvb3AgPSAmUnVuTG9vcDo6d2Vi
KCk7CisjZWxzZQorICAgIFJ1bkxvb3AqIHJ1bkxvb3AgPSAmUnVuTG9vcDo6Y3VycmVudCgpOwor
I2VuZGlmCisKKyAgICBhdXRvJiB2bSA9IEpTQzo6Vk06OmNyZWF0ZShKU0M6OkxhcmdlSGVhcCwg
cnVuTG9vcCkubGVha1JlZigpOwogCiAgICAgZ19jb21tb25WTU9yTnVsbCA9ICZ2bTsKIApAQCAt
NjQsNyArNzAsNiBAQCBKU0M6OlZNJiBjb21tb25WTVNsb3coKQogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgaWYgKFdlYlRocmVhZElzRW5hYmxlZCgpKQogICAgICAgICB2bS5hcGlMb2Nr
KCkubWFrZVdlYlRocmVhZEF3YXJlKCk7Ci0gICAgdm0uc2V0UnVuTG9vcChXZWJUaHJlYWRSdW5M
b29wKCkpOwogICAgIHZtLmhlYXAubWFjaGluZVRocmVhZHMoKS5hZGRDdXJyZW50VGhyZWFkKCk7
CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403997</attachid>
            <date>2020-07-10 14:01:12 -0700</date>
            <delta_ts>2020-07-10 15:42:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214102-20200710140111.patch</filename>
            <type>text/plain</type>
            <size>24463</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MTM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDIwLTA3LTEwICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgSlNSdW5Mb29wVGltZXIgc2hvdWxkIHVzZSBXVEY6OlJ1bkxvb3AgcmF0aGVyIHRoYW4gY3Vz
dG9tIENGIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDEwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBnZW5lcmljIFJ1bkxvb3AgY29kZXBhdGggd2FzIGFscmVhZHkgbW9zdGx5IHJpZ2h0
LiBKdXN0IG5lZWRlZCB0bworICAgICAgICBjbGFyaWZ5IHRoZSBBUEkgdG8gZGVtb25zdHJhdGUg
dGhhdCBWTXMgZG8gbm90IGhvcCBmcm9tIG9uZSBSdW5Mb29wCisgICAgICAgIHRvIGFub3RoZXIu
CisKKyAgICAgICAgKiBydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6
ZXBvY2hUaW1lKTogUmVtb3ZlZCB0aGUgQ0YgcGF0aC4KKworICAgICAgICAoSlNDOjpKU1J1bkxv
b3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEpOiBJbmNsdWRlIGEgUnVuTG9v
cAorICAgICAgICBhcyBhIGNvbnN0cnVjdG9yIGFyZ3VtZW50IHNvIHRoYXQgdGhlIHdlYiB0aHJl
YWQgY2FuIG92ZXJyaWRlIGl0LgorCisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjp0aW1lckRpZEZpcmVDYWxsYmFjayk6IFJlbW92ZWQgdGhlIENGIHBhdGguCisKKyAgICAg
ICAgKEpTQzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6flBlclZNRGF0YSk6
IE5vIG5lZWQgdG8KKyAgICAgICAgZXhwbGljaXRseSBjbGVhciBvdXIgUnVuTG9vcCAtLSB0aGUg
UnVuTG9vcDo6VGltZXIgZGVzdHJ1Y3RvciB3aWxsIGRvCisgICAgICAgIHRoZSBqb2IuCisKKyAg
ICAgICAgKEpTQzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmlyZSk6CisgICAg
ICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAg
KEpTQzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnNjaGVkdWxlVGltZXIpOgorICAgICAgICAo
SlNDOjpKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6Y2FuY2VsVGltZXIpOiBSZW1vdmVkIHRoZSBD
RiBwYXRoLgorCisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURh
dGE6OnNldFJ1bkxvb3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6
TWFuYWdlcjo6ZGlkQ2hhbmdlUnVuTG9vcCk6IERlbGV0ZWQuIENoYW5naW5nCisgICAgICAgIFJ1
bkxvb3BzIGlzIG5vdCBhY3R1YWxseSBhIGZlYXR1cmUgd2UgdXNlLgorCisgICAgICAgICogcnVu
dGltZS9KU1J1bkxvb3BUaW1lci5oOgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6TWFu
YWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
UHJvbWlzZVRpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvbWlzZVRpbWVyOjpkb1dvcmspOgor
ICAgICAgICAoSlNDOjpQcm9taXNlVGltZXI6OnJ1blJ1bkxvb3ApOiBSZW1vdmVkIHRoZSBDRiBw
YXRoLgorCisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6
CisgICAgICAgIChKU0M6OlZNOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpWTTo6c2V0UnVuTG9v
cCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6
cnVuTG9vcCBjb25zdCk6IFJlcXVpcmUgYSBSdW5Mb29wIGluIHRoZSBWTSBjb25zdHJ1Y3RvciBp
bgorICAgICAgICBvcmRlciB0byBjbGFyaWZ5IHRoYXQgd2UgYWx3YXlzIGtub3cgb3VyIFJ1bkxv
b3AgYW5kIG5ldmVyIGNoYW5nZSBpdC4KKwogMjAyMC0wNy0wOCAgU2FhbSBCYXJhdGkgIDxzYmFy
YXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBmdXp6aW5nIHRvZ2dsZSBmb3IgTElDTQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVy
LmNwcAkocmV2aXNpb24gMjY0MDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNSdW5Mb29wVGltZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw0NiArNDAsMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBpbmxpbmUgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OkVw
b2NoVGltZSBlcG9jaFRpbWUoU2Vjb25kcyBkZWxheSkKIHsKLSNpZiBVU0UoQ0YpCi0gICAgcmV0
dXJuIFNlY29uZHMgeyBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIGRlbGF5LnZhbHVlKCkg
fTsKLSNlbHNlCiAgICAgcmV0dXJuIE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVw
b2NoKCkgKyBkZWxheTsKLSNlbmRpZgotfQotCi0jaWYgVVNFKENGKQotdm9pZCBKU1J1bkxvb3BU
aW1lcjo6TWFuYWdlcjo6dGltZXJEaWRGaXJlQ2FsbGJhY2soQ0ZSdW5Mb29wVGltZXJSZWYsIHZv
aWQqIGNvbnRleHRQdHIpCi17Ci0gICAgc3RhdGljX2Nhc3Q8SlNSdW5Mb29wVGltZXI6Ok1hbmFn
ZXIqPihjb250ZXh0UHRyKS0+dGltZXJEaWRGaXJlKCk7CiB9CiAKLXZvaWQgSlNSdW5Mb29wVGlt
ZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6c2V0UnVuTG9vcChNYW5hZ2VyKiBtYW5hZ2VyLCBDRlJ1
bkxvb3BSZWYgbmV3UnVuTG9vcCkKLXsKLSAgICBpZiAocnVuTG9vcCkgewotICAgICAgICBDRlJ1
bkxvb3BSZW1vdmVUaW1lcihydW5Mb29wLmdldCgpLCB0aW1lci5nZXQoKSwga0NGUnVuTG9vcENv
bW1vbk1vZGVzKTsKLSAgICAgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHRpbWVyLmdldCgp
KTsKLSAgICAgICAgcnVuTG9vcC5jbGVhcigpOwotICAgICAgICB0aW1lci5jbGVhcigpOwotICAg
IH0KLQotICAgIGlmIChuZXdSdW5Mb29wKSB7Ci0gICAgICAgIHJ1bkxvb3AgPSBuZXdSdW5Mb29w
OwotICAgICAgICBtZW1zZXQoJmNvbnRleHQsIDAsIHNpemVvZihDRlJ1bkxvb3BUaW1lckNvbnRl
eHQpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobWFuYWdlcik7Ci0gICAgICAgIGNvbnRleHQu
aW5mbyA9IG1hbmFnZXI7Ci0gICAgICAgIHRpbWVyID0gYWRvcHRDRihDRlJ1bkxvb3BUaW1lckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIHNf
ZGVjYWRlLnNlY29uZHMoKSwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBzX2RlY2FkZS5z
ZWNvbmRzKCksIDAsIDAsIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpcmVDYWxs
YmFjaywgJmNvbnRleHQpKTsKLSAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIocnVuTG9vcC5nZXQo
KSwgdGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0KLSAgICAgICAgRXBvY2hU
aW1lIHNjaGVkdWxlVGltZSA9IGVwb2NoVGltZShzX2RlY2FkZSk7Ci0gICAgICAgIGZvciAoYXV0
byYgcGFpciA6IHRpbWVycykKLSAgICAgICAgICAgIHNjaGVkdWxlVGltZSA9IHN0ZDo6bWluKHBh
aXIuc2Vjb25kLCBzY2hlZHVsZVRpbWUpOwotICAgICAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRG
aXJlRGF0ZSh0aW1lci5nZXQoKSwgc2NoZWR1bGVUaW1lLnZhbHVlKCkpOwotICAgIH0KLX0KLSNl
bHNlCi1KU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEoTWFuYWdl
ciYgbWFuYWdlcikKLSAgICA6IHJ1bkxvb3AoJlJ1bkxvb3A6OmN1cnJlbnQoKSkKLSAgICAsIHRp
bWVyKG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8TWFuYWdlcj4+KCpydW5Mb29wLCAmbWFuYWdl
ciwgJkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpcmVDYWxsYmFjaykpCitKU1J1
bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEoTWFuYWdlciYgbWFuYWdl
ciwgUnVuTG9vcCYgcnVuTG9vcCkKKyAgICA6IHJ1bkxvb3AocnVuTG9vcCkKKyAgICAsIHRpbWVy
KG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8TWFuYWdlcj4+KHJ1bkxvb3AsICZtYW5hZ2VyLCAm
SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmlyZUNhbGxiYWNrKSkKIHsKICNpZiBV
U0UoR0xJQl9FVkVOVF9MT09QKQogICAgIHRpbWVyLT5zZXRQcmlvcml0eShSdW5Mb29wU291cmNl
UHJpb3JpdHk6OkphdmFzY3JpcHRUaW1lcik7CkBAIC05MSwxMyArNTcsOSBAQCB2b2lkIEpTUnVu
TG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpCiB7CiAgICAgdGltZXJEaWRGaXJlKCk7CiB9
Ci0jZW5kaWYKIAogSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6flBlclZNRGF0
YSgpCiB7Ci0jaWYgVVNFKENGKQotICAgIHNldFJ1bkxvb3AobnVsbHB0ciwgbnVsbHB0cik7Ci0j
ZW5kaWYKIH0KIAogdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRGaXJlKCkK
QEAgLTEwNiwyMSArNjgsMTIgQEAgdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJE
aWRGaQogCiAgICAgewogICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7Ci0j
aWYgVVNFKENGKQotICAgICAgICBDRlJ1bkxvb3BSZWYgY3VycmVudFJ1bkxvb3AgPSBDRlJ1bkxv
b3BHZXRDdXJyZW50KCk7Ci0jZWxzZQogICAgICAgICBSdW5Mb29wKiBjdXJyZW50UnVuTG9vcCA9
ICZSdW5Mb29wOjpjdXJyZW50KCk7Ci0jZW5kaWYKICAgICAgICAgRXBvY2hUaW1lIG5vd0Vwb2No
VGltZSA9IGVwb2NoVGltZSgwX3MpOwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9tYXBw
aW5nKSB7CiAgICAgICAgICAgICBQZXJWTURhdGEmIGRhdGEgPSAqZW50cnkudmFsdWU7Ci0jaWYg
VVNFKENGKQotICAgICAgICAgICAgaWYgKGRhdGEucnVuTG9vcC5nZXQoKSAhPSBjdXJyZW50UnVu
TG9vcCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSNlbHNlCi0gICAgICAgICAgICBpZiAo
ZGF0YS5ydW5Mb29wICE9IGN1cnJlbnRSdW5Mb29wKQorICAgICAgICAgICAgaWYgKGRhdGEucnVu
TG9vcC5wdHIoKSAhPSBjdXJyZW50UnVuTG9vcCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSNlbmRpZgogICAgICAgICAgICAgCiAgICAgICAgICAgICBFcG9jaFRpbWUgc2NoZWR1bGVUaW1l
ID0gZXBvY2hUaW1lKHNfZGVjYWRlKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZGF0YS50aW1lcnMuc2l6ZSgpOyArK2kpIHsKQEAgLTE0MCwxMSArOTMsNyBAQCB2b2lkIEpT
UnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpCiAgICAgICAgICAgICAgICAgdGltZXJz
VG9GaXJlLmFwcGVuZChXVEZNb3ZlKHBhaXIuZmlyc3QpKTsKICAgICAgICAgICAgIH0KIAotI2lm
IFVTRShDRikKLSAgICAgICAgICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKGRhdGEu
dGltZXIuZ2V0KCksIHNjaGVkdWxlVGltZS52YWx1ZSgpKTsKLSNlbHNlCiAgICAgICAgICAgICBk
YXRhLnRpbWVyLT5zdGFydE9uZVNob3Qoc3RkOjptYXgoMF9zLCBzY2hlZHVsZVRpbWUgLSBNb25v
dG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpKSk7Ci0jZW5kaWYKICAgICAgICAg
fQogICAgIH0KIApAQCAtMTY0LDEwICsxMTMsNyBAQCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlciYg
SlNSdW5Mb29wVGltZXI6CiAKIHZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnJlZ2lzdGVy
Vk0oVk0mIHZtKQogewotICAgIGF1dG8gZGF0YSA9IG1ha2VVbmlxdWU8UGVyVk1EYXRhPigqdGhp
cyk7Ci0jaWYgVVNFKENGKQotICAgIGRhdGEtPnNldFJ1bkxvb3AodGhpcywgdm0ucnVuTG9vcCgp
KTsKLSNlbmRpZgorICAgIGF1dG8gZGF0YSA9IG1ha2VVbmlxdWU8UGVyVk1EYXRhPigqdGhpcywg
dm0ucnVuTG9vcCgpKTsKIAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fbWFwcGluZy5hZGQoeyB2bS5hcGlMb2NrKCkgfSwgV1RGTW92
ZShkYXRhKSk7CkBAIC0yMDUsMTEgKzE1MSw3IEBAIHZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFn
ZXI6OnNjaGVkdWxlVGkKICAgICBpZiAoIWZvdW5kKQogICAgICAgICBkYXRhLnRpbWVycy5hcHBl
bmQoeyB0aW1lciwgZmlyZUVwb2NoVGltZSB9KTsKIAotI2lmIFVTRShDRikKLSAgICBDRlJ1bkxv
b3BUaW1lclNldE5leHRGaXJlRGF0ZShkYXRhLnRpbWVyLmdldCgpLCBzY2hlZHVsZVRpbWUudmFs
dWUoKSk7Ci0jZWxzZQogICAgIGRhdGEudGltZXItPnN0YXJ0T25lU2hvdChzdGQ6Om1heCgwX3Ms
IHNjaGVkdWxlVGltZSAtIE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkp
KTsKLSNlbmRpZgogfQogCiB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpjYW5jZWxUaW1l
cihKU1J1bkxvb3BUaW1lciYgdGltZXIpCkBAIC0yNDAsMTEgKzE4Miw3IEBAIHZvaWQgSlNSdW5M
b29wVGltZXI6Ok1hbmFnZXI6OmNhbmNlbFRpbWUKICAgICAgICAgc2NoZWR1bGVUaW1lID0gc3Rk
OjptaW4oc2NoZWR1bGVUaW1lLCBkYXRhLnRpbWVyc1tpXS5zZWNvbmQpOwogICAgIH0KIAotI2lm
IFVTRShDRikKLSAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShkYXRhLnRpbWVyLmdl
dCgpLCBzY2hlZHVsZVRpbWUudmFsdWUoKSk7Ci0jZWxzZQogICAgIGRhdGEudGltZXItPnN0YXJ0
T25lU2hvdChzdGQ6Om1heCgwX3MsIHNjaGVkdWxlVGltZSAtIE1vbm90b25pY1RpbWU6Om5vdygp
LnNlY29uZHNTaW5jZUVwb2NoKCkpKTsKLSNlbmRpZgogfQogCiBPcHRpb25hbDxTZWNvbmRzPiBK
U1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZVVudGlsRmlyZShKU1J1bkxvb3BUaW1lciYgdGlt
ZXIpCkBAIC0yNjQsMTggKzIwMiw2IEBAIE9wdGlvbmFsPFNlY29uZHM+IEpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2UKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi0jaWYgVVNFKENGKQotdm9p
ZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6ZGlkQ2hhbmdlUnVuTG9vcChWTSYgdm0sIENGUnVu
TG9vcFJlZiBuZXdSdW5Mb29wKQotewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2Nr
KTsKLSAgICBhdXRvIGl0ZXIgPSBtX21hcHBpbmcuZmluZCh7IHZtLmFwaUxvY2soKSB9KTsKLSAg
ICBSRUxFQVNFX0FTU0VSVChpdGVyICE9IG1fbWFwcGluZy5lbmQoKSk7Ci0KLSAgICBQZXJWTURh
dGEmIGRhdGEgPSAqaXRlci0+dmFsdWU7Ci0gICAgZGF0YS5zZXRSdW5Mb29wKHRoaXMsIG5ld1J1
bkxvb3ApOwotfQotI2VuZGlmCi0KIHZvaWQgSlNSdW5Mb29wVGltZXI6OnRpbWVyRGlkRmlyZSgp
CiB7CiAgICAgTk9fVEFJTF9DQUxMUygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNSdW5Mb29wVGltZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5oCShyZXZpc2lvbiAyNjQwMzIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMywxMCArMzMsNiBAQAogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKLSNpZiBVU0UoQ0YpCi0jaW5jbHVkZSA8Q29y
ZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgSlNDIHsK
IAogY2xhc3MgSlNMb2NrOwpAQCAtNTAsMTEgKzQ2LDggQEAgcHVibGljOgogICAgIGNsYXNzIE1h
bmFnZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoTWFuYWdlcik7Ci0jaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgdm9p
ZCB0aW1lckRpZEZpcmVDYWxsYmFjayhDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOwotI2Vsc2UK
ICAgICAgICAgdm9pZCB0aW1lckRpZEZpcmVDYWxsYmFjaygpOwotI2VuZGlmCisKICAgICAgICAg
TWFuYWdlcigpID0gZGVmYXVsdDsKIAogICAgICAgICB2b2lkIHRpbWVyRGlkRmlyZSgpOwpAQCAt
NzAsMTAgKzYzLDYgQEAgcHVibGljOgogCiAgICAgICAgIE9wdGlvbmFsPFNlY29uZHM+IHRpbWVV
bnRpbEZpcmUoSlNSdW5Mb29wVGltZXImKTsKIAotI2lmIFVTRShDRikKLSAgICAgICAgdm9pZCBk
aWRDaGFuZ2VSdW5Mb29wKFZNJiwgQ0ZSdW5Mb29wUmVmIG5ld1J1bkxvb3ApOwotI2VuZGlmCi0K
ICAgICBwcml2YXRlOgogICAgICAgICBMb2NrIG1fbG9jazsKIApAQCAtODEsMjIgKzcwLDExIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVyVk1EYXRhKTsKICAgICAgICAgcHVibGljOgotI2lm
IFVTRShDRikKLSAgICAgICAgICAgIFBlclZNRGF0YShNYW5hZ2VyJikgeyB9Ci0jZWxzZQotICAg
ICAgICAgICAgUGVyVk1EYXRhKE1hbmFnZXImKTsKLSNlbmRpZgorICAgICAgICAgICAgUGVyVk1E
YXRhKE1hbmFnZXImLCBXVEY6OlJ1bkxvb3AmKTsKICAgICAgICAgICAgIH5QZXJWTURhdGEoKTsK
IAotI2lmIFVTRShDRikKLSAgICAgICAgICAgIHZvaWQgc2V0UnVuTG9vcChNYW5hZ2VyKiwgQ0ZS
dW5Mb29wUmVmKTsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4gdGlt
ZXI7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBydW5Mb29wOwotICAgICAg
ICAgICAgQ0ZSdW5Mb29wVGltZXJDb250ZXh0IGNvbnRleHQ7Ci0jZWxzZQotICAgICAgICAgICAg
UnVuTG9vcCogcnVuTG9vcDsKKyAgICAgICAgICAgIFJlZjxXVEY6OlJ1bkxvb3A+IHJ1bkxvb3A7
CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnVuTG9vcDo6VGltZXI8TWFuYWdlcj4+IHRp
bWVyOwotI2VuZGlmCiAgICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZjxKU1J1bkxvb3BU
aW1lcj4sIEVwb2NoVGltZT4+IHRpbWVyczsKICAgICAgICAgfTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3BwCShyZXZpc2lvbiAyNjQw
MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MCwxMyArNzAsOCBAQCB2b2lkIFByb21pc2VUaW1lcjo6ZG9Xb3Jr
KFZNJiB2bSkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5p
c0VtcHR5KCkgJiYgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxQcm9taXNlc0ZpbmlzaCkgewot
I2lmIFVTRShDRikKLSAgICAgICAgQ0ZSdW5Mb29wU3RvcCh2bS5ydW5Mb29wKCkpOwotI2Vsc2UK
KyAgICBpZiAobV9wZW5kaW5nUHJvbWlzZXMuaXNFbXB0eSgpICYmIG1fc2hvdWxkU3RvcFJ1bkxv
b3BXaGVuQWxsUHJvbWlzZXNGaW5pc2gpCiAgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5zdG9w
KCk7Ci0jZW5kaWYKLSAgICB9CiAKICAgICBtX3Rhc2tMb2NrLnVubG9jaygpOwogfQpAQCAtODQs
MTcgKzc5LDEwIEBAIHZvaWQgUHJvbWlzZVRpbWVyOjpkb1dvcmsoVk0mIHZtKQogdm9pZCBQcm9t
aXNlVGltZXI6OnJ1blJ1bkxvb3AoKQogewogICAgIEFTU0VSVCghbV9hcGlMb2NrLT52bSgpLT5j
dXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSNpZiBVU0UoQ0YpCi0gICAgQVNTRVJU
KENGUnVuTG9vcEdldEN1cnJlbnQoKSA9PSBtX2FwaUxvY2stPnZtKCktPnJ1bkxvb3AoKSk7Ci0j
ZW5kaWYKKyAgICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9hcGlMb2NrLT52bSgp
LT5ydW5Mb29wKCkpOwogICAgIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsUHJvbWlzZXNGaW5p
c2ggPSB0cnVlOwotICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5zaXplKCkpIHsKLSNpZiBVU0Uo
Q0YpCi0gICAgICAgIENGUnVuTG9vcFJ1bigpOwotI2Vsc2UKKyAgICBpZiAobV9wZW5kaW5nUHJv
bWlzZXMuc2l6ZSgpKQogICAgICAgICBSdW5Mb29wOjpydW4oKTsKLSNlbmRpZgotICAgIH0KIH0K
IAogdm9pZCBQcm9taXNlVGltZXI6OmFkZFBlbmRpbmdQcm9taXNlKFZNJiB2bSwgSlNQcm9taXNl
KiB0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAyNjQwMzIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Miwx
MiArMjYyLDEwIEBAIGlubGluZSB1bnNpZ25lZCBWTTo6bmV4dElEKCkKIAogc3RhdGljIGJvb2wg
dm1DcmVhdGlvblNob3VsZENyYXNoID0gZmFsc2U7CiAKLVZNOjpWTShWTVR5cGUgdm1UeXBlLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKK1ZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlw
ZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wKQogICAgIDogbV9pZChuZXh0SUQoKSkKICAgICAsIG1f
YXBpTG9jayhhZG9wdFJlZihuZXcgSlNMb2NrKHRoaXMpKSkKLSNpZiBVU0UoQ0YpCi0gICAgLCBt
X3J1bkxvb3AoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpKQotI2VuZGlmIC8vIFVTRShDRikKKyAgICAs
IG1fcnVuTG9vcChydW5Mb29wID8gKnJ1bkxvb3AgOiBXVEY6OlJ1bkxvb3A6OmN1cnJlbnQoKSkK
ICAgICAsIG1fcmFuZG9tKE9wdGlvbnM6OnNlZWRPZlZNUmFuZG9tRm9yRnV6emVyKCkgPyBPcHRp
b25zOjpzZWVkT2ZWTVJhbmRvbUZvckZ1enplcigpIDogY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21O
dW1iZXIoKSkKICAgICAsIG1faW50ZWdyaXR5UmFuZG9tKCp0aGlzKQogICAgICwgaGVhcCgqdGhp
cywgaGVhcFR5cGUpCkBAIC02NzEsOSArNjY5LDkgQEAgUmVmPFZNPiBWTTo6Y3JlYXRlQ29udGV4
dEdyb3VwKEhlYXBUeXBlIAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZNKEFQSUNvbnRleHRH
cm91cCwgaGVhcFR5cGUpKTsKIH0KIAotUmVmPFZNPiBWTTo6Y3JlYXRlKEhlYXBUeXBlIGhlYXBU
eXBlKQorUmVmPFZNPiBWTTo6Y3JlYXRlKEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3Aq
IHJ1bkxvb3ApCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVk0oRGVmYXVsdCwgaGVhcFR5
cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWTShEZWZhdWx0LCBoZWFwVHlwZSwgcnVu
TG9vcCkpOwogfQogCiBib29sIFZNOjpzaGFyZWRJbnN0YW5jZUV4aXN0cygpCkBAIC0xMzU1LDE1
ICsxMzUzLDYgQEAgdm9pZCBWTTo6dmVyaWZ5RXhjZXB0aW9uQ2hlY2tOZWVkSXNTYXRpcwogfQog
I2VuZGlmCiAKLSNpZiBVU0UoQ0YpCi12b2lkIFZNOjpzZXRSdW5Mb29wKENGUnVuTG9vcFJlZiBy
dW5Mb29wKQotewotICAgIEFTU0VSVChydW5Mb29wKTsKLSAgICBtX3J1bkxvb3AgPSBydW5Mb29w
OwotICAgIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpzaGFyZWQoKS5kaWRDaGFuZ2VSdW5Mb29w
KCp0aGlzLCBydW5Mb29wKTsKLX0KLSNlbmRpZiAvLyBVU0UoQ0YpCi0KIFNjcmF0Y2hCdWZmZXIq
IFZNOjpzY3JhdGNoQnVmZmVyRm9yU2l6ZShzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoIXNpemUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDI2NDAzMikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0
LDYgKzk0LDcgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFJ1bkxvb3A7CiBj
bGFzcyBTaW1wbGVTdGF0czsKIH0gLy8gbmFtZXNwYWNlIFdURgogdXNpbmcgV1RGOjpTaW1wbGVT
dGF0czsKQEAgLTMxMiw3ICszMTMsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgc2hhcmVkSW5zdGFuY2VFeGlzdHMoKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgVk0mIHNoYXJlZEluc3RhbmNlKCk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPFZNPiBjcmVhdGUoSGVhcFR5cGUgPSBTbWFsbEhlYXApOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWY8Vk0+IGNyZWF0ZShIZWFwVHlwZSA9IFNtYWxsSGVhcCwgV1RG
OjpSdW5Mb29wKiA9IG51bGxwdHIpOwogICAgIHN0YXRpYyBSZWY8Vk0+IGNyZWF0ZUNvbnRleHRH
cm91cChIZWFwVHlwZSA9IFNtYWxsSGVhcCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgflZNKCk7
CiAKQEAgLTM1MywxMCArMzU0LDcgQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIG1faWQ7CiAg
ICAgUmVmUHRyPEpTTG9jaz4gbV9hcGlMb2NrOwotI2lmIFVTRShDRikKLSAgICAvLyBUaGVzZSBu
ZWVkIHRvIGJlIGluaXRpYWxpemVkIGJlZm9yZSBoZWFwIGJlbG93LgotICAgIFJldGFpblB0cjxD
RlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsKLSNlbmRpZgorICAgIFJlZjxXVEY6OlJ1bkxvb3A+IG1f
cnVuTG9vcDsKIAogICAgIFdlYWtSYW5kb20gbV9yYW5kb207CiAgICAgSW50ZWdyaXR5OjpSYW5k
b20gbV9pbnRlZ3JpdHlSYW5kb207CkBAIC0xMDc5LDEwICsxMDc3LDcgQEAgcHVibGljOgogICAg
IGJvb2wgbmVlZEV4Y2VwdGlvbkNoZWNrKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkRXhjZXB0aW9u
Q2hlY2s7IH0KICNlbmRpZgogCi0jaWYgVVNFKENGKQotICAgIENGUnVuTG9vcFJlZiBydW5Mb29w
KCkgY29uc3QgeyByZXR1cm4gbV9ydW5Mb29wLmdldCgpOyB9Ci0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzZXRSdW5Mb29wKENGUnVuTG9vcFJlZik7Ci0jZW5kaWYgLy8gVVNFKENGKQorICAg
IFdURjo6UnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVuTG9vcC5nZXQoKTsg
fQogCiAgICAgc3RhdGljIHZvaWQgc2V0Q3Jhc2hPblZNQ3JlYXRpb24oYm9vbCk7CiAKQEAgLTEx
MDIsNyArMTA5Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKIAotICAgIFZNKFZNVHlwZSwgSGVhcFR5cGUpOworICAgIFZNKFZN
VHlwZSwgSGVhcFR5cGUsIFdURjo6UnVuTG9vcCogPSBudWxscHRyKTsKICAgICBzdGF0aWMgVk0q
JiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNy0xMCAgR2Vv
ZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIEpTUnVuTG9vcFRpbWVy
IHNob3VsZCB1c2UgV1RGOjpSdW5Mb29wIHJhdGhlciB0aGFuIGN1c3RvbSBDRiBjb2RlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQxMDIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pz
L0NvbW1vblZNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbW1vblZNU2xvdyk6IFN1cHBseSBh
IFJ1bkxvb3AgYXQgY29uc3RydWN0aW9uIHRpbWUgc2luY2UKKyAgICAgICAgSlNDIHJlcXVpcmVz
IHRoYXQgbm93LgorCiAyMDIwLTA3LTA3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFVuYWJsZSB0byBzY3JvbGwgZWxjb21lcmljby5wZSBwYWdlIHVu
dGlsIHRoZSBwYWdlIGZpbmlzaGVzIGxvYWRpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0NvbW1vblZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Db21tb25WTS5jcHAJKHJldmlzaW9uIDI2NDAzMikKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0NvbW1vblZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsMTMgQEAg
SlNDOjpWTSYgY29tbW9uVk1TbG93KCkKICAgICAvLyBBbHNvLCBpbml0aWFsaXplTWFpblRocmVh
ZCgpIGRvZXMgbm90aGluZyBvbiBpT1MuCiAgICAgU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6
ZU1haW5UaHJlYWQoKTsKIAotICAgIGF1dG8mIHZtID0gSlNDOjpWTTo6Y3JlYXRlKEpTQzo6TGFy
Z2VIZWFwKS5sZWFrUmVmKCk7CisjaWYgVVNFKFdFQl9USFJFQUQpCisgICAgUnVuTG9vcCogcnVu
TG9vcCA9ICZSdW5Mb29wOjp3ZWIoKTsKKyNlbHNlCisgICAgUnVuTG9vcCogcnVuTG9vcCA9ICZS
dW5Mb29wOjpjdXJyZW50KCk7CisjZW5kaWYKKworICAgIGF1dG8mIHZtID0gSlNDOjpWTTo6Y3Jl
YXRlKEpTQzo6TGFyZ2VIZWFwLCBydW5Mb29wKS5sZWFrUmVmKCk7CiAKICAgICBnX2NvbW1vblZN
T3JOdWxsID0gJnZtOwogCkBAIC02NCw3ICs3MCw2IEBAIEpTQzo6Vk0mIGNvbW1vblZNU2xvdygp
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoV2ViVGhyZWFkSXNFbmFibGVkKCkp
CiAgICAgICAgIHZtLmFwaUxvY2soKS5tYWtlV2ViVGhyZWFkQXdhcmUoKTsKLSAgICB2bS5zZXRS
dW5Mb29wKFdlYlRocmVhZFJ1bkxvb3AoKSk7CiAgICAgdm0uaGVhcC5tYWNoaW5lVGhyZWFkcygp
LmFkZEN1cnJlbnRUaHJlYWQoKTsKICNlbmRpZgogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQyMzQpCisrKyBUb29scy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wNy0xMCAgR2Vv
ZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzb21lIHRlc3Rp
bmcgZm9yIEpTUnVuTG9vcFRpbWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTQxOTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgc29tZSB0ZXN0IGNvdmVyYWdlIHRvIEpTUnVuTG9vcFRpbWVyIHNp
bmNlIEknbSBjaGFuZ2luZyBpdC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvSmF2YVNjcmlwdENvcmUvSlNSdW5Mb29wVGltZXIubW06IEFkZGVkLgorICAgICAgICAo
LVtUZXN0T2JqZWN0IGRlYWxsb2NdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
CiAyMDIwLTA3LTEwICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbRVdTXSBsYXlvdXQtdGVzdCByZXN1bHRzIHNob3VsZG4ndCBiZSBob3N0ZWQgb24gZXdz
IHNlcnZlcgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2NDAzMikKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw2ICs4Nyw3IEBACiAJCTExQjdGRDI4MjE5RjQ3MTEw
MDY5QjI3RiAvKiBGaXJzdE1lYW5pbmdmdWxQYWludE1pbGVzdG9uZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMUI3RkQyMjIxOUY0NkREMDA2OUIy
N0YgLyogRmlyc3RNZWFuaW5nZnVsUGFpbnRNaWxlc3RvbmUuY3BwICovOyB9OwogCQkxMUMyNTk4
RDIxRkE2MzI0MDA0QzlFMjMgLyogYXN5bmMtc2NyaXB0LWxvYWQuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMUMyNTk4QzIxRkE2MThE
MDA0QzlFMjMgLyogYXN5bmMtc2NyaXB0LWxvYWQuaHRtbCAqLzsgfTsKIAkJMTQzRERFOTgyMEM5
MDE4QjAwN0Y3NkZBIC8qIFNlY3VyaXR5LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NEY1NUQwMjA0RDQ3MUMwMDI5NDhDNiAvKiBT
ZWN1cml0eS5mcmFtZXdvcmsgKi87IH07CisJCTE0Q0M0MkU2MjRCOEQ4RkEwMEU2NEY0OCAvKiBK
U1J1bkxvb3BUaW1lci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0Q0M0MkU1MjRCOEQ4RkEwMEU2NEY0OCAvKiBKU1J1bkxvb3BUaW1lci5tbSAqLzsg
fTsKIAkJMUEwMkM4NzAxMjVENENGRDAwRTNGNEJEIC8qIGZpbmQuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTAyQzg0QjEyNUQ0QTVF
MDBFM0Y0QkQgLyogZmluZC5odG1sICovOyB9OwogCQkxQTM1MjRBRTFENjNBNEZCMDAzMTcyOUIg
LyogU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUEzNTI0QUMxRDYzQTRGQjAwMzE3MjlCIC8qIFNjb3BlLmNwcCAqLzsgfTsKIAkJMUE0Rjgx
Q0YxQkRGRkQ1MzAwNEU2NzJFIC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5UGx1Z0luLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0RjgxQ0QxQkRGRkQ1
MzAwNEU2NzJFIC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5UGx1Z0luLm1tICovOyB9OwpAQCAtMTY4
MSw2ICsxNjgyLDcgQEAKIAkJMTFDMjU5OEMyMUZBNjE4RDAwNEM5RTIzIC8qIGFzeW5jLXNjcmlw
dC1sb2FkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXN5bmMtc2NyaXB0LWxv
YWQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NDY0MDEyMTY3QTgzMDUw
MDBCRDIxOCAvKiBMYXlvdXRVbml0VGVzdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTGF5b3V0VW5pdFRlc3RzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMTQ0RDQwRUMyMjFCNDZBNzAwNEI0NzRGIC8qIFVVSUQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVVJRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTE0Q0M0MkU1MjRCOEQ4RkEwMEU2NEY0OCAvKiBKU1J1bkxvb3BUaW1lci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTUnVuTG9vcFRpbWVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEYzQjExMjE1RTQ1RUFCMDAyMTAwNjkgLyog
U2F0dXJhdGVkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2F0dXJhdGVkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQTAyQzg0QjEyNUQ0QTVFMDBFM0Y0QkQgLyogZmluZC5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gZmluZC5odG1sOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQTAyQzg0RTEyNUQ0QTg0MDBFM0Y0QkQgLyogRmluZC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaW5kLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTMwMzcsNiArMzAzOSwxNCBAQAogCQkJbmFtZSA9IGNvY29hOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMTRDQzQyRTAyNEI4RDdFNzAwRTY0
RjQ4IC8qIEphdmFTY3JpcHRDb3JlICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQkxNENDNDJFNTI0QjhEOEZBMDBFNjRGNDggLyogSlNSdW5Mb29wVGltZXIu
bW0gKi8sCisJCQkpOworCQkJcGF0aCA9IEphdmFTY3JpcHRDb3JlOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMUFCNjc0QURGRTlENTRCNTExQ0EyQ0JCIC8qIFByb2R1Y3Rz
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTQyNDYsNiAr
NDI1Niw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTc1NjA5
MTc2MTkyNTlDNTkwMDlFRjA2RSAvKiBpb3MgKi8sCisJCQkJMTRDQzQyRTAyNEI4RDdFNzAwRTY0
RjQ4IC8qIEphdmFTY3JpcHRDb3JlICovLAogCQkJCUMwN0U2Q0FEMTNGRDY3NjUwMDM4QjIyQiAv
KiBtYWMgKi8sCiAJCQkJQzA4NTg3RjkxM0ZFQzM5QjAwMUVGNEU1IC8qIFRlc3RXZWJLaXRBUEkg
Ki8sCiAJCQkJNDQwQTFEMzYxNEEwMTAwMDAwOEE2NkYyIC8qIFdlYkNvcmUgKi8sCkBAIC01MDYy
LDYgKzUwNzMsNyBAQAogCQkJCTUxODIwQTREMjJGNEVFN0YwMERGMEEwMSAvKiBKYXZhc2NyaXB0
VVJMTmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMDE2MEMxMjFBMTMyNDYwMDc3
RkEzMiAvKiBKSVRFbmFibGVkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTM1RkM3QjIyMkI4MkE3
MzAwRjMyRjk4IC8qIEpTTG9ja1Rha2VzV2ViVGhyZWFkTG9jay5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTE0Q0M0MkU2MjRCOEQ4RkEwMEU2NEY0OCAvKiBKU1J1bkxvb3BUaW1lci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0U3RUM0MUE0MTFBN0UwMDQ0N0M0QyAvKiBKU1dyYXBwZXJGb3JOb2Rl
SW5XZWJGcmFtZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NUUxNTczMjExMkNFMjkwMDMwN0U4
MiAvKiBLZXlib2FyZElucHV0VGVzdHNJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyNzhFM0Ux
OTIzQ0Q4NDJGMDA1QTZCODAgLyogS2V5ZWRDb2RpbmcuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL0pTUnVuTG9vcFRpbWVy
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvSmF2YVNjcmlwdENv
cmUvSlNSdW5Mb29wVGltZXIubW0JKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9KYXZhU2NyaXB0Q29yZS9KU1J1bkxvb3BUaW1lci5tbQkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1w
b3J0ICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvUnVu
TG9vcC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2lt
cG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9y
Q29jb2EuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitzdGF0aWMgYm9vbCBz
X2lzUnVubmluZ1J1bkxvb3A7CitzdGF0aWMgYm9vbCBzX2RvbmU7CitzdGF0aWMgV1RGOjpSdW5M
b29wKiBzX2V4cGVjdGVkUnVuTG9vcDsKKworQGludGVyZmFjZSBUZXN0T2JqZWN0IDogTlNPYmpl
Y3QKKy0gKHZvaWQpZGVhbGxvYzsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFRlc3RPYmplY3QK
Ky0gKHZvaWQpZGVhbGxvYworeworICAgIGlmIChzX2lzUnVubmluZ1J1bkxvb3ApIHsKKyAgICAg
ICAgRVhQRUNUX0VRKCZSdW5Mb29wOjpjdXJyZW50KCksIHNfZXhwZWN0ZWRSdW5Mb29wKTsKKyAg
ICAgICAgc19kb25lID0gdHJ1ZTsKKyAgICB9CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CitA
ZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworLy8gSmF2YVNjcmlwdENvcmUncyBi
ZWhhdmlvciBhdCB0aGUgdGltZSBvZiB3cml0aW5nIGlzIHRoYXQgZGVzdHJ1Y3RvcnMKKy8vIHJ1
biBhc3luY2hyb25vdXNseSBvbiB0aGUgdGhyZWFkIHRoYXQgYWxsb2NhdGVkIHRoZSBWTSwgdW5s
ZXNzIHRoZXkgcnVuCisvLyBzeW5jaHJvbm91c2x5IGR1cmluZyBhbiBBUEkgY2FsbCBvbiBzb21l
IG90aGVyIHRocmVhZC4KKworVEVTVChKYXZhU2NyaXB0Q29yZSwgSW5jcmVtZW50YWxTd2VlcGVy
TWFpblRocmVhZCkKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdE5TKFtKU0NvbnRleHQgbmV3
XSk7CisgICAgc19leHBlY3RlZFJ1bkxvb3AgPSAmUnVuTG9vcDo6Y3VycmVudCgpOworCisgICAg
d2hpbGUgKCFzX2RvbmUpIHsKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICAgICAgICAgIGF1
dG8gb2JqZWN0ID0gYWRvcHROUyhbVGVzdE9iamVjdCBuZXddKTsKKyAgICAgICAgICAgICAgICBh
dXRvIGpzT2JqZWN0ID0gYWRvcHROUyhbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6b2JqZWN0Lmdl
dCgpIGluQ29udGV4dDpjb250ZXh0LmdldCgpXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBKU0dhcmJhZ2VDb2xsZWN0KFtjb250ZXh0LmdldCgpIEpTR2xvYmFsQ29udGV4dFJlZl0pOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBzX2lzUnVubmluZ1J1bkxvb3AgPSB0cnVlOworICAg
ICAgICAgICAgUnVuTG9vcDo6Y3VycmVudCgpLmN5Y2xlKCk7CisgICAgICAgICAgICBzX2lzUnVu
bmluZ1J1bkxvb3AgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFWFBFQ1RfVFJVRSh0
cnVlKTsKK30KKworVEVTVChKYXZhU2NyaXB0Q29yZSwgSW5jcmVtZW50YWxTd2VlcGVyU2Vjb25k
YXJ5VGhyZWFkKQoreworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW0pTQ29udGV4dCBuZXdd
KTsKKyAgICBzX2V4cGVjdGVkUnVuTG9vcCA9ICZSdW5Mb29wOjpjdXJyZW50KCk7CisKKyAgICB3
aGlsZSAoIXNfZG9uZSkgeworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAg
IGRpc3BhdGNoX3N5bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShRT1NfQ0xBU1NfVVNFUl9J
TlRFUkFDVElWRSwgMCksIF57CisgICAgICAgICAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Cisg
ICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBhdXRvIG9iamVjdCA9IGFkb3B0TlMoW1Rlc3RPYmplY3Qg
bmV3XSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGpzT2JqZWN0ID0gYWRvcHROUyhb
SlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6b2JqZWN0LmdldCgpIGluQ29udGV4dDpjb250ZXh0Lmdl
dCgpXSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgSlNHYXJi
YWdlQ29sbGVjdChbY29udGV4dC5nZXQoKSBKU0dsb2JhbENvbnRleHRSZWZdKTsKKworICAgICAg
ICAgICAgICAgICAgICBzX2lzUnVubmluZ1J1bkxvb3AgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICBSdW5Mb29wOjpjdXJyZW50KCkuY3ljbGUoKTsKKyAgICAgICAgICAgICAgICAgICAgc19p
c1J1bm5pbmdSdW5Mb29wID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIHNfaXNSdW5uaW5nUnVuTG9vcCA9IHRydWU7CisgICAgICAgICAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuY3ljbGUoKTsKKyAgICAgICAgICAgIHNfaXNSdW5uaW5nUnVu
TG9vcCA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCg==
</data>
<flag name="review"
          id="419404"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404000</attachid>
            <date>2020-07-10 14:21:28 -0700</date>
            <delta_ts>2020-07-10 15:00:38 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-214102-20200710142127.patch</filename>
            <type>text/plain</type>
            <size>24445</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MTM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDIwLTA3LTEwICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgSlNSdW5Mb29wVGltZXIgc2hvdWxkIHVzZSBXVEY6OlJ1bkxvb3AgcmF0aGVyIHRoYW4gY3Vz
dG9tIENGIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDEwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBnZW5lcmljIFJ1bkxvb3AgY29kZXBhdGggd2FzIGFscmVhZHkgbW9zdGx5IHJpZ2h0
LiBKdXN0IG5lZWRlZCB0bworICAgICAgICBjbGFyaWZ5IHRoZSBBUEkgdG8gZGVtb25zdHJhdGUg
dGhhdCBWTXMgZG8gbm90IGhvcCBmcm9tIG9uZSBSdW5Mb29wCisgICAgICAgIHRvIGFub3RoZXIu
CisKKyAgICAgICAgKiBydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6
ZXBvY2hUaW1lKTogUmVtb3ZlZCB0aGUgQ0YgcGF0aC4KKworICAgICAgICAoSlNDOjpKU1J1bkxv
b3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEpOiBJbmNsdWRlIGEgUnVuTG9v
cAorICAgICAgICBhcyBhIGNvbnN0cnVjdG9yIGFyZ3VtZW50IHNvIHRoYXQgdGhlIHdlYiB0aHJl
YWQgY2FuIG92ZXJyaWRlIGl0LgorCisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjp0aW1lckRpZEZpcmVDYWxsYmFjayk6IFJlbW92ZWQgdGhlIENGIHBhdGguCisKKyAgICAg
ICAgKEpTQzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6flBlclZNRGF0YSk6
IE5vIG5lZWQgdG8KKyAgICAgICAgZXhwbGljaXRseSBjbGVhciBvdXIgUnVuTG9vcCAtLSB0aGUg
UnVuTG9vcDo6VGltZXIgZGVzdHJ1Y3RvciB3aWxsIGRvCisgICAgICAgIHRoZSBqb2IuCisKKyAg
ICAgICAgKEpTQzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmlyZSk6CisgICAg
ICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAg
KEpTQzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnNjaGVkdWxlVGltZXIpOgorICAgICAgICAo
SlNDOjpKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6Y2FuY2VsVGltZXIpOiBSZW1vdmVkIHRoZSBD
RiBwYXRoLgorCisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURh
dGE6OnNldFJ1bkxvb3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6
TWFuYWdlcjo6ZGlkQ2hhbmdlUnVuTG9vcCk6IERlbGV0ZWQuIENoYW5naW5nCisgICAgICAgIFJ1
bkxvb3BzIGlzIG5vdCBhY3R1YWxseSBhIGZlYXR1cmUgd2UgdXNlLgorCisgICAgICAgICogcnVu
dGltZS9KU1J1bkxvb3BUaW1lci5oOgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6TWFu
YWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
UHJvbWlzZVRpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvbWlzZVRpbWVyOjpkb1dvcmspOgor
ICAgICAgICAoSlNDOjpQcm9taXNlVGltZXI6OnJ1blJ1bkxvb3ApOiBSZW1vdmVkIHRoZSBDRiBw
YXRoLgorCisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6
CisgICAgICAgIChKU0M6OlZNOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpWTTo6c2V0UnVuTG9v
cCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6
cnVuTG9vcCBjb25zdCk6IFJlcXVpcmUgYSBSdW5Mb29wIGluIHRoZSBWTSBjb25zdHJ1Y3RvciBp
bgorICAgICAgICBvcmRlciB0byBjbGFyaWZ5IHRoYXQgd2UgYWx3YXlzIGtub3cgb3VyIFJ1bkxv
b3AgYW5kIG5ldmVyIGNoYW5nZSBpdC4KKwogMjAyMC0wNy0wOCAgU2FhbSBCYXJhdGkgIDxzYmFy
YXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBmdXp6aW5nIHRvZ2dsZSBmb3IgTElDTQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVy
LmNwcAkocmV2aXNpb24gMjY0MDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNSdW5Mb29wVGltZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw0NiArNDAsMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBpbmxpbmUgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OkVw
b2NoVGltZSBlcG9jaFRpbWUoU2Vjb25kcyBkZWxheSkKIHsKLSNpZiBVU0UoQ0YpCi0gICAgcmV0
dXJuIFNlY29uZHMgeyBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIGRlbGF5LnZhbHVlKCkg
fTsKLSNlbHNlCiAgICAgcmV0dXJuIE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVw
b2NoKCkgKyBkZWxheTsKLSNlbmRpZgotfQotCi0jaWYgVVNFKENGKQotdm9pZCBKU1J1bkxvb3BU
aW1lcjo6TWFuYWdlcjo6dGltZXJEaWRGaXJlQ2FsbGJhY2soQ0ZSdW5Mb29wVGltZXJSZWYsIHZv
aWQqIGNvbnRleHRQdHIpCi17Ci0gICAgc3RhdGljX2Nhc3Q8SlNSdW5Mb29wVGltZXI6Ok1hbmFn
ZXIqPihjb250ZXh0UHRyKS0+dGltZXJEaWRGaXJlKCk7CiB9CiAKLXZvaWQgSlNSdW5Mb29wVGlt
ZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6c2V0UnVuTG9vcChNYW5hZ2VyKiBtYW5hZ2VyLCBDRlJ1
bkxvb3BSZWYgbmV3UnVuTG9vcCkKLXsKLSAgICBpZiAocnVuTG9vcCkgewotICAgICAgICBDRlJ1
bkxvb3BSZW1vdmVUaW1lcihydW5Mb29wLmdldCgpLCB0aW1lci5nZXQoKSwga0NGUnVuTG9vcENv
bW1vbk1vZGVzKTsKLSAgICAgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHRpbWVyLmdldCgp
KTsKLSAgICAgICAgcnVuTG9vcC5jbGVhcigpOwotICAgICAgICB0aW1lci5jbGVhcigpOwotICAg
IH0KLQotICAgIGlmIChuZXdSdW5Mb29wKSB7Ci0gICAgICAgIHJ1bkxvb3AgPSBuZXdSdW5Mb29w
OwotICAgICAgICBtZW1zZXQoJmNvbnRleHQsIDAsIHNpemVvZihDRlJ1bkxvb3BUaW1lckNvbnRl
eHQpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobWFuYWdlcik7Ci0gICAgICAgIGNvbnRleHQu
aW5mbyA9IG1hbmFnZXI7Ci0gICAgICAgIHRpbWVyID0gYWRvcHRDRihDRlJ1bkxvb3BUaW1lckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIHNf
ZGVjYWRlLnNlY29uZHMoKSwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBzX2RlY2FkZS5z
ZWNvbmRzKCksIDAsIDAsIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpcmVDYWxs
YmFjaywgJmNvbnRleHQpKTsKLSAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIocnVuTG9vcC5nZXQo
KSwgdGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0KLSAgICAgICAgRXBvY2hU
aW1lIHNjaGVkdWxlVGltZSA9IGVwb2NoVGltZShzX2RlY2FkZSk7Ci0gICAgICAgIGZvciAoYXV0
byYgcGFpciA6IHRpbWVycykKLSAgICAgICAgICAgIHNjaGVkdWxlVGltZSA9IHN0ZDo6bWluKHBh
aXIuc2Vjb25kLCBzY2hlZHVsZVRpbWUpOwotICAgICAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRG
aXJlRGF0ZSh0aW1lci5nZXQoKSwgc2NoZWR1bGVUaW1lLnZhbHVlKCkpOwotICAgIH0KLX0KLSNl
bHNlCi1KU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEoTWFuYWdl
ciYgbWFuYWdlcikKLSAgICA6IHJ1bkxvb3AoJlJ1bkxvb3A6OmN1cnJlbnQoKSkKLSAgICAsIHRp
bWVyKG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8TWFuYWdlcj4+KCpydW5Mb29wLCAmbWFuYWdl
ciwgJkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpcmVDYWxsYmFjaykpCitKU1J1
bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEoTWFuYWdlciYgbWFuYWdl
ciwgUnVuTG9vcCYgcnVuTG9vcCkKKyAgICA6IHJ1bkxvb3AocnVuTG9vcCkKKyAgICAsIHRpbWVy
KG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8TWFuYWdlcj4+KHJ1bkxvb3AsICZtYW5hZ2VyLCAm
SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmlyZUNhbGxiYWNrKSkKIHsKICNpZiBV
U0UoR0xJQl9FVkVOVF9MT09QKQogICAgIHRpbWVyLT5zZXRQcmlvcml0eShSdW5Mb29wU291cmNl
UHJpb3JpdHk6OkphdmFzY3JpcHRUaW1lcik7CkBAIC05MSwxMyArNTcsOSBAQCB2b2lkIEpTUnVu
TG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpCiB7CiAgICAgdGltZXJEaWRGaXJlKCk7CiB9
Ci0jZW5kaWYKIAogSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6flBlclZNRGF0
YSgpCiB7Ci0jaWYgVVNFKENGKQotICAgIHNldFJ1bkxvb3AobnVsbHB0ciwgbnVsbHB0cik7Ci0j
ZW5kaWYKIH0KIAogdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRGaXJlKCkK
QEAgLTEwNiwyMSArNjgsMTIgQEAgdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJE
aWRGaQogCiAgICAgewogICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7Ci0j
aWYgVVNFKENGKQotICAgICAgICBDRlJ1bkxvb3BSZWYgY3VycmVudFJ1bkxvb3AgPSBDRlJ1bkxv
b3BHZXRDdXJyZW50KCk7Ci0jZWxzZQogICAgICAgICBSdW5Mb29wKiBjdXJyZW50UnVuTG9vcCA9
ICZSdW5Mb29wOjpjdXJyZW50KCk7Ci0jZW5kaWYKICAgICAgICAgRXBvY2hUaW1lIG5vd0Vwb2No
VGltZSA9IGVwb2NoVGltZSgwX3MpOwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9tYXBw
aW5nKSB7CiAgICAgICAgICAgICBQZXJWTURhdGEmIGRhdGEgPSAqZW50cnkudmFsdWU7Ci0jaWYg
VVNFKENGKQotICAgICAgICAgICAgaWYgKGRhdGEucnVuTG9vcC5nZXQoKSAhPSBjdXJyZW50UnVu
TG9vcCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSNlbHNlCi0gICAgICAgICAgICBpZiAo
ZGF0YS5ydW5Mb29wICE9IGN1cnJlbnRSdW5Mb29wKQorICAgICAgICAgICAgaWYgKGRhdGEucnVu
TG9vcC5wdHIoKSAhPSBjdXJyZW50UnVuTG9vcCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSNlbmRpZgogICAgICAgICAgICAgCiAgICAgICAgICAgICBFcG9jaFRpbWUgc2NoZWR1bGVUaW1l
ID0gZXBvY2hUaW1lKHNfZGVjYWRlKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZGF0YS50aW1lcnMuc2l6ZSgpOyArK2kpIHsKQEAgLTE0MCwxMSArOTMsNyBAQCB2b2lkIEpT
UnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpCiAgICAgICAgICAgICAgICAgdGltZXJz
VG9GaXJlLmFwcGVuZChXVEZNb3ZlKHBhaXIuZmlyc3QpKTsKICAgICAgICAgICAgIH0KIAotI2lm
IFVTRShDRikKLSAgICAgICAgICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKGRhdGEu
dGltZXIuZ2V0KCksIHNjaGVkdWxlVGltZS52YWx1ZSgpKTsKLSNlbHNlCiAgICAgICAgICAgICBk
YXRhLnRpbWVyLT5zdGFydE9uZVNob3Qoc3RkOjptYXgoMF9zLCBzY2hlZHVsZVRpbWUgLSBNb25v
dG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpKSk7Ci0jZW5kaWYKICAgICAgICAg
fQogICAgIH0KIApAQCAtMTY0LDEwICsxMTMsNyBAQCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlciYg
SlNSdW5Mb29wVGltZXI6CiAKIHZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnJlZ2lzdGVy
Vk0oVk0mIHZtKQogewotICAgIGF1dG8gZGF0YSA9IG1ha2VVbmlxdWU8UGVyVk1EYXRhPigqdGhp
cyk7Ci0jaWYgVVNFKENGKQotICAgIGRhdGEtPnNldFJ1bkxvb3AodGhpcywgdm0ucnVuTG9vcCgp
KTsKLSNlbmRpZgorICAgIGF1dG8gZGF0YSA9IG1ha2VVbmlxdWU8UGVyVk1EYXRhPigqdGhpcywg
dm0ucnVuTG9vcCgpKTsKIAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fbWFwcGluZy5hZGQoeyB2bS5hcGlMb2NrKCkgfSwgV1RGTW92
ZShkYXRhKSk7CkBAIC0yMDUsMTEgKzE1MSw3IEBAIHZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFn
ZXI6OnNjaGVkdWxlVGkKICAgICBpZiAoIWZvdW5kKQogICAgICAgICBkYXRhLnRpbWVycy5hcHBl
bmQoeyB0aW1lciwgZmlyZUVwb2NoVGltZSB9KTsKIAotI2lmIFVTRShDRikKLSAgICBDRlJ1bkxv
b3BUaW1lclNldE5leHRGaXJlRGF0ZShkYXRhLnRpbWVyLmdldCgpLCBzY2hlZHVsZVRpbWUudmFs
dWUoKSk7Ci0jZWxzZQogICAgIGRhdGEudGltZXItPnN0YXJ0T25lU2hvdChzdGQ6Om1heCgwX3Ms
IHNjaGVkdWxlVGltZSAtIE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkp
KTsKLSNlbmRpZgogfQogCiB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpjYW5jZWxUaW1l
cihKU1J1bkxvb3BUaW1lciYgdGltZXIpCkBAIC0yNDAsMTEgKzE4Miw3IEBAIHZvaWQgSlNSdW5M
b29wVGltZXI6Ok1hbmFnZXI6OmNhbmNlbFRpbWUKICAgICAgICAgc2NoZWR1bGVUaW1lID0gc3Rk
OjptaW4oc2NoZWR1bGVUaW1lLCBkYXRhLnRpbWVyc1tpXS5zZWNvbmQpOwogICAgIH0KIAotI2lm
IFVTRShDRikKLSAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShkYXRhLnRpbWVyLmdl
dCgpLCBzY2hlZHVsZVRpbWUudmFsdWUoKSk7Ci0jZWxzZQogICAgIGRhdGEudGltZXItPnN0YXJ0
T25lU2hvdChzdGQ6Om1heCgwX3MsIHNjaGVkdWxlVGltZSAtIE1vbm90b25pY1RpbWU6Om5vdygp
LnNlY29uZHNTaW5jZUVwb2NoKCkpKTsKLSNlbmRpZgogfQogCiBPcHRpb25hbDxTZWNvbmRzPiBK
U1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZVVudGlsRmlyZShKU1J1bkxvb3BUaW1lciYgdGlt
ZXIpCkBAIC0yNjQsMTggKzIwMiw2IEBAIE9wdGlvbmFsPFNlY29uZHM+IEpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2UKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi0jaWYgVVNFKENGKQotdm9p
ZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6ZGlkQ2hhbmdlUnVuTG9vcChWTSYgdm0sIENGUnVu
TG9vcFJlZiBuZXdSdW5Mb29wKQotewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2Nr
KTsKLSAgICBhdXRvIGl0ZXIgPSBtX21hcHBpbmcuZmluZCh7IHZtLmFwaUxvY2soKSB9KTsKLSAg
ICBSRUxFQVNFX0FTU0VSVChpdGVyICE9IG1fbWFwcGluZy5lbmQoKSk7Ci0KLSAgICBQZXJWTURh
dGEmIGRhdGEgPSAqaXRlci0+dmFsdWU7Ci0gICAgZGF0YS5zZXRSdW5Mb29wKHRoaXMsIG5ld1J1
bkxvb3ApOwotfQotI2VuZGlmCi0KIHZvaWQgSlNSdW5Mb29wVGltZXI6OnRpbWVyRGlkRmlyZSgp
CiB7CiAgICAgTk9fVEFJTF9DQUxMUygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNSdW5Mb29wVGltZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5oCShyZXZpc2lvbiAyNjQwMzIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMywxMCArMzMsNiBAQAogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKLSNpZiBVU0UoQ0YpCi0jaW5jbHVkZSA8Q29y
ZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgSlNDIHsK
IAogY2xhc3MgSlNMb2NrOwpAQCAtNTAsMTEgKzQ2LDggQEAgcHVibGljOgogICAgIGNsYXNzIE1h
bmFnZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoTWFuYWdlcik7Ci0jaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgdm9p
ZCB0aW1lckRpZEZpcmVDYWxsYmFjayhDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOwotI2Vsc2UK
ICAgICAgICAgdm9pZCB0aW1lckRpZEZpcmVDYWxsYmFjaygpOwotI2VuZGlmCisKICAgICAgICAg
TWFuYWdlcigpID0gZGVmYXVsdDsKIAogICAgICAgICB2b2lkIHRpbWVyRGlkRmlyZSgpOwpAQCAt
NzAsMTAgKzYzLDYgQEAgcHVibGljOgogCiAgICAgICAgIE9wdGlvbmFsPFNlY29uZHM+IHRpbWVV
bnRpbEZpcmUoSlNSdW5Mb29wVGltZXImKTsKIAotI2lmIFVTRShDRikKLSAgICAgICAgdm9pZCBk
aWRDaGFuZ2VSdW5Mb29wKFZNJiwgQ0ZSdW5Mb29wUmVmIG5ld1J1bkxvb3ApOwotI2VuZGlmCi0K
ICAgICBwcml2YXRlOgogICAgICAgICBMb2NrIG1fbG9jazsKIApAQCAtODEsMjIgKzcwLDExIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVyVk1EYXRhKTsKICAgICAgICAgcHVibGljOgotI2lm
IFVTRShDRikKLSAgICAgICAgICAgIFBlclZNRGF0YShNYW5hZ2VyJikgeyB9Ci0jZWxzZQotICAg
ICAgICAgICAgUGVyVk1EYXRhKE1hbmFnZXImKTsKLSNlbmRpZgorICAgICAgICAgICAgUGVyVk1E
YXRhKE1hbmFnZXImLCBXVEY6OlJ1bkxvb3AmKTsKICAgICAgICAgICAgIH5QZXJWTURhdGEoKTsK
IAotI2lmIFVTRShDRikKLSAgICAgICAgICAgIHZvaWQgc2V0UnVuTG9vcChNYW5hZ2VyKiwgQ0ZS
dW5Mb29wUmVmKTsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4gdGlt
ZXI7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBydW5Mb29wOwotICAgICAg
ICAgICAgQ0ZSdW5Mb29wVGltZXJDb250ZXh0IGNvbnRleHQ7Ci0jZWxzZQotICAgICAgICAgICAg
UnVuTG9vcCogcnVuTG9vcDsKKyAgICAgICAgICAgIFJlZjxXVEY6OlJ1bkxvb3A+IHJ1bkxvb3A7
CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnVuTG9vcDo6VGltZXI8TWFuYWdlcj4+IHRp
bWVyOwotI2VuZGlmCiAgICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZjxKU1J1bkxvb3BU
aW1lcj4sIEVwb2NoVGltZT4+IHRpbWVyczsKICAgICAgICAgfTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZVRpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3BwCShyZXZpc2lvbiAyNjQw
MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MCwxMyArNzAsOCBAQCB2b2lkIFByb21pc2VUaW1lcjo6ZG9Xb3Jr
KFZNJiB2bSkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5p
c0VtcHR5KCkgJiYgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxQcm9taXNlc0ZpbmlzaCkgewot
I2lmIFVTRShDRikKLSAgICAgICAgQ0ZSdW5Mb29wU3RvcCh2bS5ydW5Mb29wKCkpOwotI2Vsc2UK
KyAgICBpZiAobV9wZW5kaW5nUHJvbWlzZXMuaXNFbXB0eSgpICYmIG1fc2hvdWxkU3RvcFJ1bkxv
b3BXaGVuQWxsUHJvbWlzZXNGaW5pc2gpCiAgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5zdG9w
KCk7Ci0jZW5kaWYKLSAgICB9CiAKICAgICBtX3Rhc2tMb2NrLnVubG9jaygpOwogfQpAQCAtODQs
MTcgKzc5LDEwIEBAIHZvaWQgUHJvbWlzZVRpbWVyOjpkb1dvcmsoVk0mIHZtKQogdm9pZCBQcm9t
aXNlVGltZXI6OnJ1blJ1bkxvb3AoKQogewogICAgIEFTU0VSVCghbV9hcGlMb2NrLT52bSgpLT5j
dXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSNpZiBVU0UoQ0YpCi0gICAgQVNTRVJU
KENGUnVuTG9vcEdldEN1cnJlbnQoKSA9PSBtX2FwaUxvY2stPnZtKCktPnJ1bkxvb3AoKSk7Ci0j
ZW5kaWYKKyAgICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9hcGlMb2NrLT52bSgp
LT5ydW5Mb29wKCkpOwogICAgIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsUHJvbWlzZXNGaW5p
c2ggPSB0cnVlOwotICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5zaXplKCkpIHsKLSNpZiBVU0Uo
Q0YpCi0gICAgICAgIENGUnVuTG9vcFJ1bigpOwotI2Vsc2UKKyAgICBpZiAobV9wZW5kaW5nUHJv
bWlzZXMuc2l6ZSgpKQogICAgICAgICBSdW5Mb29wOjpydW4oKTsKLSNlbmRpZgotICAgIH0KIH0K
IAogdm9pZCBQcm9taXNlVGltZXI6OmFkZFBlbmRpbmdQcm9taXNlKFZNJiB2bSwgSlNQcm9taXNl
KiB0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAyNjQwMzIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Miwx
MiArMjYyLDEwIEBAIGlubGluZSB1bnNpZ25lZCBWTTo6bmV4dElEKCkKIAogc3RhdGljIGJvb2wg
dm1DcmVhdGlvblNob3VsZENyYXNoID0gZmFsc2U7CiAKLVZNOjpWTShWTVR5cGUgdm1UeXBlLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKK1ZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlw
ZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wKQogICAgIDogbV9pZChuZXh0SUQoKSkKICAgICAsIG1f
YXBpTG9jayhhZG9wdFJlZihuZXcgSlNMb2NrKHRoaXMpKSkKLSNpZiBVU0UoQ0YpCi0gICAgLCBt
X3J1bkxvb3AoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpKQotI2VuZGlmIC8vIFVTRShDRikKKyAgICAs
IG1fcnVuTG9vcChydW5Mb29wID8gKnJ1bkxvb3AgOiBXVEY6OlJ1bkxvb3A6OmN1cnJlbnQoKSkK
ICAgICAsIG1fcmFuZG9tKE9wdGlvbnM6OnNlZWRPZlZNUmFuZG9tRm9yRnV6emVyKCkgPyBPcHRp
b25zOjpzZWVkT2ZWTVJhbmRvbUZvckZ1enplcigpIDogY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21O
dW1iZXIoKSkKICAgICAsIG1faW50ZWdyaXR5UmFuZG9tKCp0aGlzKQogICAgICwgaGVhcCgqdGhp
cywgaGVhcFR5cGUpCkBAIC02NzEsOSArNjY5LDkgQEAgUmVmPFZNPiBWTTo6Y3JlYXRlQ29udGV4
dEdyb3VwKEhlYXBUeXBlIAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZNKEFQSUNvbnRleHRH
cm91cCwgaGVhcFR5cGUpKTsKIH0KIAotUmVmPFZNPiBWTTo6Y3JlYXRlKEhlYXBUeXBlIGhlYXBU
eXBlKQorUmVmPFZNPiBWTTo6Y3JlYXRlKEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3Aq
IHJ1bkxvb3ApCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVk0oRGVmYXVsdCwgaGVhcFR5
cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWTShEZWZhdWx0LCBoZWFwVHlwZSwgcnVu
TG9vcCkpOwogfQogCiBib29sIFZNOjpzaGFyZWRJbnN0YW5jZUV4aXN0cygpCkBAIC0xMzU1LDE1
ICsxMzUzLDYgQEAgdm9pZCBWTTo6dmVyaWZ5RXhjZXB0aW9uQ2hlY2tOZWVkSXNTYXRpcwogfQog
I2VuZGlmCiAKLSNpZiBVU0UoQ0YpCi12b2lkIFZNOjpzZXRSdW5Mb29wKENGUnVuTG9vcFJlZiBy
dW5Mb29wKQotewotICAgIEFTU0VSVChydW5Mb29wKTsKLSAgICBtX3J1bkxvb3AgPSBydW5Mb29w
OwotICAgIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpzaGFyZWQoKS5kaWRDaGFuZ2VSdW5Mb29w
KCp0aGlzLCBydW5Mb29wKTsKLX0KLSNlbmRpZiAvLyBVU0UoQ0YpCi0KIFNjcmF0Y2hCdWZmZXIq
IFZNOjpzY3JhdGNoQnVmZmVyRm9yU2l6ZShzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoIXNpemUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDI2NDAzMikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0
LDYgKzk0LDcgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFJ1bkxvb3A7CiBj
bGFzcyBTaW1wbGVTdGF0czsKIH0gLy8gbmFtZXNwYWNlIFdURgogdXNpbmcgV1RGOjpTaW1wbGVT
dGF0czsKQEAgLTMxMiw3ICszMTMsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgc2hhcmVkSW5zdGFuY2VFeGlzdHMoKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgVk0mIHNoYXJlZEluc3RhbmNlKCk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPFZNPiBjcmVhdGUoSGVhcFR5cGUgPSBTbWFsbEhlYXApOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWY8Vk0+IGNyZWF0ZShIZWFwVHlwZSA9IFNtYWxsSGVhcCwgV1RG
OjpSdW5Mb29wKiA9IG51bGxwdHIpOwogICAgIHN0YXRpYyBSZWY8Vk0+IGNyZWF0ZUNvbnRleHRH
cm91cChIZWFwVHlwZSA9IFNtYWxsSGVhcCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgflZNKCk7
CiAKQEAgLTM1MywxMCArMzU0LDcgQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIG1faWQ7CiAg
ICAgUmVmUHRyPEpTTG9jaz4gbV9hcGlMb2NrOwotI2lmIFVTRShDRikKLSAgICAvLyBUaGVzZSBu
ZWVkIHRvIGJlIGluaXRpYWxpemVkIGJlZm9yZSBoZWFwIGJlbG93LgotICAgIFJldGFpblB0cjxD
RlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsKLSNlbmRpZgorICAgIFJlZjxXVEY6OlJ1bkxvb3A+IG1f
cnVuTG9vcDsKIAogICAgIFdlYWtSYW5kb20gbV9yYW5kb207CiAgICAgSW50ZWdyaXR5OjpSYW5k
b20gbV9pbnRlZ3JpdHlSYW5kb207CkBAIC0xMDc5LDEwICsxMDc3LDcgQEAgcHVibGljOgogICAg
IGJvb2wgbmVlZEV4Y2VwdGlvbkNoZWNrKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkRXhjZXB0aW9u
Q2hlY2s7IH0KICNlbmRpZgogCi0jaWYgVVNFKENGKQotICAgIENGUnVuTG9vcFJlZiBydW5Mb29w
KCkgY29uc3QgeyByZXR1cm4gbV9ydW5Mb29wLmdldCgpOyB9Ci0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzZXRSdW5Mb29wKENGUnVuTG9vcFJlZik7Ci0jZW5kaWYgLy8gVVNFKENGKQorICAg
IFdURjo6UnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVuTG9vcDsgfQogCiAg
ICAgc3RhdGljIHZvaWQgc2V0Q3Jhc2hPblZNQ3JlYXRpb24oYm9vbCk7CiAKQEAgLTExMDIsNyAr
MTA5Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKIAotICAgIFZNKFZNVHlwZSwgSGVhcFR5cGUpOworICAgIFZNKFZNVHlwZSwg
SGVhcFR5cGUsIFdURjo6UnVuTG9vcCogPSBudWxscHRyKTsKICAgICBzdGF0aWMgVk0qJiBzaGFy
ZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNy0xMCAgR2VvZmZyZXkg
R2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIEpTUnVuTG9vcFRpbWVyIHNob3Vs
ZCB1c2UgV1RGOjpSdW5Mb29wIHJhdGhlciB0aGFuIGN1c3RvbSBDRiBjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQxMDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0NvbW1v
blZNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbW1vblZNU2xvdyk6IFN1cHBseSBhIFJ1bkxv
b3AgYXQgY29uc3RydWN0aW9uIHRpbWUgc2luY2UKKyAgICAgICAgSlNDIHJlcXVpcmVzIHRoYXQg
bm93LgorCiAyMDIwLTA3LTA3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFVuYWJsZSB0byBzY3JvbGwgZWxjb21lcmljby5wZSBwYWdlIHVudGlsIHRo
ZSBwYWdlIGZpbmlzaGVzIGxvYWRpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0NvbW1vblZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9D
b21tb25WTS5jcHAJKHJldmlzaW9uIDI2NDAzMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0NvbW1vblZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsMTMgQEAgSlNDOjpW
TSYgY29tbW9uVk1TbG93KCkKICAgICAvLyBBbHNvLCBpbml0aWFsaXplTWFpblRocmVhZCgpIGRv
ZXMgbm90aGluZyBvbiBpT1MuCiAgICAgU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZU1haW5U
aHJlYWQoKTsKIAotICAgIGF1dG8mIHZtID0gSlNDOjpWTTo6Y3JlYXRlKEpTQzo6TGFyZ2VIZWFw
KS5sZWFrUmVmKCk7CisjaWYgVVNFKFdFQl9USFJFQUQpCisgICAgUnVuTG9vcCogcnVuTG9vcCA9
ICZSdW5Mb29wOjp3ZWIoKTsKKyNlbHNlCisgICAgUnVuTG9vcCogcnVuTG9vcCA9IG51bGxwdHI7
CisjZW5kaWYKKworICAgIGF1dG8mIHZtID0gSlNDOjpWTTo6Y3JlYXRlKEpTQzo6TGFyZ2VIZWFw
LCBydW5Mb29wKS5sZWFrUmVmKCk7CiAKICAgICBnX2NvbW1vblZNT3JOdWxsID0gJnZtOwogCkBA
IC02NCw3ICs3MCw2IEBAIEpTQzo6Vk0mIGNvbW1vblZNU2xvdygpCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBpZiAoV2ViVGhyZWFkSXNFbmFibGVkKCkpCiAgICAgICAgIHZtLmFwaUxv
Y2soKS5tYWtlV2ViVGhyZWFkQXdhcmUoKTsKLSAgICB2bS5zZXRSdW5Mb29wKFdlYlRocmVhZFJ1
bkxvb3AoKSk7CiAgICAgdm0uaGVhcC5tYWNoaW5lVGhyZWFkcygpLmFkZEN1cnJlbnRUaHJlYWQo
KTsKICNlbmRpZgogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNjQyMzQpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wNy0xMCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2Fy
ZW5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzb21lIHRlc3RpbmcgZm9yIEpTUnVuTG9vcFRp
bWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQx
OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
c29tZSB0ZXN0IGNvdmVyYWdlIHRvIEpTUnVuTG9vcFRpbWVyIHNpbmNlIEknbSBjaGFuZ2luZyBp
dC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvSmF2YVNjcmlwdENv
cmUvSlNSdW5Mb29wVGltZXIubW06IEFkZGVkLgorICAgICAgICAoLVtUZXN0T2JqZWN0IGRlYWxs
b2NdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIwLTA3LTEwICBBYWth
c2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbRVdTXSBsYXlvdXQt
dGVzdCByZXN1bHRzIHNob3VsZG4ndCBiZSBob3N0ZWQgb24gZXdzIHNlcnZlcgpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2NDAzMikKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC04Nyw2ICs4Nyw3IEBACiAJCTExQjdGRDI4MjE5RjQ3MTEwMDY5QjI3RiAvKiBGaXJzdE1l
YW5pbmdmdWxQYWludE1pbGVzdG9uZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxMUI3RkQyMjIxOUY0NkREMDA2OUIyN0YgLyogRmlyc3RNZWFuaW5n
ZnVsUGFpbnRNaWxlc3RvbmUuY3BwICovOyB9OwogCQkxMUMyNTk4RDIxRkE2MzI0MDA0QzlFMjMg
LyogYXN5bmMtc2NyaXB0LWxvYWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMUMyNTk4QzIxRkE2MThEMDA0QzlFMjMgLyogYXN5bmMt
c2NyaXB0LWxvYWQuaHRtbCAqLzsgfTsKIAkJMTQzRERFOTgyMEM5MDE4QjAwN0Y3NkZBIC8qIFNl
Y3VyaXR5LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3NEY1NUQwMjA0RDQ3MUMwMDI5NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsg
Ki87IH07CisJCTE0Q0M0MkU2MjRCOEQ4RkEwMEU2NEY0OCAvKiBKU1J1bkxvb3BUaW1lci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0Q0M0MkU1MjRC
OEQ4RkEwMEU2NEY0OCAvKiBKU1J1bkxvb3BUaW1lci5tbSAqLzsgfTsKIAkJMUEwMkM4NzAxMjVE
NENGRDAwRTNGNEJEIC8qIGZpbmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTAyQzg0QjEyNUQ0QTVFMDBFM0Y0QkQgLyogZmluZC5o
dG1sICovOyB9OwogCQkxQTM1MjRBRTFENjNBNEZCMDAzMTcyOUIgLyogU2NvcGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzNTI0QUMxRDYzQTRG
QjAwMzE3MjlCIC8qIFNjb3BlLmNwcCAqLzsgfTsKIAkJMUE0RjgxQ0YxQkRGRkQ1MzAwNEU2NzJF
IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0RjgxQ0QxQkRGRkQ1MzAwNEU2NzJFIC8qIFJlbW90
ZU9iamVjdFJlZ2lzdHJ5UGx1Z0luLm1tICovOyB9OwpAQCAtMTY4MSw2ICsxNjgyLDcgQEAKIAkJ
MTFDMjU5OEMyMUZBNjE4RDAwNEM5RTIzIC8qIGFzeW5jLXNjcmlwdC1sb2FkLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXN5bmMtc2NyaXB0LWxvYWQuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NDY0MDEyMTY3QTgzMDUwMDBCRDIxOCAvKiBMYXlvdXRV
bml0VGVzdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0
VW5pdFRlc3RzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0RDQwRUMyMjFC
NDZBNzAwNEI0NzRGIC8qIFVVSUQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVVVJRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0Q0M0MkU1MjRC
OEQ4RkEwMEU2NEY0OCAvKiBKU1J1bkxvb3BUaW1lci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEpTUnVuTG9vcFRpbWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxNEYzQjExMjE1RTQ1RUFCMDAyMTAwNjkgLyogU2F0dXJhdGVkQXJpdGhtZXRp
Y09wZXJhdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2F0
dXJhdGVkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQTAyQzg0QjEyNUQ0QTVFMDBFM0Y0QkQgLyogZmluZC5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gZmluZC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QTAyQzg0RTEyNUQ0QTg0MDBFM0Y0QkQgLyogRmluZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTMwMzcsNiArMzAzOSwxNCBAQAogCQkJbmFtZSA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKIAkJfTsKKwkJMTRDQzQyRTAyNEI4RDdFNzAwRTY0RjQ4IC8qIEphdmFTY3JpcHRD
b3JlICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxNEND
NDJFNTI0QjhEOEZBMDBFNjRGNDggLyogSlNSdW5Mb29wVGltZXIubW0gKi8sCisJCQkpOworCQkJ
cGF0aCA9IEphdmFTY3JpcHRDb3JlOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsK
IAkJMUFCNjc0QURGRTlENTRCNTExQ0EyQ0JCIC8qIFByb2R1Y3RzICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTQyNDYsNiArNDI1Niw3IEBACiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTc1NjA5MTc2MTkyNTlDNTkwMDlFRjA2
RSAvKiBpb3MgKi8sCisJCQkJMTRDQzQyRTAyNEI4RDdFNzAwRTY0RjQ4IC8qIEphdmFTY3JpcHRD
b3JlICovLAogCQkJCUMwN0U2Q0FEMTNGRDY3NjUwMDM4QjIyQiAvKiBtYWMgKi8sCiAJCQkJQzA4
NTg3RjkxM0ZFQzM5QjAwMUVGNEU1IC8qIFRlc3RXZWJLaXRBUEkgKi8sCiAJCQkJNDQwQTFEMzYx
NEEwMTAwMDAwOEE2NkYyIC8qIFdlYkNvcmUgKi8sCkBAIC01MDYyLDYgKzUwNzMsNyBAQAogCQkJ
CTUxODIwQTREMjJGNEVFN0YwMERGMEEwMSAvKiBKYXZhc2NyaXB0VVJMTmF2aWdhdGlvbi5tbSBp
biBTb3VyY2VzICovLAogCQkJCTVDMDE2MEMxMjFBMTMyNDYwMDc3RkEzMiAvKiBKSVRFbmFibGVk
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTM1RkM3QjIyMkI4MkE3MzAwRjMyRjk4IC8qIEpTTG9j
a1Rha2VzV2ViVGhyZWFkTG9jay5tbSBpbiBTb3VyY2VzICovLAorCQkJCTE0Q0M0MkU2MjRCOEQ4
RkEwMEU2NEY0OCAvKiBKU1J1bkxvb3BUaW1lci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RUM0MUE0MTFBN0UwMDQ0N0M0QyAvKiBKU1dyYXBwZXJGb3JOb2RlSW5XZWJGcmFtZS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUY0NUUxNTczMjExMkNFMjkwMDMwN0U4MiAvKiBLZXlib2FyZElucHV0
VGVzdHNJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkyNzhFM0UxOTIzQ0Q4NDJGMDA1QTZCODAg
LyogS2V5ZWRDb2RpbmcuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL0pTUnVuTG9vcFRpbWVyLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvSmF2YVNjcmlwdENvcmUvSlNSdW5Mb29wVGltZXIu
bW0JKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9KYXZhU2NyaXB0
Q29yZS9KU1J1bkxvb3BUaW1lci5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJXVEZTdHJpbmdVdGls
aXRpZXMuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CisjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8
d3RmL1VSTC5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05T
VVJMRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KKyNpbXBvcnQg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitzdGF0aWMgYm9vbCBzX2lzUnVubmluZ1J1bkxvb3A7
CitzdGF0aWMgYm9vbCBzX2RvbmU7CitzdGF0aWMgV1RGOjpSdW5Mb29wKiBzX2V4cGVjdGVkUnVu
TG9vcDsKKworQGludGVyZmFjZSBUZXN0T2JqZWN0IDogTlNPYmplY3QKKy0gKHZvaWQpZGVhbGxv
YzsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFRlc3RPYmplY3QKKy0gKHZvaWQpZGVhbGxvYwor
eworICAgIGlmIChzX2lzUnVubmluZ1J1bkxvb3ApIHsKKyAgICAgICAgRVhQRUNUX0VRKCZSdW5M
b29wOjpjdXJyZW50KCksIHNfZXhwZWN0ZWRSdW5Mb29wKTsKKyAgICAgICAgc19kb25lID0gdHJ1
ZTsKKyAgICB9CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CitAZW5kCisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKworLy8gSmF2YVNjcmlwdENvcmUncyBiZWhhdmlvciBhdCB0aGUgdGlt
ZSBvZiB3cml0aW5nIGlzIHRoYXQgZGVzdHJ1Y3RvcnMKKy8vIHJ1biBhc3luY2hyb25vdXNseSBv
biB0aGUgdGhyZWFkIHRoYXQgYWxsb2NhdGVkIHRoZSBWTSwgdW5sZXNzIHRoZXkgcnVuCisvLyBz
eW5jaHJvbm91c2x5IGR1cmluZyBhbiBBUEkgY2FsbCBvbiBzb21lIG90aGVyIHRocmVhZC4KKwor
VEVTVChKYXZhU2NyaXB0Q29yZSwgSW5jcmVtZW50YWxTd2VlcGVyTWFpblRocmVhZCkKK3sKKyAg
ICBhdXRvIGNvbnRleHQgPSBhZG9wdE5TKFtKU0NvbnRleHQgbmV3XSk7CisgICAgc19leHBlY3Rl
ZFJ1bkxvb3AgPSAmUnVuTG9vcDo6Y3VycmVudCgpOworCisgICAgd2hpbGUgKCFzX2RvbmUpIHsK
KyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gYWRvcHRO
UyhbVGVzdE9iamVjdCBuZXddKTsKKyAgICAgICAgICAgICAgICBhdXRvIGpzT2JqZWN0ID0gYWRv
cHROUyhbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6b2JqZWN0LmdldCgpIGluQ29udGV4dDpjb250
ZXh0LmdldCgpXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBKU0dhcmJhZ2VDb2xsZWN0
KFtjb250ZXh0LmdldCgpIEpTR2xvYmFsQ29udGV4dFJlZl0pOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBzX2lzUnVubmluZ1J1bkxvb3AgPSB0cnVlOworICAgICAgICAgICAgUnVuTG9vcDo6
Y3VycmVudCgpLmN5Y2xlKCk7CisgICAgICAgICAgICBzX2lzUnVubmluZ1J1bkxvb3AgPSBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFWFBFQ1RfVFJVRSh0cnVlKTsKK30KKworVEVTVChK
YXZhU2NyaXB0Q29yZSwgSW5jcmVtZW50YWxTd2VlcGVyU2Vjb25kYXJ5VGhyZWFkKQoreworICAg
IGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW0pTQ29udGV4dCBuZXddKTsKKyAgICBzX2V4cGVjdGVk
UnVuTG9vcCA9ICZSdW5Mb29wOjpjdXJyZW50KCk7CisKKyAgICB3aGlsZSAoIXNfZG9uZSkgewor
ICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIGRpc3BhdGNoX3N5bmMoZGlz
cGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShRT1NfQ0xBU1NfVVNFUl9JTlRFUkFDVElWRSwgMCksIF57
CisgICAgICAgICAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhdXRvIG9iamVjdCA9IGFkb3B0TlMoW1Rlc3RPYmplY3QgbmV3XSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhdXRvIGpzT2JqZWN0ID0gYWRvcHROUyhbSlNWYWx1ZSB2YWx1ZVdpdGhP
YmplY3Q6b2JqZWN0LmdldCgpIGluQ29udGV4dDpjb250ZXh0LmdldCgpXSk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgSlNHYXJiYWdlQ29sbGVjdChbY29udGV4
dC5nZXQoKSBKU0dsb2JhbENvbnRleHRSZWZdKTsKKworICAgICAgICAgICAgICAgICAgICBzX2lz
UnVubmluZ1J1bkxvb3AgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuY3ljbGUoKTsKKyAgICAgICAgICAgICAgICAgICAgc19pc1J1bm5pbmdSdW5Mb29wID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
IHNfaXNSdW5uaW5nUnVuTG9vcCA9IHRydWU7CisgICAgICAgICAgICBSdW5Mb29wOjpjdXJyZW50
KCkuY3ljbGUoKTsKKyAgICAgICAgICAgIHNfaXNSdW5uaW5nUnVuTG9vcCA9IGZhbHNlOworICAg
ICAgICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404045</attachid>
            <date>2020-07-10 22:13:24 -0700</date>
            <delta_ts>2020-07-11 09:04:24 -0700</delta_ts>
            <desc>Patch for landing - fixed iOS WK2 crash</desc>
            <filename>bug-214102-20200710221323.patch</filename>
            <type>text/plain</type>
            <size>18590</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MjYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwxNiArMSwzIEBA
Ci0yMDIwLTA3LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+Ci0KLSAgICAgICAg
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjQyNDIuCi0KLSAgICAgICAgQ2F1c2VkIG1hbnkgY3Jh
c2hlcyBvbiBpT1MgYm90cwotCi0gICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKLQotICAgICAg
ICAiSlNSdW5Mb29wVGltZXIgc2hvdWxkIHVzZSBXVEY6OlJ1bkxvb3AgcmF0aGVyIHRoYW4gY3Vz
dG9tIENGCi0gICAgICAgIGNvZGUiCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTQxMDIKLSAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzI2NDI0MgotCiAyMDIwLTA3LTEwICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgSlNSdW5Mb29wVGltZXIgc2hvdWxkIHVzZSBXVEY6OlJ1bkxvb3Ag
cmF0aGVyIHRoYW4gY3VzdG9tIENGIGNvZGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAJKHJldmlzaW9uIDI2NDI2MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNDYgKzQwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgaW5saW5l
IEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpFcG9jaFRpbWUgZXBvY2hUaW1lKFNlY29uZHMgZGVs
YXkpCiB7Ci0jaWYgVVNFKENGKQotICAgIHJldHVybiBTZWNvbmRzIHsgQ0ZBYnNvbHV0ZVRpbWVH
ZXRDdXJyZW50KCkgKyBkZWxheS52YWx1ZSgpIH07Ci0jZWxzZQogICAgIHJldHVybiBNb25vdG9u
aWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpICsgZGVsYXk7Ci0jZW5kaWYKLX0KLQot
I2lmIFVTRShDRikKLXZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmlyZUNh
bGxiYWNrKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKiBjb250ZXh0UHRyKQotewotICAgIHN0YXRp
Y19jYXN0PEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyKj4oY29udGV4dFB0ciktPnRpbWVyRGlkRmly
ZSgpOwogfQogCi12b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6OnNldFJ1
bkxvb3AoTWFuYWdlciogbWFuYWdlciwgQ0ZSdW5Mb29wUmVmIG5ld1J1bkxvb3ApCi17Ci0gICAg
aWYgKHJ1bkxvb3ApIHsKLSAgICAgICAgQ0ZSdW5Mb29wUmVtb3ZlVGltZXIocnVuTG9vcC5nZXQo
KSwgdGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAgICAgIENGUnVuTG9v
cFRpbWVySW52YWxpZGF0ZSh0aW1lci5nZXQoKSk7Ci0gICAgICAgIHJ1bkxvb3AuY2xlYXIoKTsK
LSAgICAgICAgdGltZXIuY2xlYXIoKTsKLSAgICB9Ci0KLSAgICBpZiAobmV3UnVuTG9vcCkgewot
ICAgICAgICBydW5Mb29wID0gbmV3UnVuTG9vcDsKLSAgICAgICAgbWVtc2V0KCZjb250ZXh0LCAw
LCBzaXplb2YoQ0ZSdW5Mb29wVGltZXJDb250ZXh0KSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1hbmFnZXIpOwotICAgICAgICBjb250ZXh0LmluZm8gPSBtYW5hZ2VyOwotICAgICAgICB0aW1l
ciA9IGFkb3B0Q0YoQ0ZSdW5Mb29wVGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZB
YnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBzX2RlY2FkZS5zZWNvbmRzKCksIENGQWJzb2x1dGVU
aW1lR2V0Q3VycmVudCgpICsgc19kZWNhZGUuc2Vjb25kcygpLCAwLCAwLCBKU1J1bkxvb3BUaW1l
cjo6TWFuYWdlcjo6dGltZXJEaWRGaXJlQ2FsbGJhY2ssICZjb250ZXh0KSk7Ci0gICAgICAgIENG
UnVuTG9vcEFkZFRpbWVyKHJ1bkxvb3AuZ2V0KCksIHRpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29t
bW9uTW9kZXMpOwotCi0gICAgICAgIEVwb2NoVGltZSBzY2hlZHVsZVRpbWUgPSBlcG9jaFRpbWUo
c19kZWNhZGUpOwotICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiB0aW1lcnMpCi0gICAgICAgICAg
ICBzY2hlZHVsZVRpbWUgPSBzdGQ6Om1pbihwYWlyLnNlY29uZCwgc2NoZWR1bGVUaW1lKTsKLSAg
ICAgICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUodGltZXIuZ2V0KCksIHNjaGVkdWxl
VGltZS52YWx1ZSgpKTsKLSAgICB9Ci19Ci0jZWxzZQotSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6
OlBlclZNRGF0YTo6UGVyVk1EYXRhKE1hbmFnZXImIG1hbmFnZXIpCi0gICAgOiBydW5Mb29wKCZS
dW5Mb29wOjpjdXJyZW50KCkpCi0gICAgLCB0aW1lcihtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVy
PE1hbmFnZXI+PigqcnVuTG9vcCwgJm1hbmFnZXIsICZKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6
dGltZXJEaWRGaXJlQ2FsbGJhY2spKQorSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0
YTo6UGVyVk1EYXRhKE1hbmFnZXImIG1hbmFnZXIsIFJ1bkxvb3AmIHJ1bkxvb3ApCisgICAgOiBy
dW5Mb29wKHJ1bkxvb3ApCisgICAgLCB0aW1lcihtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1h
bmFnZXI+PihydW5Mb29wLCAmbWFuYWdlciwgJkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1l
ckRpZEZpcmVDYWxsYmFjaykpCiB7CiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICB0aW1l
ci0+c2V0UHJpb3JpdHkoUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpKYXZhc2NyaXB0VGltZXIpOwpA
QCAtOTEsMTMgKzU3LDkgQEAgdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRG
aQogewogICAgIHRpbWVyRGlkRmlyZSgpOwogfQotI2VuZGlmCiAKIEpTUnVuTG9vcFRpbWVyOjpN
YW5hZ2VyOjpQZXJWTURhdGE6On5QZXJWTURhdGEoKQogewotI2lmIFVTRShDRikKLSAgICBzZXRS
dW5Mb29wKG51bGxwdHIsIG51bGxwdHIpOwotI2VuZGlmCiB9CiAKIHZvaWQgSlNSdW5Mb29wVGlt
ZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmlyZSgpCkBAIC0xMDYsMjEgKzY4LDEyIEBAIHZvaWQgSlNS
dW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmkKIAogICAgIHsKICAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwotI2lmIFVTRShDRikKLSAgICAgICAgQ0ZSdW5Mb29w
UmVmIGN1cnJlbnRSdW5Mb29wID0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpOwotI2Vsc2UKICAgICAg
ICAgUnVuTG9vcCogY3VycmVudFJ1bkxvb3AgPSAmUnVuTG9vcDo6Y3VycmVudCgpOwotI2VuZGlm
CiAgICAgICAgIEVwb2NoVGltZSBub3dFcG9jaFRpbWUgPSBlcG9jaFRpbWUoMF9zKTsKICAgICAg
ICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fbWFwcGluZykgewogICAgICAgICAgICAgUGVyVk1EYXRh
JiBkYXRhID0gKmVudHJ5LnZhbHVlOwotI2lmIFVTRShDRikKLSAgICAgICAgICAgIGlmIChkYXRh
LnJ1bkxvb3AuZ2V0KCkgIT0gY3VycmVudFJ1bkxvb3ApCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0jZWxzZQotICAgICAgICAgICAgaWYgKGRhdGEucnVuTG9vcCAhPSBjdXJyZW50UnVuTG9v
cCkKKyAgICAgICAgICAgIGlmIChkYXRhLnJ1bkxvb3AucHRyKCkgIT0gY3VycmVudFJ1bkxvb3Ap
CiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0jZW5kaWYKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgRXBvY2hUaW1lIHNjaGVkdWxlVGltZSA9IGVwb2NoVGltZShzX2RlY2FkZSk7CiAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGEudGltZXJzLnNpemUoKTsgKytpKSB7
CkBAIC0xNDAsMTEgKzkzLDcgQEAgdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJE
aWRGaQogICAgICAgICAgICAgICAgIHRpbWVyc1RvRmlyZS5hcHBlbmQoV1RGTW92ZShwYWlyLmZp
cnN0KSk7CiAgICAgICAgICAgICB9CiAKLSNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBDRlJ1bkxv
b3BUaW1lclNldE5leHRGaXJlRGF0ZShkYXRhLnRpbWVyLmdldCgpLCBzY2hlZHVsZVRpbWUudmFs
dWUoKSk7Ci0jZWxzZQogICAgICAgICAgICAgZGF0YS50aW1lci0+c3RhcnRPbmVTaG90KHN0ZDo6
bWF4KDBfcywgc2NoZWR1bGVUaW1lIC0gTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNl
RXBvY2goKSkpOwotI2VuZGlmCiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE2NCwxMCArMTEzLDcg
QEAgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXImIEpTUnVuTG9vcFRpbWVyOgogCiB2b2lkIEpTUnVu
TG9vcFRpbWVyOjpNYW5hZ2VyOjpyZWdpc3RlclZNKFZNJiB2bSkKIHsKLSAgICBhdXRvIGRhdGEg
PSBtYWtlVW5pcXVlPFBlclZNRGF0YT4oKnRoaXMpOwotI2lmIFVTRShDRikKLSAgICBkYXRhLT5z
ZXRSdW5Mb29wKHRoaXMsIHZtLnJ1bkxvb3AoKSk7Ci0jZW5kaWYKKyAgICBhdXRvIGRhdGEgPSBt
YWtlVW5pcXVlPFBlclZNRGF0YT4oKnRoaXMsIHZtLnJ1bkxvb3AoKSk7CiAKICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX21hcHBpbmcu
YWRkKHsgdm0uYXBpTG9jaygpIH0sIFdURk1vdmUoZGF0YSkpOwpAQCAtMjA1LDExICsxNTEsNyBA
QCB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpzY2hlZHVsZVRpCiAgICAgaWYgKCFmb3Vu
ZCkKICAgICAgICAgZGF0YS50aW1lcnMuYXBwZW5kKHsgdGltZXIsIGZpcmVFcG9jaFRpbWUgfSk7
CiAKLSNpZiBVU0UoQ0YpCi0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoZGF0YS50
aW1lci5nZXQoKSwgc2NoZWR1bGVUaW1lLnZhbHVlKCkpOwotI2Vsc2UKICAgICBkYXRhLnRpbWVy
LT5zdGFydE9uZVNob3Qoc3RkOjptYXgoMF9zLCBzY2hlZHVsZVRpbWUgLSBNb25vdG9uaWNUaW1l
Ojpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpKSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBKU1J1bkxv
b3BUaW1lcjo6TWFuYWdlcjo6Y2FuY2VsVGltZXIoSlNSdW5Mb29wVGltZXImIHRpbWVyKQpAQCAt
MjQwLDExICsxODIsNyBAQCB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpjYW5jZWxUaW1l
CiAgICAgICAgIHNjaGVkdWxlVGltZSA9IHN0ZDo6bWluKHNjaGVkdWxlVGltZSwgZGF0YS50aW1l
cnNbaV0uc2Vjb25kKTsKICAgICB9CiAKLSNpZiBVU0UoQ0YpCi0gICAgQ0ZSdW5Mb29wVGltZXJT
ZXROZXh0RmlyZURhdGUoZGF0YS50aW1lci5nZXQoKSwgc2NoZWR1bGVUaW1lLnZhbHVlKCkpOwot
I2Vsc2UKICAgICBkYXRhLnRpbWVyLT5zdGFydE9uZVNob3Qoc3RkOjptYXgoMF9zLCBzY2hlZHVs
ZVRpbWUgLSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpKSk7Ci0jZW5k
aWYKIH0KIAogT3B0aW9uYWw8U2Vjb25kcz4gSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVV
bnRpbEZpcmUoSlNSdW5Mb29wVGltZXImIHRpbWVyKQpAQCAtMjY0LDE4ICsyMDIsNiBAQCBPcHRp
b25hbDxTZWNvbmRzPiBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlCiAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIH0KIAotI2lmIFVTRShDRikKLXZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OmRp
ZENoYW5nZVJ1bkxvb3AoVk0mIHZtLCBDRlJ1bkxvb3BSZWYgbmV3UnVuTG9vcCkKLXsKLSAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7Ci0gICAgYXV0byBpdGVyID0gbV9tYXBwaW5n
LmZpbmQoeyB2bS5hcGlMb2NrKCkgfSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoaXRlciAhPSBtX21h
cHBpbmcuZW5kKCkpOwotCi0gICAgUGVyVk1EYXRhJiBkYXRhID0gKml0ZXItPnZhbHVlOwotICAg
IGRhdGEuc2V0UnVuTG9vcCh0aGlzLCBuZXdSdW5Mb29wKTsKLX0KLSNlbmRpZgotCiB2b2lkIEpT
UnVuTG9vcFRpbWVyOjp0aW1lckRpZEZpcmUoKQogewogICAgIE5PX1RBSUxfQ0FMTFMoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuaAko
cmV2aXNpb24gMjY0MjYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5M
b29wVGltZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDYgQEAKICNpbmNsdWRlIDx3
dGYvU2hhcmVkVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgog
Ci0jaWYgVVNFKENGKQotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+
Ci0jZW5kaWYKLQogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTTG9jazsKQEAgLTUwLDExICs0
Niw4IEBAIHB1YmxpYzoKICAgICBjbGFzcyBNYW5hZ2VyIHsKICAgICAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1hbmFnZXIpOwotI2lm
IFVTRShDRikKLSAgICAgICAgc3RhdGljIHZvaWQgdGltZXJEaWRGaXJlQ2FsbGJhY2soQ0ZSdW5M
b29wVGltZXJSZWYsIHZvaWQqKTsKLSNlbHNlCiAgICAgICAgIHZvaWQgdGltZXJEaWRGaXJlQ2Fs
bGJhY2soKTsKLSNlbmRpZgorCiAgICAgICAgIE1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKICAgICAg
ICAgdm9pZCB0aW1lckRpZEZpcmUoKTsKQEAgLTcwLDEwICs2Myw2IEBAIHB1YmxpYzoKIAogICAg
ICAgICBPcHRpb25hbDxTZWNvbmRzPiB0aW1lVW50aWxGaXJlKEpTUnVuTG9vcFRpbWVyJik7CiAK
LSNpZiBVU0UoQ0YpCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlUnVuTG9vcChWTSYsIENGUnVuTG9v
cFJlZiBuZXdSdW5Mb29wKTsKLSNlbmRpZgotCiAgICAgcHJpdmF0ZToKICAgICAgICAgTG9jayBt
X2xvY2s7CiAKQEAgLTgxLDIyICs3MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlclZN
RGF0YSk7CiAgICAgICAgIHB1YmxpYzoKLSNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBQZXJWTURh
dGEoTWFuYWdlciYpIHsgfQotI2Vsc2UKLSAgICAgICAgICAgIFBlclZNRGF0YShNYW5hZ2VyJik7
Ci0jZW5kaWYKKyAgICAgICAgICAgIFBlclZNRGF0YShNYW5hZ2VyJiwgV1RGOjpSdW5Mb29wJik7
CiAgICAgICAgICAgICB+UGVyVk1EYXRhKCk7CiAKLSNpZiBVU0UoQ0YpCi0gICAgICAgICAgICB2
b2lkIHNldFJ1bkxvb3AoTWFuYWdlciosIENGUnVuTG9vcFJlZik7Ci0gICAgICAgICAgICBSZXRh
aW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IHRpbWVyOwotICAgICAgICAgICAgUmV0YWluUHRyPENG
UnVuTG9vcFJlZj4gcnVuTG9vcDsKLSAgICAgICAgICAgIENGUnVuTG9vcFRpbWVyQ29udGV4dCBj
b250ZXh0OwotI2Vsc2UKLSAgICAgICAgICAgIFJ1bkxvb3AqIHJ1bkxvb3A7CisgICAgICAgICAg
ICBSZWY8V1RGOjpSdW5Mb29wPiBydW5Mb29wOwogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFJ1bkxvb3A6OlRpbWVyPE1hbmFnZXI+PiB0aW1lcjsKLSNlbmRpZgogICAgICAgICAgICAgVmVj
dG9yPHN0ZDo6cGFpcjxSZWY8SlNSdW5Mb29wVGltZXI+LCBFcG9jaFRpbWU+PiB0aW1lcnM7CiAg
ICAgICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VU
aW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
bWlzZVRpbWVyLmNwcAkocmV2aXNpb24gMjY0MjYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvbWlzZVRpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTMgKzcwLDgg
QEAgdm9pZCBQcm9taXNlVGltZXI6OmRvV29yayhWTSYgdm0pCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBpZiAobV9wZW5kaW5nUHJvbWlzZXMuaXNFbXB0eSgpICYmIG1fc2hvdWxkU3RvcFJ1bkxv
b3BXaGVuQWxsUHJvbWlzZXNGaW5pc2gpIHsKLSNpZiBVU0UoQ0YpCi0gICAgICAgIENGUnVuTG9v
cFN0b3Aodm0ucnVuTG9vcCgpKTsKLSNlbHNlCisgICAgaWYgKG1fcGVuZGluZ1Byb21pc2VzLmlz
RW1wdHkoKSAmJiBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFByb21pc2VzRmluaXNoKQogICAg
ICAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOwotI2VuZGlmCi0gICAgfQogCiAgICAgbV90
YXNrTG9jay51bmxvY2soKTsKIH0KQEAgLTg0LDE3ICs3OSwxMCBAQCB2b2lkIFByb21pc2VUaW1l
cjo6ZG9Xb3JrKFZNJiB2bSkKIHZvaWQgUHJvbWlzZVRpbWVyOjpydW5SdW5Mb29wKCkKIHsKICAg
ICBBU1NFUlQoIW1fYXBpTG9jay0+dm0oKS0+Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2so
KSk7Ci0jaWYgVVNFKENGKQotICAgIEFTU0VSVChDRlJ1bkxvb3BHZXRDdXJyZW50KCkgPT0gbV9h
cGlMb2NrLT52bSgpLT5ydW5Mb29wKCkpOwotI2VuZGlmCisgICAgQVNTRVJUKCZSdW5Mb29wOjpj
dXJyZW50KCkgPT0gJm1fYXBpTG9jay0+dm0oKS0+cnVuTG9vcCgpKTsKICAgICBtX3Nob3VsZFN0
b3BSdW5Mb29wV2hlbkFsbFByb21pc2VzRmluaXNoID0gdHJ1ZTsKLSAgICBpZiAobV9wZW5kaW5n
UHJvbWlzZXMuc2l6ZSgpKSB7Ci0jaWYgVVNFKENGKQotICAgICAgICBDRlJ1bkxvb3BSdW4oKTsK
LSNlbHNlCisgICAgaWYgKG1fcGVuZGluZ1Byb21pc2VzLnNpemUoKSkKICAgICAgICAgUnVuTG9v
cDo6cnVuKCk7Ci0jZW5kaWYKLSAgICB9CiB9CiAKIHZvaWQgUHJvbWlzZVRpbWVyOjphZGRQZW5k
aW5nUHJvbWlzZShWTSYgdm0sIEpTUHJvbWlzZSogdGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2Vs
bD4+JiYgZGVwZW5kZW5jaWVzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAkocmV2aXNpb24gMjY0MjYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIsMTIgKzI2MiwxMCBAQCBpbmxpbmUgdW5zaWduZWQg
Vk06Om5leHRJRCgpCiAKIHN0YXRpYyBib29sIHZtQ3JlYXRpb25TaG91bGRDcmFzaCA9IGZhbHNl
OwogCi1WTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCitWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCkKICAg
ICA6IG1faWQobmV4dElEKCkpCiAgICAgLCBtX2FwaUxvY2soYWRvcHRSZWYobmV3IEpTTG9jayh0
aGlzKSkpCi0jaWYgVVNFKENGKQotICAgICwgbV9ydW5Mb29wKENGUnVuTG9vcEdldEN1cnJlbnQo
KSkKLSNlbmRpZiAvLyBVU0UoQ0YpCisgICAgLCBtX3J1bkxvb3AocnVuTG9vcCA/ICpydW5Mb29w
IDogV1RGOjpSdW5Mb29wOjpjdXJyZW50KCkpCiAgICAgLCBtX3JhbmRvbShPcHRpb25zOjpzZWVk
T2ZWTVJhbmRvbUZvckZ1enplcigpID8gT3B0aW9uczo6c2VlZE9mVk1SYW5kb21Gb3JGdXp6ZXIo
KSA6IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpCiAgICAgLCBtX2ludGVncml0eVJh
bmRvbSgqdGhpcykKICAgICAsIGhlYXAoKnRoaXMsIGhlYXBUeXBlKQpAQCAtNjcxLDkgKzY2OSw5
IEBAIFJlZjxWTT4gVk06OmNyZWF0ZUNvbnRleHRHcm91cChIZWFwVHlwZSAKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBWTShBUElDb250ZXh0R3JvdXAsIGhlYXBUeXBlKSk7CiB9CiAKLVJlZjxW
TT4gVk06OmNyZWF0ZShIZWFwVHlwZSBoZWFwVHlwZSkKK1JlZjxWTT4gVk06OmNyZWF0ZShIZWFw
VHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wKQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFZNKERlZmF1bHQsIGhlYXBUeXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgVk0oRGVmYXVsdCwgaGVhcFR5cGUsIHJ1bkxvb3ApKTsKIH0KIAogYm9vbCBWTTo6c2hhcmVk
SW5zdGFuY2VFeGlzdHMoKQpAQCAtMTM1NSwxNSArMTM1Myw2IEBAIHZvaWQgVk06OnZlcmlmeUV4
Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXMKIH0KICNlbmRpZgogCi0jaWYgVVNFKENGKQotdm9pZCBW
TTo6c2V0UnVuTG9vcChDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKLXsKLSAgICBBU1NFUlQocnVuTG9v
cCk7Ci0gICAgbV9ydW5Mb29wID0gcnVuTG9vcDsKLSAgICBKU1J1bkxvb3BUaW1lcjo6TWFuYWdl
cjo6c2hhcmVkKCkuZGlkQ2hhbmdlUnVuTG9vcCgqdGhpcywgcnVuTG9vcCk7Ci19Ci0jZW5kaWYg
Ly8gVVNFKENGKQotCiBTY3JhdGNoQnVmZmVyKiBWTTo6c2NyYXRjaEJ1ZmZlckZvclNpemUoc2l6
ZV90IHNpemUpCiB7CiAgICAgaWYgKCFzaXplKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCShyZXZpc2lvbiAyNjQyNjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCw3IEBACiAjZW5kaWYKIAogbmFtZXNw
YWNlIFdURiB7CitjbGFzcyBSdW5Mb29wOwogY2xhc3MgU2ltcGxlU3RhdHM7CiB9IC8vIG5hbWVz
cGFjZSBXVEYKIHVzaW5nIFdURjo6U2ltcGxlU3RhdHM7CkBAIC0zMTIsNyArMzEzLDcgQEAgcHVi
bGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHNoYXJlZEluc3RhbmNlRXhp
c3RzKCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFZNJiBzaGFyZWRJbnN0YW5jZSgp
OwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxWTT4gY3JlYXRlKEhlYXBUeXBl
ID0gU21hbGxIZWFwKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFZNPiBjcmVh
dGUoSGVhcFR5cGUgPSBTbWFsbEhlYXAsIFdURjo6UnVuTG9vcCogPSBudWxscHRyKTsKICAgICBz
dGF0aWMgUmVmPFZNPiBjcmVhdGVDb250ZXh0R3JvdXAoSGVhcFR5cGUgPSBTbWFsbEhlYXApOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIH5WTSgpOwogCkBAIC0zNTMsMTAgKzM1NCw3IEBAIHByaXZh
dGU6CiAKICAgICB1bnNpZ25lZCBtX2lkOwogICAgIFJlZlB0cjxKU0xvY2s+IG1fYXBpTG9jazsK
LSNpZiBVU0UoQ0YpCi0gICAgLy8gVGhlc2UgbmVlZCB0byBiZSBpbml0aWFsaXplZCBiZWZvcmUg
aGVhcCBiZWxvdy4KLSAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7Ci0jZW5k
aWYKKyAgICBSZWY8V1RGOjpSdW5Mb29wPiBtX3J1bkxvb3A7CiAKICAgICBXZWFrUmFuZG9tIG1f
cmFuZG9tOwogICAgIEludGVncml0eTo6UmFuZG9tIG1faW50ZWdyaXR5UmFuZG9tOwpAQCAtMTA3
OSwxMCArMTA3Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRFeGNlcHRpb25DaGVjaygpIGNv
bnN0IHsgcmV0dXJuIG1fbmVlZEV4Y2VwdGlvbkNoZWNrOyB9CiAjZW5kaWYKIAotI2lmIFVTRShD
RikKLSAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVuTG9vcC5n
ZXQoKTsgfQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UnVuTG9vcChDRlJ1bkxvb3BS
ZWYpOwotI2VuZGlmIC8vIFVTRShDRikKKyAgICBXVEY6OlJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25z
dCB7IHJldHVybiBtX3J1bkxvb3A7IH0KIAogICAgIHN0YXRpYyB2b2lkIHNldENyYXNoT25WTUNy
ZWF0aW9uKGJvb2wpOwogCkBAIC0xMTA2LDcgKzExMDEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICBWTShWTVR5cGUs
IEhlYXBUeXBlKTsKKyAgICBWTShWTVR5cGUsIEhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqID0gbnVs
bHB0cik7CiAgICAgc3RhdGljIFZNKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOwogICAgIHZv
aWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MjYz
KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2ICsx
LDMgQEAKLTIwMjAtMDctMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KLQotICAg
ICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2NDI0Mi4KLQotICAgICAgICBDYXVzZWQgbWFu
eSBjcmFzaGVzIG9uIGlPUyBib3RzCi0KLSAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgotCi0g
ICAgICAgICJKU1J1bkxvb3BUaW1lciBzaG91bGQgdXNlIFdURjo6UnVuTG9vcCByYXRoZXIgdGhh
biBjdXN0b20gQ0YKLSAgICAgICAgY29kZSIKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxNDEwMgotICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMjY0MjQyCi0KIDIwMjAtMDctMTAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIENsZWFudXAgR2FtZUNvbnRyb2xsZXIgZnJhbWV3b3JrIGJ1
dHRvbiBiaW5kaW5nIHdpdGggc29tZSBjb25zdGFudHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0NvbW1vblZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Db21tb25WTS5jcHAJKHJldmlzaW9uIDI2NDI2MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsMTMg
QEAgSlNDOjpWTSYgY29tbW9uVk1TbG93KCkKICAgICAvLyBBbHNvLCBpbml0aWFsaXplTWFpblRo
cmVhZCgpIGRvZXMgbm90aGluZyBvbiBpT1MuCiAgICAgU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlh
bGl6ZU1haW5UaHJlYWQoKTsKIAotICAgIGF1dG8mIHZtID0gSlNDOjpWTTo6Y3JlYXRlKEpTQzo6
TGFyZ2VIZWFwKS5sZWFrUmVmKCk7CisgICAgUnVuTG9vcCogcnVuTG9vcCA9IG51bGxwdHI7Cisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoUnVuTG9vcCogd2ViID0gUnVuTG9vcDo6
d2ViSWZFeGlzdHMoKSkKKyAgICAgICAgcnVuTG9vcCA9IHdlYjsKKyNlbmRpZgorCisgICAgYXV0
byYgdm0gPSBKU0M6OlZNOjpjcmVhdGUoSlNDOjpMYXJnZUhlYXAsIHJ1bkxvb3ApLmxlYWtSZWYo
KTsKIAogICAgIGdfY29tbW9uVk1Pck51bGwgPSAmdm07CiAKQEAgLTY0LDcgKzcwLDYgQEAgSlND
OjpWTSYgY29tbW9uVk1TbG93KCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChX
ZWJUaHJlYWRJc0VuYWJsZWQoKSkKICAgICAgICAgdm0uYXBpTG9jaygpLm1ha2VXZWJUaHJlYWRB
d2FyZSgpOwotICAgIHZtLnNldFJ1bkxvb3AoV2ViVGhyZWFkUnVuTG9vcCgpKTsKICAgICB2bS5o
ZWFwLm1hY2hpbmVUaHJlYWRzKCkuYWRkQ3VycmVudFRocmVhZCgpOwogI2VuZGlmCiAKSW5kZXg6
IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI2NDI2MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwxNiArMSwz
IEBACi0yMDIwLTA3LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+Ci0KLSAgICAg
ICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjQyNDIuCi0KLSAgICAgICAgQ2F1c2VkIG1hbnkg
Y3Jhc2hlcyBvbiBpT1MgYm90cwotCi0gICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKLQotICAg
ICAgICAiSlNSdW5Mb29wVGltZXIgc2hvdWxkIHVzZSBXVEY6OlJ1bkxvb3AgcmF0aGVyIHRoYW4g
Y3VzdG9tIENGCi0gICAgICAgIGNvZGUiCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTQxMDIKLSAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzI2NDI0MgotCiAyMDIwLTA3LTEwICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3Jp
LkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtUZXN0V2ViS2l0QVBJXVtXaW5dIFJlbW92ZSBX
RUJDT1JFX0VYUE9SVCBhbmQgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgZGVmaW5pdGlvbnMg
aW4gUGxhdGZvcm1XaW4uY21ha2UKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyNjQyNjMpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsNyBAQAogCQkxMUI3
RkQyODIxOUY0NzExMDA2OUIyN0YgLyogRmlyc3RNZWFuaW5nZnVsUGFpbnRNaWxlc3RvbmUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTFCN0ZEMjIy
MTlGNDZERDAwNjlCMjdGIC8qIEZpcnN0TWVhbmluZ2Z1bFBhaW50TWlsZXN0b25lLmNwcCAqLzsg
fTsKIAkJMTFDMjU5OEQyMUZBNjMyNDAwNEM5RTIzIC8qIGFzeW5jLXNjcmlwdC1sb2FkLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTFD
MjU5OEMyMUZBNjE4RDAwNEM5RTIzIC8qIGFzeW5jLXNjcmlwdC1sb2FkLmh0bWwgKi87IH07CiAJ
CTE0M0RERTk4MjBDOTAxOEIwMDdGNzZGQSAvKiBTZWN1cml0eS5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzRGNTVEMDIwNEQ0NzFD
MDAyOTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovOyB9OworCQkxNENDNDJFNjI0QjhEOEZB
MDBFNjRGNDggLyogSlNSdW5Mb29wVGltZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNENDNDJFNTI0QjhEOEZBMDBFNjRGNDggLyogSlNSdW5Mb29w
VGltZXIubW0gKi87IH07CiAJCTFBMDJDODcwMTI1RDRDRkQwMEUzRjRCRCAvKiBmaW5kLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEw
MkM4NEIxMjVENEE1RTAwRTNGNEJEIC8qIGZpbmQuaHRtbCAqLzsgfTsKIAkJMUEzNTI0QUUxRDYz
QTRGQjAwMzE3MjlCIC8qIFNjb3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBMzUyNEFDMUQ2M0E0RkIwMDMxNzI5QiAvKiBTY29wZS5jcHAgKi87
IH07CiAJCTFBNEY4MUNGMUJERkZENTMwMDRFNjcyRSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeVBs
dWdJbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
NEY4MUNEMUJERkZENTMwMDRFNjcyRSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeVBsdWdJbi5tbSAq
LzsgfTsKQEAgLTE2ODksNiArMTY5MCw3IEBACiAJCTExQzI1OThDMjFGQTYxOEQwMDRDOUUyMyAv
KiBhc3luYy1zY3JpcHQtbG9hZC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImFz
eW5jLXNjcmlwdC1sb2FkLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDQ2
NDAxMjE2N0E4MzA1MDAwQkQyMTggLyogTGF5b3V0VW5pdFRlc3RzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dFVuaXRUZXN0cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTE0NEQ0MEVDMjIxQjQ2QTcwMDRCNDc0RiAvKiBVVUlELmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVVSUQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxNENDNDJFNTI0QjhEOEZBMDBFNjRGNDggLyogSlNSdW5Mb29w
VGltZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKU1J1bkxv
b3BUaW1lci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGM0IxMTIxNUU0NUVB
QjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhdHVyYXRlZEFyaXRobWV0aWNPcGVyYXRpb25z
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwMkM4NEIxMjVENEE1RTAwRTNG
NEJEIC8qIGZpbmQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IGZpbmQuaHRtbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwMkM4NEUxMjVENEE4NDAwRTNGNEJEIC8q
IEZpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmluZC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDUyLDYgKzMwNTQsMTQgQEAKIAkJCW5h
bWUgPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTE0Q0M0MkUw
MjRCOEQ3RTcwMEU2NEY0OCAvKiBKYXZhU2NyaXB0Q29yZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTRDQzQyRTUyNEI4RDhGQTAwRTY0RjQ4IC8qIEpT
UnVuTG9vcFRpbWVyLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBKYXZhU2NyaXB0Q29yZTsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTFBQjY3NEFERkU5RDU0QjUxMUNBMkNC
QiAvKiBQcm9kdWN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC00MjY0LDYgKzQyNzQsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKIAkJCQk3NTYwOTE3NjE5MjU5QzU5MDA5RUYwNkUgLyogaW9zICovLAorCQkJCTE0Q0M0MkUw
MjRCOEQ3RTcwMEU2NEY0OCAvKiBKYXZhU2NyaXB0Q29yZSAqLywKIAkJCQlDMDdFNkNBRDEzRkQ2
NzY1MDAzOEIyMkIgLyogbWFjICovLAogCQkJCUMwODU4N0Y5MTNGRUMzOUIwMDFFRjRFNSAvKiBU
ZXN0V2ViS2l0QVBJICovLAogCQkJCTQ0MEExRDM2MTRBMDEwMDAwMDhBNjZGMiAvKiBXZWJDb3Jl
ICovLApAQCAtNTA4NCw2ICs1MDk1LDcgQEAKIAkJCQk1MTgyMEE0RDIyRjRFRTdGMDBERjBBMDEg
LyogSmF2YXNjcmlwdFVSTE5hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzAxNjBD
MTIxQTEzMjQ2MDA3N0ZBMzIgLyogSklURW5hYmxlZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUz
NUZDN0IyMjJCODJBNzMwMEYzMkY5OCAvKiBKU0xvY2tUYWtlc1dlYlRocmVhZExvY2subW0gaW4g
U291cmNlcyAqLywKKwkJCQkxNENDNDJFNjI0QjhEOEZBMDBFNjRGNDggLyogSlNSdW5Mb29wVGlt
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VDNDFBNDExQTdFMDA0NDdDNEMgLyogSlNX
cmFwcGVyRm9yTm9kZUluV2ViRnJhbWUubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDVFMTU3MzIx
MTJDRTI5MDAzMDdFODIgLyogS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMjc4RTNFMTkyM0NEODQyRjAwNUE2QjgwIC8qIEtleWVkQ29kaW5nLmNwcCBpbiBTb3Vy
Y2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404055</attachid>
            <date>2020-07-11 09:03:47 -0700</date>
            <delta_ts>2020-07-13 12:08:15 -0700</delta_ts>
            <desc>Patch for landing - fixed iOS WK2 crash</desc>
            <filename>bug-214102-20200711090346.patch</filename>
            <type>text/plain</type>
            <size>23982</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDIwLTA3LTExICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgVW5yZXZpZXdlZCwgcmUtbGFuZGluZyByMjY0MjQyIHdpdGggY3Jhc2ggZml4ZWQuCisKKyAg
ICAgICAgUmUtbGFuZGVkIGNoYW5nZXNldDoKKworICAgICAgICAiSlNSdW5Mb29wVGltZXIgc2hv
dWxkIHVzZSBXVEY6OlJ1bkxvb3AgcmF0aGVyIHRoYW4gY3VzdG9tIENGCisgICAgICAgIGNvZGUi
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQxMDIK
KyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI2NDI0MgorCisgICAg
ICAgICogcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OmVwb2NoVGlt
ZSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6OlBl
clZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRp
ZEZpcmVDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQ
ZXJWTURhdGE6On5QZXJWTURhdGEpOgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6TWFu
YWdlcjo6dGltZXJEaWRGaXJlKToKKyAgICAgICAgKEpTQzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFn
ZXI6OnJlZ2lzdGVyVk0pOgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6
c2NoZWR1bGVUaW1lcik6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpj
YW5jZWxUaW1lcik6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJW
TURhdGE6OnNldFJ1bkxvb3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1l
cjo6TWFuYWdlcjo6ZGlkQ2hhbmdlUnVuTG9vcCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5oOgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6TWFuYWdl
cjo6UGVyVk1EYXRhOjpQZXJWTURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvUHJv
bWlzZVRpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvbWlzZVRpbWVyOjpkb1dvcmspOgorICAg
ICAgICAoSlNDOjpQcm9taXNlVGltZXI6OnJ1blJ1bkxvb3ApOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAoSlNDOjpWTTo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6Vk06OnNldFJ1bkxvb3ApOiBEZWxldGVkLgorICAgICAgICAqIHJ1
bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OnJ1bkxvb3AgY29uc3QpOgorCiAyMDIwLTA3
LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcmV2ZXJ0aW5nIHIyNjQyNDIuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCShyZXZpc2lvbiAyNjQyNjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDQ2ICs0MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogc3RhdGljIGlubGluZSBKU1J1
bkxvb3BUaW1lcjo6TWFuYWdlcjo6RXBvY2hUaW1lIGVwb2NoVGltZShTZWNvbmRzIGRlbGF5KQog
ewotI2lmIFVTRShDRikKLSAgICByZXR1cm4gU2Vjb25kcyB7IENGQWJzb2x1dGVUaW1lR2V0Q3Vy
cmVudCgpICsgZGVsYXkudmFsdWUoKSB9OwotI2Vsc2UKICAgICByZXR1cm4gTW9ub3RvbmljVGlt
ZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKSArIGRlbGF5OwotI2VuZGlmCi19Ci0KLSNpZiBV
U0UoQ0YpCi12b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpcmVDYWxsYmFj
ayhDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCogY29udGV4dFB0cikKLXsKLSAgICBzdGF0aWNfY2Fz
dDxKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcio+KGNvbnRleHRQdHIpLT50aW1lckRpZEZpcmUoKTsK
IH0KIAotdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpzZXRSdW5Mb29w
KE1hbmFnZXIqIG1hbmFnZXIsIENGUnVuTG9vcFJlZiBuZXdSdW5Mb29wKQotewotICAgIGlmIChy
dW5Mb29wKSB7Ci0gICAgICAgIENGUnVuTG9vcFJlbW92ZVRpbWVyKHJ1bkxvb3AuZ2V0KCksIHRp
bWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotICAgICAgICBDRlJ1bkxvb3BUaW1l
ckludmFsaWRhdGUodGltZXIuZ2V0KCkpOwotICAgICAgICBydW5Mb29wLmNsZWFyKCk7Ci0gICAg
ICAgIHRpbWVyLmNsZWFyKCk7Ci0gICAgfQotCi0gICAgaWYgKG5ld1J1bkxvb3ApIHsKLSAgICAg
ICAgcnVuTG9vcCA9IG5ld1J1bkxvb3A7Ci0gICAgICAgIG1lbXNldCgmY29udGV4dCwgMCwgc2l6
ZW9mKENGUnVuTG9vcFRpbWVyQ29udGV4dCkpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChtYW5h
Z2VyKTsKLSAgICAgICAgY29udGV4dC5pbmZvID0gbWFuYWdlcjsKLSAgICAgICAgdGltZXIgPSBh
ZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIENGQWJzb2x1
dGVUaW1lR2V0Q3VycmVudCgpICsgc19kZWNhZGUuc2Vjb25kcygpLCBDRkFic29sdXRlVGltZUdl
dEN1cnJlbnQoKSArIHNfZGVjYWRlLnNlY29uZHMoKSwgMCwgMCwgSlNSdW5Mb29wVGltZXI6Ok1h
bmFnZXI6OnRpbWVyRGlkRmlyZUNhbGxiYWNrLCAmY29udGV4dCkpOwotICAgICAgICBDRlJ1bkxv
b3BBZGRUaW1lcihydW5Mb29wLmdldCgpLCB0aW1lci5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1v
ZGVzKTsKLQotICAgICAgICBFcG9jaFRpbWUgc2NoZWR1bGVUaW1lID0gZXBvY2hUaW1lKHNfZGVj
YWRlKTsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogdGltZXJzKQotICAgICAgICAgICAgc2No
ZWR1bGVUaW1lID0gc3RkOjptaW4ocGFpci5zZWNvbmQsIHNjaGVkdWxlVGltZSk7Ci0gICAgICAg
IENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHRpbWVyLmdldCgpLCBzY2hlZHVsZVRpbWUu
dmFsdWUoKSk7Ci0gICAgfQotfQotI2Vsc2UKLUpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJW
TURhdGE6OlBlclZNRGF0YShNYW5hZ2VyJiBtYW5hZ2VyKQotICAgIDogcnVuTG9vcCgmUnVuTG9v
cDo6Y3VycmVudCgpKQotICAgICwgdGltZXIobWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNYW5h
Z2VyPj4oKnJ1bkxvb3AsICZtYW5hZ2VyLCAmSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVy
RGlkRmlyZUNhbGxiYWNrKSkKK0pTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6OlBl
clZNRGF0YShNYW5hZ2VyJiBtYW5hZ2VyLCBSdW5Mb29wJiBydW5Mb29wKQorICAgIDogcnVuTG9v
cChydW5Mb29wKQorICAgICwgdGltZXIobWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNYW5hZ2Vy
Pj4ocnVuTG9vcCwgJm1hbmFnZXIsICZKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRG
aXJlQ2FsbGJhY2spKQogewogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgdGltZXItPnNl
dFByaW9yaXR5KFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6SmF2YXNjcmlwdFRpbWVyKTsKQEAgLTkx
LDEzICs1Nyw5IEBAIHZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmkKIHsK
ICAgICB0aW1lckRpZEZpcmUoKTsKIH0KLSNlbmRpZgogCiBKU1J1bkxvb3BUaW1lcjo6TWFuYWdl
cjo6UGVyVk1EYXRhOjp+UGVyVk1EYXRhKCkKIHsKLSNpZiBVU0UoQ0YpCi0gICAgc2V0UnVuTG9v
cChudWxscHRyLCBudWxscHRyKTsKLSNlbmRpZgogfQogCiB2b2lkIEpTUnVuTG9vcFRpbWVyOjpN
YW5hZ2VyOjp0aW1lckRpZEZpcmUoKQpAQCAtMTA2LDIxICs2OCwxMiBAQCB2b2lkIEpTUnVuTG9v
cFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpCiAKICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9sb2NrKTsKLSNpZiBVU0UoQ0YpCi0gICAgICAgIENGUnVuTG9vcFJlZiBj
dXJyZW50UnVuTG9vcCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKLSNlbHNlCiAgICAgICAgIFJ1
bkxvb3AqIGN1cnJlbnRSdW5Mb29wID0gJlJ1bkxvb3A6OmN1cnJlbnQoKTsKLSNlbmRpZgogICAg
ICAgICBFcG9jaFRpbWUgbm93RXBvY2hUaW1lID0gZXBvY2hUaW1lKDBfcyk7CiAgICAgICAgIGZv
ciAoYXV0byYgZW50cnkgOiBtX21hcHBpbmcpIHsKICAgICAgICAgICAgIFBlclZNRGF0YSYgZGF0
YSA9ICplbnRyeS52YWx1ZTsKLSNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBpZiAoZGF0YS5ydW5M
b29wLmdldCgpICE9IGN1cnJlbnRSdW5Mb29wKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
I2Vsc2UKLSAgICAgICAgICAgIGlmIChkYXRhLnJ1bkxvb3AgIT0gY3VycmVudFJ1bkxvb3ApCisg
ICAgICAgICAgICBpZiAoZGF0YS5ydW5Mb29wLnB0cigpICE9IGN1cnJlbnRSdW5Mb29wKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotI2VuZGlmCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IEVwb2NoVGltZSBzY2hlZHVsZVRpbWUgPSBlcG9jaFRpbWUoc19kZWNhZGUpOwogICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhLnRpbWVycy5zaXplKCk7ICsraSkgewpAQCAt
MTQwLDExICs5Myw3IEBAIHZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmkK
ICAgICAgICAgICAgICAgICB0aW1lcnNUb0ZpcmUuYXBwZW5kKFdURk1vdmUocGFpci5maXJzdCkp
OwogICAgICAgICAgICAgfQogCi0jaWYgVVNFKENGKQotICAgICAgICAgICAgQ0ZSdW5Mb29wVGlt
ZXJTZXROZXh0RmlyZURhdGUoZGF0YS50aW1lci5nZXQoKSwgc2NoZWR1bGVUaW1lLnZhbHVlKCkp
OwotI2Vsc2UKICAgICAgICAgICAgIGRhdGEudGltZXItPnN0YXJ0T25lU2hvdChzdGQ6Om1heCgw
X3MsIHNjaGVkdWxlVGltZSAtIE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2No
KCkpKTsKLSNlbmRpZgogICAgICAgICB9CiAgICAgfQogCkBAIC0xNjQsMTAgKzExMyw3IEBAIEpT
UnVuTG9vcFRpbWVyOjpNYW5hZ2VyJiBKU1J1bkxvb3BUaW1lcjoKIAogdm9pZCBKU1J1bkxvb3BU
aW1lcjo6TWFuYWdlcjo6cmVnaXN0ZXJWTShWTSYgdm0pCiB7Ci0gICAgYXV0byBkYXRhID0gbWFr
ZVVuaXF1ZTxQZXJWTURhdGE+KCp0aGlzKTsKLSNpZiBVU0UoQ0YpCi0gICAgZGF0YS0+c2V0UnVu
TG9vcCh0aGlzLCB2bS5ydW5Mb29wKCkpOwotI2VuZGlmCisgICAgYXV0byBkYXRhID0gbWFrZVVu
aXF1ZTxQZXJWTURhdGE+KCp0aGlzLCB2bS5ydW5Mb29wKCkpOwogCiAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2xvY2spOwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9tYXBwaW5nLmFkZCh7
IHZtLmFwaUxvY2soKSB9LCBXVEZNb3ZlKGRhdGEpKTsKQEAgLTIwNSwxMSArMTUxLDcgQEAgdm9p
ZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6c2NoZWR1bGVUaQogICAgIGlmICghZm91bmQpCiAg
ICAgICAgIGRhdGEudGltZXJzLmFwcGVuZCh7IHRpbWVyLCBmaXJlRXBvY2hUaW1lIH0pOwogCi0j
aWYgVVNFKENGKQotICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKGRhdGEudGltZXIu
Z2V0KCksIHNjaGVkdWxlVGltZS52YWx1ZSgpKTsKLSNlbHNlCiAgICAgZGF0YS50aW1lci0+c3Rh
cnRPbmVTaG90KHN0ZDo6bWF4KDBfcywgc2NoZWR1bGVUaW1lIC0gTW9ub3RvbmljVGltZTo6bm93
KCkuc2Vjb25kc1NpbmNlRXBvY2goKSkpOwotI2VuZGlmCiB9CiAKIHZvaWQgSlNSdW5Mb29wVGlt
ZXI6Ok1hbmFnZXI6OmNhbmNlbFRpbWVyKEpTUnVuTG9vcFRpbWVyJiB0aW1lcikKQEAgLTI0MCwx
MSArMTgyLDcgQEAgdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6Y2FuY2VsVGltZQogICAg
ICAgICBzY2hlZHVsZVRpbWUgPSBzdGQ6Om1pbihzY2hlZHVsZVRpbWUsIGRhdGEudGltZXJzW2ld
LnNlY29uZCk7CiAgICAgfQogCi0jaWYgVVNFKENGKQotICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4
dEZpcmVEYXRlKGRhdGEudGltZXIuZ2V0KCksIHNjaGVkdWxlVGltZS52YWx1ZSgpKTsKLSNlbHNl
CiAgICAgZGF0YS50aW1lci0+c3RhcnRPbmVTaG90KHN0ZDo6bWF4KDBfcywgc2NoZWR1bGVUaW1l
IC0gTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKSkpOwotI2VuZGlmCiB9
CiAKIE9wdGlvbmFsPFNlY29uZHM+IEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lVW50aWxG
aXJlKEpTUnVuTG9vcFRpbWVyJiB0aW1lcikKQEAgLTI2NCwxOCArMjAyLDYgQEAgT3B0aW9uYWw8
U2Vjb25kcz4gSlNSdW5Mb29wVGltZXI6Ok1hbmFnZQogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiB9CiAKLSNpZiBVU0UoQ0YpCi12b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpkaWRDaGFu
Z2VSdW5Mb29wKFZNJiB2bSwgQ0ZSdW5Mb29wUmVmIG5ld1J1bkxvb3ApCi17Ci0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwotICAgIGF1dG8gaXRlciA9IG1fbWFwcGluZy5maW5k
KHsgdm0uYXBpTG9jaygpIH0pOwotICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXIgIT0gbV9tYXBwaW5n
LmVuZCgpKTsKLQotICAgIFBlclZNRGF0YSYgZGF0YSA9ICppdGVyLT52YWx1ZTsKLSAgICBkYXRh
LnNldFJ1bkxvb3AodGhpcywgbmV3UnVuTG9vcCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBKU1J1bkxv
b3BUaW1lcjo6dGltZXJEaWRGaXJlKCkKIHsKICAgICBOT19UQUlMX0NBTExTKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmgJKHJldmlz
aW9uIDI2NDI2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRp
bWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMyw2IEBACiAjaW5jbHVkZSA8d3RmL1No
YXJlZFRhc2suaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAotI2lm
IFVTRShDRikKLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgotI2Vu
ZGlmCi0KIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU0xvY2s7CkBAIC01MCwxMSArNDYsOCBA
QCBwdWJsaWM6CiAgICAgY2xhc3MgTWFuYWdlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYW5hZ2VyKTsKLSNpZiBVU0Uo
Q0YpCi0gICAgICAgIHN0YXRpYyB2b2lkIHRpbWVyRGlkRmlyZUNhbGxiYWNrKENGUnVuTG9vcFRp
bWVyUmVmLCB2b2lkKik7Ci0jZWxzZQogICAgICAgICB2b2lkIHRpbWVyRGlkRmlyZUNhbGxiYWNr
KCk7Ci0jZW5kaWYKKwogICAgICAgICBNYW5hZ2VyKCkgPSBkZWZhdWx0OwogCiAgICAgICAgIHZv
aWQgdGltZXJEaWRGaXJlKCk7CkBAIC03MCwxMCArNjMsNiBAQCBwdWJsaWM6CiAKICAgICAgICAg
T3B0aW9uYWw8U2Vjb25kcz4gdGltZVVudGlsRmlyZShKU1J1bkxvb3BUaW1lciYpOwogCi0jaWYg
VVNFKENGKQotICAgICAgICB2b2lkIGRpZENoYW5nZVJ1bkxvb3AoVk0mLCBDRlJ1bkxvb3BSZWYg
bmV3UnVuTG9vcCk7Ci0jZW5kaWYKLQogICAgIHByaXZhdGU6CiAgICAgICAgIExvY2sgbV9sb2Nr
OwogCkBAIC04MSwyMiArNzAsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZXJWTURhdGEp
OwogICAgICAgICBwdWJsaWM6Ci0jaWYgVVNFKENGKQotICAgICAgICAgICAgUGVyVk1EYXRhKE1h
bmFnZXImKSB7IH0KLSNlbHNlCi0gICAgICAgICAgICBQZXJWTURhdGEoTWFuYWdlciYpOwotI2Vu
ZGlmCisgICAgICAgICAgICBQZXJWTURhdGEoTWFuYWdlciYsIFdURjo6UnVuTG9vcCYpOwogICAg
ICAgICAgICAgflBlclZNRGF0YSgpOwogCi0jaWYgVVNFKENGKQotICAgICAgICAgICAgdm9pZCBz
ZXRSdW5Mb29wKE1hbmFnZXIqLCBDRlJ1bkxvb3BSZWYpOwotICAgICAgICAgICAgUmV0YWluUHRy
PENGUnVuTG9vcFRpbWVyUmVmPiB0aW1lcjsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlJ1bkxv
b3BSZWY+IHJ1bkxvb3A7Ci0gICAgICAgICAgICBDRlJ1bkxvb3BUaW1lckNvbnRleHQgY29udGV4
dDsKLSNlbHNlCi0gICAgICAgICAgICBSdW5Mb29wKiBydW5Mb29wOworICAgICAgICAgICAgUmVm
PFdURjo6UnVuTG9vcD4gcnVuTG9vcDsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSdW5M
b29wOjpUaW1lcjxNYW5hZ2VyPj4gdGltZXI7Ci0jZW5kaWYKICAgICAgICAgICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8UmVmPEpTUnVuTG9vcFRpbWVyPiwgRXBvY2hUaW1lPj4gdGltZXJzOwogICAgICAg
ICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VU
aW1lci5jcHAJKHJldmlzaW9uIDI2NDI2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb21pc2VUaW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDEzICs3MCw4IEBAIHZv
aWQgUHJvbWlzZVRpbWVyOjpkb1dvcmsoVk0mIHZtKQogICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKG1fcGVuZGluZ1Byb21pc2VzLmlzRW1wdHkoKSAmJiBtX3Nob3VsZFN0b3BSdW5Mb29wV2hl
bkFsbFByb21pc2VzRmluaXNoKSB7Ci0jaWYgVVNFKENGKQotICAgICAgICBDRlJ1bkxvb3BTdG9w
KHZtLnJ1bkxvb3AoKSk7Ci0jZWxzZQorICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5pc0VtcHR5
KCkgJiYgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxQcm9taXNlc0ZpbmlzaCkKICAgICAgICAg
UnVuTG9vcDo6Y3VycmVudCgpLnN0b3AoKTsKLSNlbmRpZgotICAgIH0KIAogICAgIG1fdGFza0xv
Y2sudW5sb2NrKCk7CiB9CkBAIC04NCwxNyArNzksMTAgQEAgdm9pZCBQcm9taXNlVGltZXI6OmRv
V29yayhWTSYgdm0pCiB2b2lkIFByb21pc2VUaW1lcjo6cnVuUnVuTG9vcCgpCiB7CiAgICAgQVNT
RVJUKCFtX2FwaUxvY2stPnZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwot
I2lmIFVTRShDRikKLSAgICBBU1NFUlQoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpID09IG1fYXBpTG9j
ay0+dm0oKS0+cnVuTG9vcCgpKTsKLSNlbmRpZgorICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVu
dCgpID09ICZtX2FwaUxvY2stPnZtKCktPnJ1bkxvb3AoKSk7CiAgICAgbV9zaG91bGRTdG9wUnVu
TG9vcFdoZW5BbGxQcm9taXNlc0ZpbmlzaCA9IHRydWU7Ci0gICAgaWYgKG1fcGVuZGluZ1Byb21p
c2VzLnNpemUoKSkgewotI2lmIFVTRShDRikKLSAgICAgICAgQ0ZSdW5Mb29wUnVuKCk7Ci0jZWxz
ZQorICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5zaXplKCkpCiAgICAgICAgIFJ1bkxvb3A6OnJ1
bigpOwotI2VuZGlmCi0gICAgfQogfQogCiB2b2lkIFByb21pc2VUaW1lcjo6YWRkUGVuZGluZ1By
b21pc2UoVk0mIHZtLCBKU1Byb21pc2UqIHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYm
IGRlcGVuZGVuY2llcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJl
dmlzaW9uIDI2NDI2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYyLDEyICsyNjIsMTAgQEAgaW5saW5lIHVuc2lnbmVkIFZNOjpu
ZXh0SUQoKQogCiBzdGF0aWMgYm9vbCB2bUNyZWF0aW9uU2hvdWxkQ3Jhc2ggPSBmYWxzZTsKIAot
Vk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQorVk06OlZNKFZNVHlwZSB2
bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3ApCiAgICAgOiBt
X2lkKG5leHRJRCgpKQogICAgICwgbV9hcGlMb2NrKGFkb3B0UmVmKG5ldyBKU0xvY2sodGhpcykp
KQotI2lmIFVTRShDRikKLSAgICAsIG1fcnVuTG9vcChDRlJ1bkxvb3BHZXRDdXJyZW50KCkpCi0j
ZW5kaWYgLy8gVVNFKENGKQorICAgICwgbV9ydW5Mb29wKHJ1bkxvb3AgPyAqcnVuTG9vcCA6IFdU
Rjo6UnVuTG9vcDo6Y3VycmVudCgpKQogICAgICwgbV9yYW5kb20oT3B0aW9uczo6c2VlZE9mVk1S
YW5kb21Gb3JGdXp6ZXIoKSA/IE9wdGlvbnM6OnNlZWRPZlZNUmFuZG9tRm9yRnV6emVyKCkgOiBj
cnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKQogICAgICwgbV9pbnRlZ3JpdHlSYW5kb20o
KnRoaXMpCiAgICAgLCBoZWFwKCp0aGlzLCBoZWFwVHlwZSkKQEAgLTY3MSw5ICs2NjksOSBAQCBS
ZWY8Vk0+IFZNOjpjcmVhdGVDb250ZXh0R3JvdXAoSGVhcFR5cGUgCiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVk0oQVBJQ29udGV4dEdyb3VwLCBoZWFwVHlwZSkpOwogfQogCi1SZWY8Vk0+IFZN
OjpjcmVhdGUoSGVhcFR5cGUgaGVhcFR5cGUpCitSZWY8Vk0+IFZNOjpjcmVhdGUoSGVhcFR5cGUg
aGVhcFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBWTShEZWZhdWx0LCBoZWFwVHlwZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZN
KERlZmF1bHQsIGhlYXBUeXBlLCBydW5Mb29wKSk7CiB9CiAKIGJvb2wgVk06OnNoYXJlZEluc3Rh
bmNlRXhpc3RzKCkKQEAgLTEzNTUsMTUgKzEzNTMsNiBAQCB2b2lkIFZNOjp2ZXJpZnlFeGNlcHRp
b25DaGVja05lZWRJc1NhdGlzCiB9CiAjZW5kaWYKIAotI2lmIFVTRShDRikKLXZvaWQgVk06OnNl
dFJ1bkxvb3AoQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCi17Ci0gICAgQVNTRVJUKHJ1bkxvb3ApOwot
ICAgIG1fcnVuTG9vcCA9IHJ1bkxvb3A7Ci0gICAgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnNo
YXJlZCgpLmRpZENoYW5nZVJ1bkxvb3AoKnRoaXMsIHJ1bkxvb3ApOwotfQotI2VuZGlmIC8vIFVT
RShDRikKLQogU2NyYXRjaEJ1ZmZlciogVk06OnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNpemVfdCBz
aXplKQogewogICAgIGlmICghc2l6ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkocmV2aXNpb24gMjY0MjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBX
VEYgeworY2xhc3MgUnVuTG9vcDsKIGNsYXNzIFNpbXBsZVN0YXRzOwogfSAvLyBuYW1lc3BhY2Ug
V1RGCiB1c2luZyBXVEY6OlNpbXBsZVN0YXRzOwpAQCAtMzEyLDcgKzMxMyw3IEBAIHB1YmxpYzoK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBzaGFyZWRJbnN0YW5jZUV4aXN0cygp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBWTSYgc2hhcmVkSW5zdGFuY2UoKTsKIAot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8Vk0+IGNyZWF0ZShIZWFwVHlwZSA9IFNt
YWxsSGVhcCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxWTT4gY3JlYXRlKEhl
YXBUeXBlID0gU21hbGxIZWFwLCBXVEY6OlJ1bkxvb3AqID0gbnVsbHB0cik7CiAgICAgc3RhdGlj
IFJlZjxWTT4gY3JlYXRlQ29udGV4dEdyb3VwKEhlYXBUeXBlID0gU21hbGxIZWFwKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSB+Vk0oKTsKIApAQCAtMzUzLDEwICszNTQsNyBAQCBwcml2YXRlOgog
CiAgICAgdW5zaWduZWQgbV9pZDsKICAgICBSZWZQdHI8SlNMb2NrPiBtX2FwaUxvY2s7Ci0jaWYg
VVNFKENGKQotICAgIC8vIFRoZXNlIG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIGhlYXAg
YmVsb3cuCi0gICAgUmV0YWluUHRyPENGUnVuTG9vcFJlZj4gbV9ydW5Mb29wOwotI2VuZGlmCisg
ICAgUmVmPFdURjo6UnVuTG9vcD4gbV9ydW5Mb29wOwogCiAgICAgV2Vha1JhbmRvbSBtX3JhbmRv
bTsKICAgICBJbnRlZ3JpdHk6OlJhbmRvbSBtX2ludGVncml0eVJhbmRvbTsKQEAgLTEwNzksMTAg
KzEwNzcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWVkRXhjZXB0aW9uQ2hlY2soKSBjb25zdCB7
IHJldHVybiBtX25lZWRFeGNlcHRpb25DaGVjazsgfQogI2VuZGlmCiAKLSNpZiBVU0UoQ0YpCi0g
ICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiBtX3J1bkxvb3AuZ2V0KCk7
IH0KLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFJ1bkxvb3AoQ0ZSdW5Mb29wUmVmKTsK
LSNlbmRpZiAvLyBVU0UoQ0YpCisgICAgV1RGOjpSdW5Mb29wJiBydW5Mb29wKCkgY29uc3QgeyBy
ZXR1cm4gbV9ydW5Mb29wOyB9CiAKICAgICBzdGF0aWMgdm9pZCBzZXRDcmFzaE9uVk1DcmVhdGlv
bihib29sKTsKIApAQCAtMTEwNiw3ICsxMTAxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi0gICAgVk0oVk1UeXBlLCBIZWFw
VHlwZSk7CisgICAgVk0oVk1UeXBlLCBIZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiA9IG51bGxwdHIp
OwogICAgIHN0YXRpYyBWTSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICB2b2lkIGNy
ZWF0ZU5hdGl2ZVRodW5rKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDI2NykKKysr
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDIwLTA3LTExICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgVW5yZXZpZXdlZCwgcmUtbGFuZGluZyByMjY0MjQyIHdpdGggY3Jhc2ggZml4ZWQuCisKKyAg
ICAgICAgUmUtbGFuZGVkIGNoYW5nZXNldDoKKworICAgICAgICAiSlNSdW5Mb29wVGltZXIgc2hv
dWxkIHVzZSBXVEY6OlJ1bkxvb3AgcmF0aGVyIHRoYW4gY3VzdG9tIENGCisgICAgICAgIGNvZGUi
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQxMDIK
KyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI2NDI0MgorCisgICAg
ICAgICogYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tbW9u
Vk1TbG93KToKKwogMjAyMC0wNy0xMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtMRkNdW0JGQ11bTWluLU1heCB3aWR0aF0gQWRkIHN1cHBvcnQgZm9yIGZsb2F0
IGF2b2lkZXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCShy
ZXZpc2lvbiAyNjQyNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDEzIEBAIEpTQzo6Vk0mIGNvbW1vblZNU2xv
dygpCiAgICAgLy8gQWxzbywgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKSBkb2VzIG5vdGhpbmcgb24g
aU9TLgogICAgIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKLSAg
ICBhdXRvJiB2bSA9IEpTQzo6Vk06OmNyZWF0ZShKU0M6OkxhcmdlSGVhcCkubGVha1JlZigpOwor
ICAgIFJ1bkxvb3AqIHJ1bkxvb3AgPSBudWxscHRyOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisgICAgaWYgKFJ1bkxvb3AqIHdlYiA9IFJ1bkxvb3A6OndlYklmRXhpc3RzKCkpCisgICAgICAg
IHJ1bkxvb3AgPSB3ZWI7CisjZW5kaWYKKworICAgIGF1dG8mIHZtID0gSlNDOjpWTTo6Y3JlYXRl
KEpTQzo6TGFyZ2VIZWFwLCBydW5Mb29wKS5sZWFrUmVmKCk7CiAKICAgICBnX2NvbW1vblZNT3JO
dWxsID0gJnZtOwogCkBAIC02NCw3ICs3MCw2IEBAIEpTQzo6Vk0mIGNvbW1vblZNU2xvdygpCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoV2ViVGhyZWFkSXNFbmFibGVkKCkpCiAg
ICAgICAgIHZtLmFwaUxvY2soKS5tYWtlV2ViVGhyZWFkQXdhcmUoKTsKLSAgICB2bS5zZXRSdW5M
b29wKFdlYlRocmVhZFJ1bkxvb3AoKSk7CiAgICAgdm0uaGVhcC5tYWNoaW5lVGhyZWFkcygpLmFk
ZEN1cnJlbnRUaHJlYWQoKTsKICNlbmRpZgogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQyNjcpCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wNy0xMSAgR2VvZmZy
ZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJlLWxh
bmRpbmcgcjI2NDI0MiB3aXRoIGNyYXNoIGZpeGVkLgorCisgICAgICAgIFJlLWxhbmRlZCBjaGFu
Z2VzZXQ6CisKKyAgICAgICAgIkpTUnVuTG9vcFRpbWVyIHNob3VsZCB1c2UgV1RGOjpSdW5Mb29w
IHJhdGhlciB0aGFuIGN1c3RvbSBDRgorICAgICAgICBjb2RlIgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTAyCisgICAgICAgIGh0dHBzOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8yNjQyNDIKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvSmF2YVNjcmlwdENvcmUvSlNSdW5Mb29wVGltZXIubW06IEFkZGVkLgor
ICAgICAgICAoLVtUZXN0T2JqZWN0IGRlYWxsb2NdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorCiAyMDIwLTA3LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjQyNDIuCkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjY0MjY3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTg3
LDYgKzg3LDcgQEAKIAkJMTFCN0ZEMjgyMTlGNDcxMTAwNjlCMjdGIC8qIEZpcnN0TWVhbmluZ2Z1
bFBhaW50TWlsZXN0b25lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDExQjdGRDIyMjE5RjQ2REQwMDY5QjI3RiAvKiBGaXJzdE1lYW5pbmdmdWxQYWlu
dE1pbGVzdG9uZS5jcHAgKi87IH07CiAJCTExQzI1OThEMjFGQTYzMjQwMDRDOUUyMyAvKiBhc3lu
Yy1zY3JpcHQtbG9hZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDExQzI1OThDMjFGQTYxOEQwMDRDOUUyMyAvKiBhc3luYy1zY3JpcHQt
bG9hZC5odG1sICovOyB9OwogCQkxNDNEREU5ODIwQzkwMThCMDA3Rjc2RkEgLyogU2VjdXJpdHku
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTc0RjU1RDAyMDRENDcxQzAwMjk0OEM2IC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLzsgfTsK
KwkJMTRDQzQyRTYyNEI4RDhGQTAwRTY0RjQ4IC8qIEpTUnVuTG9vcFRpbWVyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRDQzQyRTUyNEI4RDhGQTAw
RTY0RjQ4IC8qIEpTUnVuTG9vcFRpbWVyLm1tICovOyB9OwogCQkxQTAyQzg3MDEyNUQ0Q0ZEMDBF
M0Y0QkQgLyogZmluZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBMDJDODRCMTI1RDRBNUUwMEUzRjRCRCAvKiBmaW5kLmh0bWwgKi87
IH07CiAJCTFBMzUyNEFFMUQ2M0E0RkIwMDMxNzI5QiAvKiBTY29wZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTM1MjRBQzFENjNBNEZCMDAzMTcy
OUIgLyogU2NvcGUuY3BwICovOyB9OwogCQkxQTRGODFDRjFCREZGRDUzMDA0RTY3MkUgLyogUmVt
b3RlT2JqZWN0UmVnaXN0cnlQbHVnSW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTRGODFDRDFCREZGRDUzMDA0RTY3MkUgLyogUmVtb3RlT2JqZWN0
UmVnaXN0cnlQbHVnSW4ubW0gKi87IH07CkBAIC0xNjg5LDYgKzE2OTAsNyBAQAogCQkxMUMyNTk4
QzIxRkE2MThEMDA0QzlFMjMgLyogYXN5bmMtc2NyaXB0LWxvYWQuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJhc3luYy1zY3JpcHQtbG9hZC5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMTQ0NjQwMTIxNjdBODMwNTAwMEJEMjE4IC8qIExheW91dFVuaXRUZXN0
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRVbml0VGVz
dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDRENDBFQzIyMUI0NkE3MDA0
QjQ3NEYgLyogVVVJRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBV
VUlELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRDQzQyRTUyNEI4RDhGQTAw
RTY0RjQ4IC8qIEpTUnVuTG9vcFRpbWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gSlNSdW5Mb29wVGltZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTE0RjNCMTEyMTVFNDVFQUIwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljT3BlcmF0
aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYXR1cmF0ZWRB
cml0aG1ldGljT3BlcmF0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
MDJDODRCMTI1RDRBNUUwMEUzRjRCRCAvKiBmaW5kLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSBmaW5kLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMDJDODRF
MTI1RDRBODQwMEUzRjRCRCAvKiBGaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEZpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzA1Miw2
ICszMDU0LDE0IEBACiAJCQluYW1lID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OworCQkxNENDNDJFMDI0QjhEN0U3MDBFNjRGNDggLyogSmF2YVNjcmlwdENvcmUgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTE0Q0M0MkU1MjRC
OEQ4RkEwMEU2NEY0OCAvKiBKU1J1bkxvb3BUaW1lci5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0g
SmF2YVNjcmlwdENvcmU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxQUI2
NzRBREZFOUQ1NEI1MTFDQTJDQkIgLyogUHJvZHVjdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNDI2NCw2ICs0Mjc0LDcgQEAKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNzU2MDkxNzYxOTI1OUM1OTAwOUVGMDZFIC8qIGlv
cyAqLywKKwkJCQkxNENDNDJFMDI0QjhEN0U3MDBFNjRGNDggLyogSmF2YVNjcmlwdENvcmUgKi8s
CiAJCQkJQzA3RTZDQUQxM0ZENjc2NTAwMzhCMjJCIC8qIG1hYyAqLywKIAkJCQlDMDg1ODdGOTEz
RkVDMzlCMDAxRUY0RTUgLyogVGVzdFdlYktpdEFQSSAqLywKIAkJCQk0NDBBMUQzNjE0QTAxMDAw
MDA4QTY2RjIgLyogV2ViQ29yZSAqLywKQEAgLTUwODQsNiArNTA5NSw3IEBACiAJCQkJNTE4MjBB
NEQyMkY0RUU3RjAwREYwQTAxIC8qIEphdmFzY3JpcHRVUkxOYXZpZ2F0aW9uLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUMwMTYwQzEyMUExMzI0NjAwNzdGQTMyIC8qIEpJVEVuYWJsZWQubW0gaW4g
U291cmNlcyAqLywKIAkJCQlFMzVGQzdCMjIyQjgyQTczMDBGMzJGOTggLyogSlNMb2NrVGFrZXNX
ZWJUaHJlYWRMb2NrLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMTRDQzQyRTYyNEI4RDhGQTAwRTY0
RjQ4IC8qIEpTUnVuTG9vcFRpbWVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzQxQTQx
MUE3RTAwNDQ3QzRDIC8qIEpTV3JhcHBlckZvck5vZGVJbldlYkZyYW1lLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRjQ1RTE1NzMyMTEyQ0UyOTAwMzA3RTgyIC8qIEtleWJvYXJkSW5wdXRUZXN0c0lP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI3OEUzRTE5MjNDRDg0MkYwMDVBNkI4MCAvKiBLZXll
ZENvZGluZy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvSmF2YVNjcmlwdENvcmUvSlNSdW5Mb29wVGltZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9KYXZhU2NyaXB0Q29yZS9KU1J1bkxvb3BUaW1lci5tbQkobm9u
ZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL0pT
UnVuTG9vcFRpbWVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIldURlN0cmluZ1V0aWxpdGllcy5o
IgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KKyNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRy
YXMuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgorI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK3N0YXRpYyBib29sIHNfaXNSdW5uaW5nUnVuTG9vcDsKK3N0YXRp
YyBib29sIHNfZG9uZTsKK3N0YXRpYyBXVEY6OlJ1bkxvb3AqIHNfZXhwZWN0ZWRSdW5Mb29wOwor
CitAaW50ZXJmYWNlIFRlc3RPYmplY3QgOiBOU09iamVjdAorLSAodm9pZClkZWFsbG9jOworQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gVGVzdE9iamVjdAorLSAodm9pZClkZWFsbG9jCit7CisgICAg
aWYgKHNfaXNSdW5uaW5nUnVuTG9vcCkgeworICAgICAgICBFWFBFQ1RfRVEoJlJ1bkxvb3A6OmN1
cnJlbnQoKSwgc19leHBlY3RlZFJ1bkxvb3ApOworICAgICAgICBzX2RvbmUgPSB0cnVlOworICAg
IH0KKworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgeworCisvLyBKYXZhU2NyaXB0Q29yZSdzIGJlaGF2aW9yIGF0IHRoZSB0aW1lIG9mIHdy
aXRpbmcgaXMgdGhhdCBkZXN0cnVjdG9ycworLy8gcnVuIGFzeW5jaHJvbm91c2x5IG9uIHRoZSB0
aHJlYWQgdGhhdCBhbGxvY2F0ZWQgdGhlIFZNLCB1bmxlc3MgdGhleSBydW4KKy8vIHN5bmNocm9u
b3VzbHkgZHVyaW5nIGFuIEFQSSBjYWxsIG9uIHNvbWUgb3RoZXIgdGhyZWFkLgorCitURVNUKEph
dmFTY3JpcHRDb3JlLCBJbmNyZW1lbnRhbFN3ZWVwZXJNYWluVGhyZWFkKQoreworICAgIGF1dG8g
Y29udGV4dCA9IGFkb3B0TlMoW0pTQ29udGV4dCBuZXddKTsKKyAgICBzX2V4cGVjdGVkUnVuTG9v
cCA9ICZSdW5Mb29wOjpjdXJyZW50KCk7CisKKyAgICB3aGlsZSAoIXNfZG9uZSkgeworICAgICAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
MTAwMDsgKytpKSB7CisgICAgICAgICAgICAgICAgYXV0byBvYmplY3QgPSBhZG9wdE5TKFtUZXN0
T2JqZWN0IG5ld10pOworICAgICAgICAgICAgICAgIGF1dG8ganNPYmplY3QgPSBhZG9wdE5TKFtK
U1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpvYmplY3QuZ2V0KCkgaW5Db250ZXh0OmNvbnRleHQuZ2V0
KCldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEpTR2FyYmFnZUNvbGxlY3QoW2NvbnRl
eHQuZ2V0KCkgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IHNfaXNSdW5uaW5nUnVuTG9vcCA9IHRydWU7CisgICAgICAgICAgICBSdW5Mb29wOjpjdXJyZW50
KCkuY3ljbGUoKTsKKyAgICAgICAgICAgIHNfaXNSdW5uaW5nUnVuTG9vcCA9IGZhbHNlOworICAg
ICAgICB9CisgICAgfQorICAgIEVYUEVDVF9UUlVFKHRydWUpOworfQorCitURVNUKEphdmFTY3Jp
cHRDb3JlLCBJbmNyZW1lbnRhbFN3ZWVwZXJTZWNvbmRhcnlUaHJlYWQpCit7CisgICAgYXV0byBj
b250ZXh0ID0gYWRvcHROUyhbSlNDb250ZXh0IG5ld10pOworICAgIHNfZXhwZWN0ZWRSdW5Mb29w
ID0gJlJ1bkxvb3A6OmN1cnJlbnQoKTsKKworICAgIHdoaWxlICghc19kb25lKSB7CisgICAgICAg
IEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9n
ZXRfZ2xvYmFsX3F1ZXVlKFFPU19DTEFTU19VU0VSX0lOVEVSQUNUSVZFLCAwKSwgXnsKKyAgICAg
ICAgICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1
dG8gb2JqZWN0ID0gYWRvcHROUyhbVGVzdE9iamVjdCBuZXddKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGF1dG8ganNPYmplY3QgPSBhZG9wdE5TKFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpv
YmplY3QuZ2V0KCkgaW5Db250ZXh0OmNvbnRleHQuZ2V0KCldKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBKU0dhcmJhZ2VDb2xsZWN0KFtjb250ZXh0LmdldCgp
IEpTR2xvYmFsQ29udGV4dFJlZl0pOworCisgICAgICAgICAgICAgICAgICAgIHNfaXNSdW5uaW5n
UnVuTG9vcCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5j
eWNsZSgpOworICAgICAgICAgICAgICAgICAgICBzX2lzUnVubmluZ1J1bkxvb3AgPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgc19pc1J1
bm5pbmdSdW5Mb29wID0gdHJ1ZTsKKyAgICAgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5jeWNs
ZSgpOworICAgICAgICAgICAgc19pc1J1bm5pbmdSdW5Mb29wID0gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404163</attachid>
            <date>2020-07-13 12:07:10 -0700</date>
            <delta_ts>2020-07-13 13:43:13 -0700</delta_ts>
            <desc>Patch for landing - fixed iOS WK2 crash</desc>
            <filename>bug-214102-20200713120709.patch</filename>
            <type>text/plain</type>
            <size>23382</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDIwLTA3LTExICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgVW5yZXZpZXdlZCwgcmUtbGFuZGluZyByMjY0MjQyIHdpdGggY3Jhc2ggZml4ZWQuCisKKyAg
ICAgICAgUmUtbGFuZGVkIGNoYW5nZXNldDoKKworICAgICAgICAiSlNSdW5Mb29wVGltZXIgc2hv
dWxkIHVzZSBXVEY6OlJ1bkxvb3AgcmF0aGVyIHRoYW4gY3VzdG9tIENGCisgICAgICAgIGNvZGUi
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQxMDIK
KyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI2NDI0MgorCisgICAg
ICAgICogcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OmVwb2NoVGlt
ZSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6OlBl
clZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRp
ZEZpcmVDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQ
ZXJWTURhdGE6On5QZXJWTURhdGEpOgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6TWFu
YWdlcjo6dGltZXJEaWRGaXJlKToKKyAgICAgICAgKEpTQzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFn
ZXI6OnJlZ2lzdGVyVk0pOgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6
c2NoZWR1bGVUaW1lcik6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpj
YW5jZWxUaW1lcik6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJW
TURhdGE6OnNldFJ1bkxvb3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1l
cjo6TWFuYWdlcjo6ZGlkQ2hhbmdlUnVuTG9vcCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5oOgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6TWFuYWdl
cjo6UGVyVk1EYXRhOjpQZXJWTURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvUHJv
bWlzZVRpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvbWlzZVRpbWVyOjpkb1dvcmspOgorICAg
ICAgICAoSlNDOjpQcm9taXNlVGltZXI6OnJ1blJ1bkxvb3ApOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAoSlNDOjpWTTo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6Vk06OnNldFJ1bkxvb3ApOiBEZWxldGVkLgorICAgICAgICAqIHJ1
bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OnJ1bkxvb3AgY29uc3QpOgorCiAyMDIwLTA3
LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcmV2ZXJ0aW5nIHIyNjQyNDIuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCShyZXZpc2lvbiAyNjQyNjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDQ2ICs0MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogc3RhdGljIGlubGluZSBKU1J1
bkxvb3BUaW1lcjo6TWFuYWdlcjo6RXBvY2hUaW1lIGVwb2NoVGltZShTZWNvbmRzIGRlbGF5KQog
ewotI2lmIFVTRShDRikKLSAgICByZXR1cm4gU2Vjb25kcyB7IENGQWJzb2x1dGVUaW1lR2V0Q3Vy
cmVudCgpICsgZGVsYXkudmFsdWUoKSB9OwotI2Vsc2UKICAgICByZXR1cm4gTW9ub3RvbmljVGlt
ZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKSArIGRlbGF5OwotI2VuZGlmCi19Ci0KLSNpZiBV
U0UoQ0YpCi12b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpcmVDYWxsYmFj
ayhDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCogY29udGV4dFB0cikKLXsKLSAgICBzdGF0aWNfY2Fz
dDxKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcio+KGNvbnRleHRQdHIpLT50aW1lckRpZEZpcmUoKTsK
IH0KIAotdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpzZXRSdW5Mb29w
KE1hbmFnZXIqIG1hbmFnZXIsIENGUnVuTG9vcFJlZiBuZXdSdW5Mb29wKQotewotICAgIGlmIChy
dW5Mb29wKSB7Ci0gICAgICAgIENGUnVuTG9vcFJlbW92ZVRpbWVyKHJ1bkxvb3AuZ2V0KCksIHRp
bWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotICAgICAgICBDRlJ1bkxvb3BUaW1l
ckludmFsaWRhdGUodGltZXIuZ2V0KCkpOwotICAgICAgICBydW5Mb29wLmNsZWFyKCk7Ci0gICAg
ICAgIHRpbWVyLmNsZWFyKCk7Ci0gICAgfQotCi0gICAgaWYgKG5ld1J1bkxvb3ApIHsKLSAgICAg
ICAgcnVuTG9vcCA9IG5ld1J1bkxvb3A7Ci0gICAgICAgIG1lbXNldCgmY29udGV4dCwgMCwgc2l6
ZW9mKENGUnVuTG9vcFRpbWVyQ29udGV4dCkpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChtYW5h
Z2VyKTsKLSAgICAgICAgY29udGV4dC5pbmZvID0gbWFuYWdlcjsKLSAgICAgICAgdGltZXIgPSBh
ZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIENGQWJzb2x1
dGVUaW1lR2V0Q3VycmVudCgpICsgc19kZWNhZGUuc2Vjb25kcygpLCBDRkFic29sdXRlVGltZUdl
dEN1cnJlbnQoKSArIHNfZGVjYWRlLnNlY29uZHMoKSwgMCwgMCwgSlNSdW5Mb29wVGltZXI6Ok1h
bmFnZXI6OnRpbWVyRGlkRmlyZUNhbGxiYWNrLCAmY29udGV4dCkpOwotICAgICAgICBDRlJ1bkxv
b3BBZGRUaW1lcihydW5Mb29wLmdldCgpLCB0aW1lci5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1v
ZGVzKTsKLQotICAgICAgICBFcG9jaFRpbWUgc2NoZWR1bGVUaW1lID0gZXBvY2hUaW1lKHNfZGVj
YWRlKTsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogdGltZXJzKQotICAgICAgICAgICAgc2No
ZWR1bGVUaW1lID0gc3RkOjptaW4ocGFpci5zZWNvbmQsIHNjaGVkdWxlVGltZSk7Ci0gICAgICAg
IENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHRpbWVyLmdldCgpLCBzY2hlZHVsZVRpbWUu
dmFsdWUoKSk7Ci0gICAgfQotfQotI2Vsc2UKLUpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJW
TURhdGE6OlBlclZNRGF0YShNYW5hZ2VyJiBtYW5hZ2VyKQotICAgIDogcnVuTG9vcCgmUnVuTG9v
cDo6Y3VycmVudCgpKQotICAgICwgdGltZXIobWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNYW5h
Z2VyPj4oKnJ1bkxvb3AsICZtYW5hZ2VyLCAmSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVy
RGlkRmlyZUNhbGxiYWNrKSkKK0pTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6OlBl
clZNRGF0YShNYW5hZ2VyJiBtYW5hZ2VyLCBSdW5Mb29wJiBydW5Mb29wKQorICAgIDogcnVuTG9v
cChydW5Mb29wKQorICAgICwgdGltZXIobWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNYW5hZ2Vy
Pj4ocnVuTG9vcCwgJm1hbmFnZXIsICZKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRG
aXJlQ2FsbGJhY2spKQogewogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgdGltZXItPnNl
dFByaW9yaXR5KFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6SmF2YXNjcmlwdFRpbWVyKTsKQEAgLTkx
LDEzICs1Nyw5IEBAIHZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmkKIHsK
ICAgICB0aW1lckRpZEZpcmUoKTsKIH0KLSNlbmRpZgogCiBKU1J1bkxvb3BUaW1lcjo6TWFuYWdl
cjo6UGVyVk1EYXRhOjp+UGVyVk1EYXRhKCkKIHsKLSNpZiBVU0UoQ0YpCi0gICAgc2V0UnVuTG9v
cChudWxscHRyLCBudWxscHRyKTsKLSNlbmRpZgogfQogCiB2b2lkIEpTUnVuTG9vcFRpbWVyOjpN
YW5hZ2VyOjp0aW1lckRpZEZpcmUoKQpAQCAtMTA2LDIxICs2OCwxMiBAQCB2b2lkIEpTUnVuTG9v
cFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpCiAKICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9sb2NrKTsKLSNpZiBVU0UoQ0YpCi0gICAgICAgIENGUnVuTG9vcFJlZiBj
dXJyZW50UnVuTG9vcCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKLSNlbHNlCiAgICAgICAgIFJ1
bkxvb3AqIGN1cnJlbnRSdW5Mb29wID0gJlJ1bkxvb3A6OmN1cnJlbnQoKTsKLSNlbmRpZgogICAg
ICAgICBFcG9jaFRpbWUgbm93RXBvY2hUaW1lID0gZXBvY2hUaW1lKDBfcyk7CiAgICAgICAgIGZv
ciAoYXV0byYgZW50cnkgOiBtX21hcHBpbmcpIHsKICAgICAgICAgICAgIFBlclZNRGF0YSYgZGF0
YSA9ICplbnRyeS52YWx1ZTsKLSNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBpZiAoZGF0YS5ydW5M
b29wLmdldCgpICE9IGN1cnJlbnRSdW5Mb29wKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
I2Vsc2UKLSAgICAgICAgICAgIGlmIChkYXRhLnJ1bkxvb3AgIT0gY3VycmVudFJ1bkxvb3ApCisg
ICAgICAgICAgICBpZiAoZGF0YS5ydW5Mb29wLnB0cigpICE9IGN1cnJlbnRSdW5Mb29wKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotI2VuZGlmCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IEVwb2NoVGltZSBzY2hlZHVsZVRpbWUgPSBlcG9jaFRpbWUoc19kZWNhZGUpOwogICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhLnRpbWVycy5zaXplKCk7ICsraSkgewpAQCAt
MTQwLDExICs5Myw3IEBAIHZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmkK
ICAgICAgICAgICAgICAgICB0aW1lcnNUb0ZpcmUuYXBwZW5kKFdURk1vdmUocGFpci5maXJzdCkp
OwogICAgICAgICAgICAgfQogCi0jaWYgVVNFKENGKQotICAgICAgICAgICAgQ0ZSdW5Mb29wVGlt
ZXJTZXROZXh0RmlyZURhdGUoZGF0YS50aW1lci5nZXQoKSwgc2NoZWR1bGVUaW1lLnZhbHVlKCkp
OwotI2Vsc2UKICAgICAgICAgICAgIGRhdGEudGltZXItPnN0YXJ0T25lU2hvdChzdGQ6Om1heCgw
X3MsIHNjaGVkdWxlVGltZSAtIE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2No
KCkpKTsKLSNlbmRpZgogICAgICAgICB9CiAgICAgfQogCkBAIC0xNjQsMTAgKzExMyw3IEBAIEpT
UnVuTG9vcFRpbWVyOjpNYW5hZ2VyJiBKU1J1bkxvb3BUaW1lcjoKIAogdm9pZCBKU1J1bkxvb3BU
aW1lcjo6TWFuYWdlcjo6cmVnaXN0ZXJWTShWTSYgdm0pCiB7Ci0gICAgYXV0byBkYXRhID0gbWFr
ZVVuaXF1ZTxQZXJWTURhdGE+KCp0aGlzKTsKLSNpZiBVU0UoQ0YpCi0gICAgZGF0YS0+c2V0UnVu
TG9vcCh0aGlzLCB2bS5ydW5Mb29wKCkpOwotI2VuZGlmCisgICAgYXV0byBkYXRhID0gbWFrZVVu
aXF1ZTxQZXJWTURhdGE+KCp0aGlzLCB2bS5ydW5Mb29wKCkpOwogCiAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2xvY2spOwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9tYXBwaW5nLmFkZCh7
IHZtLmFwaUxvY2soKSB9LCBXVEZNb3ZlKGRhdGEpKTsKQEAgLTIwNSwxMSArMTUxLDcgQEAgdm9p
ZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6c2NoZWR1bGVUaQogICAgIGlmICghZm91bmQpCiAg
ICAgICAgIGRhdGEudGltZXJzLmFwcGVuZCh7IHRpbWVyLCBmaXJlRXBvY2hUaW1lIH0pOwogCi0j
aWYgVVNFKENGKQotICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKGRhdGEudGltZXIu
Z2V0KCksIHNjaGVkdWxlVGltZS52YWx1ZSgpKTsKLSNlbHNlCiAgICAgZGF0YS50aW1lci0+c3Rh
cnRPbmVTaG90KHN0ZDo6bWF4KDBfcywgc2NoZWR1bGVUaW1lIC0gTW9ub3RvbmljVGltZTo6bm93
KCkuc2Vjb25kc1NpbmNlRXBvY2goKSkpOwotI2VuZGlmCiB9CiAKIHZvaWQgSlNSdW5Mb29wVGlt
ZXI6Ok1hbmFnZXI6OmNhbmNlbFRpbWVyKEpTUnVuTG9vcFRpbWVyJiB0aW1lcikKQEAgLTI0MCwx
MSArMTgyLDcgQEAgdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6Y2FuY2VsVGltZQogICAg
ICAgICBzY2hlZHVsZVRpbWUgPSBzdGQ6Om1pbihzY2hlZHVsZVRpbWUsIGRhdGEudGltZXJzW2ld
LnNlY29uZCk7CiAgICAgfQogCi0jaWYgVVNFKENGKQotICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4
dEZpcmVEYXRlKGRhdGEudGltZXIuZ2V0KCksIHNjaGVkdWxlVGltZS52YWx1ZSgpKTsKLSNlbHNl
CiAgICAgZGF0YS50aW1lci0+c3RhcnRPbmVTaG90KHN0ZDo6bWF4KDBfcywgc2NoZWR1bGVUaW1l
IC0gTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKSkpOwotI2VuZGlmCiB9
CiAKIE9wdGlvbmFsPFNlY29uZHM+IEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lVW50aWxG
aXJlKEpTUnVuTG9vcFRpbWVyJiB0aW1lcikKQEAgLTI2NCwxOCArMjAyLDYgQEAgT3B0aW9uYWw8
U2Vjb25kcz4gSlNSdW5Mb29wVGltZXI6Ok1hbmFnZQogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiB9CiAKLSNpZiBVU0UoQ0YpCi12b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpkaWRDaGFu
Z2VSdW5Mb29wKFZNJiB2bSwgQ0ZSdW5Mb29wUmVmIG5ld1J1bkxvb3ApCi17Ci0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwotICAgIGF1dG8gaXRlciA9IG1fbWFwcGluZy5maW5k
KHsgdm0uYXBpTG9jaygpIH0pOwotICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXIgIT0gbV9tYXBwaW5n
LmVuZCgpKTsKLQotICAgIFBlclZNRGF0YSYgZGF0YSA9ICppdGVyLT52YWx1ZTsKLSAgICBkYXRh
LnNldFJ1bkxvb3AodGhpcywgbmV3UnVuTG9vcCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBKU1J1bkxv
b3BUaW1lcjo6dGltZXJEaWRGaXJlKCkKIHsKICAgICBOT19UQUlMX0NBTExTKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmgJKHJldmlz
aW9uIDI2NDI2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRp
bWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMyw2IEBACiAjaW5jbHVkZSA8d3RmL1No
YXJlZFRhc2suaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAotI2lm
IFVTRShDRikKLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgotI2Vu
ZGlmCi0KIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU0xvY2s7CkBAIC01MCwxMSArNDYsOCBA
QCBwdWJsaWM6CiAgICAgY2xhc3MgTWFuYWdlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYW5hZ2VyKTsKLSNpZiBVU0Uo
Q0YpCi0gICAgICAgIHN0YXRpYyB2b2lkIHRpbWVyRGlkRmlyZUNhbGxiYWNrKENGUnVuTG9vcFRp
bWVyUmVmLCB2b2lkKik7Ci0jZWxzZQogICAgICAgICB2b2lkIHRpbWVyRGlkRmlyZUNhbGxiYWNr
KCk7Ci0jZW5kaWYKKwogICAgICAgICBNYW5hZ2VyKCkgPSBkZWZhdWx0OwogCiAgICAgICAgIHZv
aWQgdGltZXJEaWRGaXJlKCk7CkBAIC03MCwxMCArNjMsNiBAQCBwdWJsaWM6CiAKICAgICAgICAg
T3B0aW9uYWw8U2Vjb25kcz4gdGltZVVudGlsRmlyZShKU1J1bkxvb3BUaW1lciYpOwogCi0jaWYg
VVNFKENGKQotICAgICAgICB2b2lkIGRpZENoYW5nZVJ1bkxvb3AoVk0mLCBDRlJ1bkxvb3BSZWYg
bmV3UnVuTG9vcCk7Ci0jZW5kaWYKLQogICAgIHByaXZhdGU6CiAgICAgICAgIExvY2sgbV9sb2Nr
OwogCkBAIC04MSwyMiArNzAsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZXJWTURhdGEp
OwogICAgICAgICBwdWJsaWM6Ci0jaWYgVVNFKENGKQotICAgICAgICAgICAgUGVyVk1EYXRhKE1h
bmFnZXImKSB7IH0KLSNlbHNlCi0gICAgICAgICAgICBQZXJWTURhdGEoTWFuYWdlciYpOwotI2Vu
ZGlmCisgICAgICAgICAgICBQZXJWTURhdGEoTWFuYWdlciYsIFdURjo6UnVuTG9vcCYpOwogICAg
ICAgICAgICAgflBlclZNRGF0YSgpOwogCi0jaWYgVVNFKENGKQotICAgICAgICAgICAgdm9pZCBz
ZXRSdW5Mb29wKE1hbmFnZXIqLCBDRlJ1bkxvb3BSZWYpOwotICAgICAgICAgICAgUmV0YWluUHRy
PENGUnVuTG9vcFRpbWVyUmVmPiB0aW1lcjsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlJ1bkxv
b3BSZWY+IHJ1bkxvb3A7Ci0gICAgICAgICAgICBDRlJ1bkxvb3BUaW1lckNvbnRleHQgY29udGV4
dDsKLSNlbHNlCi0gICAgICAgICAgICBSdW5Mb29wKiBydW5Mb29wOworICAgICAgICAgICAgUmVm
PFdURjo6UnVuTG9vcD4gcnVuTG9vcDsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSdW5M
b29wOjpUaW1lcjxNYW5hZ2VyPj4gdGltZXI7Ci0jZW5kaWYKICAgICAgICAgICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8UmVmPEpTUnVuTG9vcFRpbWVyPiwgRXBvY2hUaW1lPj4gdGltZXJzOwogICAgICAg
ICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlVGltZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VU
aW1lci5jcHAJKHJldmlzaW9uIDI2NDI2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb21pc2VUaW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDEzICs3MCw4IEBAIHZv
aWQgUHJvbWlzZVRpbWVyOjpkb1dvcmsoVk0mIHZtKQogICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKG1fcGVuZGluZ1Byb21pc2VzLmlzRW1wdHkoKSAmJiBtX3Nob3VsZFN0b3BSdW5Mb29wV2hl
bkFsbFByb21pc2VzRmluaXNoKSB7Ci0jaWYgVVNFKENGKQotICAgICAgICBDRlJ1bkxvb3BTdG9w
KHZtLnJ1bkxvb3AoKSk7Ci0jZWxzZQorICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5pc0VtcHR5
KCkgJiYgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxQcm9taXNlc0ZpbmlzaCkKICAgICAgICAg
UnVuTG9vcDo6Y3VycmVudCgpLnN0b3AoKTsKLSNlbmRpZgotICAgIH0KIAogICAgIG1fdGFza0xv
Y2sudW5sb2NrKCk7CiB9CkBAIC04NCwxNyArNzksMTAgQEAgdm9pZCBQcm9taXNlVGltZXI6OmRv
V29yayhWTSYgdm0pCiB2b2lkIFByb21pc2VUaW1lcjo6cnVuUnVuTG9vcCgpCiB7CiAgICAgQVNT
RVJUKCFtX2FwaUxvY2stPnZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwot
I2lmIFVTRShDRikKLSAgICBBU1NFUlQoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpID09IG1fYXBpTG9j
ay0+dm0oKS0+cnVuTG9vcCgpKTsKLSNlbmRpZgorICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVu
dCgpID09ICZtX2FwaUxvY2stPnZtKCktPnJ1bkxvb3AoKSk7CiAgICAgbV9zaG91bGRTdG9wUnVu
TG9vcFdoZW5BbGxQcm9taXNlc0ZpbmlzaCA9IHRydWU7Ci0gICAgaWYgKG1fcGVuZGluZ1Byb21p
c2VzLnNpemUoKSkgewotI2lmIFVTRShDRikKLSAgICAgICAgQ0ZSdW5Mb29wUnVuKCk7Ci0jZWxz
ZQorICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5zaXplKCkpCiAgICAgICAgIFJ1bkxvb3A6OnJ1
bigpOwotI2VuZGlmCi0gICAgfQogfQogCiB2b2lkIFByb21pc2VUaW1lcjo6YWRkUGVuZGluZ1By
b21pc2UoVk0mIHZtLCBKU1Byb21pc2UqIHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYm
IGRlcGVuZGVuY2llcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJl
dmlzaW9uIDI2NDI2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYyLDEyICsyNjIsMTAgQEAgaW5saW5lIHVuc2lnbmVkIFZNOjpu
ZXh0SUQoKQogCiBzdGF0aWMgYm9vbCB2bUNyZWF0aW9uU2hvdWxkQ3Jhc2ggPSBmYWxzZTsKIAot
Vk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQorVk06OlZNKFZNVHlwZSB2
bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3ApCiAgICAgOiBt
X2lkKG5leHRJRCgpKQogICAgICwgbV9hcGlMb2NrKGFkb3B0UmVmKG5ldyBKU0xvY2sodGhpcykp
KQotI2lmIFVTRShDRikKLSAgICAsIG1fcnVuTG9vcChDRlJ1bkxvb3BHZXRDdXJyZW50KCkpCi0j
ZW5kaWYgLy8gVVNFKENGKQorICAgICwgbV9ydW5Mb29wKHJ1bkxvb3AgPyAqcnVuTG9vcCA6IFdU
Rjo6UnVuTG9vcDo6Y3VycmVudCgpKQogICAgICwgbV9yYW5kb20oT3B0aW9uczo6c2VlZE9mVk1S
YW5kb21Gb3JGdXp6ZXIoKSA/IE9wdGlvbnM6OnNlZWRPZlZNUmFuZG9tRm9yRnV6emVyKCkgOiBj
cnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKQogICAgICwgbV9pbnRlZ3JpdHlSYW5kb20o
KnRoaXMpCiAgICAgLCBoZWFwKCp0aGlzLCBoZWFwVHlwZSkKQEAgLTY3MSw5ICs2NjksOSBAQCBS
ZWY8Vk0+IFZNOjpjcmVhdGVDb250ZXh0R3JvdXAoSGVhcFR5cGUgCiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVk0oQVBJQ29udGV4dEdyb3VwLCBoZWFwVHlwZSkpOwogfQogCi1SZWY8Vk0+IFZN
OjpjcmVhdGUoSGVhcFR5cGUgaGVhcFR5cGUpCitSZWY8Vk0+IFZNOjpjcmVhdGUoSGVhcFR5cGUg
aGVhcFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBWTShEZWZhdWx0LCBoZWFwVHlwZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZN
KERlZmF1bHQsIGhlYXBUeXBlLCBydW5Mb29wKSk7CiB9CiAKIGJvb2wgVk06OnNoYXJlZEluc3Rh
bmNlRXhpc3RzKCkKQEAgLTEzNTUsMTUgKzEzNTMsNiBAQCB2b2lkIFZNOjp2ZXJpZnlFeGNlcHRp
b25DaGVja05lZWRJc1NhdGlzCiB9CiAjZW5kaWYKIAotI2lmIFVTRShDRikKLXZvaWQgVk06OnNl
dFJ1bkxvb3AoQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCi17Ci0gICAgQVNTRVJUKHJ1bkxvb3ApOwot
ICAgIG1fcnVuTG9vcCA9IHJ1bkxvb3A7Ci0gICAgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnNo
YXJlZCgpLmRpZENoYW5nZVJ1bkxvb3AoKnRoaXMsIHJ1bkxvb3ApOwotfQotI2VuZGlmIC8vIFVT
RShDRikKLQogU2NyYXRjaEJ1ZmZlciogVk06OnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNpemVfdCBz
aXplKQogewogICAgIGlmICghc2l6ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkocmV2aXNpb24gMjY0MjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBX
VEYgeworY2xhc3MgUnVuTG9vcDsKIGNsYXNzIFNpbXBsZVN0YXRzOwogfSAvLyBuYW1lc3BhY2Ug
V1RGCiB1c2luZyBXVEY6OlNpbXBsZVN0YXRzOwpAQCAtMzEyLDcgKzMxMyw3IEBAIHB1YmxpYzoK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBzaGFyZWRJbnN0YW5jZUV4aXN0cygp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBWTSYgc2hhcmVkSW5zdGFuY2UoKTsKIAot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8Vk0+IGNyZWF0ZShIZWFwVHlwZSA9IFNt
YWxsSGVhcCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxWTT4gY3JlYXRlKEhl
YXBUeXBlID0gU21hbGxIZWFwLCBXVEY6OlJ1bkxvb3AqID0gbnVsbHB0cik7CiAgICAgc3RhdGlj
IFJlZjxWTT4gY3JlYXRlQ29udGV4dEdyb3VwKEhlYXBUeXBlID0gU21hbGxIZWFwKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSB+Vk0oKTsKIApAQCAtMzUzLDEwICszNTQsNyBAQCBwcml2YXRlOgog
CiAgICAgdW5zaWduZWQgbV9pZDsKICAgICBSZWZQdHI8SlNMb2NrPiBtX2FwaUxvY2s7Ci0jaWYg
VVNFKENGKQotICAgIC8vIFRoZXNlIG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIGhlYXAg
YmVsb3cuCi0gICAgUmV0YWluUHRyPENGUnVuTG9vcFJlZj4gbV9ydW5Mb29wOwotI2VuZGlmCisg
ICAgUmVmPFdURjo6UnVuTG9vcD4gbV9ydW5Mb29wOwogCiAgICAgV2Vha1JhbmRvbSBtX3JhbmRv
bTsKICAgICBJbnRlZ3JpdHk6OlJhbmRvbSBtX2ludGVncml0eVJhbmRvbTsKQEAgLTEwNzksMTAg
KzEwNzcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWVkRXhjZXB0aW9uQ2hlY2soKSBjb25zdCB7
IHJldHVybiBtX25lZWRFeGNlcHRpb25DaGVjazsgfQogI2VuZGlmCiAKLSNpZiBVU0UoQ0YpCi0g
ICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiBtX3J1bkxvb3AuZ2V0KCk7
IH0KLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFJ1bkxvb3AoQ0ZSdW5Mb29wUmVmKTsK
LSNlbmRpZiAvLyBVU0UoQ0YpCisgICAgV1RGOjpSdW5Mb29wJiBydW5Mb29wKCkgY29uc3QgeyBy
ZXR1cm4gbV9ydW5Mb29wOyB9CiAKICAgICBzdGF0aWMgdm9pZCBzZXRDcmFzaE9uVk1DcmVhdGlv
bihib29sKTsKIApAQCAtMTEwNiw3ICsxMTAxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi0gICAgVk0oVk1UeXBlLCBIZWFw
VHlwZSk7CisgICAgVk0oVk1UeXBlLCBIZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiA9IG51bGxwdHIp
OwogICAgIHN0YXRpYyBWTSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICB2b2lkIGNy
ZWF0ZU5hdGl2ZVRodW5rKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDI2NykKKysr
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDIwLTA3LTExICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgVW5yZXZpZXdlZCwgcmUtbGFuZGluZyByMjY0MjQyIHdpdGggY3Jhc2ggZml4ZWQuCisKKyAg
ICAgICAgUmUtbGFuZGVkIGNoYW5nZXNldDoKKworICAgICAgICAiSlNSdW5Mb29wVGltZXIgc2hv
dWxkIHVzZSBXVEY6OlJ1bkxvb3AgcmF0aGVyIHRoYW4gY3VzdG9tIENGCisgICAgICAgIGNvZGUi
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQxMDIK
KyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI2NDI0MgorCisgICAg
ICAgICogYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tbW9u
Vk1TbG93KToKKwogMjAyMC0wNy0xMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtMRkNdW0JGQ11bTWluLU1heCB3aWR0aF0gQWRkIHN1cHBvcnQgZm9yIGZsb2F0
IGF2b2lkZXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCShy
ZXZpc2lvbiAyNjQyNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDEzIEBAIEpTQzo6Vk0mIGNvbW1vblZNU2xv
dygpCiAgICAgLy8gQWxzbywgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKSBkb2VzIG5vdGhpbmcgb24g
aU9TLgogICAgIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKLSAg
ICBhdXRvJiB2bSA9IEpTQzo6Vk06OmNyZWF0ZShKU0M6OkxhcmdlSGVhcCkubGVha1JlZigpOwor
ICAgIFJ1bkxvb3AqIHJ1bkxvb3AgPSBudWxscHRyOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisgICAgaWYgKFJ1bkxvb3AqIHdlYiA9IFJ1bkxvb3A6OndlYklmRXhpc3RzKCkpCisgICAgICAg
IHJ1bkxvb3AgPSB3ZWI7CisjZW5kaWYKKworICAgIGF1dG8mIHZtID0gSlNDOjpWTTo6Y3JlYXRl
KEpTQzo6TGFyZ2VIZWFwLCBydW5Mb29wKS5sZWFrUmVmKCk7CiAKICAgICBnX2NvbW1vblZNT3JO
dWxsID0gJnZtOwogCkBAIC02NCw3ICs3MCw2IEBAIEpTQzo6Vk0mIGNvbW1vblZNU2xvdygpCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoV2ViVGhyZWFkSXNFbmFibGVkKCkpCiAg
ICAgICAgIHZtLmFwaUxvY2soKS5tYWtlV2ViVGhyZWFkQXdhcmUoKTsKLSAgICB2bS5zZXRSdW5M
b29wKFdlYlRocmVhZFJ1bkxvb3AoKSk7CiAgICAgdm0uaGVhcC5tYWNoaW5lVGhyZWFkcygpLmFk
ZEN1cnJlbnRUaHJlYWQoKTsKICNlbmRpZgogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQyNjcpCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wNy0xMSAgR2VvZmZy
ZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJlLWxh
bmRpbmcgcjI2NDI0MiB3aXRoIGNyYXNoIGZpeGVkLgorCisgICAgICAgIFJlLWxhbmRlZCBjaGFu
Z2VzZXQ6CisKKyAgICAgICAgIkpTUnVuTG9vcFRpbWVyIHNob3VsZCB1c2UgV1RGOjpSdW5Mb29w
IHJhdGhlciB0aGFuIGN1c3RvbSBDRgorICAgICAgICBjb2RlIgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTAyCisgICAgICAgIGh0dHBzOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8yNjQyNDIKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvSmF2YVNjcmlwdENvcmUvSlNSdW5Mb29wVGltZXIubW06IEFkZGVkLgor
ICAgICAgICAoLVtUZXN0T2JqZWN0IGRlYWxsb2NdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorCiAyMDIwLTA3LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjQyNDIuCkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjY0MjY3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTg3
LDYgKzg3LDcgQEAKIAkJMTFCN0ZEMjgyMTlGNDcxMTAwNjlCMjdGIC8qIEZpcnN0TWVhbmluZ2Z1
bFBhaW50TWlsZXN0b25lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDExQjdGRDIyMjE5RjQ2REQwMDY5QjI3RiAvKiBGaXJzdE1lYW5pbmdmdWxQYWlu
dE1pbGVzdG9uZS5jcHAgKi87IH07CiAJCTExQzI1OThEMjFGQTYzMjQwMDRDOUUyMyAvKiBhc3lu
Yy1zY3JpcHQtbG9hZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDExQzI1OThDMjFGQTYxOEQwMDRDOUUyMyAvKiBhc3luYy1zY3JpcHQt
bG9hZC5odG1sICovOyB9OwogCQkxNDNEREU5ODIwQzkwMThCMDA3Rjc2RkEgLyogU2VjdXJpdHku
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTc0RjU1RDAyMDRENDcxQzAwMjk0OEM2IC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLzsgfTsK
KwkJMTRDQzQyRTYyNEI4RDhGQTAwRTY0RjQ4IC8qIEpTUnVuTG9vcFRpbWVyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRDQzQyRTUyNEI4RDhGQTAw
RTY0RjQ4IC8qIEpTUnVuTG9vcFRpbWVyLm1tICovOyB9OwogCQkxQTAyQzg3MDEyNUQ0Q0ZEMDBF
M0Y0QkQgLyogZmluZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBMDJDODRCMTI1RDRBNUUwMEUzRjRCRCAvKiBmaW5kLmh0bWwgKi87
IH07CiAJCTFBMzUyNEFFMUQ2M0E0RkIwMDMxNzI5QiAvKiBTY29wZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTM1MjRBQzFENjNBNEZCMDAzMTcy
OUIgLyogU2NvcGUuY3BwICovOyB9OwogCQkxQTRGODFDRjFCREZGRDUzMDA0RTY3MkUgLyogUmVt
b3RlT2JqZWN0UmVnaXN0cnlQbHVnSW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTRGODFDRDFCREZGRDUzMDA0RTY3MkUgLyogUmVtb3RlT2JqZWN0
UmVnaXN0cnlQbHVnSW4ubW0gKi87IH07CkBAIC0xNjg5LDYgKzE2OTAsNyBAQAogCQkxMUMyNTk4
QzIxRkE2MThEMDA0QzlFMjMgLyogYXN5bmMtc2NyaXB0LWxvYWQuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJhc3luYy1zY3JpcHQtbG9hZC5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMTQ0NjQwMTIxNjdBODMwNTAwMEJEMjE4IC8qIExheW91dFVuaXRUZXN0
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRVbml0VGVz
dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDRENDBFQzIyMUI0NkE3MDA0
QjQ3NEYgLyogVVVJRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBV
VUlELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRDQzQyRTUyNEI4RDhGQTAw
RTY0RjQ4IC8qIEpTUnVuTG9vcFRpbWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gSlNSdW5Mb29wVGltZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTE0RjNCMTEyMTVFNDVFQUIwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljT3BlcmF0
aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYXR1cmF0ZWRB
cml0aG1ldGljT3BlcmF0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
MDJDODRCMTI1RDRBNUUwMEUzRjRCRCAvKiBmaW5kLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSBmaW5kLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMDJDODRF
MTI1RDRBODQwMEUzRjRCRCAvKiBGaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEZpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzA1Miw2
ICszMDU0LDE0IEBACiAJCQluYW1lID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OworCQkxNENDNDJFMDI0QjhEN0U3MDBFNjRGNDggLyogSmF2YVNjcmlwdENvcmUgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTE0Q0M0MkU1MjRC
OEQ4RkEwMEU2NEY0OCAvKiBKU1J1bkxvb3BUaW1lci5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0g
SmF2YVNjcmlwdENvcmU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxQUI2
NzRBREZFOUQ1NEI1MTFDQTJDQkIgLyogUHJvZHVjdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNDI2NCw2ICs0Mjc0LDcgQEAKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNzU2MDkxNzYxOTI1OUM1OTAwOUVGMDZFIC8qIGlv
cyAqLywKKwkJCQkxNENDNDJFMDI0QjhEN0U3MDBFNjRGNDggLyogSmF2YVNjcmlwdENvcmUgKi8s
CiAJCQkJQzA3RTZDQUQxM0ZENjc2NTAwMzhCMjJCIC8qIG1hYyAqLywKIAkJCQlDMDg1ODdGOTEz
RkVDMzlCMDAxRUY0RTUgLyogVGVzdFdlYktpdEFQSSAqLywKIAkJCQk0NDBBMUQzNjE0QTAxMDAw
MDA4QTY2RjIgLyogV2ViQ29yZSAqLywKQEAgLTUwODQsNiArNTA5NSw3IEBACiAJCQkJNTE4MjBB
NEQyMkY0RUU3RjAwREYwQTAxIC8qIEphdmFzY3JpcHRVUkxOYXZpZ2F0aW9uLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUMwMTYwQzEyMUExMzI0NjAwNzdGQTMyIC8qIEpJVEVuYWJsZWQubW0gaW4g
U291cmNlcyAqLywKIAkJCQlFMzVGQzdCMjIyQjgyQTczMDBGMzJGOTggLyogSlNMb2NrVGFrZXNX
ZWJUaHJlYWRMb2NrLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMTRDQzQyRTYyNEI4RDhGQTAwRTY0
RjQ4IC8qIEpTUnVuTG9vcFRpbWVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzQxQTQx
MUE3RTAwNDQ3QzRDIC8qIEpTV3JhcHBlckZvck5vZGVJbldlYkZyYW1lLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRjQ1RTE1NzMyMTEyQ0UyOTAwMzA3RTgyIC8qIEtleWJvYXJkSW5wdXRUZXN0c0lP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI3OEUzRTE5MjNDRDg0MkYwMDVBNkI4MCAvKiBLZXll
ZENvZGluZy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvSmF2YVNjcmlwdENvcmUvSlNSdW5Mb29wVGltZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9KYXZhU2NyaXB0Q29yZS9KU1J1bkxvb3BUaW1lci5tbQkobm9u
ZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL0pT
UnVuTG9vcFRpbWVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIldURlN0cmluZ1V0aWxpdGllcy5o
IgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KKyNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRy
YXMuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgorI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKKy8vIEphdmFTY3JpcHRDb3JlJ3MgYmVoYXZpb3IgYXQgdGhlIHRp
bWUgb2Ygd3JpdGluZyBpcyB0aGF0IGRlc3RydWN0b3JzCisvLyBydW4gYXN5bmNocm9ub3VzbHkg
b24gdGhlIHRocmVhZCB0aGF0IGFsbG9jYXRlZCB0aGUgVk0sIHVubGVzcyB0aGV5IHJ1bgorLy8g
c3luY2hyb25vdXNseSBkdXJpbmcgYW4gQVBJIGNhbGwgb24gc29tZSBvdGhlciB0aHJlYWQuCisK
K3N0YXRpYyBib29sIHNfaXNSdW5uaW5nUnVuTG9vcDsKK3N0YXRpYyBib29sIHNfZG9uZTsKK3N0
YXRpYyBXVEY6OlJ1bkxvb3AqIHNfZXhwZWN0ZWRSdW5Mb29wOworCitAaW50ZXJmYWNlIFRlc3RP
YmplY3QgOiBOU09iamVjdAorLSAodm9pZClkZWFsbG9jOworQGVuZAorCitAaW1wbGVtZW50YXRp
b24gVGVzdE9iamVjdAorLSAodm9pZClkZWFsbG9jCit7CisgICAgaWYgKHNfaXNSdW5uaW5nUnVu
TG9vcCkgeworICAgICAgICBFWFBFQ1RfRVEoJlJ1bkxvb3A6OmN1cnJlbnQoKSwgc19leHBlY3Rl
ZFJ1bkxvb3ApOworICAgICAgICBzX2RvbmUgPSB0cnVlOworICAgIH0KKworICAgIFtzdXBlciBk
ZWFsbG9jXTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMg
dm9pZCB0cmlnZ2VyR0MoSlNDb250ZXh0ICpjb250ZXh0KQoreworICAgIEBhdXRvcmVsZWFzZXBv
b2wgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDEwMDA7ICsraSkKKyAgICAgICAg
ICAgIFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpbW1Rlc3RPYmplY3QgbmV3XSBhdXRvcmVsZWFz
ZV0gaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBKU0dhcmJhZ2VDb2xsZWN0KFtjb250ZXh0
IEpTR2xvYmFsQ29udGV4dFJlZl0pOworICAgIH0KK30KKworc3RhdGljIHZvaWQgY3ljbGVSdW5M
b29wKCkKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgc19pc1J1bm5pbmdSdW5M
b29wID0gdHJ1ZTsKKyAgICAgICAgUnVuTG9vcDo6Y3VycmVudCgpLmN5Y2xlKCk7CisgICAgICAg
IHNfaXNSdW5uaW5nUnVuTG9vcCA9IGZhbHNlOworICAgIH0KK30KKworVEVTVChKYXZhU2NyaXB0
Q29yZSwgSW5jcmVtZW50YWxTd2VlcGVyTWFpblRocmVhZCkKK3sKKyAgICBhdXRvIGNvbnRleHQg
PSBhZG9wdE5TKFtKU0NvbnRleHQgbmV3XSk7CisgICAgc19leHBlY3RlZFJ1bkxvb3AgPSAmUnVu
TG9vcDo6Y3VycmVudCgpOworCisgICAgd2hpbGUgKCFzX2RvbmUpIHsKKyAgICAgICAgdHJpZ2dl
ckdDKGNvbnRleHQuZ2V0KCkpOworICAgICAgICBjeWNsZVJ1bkxvb3AoKTsKKyAgICB9Cit9CisK
K1RFU1QoSmF2YVNjcmlwdENvcmUsIEluY3JlbWVudGFsU3dlZXBlclNlY29uZGFyeVRocmVhZCkK
K3sKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdE5TKFtKU0NvbnRleHQgbmV3XSk7CisgICAgc19l
eHBlY3RlZFJ1bkxvb3AgPSAmUnVuTG9vcDo6Y3VycmVudCgpOworCisgICAgd2hpbGUgKCFzX2Rv
bmUpIHsKKyAgICAgICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKFFP
U19DTEFTU19VU0VSX0lOVEVSQUNUSVZFLCAwKSwgXnsKKyAgICAgICAgICAgIHRyaWdnZXJHQyhj
b250ZXh0LmdldCgpKTsKKyAgICAgICAgICAgIGN5Y2xlUnVuTG9vcCgpOworICAgICAgICB9KTsK
KworICAgICAgICBjeWNsZVJ1bkxvb3AoKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404897</attachid>
            <date>2020-07-21 20:47:31 -0700</date>
            <delta_ts>2020-07-22 08:07:06 -0700</delta_ts>
            <desc>Patch for landing - fixed WASM crash</desc>
            <filename>bug-214102-20200721204730.patch</filename>
            <type>text/plain</type>
            <size>17259</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NjkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDIwLTA3LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgSlNSdW5Mb29wVGltZXIgc2hvdWxkIHVzZSBXVEY6OlJ1bkxvb3AgcmF0aGVyIHRoYW4gY3Vz
dG9tIENGIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDEwMgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJlLWxhbmRpbmcgcjI2NDI0MiB3aXRo
IGNyYXNoIGZpeGVkLgorCisgICAgICAgIFdlIG5lZWRlZCB0byBzeW5jaHJvbml6ZSB0aW1lciBk
ZXN0cnVjdGlvbiB3aXRoIHRpbWVyIGZpcmluZy4KKworICAgICAgICAqIHJ1bnRpbWUvRGVmZXJy
ZWRXb3JrVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6ZG9Xb3Jr
KToKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRXb3JrVGltZXI6OnJ1blJ1bkxvb3ApOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwOgorICAgICAgICAoSlNDOjplcG9jaFRpbWUp
OgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpQZXJW
TURhdGEpOgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRG
aXJlQ2FsbGJhY2spOgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVy
Vk1EYXRhOjp+UGVyVk1EYXRhKToKKyAgICAgICAgKEpTQzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFn
ZXI6OnRpbWVyRGlkRmlyZSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2Vy
OjpyZWdpc3RlclZNKToKKyAgICAgICAgKEpTQzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnNj
aGVkdWxlVGltZXIpOgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6Y2Fu
Y2VsVGltZXIpOgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1E
YXRhOjpzZXRSdW5Mb29wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNSdW5Mb29wVGltZXI6
Ok1hbmFnZXI6OmRpZENoYW5nZVJ1bkxvb3ApOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SlNSdW5Mb29wVGltZXIuaDoKKyAgICAgICAgKEpTQzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6
OlBlclZNRGF0YTo6UGVyVk1EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmNw
cDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OlZNOjp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpWTTo6c2V0UnVuTG9v
cCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6
cnVuTG9vcCBjb25zdCk6CisKIDIwMjAtMDctMjEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFNpbXBsaWZ5IERpc2FsbG93U2NvcGUsIERpc2FsbG93R0MsIGFuZCBE
aXNhbGxvd1ZNUmVlbnRyeSBpbXBsZW1lbnRhdGlvbnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwCShyZXZpc2lvbiAy
NjQ2NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1l
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDEzICs4MSw4IEBAIHZvaWQgRGVmZXJyZWRXb3Jr
VGltZXI6OmRvV29yayhWTSYgdm0pCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobV9wZW5k
aW5nVGlja2V0cy5pc0VtcHR5KCkgJiYgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRz
RmluaXNoKSB7Ci0jaWYgVVNFKENGKQotICAgICAgICBDRlJ1bkxvb3BTdG9wKHZtLnJ1bkxvb3Ao
KSk7Ci0jZWxzZQorICAgIGlmIChtX3BlbmRpbmdUaWNrZXRzLmlzRW1wdHkoKSAmJiBtX3Nob3Vs
ZFN0b3BSdW5Mb29wV2hlbkFsbFRpY2tldHNGaW5pc2gpCiAgICAgICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5zdG9wKCk7Ci0jZW5kaWYKLSAgICB9CiAKICAgICBtX3Rhc2tMb2NrLnVubG9jaygpOwog
fQpAQCAtOTUsMTcgKzkwLDEwIEBAIHZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OmRvV29yayhWTSYg
dm0pCiB2b2lkIERlZmVycmVkV29ya1RpbWVyOjpydW5SdW5Mb29wKCkKIHsKICAgICBBU1NFUlQo
IW1fYXBpTG9jay0+dm0oKS0+Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0jaWYg
VVNFKENGKQotICAgIEFTU0VSVChDRlJ1bkxvb3BHZXRDdXJyZW50KCkgPT0gbV9hcGlMb2NrLT52
bSgpLT5ydW5Mb29wKCkpOwotI2VuZGlmCisgICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkg
PT0gJm1fYXBpTG9jay0+dm0oKS0+cnVuTG9vcCgpKTsKICAgICBtX3Nob3VsZFN0b3BSdW5Mb29w
V2hlbkFsbFRpY2tldHNGaW5pc2ggPSB0cnVlOwotICAgIGlmIChtX3BlbmRpbmdUaWNrZXRzLnNp
emUoKSkgewotI2lmIFVTRShDRikKLSAgICAgICAgQ0ZSdW5Mb29wUnVuKCk7Ci0jZWxzZQorICAg
IGlmIChtX3BlbmRpbmdUaWNrZXRzLnNpemUoKSkKICAgICAgICAgUnVuTG9vcDo6cnVuKCk7Ci0j
ZW5kaWYKLSAgICB9CiB9CiAKIHZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OmFkZFBlbmRpbmdXb3Jr
KFZNJiB2bSwgVGlja2V0IHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYmIGRlcGVuZGVu
Y2llcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxv
b3BUaW1lci5jcHAJKHJldmlzaW9uIDI2NDY0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNDYgKzQwLDEy
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgaW5saW5lIEpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjpFcG9jaFRpbWUgZXBvY2hUaW1lKFNlY29uZHMgZGVsYXkpCiB7Ci0jaWYgVVNFKENGKQot
ICAgIHJldHVybiBTZWNvbmRzIHsgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBkZWxheS52
YWx1ZSgpIH07Ci0jZWxzZQogICAgIHJldHVybiBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRz
U2luY2VFcG9jaCgpICsgZGVsYXk7Ci0jZW5kaWYKLX0KLQotI2lmIFVTRShDRikKLXZvaWQgSlNS
dW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmlyZUNhbGxiYWNrKENGUnVuTG9vcFRpbWVy
UmVmLCB2b2lkKiBjb250ZXh0UHRyKQotewotICAgIHN0YXRpY19jYXN0PEpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyKj4oY29udGV4dFB0ciktPnRpbWVyRGlkRmlyZSgpOwogfQogCi12b2lkIEpTUnVu
TG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6OnNldFJ1bkxvb3AoTWFuYWdlciogbWFuYWdl
ciwgQ0ZSdW5Mb29wUmVmIG5ld1J1bkxvb3ApCi17Ci0gICAgaWYgKHJ1bkxvb3ApIHsKLSAgICAg
ICAgQ0ZSdW5Mb29wUmVtb3ZlVGltZXIocnVuTG9vcC5nZXQoKSwgdGltZXIuZ2V0KCksIGtDRlJ1
bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAgICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZSh0aW1l
ci5nZXQoKSk7Ci0gICAgICAgIHJ1bkxvb3AuY2xlYXIoKTsKLSAgICAgICAgdGltZXIuY2xlYXIo
KTsKLSAgICB9Ci0KLSAgICBpZiAobmV3UnVuTG9vcCkgewotICAgICAgICBydW5Mb29wID0gbmV3
UnVuTG9vcDsKLSAgICAgICAgbWVtc2V0KCZjb250ZXh0LCAwLCBzaXplb2YoQ0ZSdW5Mb29wVGlt
ZXJDb250ZXh0KSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1hbmFnZXIpOwotICAgICAgICBj
b250ZXh0LmluZm8gPSBtYW5hZ2VyOwotICAgICAgICB0aW1lciA9IGFkb3B0Q0YoQ0ZSdW5Mb29w
VGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50
KCkgKyBzX2RlY2FkZS5zZWNvbmRzKCksIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgc19k
ZWNhZGUuc2Vjb25kcygpLCAwLCAwLCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRG
aXJlQ2FsbGJhY2ssICZjb250ZXh0KSk7Ci0gICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKHJ1bkxv
b3AuZ2V0KCksIHRpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotCi0gICAgICAg
IEVwb2NoVGltZSBzY2hlZHVsZVRpbWUgPSBlcG9jaFRpbWUoc19kZWNhZGUpOwotICAgICAgICBm
b3IgKGF1dG8mIHBhaXIgOiB0aW1lcnMpCi0gICAgICAgICAgICBzY2hlZHVsZVRpbWUgPSBzdGQ6
Om1pbihwYWlyLnNlY29uZCwgc2NoZWR1bGVUaW1lKTsKLSAgICAgICAgQ0ZSdW5Mb29wVGltZXJT
ZXROZXh0RmlyZURhdGUodGltZXIuZ2V0KCksIHNjaGVkdWxlVGltZS52YWx1ZSgpKTsKLSAgICB9
Ci19Ci0jZWxzZQotSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6UGVyVk1EYXRh
KE1hbmFnZXImIG1hbmFnZXIpCi0gICAgOiBydW5Mb29wKCZSdW5Mb29wOjpjdXJyZW50KCkpCi0g
ICAgLCB0aW1lcihtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1hbmFnZXI+PigqcnVuTG9vcCwg
Jm1hbmFnZXIsICZKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRGaXJlQ2FsbGJhY2sp
KQorSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6UGVyVk1EYXRhKE1hbmFnZXIm
IG1hbmFnZXIsIFJ1bkxvb3AmIHJ1bkxvb3ApCisgICAgOiBydW5Mb29wKHJ1bkxvb3ApCisgICAg
LCB0aW1lcihtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1hbmFnZXI+PihydW5Mb29wLCAmbWFu
YWdlciwgJkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpcmVDYWxsYmFjaykpCiB7
CiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICB0aW1lci0+c2V0UHJpb3JpdHkoUnVuTG9v
cFNvdXJjZVByaW9yaXR5OjpKYXZhc2NyaXB0VGltZXIpOwpAQCAtOTEsMTMgKzU3LDE0IEBAIHZv
aWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmkKIHsKICAgICB0aW1lckRpZEZp
cmUoKTsKIH0KLSNlbmRpZgogCiBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjp+
UGVyVk1EYXRhKCkKIHsKLSNpZiBVU0UoQ0YpCi0gICAgc2V0UnVuTG9vcChudWxscHRyLCBudWxs
cHRyKTsKLSNlbmRpZgorICAgIC8vIEJlY2F1c2UgUnVuTG9vcDo6VGltZXIgaXMgbm90IHJlZmVy
ZW5jZSBjb3VudGVkLCB3ZSBuZWVkIHRvIGRlYWxsb2NhdGUgaXQKKyAgICAvLyBvbiB0aGUgc2Ft
ZSB0aHJlYWQgb24gd2hpY2ggaXQgZmlyZXM7IG90aGVyd2lzZSwgd2UgbWlnaHQgZGVhbGxvY2F0
ZSBpdAorICAgIC8vIHdoaWxlIGl0J3MgZmlyaW5nLgorICAgIHJ1bkxvb3AtPmRpc3BhdGNoKFt0
aW1lciA9IFdURk1vdmUodGltZXIpXSB7CisgICAgfSk7CiB9CiAKIHZvaWQgSlNSdW5Mb29wVGlt
ZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmlyZSgpCkBAIC0xMDYsMjEgKzczLDEyIEBAIHZvaWQgSlNS
dW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmkKIAogICAgIHsKICAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwotI2lmIFVTRShDRikKLSAgICAgICAgQ0ZSdW5Mb29w
UmVmIGN1cnJlbnRSdW5Mb29wID0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpOwotI2Vsc2UKICAgICAg
ICAgUnVuTG9vcCogY3VycmVudFJ1bkxvb3AgPSAmUnVuTG9vcDo6Y3VycmVudCgpOwotI2VuZGlm
CiAgICAgICAgIEVwb2NoVGltZSBub3dFcG9jaFRpbWUgPSBlcG9jaFRpbWUoMF9zKTsKICAgICAg
ICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fbWFwcGluZykgewogICAgICAgICAgICAgUGVyVk1EYXRh
JiBkYXRhID0gKmVudHJ5LnZhbHVlOwotI2lmIFVTRShDRikKLSAgICAgICAgICAgIGlmIChkYXRh
LnJ1bkxvb3AuZ2V0KCkgIT0gY3VycmVudFJ1bkxvb3ApCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0jZWxzZQotICAgICAgICAgICAgaWYgKGRhdGEucnVuTG9vcCAhPSBjdXJyZW50UnVuTG9v
cCkKKyAgICAgICAgICAgIGlmIChkYXRhLnJ1bkxvb3AucHRyKCkgIT0gY3VycmVudFJ1bkxvb3Ap
CiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0jZW5kaWYKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgRXBvY2hUaW1lIHNjaGVkdWxlVGltZSA9IGVwb2NoVGltZShzX2RlY2FkZSk7CiAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGEudGltZXJzLnNpemUoKTsgKytpKSB7
CkBAIC0xNDAsMTEgKzk4LDcgQEAgdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJE
aWRGaQogICAgICAgICAgICAgICAgIHRpbWVyc1RvRmlyZS5hcHBlbmQoV1RGTW92ZShwYWlyLmZp
cnN0KSk7CiAgICAgICAgICAgICB9CiAKLSNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBDRlJ1bkxv
b3BUaW1lclNldE5leHRGaXJlRGF0ZShkYXRhLnRpbWVyLmdldCgpLCBzY2hlZHVsZVRpbWUudmFs
dWUoKSk7Ci0jZWxzZQogICAgICAgICAgICAgZGF0YS50aW1lci0+c3RhcnRPbmVTaG90KHN0ZDo6
bWF4KDBfcywgc2NoZWR1bGVUaW1lIC0gTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNl
RXBvY2goKSkpOwotI2VuZGlmCiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE2NCwxMCArMTE4LDcg
QEAgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXImIEpTUnVuTG9vcFRpbWVyOgogCiB2b2lkIEpTUnVu
TG9vcFRpbWVyOjpNYW5hZ2VyOjpyZWdpc3RlclZNKFZNJiB2bSkKIHsKLSAgICBhdXRvIGRhdGEg
PSBtYWtlVW5pcXVlPFBlclZNRGF0YT4oKnRoaXMpOwotI2lmIFVTRShDRikKLSAgICBkYXRhLT5z
ZXRSdW5Mb29wKHRoaXMsIHZtLnJ1bkxvb3AoKSk7Ci0jZW5kaWYKKyAgICBhdXRvIGRhdGEgPSBt
YWtlVW5pcXVlPFBlclZNRGF0YT4oKnRoaXMsIHZtLnJ1bkxvb3AoKSk7CiAKICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX21hcHBpbmcu
YWRkKHsgdm0uYXBpTG9jaygpIH0sIFdURk1vdmUoZGF0YSkpOwpAQCAtMjA1LDExICsxNTYsNyBA
QCB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpzY2hlZHVsZVRpCiAgICAgaWYgKCFmb3Vu
ZCkKICAgICAgICAgZGF0YS50aW1lcnMuYXBwZW5kKHsgdGltZXIsIGZpcmVFcG9jaFRpbWUgfSk7
CiAKLSNpZiBVU0UoQ0YpCi0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoZGF0YS50
aW1lci5nZXQoKSwgc2NoZWR1bGVUaW1lLnZhbHVlKCkpOwotI2Vsc2UKICAgICBkYXRhLnRpbWVy
LT5zdGFydE9uZVNob3Qoc3RkOjptYXgoMF9zLCBzY2hlZHVsZVRpbWUgLSBNb25vdG9uaWNUaW1l
Ojpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpKSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBKU1J1bkxv
b3BUaW1lcjo6TWFuYWdlcjo6Y2FuY2VsVGltZXIoSlNSdW5Mb29wVGltZXImIHRpbWVyKQpAQCAt
MjQwLDExICsxODcsNyBAQCB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpjYW5jZWxUaW1l
CiAgICAgICAgIHNjaGVkdWxlVGltZSA9IHN0ZDo6bWluKHNjaGVkdWxlVGltZSwgZGF0YS50aW1l
cnNbaV0uc2Vjb25kKTsKICAgICB9CiAKLSNpZiBVU0UoQ0YpCi0gICAgQ0ZSdW5Mb29wVGltZXJT
ZXROZXh0RmlyZURhdGUoZGF0YS50aW1lci5nZXQoKSwgc2NoZWR1bGVUaW1lLnZhbHVlKCkpOwot
I2Vsc2UKICAgICBkYXRhLnRpbWVyLT5zdGFydE9uZVNob3Qoc3RkOjptYXgoMF9zLCBzY2hlZHVs
ZVRpbWUgLSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpKSk7Ci0jZW5k
aWYKIH0KIAogT3B0aW9uYWw8U2Vjb25kcz4gSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVV
bnRpbEZpcmUoSlNSdW5Mb29wVGltZXImIHRpbWVyKQpAQCAtMjY0LDE4ICsyMDcsNiBAQCBPcHRp
b25hbDxTZWNvbmRzPiBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlCiAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIH0KIAotI2lmIFVTRShDRikKLXZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OmRp
ZENoYW5nZVJ1bkxvb3AoVk0mIHZtLCBDRlJ1bkxvb3BSZWYgbmV3UnVuTG9vcCkKLXsKLSAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7Ci0gICAgYXV0byBpdGVyID0gbV9tYXBwaW5n
LmZpbmQoeyB2bS5hcGlMb2NrKCkgfSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoaXRlciAhPSBtX21h
cHBpbmcuZW5kKCkpOwotCi0gICAgUGVyVk1EYXRhJiBkYXRhID0gKml0ZXItPnZhbHVlOwotICAg
IGRhdGEuc2V0UnVuTG9vcCh0aGlzLCBuZXdSdW5Mb29wKTsKLX0KLSNlbmRpZgotCiB2b2lkIEpT
UnVuTG9vcFRpbWVyOjp0aW1lckRpZEZpcmUoKQogewogICAgIE5PX1RBSUxfQ0FMTFMoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuaAko
cmV2aXNpb24gMjY0NjQyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5M
b29wVGltZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDYgQEAKICNpbmNsdWRlIDx3
dGYvU2hhcmVkVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgog
Ci0jaWYgVVNFKENGKQotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+
Ci0jZW5kaWYKLQogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTTG9jazsKQEAgLTUwLDExICs0
Niw4IEBAIHB1YmxpYzoKICAgICBjbGFzcyBNYW5hZ2VyIHsKICAgICAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1hbmFnZXIpOwotI2lm
IFVTRShDRikKLSAgICAgICAgc3RhdGljIHZvaWQgdGltZXJEaWRGaXJlQ2FsbGJhY2soQ0ZSdW5M
b29wVGltZXJSZWYsIHZvaWQqKTsKLSNlbHNlCiAgICAgICAgIHZvaWQgdGltZXJEaWRGaXJlQ2Fs
bGJhY2soKTsKLSNlbmRpZgorCiAgICAgICAgIE1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKICAgICAg
ICAgdm9pZCB0aW1lckRpZEZpcmUoKTsKQEAgLTcwLDEwICs2Myw2IEBAIHB1YmxpYzoKIAogICAg
ICAgICBPcHRpb25hbDxTZWNvbmRzPiB0aW1lVW50aWxGaXJlKEpTUnVuTG9vcFRpbWVyJik7CiAK
LSNpZiBVU0UoQ0YpCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlUnVuTG9vcChWTSYsIENGUnVuTG9v
cFJlZiBuZXdSdW5Mb29wKTsKLSNlbmRpZgotCiAgICAgcHJpdmF0ZToKICAgICAgICAgTG9jayBt
X2xvY2s7CiAKQEAgLTgxLDIyICs3MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlclZN
RGF0YSk7CiAgICAgICAgIHB1YmxpYzoKLSNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBQZXJWTURh
dGEoTWFuYWdlciYpIHsgfQotI2Vsc2UKLSAgICAgICAgICAgIFBlclZNRGF0YShNYW5hZ2VyJik7
Ci0jZW5kaWYKKyAgICAgICAgICAgIFBlclZNRGF0YShNYW5hZ2VyJiwgV1RGOjpSdW5Mb29wJik7
CiAgICAgICAgICAgICB+UGVyVk1EYXRhKCk7CiAKLSNpZiBVU0UoQ0YpCi0gICAgICAgICAgICB2
b2lkIHNldFJ1bkxvb3AoTWFuYWdlciosIENGUnVuTG9vcFJlZik7Ci0gICAgICAgICAgICBSZXRh
aW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IHRpbWVyOwotICAgICAgICAgICAgUmV0YWluUHRyPENG
UnVuTG9vcFJlZj4gcnVuTG9vcDsKLSAgICAgICAgICAgIENGUnVuTG9vcFRpbWVyQ29udGV4dCBj
b250ZXh0OwotI2Vsc2UKLSAgICAgICAgICAgIFJ1bkxvb3AqIHJ1bkxvb3A7CisgICAgICAgICAg
ICBSZWY8V1RGOjpSdW5Mb29wPiBydW5Mb29wOwogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFJ1bkxvb3A6OlRpbWVyPE1hbmFnZXI+PiB0aW1lcjsKLSNlbmRpZgogICAgICAgICAgICAgVmVj
dG9yPHN0ZDo6cGFpcjxSZWY8SlNSdW5Mb29wVGltZXI+LCBFcG9jaFRpbWU+PiB0aW1lcnM7CiAg
ICAgICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlz
aW9uIDI2NDY0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjY0LDEyICsyNjQsMTAgQEAgaW5saW5lIHVuc2lnbmVkIFZNOjpuZXh0
SUQoKQogCiBzdGF0aWMgYm9vbCB2bUNyZWF0aW9uU2hvdWxkQ3Jhc2ggPSBmYWxzZTsKIAotVk06
OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBib29sKiBzdWNjZXNzKQorVk06
OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxv
b3AsIGJvb2wqIHN1Y2Nlc3MpCiAgICAgOiBtX2lkKG5leHRJRCgpKQogICAgICwgbV9hcGlMb2Nr
KGFkb3B0UmVmKG5ldyBKU0xvY2sodGhpcykpKQotI2lmIFVTRShDRikKLSAgICAsIG1fcnVuTG9v
cChDRlJ1bkxvb3BHZXRDdXJyZW50KCkpCi0jZW5kaWYgLy8gVVNFKENGKQorICAgICwgbV9ydW5M
b29wKHJ1bkxvb3AgPyAqcnVuTG9vcCA6IFdURjo6UnVuTG9vcDo6Y3VycmVudCgpKQogICAgICwg
bV9yYW5kb20oT3B0aW9uczo6c2VlZE9mVk1SYW5kb21Gb3JGdXp6ZXIoKSA/IE9wdGlvbnM6OnNl
ZWRPZlZNUmFuZG9tRm9yRnV6emVyKCkgOiBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigp
KQogICAgICwgbV9pbnRlZ3JpdHlSYW5kb20oKnRoaXMpCiAgICAgLCBoZWFwKCp0aGlzLCBoZWFw
VHlwZSkKQEAgLTY4MSwxNSArNjc5LDE1IEBAIFJlZjxWTT4gVk06OmNyZWF0ZUNvbnRleHRHcm91
cChIZWFwVHlwZSAKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWTShBUElDb250ZXh0R3JvdXAs
IGhlYXBUeXBlKSk7CiB9CiAKLVJlZjxWTT4gVk06OmNyZWF0ZShIZWFwVHlwZSBoZWFwVHlwZSkK
K1JlZjxWTT4gVk06OmNyZWF0ZShIZWFwVHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5M
b29wKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZNKERlZmF1bHQsIGhlYXBUeXBlKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVk0oRGVmYXVsdCwgaGVhcFR5cGUsIHJ1bkxvb3Ap
KTsKIH0KIAotUmVmUHRyPFZNPiBWTTo6dHJ5Q3JlYXRlKEhlYXBUeXBlIGhlYXBUeXBlKQorUmVm
UHRyPFZNPiBWTTo6dHJ5Q3JlYXRlKEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1
bkxvb3ApCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKLSAgICBSZWZQdHI8Vk0+IHZtID0g
YWRvcHRSZWYobmV3IFZNKERlZmF1bHQsIGhlYXBUeXBlLCAmc3VjY2VzcykpOworICAgIFJlZlB0
cjxWTT4gdm0gPSBhZG9wdFJlZihuZXcgVk0oRGVmYXVsdCwgaGVhcFR5cGUsIHJ1bkxvb3AsICZz
dWNjZXNzKSk7CiAgICAgaWYgKCFzdWNjZXNzKSB7CiAgICAgICAgIC8vIEhlcmUsIHdlJ3JlIGRl
c3RydWN0aW5nIGEgcGFydGlhbGx5IGNvbnN0cnVjdGVkIFZNIGFuZCB3ZSBrbm93IHRoYXQKICAg
ICAgICAgLy8gbm8gb25lIGVsc2UgY2FuIGJlIHVzaW5nIGl0IGF0IHRoZSBzYW1lIHRpbWUuIFNv
LCBhY3F1aXJpbmcgdGhlIGxvY2sKQEAgLTEzODcsMTUgKzEzODUsNiBAQCB2b2lkIFZNOjp2ZXJp
ZnlFeGNlcHRpb25DaGVja05lZWRJc1NhdGlzCiB9CiAjZW5kaWYKIAotI2lmIFVTRShDRikKLXZv
aWQgVk06OnNldFJ1bkxvb3AoQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCi17Ci0gICAgQVNTRVJUKHJ1
bkxvb3ApOwotICAgIG1fcnVuTG9vcCA9IHJ1bkxvb3A7Ci0gICAgSlNSdW5Mb29wVGltZXI6Ok1h
bmFnZXI6OnNoYXJlZCgpLmRpZENoYW5nZVJ1bkxvb3AoKnRoaXMsIHJ1bkxvb3ApOwotfQotI2Vu
ZGlmIC8vIFVTRShDRikKLQogU2NyYXRjaEJ1ZmZlciogVk06OnNjcmF0Y2hCdWZmZXJGb3JTaXpl
KHNpemVfdCBzaXplKQogewogICAgIGlmICghc2l6ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAkocmV2aXNpb24gMjY0NjQyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQAogI2VuZGlmCiAKIG5h
bWVzcGFjZSBXVEYgeworY2xhc3MgUnVuTG9vcDsKIGNsYXNzIFNpbXBsZVN0YXRzOwogfSAvLyBu
YW1lc3BhY2UgV1RGCiB1c2luZyBXVEY6OlNpbXBsZVN0YXRzOwpAQCAtMzEzLDggKzMxNCw4IEBA
IHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBzaGFyZWRJbnN0YW5j
ZUV4aXN0cygpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBWTSYgc2hhcmVkSW5zdGFu
Y2UoKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8Vk0+IGNyZWF0ZShIZWFw
VHlwZSA9IFNtYWxsSGVhcCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxW
TT4gdHJ5Q3JlYXRlKEhlYXBUeXBlID0gU21hbGxIZWFwKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmPFZNPiBjcmVhdGUoSGVhcFR5cGUgPSBTbWFsbEhlYXAsIFdURjo6UnVuTG9v
cCogPSBudWxscHRyKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPFZNPiB0
cnlDcmVhdGUoSGVhcFR5cGUgPSBTbWFsbEhlYXAsIFdURjo6UnVuTG9vcCogPSBudWxscHRyKTsK
ICAgICBzdGF0aWMgUmVmPFZNPiBjcmVhdGVDb250ZXh0R3JvdXAoSGVhcFR5cGUgPSBTbWFsbEhl
YXApOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5WTSgpOwogCkBAIC0zNTUsMTAgKzM1Niw3IEBA
IHByaXZhdGU6CiAKICAgICB1bnNpZ25lZCBtX2lkOwogICAgIFJlZlB0cjxKU0xvY2s+IG1fYXBp
TG9jazsKLSNpZiBVU0UoQ0YpCi0gICAgLy8gVGhlc2UgbmVlZCB0byBiZSBpbml0aWFsaXplZCBi
ZWZvcmUgaGVhcCBiZWxvdy4KLSAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7
Ci0jZW5kaWYKKyAgICBSZWY8V1RGOjpSdW5Mb29wPiBtX3J1bkxvb3A7CiAKICAgICBXZWFrUmFu
ZG9tIG1fcmFuZG9tOwogICAgIEludGVncml0eTo6UmFuZG9tIG1faW50ZWdyaXR5UmFuZG9tOwpA
QCAtMTA4NSwxMCArMTA4Myw3IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRFeGNlcHRpb25DaGVj
aygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZEV4Y2VwdGlvbkNoZWNrOyB9CiAjZW5kaWYKIAotI2lm
IFVTRShDRikKLSAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVu
TG9vcC5nZXQoKTsgfQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UnVuTG9vcChDRlJ1
bkxvb3BSZWYpOwotI2VuZGlmIC8vIFVTRShDRikKKyAgICBXVEY6OlJ1bkxvb3AmIHJ1bkxvb3Ao
KSBjb25zdCB7IHJldHVybiBtX3J1bkxvb3A7IH0KIAogICAgIHN0YXRpYyB2b2lkIHNldENyYXNo
T25WTUNyZWF0aW9uKGJvb2wpOwogCkBAIC0xMTEyLDcgKzExMDcsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICBWTShW
TVR5cGUsIEhlYXBUeXBlLCBib29sKiBzdWNjZXNzID0gbnVsbHB0cik7CisgICAgVk0oVk1UeXBl
LCBIZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiA9IG51bGxwdHIsIGJvb2wqIHN1Y2Nlc3MgPSBudWxs
cHRyKTsKICAgICBzdGF0aWMgVk0qJiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAgdm9p
ZCBjcmVhdGVOYXRpdmVUaHVuaygpOwogCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NjQyKQorKysgU291
cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0w
Ny0yMSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIEpTUnVu
TG9vcFRpbWVyIHNob3VsZCB1c2UgV1RGOjpSdW5Mb29wIHJhdGhlciB0aGFuIGN1c3RvbSBDRiBj
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQx
MDIKKworICAgICAgICBVbnJldmlld2VkLCByZS1sYW5kaW5nIHIyNjQyNDIgd2l0aCBjcmFzaCBm
aXhlZC4KKworICAgICAgICBUbyBzdXBwb3J0IEpTQyB1c2luZyBleHRlcm5hbCBsb2NraW5nIGFy
b3VuZCBhIFJ1bkxvb3AgdGltZXIsIHdlIG5lZWRlZAorICAgICAgICB0byBhdm9pZCBtb2RpZnlp
bmcgdW5zeW5jaHJvbml6ZWQgdGltZXIgc3RhdGUgd2hpbGUgZmlyaW5nLgorCisgICAgICAgICog
d3RmL2NmL1J1bkxvb3BDRi5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6
c3RhcnQpOgorCiAyMDIwLTA3LTIwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CiAKICAgICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgSW50bC5EaXNwbGF5TmFtZXMKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL2NmL1J1bkxvb3BDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvY2YvUnVuTG9vcENGLmNwcAkocmV2aXNpb24gMjY0NjQyKQorKysgU291cmNlL1dURi93
dGYvY2YvUnVuTG9vcENGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDcgKzEyMSw3IEBAIHZv
aWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChTZWNvbmRzIGkKIAogICAgICAgICBhdXRvIHRp
bWVyID0gc3RhdGljX2Nhc3Q8VGltZXJCYXNlKj4oY29udGV4dCk7CiAgICAgICAgIGlmICghQ0ZS
dW5Mb29wVGltZXJEb2VzUmVwZWF0KGNmVGltZXIpKQotICAgICAgICAgICAgdGltZXItPnN0b3Ao
KTsKKyAgICAgICAgICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShjZlRpbWVyKTsKIAogICAg
ICAgICB0aW1lci0+ZmlyZWQoKTsKICAgICB9LCB0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI2NDY0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIwLTA3LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgSlNSdW5Mb29wVGltZXIgc2hvdWxkIHVzZSBXVEY6OlJ1bkxvb3Ag
cmF0aGVyIHRoYW4gY3VzdG9tIENGIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxNDEwMgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJlLWxhbmRp
bmcgcjI2NDI0MiB3aXRoIGNyYXNoIGZpeGVkLgorCisgICAgICAgIFNpbmNlIEkgd2FzIGhlcmUs
IEkgYXBwbGllZCBEYXJpbidzIHByZXZpb3VzIHJldmlldyBmZWVkYmFjayB0aGF0IEkgaGFkCisg
ICAgICAgIG1pc3NlZC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0NvbW1vblZNLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbW1vblZNU2xvdyk6CisKIDIwMjAtMDctMjAgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZlcnQgcjI2Mjc3
NiBmb3IgZXhpc3RpbmcgYXBwcyB1c2luZyBVSVdlYlZpZXcvV2ViVmlldwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAkocmV2aXNpb24gMjY0NjQyKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Niw3ICs1NiwxMyBAQCBKU0M6OlZNJiBjb21tb25WTVNsb3coKQogICAgIC8vIEFsc28sIGluaXRp
YWxpemVNYWluVGhyZWFkKCkgZG9lcyBub3RoaW5nIG9uIGlPUy4KICAgICBTY3JpcHRDb250cm9s
bGVyOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogCi0gICAgYXV0byYgdm0gPSBKU0M6OlZNOjpj
cmVhdGUoSlNDOjpMYXJnZUhlYXApLmxlYWtSZWYoKTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgIFJ1bkxvb3AqIHJ1bkxvb3AgPSBSdW5Mb29wOjp3ZWJJZkV4aXN0cygpOworI2Vsc2UK
KyAgICBSdW5Mb29wKiBydW5Mb29wID0gbnVsbHB0cjsKKyNlbmRpZgorCisgICAgYXV0byYgdm0g
PSBKU0M6OlZNOjpjcmVhdGUoSlNDOjpMYXJnZUhlYXAsIHJ1bkxvb3ApLmxlYWtSZWYoKTsKIAog
ICAgIGdfY29tbW9uVk1Pck51bGwgPSAmdm07CiAKQEAgLTY1LDcgKzcxLDYgQEAgSlNDOjpWTSYg
Y29tbW9uVk1TbG93KCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChXZWJUaHJl
YWRJc0VuYWJsZWQoKSkKICAgICAgICAgdm0uYXBpTG9jaygpLm1ha2VXZWJUaHJlYWRBd2FyZSgp
OwotICAgIHZtLnNldFJ1bkxvb3AoV2ViVGhyZWFkUnVuTG9vcCgpKTsKICAgICB2bS5oZWFwLm1h
Y2hpbmVUaHJlYWRzKCkuYWRkQ3VycmVudFRocmVhZCgpOwogI2VuZGlmCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>