<?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>178872</bug_id>
          
          <creation_ts>2017-10-26 09:29:25 -0700</creation_ts>
          <short_desc>NowPlayingInfo should contain a unique identifier</short_desc>
          <delta_ts>2017-10-29 11:43:41 -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>Media</component>
          <version>Other</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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jer.noble</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1364860</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-10-26 09:29:25 -0700</bug_when>
    <thetext>NowPlayingInfo should contain a unique identifier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364867</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-10-26 09:40:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/34924012&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364869</commentid>
    <comment_count>2</comment_count>
      <attachid>325020</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-10-26 09:41:38 -0700</bug_when>
    <thetext>Created attachment 325020
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364896</commentid>
    <comment_count>3</comment_count>
      <attachid>325026</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-10-26 10:36:44 -0700</bug_when>
    <thetext>Created attachment 325026
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365058</commentid>
    <comment_count>4</comment_count>
      <attachid>325026</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-26 15:44:22 -0700</bug_when>
    <thetext>Comment on attachment 325026
Updated patch.

Clearing flags on attachment: 325026

Committed r224057: &lt;https://trac.webkit.org/changeset/224057&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365059</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-26 15:44:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365138</commentid>
    <comment_count>6</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-10-26 17:20:18 -0700</bug_when>
    <thetext>NowPlayingControlsTests.NowPlayingControlsClearInfoAfterSessionIsNoLongerValid is failing on High Sierra and Sierra:

/Volumes/Data/slave/sierra-release/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/NowPlayingControlsTests.mm:194
Value of: isnan(webView.get().lastUpdatedElapsedTime)
  Actual: false
Expected: true

https://build.webkit.org/builders/Apple%20High%20Sierra%20Release%20WK1%20(Tests)/builds/833
https://build.webkit.org/builders/Apple%20Sierra%20Release%20WK1%20%28Tests%29/builds/5631</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365410</commentid>
    <comment_count>7</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-10-27 10:16:59 -0700</bug_when>
    <thetext>This change also caused LayoutTests to exit early due to an assertion failure on Sierra WK1:

ASSERTION FAILED: hasHash()
/Volumes/Data/slave/sierra-debug/build/WebKitBuild/Debug/usr/local/include/wtf/text/StringImpl.h(520) : unsigned int WTF::StringImpl::existingHash() const
1   0x105d84aad WTFCrash
2   0x10ef67519 WTF::StringImpl::existingHash() const
3   0x10f5cf2d1 WTF::String::existingHash() const
4   0x10f5ce87c WebCore::MediaSessionManagerMac::updateNowPlayingInfo()
5   0x10f5d110d WTF::Function&lt;void ()&gt;::CallableWrapper&lt;std::__1::__bind&lt;void (WebCore::MediaSessionManagerMac::*)(), WebCore::MediaSessionManagerMac*&gt; &gt;::call()
6   0x10ef1fd9b WTF::Function&lt;void ()&gt;::operator()() const
7   0x10f10a5b9 WebCore::GenericTaskQueue&lt;WebCore::Timer&gt;::enqueueTask(WTF::Function&lt;void ()&gt;&amp;&amp;)::&apos;lambda&apos;()::operator()() const
8   0x10f10a379 WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WebCore::GenericTaskQueue&lt;WebCore::Timer&gt;::enqueueTask(WTF::Function&lt;void ()&gt;&amp;&amp;)::&apos;lambda&apos;()&gt;::call()
9   0x10ef1fd9b WTF::Function&lt;void ()&gt;::operator()() const
10  0x1114ccf87 WebCore::TaskDispatcher&lt;WebCore::Timer&gt;::dispatchOneTask()
11  0x1114ccd3f WebCore::TaskDispatcher&lt;WebCore::Timer&gt;::sharedTimerFired()
12  0x1114d0051 WebCore::TaskDispatcher&lt;WebCore::Timer&gt;::sharedTimer()::$_1::operator()() const
13  0x1114d0019 WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WebCore::TaskDispatcher&lt;WebCore::Timer&gt;::sharedTimer()::$_1&gt;::call()
14  0x10ef1fd9b WTF::Function&lt;void ()&gt;::operator()() const
15  0x10ef8e5f9 WebCore::Timer::fired()
16  0x1114fd4b0 WebCore::ThreadTimers::sharedTimerFiredInternal()
17  0x111505391 WebCore::ThreadTimers::setSharedTimer(WebCore::SharedTimer*)::$_7::operator()() const
18  0x111505349 WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WebCore::ThreadTimers::setSharedTimer(WebCore::SharedTimer*)::$_7&gt;::call()
19  0x10ef1fd9b WTF::Function&lt;void ()&gt;::operator()() const
20  0x1114df0d5 WebCore::MainThreadSharedTimer::fired()
21  0x11157ac09 WebCore::timerFired(__CFRunLoopTimer*, void*)
22  0x7fff94103e04 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
23  0x7fff94103a93 __CFRunLoopDoTimer
24  0x7fff941035ea __CFRunLoopDoTimers
25  0x7fff940fafc1 __CFRunLoopRun
26  0x7fff940fa544 CFRunLoopRunSpecific
27  0x1040b9387 runTest(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)
28  0x1040b77dd runTestingServerLoop()
29  0x1040b6c97 dumpRenderTree(int, char const**)
30  0x1040b9dbd DumpRenderTreeMain(int, char const**)
31  0x104134df2 main

https://build.webkit.org/builders/Apple%20Sierra%20Debug%20WK1%20%28Tests%29/builds/4438</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365411</commentid>
    <comment_count>8</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-10-27 10:17:29 -0700</bug_when>
    <thetext>The assertion failures also affect High Sierra WK1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365449</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-10-27 11:39:50 -0700</bug_when>
    <thetext>Plus https://trac.webkit.org/r224121 and https://trac.webkit.org/r224117 to address test problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365825</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-29 11:43:41 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #9)
&gt; Plus https://trac.webkit.org/r224121 and https://trac.webkit.org/r224117 to
&gt; address test problems.

One of the build fixes seems to have caused 2 tests to fail:
https://build.webkit.org/results/Apple%20High%20Sierra%20Release%20WK2%20(Tests)/r224121%20(763)/results.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325020</attachid>
            <date>2017-10-26 09:41:38 -0700</date>
            <delta_ts>2017-10-26 10:36:44 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>now_playing_identifier_patch_2.txt</filename>
            <type>text/plain</type>
            <size>37609</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzk1NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE3LTEwLTI2ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIE5vd1BsYXlpbmdJbmZv
IHNob3VsZCBjb250YWluIGEgdW5pcXVlIGlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg3MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Ob3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbS4KKworICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpsYXN0VXBkYXRlZE5vd1BsYXlpbmdJbmZv
VW5pcXVlSWRlbnRpZmllciBjb25zdCk6IE5ldy4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
aW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNl
c3Npb25NYW5hZ2VyaU9TOjp1cGRhdGVOb3dQbGF5aW5nSW5mbyk6IERpdHRvLgorCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJNYWM6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvKTog
RGl0dG8uIERvbid0IGxlYWsgQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvTWVk
aWFSZW1vdGVTb2Z0TGluay5jcHA6IFNvZnRsaW5rIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9VbmlxdWVJZGVudGlmaWVyLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNv
ZnRMaW5rLmg6CisKIDIwMTctMTAtMjUgIEphdmllciBGZXJuYW5kZXogIDxqZmVybmFuZGV6QGln
YWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBBdm9pZCBjbGVhcmluZyB0aGUgb3ZlcnJp
ZGVDb250YWluaW5nQmxvY2tXaWR0aCBpZiBwb3NzaWJsZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyLmgJKHJldmlzaW9uIDIyMzk1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2
MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFN0cmluZyBsYXN0VXBk
YXRlZE5vd1BsYXlpbmdUaXRsZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGRvdWJsZSBsYXN0VXBkYXRlZE5vd1BsYXlpbmdEdXJh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIE5BTjsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
ZG91YmxlIGxhc3RVcGRhdGVkTm93UGxheWluZ0VsYXBzZWRUaW1lKCkgY29uc3QgeyByZXR1cm4g
TkFOOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB1aW50NjRfdCBsYXN0VXBkYXRlZE5v
d1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICAg
IGJvb2wgd2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3dp
bGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zOyB9CiAgICAgdm9pZCBzZXRXaWxsSWdub3JlU3lz
dGVtSW50ZXJydXB0aW9ucyhib29sIGlnbm9yZSkgeyBtX3dpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1
cHRpb25zID0gaWdub3JlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgJKHJldmlzaW9uIDIy
Mzk1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25N
YW5hZ2VySU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Miw2ICs3Miw3IEBAIHByaXZhdGU6CiAg
ICAgU3RyaW5nIGxhc3RVcGRhdGVkTm93UGxheWluZ1RpdGxlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9yZXBvcnRlZFRpdGxlOyB9CiAgICAgZG91YmxlIGxhc3RVcGRhdGVkTm93UGxheWluZ0R1
cmF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZXBvcnRlZER1cmF0aW9uOyB9CiAgICAg
ZG91YmxlIGxhc3RVcGRhdGVkTm93UGxheWluZ0VsYXBzZWRUaW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9yZXBvcnRlZEN1cnJlbnRUaW1lOyB9CisgICAgdWludDY0X3QgbGFzdFVwZGF0ZWRO
b3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVybiBtX2xhc3RVcGRh
dGVkTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyOyB9CiAKICAgICBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbiogbm93UGxheWluZ0VsaWdpYmxlU2Vzc2lvbigpOwogICAgIApAQCAtNzksNiArODAs
NyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX3JlcG9ydGVkUmF0ZSB7IDAgfTsKICAgICBkb3Vi
bGUgbV9yZXBvcnRlZER1cmF0aW9uIHsgMCB9OwogICAgIGRvdWJsZSBtX3JlcG9ydGVkQ3VycmVu
dFRpbWUgeyAwIH07CisgICAgdWludDY0X3QgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdJbmZvVW5p
cXVlSWRlbnRpZmllciB7IDAgfTsKICAgICBTdHJpbmcgbV9yZXBvcnRlZFRpdGxlOwogICAgIGJv
b2wgbV9ub3dQbGF5aW5nQWN0aXZlIHsgZmFsc2UgfTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdl
cklPUy5tbQkocmV2aXNpb24gMjIzOTU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03OCwx
MyArNzgsMTQgQEAgU09GVF9MSU5LX1BPSU5URVIoTWVkaWFQbGF5ZXIsIE1QTWVkaWFJdAogU09G
VF9MSU5LX1BPSU5URVIoTWVkaWFQbGF5ZXIsIE1QTm93UGxheWluZ0luZm9Qcm9wZXJ0eUVsYXBz
ZWRQbGF5YmFja1RpbWUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihNZWRpYVBsYXll
ciwgTVBOb3dQbGF5aW5nSW5mb1Byb3BlcnR5UGxheWJhY2tSYXRlLCBOU1N0cmluZyAqKQogU09G
VF9MSU5LX1BPSU5URVIoTWVkaWFQbGF5ZXIsIE1QVm9sdW1lVmlld1dpcmVsZXNzUm91dGVzQXZh
aWxhYmxlRGlkQ2hhbmdlTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQotCitTT0ZUX0xJTktfUE9J
TlRFUihNZWRpYVBsYXllciwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50
aWZpZXIsIE5TU3RyaW5nICopCiAKICNkZWZpbmUgTVBNZWRpYUl0ZW1Qcm9wZXJ0eVRpdGxlIGdl
dE1QTWVkaWFJdGVtUHJvcGVydHlUaXRsZSgpCiAjZGVmaW5lIE1QTWVkaWFJdGVtUHJvcGVydHlQ
bGF5YmFja0R1cmF0aW9uIGdldE1QTWVkaWFJdGVtUHJvcGVydHlQbGF5YmFja0R1cmF0aW9uKCkK
ICNkZWZpbmUgTVBOb3dQbGF5aW5nSW5mb1Byb3BlcnR5RWxhcHNlZFBsYXliYWNrVGltZSBnZXRN
UE5vd1BsYXlpbmdJbmZvUHJvcGVydHlFbGFwc2VkUGxheWJhY2tUaW1lKCkKICNkZWZpbmUgTVBO
b3dQbGF5aW5nSW5mb1Byb3BlcnR5UGxheWJhY2tSYXRlIGdldE1QTm93UGxheWluZ0luZm9Qcm9w
ZXJ0eVBsYXliYWNrUmF0ZSgpCiAjZGVmaW5lIE1QVm9sdW1lVmlld1dpcmVsZXNzUm91dGVzQXZh
aWxhYmxlRGlkQ2hhbmdlTm90aWZpY2F0aW9uIGdldE1QVm9sdW1lVmlld1dpcmVsZXNzUm91dGVz
QXZhaWxhYmxlRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUga01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIgZ2V0a01STWVkaWFSZW1vdGVOb3dQbGF5aW5n
SW5mb1VuaXF1ZUlkZW50aWZpZXIoKQogCiBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyogV2ViVUlB
cHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRp
b25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIjsKIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5n
KiBXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiA9IEAiV2Vi
VUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24iOwpAQCAtMjU3LDYg
KzI1OCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6dXBkYXRlTm93UGwKICAgICBp
ZiAoc3RkOjppc2Zpbml0ZShkdXJhdGlvbikgJiYgZHVyYXRpb24gIT0gTWVkaWFQbGF5ZXI6Omlu
dmFsaWRUaW1lKCkpCiAgICAgICAgIGluZm8uZ2V0KClbTVBNZWRpYUl0ZW1Qcm9wZXJ0eVBsYXli
YWNrRHVyYXRpb25dID0gQChkdXJhdGlvbik7CiAgICAgaW5mby5nZXQoKVtNUE5vd1BsYXlpbmdJ
bmZvUHJvcGVydHlQbGF5YmFja1JhdGVdID0gQChyYXRlKTsKKyAgICBpbmZvLmdldCgpW2tNUk1l
ZGlhUmVtb3RlTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyXSA9IEAodGl0bGUuZXhpc3Rp
bmdIYXNoKCkpOwogCiAgICAgaWYgKHN0ZDo6aXNmaW5pdGUoY3VycmVudFRpbWUpICYmIGN1cnJl
bnRUaW1lICE9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpKQogICAgICAgICBpbmZvLmdldCgp
W01QTm93UGxheWluZ0luZm9Qcm9wZXJ0eUVsYXBzZWRQbGF5YmFja1RpbWVdID0gQChjdXJyZW50
VGltZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNz
aW9uTWFuYWdlck1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmgJKHJldmlzaW9uIDIyMzk1NikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzYsMTAgKzM2LDExIEBAIGNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJN
YWMgOiBwdWJsaWMgUGwKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25NYW5hZ2Vy
TWFjKCk7CiAKLSAgICBib29sIGhhc0FjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9ub3dQbGF5aW5nQWN0aXZlOyB9Ci0gICAgU3RyaW5nIGxhc3RVcGRh
dGVkTm93UGxheWluZ1RpdGxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sYXN0VXBkYXRl
ZE5vd1BsYXlpbmdUaXRsZTsgfQotICAgIGRvdWJsZSBsYXN0VXBkYXRlZE5vd1BsYXlpbmdEdXJh
dGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nRHVy
YXRpb247IH0KLSAgICBkb3VibGUgbGFzdFVwZGF0ZWROb3dQbGF5aW5nRWxhcHNlZFRpbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xhc3RVcGRhdGVkTm93UGxheWluZ0VsYXBzZWRUaW1l
OyB9CisgICAgYm9vbCBoYXNBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fbm93UGxheWluZ0FjdGl2ZTsgfQorICAgIFN0cmluZyBsYXN0VXBkYXRlZE5vd1Bs
YXlpbmdUaXRsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5n
VGl0bGU7IH0KKyAgICBkb3VibGUgbGFzdFVwZGF0ZWROb3dQbGF5aW5nRHVyYXRpb24oKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2xhc3RVcGRhdGVkTm93UGxheWluZ0R1cmF0aW9uOyB9CisgICAg
ZG91YmxlIGxhc3RVcGRhdGVkTm93UGxheWluZ0VsYXBzZWRUaW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdFbGFwc2VkVGltZTsgfQorICAgIHVpbnQ2NF90
IGxhc3RVcGRhdGVkTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllcjsgfQog
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI7
CkBAIC02NSw2ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbGFzdFVwZGF0ZWROb3dQ
bGF5aW5nVGl0bGU7CiAgICAgZG91YmxlIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nRHVyYXRpb24g
eyBOQU4gfTsKICAgICBkb3VibGUgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdFbGFwc2VkVGltZSB7
IE5BTiB9OworICAgIHVpbnQ2NF90IG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1VuaXF1ZUlk
ZW50aWZpZXIgeyAwIH07CiAKICAgICBHZW5lcmljVGFza1F1ZXVlPFRpbWVyPiBtX25vd1BsYXlp
bmdVcGRhdGVUYXNrUXVldWU7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMubW0JKHJldmlz
aW9uIDIyMzk1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNl
c3Npb25NYW5hZ2VyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzOCwxMSArMTM4LDEzIEBAIHZvaWQg
TWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6dXBkYXRlTm93UGwKICAgICAgICAgbV9sYXN0VXBkYXRl
ZE5vd1BsYXlpbmdUaXRsZSA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIG1fbGFzdFVwZGF0ZWRO
b3dQbGF5aW5nRHVyYXRpb24gPSBOQU47CiAgICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5n
RWxhcHNlZFRpbWUgPSBOQU47CisgICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1Vu
aXF1ZUlkZW50aWZpZXIgPSAwOwogICAgICAgICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0Fw
cGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9yaWdpbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmln
aW4oKSwga01SUGxheWJhY2tTdGF0ZVN0b3BwZWQsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IF4oTVJNZWRpYVJlbW90ZUVycm9yIGVycm9yKSB7CiAjaWYgTE9HX0RJU0FCTEVECiAgICAgICAg
ICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwogI2Vsc2UKLSAgICAgICAgICAgIExPRyhNZWRpYSwg
Ik1lZGlhU2Vzc2lvbk1hbmFnZXJNYWM6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvIC0gTVJNZWRpYVJl
bW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4oc3RvcHBl
ZCkgZmFpbGVkIHdpdGggZXJyb3IgJXVkIiwgZXJyb3IpOworICAgICAgICAgICAgaWYgKGVycm9y
KQorICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWM6OnVw
ZGF0ZU5vd1BsYXlpbmdJbmZvIC0gTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlv
blBsYXliYWNrU3RhdGVGb3JPcmlnaW4oc3RvcHBlZCkgZmFpbGVkIHdpdGggZXJyb3IgJXVkIiwg
ZXJyb3IpOwogI2VuZGlmCiAgICAgICAgIH0pOwogCkBAIC0xNzAsOCArMTcyLDEyIEBAIHZvaWQg
TWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6dXBkYXRlTm93UGwKICAgICAgICAgbV9sYXN0VXBkYXRl
ZE5vd1BsYXlpbmdEdXJhdGlvbiA9IGR1cmF0aW9uOwogICAgIH0KIAotICAgIGF1dG8gY2ZSYXRl
ID0gQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRG91YmxlVHlw
ZSwgJnJhdGUpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9QbGF5YmFja1JhdGUsIGNmUmF0ZSk7CisgICAgYXV0byBjZlJh
dGUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJl
ckRvdWJsZVR5cGUsICZyYXRlKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQo
KSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1BsYXliYWNrUmF0ZSwgY2ZSYXRlLmdldCgp
KTsKKworICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIgPSB0
aXRsZS5leGlzdGluZ0hhc2goKTsKKyAgICBhdXRvIGNmSWRlbnRpZmllciA9IGFkb3B0Q0YoQ0ZO
dW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyTG9uZ0xvbmdUeXBlLCAm
bV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllcikpOworICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9V
bmlxdWVJZGVudGlmaWVyLCBjZklkZW50aWZpZXIuZ2V0KCkpOwogCiAgICAgZG91YmxlIGN1cnJl
bnRUaW1lID0gY3VycmVudFNlc3Npb24tPmN1cnJlbnRUaW1lKCk7CiAgICAgaWYgKHN0ZDo6aXNm
aW5pdGUoY3VycmVudFRpbWUpICYmIGN1cnJlbnRUaW1lICE9IE1lZGlhUGxheWVyOjppbnZhbGlk
VGltZSgpICYmIGN1cnJlbnRTZXNzaW9uLT5zdXBwb3J0c1NlZWtpbmcoKSkgewpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLmNw
cAkocmV2aXNpb24gMjIzOTU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lZGlh
UmVtb3RlU29mdExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIFNPRlRf
TElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE0KIFNPRlRfTElOS19DT05TVEFOVF9G
T1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJ
bmZvRWxhcHNlZFRpbWUsIENGU3RyaW5nUmVmKTsKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvUGxh
eWJhY2tSYXRlLCBDRlN0cmluZ1JlZik7CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShX
ZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFja1Bvc2l0aW9u
LCBDRlN0cmluZ1JlZik7CitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBN
ZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIs
IENGU3RyaW5nUmVmKTsKIAogI2VuZGlmIC8vIFVTRShNRURJQVJFTU9URSkKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5oCShy
ZXZpc2lvbiAyMjM5NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1v
dGVTb2Z0TGluay5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCw4IEBAIFNPRlRfTElOS19D
T05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE0KICNkZWZpbmUga01STWVkaWFSZW1vdGVOb3dQ
bGF5aW5nSW5mb1BsYXliYWNrUmF0ZSBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVOb3dQ
bGF5aW5nSW5mb1BsYXliYWNrUmF0ZSgpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihX
ZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFja1Bvc2l0aW9u
LCBDRlN0cmluZ1JlZik7CiAjZGVmaW5lIGtNUk1lZGlhUmVtb3RlT3B0aW9uUGxheWJhY2tQb3Np
dGlvbiBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFja1Bvc2l0aW9u
KCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBr
TVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllciwgQ0ZTdHJpbmdSZWYp
OworI2RlZmluZSBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllciBn
ZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZp
ZXIoKQogCiAjZW5kaWYgLy8gVVNFKE1FRElBUkVNT1RFKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNp
b24gMjIzOTU2KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwzNyBAQAorMjAxNy0xMC0yNiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBOb3dQbGF5aW5nSW5mbyBzaG91bGQgY29udGFpbiBhIHVuaXF1
ZSBpZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzg4NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3JlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm86XSk6IFRha2UgYSBjb21w
bGV0aW9uIGhhbmRsZXIuCisgICAgICAgICgtW1dLV2ViVmlldyBfcmVxdWVzdEFjdGl2ZU5vd1Bs
YXlpbmdTZXNzaW9uSW5mb10pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYlZpZXcgX2hhbmRs
ZUFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mb1Jlc3BvbnNlOnRpdGxlOmR1cmF0aW9uOmVsYXBz
ZWRUaW1lOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKTogRGl0dG8uCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bm93UGxheWluZ0luZm9DYWxsYmFjayk6IExvb2t1
cCBhbmQgY2FsbCBjb21wbGV0aW9uIGhhbmRsZXIuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aGFuZGxlQWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvUmVzcG9uc2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpoYW5kbGVB
Y3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm9SZXNwb25zZSk6IERlbGV0ZWQuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmhhbmRsZUFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mb1Jlc3BvbnNlKTogRGVsZXRlZC4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbklu
Zm8pOiBUYWtlIGNhbGxiYWNrIElELiBQYXNzIHVuaXF1ZSBJRC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluOgorCiAyMDE3LTEwLTI1ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8
YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gUmVtb3ZlIEdMaWIgQVBJIGZ1bmN0
aW9ucyB3aGljaCB1c2UgQ2Fpcm8KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgJKHJldmlzaW9uIDIyMzk1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjc5LDEwICsyNzksNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChib29sKSA9IDA7CiAjZW5kaWYg
Ly8gUExBVEZPUk0oTUFDKQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCB2b2lk
IGhhbmRsZUFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mb1Jlc3BvbnNlKGJvb2wgaGFzQWN0aXZl
U2Vzc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3VibGUgZWxh
cHNlZFRpbWUpID0gMDsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwg
dm9pZCBjb21taXRQb3RlbnRpYWxUYXBGYWlsZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJD
b3JlOjpDb2xvciYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiBoaWdobGlnaHRl
ZFF1YWRzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90
dG9tTGVmdFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMp
ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2
aXNpb24gMjIzOTU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjcxMiwxNCArNjcxMiwyOCBAQCBib29sIFdlYlBhZ2VQcm94
eTo6aXNQbGF5aW5nVmlkZW9JbkVuaGFuCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
dm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oKQor
dm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oUmVm
PE5vd1BsYXlpbmdJbmZvQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZv
KCksIG1fcGFnZUlEKTsKKyAgICBpZiAoIWlzVmFsaWQoKSkgeworICAgICAgICBjYWxsYmFjay0+
aW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBjYWxsYmFj
a0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFjaykpOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpS
ZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbklu
Zm9SZXNwb25zZShib29sIGhhc0FjdGl2ZVNlc3Npb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGRv
dWJsZSBkdXJhdGlvbiwgZG91YmxlIGVsYXBzZWRUaW1lKSBjb25zdAordm9pZCBXZWJQYWdlUHJv
eHk6Om5vd1BsYXlpbmdJbmZvQ2FsbGJhY2soYm9vbCBoYXNBY3RpdmVTZXNzaW9uLCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBkb3VibGUgZHVyYXRpb24sIGRvdWJsZSBlbGFwc2VkVGltZSwgdWludDY0
X3QgdW5pcXVlSWRlbnRpZmllciwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewotICAgIG1fcGFn
ZUNsaWVudC5oYW5kbGVBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm9SZXNwb25zZShoYXNBY3Rp
dmVTZXNzaW9uLCB0aXRsZSwgZHVyYXRpb24sIGVsYXBzZWRUaW1lKTsKKyAgICBhdXRvIGNhbGxi
YWNrID0gbV9jYWxsYmFja3MudGFrZTxOb3dQbGF5aW5nSW5mb0NhbGxiYWNrPihjYWxsYmFja0lE
KTsKKyAgICBpZiAoIWNhbGxiYWNrKSB7CisgICAgICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Igb3Ig
YXNzZXJ0LgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FsbGJhY2stPnBlcmZvcm1D
YWxsYmFja1dpdGhSZXR1cm5WYWx1ZShoYXNBY3RpdmVTZXNzaW9uLCB0aXRsZSwgZHVyYXRpb24s
IGVsYXBzZWRUaW1lLCB1bmlxdWVJZGVudGlmaWVyKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjIzOTU2KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
Niw2ICsyNzYsNyBAQCB1c2luZyBEcmF3VG9QREZDYWxsYmFjayA9IEdlbmVyaWNDYWxsYmFjCiAK
ICNpZiBQTEFURk9STShDT0NPQSkKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdlYkNv
cmU6Ok1hY2hTZW5kUmlnaHQmPiBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2s7Cit0eXBlZGVmIEdlbmVy
aWNDYWxsYmFjazxib29sLCBTdHJpbmcsIGRvdWJsZSwgZG91YmxlLCB1aW50NjRfdD4gTm93UGxh
eWluZ0luZm9DYWxsYmFjazsKICNlbmRpZgogCiBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMg
QVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgpAQCAtMTA4Nyw4ICsxMDg4
LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHJl
cXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oKTsKLSAgICB2b2lkIGhhbmRsZUFjdGl2
ZU5vd1BsYXlpbmdTZXNzaW9uSW5mb1Jlc3BvbnNlKGJvb2wgaGFzQWN0aXZlU2Vzc2lvbiwgY29u
c3QgU3RyaW5nJiB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3VibGUgZWxhcHNlZFRpbWUpIGNv
bnN0OworICAgIHZvaWQgcmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbyhSZWY8Tm93
UGxheWluZ0luZm9DYWxsYmFjaz4mJik7CisgICAgdm9pZCBub3dQbGF5aW5nSW5mb0NhbGxiYWNr
KGJvb2wsIGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgZG91YmxlLCB1aW50NjRfdCwgQ2FsbGJhY2tJ
RCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24g
MjIzOTU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIE1hY2hTZW5kUmlnaHRD
YWxsYmFjayhXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodCwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCisgICAgTm93UGxheWluZ0luZm9DYWxsYmFjayhib29sIGFjdGl2ZSwg
U3RyaW5nIHRpdGxlLCBkb3VibGUgZHVyYXRpb24sIGRvdWJsZSBlbGFwc2VkVGltZSwgdWludDY0
X3QgdW5pcXVlSWRlbnRpZmllciwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5k
aWYKIAogICAgIFBhZ2VTY2FsZUZhY3RvckRpZENoYW5nZShkb3VibGUgc2NhbGVGYWN0b3IpCkBA
IC00OTIsMTAgKzQ5Myw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkSGFu
ZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICBIYW5kbGVBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm9SZXNwb25zZShib29sIGhhc0FjdGl2
ZVNlc3Npb24sIFN0cmluZyB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3VibGUgZWxhcHNlZFRp
bWUpCi0jZW5kaWYKLQogICAgIFNldElzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTChib29sIGlz
VXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkKIAogICAgIFN0YXJ0VVJMU2NoZW1lVGFzayh1aW50
NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMjM5NTYpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC01OTM2LDE1ICs1OTM2LDE5IEBAIC0gKHZvaWQpX3NldEZvb3RlckJhbm5lckhlaWdodDooaW50
KWhlaWcKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAotLSAodm9pZClfcmVxdWVzdEFjdGl2
ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbworLSAodm9pZClfcmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdT
ZXNzaW9uSW5mbzoodm9pZCheKShCT09MLCBOU1N0cmluZyosIGRvdWJsZSwgZG91YmxlLCBOU0lu
dGVnZXIpKWNhbGxiYWNrCiB7Ci0gICAgaWYgKF9wYWdlKQotICAgICAgICBfcGFnZS0+cmVxdWVz
dEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbygpOwotfQorICAgIGlmICghX3BhZ2UpIHsKKyAg
ICAgICAgY2FsbGJhY2soTk8sIEAiIiwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWll
dF9OYU4oKSwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSwgMCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKLS0gKHZvaWQpX2hhbmRsZUFjdGl2ZU5vd1BsYXlpbmdT
ZXNzaW9uSW5mb1Jlc3BvbnNlOihCT09MKWhhc0FjdGl2ZVNlc3Npb24gdGl0bGU6KE5TU3RyaW5n
ICopdGl0bGUgZHVyYXRpb246KGRvdWJsZSlkdXJhdGlvbiBlbGFwc2VkVGltZTooZG91YmxlKWVs
YXBzZWRUaW1lCi17Ci0gICAgLy8gT3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgorICAgIGF1dG8g
aGFuZGxlciA9IG1ha2VCbG9ja1B0cihjYWxsYmFjayk7CisgICAgYXV0byBsb2NhbENhbGxiYWNr
ID0gV2ViS2l0OjpOb3dQbGF5aW5nSW5mb0NhbGxiYWNrOjpjcmVhdGUoW2hhbmRsZXJdKGJvb2wg
YWN0aXZlLCBTdHJpbmcgdGl0bGUsIGRvdWJsZSBkdXJhdGlvbiwgZG91YmxlIGVsYXBzZWRUaW1l
LCB1aW50NjRfdCB1bmlxdWVJZGVudGlmaWVyLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3Ip
IHsKKyAgICAgICAgaGFuZGxlcihhY3RpdmUsIHRpdGxlLCBkdXJhdGlvbiwgZWxhcHNlZFRpbWUs
IHVuaXF1ZUlkZW50aWZpZXIpOworICAgIH0pOworCisgICAgX3BhZ2UtPnJlcXVlc3RBY3RpdmVO
b3dQbGF5aW5nU2Vzc2lvbkluZm8oV1RGTW92ZShsb2NhbENhbGxiYWNrKSk7CiB9CiAKIC0gKHZv
aWQpX3NldFBhZ2VTY2FsZTooQ0dGbG9hdClzY2FsZSB3aXRoT3JpZ2luOihDR1BvaW50KW9yaWdp
bgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiAyMjM5NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzMs
OCArNDMzLDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TSW50ZWdlciwgX1dLUmVjdEVkZwogLSAo
dm9pZClfc2V0Rm9vdGVyQmFubmVySGVpZ2h0OihpbnQpaGVpZ2h0IFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjEyLjMpKTsKICNlbmRpZgogCi0tICh2b2lkKV9yZXF1ZXN0QWN0aXZlTm93UGxh
eWluZ1Nlc3Npb25JbmZvIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyLjMpLCBpb3MoMTAu
MykpOwotLSAodm9pZClfaGFuZGxlQWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvUmVzcG9uc2U6
KEJPT0wpaGFzQWN0aXZlU2Vzc2lvbiB0aXRsZTooTlNTdHJpbmcgKil0aXRsZSBkdXJhdGlvbjoo
ZG91YmxlKWR1cmF0aW9uIGVsYXBzZWRUaW1lOihkb3VibGUpZWxhcHNlZFRpbWUgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTIuMyksIGlvcygxMC4zKSk7CistICh2b2lkKV9yZXF1ZXN0QWN0
aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvOih2b2lkKF4pKEJPT0wsIE5TU3RyaW5nKiwgZG91Ymxl
LCBkb3VibGUsIE5TSW50ZWdlcikpY2FsbGJhY2sgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tf
TUFDX1RCQSksIGlvcyhXS19NQUNfVEJBKSk7CiAKIC0gKHZvaWQpX3NldFBhZ2VTY2FsZTooQ0dG
bG9hdClzY2FsZSB3aXRoT3JpZ2luOihDR1BvaW50KW9yaWdpbiBXS19BUElfQVZBSUxBQkxFKGlv
cygxMC4zKSk7CiAtIChDR0Zsb2F0KV9wYWdlU2NhbGUgV0tfQVBJX0FWQUlMQUJMRShpb3MoMTAu
MykpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmgJKHJldmlzaW9uIDIyMzk1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsOCArMTk2LDYgQEAg
cHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gdXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbigpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBoYW5kbGVB
Y3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm9SZXNwb25zZShib29sIGhhc0FjdGl2ZVNlc3Npb24s
IGNvbnN0IFN0cmluZyYgdGl0bGUsIGRvdWJsZSBkdXJhdGlvbiwgZG91YmxlIGVsYXBzZWRUaW1l
KSBvdmVycmlkZTsKLQogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgcmVxdWVzdFBhc3N3
b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBvdmVycmlkZTsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQkocmV2
aXNpb24gMjIzOTU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MDMsMTEgKzgwMyw2IEBAIHZvaWQgUGFnZUNs
aWVudEltcGw6OmRpZENoYW5nZURhdGFJbnRlcmEKIH0KICNlbmRpZgogCi12b2lkIFBhZ2VDbGll
bnRJbXBsOjpoYW5kbGVBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm9SZXNwb25zZShib29sIGhh
c0FjdGl2ZVNlc3Npb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGRvdWJsZSBkdXJhdGlvbiwgZG91
YmxlIGVsYXBzZWRUaW1lKQotewotICAgIFttX3dlYlZpZXcgX2hhbmRsZUFjdGl2ZU5vd1BsYXlp
bmdTZXNzaW9uSW5mb1Jlc3BvbnNlOmhhc0FjdGl2ZVNlc3Npb24gdGl0bGU6bnNTdHJpbmdGcm9t
V2ViQ29yZVN0cmluZyh0aXRsZSkgZHVyYXRpb246ZHVyYXRpb24gZWxhcHNlZFRpbWU6ZWxhcHNl
ZFRpbWVdOwotfQotCiAjaWYgVVNFKFFVSUNLX0xPT0spCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpy
ZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMuaAkocmV2aXNpb24gMjIzOTU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw3ICsyMTAsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkRmFpbExvYWRGb3JNYWluRnJhbWUoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JNYWluRnJhbWUoU2FtZURvY3VtZW50
TmF2aWdhdGlvblR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgaGFuZGxlQ29udHJvbGxlZEVsZW1l
bnRJRFJlc3BvbnNlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgaGFuZGxlQWN0
aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvUmVzcG9uc2UoYm9vbCBoYXNBY3RpdmVTZXNzaW9uLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBkb3VibGUgZHVyYXRpb24sIGRvdWJsZSBlbGFwc2VkVGltZSkg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0KGNv
bnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiwgYm9vbCBjb250ZW50UHJldmVudHNEZWZhdWx0LCBB
UEk6Ok9iamVjdCopIG92ZXJyaWRlOwogICAgIHZvaWQqIGltbWVkaWF0ZUFjdGlvbkFuaW1hdGlv
bkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+LCB1
aW50NjRfdCwgUmVmUHRyPEFQSTo6T2JqZWN0Pikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCShyZXZpc2lvbiAy
MjM5NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTc4OSwxMyArNzg5LDYgQEAgdm9pZCBQYWdlQ2xpZW50SW1w
bDo6aGFuZGxlQ29udHJvbGxlZEVsZQogI2VuZGlmCiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6
OmhhbmRsZUFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mb1Jlc3BvbnNlKGJvb2wgaGFzQWN0aXZl
U2Vzc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3VibGUgZWxh
cHNlZFRpbWUpCi17Ci0jaWYgV0tfQVBJX0VOQUJMRUQKLSAgICBbbV93ZWJWaWV3IF9oYW5kbGVB
Y3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm9SZXNwb25zZTpoYXNBY3RpdmVTZXNzaW9uIHRpdGxl
Om5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcodGl0bGUpIGR1cmF0aW9uOmR1cmF0aW9uIGVsYXBz
ZWRUaW1lOmVsYXBzZWRUaW1lXTsKLSNlbmRpZgotfQotCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpk
aWRDaGFuZ2VCYWNrZ3JvdW5kQ29sb3IoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAy
MjM5NTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyNjUsNyArMTI2NSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgcmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9u
SW5mbygpOworICAgIHZvaWQgcmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbyhDYWxs
YmFja0lEKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1v
dmVFdmVudHMoYm9vbCBkaXNwYXRjaCkgeyBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2
ZW50cyA9IGRpc3BhdGNoOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyMzk1NikKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTQzOCw3ICs0MzgsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJl
Y2VpdmVyIHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVxdWVzdEFjdGl2
ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbygpCisgICAgUmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNz
aW9uSW5mbyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogCiAgICAgU2V0
U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wgc2hvdWxkRGlzcGF0Y2hGYWtl
TW91c2VNb3ZlRXZlbnRzKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29jb2EvV2ViUGFnZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQkocmV2aXNpb24gMjIzOTU2KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQxLDIwICs0MSwyMiBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkUmVj
ZWl2ZUxvYWRQYXJhCiAgICAgbV9kYXRhRGV0ZWN0aW9uQ29udGV4dCA9IGxvYWRQYXJhbWV0ZXJz
LmRhdGFEZXRlY3Rpb25Db250ZXh0OwogfQogCi12b2lkIFdlYlBhZ2U6OnJlcXVlc3RBY3RpdmVO
b3dQbGF5aW5nU2Vzc2lvbkluZm8oKQordm9pZCBXZWJQYWdlOjpyZXF1ZXN0QWN0aXZlTm93UGxh
eWluZ1Nlc3Npb25JbmZvKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBib29sIGhhc0Fj
dGl2ZVNlc3Npb24gPSBmYWxzZTsKICAgICBTdHJpbmcgdGl0bGUgPSBlbXB0eVN0cmluZygpOwog
ICAgIGRvdWJsZSBkdXJhdGlvbiA9IE5BTjsKICAgICBkb3VibGUgZWxhcHNlZFRpbWUgPSBOQU47
CisgICAgdWludDY0X3QgdW5pcXVlSWRlbnRpZmllciA9IDA7CiAgICAgaWYgKGF1dG8qIHNoYXJl
ZE1hbmFnZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1h
bmFnZXJJZkV4aXN0cygpKSB7CiAgICAgICAgIGhhc0FjdGl2ZVNlc3Npb24gPSBzaGFyZWRNYW5h
Z2VyLT5oYXNBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbigpOwogICAgICAgICB0aXRsZSA9IHNoYXJl
ZE1hbmFnZXItPmxhc3RVcGRhdGVkTm93UGxheWluZ1RpdGxlKCk7CiAgICAgICAgIGR1cmF0aW9u
ID0gc2hhcmVkTWFuYWdlci0+bGFzdFVwZGF0ZWROb3dQbGF5aW5nRHVyYXRpb24oKTsKICAgICAg
ICAgZWxhcHNlZFRpbWUgPSBzaGFyZWRNYW5hZ2VyLT5sYXN0VXBkYXRlZE5vd1BsYXlpbmdFbGFw
c2VkVGltZSgpOworICAgICAgICB1bmlxdWVJZGVudGlmaWVyID0gc2hhcmVkTWFuYWdlci0+bGFz
dFVwZGF0ZWROb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIoKTsKICAgICB9CiAKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9u
SW5mb1Jlc3BvbnNlKGhhc0FjdGl2ZVNlc3Npb24sIHRpdGxlLCBkdXJhdGlvbiwgZWxhcHNlZFRp
bWUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok5vd1BsYXlpbmdJbmZvQ2Fs
bGJhY2soaGFzQWN0aXZlU2Vzc2lvbiwgdGl0bGUsIGR1cmF0aW9uLCBlbGFwc2VkVGltZSwgdW5p
cXVlSWRlbnRpZmllciwgY2FsbGJhY2tJRCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyNDAyMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDE3LTEwLTI2ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIE5vd1BsYXlpbmdJbmZvIHNob3VsZCBjb250YWluIGEgdW5pcXVlIGlk
ZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODg3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Ob3dQbGF5aW5nQ29udHJvbHNUZXN0
cy5tbToKKyAgICAgICAgKC1bTm93UGxheWluZ1Rlc3RXZWJWaWV3IGhhc0FjdGl2ZU5vd1BsYXlp
bmdTZXNzaW9uXSk6IFVzZSBjb21wbGV0aW9uIGhhbmRsZXIuCisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKTogQ2xlYW51cCB0ZXN0cy4gVXNlIG5ldyBBUEkuCisgICAgICAgICgtW05vd1Bs
YXlpbmdUZXN0V2ViVmlldyB3YWl0Rm9yTm93UGxheWluZ0luZm9Ub0NoYW5nZV0pOiBEZWxldGVk
LgorCiAyMDE3LTEwLTI2ICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4K
IAogICAgICAgICBSZW1vdmUgc2NvcGVndWFyZCBmcm9tIHBsYXRmb3JtCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05vd1BsYXlpbmdDb250cm9sc1Rlc3RzLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTm93
UGxheWluZ0NvbnRyb2xzVGVzdHMubW0JKHJldmlzaW9uIDIyMzk1NikKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTm93UGxheWluZ0NvbnRyb2xzVGVzdHMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzgsNiArMzgsNyBAQCBAaW50ZXJmYWNlIE5vd1BsYXlpbmdUZXN0V2ViVmll
dyA6IFRlc3RXCiBAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1N0cmluZyAqbGFzdFVwZGF0ZWRUaXRs
ZTsKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIGRvdWJsZSBsYXN0VXBkYXRlZER1cmF0aW9uOwogQHBy
b3BlcnR5IChyZWFkb25seSkgZG91YmxlIGxhc3RVcGRhdGVkRWxhcHNlZFRpbWU7CitAcHJvcGVy
dHkgKHJlYWRvbmx5KSBOU0ludGVnZXIgbGFzdFVuaXF1ZUlkZW50aWZpZXI7CiBAZW5kCiAKIEBp
bXBsZW1lbnRhdGlvbiBOb3dQbGF5aW5nVGVzdFdlYlZpZXcgewpAQCAtNDcsNyArNDgsMTggQEAg
QGludGVyZmFjZSBOb3dQbGF5aW5nVGVzdFdlYlZpZXcgOiBUZXN0VwogLSAoQk9PTCloYXNBY3Rp
dmVOb3dQbGF5aW5nU2Vzc2lvbgogewogICAgIF9yZWNlaXZlZE5vd1BsYXlpbmdJbmZvUmVzcG9u
c2UgPSBmYWxzZTsKLSAgICBbc2VsZiBfcmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5m
b107CisKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3JldGFpbmVkU2VsZiA9IHJldGFp
blB0cihzZWxmKSwgc2VsZl0oQk9PTCBhY3RpdmUsIE5TU3RyaW5nICp0aXRsZSwgZG91YmxlIGR1
cmF0aW9uLCBkb3VibGUgZWxhcHNlZFRpbWUsIE5TSW50ZWdlciB1bmlxdWVJZGVudGlmaWVyKSB7
CisgICAgICAgIF9oYXNBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbiA9IGFjdGl2ZTsKKyAgICAgICAg
X2xhc3RVcGRhdGVkVGl0bGUgPSBbdGl0bGUgY29weV07CisgICAgICAgIF9sYXN0VXBkYXRlZER1
cmF0aW9uID0gZHVyYXRpb247CisgICAgICAgIF9sYXN0VW5pcXVlSWRlbnRpZmllciA9IHVuaXF1
ZUlkZW50aWZpZXI7CisKKyAgICAgICAgX3JlY2VpdmVkTm93UGxheWluZ0luZm9SZXNwb25zZSA9
IHRydWU7CisgICAgfTsKKworICAgIFtzZWxmIF9yZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Np
b25JbmZvOmNvbXBsZXRpb25IYW5kbGVyXTsKKwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmX3JlY2VpdmVkTm93UGxheWluZ0luZm9SZXNwb25zZSk7CiAKICAgICByZXR1cm4gX2hhc0Fj
dGl2ZU5vd1BsYXlpbmdTZXNzaW9uOwpAQCAtNjIsMjggKzc0LDYgQEAgLSAodm9pZClleHBlY3RI
YXNBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbgogICAgIH0KIH0KIAotLSAodm9pZCl3YWl0Rm9yTm93
UGxheWluZ0luZm9Ub0NoYW5nZQotewotICAgIEJPT0wgaW5pdGlhbEhhc0FjdGl2ZU5vd1BsYXlp
bmdTZXNzaW9uID0gc2VsZi5oYXNBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbjsKLSAgICBOU1N0cmlu
ZyAqaW5pdGlhbFRpdGxlID0gc2VsZi5sYXN0VXBkYXRlZFRpdGxlOwotICAgIGRvdWJsZSBpbml0
aWFsRHVyYXRpb24gPSBzZWxmLmxhc3RVcGRhdGVkRHVyYXRpb247Ci0gICAgZG91YmxlIGluaXRp
YWxFbGFwc2VkVGltZSA9IHNlbGYubGFzdFVwZGF0ZWRFbGFwc2VkVGltZTsKLSAgICB3aGlsZSAo
W1tOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIHJ1bk1vZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGUg
YmVmb3JlRGF0ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XV0pIHsKLSAgICAgICAgQk9PTCBjdXJyZW50
bHlIYXNBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbiA9IHNlbGYuaGFzQWN0aXZlTm93UGxheWluZ1Nl
c3Npb247Ci0gICAgICAgIGlmIChpbml0aWFsSGFzQWN0aXZlTm93UGxheWluZ1Nlc3Npb24gIT0g
Y3VycmVudGx5SGFzQWN0aXZlTm93UGxheWluZ1Nlc3Npb24pCi0gICAgICAgICAgICBicmVhazsK
LQotICAgICAgICBpZiAoaW5pdGlhbER1cmF0aW9uICE9IHNlbGYubGFzdFVwZGF0ZWREdXJhdGlv
bikKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGlmIChpbml0aWFsRWxhcHNlZFRpbWUg
IT0gc2VsZi5sYXN0VXBkYXRlZEVsYXBzZWRUaW1lKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgaWYgKCFbaW5pdGlhbFRpdGxlIGlzRXF1YWxUb1N0cmluZzpzZWxmLmxhc3RVcGRhdGVk
VGl0bGVdICYmIHNlbGYubGFzdFVwZGF0ZWRUaXRsZSAhPSBpbml0aWFsVGl0bGUpCi0gICAgICAg
ICAgICBicmVhazsKLSAgICB9Ci19Ci0KIC0gKHZvaWQpX2hhbmRsZUFjdGl2ZU5vd1BsYXlpbmdT
ZXNzaW9uSW5mb1Jlc3BvbnNlOihCT09MKWhhc0FjdGl2ZVNlc3Npb24gdGl0bGU6KE5TU3RyaW5n
ICopdGl0bGUgZHVyYXRpb246KGRvdWJsZSlkdXJhdGlvbiBlbGFwc2VkVGltZTooZG91YmxlKWVs
YXBzZWRUaW1lCiB7CiAgICAgX2hhc0FjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uID0gaGFzQWN0aXZl
U2Vzc2lvbjsKQEAgLTExMSw3NiArMTAxLDk4IEBAIFRFU1QoTm93UGxheWluZ0NvbnRyb2xzVGVz
dHMsIE5vd1BsYXlpbmcKIHsKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0
aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKICAgICBjb25maWd1
cmF0aW9uLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlv
dmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBOb3dQbGF5aW5nVGVzdFdlYlZpZXcgKndlYlZpZXcg
PSBbW05vd1BsYXlpbmdUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dOworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uXSk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlby10ZXN0
LW5vdy1wbGF5aW5nIl07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJwbGF5aW5nIl07
CiAKICAgICBbd2ViVmlldyBzZXRXaW5kb3dWaXNpYmxlOllFU107Ci0gICAgW3dlYlZpZXcud2lu
ZG93IG1ha2VLZXlXaW5kb3ddOworICAgIFt3ZWJWaWV3LmdldCgpLndpbmRvdyBtYWtlS2V5V2lu
ZG93XTsKICAgICBbd2ViVmlldyBleHBlY3RIYXNBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbjpOT107
CiAKLSAgICBBU1NFUlRfU1RSRVEoImZvbyIsIHdlYlZpZXcubGFzdFVwZGF0ZWRUaXRsZS5VVEY4
U3RyaW5nKTsKLSAgICBBU1NFUlRfRVEoMTAsIHdlYlZpZXcubGFzdFVwZGF0ZWREdXJhdGlvbik7
Ci0gICAgQVNTRVJUX0dFKHdlYlZpZXcubGFzdFVwZGF0ZWRFbGFwc2VkVGltZSwgMCk7CisgICAg
QVNTRVJUX1NUUkVRKCJmb28iLCB3ZWJWaWV3LmdldCgpLmxhc3RVcGRhdGVkVGl0bGUuVVRGOFN0
cmluZyk7CisgICAgQVNTRVJUX0VRKDEwLCB3ZWJWaWV3LmdldCgpLmxhc3RVcGRhdGVkRHVyYXRp
b24pOworICAgIEFTU0VSVF9HRSh3ZWJWaWV3LmdldCgpLmxhc3RVcGRhdGVkRWxhcHNlZFRpbWUs
IDApOwogfQogCiBURVNUKE5vd1BsYXlpbmdDb250cm9sc1Rlc3RzLCBOb3dQbGF5aW5nQ29udHJv
bHNTaG93Rm9yQmFja2dyb3VuZFBhZ2UpCiB7CiAgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAq
Y29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF07CiAg
ICAgY29uZmlndXJhdGlvbi5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNr
ID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgTm93UGxheWluZ1Rlc3RXZWJWaWV3
ICp3ZWJWaWV3ID0gW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbl0pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2Ut
dmlkZW8tdGVzdC1ub3ctcGxheWluZyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAi
cGxheWluZyJdOwogCiAgICAgW3dlYlZpZXcgc2V0V2luZG93VmlzaWJsZTpOT107Ci0gICAgW3dl
YlZpZXcud2luZG93IHJlc2lnbktleVdpbmRvd107CisgICAgW3dlYlZpZXcuZ2V0KCkud2luZG93
IHJlc2lnbktleVdpbmRvd107CiAgICAgW3dlYlZpZXcgZXhwZWN0SGFzQWN0aXZlTm93UGxheWlu
Z1Nlc3Npb246WUVTXTsKIAotICAgIEFTU0VSVF9TVFJFUSgiZm9vIiwgd2ViVmlldy5sYXN0VXBk
YXRlZFRpdGxlLlVURjhTdHJpbmcpOwotICAgIEFTU0VSVF9FUSgxMCwgd2ViVmlldy5sYXN0VXBk
YXRlZER1cmF0aW9uKTsKLSAgICBBU1NFUlRfR0Uod2ViVmlldy5sYXN0VXBkYXRlZEVsYXBzZWRU
aW1lLCAwKTsKKyAgICBBU1NFUlRfU1RSRVEoImZvbyIsIHdlYlZpZXcuZ2V0KCkubGFzdFVwZGF0
ZWRUaXRsZS5VVEY4U3RyaW5nKTsKKyAgICBBU1NFUlRfRVEoMTAsIHdlYlZpZXcuZ2V0KCkubGFz
dFVwZGF0ZWREdXJhdGlvbik7CisgICAgQVNTRVJUX0dFKHdlYlZpZXcuZ2V0KCkubGFzdFVwZGF0
ZWRFbGFwc2VkVGltZSwgMCk7CiB9CiAKIFRFU1QoTm93UGxheWluZ0NvbnRyb2xzVGVzdHMsIE5v
d1BsYXlpbmdDb250cm9sc0hpZGVBZnRlclNob3dpbmdLZWVwc1Nlc3Npb25BY3RpdmUpCiB7CiAg
ICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF07CiAgICAgY29uZmlndXJhdGlvbi5tZWRpYVR5cGVzUmVx
dWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7
Ci0gICAgTm93UGxheWluZ1Rlc3RXZWJWaWV3ICp3ZWJWaWV3ID0gW1tOb3dQbGF5aW5nVGVzdFdl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
Tm93UGxheWluZ1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwogICAgIFt3ZWJWaWV3
IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZyJdOwogICAg
IFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogCiAgICAgW3dlYlZpZXcgc2V0
V2luZG93VmlzaWJsZTpOT107Ci0gICAgW3dlYlZpZXcud2luZG93IHJlc2lnbktleVdpbmRvd107
CisgICAgW3dlYlZpZXcuZ2V0KCkud2luZG93IHJlc2lnbktleVdpbmRvd107CiAKICAgICBbd2Vi
VmlldyBleHBlY3RIYXNBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbjpZRVNdOwogCiAgICAgW3dlYlZp
ZXcgc2V0V2luZG93VmlzaWJsZTpZRVNdOwotICAgIFt3ZWJWaWV3LndpbmRvdyBtYWtlS2V5V2lu
ZG93XTsKKyAgICBbd2ViVmlldy5nZXQoKS53aW5kb3cgbWFrZUtleVdpbmRvd107CiAKICAgICBb
d2ViVmlldyBleHBlY3RIYXNBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbjpOT107CiAKLSAgICBBU1NF
UlRfU1RSRVEoImZvbyIsIHdlYlZpZXcubGFzdFVwZGF0ZWRUaXRsZS5VVEY4U3RyaW5nKTsKLSAg
ICBBU1NFUlRfRVEoMTAsIHdlYlZpZXcubGFzdFVwZGF0ZWREdXJhdGlvbik7Ci0gICAgQVNTRVJU
X0dFKHdlYlZpZXcubGFzdFVwZGF0ZWRFbGFwc2VkVGltZSwgMCk7CisgICAgQVNTRVJUX1NUUkVR
KCJmb28iLCB3ZWJWaWV3LmdldCgpLmxhc3RVcGRhdGVkVGl0bGUuVVRGOFN0cmluZyk7CisgICAg
QVNTRVJUX0VRKDEwLCB3ZWJWaWV3LmdldCgpLmxhc3RVcGRhdGVkRHVyYXRpb24pOworICAgIEFT
U0VSVF9HRSh3ZWJWaWV3LmdldCgpLmxhc3RVcGRhdGVkRWxhcHNlZFRpbWUsIDApOwogfQogCiBU
RVNUKE5vd1BsYXlpbmdDb250cm9sc1Rlc3RzLCBOb3dQbGF5aW5nQ29udHJvbHNDbGVhckluZm9B
ZnRlclNlc3Npb25Jc05vTG9uZ2VyVmFsaWQpCiB7CiAgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlv
biAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF07
CiAgICAgY29uZmlndXJhdGlvbi5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXli
YWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgTm93UGxheWluZ1Rlc3RXZWJW
aWV3ICp3ZWJWaWV3ID0gW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA0ODAsIDMyMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDgwLCAzMjApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbl0pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFy
Z2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdl
OkAicGxheWluZyJdOwogCisgICAgQk9PTCBpbml0aWFsSGFzQWN0aXZlTm93UGxheWluZ1Nlc3Np
b24gPSB3ZWJWaWV3LmdldCgpLmhhc0FjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uOworICAgIE5TU3Ry
aW5nICppbml0aWFsVGl0bGUgPSB3ZWJWaWV3LmdldCgpLmxhc3RVcGRhdGVkVGl0bGU7CisgICAg
ZG91YmxlIGluaXRpYWxEdXJhdGlvbiA9IHdlYlZpZXcuZ2V0KCkubGFzdFVwZGF0ZWREdXJhdGlv
bjsKKyAgICBkb3VibGUgaW5pdGlhbEVsYXBzZWRUaW1lID0gd2ViVmlldy5nZXQoKS5sYXN0VXBk
YXRlZEVsYXBzZWRUaW1lOworICAgIE5TSW50ZWdlciBpbml0aWFsVW5pcXVlSWRlbnRpZmllciA9
IHdlYlZpZXcuZ2V0KCkubGFzdFVuaXF1ZUlkZW50aWZpZXI7CisKICAgICBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndmlkZW8n
KS5tdXRlZCA9IHRydWUiXTsKICAgICBbd2ViVmlldyBzZXRXaW5kb3dWaXNpYmxlOk5PXTsKLSAg
ICBbd2ViVmlldy53aW5kb3cgcmVzaWduS2V5V2luZG93XTsKKyAgICBbd2ViVmlldy5nZXQoKS53
aW5kb3cgcmVzaWduS2V5V2luZG93XTsKKworICAgIHdoaWxlIChbW05TUnVuTG9vcCBjdXJyZW50
UnVuTG9vcF0gcnVuTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZSBiZWZvcmVEYXRlOltOU0RhdGUg
ZGlzdGFudFBhc3RdXSkgeworICAgICAgICBpZiAoaW5pdGlhbEhhc0FjdGl2ZU5vd1BsYXlpbmdT
ZXNzaW9uICE9IHdlYlZpZXcuZ2V0KCkuaGFzQWN0aXZlTm93UGxheWluZ1Nlc3Npb24pCisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoaW5pdGlhbFVuaXF1ZUlkZW50aWZpZXIgIT0g
d2ViVmlldy5nZXQoKS5sYXN0VW5pcXVlSWRlbnRpZmllcikKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGlmIChpbml0aWFsRHVyYXRpb24gIT0gd2ViVmlldy5nZXQoKS5sYXN0VXBkYXRl
ZER1cmF0aW9uKQorICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBbd2ViVmlldyB3YWl0Rm9yTm93
UGxheWluZ0luZm9Ub0NoYW5nZV07CisgICAgICAgIGlmIChpbml0aWFsRWxhcHNlZFRpbWUgIT0g
d2ViVmlldy5nZXQoKS5sYXN0VXBkYXRlZEVsYXBzZWRUaW1lKQorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgaWYgKCFbaW5pdGlhbFRpdGxlIGlzRXF1YWxUb1N0cmluZzp3ZWJWaWV3Lmdl
dCgpLmxhc3RVcGRhdGVkVGl0bGVdKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQogCi0gICAg
QVNTRVJUX1NUUkVRKCIiLCB3ZWJWaWV3Lmxhc3RVcGRhdGVkVGl0bGUuVVRGOFN0cmluZyk7Ci0g
ICAgQVNTRVJUX1RSVUUoaXNuYW4od2ViVmlldy5sYXN0VXBkYXRlZER1cmF0aW9uKSk7Ci0gICAg
QVNTRVJUX1RSVUUoaXNuYW4od2ViVmlldy5sYXN0VXBkYXRlZEVsYXBzZWRUaW1lKSk7CisgICAg
QVNTRVJUX1NUUkVRKCIiLCB3ZWJWaWV3LmdldCgpLmxhc3RVcGRhdGVkVGl0bGUuVVRGOFN0cmlu
Zyk7CisgICAgQVNTRVJUX1RSVUUoaXNuYW4od2ViVmlldy5nZXQoKS5sYXN0VXBkYXRlZER1cmF0
aW9uKSk7CisgICAgQVNTRVJUX1RSVUUoaXNuYW4od2ViVmlldy5nZXQoKS5sYXN0VXBkYXRlZEVs
YXBzZWRUaW1lKSk7CisgICAgQVNTRVJUX1RSVUUoIXdlYlZpZXcuZ2V0KCkubGFzdFVuaXF1ZUlk
ZW50aWZpZXIpOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIApAQCAtMTkwLDE0ICsyMDIs
MTQgQEAgVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgRElTQUJMRURfTgogewogICAgIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdOwogICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFUeXBlc1JlcXVpcmlu
Z1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAg
IE5vd1BsYXlpbmdUZXN0V2ViVmlldyAqd2ViVmlldyA9IFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDgwLCAzMjApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbl07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW05vd1Bs
YXlpbmdUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQ4
MCwgMzIwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKICAgICBbd2ViVmlldyBsb2Fk
VGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvLXRlc3Qtbm93LXBsYXlpbmciXTsKICAgICBbd2Vi
VmlldyB3YWl0Rm9yTWVzc2FnZTpAInBsYXlpbmciXTsKIAogICAgIFt3ZWJWaWV3IGV4cGVjdEhh
c0FjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uOllFU107Ci0gICAgQVNTRVJUX1NUUkVRKCJmb28iLCB3
ZWJWaWV3Lmxhc3RVcGRhdGVkVGl0bGUuVVRGOFN0cmluZyk7Ci0gICAgQVNTRVJUX0VRKDEwLCB3
ZWJWaWV3Lmxhc3RVcGRhdGVkRHVyYXRpb24pOwotICAgIEFTU0VSVF9HRSh3ZWJWaWV3Lmxhc3RV
cGRhdGVkRWxhcHNlZFRpbWUsIDApOworICAgIEFTU0VSVF9TVFJFUSgiZm9vIiwgd2ViVmlldy5n
ZXQoKS5sYXN0VXBkYXRlZFRpdGxlLlVURjhTdHJpbmcpOworICAgIEFTU0VSVF9FUSgxMCwgd2Vi
Vmlldy5nZXQoKS5sYXN0VXBkYXRlZER1cmF0aW9uKTsKKyAgICBBU1NFUlRfR0Uod2ViVmlldy5n
ZXQoKS5sYXN0VXBkYXRlZEVsYXBzZWRUaW1lLCAwKTsKIH0KICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325026</attachid>
            <date>2017-10-26 10:36:44 -0700</date>
            <delta_ts>2017-10-26 15:44:22 -0700</delta_ts>
            <desc>Updated patch.</desc>
            <filename>now_playing_identifier_patch_3.txt</filename>
            <type>text/plain</type>
            <size>37615</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzk1NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE3LTEwLTI2ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIE5vd1BsYXlpbmdJbmZv
IHNob3VsZCBjb250YWluIGEgdW5pcXVlIGlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg3MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Ob3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbS4KKworICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpsYXN0VXBkYXRlZE5vd1BsYXlpbmdJbmZv
VW5pcXVlSWRlbnRpZmllciBjb25zdCk6IE5ldy4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
aW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNl
c3Npb25NYW5hZ2VyaU9TOjp1cGRhdGVOb3dQbGF5aW5nSW5mbyk6IERpdHRvLgorCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJNYWM6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvKTog
RGl0dG8uIERvbid0IGxlYWsgQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvTWVk
aWFSZW1vdGVTb2Z0TGluay5jcHA6IFNvZnRsaW5rIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9VbmlxdWVJZGVudGlmaWVyLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNv
ZnRMaW5rLmg6CisKIDIwMTctMTAtMjUgIEphdmllciBGZXJuYW5kZXogIDxqZmVybmFuZGV6QGln
YWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBBdm9pZCBjbGVhcmluZyB0aGUgb3ZlcnJp
ZGVDb250YWluaW5nQmxvY2tXaWR0aCBpZiBwb3NzaWJsZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyLmgJKHJldmlzaW9uIDIyMzk1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2
MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFN0cmluZyBsYXN0VXBk
YXRlZE5vd1BsYXlpbmdUaXRsZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGRvdWJsZSBsYXN0VXBkYXRlZE5vd1BsYXlpbmdEdXJh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIE5BTjsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
ZG91YmxlIGxhc3RVcGRhdGVkTm93UGxheWluZ0VsYXBzZWRUaW1lKCkgY29uc3QgeyByZXR1cm4g
TkFOOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB1aW50NjRfdCBsYXN0VXBkYXRlZE5v
d1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICAg
IGJvb2wgd2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3dp
bGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zOyB9CiAgICAgdm9pZCBzZXRXaWxsSWdub3JlU3lz
dGVtSW50ZXJydXB0aW9ucyhib29sIGlnbm9yZSkgeyBtX3dpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1
cHRpb25zID0gaWdub3JlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgJKHJldmlzaW9uIDIy
Mzk1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25N
YW5hZ2VySU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Miw2ICs3Miw3IEBAIHByaXZhdGU6CiAg
ICAgU3RyaW5nIGxhc3RVcGRhdGVkTm93UGxheWluZ1RpdGxlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9yZXBvcnRlZFRpdGxlOyB9CiAgICAgZG91YmxlIGxhc3RVcGRhdGVkTm93UGxheWluZ0R1
cmF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZXBvcnRlZER1cmF0aW9uOyB9CiAgICAg
ZG91YmxlIGxhc3RVcGRhdGVkTm93UGxheWluZ0VsYXBzZWRUaW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9yZXBvcnRlZEN1cnJlbnRUaW1lOyB9CisgICAgdWludDY0X3QgbGFzdFVwZGF0ZWRO
b3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xh
c3RVcGRhdGVkTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyOyB9CiAKICAgICBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbiogbm93UGxheWluZ0VsaWdpYmxlU2Vzc2lvbigpOwogICAgIApAQCAtNzks
NiArODAsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX3JlcG9ydGVkUmF0ZSB7IDAgfTsKICAg
ICBkb3VibGUgbV9yZXBvcnRlZER1cmF0aW9uIHsgMCB9OwogICAgIGRvdWJsZSBtX3JlcG9ydGVk
Q3VycmVudFRpbWUgeyAwIH07CisgICAgdWludDY0X3QgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdJ
bmZvVW5pcXVlSWRlbnRpZmllciB7IDAgfTsKICAgICBTdHJpbmcgbV9yZXBvcnRlZFRpdGxlOwog
ICAgIGJvb2wgbV9ub3dQbGF5aW5nQWN0aXZlIHsgZmFsc2UgfTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9u
TWFuYWdlcklPUy5tbQkocmV2aXNpb24gMjIzOTU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC03OCwxMyArNzgsMTQgQEAgU09GVF9MSU5LX1BPSU5URVIoTWVkaWFQbGF5ZXIsIE1QTWVkaWFJ
dAogU09GVF9MSU5LX1BPSU5URVIoTWVkaWFQbGF5ZXIsIE1QTm93UGxheWluZ0luZm9Qcm9wZXJ0
eUVsYXBzZWRQbGF5YmFja1RpbWUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihNZWRp
YVBsYXllciwgTVBOb3dQbGF5aW5nSW5mb1Byb3BlcnR5UGxheWJhY2tSYXRlLCBOU1N0cmluZyAq
KQogU09GVF9MSU5LX1BPSU5URVIoTWVkaWFQbGF5ZXIsIE1QVm9sdW1lVmlld1dpcmVsZXNzUm91
dGVzQXZhaWxhYmxlRGlkQ2hhbmdlTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQotCitTT0ZUX0xJ
TktfUE9JTlRFUihNZWRpYVBsYXllciwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1VuaXF1
ZUlkZW50aWZpZXIsIE5TU3RyaW5nICopCiAKICNkZWZpbmUgTVBNZWRpYUl0ZW1Qcm9wZXJ0eVRp
dGxlIGdldE1QTWVkaWFJdGVtUHJvcGVydHlUaXRsZSgpCiAjZGVmaW5lIE1QTWVkaWFJdGVtUHJv
cGVydHlQbGF5YmFja0R1cmF0aW9uIGdldE1QTWVkaWFJdGVtUHJvcGVydHlQbGF5YmFja0R1cmF0
aW9uKCkKICNkZWZpbmUgTVBOb3dQbGF5aW5nSW5mb1Byb3BlcnR5RWxhcHNlZFBsYXliYWNrVGlt
ZSBnZXRNUE5vd1BsYXlpbmdJbmZvUHJvcGVydHlFbGFwc2VkUGxheWJhY2tUaW1lKCkKICNkZWZp
bmUgTVBOb3dQbGF5aW5nSW5mb1Byb3BlcnR5UGxheWJhY2tSYXRlIGdldE1QTm93UGxheWluZ0lu
Zm9Qcm9wZXJ0eVBsYXliYWNrUmF0ZSgpCiAjZGVmaW5lIE1QVm9sdW1lVmlld1dpcmVsZXNzUm91
dGVzQXZhaWxhYmxlRGlkQ2hhbmdlTm90aWZpY2F0aW9uIGdldE1QVm9sdW1lVmlld1dpcmVsZXNz
Um91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUga01STWVkaWFS
ZW1vdGVOb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIgZ2V0a01STWVkaWFSZW1vdGVOb3dQ
bGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIoKQogCiBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyog
V2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBw
bGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIjsKIFdFQkNPUkVfRVhQT1JUIE5T
U3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiA9
IEAiV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24iOwpAQCAt
MjU3LDYgKzI1OCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6dXBkYXRlTm93UGwK
ICAgICBpZiAoc3RkOjppc2Zpbml0ZShkdXJhdGlvbikgJiYgZHVyYXRpb24gIT0gTWVkaWFQbGF5
ZXI6OmludmFsaWRUaW1lKCkpCiAgICAgICAgIGluZm8uZ2V0KClbTVBNZWRpYUl0ZW1Qcm9wZXJ0
eVBsYXliYWNrRHVyYXRpb25dID0gQChkdXJhdGlvbik7CiAgICAgaW5mby5nZXQoKVtNUE5vd1Bs
YXlpbmdJbmZvUHJvcGVydHlQbGF5YmFja1JhdGVdID0gQChyYXRlKTsKKyAgICBpbmZvLmdldCgp
W2tNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyXSA9IEAodGl0bGUu
ZXhpc3RpbmdIYXNoKCkpOwogCiAgICAgaWYgKHN0ZDo6aXNmaW5pdGUoY3VycmVudFRpbWUpICYm
IGN1cnJlbnRUaW1lICE9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpKQogICAgICAgICBpbmZv
LmdldCgpW01QTm93UGxheWluZ0luZm9Qcm9wZXJ0eUVsYXBzZWRQbGF5YmFja1RpbWVdID0gQChj
dXJyZW50VGltZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVk
aWFTZXNzaW9uTWFuYWdlck1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmgJKHJldmlzaW9uIDIyMzk1NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2Vy
TWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMTAgKzM2LDExIEBAIGNsYXNzIE1lZGlhU2Vzc2lvbk1h
bmFnZXJNYWMgOiBwdWJsaWMgUGwKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25N
YW5hZ2VyTWFjKCk7CiAKLSAgICBib29sIGhhc0FjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ub3dQbGF5aW5nQWN0aXZlOyB9Ci0gICAgU3RyaW5nIGxh
c3RVcGRhdGVkTm93UGxheWluZ1RpdGxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sYXN0
VXBkYXRlZE5vd1BsYXlpbmdUaXRsZTsgfQotICAgIGRvdWJsZSBsYXN0VXBkYXRlZE5vd1BsYXlp
bmdEdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGFzdFVwZGF0ZWROb3dQbGF5
aW5nRHVyYXRpb247IH0KLSAgICBkb3VibGUgbGFzdFVwZGF0ZWROb3dQbGF5aW5nRWxhcHNlZFRp
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xhc3RVcGRhdGVkTm93UGxheWluZ0VsYXBz
ZWRUaW1lOyB9CisgICAgYm9vbCBoYXNBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fbm93UGxheWluZ0FjdGl2ZTsgfQorICAgIFN0cmluZyBsYXN0VXBkYXRl
ZE5vd1BsYXlpbmdUaXRsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbGFzdFVwZGF0ZWROb3dQ
bGF5aW5nVGl0bGU7IH0KKyAgICBkb3VibGUgbGFzdFVwZGF0ZWROb3dQbGF5aW5nRHVyYXRpb24o
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xhc3RVcGRhdGVkTm93UGxheWluZ0R1cmF0aW9uOyB9
CisgICAgZG91YmxlIGxhc3RVcGRhdGVkTm93UGxheWluZ0VsYXBzZWRUaW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdFbGFwc2VkVGltZTsgfQorICAgIHVp
bnQ2NF90IGxhc3RVcGRhdGVkTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmll
cjsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI7CkBAIC02NSw2ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbGFzdFVwZGF0
ZWROb3dQbGF5aW5nVGl0bGU7CiAgICAgZG91YmxlIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nRHVy
YXRpb24geyBOQU4gfTsKICAgICBkb3VibGUgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdFbGFwc2Vk
VGltZSB7IE5BTiB9OworICAgIHVpbnQ2NF90IG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1Vu
aXF1ZUlkZW50aWZpZXIgeyAwIH07CiAKICAgICBHZW5lcmljVGFza1F1ZXVlPFRpbWVyPiBtX25v
d1BsYXlpbmdVcGRhdGVUYXNrUXVldWU7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMubW0J
KHJldmlzaW9uIDIyMzk1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9N
ZWRpYVNlc3Npb25NYW5hZ2VyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzOCwxMSArMTM4LDEzIEBA
IHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6dXBkYXRlTm93UGwKICAgICAgICAgbV9sYXN0
VXBkYXRlZE5vd1BsYXlpbmdUaXRsZSA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIG1fbGFzdFVw
ZGF0ZWROb3dQbGF5aW5nRHVyYXRpb24gPSBOQU47CiAgICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQ
bGF5aW5nRWxhcHNlZFRpbWUgPSBOQU47CisgICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5n
SW5mb1VuaXF1ZUlkZW50aWZpZXIgPSAwOwogICAgICAgICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxh
eWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9yaWdpbihNUk1lZGlhUmVtb3RlR2V0TG9j
YWxPcmlnaW4oKSwga01SUGxheWJhY2tTdGF0ZVN0b3BwZWQsIGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF4oTVJNZWRpYVJlbW90ZUVycm9yIGVycm9yKSB7CiAjaWYgTE9HX0RJU0FCTEVECiAg
ICAgICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwogI2Vsc2UKLSAgICAgICAgICAgIExPRyhN
ZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWM6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvIC0gTVJN
ZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4o
c3RvcHBlZCkgZmFpbGVkIHdpdGggZXJyb3IgJXVkIiwgZXJyb3IpOworICAgICAgICAgICAgaWYg
KGVycm9yKQorICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXJN
YWM6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvIC0gTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdBcHBs
aWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4oc3RvcHBlZCkgZmFpbGVkIHdpdGggZXJyb3Ig
JXVkIiwgZXJyb3IpOwogI2VuZGlmCiAgICAgICAgIH0pOwogCkBAIC0xNzAsOCArMTcyLDEyIEBA
IHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6dXBkYXRlTm93UGwKICAgICAgICAgbV9sYXN0
VXBkYXRlZE5vd1BsYXlpbmdEdXJhdGlvbiA9IGR1cmF0aW9uOwogICAgIH0KIAotICAgIGF1dG8g
Y2ZSYXRlID0gQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRG91
YmxlVHlwZSwgJnJhdGUpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtN
Uk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9QbGF5YmFja1JhdGUsIGNmUmF0ZSk7CisgICAgYXV0
byBjZlJhdGUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtD
Rk51bWJlckRvdWJsZVR5cGUsICZyYXRlKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5m
by5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1BsYXliYWNrUmF0ZSwgY2ZSYXRl
LmdldCgpKTsKKworICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZp
ZXIgPSB0aXRsZS5leGlzdGluZ0hhc2goKTsKKyAgICBhdXRvIGNmSWRlbnRpZmllciA9IGFkb3B0
Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyTG9uZ0xvbmdU
eXBlLCAmbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllcikpOworICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWlu
Z0luZm9VbmlxdWVJZGVudGlmaWVyLCBjZklkZW50aWZpZXIuZ2V0KCkpOwogCiAgICAgZG91Ymxl
IGN1cnJlbnRUaW1lID0gY3VycmVudFNlc3Npb24tPmN1cnJlbnRUaW1lKCk7CiAgICAgaWYgKHN0
ZDo6aXNmaW5pdGUoY3VycmVudFRpbWUpICYmIGN1cnJlbnRUaW1lICE9IE1lZGlhUGxheWVyOjpp
bnZhbGlkVGltZSgpICYmIGN1cnJlbnRTZXNzaW9uLT5zdXBwb3J0c1NlZWtpbmcoKSkgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRM
aW5rLmNwcAkocmV2aXNpb24gMjIzOTU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L01lZGlhUmVtb3RlU29mdExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBA
IFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE0KIFNPRlRfTElOS19DT05T
VEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1Bs
YXlpbmdJbmZvRWxhcHNlZFRpbWUsIENGU3RyaW5nUmVmKTsKIFNPRlRfTElOS19DT05TVEFOVF9G
T1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJ
bmZvUGxheWJhY2tSYXRlLCBDRlN0cmluZ1JlZik7CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NP
VVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFja1Bv
c2l0aW9uLCBDRlN0cmluZ1JlZik7CitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJD
b3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50
aWZpZXIsIENGU3RyaW5nUmVmKTsKIAogI2VuZGlmIC8vIFVTRShNRURJQVJFTU9URSkKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGlu
ay5oCShyZXZpc2lvbiAyMjM5NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVk
aWFSZW1vdGVTb2Z0TGluay5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCw4IEBAIFNPRlRf
TElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE0KICNkZWZpbmUga01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb1BsYXliYWNrUmF0ZSBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb1BsYXliYWNrUmF0ZSgpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hF
QURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFja1Bv
c2l0aW9uLCBDRlN0cmluZ1JlZik7CiAjZGVmaW5lIGtNUk1lZGlhUmVtb3RlT3B0aW9uUGxheWJh
Y2tQb3NpdGlvbiBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFja1Bv
c2l0aW9uKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVt
b3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllciwgQ0ZTdHJp
bmdSZWYpOworI2RlZmluZSBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRp
ZmllciBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1VuaXF1ZUlk
ZW50aWZpZXIoKQogCiAjZW5kaWYgLy8gVVNFKE1FRElBUkVNT1RFKQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gMjIzOTU2KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwzNyBAQAorMjAxNy0xMC0yNiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJs
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBOb3dQbGF5aW5nSW5mbyBzaG91bGQgY29udGFpbiBh
IHVuaXF1ZSBpZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzg4NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX3JlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm86XSk6IFRha2Ug
YSBjb21wbGV0aW9uIGhhbmRsZXIuCisgICAgICAgICgtW1dLV2ViVmlldyBfcmVxdWVzdEFjdGl2
ZU5vd1BsYXlpbmdTZXNzaW9uSW5mb10pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2hhbmRsZUFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mb1Jlc3BvbnNlOnRpdGxlOmR1cmF0aW9u
OmVsYXBzZWRUaW1lOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpyZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bm93UGxheWluZ0luZm9DYWxsYmFjayk6
IExvb2t1cCBhbmQgY2FsbCBjb21wbGV0aW9uIGhhbmRsZXIuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6aGFuZGxlQWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvUmVzcG9uc2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpo
YW5kbGVBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm9SZXNwb25zZSk6IERlbGV0ZWQuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OmhhbmRsZUFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mb1Jlc3BvbnNlKTogRGVs
ZXRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vz
c2lvbkluZm8pOiBUYWtlIGNhbGxiYWNrIElELiBQYXNzIHVuaXF1ZSBJRC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE3LTEwLTI1ICBBZHJpYW4gUGVyZXogZGUgQ2Fz
dHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gUmVtb3ZlIEdMaWIgQVBJ
IGZ1bmN0aW9ucyB3aGljaCB1c2UgQ2Fpcm8KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgJKHJldmlzaW9uIDIyMzk1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjc5LDEwICsyNzksNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChib29sKSA9IDA7CiAj
ZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVh
bCB2b2lkIGhhbmRsZUFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mb1Jlc3BvbnNlKGJvb2wgaGFz
QWN0aXZlU2Vzc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3Vi
bGUgZWxhcHNlZFRpbWUpID0gMDsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZp
cnR1YWwgdm9pZCBjb21taXRQb3RlbnRpYWxUYXBGYWlsZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXModWludDY0X3QgcmVxdWVzdElELCBjb25z
dCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiBoaWdo
bGlnaHRlZFF1YWRzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tUmlnaHRS
YWRpdXMpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkocmV2aXNpb24gMjIzOTU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcxMiwxNCArNjcxMiwyOCBAQCBib29sIFdlYlBh
Z2VQcm94eTo6aXNQbGF5aW5nVmlkZW9JbkVuaGFuCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbklu
Zm8oKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbklu
Zm8oUmVmPE5vd1BsYXlpbmdJbmZvQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Np
b25JbmZvKCksIG1fcGFnZUlEKTsKKyAgICBpZiAoIWlzVmFsaWQoKSkgeworICAgICAgICBjYWxs
YmFjay0+aW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBj
YWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFjaykpOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVBY3RpdmVOb3dQbGF5aW5nU2Vz
c2lvbkluZm9SZXNwb25zZShib29sIGhhc0FjdGl2ZVNlc3Npb24sIGNvbnN0IFN0cmluZyYgdGl0
bGUsIGRvdWJsZSBkdXJhdGlvbiwgZG91YmxlIGVsYXBzZWRUaW1lKSBjb25zdAordm9pZCBXZWJQ
YWdlUHJveHk6Om5vd1BsYXlpbmdJbmZvQ2FsbGJhY2soYm9vbCBoYXNBY3RpdmVTZXNzaW9uLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBkb3VibGUgZHVyYXRpb24sIGRvdWJsZSBlbGFwc2VkVGltZSwg
dWludDY0X3QgdW5pcXVlSWRlbnRpZmllciwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewotICAg
IG1fcGFnZUNsaWVudC5oYW5kbGVBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm9SZXNwb25zZSho
YXNBY3RpdmVTZXNzaW9uLCB0aXRsZSwgZHVyYXRpb24sIGVsYXBzZWRUaW1lKTsKKyAgICBhdXRv
IGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxOb3dQbGF5aW5nSW5mb0NhbGxiYWNrPihjYWxs
YmFja0lEKTsKKyAgICBpZiAoIWNhbGxiYWNrKSB7CisgICAgICAgIC8vIEZJWE1FOiBMb2cgZXJy
b3Igb3IgYXNzZXJ0LgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FsbGJhY2stPnBl
cmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShoYXNBY3RpdmVTZXNzaW9uLCB0aXRsZSwgZHVy
YXRpb24sIGVsYXBzZWRUaW1lLCB1bmlxdWVJZGVudGlmaWVyKTsKIH0KICNlbmRpZgogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjIzOTU2KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3Niw2ICsyNzYsNyBAQCB1c2luZyBEcmF3VG9QREZDYWxsYmFjayA9IEdlbmVyaWNDYWxs
YmFjCiAKICNpZiBQTEFURk9STShDT0NPQSkKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0
IFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQmPiBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2s7Cit0eXBlZGVm
IEdlbmVyaWNDYWxsYmFjazxib29sLCBTdHJpbmcsIGRvdWJsZSwgZG91YmxlLCB1aW50NjRfdD4g
Tm93UGxheWluZ0luZm9DYWxsYmFjazsKICNlbmRpZgogCiBjbGFzcyBXZWJQYWdlUHJveHkgOiBw
dWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgpAQCAtMTA4Nyw4
ICsxMDg4LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2
b2lkIHJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oKTsKLSAgICB2b2lkIGhhbmRs
ZUFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mb1Jlc3BvbnNlKGJvb2wgaGFzQWN0aXZlU2Vzc2lv
biwgY29uc3QgU3RyaW5nJiB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3VibGUgZWxhcHNlZFRp
bWUpIGNvbnN0OworICAgIHZvaWQgcmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbyhS
ZWY8Tm93UGxheWluZ0luZm9DYWxsYmFjaz4mJik7CisgICAgdm9pZCBub3dQbGF5aW5nSW5mb0Nh
bGxiYWNrKGJvb2wsIGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgZG91YmxlLCB1aW50NjRfdCwgQ2Fs
bGJhY2tJRCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMjIzOTU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDcgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZVByb3h5IHsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIE1hY2hTZW5k
UmlnaHRDYWxsYmFjayhXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodCwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgTm93UGxheWluZ0luZm9DYWxsYmFjayhib29sIGFj
dGl2ZSwgU3RyaW5nIHRpdGxlLCBkb3VibGUgZHVyYXRpb24sIGRvdWJsZSBlbGFwc2VkVGltZSwg
dWludDY0X3QgdW5pcXVlSWRlbnRpZmllciwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiAjZW5kaWYKIAogICAgIFBhZ2VTY2FsZUZhY3RvckRpZENoYW5nZShkb3VibGUgc2NhbGVGYWN0
b3IpCkBAIC00OTIsMTAgKzQ5Myw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
RGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NP
QSkKLSAgICBIYW5kbGVBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm9SZXNwb25zZShib29sIGhh
c0FjdGl2ZVNlc3Npb24sIFN0cmluZyB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3VibGUgZWxh
cHNlZFRpbWUpCi0jZW5kaWYKLQogICAgIFNldElzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTChi
b29sIGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkKIAogICAgIFN0YXJ0VVJMU2NoZW1lVGFz
ayh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMjM5NTYpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC01OTM2LDE1ICs1OTM2LDE5IEBAIC0gKHZvaWQpX3NldEZvb3RlckJhbm5lckhlaWdo
dDooaW50KWhlaWcKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAotLSAodm9pZClfcmVxdWVz
dEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbworLSAodm9pZClfcmVxdWVzdEFjdGl2ZU5vd1Bs
YXlpbmdTZXNzaW9uSW5mbzoodm9pZCheKShCT09MLCBOU1N0cmluZyosIGRvdWJsZSwgZG91Ymxl
LCBOU0ludGVnZXIpKWNhbGxiYWNrCiB7Ci0gICAgaWYgKF9wYWdlKQotICAgICAgICBfcGFnZS0+
cmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbygpOwotfQorICAgIGlmICghX3BhZ2Up
IHsKKyAgICAgICAgY2FsbGJhY2soTk8sIEAiIiwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKSwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSwg
MCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLS0gKHZvaWQpX2hhbmRsZUFjdGl2ZU5vd1Bs
YXlpbmdTZXNzaW9uSW5mb1Jlc3BvbnNlOihCT09MKWhhc0FjdGl2ZVNlc3Npb24gdGl0bGU6KE5T
U3RyaW5nICopdGl0bGUgZHVyYXRpb246KGRvdWJsZSlkdXJhdGlvbiBlbGFwc2VkVGltZTooZG91
YmxlKWVsYXBzZWRUaW1lCi17Ci0gICAgLy8gT3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgorICAg
IGF1dG8gaGFuZGxlciA9IG1ha2VCbG9ja1B0cihjYWxsYmFjayk7CisgICAgYXV0byBsb2NhbENh
bGxiYWNrID0gV2ViS2l0OjpOb3dQbGF5aW5nSW5mb0NhbGxiYWNrOjpjcmVhdGUoW2hhbmRsZXJd
KGJvb2wgYWN0aXZlLCBTdHJpbmcgdGl0bGUsIGRvdWJsZSBkdXJhdGlvbiwgZG91YmxlIGVsYXBz
ZWRUaW1lLCB1aW50NjRfdCB1bmlxdWVJZGVudGlmaWVyLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3IpIHsKKyAgICAgICAgaGFuZGxlcihhY3RpdmUsIHRpdGxlLCBkdXJhdGlvbiwgZWxhcHNl
ZFRpbWUsIHVuaXF1ZUlkZW50aWZpZXIpOworICAgIH0pOworCisgICAgX3BhZ2UtPnJlcXVlc3RB
Y3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oV1RGTW92ZShsb2NhbENhbGxiYWNrKSk7CiB9CiAK
IC0gKHZvaWQpX3NldFBhZ2VTY2FsZTooQ0dGbG9hdClzY2FsZSB3aXRoT3JpZ2luOihDR1BvaW50
KW9yaWdpbgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiAyMjM5NTYpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MzMsOCArNDMzLDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TSW50ZWdlciwgX1dLUmVjdEVk
ZwogLSAodm9pZClfc2V0Rm9vdGVyQmFubmVySGVpZ2h0OihpbnQpaGVpZ2h0IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEyLjMpKTsKICNlbmRpZgogCi0tICh2b2lkKV9yZXF1ZXN0QWN0aXZl
Tm93UGxheWluZ1Nlc3Npb25JbmZvIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyLjMpLCBp
b3MoMTAuMykpOwotLSAodm9pZClfaGFuZGxlQWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvUmVz
cG9uc2U6KEJPT0wpaGFzQWN0aXZlU2Vzc2lvbiB0aXRsZTooTlNTdHJpbmcgKil0aXRsZSBkdXJh
dGlvbjooZG91YmxlKWR1cmF0aW9uIGVsYXBzZWRUaW1lOihkb3VibGUpZWxhcHNlZFRpbWUgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIuMyksIGlvcygxMC4zKSk7CistICh2b2lkKV9yZXF1
ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvOih2b2lkKF4pKEJPT0wsIE5TU3RyaW5nKiwg
ZG91YmxlLCBkb3VibGUsIE5TSW50ZWdlcikpY2FsbGJhY2sgV0tfQVBJX0FWQUlMQUJMRShtYWNv
c3goV0tfTUFDX1RCQSksIGlvcyhXS19NQUNfVEJBKSk7CiAKIC0gKHZvaWQpX3NldFBhZ2VTY2Fs
ZTooQ0dGbG9hdClzY2FsZSB3aXRoT3JpZ2luOihDR1BvaW50KW9yaWdpbiBXS19BUElfQVZBSUxB
QkxFKGlvcygxMC4zKSk7CiAtIChDR0Zsb2F0KV9wYWdlU2NhbGUgV0tfQVBJX0FWQUlMQUJMRShp
b3MoMTAuMykpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmgJKHJldmlzaW9uIDIyMzk1NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsOCArMTk2
LDYgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24gdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBo
YW5kbGVBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm9SZXNwb25zZShib29sIGhhc0FjdGl2ZVNl
c3Npb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGRvdWJsZSBkdXJhdGlvbiwgZG91YmxlIGVsYXBz
ZWRUaW1lKSBvdmVycmlkZTsKLQogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgcmVxdWVz
dFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgV1RG
OjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBvdmVycmlkZTsKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bQkocmV2aXNpb24gMjIzOTU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MDMsMTEgKzgwMyw2IEBAIHZvaWQg
UGFnZUNsaWVudEltcGw6OmRpZENoYW5nZURhdGFJbnRlcmEKIH0KICNlbmRpZgogCi12b2lkIFBh
Z2VDbGllbnRJbXBsOjpoYW5kbGVBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm9SZXNwb25zZShi
b29sIGhhc0FjdGl2ZVNlc3Npb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGRvdWJsZSBkdXJhdGlv
biwgZG91YmxlIGVsYXBzZWRUaW1lKQotewotICAgIFttX3dlYlZpZXcgX2hhbmRsZUFjdGl2ZU5v
d1BsYXlpbmdTZXNzaW9uSW5mb1Jlc3BvbnNlOmhhc0FjdGl2ZVNlc3Npb24gdGl0bGU6bnNTdHJp
bmdGcm9tV2ViQ29yZVN0cmluZyh0aXRsZSkgZHVyYXRpb246ZHVyYXRpb24gZWxhcHNlZFRpbWU6
ZWxhcHNlZFRpbWVdOwotfQotCiAjaWYgVVNFKFFVSUNLX0xPT0spCiB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpyZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMuaAkocmV2aXNpb24gMjIzOTU2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw3ICsyMTAs
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmFpbExvYWRGb3JNYWluRnJhbWUoKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JNYWluRnJhbWUoU2FtZURv
Y3VtZW50TmF2aWdhdGlvblR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgaGFuZGxlQ29udHJvbGxl
ZEVsZW1lbnRJRFJlc3BvbnNlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgaGFu
ZGxlQWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvUmVzcG9uc2UoYm9vbCBoYXNBY3RpdmVTZXNz
aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBkb3VibGUgZHVyYXRpb24sIGRvdWJsZSBlbGFwc2Vk
VGltZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRU
ZXN0KGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiwgYm9vbCBjb250ZW50UHJldmVudHNEZWZh
dWx0LCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwogICAgIHZvaWQqIGltbWVkaWF0ZUFjdGlvbkFu
aW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1
bHQ+LCB1aW50NjRfdCwgUmVmUHRyPEFQSTo6T2JqZWN0Pikgb3ZlcnJpZGU7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCShyZXZp
c2lvbiAyMjM5NTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTc4OSwxMyArNzg5LDYgQEAgdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6aGFuZGxlQ29udHJvbGxlZEVsZQogI2VuZGlmCiB9CiAKLXZvaWQgUGFnZUNsaWVu
dEltcGw6OmhhbmRsZUFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mb1Jlc3BvbnNlKGJvb2wgaGFz
QWN0aXZlU2Vzc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3Vi
bGUgZWxhcHNlZFRpbWUpCi17Ci0jaWYgV0tfQVBJX0VOQUJMRUQKLSAgICBbbV93ZWJWaWV3IF9o
YW5kbGVBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm9SZXNwb25zZTpoYXNBY3RpdmVTZXNzaW9u
IHRpdGxlOm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcodGl0bGUpIGR1cmF0aW9uOmR1cmF0aW9u
IGVsYXBzZWRUaW1lOmVsYXBzZWRUaW1lXTsKLSNlbmRpZgotfQotCiB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpkaWRDaGFuZ2VCYWNrZ3JvdW5kQ29sb3IoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZp
c2lvbiAyMjM5NTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNjUsNyArMTI2NSw3IEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgcmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdT
ZXNzaW9uSW5mbygpOworICAgIHZvaWQgcmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5m
byhDYWxsYmFja0lEKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRTaG91bGREaXNwYXRjaEZha2VN
b3VzZU1vdmVFdmVudHMoYm9vbCBkaXNwYXRjaCkgeyBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNl
TW92ZUV2ZW50cyA9IGRpc3BhdGNoOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyMzk1NikK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTQzOCw3ICs0MzgsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExl
Z2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVxdWVz
dEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbygpCisgICAgUmVxdWVzdEFjdGl2ZU5vd1BsYXlp
bmdTZXNzaW9uSW5mbyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogCiAg
ICAgU2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wgc2hvdWxkRGlzcGF0
Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQkocmV2aXNpb24gMjIzOTU2
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29h
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDIwICs0MSwyMiBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3Jt
RGlkUmVjZWl2ZUxvYWRQYXJhCiAgICAgbV9kYXRhRGV0ZWN0aW9uQ29udGV4dCA9IGxvYWRQYXJh
bWV0ZXJzLmRhdGFEZXRlY3Rpb25Db250ZXh0OwogfQogCi12b2lkIFdlYlBhZ2U6OnJlcXVlc3RB
Y3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oKQordm9pZCBXZWJQYWdlOjpyZXF1ZXN0QWN0aXZl
Tm93UGxheWluZ1Nlc3Npb25JbmZvKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBib29s
IGhhc0FjdGl2ZVNlc3Npb24gPSBmYWxzZTsKICAgICBTdHJpbmcgdGl0bGUgPSBlbXB0eVN0cmlu
ZygpOwogICAgIGRvdWJsZSBkdXJhdGlvbiA9IE5BTjsKICAgICBkb3VibGUgZWxhcHNlZFRpbWUg
PSBOQU47CisgICAgdWludDY0X3QgdW5pcXVlSWRlbnRpZmllciA9IDA7CiAgICAgaWYgKGF1dG8q
IHNoYXJlZE1hbmFnZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNo
YXJlZE1hbmFnZXJJZkV4aXN0cygpKSB7CiAgICAgICAgIGhhc0FjdGl2ZVNlc3Npb24gPSBzaGFy
ZWRNYW5hZ2VyLT5oYXNBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbigpOwogICAgICAgICB0aXRsZSA9
IHNoYXJlZE1hbmFnZXItPmxhc3RVcGRhdGVkTm93UGxheWluZ1RpdGxlKCk7CiAgICAgICAgIGR1
cmF0aW9uID0gc2hhcmVkTWFuYWdlci0+bGFzdFVwZGF0ZWROb3dQbGF5aW5nRHVyYXRpb24oKTsK
ICAgICAgICAgZWxhcHNlZFRpbWUgPSBzaGFyZWRNYW5hZ2VyLT5sYXN0VXBkYXRlZE5vd1BsYXlp
bmdFbGFwc2VkVGltZSgpOworICAgICAgICB1bmlxdWVJZGVudGlmaWVyID0gc2hhcmVkTWFuYWdl
ci0+bGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIoKTsKICAgICB9CiAK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUFjdGl2ZU5vd1BsYXlpbmdT
ZXNzaW9uSW5mb1Jlc3BvbnNlKGhhc0FjdGl2ZVNlc3Npb24sIHRpdGxlLCBkdXJhdGlvbiwgZWxh
cHNlZFRpbWUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok5vd1BsYXlpbmdJ
bmZvQ2FsbGJhY2soaGFzQWN0aXZlU2Vzc2lvbiwgdGl0bGUsIGR1cmF0aW9uLCBlbGFwc2VkVGlt
ZSwgdW5pcXVlSWRlbnRpZmllciwgY2FsbGJhY2tJRCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIyNDAyMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE3LTEwLTI2ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgorCisgICAgICAgIE5vd1BsYXlpbmdJbmZvIHNob3VsZCBjb250YWluIGEgdW5p
cXVlIGlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3ODg3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Ob3dQbGF5aW5nQ29udHJv
bHNUZXN0cy5tbToKKyAgICAgICAgKC1bTm93UGxheWluZ1Rlc3RXZWJWaWV3IGhhc0FjdGl2ZU5v
d1BsYXlpbmdTZXNzaW9uXSk6IFVzZSBjb21wbGV0aW9uIGhhbmRsZXIuCisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKTogQ2xlYW51cCB0ZXN0cy4gVXNlIG5ldyBBUEkuCisgICAgICAgICgt
W05vd1BsYXlpbmdUZXN0V2ViVmlldyB3YWl0Rm9yTm93UGxheWluZ0luZm9Ub0NoYW5nZV0pOiBE
ZWxldGVkLgorCiAyMDE3LTEwLTI2ICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255
LmNvbT4KIAogICAgICAgICBSZW1vdmUgc2NvcGVndWFyZCBmcm9tIHBsYXRmb3JtCkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05vd1BsYXlpbmdDb250cm9sc1Rl
c3RzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvTm93UGxheWluZ0NvbnRyb2xzVGVzdHMubW0JKHJldmlzaW9uIDIyMzk1NikKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTm93UGxheWluZ0NvbnRyb2xzVGVzdHMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzgsNiArMzgsNyBAQCBAaW50ZXJmYWNlIE5vd1BsYXlpbmdUZXN0
V2ViVmlldyA6IFRlc3RXCiBAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1N0cmluZyAqbGFzdFVwZGF0
ZWRUaXRsZTsKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIGRvdWJsZSBsYXN0VXBkYXRlZER1cmF0aW9u
OwogQHByb3BlcnR5IChyZWFkb25seSkgZG91YmxlIGxhc3RVcGRhdGVkRWxhcHNlZFRpbWU7CitA
cHJvcGVydHkgKHJlYWRvbmx5KSBOU0ludGVnZXIgbGFzdFVuaXF1ZUlkZW50aWZpZXI7CiBAZW5k
CiAKIEBpbXBsZW1lbnRhdGlvbiBOb3dQbGF5aW5nVGVzdFdlYlZpZXcgewpAQCAtNDcsNyArNDgs
MTggQEAgQGludGVyZmFjZSBOb3dQbGF5aW5nVGVzdFdlYlZpZXcgOiBUZXN0VwogLSAoQk9PTClo
YXNBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbgogewogICAgIF9yZWNlaXZlZE5vd1BsYXlpbmdJbmZv
UmVzcG9uc2UgPSBmYWxzZTsKLSAgICBbc2VsZiBfcmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNz
aW9uSW5mb107CisKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3JldGFpbmVkU2VsZiA9
IHJldGFpblB0cihzZWxmKSwgc2VsZl0oQk9PTCBhY3RpdmUsIE5TU3RyaW5nICp0aXRsZSwgZG91
YmxlIGR1cmF0aW9uLCBkb3VibGUgZWxhcHNlZFRpbWUsIE5TSW50ZWdlciB1bmlxdWVJZGVudGlm
aWVyKSB7CisgICAgICAgIF9oYXNBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbiA9IGFjdGl2ZTsKKyAg
ICAgICAgX2xhc3RVcGRhdGVkVGl0bGUgPSBbdGl0bGUgY29weV07CisgICAgICAgIF9sYXN0VXBk
YXRlZER1cmF0aW9uID0gZHVyYXRpb247CisgICAgICAgIF9sYXN0VW5pcXVlSWRlbnRpZmllciA9
IHVuaXF1ZUlkZW50aWZpZXI7CisKKyAgICAgICAgX3JlY2VpdmVkTm93UGxheWluZ0luZm9SZXNw
b25zZSA9IHRydWU7CisgICAgfTsKKworICAgIFtzZWxmIF9yZXF1ZXN0QWN0aXZlTm93UGxheWlu
Z1Nlc3Npb25JbmZvOmNvbXBsZXRpb25IYW5kbGVyXTsKKwogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmX3JlY2VpdmVkTm93UGxheWluZ0luZm9SZXNwb25zZSk7CiAKICAgICByZXR1cm4g
X2hhc0FjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uOwpAQCAtNjIsMjggKzc0LDYgQEAgLSAodm9pZCll
eHBlY3RIYXNBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbgogICAgIH0KIH0KIAotLSAodm9pZCl3YWl0
Rm9yTm93UGxheWluZ0luZm9Ub0NoYW5nZQotewotICAgIEJPT0wgaW5pdGlhbEhhc0FjdGl2ZU5v
d1BsYXlpbmdTZXNzaW9uID0gc2VsZi5oYXNBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbjsKLSAgICBO
U1N0cmluZyAqaW5pdGlhbFRpdGxlID0gc2VsZi5sYXN0VXBkYXRlZFRpdGxlOwotICAgIGRvdWJs
ZSBpbml0aWFsRHVyYXRpb24gPSBzZWxmLmxhc3RVcGRhdGVkRHVyYXRpb247Ci0gICAgZG91Ymxl
IGluaXRpYWxFbGFwc2VkVGltZSA9IHNlbGYubGFzdFVwZGF0ZWRFbGFwc2VkVGltZTsKLSAgICB3
aGlsZSAoW1tOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIHJ1bk1vZGU6TlNEZWZhdWx0UnVuTG9v
cE1vZGUgYmVmb3JlRGF0ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XV0pIHsKLSAgICAgICAgQk9PTCBj
dXJyZW50bHlIYXNBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbiA9IHNlbGYuaGFzQWN0aXZlTm93UGxh
eWluZ1Nlc3Npb247Ci0gICAgICAgIGlmIChpbml0aWFsSGFzQWN0aXZlTm93UGxheWluZ1Nlc3Np
b24gIT0gY3VycmVudGx5SGFzQWN0aXZlTm93UGxheWluZ1Nlc3Npb24pCi0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBpZiAoaW5pdGlhbER1cmF0aW9uICE9IHNlbGYubGFzdFVwZGF0ZWRE
dXJhdGlvbikKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGlmIChpbml0aWFsRWxhcHNl
ZFRpbWUgIT0gc2VsZi5sYXN0VXBkYXRlZEVsYXBzZWRUaW1lKQotICAgICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgICAgaWYgKCFbaW5pdGlhbFRpdGxlIGlzRXF1YWxUb1N0cmluZzpzZWxmLmxhc3RV
cGRhdGVkVGl0bGVdICYmIHNlbGYubGFzdFVwZGF0ZWRUaXRsZSAhPSBpbml0aWFsVGl0bGUpCi0g
ICAgICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KIC0gKHZvaWQpX2hhbmRsZUFjdGl2ZU5vd1Bs
YXlpbmdTZXNzaW9uSW5mb1Jlc3BvbnNlOihCT09MKWhhc0FjdGl2ZVNlc3Npb24gdGl0bGU6KE5T
U3RyaW5nICopdGl0bGUgZHVyYXRpb246KGRvdWJsZSlkdXJhdGlvbiBlbGFwc2VkVGltZTooZG91
YmxlKWVsYXBzZWRUaW1lCiB7CiAgICAgX2hhc0FjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uID0gaGFz
QWN0aXZlU2Vzc2lvbjsKQEAgLTExMSw3NiArMTAxLDk4IEBAIFRFU1QoTm93UGxheWluZ0NvbnRy
b2xzVGVzdHMsIE5vd1BsYXlpbmcKIHsKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25m
aWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKICAgICBj
b25maWd1cmF0aW9uLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBX
S0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBOb3dQbGF5aW5nVGVzdFdlYlZpZXcgKndl
YlZpZXcgPSBbW05vd1BsYXlpbmdUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXSk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRl
by10ZXN0LW5vdy1wbGF5aW5nIl07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJwbGF5
aW5nIl07CiAKICAgICBbd2ViVmlldyBzZXRXaW5kb3dWaXNpYmxlOllFU107Ci0gICAgW3dlYlZp
ZXcud2luZG93IG1ha2VLZXlXaW5kb3ddOworICAgIFt3ZWJWaWV3LmdldCgpLndpbmRvdyBtYWtl
S2V5V2luZG93XTsKICAgICBbd2ViVmlldyBleHBlY3RIYXNBY3RpdmVOb3dQbGF5aW5nU2Vzc2lv
bjpOT107CiAKLSAgICBBU1NFUlRfU1RSRVEoImZvbyIsIHdlYlZpZXcubGFzdFVwZGF0ZWRUaXRs
ZS5VVEY4U3RyaW5nKTsKLSAgICBBU1NFUlRfRVEoMTAsIHdlYlZpZXcubGFzdFVwZGF0ZWREdXJh
dGlvbik7Ci0gICAgQVNTRVJUX0dFKHdlYlZpZXcubGFzdFVwZGF0ZWRFbGFwc2VkVGltZSwgMCk7
CisgICAgQVNTRVJUX1NUUkVRKCJmb28iLCB3ZWJWaWV3LmdldCgpLmxhc3RVcGRhdGVkVGl0bGUu
VVRGOFN0cmluZyk7CisgICAgQVNTRVJUX0VRKDEwLCB3ZWJWaWV3LmdldCgpLmxhc3RVcGRhdGVk
RHVyYXRpb24pOworICAgIEFTU0VSVF9HRSh3ZWJWaWV3LmdldCgpLmxhc3RVcGRhdGVkRWxhcHNl
ZFRpbWUsIDApOwogfQogCiBURVNUKE5vd1BsYXlpbmdDb250cm9sc1Rlc3RzLCBOb3dQbGF5aW5n
Q29udHJvbHNTaG93Rm9yQmFja2dyb3VuZFBhZ2UpCiB7CiAgICAgV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF07CiAgICAgY29uZmlndXJhdGlvbi5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBs
YXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgTm93UGxheWluZ1Rlc3RX
ZWJWaWV3ICp3ZWJWaWV3ID0gW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbl0pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAi
bGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNz
YWdlOkAicGxheWluZyJdOwogCiAgICAgW3dlYlZpZXcgc2V0V2luZG93VmlzaWJsZTpOT107Ci0g
ICAgW3dlYlZpZXcud2luZG93IHJlc2lnbktleVdpbmRvd107CisgICAgW3dlYlZpZXcuZ2V0KCku
d2luZG93IHJlc2lnbktleVdpbmRvd107CiAgICAgW3dlYlZpZXcgZXhwZWN0SGFzQWN0aXZlTm93
UGxheWluZ1Nlc3Npb246WUVTXTsKIAotICAgIEFTU0VSVF9TVFJFUSgiZm9vIiwgd2ViVmlldy5s
YXN0VXBkYXRlZFRpdGxlLlVURjhTdHJpbmcpOwotICAgIEFTU0VSVF9FUSgxMCwgd2ViVmlldy5s
YXN0VXBkYXRlZER1cmF0aW9uKTsKLSAgICBBU1NFUlRfR0Uod2ViVmlldy5sYXN0VXBkYXRlZEVs
YXBzZWRUaW1lLCAwKTsKKyAgICBBU1NFUlRfU1RSRVEoImZvbyIsIHdlYlZpZXcuZ2V0KCkubGFz
dFVwZGF0ZWRUaXRsZS5VVEY4U3RyaW5nKTsKKyAgICBBU1NFUlRfRVEoMTAsIHdlYlZpZXcuZ2V0
KCkubGFzdFVwZGF0ZWREdXJhdGlvbik7CisgICAgQVNTRVJUX0dFKHdlYlZpZXcuZ2V0KCkubGFz
dFVwZGF0ZWRFbGFwc2VkVGltZSwgMCk7CiB9CiAKIFRFU1QoTm93UGxheWluZ0NvbnRyb2xzVGVz
dHMsIE5vd1BsYXlpbmdDb250cm9sc0hpZGVBZnRlclNob3dpbmdLZWVwc1Nlc3Npb25BY3RpdmUp
CiB7CiAgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF07CiAgICAgY29uZmlndXJhdGlvbi5tZWRpYVR5
cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlw
ZU5vbmU7Ci0gICAgTm93UGxheWluZ1Rlc3RXZWJWaWV3ICp3ZWJWaWV3ID0gW1tOb3dQbGF5aW5n
VGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwogICAgIFt3
ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZyJd
OwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogCiAgICAgW3dlYlZp
ZXcgc2V0V2luZG93VmlzaWJsZTpOT107Ci0gICAgW3dlYlZpZXcud2luZG93IHJlc2lnbktleVdp
bmRvd107CisgICAgW3dlYlZpZXcuZ2V0KCkud2luZG93IHJlc2lnbktleVdpbmRvd107CiAKICAg
ICBbd2ViVmlldyBleHBlY3RIYXNBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbjpZRVNdOwogCiAgICAg
W3dlYlZpZXcgc2V0V2luZG93VmlzaWJsZTpZRVNdOwotICAgIFt3ZWJWaWV3LndpbmRvdyBtYWtl
S2V5V2luZG93XTsKKyAgICBbd2ViVmlldy5nZXQoKS53aW5kb3cgbWFrZUtleVdpbmRvd107CiAK
ICAgICBbd2ViVmlldyBleHBlY3RIYXNBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbjpOT107CiAKLSAg
ICBBU1NFUlRfU1RSRVEoImZvbyIsIHdlYlZpZXcubGFzdFVwZGF0ZWRUaXRsZS5VVEY4U3RyaW5n
KTsKLSAgICBBU1NFUlRfRVEoMTAsIHdlYlZpZXcubGFzdFVwZGF0ZWREdXJhdGlvbik7Ci0gICAg
QVNTRVJUX0dFKHdlYlZpZXcubGFzdFVwZGF0ZWRFbGFwc2VkVGltZSwgMCk7CisgICAgQVNTRVJU
X1NUUkVRKCJmb28iLCB3ZWJWaWV3LmdldCgpLmxhc3RVcGRhdGVkVGl0bGUuVVRGOFN0cmluZyk7
CisgICAgQVNTRVJUX0VRKDEwLCB3ZWJWaWV3LmdldCgpLmxhc3RVcGRhdGVkRHVyYXRpb24pOwor
ICAgIEFTU0VSVF9HRSh3ZWJWaWV3LmdldCgpLmxhc3RVcGRhdGVkRWxhcHNlZFRpbWUsIDApOwog
fQogCiBURVNUKE5vd1BsYXlpbmdDb250cm9sc1Rlc3RzLCBOb3dQbGF5aW5nQ29udHJvbHNDbGVh
ckluZm9BZnRlclNlc3Npb25Jc05vTG9uZ2VyVmFsaWQpCiB7CiAgICAgV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF07CiAgICAgY29uZmlndXJhdGlvbi5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZv
clBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgTm93UGxheWluZ1Rl
c3RXZWJWaWV3ICp3ZWJWaWV3ID0gW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0ODAsIDMyMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbTm93UGxheWluZ1Rlc3RXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDgwLCAzMjApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVk
OkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JN
ZXNzYWdlOkAicGxheWluZyJdOwogCisgICAgQk9PTCBpbml0aWFsSGFzQWN0aXZlTm93UGxheWlu
Z1Nlc3Npb24gPSB3ZWJWaWV3LmdldCgpLmhhc0FjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uOworICAg
IE5TU3RyaW5nICppbml0aWFsVGl0bGUgPSB3ZWJWaWV3LmdldCgpLmxhc3RVcGRhdGVkVGl0bGU7
CisgICAgZG91YmxlIGluaXRpYWxEdXJhdGlvbiA9IHdlYlZpZXcuZ2V0KCkubGFzdFVwZGF0ZWRE
dXJhdGlvbjsKKyAgICBkb3VibGUgaW5pdGlhbEVsYXBzZWRUaW1lID0gd2ViVmlldy5nZXQoKS5s
YXN0VXBkYXRlZEVsYXBzZWRUaW1lOworICAgIE5TSW50ZWdlciBpbml0aWFsVW5pcXVlSWRlbnRp
ZmllciA9IHdlYlZpZXcuZ2V0KCkubGFzdFVuaXF1ZUlkZW50aWZpZXI7CisKICAgICBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3Rvcign
dmlkZW8nKS5tdXRlZCA9IHRydWUiXTsKICAgICBbd2ViVmlldyBzZXRXaW5kb3dWaXNpYmxlOk5P
XTsKLSAgICBbd2ViVmlldy53aW5kb3cgcmVzaWduS2V5V2luZG93XTsKKyAgICBbd2ViVmlldy5n
ZXQoKS53aW5kb3cgcmVzaWduS2V5V2luZG93XTsKKworICAgIHdoaWxlIChbW05TUnVuTG9vcCBj
dXJyZW50UnVuTG9vcF0gcnVuTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZSBiZWZvcmVEYXRlOltO
U0RhdGUgZGlzdGFudFBhc3RdXSkgeworICAgICAgICBpZiAoaW5pdGlhbEhhc0FjdGl2ZU5vd1Bs
YXlpbmdTZXNzaW9uICE9IHdlYlZpZXcuZ2V0KCkuaGFzQWN0aXZlTm93UGxheWluZ1Nlc3Npb24p
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoaW5pdGlhbFVuaXF1ZUlkZW50aWZp
ZXIgIT0gd2ViVmlldy5nZXQoKS5sYXN0VW5pcXVlSWRlbnRpZmllcikKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGlmIChpbml0aWFsRHVyYXRpb24gIT0gd2ViVmlldy5nZXQoKS5sYXN0
VXBkYXRlZER1cmF0aW9uKQorICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBbd2ViVmlldyB3YWl0
Rm9yTm93UGxheWluZ0luZm9Ub0NoYW5nZV07CisgICAgICAgIGlmIChpbml0aWFsRWxhcHNlZFRp
bWUgIT0gd2ViVmlldy5nZXQoKS5sYXN0VXBkYXRlZEVsYXBzZWRUaW1lKQorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgaWYgKCFbaW5pdGlhbFRpdGxlIGlzRXF1YWxUb1N0cmluZzp3ZWJW
aWV3LmdldCgpLmxhc3RVcGRhdGVkVGl0bGVdKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQog
Ci0gICAgQVNTRVJUX1NUUkVRKCIiLCB3ZWJWaWV3Lmxhc3RVcGRhdGVkVGl0bGUuVVRGOFN0cmlu
Zyk7Ci0gICAgQVNTRVJUX1RSVUUoaXNuYW4od2ViVmlldy5sYXN0VXBkYXRlZER1cmF0aW9uKSk7
Ci0gICAgQVNTRVJUX1RSVUUoaXNuYW4od2ViVmlldy5sYXN0VXBkYXRlZEVsYXBzZWRUaW1lKSk7
CisgICAgQVNTRVJUX1NUUkVRKCIiLCB3ZWJWaWV3LmdldCgpLmxhc3RVcGRhdGVkVGl0bGUuVVRG
OFN0cmluZyk7CisgICAgQVNTRVJUX1RSVUUoaXNuYW4od2ViVmlldy5nZXQoKS5sYXN0VXBkYXRl
ZER1cmF0aW9uKSk7CisgICAgQVNTRVJUX1RSVUUoaXNuYW4od2ViVmlldy5nZXQoKS5sYXN0VXBk
YXRlZEVsYXBzZWRUaW1lKSk7CisgICAgQVNTRVJUX1RSVUUoIXdlYlZpZXcuZ2V0KCkubGFzdFVu
aXF1ZUlkZW50aWZpZXIpOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIApAQCAtMTkwLDE0
ICsyMDIsMTQgQEAgVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgRElTQUJMRURfTgogewog
ICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwogICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFUeXBlc1Jl
cXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25l
OwotICAgIE5vd1BsYXlpbmdUZXN0V2ViVmlldyAqd2ViVmlldyA9IFtbTm93UGxheWluZ1Rlc3RX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDgwLCAzMjApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W05vd1BsYXlpbmdUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDQ4MCwgMzIwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKICAgICBbd2ViVmll
dyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvLXRlc3Qtbm93LXBsYXlpbmciXTsKICAg
ICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAInBsYXlpbmciXTsKIAogICAgIFt3ZWJWaWV3IGV4
cGVjdEhhc0FjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uOllFU107Ci0gICAgQVNTRVJUX1NUUkVRKCJm
b28iLCB3ZWJWaWV3Lmxhc3RVcGRhdGVkVGl0bGUuVVRGOFN0cmluZyk7Ci0gICAgQVNTRVJUX0VR
KDEwLCB3ZWJWaWV3Lmxhc3RVcGRhdGVkRHVyYXRpb24pOwotICAgIEFTU0VSVF9HRSh3ZWJWaWV3
Lmxhc3RVcGRhdGVkRWxhcHNlZFRpbWUsIDApOworICAgIEFTU0VSVF9TVFJFUSgiZm9vIiwgd2Vi
Vmlldy5nZXQoKS5sYXN0VXBkYXRlZFRpdGxlLlVURjhTdHJpbmcpOworICAgIEFTU0VSVF9FUSgx
MCwgd2ViVmlldy5nZXQoKS5sYXN0VXBkYXRlZER1cmF0aW9uKTsKKyAgICBBU1NFUlRfR0Uod2Vi
Vmlldy5nZXQoKS5sYXN0VXBkYXRlZEVsYXBzZWRUaW1lLCAwKTsKIH0KICNlbmRpZgogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>