<?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>180292</bug_id>
          
          <creation_ts>2017-12-01 15:53:31 -0800</creation_ts>
          <short_desc>[Web App Manifest] Support fetching the app manifest</short_desc>
          <delta_ts>2018-08-01 09:40:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore 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=153152</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="David Quesada">david_quesada</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1377117</commentid>
    <comment_count>0</comment_count>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2017-12-01 15:53:31 -0800</bug_when>
    <thetext>WebCore needs to know how to look for the manifest URL on a page and fetch it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377130</commentid>
    <comment_count>1</comment_count>
      <attachid>328176</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2017-12-01 16:09:47 -0800</bug_when>
    <thetext>Created attachment 328176
WIP Patch

My WIP patch for review. This builds on 177973, so it doesn&apos;t apply right now, but I thought I&apos;d post the patch for feedback. Particularly with the architecture of representing outstanding requests for the app manifest as ApplicationManifestLoaders attached to the DocumentLoader. I didn&apos;t see any precedent for a way to load subresources of a document on demand in a way they could be exposed to an embedder, other than IconLoader, so I used that as inspiration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377953</commentid>
    <comment_count>2</comment_count>
      <attachid>328176</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-12-04 15:30:02 -0800</bug_when>
    <thetext>Comment on attachment 328176
WIP Patch

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

r=me with some comments

&gt; Source/WebCore/loader/DocumentLoader.cpp:1087
&gt; +    for (const auto&amp; link : childrenOfType&lt;HTMLLinkElement&gt;(*head)) {
&gt; +        if (link.isApplicationManifest()) {
&gt; +            manifestURL = link.href();
&gt; +            useCredentials = equalIgnoringASCIICase(link.attributeWithoutSynchronization(HTMLNames::crossoriginAttr), &quot;use-credentials&quot;);
&gt; +            break;
&gt; +        }
&gt; +    }

Is it specified that multiple manifest links should only result in loading the first link? If so, can you add a test for this?

&gt; Source/WebCore/loader/DocumentLoader.cpp:1089
&gt; +    if (manifestURL.isNull() || manifestURL.isEmpty() || !manifestURL.isValid())

isEmpty() is a superset of isNull() so you should remove the check for isNull().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377964</commentid>
    <comment_count>3</comment_count>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2017-12-04 15:44:40 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #2)
&gt; Comment on attachment 328176 [details]
&gt; WIP Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=328176&amp;action=review
&gt; 
&gt; r=me with some comments
&gt; 
&gt; &gt; Source/WebCore/loader/DocumentLoader.cpp:1087
&gt; &gt; +    for (const auto&amp; link : childrenOfType&lt;HTMLLinkElement&gt;(*head)) {
&gt; &gt; +        if (link.isApplicationManifest()) {
&gt; &gt; +            manifestURL = link.href();
&gt; &gt; +            useCredentials = equalIgnoringASCIICase(link.attributeWithoutSynchronization(HTMLNames::crossoriginAttr), &quot;use-credentials&quot;);
&gt; &gt; +            break;
&gt; &gt; +        }
&gt; &gt; +    }
&gt; 
&gt; Is it specified that multiple manifest links should only result in loading
&gt; the first link? If so, can you add a test for this?

Yes (https://www.w3.org/TR/appmanifest/#h-note-5) and yes. Since I can&apos;t test it with only the changes in this patch, I&apos;ll add it to 180294.
&gt; 
&gt; &gt; Source/WebCore/loader/DocumentLoader.cpp:1089
&gt; &gt; +    if (manifestURL.isNull() || manifestURL.isEmpty() || !manifestURL.isValid())
&gt; 
&gt; isEmpty() is a superset of isNull() so you should remove the check for
&gt; isNull().

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378204</commentid>
    <comment_count>4</comment_count>
      <attachid>328461</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2017-12-05 10:18:43 -0800</bug_when>
    <thetext>Created attachment 328461
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378233</commentid>
    <comment_count>5</comment_count>
      <attachid>328461</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-12-05 11:02:45 -0800</bug_when>
    <thetext>Comment on attachment 328461
Patch for landing

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

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:1756
&gt; +		6353E1E61F91743100A34208 /* CachedApplicationManifest.h in Headers */ = {isa = PBXBuildFile; fileRef = 6353E1E41F91743100A34208 /* CachedApplicationManifest.h */; settings = {ATTRIBUTES = (Private, ); }; };

This doesn&apos;t appear to need to be Private. Maybe you plan on exposing it outside of WebCore in a later patch?

&gt; Source/WebCore/inspector/agents/InspectorPageAgent.cpp:284
&gt; +#if ENABLE(APPLICATION_MANIFEST)
&gt; +    case ApplicationManifestResource:
&gt; +        break;
&gt; +#endif

In Web Inspector land we&apos;d like a bugzilla bug so that we can improve manifest support in inspector, since currently this will cause the resource to show up as a general document. We can do better!
https://webkit.org/new-inspector-bug

&gt; Source/WebCore/loader/DocumentLoader.cpp:1100
&gt; +    auto manifestLoader = std::make_unique&lt;ApplicationManifestLoader&gt;(*this, manifestURL, useCredentials);
&gt; +    auto* rawManifestLoader = manifestLoader.get();
&gt; +    auto callbackID = nextCallbackID++;
&gt; +    m_applicationManifestLoaders.set(WTFMove(manifestLoader), callbackID);
&gt; +
&gt; +    if (!rawManifestLoader-&gt;startLoading()) {
&gt; +        m_applicationManifestLoaders.remove(rawManifestLoader);
&gt; +        return 0;
&gt; +    }

This adds and then might immediately remove the loader from the map. Can this be reordered to avoid the possible double lookup? Is it important that the loader be in the list before startLoading?

&gt; Source/WebCore/loader/cache/CachedApplicationManifest.cpp:39
&gt; +    , m_decoder(TextResourceDecoder::create(&quot;application/manifest+json&quot;, UTF8Encoding()))

Nit: ASCIILiteral(&quot;application/manifest+json&quot;)

&gt; Source/WebCore/page/csp/ContentSecurityPolicyDirectiveList.cpp:491
&gt; +#if ENABLE(APPLICATION_MANIFEST)
&gt; +    else if (equalIgnoringASCIICase(name, ContentSecurityPolicyDirectiveNames::manifestSrc))
&gt; +        setCSPDirective&lt;ContentSecurityPolicySourceListDirective&gt;(name, value, m_manifestSrc);
&gt; +#endif

It seems bad form to add support for a new CSP attribute and not add a test for it. If it isn&apos;t reached yet, then it also seems weird to add code that isn&apos;t reachable. Is this covered by web platform tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378338</commentid>
    <comment_count>6</comment_count>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2017-12-05 13:42:40 -0800</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #5)
&gt; Comment on attachment 328461 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=328461&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:1756
&gt; &gt; +		6353E1E61F91743100A34208 /* CachedApplicationManifest.h in Headers */ = {isa = PBXBuildFile; fileRef = 6353E1E41F91743100A34208 /* CachedApplicationManifest.h */; settings = {ATTRIBUTES = (Private, ); }; };
&gt; 
&gt; This doesn&apos;t appear to need to be Private. Maybe you plan on exposing it
&gt; outside of WebCore in a later patch?

Actually this doesn&apos;t need to be private. I think I needed to expose this in an earlier version of these patches, but it isn&apos;t needed anymore. I can make it Project again.

&gt; 
&gt; &gt; Source/WebCore/inspector/agents/InspectorPageAgent.cpp:284
&gt; &gt; +#if ENABLE(APPLICATION_MANIFEST)
&gt; &gt; +    case ApplicationManifestResource:
&gt; &gt; +        break;
&gt; &gt; +#endif
&gt; 
&gt; In Web Inspector land we&apos;d like a bugzilla bug so that we can improve
&gt; manifest support in inspector, since currently this will cause the resource
&gt; to show up as a general document. We can do better!
&gt; https://webkit.org/new-inspector-bug

There&apos;s rdar://problem/35160389 with some ideas, I don&apos;t think there&apos;s a bugzilla bug yet.

&gt; 
&gt; &gt; Source/WebCore/loader/DocumentLoader.cpp:1100
&gt; &gt; +    auto manifestLoader = std::make_unique&lt;ApplicationManifestLoader&gt;(*this, manifestURL, useCredentials);
&gt; &gt; +    auto* rawManifestLoader = manifestLoader.get();
&gt; &gt; +    auto callbackID = nextCallbackID++;
&gt; &gt; +    m_applicationManifestLoaders.set(WTFMove(manifestLoader), callbackID);
&gt; &gt; +
&gt; &gt; +    if (!rawManifestLoader-&gt;startLoading()) {
&gt; &gt; +        m_applicationManifestLoaders.remove(rawManifestLoader);
&gt; &gt; +        return 0;
&gt; &gt; +    }
&gt; 
&gt; This adds and then might immediately remove the loader from the map. Can
&gt; this be reordered to avoid the possible double lookup? Is it important that
&gt; the loader be in the list before startLoading?

IIRC the reason I did this was to cover the case where the manifest is loaded from the cache. If the manifest were in the cache, I thought it would be possible for DocumentLoader::finishedLoadingApplicationManifest() to be invoked from within ApplicationManifestLoader::startLoading(), so we would need to have the loader in the loader list at that point. Though I might need to go back and formally test this, since it looks like there would be issues telling the FrameLoaderClient about the manifest since it wouldn&apos;t have received &apos;callbackID&apos; at this point. I think adding the equivalent of dispatch_async in notifyFinishedLoadingApplicationManifest() would fix this, since it would ensure the requester would get the return value from DocumentLoader::loadApplicationManifest() before FrameLoaderClient::finishedLoadingApplicationManifest() is called. Can I investigate this and file a followup bug, or do I need to fix this before landing this?

&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedApplicationManifest.cpp:39
&gt; &gt; +    , m_decoder(TextResourceDecoder::create(&quot;application/manifest+json&quot;, UTF8Encoding()))
&gt; 
&gt; Nit: ASCIILiteral(&quot;application/manifest+json&quot;)
&gt; 
&gt; &gt; Source/WebCore/page/csp/ContentSecurityPolicyDirectiveList.cpp:491
&gt; &gt; +#if ENABLE(APPLICATION_MANIFEST)
&gt; &gt; +    else if (equalIgnoringASCIICase(name, ContentSecurityPolicyDirectiveNames::manifestSrc))
&gt; &gt; +        setCSPDirective&lt;ContentSecurityPolicySourceListDirective&gt;(name, value, m_manifestSrc);
&gt; &gt; +#endif
&gt; 
&gt; It seems bad form to add support for a new CSP attribute and not add a test
&gt; for it. If it isn&apos;t reached yet, then it also seems weird to add code that
&gt; isn&apos;t reachable. Is this covered by web platform tests?

There was already a test (LayoutTests/http/tests/security/contentSecurityPolicy/manifest-src-{allowed,blocked}) for the manifest-src attribute, imported from Blink. In retrospect, the way I split up these patches is pretty awkward since this code isn&apos;t reachable yet, but I have tests for this in https://bugs.webkit.org/show_bug.cgi?id=180294, which adds WebKit support for initiating loads of the manifest on demand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378352</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-12-05 14:02:58 -0800</bug_when>
    <thetext>&gt; Can I investigate this and file a followup bug, or do I need to fix
&gt; this before landing this?

Sure. There is nothing incorrect about the current code, it just seems like it may be inefficient if its not necessary.

&gt; &gt; It seems bad form to add support for a new CSP attribute and not add a test
&gt; &gt; for it. If it isn&apos;t reached yet, then it also seems weird to add code that
&gt; &gt; isn&apos;t reachable. Is this covered by web platform tests?
&gt; 
&gt; There was already a test
&gt; (LayoutTests/http/tests/security/contentSecurityPolicy/manifest-src-{allowed,
&gt; blocked}) for the manifest-src attribute, imported from Blink. In
&gt; retrospect, the way I split up these patches is pretty awkward since this
&gt; code isn&apos;t reachable yet, but I have tests for this in
&gt; https://bugs.webkit.org/show_bug.cgi?id=180294, which adds WebKit support
&gt; for initiating loads of the manifest on demand.

Excellent! Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378467</commentid>
    <comment_count>8</comment_count>
      <attachid>328530</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2017-12-05 17:13:25 -0800</bug_when>
    <thetext>Created attachment 328530
Patch for landing (v2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378510</commentid>
    <comment_count>9</comment_count>
      <attachid>328530</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-05 18:41:24 -0800</bug_when>
    <thetext>Comment on attachment 328530
Patch for landing (v2)

Clearing flags on attachment: 328530

Committed r225564: &lt;https://trac.webkit.org/changeset/225564&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378889</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-06 16:25:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/35895937&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378890</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-06 16:25:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/35895938&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328176</attachid>
            <date>2017-12-01 16:09:47 -0800</date>
            <delta_ts>2017-12-04 15:30:02 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>2.patch</filename>
            <type>text/plain</type>
            <size>57779</size>
            <attacher name="David Quesada">david_quesada</attacher>
            
              <data encoding="base64">Y29tbWl0IGY0MzU1M2MwNTAzY2E0MTE4MThkMmI2NDEzMmQzNDBjYjQ0MjFhZWYKQXV0aG9yOiBE
YXZpZCBRdWVzYWRhIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgTm92IDE3
IDEwOjAzOjI1IDIwMTcgLTA4MDAKCiAgICBbV2ViIEFwcCBNYW5pZmVzdF0gU3VwcG9ydCBmZXRj
aGluZyB0aGUgYXBwIG1hbmlmZXN0CiAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgwMjkyCiAgICAKICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogICAg
CiAgICBBZGQgc3VwcG9ydCBpbiBXZWJDb3JlIGZvciBsb2FkaW5nIGFuZCBwYXJzaW5nIGFwcGxp
Y2F0aW9uIG1hbmlmZXN0cy4gVGhpcyBmdW5jdGlvbmFsaXR5CiAgICBpcyBjdXJyZW50bHkgZXhw
b3NlZCB3aXRoIHR3byBtZXRob2RzOiBEb2N1bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFu
aWZlc3QoKSB0byBjYWxsCiAgICB0byBzdGFydCBsb2FkaW5nIHRoZSBtYW5pZmVzdCwgYW5kIEZy
YW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KCkKICAg
IGZvciBjbGllbnRzIHRvIG92ZXJyaWRlIGluIG9yZGVyIHRvIGJlIG5vdGlmaWVkIG9mIHRoZSBs
b2FkZWQgbWFuaWZlc3QuCiAgICAKICAgIE5vIG5ldyB0ZXN0cywgc2luY2Ugbm8gZnVuY3Rpb25h
bGl0eSBpcyBleHBvc2VkIHRvIHdlYiBjb250ZW50IG9yIGVtYmVkZGVycyB5ZXQuIFRoZQogICAg
bmVlZGVkIFNQSSB3aWxsIGJlIGFkZGVkIGluIGFuIHVwY29taW5nIHBhdGNoLgogICAgCiAgICAq
IFNvdXJjZXMudHh0OgogICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiAg
ICAgICAgQWRkZWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdCBhbmQgQXBwbGljYXRpb25NYW5p
ZmVzdExvYWRlci4KICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKICAgICogaHRtbC9MaW5r
UmVsQXR0cmlidXRlLmNwcDoKICAgIChXZWJDb3JlOjpMaW5rUmVsQXR0cmlidXRlOjpMaW5rUmVs
QXR0cmlidXRlKToKICAgIChXZWJDb3JlOjpMaW5rUmVsQXR0cmlidXRlOjppc1N1cHBvcnRlZCk6
CiAgICAgICAgQWRkICJtYW5pZmVzdCIgYXMgYSBzdXBwb3J0ZWQgJ3JlbCcgdHlwZSBmb3IgbGlu
a3MuCiAgICAqIGh0bWwvTGlua1JlbEF0dHJpYnV0ZS5oOgogICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CiAgICAoV2ViQ29yZTo6aGFzVGV4dENvbnRlbnQpOgog
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VUeXBlSlNPTik6CiAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjppbnNwZWN0b3JSZXNvdXJjZVR5cGUpOgogICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgogICAgKiBsb2FkZXIvQXBw
bGljYXRpb25NYW5pZmVzdExvYWRlci5jcHA6IEFkZGVkLgogICAgICAgIEFkZGVkIGEgY2xhc3Mg
QXBwbGljYXRpb25NYW5pZmVzdExvYWRlciB3aGljaCBoYW5kbGVzIGNyZWF0aW5nIGEgUmVzb3Vy
Y2VSZXF1ZXN0LAogICAgICAgIGxvYWRpbmcgdGhlIHJlc291cmNlIGZyb20gdGhlIENhY2hlZFJl
c291cmNlTG9hZGVyLCBhbmQgcGFyc2luZyB0aGUgcmVzdWx0aW5nIHRleHQuCiAgICAgICAgVGhp
cyBjbGFzcyBhbmQgaXRzIHJlbGF0aW9uIHRvIERvY3VtZW50TG9hZGVyIGFyZSByb3VnaGx5IGJh
c2VkIG9uIHRoYXQgb2YgSWNvbkxvYWRlciwKICAgICAgICB3aGljaCBzZXJ2ZXMgYSBzaW1pbGFy
IHB1cnBvc2UgLSByZXF1ZXN0aW5nIGEgcmVzb3VyY2Ugb24gdGhlIHBhZ2UgYW5kIHVsdGltYXRl
bHkKICAgICAgICBwcm92aWRpbmcgaXQgdG8gdGhlIGVtYmVkZGVyLgogICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6OkFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIpOgogICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6On5BcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVyKToKICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyOjpzdGFydExv
YWRpbmcpOgogICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6OnN0b3BMb2Fk
aW5nKToKICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyOjpwcm9jZXNzTWFu
aWZlc3QpOgogICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKToKICAgICogbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTmFtZXMuaC4KICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmcpOgogICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpsb2FkQXBwbGljYXRpb25NYW5pZmVzdCk6CiAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QpOgogICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KToK
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CiAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oOgogICAgKiBsb2FkZXIvTGlua0xvYWRlci5jcHA6CiAgICAoV2ViQ29yZTo6Y3JlYXRl
TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudCk6CiAgICAoV2ViQ29yZTo6TGlua0xvYWRlcjo6aXNT
dXBwb3J0ZWRUeXBlKToKICAgICogbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwOgogICAgKFdl
YkNvcmU6OnRvUmVzb3VyY2VUeXBlKToKICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cDoKICAgIChXZWJDb3JlOjpsb2dSZXNvdXJjZUxvYWRlZCk6CiAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDogQWRkZWQuCiAgICAoV2ViQ29yZTo6Q2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdCk6CiAgICAoV2Vi
Q29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CiAgICAoV2Vi
Q29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6c2V0RW5jb2RpbmcpOgogICAgKFdlYkNv
cmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kaW5nIGNvbnN0KToKICAgIChXZWJD
b3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Ojpwcm9jZXNzKToKICAgICAgICBBZGQgYSBt
ZXRob2QgdG8gcHJvY2VzcyB0aGUgZmV0Y2hlZCB0ZXh0IGludG8gYW4gQXBwbGljYXRpb25NYW5p
ZmVzdC4gQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdAogICAgICAgIGRvZXMgbm90IHN0b3JlIHRo
ZSByZXN1bHRpbmcgQXBwbGljYXRpb25NYW5pZmVzdCBiZWNhdXNlIHRoZSB0ZXh0IG9mIGFuIGFw
cGxpY2F0aW9uCiAgICAgICAgbWFuaWZlc3QgY2FuIHlpZWxkIGEgZGlmZmVyZW50IEFwcGxpY2F0
aW9uTWFuaWZlc3QgZGVwZW5kaW5nIG9uIHRoZSBVUkwgb2YgdGhlIGRvY3VtZW50CiAgICAgICAg
cHJvY2Vzc2luZyBpdC4KICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTmFtZXMuaC4KICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcDoKICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZGVmYXVsdFByaW9yaXR5Rm9yUmVz
b3VyY2VUeXBlKToKICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CiAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CiAgICAoV2ViQ29yZTo6Y3JlYXRl
UmVzb3VyY2UpOgogICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0QXBw
bGljYXRpb25NYW5pZmVzdCk6CiAgICAoV2ViQ29yZTo6Y29udGVudFR5cGVGcm9tUmVzb3VyY2VU
eXBlKToKICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2hlY2tJbnNlY3VyZUNv
bnRlbnQgY29uc3QpOgogICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjphbGxvd2Vk
QnlDb250ZW50U2VjdXJpdHlQb2xpY3kgY29uc3QpOgogICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuaDoKICAgICogcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwOgog
ICAgKFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6YXBwbGljYXRpb25NYW5pZmVzdEtl
eSk6CiAgICAqIHBhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg6CiAgICAqIHBhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CiAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5OjphbGxvd01hbmlmZXN0RnJvbVNvdXJjZSBjb25zdCk6CiAgICAqIHBhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5oOgogICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0LmNwcDoKICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvck1hbmlmZXN0IGNvbnN0KToKICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphZGREaXJlY3RpdmUpOgog
ICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Lmg6CiAgICAq
IHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcDoKICAgICog
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDoKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggZDAyYTFkOGFjN2UuLjYxM2JkYzQ4OGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTMg
QEAKKzIwMTctMTEtMTcgIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4K
KworICAgICAgICBbV2ViIEFwcCBNYW5pZmVzdF0gU3VwcG9ydCBmZXRjaGluZyB0aGUgYXBwIG1h
bmlmZXN0IAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgwMjkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHN1cHBvcnQgaW4gV2ViQ29yZSBmb3IgbG9hZGluZyBhbmQgcGFyc2luZyBhcHBsaWNhdGlv
biBtYW5pZmVzdHMuIFRoaXMgZnVuY3Rpb25hbGl0eQorICAgICAgICBpcyBjdXJyZW50bHkgZXhw
b3NlZCB3aXRoIHR3byBtZXRob2RzOiBEb2N1bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFu
aWZlc3QoKSB0byBjYWxsCisgICAgICAgIHRvIHN0YXJ0IGxvYWRpbmcgdGhlIG1hbmlmZXN0LCBh
bmQgRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3Qo
KQorICAgICAgICBmb3IgY2xpZW50cyB0byBvdmVycmlkZSBpbiBvcmRlciB0byBiZSBub3RpZmll
ZCBvZiB0aGUgbG9hZGVkIG1hbmlmZXN0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgc2luY2Ug
bm8gZnVuY3Rpb25hbGl0eSBpcyBleHBvc2VkIHRvIHdlYiBjb250ZW50IG9yIGVtYmVkZGVycyB5
ZXQuIFRoZQorICAgICAgICBuZWVkZWQgU1BJIHdpbGwgYmUgYWRkZWQgaW4gYW4gdXBjb21pbmcg
cGF0Y2guCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICAgICBBZGRlZCBDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0IGFuZCBBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLgorICAgICAgICAqIGh0bWwv
SFRNTExpbmtFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9MaW5rUmVsQXR0cmlidXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxpbmtSZWxBdHRyaWJ1dGU6OkxpbmtSZWxBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGlua1JlbEF0dHJpYnV0ZTo6aXNTdXBwb3J0ZWQpOgorICAgICAg
ICAgICAgQWRkICJtYW5pZmVzdCIgYXMgYSBzdXBwb3J0ZWQgJ3JlbCcgdHlwZSBmb3IgbGlua3Mu
CisgICAgICAgICogaHRtbC9MaW5rUmVsQXR0cmlidXRlLmg6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFzVGV4
dENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJj
ZVR5cGVKU09OKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6aW5zcGVj
dG9yUmVzb3VyY2VUeXBlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmNw
cDogQWRkZWQuCisgICAgICAgICAgICBBZGRlZCBhIGNsYXNzIEFwcGxpY2F0aW9uTWFuaWZlc3RM
b2FkZXIgd2hpY2ggaGFuZGxlcyBjcmVhdGluZyBhIFJlc291cmNlUmVxdWVzdCwKKyAgICAgICAg
ICAgIGxvYWRpbmcgdGhlIHJlc291cmNlIGZyb20gdGhlIENhY2hlZFJlc291cmNlTG9hZGVyLCBh
bmQgcGFyc2luZyB0aGUgcmVzdWx0aW5nIHRleHQuCisgICAgICAgICAgICBUaGlzIGNsYXNzIGFu
ZCBpdHMgcmVsYXRpb24gdG8gRG9jdW1lbnRMb2FkZXIgYXJlIHJvdWdobHkgYmFzZWQgb24gdGhh
dCBvZiBJY29uTG9hZGVyLAorICAgICAgICAgICAgd2hpY2ggc2VydmVzIGEgc2ltaWxhciBwdXJw
b3NlIC0gcmVxdWVzdGluZyBhIHJlc291cmNlIG9uIHRoZSBwYWdlIGFuZCB1bHRpbWF0ZWx5Cisg
ICAgICAgICAgICBwcm92aWRpbmcgaXQgdG8gdGhlIGVtYmVkZGVyLgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25NYW5pZmVzdExvYWRlcjo6QXBwbGljYXRpb25NYW5pZmVzdExvYWRlcik6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyOjp+QXBwbGljYXRp
b25NYW5pZmVzdExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVyOjpzdGFydExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25NYW5p
ZmVzdExvYWRlcjo6c3RvcExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25N
YW5pZmVzdExvYWRlcjo6cHJvY2Vzc01hbmlmZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uTWFuaWZlc3RMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIv
QXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oLgorICAgICAgICAq
IGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6c3RvcExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Omxv
YWRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpmaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0
KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmlzU3VwcG9ydGVkVHlwZSk6CisgICAgICAgICogbG9h
ZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9SZXNvdXJjZVR5
cGUpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpsb2dSZXNvdXJjZUxvYWRlZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpzZXRFbmNvZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjplbmNvZGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Ojpwcm9j
ZXNzKToKKyAgICAgICAgICAgIEFkZCBhIG1ldGhvZCB0byBwcm9jZXNzIHRoZSBmZXRjaGVkIHRl
eHQgaW50byBhbiBBcHBsaWNhdGlvbk1hbmlmZXN0LiBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
CisgICAgICAgICAgICBkb2VzIG5vdCBzdG9yZSB0aGUgcmVzdWx0aW5nIEFwcGxpY2F0aW9uTWFu
aWZlc3QgYmVjYXVzZSB0aGUgdGV4dCBvZiBhbiBhcHBsaWNhdGlvbgorICAgICAgICAgICAgbWFu
aWZlc3QgY2FuIHlpZWxkIGEgZGlmZmVyZW50IEFwcGxpY2F0aW9uTWFuaWZlc3QgZGVwZW5kaW5n
IG9uIHRoZSBVUkwgb2YgdGhlIGRvY3VtZW50CisgICAgICAgICAgICBwcm9jZXNzaW5nIGl0Lgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzLmguCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpkZWZhdWx0UHJpb3JpdHlGb3JSZXNv
dXJjZVR5cGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGVudFR5cGVGcm9tUmVzb3VyY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpjaGVja0luc2VjdXJlQ29udGVudCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6YWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5
IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBwYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmFwcGxpY2F0aW9uTWFuaWZlc3RLZXkpOgorICAg
ICAgICAqIHBhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg6CisgICAgICAgICogcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dNYW5pZmVzdEZyb21Tb3VyY2UgY29uc3QpOgorICAgICAgICAqIHBh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JNYW5p
ZmVzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0OjphZGREaXJlY3RpdmUpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDoKKwogMjAxNy0xMS0xNiAgRGF2aWQgUXVl
c2FkYSAgPGRhdmlkX3F1ZXNhZGFAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIGNsYXNzIGZv
ciBwYXJzaW5nIGFwcGxpY2F0aW9uIG1hbmlmZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA3NTlhNWYy
NTNhZS4uMjk1ZjUzYjYxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNyw2ICsyNywxMCBAQCBNb2R1
bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAKIAog
TW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3Bw
CiAKK2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmNwcAorCitsb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKwogI2VuZGlmCiAKIE1vZHVsZXMvYmVhY29u
L05hdmlnYXRvckJlYWNvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzNGZjNTBmYmUzNi4uNzYyNGRjOTNkZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTE3NDgsNyArMTc0OCw5IEBACiAJCTYyOEQyMTRFMTIxMzFFRjQwMDU1RENGQyAvKiBGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2MjhEMjE0RDEyMTMxRUY0MDA1NURDRkMgLyogRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTYy
QzEyMTdEMTFBQjlFNzcwMDNDNDYyQyAvKiBTdXNwZW5kYWJsZVRpbWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MkMxMjE3QjExQUI5RTc3MDAzQzQ2
MkMgLyogU3VzcGVuZGFibGVUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTYyQ0QzMjVBMTE1N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjJDRDMy
NTcxMTU3RTU3QzAwNjNCMEE3IC8qIEN1c3RvbUV2ZW50LmggKi87IH07CisJCTYzMTUyRDE5MUY5
NTMxRUUwMDdBNUU0QiAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzE1MkQxNzFGOTUzMUVFMDA3QTVF
NEIgLyogQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oICovOyB9OwogCQk2MzE4OUFFMzBFODNB
MzMzMDAwMTJFNDEgLyogTm9kZVJhcmVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2MzE4OUFFMjBFODNBMzMzMDAwMTJFNDEgLyogTm9kZVJhcmVE
YXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKKwkJNjM1M0UxRTYx
RjkxNzQzMTAwQTM0MjA4IC8qIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNTNFMUU0MUY5MTc0MzEwMEEz
NDIwOCAvKiBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjM1NEY0QzkxRjdBRkM5NDAwRDg5REYzIC8q
IEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDYzNTRGNEM3MUY3QUZDOTQwMEQ4OURGMyAvKiBBcHBsaWNhdGlv
bk1hbmlmZXN0UGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNjNCRDRBNUYxRjc3OEU5RjAwNDM4NzIyIC8qIEFwcGxpY2F0aW9uTWFuaWZl
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzQkQ0
QTVEMUY3NzhFOUYwMDQzODcyMiAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjNEN0IzMkQwRTc4Q0QzRjAw
Rjc2MTdDIC8qIE5vZGVSZW5kZXJTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjNEN0IzMkMwRTc4Q0QzRjAwRjc2MTdDIC8qIE5vZGVSZW5kZXJT
dHlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC04Mzc0LDcgKzgzNzYsMTEgQEAKIAkJNjJDRDMyNTYxMTU3RTU3QzAwNjNCMEE3IC8qIEN1c3Rv
bUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbUV2
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjJDRDMyNTcxMTU3RTU3QzAw
NjNCMEE3IC8qIEN1c3RvbUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEN1c3RvbUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYyQ0QzMjU4MTE1
N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
Q3VzdG9tRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MzE1MkQxNzFG
OTUzMUVFMDA3QTVFNEIgLyogQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTYzMTUyRDE4MUY5NTMxRUUwMDdBNUU0QiAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0TG9h
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MzE4OUFFMjBFODNBMzMzMDAwMTJFNDEg
LyogTm9kZVJhcmVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vZGVS
YXJlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MzUzRTFFNDFGOTE3NDMx
MDBBMzQyMDggLyogQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTYzNTNFMUU1MUY5MTc0MzEwMEEzNDIwOCAvKiBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MzU0RjRDNzFGN0FGQzk0MDBEODlERjMgLyogQXBw
bGljYXRpb25NYW5pZmVzdFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsaWNhdGlvbk1hbmlm
ZXN0UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYzNTRGNEM4MUY3QUZD
OTQwMEQ4OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2MzdCN0FERTBFODc2N0I4MDBFMzIxOTQgLyogRWxlbWVudFJhcmVEYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVsZW1lbnRSYXJlRGF0YS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE3NzYsNiArMjE3ODIsOCBAQAogCQlBOEQyQjI1
MjEyODdBNTYwMDBBRjREREEgLyogY2FjaGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTYzNTNFMUU1MUY5MTc0MzEwMEEzNDIwOCAvKiBDYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0LmNwcCAqLywKKwkJCQk2MzUzRTFFNDFGOTE3NDMxMDBBMzQyMDggLyog
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oICovLAogCQkJCUJDQjE2QzAwMDk3OUMzQkQwMDQ2
Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCAqLywKIAkJCQlCQ0IxNkMwMTA5NzlDM0JE
MDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oICovLAogCQkJCUJDNjRCNEM5MENCNDI5
NUQwMDVGMkI2MiAvKiBDYWNoZWRGb250LmNwcCAqLywKQEAgLTIzMjg1LDYgKzIzMjkzLDggQEAK
IAkJCQk1MTI2RTZCNjBBMkUzQUVGMDA1QzI5RkEgLyogaWNvbiAqLywKIAkJCQlBMTVFMzFGMDFF
MENCMDc1MDA0QjM3MUMgLyogaW9zICovLAogCQkJCTkzQTFFQUEyMEE1NjM0RDgwMDY5NjBBMCAv
KiBtYWMgKi8sCisJCQkJNjMxNTJEMTgxRjk1MzFFRTAwN0E1RTRCIC8qIEFwcGxpY2F0aW9uTWFu
aWZlc3RMb2FkZXIuY3BwICovLAorCQkJCTYzMTUyRDE3MUY5NTMxRUUwMDdBNUU0QiAvKiBBcHBs
aWNhdGlvbk1hbmlmZXN0TG9hZGVyLmggKi8sCiAJCQkJQTE0OTc4NkMxQUJBRjMzODAwQ0VGN0U0
IC8qIENvbnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExNDk3ODZEMUFCQUYzMzgwMENFRjdFNCAv
KiBDb250ZW50RmlsdGVyLmggKi8sCiAJCQkJRTE0MjRDOTExNjRCNTJDODAwRjMyRDQwIC8qIENv
b2tpZUphci5jcHAgKi8sCkBAIC0yNjA2NCw2ICsyNjA3NCw3IEBACiAJCQkJMUE4RjZCQzEwREI1
NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUEyQUFDNTkwREMyQTNCMTAwQTIwRDlBIC8qIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2M0JENEE1RjFGNzc4RTlGMDA0Mzg3MjIgLyogQXBwbGlj
YXRpb25NYW5pZmVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjMxNTJEMTkxRjk1MzFFRTAwN0E1
RTRCIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTYz
NTRGNEM5MUY3QUZDOTQwMEQ4OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5QjQxNzA2NDEyNTY2MkIzMDA2QjI4RkMgLyogQXBwbHlCbG9ja0Vs
ZW1lbnRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUREOTA5OUU2NDkyMDA1NkU1
ODEgLyogQXBwbHlTdHlsZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLApAQCAtMjYyMDQsNiArMjYy
MTUsNyBAQAogCQkJCTFBNTY5Q0ZDMEQ3RTJCODIwMDdDMzk4MyAvKiBjX3J1bnRpbWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBNTY5Q0ZFMEQ3RTJCODIwMDdDMzk4MyAvKiBjX3V0aWxpdHkuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3QzA0NkM0MUU0MjUwOEIwMDcyMDFFNyAvKiBDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTYzNTNFMUU2MUY5MTc0MzEwMEEz
NDIwOCAvKiBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0IxNkMxQTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM2NEI0Q0MwQ0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBRUY0RTY3MTcwRTE2MDMwMEFCMjc5OSAvKiBDYWNoZWRGb250Q2xp
ZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCmlu
ZGV4IGM0YjY4Y2MyNzkxLi4xMDkyY2JmNGZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5oCkBAIC03Myw2ICs3MywxMCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBET01Ub2tlbkxpc3QmIHJlbExpc3QoKTsKIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5J
RkVTVCkKKyAgICBib29sIGlzQXBwbGljYXRpb25NYW5pZmVzdCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVsQXR0cmlidXRlLmlzQXBwbGljYXRpb25NYW5pZmVzdDsgfQorI2VuZGlmCisKIHByaXZhdGU6
CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlu
a1JlbEF0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtSZWxBdHRyaWJ1dGUu
Y3BwCmluZGV4IDU3MmJkYjM0YzU4Li5hZjBiMWIwY2IxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9MaW5rUmVsQXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0xpbmtSZWxBdHRyaWJ1dGUuY3BwCkBAIC02NSw2ICs2NSwxMCBAQCBMaW5rUmVsQXR0cmlidXRl
OjpMaW5rUmVsQXR0cmlidXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiByZWwp
CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVsLCAiYWx0ZXJu
YXRlIHN0eWxlc2hlZXQiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZWwsICJz
dHlsZXNoZWV0IGFsdGVybmF0ZSIpKSB7CiAgICAgICAgIGlzU3R5bGVTaGVldCA9IHRydWU7CiAg
ICAgICAgIGlzQWx0ZXJuYXRlID0gdHJ1ZTsKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZF
U1QpCisgICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZWwsICJt
YW5pZmVzdCIpKSB7CisgICAgICAgIGlzQXBwbGljYXRpb25NYW5pZmVzdCA9IHRydWU7CisjZW5k
aWYKICAgICB9IGVsc2UgewogICAgICAgICAvLyBUb2tlbml6ZSB0aGUgcmVsIGF0dHJpYnV0ZSBh
bmQgc2V0IGJpdHMgYmFzZWQgb24gc3BlY2lmaWMga2V5d29yZHMgdGhhdCB3ZSBmaW5kLgogICAg
ICAgICBTdHJpbmcgcmVsQ29weSA9IHJlbDsKQEAgLTk4LDYgKzEwMiw5IEBAIGJvb2wgTGlua1Jl
bEF0dHJpYnV0ZTo6aXNTdXBwb3J0ZWQoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGF0
dHJpYnV0ZSkKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKICAgICAgICAgInByZWZldGNoIiwg
InN1YnJlc291cmNlIiwKICNlbmRpZgorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkK
KyAgICAgICAgIm1hbmlmZXN0IiwKKyNlbmRpZgogICAgIH07CiAKICAgICBmb3IgKGF1dG8qIHN1
cHBvcnRlZEF0dHJpYnV0ZSA6IHN1cHBvcnRlZEF0dHJpYnV0ZXMpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTGlua1JlbEF0dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9MaW5rUmVsQXR0cmlidXRlLmgKaW5kZXggZjEyZTk4NjYzN2MuLmE2MTEwYTdkYzgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtSZWxBdHRyaWJ1dGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0xpbmtSZWxBdHRyaWJ1dGUuaApAQCAtNTEsNiArNTEsOSBAQCBzdHJ1
Y3QgTGlua1JlbEF0dHJpYnV0ZSB7CiAgICAgYm9vbCBpc0xpbmtQcmVmZXRjaCB7IGZhbHNlIH07
CiAgICAgYm9vbCBpc0xpbmtTdWJyZXNvdXJjZSB7IGZhbHNlIH07CiAjZW5kaWYKKyNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgYm9vbCBpc0FwcGxpY2F0aW9uTWFuaWZlc3Qg
eyBmYWxzZSB9OworI2VuZGlmCiAKICAgICBMaW5rUmVsQXR0cmlidXRlKCk7CiAgICAgTGlua1Jl
bEF0dHJpYnV0ZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGMz
NTE1OTY5NDc5Li4yZGY0MDkxOTNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNzUsNiArNzUsMTAgQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8eWFyci9SZWd1
bGFyRXhwcmVzc2lvbi5oPgogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorI2lu
Y2x1ZGUgIkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxF
KFdFQl9BUkNISVZFKSAmJiBVU0UoQ0YpCiAjaW5jbHVkZSAiTGVnYWN5V2ViQXJjaGl2ZS5oIgog
I2VuZGlmCkBAIC0xMDYsNiArMTEwLDkgQEAgc3RhdGljIGJvb2wgaGFzVGV4dENvbnRlbnQoQ2Fj
aGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQogICAgICAgICB8fCB0eXBlID09IEluc3BlY3Rv
clBhZ2VBZ2VudDo6U3R5bGVzaGVldFJlc291cmNlCiAgICAgICAgIHx8IHR5cGUgPT0gSW5zcGVj
dG9yUGFnZUFnZW50OjpTY3JpcHRSZXNvdXJjZQogICAgICAgICB8fCB0eXBlID09IEluc3BlY3Rv
clBhZ2VBZ2VudDo6WEhSUmVzb3VyY2UKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1Qp
CisgICAgICAgIHx8IHR5cGUgPT0gSW5zcGVjdG9yUGFnZUFnZW50OjpBcHBsaWNhdGlvbk1hbmlm
ZXN0UmVzb3VyY2UKKyNlbmRpZgogICAgICAgICB8fCB0eXBlID09IEluc3BlY3RvclBhZ2VBZ2Vu
dDo6RmV0Y2hSZXNvdXJjZTsKIH0KIApAQCAtMjcxLDYgKzI3OCwxMCBAQCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGUgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZVR5
cGVKU09OKElucwogICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVz
b3VyY2VUeXBlOjpXZWJTb2NrZXQ7CiAgICAgY2FzZSBPdGhlclJlc291cmNlOgogICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlOjpPdGhlcjsKKyNp
ZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgY2FzZSBBcHBsaWNhdGlvbk1hbmlm
ZXN0UmVzb3VyY2U6CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgfQogICAgIHJldHVybiBJ
bnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGU6Ok90aGVyOwogfQpAQCAtMjk2
LDYgKzMwNywxMCBAQCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSBJbnNwZWN0b3JQ
YWdlQWdlbnQ6Omluc3BlY3RvclJlc291cmNlVHlwZShDYWNoZQogICAgICAgICByZXR1cm4gSW5z
cGVjdG9yUGFnZUFnZW50OjpEb2N1bWVudFJlc291cmNlOwogICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OkJlYWNvbjoKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6QmVhY29uUmVz
b3VyY2U7CisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OkFwcGxpY2F0aW9uTWFuaWZlc3RSZXNvdXJjZTsKKyNlbmRpZgogICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6Ok1lZGlhUmVzb3VyY2U6CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6
SWNvbjoKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4
IDY1MDM5NThhNWY2Li5kNGQ1MjMwZDM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC03Miw2ICs3Miw5IEBAIHB1
YmxpYzoKICAgICAgICAgUGluZ1Jlc291cmNlLAogICAgICAgICBCZWFjb25SZXNvdXJjZSwKICAg
ICAgICAgV2ViU29ja2V0UmVzb3VyY2UsCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNU
KQorICAgICAgICBBcHBsaWNhdGlvbk1hbmlmZXN0UmVzb3VyY2UsCisjZW5kaWYKICAgICAgICAg
T3RoZXJSZXNvdXJjZSwKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
QXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLjdlNzI5ZjQwMjBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuY3BwCkBAIC0wLDAgKzEsMTEzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXIuaCIKKworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKwor
I2luY2x1ZGUgIkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCIKKyNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgorI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCIKKyNpbmNsdWRlICJEb2N1
bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworQXBwbGljYXRpb25NYW5pZmVzdExvYWRlcjo6QXBwbGljYXRpb25NYW5pZmVzdExvYWRlcihE
b2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIsIGNvbnN0IFVSTCYgdXJsLCBib29sIHVzZUNy
ZWRlbnRpYWxzKQorICAgIDogbV9kb2N1bWVudExvYWRlcihkb2N1bWVudExvYWRlcikKKyAgICAs
IG1fdXJsKHVybCkKKyAgICAsIG1fdXNlQ3JlZGVudGlhbHModXNlQ3JlZGVudGlhbHMpCit7Cit9
CisKK0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6On5BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVy
KCkKK3sKKyAgICBzdG9wTG9hZGluZygpOworfQorCitib29sIEFwcGxpY2F0aW9uTWFuaWZlc3RM
b2FkZXI6OnN0YXJ0TG9hZGluZygpCit7CisgICAgQVNTRVJUKCFtX3Jlc291cmNlKTsKKyAgICBh
dXRvKiBmcmFtZSA9IG1fZG9jdW1lbnRMb2FkZXIuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1
ZXN0ID0gbV91cmw7CisgICAgcmVzb3VyY2VSZXF1ZXN0LnNldFByaW9yaXR5KFJlc291cmNlTG9h
ZFByaW9yaXR5OjpMb3cpOworI2lmICFFUlJPUl9ESVNBQkxFRAorICAgIC8vIENvcHkgdGhpcyBi
ZWNhdXNlIHdlIG1heSB3YW50IHRvIGFjY2VzcyBpdCBhZnRlciB0cmFuc2ZlcnJpbmcgdGhlCisg
ICAgLy8gYHJlc291cmNlUmVxdWVzdGAgdG8gdGhlIGByZXF1ZXN0YC4gSWYgd2UgZG9uJ3QsIHRo
ZW4gdGhlIExPR19FUlJPUgorICAgIC8vIGJlbG93IHdvbid0IHByaW50IGEgVVJMLgorICAgIGF1
dG8gcmVzb3VyY2VSZXF1ZXN0VVJMID0gcmVzb3VyY2VSZXF1ZXN0LnVybCgpOworI2VuZGlmCisK
KyAgICBhdXRvIGNyZWRlbnRpYWxzID0gbV91c2VDcmVkZW50aWFscyA/IEZldGNoT3B0aW9uczo6
Q3JlZGVudGlhbHM6OkluY2x1ZGUgOiBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0Owor
ICAgIGF1dG8gb3B0aW9ucyA9IFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBT
bmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVz
ZSwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMs
IGNyZWRlbnRpYWxzLCBEb1NlY3VyaXR5Q2hlY2ssIEZldGNoT3B0aW9uczo6TW9kZTo6Tm9Db3Jz
LCBEb05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9z
aXRpb246OkRvUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9h
ZGluZywgQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nKTsKKyAgICBvcHRpb25zLmRlc3RpbmF0
aW9uID0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6TWFuaWZlc3Q7CisgICAgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QoV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBvcHRpb25zKTsK
KworICAgIGF1dG8gY2FjaGVkUmVzb3VyY2UgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVz
b3VyY2VMb2FkZXIoKS5yZXF1ZXN0QXBwbGljYXRpb25NYW5pZmVzdChXVEZNb3ZlKHJlcXVlc3Qp
KTsKKyAgICBtX3Jlc291cmNlID0gY2FjaGVkUmVzb3VyY2UudmFsdWVPcihudWxscHRyKTsKKyAg
ICBpZiAobV9yZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc3RhcnQgbG9hZCBmb3Ig
YXBwbGljYXRpb24gbWFuaWZlc3QgYXQgdXJsICVzIChlcnJvcjogJXMpIiwgcmVzb3VyY2VSZXF1
ZXN0VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBjYWNoZWRSZXNvdXJjZS5lcnJvcigpLmxv
Y2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBBcHBsaWNhdGlvbk1hbmlm
ZXN0TG9hZGVyOjpzdG9wTG9hZGluZygpCit7CisgICAgaWYgKG1fcmVzb3VyY2UpIHsKKyAgICAg
ICAgbV9yZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICAgICAgbV9yZXNvdXJjZSA9
IG51bGxwdHI7CisgICAgfQorfQorCitzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+
JiBBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyOjpwcm9jZXNzTWFuaWZlc3QoKQoreworICAgIGlm
ICghbV9wcm9jZXNzZWRNYW5pZmVzdCAmJiBtX3Jlc291cmNlKSB7CisgICAgICAgIGF1dG8gbWFu
aWZlc3RVUkwgPSBtX3VybDsKKyAgICAgICAgYXV0byBkb2N1bWVudFVSTCA9IG1fZG9jdW1lbnRM
b2FkZXIudXJsKCk7CisgICAgICAgIGF1dG8gZnJhbWUgPSBtX2RvY3VtZW50TG9hZGVyLmZyYW1l
KCk7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBmcmFtZSA/IGZyYW1lLT5kb2N1bWVudCgpIDog
bnVsbHB0cjsKKyAgICAgICAgbV9wcm9jZXNzZWRNYW5pZmVzdCA9IG1fcmVzb3VyY2UtPnByb2Nl
c3MobWFuaWZlc3RVUkwsIGRvY3VtZW50VVJMLCBkb2N1bWVudCk7CisgICAgfQorICAgIHJldHVy
biBtX3Byb2Nlc3NlZE1hbmlmZXN0OworfQorCit2b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3RMb2Fk
ZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKK3sKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CisgICAgbV9kb2N1
bWVudExvYWRlci5maW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KCp0aGlzKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlm
ZXN0TG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjhiNjQz
MWFiNDIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0
aW9uTWFuaWZlc3RMb2FkZXIuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisKKyNpbmNsdWRlICJB
cHBsaWNhdGlvbk1hbmlmZXN0LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQu
aCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIlVSTC5oIgor
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q7CitjbGFzcyBEb2N1bWVudExvYWRlcjsKKwor
Y2xhc3MgQXBwbGljYXRpb25NYW5pZmVzdExvYWRlciBmaW5hbCA6IHByaXZhdGUgQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQgeworV1RGX01BS0VfTk9OQ09QWUFCTEUoQXBwbGljYXRpb25NYW5pZmVz
dExvYWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHR5cGVkZWYg
V1RGOjpGdW5jdGlvbjx2b2lkIChDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0Pik+IENvbXBsZXRpb25IYW5kbGVyVHlwZTsKKworICAgIEFwcGxpY2F0aW9uTWFu
aWZlc3RMb2FkZXIoRG9jdW1lbnRMb2FkZXImLCBjb25zdCBVUkwmLCBib29sKTsKKyAgICB2aXJ0
dWFsIH5BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyKCk7CisKKyAgICBib29sIHN0YXJ0TG9hZGlu
ZygpOworICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGlj
YXRpb25NYW5pZmVzdD4mIHByb2Nlc3NNYW5pZmVzdCgpOworCitwcml2YXRlOgorICAgIHZvaWQg
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKTsKKworICAgIERvY3VtZW50TG9hZGVyJiBt
X2RvY3VtZW50TG9hZGVyOworICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4g
bV9wcm9jZXNzZWRNYW5pZmVzdDsKKyAgICBVUkwgbV91cmw7CisgICAgYm9vbCBtX3VzZUNyZWRl
bnRpYWxzOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3Q+IG1fcmVzb3VyY2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAppbmRleCBhYzg4NTkwMGRlNC4uNmQ4NDQ3M2NlZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtODQsNiArODQsMTIgQEAKICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisjaW5jbHVkZSAiQXBwbGljYXRp
b25NYW5pZmVzdExvYWRlci5oIgorI2luY2x1ZGUgIkhUTUxIZWFkRWxlbWVudC5oIgorI2luY2x1
ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUp
IHx8IEVOQUJMRShNSFRNTCkKICNpbmNsdWRlICJBcmNoaXZlRmFjdG9yeS5oIgogI2VuZGlmCkBA
IC0yODEsNiArMjg3LDEyIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nKCkKICAg
ICAgICAgbm90aWZ5RmluaXNoZWRMb2FkaW5nSWNvbihjYWxsYmFja0lkZW50aWZpZXIsIG51bGxw
dHIpOwogICAgIG1faWNvbkxvYWRlcnMuY2xlYXIoKTsKICAgICBtX2ljb25zUGVuZGluZ0xvYWRE
ZWNpc2lvbi5jbGVhcigpOworICAgIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkK
KyAgICBmb3IgKGF1dG8gY2FsbGJhY2tJZGVudGlmaWVyIDogbV9hcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVycy52YWx1ZXMoKSkKKyAgICAgICAgbm90aWZ5RmluaXNoZWRMb2FkaW5nQXBwbGljYXRp
b25NYW5pZmVzdChjYWxsYmFja0lkZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCk7CisgICAgbV9hcHBs
aWNhdGlvbk1hbmlmZXN0TG9hZGVycy5jbGVhcigpOworI2VuZGlmCiAKICAgICAvLyBBbHdheXMg
Y2FuY2VsIG11bHRpcGFydCBsb2FkZXJzCiAgICAgY2FuY2VsQWxsKG1fbXVsdGlwYXJ0U3VicmVz
b3VyY2VMb2FkZXJzKTsKQEAgLTEwNDUsNiArMTA1Nyw2OSBAQCB2b2lkIERvY3VtZW50TG9hZGVy
OjpjbGVhck1haW5SZXNvdXJjZUxvYWRlcigpCiAgICAgICAgIGNoZWNrTG9hZENvbXBsZXRlKCk7
CiB9CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCit1aW50NjRfdCBEb2N1bWVu
dExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QoKQoreworICAgIHN0YXRpYyB1aW50NjRf
dCBuZXh0Q2FsbGJhY2tJRCA9IDE7CisKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3Vt
ZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAo
IW1fZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGRv
Y3VtZW50LT51cmwoKS5pc0VtcHR5KCkgfHwgZG9jdW1lbnQtPnVybCgpLmlzQmxhbmtVUkwoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBhdXRvIGhlYWQgPSBkb2N1bWVudC0+aGVhZCgpOwor
ICAgIGlmICghaGVhZCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBVUkwgbWFuaWZlc3RVUkw7
CisgICAgYm9vbCB1c2VDcmVkZW50aWFscyA9IGZhbHNlOworICAgIGZvciAoY29uc3QgYXV0byYg
bGluayA6IGNoaWxkcmVuT2ZUeXBlPEhUTUxMaW5rRWxlbWVudD4oKmhlYWQpKSB7CisgICAgICAg
IGlmIChsaW5rLmlzQXBwbGljYXRpb25NYW5pZmVzdCgpKSB7CisgICAgICAgICAgICBtYW5pZmVz
dFVSTCA9IGxpbmsuaHJlZigpOworICAgICAgICAgICAgdXNlQ3JlZGVudGlhbHMgPSBlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKGxpbmsuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OmNyb3Nzb3JpZ2luQXR0ciksICJ1c2UtY3JlZGVudGlhbHMiKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1hbmlmZXN0VVJMLmlzTnVsbCgp
IHx8IG1hbmlmZXN0VVJMLmlzRW1wdHkoKSB8fCAhbWFuaWZlc3RVUkwuaXNWYWxpZCgpKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIGF1dG8gbWFuaWZlc3RMb2FkZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI+KCp0aGlzLCBtYW5pZmVzdFVSTCwgdXNlQ3Jl
ZGVudGlhbHMpOworICAgIGF1dG8qIHJhd01hbmlmZXN0TG9hZGVyID0gbWFuaWZlc3RMb2FkZXIu
Z2V0KCk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbmV4dENhbGxiYWNrSUQrKzsKKyAgICBtX2Fw
cGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLnNldChXVEZNb3ZlKG1hbmlmZXN0TG9hZGVyKSwgY2Fs
bGJhY2tJRCk7CisKKyAgICBpZiAoIXJhd01hbmlmZXN0TG9hZGVyLT5zdGFydExvYWRpbmcoKSkg
eworICAgICAgICBtX2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLnJlbW92ZShyYXdNYW5pZmVz
dExvYWRlcik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBjYWxsYmFj
a0lEOworfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlv
bk1hbmlmZXN0KEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXImIGxvYWRlcikKK3sKKyAgICAvLyBJ
ZiB0aGUgRG9jdW1lbnRMb2FkZXIgaGFzIGRldGFjaGVkIGZyb20gaXRzIGZyYW1lLCBhbGwgbWFu
aWZlc3QgbG9hZHMgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNhbmNlbGVkLgorICAgIEFTU0VS
VChtX2ZyYW1lKTsKKworICAgIGF1dG8gY2FsbGJhY2tJZGVudGlmaWVyID0gbV9hcHBsaWNhdGlv
bk1hbmlmZXN0TG9hZGVycy5nZXQoJmxvYWRlcik7CisgICAgbm90aWZ5RmluaXNoZWRMb2FkaW5n
QXBwbGljYXRpb25NYW5pZmVzdChjYWxsYmFja0lkZW50aWZpZXIsIGxvYWRlci5wcm9jZXNzTWFu
aWZlc3QoKSk7CisgICAgbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVycy5yZW1vdmUoJmxvYWRl
cik7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxp
Y2F0aW9uTWFuaWZlc3QodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFs
PEFwcGxpY2F0aW9uTWFuaWZlc3Q+IG1hbmlmZXN0KQoreworICAgIFJFTEVBU0VfQVNTRVJUKGNh
bGxiYWNrSWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mcmFtZSk7CisgICAgbV9m
cmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVz
dChjYWxsYmFja0lkZW50aWZpZXIsIG1hbmlmZXN0KTsKK30KKyNlbmRpZgorCiB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpzZXRDdXN0b21IZWFkZXJGaWVsZHMoVmVjdG9yPEhUVFBIZWFkZXJGaWVsZD4m
JiBmaWVsZHMpCiB7CiAgICAgbV9jdXN0b21IZWFkZXJGaWVsZHMgPSBXVEZNb3ZlKGZpZWxkcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGVmYjhkYTJhZWJhLi5m
NWEzZDM1NmIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTUw
LDYgKzUwLDEwIEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyNpbmNsdWRlICJBcHBs
aWNhdGlvbk1hbmlmZXN0LmgiCisjZW5kaWYKKwogI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKICNp
bmNsdWRlIDx3dGYvUnVuTG9vcFRpbWVyLmg+CiAjZW5kaWYKQEAgLTYxLDYgKzY1LDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7CitjbGFzcyBB
cHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyOwogY2xhc3MgQXJjaGl2ZTsKIGNsYXNzIEFyY2hpdmVS
ZXNvdXJjZTsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CkBAIC0yOTcsNiArMzAy
LDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFZlY3RvcjxMaW5rSWNvbj4mIGxpbmtJY29ucygp
IGNvbnN0IHsgcmV0dXJuIG1fbGlua0ljb25zOyB9CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCisgICAgV0VCQ09SRV9FWFBPUlQgdWludDY0X3QgbG9hZEFwcGxpY2F0aW9uTWFu
aWZlc3QoKTsKKyAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QoQXBw
bGljYXRpb25NYW5pZmVzdExvYWRlciYpOworI2VuZGlmCisKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEN1c3RvbUhlYWRlckZpZWxkcyhWZWN0b3I8SFRUUEhlYWRlckZpZWxkPiYmIGZpZWxk
cyk7CiAgICAgY29uc3QgVmVjdG9yPEhUVFBIZWFkZXJGaWVsZD4mIGN1c3RvbUhlYWRlckZpZWxk
cygpIHsgcmV0dXJuIG1fY3VzdG9tSGVhZGVyRmllbGRzOyB9CiAgICAgCkBAIC0zNzAsNiArMzgw
LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkTG9hZGluZ0ljb24odWlu
dDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBTaGFyZWRCdWZmZXIqKTsKIAorI2lmIEVOQUJMRShB
UFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxp
Y2F0aW9uTWFuaWZlc3QodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFs
PEFwcGxpY2F0aW9uTWFuaWZlc3Q+KTsKKyNlbmRpZgorCiAgICAgUmVmPENhY2hlZFJlc291cmNl
TG9hZGVyPiBtX2NhY2hlZFJlc291cmNlTG9hZGVyOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwpAQCAtNDU5LDYgKzQ3MywxMCBA
QCBwcml2YXRlOgogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25Mb2FkZXI+LCB1aW50
NjRfdD4gbV9pY29uTG9hZGVyczsKICAgICBWZWN0b3I8TGlua0ljb24+IG1fbGlua0ljb25zOwog
CisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIEhhc2hNYXA8c3RkOjp1bmlx
dWVfcHRyPEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI+LCB1aW50NjRfdD4gbV9hcHBsaWNhdGlv
bk1hbmlmZXN0TG9hZGVyczsKKyNlbmRpZgorCiAgICAgVmVjdG9yPEhUVFBIZWFkZXJGaWVsZD4g
bV9jdXN0b21IZWFkZXJGaWVsZHM7CiAgICAgCiAgICAgYm9vbCBtX3N1YnJlc291cmNlTG9hZGVy
c0FyZVBhZ2VDYWNoZUFjY2VwdGFibGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAwMmY5YjQyOGU5OS4uMTUwMTYxOGQ1NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0zNiw2ICszNiwxMCBA
QAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisjaW5jbHVkZSAiQXBwbGlj
YXRpb25NYW5pZmVzdC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
CiAjaW5jbHVkZSAiQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgiCiAjZW5kaWYKQEAgLTM1
Niw2ICszNjAsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGdldExvYWREZWNpc2lv
bkZvckljb25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6TGlua0ljb24mLCB1aW50
NjRfdD4+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24odWludDY0
X3QsIFNoYXJlZEJ1ZmZlciopIHsgfQorCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNU
KQorICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVp
bnQ2NF90LCBjb25zdCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+JikgeyB9Cisj
ZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5r
TG9hZGVyLmNwcAppbmRleCBmN2NjNTc5OTgwMC4uMDNkYmE2OTdiYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTE3MSw2ICsxNzEsMTEgQEAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50PiBjcmVhdGVMaW5rUHJlbG9hZFJlc291
cmNlQ2xpZW4KICNlbmRpZgogICAgICAgICAvLyBOb25lIG9mIHRoZXNlIHZhbHVlcyBpcyBjdXJy
ZW50bHkgc3VwcG9ydGVkIGFzIGFuIGBhc2AgdmFsdWUuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBjYXNlIENhY2hl
ZFJlc291cmNlOjpBcHBsaWNhdGlvbk1hbmlmZXN0OgorICAgICAgICAvLyBGSVhNRTogU3VwcG9y
dCBwcmVsb2FkaW5nIHRoZSBtYW5pZmVzdC4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0xOTgsNiArMjAzLDkg
QEAgYm9vbCBMaW5rTG9hZGVyOjppc1N1cHBvcnRlZFR5cGUoQ2FjaGVkUmVzb3VyY2U6OlR5cGUg
cmVzb3VyY2VUeXBlLCBjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0
cnk6OmlzU3VwcG9ydGVkVGV4dFRyYWNrTUlNRVR5cGUobWltZVR5cGUpOwogI2VuZGlmCiAgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2U6CisjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6
CisjZW5kaWYKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5m
by5jcHAKaW5kZXggMTNiMmFlMTAwZjQuLjAzZDYxZWI4YjkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwCkBAIC03MCw2ICs3MCwxMCBAQCBSZXNvdXJjZVR5
cGUgdG9SZXNvdXJjZVR5cGUoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSkKICAgICBjYXNlIENh
Y2hlZFJlc291cmNlOjpMaW5rU3VicmVzb3VyY2U6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogI2VuZGlmCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6CisgICAgICAgIHJldHVybiBSZXNv
dXJjZVR5cGU6OlJhdzsKKyNlbmRpZgogICAgIH07CiAgICAgcmV0dXJuIFJlc291cmNlVHlwZTo6
UmF3OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggYzFjOGE1M2QwYmIuLmY1ZWRlMjMwNjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQ3MSw2ICs0NzEsMTEgQEAgc3RhdGljIHZvaWQgbG9n
UmVzb3VyY2VMb2FkZWQoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlKQog
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNWR0RvY3VtZW50UmVzb3VyY2U6CiAgICAgICAgIHJl
c291cmNlVHlwZSA9IERpYWdub3N0aWNMb2dnaW5nS2V5czo6c3ZnRG9jdW1lbnRLZXkoKTsKICAg
ICAgICAgYnJlYWs7CisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6CisgICAgICAgIHJlc291cmNlVHlw
ZSA9IERpYWdub3N0aWNMb2dnaW5nS2V5czo6YXBwbGljYXRpb25NYW5pZmVzdEtleSgpOworICAg
ICAgICBicmVhazsKKyNlbmRpZgogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQogICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpM
aW5rU3VicmVzb3VyY2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjQxMTMwN2U0NWNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC0wLDAg
KzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdC5oIgorCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklG
RVNUKQorCisjaW5jbHVkZSAiQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5oIgorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKKyAgICA6IENhY2hlZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCks
IEFwcGxpY2F0aW9uTWFuaWZlc3QsIHNlc3Npb25JRCkKKyAgICAsIG1fZGVjb2RlcihUZXh0UmVz
b3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL21hbmlmZXN0K2pzb24iLCBVVEY4RW5j
b2RpbmcoKSkpCit7Cit9CisKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEpCit7CisgICAgbV9kYXRhID0gZGF0YTsKKyAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpCisg
ICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpOworICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEpOwor
fQorCit2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OnNldEVuY29kaW5nKGNvbnN0IFN0
cmluZyYgY2hzKQoreworICAgIG1fZGVjb2Rlci0+c2V0RW5jb2RpbmcoY2hzLCBUZXh0UmVzb3Vy
Y2VEZWNvZGVyOjpFbmNvZGluZ0Zyb21IVFRQSGVhZGVyKTsKK30KKworU3RyaW5nIENhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kZWNv
ZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKK30KKworc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1h
bmlmZXN0PiBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Ojpwcm9jZXNzKGNvbnN0IFVSTCYgbWFu
aWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0PiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQoreworICAgIGlmICghbV90ZXh0KQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KQorICAgICAgICByZXR1cm4gQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2UoKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsICptX3RleHQsIG1hbmlmZXN0VVJMLCBkb2N1bWVudFVSTCk7Cisg
ICAgcmV0dXJuIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlKCptX3RleHQsIG1hbmlm
ZXN0VVJMLCBkb2N1bWVudFVSTCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42YjFhNzUzYWE0NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorCisjaW5jbHVkZSAiQXBwbGljYXRpb25NYW5p
ZmVzdC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKK2NsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CisKK2NsYXNzIENhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3QgZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgeworcHVibGljOgorICAg
IENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIFBBTDo6
U2Vzc2lvbklEKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0aW9uTWFuaWZl
c3Q+IHByb2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVS
TCwgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+ID0gbnVsbHB0cik7CisKK3ByaXZhdGU6
CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIG92ZXJyaWRlOworICAgIGNv
bnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2RlY29kZXIucHRyKCk7IH0KKyAgICB2b2lkIHNldEVuY29kaW5nKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJy
aWRlOworCisgICAgUmVmPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKKyAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gbV90ZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBQ0hFRF9SRVNPVVJDRShDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0LCBDYWNoZWRSZXNvdXJjZTo6QXBwbGljYXRpb25NYW5pZmVzdCkKKworI2VuZGlm
IC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGQ4ZGJkZjMyZjBjLi5iZWNiOThhOGE3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CkBAIC0xMDIsNiArMTAyLDEwIEBAIFJlc291cmNlTG9hZFByaW9yaXR5IENhY2hlZFJlc291cmNl
OjpkZWZhdWx0UHJpb3JpdHlGb3JSZXNvdXJjZVR5cGUoVHlwZSB0eXBlKQogICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OlRleHRUcmFja1Jlc291cmNlOgogICAgICAgICByZXR1cm4gUmVzb3VyY2VM
b2FkUHJpb3JpdHk6OkxvdzsKICNlbmRpZgorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVT
VCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpBcHBsaWNhdGlvbk1hbmlmZXN0OgorICAgICAg
ICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHk6OkxvdzsKKyNlbmRpZgogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHk6Okxv
dzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXgg
YzdlYWUxMmY0NTkuLjM1Zjc4Y2U1MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtODQsNiArODQsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQogICAgICAgICAsIFRleHRUcmFja1Jlc291cmNlCiAjZW5kaWYKKyNpZiBF
TkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgICAgICwgQXBwbGljYXRpb25NYW5pZmVz
dAorI2VuZGlmCiAgICAgfTsKIAogICAgIGVudW0gU3RhdHVzIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDlkOTA2
YjhkYzdlLi5hYzFmODlhMzY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03Nyw2ICs3NywxMCBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyNpbmNsdWRlICJDYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICNp
bmNsdWRlICJDYWNoZWRUZXh0VHJhY2suaCIKICNlbmRpZgpAQCAtMTM0LDYgKzEzOCwxMCBAQCBz
dGF0aWMgQ2FjaGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBl
IHR5cGUsIENhY2hlZFJlc291cmNlUgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlRleHRUcmFj
a1Jlc291cmNlOgogICAgICAgICByZXR1cm4gbmV3IENhY2hlZFRleHRUcmFjayhXVEZNb3ZlKHJl
cXVlc3QpLCBzZXNzaW9uSUQpOwogI2VuZGlmCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklG
RVNUKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6CisgICAg
ICAgIHJldHVybiBuZXcgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChXVEZNb3ZlKHJlcXVlc3Qp
LCBzZXNzaW9uSUQpOworI2VuZGlmCiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMzIyLDYgKzMzMCwxMyBAQCBSZXNvdXJjZUVycm9yT3I8
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cgogICAgIHJldHVybiBjYXN0Q2FjaGVkUmVzb3VyY2VUbzxDYWNoZWRSYXdSZXNvdXJj
ZT4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2UsIFdURk1vdmUo
cmVxdWVzdCkpKTsKIH0KIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKK1Jlc291
cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
Pj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIGNhc3RDYWNoZWRSZXNv
dXJjZVRvPENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZTo6QXBwbGljYXRpb25NYW5pZmVzdCwgV1RGTW92ZShyZXF1ZXN0KSkpOworfQorI2Vu
ZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKwogc3RhdGljIE1peGVkQ29udGVu
dENoZWNrZXI6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlRnJvbVJlc291cmNlVHlwZShDYWNoZWRS
ZXNvdXJjZTo6VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMzYyLDYgKzM3
NywxMCBAQCBzdGF0aWMgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Q29udGVudFR5cGUgY29udGVudFR5
cGVGcm9tUmVzb3VyY2VUeXBlKENhY2hlZFJlc291cgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6
OlRleHRUcmFja1Jlc291cmNlOgogICAgICAgICByZXR1cm4gTWl4ZWRDb250ZW50Q2hlY2tlcjo6
Q29udGVudFR5cGU6OkFjdGl2ZTsKICNlbmRpZgorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5J
RkVTVCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpBcHBsaWNhdGlvbk1hbmlmZXN0OgorICAg
ICAgICByZXR1cm4gTWl4ZWRDb250ZW50Q2hlY2tlcjo6Q29udGVudFR5cGU6OkFjdGl2ZTsKKyNl
bmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm4gTWl4ZWRDb250ZW50Q2hlY2tlcjo6Q29udGVudFR5cGU6OkFjdGl2ZTsKQEAgLTQx
OCw2ICs0MzcsOSBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjaGVja0luc2VjdXJlQ29u
dGVudChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdAogICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OkxpbmtTdWJyZXNvdXJjZToKICAgICAgICAgLy8gUHJlZmV0Y2ggY2Fubm90IGFmZmVj
dCB0aGUgY3VycmVudCBkb2N1bWVudC4KICNlbmRpZgorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9N
QU5JRkVTVCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpBcHBsaWNhdGlvbk1hbmlmZXN0Ogor
I2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ2Niw2
ICs0ODgsMTIgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6YWxsb3dlZEJ5Q29udGVudFNl
Y3VyaXR5UG9saWN5KENhY2hlZFJlc291cmNlOjpUeXBlIHQKICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpCZWFjb246CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2U6CiAgICAg
ICAgIHJldHVybiB0cnVlOworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpBcHBsaWNhdGlvbk1hbmlmZXN0OgorICAgICAgICBpZiAoIW1f
ZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd01hbmlmZXN0RnJvbVNvdXJj
ZSh1cmwsIHJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkMzI4OGNhYmMxMy4uOGI1MTNjNmQwYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5oCkBAIC00MSw2ICs0MSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKK2NsYXNzIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3Q7CisjZW5kaWYKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBDYWNoZWRTVkdE
b2N1bWVudDsKIGNsYXNzIENhY2hlZEZvbnQ7CkBAIC05Niw2ICs5OSw5IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFRleHRUcmFjaz4+IHJlcXVlc3RUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0JiYpOwogI2VuZGlmCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAg
IFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0Pj4gcmVxdWVzdEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
JiYpOworI2VuZGlmCiAKICAgICAvLyBMb2dzIGFuIGFjY2VzcyBkZW5pZWQgbWVzc2FnZSB0byB0
aGUgY29uc29sZSBmb3IgdGhlIHNwZWNpZmllZCBVUkwuCiAgICAgdm9pZCBwcmludEFjY2Vzc0Rl
bmllZE1lc3NhZ2UoY29uc3QgVVJMJiB1cmwpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwCmluZGV4IGVmMTAyMDFlMzM2Li42ZjkxZDQ2NDcx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcApA
QCAtNDEzLDYgKzQxMywxMyBAQCBTdHJpbmcgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjphcHBsaWNh
dGlvbkNhY2hlS2V5KCkKICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJhcHBsaWNhdGlvbkNhY2hl
Iik7CiB9CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCitTdHJpbmcgRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjphcHBsaWNhdGlvbk1hbmlmZXN0S2V5KCkKK3sKKyAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJhcHBsaWNhdGlvbk1hbmlmZXN0Iik7Cit9CisjZW5kaWYKKwogU3RyaW5n
IERpYWdub3N0aWNMb2dnaW5nS2V5czo6YXVkaW9LZXkoKQogewogICAgIHJldHVybiBBU0NJSUxp
dGVyYWwoImF1ZGlvIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0
aWNMb2dnaW5nS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tl
eXMuaAppbmRleCBhMmJkMzY1OWRiMC4uNjY3MTlmNzNiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaApAQCAtMzQsNiArMzQsOSBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBhY3RpdmVJbkZvcmVncm91bmRUYWJLZXko
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGFjdGl2ZUluQmFja2dyb3VuZFRh
Yk9ubHlLZXkoKTsKICAgICBzdGF0aWMgU3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVLZXkoKTsKKyNp
ZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgc3RhdGljIFN0cmluZyBhcHBsaWNh
dGlvbk1hbmlmZXN0S2V5KCk7CisjZW5kaWYKICAgICBzdGF0aWMgU3RyaW5nIGF1ZGlvS2V5KCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBiYWNrTmF2aWdhdGlvbkRlbHRhS2V5
KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBjYWNoZUNvbnRyb2xOb1N0b3Jl
S2V5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmNwcAppbmRleCBhNDY0ODkwNzQyYy4uN2M1NTUxMWM3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtNTQ5LDYgKzU0
OSwxMyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dGb250RnJvbVNvdXJjZShj
b25zdCBVUkwmIHVybCwgUmVkaXJlY3RSZXNwb25zZQogICAgIHJldHVybiBhbGxvd1Jlc291cmNl
RnJvbVNvdXJjZSh1cmwsIHJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCwgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZvbnRTcmMsICZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckZvbnQpOwogfQogCisjaWYgRU5BQkxFKEFQ
UExJQ0FUSU9OX01BTklGRVNUKQorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93TWFu
aWZlc3RGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQg
cmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkKSBjb25zdAoreworICAgIHJldHVybiBhbGxvd1Jlc291
cmNlRnJvbVNvdXJjZSh1cmwsIHJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCwgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6Om1hbmlmZXN0U3JjLCAmQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JNYW5pZmVzdCk7Cit9CisjZW5k
aWYgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorCiBib29sIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6YWxsb3dNZWRpYUZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJlZGlyZWN0UmVz
cG9uc2VSZWNlaXZlZCByZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGFsbG93UmVzb3VyY2VGcm9tU291cmNlKHVybCwgcmVkaXJlY3RSZXNwb25zZVJlY2VpdmVk
LCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6bWVkaWFTcmMsICZDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvck1lZGlhKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKaW5k
ZXggYTZkYTBkNmNlNjEuLmZiZDhkMzlmZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaApAQCAtMTAzLDYgKzEwMyw5IEBAIHB1YmxpYzoK
ICAgICBib29sIGFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IFVSTCYsIFJlZGlyZWN0UmVzcG9u
c2VSZWNlaXZlZCA9IFJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZDo6Tm8pIGNvbnN0OwogICAgIGJv
b2wgYWxsb3dTdHlsZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVkaXJlY3RSZXNwb25zZVJlY2Vp
dmVkID0gUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpObykgY29uc3Q7CiAgICAgYm9vbCBhbGxv
d0ZvbnRGcm9tU291cmNlKGNvbnN0IFVSTCYsIFJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCA9IFJl
ZGlyZWN0UmVzcG9uc2VSZWNlaXZlZDo6Tm8pIGNvbnN0OworI2lmIEVOQUJMRShBUFBMSUNBVElP
Tl9NQU5JRkVTVCkKKyAgICBib29sIGFsbG93TWFuaWZlc3RGcm9tU291cmNlKGNvbnN0IFVSTCYs
IFJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCA9IFJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZDo6Tm8p
IGNvbnN0OworI2VuZGlmCiAgICAgYm9vbCBhbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBVUkwm
LCBSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQgPSBSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6Ok5v
KSBjb25zdDsKIAogICAgIGJvb2wgYWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZShjb25zdCBVUkwm
LCBSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQgPSBSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6Ok5v
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAKaW5kZXggMmM0NmM2Nzk4NWUuLjhl
ZDNhYzkxMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcApAQCAtMjQzLDYgKzI0Mywx
NiBAQCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdAogICAgIHJldHVybiBvcGVyYXRpdmVEaXJlY3Rp
dmU7CiB9CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCitjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yTWFuaWZlc3QoY29uc3QgVVJMJiB1cmwsIGJvb2wgZGlk
UmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpIGNvbnN0Cit7CisgICAgQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0
aXZlRGlyZWN0aXZlKG1fbWFuaWZlc3RTcmMuZ2V0KCkpOworICAgIGlmIChjaGVja1NvdXJjZShv
cGVyYXRpdmVEaXJlY3RpdmUsIHVybCwgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gb3BlcmF0aXZlRGlyZWN0aXZlOworfQor
I2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKwogY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
Ojp2aW9sYXRlZERpcmVjdGl2ZUZvck1lZGlhKGNvbnN0IFVSTCYgdXJsLCBib29sIGRpZFJlY2Vp
dmVSZWRpcmVjdFJlc3BvbnNlKSBjb25zdAogewogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZUxpc3REaXJlY3RpdmUqIG9wZXJhdGl2ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2ZURp
cmVjdGl2ZShtX21lZGlhU3JjLmdldCgpKTsKQEAgLTQ3NSw2ICs0ODUsMTAgQEAgdm9pZCBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphZGREaXJlY3RpdmUoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdAogICAgICAgICBzZXRDU1BEaXJlY3RpdmU8Q29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdERpcmVjdGl2ZT4obmFtZSwgdmFsdWUsIG1faW1nU3JjKTsKICAgICBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzOjpmb250U3JjKSkKICAgICAgICAgc2V0Q1NQRGlyZWN0aXZlPENvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmU+KG5hbWUsIHZhbHVlLCBtX2ZvbnRTcmMp
OworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
OjptYW5pZmVzdFNyYykpCisgICAgICAgIHNldENTUERpcmVjdGl2ZTxDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPihuYW1lLCB2YWx1ZSwgbV9tYW5pZmVzdFNyYyk7Cisj
ZW5kaWYKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjptZWRpYVNyYykpCiAgICAgICAgIHNldENTUERp
cmVjdGl2ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPihuYW1lLCB2
YWx1ZSwgbV9tZWRpYVNyYyk7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShu
YW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6Y29ubmVjdFNyYykpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0LmgKaW5kZXggNzBhMjQzMDU1MzQuLjkxMjYxZmExNzdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdC5oCkBAIC02Myw2ICs2Myw5IEBAIHB1YmxpYzoKICAgICBjb25z
dCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yRnJh
bWUoY29uc3QgVVJMJiwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSkgY29uc3Q7CiAg
ICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2
ZUZvckZyYW1lQW5jZXN0b3IoY29uc3QgRnJhbWUmKSBjb25zdDsKICAgICBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9ySW1hZ2UoY29uc3Qg
VVJMJiwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSkgY29uc3Q7CisjaWYgRU5BQkxF
KEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JNYW5pZmVzdChjb25zdCBVUkwmLCBib29sIGRp
ZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKSBjb25zdDsKKyNlbmRpZgogICAgIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JNZWRpYShjb25z
dCBVUkwmLCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKSBjb25zdDsKICAgICBjb25z
dCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yT2Jq
ZWN0U291cmNlKGNvbnN0IFVSTCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIENv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmU6OlNob3VsZEFsbG93RW1wdHlV
UkxJZlNvdXJjZUxpc3RJc05vdE5vbmUpIGNvbnN0OwogICAgIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JQbHVnaW5UeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlKSBjb25zdDsKQEAgLTEyMSw2
ICsxMjQsOSBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX2ZyYW1lQW5jZXN0b3JzOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX2ZyYW1l
U3JjOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
RGlyZWN0aXZlPiBtX2ltZ1NyYzsKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisg
ICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3Rp
dmU+IG1fbWFuaWZlc3RTcmM7CisjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZT4gbV9tZWRpYVNyYzsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZT4gbV9vYmpl
Y3RTcmM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxp
c3REaXJlY3RpdmU+IG1fc2NyaXB0U3JjOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwCmlu
ZGV4IDI2MWY3NDFmNmE2Li4wNzZhNTA0ZmJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
LmNwcApAQCAtMzgsNiArMzgsOSBAQCBjb25zdCBjaGFyKiBjb25zdCBmb250U3JjID0gImZvbnQt
c3JjIjsKIGNvbnN0IGNoYXIqIGNvbnN0IGZvcm1BY3Rpb24gPSAiZm9ybS1hY3Rpb24iOwogY29u
c3QgY2hhciogY29uc3QgZnJhbWVBbmNlc3RvcnMgPSAiZnJhbWUtYW5jZXN0b3JzIjsKIGNvbnN0
IGNoYXIqIGNvbnN0IGZyYW1lU3JjID0gImZyYW1lLXNyYyI7CisjaWYgRU5BQkxFKEFQUExJQ0FU
SU9OX01BTklGRVNUKQorY29uc3QgY2hhciogY29uc3QgbWFuaWZlc3RTcmMgPSAibWFuaWZlc3Qt
c3JjIjsKKyNlbmRpZgogY29uc3QgY2hhciogY29uc3QgaW1nU3JjID0gImltZy1zcmMiOwogY29u
c3QgY2hhciogY29uc3QgbWVkaWFTcmMgPSAibWVkaWEtc3JjIjsKIGNvbnN0IGNoYXIqIGNvbnN0
IG9iamVjdFNyYyA9ICJvYmplY3Qtc3JjIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oCmluZGV4
IGYxM2YwNGFjYTQ4Li5hZWFjZDQ2YjQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oCkBA
IC0zOCw2ICszOCw5IEBAIGV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBmb3JtQWN0aW9uOwogZXh0
ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGZyYW1lQW5jZXN0b3JzOwogZXh0ZXJuIGNvbnN0IGNoYXIq
IGNvbnN0IGZyYW1lU3JjOwogZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGltZ1NyYzsKKyNpZiBF
TkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCitleHRlcm4gY29uc3QgY2hhciogY29uc3QgbWFu
aWZlc3RTcmM7CisjZW5kaWYKIGV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBtZWRpYVNyYzsKIGV4
dGVybiBjb25zdCBjaGFyKiBjb25zdCBvYmplY3RTcmM7CiBleHRlcm4gY29uc3QgY2hhciogY29u
c3QgcGx1Z2luVHlwZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggMzNmNzBlOWE1NzYuLjE3YTJmNDNmMTA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwCkBAIC0xMjEsNiArMTIxLDkgQEAgc3RhdGljIFNlY29uZHMgbWF4aW11
bUJ1ZmZlcmluZ1RpbWUoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OlNWR0ZvbnRSZXNvdXJjZToKICNlbmRpZgogICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OkZvbnRSZXNvdXJjZToKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6QXBwbGljYXRpb25NYW5pZmVzdDoKKyNlbmRpZgogICAgICAg
ICByZXR1cm4gU2Vjb25kczo6aW5maW5pdHkoKTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJ
bWFnZVJlc291cmNlOgogICAgICAgICByZXR1cm4gNTAwX21zOwo=
</data>
<flag name="review"
          id="347378"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328461</attachid>
            <date>2017-12-05 10:18:43 -0800</date>
            <delta_ts>2017-12-05 17:13:25 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>2pfl.patch</filename>
            <type>text/plain</type>
            <size>57742</size>
            <attacher name="David Quesada">david_quesada</attacher>
            
              <data encoding="base64">Y29tbWl0IGNkNWQwZTc3MzEwZmMxZGYwYzkxNjlmMGRlZjYzNjgwOWVlZWU3ZjcKQXV0aG9yOiBE
YXZpZCBRdWVzYWRhIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgTm92IDE3
IDEwOjAzOjI1IDIwMTcgLTA4MDAKCiAgICBbV2ViIEFwcCBNYW5pZmVzdF0gU3VwcG9ydCBmZXRj
aGluZyB0aGUgYXBwIG1hbmlmZXN0CiAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgwMjkyCiAgICAKICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgogICAg
CiAgICBBZGQgc3VwcG9ydCBpbiBXZWJDb3JlIGZvciBsb2FkaW5nIGFuZCBwYXJzaW5nIGFwcGxp
Y2F0aW9uIG1hbmlmZXN0cy4gVGhpcyBmdW5jdGlvbmFsaXR5CiAgICBpcyBjdXJyZW50bHkgZXhw
b3NlZCB3aXRoIHR3byBtZXRob2RzOiBEb2N1bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFu
aWZlc3QoKSB0byBjYWxsCiAgICB0byBzdGFydCBsb2FkaW5nIHRoZSBtYW5pZmVzdCwgYW5kIEZy
YW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KCkKICAg
IGZvciBjbGllbnRzIHRvIG92ZXJyaWRlIGluIG9yZGVyIHRvIGJlIG5vdGlmaWVkIG9mIHRoZSBs
b2FkZWQgbWFuaWZlc3QuCiAgICAKICAgIE5vIG5ldyB0ZXN0cywgc2luY2Ugbm8gZnVuY3Rpb25h
bGl0eSBpcyBleHBvc2VkIHRvIHdlYiBjb250ZW50IG9yIGVtYmVkZGVycyB5ZXQuIFRoZQogICAg
bmVlZGVkIFNQSSB3aWxsIGJlIGFkZGVkIGluIGFuIHVwY29taW5nIHBhdGNoLgogICAgCiAgICAq
IFNvdXJjZXMudHh0OgogICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiAg
ICAgICAgQWRkZWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdCBhbmQgQXBwbGljYXRpb25NYW5p
ZmVzdExvYWRlci4KICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKICAgICogaHRtbC9MaW5r
UmVsQXR0cmlidXRlLmNwcDoKICAgIChXZWJDb3JlOjpMaW5rUmVsQXR0cmlidXRlOjpMaW5rUmVs
QXR0cmlidXRlKToKICAgIChXZWJDb3JlOjpMaW5rUmVsQXR0cmlidXRlOjppc1N1cHBvcnRlZCk6
CiAgICAgICAgQWRkICJtYW5pZmVzdCIgYXMgYSBzdXBwb3J0ZWQgJ3JlbCcgdHlwZSBmb3IgbGlu
a3MuCiAgICAqIGh0bWwvTGlua1JlbEF0dHJpYnV0ZS5oOgogICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CiAgICAoV2ViQ29yZTo6aGFzVGV4dENvbnRlbnQpOgog
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VUeXBlSlNPTik6CiAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjppbnNwZWN0b3JSZXNvdXJjZVR5cGUpOgogICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgogICAgKiBsb2FkZXIvQXBw
bGljYXRpb25NYW5pZmVzdExvYWRlci5jcHA6IEFkZGVkLgogICAgICAgIEFkZGVkIGEgY2xhc3Mg
QXBwbGljYXRpb25NYW5pZmVzdExvYWRlciB3aGljaCBoYW5kbGVzIGNyZWF0aW5nIGEgUmVzb3Vy
Y2VSZXF1ZXN0LAogICAgICAgIGxvYWRpbmcgdGhlIHJlc291cmNlIGZyb20gdGhlIENhY2hlZFJl
c291cmNlTG9hZGVyLCBhbmQgcGFyc2luZyB0aGUgcmVzdWx0aW5nIHRleHQuCiAgICAgICAgVGhp
cyBjbGFzcyBhbmQgaXRzIHJlbGF0aW9uIHRvIERvY3VtZW50TG9hZGVyIGFyZSByb3VnaGx5IGJh
c2VkIG9uIHRoYXQgb2YgSWNvbkxvYWRlciwKICAgICAgICB3aGljaCBzZXJ2ZXMgYSBzaW1pbGFy
IHB1cnBvc2UgLSByZXF1ZXN0aW5nIGEgcmVzb3VyY2Ugb24gdGhlIHBhZ2UgYW5kIHVsdGltYXRl
bHkKICAgICAgICBwcm92aWRpbmcgaXQgdG8gdGhlIGVtYmVkZGVyLgogICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6OkFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIpOgogICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6On5BcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVyKToKICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyOjpzdGFydExv
YWRpbmcpOgogICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6OnN0b3BMb2Fk
aW5nKToKICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyOjpwcm9jZXNzTWFu
aWZlc3QpOgogICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKToKICAgICogbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTmFtZXMuaC4KICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmcpOgogICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpsb2FkQXBwbGljYXRpb25NYW5pZmVzdCk6CiAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QpOgogICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KToK
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CiAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oOgogICAgKiBsb2FkZXIvTGlua0xvYWRlci5jcHA6CiAgICAoV2ViQ29yZTo6Y3JlYXRl
TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudCk6CiAgICAoV2ViQ29yZTo6TGlua0xvYWRlcjo6aXNT
dXBwb3J0ZWRUeXBlKToKICAgICogbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwOgogICAgKFdl
YkNvcmU6OnRvUmVzb3VyY2VUeXBlKToKICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cDoKICAgIChXZWJDb3JlOjpsb2dSZXNvdXJjZUxvYWRlZCk6CiAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDogQWRkZWQuCiAgICAoV2ViQ29yZTo6Q2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdCk6CiAgICAoV2Vi
Q29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CiAgICAoV2Vi
Q29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6c2V0RW5jb2RpbmcpOgogICAgKFdlYkNv
cmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kaW5nIGNvbnN0KToKICAgIChXZWJD
b3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Ojpwcm9jZXNzKToKICAgICAgICBBZGQgYSBt
ZXRob2QgdG8gcHJvY2VzcyB0aGUgZmV0Y2hlZCB0ZXh0IGludG8gYW4gQXBwbGljYXRpb25NYW5p
ZmVzdC4gQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdAogICAgICAgIGRvZXMgbm90IHN0b3JlIHRo
ZSByZXN1bHRpbmcgQXBwbGljYXRpb25NYW5pZmVzdCBiZWNhdXNlIHRoZSB0ZXh0IG9mIGFuIGFw
cGxpY2F0aW9uCiAgICAgICAgbWFuaWZlc3QgY2FuIHlpZWxkIGEgZGlmZmVyZW50IEFwcGxpY2F0
aW9uTWFuaWZlc3QgZGVwZW5kaW5nIG9uIHRoZSBVUkwgb2YgdGhlIGRvY3VtZW50CiAgICAgICAg
cHJvY2Vzc2luZyBpdC4KICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTmFtZXMuaC4KICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcDoKICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZGVmYXVsdFByaW9yaXR5Rm9yUmVz
b3VyY2VUeXBlKToKICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CiAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CiAgICAoV2ViQ29yZTo6Y3JlYXRl
UmVzb3VyY2UpOgogICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0QXBw
bGljYXRpb25NYW5pZmVzdCk6CiAgICAoV2ViQ29yZTo6Y29udGVudFR5cGVGcm9tUmVzb3VyY2VU
eXBlKToKICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2hlY2tJbnNlY3VyZUNv
bnRlbnQgY29uc3QpOgogICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjphbGxvd2Vk
QnlDb250ZW50U2VjdXJpdHlQb2xpY3kgY29uc3QpOgogICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuaDoKICAgICogcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwOgog
ICAgKFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6YXBwbGljYXRpb25NYW5pZmVzdEtl
eSk6CiAgICAqIHBhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg6CiAgICAqIHBhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CiAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5OjphbGxvd01hbmlmZXN0RnJvbVNvdXJjZSBjb25zdCk6CiAgICAqIHBhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5oOgogICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0LmNwcDoKICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvck1hbmlmZXN0IGNvbnN0KToKICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphZGREaXJlY3RpdmUpOgog
ICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Lmg6CiAgICAq
IHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcDoKICAgICog
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDoKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMTViY2U0ZmExZmMuLjVmMzliZDhjOTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTMg
QEAKKzIwMTctMTEtMTcgIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4K
KworICAgICAgICBbV2ViIEFwcCBNYW5pZmVzdF0gU3VwcG9ydCBmZXRjaGluZyB0aGUgYXBwIG1h
bmlmZXN0IAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgwMjkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAg
QWRkIHN1cHBvcnQgaW4gV2ViQ29yZSBmb3IgbG9hZGluZyBhbmQgcGFyc2luZyBhcHBsaWNhdGlv
biBtYW5pZmVzdHMuIFRoaXMgZnVuY3Rpb25hbGl0eQorICAgICAgICBpcyBjdXJyZW50bHkgZXhw
b3NlZCB3aXRoIHR3byBtZXRob2RzOiBEb2N1bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFu
aWZlc3QoKSB0byBjYWxsCisgICAgICAgIHRvIHN0YXJ0IGxvYWRpbmcgdGhlIG1hbmlmZXN0LCBh
bmQgRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3Qo
KQorICAgICAgICBmb3IgY2xpZW50cyB0byBvdmVycmlkZSBpbiBvcmRlciB0byBiZSBub3RpZmll
ZCBvZiB0aGUgbG9hZGVkIG1hbmlmZXN0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgc2luY2Ug
bm8gZnVuY3Rpb25hbGl0eSBpcyBleHBvc2VkIHRvIHdlYiBjb250ZW50IG9yIGVtYmVkZGVycyB5
ZXQuIFRoZQorICAgICAgICBuZWVkZWQgU1BJIHdpbGwgYmUgYWRkZWQgaW4gYW4gdXBjb21pbmcg
cGF0Y2guCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICAgICBBZGRlZCBDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0IGFuZCBBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLgorICAgICAgICAqIGh0bWwv
SFRNTExpbmtFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9MaW5rUmVsQXR0cmlidXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxpbmtSZWxBdHRyaWJ1dGU6OkxpbmtSZWxBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGlua1JlbEF0dHJpYnV0ZTo6aXNTdXBwb3J0ZWQpOgorICAgICAg
ICAgICAgQWRkICJtYW5pZmVzdCIgYXMgYSBzdXBwb3J0ZWQgJ3JlbCcgdHlwZSBmb3IgbGlua3Mu
CisgICAgICAgICogaHRtbC9MaW5rUmVsQXR0cmlidXRlLmg6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFzVGV4
dENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJj
ZVR5cGVKU09OKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6aW5zcGVj
dG9yUmVzb3VyY2VUeXBlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmNw
cDogQWRkZWQuCisgICAgICAgICAgICBBZGRlZCBhIGNsYXNzIEFwcGxpY2F0aW9uTWFuaWZlc3RM
b2FkZXIgd2hpY2ggaGFuZGxlcyBjcmVhdGluZyBhIFJlc291cmNlUmVxdWVzdCwKKyAgICAgICAg
ICAgIGxvYWRpbmcgdGhlIHJlc291cmNlIGZyb20gdGhlIENhY2hlZFJlc291cmNlTG9hZGVyLCBh
bmQgcGFyc2luZyB0aGUgcmVzdWx0aW5nIHRleHQuCisgICAgICAgICAgICBUaGlzIGNsYXNzIGFu
ZCBpdHMgcmVsYXRpb24gdG8gRG9jdW1lbnRMb2FkZXIgYXJlIHJvdWdobHkgYmFzZWQgb24gdGhh
dCBvZiBJY29uTG9hZGVyLAorICAgICAgICAgICAgd2hpY2ggc2VydmVzIGEgc2ltaWxhciBwdXJw
b3NlIC0gcmVxdWVzdGluZyBhIHJlc291cmNlIG9uIHRoZSBwYWdlIGFuZCB1bHRpbWF0ZWx5Cisg
ICAgICAgICAgICBwcm92aWRpbmcgaXQgdG8gdGhlIGVtYmVkZGVyLgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25NYW5pZmVzdExvYWRlcjo6QXBwbGljYXRpb25NYW5pZmVzdExvYWRlcik6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyOjp+QXBwbGljYXRp
b25NYW5pZmVzdExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVyOjpzdGFydExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25NYW5p
ZmVzdExvYWRlcjo6c3RvcExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25N
YW5pZmVzdExvYWRlcjo6cHJvY2Vzc01hbmlmZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uTWFuaWZlc3RMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIv
QXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oLgorICAgICAgICAq
IGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6c3RvcExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Omxv
YWRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpmaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0
KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmlzU3VwcG9ydGVkVHlwZSk6CisgICAgICAgICogbG9h
ZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9SZXNvdXJjZVR5
cGUpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpsb2dSZXNvdXJjZUxvYWRlZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpzZXRFbmNvZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjplbmNvZGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Ojpwcm9j
ZXNzKToKKyAgICAgICAgICAgIEFkZCBhIG1ldGhvZCB0byBwcm9jZXNzIHRoZSBmZXRjaGVkIHRl
eHQgaW50byBhbiBBcHBsaWNhdGlvbk1hbmlmZXN0LiBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
CisgICAgICAgICAgICBkb2VzIG5vdCBzdG9yZSB0aGUgcmVzdWx0aW5nIEFwcGxpY2F0aW9uTWFu
aWZlc3QgYmVjYXVzZSB0aGUgdGV4dCBvZiBhbiBhcHBsaWNhdGlvbgorICAgICAgICAgICAgbWFu
aWZlc3QgY2FuIHlpZWxkIGEgZGlmZmVyZW50IEFwcGxpY2F0aW9uTWFuaWZlc3QgZGVwZW5kaW5n
IG9uIHRoZSBVUkwgb2YgdGhlIGRvY3VtZW50CisgICAgICAgICAgICBwcm9jZXNzaW5nIGl0Lgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzLmguCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpkZWZhdWx0UHJpb3JpdHlGb3JSZXNv
dXJjZVR5cGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGVudFR5cGVGcm9tUmVzb3VyY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpjaGVja0luc2VjdXJlQ29udGVudCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6YWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5
IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBwYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmFwcGxpY2F0aW9uTWFuaWZlc3RLZXkpOgorICAg
ICAgICAqIHBhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg6CisgICAgICAgICogcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dNYW5pZmVzdEZyb21Tb3VyY2UgY29uc3QpOgorICAgICAgICAqIHBh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JNYW5p
ZmVzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0OjphZGREaXJlY3RpdmUpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDoKKwogMjAxNy0xMi0wMSAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEdDIGNvbnN0cmFpbnQgc29sdmluZyBz
aG91bGQgYmUgcGFyYWxsZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZTQxNjU5YjQ1YjEuLmQ0YjE0M2Y1
ZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjcsNiArMjcsMTAgQEAgTW9kdWxlcy9haXJwbGF5L1dl
YktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwCiAKIE1vZHVsZXMvYXBwbGlj
YXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcAogCitsb2FkZXIvQXBw
bGljYXRpb25NYW5pZmVzdExvYWRlci5jcHAKKworbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3QuY3BwCisKICNlbmRpZgogCiBNb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFj
b24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMTZjZWYyOTRjMmYuLmNjYzlkNDhjZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzUxLDcgKzE3NTEs
OSBAQAogCQk2MjhEMjE0RTEyMTMxRUY0MDA1NURDRkMgLyogRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjI4RDIx
NEQxMjEzMUVGNDAwNTVEQ0ZDIC8qIEZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2MkMxMjE3RDExQUI5RTc3
MDAzQzQ2MkMgLyogU3VzcGVuZGFibGVUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjJDMTIxN0IxMUFCOUU3NzAwM0M0NjJDIC8qIFN1c3BlbmRh
YmxlVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk2MkNEMzI1QTExNTdFNTdDMDA2M0IwQTcgLyogQ3VzdG9tRXZlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYyQ0QzMjU3MTE1N0U1N0MwMDYz
QjBBNyAvKiBDdXN0b21FdmVudC5oICovOyB9OworCQk2MzE1MkQxOTFGOTUzMUVFMDA3QTVFNEIg
LyogQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjMxNTJEMTcxRjk1MzFFRTAwN0E1RTRCIC8qIEFwcGxpY2F0
aW9uTWFuaWZlc3RMb2FkZXIuaCAqLzsgfTsKIAkJNjMxODlBRTMwRTgzQTMzMzAwMDEyRTQxIC8q
IE5vZGVSYXJlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjMxODlBRTIwRTgzQTMzMzAwMDEyRTQxIC8qIE5vZGVSYXJlRGF0YS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCTYzNTNFMUU2MUY5MTc0MzEwMEEzNDIw
OCAvKiBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzUzRTFFNDFGOTE3NDMxMDBBMzQyMDggLyogQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTYzNTRGNEM5MUY3QUZDOTQwMEQ4OURGMyAvKiBBcHBsaWNhdGlvbk1h
bmlmZXN0UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2MzU0RjRDNzFGN0FGQzk0MDBEODlERjMgLyogQXBwbGljYXRpb25NYW5pZmVzdFBhcnNl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTYz
QkQ0QTVGMUY3NzhFOUYwMDQzODcyMiAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0JENEE1RDFGNzc4RTlGMDA0
Mzg3MjIgLyogQXBwbGljYXRpb25NYW5pZmVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTYzRDdCMzJEMEU3OENEM0YwMEY3NjE3QyAvKiBOb2Rl
UmVuZGVyU3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDYzRDdCMzJDMEU3OENEM0YwMEY3NjE3QyAvKiBOb2RlUmVuZGVyU3R5bGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODM4MSw3ICs4Mzgz
LDExIEBACiAJCTYyQ0QzMjU2MTE1N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0b21FdmVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYyQ0QzMjU3MTE1N0U1N0MwMDYzQjBBNyAvKiBDdXN0
b21FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21FdmVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MkNEMzI1ODExNTdFNTdDMDA2M0IwQTcg
LyogQ3VzdG9tRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEN1c3RvbUV2ZW50Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjMxNTJEMTcxRjk1MzFFRTAwN0E1RTRC
IC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwbGljYXRp
b25NYW5pZmVzdExvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MzE1MkQx
ODFGOTUzMUVFMDA3QTVFNEIgLyogQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNjMxODlBRTIwRTgzQTMzMzAwMDEyRTQxIC8qIE5vZGVSYXJlRGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb2RlUmFyZURhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjM1M0UxRTQxRjkxNzQzMTAwQTM0MjA4IC8qIENh
Y2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MzUzRTFFNTFGOTE3
NDMxMDBBMzQyMDggLyogQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNjM1NEY0QzcxRjdBRkM5NDAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZl
c3RQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MzU0RjRDODFGN0FGQzk0MDBEODlERjMgLyog
QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcHBsaWNh
dGlvbk1hbmlmZXN0UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjM3
QjdBREUwRTg3NjdCODAwRTMyMTk0IC8qIEVsZW1lbnRSYXJlRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50UmFyZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIxNzg1LDYgKzIxNzkxLDggQEAKIAkJQThEMkIyNTIxMjg3QTU2MDAwQUY0
RERBIC8qIGNhY2hlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQk2MzUzRTFFNTFGOTE3NDMxMDBBMzQyMDggLyogQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5jcHAgKi8sCisJCQkJNjM1M0UxRTQxRjkxNzQzMTAwQTM0MjA4IC8qIENhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3QuaCAqLywKIAkJCQlCQ0IxNkMwMDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVk
Q1NTU3R5bGVTaGVldC5jcHAgKi8sCiAJCQkJQkNCMTZDMDEwOTc5QzNCRDAwNDY3NzQxIC8qIENh
Y2hlZENTU1N0eWxlU2hlZXQuaCAqLywKIAkJCQlCQzY0QjRDOTBDQjQyOTVEMDA1RjJCNjIgLyog
Q2FjaGVkRm9udC5jcHAgKi8sCkBAIC0yMzI5Niw2ICsyMzMwNCw4IEBACiAJCQkJNTEyNkU2QjYw
QTJFM0FFRjAwNUMyOUZBIC8qIGljb24gKi8sCiAJCQkJQTE1RTMxRjAxRTBDQjA3NTAwNEIzNzFD
IC8qIGlvcyAqLywKIAkJCQk5M0ExRUFBMjBBNTYzNEQ4MDA2OTYwQTAgLyogbWFjICovLAorCQkJ
CTYzMTUyRDE4MUY5NTMxRUUwMDdBNUU0QiAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmNw
cCAqLywKKwkJCQk2MzE1MkQxNzFGOTUzMUVFMDA3QTVFNEIgLyogQXBwbGljYXRpb25NYW5pZmVz
dExvYWRlci5oICovLAogCQkJCUExNDk3ODZDMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50Rmls
dGVyLmNwcCAqLywKIAkJCQlBMTQ5Nzg2RDFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRl
ci5oICovLAogCQkJCUUxNDI0QzkxMTY0QjUyQzgwMEYzMkQ0MCAvKiBDb29raWVKYXIuY3BwICov
LApAQCAtMjYwNzUsNiArMjYwODUsNyBAQAogCQkJCTFBOEY2QkMxMERCNTVDREMwMDFEQjc5NCAv
KiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMkFBQzU5
MERDMkEzQjEwMEEyMEQ5QSAvKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjNCRDRBNUYxRjc3OEU5RjAwNDM4NzIyIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3Qu
aCBpbiBIZWFkZXJzICovLAorCQkJCTYzMTUyRDE5MUY5NTMxRUUwMDdBNUU0QiAvKiBBcHBsaWNh
dGlvbk1hbmlmZXN0TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MzU0RjRDOTFGN0FGQzk0
MDBEODlERjMgLyogQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOUI0MTcwNjQxMjU2NjJCMzAwNkIyOEZDIC8qIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERDkwOTlFNjQ5MjAwNTZFNTgxIC8qIEFwcGx5U3R5
bGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MjE1LDYgKzI2MjI2LDcgQEAKIAkJCQkx
QTU2OUNGQzBEN0UyQjgyMDA3QzM5ODMgLyogY19ydW50aW1lLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTU2OUNGRTBEN0UyQjgyMDA3QzM5ODMgLyogY191dGlsaXR5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0MwNDZDNDFFNDI1MDhCMDA3MjAxRTcgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQk2MzUzRTFFNjFGOTE3NDMxMDBBMzQyMDggLyogQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCMTZDMUEwOTc5QzNC
RDAwNDY3NzQxIC8qIENhY2hlZENTU1N0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NjRCNENDMENCNDI5NUQwMDVGMkI2MiAvKiBDYWNoZWRGb250LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUVGNEU2NzE3MEUxNjAzMDBBQjI3OTkgLyogQ2FjaGVkRm9udENsaWVudC5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAppbmRleCBjNGI2OGNjMjc5
MS4uMTA5MmNiZjRmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaApAQCAt
NzMsNiArNzMsMTAgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRE9NVG9rZW5MaXN0
JiByZWxMaXN0KCk7CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgYm9v
bCBpc0FwcGxpY2F0aW9uTWFuaWZlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlbEF0dHJpYnV0ZS5p
c0FwcGxpY2F0aW9uTWFuaWZlc3Q7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtSZWxBdHRyaWJ1dGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rUmVsQXR0cmlidXRlLmNwcAppbmRleCA1NzJi
ZGIzNGM1OC4uYWYwYjFiMGNiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlu
a1JlbEF0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rUmVsQXR0cmli
dXRlLmNwcApAQCAtNjUsNiArNjUsMTAgQEAgTGlua1JlbEF0dHJpYnV0ZTo6TGlua1JlbEF0dHJp
YnV0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgcmVsKQogICAgIGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlbCwgImFsdGVybmF0ZSBzdHlsZXNoZWV0
IikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVsLCAic3R5bGVzaGVldCBhbHRl
cm5hdGUiKSkgewogICAgICAgICBpc1N0eWxlU2hlZXQgPSB0cnVlOwogICAgICAgICBpc0FsdGVy
bmF0ZSA9IHRydWU7CisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIH0gZWxz
ZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVsLCAibWFuaWZlc3QiKSkgewor
ICAgICAgICBpc0FwcGxpY2F0aW9uTWFuaWZlc3QgPSB0cnVlOworI2VuZGlmCiAgICAgfSBlbHNl
IHsKICAgICAgICAgLy8gVG9rZW5pemUgdGhlIHJlbCBhdHRyaWJ1dGUgYW5kIHNldCBiaXRzIGJh
c2VkIG9uIHNwZWNpZmljIGtleXdvcmRzIHRoYXQgd2UgZmluZC4KICAgICAgICAgU3RyaW5nIHJl
bENvcHkgPSByZWw7CkBAIC05OCw2ICsxMDIsOSBAQCBib29sIExpbmtSZWxBdHRyaWJ1dGU6Omlz
U3VwcG9ydGVkKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyBhdHRyaWJ1dGUpCiAjaWYg
RU5BQkxFKExJTktfUFJFRkVUQ0gpCiAgICAgICAgICJwcmVmZXRjaCIsICJzdWJyZXNvdXJjZSIs
CiAjZW5kaWYKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgICAgICJtYW5p
ZmVzdCIsCisjZW5kaWYKICAgICB9OwogCiAgICAgZm9yIChhdXRvKiBzdXBwb3J0ZWRBdHRyaWJ1
dGUgOiBzdXBwb3J0ZWRBdHRyaWJ1dGVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0xpbmtSZWxBdHRyaWJ1dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua1JlbEF0dHJp
YnV0ZS5oCmluZGV4IGYxMmU5ODY2MzdjLi5hNjExMGE3ZGM4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9MaW5rUmVsQXR0cmlidXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9MaW5rUmVsQXR0cmlidXRlLmgKQEAgLTUxLDYgKzUxLDkgQEAgc3RydWN0IExpbmtSZWxBdHRy
aWJ1dGUgewogICAgIGJvb2wgaXNMaW5rUHJlZmV0Y2ggeyBmYWxzZSB9OwogICAgIGJvb2wgaXNM
aW5rU3VicmVzb3VyY2UgeyBmYWxzZSB9OwogI2VuZGlmCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQorICAgIGJvb2wgaXNBcHBsaWNhdGlvbk1hbmlmZXN0IHsgZmFsc2UgfTsKKyNl
bmRpZgogCiAgICAgTGlua1JlbEF0dHJpYnV0ZSgpOwogICAgIExpbmtSZWxBdHRyaWJ1dGUoRG9j
dW1lbnQmLCBjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAyY2E0ZGViOWMwNy4uY2Zk
NTFmNWFkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTc1LDYgKzc1LDEwIEBACiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHlhcnIvUmVndWxhckV4cHJlc3Npb24u
aD4KIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyNpbmNsdWRlICJDYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkg
JiYgVVNFKENGKQogI2luY2x1ZGUgIkxlZ2FjeVdlYkFyY2hpdmUuaCIKICNlbmRpZgpAQCAtMTA2
LDYgKzExMCw5IEBAIHN0YXRpYyBib29sIGhhc1RleHRDb250ZW50KENhY2hlZFJlc291cmNlKiBj
YWNoZWRSZXNvdXJjZSkKICAgICAgICAgfHwgdHlwZSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OlN0
eWxlc2hlZXRSZXNvdXJjZQogICAgICAgICB8fCB0eXBlID09IEluc3BlY3RvclBhZ2VBZ2VudDo6
U2NyaXB0UmVzb3VyY2UKICAgICAgICAgfHwgdHlwZSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OlhI
UlJlc291cmNlCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgICAgICB8fCB0
eXBlID09IEluc3BlY3RvclBhZ2VBZ2VudDo6QXBwbGljYXRpb25NYW5pZmVzdFJlc291cmNlCisj
ZW5kaWYKICAgICAgICAgfHwgdHlwZSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OkZldGNoUmVzb3Vy
Y2U7CiB9CiAKQEAgLTI3MSw2ICsyNzgsMTAgQEAgSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6
UmVzb3VyY2VUeXBlIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VUeXBlSlNPTihJbnMKICAg
ICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlJlc291cmNlVHlwZTo6V2Vi
U29ja2V0OwogICAgIGNhc2UgT3RoZXJSZXNvdXJjZToKICAgICAgICAgcmV0dXJuIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlBhZ2U6OlJlc291cmNlVHlwZTo6T3RoZXI7CisjaWYgRU5BQkxFKEFQUExJ
Q0FUSU9OX01BTklGRVNUKQorICAgIGNhc2UgQXBwbGljYXRpb25NYW5pZmVzdFJlc291cmNlOgor
ICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIH0KICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90
b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlOjpPdGhlcjsKIH0KQEAgLTI5Niw2ICszMDcsMTAgQEAg
SW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgSW5zcGVjdG9yUGFnZUFnZW50OjppbnNw
ZWN0b3JSZXNvdXJjZVR5cGUoQ2FjaGUKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6RG9jdW1lbnRSZXNvdXJjZTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpCZWFjb246CiAg
ICAgICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OkJlYWNvblJlc291cmNlOworI2lmIEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpBcHBs
aWNhdGlvbk1hbmlmZXN0OgorICAgICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpBcHBs
aWNhdGlvbk1hbmlmZXN0UmVzb3VyY2U7CisjZW5kaWYKICAgICBjYXNlIENhY2hlZFJlc291cmNl
OjpNZWRpYVJlc291cmNlOgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6Okljb246CiAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCA1ZDU5NmY3ZDEwYy4u
YjRhZmY0NzliMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNzIsNiArNzIsOSBAQCBwdWJsaWM6CiAgICAgICAg
IFBpbmdSZXNvdXJjZSwKICAgICAgICAgQmVhY29uUmVzb3VyY2UsCiAgICAgICAgIFdlYlNvY2tl
dFJlc291cmNlLAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICAgICAgQXBw
bGljYXRpb25NYW5pZmVzdFJlc291cmNlLAorI2VuZGlmCiAgICAgICAgIE90aGVyUmVzb3VyY2Us
CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFu
aWZlc3RMb2FkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4x
MTY1NWRlMDhkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBs
aWNhdGlvbk1hbmlmZXN0TG9hZGVyLmNwcApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVy
LmgiCisKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisKKyNpbmNsdWRlICJDYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIK
KyNpbmNsdWRlICJGcmFtZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXI6OkFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIoRG9jdW1lbnRMb2FkZXIm
IGRvY3VtZW50TG9hZGVyLCBjb25zdCBVUkwmIHVybCwgYm9vbCB1c2VDcmVkZW50aWFscykKKyAg
ICA6IG1fZG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2FkZXIpCisgICAgLCBtX3VybCh1cmwpCisg
ICAgLCBtX3VzZUNyZWRlbnRpYWxzKHVzZUNyZWRlbnRpYWxzKQoreworfQorCitBcHBsaWNhdGlv
bk1hbmlmZXN0TG9hZGVyOjp+QXBwbGljYXRpb25NYW5pZmVzdExvYWRlcigpCit7CisgICAgc3Rv
cExvYWRpbmcoKTsKK30KKworYm9vbCBBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyOjpzdGFydExv
YWRpbmcoKQoreworICAgIEFTU0VSVCghbV9yZXNvdXJjZSk7CisgICAgYXV0byogZnJhbWUgPSBt
X2RvY3VtZW50TG9hZGVyLmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCA9IG1fdXJsOwor
ICAgIHJlc291cmNlUmVxdWVzdC5zZXRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eTo6TG93
KTsKKyNpZiAhRVJST1JfRElTQUJMRUQKKyAgICAvLyBDb3B5IHRoaXMgYmVjYXVzZSB3ZSBtYXkg
d2FudCB0byBhY2Nlc3MgaXQgYWZ0ZXIgdHJhbnNmZXJyaW5nIHRoZQorICAgIC8vIGByZXNvdXJj
ZVJlcXVlc3RgIHRvIHRoZSBgcmVxdWVzdGAuIElmIHdlIGRvbid0LCB0aGVuIHRoZSBMT0dfRVJS
T1IKKyAgICAvLyBiZWxvdyB3b24ndCBwcmludCBhIFVSTC4KKyAgICBhdXRvIHJlc291cmNlUmVx
dWVzdFVSTCA9IHJlc291cmNlUmVxdWVzdC51cmwoKTsKKyNlbmRpZgorCisgICAgYXV0byBjcmVk
ZW50aWFscyA9IG1fdXNlQ3JlZGVudGlhbHMgPyBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJ
bmNsdWRlIDogRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6T21pdDsKKyAgICBhdXRvIG9wdGlv
bnMgPSBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBC
dWZmZXJEYXRhLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UsIENsaWVudENyZWRl
bnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBjcmVkZW50aWFscywg
RG9TZWN1cml0eUNoZWNrLCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywgRG9Ob3RJbmNsdWRl
Q2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGlj
eUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcsIENhY2hpbmdQ
b2xpY3k6OkFsbG93Q2FjaGluZyk7CisgICAgb3B0aW9ucy5kZXN0aW5hdGlvbiA9IEZldGNoT3B0
aW9uczo6RGVzdGluYXRpb246Ok1hbmlmZXN0OworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgb3B0aW9ucyk7CisKKyAgICBhdXRvIGNh
Y2hlZFJlc291cmNlID0gZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCku
cmVxdWVzdEFwcGxpY2F0aW9uTWFuaWZlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgbV9yZXNv
dXJjZSA9IGNhY2hlZFJlc291cmNlLnZhbHVlX29yKG51bGxwdHIpOworICAgIGlmIChtX3Jlc291
cmNlKQorICAgICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOworICAgIGVsc2Ugewor
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzdGFydCBsb2FkIGZvciBhcHBsaWNhdGlvbiBt
YW5pZmVzdCBhdCB1cmwgJXMgKGVycm9yOiAlcykiLCByZXNvdXJjZVJlcXVlc3RVUkwuc3RyaW5n
KCkuYXNjaWkoKS5kYXRhKCksIGNhY2hlZFJlc291cmNlLmVycm9yKCkubG9jYWxpemVkRGVzY3Jp
cHRpb24oKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6OnN0
b3BMb2FkaW5nKCkKK3sKKyAgICBpZiAobV9yZXNvdXJjZSkgeworICAgICAgICBtX3Jlc291cmNl
LT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgICAgICBtX3Jlc291cmNlID0gbnVsbHB0cjsKKyAg
ICB9Cit9CisKK3N0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4mIEFwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXI6OnByb2Nlc3NNYW5pZmVzdCgpCit7CisgICAgaWYgKCFtX3Byb2Nlc3Nl
ZE1hbmlmZXN0ICYmIG1fcmVzb3VyY2UpIHsKKyAgICAgICAgYXV0byBtYW5pZmVzdFVSTCA9IG1f
dXJsOworICAgICAgICBhdXRvIGRvY3VtZW50VVJMID0gbV9kb2N1bWVudExvYWRlci51cmwoKTsK
KyAgICAgICAgYXV0byBmcmFtZSA9IG1fZG9jdW1lbnRMb2FkZXIuZnJhbWUoKTsKKyAgICAgICAg
YXV0byBkb2N1bWVudCA9IGZyYW1lID8gZnJhbWUtPmRvY3VtZW50KCkgOiBudWxscHRyOworICAg
ICAgICBtX3Byb2Nlc3NlZE1hbmlmZXN0ID0gbV9yZXNvdXJjZS0+cHJvY2VzcyhtYW5pZmVzdFVS
TCwgZG9jdW1lbnRVUkwsIGRvY3VtZW50KTsKKyAgICB9CisgICAgcmV0dXJuIG1fcHJvY2Vzc2Vk
TWFuaWZlc3Q7Cit9CisKK3ZvaWQgQXBwbGljYXRpb25NYW5pZmVzdExvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQoreworICAgIEFTU0VSVF9VTlVTRUQocmVz
b3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKyAgICBtX2RvY3VtZW50TG9hZGVyLmZp
bmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QoKnRoaXMpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGI2NDMxYWI0MjIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExv
YWRlci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKworI2luY2x1ZGUgIkFwcGxpY2F0aW9uTWFu
aWZlc3QuaCIKKyNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIgorI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdDsKK2NsYXNzIERvY3VtZW50TG9hZGVyOworCitjbGFzcyBBcHBsaWNh
dGlvbk1hbmlmZXN0TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dCB7CitXVEZfTUFLRV9OT05DT1BZQUJMRShBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdHlwZWRlZiBXVEY6OkZ1bmN0aW9u
PHZvaWQgKENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q+KT4g
Q29tcGxldGlvbkhhbmRsZXJUeXBlOworCisgICAgQXBwbGljYXRpb25NYW5pZmVzdExvYWRlcihE
b2N1bWVudExvYWRlciYsIGNvbnN0IFVSTCYsIGJvb2wpOworICAgIHZpcnR1YWwgfkFwcGxpY2F0
aW9uTWFuaWZlc3RMb2FkZXIoKTsKKworICAgIGJvb2wgc3RhcnRMb2FkaW5nKCk7CisgICAgdm9p
ZCBzdG9wTG9hZGluZygpOworCisgICAgc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0
PiYgcHJvY2Vzc01hbmlmZXN0KCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSYpOworCisgICAgRG9jdW1lbnRMb2FkZXImIG1fZG9jdW1lbnRMb2Fk
ZXI7CisgICAgc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBtX3Byb2Nlc3NlZE1h
bmlmZXN0OworICAgIFVSTCBtX3VybDsKKyAgICBib29sIG1fdXNlQ3JlZGVudGlhbHM7CisgICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdD4gbV9yZXNvdXJj
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBUFBM
SUNBVElPTl9NQU5JRkVTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CmluZGV4IGM4OTQ0ZjgyZTIxLi5kZWU3YTZjNzIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCkBAIC04NCw2ICs4NCwxMiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIEVOQUJM
RShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyNpbmNsdWRlICJBcHBsaWNhdGlvbk1hbmlmZXN0TG9h
ZGVyLmgiCisjaW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTExpbmtF
bGVtZW50LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1I
VE1MKQogI2luY2x1ZGUgIkFyY2hpdmVGYWN0b3J5LmgiCiAjZW5kaWYKQEAgLTI4MSw2ICsyODcs
MTIgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmcoKQogICAgICAgICBub3RpZnlG
aW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSWRlbnRpZmllciwgbnVsbHB0cik7CiAgICAgbV9p
Y29uTG9hZGVycy5jbGVhcigpOwogICAgIG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uLmNsZWFy
KCk7CisgICAgCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIGZvciAoYXV0
byBjYWxsYmFja0lkZW50aWZpZXIgOiBtX2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLnZhbHVl
cygpKQorICAgICAgICBub3RpZnlGaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KGNh
bGxiYWNrSWRlbnRpZmllciwgc3RkOjpudWxsb3B0KTsKKyAgICBtX2FwcGxpY2F0aW9uTWFuaWZl
c3RMb2FkZXJzLmNsZWFyKCk7CisjZW5kaWYKIAogICAgIC8vIEFsd2F5cyBjYW5jZWwgbXVsdGlw
YXJ0IGxvYWRlcnMKICAgICBjYW5jZWxBbGwobV9tdWx0aXBhcnRTdWJyZXNvdXJjZUxvYWRlcnMp
OwpAQCAtMTA0NSw2ICsxMDU3LDY5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyTWFpblJl
c291cmNlTG9hZGVyKCkKICAgICAgICAgY2hlY2tMb2FkQ29tcGxldGUoKTsKIH0KIAorI2lmIEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKK3VpbnQ2NF90IERvY3VtZW50TG9hZGVyOjpsb2Fk
QXBwbGljYXRpb25NYW5pZmVzdCgpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IG5leHRDYWxsYmFj
a0lEID0gMTsKKworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBp
ZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghbV9mcmFtZS0+aXNN
YWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoZG9jdW1lbnQtPnVybCgp
LmlzRW1wdHkoKSB8fCBkb2N1bWVudC0+dXJsKCkuaXNCbGFua1VSTCgpKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIGF1dG8gaGVhZCA9IGRvY3VtZW50LT5oZWFkKCk7CisgICAgaWYgKCFoZWFk
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFVSTCBtYW5pZmVzdFVSTDsKKyAgICBib29sIHVz
ZUNyZWRlbnRpYWxzID0gZmFsc2U7CisgICAgZm9yIChjb25zdCBhdXRvJiBsaW5rIDogY2hpbGRy
ZW5PZlR5cGU8SFRNTExpbmtFbGVtZW50PigqaGVhZCkpIHsKKyAgICAgICAgaWYgKGxpbmsuaXNB
cHBsaWNhdGlvbk1hbmlmZXN0KCkpIHsKKyAgICAgICAgICAgIG1hbmlmZXN0VVJMID0gbGluay5o
cmVmKCk7CisgICAgICAgICAgICB1c2VDcmVkZW50aWFscyA9IGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UobGluay5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6Y3Jvc3Nv
cmlnaW5BdHRyKSwgInVzZS1jcmVkZW50aWFscyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAobWFuaWZlc3RVUkwuaXNFbXB0eSgpIHx8ICFtYW5pZmVz
dFVSTC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgYXV0byBtYW5pZmVzdExv
YWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXBwbGljYXRpb25NYW5pZmVzdExvYWRlcj4oKnRoaXMs
IG1hbmlmZXN0VVJMLCB1c2VDcmVkZW50aWFscyk7CisgICAgYXV0byogcmF3TWFuaWZlc3RMb2Fk
ZXIgPSBtYW5pZmVzdExvYWRlci5nZXQoKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBuZXh0Q2Fs
bGJhY2tJRCsrOworICAgIG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcnMuc2V0KFdURk1vdmUo
bWFuaWZlc3RMb2FkZXIpLCBjYWxsYmFja0lEKTsKKworICAgIGlmICghcmF3TWFuaWZlc3RMb2Fk
ZXItPnN0YXJ0TG9hZGluZygpKSB7CisgICAgICAgIG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRl
cnMucmVtb3ZlKHJhd01hbmlmZXN0TG9hZGVyKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CisgICAgcmV0dXJuIGNhbGxiYWNrSUQ7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlz
aGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QoQXBwbGljYXRpb25NYW5pZmVzdExvYWRlciYg
bG9hZGVyKQoreworICAgIC8vIElmIHRoZSBEb2N1bWVudExvYWRlciBoYXMgZGV0YWNoZWQgZnJv
bSBpdHMgZnJhbWUsIGFsbCBtYW5pZmVzdCBsb2FkcyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4g
Y2FuY2VsZWQuCisgICAgQVNTRVJUKG1fZnJhbWUpOworCisgICAgYXV0byBjYWxsYmFja0lkZW50
aWZpZXIgPSBtX2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLmdldCgmbG9hZGVyKTsKKyAgICBu
b3RpZnlGaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KGNhbGxiYWNrSWRlbnRpZmll
ciwgbG9hZGVyLnByb2Nlc3NNYW5pZmVzdCgpKTsKKyAgICBtX2FwcGxpY2F0aW9uTWFuaWZlc3RM
b2FkZXJzLnJlbW92ZSgmbG9hZGVyKTsKK30KKwordm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5
RmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCBjYWxsYmFja0lkZW50
aWZpZXIsIHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gbWFuaWZlc3QpCit7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChtX2ZyYW1lKTsKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5maW5pc2hlZExvYWRp
bmdBcHBsaWNhdGlvbk1hbmlmZXN0KGNhbGxiYWNrSWRlbnRpZmllciwgbWFuaWZlc3QpOworfQor
I2VuZGlmCisKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEN1c3RvbUhlYWRlckZpZWxkcyhWZWN0
b3I8SFRUUEhlYWRlckZpZWxkPiYmIGZpZWxkcykKIHsKICAgICBtX2N1c3RvbUhlYWRlckZpZWxk
cyA9IFdURk1vdmUoZmllbGRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
aW5kZXggZWZiOGRhMmFlYmEuLmY1YTNkMzU2YjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaApAQCAtNTAsNiArNTAsMTAgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklG
RVNUKQorI2luY2x1ZGUgIkFwcGxpY2F0aW9uTWFuaWZlc3QuaCIKKyNlbmRpZgorCiAjaWYgSEFW
RShSVU5MT09QX1RJTUVSKQogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wVGltZXIuaD4KICNlbmRpZgpA
QCAtNjEsNiArNjUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlSG9zdDsKK2NsYXNzIEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI7CiBjbGFzcyBBcmNo
aXZlOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbjsKQEAgLTI5Nyw2ICszMDIsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgVmVjdG9yPExp
bmtJY29uPiYgbGlua0ljb25zKCkgY29uc3QgeyByZXR1cm4gbV9saW5rSWNvbnM7IH0KIAorI2lm
IEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBXRUJDT1JFX0VYUE9SVCB1aW50NjRf
dCBsb2FkQXBwbGljYXRpb25NYW5pZmVzdCgpOworICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nQXBw
bGljYXRpb25NYW5pZmVzdChBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyJik7CisjZW5kaWYKKwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3VzdG9tSGVhZGVyRmllbGRzKFZlY3RvcjxIVFRQ
SGVhZGVyRmllbGQ+JiYgZmllbGRzKTsKICAgICBjb25zdCBWZWN0b3I8SFRUUEhlYWRlckZpZWxk
PiYgY3VzdG9tSGVhZGVyRmllbGRzKCkgeyByZXR1cm4gbV9jdXN0b21IZWFkZXJGaWVsZHM7IH0K
ICAgICAKQEAgLTM3MCw2ICszODAsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbm90aWZ5Rmlu
aXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIFNoYXJlZEJ1ZmZl
ciopOwogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIHZvaWQgbm90aWZ5
RmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCBjYWxsYmFja0lkZW50
aWZpZXIsIHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4pOworI2VuZGlmCisKICAg
ICBSZWY8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAKICAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9tYWluUmVzb3VyY2U7
CkBAIC00NTksNiArNDczLDEwIEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9w
dHI8SWNvbkxvYWRlcj4sIHVpbnQ2NF90PiBtX2ljb25Mb2FkZXJzOwogICAgIFZlY3RvcjxMaW5r
SWNvbj4gbV9saW5rSWNvbnM7CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisg
ICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8QXBwbGljYXRpb25NYW5pZmVzdExvYWRlcj4sIHVp
bnQ2NF90PiBtX2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzOworI2VuZGlmCisKICAgICBWZWN0
b3I8SFRUUEhlYWRlckZpZWxkPiBtX2N1c3RvbUhlYWRlckZpZWxkczsKICAgICAKICAgICBib29s
IG1fc3VicmVzb3VyY2VMb2FkZXJzQXJlUGFnZUNhY2hlQWNjZXB0YWJsZSB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDAyZjliNDI4ZTk5
Li4xNTAxNjE4ZDU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTM2LDYgKzM2LDEwIEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVT
VCkKKyNpbmNsdWRlICJBcHBsaWNhdGlvbk1hbmlmZXN0LmgiCisjZW5kaWYKKwogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykKICNpbmNsdWRlICJDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIuaCIKICNlbmRpZgpAQCAtMzU2LDYgKzM2MCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJD
b3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90Pj4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
ZWRMb2FkaW5nSWNvbih1aW50NjRfdCwgU2hhcmVkQnVmZmVyKikgeyB9CisKKyNpZiBFTkFCTEUo
QVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkTG9hZGluZ0Fw
cGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRp
b25NYW5pZmVzdD4mKSB7IH0KKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IDg5NWYxYzMwYmFmLi5iYWExNjEx
NzQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApAQCAtMTcxLDYgKzE3MSwx
MSBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+IGNy
ZWF0ZUxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbgogI2VuZGlmCiAgICAgICAgIC8vIE5vbmUgb2Yg
dGhlc2UgdmFsdWVzIGlzIGN1cnJlbnRseSBzdXBwb3J0ZWQgYXMgYW4gYGFzYCB2YWx1ZS4KICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklG
RVNUKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6CisgICAg
ICAgIC8vIEZJWE1FOiBTdXBwb3J0IHByZWxvYWRpbmcgdGhlIG1hbmlmZXN0LgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KQEAgLTE5OCw2ICsyMDMsOSBAQCBib29sIExpbmtMb2FkZXI6OmlzU3VwcG9ydGVkVHlwZShD
YWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUsIGNvbnN0IFN0cmluZwogICAgICAgICBy
ZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRUZXh0VHJhY2tNSU1FVHlwZShtaW1l
VHlwZSk7CiAjZW5kaWYKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZToKKyNp
ZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6
QXBwbGljYXRpb25NYW5pZmVzdDoKKyNlbmRpZgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBk
ZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRJbmZvLmNwcAppbmRleCAxM2IyYWUxMDBmNC4uMDNkNjFlYjhiOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5jcHAKQEAgLTcwLDYg
KzcwLDEwIEBAIFJlc291cmNlVHlwZSB0b1Jlc291cmNlVHlwZShDYWNoZWRSZXNvdXJjZTo6VHlw
ZSB0eXBlKQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtTdWJyZXNvdXJjZToKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6QXBwbGljYXRpb25NYW5pZmVzdDoK
KyAgICAgICAgcmV0dXJuIFJlc291cmNlVHlwZTo6UmF3OworI2VuZGlmCiAgICAgfTsKICAgICBy
ZXR1cm4gUmVzb3VyY2VUeXBlOjpSYXc7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAppbmRleCBjMWM4YTUzZDBiYi4uZjVlZGUyMzA2MzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNDcxLDYgKzQ3MSwx
MSBAQCBzdGF0aWMgdm9pZCBsb2dSZXNvdXJjZUxvYWRlZChGcmFtZSogZnJhbWUsIENhY2hlZFJl
c291cmNlOjpUeXBlIHR5cGUpCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U1ZHRG9jdW1lbnRS
ZXNvdXJjZToKICAgICAgICAgcmVzb3VyY2VUeXBlID0gRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpz
dmdEb2N1bWVudEtleSgpOwogICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6QXBwbGljYXRpb25NYW5pZmVzdDoK
KyAgICAgICAgcmVzb3VyY2VUeXBlID0gRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjphcHBsaWNhdGlv
bk1hbmlmZXN0S2V5KCk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAjaWYgRU5BQkxFKExJTktf
UFJFRkVUQ0gpCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgogICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtTdWJyZXNvdXJjZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDExMzA3ZTQ1Y2QKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgiCisKKyNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisKKyNpbmNsdWRlICJBcHBsaWNhdGlvbk1hbmlmZXN0
UGFyc2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiVGV4dFJlc291
cmNlRGVjb2Rlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIDogQ2FjaGVkUmVzb3Vy
Y2UoV1RGTW92ZShyZXF1ZXN0KSwgQXBwbGljYXRpb25NYW5pZmVzdCwgc2Vzc2lvbklEKQorICAg
ICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24vbWFu
aWZlc3QranNvbiIsIFVURjhFbmNvZGluZygpKSkKK3sKK30KKwordm9pZCBDYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3sKKyAgICBt
X2RhdGEgPSBkYXRhOworICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAw
KTsKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OmZp
bmlzaExvYWRpbmcoZGF0YSk7Cit9CisKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBjaHMpCit7CisgICAgbV9kZWNvZGVyLT5zZXRFbmNv
ZGluZyhjaHMsIFRleHRSZXNvdXJjZURlY29kZXI6OkVuY29kaW5nRnJvbUhUVFBIZWFkZXIpOwor
fQorCitTdHJpbmcgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZW5jb2RpbmcoKSBjb25zdAor
eworICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOworfQorCitzdGQ6Om9w
dGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+IENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OnBy
b2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgUmVm
UHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7Cisg
ICAgaWYgKCFtX3RleHQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAgIHJldHVybiBBcHBsaWNhdGlvbk1hbmlmZXN0
UGFyc2VyOjpwYXJzZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgKm1fdGV4dCwgbWFuaWZlc3RV
UkwsIGRvY3VtZW50VVJMKTsKKyAgICByZXR1cm4gQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6
cGFyc2UoKm1fdGV4dCwgbWFuaWZlc3RVUkwsIGRvY3VtZW50VVJMKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZiMWE3
NTNhYTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisKKyNpbmNs
dWRlICJBcHBsaWNhdGlvbk1hbmlmZXN0LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIK
KyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKKwor
Y2xhc3MgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdCBmaW5hbCA6IHB1YmxpYyBDYWNoZWRSZXNv
dXJjZSB7CitwdWJsaWM6CisgICAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmJiwgUEFMOjpTZXNzaW9uSUQpOworCisgICAgc3RkOjpvcHRpb25hbDxzdHJ1
Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBj
b25zdCBVUkwmIGRvY3VtZW50VVJMLCBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gPSBu
dWxscHRyKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
Kikgb3ZlcnJpZGU7CisgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNl
RGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQorICAg
IHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGVu
Y29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBSZWY8VGV4dFJlc291cmNlRGVjb2Rlcj4g
bV9kZWNvZGVyOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtX3RleHQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0FDSEVEX1JFU09V
UkNFKENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QsIENhY2hlZFJlc291cmNlOjpBcHBsaWNhdGlv
bk1hbmlmZXN0KQorCisjZW5kaWYgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggZDhk
YmRmMzJmMGMuLmJlY2I5OGE4YTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTEwMiw2ICsxMDIsMTAgQEAgUmVzb3VyY2VMb2FkUHJp
b3JpdHkgQ2FjaGVkUmVzb3VyY2U6OmRlZmF1bHRQcmlvcml0eUZvclJlc291cmNlVHlwZShUeXBl
IHR5cGUpCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VGV4dFRyYWNrUmVzb3VyY2U6CiAgICAg
ICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eTo6TG93OwogI2VuZGlmCisjaWYgRU5BQkxF
KEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkFwcGxpY2F0
aW9uTWFuaWZlc3Q6CisgICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eTo6TG93Owor
I2VuZGlmCiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBSZXNv
dXJjZUxvYWRQcmlvcml0eTo6TG93OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaAppbmRleCBjN2VhZTEyZjQ1OS4uMzVmNzhjZTUxZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC04NCw2ICs4NCw5IEBA
IHB1YmxpYzoKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgICAgICwgVGV4dFRyYWNrUmVz
b3VyY2UKICNlbmRpZgorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICAgICAg
LCBBcHBsaWNhdGlvbk1hbmlmZXN0CisjZW5kaWYKICAgICB9OwogCiAgICAgZW51bSBTdGF0dXMg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggOWQ5MDZiOGRjN2UuLmFjMWY4OWEzNjVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc3
LDYgKzc3LDEwIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQor
I2luY2x1ZGUgIkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCIKKyNlbmRpZgorCiAjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQogI2luY2x1ZGUgIkNhY2hlZFRleHRUcmFjay5oIgogI2VuZGlmCkBA
IC0xMzQsNiArMTM4LDEwIEBAIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY3JlYXRlUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSCiAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6VGV4dFRyYWNrUmVzb3VyY2U6CiAgICAgICAgIHJldHVybiBuZXcgQ2FjaGVk
VGV4dFRyYWNrKFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCk7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6QXBwbGlj
YXRpb25NYW5pZmVzdDoKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0KFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCk7CisjZW5kaWYKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMjIsNiArMzMwLDEz
IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJj
ZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyCiAgICAgcmV0dXJuIGNhc3RDYWNoZWRSZXNvdXJj
ZVRvPENhY2hlZFJhd1Jlc291cmNlPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6Ok1h
aW5SZXNvdXJjZSwgV1RGTW92ZShyZXF1ZXN0KSkpOwogfQogCisjaWYgRU5BQkxFKEFQUExJQ0FU
SU9OX01BTklGRVNUKQorUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3Q+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEFwcGxp
Y2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK3sKKyAgICBy
ZXR1cm4gY2FzdENhY2hlZFJlc291cmNlVG88Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdD4ocmVx
dWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpBcHBsaWNhdGlvbk1hbmlmZXN0LCBXVEZNb3Zl
KHJlcXVlc3QpKSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQor
CiBzdGF0aWMgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Q29udGVudFR5cGUgY29udGVudFR5cGVGcm9t
UmVzb3VyY2VUeXBlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0
eXBlKSB7CkBAIC0zNjIsNiArMzc3LDEwIEBAIHN0YXRpYyBNaXhlZENvbnRlbnRDaGVja2VyOjpD
b250ZW50VHlwZSBjb250ZW50VHlwZUZyb21SZXNvdXJjZVR5cGUoQ2FjaGVkUmVzb3VyCiAgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6VGV4dFRyYWNrUmVzb3VyY2U6CiAgICAgICAgIHJldHVybiBN
aXhlZENvbnRlbnRDaGVja2VyOjpDb250ZW50VHlwZTo6QWN0aXZlOwogI2VuZGlmCisjaWYgRU5B
QkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkFwcGxp
Y2F0aW9uTWFuaWZlc3Q6CisgICAgICAgIHJldHVybiBNaXhlZENvbnRlbnRDaGVja2VyOjpDb250
ZW50VHlwZTo6QWN0aXZlOworI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBNaXhlZENvbnRlbnRDaGVja2VyOjpDb250ZW50
VHlwZTo6QWN0aXZlOwpAQCAtNDE4LDYgKzQzNyw5IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmNoZWNrSW5zZWN1cmVDb250ZW50KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0
CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1N1YnJlc291cmNlOgogICAgICAgICAvLyBQ
cmVmZXRjaCBjYW5ub3QgYWZmZWN0IHRoZSBjdXJyZW50IGRvY3VtZW50LgogI2VuZGlmCisjaWYg
RU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkFw
cGxpY2F0aW9uTWFuaWZlc3Q6CisjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJl
dHVybiB0cnVlOwpAQCAtNDY2LDYgKzQ4OCwxMiBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVy
OjphbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3koQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdAog
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkJlYWNvbjoKICAgICBjYXNlIENhY2hlZFJlc291cmNl
OjpSYXdSZXNvdXJjZToKICAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgRU5BQkxFKEFQUExJQ0FU
SU9OX01BTklGRVNUKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkFwcGxpY2F0aW9uTWFuaWZl
c3Q6CisgICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFs
bG93TWFuaWZlc3RGcm9tU291cmNlKHVybCwgcmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBkZWZh
dWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4IGQzMjg4
Y2FiYzEzLi44YjUxM2M2ZDBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTQxLDYgKzQxLDkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorY2xhc3MgQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdDsKKyNlbmRpZgogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVl
dDsKIGNsYXNzIENhY2hlZFNWR0RvY3VtZW50OwogY2xhc3MgQ2FjaGVkRm9udDsKQEAgLTk2LDYg
Kzk5LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBSZXNvdXJjZUVy
cm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkVGV4dFRyYWNrPj4gcmVxdWVzdFRleHRU
cmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCisgICAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q+PiByZXF1ZXN0QXBwbGljYXRpb25NYW5pZmVzdChD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CisjZW5kaWYKIAogICAgIC8vIExvZ3MgYW4gYWNjZXNz
IGRlbmllZCBtZXNzYWdlIHRvIHRoZSBjb25zb2xlIGZvciB0aGUgc3BlY2lmaWVkIFVSTC4KICAg
ICB2b2lkIHByaW50QWNjZXNzRGVuaWVkTWVzc2FnZShjb25zdCBVUkwmIHVybCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAKaW5kZXggZWYx
MDIwMWUzMzYuLjZmOTFkNDY0NzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Rp
YWdub3N0aWNMb2dnaW5nS2V5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9z
dGljTG9nZ2luZ0tleXMuY3BwCkBAIC00MTMsNiArNDEzLDEzIEBAIFN0cmluZyBEaWFnbm9zdGlj
TG9nZ2luZ0tleXM6OmFwcGxpY2F0aW9uQ2FjaGVLZXkoKQogICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoImFwcGxpY2F0aW9uQ2FjaGUiKTsKIH0KIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5J
RkVTVCkKK1N0cmluZyBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmFwcGxpY2F0aW9uTWFuaWZlc3RL
ZXkoKQoreworICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImFwcGxpY2F0aW9uTWFuaWZlc3QiKTsK
K30KKyNlbmRpZgorCiBTdHJpbmcgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjphdWRpb0tleSgpCiB7
CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYXVkaW8iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oCmluZGV4IGEyYmQzNjU5ZGIwLi42NjcxOWY3M2I2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oCkBAIC0zNCw2
ICszNCw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGFjdGl2
ZUluRm9yZWdyb3VuZFRhYktleSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcg
YWN0aXZlSW5CYWNrZ3JvdW5kVGFiT25seUtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgYXBwbGlj
YXRpb25DYWNoZUtleSgpOworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBz
dGF0aWMgU3RyaW5nIGFwcGxpY2F0aW9uTWFuaWZlc3RLZXkoKTsKKyNlbmRpZgogICAgIHN0YXRp
YyBTdHJpbmcgYXVkaW9LZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGJh
Y2tOYXZpZ2F0aW9uRGVsdGFLZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5n
IGNhY2hlQ29udHJvbE5vU3RvcmVLZXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IGE0NjQ4OTA3NDJjLi43YzU1NTExYzc0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3kuY3BwCkBAIC01NDksNiArNTQ5LDEzIEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5Ojph
bGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBSZWRpcmVjdFJlc3BvbnNlCiAgICAg
cmV0dXJuIGFsbG93UmVzb3VyY2VGcm9tU291cmNlKHVybCwgcmVkaXJlY3RSZXNwb25zZVJlY2Vp
dmVkLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6Zm9udFNyYywgJkNvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yRm9udCk7
CiB9CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCitib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dNYW5pZmVzdEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJlZGly
ZWN0UmVzcG9uc2VSZWNlaXZlZCByZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGFsbG93UmVzb3VyY2VGcm9tU291cmNlKHVybCwgcmVkaXJlY3RSZXNwb25zZVJl
Y2VpdmVkLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6bWFuaWZlc3RTcmMs
ICZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZv
ck1hbmlmZXN0KTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisK
IGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBV
UkwmIHVybCwgUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkIHJlZGlyZWN0UmVzcG9uc2VSZWNlaXZl
ZCkgY29uc3QKIHsKICAgICByZXR1cm4gYWxsb3dSZXNvdXJjZUZyb21Tb3VyY2UodXJsLCByZWRp
cmVjdFJlc3BvbnNlUmVjZWl2ZWQsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
OjptZWRpYVNyYywgJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVk
RGlyZWN0aXZlRm9yTWVkaWEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3kuaAppbmRleCBhNmRhMGQ2Y2U2MS4uZmJkOGQzOWZlZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCkBAIC0xMDMs
NiArMTAzLDkgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dJbWFnZUZyb21Tb3VyY2UoY29uc3Qg
VVJMJiwgUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkID0gUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVk
OjpObykgY29uc3Q7CiAgICAgYm9vbCBhbGxvd1N0eWxlRnJvbVNvdXJjZShjb25zdCBVUkwmLCBS
ZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQgPSBSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6Ok5vKSBj
b25zdDsKICAgICBib29sIGFsbG93Rm9udEZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVkaXJlY3RS
ZXNwb25zZVJlY2VpdmVkID0gUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpObykgY29uc3Q7Cisj
aWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIGJvb2wgYWxsb3dNYW5pZmVzdEZy
b21Tb3VyY2UoY29uc3QgVVJMJiwgUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkID0gUmVkaXJlY3RS
ZXNwb25zZVJlY2VpdmVkOjpObykgY29uc3Q7CisjZW5kaWYKICAgICBib29sIGFsbG93TWVkaWFG
cm9tU291cmNlKGNvbnN0IFVSTCYsIFJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCA9IFJlZGlyZWN0
UmVzcG9uc2VSZWNlaXZlZDo6Tm8pIGNvbnN0OwogCiAgICAgYm9vbCBhbGxvd0NoaWxkRnJhbWVG
cm9tU291cmNlKGNvbnN0IFVSTCYsIFJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCA9IFJlZGlyZWN0
UmVzcG9uc2VSZWNlaXZlZDo6Tm8pIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcApp
bmRleCAyYzQ2YzY3OTg1ZS4uOGVkM2FjOTEyZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Qu
Y3BwCkBAIC0yNDMsNiArMjQzLDE2IEBAIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0CiAgICAgcmV0
dXJuIG9wZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5J
RkVTVCkKK2NvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JNYW5pZmVzdChjb25z
dCBVUkwmIHVybCwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSkgY29uc3QKK3sKKyAg
ICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJl
Y3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9tYW5pZmVzdFNyYy5nZXQoKSk7Cisg
ICAgaWYgKGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZSwgdXJsLCBkaWRSZWNlaXZlUmVk
aXJlY3RSZXNwb25zZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBvcGVy
YXRpdmVEaXJlY3RpdmU7Cit9CisjZW5kaWYgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNU
KQorCiBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yTWVkaWEoY29uc3QgVVJM
JiB1cmwsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZl
ID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fbWVkaWFTcmMuZ2V0KCkpOwpAQCAtNDc1LDYg
KzQ4NSwxMCBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFkZERp
cmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0CiAgICAgICAgIHNldENTUERpcmVjdGl2
ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPihuYW1lLCB2YWx1ZSwg
bV9pbWdTcmMpOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZvbnRTcmMpKQogICAgICAgICBzZXRD
U1BEaXJlY3RpdmU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZT4obmFt
ZSwgdmFsdWUsIG1fZm9udFNyYyk7CisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQor
ICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTmFtZXM6Om1hbmlmZXN0U3JjKSkKKyAgICAgICAgc2V0Q1NQRGlyZWN0
aXZlPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmU+KG5hbWUsIHZhbHVl
LCBtX21hbmlmZXN0U3JjKTsKKyNlbmRpZgogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6Om1lZGlhU3Jj
KSkKICAgICAgICAgc2V0Q1NQRGlyZWN0aXZlPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxp
c3REaXJlY3RpdmU+KG5hbWUsIHZhbHVlLCBtX21lZGlhU3JjKTsKICAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5h
bWVzOjpjb25uZWN0U3JjKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaAppbmRleCA3MGEyNDMwNTUz
NC4uOTEyNjFmYTE3N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmgKQEAgLTYzLDYgKzYzLDkg
QEAgcHVibGljOgogICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlv
bGF0ZWREaXJlY3RpdmVGb3JGcmFtZShjb25zdCBVUkwmLCBib29sIGRpZFJlY2VpdmVSZWRpcmVj
dFJlc3BvbnNlKSBjb25zdDsKICAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yRnJhbWVBbmNlc3Rvcihjb25zdCBGcmFtZSYpIGNvbnN0
OwogICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJl
Y3RpdmVGb3JJbWFnZShjb25zdCBVUkwmLCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNl
KSBjb25zdDsKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZUZvck1hbmlmZXN0
KGNvbnN0IFVSTCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpIGNvbnN0OworI2Vu
ZGlmCiAgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERp
cmVjdGl2ZUZvck1lZGlhKGNvbnN0IFVSTCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UpIGNvbnN0OwogICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlv
bGF0ZWREaXJlY3RpdmVGb3JPYmplY3RTb3VyY2UoY29uc3QgVVJMJiwgYm9vbCBkaWRSZWNlaXZl
UmVkaXJlY3RSZXNwb25zZSwgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2
ZTo6U2hvdWxkQWxsb3dFbXB0eVVSTElmU291cmNlTGlzdElzTm90Tm9uZSkgY29uc3Q7CiAgICAg
Y29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZUZv
clBsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1
dGUpIGNvbnN0OwpAQCAtMTIxLDYgKzEyNCw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVf
cHRyPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmU+IG1fZnJhbWVBbmNl
c3RvcnM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxp
c3REaXJlY3RpdmU+IG1fZnJhbWVTcmM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmU+IG1faW1nU3JjOworI2lmIEVOQUJMRShBUFBM
SUNBVElPTl9NQU5JRkVTVCkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdERpcmVjdGl2ZT4gbV9tYW5pZmVzdFNyYzsKKyNlbmRpZgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX21l
ZGlhU3JjOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0RGlyZWN0aXZlPiBtX29iamVjdFNyYzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZT4gbV9zY3JpcHRTcmM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVO
YW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lcy5jcHAKaW5kZXggMjYxZjc0MWY2YTYuLjA3NmE1MDRmYmJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVOYW1lcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwCkBAIC0zOCw2ICszOCw5IEBAIGNvbnN0IGNoYXIqIGNv
bnN0IGZvbnRTcmMgPSAiZm9udC1zcmMiOwogY29uc3QgY2hhciogY29uc3QgZm9ybUFjdGlvbiA9
ICJmb3JtLWFjdGlvbiI7CiBjb25zdCBjaGFyKiBjb25zdCBmcmFtZUFuY2VzdG9ycyA9ICJmcmFt
ZS1hbmNlc3RvcnMiOwogY29uc3QgY2hhciogY29uc3QgZnJhbWVTcmMgPSAiZnJhbWUtc3JjIjsK
KyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCitjb25zdCBjaGFyKiBjb25zdCBtYW5p
ZmVzdFNyYyA9ICJtYW5pZmVzdC1zcmMiOworI2VuZGlmCiBjb25zdCBjaGFyKiBjb25zdCBpbWdT
cmMgPSAiaW1nLXNyYyI7CiBjb25zdCBjaGFyKiBjb25zdCBtZWRpYVNyYyA9ICJtZWRpYS1zcmMi
OwogY29uc3QgY2hhciogY29uc3Qgb2JqZWN0U3JjID0gIm9iamVjdC1zcmMiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzLmgKaW5kZXggZjEzZjA0YWNhNDguLmFlYWNkNDZiNDQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVO
YW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZU5hbWVzLmgKQEAgLTM4LDYgKzM4LDkgQEAgZXh0ZXJuIGNvbnN0IGNoYXIqIGNv
bnN0IGZvcm1BY3Rpb247CiBleHRlcm4gY29uc3QgY2hhciogY29uc3QgZnJhbWVBbmNlc3RvcnM7
CiBleHRlcm4gY29uc3QgY2hhciogY29uc3QgZnJhbWVTcmM7CiBleHRlcm4gY29uc3QgY2hhciog
Y29uc3QgaW1nU3JjOworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKK2V4dGVybiBj
b25zdCBjaGFyKiBjb25zdCBtYW5pZmVzdFNyYzsKKyNlbmRpZgogZXh0ZXJuIGNvbnN0IGNoYXIq
IGNvbnN0IG1lZGlhU3JjOwogZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IG9iamVjdFNyYzsKIGV4
dGVybiBjb25zdCBjaGFyKiBjb25zdCBwbHVnaW5UeXBlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAzM2Y3
MGU5YTU3Ni4uMTdhMmY0M2YxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTEyMSw2ICsxMjEsOSBAQCBz
dGF0aWMgU2Vjb25kcyBtYXhpbXVtQnVmZmVyaW5nVGltZShDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UpCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U1ZHRm9udFJlc291cmNlOgogI2VuZGlmCiAg
ICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOgorI2lmIEVOQUJMRShBUFBMSUNB
VElPTl9NQU5JRkVTVCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpBcHBsaWNhdGlvbk1hbmlm
ZXN0OgorI2VuZGlmCiAgICAgICAgIHJldHVybiBTZWNvbmRzOjppbmZpbml0eSgpOwogICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6CiAgICAgICAgIHJldHVybiA1MDBfbXM7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328530</attachid>
            <date>2017-12-05 17:13:25 -0800</date>
            <delta_ts>2017-12-05 18:41:24 -0800</delta_ts>
            <desc>Patch for landing (v2)</desc>
            <filename>0001-Web-App-Manifest-Support-fetching-the-app-manifest.patch</filename>
            <type>text/plain</type>
            <size>59274</size>
            <attacher name="David Quesada">david_quesada</attacher>
            
              <data encoding="base64">RnJvbSA3NGMxNWIzODhhMGQzMmYyMzJjMmQ5OTg3ZGZjMmU0Mjg5YmNiYTk5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBRdWVzYWRhIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNv
bT4KRGF0ZTogRnJpLCAxNyBOb3YgMjAxNyAxMDowMzoyNSAtMDgwMApTdWJqZWN0OiBbUEFUQ0gg
MS81XSBbV2ViIEFwcCBNYW5pZmVzdF0gU3VwcG9ydCBmZXRjaGluZyB0aGUgYXBwIG1hbmlmZXN0
CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMjkyCgpSZXZpZXdl
ZCBieSBHZW9mZnJleSBHYXJlbi4KCkFkZCBzdXBwb3J0IGluIFdlYkNvcmUgZm9yIGxvYWRpbmcg
YW5kIHBhcnNpbmcgYXBwbGljYXRpb24gbWFuaWZlc3RzLiBUaGlzIGZ1bmN0aW9uYWxpdHkKaXMg
Y3VycmVudGx5IGV4cG9zZWQgd2l0aCB0d28gbWV0aG9kczogRG9jdW1lbnRMb2FkZXI6OmxvYWRB
cHBsaWNhdGlvbk1hbmlmZXN0KCkgdG8gY2FsbAp0byBzdGFydCBsb2FkaW5nIHRoZSBtYW5pZmVz
dCwgYW5kIEZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlm
ZXN0KCkKZm9yIGNsaWVudHMgdG8gb3ZlcnJpZGUgaW4gb3JkZXIgdG8gYmUgbm90aWZpZWQgb2Yg
dGhlIGxvYWRlZCBtYW5pZmVzdC4KCk5vIG5ldyB0ZXN0cywgc2luY2Ugbm8gZnVuY3Rpb25hbGl0
eSBpcyBleHBvc2VkIHRvIHdlYiBjb250ZW50IG9yIGVtYmVkZGVycyB5ZXQuIFRoZQpuZWVkZWQg
U1BJIHdpbGwgYmUgYWRkZWQgaW4gYW4gdXBjb21pbmcgcGF0Y2guCgoqIFNvdXJjZXMudHh0Ogoq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKICAgIEFkZGVkIENhY2hlZEFwcGxp
Y2F0aW9uTWFuaWZlc3QgYW5kIEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuCiogaHRtbC9IVE1M
TGlua0VsZW1lbnQuaDoKKiBodG1sL0xpbmtSZWxBdHRyaWJ1dGUuY3BwOgooV2ViQ29yZTo6TGlu
a1JlbEF0dHJpYnV0ZTo6TGlua1JlbEF0dHJpYnV0ZSk6CihXZWJDb3JlOjpMaW5rUmVsQXR0cmli
dXRlOjppc1N1cHBvcnRlZCk6CiAgICBBZGQgIm1hbmlmZXN0IiBhcyBhIHN1cHBvcnRlZCAncmVs
JyB0eXBlIGZvciBsaW5rcy4KKiBodG1sL0xpbmtSZWxBdHRyaWJ1dGUuaDoKKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CihXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdl
bnQ6OnJlc291cmNlVHlwZUpTT04pOgooV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjppbnNw
ZWN0b3JSZXNvdXJjZVR5cGUpOgoqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
Lmg6CiogbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuY3BwOiBBZGRlZC4KICAgIEFk
ZGVkIGEgY2xhc3MgQXBwbGljYXRpb25NYW5pZmVzdExvYWRlciB3aGljaCBoYW5kbGVzIGNyZWF0
aW5nIGEgUmVzb3VyY2VSZXF1ZXN0LAogICAgbG9hZGluZyB0aGUgcmVzb3VyY2UgZnJvbSB0aGUg
Q2FjaGVkUmVzb3VyY2VMb2FkZXIsIGFuZCBwYXJzaW5nIHRoZSByZXN1bHRpbmcgdGV4dC4KICAg
IFRoaXMgY2xhc3MgYW5kIGl0cyByZWxhdGlvbiB0byBEb2N1bWVudExvYWRlciBhcmUgcm91Z2hs
eSBiYXNlZCBvbiB0aGF0IG9mIEljb25Mb2FkZXIsCiAgICB3aGljaCBzZXJ2ZXMgYSBzaW1pbGFy
IHB1cnBvc2UgLSByZXF1ZXN0aW5nIGEgcmVzb3VyY2Ugb24gdGhlIHBhZ2UgYW5kIHVsdGltYXRl
bHkKICAgIHByb3ZpZGluZyBpdCB0byB0aGUgZW1iZWRkZXIuCihXZWJDb3JlOjpBcHBsaWNhdGlv
bk1hbmlmZXN0TG9hZGVyOjpBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyKToKKFdlYkNvcmU6OkFw
cGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6On5BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyKToKKFdl
YkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6OnN0YXJ0TG9hZGluZyk6CihXZWJDb3Jl
OjpBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyOjpzdG9wTG9hZGluZyk6CihXZWJDb3JlOjpBcHBs
aWNhdGlvbk1hbmlmZXN0TG9hZGVyOjpwcm9jZXNzTWFuaWZlc3QpOgooV2ViQ29yZTo6QXBwbGlj
YXRpb25NYW5pZmVzdExvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgoqIGxvYWRlci9BcHBsaWNhdGlv
bk1hbmlmZXN0TG9hZGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmguCiogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcDoKKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZyk6CihXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QpOgooV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QpOgooV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZl
c3QpOgoqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgoqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oOgoqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKFdlYkNvcmU6OmNyZWF0ZUxpbmtQcmVsb2Fk
UmVzb3VyY2VDbGllbnQpOgooV2ViQ29yZTo6TGlua0xvYWRlcjo6aXNTdXBwb3J0ZWRUeXBlKToK
KiBsb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5jcHA6CihXZWJDb3JlOjp0b1Jlc291cmNlVHlwZSk6
CiogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKFdlYkNvcmU6OmxvZ1Jlc291cmNlTG9h
ZGVkKToKKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6IEFkZGVk
LgooV2ViQ29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdCk6CihXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2Fk
aW5nKToKKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OnNldEVuY29kaW5nKToK
KFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kaW5nIGNvbnN0KToKKFdl
YkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OnByb2Nlc3MpOgogICAgQWRkIGEgbWV0
aG9kIHRvIHByb2Nlc3MgdGhlIGZldGNoZWQgdGV4dCBpbnRvIGFuIEFwcGxpY2F0aW9uTWFuaWZl
c3QuIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QKICAgIGRvZXMgbm90IHN0b3JlIHRoZSByZXN1
bHRpbmcgQXBwbGljYXRpb25NYW5pZmVzdCBiZWNhdXNlIHRoZSB0ZXh0IG9mIGFuIGFwcGxpY2F0
aW9uCiAgICBtYW5pZmVzdCBjYW4geWllbGQgYSBkaWZmZXJlbnQgQXBwbGljYXRpb25NYW5pZmVz
dCBkZXBlbmRpbmcgb24gdGhlIFVSTCBvZiB0aGUgZG9jdW1lbnQKICAgIHByb2Nlc3NpbmcgaXQu
CiogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXMuaC4KKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgooV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2U6OmRlZmF1bHRQcmlvcml0eUZvclJlc291cmNlVHlwZSk6CiogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmg6CiogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cDoKKFdlYkNvcmU6OmNyZWF0ZVJlc291cmNlKToKKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXF1ZXN0QXBwbGljYXRpb25NYW5pZmVzdCk6CihXZWJDb3JlOjpjb250ZW50VHlwZUZy
b21SZXNvdXJjZVR5cGUpOgooV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNoZWNrSW5z
ZWN1cmVDb250ZW50IGNvbnN0KToKKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjphbGxv
d2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3kgY29uc3QpOgoqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5oOgoqIHBhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcDoKKFdlYkNv
cmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6YXBwbGljYXRpb25NYW5pZmVzdEtleSk6CiogcGFn
ZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaDoKKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3kuY3BwOgooV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd01hbmlmZXN0RnJv
bVNvdXJjZSBjb25zdCk6CiogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg6CiogcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHA6CihXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvck1h
bmlmZXN0IGNvbnN0KToKKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q6OmFkZERpcmVjdGl2ZSk6CiogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTGlzdC5oOgoqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
LmNwcDoKKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oOgot
LS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
IDg5ICsrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0ICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICA0ICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiAgIHwgIDEyICsrKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuaCAgICAgICAgICAgICAgfCAgIDQgKwogU291cmNlL1dlYkNvcmUvaHRtbC9MaW5r
UmVsQXR0cmlidXRlLmNwcCAgICAgICAgICAgfCAgIDcgKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwv
TGlua1JlbEF0dHJpYnV0ZS5oICAgICAgICAgICAgIHwgICAzICsKIC4uLi9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgICAgICAgIHwgIDEyICsrKwogLi4uL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCAgfCAgIDMgKwogLi4uL1dlYkNv
cmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuY3BwICAgfCAxMTMgKysrKysrKysr
KysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExv
YWRlci5oICB8ICA2NiArKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAgICAgICAgICAgIHwgIDc1ICsrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCAgICAgICAgICAgICB8ICAxOCArKysrCiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCAgICAgICAgICB8ICAgOCArKwogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwICAgICAgICAgICAgICAgfCAgIDggKysK
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmNwcCAgICAgICAgIHwgICA0
ICsKIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgICAgICAgIHwg
ICA1ICsKIC4uLi9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgICAg
IHwgIDczICsrKysrKysrKysrKysKIC4uLi9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5oICAgICAgIHwgIDU5ICsrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwICAgICB8ICAgNCArCiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCAgICAgICB8ICAgMyArCiAuLi4vV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwICB8ICAyOCArKysrKwogU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggfCAgIDYgKysKIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcCAgICAgIHwgICA3ICsrCiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oICAgICAgICB8ICAgMyAr
CiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwICB8ICAg
NyArKwogU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmggICAg
fCAgIDMgKwogLi4uL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcCAg
ICAgfCAgMTQgKysrCiAuLi4vcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdC5oICB8ICAgNiArKwogLi4uL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVO
YW1lcy5jcHAgICAgfCAgIDMgKwogLi4uL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzLmggfCAgIDMgKwogLi4uL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHAgICAgICAgfCAgIDMgKwogMzEgZmlsZXMgY2hhbmdlZCwgNjUzIGluc2VydGlv
bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRp
b25NYW5pZmVzdExvYWRlci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCiBj
cmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxp
Y2F0aW9uTWFuaWZlc3QuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYTg3YTllNmE1OC4uMGI4MmZjMjlkZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MiBAQAorMjAxNy0xMS0xNyAgRGF2aWQgUXVlc2FkYSAg
PGRhdmlkX3F1ZXNhZGFAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWIgQXBwIE1hbmlmZXN0XSBT
dXBwb3J0IGZldGNoaW5nIHRoZSBhcHAgbWFuaWZlc3QgCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyOTIKKworICAgICAgICBSZXZpZXdlZCBieSBH
ZW9mZnJleSBHYXJlbi4KKworICAgICAgICBBZGQgc3VwcG9ydCBpbiBXZWJDb3JlIGZvciBsb2Fk
aW5nIGFuZCBwYXJzaW5nIGFwcGxpY2F0aW9uIG1hbmlmZXN0cy4gVGhpcyBmdW5jdGlvbmFsaXR5
CisgICAgICAgIGlzIGN1cnJlbnRseSBleHBvc2VkIHdpdGggdHdvIG1ldGhvZHM6IERvY3VtZW50
TG9hZGVyOjpsb2FkQXBwbGljYXRpb25NYW5pZmVzdCgpIHRvIGNhbGwKKyAgICAgICAgdG8gc3Rh
cnQgbG9hZGluZyB0aGUgbWFuaWZlc3QsIGFuZCBGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRM
b2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCgpCisgICAgICAgIGZvciBjbGllbnRzIHRvIG92ZXJy
aWRlIGluIG9yZGVyIHRvIGJlIG5vdGlmaWVkIG9mIHRoZSBsb2FkZWQgbWFuaWZlc3QuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSBubyBmdW5jdGlvbmFsaXR5IGlzIGV4cG9zZWQgdG8g
d2ViIGNvbnRlbnQgb3IgZW1iZWRkZXJzIHlldC4gVGhlCisgICAgICAgIG5lZWRlZCBTUEkgd2ls
bCBiZSBhZGRlZCBpbiBhbiB1cGNvbWluZyBwYXRjaC4KKworICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
ICAgIEFkZGVkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QgYW5kIEFwcGxpY2F0aW9uTWFuaWZl
c3RMb2FkZXIuCisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0xpbmtSZWxBdHRyaWJ1dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGlua1JlbEF0dHJp
YnV0ZTo6TGlua1JlbEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMaW5rUmVsQXR0cmli
dXRlOjppc1N1cHBvcnRlZCk6CisgICAgICAgICAgICBBZGQgIm1hbmlmZXN0IiBhcyBhIHN1cHBv
cnRlZCAncmVsJyB0eXBlIGZvciBsaW5rcy4KKyAgICAgICAgKiBodG1sL0xpbmtSZWxBdHRyaWJ1
dGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpTT04p
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjppbnNwZWN0b3JSZXNvdXJj
ZVR5cGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50Lmg6
CisgICAgICAgICogbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgICAgIEFkZGVkIGEgY2xhc3MgQXBwbGljYXRpb25NYW5pZmVzdExvYWRlciB3aGlj
aCBoYW5kbGVzIGNyZWF0aW5nIGEgUmVzb3VyY2VSZXF1ZXN0LAorICAgICAgICAgICAgbG9hZGlu
ZyB0aGUgcmVzb3VyY2UgZnJvbSB0aGUgQ2FjaGVkUmVzb3VyY2VMb2FkZXIsIGFuZCBwYXJzaW5n
IHRoZSByZXN1bHRpbmcgdGV4dC4KKyAgICAgICAgICAgIFRoaXMgY2xhc3MgYW5kIGl0cyByZWxh
dGlvbiB0byBEb2N1bWVudExvYWRlciBhcmUgcm91Z2hseSBiYXNlZCBvbiB0aGF0IG9mIEljb25M
b2FkZXIsCisgICAgICAgICAgICB3aGljaCBzZXJ2ZXMgYSBzaW1pbGFyIHB1cnBvc2UgLSByZXF1
ZXN0aW5nIGEgcmVzb3VyY2Ugb24gdGhlIHBhZ2UgYW5kIHVsdGltYXRlbHkKKyAgICAgICAgICAg
IHByb3ZpZGluZyBpdCB0byB0aGUgZW1iZWRkZXIuCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbk1hbmlmZXN0TG9hZGVyOjpBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6On5BcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6OnN0
YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVy
OjpzdG9wTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0TG9h
ZGVyOjpwcm9jZXNzTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25NYW5p
ZmVzdExvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9BcHBsaWNhdGlv
bk1hbmlmZXN0TG9hZGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmguCisgICAgICAgICogbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdG9w
TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0
aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVk
TG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGlua0xvYWRlcjo6aXNTdXBwb3J0ZWRUeXBlKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3Vy
Y2VMb2FkSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Jlc291cmNlVHlwZSk6CisgICAg
ICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omxv
Z1Jlc291cmNlTG9hZGVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OnNldEVuY29kaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kaW5nIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OnByb2Nlc3MpOgorICAg
ICAgICAgICAgQWRkIGEgbWV0aG9kIHRvIHByb2Nlc3MgdGhlIGZldGNoZWQgdGV4dCBpbnRvIGFu
IEFwcGxpY2F0aW9uTWFuaWZlc3QuIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QKKyAgICAgICAg
ICAgIGRvZXMgbm90IHN0b3JlIHRoZSByZXN1bHRpbmcgQXBwbGljYXRpb25NYW5pZmVzdCBiZWNh
dXNlIHRoZSB0ZXh0IG9mIGFuIGFwcGxpY2F0aW9uCisgICAgICAgICAgICBtYW5pZmVzdCBjYW4g
eWllbGQgYSBkaWZmZXJlbnQgQXBwbGljYXRpb25NYW5pZmVzdCBkZXBlbmRpbmcgb24gdGhlIFVS
TCBvZiB0aGUgZG9jdW1lbnQKKyAgICAgICAgICAgIHByb2Nlc3NpbmcgaXQuCisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMu
aC4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRlZmF1bHRQcmlvcml0eUZvclJlc291cmNlVHlwZSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpy
ZXF1ZXN0QXBwbGljYXRpb25NYW5pZmVzdCk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50VHlw
ZUZyb21SZXNvdXJjZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmNoZWNrSW5zZWN1cmVDb250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlTG9hZGVyOjphbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3kgY29uc3QpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IHBhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpYWdu
b3N0aWNMb2dnaW5nS2V5czo6YXBwbGljYXRpb25NYW5pZmVzdEtleSk6CisgICAgICAgICogcGFn
ZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
OjphbGxvd01hbmlmZXN0RnJvbVNvdXJjZSBjb25zdCk6CisgICAgICAgICogcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvck1hbmlmZXN0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6
OmFkZERpcmVjdGl2ZSk6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdC5oOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZU5hbWVzLmNwcDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVOYW1lcy5oOgorCiAyMDE3LTEyLTA1ICBNYXR0IExld2lzICA8amxld2lz
M0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyNTQzMC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggNTY2MDg2MDI1ZGMuLjkzYzAyMDdlZTcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dApAQCAtMjcsNiArMjcsMTAgQEAgTW9kdWxlcy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFyZ2V0
QXZhaWxhYmlsaXR5RXZlbnQuY3BwCiAKIE1vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBs
aWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcAogCitsb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExv
YWRlci5jcHAKKworbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisK
ICNlbmRpZgogCiBNb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDc5ZjNk
ODljY2YuLjczODMzNzg5ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzUxLDcgKzE3NTEsOSBAQAogCQk2MjhEMjE0RTEy
MTMxRUY0MDA1NURDRkMgLyogRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjI4RDIxNEQxMjEzMUVGNDAwNTVEQ0ZD
IC8qIEZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2MkMxMjE3RDExQUI5RTc3MDAzQzQ2MkMgLyogU3VzcGVu
ZGFibGVUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjJDMTIxN0IxMUFCOUU3NzAwM0M0NjJDIC8qIFN1c3BlbmRhYmxlVGltZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2MkNEMzI1QTExNTdF
NTdDMDA2M0IwQTcgLyogQ3VzdG9tRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDYyQ0QzMjU3MTE1N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVu
dC5oICovOyB9OworCQk2MzE1MkQxOTFGOTUzMUVFMDA3QTVFNEIgLyogQXBwbGljYXRpb25NYW5p
ZmVzdExvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjMxNTJEMTcxRjk1MzFFRTAwN0E1RTRCIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIu
aCAqLzsgfTsKIAkJNjMxODlBRTMwRTgzQTMzMzAwMDEyRTQxIC8qIE5vZGVSYXJlRGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjMxODlBRTIwRTgz
QTMzMzAwMDEyRTQxIC8qIE5vZGVSYXJlRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKCk7IH07IH07CisJCTYzNTNFMUU2MUY5MTc0MzEwMEEzNDIwOCAvKiBDYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2MzUzRTFFNDFGOTE3NDMxMDBBMzQyMDggLyogQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTYz
NTRGNEM5MUY3QUZDOTQwMEQ4OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzU0RjRDNzFGN0FG
Qzk0MDBEODlERjMgLyogQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTYzQkQ0QTVGMUY3NzhFOUYwMDQz
ODcyMiAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2M0JENEE1RDFGNzc4RTlGMDA0Mzg3MjIgLyogQXBwbGljYXRp
b25NYW5pZmVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTYzRDdCMzJEMEU3OENEM0YwMEY3NjE3QyAvKiBOb2RlUmVuZGVyU3R5bGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzRDdCMzJDMEU3OENE
M0YwMEY3NjE3QyAvKiBOb2RlUmVuZGVyU3R5bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODM4Miw3ICs4Mzg0LDExIEBACiAJCTYyQ0QzMjU2
MTE1N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDdXN0b21FdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTYyQ0QzMjU3MTE1N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2MkNEMzI1ODExNTdFNTdDMDA2M0IwQTcgLyogQ3VzdG9tRXZlbnQuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEN1c3RvbUV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNjMxNTJEMTcxRjk1MzFFRTAwN0E1RTRCIC8qIEFwcGxpY2F0aW9uTWFu
aWZlc3RMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MzE1MkQxODFGOTUzMUVFMDA3QTVFNEIg
LyogQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcHBs
aWNhdGlvbk1hbmlmZXN0TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjMxODlBRTIwRTgzQTMzMzAwMDEyRTQxIC8qIE5vZGVSYXJlRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOb2RlUmFyZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNjM1M0UxRTQxRjkxNzQzMTAwQTM0MjA4IC8qIENhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MzUzRTFFNTFGOTE3NDMxMDBBMzQyMDggLyogQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjM1NEY0
QzcxRjdBRkM5NDAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2MzU0RjRDODFGN0FGQzk0MDBEODlERjMgLyogQXBwbGljYXRpb25NYW5pZmVz
dFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjM3QjdBREUwRTg3NjdCODAwRTMy
MTk0IC8qIEVsZW1lbnRSYXJlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBFbGVtZW50UmFyZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNzg4
LDYgKzIxNzk0LDggQEAKIAkJQThEMkIyNTIxMjg3QTU2MDAwQUY0RERBIC8qIGNhY2hlICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2MzUzRTFFNTFGOTE3
NDMxMDBBMzQyMDggLyogQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgKi8sCisJCQkJNjM1
M0UxRTQxRjkxNzQzMTAwQTM0MjA4IC8qIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCAqLywK
IAkJCQlCQ0IxNkMwMDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAg
Ki8sCiAJCQkJQkNCMTZDMDEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZENTU1N0eWxlU2hlZXQu
aCAqLywKIAkJCQlCQzY0QjRDOTBDQjQyOTVEMDA1RjJCNjIgLyogQ2FjaGVkRm9udC5jcHAgKi8s
CkBAIC0yMzI5OSw2ICsyMzMwNyw4IEBACiAJCQkJNTEyNkU2QjYwQTJFM0FFRjAwNUMyOUZBIC8q
IGljb24gKi8sCiAJCQkJQTE1RTMxRjAxRTBDQjA3NTAwNEIzNzFDIC8qIGlvcyAqLywKIAkJCQk5
M0ExRUFBMjBBNTYzNEQ4MDA2OTYwQTAgLyogbWFjICovLAorCQkJCTYzMTUyRDE4MUY5NTMxRUUw
MDdBNUU0QiAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmNwcCAqLywKKwkJCQk2MzE1MkQx
NzFGOTUzMUVFMDA3QTVFNEIgLyogQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oICovLAogCQkJ
CUExNDk3ODZDMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmNwcCAqLywKIAkJCQlB
MTQ5Nzg2RDFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5oICovLAogCQkJCUUxNDI0
QzkxMTY0QjUyQzgwMEYzMkQ0MCAvKiBDb29raWVKYXIuY3BwICovLApAQCAtMjYwODAsNiArMjYw
OTAsNyBAQAogCQkJCTFBOEY2QkMxMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMkFBQzU5MERDMkEzQjEwMEEyMEQ5QSAv
KiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjNCRDRBNUYx
Rjc3OEU5RjAwNDM4NzIyIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCTYzMTUyRDE5MUY5NTMxRUUwMDdBNUU0QiAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2MzU0RjRDOTFGN0FGQzk0MDBEODlERjMgLyogQXBwbGlj
YXRpb25NYW5pZmVzdFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI0MTcwNjQxMjU2NjJC
MzAwNkIyOEZDIC8qIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTMzMDlERDkwOTlFNjQ5MjAwNTZFNTgxIC8qIEFwcGx5U3R5bGVDb21tYW5kLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI2MjIwLDYgKzI2MjMxLDcgQEAKIAkJCQkxQTU2OUNGQzBEN0UyQjgyMDA3
QzM5ODMgLyogY19ydW50aW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUNGRTBEN0UyQjgy
MDA3QzM5ODMgLyogY191dGlsaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0MwNDZDNDFFNDI1
MDhCMDA3MjAxRTcgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQk2MzUzRTFFNjFGOTE3NDMxMDBBMzQyMDggLyogQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCMTZDMUEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hl
ZENTU1N0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjRCNENDMENCNDI5NUQwMDVG
MkI2MiAvKiBDYWNoZWRGb250LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUVGNEU2NzE3MEUxNjAz
MDBBQjI3OTkgLyogQ2FjaGVkRm9udENsaWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuaAppbmRleCBjNGI2OGNjMjc5MS4uMTA5MmNiZjRmY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaApAQCAtNzMsNiArNzMsMTAgQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRE9NVG9rZW5MaXN0JiByZWxMaXN0KCk7CiAKKyNp
ZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgYm9vbCBpc0FwcGxpY2F0aW9uTWFu
aWZlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlbEF0dHJpYnV0ZS5pc0FwcGxpY2F0aW9uTWFuaWZl
c3Q7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtSZWxBdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9MaW5rUmVsQXR0cmlidXRlLmNwcAppbmRleCA1NzJiZGIzNGM1OC4uYWYwYjFiMGNi
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua1JlbEF0dHJpYnV0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rUmVsQXR0cmlidXRlLmNwcApAQCAtNjUsNiAr
NjUsMTAgQEAgTGlua1JlbEF0dHJpYnV0ZTo6TGlua1JlbEF0dHJpYnV0ZShEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFN0cmluZyYgcmVsKQogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHJlbCwgImFsdGVybmF0ZSBzdHlsZXNoZWV0IikgfHwgZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UocmVsLCAic3R5bGVzaGVldCBhbHRlcm5hdGUiKSkgewogICAgICAg
ICBpc1N0eWxlU2hlZXQgPSB0cnVlOwogICAgICAgICBpc0FsdGVybmF0ZSA9IHRydWU7CisjaWYg
RU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UocmVsLCAibWFuaWZlc3QiKSkgeworICAgICAgICBpc0FwcGxpY2F0
aW9uTWFuaWZlc3QgPSB0cnVlOworI2VuZGlmCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gVG9r
ZW5pemUgdGhlIHJlbCBhdHRyaWJ1dGUgYW5kIHNldCBiaXRzIGJhc2VkIG9uIHNwZWNpZmljIGtl
eXdvcmRzIHRoYXQgd2UgZmluZC4KICAgICAgICAgU3RyaW5nIHJlbENvcHkgPSByZWw7CkBAIC05
OCw2ICsxMDIsOSBAQCBib29sIExpbmtSZWxBdHRyaWJ1dGU6OmlzU3VwcG9ydGVkKERvY3VtZW50
JiBkb2N1bWVudCwgU3RyaW5nVmlldyBhdHRyaWJ1dGUpCiAjaWYgRU5BQkxFKExJTktfUFJFRkVU
Q0gpCiAgICAgICAgICJwcmVmZXRjaCIsICJzdWJyZXNvdXJjZSIsCiAjZW5kaWYKKyNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgICAgICJtYW5pZmVzdCIsCisjZW5kaWYKICAg
ICB9OwogCiAgICAgZm9yIChhdXRvKiBzdXBwb3J0ZWRBdHRyaWJ1dGUgOiBzdXBwb3J0ZWRBdHRy
aWJ1dGVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtSZWxBdHRyaWJ1
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua1JlbEF0dHJpYnV0ZS5oCmluZGV4IGYxMmU5
ODY2MzdjLi5hNjExMGE3ZGM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5r
UmVsQXR0cmlidXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rUmVsQXR0cmlidXRl
LmgKQEAgLTUxLDYgKzUxLDkgQEAgc3RydWN0IExpbmtSZWxBdHRyaWJ1dGUgewogICAgIGJvb2wg
aXNMaW5rUHJlZmV0Y2ggeyBmYWxzZSB9OwogICAgIGJvb2wgaXNMaW5rU3VicmVzb3VyY2UgeyBm
YWxzZSB9OwogI2VuZGlmCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIGJv
b2wgaXNBcHBsaWNhdGlvbk1hbmlmZXN0IHsgZmFsc2UgfTsKKyNlbmRpZgogCiAgICAgTGlua1Jl
bEF0dHJpYnV0ZSgpOwogICAgIExpbmtSZWxBdHRyaWJ1dGUoRG9jdW1lbnQmLCBjb25zdCBTdHJp
bmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcAppbmRleCBkNjU0ZjE0MWM2ZC4uMmNiMWRhZWMyMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKQEAgLTcwLDYgKzcwLDEwIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogI2luY2x1ZGUgPHlhcnIvUmVndWxhckV4cHJlc3Npb24uaD4KIAorI2lmIEVOQUJMRShB
UFBMSUNBVElPTl9NQU5JRkVTVCkKKyNpbmNsdWRlICJDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgJiYgVVNFKENGKQogI2luY2x1
ZGUgIkxlZ2FjeVdlYkFyY2hpdmUuaCIKICNlbmRpZgpAQCAtMjA0LDYgKzIwOCwxMCBAQCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGUgSW5zcGVjdG9yUGFnZUFnZW50Ojpy
ZXNvdXJjZVR5cGVKU09OKElucwogICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6
UGFnZTo6UmVzb3VyY2VUeXBlOjpXZWJTb2NrZXQ7CiAgICAgY2FzZSBPdGhlclJlc291cmNlOgog
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlOjpP
dGhlcjsKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgY2FzZSBBcHBsaWNh
dGlvbk1hbmlmZXN0UmVzb3VyY2U6CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgfQogICAg
IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGU6Ok90aGVyOwog
fQpAQCAtMjI5LDYgKzIzNywxMCBAQCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSBJ
bnNwZWN0b3JQYWdlQWdlbnQ6Omluc3BlY3RvclJlc291cmNlVHlwZShDYWNoZQogICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpEb2N1bWVudFJlc291cmNlOwogICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OkJlYWNvbjoKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6
QmVhY29uUmVzb3VyY2U7CisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6CisgICAgICAgIHJldHVybiBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OkFwcGxpY2F0aW9uTWFuaWZlc3RSZXNvdXJjZTsKKyNlbmRpZgog
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6Ok1lZGlhUmVzb3VyY2U6CiAgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6SWNvbjoKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5oCmluZGV4IDQ4M2RhOTMyNzdiLi4yY2Y4MWY1ODc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC03MSw2ICs3
MSw5IEBAIHB1YmxpYzoKICAgICAgICAgUGluZ1Jlc291cmNlLAogICAgICAgICBCZWFjb25SZXNv
dXJjZSwKICAgICAgICAgV2ViU29ja2V0UmVzb3VyY2UsCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQorICAgICAgICBBcHBsaWNhdGlvbk1hbmlmZXN0UmVzb3VyY2UsCisjZW5kaWYK
ICAgICAgICAgT3RoZXJSZXNvdXJjZSwKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjExNjU1ZGUwOGQxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuY3BwCkBAIC0wLDAg
KzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFw
cGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaCIKKworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5J
RkVTVCkKKworI2luY2x1ZGUgIkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCIKKyNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVz
dC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCIKKyNpbmNs
dWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworQXBwbGljYXRpb25NYW5pZmVzdExvYWRlcjo6QXBwbGljYXRpb25NYW5pZmVz
dExvYWRlcihEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIsIGNvbnN0IFVSTCYgdXJsLCBi
b29sIHVzZUNyZWRlbnRpYWxzKQorICAgIDogbV9kb2N1bWVudExvYWRlcihkb2N1bWVudExvYWRl
cikKKyAgICAsIG1fdXJsKHVybCkKKyAgICAsIG1fdXNlQ3JlZGVudGlhbHModXNlQ3JlZGVudGlh
bHMpCit7Cit9CisKK0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6On5BcHBsaWNhdGlvbk1hbmlm
ZXN0TG9hZGVyKCkKK3sKKyAgICBzdG9wTG9hZGluZygpOworfQorCitib29sIEFwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXI6OnN0YXJ0TG9hZGluZygpCit7CisgICAgQVNTRVJUKCFtX3Jlc291cmNl
KTsKKyAgICBhdXRvKiBmcmFtZSA9IG1fZG9jdW1lbnRMb2FkZXIuZnJhbWUoKTsKKyAgICBpZiAo
IWZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVz
b3VyY2VSZXF1ZXN0ID0gbV91cmw7CisgICAgcmVzb3VyY2VSZXF1ZXN0LnNldFByaW9yaXR5KFJl
c291cmNlTG9hZFByaW9yaXR5OjpMb3cpOworI2lmICFFUlJPUl9ESVNBQkxFRAorICAgIC8vIENv
cHkgdGhpcyBiZWNhdXNlIHdlIG1heSB3YW50IHRvIGFjY2VzcyBpdCBhZnRlciB0cmFuc2ZlcnJp
bmcgdGhlCisgICAgLy8gYHJlc291cmNlUmVxdWVzdGAgdG8gdGhlIGByZXF1ZXN0YC4gSWYgd2Ug
ZG9uJ3QsIHRoZW4gdGhlIExPR19FUlJPUgorICAgIC8vIGJlbG93IHdvbid0IHByaW50IGEgVVJM
LgorICAgIGF1dG8gcmVzb3VyY2VSZXF1ZXN0VVJMID0gcmVzb3VyY2VSZXF1ZXN0LnVybCgpOwor
I2VuZGlmCisKKyAgICBhdXRvIGNyZWRlbnRpYWxzID0gbV91c2VDcmVkZW50aWFscyA/IEZldGNo
T3B0aW9uczo6Q3JlZGVudGlhbHM6OkluY2x1ZGUgOiBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxz
OjpPbWl0OworICAgIGF1dG8gb3B0aW9ucyA9IFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2Fs
bGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5
OjpEb05vdFVzZSwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3Jl
ZGVudGlhbHMsIGNyZWRlbnRpYWxzLCBEb1NlY3VyaXR5Q2hlY2ssIEZldGNoT3B0aW9uczo6TW9k
ZTo6Tm9Db3JzLCBEb05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0eVBv
bGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93
RGVmZXJzTG9hZGluZywgQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nKTsKKyAgICBvcHRpb25z
LmRlc3RpbmF0aW9uID0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6TWFuaWZlc3Q7CisgICAg
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBv
cHRpb25zKTsKKworICAgIGF1dG8gY2FjaGVkUmVzb3VyY2UgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0QXBwbGljYXRpb25NYW5pZmVzdChXVEZNb3Zl
KHJlcXVlc3QpKTsKKyAgICBtX3Jlc291cmNlID0gY2FjaGVkUmVzb3VyY2UudmFsdWVfb3IobnVs
bHB0cik7CisgICAgaWYgKG1fcmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVu
dCgqdGhpcyk7CisgICAgZWxzZSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHN0YXJ0
IGxvYWQgZm9yIGFwcGxpY2F0aW9uIG1hbmlmZXN0IGF0IHVybCAlcyAoZXJyb3I6ICVzKSIsIHJl
c291cmNlUmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgY2FjaGVkUmVzb3VyY2Uu
ZXJyb3IoKS5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQXBwbGlj
YXRpb25NYW5pZmVzdExvYWRlcjo6c3RvcExvYWRpbmcoKQoreworICAgIGlmIChtX3Jlc291cmNl
KSB7CisgICAgICAgIG1fcmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgICAgIG1f
cmVzb3VyY2UgPSBudWxscHRyOworICAgIH0KK30KKworc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlv
bk1hbmlmZXN0PiYgQXBwbGljYXRpb25NYW5pZmVzdExvYWRlcjo6cHJvY2Vzc01hbmlmZXN0KCkK
K3sKKyAgICBpZiAoIW1fcHJvY2Vzc2VkTWFuaWZlc3QgJiYgbV9yZXNvdXJjZSkgeworICAgICAg
ICBhdXRvIG1hbmlmZXN0VVJMID0gbV91cmw7CisgICAgICAgIGF1dG8gZG9jdW1lbnRVUkwgPSBt
X2RvY3VtZW50TG9hZGVyLnVybCgpOworICAgICAgICBhdXRvIGZyYW1lID0gbV9kb2N1bWVudExv
YWRlci5mcmFtZSgpOworICAgICAgICBhdXRvIGRvY3VtZW50ID0gZnJhbWUgPyBmcmFtZS0+ZG9j
dW1lbnQoKSA6IG51bGxwdHI7CisgICAgICAgIG1fcHJvY2Vzc2VkTWFuaWZlc3QgPSBtX3Jlc291
cmNlLT5wcm9jZXNzKG1hbmlmZXN0VVJMLCBkb2N1bWVudFVSTCwgZG9jdW1lbnQpOworICAgIH0K
KyAgICByZXR1cm4gbV9wcm9jZXNzZWRNYW5pZmVzdDsKK30KKwordm9pZCBBcHBsaWNhdGlvbk1h
bmlmZXN0TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit7
CisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwor
ICAgIG1fZG9jdW1lbnRMb2FkZXIuZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCgq
dGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShB
UFBMSUNBVElPTl9NQU5JRkVTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9B
cHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGlj
YXRpb25NYW5pZmVzdExvYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi44YjY0MzFhYjQyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorCisj
aW5jbHVkZSAiQXBwbGljYXRpb25NYW5pZmVzdC5oIgorI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291
cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OworY2xhc3MgRG9jdW1lbnRM
b2FkZXI7CisKK2NsYXNzIEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIgZmluYWwgOiBwcml2YXRl
IENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKK1dURl9NQUtFX05PTkNPUFlBQkxFKEFwcGxpY2F0
aW9uTWFuaWZlc3RMb2FkZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdD4pPiBDb21wbGV0aW9uSGFuZGxlclR5cGU7CisKKyAgICBBcHBs
aWNhdGlvbk1hbmlmZXN0TG9hZGVyKERvY3VtZW50TG9hZGVyJiwgY29uc3QgVVJMJiwgYm9vbCk7
CisgICAgdmlydHVhbCB+QXBwbGljYXRpb25NYW5pZmVzdExvYWRlcigpOworCisgICAgYm9vbCBz
dGFydExvYWRpbmcoKTsKKyAgICB2b2lkIHN0b3BMb2FkaW5nKCk7CisKKyAgICBzdGQ6Om9wdGlv
bmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBwcm9jZXNzTWFuaWZlc3QoKTsKKworcHJpdmF0ZToK
KyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7CisKKyAgICBEb2N1bWVu
dExvYWRlciYgbV9kb2N1bWVudExvYWRlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9u
TWFuaWZlc3Q+IG1fcHJvY2Vzc2VkTWFuaWZlc3Q7CisgICAgVVJMIG1fdXJsOworICAgIGJvb2wg
bV91c2VDcmVkZW50aWFsczsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0PiBtX3Jlc291cmNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggNWE0M2NjNDQxM2MuLjI5ZDc5YWZkN2RiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTg0LDYgKzg0LDEy
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorI2luY2x1ZGUg
IkFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaCIKKyNpbmNsdWRlICJIVE1MSGVhZEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MTGlua0VsZW1lbnQuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdF
Ql9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAjaW5jbHVkZSAiQXJjaGl2ZUZhY3RvcnkuaCIK
ICNlbmRpZgpAQCAtMjgxLDYgKzI4NywxMiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9h
ZGluZygpCiAgICAgICAgIG5vdGlmeUZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlm
aWVyLCBudWxscHRyKTsKICAgICBtX2ljb25Mb2FkZXJzLmNsZWFyKCk7CiAgICAgbV9pY29uc1Bl
bmRpbmdMb2FkRGVjaXNpb24uY2xlYXIoKTsKKyAgICAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCisgICAgZm9yIChhdXRvIGNhbGxiYWNrSWRlbnRpZmllciA6IG1fYXBwbGljYXRp
b25NYW5pZmVzdExvYWRlcnMudmFsdWVzKCkpCisgICAgICAgIG5vdGlmeUZpbmlzaGVkTG9hZGlu
Z0FwcGxpY2F0aW9uTWFuaWZlc3QoY2FsbGJhY2tJZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQpOwor
ICAgIG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcnMuY2xlYXIoKTsKKyNlbmRpZgogCiAgICAg
Ly8gQWx3YXlzIGNhbmNlbCBtdWx0aXBhcnQgbG9hZGVycwogICAgIGNhbmNlbEFsbChtX211bHRp
cGFydFN1YnJlc291cmNlTG9hZGVycyk7CkBAIC0xMDQ1LDYgKzEwNTcsNjkgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6Y2xlYXJNYWluUmVzb3VyY2VMb2FkZXIoKQogICAgICAgICBjaGVja0xvYWRD
b21wbGV0ZSgpOwogfQogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQordWludDY0
X3QgRG9jdW1lbnRMb2FkZXI6OmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KCkKK3sKKyAgICBzdGF0
aWMgdWludDY0X3QgbmV4dENhbGxiYWNrSUQgPSAxOworCisgICAgYXV0byogZG9jdW1lbnQgPSB0
aGlzLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgaWYgKCFtX2ZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIGlmIChkb2N1bWVudC0+dXJsKCkuaXNFbXB0eSgpIHx8IGRvY3VtZW50LT51cmwoKS5pc0Js
YW5rVVJMKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgYXV0byBoZWFkID0gZG9jdW1lbnQt
PmhlYWQoKTsKKyAgICBpZiAoIWhlYWQpCisgICAgICAgIHJldHVybiAwOworCisgICAgVVJMIG1h
bmlmZXN0VVJMOworICAgIGJvb2wgdXNlQ3JlZGVudGlhbHMgPSBmYWxzZTsKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIGxpbmsgOiBjaGlsZHJlbk9mVHlwZTxIVE1MTGlua0VsZW1lbnQ+KCpoZWFkKSkg
eworICAgICAgICBpZiAobGluay5pc0FwcGxpY2F0aW9uTWFuaWZlc3QoKSkgeworICAgICAgICAg
ICAgbWFuaWZlc3RVUkwgPSBsaW5rLmhyZWYoKTsKKyAgICAgICAgICAgIHVzZUNyZWRlbnRpYWxz
ID0gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShsaW5rLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oSFRNTE5hbWVzOjpjcm9zc29yaWdpbkF0dHIpLCAidXNlLWNyZWRlbnRpYWxzIik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtYW5pZmVzdFVS
TC5pc0VtcHR5KCkgfHwgIW1hbmlmZXN0VVJMLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBhdXRvIG1hbmlmZXN0TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBcHBsaWNhdGlv
bk1hbmlmZXN0TG9hZGVyPigqdGhpcywgbWFuaWZlc3RVUkwsIHVzZUNyZWRlbnRpYWxzKTsKKyAg
ICBhdXRvKiByYXdNYW5pZmVzdExvYWRlciA9IG1hbmlmZXN0TG9hZGVyLmdldCgpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG5leHRDYWxsYmFja0lEKys7CisgICAgbV9hcHBsaWNhdGlvbk1hbmlm
ZXN0TG9hZGVycy5zZXQoV1RGTW92ZShtYW5pZmVzdExvYWRlciksIGNhbGxiYWNrSUQpOworCisg
ICAgaWYgKCFyYXdNYW5pZmVzdExvYWRlci0+c3RhcnRMb2FkaW5nKCkpIHsKKyAgICAgICAgbV9h
cHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVycy5yZW1vdmUocmF3TWFuaWZlc3RMb2FkZXIpOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gY2FsbGJhY2tJRDsKK30KKwordm9p
ZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdChBcHBs
aWNhdGlvbk1hbmlmZXN0TG9hZGVyJiBsb2FkZXIpCit7CisgICAgLy8gSWYgdGhlIERvY3VtZW50
TG9hZGVyIGhhcyBkZXRhY2hlZCBmcm9tIGl0cyBmcmFtZSwgYWxsIG1hbmlmZXN0IGxvYWRzIHNo
b3VsZCBoYXZlIGFscmVhZHkgYmVlbiBjYW5jZWxlZC4KKyAgICBBU1NFUlQobV9mcmFtZSk7CisK
KyAgICBhdXRvIGNhbGxiYWNrSWRlbnRpZmllciA9IG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRl
cnMuZ2V0KCZsb2FkZXIpOworICAgIG5vdGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFu
aWZlc3QoY2FsbGJhY2tJZGVudGlmaWVyLCBsb2FkZXIucHJvY2Vzc01hbmlmZXN0KCkpOworICAg
IG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcnMucmVtb3ZlKCZsb2FkZXIpOworfQorCit2b2lk
IERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0
KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1h
bmlmZXN0PiBtYW5pZmVzdCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFja0lkZW50aWZp
ZXIpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fZnJhbWUpOworICAgIG1fZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QoY2FsbGJhY2tJZGVu
dGlmaWVyLCBtYW5pZmVzdCk7Cit9CisjZW5kaWYKKwogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0
Q3VzdG9tSGVhZGVyRmllbGRzKFZlY3RvcjxIVFRQSGVhZGVyRmllbGQ+JiYgZmllbGRzKQogewog
ICAgIG1fY3VzdG9tSGVhZGVyRmllbGRzID0gV1RGTW92ZShmaWVsZHMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBlZmI4ZGEyYWViYS4uZjVhM2QzNTZiMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC01MCw2ICs1MCwxMCBAQAog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZiBF
TkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisjaW5jbHVkZSAiQXBwbGljYXRpb25NYW5pZmVz
dC5oIgorI2VuZGlmCisKICNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3BUaW1lci5oPgogI2VuZGlmCkBAIC02MSw2ICs2NSw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OworY2xhc3MgQXBwbGljYXRpb25NYW5p
ZmVzdExvYWRlcjsKIGNsYXNzIEFyY2hpdmU7CiBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7CiBjbGFz
cyBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwpAQCAtMjk3LDYgKzMwMiwxMSBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMoKSBjb25zdCB7IHJldHVy
biBtX2xpbmtJY29uczsgfQogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAg
IFdFQkNPUkVfRVhQT1JUIHVpbnQ2NF90IGxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KCk7CisgICAg
dm9pZCBmaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KEFwcGxpY2F0aW9uTWFuaWZl
c3RMb2FkZXImKTsKKyNlbmRpZgorCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDdXN0b21I
ZWFkZXJGaWVsZHMoVmVjdG9yPEhUVFBIZWFkZXJGaWVsZD4mJiBmaWVsZHMpOwogICAgIGNvbnN0
IFZlY3RvcjxIVFRQSGVhZGVyRmllbGQ+JiBjdXN0b21IZWFkZXJGaWVsZHMoKSB7IHJldHVybiBt
X2N1c3RvbUhlYWRlckZpZWxkczsgfQogICAgIApAQCAtMzcwLDYgKzM4MCwxMCBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNr
SWRlbnRpZmllciwgU2hhcmVkQnVmZmVyKik7CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFO
SUZFU1QpCisgICAgdm9pZCBub3RpZnlGaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0
KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1h
bmlmZXN0Pik7CisjZW5kaWYKKwogICAgIFJlZjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4gbV9jYWNo
ZWRSZXNvdXJjZUxvYWRlcjsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jl
c291cmNlPiBtX21haW5SZXNvdXJjZTsKQEAgLTQ1OSw2ICs0NzMsMTAgQEAgcHJpdmF0ZToKICAg
ICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgdWludDY0X3Q+IG1faWNvbkxv
YWRlcnM7CiAgICAgVmVjdG9yPExpbmtJY29uPiBtX2xpbmtJY29uczsKIAorI2lmIEVOQUJMRShB
UFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxBcHBsaWNh
dGlvbk1hbmlmZXN0TG9hZGVyPiwgdWludDY0X3Q+IG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRl
cnM7CisjZW5kaWYKKwogICAgIFZlY3RvcjxIVFRQSGVhZGVyRmllbGQ+IG1fY3VzdG9tSGVhZGVy
RmllbGRzOwogICAgIAogICAgIGJvb2wgbV9zdWJyZXNvdXJjZUxvYWRlcnNBcmVQYWdlQ2FjaGVB
Y2NlcHRhYmxlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggMDJmOWI0MjhlOTkuLjE1MDE2MThkNTY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzYsNiArMzYsMTAgQEAKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgRU5B
QkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorI2luY2x1ZGUgIkFwcGxpY2F0aW9uTWFuaWZlc3Qu
aCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogI2luY2x1ZGUgIkNv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oIgogI2VuZGlmCkBAIC0zNTYsNiArMzYwLDEwIEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25z
dCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+PiYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90LCBTaGFyZWRCdWZm
ZXIqKSB7IH0KKworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICB2aXJ0dWFs
IHZvaWQgZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCwgY29uc3Qg
c3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiYpIHsgfQorI2VuZGlmCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKaW5k
ZXggODk1ZjFjMzBiYWYuLmJhYTE2MTE3NDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2Fk
ZXIuY3BwCkBAIC0xNzEsNiArMTcxLDExIEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGlua1By
ZWxvYWRSZXNvdXJjZUNsaWVudD4gY3JlYXRlTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVuCiAjZW5k
aWYKICAgICAgICAgLy8gTm9uZSBvZiB0aGVzZSB2YWx1ZXMgaXMgY3VycmVudGx5IHN1cHBvcnRl
ZCBhcyBhbiBgYXNgIHZhbHVlLgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNpZiBF
TkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6QXBw
bGljYXRpb25NYW5pZmVzdDoKKyAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgcHJlbG9hZGluZyB0
aGUgbWFuaWZlc3QuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCiAgICAg
fQogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAtMTk4LDYgKzIwMyw5IEBAIGJvb2wgTGlua0xv
YWRlcjo6aXNTdXBwb3J0ZWRUeXBlKENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSwg
Y29uc3QgU3RyaW5nCiAgICAgICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRl
ZFRleHRUcmFja01JTUVUeXBlKG1pbWVUeXBlKTsKICNlbmRpZgogICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OlJhd1Jlc291cmNlOgorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpBcHBsaWNhdGlvbk1hbmlmZXN0OgorI2VuZGlmCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwCmluZGV4IDEz
YjJhZTEwMGY0Li4wM2Q2MWViOGI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZEluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRJbmZvLmNwcApAQCAtNzAsNiArNzAsMTAgQEAgUmVzb3VyY2VUeXBlIHRvUmVzb3VyY2VU
eXBlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUpCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6
TGlua1N1YnJlc291cmNlOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgor
I2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNl
OjpBcHBsaWNhdGlvbk1hbmlmZXN0OgorICAgICAgICByZXR1cm4gUmVzb3VyY2VUeXBlOjpSYXc7
CisjZW5kaWYKICAgICB9OwogICAgIHJldHVybiBSZXNvdXJjZVR5cGU6OlJhdzsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGMxYzhhNTNkMGJi
Li5mNWVkZTIzMDYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC00NzEsNiArNDcxLDExIEBAIHN0YXRpYyB2b2lkIGxvZ1Jlc291cmNlTG9hZGVk
KEZyYW1lKiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSkKICAgICBjYXNlIENhY2hl
ZFJlc291cmNlOjpTVkdEb2N1bWVudFJlc291cmNlOgogICAgICAgICByZXNvdXJjZVR5cGUgPSBE
aWFnbm9zdGljTG9nZ2luZ0tleXM6OnN2Z0RvY3VtZW50S2V5KCk7CiAgICAgICAgIGJyZWFrOwor
I2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNl
OjpBcHBsaWNhdGlvbk1hbmlmZXN0OgorICAgICAgICByZXNvdXJjZVR5cGUgPSBEaWFnbm9zdGlj
TG9nZ2luZ0tleXM6OmFwcGxpY2F0aW9uTWFuaWZlc3RLZXkoKTsKKyAgICAgICAgYnJlYWs7Cisj
ZW5kaWYKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKICAgICBjYXNlIENhY2hlZFJlc291cmNl
OjpMaW5rUHJlZmV0Y2g6CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1N1YnJlc291cmNl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxp
Y2F0aW9uTWFuaWZlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li40MTEzMDdlNDVjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtMCwwICsxLDczIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuaCIKKworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKworI2luY2x1
ZGUgIkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKKyNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCisgICAgOiBDYWNoZWRSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBBcHBsaWNhdGlvbk1h
bmlmZXN0LCBzZXNzaW9uSUQpCisgICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6
Y3JlYXRlKCJhcHBsaWNhdGlvbi9tYW5pZmVzdCtqc29uIiwgVVRGOEVuY29kaW5nKCkpKQorewor
fQorCit2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhKQoreworICAgIG1fZGF0YSA9IGRhdGE7CisgICAgc2V0RW5jb2RlZFNpemUo
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKQorICAgICAgICBtX3RleHQg
PSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhKTsKK30KKwordm9pZCBDYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmIGNocykKK3sK
KyAgICBtX2RlY29kZXItPnNldEVuY29kaW5nKGNocywgVGV4dFJlc291cmNlRGVjb2Rlcjo6RW5j
b2RpbmdGcm9tSFRUUEhlYWRlcik7Cit9CisKK1N0cmluZyBDYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0OjplbmNvZGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2Rpbmco
KS5uYW1lKCk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdDo6cHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25z
dCBVUkwmIGRvY3VtZW50VVJMLCBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkKK3sKKyAgICBpZiAoIW1fdGV4dCkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgcmV0
dXJuIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlKCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCAqbV90ZXh0LCBtYW5pZmVzdFVSTCwgZG9jdW1lbnRVUkwpOworICAgIHJldHVybiBBcHBs
aWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZSgqbV90ZXh0LCBtYW5pZmVzdFVSTCwgZG9jdW1l
bnRVUkwpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
QVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uNmIxYTc1M2FhNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC0wLDAg
KzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMSUNB
VElPTl9NQU5JRkVTVCkKKworI2luY2x1ZGUgIkFwcGxpY2F0aW9uTWFuaWZlc3QuaCIKKyNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBU
ZXh0UmVzb3VyY2VEZWNvZGVyOworCitjbGFzcyBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0IGZp
bmFsIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKK3B1YmxpYzoKKyAgICBDYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBQQUw6OlNlc3Npb25JRCk7CisK
KyAgICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNv
bnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIFJlZlB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0PiA9IG51bGxwdHIpOworCitwcml2YXRlOgorICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKKyAgICBjb25zdCBUZXh0UmVzb3Vy
Y2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9kZWNvZGVyLnB0cigpOyB9CisgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKKyAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKKworICAgIFJl
ZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CisgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IG1fdGV4dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19DQUNIRURfUkVTT1VSQ0UoQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdCwgQ2Fj
aGVkUmVzb3VyY2U6OkFwcGxpY2F0aW9uTWFuaWZlc3QpCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQ
TElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcAppbmRleCBkOGRiZGYzMmYwYy4uYmVjYjk4YThhN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMTAyLDYgKzEw
MiwxMCBAQCBSZXNvdXJjZUxvYWRQcmlvcml0eSBDYWNoZWRSZXNvdXJjZTo6ZGVmYXVsdFByaW9y
aXR5Rm9yUmVzb3VyY2VUeXBlKFR5cGUgdHlwZSkKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpU
ZXh0VHJhY2tSZXNvdXJjZToKICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFByaW9yaXR5OjpM
b3c7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6QXBwbGljYXRpb25NYW5pZmVzdDoKKyAgICAgICAgcmV0dXJuIFJlc291
cmNlTG9hZFByaW9yaXR5OjpMb3c7CisjZW5kaWYKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIFJlc291cmNlTG9hZFByaW9yaXR5OjpMb3c7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGM3ZWFlMTJmNDU5Li4z
NWY3OGNlNTFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKQEAgLTg0LDYgKzg0LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
ICAgICAgICAgLCBUZXh0VHJhY2tSZXNvdXJjZQogI2VuZGlmCisjaWYgRU5BQkxFKEFQUExJQ0FU
SU9OX01BTklGRVNUKQorICAgICAgICAsIEFwcGxpY2F0aW9uTWFuaWZlc3QKKyNlbmRpZgogICAg
IH07CiAKICAgICBlbnVtIFN0YXR1cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCA5ZDkwNmI4ZGM3ZS4uYWMxZjg5
YTM2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcApAQCAtNzcsNiArNzcsMTAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUo
QVBQTElDQVRJT05fTUFOSUZFU1QpCisjaW5jbHVkZSAiQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAjaW5jbHVkZSAiQ2FjaGVk
VGV4dFRyYWNrLmgiCiAjZW5kaWYKQEAgLTEzNCw2ICsxMzgsMTAgQEAgc3RhdGljIENhY2hlZFJl
c291cmNlKiBjcmVhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRS
ZXNvdXJjZVIKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUZXh0VHJhY2tSZXNvdXJjZToKICAg
ICAgICAgcmV0dXJuIG5ldyBDYWNoZWRUZXh0VHJhY2soV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lv
bklEKTsKICNlbmRpZgorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpBcHBsaWNhdGlvbk1hbmlmZXN0OgorICAgICAgICByZXR1cm4gbmV3
IENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklEKTsK
KyNlbmRpZgogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTMyMiw2ICszMzAsMTMgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnIKICAgICBy
ZXR1cm4gY2FzdENhY2hlZFJlc291cmNlVG88Q2FjaGVkUmF3UmVzb3VyY2U+KHJlcXVlc3RSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZTo6TWFpblJlc291cmNlLCBXVEZNb3ZlKHJlcXVlc3QpKSk7CiB9
CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCitSZXNvdXJjZUVycm9yT3I8Q2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdD4+IENhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0QXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0KQoreworICAgIHJldHVybiBjYXN0Q2FjaGVkUmVzb3VyY2VUbzxDYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0PihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkFwcGxp
Y2F0aW9uTWFuaWZlc3QsIFdURk1vdmUocmVxdWVzdCkpKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUo
QVBQTElDQVRJT05fTUFOSUZFU1QpCisKIHN0YXRpYyBNaXhlZENvbnRlbnRDaGVja2VyOjpDb250
ZW50VHlwZSBjb250ZW50VHlwZUZyb21SZXNvdXJjZVR5cGUoQ2FjaGVkUmVzb3VyY2U6OlR5cGUg
dHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTM2Miw2ICszNzcsMTAgQEAgc3RhdGlj
IE1peGVkQ29udGVudENoZWNrZXI6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlRnJvbVJlc291cmNl
VHlwZShDYWNoZWRSZXNvdXIKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUZXh0VHJhY2tSZXNv
dXJjZToKICAgICAgICAgcmV0dXJuIE1peGVkQ29udGVudENoZWNrZXI6OkNvbnRlbnRUeXBlOjpB
Y3RpdmU7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6QXBwbGljYXRpb25NYW5pZmVzdDoKKyAgICAgICAgcmV0dXJuIE1p
eGVkQ29udGVudENoZWNrZXI6OkNvbnRlbnRUeXBlOjpBY3RpdmU7CisjZW5kaWYKICAgICBkZWZh
dWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIE1peGVk
Q29udGVudENoZWNrZXI6OkNvbnRlbnRUeXBlOjpBY3RpdmU7CkBAIC00MTgsNiArNDM3LDkgQEAg
Ym9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2hlY2tJbnNlY3VyZUNvbnRlbnQoQ2FjaGVkUmVz
b3VyY2U6OlR5cGUgdHlwZSwgY29uc3QKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rU3Vi
cmVzb3VyY2U6CiAgICAgICAgIC8vIFByZWZldGNoIGNhbm5vdCBhZmZlY3QgdGhlIGN1cnJlbnQg
ZG9jdW1lbnQuCiAjZW5kaWYKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6QXBwbGljYXRpb25NYW5pZmVzdDoKKyNlbmRpZgogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC00NjYsNiArNDg4LDEyIEBAIGJv
b2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmFsbG93ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeShD
YWNoZWRSZXNvdXJjZTo6VHlwZSB0CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6QmVhY29uOgog
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlOgogICAgICAgICByZXR1cm4gdHJ1
ZTsKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6QXBwbGljYXRpb25NYW5pZmVzdDoKKyAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250
ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dNYW5pZmVzdEZyb21Tb3VyY2UodXJsLCByZWRpcmVj
dFJlc3BvbnNlUmVjZWl2ZWQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBi
cmVhazsKKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmgKaW5kZXggZDMyODhjYWJjMTMuLjhiNTEzYzZkMGE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaApAQCAtNDEs
NiArNDEsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJ
T05fTUFOSUZFU1QpCitjbGFzcyBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OworI2VuZGlmCiBj
bGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0OwogY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnQ7CiBjbGFz
cyBDYWNoZWRGb250OwpAQCAtOTYsNiArOTksOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRU
ZXh0VHJhY2s+PiByZXF1ZXN0VGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKICNl
bmRpZgorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBSZXNvdXJjZUVycm9y
T3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdD4+IHJlcXVl
c3RBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKKyNlbmRpZgog
CiAgICAgLy8gTG9ncyBhbiBhY2Nlc3MgZGVuaWVkIG1lc3NhZ2UgdG8gdGhlIGNvbnNvbGUgZm9y
IHRoZSBzcGVjaWZpZWQgVVJMLgogICAgIHZvaWQgcHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKGNv
bnN0IFVSTCYgdXJsKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xv
Z2dpbmdLZXlzLmNwcAppbmRleCBlZjEwMjAxZTMzNi4uNmY5MWQ0NjQ3MWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAKQEAgLTQxMyw2ICs0MTMs
MTMgQEAgU3RyaW5nIERpYWdub3N0aWNMb2dnaW5nS2V5czo6YXBwbGljYXRpb25DYWNoZUtleSgp
CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb25DYWNoZSIpOwogfQogCisjaWYg
RU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorU3RyaW5nIERpYWdub3N0aWNMb2dnaW5nS2V5
czo6YXBwbGljYXRpb25NYW5pZmVzdEtleSgpCit7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
YXBwbGljYXRpb25NYW5pZmVzdCIpOworfQorI2VuZGlmCisKIFN0cmluZyBEaWFnbm9zdGljTG9n
Z2luZ0tleXM6OmF1ZGlvS2V5KCkKIHsKICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJhdWRpbyIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmgKaW5kZXggYTJi
ZDM2NTlkYjAuLjY2NzE5ZjczYjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Rp
YWdub3N0aWNMb2dnaW5nS2V5cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzLmgKQEAgLTM0LDYgKzM0LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBTdHJpbmcgYWN0aXZlSW5Gb3JlZ3JvdW5kVGFiS2V5KCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFN0cmluZyBhY3RpdmVJbkJhY2tncm91bmRUYWJPbmx5S2V5KCk7CiAg
ICAgc3RhdGljIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlS2V5KCk7CisjaWYgRU5BQkxFKEFQUExJ
Q0FUSU9OX01BTklGRVNUKQorICAgIHN0YXRpYyBTdHJpbmcgYXBwbGljYXRpb25NYW5pZmVzdEtl
eSgpOworI2VuZGlmCiAgICAgc3RhdGljIFN0cmluZyBhdWRpb0tleSgpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBTdHJpbmcgYmFja05hdmlnYXRpb25EZWx0YUtleSgpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgY2FjaGVDb250cm9sTm9TdG9yZUtleSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXgg
YTQ2NDg5MDc0MmMuLjdjNTU1MTFjNzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTU0OSw2ICs1NDksMTMgQEAgYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Rm9udEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmws
IFJlZGlyZWN0UmVzcG9uc2UKICAgICByZXR1cm4gYWxsb3dSZXNvdXJjZUZyb21Tb3VyY2UodXJs
LCByZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzOjpmb250U3JjLCAmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlv
bGF0ZWREaXJlY3RpdmVGb3JGb250KTsKIH0KIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5J
RkVTVCkKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd01hbmlmZXN0RnJvbVNvdXJj
ZShjb25zdCBVUkwmIHVybCwgUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkIHJlZGlyZWN0UmVzcG9u
c2VSZWNlaXZlZCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWxsb3dSZXNvdXJjZUZyb21Tb3VyY2Uo
dXJsLCByZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzOjptYW5pZmVzdFNyYywgJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yTWFuaWZlc3QpOworfQorI2VuZGlmIC8vIEVOQUJMRShB
UFBMSUNBVElPTl9NQU5JRkVTVCkKKwogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93
TWVkaWFGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQg
cmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkKSBjb25zdAogewogICAgIHJldHVybiBhbGxvd1Jlc291
cmNlRnJvbVNvdXJjZSh1cmwsIHJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCwgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6Om1lZGlhU3JjLCAmQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JNZWRpYSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCmluZGV4IGE2ZGEwZDZjZTYx
Li5mYmQ4ZDM5ZmVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmgKQEAgLTEwMyw2ICsxMDMsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbGxv
d0ltYWdlRnJvbVNvdXJjZShjb25zdCBVUkwmLCBSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQgPSBS
ZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6Ok5vKSBjb25zdDsKICAgICBib29sIGFsbG93U3R5bGVG
cm9tU291cmNlKGNvbnN0IFVSTCYsIFJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCA9IFJlZGlyZWN0
UmVzcG9uc2VSZWNlaXZlZDo6Tm8pIGNvbnN0OwogICAgIGJvb2wgYWxsb3dGb250RnJvbVNvdXJj
ZShjb25zdCBVUkwmLCBSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQgPSBSZWRpcmVjdFJlc3BvbnNl
UmVjZWl2ZWQ6Ok5vKSBjb25zdDsKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisg
ICAgYm9vbCBhbGxvd01hbmlmZXN0RnJvbVNvdXJjZShjb25zdCBVUkwmLCBSZWRpcmVjdFJlc3Bv
bnNlUmVjZWl2ZWQgPSBSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6Ok5vKSBjb25zdDsKKyNlbmRp
ZgogICAgIGJvb2wgYWxsb3dNZWRpYUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVkaXJlY3RSZXNw
b25zZVJlY2VpdmVkID0gUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpObykgY29uc3Q7CiAKICAg
ICBib29sIGFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVkaXJlY3RSZXNw
b25zZVJlY2VpdmVkID0gUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpObykgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3QuY3BwCmluZGV4IDJjNDZjNjc5ODVlLi44ZWQzYWM5MTJlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAKQEAgLTI0Myw2ICsyNDMsMTYgQEAgY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0Ojp2aW9sYXQKICAgICByZXR1cm4gb3BlcmF0aXZlRGlyZWN0aXZlOwogfQogCisjaWYg
RU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERp
cmVjdGl2ZUZvck1hbmlmZXN0KGNvbnN0IFVSTCYgdXJsLCBib29sIGRpZFJlY2VpdmVSZWRpcmVj
dFJlc3BvbnNlKSBjb25zdAoreworICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3RE
aXJlY3RpdmUqIG9wZXJhdGl2ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2ZURpcmVjdGl2ZSht
X21hbmlmZXN0U3JjLmdldCgpKTsKKyAgICBpZiAoY2hlY2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0
aXZlLCB1cmwsIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIG9wZXJhdGl2ZURpcmVjdGl2ZTsKK30KKyNlbmRpZiAvLyBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisKIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJl
Y3RpdmVGb3JNZWRpYShjb25zdCBVUkwmIHVybCwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNw
b25zZSkgY29uc3QKIHsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0
aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9tZWRp
YVNyYy5nZXQoKSk7CkBAIC00NzUsNiArNDg1LDEwIEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdDo6YWRkRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QK
ICAgICAgICAgc2V0Q1NQRGlyZWN0aXZlPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3RE
aXJlY3RpdmU+KG5hbWUsIHZhbHVlLCBtX2ltZ1NyYyk7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6
Zm9udFNyYykpCiAgICAgICAgIHNldENTUERpcmVjdGl2ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0RGlyZWN0aXZlPihuYW1lLCB2YWx1ZSwgbV9mb250U3JjKTsKKyNpZiBFTkFCTEUo
QVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6bWFuaWZlc3RTcmMp
KQorICAgICAgICBzZXRDU1BEaXJlY3RpdmU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dERpcmVjdGl2ZT4obmFtZSwgdmFsdWUsIG1fbWFuaWZlc3RTcmMpOworI2VuZGlmCiAgICAgZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lczo6bWVkaWFTcmMpKQogICAgICAgICBzZXRDU1BEaXJlY3RpdmU8Q29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZT4obmFtZSwgdmFsdWUsIG1fbWVkaWFT
cmMpOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmNvbm5lY3RTcmMpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdC5oCmluZGV4IDcwYTI0MzA1NTM0Li45MTI2MWZhMTc3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3QuaApAQCAtNjMsNiArNjMsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZUZvckZyYW1lKGNvbnN0IFVSTCYs
IGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpIGNvbnN0OwogICAgIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JGcmFtZUFuY2Vz
dG9yKGNvbnN0IEZyYW1lJikgY29uc3Q7CiAgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZUZvckltYWdlKGNvbnN0IFVSTCYsIGJvb2wgZGlk
UmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpIGNvbnN0OworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9N
QU5JRkVTVCkKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xh
dGVkRGlyZWN0aXZlRm9yTWFuaWZlc3QoY29uc3QgVVJMJiwgYm9vbCBkaWRSZWNlaXZlUmVkaXJl
Y3RSZXNwb25zZSkgY29uc3Q7CisjZW5kaWYKICAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yTWVkaWEoY29uc3QgVVJMJiwgYm9vbCBk
aWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSkgY29uc3Q7CiAgICAgY29uc3QgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZUZvck9iamVjdFNvdXJjZShjb25z
dCBVUkwmLCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlLCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlOjpTaG91bGRBbGxvd0VtcHR5VVJMSWZTb3VyY2VMaXN0
SXNOb3ROb25lKSBjb25zdDsKICAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yUGx1Z2luVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSkgY29uc3Q7CkBAIC0xMjEsNiArMTI0LDkgQEAgcHJp
dmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dERpcmVjdGl2ZT4gbV9mcmFtZUFuY2VzdG9yczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZT4gbV9mcmFtZVNyYzsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZT4gbV9p
bWdTcmM7CisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIHN0ZDo6dW5pcXVl
X3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX21hbmlmZXN0
U3JjOworI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZUxpc3REaXJlY3RpdmU+IG1fbWVkaWFTcmM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmU+IG1fb2JqZWN0U3JjOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPiBt
X3NjcmlwdFNyYzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcAppbmRleCAyNjFmNzQxZjZh
Ni4uMDc2YTUwNGZiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHAKQEAgLTM4LDYg
KzM4LDkgQEAgY29uc3QgY2hhciogY29uc3QgZm9udFNyYyA9ICJmb250LXNyYyI7CiBjb25zdCBj
aGFyKiBjb25zdCBmb3JtQWN0aW9uID0gImZvcm0tYWN0aW9uIjsKIGNvbnN0IGNoYXIqIGNvbnN0
IGZyYW1lQW5jZXN0b3JzID0gImZyYW1lLWFuY2VzdG9ycyI7CiBjb25zdCBjaGFyKiBjb25zdCBm
cmFtZVNyYyA9ICJmcmFtZS1zcmMiOworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkK
K2NvbnN0IGNoYXIqIGNvbnN0IG1hbmlmZXN0U3JjID0gIm1hbmlmZXN0LXNyYyI7CisjZW5kaWYK
IGNvbnN0IGNoYXIqIGNvbnN0IGltZ1NyYyA9ICJpbWctc3JjIjsKIGNvbnN0IGNoYXIqIGNvbnN0
IG1lZGlhU3JjID0gIm1lZGlhLXNyYyI7CiBjb25zdCBjaGFyKiBjb25zdCBvYmplY3RTcmMgPSAi
b2JqZWN0LXNyYyI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaAppbmRleCBmMTNmMDRhY2E0OC4u
YWVhY2Q0NmI0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaApAQCAtMzgsNiArMzgsOSBA
QCBleHRlcm4gY29uc3QgY2hhciogY29uc3QgZm9ybUFjdGlvbjsKIGV4dGVybiBjb25zdCBjaGFy
KiBjb25zdCBmcmFtZUFuY2VzdG9yczsKIGV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBmcmFtZVNy
YzsKIGV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBpbWdTcmM7CisjaWYgRU5BQkxFKEFQUExJQ0FU
SU9OX01BTklGRVNUKQorZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IG1hbmlmZXN0U3JjOworI2Vu
ZGlmCiBleHRlcm4gY29uc3QgY2hhciogY29uc3QgbWVkaWFTcmM7CiBleHRlcm4gY29uc3QgY2hh
ciogY29uc3Qgb2JqZWN0U3JjOwogZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHBsdWdpblR5cGVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwCmluZGV4IDMzZjcwZTlhNTc2Li4xN2EyZjQzZjEwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cApAQCAtMTIxLDYgKzEyMSw5IEBAIHN0YXRpYyBTZWNvbmRzIG1heGltdW1CdWZmZXJpbmdUaW1l
KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTVkdG
b250UmVzb3VyY2U6CiAjZW5kaWYKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVzb3Vy
Y2U6CisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6CisjZW5kaWYKICAgICAgICAgcmV0dXJuIFNlY29u
ZHM6OmluZmluaXR5KCk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToK
ICAgICAgICAgcmV0dXJuIDUwMF9tczsKLS0gCjIuMTMuNSAoQXBwbGUgR2l0LTk0KQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>