<?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>203623</bug_id>
          
          <creation_ts>2019-10-30 13:33:21 -0700</creation_ts>
          <short_desc>Resource Load Statistics: Flush the shared ResourceLoadObserver when the webpage is closed by JavaScript</short_desc>
          <delta_ts>2020-01-18 18:13:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=201319</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1585481</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-10-30 13:33:21 -0700</bug_when>
    <thetext>We should flush the shared ResourceLoadObserver when the webpage is closed by JavaScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585482</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-30 13:33:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/56756427&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585519</commentid>
    <comment_count>2</comment_count>
      <attachid>382357</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-10-30 14:36:02 -0700</bug_when>
    <thetext>Created attachment 382357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585546</commentid>
    <comment_count>3</comment_count>
      <attachid>382363</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-10-30 15:10:10 -0700</bug_when>
    <thetext>Created attachment 382363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585599</commentid>
    <comment_count>4</comment_count>
      <attachid>382363</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-30 15:45:34 -0700</bug_when>
    <thetext>Comment on attachment 382363
Patch

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

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:39
&gt; +    deleteShared();

I don&apos;t think we need this deleteShared() method at all. We could simply inline:
delete sharedObserver();

delete does the null check for you and you don&apos;t need to set to null since the next line will do it for you.

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:50
&gt; +ResourceLoadObserver*&amp; ResourceLoadObserver::sharedIfExists()

We should not be adding an ampersand here, this is a public method.

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:55
&gt; +void ResourceLoadObserver::deleteShared()

We can delete this method altogether as I mentioned above.

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:57
&gt; +    if (auto*&amp; observer = sharedIfExists()) {

This should be using sharedObserver(), not sharedIfExists().

&gt; Source/WebCore/loader/ResourceLoadObserver.h:42
&gt; +    WEBCORE_EXPORT static ResourceLoadObserver*&amp; sharedIfExists();

No ampersand.

&gt; Source/WebCore/loader/ResourceLoadObserver.h:64
&gt; +    static void deleteShared();

Not needed.

&gt; Source/WebCore/page/DOMWindow.cpp:1042
&gt; +    ResourceLoadObserver::shared().updateCentralStatisticsStore();

Maybe we do this way below, only if close() does not return early?

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:286
&gt; +        m_statisticsStore-&gt;updateCookieBlocking([this]() {

What guarantees that |this| stays alive here. Looks to me like you need to protect/ref it.

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:2351
&gt; +    for (auto* processPool : WebProcessPool::allProcessPools()) {

This is a method of a given WebProcessPool (e.g. not static). So why would it iterate over all process pools?

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:2353
&gt; +            if (process-&gt;canSendMessage())

This check is not needed

&gt; Source/WebKit/WebProcess/WebProcess.cpp:674
&gt; +#if ENABLE(RESOURCE_LOAD_STATISTICS)

Could we move the #if ENABLE(RESOURCE_LOAD_STATISTICS) inside the implementation of flushResourceLoadStatistics to make the call sites look better?

&gt; Source/WebKit/WebProcess/WebProcess.cpp:1568
&gt; +        WebCore::ResourceLoadObserver::setShared(new WebResourceLoadObserver);

This could be on one line:
WebCore::ResourceLoadObserver::setShared(enabled ? new WebResourceLoadObserver : nullptr);

Also, are we sure that setResourceLoadStatisticsEnabled(true) cannot be called twice in a raw? In such cases we would destroy the observer unnecessarily and possibly lose data.

On the same note, should the WebResourceLoadObserver destructor flush? So that if you have pending data then disable ITP in this process, then the pending statistics are not lost and still sent to the network process?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585635</commentid>
    <comment_count>5</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-10-30 16:13:42 -0700</bug_when>
    <thetext>Thanks for having a look!

(In reply to Chris Dumez from comment #4)
&gt; Comment on attachment 382363 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=382363&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/ResourceLoadObserver.cpp:39
&gt; &gt; +    deleteShared();
&gt; 
&gt; I don&apos;t think we need this deleteShared() method at all. We could simply
&gt; inline:
&gt; delete sharedObserver();

Good idea. Will fix.

&gt; delete does the null check for you and you don&apos;t need to set to null since
&gt; the next line will do it for you.
&gt; 
&gt; &gt; Source/WebCore/loader/ResourceLoadObserver.cpp:50
&gt; &gt; +ResourceLoadObserver*&amp; ResourceLoadObserver::sharedIfExists()
&gt; 
&gt; We should not be adding an ampersand here, this is a public method.

It was needed because of the use of the ampersand in deleteShared() but now that deleteShared() is gone we don&apos;t need it anymore.

&gt; &gt; Source/WebCore/loader/ResourceLoadObserver.cpp:55
&gt; &gt; +void ResourceLoadObserver::deleteShared()
&gt; 
&gt; We can delete this method altogether as I mentioned above.

Yup.

&gt; &gt; Source/WebCore/loader/ResourceLoadObserver.cpp:57
&gt; &gt; +    if (auto*&amp; observer = sharedIfExists()) {
&gt; 
&gt; This should be using sharedObserver(), not sharedIfExists().

In the case of no existing observer, wouldn&apos;t that create a new observer only to delete it the next line? Anyway, it&apos;s mute now that we&apos;re deleting deleteShared().

&gt; &gt; Source/WebCore/loader/ResourceLoadObserver.h:42
&gt; &gt; +    WEBCORE_EXPORT static ResourceLoadObserver*&amp; sharedIfExists();
&gt; 
&gt; No ampersand.
&gt; 
&gt; &gt; Source/WebCore/loader/ResourceLoadObserver.h:64
&gt; &gt; +    static void deleteShared();
&gt; 
&gt; Not needed.
&gt; 
&gt; &gt; Source/WebCore/page/DOMWindow.cpp:1042
&gt; &gt; +    ResourceLoadObserver::shared().updateCentralStatisticsStore();
&gt; 
&gt; Maybe we do this way below, only if close() does not return early?

I was thinking of sending that IPC as early as possible but I can move it down to when we are sure to close.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:286
&gt; &gt; +        m_statisticsStore-&gt;updateCookieBlocking([this]() {
&gt; 
&gt; What guarantees that |this| stays alive here. Looks to me like you need to
&gt; protect/ref it.

Will fix.

&gt; &gt; Source/WebKit/UIProcess/WebProcessPool.cpp:2351
&gt; &gt; +    for (auto* processPool : WebProcessPool::allProcessPools()) {
&gt; 
&gt; This is a method of a given WebProcessPool (e.g. not static). So why would
&gt; it iterate over all process pools?

Will fix.

&gt; &gt; Source/WebKit/UIProcess/WebProcessPool.cpp:2353
&gt; &gt; +            if (process-&gt;canSendMessage())
&gt; 
&gt; This check is not needed

Huh. Will fix.

&gt; &gt; Source/WebKit/WebProcess/WebProcess.cpp:674
&gt; &gt; +#if ENABLE(RESOURCE_LOAD_STATISTICS)
&gt; 
&gt; Could we move the #if ENABLE(RESOURCE_LOAD_STATISTICS) inside the
&gt; implementation of flushResourceLoadStatistics to make the call sites look
&gt; better?

It actually already is so I&apos;ll just clean up the call sites.

&gt; &gt; Source/WebKit/WebProcess/WebProcess.cpp:1568
&gt; &gt; +        WebCore::ResourceLoadObserver::setShared(new WebResourceLoadObserver);
&gt; 
&gt; This could be on one line:
&gt; WebCore::ResourceLoadObserver::setShared(enabled ? new
&gt; WebResourceLoadObserver : nullptr);

Nice. Will fix.

&gt; Also, are we sure that setResourceLoadStatisticsEnabled(true) cannot be
&gt; called twice in a raw? In such cases we would destroy the observer
&gt; unnecessarily and possibly lose data.

The added check:

if (WebCore::DeprecatedGlobalSettings::resourceLoadStatisticsEnabled() == enabled || m_sessionID-&gt;isEphemeral())
        return;

… should take care of that.

&gt; On the same note, should the WebResourceLoadObserver destructor flush? So
&gt; that if you have pending data then disable ITP in this process, then the
&gt; pending statistics are not lost and still sent to the network process?

Good idea. I&apos;ll add it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585640</commentid>
    <comment_count>6</comment_count>
      <attachid>382385</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-10-30 16:18:49 -0700</bug_when>
    <thetext>Created attachment 382385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585989</commentid>
    <comment_count>7</comment_count>
      <attachid>382385</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-31 11:05:12 -0700</bug_when>
    <thetext>Comment on attachment 382385
Patch

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

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:39
&gt; +    delete sharedObserver();

Could we use a std::unique_ptr&lt;ResourceLoadObserver&gt; instead of manual new/delete?

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:286
&gt; +        m_statisticsStore-&gt;updateCookieBlocking([this, protectedThis = makeRef(*this)]() {

Grumble grumble.  https://twitter.com/alexfchr/status/1083136307197440000
Here, to work around a VS bug we need to do protectedThis = protectedThis.copyRef()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586082</commentid>
    <comment_count>8</comment_count>
      <attachid>382504</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-10-31 14:42:29 -0700</bug_when>
    <thetext>Created attachment 382504
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586083</commentid>
    <comment_count>9</comment_count>
      <attachid>382504</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-10-31 14:43:47 -0700</bug_when>
    <thetext>Comment on attachment 382504
Patch

Thanks, Alex! Especially for the solution to the Windows build failure. See if you like this better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587062</commentid>
    <comment_count>10</comment_count>
      <attachid>382751</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-11-04 11:03:28 -0800</bug_when>
    <thetext>Created attachment 382751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587122</commentid>
    <comment_count>11</comment_count>
      <attachid>382751</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-11-04 13:26:09 -0800</bug_when>
    <thetext>Comment on attachment 382751
Patch

Thanks, Alex and Chris!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587147</commentid>
    <comment_count>12</comment_count>
      <attachid>382751</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-04 14:13:48 -0800</bug_when>
    <thetext>Comment on attachment 382751
Patch

Clearing flags on attachment: 382751

Committed r252014: &lt;https://trac.webkit.org/changeset/252014&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587148</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-04 14:13:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382357</attachid>
            <date>2019-10-30 14:36:02 -0700</date>
            <delta_ts>2019-10-30 15:10:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203623-20191030143602.patch</filename>
            <type>text/plain</type>
            <size>31130</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODQyNWY1YzhiNjAwYzQ1
ZTEwZDAwNGY3YjVjYWMzMDIzZWJkZDQzNS4uOTZkODcxZWY3NWRiODNjN2I5Mzg3MmQ5NWM2MjAy
MDYxZWM1MjBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTEwLTMwICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogRmx1c2ggdGhlIHNoYXJlZCBSZXNvdXJjZUxvYWRPYnNlcnZlciB3aGVuIHRo
ZSB3ZWJwYWdlIGlzIGNsb3NlZCBieSBKYXZhU2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM2MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU2NzU2NDI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5ldyBBUEkgdGVzdCBhZGRlZC4KKworICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRP
YnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0
U2hhcmVkKToKKyAgICAgICAgICAgIFJlbW92ZWQgdGhlIHJlbGVhc2UgYXNzZXJ0IHNpbmNlIG5v
dyBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUgbWF5IHNldAorICAgICAgICAgICAgdGhlIHNoYXJl
ZCBvYnNlcnZlciBhdCBydW50aW1lIHdoZW4gdGhlcmUgaXMgcG9zc2libHkgYW4gZXhpc3Rpbmcg
ZHVtbXkuCisgICAgICAgICAgICBUaGlzIG5vdyB0YWtlcyBhIHBvaW50ZXIgcGFyYW1ldGVyLgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmRlbGV0ZVNoYXJlZCk6Cisg
ICAgICAgICAgICBVc2VkIHdoZW4gYSBuZXcgb2JzZXJ2ZXIgaXMgc2V0IGFuZCBhbiBlYXJsaWVy
IG9uZSBleGlzdHMuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2Fk
aW5nRm9yVGVzdGluZyk6CisgICAgICAgICAgICBUZXN0IGZ1bmN0aW9uIHRvIHNlZWQgdGhlIHdl
YiBwcm9jZXNzJyBvYnNlcnZlci4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNsb3NlKToKKyAgICAgICAgICAgIE5vdyBmbHVzaGVz
IHRoZSBzaGFyZWQgb2JzZXJ2ZXIuCisKIDIwMTktMTAtMzAgIFphbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiAhb2JqZWN0IHx8ICFpc1J1
Ynkob2JqZWN0LT5wYXJlbnQoKSkgfHwgaXM8UmVuZGVyUnVieVJ1bj4oKm9iamVjdCkgfHwgKG9i
amVjdC0+aXNJbmxpbmUoKSAmJiAob2JqZWN0LT5pc0JlZm9yZUNvbnRlbnQoKSB8fCBvYmplY3Qt
PmlzQWZ0ZXJDb250ZW50KCkpKSB8fCAob2JqZWN0LT5pc0Fub255bW91cygpICYmIGlzPFJlbmRl
ckJsb2NrPigqb2JqZWN0KSAmJiBvYmplY3QtPnN0eWxlKCkuZGlzcGxheSgpID09IEQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggZWE5NWMxMDY3MDUxMjZlMTk2NWY2OTA0ZDBiNTFkMWRmNTU0NzVlOC4uZjg4NGY1YTBj
NGM3NDMxODkyNmQ2ODQ0MWI2MzI4OTVlYjg1ZTBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBA
QAorMjAxOS0xMC0zMCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IEZsdXNoIHRoZSBzaGFyZWQgUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIgd2hlbiB0aGUgd2VicGFnZSBpcyBjbG9zZWQgYnkgSmF2YVNjcmlwdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNjIzCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81Njc1NjQyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgZmx1c2hpbmcgb2YgcGVuZGlu
ZyBzdGF0aXN0aWNzIHdoZW4gYSB3aW5kb3cgaXMgY2xvc2VkIGJ5IEphdmFTY3JpcHQsCisgICAg
ICAgIHdoZW4gYSB3ZWJwYWdlIGlzIHJlbW92ZWQgZnJvbSB0aGUgd2ViIHByb2Nlc3MsIGFuZCB3
aGVuIHRoZSB3ZWIgcHJvY2VzcyBwcmVwYXJlcyB0bworICAgICAgICBzdXNwZW5kLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKToKKyAgICAgICAgICAgIE5vdyBjYWxs
cyBsb2dUZXN0aW5nRXZlbnQoKSBzbyB0aGF0IHRoZSB0ZXN0IGluZnJhc3RydWN0dXJlIGNhbiB3
YWl0IGZvciB1cGRhdGVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2VlZFJlc291cmNlTG9hZFN0YXRp
c3RpY3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6dGhpcmRQYXJ0eTpzaG91bGRTY2hlZHVsZU5v
dGlmaWNhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgICAgIFRlc3QgaW5mcmFz
dHJ1Y3R1cmUgdG8gc2VlZCBldmVyeSB3ZWIgcHJvY2VzcycgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIgd2l0aCB0ZXN0IGRhdGEuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2NsZWFy
UmVzb3VyY2VMb2FkU3RhdGlzdGljczpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3Jl
IF9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXJGaXJzdFBhcnR5OnRoaXJkUGFydHk6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICAgICBUZXN0IGluZnJhc3RydWN0dXJlLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpzZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcpOgor
ICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmlzUmVnaXN0
ZXJlZEFzU3VicmVzb3VyY2VVbmRlcik6CisgICAgICAgICAgICBNYWRlIHN1cmUgdGhlIGNvbXBs
ZXRpb24gaGFuZGxlciBpcyBjYWxsZWQgZXZlbiBpZiB0aGVyZSBpcyBubyBuZXR3b3JrIHByb2Nl
c3MuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkKToKKyAgICAgICAgICAgIE5vdyB0ZWxscyBhbGwgd2ViIHByb2Nlc3Nl
cyB0byB0dXJuIElUUCBvbiBvciBvZmYuICAgICAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmdGb3JU
ZXN0aW5nKToKKyAgICAgICAgICAgIFRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gc2VlZCB0aGUgb2Jz
ZXJ2ZXIgd2l0aCB0ZXN0IGRhdGEuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAg
ICAgIFRoZXNlIGZ1bmN0aW9ucyBub3cgY2FsbCBXZWJQcm9jZXNzOjpmbHVzaFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQpOgorICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBub3cgc2V0
cyB0aGUgcHJvY2Vzcycgc2hhcmVkIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpmbHVzaFJlc291cmNlTG9hZFN0YXRpc3RpY3MpOgor
ICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiB0ZWxscyB0aGUgc2hhcmVkIFdlYkNvcmU6OlJlc291
cmNlTG9hZE9ic2VydmVyIHRvIHNlbmQgYW55IHBlbmRpbmcKKyAgICAgICAgICAgIHN0YXRpc3Rp
Y3MgdG8gdGhlIGNlbnRyYWwgSVRQIHN0b3JlLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpzZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcpOgorICAgICAgICAgICAgVGVz
dCBpbmZyYXN0cnVjdHVyZSB0byBzZWVkIHRoZSBzaGFyZWQgb2JzZXJ2ZXIgd2l0aCB0ZXN0IGRh
dGEuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE5LTEwLTMwICBBbmRyZXMgR29uemFs
ZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBDcmVhdGUgYmFzZSBjbGFzcyBj
b21tb24gdG8gQWNjZXNzaWJpbGl0eU9iamVjdCBhbmQgQVhJc29sYXRlZFRyZWVOb2RlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKaW5kZXggZTE2
NTYzN2VhMzMzYmFlZDliZjU5ZmY2MDIxN2Q4OTFhODQwMmQzNi4uMmE1YTQ3NGNhZTA0NzFjMzlk
NGMxMDFlODI1Zjk4MzRiNDg4OWMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC0zNCwxMCArMzQsMTAgQEAgc3RhdGljIFJlc291cmNl
TG9hZE9ic2VydmVyKiYgc2hhcmVkT2JzZXJ2ZXIoKQogICAgIHJldHVybiBvYnNlcnZlcjsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U2hhcmVkKFJlc291cmNlTG9hZE9ic2Vy
dmVyJiBvYnNlcnZlcikKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFNoYXJlZChSZXNv
dXJjZUxvYWRPYnNlcnZlciogb2JzZXJ2ZXIpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIXNoYXJl
ZE9ic2VydmVyKCkpOwotICAgIHNoYXJlZE9ic2VydmVyKCkgPSAmb2JzZXJ2ZXI7CisgICAgZGVs
ZXRlU2hhcmVkKCk7CisgICAgc2hhcmVkT2JzZXJ2ZXIoKSA9IG9ic2VydmVyOwogfQogCiBSZXNv
dXJjZUxvYWRPYnNlcnZlciYgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpCkBAIC01Miw0
ICs1MiwxMiBAQCBSZXNvdXJjZUxvYWRPYnNlcnZlciogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
YXJlZElmRXhpc3RzKCkKICAgICByZXR1cm4gc2hhcmVkT2JzZXJ2ZXIoKTsKIH0KIAordm9pZCBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZGVsZXRlU2hhcmVkKCkKK3sKKyAgICBpZiAoYXV0byogb2Jz
ZXJ2ZXIgPSBzaGFyZWRJZkV4aXN0cygpKSB7CisgICAgICAgIGRlbGV0ZSBvYnNlcnZlcjsKKyAg
ICAgICAgb2JzZXJ2ZXIgPSBudWxscHRyOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2Vy
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAppbmRl
eCBlNzRkNWY2NmZhZDFlNzk3MmJlZWExOTg2ODhlYmZlNzJkYmI0Mjg5Li5kMTY0MGZjYTRjNjUx
MjI4NWI0YmQ2MGIyMTlkOGFmNzM4MzU3M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtNDAsOCArNDAsOCBAQCBjbGFzcyBSZXNvdXJjZUxv
YWRPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlc291cmNl
TG9hZE9ic2VydmVyJiBzaGFyZWQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIqIHNoYXJlZElmRXhpc3RzKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgc2V0U2hhcmVkKFJlc291cmNlTG9hZE9ic2VydmVyJik7Ci0gICAgCisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U2hhcmVkKFJlc291cmNlTG9hZE9ic2VydmVyKik7
CisKICAgICB2aXJ0dWFsIH5SZXNvdXJjZUxvYWRPYnNlcnZlcigpIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgLyogbmV3UmVxdWVzdCAqLywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgLyogcmVk
aXJlY3RSZXNwb25zZSAqLykgeyB9CkBAIC01MiwxMiArNTIsMTYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBsb2dDYW52YXNXcml0ZU9yTWVhc3VyZShjb25zdCBEb2N1bWVudCYsIGNvbnN0
IFN0cmluZyYgLyogdGV4dFdyaXR0ZW4gKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2dOYXZp
Z2F0b3JBUElBY2Nlc3NlZChjb25zdCBEb2N1bWVudCYsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3M6Ok5hdmlnYXRvckFQSSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvZ1NjcmVlbkFQSUFj
Y2Vzc2VkKGNvbnN0IERvY3VtZW50JiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6U2Ny
ZWVuQVBJKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9nU3VicmVzb3VyY2VMb2FkaW5nRm9yVGVz
dGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgLyogZmlyc3RQYXJ0eURvbWFpbiAqLywgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIC8qIHRoaXJkUGFydHlEb21haW4gKi8sIGJvb2wgLyogc2hv
dWxkU2NoZWR1bGVOb3RpZmljYXRpb24gKi8pIHsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgc3Rh
dGlzdGljc0ZvclVSTChjb25zdCBVUkwmKSB7IHJldHVybiB7IH07IH0KICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBj
bGVhclN0YXRlKCkgeyB9CiAgICAgCiAgICAgdmlydHVhbCBib29sIGhhc1N0YXRpc3RpY3MoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIGRlbGV0
ZVNoYXJlZCgpOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcAppbmRleCBjNzBmMzM3NWNmMjg3OWI1MDc4ZTg3MDRiYzQ3ZDJjNGM0MzM1
NGYxLi41OGFlNDM4MjVlZjZjNTA5MGM1YjE4MTFlYmM1NGUyNDFmNjhiOWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xMDM5LDYgKzEwMzksOCBAQCB2b2lkIERPTVdpbmRvdzo6
Y2xvc2UoRG9jdW1lbnQmIGRvY3VtZW50KQogCiB2b2lkIERPTVdpbmRvdzo6Y2xvc2UoKQogewor
ICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS51cGRhdGVDZW50cmFsU3RhdGlzdGlj
c1N0b3JlKCk7CisKICAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CiAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcAppbmRleCBkY2JkZDg4MzUyNTRhZWRmMThkMTQyMmM1NGUwY2I3MTVl
N2U1YmNlLi44ZDEwMjhmYzFmNTA4ZjMwYWQwYWY3ODRjNjI4YzdmOGZiOTRkYjVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMjgzLDcg
KzI4MywxMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VM
b2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cgogICAgICAgICBtX3N0YXRpc3RpY3NT
dG9yZS0+Y2FuY2VsUGVuZGluZ1N0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdCgpOwogCiAgICAg
ICAgIC8vIEZpcmUgYmVmb3JlIHByb2Nlc3Npbmcgc3RhdGlzdGljcyB0byBwcm9wYWdhdGUgdXNl
ciBpbnRlcmFjdGlvbiBhcyBmYXN0IGFzIHBvc3NpYmxlIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3Mu
Ci0gICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT51cGRhdGVDb29raWVCbG9ja2luZyhbXSgpIHsg
fSk7CisgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT51cGRhdGVDb29raWVCbG9ja2luZyhbdGhp
c10oKSB7CisgICAgICAgICAgICBwb3N0VGFza1JlcGx5KFt0aGlzXSgpIHsKKyAgICAgICAgICAg
ICAgICBsb2dUZXN0aW5nRXZlbnQoIlN0YXRpc3RpY3MgVXBkYXRlZCJfcyk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CiAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5wcm9jZXNzU3Rh
dGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IDBiODEwYjVmYWUw
ZTFhY2E1MTAzYjg1NDE5MWIwNDJhOTEzOTljZWEuLjM0ODMyYjEyZDY5YTU0MDk3NGRlNDQzYzVm
NGJiMjRlMzMwYjgyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC00OSw2ICs0OSw3IEBACiAjaW1wb3J0ICJfV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9DZXJ0aWZp
Y2F0ZUluZm8uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtT
UEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CiAjaW1w
b3J0IDx3dGYvQmxvY2tQdHIuaD4KQEAgLTY1Myw0ICs2NTQsMTggQEAgLSAodm9pZClfYWxsb3dB
bnlUTFNDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldFRlc3RpbmcKICAgICBfcHJvY2Vzc1Bvb2wtPnNl
dEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0KHRydWUpOwogfQogCistICh2b2lk
KV9zZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmdXaXRoRmlyc3RQYXJ0eTooTlNV
UkwgKilmaXJzdFBhcnR5VVJMIHRoaXJkUGFydHk6KE5TVVJMICopdGhpcmRQYXJ0eVVSTCBzaG91
bGRTY2hlZHVsZU5vdGlmaWNhdGlvbjooQk9PTClzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbiBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgoreworI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgX3Byb2Nlc3NQb29sLT5zZWVk
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4geyBmaXJzdFBhcnR5VVJMIH0sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdGhpcmRQ
YXJ0eVVSTCB9LCBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbiwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgIH0pOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0
eVVSTCk7CisgICAgVU5VU0VEX1BBUkFNKHRoaXJkUGFydHlVUkwpOworICAgIFVOVVNFRF9QQVJB
TShzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGNvbXBsZXRp
b25IYW5kbGVyKTsKKyNlbmRpZgorfQorCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IDNhODFk
NTk5OTlkY2M5OTlmMTM5M2NjMzI5NmI5YmVhNjA1MmJiZTIuLjEzMDM1Y2E2ZWIyOWZmMmI3YTFm
ZGY3NTI5YTlkOTBkYTliNTFhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC0xMzIsNCArMTMyLDcg
QEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9X2lzU3RvcmFnZUFjY2Vzc0FQSUVuYWJs
ZWQsIHNldHRlcj1fc2V0U3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQ6KSBCT09MIF9zdG9yYWdlQWNj
ZXNzQVBJRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykp
OwogLSAodm9pZClfc3ludGhlc2l6ZUFwcElzQmFja2dyb3VuZDooQk9PTCliYWNrZ3JvdW5kIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy8v
IFRlc3Qgb25seS4KKy0gKHZvaWQpX3NlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGlu
Z1dpdGhGaXJzdFBhcnR5OihOU1VSTCAqKWZpcnN0UGFydHlVUkwgdGhpcmRQYXJ0eTooTlNVUkwg
Kil0aGlyZFBhcnR5VVJMIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uOihCT09MKXNob3VsZFNj
aGVkdWxlTm90aWZpY2F0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKHZvaWQpKWNvbXBs
ZXRpb25IYW5kbGVyICBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA2MTQyZjBiNzgxY2Y0MTVhMDdm
MDg5OWRiOGNjOTdiYWE4ZTRhYWQ4Li5hZDBiNzMxZmI5YmFjODc2ODZjNDZmMDNmYTkxMDljN2Rm
YTE2NGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkFQSVN0
cmluZy5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29h
LmgiCiAjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCisjaW1wb3J0ICJT
aG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKICNpbXBvcnQgIldLSFRUUENvb2tpZVN0b3Jl
SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5oIgogI2ltcG9ydCAiV0tOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmgiCkBAIC00OTUsNiArNDk2LDI4IEBAIC0gKHZvaWQpX2NsZWFy
UHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
Xikodm9pZCkpCiAjZW5kaWYKIH0KIAorLSAodm9pZClfY2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgoreworI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNjaGVkdWxlQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3Rp
Y3M6Ok5vLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKKyNlbHNlCisg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyNlbmRpZgorfQorCistICh2b2lkKV9pc1JlZ2lzdGVy
ZWRBc1N1YnJlc291cmNlVW5kZXJGaXJzdFBhcnR5OihOU1VSTCAqKWZpcnN0UGFydHlVUkwgdGhp
cmRQYXJ0eTooTlNVUkwgKil0aGlyZFBhcnR5VVJMIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShCT09MKSljb21wbGV0aW9uSGFuZGxlcgoreworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmlzUmVnaXN0ZXJlZEFzU3VicmVzb3Vy
Y2VVbmRlcih0aGlyZFBhcnR5VVJMLCBmaXJzdFBhcnR5VVJMLCBbY29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGVuYWJsZWQpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZW5hYmxlZCk7CisgICAgfSk7CisjZWxzZQorICAgIGNvbXBs
ZXRpb25IYW5kbGVyKE5PKTsKKyNlbmRpZgorfQorCiAtICh2b2lkKV9wcm9jZXNzU3RhdGlzdGlj
c0FuZERhdGFSZWNvcmRzOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUu
aAppbmRleCAwNGUzYzc4MWNkNTEyMTk3MDgyYzlhNTZiZjRkYTNhNDFlMzkzMzI5Li4zMWI4MGFi
NDI1MTJmNWQ2YjA0Y2I3NDNmYmY2MjM1MzE3ZWE3OTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmgKQEAgLTcwLDcgKzcwLDkgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9X
S1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKIC0gKHZvaWQpX3NjaGVkdWxlQ29va2ll
QmxvY2tpbmdVcGRhdGU6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9z
ZXRQcmV2YWxlbnREb21haW46KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfZ2V0SXNQcmV2YWxlbnREb21haW46
KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MKSljb21wbGV0
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwotLSAodm9pZClfY2xlYXJQcmV2YWxlbnREb21haW46KE5TVVJMICopZG9tYWluIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZv
aWQpX2NsZWFyUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX2NsZWFyUmVzb3VyY2VM
b2FkU3RhdGlzdGljczoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX2lz
UmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0UGFydHk6KE5TVVJMICopZmlyc3RQYXJ0
eVVSTCB0aGlyZFBhcnR5OihOU1VSTCAqKXRoaXJkUGFydHlVUkwgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9wcm9jZXNzU3RhdGlzdGlj
c0FuZERhdGFSZWNvcmRzOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVy
dHkgKG51bGxhYmxlLCBub25hdG9taWMsIHdlYWspIGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVs
ZWdhdGU+IF9kZWxlZ2F0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CmluZGV4IDIzYWM2ZTQ5N2ZhZTczZGEyN2FjMmVmNTY1MGJiZTRmMjk5NmQzYjAuLjJmODMwOTYz
NWRhNGYxN2E3YjdiOTg3ZDEzZGY0MmIzOGNjZjE4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTg4LDEwICs4OCwxMiBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzV2FybWluZy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2luY2x1ZGUgPHBhbC9T
ZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTIzNDEsNiArMjM0MywxOCBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNl
c3Npb25JRCBzZXNzaQogCiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+ZGlkQ29tbWl0Q3Jvc3NTaXRl
TG9hZFdpdGhEYXRhVHJhbnNmZXIoc2Vzc2lvbklELCBmcm9tRG9tYWluLCB0b0RvbWFpbiwgbmF2
aWdhdGlvbkRhdGFUcmFuc2Zlciwgd2ViUGFnZVByb3h5SUQsIHdlYlBhZ2VJRCk7CiB9CisKK3Zv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRp
b24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKworICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wg
OiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgZm9yIChhdXRv
JiBwcm9jZXNzIDogcHJvY2Vzc1Bvb2wtPnByb2Nlc3NlcygpKSB7CisgICAgICAgICAgICBpZiAo
cHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkKKyAgICAgICAgICAgICAgICBwcm9jZXNzLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNlZWRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRm9yVGVzdGluZyhmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5RG9tYWluLCBzaG91
bGRTY2hlZHVsZU5vdGlmaWNhdGlvbiksIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0Fn
Z3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICB9CisgICAgfQorfQogI2VuZGlmCiAK
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFdlYlByb2Nlc3NIYXNVcGxvYWRzKFByb2Nlc3NJZGVu
dGlmaWVyIHByb2Nlc3NJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CmluZGV4IDhkYTBiMTcyNTlmNjRlMGM0M2IwM2E5MTIwN2Y5ZWNhNDJkMmY4OWEuLjkwYjYwZjA3
YTYyNWM1NWQxZGNhYmM5NDk3MTczMDY3OWNlNzk2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJh
bnNmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRTdHJpbmdIYXNoLmg+CiAj
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtOTAsNiArODksNyBAQCBjbGFzcyBQYWdlQ29u
ZmlndXJhdGlvbjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVnaXN0cmFibGVE
b21haW47CiBzdHJ1Y3QgTW9ja01lZGlhRGV2aWNlOwogfQogCkBAIC00OTQsNiArNDk0LDcgQEAg
cHVibGljOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lk
IGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBPcHRpb25TZXQ8V2ViQ29yZTo6Q3Jvc3NT
aXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHNlZWRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQ
YXJ0eURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlE
b21haW4sIGJvb2wgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAppbmRleCAxNWRjYWIyMmRkYjUwYjE2ZmE0ZjI1OGZlZGNiMjBlMmM2
YTNlYmIxLi4yZGY5ZDdmOTljOTA2MjM1NDFlNzU4MjZjMDUzYWY3OTdlNzRiYTAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcApAQCAtMTM2OSw2ICsxMzY5LDEwIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKGNvbnN0IFVSTCYgc3VicmVzb3VyY2VVUkws
CiAgICAgICAgICAgICBwcm9jZXNzLT5pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIobV9z
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgc3VicmVzb3VyY2VVUkwgfSwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB0b3BGcmFtZVVSTCB9LCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgICAgICAgICBBU1NFUlQocHJvY2Vzc1Bvb2xzKCkuc2l6ZSgp
ID09IDEpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTk2MSwx
MyArMTk2NSwxNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICAgICAgCiAgICAgICAgIHJlc29sdmVEaXJl
Y3Rvcmllc0lmTmVjZXNzYXJ5KCk7CiAgICAgICAgIAotICAgICAgICBmb3IgKGF1dG8mIHByb2Nl
c3NQb29sIDogcHJvY2Vzc1Bvb2xzKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCks
IGZhbHNlKSkKKyAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scyhz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBmYWxzZSkpIHsKICAgICAgICAgICAg
IHByb2Nlc3NQb29sLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OlNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKG1fc2Vzc2lvbklELCB0cnVl
KSk7CisgICAgICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCh0cnVlKSk7Cisg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGZvciAoYXV0byYgcHJvY2Vz
c1Bvb2wgOiBwcm9jZXNzUG9vbHMoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSwg
ZmFsc2UpKQorICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoc3RkOjpu
dW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSwgZmFsc2UpKSB7CiAgICAgICAgIHByb2Nlc3NQ
b29sLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKG1fc2Vzc2lvbklELCBmYWxzZSkpOworICAg
ICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChmYWxzZSkpOworICAgIH0KIAogICAg
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBmYWxzZTsKICNlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcAppbmRleCA5ZWQyYTA1OGJhMTRmMDY0Njg1MDZl
ZTM3MjEzYjEyMGIzYTNlNmVhLi5jZjdkMzhlZWMxYjNjMDFlZTJmY2IyZjlkYTk2OTQxOWU3MzM4
YTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKQEAgLTM1Niw2ICsz
NTYsMTkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9u
V2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdAogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZ0ZvclRlc3RpbmcoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiB0aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uKQor
eworICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JSZWdpc3RyYWJsZURvbWFpbih0aGlyZFBhcnR5RG9tYWluKTsKKyAgICBhdXRvIGxhc3RTZWVu
ID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6cmVkdWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWU6
Om5vdygpKTsKKyAgICB0YXJnZXRTdGF0aXN0aWNzLmxhc3RTZWVuID0gbGFzdFNlZW47CisgICAg
dGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zLmFkZChmaXJz
dFBhcnR5RG9tYWluKTsKKworICAgIGlmIChzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbikKKyAg
ICAgICAgc2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCgpOworICAgIGVsc2UKKyAgICAgICAg
bV9ub3RpZmljYXRpb25UaW1lci5zdG9wKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRP
YnNlcnZlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJl
c291cmNlTG9hZE9ic2VydmVyLmgKaW5kZXggZDZiOGQ4Nzc1ODc4YjRiNjhjNTE3NGE5OTQ4OGM5
MTNkYjRkMGFkYy4uZWRlMjUyMzU0YzU5NjI1OGY4MDI1NDRlNGRjNGJmNzQzMGE5YTcxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291
cmNlTG9hZE9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgbG9nQ2FudmFzV3JpdGVPck1lYXN1cmUoY29uc3QgV2ViQ29yZTo6RG9jdW1l
bnQmLCBjb25zdCBTdHJpbmcmIHRleHRXcml0dGVuKSBmaW5hbDsKICAgICB2b2lkIGxvZ05hdmln
YXRvckFQSUFjY2Vzc2VkKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6TmF2aWdhdG9yQVBJKSBmaW5hbDsKICAgICB2b2lkIGxv
Z1NjcmVlbkFQSUFjY2Vzc2VkKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6U2NyZWVuQVBJKSBmaW5hbDsKKyAgICB2b2lkIGxv
Z1N1YnJlc291cmNlTG9hZGluZ0ZvclRlc3RpbmcoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mIGZpcnN0UGFydHlEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiB0aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uKTsKIAog
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHN0YXRpYyB2b2lkIHNldFNob3VsZExvZ1Vz
ZXJJbnRlcmFjdGlvbihib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAppbmRleCBkMDAzYzBmNmY4YjlkMTlhODNhZGJlZGVlZjlkMDY2OGMwNDQ5MzlhLi4xOWFkYjM1
MTM5MjE4MTk4N2IwOTdiYTY4Y2I3OGYxM2I2ZWEyMjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00NTksNyArNDU5LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpz
ZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVy
cyYmIHAKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKHBh
cmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgJiYgIXBhcmFtZXRlcnMuc2Vz
c2lvbklELmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRT
aGFyZWQoKm5ldyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcik7CisgICAgICAgIFJlc291cmNlTG9h
ZE9ic2VydmVyOjpzZXRTaGFyZWQobmV3IFdlYlJlc291cmNlTG9hZE9ic2VydmVyKTsKICNlbmRp
ZgogCiAgICAgcmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoV1RGTW92ZShwYXJhbWV0
ZXJzLnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcykpOwpAQCAtNjcxLDYgKzY3MSwxMCBAQCB2
b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewog
ICAgIEFTU0VSVChtX3BhZ2VNYXAuY29udGFpbnMocGFnZUlEKSk7CiAKKyNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGZsdXNoUmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
OworI2VuZGlmCisKICAgICBwYWdlV2lsbExlYXZlV2luZG93KHBhZ2VJRCk7CiAgICAgbV9wYWdl
TWFwLnJlbW92ZShwYWdlSUQpOwogCkBAIC0xMzgzLDYgKzEzODcsMTAgQEAgdm9pZCBXZWJQcm9j
ZXNzOjpwcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQsIENvbXBsZXRp
b25IYW5kbGVyPHYKICAgICBTZXRGb3JTY29wZTxib29sPiBzdXNwZW5zaW9uU2NvcGUobV9pc1N1
c3BlbmRpbmcsIHRydWUpOwogICAgIG1fcHJvY2Vzc0lzU3VzcGVuZGVkID0gdHJ1ZTsKIAorI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgZmx1c2hSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKCk7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChtX3By
b2Nlc3NUeXBlID09IFByb2Nlc3NUeXBlOjpQcmV3YXJtZWRXZWJDb250ZW50KSB7CiAgICAgICAg
IFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzOjpwcmVwYXJl
VG9TdXNwZW5kKCkgUHJvY2VzcyBpcyByZWFkeSB0byBzdXNwZW5kIiwgdGhpcyk7CkBAIC0xNTUy
LDcgKzE1NjAsMTUgQEAgU3RvcmFnZUFyZWFNYXAqIFdlYlByb2Nlc3M6OnN0b3JhZ2VBcmVhTWFw
KFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSBjb24KIAogdm9pZCBXZWJQcm9jZXNz
OjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CisgICAg
aWYgKFdlYkNvcmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6cmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQoKSA9PSBlbmFibGVkIHx8IG1fc2Vzc2lvbklELT5pc0VwaGVtZXJhbCgpKQor
ICAgICAgICByZXR1cm47CiAgICAgV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpz
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKKyNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmIChlbmFibGVkKQorICAgICAgICBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U2hhcmVkKG5ldyBXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlcik7CisgICAgZWxzZQorICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c2V0U2hhcmVkKG51bGxwdHIpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkKQEAgLTE1NjMsNiArMTU3OSwyMyBAQCB2b2lkIFdlYlBy
b2Nlc3M6OmNsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpCiAjZW5kaWYKIH0KIAordm9pZCBX
ZWJQcm9jZXNzOjpmbHVzaFJlc291cmNlTG9hZFN0YXRpc3RpY3MoKQoreworI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgaWYgKGF1dG8qIG9ic2VydmVyID0gUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZElmRXhpc3RzKCkpCisgICAgICAgIG9ic2VydmVyLT51cGRh
dGVDZW50cmFsU3RhdGlzdGljc1N0b3JlKCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJQcm9jZXNz
OjpzZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIGZpcnN0UGFydHlEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBh
cnR5RG9tYWluLCBib29sIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKKyAgICBpZiAoYXV0byogb2JzZXJ2ZXIgPSBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkSWZFeGlzdHMoKSkKKyAgICAgICAgb2JzZXJ2ZXItPmxvZ1N1YnJlc291
cmNlTG9hZGluZ0ZvclRlc3RpbmcoZmlyc3RQYXJ0eURvbWFpbiwgdGhpcmRQYXJ0eURvbWFpbiwg
c2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24pOworI2VuZGlmCisgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKK30KKwogUmVmUHRyPEFQSTo6T2JqZWN0PiBXZWJQcm9jZXNzOjp0cmFuc2Zvcm1IYW5k
bGVzVG9PYmplY3RzKEFQSTo6T2JqZWN0KiBvYmplY3QpCiB7CiAgICAgc3RydWN0IFRyYW5zZm9y
bWVyIGZpbmFsIDogVXNlckRhdGE6OlRyYW5zZm9ybWVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCmluZGV4IDQ5ODAyMjM0OTYzMWE5ZGY5ZmNlMzE5NGU4NzI1ODhiOTM5YzQ4
NDIuLjE0Y2Q2YTcyMTRhYjE4MDNiYzQ0NWRkMmI5YTIyZjBjZjdhMmZiN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtODYsNiArODYsNyBAQCBjbGFzcyBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTsKIGNsYXNzIENQVU1vbml0b3I7CiBjbGFzcyBDZXJ0aWZpY2F0ZUlu
Zm87CiBjbGFzcyBQYWdlR3JvdXA7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKIGNsYXNzIFVzZXJHZXN0dXJlVG9rZW47CiBzdHJ1Y3QgQmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllcjsKQEAgLTM0Myw2ICszNDQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sKTsKICAgICB2b2lkIHNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKCk7CisgICAgdm9pZCBmbHVzaFJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICB2
b2lkIHNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2NoZWR1bGVOb3RpZmlj
YXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCB1c2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OwogICAgIHZv
aWQgZnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NF
bmFibGVkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCBiOWY5ZjYwZDBjN2E2MzZmN2MyOTRlYzg0MzczYmU5MzUwOWIwY2M2Li5h
NDk4NmM0MzkyZWNhYzNjYmE3MWZjZmZkYzI1OThmMGNjNDRiMGMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTYwLDQgKzE2MCw4
IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIFNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24oc3Ry
dWN0IFdlYktpdDo6VXNlck1lc3NhZ2UgdXNlck1lc3NhZ2UpCiAjZW5kaWYKKworI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgU2VlZFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGb3JUZXN0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4s
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxk
U2NoZWR1bGVOb3RpZmljYXRpb24pIC0+ICgpIEFzeW5jCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNjA3YzMxNTRjZDliNDgy
YzBlMTJjODM4MWUyMjZkNTFkMGJlZWIyLi5lYjMxYzRjZmEzYjZiMGZmOGFmZTNmZmEwNDI4ZjIx
NWU4Y2JjYjRhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMTAtMzAgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBGbHVzaCB0
aGUgc2hhcmVkIFJlc291cmNlTG9hZE9ic2VydmVyIHdoZW4gdGhlIHdlYnBhZ2UgaXMgY2xvc2Vk
IGJ5IEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMzYyMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY3NTY0Mjc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW06CisgICAgICAgIChU
RVNUKToKKwogMjAxOS0xMC0zMCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+
CiAKICAgICAgICAgU2ltdWxhdG9yIHRlc3RlcnMgYXJlIGZpbGxpbmcgdXAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5tbQppbmRleCBhZjY0NDg1Y2E2YTU0MDE3MzkzNzc2N2ZlZmViMWVkMzRl
MDkyZDJlLi5hNzIxZDI0YmUyZjdiZGZjN2I4MmQ2NjFhYmIxYjZiOTQ2NmQwMzQ1IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCkBAIC00ODQsMyArNDg0LDY2IEBAIFRFU1QoUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcywgTm9NZXNzYWdlc1doZW5Ob3RUZXN0aW5nKQogICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJdOwogICAgIEVYUEVDVF9G
QUxTRShbV0tXZWJzaXRlRGF0YVN0b3JlIF9kZWZhdWx0RGF0YVN0b3JlRXhpc3RzXSk7CiB9CisK
K1RFU1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgRmx1c2hPYnNlcnZlcldoZW5XZWJQYWdlSXND
bG9zZWRCeUphdmFTY3JpcHQpCit7CisgICAgYXV0byAqc2hhcmVkUHJvY2Vzc1Bvb2wgPSBbV0tQ
cm9jZXNzUG9vbCBfc2hhcmVkUHJvY2Vzc1Bvb2xdOworICAgIGF1dG8gKmRhdGFTdG9yZSA9IFtX
S1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CisKKyAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOiBzaGFyZWRQcm9jZXNzUG9vbF07Cisg
ICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gZGF0YVN0b3JlOworCisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKKworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiV2ViS2l0IFRlc3QiIGJh
c2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdXTsKKyAgICBb
d2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBbZGF0YVN0
b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpZRVNdOworCisgICAgc3RhdGlj
IGJvb2wgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9jbGVhclJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6Xih2b2lkKSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsK
KworICAgIHN0YXRpYyBib29sIHN0YXRpc3RpY3NVcGRhdGVkID0gZmFsc2U7CisgICAgW2RhdGFT
dG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpeKFdLV2Vic2l0
ZURhdGFTdG9yZSAqLCBOU1N0cmluZyAqbWVzc2FnZSkgeworICAgICAgICBpZiAoIVttZXNzYWdl
IGlzRXF1YWxUb1N0cmluZzpAIlN0YXRpc3RpY3MgVXBkYXRlZCJdKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBzdGF0aXN0aWNzVXBkYXRlZCA9IHRydWU7CisgICAgfV07CisKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAgIC8vIFNlZWQgdGVzdCBk
YXRhIGluIHRoZSB3ZWIgcHJvY2Vzcycgb2JzZXJ2ZXIuCisgICAgZG9uZUZsYWcgPSBmYWxzZTsK
KyAgICBbc2hhcmVkUHJvY2Vzc1Bvb2wgX3NlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVz
dGluZ1dpdGhGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5v
cmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwuY29tIl0g
c2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb246Tk8gY29tcGxldGlvbkhhbmRsZXI6IF4oKSB7Cisg
ICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICAKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAgIC8vIENoZWNrIHRoYXQgdGhlIHRoaXJkLXBh
cnR5IGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZC4KKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtk
YXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0UGFydHk6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbC5jb20iXSBjb21wbGV0aW9uSGFuZGxlcjogXihCT09M
IGlzUmVnaXN0ZXJlZCkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoaXNSZWdpc3RlcmVkKTsKKyAg
ICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICBzdGF0aXN0aWNzVXBkYXRlZCA9IGZhbHNlOworICAg
IFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGJvZHk+PHNjcmlwdD5jbG9zZSgpOzwvc2NyaXB0
PjwvYm9keT4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9y
ZyJdXTsKKworICAgIC8vIFdhaXQgZm9yIHRoZSBzdGF0aXN0aWNzIHRvIGJlIHVwZGF0ZWQgaW4g
dGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnN0YXRp
c3RpY3NVcGRhdGVkKTsKKworICAgIC8vIENoZWNrIHRoYXQgdGhlIHRoaXJkLXBhcnR5IGlzIG5v
dyByZWdpc3RlcmVkLgorICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfaXNS
ZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyRmlyc3RQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImh0dHA6Ly93ZWJraXQub3JnIl0gdGhpcmRQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHA6Ly9ldmlsLmNvbSJdIGNvbXBsZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVk
KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFn
ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZs
YWcpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382363</attachid>
            <date>2019-10-30 15:10:10 -0700</date>
            <delta_ts>2019-10-30 16:18:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203623-20191030151009.patch</filename>
            <type>text/plain</type>
            <size>31503</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODQyNWY1YzhiNjAwYzQ1
ZTEwZDAwNGY3YjVjYWMzMDIzZWJkZDQzNS4uMzNkODViMGY1MDlmNDgxNzFmN2FmNjMzYTVhNGE1
YzJjNWRlMTFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE5LTEwLTMwICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogRmx1c2ggdGhlIHNoYXJlZCBSZXNvdXJjZUxvYWRPYnNlcnZlciB3aGVuIHRo
ZSB3ZWJwYWdlIGlzIGNsb3NlZCBieSBKYXZhU2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM2MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU2NzU2NDI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5ldyBBUEkgdGVzdCBhZGRlZC4KKworICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRP
YnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0
U2hhcmVkKToKKyAgICAgICAgICAgIFJlbW92ZWQgdGhlIHJlbGVhc2UgYXNzZXJ0IHNpbmNlIG5v
dyBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUgbWF5IHNldAorICAgICAgICAgICAgdGhlIHNoYXJl
ZCBvYnNlcnZlciBhdCBydW50aW1lIHdoZW4gdGhlcmUgaXMgcG9zc2libHkgYW4gZXhpc3Rpbmcg
ZHVtbXkuCisgICAgICAgICAgICBUaGlzIG5vdyB0YWtlcyBhIHBvaW50ZXIgcGFyYW1ldGVyLgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZElmRXhpc3RzKToK
KyAgICAgICAgICAgIENoYW5nZWQgcmV0dXJuIHR5cGUgdG8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXIq
Ji4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpkZWxldGVTaGFyZWQp
OgorICAgICAgICAgICAgVXNlZCB3aGVuIGEgbmV3IG9ic2VydmVyIGlzIHNldCBhbmQgYW4gZWFy
bGllciBvbmUgZXhpc3RzLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNl
TG9hZGluZ0ZvclRlc3RpbmcpOgorICAgICAgICAgICAgVGVzdCBmdW5jdGlvbiB0byBzZWVkIHRo
ZSB3ZWIgcHJvY2Vzcycgb2JzZXJ2ZXIuCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpjbG9zZSk6CisgICAgICAgICAgICBOb3cgZmx1
c2hlcyB0aGUgc2hhcmVkIG9ic2VydmVyLgorCiAyMDE5LTEwLTMwICBaYWxhbiBCdWp0YXMgIDx6
YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogIW9iamVjdCB8fCAh
aXNSdWJ5KG9iamVjdC0+cGFyZW50KCkpIHx8IGlzPFJlbmRlclJ1YnlSdW4+KCpvYmplY3QpIHx8
IChvYmplY3QtPmlzSW5saW5lKCkgJiYgKG9iamVjdC0+aXNCZWZvcmVDb250ZW50KCkgfHwgb2Jq
ZWN0LT5pc0FmdGVyQ29udGVudCgpKSkgfHwgKG9iamVjdC0+aXNBbm9ueW1vdXMoKSAmJiBpczxS
ZW5kZXJCbG9jaz4oKm9iamVjdCkgJiYgb2JqZWN0LT5zdHlsZSgpLmRpc3BsYXkoKSA9PSBECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGVhOTVjMTA2NzA1MTI2ZTE5NjVmNjkwNGQwYjUxZDFkZjU1NDc1ZTguLmY4ODRm
NWEwYzRjNzQzMTg5MjZkNjg0NDFiNjMyODk1ZWI4NWUwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTQgQEAKKzIwMTktMTAtMzAgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBGbHVzaCB0aGUgc2hhcmVkIFJlc291
cmNlTG9hZE9ic2VydmVyIHdoZW4gdGhlIHdlYnBhZ2UgaXMgY2xvc2VkIGJ5IEphdmFTY3JpcHQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzYyMwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY3NTY0Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGZsdXNoaW5nIG9mIHBl
bmRpbmcgc3RhdGlzdGljcyB3aGVuIGEgd2luZG93IGlzIGNsb3NlZCBieSBKYXZhU2NyaXB0LAor
ICAgICAgICB3aGVuIGEgd2VicGFnZSBpcyByZW1vdmVkIGZyb20gdGhlIHdlYiBwcm9jZXNzLCBh
bmQgd2hlbiB0aGUgd2ViIHByb2Nlc3MgcHJlcGFyZXMgdG8KKyAgICAgICAgc3VzcGVuZC4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCk6CisgICAgICAgICAgICBOb3cg
Y2FsbHMgbG9nVGVzdGluZ0V2ZW50KCkgc28gdGhhdCB0aGUgdGVzdCBpbmZyYXN0cnVjdHVyZSBj
YW4gd2FpdCBmb3IgdXBkYXRlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NlZWRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRm9yVGVzdGluZ1dpdGhGaXJzdFBhcnR5OnRoaXJkUGFydHk6c2hvdWxkU2NoZWR1
bGVOb3RpZmljYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICAgICBUZXN0IGlu
ZnJhc3RydWN0dXJlIHRvIHNlZWQgZXZlcnkgd2ViIHByb2Nlc3MnIFdlYkNvcmU6OlJlc291cmNl
TG9hZE9ic2VydmVyIHdpdGggdGVzdCBkYXRhLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9j
bGVhclJlc291cmNlTG9hZFN0YXRpc3RpY3M6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFT
dG9yZSBfaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyRmlyc3RQYXJ0eTp0aGlyZFBhcnR5
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JUZXN0aW5n
KToKKyAgICAgICAgICAgIFRlc3QgaW5mcmFzdHJ1Y3R1cmUuCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjppc1Jl
Z2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIpOgorICAgICAgICAgICAgTWFkZSBzdXJlIHRoZSBj
b21wbGV0aW9uIGhhbmRsZXIgaXMgY2FsbGVkIGV2ZW4gaWYgdGhlcmUgaXMgbm8gbmV0d29yayBw
cm9jZXNzLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZCk6CisgICAgICAgICAgICBOb3cgdGVsbHMgYWxsIHdlYiBwcm9j
ZXNzZXMgdG8gdHVybiBJVFAgb24gb3Igb2ZmLiAgICAgICAgICAgIAorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5n
Rm9yVGVzdGluZyk6CisgICAgICAgICAgICBUZXN0IGluZnJhc3RydWN0dXJlIHRvIHNlZWQgdGhl
IG9ic2VydmVyIHdpdGggdGVzdCBkYXRhLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCk6CisgICAg
ICAgICAgICBUaGVzZSBmdW5jdGlvbnMgbm93IGNhbGwgV2ViUHJvY2Vzczo6Zmx1c2hSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToKKyAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gbm93
IHNldHMgdGhlIHByb2Nlc3MnIHNoYXJlZCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlci4K
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Zmx1c2hSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KToKKyAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gdGVsbHMgdGhlIHNoYXJlZCBXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRPYnNlcnZlciB0byBzZW5kIGFueSBwZW5kaW5nCisgICAgICAgICAgICBzdGF0
aXN0aWNzIHRvIHRoZSBjZW50cmFsIElUUCBzdG9yZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6c2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JUZXN0aW5nKToKKyAgICAgICAgICAg
IFRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gc2VlZCB0aGUgc2hhcmVkIG9ic2VydmVyIHdpdGggdGVz
dCBkYXRhLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxOS0xMC0zMCAgQW5kcmVzIEdv
bnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgQ3JlYXRlIGJhc2UgY2xh
c3MgY29tbW9uIHRvIEFjY2Vzc2liaWxpdHlPYmplY3QgYW5kIEFYSXNvbGF0ZWRUcmVlTm9kZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4
IGUxNjU2MzdlYTMzM2JhZWQ5YmY1OWZmNjAyMTdkODkxYTg0MDJkMzYuLjlhYmRlZjk0N2YxZDIx
YmUyY2QwNjJlNWZkOTJmZjBiN2E3OTIzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBAIHN0YXRpYyBSZXNv
dXJjZUxvYWRPYnNlcnZlciomIHNoYXJlZE9ic2VydmVyKCkKICAgICByZXR1cm4gb2JzZXJ2ZXI7
CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFNoYXJlZChSZXNvdXJjZUxvYWRP
YnNlcnZlciYgb2JzZXJ2ZXIpCit2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTaGFyZWQo
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIqIG9ic2VydmVyKQogewotICAgIFJFTEVBU0VfQVNTRVJUKCFz
aGFyZWRPYnNlcnZlcigpKTsKLSAgICBzaGFyZWRPYnNlcnZlcigpID0gJm9ic2VydmVyOworICAg
IGRlbGV0ZVNoYXJlZCgpOworICAgIHNoYXJlZE9ic2VydmVyKCkgPSBvYnNlcnZlcjsKIH0KIAog
UmVzb3VyY2VMb2FkT2JzZXJ2ZXImIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKQpAQCAt
NDcsOSArNDcsMTcgQEAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXImIFJlc291cmNlTG9hZE9ic2VydmVy
OjpzaGFyZWQoKQogICAgIHJldHVybiAqc2hhcmVkT2JzZXJ2ZXIoKTsKIH0KIAotUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIqIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRJZkV4aXN0cygpCitSZXNv
dXJjZUxvYWRPYnNlcnZlciomIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRJZkV4aXN0cygp
CiB7CiAgICAgcmV0dXJuIHNoYXJlZE9ic2VydmVyKCk7CiB9CiAKK3ZvaWQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OmRlbGV0ZVNoYXJlZCgpCit7CisgICAgaWYgKGF1dG8qJiBvYnNlcnZlciA9IHNo
YXJlZElmRXhpc3RzKCkpIHsKKyAgICAgICAgZGVsZXRlIG9ic2VydmVyOworICAgICAgICBvYnNl
cnZlciA9IG51bGxwdHI7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IGU3NGQ1ZjY2
ZmFkMWU3OTcyYmVlYTE5ODY4OGViZmU3MmRiYjQyODkuLmUwZjQ3NTJjYTA1NDQwZGE4MTY5ODZi
OTg1MTVkMjQxYTViNTBmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRPYnNlcnZlci5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIFJlc291cmNlTG9hZE9ic2VydmVy
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVzb3VyY2VMb2FkT2JzZXJ2ZXImIHNoYXJlZCgpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZXNvdXJjZUxvYWRPYnNlcnZlciogc2hhcmVkSWZFeGlzdHMoKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTaGFyZWQoUmVzb3VyY2VMb2FkT2JzZXJ2
ZXImKTsKLSAgICAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIqJiBzaGFyZWRJZkV4aXN0cygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNl
dFNoYXJlZChSZXNvdXJjZUxvYWRPYnNlcnZlciopOworCiAgICAgdmlydHVhbCB+UmVzb3VyY2VM
b2FkT2JzZXJ2ZXIoKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRp
bmcoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIC8qIG5ld1JlcXVlc3QgKi8s
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIC8qIHJlZGlyZWN0UmVzcG9uc2UgKi8pIHsgfQpAQCAt
NTIsMTIgKzUyLDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9nQ2FudmFzV3JpdGVP
ck1lYXN1cmUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIC8qIHRleHRXcml0dGVuICov
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9nTmF2aWdhdG9yQVBJQWNjZXNzZWQoY29uc3QgRG9j
dW1lbnQmLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpOYXZpZ2F0b3JBUEkpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBsb2dTY3JlZW5BUElBY2Nlc3NlZChjb25zdCBEb2N1bWVudCYsIGNv
bnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OlNjcmVlbkFQSSkgeyB9CisgICAgdmlydHVhbCB2
b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZ0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIC8qIGZpcnN0UGFydHlEb21haW4gKi8sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiAvKiB0
aGlyZFBhcnR5RG9tYWluICovLCBib29sIC8qIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uICov
KSB7IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIHN0YXRpc3RpY3NGb3JVUkwoY29uc3QgVVJMJikg
eyByZXR1cm4geyB9OyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNz
U3RvcmUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTdGF0ZSgpIHsgfQogICAgIAogICAg
IHZpcnR1YWwgYm9vbCBoYXNTdGF0aXN0aWNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwor
cHJpdmF0ZToKKyAgICBzdGF0aWMgdm9pZCBkZWxldGVTaGFyZWQoKTsKIH07CiAgICAgCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggYzcwZjMz
NzVjZjI4NzliNTA3OGU4NzA0YmM0N2QyYzRjNDMzNTRmMS4uNThhZTQzODI1ZWY2YzUwOTBjNWIx
ODExZWJjNTRlMjQxZjY4YjllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTAz
OSw2ICsxMDM5LDggQEAgdm9pZCBET01XaW5kb3c6OmNsb3NlKERvY3VtZW50JiBkb2N1bWVudCkK
IAogdm9pZCBET01XaW5kb3c6OmNsb3NlKCkKIHsKKyAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c2hhcmVkKCkudXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSgpOworCiAgICAgYXV0byogZnJh
bWUgPSB0aGlzLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggZGNi
ZGQ4ODM1MjU0YWVkZjE4ZDE0MjJjNTRlMGNiNzE1ZTdlNWJjZS4uOGQxMDI4ZmMxZjUwOGYzMGFk
MGFmNzg0YzYyOGM3ZjhmYjk0ZGI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTI4Myw3ICsyODMsMTEgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3Rv
cjxSZXNvdXIKICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmNhbmNlbFBlbmRpbmdTdGF0aXN0
aWNzUHJvY2Vzc2luZ1JlcXVlc3QoKTsKIAogICAgICAgICAvLyBGaXJlIGJlZm9yZSBwcm9jZXNz
aW5nIHN0YXRpc3RpY3MgdG8gcHJvcGFnYXRlIHVzZXIgaW50ZXJhY3Rpb24gYXMgZmFzdCBhcyBw
b3NzaWJsZSB0byB0aGUgbmV0d29yayBwcm9jZXNzLgotICAgICAgICBtX3N0YXRpc3RpY3NTdG9y
ZS0+dXBkYXRlQ29va2llQmxvY2tpbmcoW10oKSB7IH0pOworICAgICAgICBtX3N0YXRpc3RpY3NT
dG9yZS0+dXBkYXRlQ29va2llQmxvY2tpbmcoW3RoaXNdKCkgeworICAgICAgICAgICAgcG9zdFRh
c2tSZXBseShbdGhpc10oKSB7CisgICAgICAgICAgICAgICAgbG9nVGVzdGluZ0V2ZW50KCJTdGF0
aXN0aWNzIFVwZGF0ZWQiX3MpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogICAgICAg
ICBtX3N0YXRpc3RpY3NTdG9yZS0+cHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwog
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbQppbmRleCAwYjgxMGI1ZmFlMGUxYWNhNTEwM2I4NTQxOTFiMDQyYTkxMzk5
Y2VhLi4zNDgzMmIxMmQ2OWE1NDA5NzRkZTQ0M2M1ZjRiYjI0ZTMzMGI4MmFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAt
NDksNiArNDksNyBAQAogI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uSW50ZXJu
YWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1BsdWdpbkRhdGEuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4K
ICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CkBAIC02
NTMsNCArNjU0LDE4IEBAIC0gKHZvaWQpX2FsbG93QW55VExTQ2VydGlmaWNhdGVGb3JXZWJTb2Nr
ZXRUZXN0aW5nCiAgICAgX3Byb2Nlc3NQb29sLT5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZv
cldlYlNvY2tldCh0cnVlKTsKIH0KIAorLSAodm9pZClfc2VlZFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6KE5TVVJMICopZmlyc3RQYXJ0eVVSTCB0aGlyZFBh
cnR5OihOU1VSTCAqKXRoaXJkUGFydHlVUkwgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb246KEJP
T0wpc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQorICAgIF9wcm9jZXNzUG9vbC0+c2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JU
ZXN0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgZmlyc3RQYXJ0eVVSTCB9LCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHRoaXJkUGFydHlVUkwgfSwgc2hvdWxkU2NoZWR1bGVO
b3RpZmljYXRpb24sIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildICgpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHlVUkwpOworICAgIFVOVVNFRF9QQVJBTSh0
aGlyZFBhcnR5VVJMKTsKKyAgICBVTlVTRURfUEFSQU0oc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRp
b24pOworICAgIFVOVVNFRF9QQVJBTShjb21wbGV0aW9uSGFuZGxlcik7CisjZW5kaWYKK30KKwog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCAzYTgxZDU5OTk5ZGNjOTk5ZjEzOTNjYzMyOTZiOWJl
YTYwNTJiYmUyLi4xMzAzNWNhNmViMjlmZjJiN2ExZmRmNzUyOWE5ZDkwZGE5YjUxYTRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbFByaXZhdGUuaApAQCAtMTMyLDQgKzEzMiw3IEBACiBAcHJvcGVydHkgKG5vbmF0b21pYywg
Z2V0dGVyPV9pc1N0b3JhZ2VBY2Nlc3NBUElFbmFibGVkLCBzZXR0ZXI9X3NldFN0b3JhZ2VBY2Nl
c3NBUElFbmFibGVkOikgQk9PTCBfc3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0gKHZvaWQpX3N5bnRoZXNpemVBcHBJ
c0JhY2tncm91bmQ6KEJPT0wpYmFja2dyb3VuZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCisvLyBUZXN0IG9ubHkuCistICh2b2lkKV9zZWVk
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmdXaXRoRmlyc3RQYXJ0eTooTlNVUkwgKilm
aXJzdFBhcnR5VVJMIHRoaXJkUGFydHk6KE5TVVJMICopdGhpcmRQYXJ0eVVSTCBzaG91bGRTY2hl
ZHVsZU5vdGlmaWNhdGlvbjooQk9PTClzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbiBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciAgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW0KaW5kZXggNjE0MmYwYjc4MWNmNDE1YTA3ZjA4OTlkYjhjYzk3YmFhOGU0YWFkOC4uYWQw
YjczMWZiOWJhYzg3Njg2YzQ2ZjAzZmE5MTA5YzdkZmExNjRmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJBUElTdHJpbmcuaCIKICNpbXBvcnQgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oIgogI2ltcG9ydCAiQ29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlci5oIgorI2ltcG9ydCAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNz
LmgiCiAjaW1wb3J0ICJXS0hUVFBDb29raWVTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS05T
QXJyYXkuaCIKICNpbXBvcnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgpAQCAt
NDk1LDYgKzQ5NiwyOCBAQCAtICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFpbjooTlNVUkwgKilk
b21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKQogI2VuZGlmCiB9CiAKKy0g
KHZvaWQpX2NsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljczoodm9pZCAoXikodm9pZCkpY29tcGxl
dGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAg
IF93ZWJzaXRlRGF0YVN0b3JlLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdl
YktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpObywgW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgfSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cisj
ZW5kaWYKK30KKworLSAodm9pZClfaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyRmlyc3RQ
YXJ0eTooTlNVUkwgKilmaXJzdFBhcnR5VVJMIHRoaXJkUGFydHk6KE5TVVJMICopdGhpcmRQYXJ0
eVVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIK
K3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT5pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIodGhpcmRQYXJ0eVVSTCwgZmly
c3RQYXJ0eVVSTCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0oYm9vbCBlbmFibGVkKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVuYWJs
ZWQpOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihOTyk7CisjZW5kaWYK
K30KKwogLSAodm9pZClfcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkczoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKaW5kZXggMDRlM2M3ODFjZDUxMjE5NzA4
MmM5YTU2YmY0ZGEzYTQxZTM5MzMyOS4uMzFiODBhYjQyNTEyZjVkNmIwNGNiNzQzZmJmNjIzNTMx
N2VhNzkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC03MCw3ICs3MCw5IEBAIHR5
cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRp
b25zKSB7CiAtICh2b2lkKV9zY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlOih2b2lkICheKSh2
b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfc2V0UHJldmFsZW50RG9tYWluOihOU1VSTCAq
KWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRs
ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
IC0gKHZvaWQpX2dldElzUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZvaWQpX2NsZWFyUHJl
dmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFpbjoo
TlNVUkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CistICh2b2lkKV9jbGVhclJlc291cmNlTG9hZFN0YXRpc3RpY3M6KHZvaWQgKF4pKHZv
aWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5k
ZXJGaXJzdFBhcnR5OihOU1VSTCAqKWZpcnN0UGFydHlVUkwgdGhpcmRQYXJ0eTooTlNVUkwgKil0
aGlyZFBhcnR5VVJMIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MKSljb21wbGV0aW9u
SGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogLSAodm9pZClfcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkczoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQHByb3BlcnR5IChudWxsYWJsZSwgbm9uYXRvbWljLCB3
ZWFrKSBpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiBfZGVsZWdhdGUgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCAyM2FjNmU0OTdmYWU3M2RhMjdh
YzJlZjU2NTBiYmU0ZjI5OTZkM2IwLi4yZjgzMDk2MzVkYTRmMTdhN2I3Yjk4N2QxM2RmNDJiMzhj
Y2YxOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBA
IC04OCwxMCArODgsMTIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UHJvY2Vzc1dhcm1pbmcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYXRpb25EYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3Rm
L0NhbGxiYWNrQWdncmVnYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBA
IC0yMzQxLDYgKzIzNDMsMTggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkQ29tbWl0Q3Jvc3NT
aXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKIAogICAgIG1fbmV0
d29ya1Byb2Nlc3MtPmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKHNlc3Np
b25JRCwgZnJvbURvbWFpbiwgdG9Eb21haW4sIG5hdmlnYXRpb25EYXRhVHJhbnNmZXIsIHdlYlBh
Z2VQcm94eUlELCB3ZWJQYWdlSUQpOwogfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZWVkUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZp
cnN0UGFydHlEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWlu
LCBib29sIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisKKyAgICBmb3IgKGF1dG8qIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nl
c3NQb29scygpKSB7CisgICAgICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NQb29sLT5w
cm9jZXNzZXMoKSkgeworICAgICAgICAgICAgaWYgKHByb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkp
CisgICAgICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpTZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoZmlyc3RQYXJ0
eURvbWFpbiwgdGhpcmRQYXJ0eURvbWFpbiwgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24pLCBb
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsK
KyAgICAgICAgfQorICAgIH0KK30KICNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRX
ZWJQcm9jZXNzSGFzVXBsb2FkcyhQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA4ZGEwYjE3MjU5ZjY0ZTBjNDNi
MDNhOTEyMDdmOWVjYTQyZDJmODlhLi45MGI2MGYwN2E2MjVjNTVkMWRjYWJjOTQ5NzE3MzA2Nzlj
ZTc5Njk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTQ1
LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Dcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Qcm9jZXNzSWRlbnRpZmllci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2hhcmVkU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
QEAgLTkwLDYgKzg5LDcgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiB9CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogc3RydWN0IE1vY2tNZWRpYURl
dmljZTsKIH0KIApAQCAtNDk0LDYgKzQ5NCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0
aERhdGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mIGZyb21Eb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b0Rv
bWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6
OkZsYWc+LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7
CisgICAgdm9pZCBzZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3VsZFNjaGVkdWxl
Tm90aWZpY2F0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMTVk
Y2FiMjJkZGI1MGIxNmZhNGYyNThmZWRjYjIwZTJjNmEzZWJiMS4uMmRmOWQ3Zjk5YzkwNjIzNTQx
ZTc1ODI2YzA1M2FmNzk3ZTc0YmEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTEzNjksNiArMTM2
OSwxMCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VV
bmRlcihjb25zdCBVUkwmIHN1YnJlc291cmNlVVJMLAogICAgICAgICAgICAgcHJvY2Vzcy0+aXNS
ZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB7IHN1YnJlc291cmNlVVJMIH0sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHsgdG9wRnJhbWVVUkwgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAg
ICAgQVNTRVJUKHByb2Nlc3NQb29scygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE5NjEsMTMgKzE5NjUsMTcgQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQp
CiAgICAgICAgIAogICAgICAgICByZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOwogICAg
ICAgICAKLSAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scyhzdGQ6
Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBmYWxzZSkpCisgICAgICAgIGZvciAoYXV0
byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSwgZmFsc2UpKSB7CiAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvTmV0d29y
a2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZChtX3Nlc3Npb25JRCwgdHJ1ZSkpOworICAgICAgICAgICAgcHJvY2Vzc1Bv
b2wtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQodHJ1ZSkpOworICAgICAgICB9CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKHN0ZDo6
bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIGZhbHNlKSkKKyAgICBmb3IgKGF1dG8mIHBy
b2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4
KCksIGZhbHNlKSkgewogICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nl
c3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChtX3Nlc3Npb25JRCwgZmFsc2UpKTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb0Fs
bFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQoZmFsc2UpKTsKKyAgICB9CiAKICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkID0gZmFsc2U7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5j
cHAKaW5kZXggOWVkMmEwNThiYTE0ZjA2NDY4NTA2ZWUzNzIxM2IxMjBiM2EzZTZlYS4uY2Y3ZDM4
ZWVjMWIzYzAxZWUyZmNiMmY5ZGE5Njk0MTllNzMzOGEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC0zNTYsNiArMzU2LDE5IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24o
Y29uc3QKICNlbmRpZgogfQogCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJy
ZXNvdXJjZUxvYWRpbmdGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGhpcmRQYXJ0eURvbWFpbiwgYm9v
bCBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbikKK3sKKyAgICBhdXRvJiB0YXJnZXRTdGF0aXN0
aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4odGhpcmRQ
YXJ0eURvbWFpbik7CisgICAgYXV0byBsYXN0U2VlbiA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6
OnJlZHVjZVRpbWVSZXNvbHV0aW9uKFdhbGxUaW1lOjpub3coKSk7CisgICAgdGFyZ2V0U3RhdGlz
dGljcy5sYXN0U2VlbiA9IGxhc3RTZWVuOworICAgIHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lRG9tYWlucy5hZGQoZmlyc3RQYXJ0eURvbWFpbik7CisKKyAgICBpZiAo
c2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24pCisgICAgICAgIHNjaGVkdWxlTm90aWZpY2F0aW9u
SWZOZWVkZWQoKTsKKyAgICBlbHNlCisgICAgICAgIG1fbm90aWZpY2F0aW9uVGltZXIuc3RvcCgp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4
IGQ2YjhkODc3NTg3OGI0YjY4YzUxNzRhOTk0ODhjOTEzZGI0ZDBhZGMuLmVkZTI1MjM1NGM1OTYy
NThmODAyNTQ0ZTRkYzRiZjc0MzBhOWE3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNl
cnZlci5oCkBAIC00Niw2ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvZ0NhbnZhc1dyaXRl
T3JNZWFzdXJlKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgU3RyaW5nJiB0ZXh0V3Jp
dHRlbikgZmluYWw7CiAgICAgdm9pZCBsb2dOYXZpZ2F0b3JBUElBY2Nlc3NlZChjb25zdCBXZWJD
b3JlOjpEb2N1bWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6Ok5h
dmlnYXRvckFQSSkgZmluYWw7CiAgICAgdm9pZCBsb2dTY3JlZW5BUElBY2Nlc3NlZChjb25zdCBX
ZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6
OlNjcmVlbkFQSSkgZmluYWw7CisgICAgdm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRpbmdGb3JUZXN0
aW5nKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdGhpcmRQYXJ0eURvbWFpbiwgYm9vbCBz
aG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbik7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
ICAgICBzdGF0aWMgdm9pZCBzZXRTaG91bGRMb2dVc2VySW50ZXJhY3Rpb24oYm9vbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZDAwM2MwZjZmOGI5ZDE5YTgz
YWRiZWRlZWY5ZDA2NjhjMDQ0OTM5YS4uMTlhZGIzNTEzOTIxODE5ODdiMDk3YmE2OGNiNzhmMTNi
NmVhMjIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNDU5
LDcgKzQ1OSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMoV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMmJiBwCiAKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmIChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkICYmICFwYXJhbWV0ZXJzLnNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQotICAg
ICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U2hhcmVkKCpuZXcgV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIpOworICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U2hhcmVkKG5ldyBX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlcik7CiAjZW5kaWYKIAogICAgIHJlc2V0UGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaGVzKFdURk1vdmUocGFyYW1ldGVycy5wbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoZXMpKTsKQEAgLTY3MSw2ICs2NzEsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQ
YWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBBU1NFUlQobV9wYWdlTWFwLmNvbnRh
aW5zKHBhZ2VJRCkpOwogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAg
ICBmbHVzaFJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyNlbmRpZgorCiAgICAgcGFnZVdpbGxM
ZWF2ZVdpbmRvdyhwYWdlSUQpOwogICAgIG1fcGFnZU1hcC5yZW1vdmUocGFnZUlEKTsKIApAQCAt
MTM4Myw2ICsxMzg3LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29s
IGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2CiAgICAgU2V0Rm9yU2Nv
cGU8Ym9vbD4gc3VzcGVuc2lvblNjb3BlKG1faXNTdXNwZW5kaW5nLCB0cnVlKTsKICAgICBtX3By
b2Nlc3NJc1N1c3BlbmRlZCA9IHRydWU7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQorICAgIGZsdXNoUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworI2VuZGlmCisKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobV9wcm9jZXNzVHlwZSA9PSBQcm9jZXNzVHlwZTo6
UHJld2FybWVkV2ViQ29udGVudCkgewogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIiVwIC0gV2ViUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCgpIFByb2Nlc3MgaXMgcmVh
ZHkgdG8gc3VzcGVuZCIsIHRoaXMpOwpAQCAtMTU1Miw3ICsxNTYwLDE1IEBAIFN0b3JhZ2VBcmVh
TWFwKiBXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRl
bnRpZmllcikgY29uCiAKIHZvaWQgV2ViUHJvY2Vzczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQoYm9vbCBlbmFibGVkKQogeworICAgIGlmIChXZWJDb3JlOjpEZXByZWNhdGVkR2xv
YmFsU2V0dGluZ3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgPT0gZW5hYmxlZCB8
fCBtX3Nlc3Npb25JRC0+aXNFcGhlbWVyYWwoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIFdlYkNv
cmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoZW5hYmxlZCk7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAg
ICBpZiAoZW5hYmxlZCkKKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNl
dFNoYXJlZChuZXcgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIpOworICAgIGVsc2UKKyAgICAgICAg
V2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFNoYXJlZChudWxscHRyKTsKKyNlbmRp
ZgogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmNsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpCkBA
IC0xNTYzLDYgKzE1NzksMjMgQEAgdm9pZCBXZWJQcm9jZXNzOjpjbGVhclJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKQogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6Zmx1c2hSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQor
ICAgIGlmIChhdXRvKiBvYnNlcnZlciA9IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRJZkV4
aXN0cygpKQorICAgICAgICBvYnNlcnZlci0+dXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSgp
OworI2VuZGlmCit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6c2VlZFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGhpcmRQYXJ0eURvbWFpbiwgYm9vbCBzaG91bGRTY2hl
ZHVsZU5vdGlmaWNhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgaWYg
KGF1dG8qIG9ic2VydmVyID0gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZElmRXhpc3RzKCkp
CisgICAgICAgIG9ic2VydmVyLT5sb2dTdWJyZXNvdXJjZUxvYWRpbmdGb3JUZXN0aW5nKGZpcnN0
UGFydHlEb21haW4sIHRoaXJkUGFydHlEb21haW4sIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9u
KTsKKyNlbmRpZgorICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKIFJlZlB0cjxBUEk6Ok9i
amVjdD4gV2ViUHJvY2Vzczo6dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyhBUEk6Ok9iamVjdCog
b2JqZWN0KQogewogICAgIHN0cnVjdCBUcmFuc2Zvcm1lciBmaW5hbCA6IFVzZXJEYXRhOjpUcmFu
c2Zvcm1lciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA0OTgwMjIz
NDk2MzFhOWRmOWZjZTMxOTRlODcyNTg4YjkzOWM0ODQyLi4xNGNkNmE3MjE0YWIxODAzYmM0NDVk
ZDJiOWEyMmYwY2Y3YTJmYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
QEAgLTg2LDYgKzg2LDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CiBjbGFzcyBD
UFVNb25pdG9yOwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgUGFnZUdyb3VwOworY2xh
c3MgUmVnaXN0cmFibGVEb21haW47CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBVc2Vy
R2VzdHVyZVRva2VuOwogc3RydWN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CkBAIC0zNDMs
NiArMzQ0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmco
Ym9vbCk7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sKTsK
ICAgICB2b2lkIGNsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIHZvaWQgZmx1c2hS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgdm9pZCBzZWVkUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZvclRlc3RpbmcoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFy
dHlEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9t
YWluLCBib29sIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgdXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoY29uc3Qg
VmVjdG9yPFN0cmluZz4mKSBjb25zdDsKICAgICB2b2lkIGZ1bGxLZXlib2FyZEFjY2Vzc01vZGVD
aGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYjlmOWY2MGQwYzdh
NjM2ZjdjMjk0ZWM4NDM3M2JlOTM1MDliMGNjNi4uYTQ5ODZjNDM5MmVjYWMzY2JhNzFmY2ZmZGMy
NTk4ZjBjYzQ0YjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KQEAgLTE2MCw0ICsxNjAsOCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIHsKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAg
ICBTZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uKHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNzYWdlIHVz
ZXJNZXNzYWdlKQogI2VuZGlmCisKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQorICAgIFNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBmaXJzdFBhcnR5RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biB0aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uKSAtPiAo
KSBBc3luYworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggYTYwN2MzMTU0Y2Q5YjQ4MmMwZTEyYzgzODFlMjI2ZDUxZDBiZWViMi4u
ZWIzMWM0Y2ZhM2I2YjBmZjhhZmUzZmZhMDQyOGYyMTVlOGNiY2I0YSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5
LTEwLTMwICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJl
c291cmNlIExvYWQgU3RhdGlzdGljczogRmx1c2ggdGhlIHNoYXJlZCBSZXNvdXJjZUxvYWRPYnNl
cnZlciB3aGVuIHRoZSB3ZWJwYWdlIGlzIGNsb3NlZCBieSBKYXZhU2NyaXB0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM2MjMKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzU2NzU2NDI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMTktMTAtMzAgIEpvbmF0
aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXVsYXRvciB0ZXN0
ZXJzIGFyZSBmaWxsaW5nIHVwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0KaW5kZXggYWY2
NDQ4NWNhNmE1NDAxNzM5Mzc3NjdmZWZlYjFlZDM0ZTA5MmQyZS4uYTcyMWQyNGJlMmY3YmRmYzdi
ODJkNjYxYWJiMWI2Yjk0NjZkMDM0NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQpA
QCAtNDg0LDMgKzQ4NCw2NiBAQCBURVNUKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsIE5vTWVzc2Fn
ZXNXaGVuTm90VGVzdGluZykKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdl
TmFtZWQ6QCJzaW1wbGUiXTsKICAgICBFWFBFQ1RfRkFMU0UoW1dLV2Vic2l0ZURhdGFTdG9yZSBf
ZGVmYXVsdERhdGFTdG9yZUV4aXN0c10pOwogfQorCitURVNUKFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MsIEZsdXNoT2JzZXJ2ZXJXaGVuV2ViUGFnZUlzQ2xvc2VkQnlKYXZhU2NyaXB0KQoreworICAg
IGF1dG8gKnNoYXJlZFByb2Nlc3NQb29sID0gW1dLUHJvY2Vzc1Bvb2wgX3NoYXJlZFByb2Nlc3NQ
b29sXTsKKyAgICBhdXRvICpkYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9j
ZXNzUG9vbDogc2hhcmVkUHJvY2Vzc1Bvb2xdOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vi
c2l0ZURhdGFTdG9yZSA9IGRhdGFTdG9yZTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBbd2ViVmlldyBs
b2FkSFRNTFN0cmluZzpAIldlYktpdCBUZXN0IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cDovL3dlYmtpdC5vcmciXV07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZp
bmlzaE5hdmlnYXRpb25dOworCisgICAgW2RhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQ6WUVTXTsKKworICAgIHN0YXRpYyBib29sIGRvbmVGbGFnID0gZmFsc2U7Cisg
ICAgW2RhdGFTdG9yZSBfY2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOl4odm9pZCkgeworICAg
ICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisKKyAgICBzdGF0aWMgYm9vbCBzdGF0aXN0
aWNzVXBkYXRlZCA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NUZXN0aW5nQ2FsbGJhY2s6XihXS1dlYnNpdGVEYXRhU3RvcmUgKiwgTlNTdHJpbmcgKm1l
c3NhZ2UpIHsKKyAgICAgICAgaWYgKCFbbWVzc2FnZSBpc0VxdWFsVG9TdHJpbmc6QCJTdGF0aXN0
aWNzIFVwZGF0ZWQiXSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc3RhdGlzdGljc1Vw
ZGF0ZWQgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lRmxhZyk7CisKKyAgICAvLyBTZWVkIHRlc3QgZGF0YSBpbiB0aGUgd2ViIHByb2Nlc3MnIG9i
c2VydmVyLgorICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW3NoYXJlZFByb2Nlc3NQb29sIF9z
ZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmdXaXRoRmlyc3RQYXJ0eTpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl0gdGhpcmRQYXJ0eTpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsLmNvbSJdIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9u
Ok5PIGNvbXBsZXRpb25IYW5kbGVyOiBeKCkgeworICAgICAgICBkb25lRmxhZyA9IHRydWU7Cisg
ICAgfV07CisgICAgCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisK
KyAgICAvLyBDaGVjayB0aGF0IHRoZSB0aGlyZC1wYXJ0eSBpcyBub3QgeWV0IHJlZ2lzdGVyZWQu
CisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1
YnJlc291cmNlVW5kZXJGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dl
YmtpdC5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwu
Y29tIl0gY29tcGxldGlvbkhhbmRsZXI6IF4oQk9PTCBpc1JlZ2lzdGVyZWQpIHsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKGlzUmVnaXN0ZXJlZCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAg
ICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworCisgICAg
c3RhdGlzdGljc1VwZGF0ZWQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpA
Ijxib2R5PjxzY3JpcHQ+Y2xvc2UoKTs8L3NjcmlwdD48L2JvZHk+IiBiYXNlVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmciXV07CisKKyAgICAvLyBXYWl0IGZvciB0
aGUgc3RhdGlzdGljcyB0byBiZSB1cGRhdGVkIGluIHRoZSBuZXR3b3JrIHByb2Nlc3MuCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzdGF0aXN0aWNzVXBkYXRlZCk7CisKKyAgICAvLyBD
aGVjayB0aGF0IHRoZSB0aGlyZC1wYXJ0eSBpcyBub3cgcmVnaXN0ZXJlZC4KKyAgICBkb25lRmxh
ZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRl
ckZpcnN0UGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdIHRo
aXJkUGFydHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbC5jb20iXSBjb21wbGV0
aW9uSGFuZGxlcjogXihCT09MIGlzUmVnaXN0ZXJlZCkgeworICAgICAgICBFWFBFQ1RfVFJVRShp
c1JlZ2lzdGVyZWQpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382385</attachid>
            <date>2019-10-30 16:18:49 -0700</date>
            <delta_ts>2019-10-31 14:42:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203623-20191030161848.patch</filename>
            <type>text/plain</type>
            <size>31447</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODQyNWY1YzhiNjAwYzQ1
ZTEwZDAwNGY3YjVjYWMzMDIzZWJkZDQzNS4uNTQ5NThmYmJkOTVmODAwZDM5NTJjYzcyZTY2OTZl
NGQ3ZTkyZjQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTEwLTMwICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogRmx1c2ggdGhlIHNoYXJlZCBSZXNvdXJjZUxvYWRPYnNlcnZlciB3aGVuIHRo
ZSB3ZWJwYWdlIGlzIGNsb3NlZCBieSBKYXZhU2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM2MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU2NzU2NDI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5ldyBBUEkgdGVzdCBhZGRlZC4KKworICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRP
YnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0
U2hhcmVkKToKKyAgICAgICAgICAgIFJlbW92ZWQgdGhlIHJlbGVhc2UgYXNzZXJ0IHNpbmNlIG5v
dyBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUgbWF5IHNldAorICAgICAgICAgICAgdGhlIHNoYXJl
ZCBvYnNlcnZlciBhdCBydW50aW1lIHdoZW4gdGhlcmUgaXMgcG9zc2libHkgYW4gZXhpc3Rpbmcg
ZHVtbXkuCisgICAgICAgICAgICBUaGlzIG5vdyB0YWtlcyBhIHBvaW50ZXIgcGFyYW1ldGVyLgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZ0ZvclRlc3Rpbmcp
OgorICAgICAgICAgICAgVGVzdCBmdW5jdGlvbiB0byBzZWVkIHRoZSB3ZWIgcHJvY2Vzcycgb2Jz
ZXJ2ZXIuCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NV2luZG93OjpjbG9zZSk6CisgICAgICAgICAgICBOb3cgZmx1c2hlcyB0aGUgc2hhcmVkIG9i
c2VydmVyLgorCiAyMDE5LTEwLTMwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogIW9iamVjdCB8fCAhaXNSdWJ5KG9iamVjdC0+cGFy
ZW50KCkpIHx8IGlzPFJlbmRlclJ1YnlSdW4+KCpvYmplY3QpIHx8IChvYmplY3QtPmlzSW5saW5l
KCkgJiYgKG9iamVjdC0+aXNCZWZvcmVDb250ZW50KCkgfHwgb2JqZWN0LT5pc0FmdGVyQ29udGVu
dCgpKSkgfHwgKG9iamVjdC0+aXNBbm9ueW1vdXMoKSAmJiBpczxSZW5kZXJCbG9jaz4oKm9iamVj
dCkgJiYgb2JqZWN0LT5zdHlsZSgpLmRpc3BsYXkoKSA9PSBECmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVhOTVjMTA2
NzA1MTI2ZTE5NjVmNjkwNGQwYjUxZDFkZjU1NDc1ZTguLjUwMTRhZGZmYjJhYmIzNWZjMTQ3MThj
MGE0NzBlNDcwNGJjOTUzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTktMTAtMzAg
IEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2Ug
TG9hZCBTdGF0aXN0aWNzOiBGbHVzaCB0aGUgc2hhcmVkIFJlc291cmNlTG9hZE9ic2VydmVyIHdo
ZW4gdGhlIHdlYnBhZ2UgaXMgY2xvc2VkIGJ5IEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzYyMworICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTY3NTY0Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGZsdXNoaW5nIG9mIHBlbmRpbmcgc3RhdGlzdGljcyB3
aGVuIGEgd2luZG93IGlzIGNsb3NlZCBieSBKYXZhU2NyaXB0LAorICAgICAgICB3aGVuIGEgd2Vi
cGFnZSBpcyByZW1vdmVkIGZyb20gdGhlIHdlYiBwcm9jZXNzLCBhbmQgd2hlbiB0aGUgd2ViIHBy
b2Nlc3MgcHJlcGFyZXMgdG8KKyAgICAgICAgc3VzcGVuZC4KKworICAgICAgICBOZXcgQVBJIHRl
c3QgYWRkZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQpOgorICAg
ICAgICAgICAgTm93IGNhbGxzIGxvZ1Rlc3RpbmdFdmVudCgpIHNvIHRoYXQgdGhlIHRlc3QgaW5m
cmFzdHJ1Y3R1cmUgY2FuIHdhaXQgZm9yIHVwZGF0ZXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9zZWVk
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmdXaXRoRmlyc3RQYXJ0eTp0aGlyZFBhcnR5
OnNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZSB0byBzZWVkIGV2ZXJ5IHdlYiBwcm9jZXNzJyBXZWJD
b3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlciB3aXRoIHRlc3QgZGF0YS4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgtW1dLV2Vic2l0
ZURhdGFTdG9yZSBfY2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0UGFy
dHk6dGhpcmRQYXJ0eTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgICAgIFRlc3QgaW5m
cmFzdHJ1Y3R1cmUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRm9yVGVzdGluZyk6CisgICAgICAgICAgICBUZXN0IGluZnJhc3RydWN0dXJlLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKToKKyAgICAgICAgICAgIE1h
ZGUgc3VyZSB0aGUgY29tcGxldGlvbiBoYW5kbGVyIGlzIGNhbGxlZCBldmVuIGlmIHRoZXJlIGlz
IG5vIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOgorICAgICAgICAgICAgTm93IHRlbGxz
IGFsbCB3ZWIgcHJvY2Vzc2VzIHRvIHR1cm4gSVRQIG9uIG9yIG9mZi4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6On5XZWJSZXNvdXJjZUxvYWRPYnNl
cnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJy
ZXNvdXJjZUxvYWRpbmdGb3JUZXN0aW5nKToKKyAgICAgICAgICAgIFRlc3QgaW5mcmFzdHJ1Y3R1
cmUgdG8gc2VlZCB0aGUgb2JzZXJ2ZXIgd2l0aCB0ZXN0IGRhdGEuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6cmVtb3ZlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnByZXBh
cmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwcmVwYXJlVG9TdXNw
ZW5kKToKKyAgICAgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBub3cgY2FsbCBXZWJQcm9jZXNzOjpm
bHVzaFJlc291cmNlTG9hZFN0YXRpc3RpY3MoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOgorICAgICAgICAgICAgVGhpcyBm
dW5jdGlvbiBub3cgc2V0cyB0aGUgcHJvY2Vzcycgc2hhcmVkIFdlYkNvcmU6OlJlc291cmNlTG9h
ZE9ic2VydmVyLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpmbHVzaFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MpOgorICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiB0ZWxscyB0aGUgc2hhcmVk
IFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyIHRvIHNlbmQgYW55IHBlbmRpbmcKKyAgICAg
ICAgICAgIHN0YXRpc3RpY3MgdG8gdGhlIGNlbnRyYWwgSVRQIHN0b3JlLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpzZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcpOgor
ICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZSB0byBzZWVkIHRoZSBzaGFyZWQgb2JzZXJ2
ZXIgd2l0aCB0ZXN0IGRhdGEuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE5LTEwLTMw
ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBDcmVh
dGUgYmFzZSBjbGFzcyBjb21tb24gdG8gQWNjZXNzaWJpbGl0eU9iamVjdCBhbmQgQVhJc29sYXRl
ZFRyZWVOb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZl
ci5jcHAKaW5kZXggZTE2NTYzN2VhMzMzYmFlZDliZjU5ZmY2MDIxN2Q4OTFhODQwMmQzNi4uY2Ez
NmQ3M2JmY2YwYTIwNzRhZjdmMTczODk4NTE5MTQxZTc2MWQ5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC0zNCwxMCArMzQsMTAgQEAg
c3RhdGljIFJlc291cmNlTG9hZE9ic2VydmVyKiYgc2hhcmVkT2JzZXJ2ZXIoKQogICAgIHJldHVy
biBvYnNlcnZlcjsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U2hhcmVkKFJl
c291cmNlTG9hZE9ic2VydmVyJiBvYnNlcnZlcikKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnNldFNoYXJlZChSZXNvdXJjZUxvYWRPYnNlcnZlciogb2JzZXJ2ZXIpCiB7Ci0gICAgUkVMRUFT
RV9BU1NFUlQoIXNoYXJlZE9ic2VydmVyKCkpOwotICAgIHNoYXJlZE9ic2VydmVyKCkgPSAmb2Jz
ZXJ2ZXI7CisgICAgZGVsZXRlIHNoYXJlZE9ic2VydmVyKCk7CisgICAgc2hhcmVkT2JzZXJ2ZXIo
KSA9IG9ic2VydmVyOwogfQogCiBSZXNvdXJjZUxvYWRPYnNlcnZlciYgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNl
cnZlci5oCmluZGV4IGU3NGQ1ZjY2ZmFkMWU3OTcyYmVlYTE5ODY4OGViZmU3MmRiYjQyODkuLjUy
NmUwNjY2OTEzMDA5MDhkODhlMDc4NGM1ZDk1ZTkyMzg5MDM5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCkBAIC00MCw4ICs0MCw4IEBAIGNsYXNz
IFJlc291cmNlTG9hZE9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVzb3VyY2VMb2FkT2JzZXJ2ZXImIHNoYXJlZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZXNvdXJjZUxvYWRPYnNlcnZlciogc2hhcmVkSWZFeGlzdHMoKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTaGFyZWQoUmVzb3VyY2VMb2FkT2JzZXJ2ZXImKTsKLSAg
ICAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTaGFyZWQoUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIqKTsKKwogICAgIHZpcnR1YWwgflJlc291cmNlTG9hZE9ic2VydmVyKCkgeyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgbG9nU3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0IEZyYW1lKiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiAvKiBuZXdSZXF1ZXN0ICovLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiAvKiByZWRpcmVjdFJlc3BvbnNlICovKSB7IH0KQEAgLTUyLDYgKzUyLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBsb2dDYW52YXNXcml0ZU9yTWVhc3VyZShjb25zdCBEb2N1bWVu
dCYsIGNvbnN0IFN0cmluZyYgLyogdGV4dFdyaXR0ZW4gKi8pIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBsb2dOYXZpZ2F0b3JBUElBY2Nlc3NlZChjb25zdCBEb2N1bWVudCYsIGNvbnN0IFJlc291cmNl
TG9hZFN0YXRpc3RpY3M6Ok5hdmlnYXRvckFQSSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvZ1Nj
cmVlbkFQSUFjY2Vzc2VkKGNvbnN0IERvY3VtZW50JiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6U2NyZWVuQVBJKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9nU3VicmVzb3VyY2VMb2Fk
aW5nRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgLyogZmlyc3RQYXJ0eURvbWFp
biAqLywgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIC8qIHRoaXJkUGFydHlEb21haW4gKi8sIGJv
b2wgLyogc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24gKi8pIHsgfQogCiAgICAgdmlydHVhbCBT
dHJpbmcgc3RhdGlzdGljc0ZvclVSTChjb25zdCBVUkwmKSB7IHJldHVybiB7IH07IH0KICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSgpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCmluZGV4IGM3MGYzMzc1Y2YyODc5YjUwNzhlODcwNGJjNDdkMmM0YzQz
MzU0ZjEuLjBhY2U5ZWM3YmQ1OTNhNjc3YjI2ZDE5M2VjMDVjNjk3MTkwN2NlNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTEwNTgsNiArMTA1OCw4IEBAIHZvaWQgRE9NV2luZG93
OjpjbG9zZSgpCiAgICAgaWYgKCFmcmFtZS0+bG9hZGVyKCkuc2hvdWxkQ2xvc2UoKSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnVwZGF0ZUNl
bnRyYWxTdGF0aXN0aWNzU3RvcmUoKTsKKwogICAgIHBhZ2UtPnNldElzQ2xvc2luZygpOwogICAg
IHBhZ2UtPmNocm9tZSgpLmNsb3NlV2luZG93U29vbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBkY2JkZDg4MzUyNTRhZWRmMThk
MTQyMmM1NGUwY2I3MTVlN2U1YmNlLi5kYjUzMWE0OWUxMWM0M2NjZDExYWMwMTQ1M2E4ZGVlZDk4
ZDc5YjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcApAQCAtMjgzLDcgKzI4MywxMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cgogICAgICAg
ICBtX3N0YXRpc3RpY3NTdG9yZS0+Y2FuY2VsUGVuZGluZ1N0YXRpc3RpY3NQcm9jZXNzaW5nUmVx
dWVzdCgpOwogCiAgICAgICAgIC8vIEZpcmUgYmVmb3JlIHByb2Nlc3Npbmcgc3RhdGlzdGljcyB0
byBwcm9wYWdhdGUgdXNlciBpbnRlcmFjdGlvbiBhcyBmYXN0IGFzIHBvc3NpYmxlIHRvIHRoZSBu
ZXR3b3JrIHByb2Nlc3MuCi0gICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT51cGRhdGVDb29raWVC
bG9ja2luZyhbXSgpIHsgfSk7CisgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT51cGRhdGVDb29r
aWVCbG9ja2luZyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIHsKKyAg
ICAgICAgICAgIHBvc3RUYXNrUmVwbHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRU
aGlzLmNvcHlSZWYoKV0oKSB7CisgICAgICAgICAgICAgICAgbG9nVGVzdGluZ0V2ZW50KCJTdGF0
aXN0aWNzIFVwZGF0ZWQiX3MpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogICAgICAg
ICBtX3N0YXRpc3RpY3NTdG9yZS0+cHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwog
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbQppbmRleCAwYjgxMGI1ZmFlMGUxYWNhNTEwM2I4NTQxOTFiMDQyYTkxMzk5
Y2VhLi4zNDgzMmIxMmQ2OWE1NDA5NzRkZTQ0M2M1ZjRiYjI0ZTMzMGI4MmFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAt
NDksNiArNDksNyBAQAogI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uSW50ZXJu
YWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1BsdWdpbkRhdGEuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4K
ICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CkBAIC02
NTMsNCArNjU0LDE4IEBAIC0gKHZvaWQpX2FsbG93QW55VExTQ2VydGlmaWNhdGVGb3JXZWJTb2Nr
ZXRUZXN0aW5nCiAgICAgX3Byb2Nlc3NQb29sLT5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZv
cldlYlNvY2tldCh0cnVlKTsKIH0KIAorLSAodm9pZClfc2VlZFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6KE5TVVJMICopZmlyc3RQYXJ0eVVSTCB0aGlyZFBh
cnR5OihOU1VSTCAqKXRoaXJkUGFydHlVUkwgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb246KEJP
T0wpc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQorICAgIF9wcm9jZXNzUG9vbC0+c2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JU
ZXN0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgZmlyc3RQYXJ0eVVSTCB9LCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHRoaXJkUGFydHlVUkwgfSwgc2hvdWxkU2NoZWR1bGVO
b3RpZmljYXRpb24sIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildICgpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHlVUkwpOworICAgIFVOVVNFRF9QQVJBTSh0
aGlyZFBhcnR5VVJMKTsKKyAgICBVTlVTRURfUEFSQU0oc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRp
b24pOworICAgIFVOVVNFRF9QQVJBTShjb21wbGV0aW9uSGFuZGxlcik7CisjZW5kaWYKK30KKwog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCAzYTgxZDU5OTk5ZGNjOTk5ZjEzOTNjYzMyOTZiOWJl
YTYwNTJiYmUyLi4xMzAzNWNhNmViMjlmZjJiN2ExZmRmNzUyOWE5ZDkwZGE5YjUxYTRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbFByaXZhdGUuaApAQCAtMTMyLDQgKzEzMiw3IEBACiBAcHJvcGVydHkgKG5vbmF0b21pYywg
Z2V0dGVyPV9pc1N0b3JhZ2VBY2Nlc3NBUElFbmFibGVkLCBzZXR0ZXI9X3NldFN0b3JhZ2VBY2Nl
c3NBUElFbmFibGVkOikgQk9PTCBfc3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0gKHZvaWQpX3N5bnRoZXNpemVBcHBJ
c0JhY2tncm91bmQ6KEJPT0wpYmFja2dyb3VuZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCisvLyBUZXN0IG9ubHkuCistICh2b2lkKV9zZWVk
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmdXaXRoRmlyc3RQYXJ0eTooTlNVUkwgKilm
aXJzdFBhcnR5VVJMIHRoaXJkUGFydHk6KE5TVVJMICopdGhpcmRQYXJ0eVVSTCBzaG91bGRTY2hl
ZHVsZU5vdGlmaWNhdGlvbjooQk9PTClzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbiBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciAgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW0KaW5kZXggNjE0MmYwYjc4MWNmNDE1YTA3ZjA4OTlkYjhjYzk3YmFhOGU0YWFkOC4uYWQw
YjczMWZiOWJhYzg3Njg2YzQ2ZjAzZmE5MTA5YzdkZmExNjRmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJBUElTdHJpbmcuaCIKICNpbXBvcnQgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oIgogI2ltcG9ydCAiQ29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlci5oIgorI2ltcG9ydCAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNz
LmgiCiAjaW1wb3J0ICJXS0hUVFBDb29raWVTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS05T
QXJyYXkuaCIKICNpbXBvcnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgpAQCAt
NDk1LDYgKzQ5NiwyOCBAQCAtICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFpbjooTlNVUkwgKilk
b21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKQogI2VuZGlmCiB9CiAKKy0g
KHZvaWQpX2NsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljczoodm9pZCAoXikodm9pZCkpY29tcGxl
dGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAg
IF93ZWJzaXRlRGF0YVN0b3JlLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdl
YktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpObywgW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgfSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cisj
ZW5kaWYKK30KKworLSAodm9pZClfaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyRmlyc3RQ
YXJ0eTooTlNVUkwgKilmaXJzdFBhcnR5VVJMIHRoaXJkUGFydHk6KE5TVVJMICopdGhpcmRQYXJ0
eVVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIK
K3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT5pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIodGhpcmRQYXJ0eVVSTCwgZmly
c3RQYXJ0eVVSTCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0oYm9vbCBlbmFibGVkKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVuYWJs
ZWQpOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihOTyk7CisjZW5kaWYK
K30KKwogLSAodm9pZClfcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkczoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKaW5kZXggMDRlM2M3ODFjZDUxMjE5NzA4
MmM5YTU2YmY0ZGEzYTQxZTM5MzMyOS4uMzFiODBhYjQyNTEyZjVkNmIwNGNiNzQzZmJmNjIzNTMx
N2VhNzkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC03MCw3ICs3MCw5IEBAIHR5
cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRp
b25zKSB7CiAtICh2b2lkKV9zY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlOih2b2lkICheKSh2
b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfc2V0UHJldmFsZW50RG9tYWluOihOU1VSTCAq
KWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRs
ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
IC0gKHZvaWQpX2dldElzUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZvaWQpX2NsZWFyUHJl
dmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFpbjoo
TlNVUkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CistICh2b2lkKV9jbGVhclJlc291cmNlTG9hZFN0YXRpc3RpY3M6KHZvaWQgKF4pKHZv
aWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5k
ZXJGaXJzdFBhcnR5OihOU1VSTCAqKWZpcnN0UGFydHlVUkwgdGhpcmRQYXJ0eTooTlNVUkwgKil0
aGlyZFBhcnR5VVJMIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MKSljb21wbGV0aW9u
SGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogLSAodm9pZClfcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkczoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQHByb3BlcnR5IChudWxsYWJsZSwgbm9uYXRvbWljLCB3
ZWFrKSBpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiBfZGVsZWdhdGUgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCAyM2FjNmU0OTdmYWU3M2RhMjdh
YzJlZjU2NTBiYmU0ZjI5OTZkM2IwLi42MTg2YjNiOWU2NzBjZTk4OGMwNmRiZjI3ZmIxZmRmZGUy
MGJlMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBA
IC04OCwxMCArODgsMTIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UHJvY2Vzc1dhcm1pbmcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYXRpb25EYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3Rm
L0NhbGxiYWNrQWdncmVnYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBA
IC0yMzQxLDYgKzIzNDMsMTQgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkQ29tbWl0Q3Jvc3NT
aXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKIAogICAgIG1fbmV0
d29ya1Byb2Nlc3MtPmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKHNlc3Np
b25JRCwgZnJvbURvbWFpbiwgdG9Eb21haW4sIG5hdmlnYXRpb25EYXRhVHJhbnNmZXIsIHdlYlBh
Z2VQcm94eUlELCB3ZWJQYWdlSUQpOwogfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZWVkUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZp
cnN0UGFydHlEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWlu
LCBib29sIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzZXMoKSkKKyAgICAgICAgcHJvY2Vz
cy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZWVkUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoZmlyc3RQYXJ0eURvbWFpbiwgdGhpcmRQYXJ0eURvbWFp
biwgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24pLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2Fs
bGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKK30KICNlbmRpZgogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhQcm9jZXNzSWRlbnRpZmllciBwcm9j
ZXNzSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA4ZGEw
YjE3MjU5ZjY0ZTBjNDNiMDNhOTEyMDdmOWVjYTQyZDJmODlhLi45MGI2MGYwN2E2MjVjNTVkMWRj
YWJjOTQ5NzE3MzA2NzljZTc5Njk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
UmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFz
aC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHBh
bC9TZXNzaW9uSUQuaD4KQEAgLTkwLDYgKzg5LDcgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogc3Ry
dWN0IE1vY2tNZWRpYURldmljZTsKIH0KIApAQCAtNDk0LDYgKzQ5NCw3IEBAIHB1YmxpYzoKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBkaWRDb21taXRD
cm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5hdmlnYXRp
b25EYXRhVHJhbnNmZXI6OkZsYWc+LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcik7CisgICAgdm9pZCBzZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRl
c3RpbmcoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4s
IGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWluLCBib29s
IHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKaW5kZXggMTVkY2FiMjJkZGI1MGIxNmZhNGYyNThmZWRjYjIwZTJjNmEzZWJiMS4uMmRm
OWQ3Zjk5YzkwNjIzNTQxZTc1ODI2YzA1M2FmNzk3ZTc0YmEwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
QEAgLTEzNjksNiArMTM2OSwxMCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmlzUmVnaXN0ZXJl
ZEFzU3VicmVzb3VyY2VVbmRlcihjb25zdCBVUkwmIHN1YnJlc291cmNlVVJMLAogICAgICAgICAg
ICAgcHJvY2Vzcy0+aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKG1fc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHN1YnJlc291cmNlVVJMIH0sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHsgdG9wRnJhbWVVUkwgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgICAgICAgICAgQVNTRVJUKHByb2Nlc3NQb29scygpLnNpemUoKSA9PSAxKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE5NjEsMTMgKzE5NjUsMTcg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChib29sIGVuYWJsZWQpCiAgICAgICAgIAogICAgICAgICByZXNvbHZlRGlyZWN0b3JpZXNJZk5l
Y2Vzc2FyeSgpOwogICAgICAgICAKLSAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHBy
b2Nlc3NQb29scyhzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBmYWxzZSkpCisg
ICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSwgZmFsc2UpKSB7CiAgICAgICAgICAgICBwcm9jZXNzUG9v
bC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChtX3Nlc3Npb25JRCwgdHJ1ZSkpOworICAgICAg
ICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vz
czo6U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQodHJ1ZSkpOworICAgICAgICB9CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJv
Y2Vzc1Bvb2xzKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIGZhbHNlKSkKKyAg
ICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKHN0ZDo6bnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KCksIGZhbHNlKSkgewogICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRv
TmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZChtX3Nlc3Npb25JRCwgZmFsc2UpKTsKKyAgICAgICAgcHJvY2Vz
c1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZmFsc2UpKTsKKyAgICB9CiAKICAgICBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkID0gZmFsc2U7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlci5jcHAKaW5kZXggOWVkMmEwNThiYTE0ZjA2NDY4NTA2ZWUzNzIxM2IxMjBi
M2EzZTZlYS4uNWU0ZjA2NzMxYzk4MmU0MGJiOGU1YjcyYmU2MWM0MmEyZGI0OTk1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNl
TG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC02NSw2ICs2NSwxMiBAQCBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKQogewogfQogCitX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6fldlYlJlc291cmNlTG9hZE9ic2VydmVyKCkKK3sKKyAg
ICBpZiAoaGFzU3RhdGlzdGljcygpKQorICAgICAgICB1cGRhdGVDZW50cmFsU3RhdGlzdGljc1N0
b3JlKCk7Cit9CisKIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBEb2N1bWVudCYgb3Bl
bmVyRG9jdW1lbnQpCiB7CiAgICAgYXV0byBvcGVuZXJVcmwgPSBvcGVuZXJEb2N1bWVudC51cmwo
KTsKQEAgLTM1Niw2ICszNjIsMTkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9n
VXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdAogI2VuZGlmCiB9
CiAKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZ0Zv
clRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3VsZFNjaGVkdWxl
Tm90aWZpY2F0aW9uKQoreworICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNv
dXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbih0aGlyZFBhcnR5RG9tYWluKTsKKyAg
ICBhdXRvIGxhc3RTZWVuID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6cmVkdWNlVGltZVJlc29s
dXRpb24oV2FsbFRpbWU6Om5vdygpKTsKKyAgICB0YXJnZXRTdGF0aXN0aWNzLmxhc3RTZWVuID0g
bGFzdFNlZW47CisgICAgdGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVE
b21haW5zLmFkZChmaXJzdFBhcnR5RG9tYWluKTsKKworICAgIGlmIChzaG91bGRTY2hlZHVsZU5v
dGlmaWNhdGlvbikKKyAgICAgICAgc2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCgpOworICAg
IGVsc2UKKyAgICAgICAgbV9ub3RpZmljYXRpb25UaW1lci5zdG9wKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmgKaW5kZXggZDZiOGQ4Nzc1ODc4YjRi
NjhjNTE3NGE5OTQ4OGM5MTNkYjRkMGFkYy4uOTJkZTdiY2U2NmM5MjQwNTRjNjY0YzQzMWZlYWU0
NTJiNDZkNmRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmgKQEAgLTM3LDcg
KzM3LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
ciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlciB7CiBwdWJsaWM6
CiAgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKTsKLSAgICAKKyAgICB+V2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIoKTsKKwogICAgIHZvaWQgbG9nU3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0IFdl
YkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5h
bDsKICAgICB2b2lkIGxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiB0YXJnZXRVUkwsIGNv
bnN0IFVSTCYgbWFpbkZyYW1lVVJMKSBmaW5hbDsKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlv
bldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24oY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmKSBmaW5h
bDsKQEAgLTQ2LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9nQ2FudmFzV3JpdGVPck1l
YXN1cmUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHRleHRXcml0dGVu
KSBmaW5hbDsKICAgICB2b2lkIGxvZ05hdmlnYXRvckFQSUFjY2Vzc2VkKGNvbnN0IFdlYkNvcmU6
OkRvY3VtZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6TmF2aWdh
dG9yQVBJKSBmaW5hbDsKICAgICB2b2lkIGxvZ1NjcmVlbkFQSUFjY2Vzc2VkKGNvbnN0IFdlYkNv
cmU6OkRvY3VtZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6U2Ny
ZWVuQVBJKSBmaW5hbDsKKyAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZ0ZvclRlc3Rpbmco
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3Vs
ZFNjaGVkdWxlTm90aWZpY2F0aW9uKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
IHN0YXRpYyB2b2lkIHNldFNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbihib29sKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBkMDAzYzBmNmY4YjlkMTlhODNhZGJl
ZGVlZjlkMDY2OGMwNDQ5MzlhLi5mZjkyY2MyMjBjYTRlZTI4YWJkYWQ0ZGM0ZTQ4MWNhMzQ2MDQy
NDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00NTksNyAr
NDU5LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhX
ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyYmIHAKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQgJiYgIXBhcmFtZXRlcnMuc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0gICAgICAg
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTaGFyZWQoKm5ldyBXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlcik7CisgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTaGFyZWQobmV3IFdlYlJl
c291cmNlTG9hZE9ic2VydmVyKTsKICNlbmRpZgogCiAgICAgcmVzZXRQbHVnSW5BdXRvU3RhcnRP
cmlnaW5IYXNoZXMoV1RGTW92ZShwYXJhbWV0ZXJzLnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hl
cykpOwpAQCAtNjcxLDYgKzY3MSw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZShQ
YWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgQVNTRVJUKG1fcGFnZU1hcC5jb250YWlucyhw
YWdlSUQpKTsKIAorICAgIGZsdXNoUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworCiAgICAgcGFn
ZVdpbGxMZWF2ZVdpbmRvdyhwYWdlSUQpOwogICAgIG1fcGFnZU1hcC5yZW1vdmUocGFnZUlEKTsK
IApAQCAtMTM4Myw2ICsxMzg1LDggQEAgdm9pZCBXZWJQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5k
KGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQsIENvbXBsZXRpb25IYW5kbGVyPHYKICAgICBTZXRG
b3JTY29wZTxib29sPiBzdXNwZW5zaW9uU2NvcGUobV9pc1N1c3BlbmRpbmcsIHRydWUpOwogICAg
IG1fcHJvY2Vzc0lzU3VzcGVuZGVkID0gdHJ1ZTsKIAorICAgIGZsdXNoUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpOworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKG1fcHJvY2Vzc1R5cGUg
PT0gUHJvY2Vzc1R5cGU6OlByZXdhcm1lZFdlYkNvbnRlbnQpIHsKICAgICAgICAgUkVMRUFTRV9M
T0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQo
KSBQcm9jZXNzIGlzIHJlYWR5IHRvIHN1c3BlbmQiLCB0aGlzKTsKQEAgLTE1NTIsNyArMTU1Niwx
MiBAQCBTdG9yYWdlQXJlYU1hcCogV2ViUHJvY2Vzczo6c3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFy
ZWFJZGVudGlmaWVyIGlkZW50aWZpZXIpIGNvbgogCiB2b2lkIFdlYlByb2Nlc3M6OnNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKKyAgICBpZiAoV2ViQ29y
ZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZCgpID09IGVuYWJsZWQgfHwgbV9zZXNzaW9uSUQtPmlzRXBoZW1lcmFsKCkpCisgICAgICAgIHJl
dHVybjsKICAgICBXZWJDb3JlOjpEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCisgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFNoYXJl
ZChlbmFibGVkID8gbmV3IFdlYlJlc291cmNlTG9hZE9ic2VydmVyIDogbnVsbHB0cik7CisjZW5k
aWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpjbGVhclJlc291cmNlTG9hZFN0YXRpc3RpY3MoKQpA
QCAtMTU2Myw2ICsxNTcyLDIzIEBAIHZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKCkKICNlbmRpZgogfQogCit2b2lkIFdlYlByb2Nlc3M6OmZsdXNoUmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
KyAgICBpZiAoYXV0byogb2JzZXJ2ZXIgPSBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkSWZF
eGlzdHMoKSkKKyAgICAgICAgb2JzZXJ2ZXItPnVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNzU3RvcmUo
KTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlByb2Nlc3M6OnNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2No
ZWR1bGVOb3RpZmljYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlm
IChhdXRvKiBvYnNlcnZlciA9IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRJZkV4aXN0cygp
KQorICAgICAgICBvYnNlcnZlci0+bG9nU3VicmVzb3VyY2VMb2FkaW5nRm9yVGVzdGluZyhmaXJz
dFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5RG9tYWluLCBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlv
bik7CisjZW5kaWYKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiBSZWZQdHI8QVBJOjpP
YmplY3Q+IFdlYlByb2Nlc3M6OnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMoQVBJOjpPYmplY3Qq
IG9iamVjdCkKIHsKICAgICBzdHJ1Y3QgVHJhbnNmb3JtZXIgZmluYWwgOiBVc2VyRGF0YTo6VHJh
bnNmb3JtZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggNDk4MDIy
MzQ5NjMxYTlkZjlmY2UzMTk0ZTg3MjU4OGI5MzljNDg0Mi4uMTRjZDZhNzIxNGFiMTgwM2JjNDQ1
ZGQyYjlhMjJmMGNmN2EyZmI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CkBAIC04Niw2ICs4Niw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOwogY2xhc3Mg
Q1BVTW9uaXRvcjsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIFBhZ2VHcm91cDsKK2Ns
YXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgVXNl
ckdlc3R1cmVUb2tlbjsKIHN0cnVjdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOwpAQCAtMzQz
LDYgKzM0NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRTaG91bGRVc2VGb250U21vb3RoaW5n
KGJvb2wpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCk7
CiAgICAgdm9pZCBjbGVhclJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICB2b2lkIGZsdXNo
UmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIHZvaWQgc2VlZFJlc291cmNlTG9hZFN0YXRp
c3RpY3NGb3JUZXN0aW5nKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdGhpcmRQYXJ0eURv
bWFpbiwgYm9vbCBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CiAgICAgdm9pZCBmdWxsS2V5Ym9hcmRBY2Nlc3NNb2Rl
Q2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGI5ZjlmNjBkMGM3
YTYzNmY3YzI5NGVjODQzNzNiZTkzNTA5YjBjYzYuLmE0OTg2YzQzOTJlY2FjM2NiYTcxZmNmZmRj
MjU5OGYwY2M0NGIwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCkBAIC0xNjAsNCArMTYwLDggQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAg
ICAgU2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbihzdHJ1Y3QgV2ViS2l0OjpVc2VyTWVzc2FnZSB1
c2VyTWVzc2FnZSkKICNlbmRpZgorCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKKyAgICBTZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gdGhpcmRQYXJ0eURvbWFpbiwgYm9vbCBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbikgLT4g
KCkgQXN5bmMKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGE2MDdjMzE1NGNkOWI0ODJjMGUxMmM4MzgxZTIyNmQ1MWQwYmVlYjIu
LmViMzFjNGNmYTNiNmIwZmY4YWZlM2ZmYTA0MjhmMjE1ZThjYmNiNGEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
OS0xMC0zMCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IEZsdXNoIHRoZSBzaGFyZWQgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIgd2hlbiB0aGUgd2VicGFnZSBpcyBjbG9zZWQgYnkgSmF2YVNjcmlwdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNjIzCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS81Njc1NjQyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDE5LTEwLTMwICBKb25h
dGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBTaW11bGF0b3IgdGVz
dGVycyBhcmUgZmlsbGluZyB1cApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCmluZGV4IGFm
NjQ0ODVjYTZhNTQwMTczOTM3NzY3ZmVmZWIxZWQzNGUwOTJkMmUuLmE3MjFkMjRiZTJmN2JkZmM3
YjgyZDY2MWFiYjFiNmI5NDY2ZDAzNDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0K
QEAgLTQ4NCwzICs0ODQsNjYgQEAgVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBOb01lc3Nh
Z2VzV2hlbk5vdFRlc3RpbmcpCiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFn
ZU5hbWVkOkAic2ltcGxlIl07CiAgICAgRVhQRUNUX0ZBTFNFKFtXS1dlYnNpdGVEYXRhU3RvcmUg
X2RlZmF1bHREYXRhU3RvcmVFeGlzdHNdKTsKIH0KKworVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLCBGbHVzaE9ic2VydmVyV2hlbldlYlBhZ2VJc0Nsb3NlZEJ5SmF2YVNjcmlwdCkKK3sKKyAg
ICBhdXRvICpzaGFyZWRQcm9jZXNzUG9vbCA9IFtXS1Byb2Nlc3NQb29sIF9zaGFyZWRQcm9jZXNz
UG9vbF07CisgICAgYXV0byAqZGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0
RGF0YVN0b3JlXTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJv
Y2Vzc1Bvb2w6IHNoYXJlZFByb2Nlc3NQb29sXTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLndl
YnNpdGVEYXRhU3RvcmUgPSBkYXRhU3RvcmU7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgW3dlYlZpZXcg
bG9hZEhUTUxTdHJpbmc6QCJXZWJLaXQgVGVzdCIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImh0dHA6Ly93ZWJraXQub3JnIl1dOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRG
aW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIFtkYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkOllFU107CisKKyAgICBzdGF0aWMgYm9vbCBkb25lRmxhZyA9IGZhbHNlOwor
ICAgIFtkYXRhU3RvcmUgX2NsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljczpeKHZvaWQpIHsKKyAg
ICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgc3RhdGljIGJvb2wgc3RhdGlz
dGljc1VwZGF0ZWQgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGVzdGluZ0NhbGxiYWNrOl4oV0tXZWJzaXRlRGF0YVN0b3JlICosIE5TU3RyaW5nICpt
ZXNzYWdlKSB7CisgICAgICAgIGlmICghW21lc3NhZ2UgaXNFcXVhbFRvU3RyaW5nOkAiU3RhdGlz
dGljcyBVcGRhdGVkIl0pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0YXRpc3RpY3NV
cGRhdGVkID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZUZsYWcpOworCisgICAgLy8gU2VlZCB0ZXN0IGRhdGEgaW4gdGhlIHdlYiBwcm9jZXNzJyBv
YnNlcnZlci4KKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtzaGFyZWRQcm9jZXNzUG9vbCBf
c2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbC5jb20iXSBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlv
bjpOTyBjb21wbGV0aW9uSGFuZGxlcjogXigpIHsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOwor
ICAgIH1dOworICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOwor
CisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgdGhpcmQtcGFydHkgaXMgbm90IHlldCByZWdpc3RlcmVk
LgorICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfaXNSZWdpc3RlcmVkQXNT
dWJyZXNvdXJjZVVuZGVyRmlyc3RQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93
ZWJraXQub3JnIl0gdGhpcmRQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmls
LmNvbSJdIGNvbXBsZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAg
IEVYUEVDVF9GQUxTRShpc1JlZ2lzdGVyZWQpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7Cisg
ICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAg
IHN0YXRpc3RpY3NVcGRhdGVkID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6
QCI8Ym9keT48c2NyaXB0PmNsb3NlKCk7PC9zY3JpcHQ+PC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl1dOworCisgICAgLy8gV2FpdCBmb3Ig
dGhlIHN0YXRpc3RpY3MgdG8gYmUgdXBkYXRlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzLgorICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmc3RhdGlzdGljc1VwZGF0ZWQpOworCisgICAgLy8g
Q2hlY2sgdGhhdCB0aGUgdGhpcmQtcGFydHkgaXMgbm93IHJlZ2lzdGVyZWQuCisgICAgZG9uZUZs
YWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5k
ZXJGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmciXSB0
aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwuY29tIl0gY29tcGxl
dGlvbkhhbmRsZXI6IF4oQk9PTCBpc1JlZ2lzdGVyZWQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUo
aXNSZWdpc3RlcmVkKTsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382504</attachid>
            <date>2019-10-31 14:42:29 -0700</date>
            <delta_ts>2019-11-04 11:03:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203623-20191031144228.patch</filename>
            <type>text/plain</type>
            <size>31082</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxODY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVkMDAwOWZlMTg3NjM1
OTJmNmFiNzY1YWE0MmZkOTY2ODQyMzc3ZC4uNTYxZmZlZTgyODg0M2Q1MDkwMWJiZGZlMTQ4YmNj
NmJjNjNjZmU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTEwLTMxICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogRmx1c2ggdGhlIHNoYXJlZCBSZXNvdXJjZUxvYWRPYnNlcnZlciB3aGVuIHRo
ZSB3ZWJwYWdlIGlzIGNsb3NlZCBieSBKYXZhU2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM2MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU2NzU2NDI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5ldyBBUEkgdGVzdCBhZGRlZC4KKworICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRP
YnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0
U2hhcmVkKToKKyAgICAgICAgICAgIFJlbW92ZWQgdGhlIHJlbGVhc2UgYXNzZXJ0IHNpbmNlIG5v
dyBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUgbWF5IHNldAorICAgICAgICAgICAgdGhlIHNoYXJl
ZCBvYnNlcnZlciBhdCBydW50aW1lIHdoZW4gdGhlcmUgaXMgcG9zc2libHkgYW4gZXhpc3Rpbmcg
ZHVtbXkuCisgICAgICAgICAgICBUaGlzIG5vdyB0YWtlcyBhIHBvaW50ZXIgcGFyYW1ldGVyLgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCk6CisgICAgICAg
ICAgICBOb3cgcmV0dXJucyBpdHMgb3duIGVtcHR5IG9ic2VydmVyIGlmIG5vIHNoYXJlZCBvbmUg
aGFzIGJlZW4gc2V0LgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9h
ZGluZ0ZvclRlc3RpbmcpOgorICAgICAgICAgICAgVGVzdCBmdW5jdGlvbiB0byBzZWVkIHRoZSB3
ZWIgcHJvY2Vzcycgb2JzZXJ2ZXIuCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpjbG9zZSk6CisgICAgICAgICAgICBOb3cgZmx1c2hl
cyB0aGUgc2hhcmVkIG9ic2VydmVyLgorCiAyMDE5LTEwLTMxICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEludGVncmF0ZSByZXNpemUgZXZlbnQgd2l0aCBIVE1M
NSBldmVudCBsb29wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYyMGEzOTUwOTZmOGRlODU5Y2YxY2JjMzhlZjcyOGJk
ZDhiNTkzOWYuLjIxZTJlNDJlMzIzMTcyY2Q0ODI3MTMzMzM5OTRlOWI4ZWU1ODc1ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTktMTAtMzEgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBGbHVzaCB0
aGUgc2hhcmVkIFJlc291cmNlTG9hZE9ic2VydmVyIHdoZW4gdGhlIHdlYnBhZ2UgaXMgY2xvc2Vk
IGJ5IEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMzYyMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY3NTY0Mjc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRz
IGZsdXNoaW5nIG9mIHBlbmRpbmcgc3RhdGlzdGljcyB3aGVuIGEgd2luZG93IGlzIGNsb3NlZCBi
eSBKYXZhU2NyaXB0LAorICAgICAgICB3aGVuIGEgd2VicGFnZSBpcyByZW1vdmVkIGZyb20gdGhl
IHdlYiBwcm9jZXNzLCBhbmQgd2hlbiB0aGUgd2ViIHByb2Nlc3MgcHJlcGFyZXMgdG8KKyAgICAg
ICAgc3VzcGVuZC4KKworICAgICAgICBOZXcgQVBJIHRlc3QgYWRkZWQuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVz
b3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQpOgorICAgICAgICAgICAgTm93IGNhbGxzIGxvZ1Rl
c3RpbmdFdmVudCgpIHNvIHRoYXQgdGhlIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgY2FuIHdhaXQgZm9y
IHVwZGF0ZXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
OgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9zZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Zv
clRlc3RpbmdXaXRoRmlyc3RQYXJ0eTp0aGlyZFBhcnR5OnNob3VsZFNjaGVkdWxlTm90aWZpY2F0
aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVy
ZSB0byBzZWVkIGV2ZXJ5IHdlYiBwcm9jZXNzJyBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZl
ciB3aXRoIHRlc3QgZGF0YS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2xQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmUubW06CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfY2xlYXJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2lzUmVn
aXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0UGFydHk6dGhpcmRQYXJ0eTpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgICAgIFRlc3QgaW5mcmFzdHJ1Y3R1cmUuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyk6CisgICAgICAg
ICAgICBUZXN0IGluZnJhc3RydWN0dXJlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6aXNSZWdpc3RlcmVkQXNT
dWJyZXNvdXJjZVVuZGVyKToKKyAgICAgICAgICAgIE1hZGUgc3VyZSB0aGUgY29tcGxldGlvbiBo
YW5kbGVyIGlzIGNhbGxlZCBldmVuIGlmIHRoZXJlIGlzIG5vIG5ldHdvcmsgcHJvY2Vzcy4KKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQpOgorICAgICAgICAgICAgTm93IHRlbGxzIGFsbCB3ZWIgcHJvY2Vzc2VzIHRvIHR1
cm4gSVRQIG9uIG9yIG9mZi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlJlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6On5XZWJSZXNvdXJjZUxvYWRPYnNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmdGb3JUZXN0aW5n
KToKKyAgICAgICAgICAgIFRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gc2VlZCB0aGUgb2JzZXJ2ZXIg
d2l0aCB0ZXN0IGRhdGEuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgICAgIFRoZXNl
IGZ1bmN0aW9ucyBub3cgY2FsbCBXZWJQcm9jZXNzOjpmbHVzaFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKS4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQpOgorICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBub3cgc2V0cyB0aGUgcHJv
Y2Vzcycgc2hhcmVkIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpmbHVzaFJlc291cmNlTG9hZFN0YXRpc3RpY3MpOgorICAgICAgICAg
ICAgVGhpcyBmdW5jdGlvbiB0ZWxscyB0aGUgc2hhcmVkIFdlYkNvcmU6OlJlc291cmNlTG9hZE9i
c2VydmVyIHRvIHNlbmQgYW55IHBlbmRpbmcKKyAgICAgICAgICAgIHN0YXRpc3RpY3MgdG8gdGhl
IGNlbnRyYWwgSVRQIHN0b3JlLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZWVkUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcpOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0
cnVjdHVyZSB0byBzZWVkIHRoZSBzaGFyZWQgb2JzZXJ2ZXIgd2l0aCB0ZXN0IGRhdGEuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE5LTEwLTMxICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVs
bEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1MTg1NC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4
IGUxNjU2MzdlYTMzM2JhZWQ5YmY1OWZmNjAyMTdkODkxYTg0MDJkMzYuLjU4MjQxNTBlMWU2Njc5
OWNjNGI3ODJkODY5OWU2NGYzZjhhOTMwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCIKKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw4ICs0
Myw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFNoYXJlZChSZXNvdXJjZUxvYWRP
YnNlcnZlciYgb2JzZXJ2ZXIpCiAKIFJlc291cmNlTG9hZE9ic2VydmVyJiBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkKCkKIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVzb3VyY2VM
b2FkT2JzZXJ2ZXI+IGVtcHR5T2JzZXJ2ZXI7CiAgICAgaWYgKCFzaGFyZWRPYnNlcnZlcigpKQot
ICAgICAgICBzaGFyZWRPYnNlcnZlcigpID0gbmV3IFJlc291cmNlTG9hZE9ic2VydmVyOworICAg
ICAgICByZXR1cm4gZW1wdHlPYnNlcnZlcjsKICAgICByZXR1cm4gKnNoYXJlZE9ic2VydmVyKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNl
cnZlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKaW5k
ZXggZTc0ZDVmNjZmYWQxZTc5NzJiZWVhMTk4Njg4ZWJmZTcyZGJiNDI4OS4uZmQ2NTE1NWFlZTg5
OTZjMzU0NThhNmZhZTJmZDNiZmM0MTRmMGI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE9ic2VydmVyLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBsb2dDYW52YXNXcml0ZU9yTWVhc3VyZShjb25zdCBEb2N1bWVudCYsIGNvbnN0
IFN0cmluZyYgLyogdGV4dFdyaXR0ZW4gKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2dOYXZp
Z2F0b3JBUElBY2Nlc3NlZChjb25zdCBEb2N1bWVudCYsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3M6Ok5hdmlnYXRvckFQSSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvZ1NjcmVlbkFQSUFj
Y2Vzc2VkKGNvbnN0IERvY3VtZW50JiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6U2Ny
ZWVuQVBJKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9nU3VicmVzb3VyY2VMb2FkaW5nRm9yVGVz
dGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgLyogZmlyc3RQYXJ0eURvbWFpbiAqLywgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIC8qIHRoaXJkUGFydHlEb21haW4gKi8sIGJvb2wgLyogc2hv
dWxkU2NoZWR1bGVOb3RpZmljYXRpb24gKi8pIHsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgc3Rh
dGlzdGljc0ZvclVSTChjb25zdCBVUkwmKSB7IHJldHVybiB7IH07IH0KICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCmluZGV4IGM3MGYzMzc1Y2YyODc5YjUwNzhlODcwNGJjNDdkMmM0YzQzMzU0ZjEuLjBh
Y2U5ZWM3YmQ1OTNhNjc3YjI2ZDE5M2VjMDVjNjk3MTkwN2NlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKQEAgLTEwNTgsNiArMTA1OCw4IEBAIHZvaWQgRE9NV2luZG93OjpjbG9zZSgp
CiAgICAgaWYgKCFmcmFtZS0+bG9hZGVyKCkuc2hvdWxkQ2xvc2UoKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnVwZGF0ZUNlbnRyYWxTdGF0
aXN0aWNzU3RvcmUoKTsKKwogICAgIHBhZ2UtPnNldElzQ2xvc2luZygpOwogICAgIHBhZ2UtPmNo
cm9tZSgpLmNsb3NlV2luZG93U29vbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBkY2JkZDg4MzUyNTRhZWRmMThkMTQyMmM1NGUw
Y2I3MTVlN2U1YmNlLi5kZDdkYzViMjI5NmQxYjNlZTYxMmUxNWQ1YjYxZjE5ZDk1YjhjY2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAt
MjczLDcgKzI3Myw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8UmVzb3VyCiAgICAgLy8gSXQgaXMgc2Fm
ZSB0byBtb3ZlIHRoZSBvcmlnaW5zIHRvIHRoZSBiYWNrZ3JvdW5kIHF1ZXVlIHdpdGhvdXQgaXNv
bGF0ZWQgY29weSBoZXJlIGJlY2F1c2UgdGhpcyBpcyBhbiByLXZhbHVlCiAgICAgLy8gY29taW5n
IGZyb20gSVBDLiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIG9ubHkgY29udGFpbnMgc3RyaW5ncyB3
aGljaCBhcmUgc2FmZSB0byBtb3ZlIHRvIG90aGVyIHRocmVhZHMgYXMgbG9uZwogICAgIC8vIGFz
IG5vYm9keSBvbiB0aGlzIHRocmVhZCBob2xkcyBhIHJlZmVyZW5jZSB0byB0aG9zZSBzdHJpbmdz
LgotICAgIHBvc3RUYXNrKFt0aGlzLCBzdGF0aXN0aWNzID0gV1RGTW92ZShzdGF0aXN0aWNzKV0o
KSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBzdGF0aXN0aWNzID0gV1RGTW92ZShzdGF0aXN0aWNzKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAt
MjgzLDcgKzI4MywxMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVz
b3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cgogICAgICAgICBtX3N0YXRp
c3RpY3NTdG9yZS0+Y2FuY2VsUGVuZGluZ1N0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdCgpOwog
CiAgICAgICAgIC8vIEZpcmUgYmVmb3JlIHByb2Nlc3Npbmcgc3RhdGlzdGljcyB0byBwcm9wYWdh
dGUgdXNlciBpbnRlcmFjdGlvbiBhcyBmYXN0IGFzIHBvc3NpYmxlIHRvIHRoZSBuZXR3b3JrIHBy
b2Nlc3MuCi0gICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT51cGRhdGVDb29raWVCbG9ja2luZyhb
XSgpIHsgfSk7CisgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT51cGRhdGVDb29raWVCbG9ja2lu
ZyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpXSgpIHsKKyAg
ICAgICAgICAgIHBvc3RUYXNrUmVwbHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRU
aGlzLmNvcHlSZWYoKV0oKSB7CisgICAgICAgICAgICAgICAgbG9nVGVzdGluZ0V2ZW50KCJTdGF0
aXN0aWNzIFVwZGF0ZWQiX3MpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogICAgICAg
ICBtX3N0YXRpc3RpY3NTdG9yZS0+cHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwog
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbQppbmRleCAwYjgxMGI1ZmFlMGUxYWNhNTEwM2I4NTQxOTFiMDQyYTkxMzk5
Y2VhLi4zNDgzMmIxMmQ2OWE1NDA5NzRkZTQ0M2M1ZjRiYjI0ZTMzMGI4MmFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAt
NDksNiArNDksNyBAQAogI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uSW50ZXJu
YWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1BsdWdpbkRhdGEuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4K
ICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CkBAIC02
NTMsNCArNjU0LDE4IEBAIC0gKHZvaWQpX2FsbG93QW55VExTQ2VydGlmaWNhdGVGb3JXZWJTb2Nr
ZXRUZXN0aW5nCiAgICAgX3Byb2Nlc3NQb29sLT5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZv
cldlYlNvY2tldCh0cnVlKTsKIH0KIAorLSAodm9pZClfc2VlZFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6KE5TVVJMICopZmlyc3RQYXJ0eVVSTCB0aGlyZFBh
cnR5OihOU1VSTCAqKXRoaXJkUGFydHlVUkwgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb246KEJP
T0wpc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQorICAgIF9wcm9jZXNzUG9vbC0+c2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JU
ZXN0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgZmlyc3RQYXJ0eVVSTCB9LCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHRoaXJkUGFydHlVUkwgfSwgc2hvdWxkU2NoZWR1bGVO
b3RpZmljYXRpb24sIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildICgpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHlVUkwpOworICAgIFVOVVNFRF9QQVJBTSh0
aGlyZFBhcnR5VVJMKTsKKyAgICBVTlVTRURfUEFSQU0oc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRp
b24pOworICAgIFVOVVNFRF9QQVJBTShjb21wbGV0aW9uSGFuZGxlcik7CisjZW5kaWYKK30KKwog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCAzYTgxZDU5OTk5ZGNjOTk5ZjEzOTNjYzMyOTZiOWJl
YTYwNTJiYmUyLi4xMzAzNWNhNmViMjlmZjJiN2ExZmRmNzUyOWE5ZDkwZGE5YjUxYTRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbFByaXZhdGUuaApAQCAtMTMyLDQgKzEzMiw3IEBACiBAcHJvcGVydHkgKG5vbmF0b21pYywg
Z2V0dGVyPV9pc1N0b3JhZ2VBY2Nlc3NBUElFbmFibGVkLCBzZXR0ZXI9X3NldFN0b3JhZ2VBY2Nl
c3NBUElFbmFibGVkOikgQk9PTCBfc3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0gKHZvaWQpX3N5bnRoZXNpemVBcHBJ
c0JhY2tncm91bmQ6KEJPT0wpYmFja2dyb3VuZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCisvLyBUZXN0IG9ubHkuCistICh2b2lkKV9zZWVk
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmdXaXRoRmlyc3RQYXJ0eTooTlNVUkwgKilm
aXJzdFBhcnR5VVJMIHRoaXJkUGFydHk6KE5TVVJMICopdGhpcmRQYXJ0eVVSTCBzaG91bGRTY2hl
ZHVsZU5vdGlmaWNhdGlvbjooQk9PTClzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbiBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciAgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW0KaW5kZXggNjE0MmYwYjc4MWNmNDE1YTA3ZjA4OTlkYjhjYzk3YmFhOGU0YWFkOC4uYWQw
YjczMWZiOWJhYzg3Njg2YzQ2ZjAzZmE5MTA5YzdkZmExNjRmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJBUElTdHJpbmcuaCIKICNpbXBvcnQgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oIgogI2ltcG9ydCAiQ29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlci5oIgorI2ltcG9ydCAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNz
LmgiCiAjaW1wb3J0ICJXS0hUVFBDb29raWVTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS05T
QXJyYXkuaCIKICNpbXBvcnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgpAQCAt
NDk1LDYgKzQ5NiwyOCBAQCAtICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFpbjooTlNVUkwgKilk
b21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKQogI2VuZGlmCiB9CiAKKy0g
KHZvaWQpX2NsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljczoodm9pZCAoXikodm9pZCkpY29tcGxl
dGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAg
IF93ZWJzaXRlRGF0YVN0b3JlLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdl
YktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpObywgW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgfSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cisj
ZW5kaWYKK30KKworLSAodm9pZClfaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyRmlyc3RQ
YXJ0eTooTlNVUkwgKilmaXJzdFBhcnR5VVJMIHRoaXJkUGFydHk6KE5TVVJMICopdGhpcmRQYXJ0
eVVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIK
K3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT5pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIodGhpcmRQYXJ0eVVSTCwgZmly
c3RQYXJ0eVVSTCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0oYm9vbCBlbmFibGVkKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVuYWJs
ZWQpOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihOTyk7CisjZW5kaWYK
K30KKwogLSAodm9pZClfcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkczoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKaW5kZXggMDRlM2M3ODFjZDUxMjE5NzA4
MmM5YTU2YmY0ZGEzYTQxZTM5MzMyOS4uMzFiODBhYjQyNTEyZjVkNmIwNGNiNzQzZmJmNjIzNTMx
N2VhNzkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC03MCw3ICs3MCw5IEBAIHR5
cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRp
b25zKSB7CiAtICh2b2lkKV9zY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlOih2b2lkICheKSh2
b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfc2V0UHJldmFsZW50RG9tYWluOihOU1VSTCAq
KWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRs
ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
IC0gKHZvaWQpX2dldElzUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZvaWQpX2NsZWFyUHJl
dmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFpbjoo
TlNVUkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CistICh2b2lkKV9jbGVhclJlc291cmNlTG9hZFN0YXRpc3RpY3M6KHZvaWQgKF4pKHZv
aWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5k
ZXJGaXJzdFBhcnR5OihOU1VSTCAqKWZpcnN0UGFydHlVUkwgdGhpcmRQYXJ0eTooTlNVUkwgKil0
aGlyZFBhcnR5VVJMIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MKSljb21wbGV0aW9u
SGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogLSAodm9pZClfcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkczoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQHByb3BlcnR5IChudWxsYWJsZSwgbm9uYXRvbWljLCB3
ZWFrKSBpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiBfZGVsZWdhdGUgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA1NjM5ZWJiMWMzNDgwZWIxYzhk
YWFlYjY1MjFhNWE5MjUyZmZjOTZmLi5hMTUyNjdmMGM1MDE5MzFhZjIyN2MyMTMwMzc5YjQ5ZWU2
Y2YzZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBA
IC04OSwxMCArODksMTIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UHJvY2Vzc1dhcm1pbmcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYXRpb25EYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3Rm
L0NhbGxiYWNrQWdncmVnYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBA
IC0yMzQ2LDYgKzIzNDgsMTQgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkQ29tbWl0Q3Jvc3NT
aXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKIAogICAgIG1fbmV0
d29ya1Byb2Nlc3MtPmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKHNlc3Np
b25JRCwgZnJvbURvbWFpbiwgdG9Eb21haW4sIG5hdmlnYXRpb25EYXRhVHJhbnNmZXIsIHdlYlBh
Z2VQcm94eUlELCB3ZWJQYWdlSUQpOwogfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZWVkUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZp
cnN0UGFydHlEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWlu
LCBib29sIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzZXMoKSkKKyAgICAgICAgcHJvY2Vz
cy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZWVkUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoZmlyc3RQYXJ0eURvbWFpbiwgdGhpcmRQYXJ0eURvbWFp
biwgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24pLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2Fs
bGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKK30KICNlbmRpZgogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhQcm9jZXNzSWRlbnRpZmllciBwcm9j
ZXNzSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBmZTE5
ZGZmYzI5ZWZjYThkNmE0MjI2MmM3ZmM0YzlkMGEyMDI2MzU3Li5kMzAyMTUyM2FmMDY5OGZjN2My
MDQyMjk0ZmZlZDZmZmUwYWY5NDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
UmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFz
aC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHBh
bC9TZXNzaW9uSUQuaD4KQEAgLTkwLDYgKzg5LDcgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogc3Ry
dWN0IE1vY2tNZWRpYURldmljZTsKIH0KIApAQCAtNDk1LDYgKzQ5NSw3IEBAIHB1YmxpYzoKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBkaWRDb21taXRD
cm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5hdmlnYXRp
b25EYXRhVHJhbnNmZXI6OkZsYWc+LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcik7CisgICAgdm9pZCBzZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRl
c3RpbmcoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4s
IGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWluLCBib29s
IHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKaW5kZXggMTVkY2FiMjJkZGI1MGIxNmZhNGYyNThmZWRjYjIwZTJjNmEzZWJiMS4uMmRm
OWQ3Zjk5YzkwNjIzNTQxZTc1ODI2YzA1M2FmNzk3ZTc0YmEwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
QEAgLTEzNjksNiArMTM2OSwxMCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmlzUmVnaXN0ZXJl
ZEFzU3VicmVzb3VyY2VVbmRlcihjb25zdCBVUkwmIHN1YnJlc291cmNlVVJMLAogICAgICAgICAg
ICAgcHJvY2Vzcy0+aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKG1fc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHN1YnJlc291cmNlVVJMIH0sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHsgdG9wRnJhbWVVUkwgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgICAgICAgICAgQVNTRVJUKHByb2Nlc3NQb29scygpLnNpemUoKSA9PSAxKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE5NjEsMTMgKzE5NjUsMTcg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChib29sIGVuYWJsZWQpCiAgICAgICAgIAogICAgICAgICByZXNvbHZlRGlyZWN0b3JpZXNJZk5l
Y2Vzc2FyeSgpOwogICAgICAgICAKLSAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHBy
b2Nlc3NQb29scyhzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBmYWxzZSkpCisg
ICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSwgZmFsc2UpKSB7CiAgICAgICAgICAgICBwcm9jZXNzUG9v
bC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChtX3Nlc3Npb25JRCwgdHJ1ZSkpOworICAgICAg
ICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vz
czo6U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQodHJ1ZSkpOworICAgICAgICB9CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJv
Y2Vzc1Bvb2xzKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIGZhbHNlKSkKKyAg
ICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKHN0ZDo6bnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KCksIGZhbHNlKSkgewogICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRv
TmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZChtX3Nlc3Npb25JRCwgZmFsc2UpKTsKKyAgICAgICAgcHJvY2Vz
c1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZmFsc2UpKTsKKyAgICB9CiAKICAgICBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkID0gZmFsc2U7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlci5jcHAKaW5kZXggOWVkMmEwNThiYTE0ZjA2NDY4NTA2ZWUzNzIxM2IxMjBi
M2EzZTZlYS4uNWU0ZjA2NzMxYzk4MmU0MGJiOGU1YjcyYmU2MWM0MmEyZGI0OTk1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNl
TG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC02NSw2ICs2NSwxMiBAQCBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKQogewogfQogCitX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6fldlYlJlc291cmNlTG9hZE9ic2VydmVyKCkKK3sKKyAg
ICBpZiAoaGFzU3RhdGlzdGljcygpKQorICAgICAgICB1cGRhdGVDZW50cmFsU3RhdGlzdGljc1N0
b3JlKCk7Cit9CisKIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBEb2N1bWVudCYgb3Bl
bmVyRG9jdW1lbnQpCiB7CiAgICAgYXV0byBvcGVuZXJVcmwgPSBvcGVuZXJEb2N1bWVudC51cmwo
KTsKQEAgLTM1Niw2ICszNjIsMTkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9n
VXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdAogI2VuZGlmCiB9
CiAKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZ0Zv
clRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3VsZFNjaGVkdWxl
Tm90aWZpY2F0aW9uKQoreworICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNv
dXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbih0aGlyZFBhcnR5RG9tYWluKTsKKyAg
ICBhdXRvIGxhc3RTZWVuID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6cmVkdWNlVGltZVJlc29s
dXRpb24oV2FsbFRpbWU6Om5vdygpKTsKKyAgICB0YXJnZXRTdGF0aXN0aWNzLmxhc3RTZWVuID0g
bGFzdFNlZW47CisgICAgdGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVE
b21haW5zLmFkZChmaXJzdFBhcnR5RG9tYWluKTsKKworICAgIGlmIChzaG91bGRTY2hlZHVsZU5v
dGlmaWNhdGlvbikKKyAgICAgICAgc2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCgpOworICAg
IGVsc2UKKyAgICAgICAgbV9ub3RpZmljYXRpb25UaW1lci5zdG9wKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmgKaW5kZXggZDZiOGQ4Nzc1ODc4YjRi
NjhjNTE3NGE5OTQ4OGM5MTNkYjRkMGFkYy4uOTJkZTdiY2U2NmM5MjQwNTRjNjY0YzQzMWZlYWU0
NTJiNDZkNmRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmgKQEAgLTM3LDcg
KzM3LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
ciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlciB7CiBwdWJsaWM6
CiAgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKTsKLSAgICAKKyAgICB+V2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIoKTsKKwogICAgIHZvaWQgbG9nU3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0IFdl
YkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5h
bDsKICAgICB2b2lkIGxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiB0YXJnZXRVUkwsIGNv
bnN0IFVSTCYgbWFpbkZyYW1lVVJMKSBmaW5hbDsKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlv
bldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24oY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmKSBmaW5h
bDsKQEAgLTQ2LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9nQ2FudmFzV3JpdGVPck1l
YXN1cmUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHRleHRXcml0dGVu
KSBmaW5hbDsKICAgICB2b2lkIGxvZ05hdmlnYXRvckFQSUFjY2Vzc2VkKGNvbnN0IFdlYkNvcmU6
OkRvY3VtZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6TmF2aWdh
dG9yQVBJKSBmaW5hbDsKICAgICB2b2lkIGxvZ1NjcmVlbkFQSUFjY2Vzc2VkKGNvbnN0IFdlYkNv
cmU6OkRvY3VtZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6U2Ny
ZWVuQVBJKSBmaW5hbDsKKyAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZ0ZvclRlc3Rpbmco
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3Vs
ZFNjaGVkdWxlTm90aWZpY2F0aW9uKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
IHN0YXRpYyB2b2lkIHNldFNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbihib29sKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA2YzE2ZmEwMWRmMTVlNTU0ZDE1OTli
MWE4NmZiOTcyYjIwZTE3ODM2Li43ZDUwNzBlZTkyMzI2YTMyODU5MmM2MjI5N2M0M2FlYTZhMTkw
MjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC02NzEsNiAr
NjcxLDggQEAgdm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCkKIHsKICAgICBBU1NFUlQobV9wYWdlTWFwLmNvbnRhaW5zKHBhZ2VJRCkpOwogCisgICAg
Zmx1c2hSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisKICAgICBwYWdlV2lsbExlYXZlV2luZG93
KHBhZ2VJRCk7CiAgICAgbV9wYWdlTWFwLnJlbW92ZShwYWdlSUQpOwogCkBAIC0xMzgzLDYgKzEz
ODUsOCBAQCB2b2lkIFdlYlByb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNp
b25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dgogICAgIFNldEZvclNjb3BlPGJvb2w+IHN1
c3BlbnNpb25TY29wZShtX2lzU3VzcGVuZGluZywgdHJ1ZSk7CiAgICAgbV9wcm9jZXNzSXNTdXNw
ZW5kZWQgPSB0cnVlOwogCisgICAgZmx1c2hSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobV9wcm9jZXNzVHlwZSA9PSBQcm9jZXNzVHlwZTo6
UHJld2FybWVkV2ViQ29udGVudCkgewogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIiVwIC0gV2ViUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCgpIFByb2Nlc3MgaXMgcmVh
ZHkgdG8gc3VzcGVuZCIsIHRoaXMpOwpAQCAtMTU1Miw3ICsxNTU2LDEzIEBAIFN0b3JhZ2VBcmVh
TWFwKiBXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRl
bnRpZmllcikgY29uCiAKIHZvaWQgV2ViUHJvY2Vzczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQoYm9vbCBlbmFibGVkKQogeworICAgIGlmIChXZWJDb3JlOjpEZXByZWNhdGVkR2xv
YmFsU2V0dGluZ3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgPT0gZW5hYmxlZCB8
fCBtX3Nlc3Npb25JRC0+aXNFcGhlbWVyYWwoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIFdlYkNv
cmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoZW5hYmxlZCk7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAg
ICBpZiAoZW5hYmxlZCAmJiAhUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZElmRXhpc3RzKCkp
CisgICAgICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTaGFyZWQoKm5ldyBX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlcik7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpj
bGVhclJlc291cmNlTG9hZFN0YXRpc3RpY3MoKQpAQCAtMTU2Myw2ICsxNTczLDIzIEBAIHZvaWQg
V2ViUHJvY2Vzczo6Y2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkKICNlbmRpZgogfQogCit2
b2lkIFdlYlByb2Nlc3M6OmZsdXNoUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpCit7CisjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBpZiAoYXV0byogb2JzZXJ2ZXIgPSBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkSWZFeGlzdHMoKSkKKyAgICAgICAgb2JzZXJ2ZXIt
PnVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNzU3RvcmUoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlBy
b2Nlc3M6OnNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRo
aXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmIChhdXRvKiBvYnNlcnZlciA9IFJlc291cmNl
TG9hZE9ic2VydmVyOjpzaGFyZWRJZkV4aXN0cygpKQorICAgICAgICBvYnNlcnZlci0+bG9nU3Vi
cmVzb3VyY2VMb2FkaW5nRm9yVGVzdGluZyhmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5RG9t
YWluLCBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbik7CisjZW5kaWYKKyAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworfQorCiBSZWZQdHI8QVBJOjpPYmplY3Q+IFdlYlByb2Nlc3M6OnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHMoQVBJOjpPYmplY3QqIG9iamVjdCkKIHsKICAgICBzdHJ1Y3QgVHJh
bnNmb3JtZXIgZmluYWwgOiBVc2VyRGF0YTo6VHJhbnNmb3JtZXIgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggYzI0YmNiZDgxOTQzOTdkODhmYzFjM2MyYTI1NjhhOWRh
NmEzZjE1NS4uY2Q2MTJmZmQ1OTM5NTZlNjM5OWUyZTAyMGVhMTZjNmExZWRiYzRiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC04Nyw2ICs4Nyw3IEBAIGNsYXNzIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOwogY2xhc3MgQ1BVTW9uaXRvcjsKIGNsYXNzIENlcnRpZmlj
YXRlSW5mbzsKIGNsYXNzIFBhZ2VHcm91cDsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgVXNlckdlc3R1cmVUb2tlbjsKIHN0cnVjdCBCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyOwpAQCAtMzQ2LDYgKzM0Nyw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZXRTaG91bGRVc2VGb250U21vb3RoaW5nKGJvb2wpOwogICAgIHZvaWQgc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBjbGVhclJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKTsKKyAgICB2b2lkIGZsdXNoUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwor
ICAgIHZvaWQgc2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JUZXN0aW5nKGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYgdGhpcmRQYXJ0eURvbWFpbiwgYm9vbCBzaG91bGRTY2hlZHVsZU5v
dGlmaWNhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CiAg
ICAgdm9pZCBmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFj
Y2Vzc0VuYWJsZWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IDEwOTQxZjA4Mzk4NWNiMDE3ZmQwZWI0NDUzZTA4Mjg3NjdlYmUy
ZDcuLjU4ZDRmNjdiZWYxZDRmNzExZGU1ZDM2OWE1NDQwNzM0MmI3YjczYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xNjAsNCAr
MTYwLDggQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgU2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lv
bihzdHJ1Y3QgV2ViS2l0OjpVc2VyTWVzc2FnZSB1c2VyTWVzc2FnZSkKICNlbmRpZgorCisjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBTZWVkUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZvclRlc3RpbmcoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURv
bWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGhpcmRQYXJ0eURvbWFpbiwgYm9vbCBz
aG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbikgLT4gKCkgQXN5bmMKKyNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU3ZmM1MzMwMmY0
ZjVjZGUzZGYzZWQyY2U1YTFjN2M3ZTMwNDNlNTIuLmVlZDBkNWExMjA1ODI4NmY3ZDIwOTFlZDNi
ZTM4ZjM1ODQyMzE2NTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0xMC0zMSAgSm9obiBXaWxhbmRlciAgPHdp
bGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IEZs
dXNoIHRoZSBzaGFyZWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXIgd2hlbiB0aGUgd2VicGFnZSBpcyBj
bG9zZWQgYnkgSmF2YVNjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAzNjIzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81Njc1NjQyNz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbToKKyAgICAg
ICAgKFRFU1QpOgorCiAyMDE5LTEwLTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgRXhwb3NlIG1vcmUgV0tQcmVmZXJlbmNlcyBTUEkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQppbmRleCBhZjY0NDg1Y2E2YTU0MDE3MzkzNzc2N2Zl
ZmViMWVkMzRlMDkyZDJlLi5hNzIxZDI0YmUyZjdiZGZjN2I4MmQ2NjFhYmIxYjZiOTQ2NmQwMzQ1
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCkBAIC00ODQsMyArNDg0LDY2IEBAIFRF
U1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgTm9NZXNzYWdlc1doZW5Ob3RUZXN0aW5nKQogICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJdOwogICAg
IEVYUEVDVF9GQUxTRShbV0tXZWJzaXRlRGF0YVN0b3JlIF9kZWZhdWx0RGF0YVN0b3JlRXhpc3Rz
XSk7CiB9CisKK1RFU1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgRmx1c2hPYnNlcnZlcldoZW5X
ZWJQYWdlSXNDbG9zZWRCeUphdmFTY3JpcHQpCit7CisgICAgYXV0byAqc2hhcmVkUHJvY2Vzc1Bv
b2wgPSBbV0tQcm9jZXNzUG9vbCBfc2hhcmVkUHJvY2Vzc1Bvb2xdOworICAgIGF1dG8gKmRhdGFT
dG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CisKKyAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOiBzaGFyZWRQcm9jZXNz
UG9vbF07CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gZGF0YVN0
b3JlOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKKworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiV2ViS2l0
IFRlc3QiIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJd
XTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAg
ICBbZGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpZRVNdOworCisg
ICAgc3RhdGljIGJvb2wgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9jbGVhclJl
c291cmNlTG9hZFN0YXRpc3RpY3M6Xih2b2lkKSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsK
KyAgICB9XTsKKworICAgIHN0YXRpYyBib29sIHN0YXRpc3RpY3NVcGRhdGVkID0gZmFsc2U7Cisg
ICAgW2RhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpe
KFdLV2Vic2l0ZURhdGFTdG9yZSAqLCBOU1N0cmluZyAqbWVzc2FnZSkgeworICAgICAgICBpZiAo
IVttZXNzYWdlIGlzRXF1YWxUb1N0cmluZzpAIlN0YXRpc3RpY3MgVXBkYXRlZCJdKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBzdGF0aXN0aWNzVXBkYXRlZCA9IHRydWU7CisgICAgfV07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAgIC8vIFNl
ZWQgdGVzdCBkYXRhIGluIHRoZSB3ZWIgcHJvY2Vzcycgb2JzZXJ2ZXIuCisgICAgZG9uZUZsYWcg
PSBmYWxzZTsKKyAgICBbc2hhcmVkUHJvY2Vzc1Bvb2wgX3NlZWRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRm9yVGVzdGluZ1dpdGhGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDov
L3dlYmtpdC5vcmciXSB0aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2
aWwuY29tIl0gc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb246Tk8gY29tcGxldGlvbkhhbmRsZXI6
IF4oKSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICAKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAgIC8vIENoZWNrIHRoYXQgdGhl
IHRoaXJkLXBhcnR5IGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZC4KKyAgICBkb25lRmxhZyA9IGZhbHNl
OworICAgIFtkYXRhU3RvcmUgX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0UGFy
dHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdIHRoaXJkUGFydHk6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbC5jb20iXSBjb21wbGV0aW9uSGFuZGxl
cjogXihCT09MIGlzUmVnaXN0ZXJlZCkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoaXNSZWdpc3Rl
cmVkKTsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICBzdGF0aXN0aWNzVXBkYXRlZCA9IGZh
bHNlOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGJvZHk+PHNjcmlwdD5jbG9zZSgp
Ozwvc2NyaXB0PjwvYm9keT4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8v
d2Via2l0Lm9yZyJdXTsKKworICAgIC8vIFdhaXQgZm9yIHRoZSBzdGF0aXN0aWNzIHRvIGJlIHVw
ZGF0ZWQgaW4gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnN0YXRpc3RpY3NVcGRhdGVkKTsKKworICAgIC8vIENoZWNrIHRoYXQgdGhlIHRoaXJkLXBh
cnR5IGlzIG5vdyByZWdpc3RlcmVkLgorICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFT
dG9yZSBfaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyRmlyc3RQYXJ0eTpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl0gdGhpcmRQYXJ0eTpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImh0dHA6Ly9ldmlsLmNvbSJdIGNvbXBsZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNS
ZWdpc3RlcmVkKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGlzUmVnaXN0ZXJlZCk7CisgICAgICAg
IGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZUZsYWcpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382751</attachid>
            <date>2019-11-04 11:03:28 -0800</date>
            <delta_ts>2019-11-04 14:13:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203623-20191104110327.patch</filename>
            <type>text/plain</type>
            <size>31504</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E2ZjkwODJhNGU2YzUx
NzA3YmRkMWFlY2JhZmZmZjE5NjliMmQxNS4uMDY2MzJkODk0OWQxNTEzZmNmNzY0YzI1NWVlMjQz
Y2Y2ZjQ0NTUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTExLTA0ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogRmx1c2ggdGhlIHNoYXJlZCBSZXNvdXJjZUxvYWRPYnNlcnZlciB3aGVuIHRo
ZSB3ZWJwYWdlIGlzIGNsb3NlZCBieSBKYXZhU2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM2MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU2NzU2NDI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5ldyBBUEkgdGVzdCBhZGRlZC4KKworICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRP
YnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hh
cmVkKToKKyAgICAgICAgICAgIE5vdyByZXR1cm5zIGl0cyBvd24gZW1wdHkgb2JzZXJ2ZXIgaWYg
bm8gc2hhcmVkIG9uZSBoYXMgYmVlbiBzZXQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZE9ic2VydmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9n
U3VicmVzb3VyY2VMb2FkaW5nRm9yVGVzdGluZyk6CisgICAgICAgICAgICBUZXN0IGZ1bmN0aW9u
IHRvIHNlZWQgdGhlIHdlYiBwcm9jZXNzJyBvYnNlcnZlci4KKyAgICAgICAgKiBwYWdlL0RPTVdp
bmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNsb3NlKToKKyAgICAgICAg
ICAgIE5vdyBmbHVzaGVzIHRoZSBzaGFyZWQgb2JzZXJ2ZXIuCisKIDIwMTktMTEtMDQgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNT
SU9OKHIyNDM5NDcpIEVwc29uIHNvZnR3YXJlIHVwZGF0ZXIgZmFpbHMgdG8gaW5zdGFsbCBuZXcg
dmVyc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAxYmU1NzI5NDkwZWU3Yzc1Mjc2ZDc2NTYwYTBmMDI1MTRjNDEz
ZWM4Li41ZDUxMTU5MDE1M2Q0ZGM4ZmJkNmI2M2Q2NDI5YTY4MWMwZTM1Y2ViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU5IEBACisyMDE5LTExLTA0ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljczogRmx1c2ggdGhlIHNo
YXJlZCBSZXNvdXJjZUxvYWRPYnNlcnZlciB3aGVuIHRoZSB3ZWJwYWdlIGlzIGNsb3NlZCBieSBK
YXZhU2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDM2MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2NzU2NDI3PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBmbHVz
aGluZyBvZiBwZW5kaW5nIHN0YXRpc3RpY3Mgd2hlbiBhIHdpbmRvdyBpcyBjbG9zZWQgYnkgSmF2
YVNjcmlwdCwKKyAgICAgICAgd2hlbiBhIHdlYnBhZ2UgaXMgcmVtb3ZlZCBmcm9tIHRoZSB3ZWIg
cHJvY2VzcywgYW5kIHdoZW4gdGhlIHdlYiBwcm9jZXNzIHByZXBhcmVzIHRvCisgICAgICAgIHN1
c3BlbmQuCisKKyAgICAgICAgTmV3IEFQSSB0ZXN0IGFkZGVkLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNl
TG9hZFN0YXRpc3RpY3NVcGRhdGVkKToKKyAgICAgICAgICAgIE5vdyBjYWxscyBsb2dUZXN0aW5n
RXZlbnQoKSBzbyB0aGF0IHRoZSB0ZXN0IGluZnJhc3RydWN0dXJlIGNhbiB3YWl0IGZvciB1cGRh
dGVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAg
ICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JUZXN0
aW5nV2l0aEZpcnN0UGFydHk6dGhpcmRQYXJ0eTpzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbjpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgICAgIFRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8g
c2VlZCBldmVyeSB3ZWIgcHJvY2VzcycgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXIgd2l0
aCB0ZXN0IGRhdGEuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2NsZWFyUmVzb3VyY2VMb2Fk
U3RhdGlzdGljczpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pc1JlZ2lzdGVy
ZWRBc1N1YnJlc291cmNlVW5kZXJGaXJzdFBhcnR5OnRoaXJkUGFydHk6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgICAgICBUZXN0IGluZnJhc3RydWN0dXJlLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpzZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcpOgorICAgICAgICAgICAg
VGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmlzUmVnaXN0ZXJlZEFzU3VicmVz
b3VyY2VVbmRlcik6CisgICAgICAgICAgICBNYWRlIHN1cmUgdGhlIGNvbXBsZXRpb24gaGFuZGxl
ciBpcyBjYWxsZWQgZXZlbiBpZiB0aGVyZSBpcyBubyBuZXR3b3JrIHByb2Nlc3MuCisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkKToKKyAgICAgICAgICAgIE5vdyB0ZWxscyBhbGwgd2ViIHByb2Nlc3NlcyB0byB0dXJuIElU
UCBvbiBvciBvZmYuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNv
dXJjZUxvYWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9i
c2VydmVyOjp+V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nRm9yVGVzdGluZyk6Cisg
ICAgICAgICAgICBUZXN0IGluZnJhc3RydWN0dXJlIHRvIHNlZWQgdGhlIG9ic2VydmVyIHdpdGgg
dGVzdCBkYXRhLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cyk6CisgICAgICAgICAgICBOb3cgY2hlY2tzIHdoZXRoZXIgYSBzaGFyZWQgb2JzZXJ2ZXIgYWxy
ZWFkeSBleGlzdHMgYmVmb3JlIHNldHRpbmcgb25lLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpyZW1vdmVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cHJlcGFy
ZVRvU3VzcGVuZCk6CisgICAgICAgICAgICBUaGVzZSB0d28gZnVuY3Rpb25zIG5vdyBjYWxsIFdl
YlByb2Nlc3M6OmZsdXNoUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk6CisgICAgICAg
ICAgICBUaGlzIGZ1bmN0aW9uIG5vdyBzZXRzIHRoZSBwcm9jZXNzJyBzaGFyZWQgV2ViQ29yZTo6
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIgaWYgbm9uZSBleGlzdHMuCisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OmZsdXNoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyk6CisgICAgICAgICAgICBUaGlz
IGZ1bmN0aW9uIHRlbGxzIHRoZSBzaGFyZWQgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXIg
dG8gc2VuZCBhbnkgcGVuZGluZworICAgICAgICAgICAgc3RhdGlzdGljcyB0byB0aGUgY2VudHJh
bCBJVFAgc3RvcmUuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNlZWRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRm9yVGVzdGluZyk6CisgICAgICAgICAgICBUZXN0IGluZnJhc3RydWN0dXJl
IHRvIHNlZWQgdGhlIHNoYXJlZCBvYnNlcnZlciB3aXRoIHRlc3QgZGF0YS4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisKIDIwMTktMTEtMDMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIEN0YXBBdXRoZW50aWNhdG9yOjp0cnlEb3duZ3Jh
ZGUgc2hvdWxkIGRpc3Rpbmd1aXNoIHJlcXVlc3REYXRhKCkub3B0aW9ucwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKaW5kZXggZTE2NTYzN2VhMzMz
YmFlZDliZjU5ZmY2MDIxN2Q4OTFhODQwMmQzNi4uNTgyNDE1MGUxZTY2Nzk5Y2M0Yjc4MmQ4Njk5
ZTY0ZjNmOGE5MzBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDggKzQzLDkgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U2hhcmVkKFJlc291cmNlTG9hZE9ic2VydmVyJiBvYnNl
cnZlcikKIAogUmVzb3VyY2VMb2FkT2JzZXJ2ZXImIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFy
ZWQoKQogeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXNvdXJjZUxvYWRPYnNlcnZlcj4g
ZW1wdHlPYnNlcnZlcjsKICAgICBpZiAoIXNoYXJlZE9ic2VydmVyKCkpCi0gICAgICAgIHNoYXJl
ZE9ic2VydmVyKCkgPSBuZXcgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI7CisgICAgICAgIHJldHVybiBl
bXB0eU9ic2VydmVyOwogICAgIHJldHVybiAqc2hhcmVkT2JzZXJ2ZXIoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAppbmRleCBlNzRkNWY2NmZh
ZDFlNzk3MmJlZWExOTg2ODhlYmZlNzJkYmI0Mjg5Li5mZDY1MTU1YWVlODk5NmMzNTQ1OGE2ZmFl
MmZkM2JmYzQxNGYwYjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxv
Z0NhbnZhc1dyaXRlT3JNZWFzdXJlKGNvbnN0IERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiAvKiB0
ZXh0V3JpdHRlbiAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvZ05hdmlnYXRvckFQSUFjY2Vz
c2VkKGNvbnN0IERvY3VtZW50JiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6TmF2aWdh
dG9yQVBJKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9nU2NyZWVuQVBJQWNjZXNzZWQoY29uc3Qg
RG9jdW1lbnQmLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpTY3JlZW5BUEkpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRpbmdGb3JUZXN0aW5nKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiAvKiBmaXJzdFBhcnR5RG9tYWluICovLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgLyogdGhpcmRQYXJ0eURvbWFpbiAqLywgYm9vbCAvKiBzaG91bGRTY2hlZHVsZU5v
dGlmaWNhdGlvbiAqLykgeyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyBzdGF0aXN0aWNzRm9yVVJM
KGNvbnN0IFVSTCYpIHsgcmV0dXJuIHsgfTsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDZW50
cmFsU3RhdGlzdGljc1N0b3JlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXgg
YzcwZjMzNzVjZjI4NzliNTA3OGU4NzA0YmM0N2QyYzRjNDMzNTRmMS4uMGFjZTllYzdiZDU5M2E2
NzdiMjZkMTkzZWMwNWM2OTcxOTA3Y2U3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApA
QCAtMTA1OCw2ICsxMDU4LDggQEAgdm9pZCBET01XaW5kb3c6OmNsb3NlKCkKICAgICBpZiAoIWZy
YW1lLT5sb2FkZXIoKS5zaG91bGRDbG9zZSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkudXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSgp
OworCiAgICAgcGFnZS0+c2V0SXNDbG9zaW5nKCk7CiAgICAgcGFnZS0+Y2hyb21lKCkuY2xvc2VX
aW5kb3dTb29uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwCmluZGV4IGRjYmRkODgzNTI1NGFlZGYxOGQxNDIyYzU0ZTBjYjcxNWU3ZTViY2Uu
LmRkN2RjNWIyMjk2ZDFiM2VlNjEyZTE1ZDViNjFmMTlkOTViOGNjYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0yNzMsNyArMjczLDcg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRp
c3RpY3NVcGRhdGVkKFZlY3RvcjxSZXNvdXIKICAgICAvLyBJdCBpcyBzYWZlIHRvIG1vdmUgdGhl
IG9yaWdpbnMgdG8gdGhlIGJhY2tncm91bmQgcXVldWUgd2l0aG91dCBpc29sYXRlZCBjb3B5IGhl
cmUgYmVjYXVzZSB0aGlzIGlzIGFuIHItdmFsdWUKICAgICAvLyBjb21pbmcgZnJvbSBJUEMuIFJl
c291cmNlTG9hZFN0YXRpc3RpY3Mgb25seSBjb250YWlucyBzdHJpbmdzIHdoaWNoIGFyZSBzYWZl
IHRvIG1vdmUgdG8gb3RoZXIgdGhyZWFkcyBhcyBsb25nCiAgICAgLy8gYXMgbm9ib2R5IG9uIHRo
aXMgdGhyZWFkIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRob3NlIHN0cmluZ3MuCi0gICAgcG9zdFRh
c2soW3RoaXMsIHN0YXRpc3RpY3MgPSBXVEZNb3ZlKHN0YXRpc3RpY3MpXSgpIG11dGFibGUgewor
ICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0YXRp
c3RpY3MgPSBXVEZNb3ZlKHN0YXRpc3RpY3MpXSgpIG11dGFibGUgewogICAgICAgICBpZiAoIW1f
c3RhdGlzdGljc1N0b3JlKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yODMsNyArMjgzLDEx
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVXBkYXRlZChWZWN0b3I8UmVzb3VyCiAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5j
YW5jZWxQZW5kaW5nU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0KCk7CiAKICAgICAgICAgLy8g
RmlyZSBiZWZvcmUgcHJvY2Vzc2luZyBzdGF0aXN0aWNzIHRvIHByb3BhZ2F0ZSB1c2VyIGludGVy
YWN0aW9uIGFzIGZhc3QgYXMgcG9zc2libGUgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KLSAgICAg
ICAgbV9zdGF0aXN0aWNzU3RvcmUtPnVwZGF0ZUNvb2tpZUJsb2NraW5nKFtdKCkgeyB9KTsKKyAg
ICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnVwZGF0ZUNvb2tpZUJsb2NraW5nKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCldKCkgeworICAgICAgICAgICAgcG9z
dFRhc2tSZXBseShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigp
XSgpIHsKKyAgICAgICAgICAgICAgICBsb2dUZXN0aW5nRXZlbnQoIlN0YXRpc3RpY3MgVXBkYXRl
ZCJfcyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiAgICAgICAgIG1fc3RhdGlzdGlj
c1N0b3JlLT5wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
CmluZGV4IDBiODEwYjVmYWUwZTFhY2E1MTAzYjg1NDE5MWIwNDJhOTEzOTljZWEuLjM0ODMyYjEy
ZDY5YTU0MDk3NGRlNDQzYzVmNGJiMjRlMzMwYjgyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC00OSw2ICs0OSw3IEBA
CiAjaW1wb3J0ICJfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9y
dCA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGx1Z2luRGF0
YS5oPgorI2ltcG9ydCA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2ltcG9ydCA8cGFs
L3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFy
Y2hpdmVyU1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KQEAgLTY1Myw0ICs2NTQsMTgg
QEAgLSAodm9pZClfYWxsb3dBbnlUTFNDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldFRlc3RpbmcKICAg
ICBfcHJvY2Vzc1Bvb2wtPnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0KHRy
dWUpOwogfQogCistICh2b2lkKV9zZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmdX
aXRoRmlyc3RQYXJ0eTooTlNVUkwgKilmaXJzdFBhcnR5VVJMIHRoaXJkUGFydHk6KE5TVVJMICop
dGhpcmRQYXJ0eVVSTCBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbjooQk9PTClzaG91bGRTY2hl
ZHVsZU5vdGlmaWNhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKSh2b2lkKSljb21wbGV0
aW9uSGFuZGxlcgoreworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAg
X3Byb2Nlc3NQb29sLT5zZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4geyBmaXJzdFBhcnR5VVJMIH0sIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHsgdGhpcmRQYXJ0eVVSTCB9LCBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbiwg
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0oZmlyc3RQYXJ0eVVSTCk7CisgICAgVU5VU0VEX1BBUkFNKHRoaXJkUGFydHlVUkwp
OworICAgIFVOVVNFRF9QQVJBTShzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbik7CisgICAgVU5V
U0VEX1BBUkFNKGNvbXBsZXRpb25IYW5kbGVyKTsKKyNlbmRpZgorfQorCiBAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oCmluZGV4IDNhODFkNTk5OTlkY2M5OTlmMTM5M2NjMzI5NmI5YmVhNjA1MmJiZTIuLjEz
MDM1Y2E2ZWIyOWZmMmI3YTFmZGY3NTI5YTlkOTBkYTliNTFhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5o
CkBAIC0xMzIsNCArMTMyLDcgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9X2lzU3Rv
cmFnZUFjY2Vzc0FQSUVuYWJsZWQsIHNldHRlcj1fc2V0U3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQ6
KSBCT09MIF9zdG9yYWdlQWNjZXNzQVBJRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzLjQpLCBpb3MoMTEuMykpOwogLSAodm9pZClfc3ludGhlc2l6ZUFwcElzQmFja2dyb3VuZDoo
Qk9PTCliYWNrZ3JvdW5kIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiAKKy8vIFRlc3Qgb25seS4KKy0gKHZvaWQpX3NlZWRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRm9yVGVzdGluZ1dpdGhGaXJzdFBhcnR5OihOU1VSTCAqKWZpcnN0UGFydHlVUkwg
dGhpcmRQYXJ0eTooTlNVUkwgKil0aGlyZFBhcnR5VVJMIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0
aW9uOihCT09MKXNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyICBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA2
MTQyZjBiNzgxY2Y0MTVhMDdmMDg5OWRiOGNjOTdiYWE4ZTRhYWQ4Li5hZDBiNzMxZmI5YmFjODc2
ODZjNDZmMDNmYTkxMDljN2RmYTE2NGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTI5LDYgKzI5LDcg
QEAKICNpbXBvcnQgIkFQSVN0cmluZy5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbkNvY29hLmgiCiAjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVj
a2VyLmgiCisjaW1wb3J0ICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKICNpbXBvcnQg
IldLSFRUUENvb2tpZVN0b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5oIgogI2lt
cG9ydCAiV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCkBAIC00OTUsNiArNDk2LDI4
IEBAIC0gKHZvaWQpX2NsZWFyUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpCiAjZW5kaWYKIH0KIAorLSAodm9pZClfY2xlYXJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgor
eworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgX3dlYnNpdGVEYXRh
U3RvcmUtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2ViS2l0OjpTaG91bGRH
cmFuZGZhdGhlclN0YXRpc3RpY3M6Ok5vLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
KyAgICB9KTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyNlbmRpZgorfQorCist
ICh2b2lkKV9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXJGaXJzdFBhcnR5OihOU1VSTCAq
KWZpcnN0UGFydHlVUkwgdGhpcmRQYXJ0eTooTlNVUkwgKil0aGlyZFBhcnR5VVJMIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgoreworI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmlzUmVn
aXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcih0aGlyZFBhcnR5VVJMLCBmaXJzdFBhcnR5VVJMLCBb
Y29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29s
IGVuYWJsZWQpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW5hYmxlZCk7CisgICAgfSk7
CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsKKyNlbmRpZgorfQorCiAtICh2b2lk
KV9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOih2b2lkICheKSh2b2lkKSljb21wbGV0
aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCAwNGUzYzc4MWNkNTEyMTk3MDgyYzlhNTZiZjRkYTNh
NDFlMzkzMzI5Li4zMWI4MGFiNDI1MTJmNWQ2YjA0Y2I3NDNmYmY2MjM1MzE3ZWE3OTEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTcwLDcgKzcwLDkgQEAgdHlwZWRlZiBOU19PUFRJ
T05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKIC0gKHZv
aWQpX3NjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGU6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiAtICh2b2lkKV9zZXRQcmV2YWxlbnREb21haW46KE5TVVJMICopZG9tYWluIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfZ2V0
SXNQcmV2YWxlbnREb21haW46KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSAodm9pZClfY2xlYXJQcmV2YWxlbnREb21haW46
KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0
aW9uSGFuZGxlcjsKKy0gKHZvaWQpX2NsZWFyUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFp
biBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZv
aWQpX2NsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljczoodm9pZCAoXikodm9pZCkpY29tcGxldGlv
bkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKy0gKHZvaWQpX2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlckZpcnN0UGFydHk6
KE5TVVJMICopZmlyc3RQYXJ0eVVSTCB0aGlyZFBhcnR5OihOU1VSTCAqKXRoaXJkUGFydHlVUkwg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lk
KV9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOih2b2lkICheKSh2b2lkKSljb21wbGV0
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwogCiBAcHJvcGVydHkgKG51bGxhYmxlLCBub25hdG9taWMsIHdlYWspIGlkIDxfV0tX
ZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+IF9kZWxlZ2F0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDU2MzllYmIxYzM0ODBlYjFjOGRhYWViNjUyMWE1YTky
NTJmZmM5NmYuLmExNTI2N2YwYzUwMTkzMWFmMjI3YzIxMzAzNzliNDllZTZjZjNmNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTg5LDEwICs4OSwx
MiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzV2FybWlu
Zy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5o
PgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dy
ZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTIzNDYsNiArMjM0
OCwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERh
dGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCBzZXNzaQogCiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+
ZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoc2Vzc2lvbklELCBmcm9tRG9t
YWluLCB0b0RvbWFpbiwgbmF2aWdhdGlvbkRhdGFUcmFuc2Zlciwgd2ViUGFnZVByb3h5SUQsIHdl
YlBhZ2VJRCk7CiB9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlZWRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxk
U2NoZWR1bGVOb3RpZmljYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdn
cmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKworICAgIGZvciAo
YXV0byYgcHJvY2VzcyA6IHByb2Nlc3NlcygpKQorICAgICAgICBwcm9jZXNzLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Rm9yVGVzdGluZyhmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5RG9tYWluLCBzaG91bGRTY2hl
ZHVsZU5vdGlmaWNhdGlvbiksIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0
b3IuY29weVJlZigpXSB7IH0pOworfQogI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNl
dFdlYlByb2Nlc3NIYXNVcGxvYWRzKFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGZlMTlkZmZjMjllZmNhOGQ2
YTQyMjYyYzdmYzRjOWQwYTIwMjYzNTcuLmQzMDIxNTIzYWYwNjk4ZmM3YzIwNDIyOTRmZmVkNmZm
ZTBhZjk0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAt
NDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0Nyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURv
bWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRTdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5o
PgpAQCAtOTAsNiArODksNyBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIH0KIAogbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgUmVnaXN0cmFibGVEb21haW47CiBzdHJ1Y3QgTW9ja01lZGlh
RGV2aWNlOwogfQogCkBAIC00OTUsNiArNDk1LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRX
aXRoRGF0YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHRv
RG9tYWluLCBPcHRpb25TZXQ8V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zl
cjo6RmxhZz4sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
KTsKKyAgICB2b2lkIHNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2NoZWR1
bGVOb3RpZmljYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAx
NWRjYWIyMmRkYjUwYjE2ZmE0ZjI1OGZlZGNiMjBlMmM2YTNlYmIxLi4yZGY5ZDdmOTljOTA2MjM1
NDFlNzU4MjZjMDUzYWY3OTdlNzRiYTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTM2OSw2ICsx
MzY5LDEwIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJj
ZVVuZGVyKGNvbnN0IFVSTCYgc3VicmVzb3VyY2VVUkwsCiAgICAgICAgICAgICBwcm9jZXNzLT5p
c1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHsgc3VicmVzb3VyY2VVUkwgfSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4geyB0b3BGcmFtZVVSTCB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAg
ICAgICBBU1NFUlQocHJvY2Vzc1Bvb2xzKCkuc2l6ZSgpID09IDEpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTk2MSwxMyArMTk2NSwxNyBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxl
ZCkKICAgICAgICAgCiAgICAgICAgIHJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCk7CiAg
ICAgICAgIAotICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIGZhbHNlKSkKKyAgICAgICAgZm9yIChh
dXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scyhzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpLCBmYWxzZSkpIHsKICAgICAgICAgICAgIHByb2Nlc3NQb29sLT5zZW5kVG9OZXR3
b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkKG1fc2Vzc2lvbklELCB0cnVlKSk7CisgICAgICAgICAgICBwcm9jZXNz
UG9vbC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCh0cnVlKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoc3Rk
OjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSwgZmFsc2UpKQorICAgIGZvciAoYXV0byYg
cHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+Ojpt
YXgoKSwgZmFsc2UpKSB7CiAgICAgICAgIHByb2Nlc3NQb29sLT5zZW5kVG9OZXR3b3JraW5nUHJv
Y2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkKG1fc2Vzc2lvbklELCBmYWxzZSkpOworICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRv
QWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZChmYWxzZSkpOworICAgIH0KIAogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQgPSBmYWxzZTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVy
LmNwcAppbmRleCA5ZWQyYTA1OGJhMTRmMDY0Njg1MDZlZTM3MjEzYjEyMGIzYTNlNmVhLi41ZTRm
MDY3MzFjOTgyZTQwYmI4ZTViNzJiZTYxYzQyYTJkYjQ5OTU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNv
dXJjZUxvYWRPYnNlcnZlci5jcHAKQEAgLTY1LDYgKzY1LDEyIEBAIFdlYlJlc291cmNlTG9hZE9i
c2VydmVyOjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcigpCiB7CiB9CiAKK1dlYlJlc291cmNlTG9h
ZE9ic2VydmVyOjp+V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKQoreworICAgIGlmIChoYXNTdGF0
aXN0aWNzKCkpCisgICAgICAgIHVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNzU3RvcmUoKTsKK30KKwog
dm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
LCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCkK
IHsKICAgICBhdXRvIG9wZW5lclVybCA9IG9wZW5lckRvY3VtZW50LnVybCgpOwpAQCAtMzU2LDYg
KzM2MiwxOSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rp
b25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKGNvbnN0CiAjZW5kaWYKIH0KIAordm9pZCBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nRm9yVGVzdGluZyhjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24p
Cit7CisgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGlj
c0ZvclJlZ2lzdHJhYmxlRG9tYWluKHRoaXJkUGFydHlEb21haW4pOworICAgIGF1dG8gbGFzdFNl
ZW4gPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpyZWR1Y2VUaW1lUmVzb2x1dGlvbihXYWxsVGlt
ZTo6bm93KCkpOworICAgIHRhcmdldFN0YXRpc3RpY3MubGFzdFNlZW4gPSBsYXN0U2VlbjsKKyAg
ICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMuYWRkKGZp
cnN0UGFydHlEb21haW4pOworCisgICAgaWYgKHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uKQor
ICAgICAgICBzY2hlZHVsZU5vdGlmaWNhdGlvbklmTmVlZGVkKCk7CisgICAgZWxzZQorICAgICAg
ICBtX25vdGlmaWNhdGlvblRpbWVyLnN0b3AoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9h
ZE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAppbmRleCBkNmI4ZDg3NzU4NzhiNGI2OGM1MTc0YTk5NDg4
YzkxM2RiNGQwYWRjLi45MmRlN2JjZTY2YzkyNDA1NGM2NjRjNDMxZmVhZTQ1MmI0NmQ2ZGJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtMzcsNyArMzcsOCBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlJlc291cmNlTG9hZE9ic2VydmVyIGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlcigpOwotICAgIAorICAgIH5XZWJSZXNvdXJjZUxvYWRPYnNlcnZlcigp
OworCiAgICAgdm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRpbmcoY29uc3QgV2ViQ29yZTo6RnJhbWUq
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwogICAgIHZvaWQg
bG9nV2ViU29ja2V0TG9hZGluZyhjb25zdCBVUkwmIHRhcmdldFVSTCwgY29uc3QgVVJMJiBtYWlu
RnJhbWVVUkwpIGZpbmFsOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRU
aW1lUmVzb2x1dGlvbihjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYpIGZpbmFsOwpAQCAtNDYsNiAr
NDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dDYW52YXNXcml0ZU9yTWVhc3VyZShjb25zdCBX
ZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdGV4dFdyaXR0ZW4pIGZpbmFsOwogICAg
IHZvaWQgbG9nTmF2aWdhdG9yQVBJQWNjZXNzZWQoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpOYXZpZ2F0b3JBUEkpIGZpbmFs
OwogICAgIHZvaWQgbG9nU2NyZWVuQVBJQWNjZXNzZWQoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpTY3JlZW5BUEkpIGZpbmFs
OworICAgIHZvaWQgbG9nU3VicmVzb3VyY2VMb2FkaW5nRm9yVGVzdGluZyhjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2NoZWR1bGVOb3Rp
ZmljYXRpb24pOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgc3RhdGljIHZvaWQg
c2V0U2hvdWxkTG9nVXNlckludGVyYWN0aW9uKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCmluZGV4IDZjMTZmYTAxZGYxNWU1NTRkMTU5OWIxYTg2ZmI5NzJiMjBl
MTc4MzYuLjQyNjgxYWMzNGY3MzYwNDkzYzNhMWQyYjJkNGM3NzNhNWI2MzQ0MTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ1OCw3ICs0NTgsNyBAQCB2b2lk
IFdlYlByb2Nlc3M6OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKFdlYlByb2Nlc3NEYXRh
U3RvcmVQYXJhbWV0ZXJzJiYgcAogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOwogCiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBpZiAocGFyYW1ldGVycy5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZCAmJiAhcGFyYW1ldGVycy5zZXNzaW9uSUQuaXNFcGhlbWVyYWwo
KSkKKyAgICBpZiAocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCAmJiAh
cGFyYW1ldGVycy5zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiAhUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNoYXJlZElmRXhpc3RzKCkpCiAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRT
aGFyZWQoKm5ldyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcik7CiAjZW5kaWYKIApAQCAtNjcxLDYg
KzY3MSw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZShQYWdlSWRlbnRpZmllciBw
YWdlSUQpCiB7CiAgICAgQVNTRVJUKG1fcGFnZU1hcC5jb250YWlucyhwYWdlSUQpKTsKIAorICAg
IGZsdXNoUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworCiAgICAgcGFnZVdpbGxMZWF2ZVdpbmRv
dyhwYWdlSUQpOwogICAgIG1fcGFnZU1hcC5yZW1vdmUocGFnZUlEKTsKIApAQCAtMTM4Myw2ICsx
Mzg1LDggQEAgdm9pZCBXZWJQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNwZW5z
aW9uSW1taW5lbnQsIENvbXBsZXRpb25IYW5kbGVyPHYKICAgICBTZXRGb3JTY29wZTxib29sPiBz
dXNwZW5zaW9uU2NvcGUobV9pc1N1c3BlbmRpbmcsIHRydWUpOwogICAgIG1fcHJvY2Vzc0lzU3Vz
cGVuZGVkID0gdHJ1ZTsKIAorICAgIGZsdXNoUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKG1fcHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc1R5cGU6
OlByZXdhcm1lZFdlYkNvbnRlbnQpIHsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3Bl
bnNpb24sICIlcCAtIFdlYlByb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoKSBQcm9jZXNzIGlzIHJl
YWR5IHRvIHN1c3BlbmQiLCB0aGlzKTsKQEAgLTE1NTIsNyArMTU1NiwxMyBAQCBTdG9yYWdlQXJl
YU1hcCogV2ViUHJvY2Vzczo6c3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFJZGVudGlmaWVyIGlk
ZW50aWZpZXIpIGNvbgogCiB2b2lkIFdlYlByb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKKyAgICBpZiAoV2ViQ29yZTo6RGVwcmVjYXRlZEds
b2JhbFNldHRpbmdzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpID09IGVuYWJsZWQg
fHwgbV9zZXNzaW9uSUQtPmlzRXBoZW1lcmFsKCkpCisgICAgICAgIHJldHVybjsKICAgICBXZWJD
b3JlOjpEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkKGVuYWJsZWQpOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisg
ICAgaWYgKGVuYWJsZWQgJiYgIVJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRJZkV4aXN0cygp
KQorICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U2hhcmVkKCpuZXcg
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6
Y2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkKQEAgLTE1NjMsNiArMTU3MywyMyBAQCB2b2lk
IFdlYlByb2Nlc3M6OmNsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpCiAjZW5kaWYKIH0KIAor
dm9pZCBXZWJQcm9jZXNzOjpmbHVzaFJlc291cmNlTG9hZFN0YXRpc3RpY3MoKQoreworI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgaWYgKGF1dG8qIG9ic2VydmVyID0g
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZElmRXhpc3RzKCkpCisgICAgICAgIG9ic2VydmVy
LT51cGRhdGVDZW50cmFsU3RhdGlzdGljc1N0b3JlKCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJQ
cm9jZXNzOjpzZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBpZiAoYXV0byogb2JzZXJ2ZXIgPSBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkSWZFeGlzdHMoKSkKKyAgICAgICAgb2JzZXJ2ZXItPmxvZ1N1
YnJlc291cmNlTG9hZGluZ0ZvclRlc3RpbmcoZmlyc3RQYXJ0eURvbWFpbiwgdGhpcmRQYXJ0eURv
bWFpbiwgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24pOworI2VuZGlmCisgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKK30KKwogUmVmUHRyPEFQSTo6T2JqZWN0PiBXZWJQcm9jZXNzOjp0cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKEFQSTo6T2JqZWN0KiBvYmplY3QpCiB7CiAgICAgc3RydWN0IFRy
YW5zZm9ybWVyIGZpbmFsIDogVXNlckRhdGE6OlRyYW5zZm9ybWVyIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGMyNGJjYmQ4MTk0Mzk3ZDg4ZmMxYzNjMmEyNTY4YTlk
YTZhM2YxNTUuLmNkNjEyZmZkNTkzOTU2ZTYzOTllMmUwMjBlYTE2YzZhMWVkYmM0YjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtODcsNiArODcsNyBAQCBjbGFzcyBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKIGNsYXNzIENQVU1vbml0b3I7CiBjbGFzcyBDZXJ0aWZp
Y2F0ZUluZm87CiBjbGFzcyBQYWdlR3JvdXA7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFVzZXJHZXN0dXJlVG9rZW47CiBzdHJ1Y3QgQmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKQEAgLTM0Niw2ICszNDcsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sKTsKICAgICB2b2lkIHNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCk7CisgICAgdm9pZCBmbHVzaFJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsK
KyAgICB2b2lkIHNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2NoZWR1bGVO
b3RpZmljYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCB1c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Owog
ICAgIHZvaWQgZnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRB
Y2Nlc3NFbmFibGVkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCAxMDk0MWYwODM5ODVjYjAxN2ZkMGViNDQ1M2UwODI4NzY3ZWJl
MmQ3Li41OGQ0ZjY3YmVmMWQ0ZjcxMWRlNWQzNjlhNTQ0MDczNDJiN2I3M2IxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTYwLDQg
KzE2MCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIFNlbmRNZXNzYWdlVG9XZWJFeHRlbnNp
b24oc3RydWN0IFdlYktpdDo6VXNlck1lc3NhZ2UgdXNlck1lc3NhZ2UpCiAjZW5kaWYKKworI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgU2VlZFJlc291cmNlTG9hZFN0
YXRpc3RpY3NGb3JUZXN0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlE
b21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRoaXJkUGFydHlEb21haW4sIGJvb2wg
c2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24pIC0+ICgpIEFzeW5jCisjZW5kaWYKIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyMjRkNDAxNDQ4
ODMxMDNkNDNjMDcxNWZlMTA1NWYzOGUwYmNkMGU0Li45NmU1ZTEzMmRjYzMzYTMwM2NhMjZlMTJk
YzI2YjdmOGI1ZDA3MGI4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMTEtMDQgIEpvaG4gV2lsYW5kZXIgIDx3
aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBG
bHVzaCB0aGUgc2hhcmVkIFJlc291cmNlTG9hZE9ic2VydmVyIHdoZW4gdGhlIHdlYnBhZ2UgaXMg
Y2xvc2VkIGJ5IEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMzYyMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY3NTY0Mjc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW06CisgICAg
ICAgIChURVNUKToKKwogMjAxOS0xMS0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZsYWt5IEFQSSBUZXN0IFRlc3RXZWJLaXRBUEkuV2Vi
S2l0LlVwbG9hZERpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCmluZGV4IGFm
NjQ0ODVjYTZhNTQwMTczOTM3NzY3ZmVmZWIxZWQzNGUwOTJkMmUuLmE3MjFkMjRiZTJmN2JkZmM3
YjgyZDY2MWFiYjFiNmI5NDY2ZDAzNDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0K
QEAgLTQ4NCwzICs0ODQsNjYgQEAgVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBOb01lc3Nh
Z2VzV2hlbk5vdFRlc3RpbmcpCiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFn
ZU5hbWVkOkAic2ltcGxlIl07CiAgICAgRVhQRUNUX0ZBTFNFKFtXS1dlYnNpdGVEYXRhU3RvcmUg
X2RlZmF1bHREYXRhU3RvcmVFeGlzdHNdKTsKIH0KKworVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLCBGbHVzaE9ic2VydmVyV2hlbldlYlBhZ2VJc0Nsb3NlZEJ5SmF2YVNjcmlwdCkKK3sKKyAg
ICBhdXRvICpzaGFyZWRQcm9jZXNzUG9vbCA9IFtXS1Byb2Nlc3NQb29sIF9zaGFyZWRQcm9jZXNz
UG9vbF07CisgICAgYXV0byAqZGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0
RGF0YVN0b3JlXTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJv
Y2Vzc1Bvb2w6IHNoYXJlZFByb2Nlc3NQb29sXTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLndl
YnNpdGVEYXRhU3RvcmUgPSBkYXRhU3RvcmU7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgW3dlYlZpZXcg
bG9hZEhUTUxTdHJpbmc6QCJXZWJLaXQgVGVzdCIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImh0dHA6Ly93ZWJraXQub3JnIl1dOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRG
aW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIFtkYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkOllFU107CisKKyAgICBzdGF0aWMgYm9vbCBkb25lRmxhZyA9IGZhbHNlOwor
ICAgIFtkYXRhU3RvcmUgX2NsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljczpeKHZvaWQpIHsKKyAg
ICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgc3RhdGljIGJvb2wgc3RhdGlz
dGljc1VwZGF0ZWQgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGVzdGluZ0NhbGxiYWNrOl4oV0tXZWJzaXRlRGF0YVN0b3JlICosIE5TU3RyaW5nICpt
ZXNzYWdlKSB7CisgICAgICAgIGlmICghW21lc3NhZ2UgaXNFcXVhbFRvU3RyaW5nOkAiU3RhdGlz
dGljcyBVcGRhdGVkIl0pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0YXRpc3RpY3NV
cGRhdGVkID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZUZsYWcpOworCisgICAgLy8gU2VlZCB0ZXN0IGRhdGEgaW4gdGhlIHdlYiBwcm9jZXNzJyBv
YnNlcnZlci4KKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtzaGFyZWRQcm9jZXNzUG9vbCBf
c2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdIHRoaXJkUGFydHk6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbC5jb20iXSBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlv
bjpOTyBjb21wbGV0aW9uSGFuZGxlcjogXigpIHsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOwor
ICAgIH1dOworICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOwor
CisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgdGhpcmQtcGFydHkgaXMgbm90IHlldCByZWdpc3RlcmVk
LgorICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfaXNSZWdpc3RlcmVkQXNT
dWJyZXNvdXJjZVVuZGVyRmlyc3RQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93
ZWJraXQub3JnIl0gdGhpcmRQYXJ0eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmls
LmNvbSJdIGNvbXBsZXRpb25IYW5kbGVyOiBeKEJPT0wgaXNSZWdpc3RlcmVkKSB7CisgICAgICAg
IEVYUEVDVF9GQUxTRShpc1JlZ2lzdGVyZWQpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7Cisg
ICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAg
IHN0YXRpc3RpY3NVcGRhdGVkID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6
QCI8Ym9keT48c2NyaXB0PmNsb3NlKCk7PC9zY3JpcHQ+PC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl1dOworCisgICAgLy8gV2FpdCBmb3Ig
dGhlIHN0YXRpc3RpY3MgdG8gYmUgdXBkYXRlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzLgorICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmc3RhdGlzdGljc1VwZGF0ZWQpOworCisgICAgLy8g
Q2hlY2sgdGhhdCB0aGUgdGhpcmQtcGFydHkgaXMgbm93IHJlZ2lzdGVyZWQuCisgICAgZG9uZUZs
YWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5k
ZXJGaXJzdFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmciXSB0
aGlyZFBhcnR5OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwuY29tIl0gY29tcGxl
dGlvbkhhbmRsZXI6IF4oQk9PTCBpc1JlZ2lzdGVyZWQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUo
aXNSZWdpc3RlcmVkKTsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>