<?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>136611</bug_id>
          
          <creation_ts>2014-09-07 11:19:20 -0700</creation_ts>
          <short_desc>Pass certificate info as part of ResourceResponse</short_desc>
          <delta_ts>2014-09-30 14:12:11 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>gustavo</cc>
    
    <cc>mitz</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1033737</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-07 11:19:20 -0700</bug_when>
    <thetext>The way we currently pull certificate info out of ResourceResponse for serialization and then put it back is confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033739</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-07 11:24:22 -0700</bug_when>
    <thetext>The reason was that certificate info is relatively huge, and most of the time unneeded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033744</commentid>
    <comment_count>2</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-07 11:34:45 -0700</bug_when>
    <thetext>Passing it via a side channel doesn&apos;t make it any smaller. 

I&apos;m fixing that too by only initialising it for the main resource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033746</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-07 11:51:17 -0700</bug_when>
    <thetext>&gt; Passing it via a side channel doesn&apos;t make it any smaller. 

Who said that it did? What helped was that we didn&apos;t pass it over IPC most of the time we were sending an NSURLResponse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033747</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-07 12:02:28 -0700</bug_when>
    <thetext>What other high-volume messages with ResourceResponse are there besides DidReceiveResponseWithCertificateInfo?

In any case the certificate is not used for anything else than the main resource so bulk of those are unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033748</commentid>
    <comment_count>5</comment_count>
      <attachid>237756</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-07 12:05:18 -0700</bug_when>
    <thetext>Created attachment 237756
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033785</commentid>
    <comment_count>6</comment_count>
      <attachid>237765</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-08 01:01:32 -0700</bug_when>
    <thetext>Created attachment 237765
patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033797</commentid>
    <comment_count>7</comment_count>
      <attachid>237768</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-08 02:20:49 -0700</bug_when>
    <thetext>Created attachment 237768
patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033803</commentid>
    <comment_count>8</comment_count>
      <attachid>237770</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-08 02:32:26 -0700</bug_when>
    <thetext>Created attachment 237770
patch 4

apparently ews doesn&apos;t like file move+modify</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033805</commentid>
    <comment_count>9</comment_count>
      <attachid>237771</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-08 02:39:11 -0700</bug_when>
    <thetext>Created attachment 237771
patch 5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033810</commentid>
    <comment_count>10</comment_count>
      <attachid>237774</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-08 02:44:10 -0700</bug_when>
    <thetext>Created attachment 237774
patch 6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033869</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-08 09:25:09 -0700</bug_when>
    <thetext>&gt; What other high-volume messages with ResourceResponse are there besides DidReceiveResponseWithCertificateInfo?

WillSendRequest is one, WebPageProxy&apos;s DecidePolicyForResponseSync is another. The way to find this out is to search for &quot;ResourceResponse&quot; in WebKit2&apos;s *.messages.in files.

I suspect that the proposed patch may be a performance regression on SSL pages due to sending certificate data to UI process, which we didn&apos;t do before. I don&apos;t know how to verify this though.

There may be a lot more in client injected bundles as they send API wrapped response objects, but I couldn&apos;t find any. Either I was searching incorrectly, or there aren&apos;t any today in Safari.

CC&apos;ing Mitz, the Master of Certificates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033874</commentid>
    <comment_count>12</comment_count>
      <attachid>237774</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-09-08 09:55:05 -0700</bug_when>
    <thetext>Comment on attachment 237774
patch 6

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

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:9202
&gt; +		5F2DBBE8178E336900141486 /* CertificateInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CertificateInfo.h; path = ../mac/CertificateInfo.h; sourceTree = &quot;&lt;group&gt;&quot;; };

This seems strange. Can we move this in the mac group in the project too, so it doesn’t have a path with &quot;..&quot; in it?

&gt; Source/WebCore/platform/network/ResourceResponseBase.cpp:49
&gt; +    , m_didInitializeCertificateInfo(false)

Shouldn’t this be true? Maybe we should use a dirty bit instead of a “did initialize” bit?

&gt; Source/WebCore/platform/network/ResourceResponseBase.cpp:76
&gt; +    , m_didInitializeCertificateInfo(true)

If false is right for the empty constructor, not sure why true is right here.

&gt; Source/WebCore/platform/network/ResourceResponseBase.cpp:220
&gt; +CertificateInfo ResourceResponseBase::certificateInfo() const
&gt; +{
&gt; +    ASSERT(m_didInitializeCertificateInfo);
&gt; +    return m_certificateInfo;
&gt; +}

Seems like this should be inlined in the header. I wouldn’t put it in the class definition, but I would put it at the bottom of the header. Hate to have function call overhead for a simple getter like this.

&gt; Source/WebCore/platform/network/ResourceResponseBase.h:30
&gt; +#include &quot;CertificateInfo.h&quot;

Windows build error:

     1&gt;C:\cygwin\home\buildbot\WebKit\Source\WebCore\platform\network\ResourceResponseBase.h(30): fatal error C1083: Cannot open include file: &apos;CertificateInfo.h&apos;: No such file or directory (..\html\canvas\WebGLRenderingContext.cpp)

&gt; Source/WebCore/platform/network/ResourceResponseBase.h:96
&gt; +    void initializeCertificateInfo() const;

I’m not entirely sure that initializeCertificateInfo is the right name for this.

This function does something different from “initializing”. It effectively sets a discretionary “should include certificate info” flag that allows someone to get the certificate info from this object; implements a policy about which responses should include certificate info. Very tricky concept, I think, because you could always call initializeCertificateInfo at any time, except if you serialize and deserialize an object, and then it would be too late for that to work. The right name could make this easier to understand.

Maybe addCertificateInfo?

&gt; Source/WebCore/platform/network/ResourceResponseBase.h:146
&gt;      // The ResourceResponse subclass may &quot;shadow&quot; this method to lazily initialize platform specific fields

Should say “these functions” instead of “this method” since there are now three functions below.

&gt; Source/WebCore/platform/network/ResourceResponseBase.h:149
&gt; +    String platformSuggestedFileName() const { return String(); }

I don’t understand exactly why this was added. I don’t see any code that seems to require it.

&gt; Source/WebCore/platform/network/ResourceResponseBase.h:151
&gt;      // The ResourceResponse subclass may &quot;shadow&quot; this method to compare platform specific fields

This separate comment for one function isn’t great when the three functions above share only a single comment. I suggest either a comment for every function, or a single comment for all four functions.

&gt; Source/WebCore/platform/network/ResourceResponseBase.h:162
&gt; +    mutable bool m_didInitializeCertificateInfo;

I think this should just be m_includesCertificateInfo. Or maybe WTF::Optional would be the best way to handle this.

&gt; Source/WebCore/platform/network/mac/CertificateInfo.h:52
&gt; +typedef int32_t CertificateInfo;

What is this about? A workaround to let use use the CertificateInfo type on other platforms? Is the integer actually used?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033950</commentid>
    <comment_count>13</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-08 14:26:13 -0700</bug_when>
    <thetext>&gt; Seems like this should be inlined in the header. I wouldn’t put it in the class definition, but I would put it at the bottom of the header. Hate to have function call overhead for a simple getter like this.

I think we should only manually inline things that are meaningful in terms of performance (this isn&apos;t) or reduce number of code lines (single line accessors). Everything else goes to cpp.

One practical reason is that routine inlining often results in unnecessary includes from the header.

The compiler should really be smart enough to inline what it wants whether it is in cpp or h (==build WebKit with LTO).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034090</commentid>
    <comment_count>14</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-09 01:20:02 -0700</bug_when>
    <thetext>https://trac.webkit.org/r173423</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034092</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-09-09 01:51:01 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; https://trac.webkit.org/r173423

It broke the Apple Windows build:

    1&gt;WebCore.lib(ResourceResponseBase.obj) : error LNK2001: unresolved external symbol &quot;private: class WebCore::CertificateInfo __thiscall WebCore::ResourceResponse::platformCertificateInfo(void)const &quot; (?platformCertificateInfo@ResourceResponse@WebCore@@ABE?AVCertificateInfo@2@XZ)
     1&gt;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\bin32\WebKit.dll : fatal error LNK1120: 1 unresolved externals
     1&gt;Done Building Project &quot;C:\cygwin\home\buildbot\slave\win-release\build\Source\WebKit\WebKit.vcxproj\WebKit\WebKit.vcxproj&quot; (Build target(s)) -- FAILED.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034094</commentid>
    <comment_count>16</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-09 02:11:21 -0700</bug_when>
    <thetext>Looking</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034096</commentid>
    <comment_count>17</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2014-09-09 02:18:18 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; https://trac.webkit.org/r173423

It has caused a regression on GTK (and probably EFL too since it also uses soup). Reported here: https://bugs.webkit.org/show_bug.cgi?id=136669</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034099</commentid>
    <comment_count>18</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-09 02:37:28 -0700</bug_when>
    <thetext>Windows build fix https://trac.webkit.org/r173425</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038338</commentid>
    <comment_count>19</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-09-30 14:12:11 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Windows build fix https://trac.webkit.org/r173425

This caused bug 137262.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237756</attachid>
            <date>2014-09-07 12:05:18 -0700</date>
            <delta_ts>2014-09-08 01:01:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>certificate-info-3.patch</filename>
            <type>text/plain</type>
            <size>27083</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzM2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE0LTA5LTA3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBQYXNzIGNlcnRpZmljYXRlIGlu
Zm8gYXMgcGFydCBvZiBSZXNvdXJjZVJlc3BvbnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY2MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY3VycmVudCB3YXkgb2YgcGFzc2luZyBjZXJ0aWZp
Y2F0ZSBpbmZvIHNlcGFyYXRlbHkgZnJvbSBSZXNvdXJjZVJlc3BvbnNlIGFuZCB0aGVuIGphbW1p
bmcgaXQgYmFjaworICAgICAgICBpcyBjb21wbGV4IGFuZCBjb25mdXNpbmcuIFRoaXMgcGF0Y2gg
bWFrZXMgaXQgYSB0cnVlIHBhcnQgb2YgdGhlIFJlc291cmNlUmVzcG9uc2UuCisKKyAgICAgICAg
V2l0aCB0aGlzIHBhdGNoIHdlIGFsc28gb25seSBjcmVhdGUgYW5kIHBhc3MgdGhlIGNlcnRpZmlj
YXRlIGluZm8gb2JqZWN0IGZvciB0aGUgbWFpbiByZXNvdXJjZS4gSXQgaXMKKyAgICAgICAgYSBi
aWcgYW5kIGNvbXBsZXggb2JqZWN0IGFuZCB3ZSBuZXZlciBsb29rIGludG8gaXQgZm9yIGFueSBv
dGhlciByZXNvdXJjZSB0eXBlLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UpOgorCisg
ICAgICAgICAgICBNYXJrIGluaXRpYWxpemVkIGZvciBzeW50aGV0aWMgcmVzcG9uc2VzLCB1bml0
aWFsaXplZCBmb3IgdGhvc2UgYmFja2VkIGJ5IGEgcGxhdGZvcm0gcmVxdWVzdC4KKworICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmluaXRpYWxpemVDZXJ0aWZpY2F0ZUlu
Zm8pOgorCisgICAgICAgICAgICBDYWxsaW5nIHRoaXMgcHVsbHMgdGhlIGNlcnRpZmljYXRlIGlu
Zm8gb3V0IGZyb20gdGhlIHBsYXRmb3JtIHR5cGUuCisgICAgICAgICAgICBJdCBzaG91ZCBvbmx5
IGJlIHVzZWQgZm9yIHJlc291cmNlcyB0aGF0IG5lZWQgaXQuCisKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2VCYXNlOjpwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUpOgorCisgICAgICAgICAg
ICBFbmNvZGUgYW5kIGRlY29kZSBjZXJ0aWZpY2F0ZSBpbmZvIGlmIGl0IGlzIHByZXNlbnQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm8uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm9NYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnNldENlcnRpZmljYXRlQ2hhaW4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6Y2VydGlmaWNhdGVDaGFpbik6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZp
Y2F0ZUluZm8pOgorCiAyMDE0LTA5LTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgogCiAgICAgICAgIFtGdWxsc2NyZWVuXSBBZGQgYSBzaXRlLXNwZWNpZmljIGhhY2sgdG8gd29y
ayBhcm91bmQgImZsYXNoIG9uIGV4aXQiIGJlaGF2aW9yIG9mIFlvdVR1YmUuY29tLgpJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE3MzM1NikKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC00OTEsOCArNDkxLDcgQEAgX19aTjdXZWJD
b3JlMTVCYWNrRm9yd2FyZExpc3Q4YmFja0l0ZW1FdgogX19aTjdXZWJDb3JlMTVCYWNrRm9yd2Fy
ZExpc3Q4Y2FwYWNpdHlFdgogX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q5Z29Gb3J3YXJk
RXYKIF9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0QzFFUE5TXzRQYWdlRQotX19aTjdXZWJD
b3JlMTVDZXJ0aWZpY2F0ZUluZm9DMUVQSzlfX0NGQXJyYXkKLV9fWk43V2ViQ29yZTE1Q2VydGlm
aWNhdGVJbmZvQzFFUktOU18xNlJlc291cmNlUmVzcG9uc2VFCitfX1pON1dlYkNvcmUxNUNlcnRp
ZmljYXRlSW5mb0MxRU4zV1RGOVJldGFpblB0cklQSzlfX0NGQXJyYXlFRQogX19aTjdXZWJDb3Jl
MTVDZXJ0aWZpY2F0ZUluZm9DMUV2CiBfX1pON1dlYkNvcmUxNURPTVdyYXBwZXJXb3JsZDEzY2xl
YXJXcmFwcGVyc0V2CiBfX1pON1dlYkNvcmUxNURPTVdyYXBwZXJXb3JsZEQxRXYKQEAgLTcxNiw3
ICs3MTUsNiBAQCBfX1pON1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05TXzE1CiBfX1pO
N1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RU5TXzEz
RnJhbWVMb2FkVHlwZUViCiBfX1pON1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05TXzE1
UmVzb3VyY2VSZXF1ZXN0RU5TXzE0TmF2aWdhdGlvblR5cGVFCiBfX1pON1dlYkNvcmUxNk5hdmln
YXRpb25BY3Rpb25DMUV2Ci1fX1pON1dlYkNvcmUxNlJlc291cmNlUmVzcG9uc2UxOXNldENlcnRp
ZmljYXRlQ2hhaW5FUEs5X19DRkFycmF5CiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIx
MGluaXRTY3JpcHRFUk5TXzE1RE9NV3JhcHBlcldvcmxkRQogX19aTjdXZWJDb3JlMTZTY3JpcHRD
b250cm9sbGVyMTFjcmVhdGVXb3JsZEV2CiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIx
M2V4ZWN1dGVTY3JpcHRFUktOM1dURjZTdHJpbmdFYgpAQCAtMTc4MSw3ICsxNzc5LDYgQEAgX19a
Tks3V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDIwaXNEYXRlVAogX19aTks3V2ViQ29yZTE2SFRN
TElucHV0RWxlbWVudDZpc1RleHRFdgogX19aTks3V2ViQ29yZTE2SWNvbkRhdGFiYXNlQmFzZTEy
ZGF0YWJhc2VQYXRoRXYKIF9fWk5LN1dlYkNvcmUxNlJlc291cmNlUmVzcG9uc2UxM25zVVJMUmVz
cG9uc2VFdgotX19aTks3V2ViQ29yZTE2UmVzb3VyY2VSZXNwb25zZTE2Y2VydGlmaWNhdGVDaGFp
bkV2CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTdpc0NvbnRlbnRFZGl0YWJsZUV2
CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTdpc0luUGFzc3dvcmRGaWVsZEV2CiBf
X1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTd0b05vcm1hbGl6ZWRSYW5nZUV2CkBAIC0x
ODMwLDExICsxODI3LDEzIEBAIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTJp
c0EKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTJsYXN0TW9kaWZpZWRFdgog
X19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxNGh0dHBTdGF0dXNDb2RlRXYKIF9f
Wk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTRodHRwU3RhdHVzVGV4dEV2CitfX1pO
SzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTE1Y2VydGlmaWNhdGVJbmZvRXYKIF9fWk5L
N1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTVodHRwSGVhZGVyRmllbGRFTlNfMTRIVFRQ
SGVhZGVyTmFtZUUKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTZodHRwSGVh
ZGVyRmllbGRzRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTZ0ZXh0RW5j
b2RpbmdOYW1lRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTdzdWdnZXN0
ZWRGaWxlbmFtZUV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTIxZXhwZWN0
ZWRDb250ZW50TGVuZ3RoRXYKK19fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjVp
bml0aWFsaXplQ2VydGlmaWNhdGVJbmZvRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9u
c2VCYXNlM3VybEV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTZpc0hUVFBF
dgogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U4bGF6eUluaXRFTlMwXzlJbml0
TGV2ZWxFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkocmV2aXNpb24gMTczMzU1KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgaW5saW5lIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IFJlc291cmNlUgogCiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2Uo
KSAgCiAgICAgOiBtX2V4cGVjdGVkQ29udGVudExlbmd0aCgwKQorICAgICwgbV9kaWRJbml0aWFs
aXplQ2VydGlmaWNhdGVJbmZvKGZhbHNlKQogICAgICwgbV9odHRwU3RhdHVzQ29kZSgwKQogICAg
ICwgbV9jb25uZWN0aW9uSUQoMCkKICAgICAsIG1fY2FjaGVDb250cm9sTWF4QWdlKDApCkBAIC03
Miw2ICs3Myw3IEBAIFJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmEKICAg
ICAsIG1fbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aChl
eHBlY3RlZExlbmd0aCkKICAgICAsIG1fdGV4dEVuY29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdOYW1l
KQorICAgICwgbV9kaWRJbml0aWFsaXplQ2VydGlmaWNhdGVJbmZvKHRydWUpCiAgICAgLCBtX2h0
dHBTdGF0dXNDb2RlKDApCiAgICAgLCBtX2Nvbm5lY3Rpb25JRCgwKQogICAgICwgbV9jYWNoZUNv
bnRyb2xNYXhBZ2UoMCkKQEAgLTIwNSw3ICsyMDcsMTggQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6c2V0VGV4dEVuY29kaQogICAgIC8vIEZJWE1FOiBTaG91bGQgaW52YWxpZGF0ZSBvciB1
cGRhdGUgcGxhdGZvcm0gcmVzcG9uc2UgaWYgcHJlc2VudC4KIH0KIAotLy8gRklYTUUgc2hvdWxk
IGNvbXB1dGUgdGhpcyBvbiB0aGUgZmx5Cit2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjppbml0
aWFsaXplQ2VydGlmaWNhdGVJbmZvKCkgY29uc3QKK3sKKyAgICBtX2NlcnRpZmljYXRlSW5mbyA9
IHN0YXRpY19jYXN0PGNvbnN0IFJlc291cmNlUmVzcG9uc2UqPih0aGlzKS0+cGxhdGZvcm1DZXJ0
aWZpY2F0ZUluZm8oKTsKKyAgICBtX2RpZEluaXRpYWxpemVDZXJ0aWZpY2F0ZUluZm8gPSB0cnVl
OworfQorCitDZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNlcnRpZmljYXRl
SW5mbygpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fZGlkSW5pdGlhbGl6ZUNlcnRpZmljYXRlSW5m
byk7CisgICAgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOworfQorCiBTdHJpbmcgUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OnN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpLT5wbGF0Zm9ybVN1Z2dlc3Rl
ZEZpbGVuYW1lKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCShyZXZpc2lvbiAxNzMzNTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgUmVzb3VyY2VSZXNwb25zZUJhc2Vf
aAogI2RlZmluZSBSZXNvdXJjZVJlc3BvbnNlQmFzZV9oCiAKKyNpbmNsdWRlICJDZXJ0aWZpY2F0
ZUluZm8uaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkVGltaW5nLmgiCkBAIC05MSw2ICs5Miw5IEBAIHB1YmxpYzoK
IAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3Q7CisKKyAgICB2b2lk
IGluaXRpYWxpemVDZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKKyAgICBDZXJ0aWZpY2F0ZUluZm8g
Y2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CiAgICAgCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIHJl
dHVybiBwYXJzZWQgdmFsdWVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlIGhlYWRlcnMu
CiAgICAgLy8gTmFOIG1lYW5zIHRoYXQgdGhlIGhlYWRlciB3YXMgbm90IHByZXNlbnQgb3IgaGFk
IGludmFsaWQgdmFsdWUuCkBAIC0xNDEsNyArMTQ1LDggQEAgcHJvdGVjdGVkOgogCiAgICAgLy8g
VGhlIFJlc291cmNlUmVzcG9uc2Ugc3ViY2xhc3MgbWF5ICJzaGFkb3ciIHRoaXMgbWV0aG9kIHRv
IGxhemlseSBpbml0aWFsaXplIHBsYXRmb3JtIHNwZWNpZmljIGZpZWxkcwogICAgIHZvaWQgcGxh
dGZvcm1MYXp5SW5pdChJbml0TGV2ZWwpIHsgfQotICAgIFN0cmluZyBwbGF0Zm9ybVN1Z2dlc3Rl
ZEZpbGVOYW1lKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBDZXJ0aWZpY2F0ZUluZm8gcGxh
dGZvcm1DZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsg
fTsKKyAgICBTdHJpbmcgcGxhdGZvcm1TdWdnZXN0ZWRGaWxlTmFtZSgpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZygpOyB9CiAKICAgICAvLyBUaGUgUmVzb3VyY2VSZXNwb25zZSBzdWJjbGFzcyBtYXkg
InNoYWRvdyIgdGhpcyBtZXRob2QgdG8gY29tcGFyZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWVsZHMK
ICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0cnVlOyB9CkBAIC0xNTQsNiArMTU5
LDkgQEAgcHJvdGVjdGVkOgogICAgIEhUVFBIZWFkZXJNYXAgbV9odHRwSGVhZGVyRmllbGRzOwog
ICAgIG11dGFibGUgUmVzb3VyY2VMb2FkVGltaW5nIG1fcmVzb3VyY2VMb2FkVGltaW5nOwogCisg
ICAgbXV0YWJsZSBib29sIG1fZGlkSW5pdGlhbGl6ZUNlcnRpZmljYXRlSW5mbzsKKyAgICBtdXRh
YmxlIENlcnRpZmljYXRlSW5mbyBtX2NlcnRpZmljYXRlSW5mbzsKKwogICAgIGludCBtX2h0dHBT
dGF0dXNDb2RlOwogICAgIHVuc2lnbmVkIG1fY29ubmVjdGlvbklEOwogCkBAIC0yMDYsNiArMjE0
LDkgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKEVuY29kZQogICAgIGVuY29k
ZXIgPDwgbV9yZXNvdXJjZUxvYWRUaW1pbmc7CiAgICAgZW5jb2RlciA8PCBtX2h0dHBTdGF0dXND
b2RlOwogICAgIGVuY29kZXIgPDwgbV9jb25uZWN0aW9uSUQ7CisgICAgZW5jb2RlciA8PCBtX2Rp
ZEluaXRpYWxpemVDZXJ0aWZpY2F0ZUluZm87CisgICAgaWYgKG1fZGlkSW5pdGlhbGl6ZUNlcnRp
ZmljYXRlSW5mbykKKyAgICAgICAgZW5jb2RlciA8PCBtX2NlcnRpZmljYXRlSW5mbzsKIH0KIAog
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTI0MCw2ICsyNTEsMTIgQEAgYm9vbCBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6ZGVjb2RlKERlY29kZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2Nvbm5lY3Rpb25JRCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fZGlkSW5pdGlh
bGl6ZUNlcnRpZmljYXRlSW5mbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAocmVz
cG9uc2UubV9kaWRJbml0aWFsaXplQ2VydGlmaWNhdGVJbmZvKSB7CisgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzcG9uc2UubV9jZXJ0aWZpY2F0ZUluZm8pKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KICAgICByZXNwb25zZS5tX2lzTnVsbCA9IGZhbHNlOwogCiAgICAg
cmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMTczMzU1KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTkyLDExICs5Miw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBOU1VS
TFJlc3BvbnNlICpuc1VSTFJlc3BvbnNlKCkgY29uc3Q7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2Vy
dGlmaWNhdGVDaGFpbihDRkFycmF5UmVmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8
Q0ZBcnJheVJlZj4gY2VydGlmaWNhdGVDaGFpbigpIGNvbnN0OwotI2VuZGlmCi0KICAgICBib29s
IHBsYXRmb3JtUmVzcG9uc2VJc1VwVG9EYXRlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVJl
c3BvbnNlSXNVcFRvRGF0ZTsgfQogCiBwcml2YXRlOgpAQCAtMTA0LDYgKzk5LDggQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwpOwogICAgIFN0cmluZyBw
bGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3Q7CisgICAgQ2VydGlmaWNhdGVJbmZvIHBs
YXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CisKICAgICBQYXNzT3duUHRyPENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShQYXNzT3duUHRyPENy
b3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIGRhdGE7
IH0KICAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3Vy
Y2VSZXNwb25zZURhdGE+KSB7IH0KICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTEyMSwxMCArMTE4
LDYgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBtdXRhYmxlIFJldGFpblB0
cjxOU1VSTFJlc3BvbnNlPiBtX25zUmVzcG9uc2U7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGTkVUV09SSykKLSAgICAvLyBDZXJ0aWZpY2F0ZSBjaGFpbiBpcyBub3JtYWxs
eSBwYXJ0IG9mIE5TL0NGVVJMUmVzcG9uc2UsIGJ1dCB0aGVyZSBpcyBubyB3YXkgdG8gcmUtYWRk
IGl0IHRvIGEgZGVzZXJpYWxpemVkIHJlc3BvbnNlIGFmdGVyIElQQy4KLSAgICBSZXRhaW5QdHI8
Q0ZBcnJheVJlZj4gbV9leHRlcm5hbENlcnRpZmljYXRlQ2hhaW47Ci0jZW5kaWYKIH07CiAKIHN0
cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhIDogcHVibGljIENyb3NzVGhyZWFk
UmVzb3VyY2VSZXNwb25zZURhdGFCYXNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL0NlcnRpZmljYXRlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NlcnRpZmljYXRlSW5mby5oCShyZXZpc2lvbiAxNzMz
NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUlu
Zm8uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2lmbmRlZiBDZXJ0aWZpY2F0
ZUluZm9faAogI2RlZmluZSBDZXJ0aWZpY2F0ZUluZm9faAogCi0jaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0zNCw4ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IENlcnRpZmljYXRlSW5mbyB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgQ2VydGlmaWNh
dGVJbmZvKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ2VydGlmaWNhdGVJbmZvKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDZXJ0
aWZpY2F0ZUluZm8oQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBDZXJ0aWZpY2F0ZUluZm8oUmV0YWluUHRyPENGQXJyYXlSZWY+IGNlcnRp
ZmljYXRlQ2hhaW4pOwogCiAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUNoYWluKENGQXJyYXlSZWYg
Y2VydGlmaWNhdGVDaGFpbikgeyBtX2NlcnRpZmljYXRlQ2hhaW4gPSBjZXJ0aWZpY2F0ZUNoYWlu
OyB9CiAgICAgQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9j
ZXJ0aWZpY2F0ZUNoYWluLmdldCgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm9NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ2VydGlmaWNhdGVJbmZvTWFjLm1tCShyZXZpc2lv
biAxNzMzNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZp
Y2F0ZUluZm9NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDEyICszMiw3IEBAIENlcnRpZmlj
YXRlSW5mbzo6Q2VydGlmaWNhdGVJbmZvKCkKIHsKIH0KIAotQ2VydGlmaWNhdGVJbmZvOjpDZXJ0
aWZpY2F0ZUluZm8oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi0gICAgOiBtX2Nl
cnRpZmljYXRlQ2hhaW4ocmVzcG9uc2UuY2VydGlmaWNhdGVDaGFpbigpKQotewotfQotCi1DZXJ0
aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlSW5mbyhDRkFycmF5UmVmIGNlcnRpZmljYXRlQ2hhaW4p
CitDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlSW5mbyhSZXRhaW5QdHI8Q0ZBcnJheVJlZj4g
Y2VydGlmaWNhdGVDaGFpbikKICAgICA6IG1fY2VydGlmaWNhdGVDaGFpbihjZXJ0aWZpY2F0ZUNo
YWluKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VSZXNwb25zZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCShyZXZpc2lvbiAxNzMzNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDEyIEBAIHZvaWQgUmVzb3VyY2VSZXNw
b25zZTo6cGxhdGZvcm1MYXp5SW5pdCgKICAgICBtX2luaXRMZXZlbCA9IGluaXRMZXZlbDsKIH0K
IAorQ2VydGlmaWNhdGVJbmZvIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJ
bmZvKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9uc1Jlc3BvbnNlKTsKKyAgICByZXR1cm4gQ2Vy
dGlmaWNhdGVJbmZvKGFkb3B0Q0Yod2tDb3B5TlNVUkxSZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4o
bV9uc1Jlc3BvbnNlLmdldCgpKSkpOworfQorCiBTdHJpbmcgUmVzb3VyY2VSZXNwb25zZTo6cGxh
dGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFtuc1VSTFJlc3Bv
bnNlKCkgc3VnZ2VzdGVkRmlsZW5hbWVdOwpAQCAtMTg0LDIzICsxOTAsNSBAQCBib29sIFJlc291
cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShjCiAKICNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JL
KQogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCi0KLXZvaWQgUmVzb3Vy
Y2VSZXNwb25zZTo6c2V0Q2VydGlmaWNhdGVDaGFpbihDRkFycmF5UmVmIGNlcnRpZmljYXRlQ2hh
aW4pCi17Ci0gICAgQVNTRVJUKCFtX25zUmVzcG9uc2UgfHwgIXdrQ29weU5TVVJMUmVzcG9uc2VD
ZXJ0aWZpY2F0ZUNoYWluKG1fbnNSZXNwb25zZS5nZXQoKSkpOwotICAgIG1fZXh0ZXJuYWxDZXJ0
aWZpY2F0ZUNoYWluID0gY2VydGlmaWNhdGVDaGFpbjsKLX0KLQotUmV0YWluUHRyPENGQXJyYXlS
ZWY+IFJlc291cmNlUmVzcG9uc2U6OmNlcnRpZmljYXRlQ2hhaW4oKSBjb25zdAotewotICAgIGlm
IChtX2V4dGVybmFsQ2VydGlmaWNhdGVDaGFpbikKLSAgICAgICAgcmV0dXJuIG1fZXh0ZXJuYWxD
ZXJ0aWZpY2F0ZUNoYWluOwotCi0gICAgcmV0dXJuIGFkb3B0Q0Yod2tDb3B5TlNVUkxSZXNwb25z
ZUNlcnRpZmljYXRlQ2hhaW4obnNVUkxSZXNwb25zZSgpKSk7Ci19Ci0KLSNlbmRpZiAvLyBQTEFU
Rk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNw
b25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlLmgJKHJldmlzaW9uIDE3MzM1NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg5LDYgKzg5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJl
c3BvbnNlKCkgeyB9CiAgICAgU3RyaW5nIHBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25z
dDsKKyAgICBDZXJ0aWZpY2F0ZUluZm8gcGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsK
IAogICAgIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZG9QbGF0
Zm9ybUNvcHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4g
ZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQogICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KFBh
c3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4pIHsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXNwb25zZVNvdXAuY3BwCShyZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDEsNiArMTAxLDExIEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6dXBkYXRl
RnJvbVNvdXBNZXMKICAgICBzZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoc291cF9tZXNzYWdlX2hl
YWRlcnNfZ2V0X2NvbnRlbnRfbGVuZ3RoKGhlYWRlcnMpKTsKIH0KIAorQ2VydGlmaWNhdGVJbmZv
IFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKG1fY2VydGlmaWNhdGUsIG1fdGxzRXJyb3JzKTsKK30K
KwogU3RyaW5nIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUoKSBj
b25zdAogewogICAgIHJldHVybiBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKGh0
dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudERpc3Bvc2l0aW9uKSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxNzMzNjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAxNC0wOS0wNyAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUGFzcyBjZXJ0aWZpY2F0ZSBpbmZvIGFz
IHBhcnQgb2YgUmVzb3VyY2VSZXNwb25zZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NjExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZUFzeW5jKToKKworICAgICAgICAgICAgSW5pdGlhbGl6ZSB0aGUgY2VydGlmaWNhdGUg
aW5mbyBvbmx5IGlmIHJlcXVlc3RlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlV2l0aENlcnRpZmljYXRlSW5mbyk6IERlbGV0ZWQuCisKKyAg
ICAgICAgICAgIFJlbmFtZSBkaWRSZWNlaXZlUmVzcG9uc2VXaXRoQ2VydGlmaWNhdGVJbmZvIC0+
IGRpZFJlY2VpdmVSZXNwb25zZSBhcyBpdCBpcyBub3cgcGFydCBvZiB0aGUgcmVzcG9uc2UuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisKKyAgICAgICAgICAgIFJlcXVlc3QgY2VydGlmaWNhdGUgaW5mbyBmb3IgdGhlIG1haW4g
cmVzb3VyY2Ugb25seS4KKworICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y2VydGlmaWNhdGVJbmZvKToK
KwogMjAxNC0wOS0wNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFhQ
Q1B0ciBzaG91bGQgYmUgY29udmVydGVkIGludG8gYW4gYWxsIHB1cnBvc2Ugc21hcnQgcG9pbnRl
ciBmb3Igb3Nfb2JqZWN0cwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxNzMzNTUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5Nyw3IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
TmV0d29ya1Jlc291cmNlTG8KICAgICAsIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdChwYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QpCiAgICAgLCBtX2lzTG9hZGluZ01haW5SZXNvdXJjZShwYXJhbWV0ZXJzLmlzTWFpblJl
c291cmNlKQogICAgICwgbV9kZWZlcnNMb2FkaW5nKHBhcmFtZXRlcnMuZGVmZXJzTG9hZGluZykK
KyAgICAsIG1fbmVlZHNDZXJ0aWZpY2F0ZUluZm8ocGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRl
SW5mbykKICAgICAsIG1fc2FuZGJveEV4dGVuc2lvbnNBcmVDb25zdW1lZChmYWxzZSkKICAgICAs
IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQogewpAQCAtMjE2LDEwICsyMTcsMTMgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZQogewogICAgIEFTU0VSVF9VTlVTRUQo
aGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOwogCisgICAgaWYgKG1fbmVlZHNDZXJ0aWZpY2F0
ZUluZm8pCisgICAgICAgIHJlc3BvbnNlLmluaXRpYWxpemVDZXJ0aWZpY2F0ZUluZm8oKTsKKwog
ICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCiAgICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0YS0+
bV9yZXNwb25zZSA9IHJlc3BvbnNlOwogICAgIGVsc2UKLSAgICAgICAgc2VuZEFib3J0aW5nT25G
YWlsdXJlKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlV2l0
aENlcnRpZmljYXRlSW5mbyhyZXNwb25zZSwgQ2VydGlmaWNhdGVJbmZvKHJlc3BvbnNlKSwgaXNM
b2FkaW5nTWFpblJlc291cmNlKCkpKTsKKyAgICAgICAgc2VuZEFib3J0aW5nT25GYWlsdXJlKE1l
c3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBp
c0xvYWRpbmdNYWluUmVzb3VyY2UoKSkpOwogCiAgICAgLy8gbV9oYW5kbGUgd2lsbCBiZSBudWxs
IGlmIHRoZSByZXF1ZXN0IGdvdCBhYm9ydGVkIGFib3ZlLgogICAgIGlmICghbV9oYW5kbGUpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTczMzU1KQorKysgU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw2
ICsxOTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0OwogICAgIGJvb2wgbV9pc0xvYWRpbmdNYWluUmVzb3VyY2U7CiAgICAg
Ym9vbCBtX2RlZmVyc0xvYWRpbmc7CisgICAgYm9vbCBtX25lZWRzQ2VydGlmaWNhdGVJbmZvOwog
CiAgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gbV9yZXF1ZXN0Qm9keVNhbmRi
b3hFeHRlbnNpb25zOwogICAgIFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IG1fcmVz
b3VyY2VTYW5kYm94RXh0ZW5zaW9uczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3
b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5j
cHAJKHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6TmV0d29ya1JlCiAgICAgLCBp
c01haW5SZXNvdXJjZShmYWxzZSkKICAgICAsIGRlZmVyc0xvYWRpbmcoZmFsc2UpCiAgICAgLCBz
aG91bGRCdWZmZXJSZXNvdXJjZShmYWxzZSkKKyAgICAsIG5lZWRzQ2VydGlmaWNhdGVJbmZvKGZh
bHNlKQogewogfQogCkBAIC05Niw2ICs5Nyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnM6OmVuY28KICAgICBlbmNvZGVyIDw8IGlzTWFpblJlc291cmNlOwogICAgIGVuY29k
ZXIgPDwgZGVmZXJzTG9hZGluZzsKICAgICBlbmNvZGVyIDw8IHNob3VsZEJ1ZmZlclJlc291cmNl
OworICAgIGVuY29kZXIgPDwgbmVlZHNDZXJ0aWZpY2F0ZUluZm87CiB9CiAKIGJvb2wgTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVj
b2RlciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIHJlc3VsdCkKQEAgLTE0OCw2ICsx
NTAsOCBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaG91bGRCdWZm
ZXJSZXNvdXJjZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5uZWVkc0NlcnRpZmljYXRlSW5mbykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdv
cmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCShy
ZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzTWFpblJlc291cmNlOwogICAgIGJvb2wgZGVmZXJzTG9hZGlu
ZzsKICAgICBib29sIHNob3VsZEJ1ZmZlclJlc291cmNlOworICAgIGJvb2wgbmVlZHNDZXJ0aWZp
Y2F0ZUluZm87CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuY3BwCShyZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQyLDYgKzE0Miw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hl
ZHVsZUwKICAgICBsb2FkUGFyYW1ldGVycy5pc01haW5SZXNvdXJjZSA9IHJlc291cmNlICYmIHJl
c291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZTsKICAgICBsb2Fk
UGFyYW1ldGVycy5kZWZlcnNMb2FkaW5nID0gcmVzb3VyY2VMb2FkZXItPmRlZmVyc0xvYWRpbmco
KTsKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRCdWZmZXJSZXNvdXJjZSA9IHJlc291cmNlICYm
IChyZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0IHx8IHJl
c291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdCk7CisgICAgLy8gQ2VydGlm
aWNhdGUgaW5mbyBpcyBhIGJpZyBvYmplY3QgdG8gc2VyaWFsaXplIGFuZCB3ZSBvbmx5IHVzZSBp
dCBmb3IgdGhlIG1haW4gcmVzb3VyY2UuCisgICAgbG9hZFBhcmFtZXRlcnMubmVlZHNDZXJ0aWZp
Y2F0ZUluZm8gPSBsb2FkUGFyYW1ldGVycy5pc01haW5SZXNvdXJjZTsKIAogICAgIEFTU0VSVCgo
bG9hZFBhcmFtZXRlcnMud2ViUGFnZUlEICYmIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQpIHx8
IGxvYWRQYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gRG9Ob3RBc2tDbGllbnRG
b3JBbnlDcmVkZW50aWFscyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTczMzU1
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDMzICsxMDIsMjMgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkU2VuZERhdGEodWludAogICAgIG1fY29yZUxvYWRlci0+ZGlkU2VuZERhdGEo
Ynl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VXaXRoQ2VydGlmaWNhdGVJbmZvKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5m
bywgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKK3ZvaWQgV2Vi
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkK
IHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlV2l0aENlcnRpZmljYXRlSW5mbyBmb3IgJyVzJy4gU3RhdHVzICVkLiIs
IG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSk7CiAKICAgICBSZWY8V2ViUmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRo
aXMpOwogCi0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZUNvcHkocmVzcG9uc2UpOwotCi0g
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBDZXJ0aWZpY2F0ZUluZm8gdG8gYXZvaWQgdGhl
IHBsYXRmb3JtIGlmZGVmcy4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjQ3MjQuCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgcmVzcG9uc2VDb3B5LnNldENl
cnRpZmljYXRlQ2hhaW4oY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlQ2hhaW4oKSk7Ci0jZWxp
ZiBVU0UoU09VUCkKLSAgICByZXNwb25zZUNvcHkuc2V0U291cE1lc3NhZ2VDZXJ0aWZpY2F0ZShj
ZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGUoKSk7Ci0gICAgcmVzcG9uc2VDb3B5LnNldFNvdXBN
ZXNzYWdlVExTRXJyb3JzKGNlcnRpZmljYXRlSW5mby50bHNFcnJvcnMoKSk7Ci0jZW5kaWYKLQot
ICAgIGlmIChtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVI
b3N0KCktPm1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UobV9jb3JlTG9hZGVyLmdldCgpLCBy
ZXNwb25zZUNvcHkpKQorICAgIGlmIChtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFw
cGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UobV9jb3Jl
TG9hZGVyLmdldCgpLCByZXNwb25zZSkpCiAgICAgICAgIHJldHVybjsKIAogI2lmIFVTRShRVUlD
S19MT09LKQogICAgIC8vIFJlZnJhaW4gZnJvbSBjYWxsaW5nIGRpZFJlY2VpdmVSZXNwb25zZSBp
ZiBRdWlja0xvb2sgd2lsbCBjb252ZXJ0IHRoaXMgcmVzcG9uc2UsIHNpbmNlIHRoZSBNSU1FIHR5
cGUgb2YgdGhlCiAgICAgLy8gY29udmVydGVkIHJlc291cmNlIGlzbid0IHlldCBrbm93bi4gV2Vi
UmVzb3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSB3aWxsIGxhdGVyIGNhbGwgZGlkUmVjZWl2
ZVJlc3BvbnNlIHVwb24KICAgICAvLyByZWNlaXZpbmcgdGhlIGNvbnZlcnRlZCBkYXRhLgotICAg
IG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UXVpY2tMb29rSGFuZGxlKFF1aWNr
TG9va0hhbmRsZTo6Y3JlYXRlKHJlc291cmNlTG9hZGVyKCksIHJlc3BvbnNlQ29weS5uc1VSTFJl
c3BvbnNlKCkpKTsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFF1aWNr
TG9va0hhbmRsZShRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShyZXNvdXJjZUxvYWRlcigpLCByZXNw
b25zZS5uc1VSTFJlc3BvbnNlKCkpKTsKICAgICBpZiAoIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRM
b2FkZXIoKS0+cXVpY2tMb29rSGFuZGxlKCkpCiAjZW5kaWYKLSAgICAgICAgbV9jb3JlTG9hZGVy
LT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VDb3B5KTsKKyAgICAgICAgbV9jb3JlTG9hZGVy
LT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwogCiAgICAgLy8gSWYgbV9jb3JlTG9hZGVy
IGJlY29tZXMgbnVsbCBhcyBhIHJlc3VsdCBvZiB0aGUgZGlkUmVjZWl2ZVJlc3BvbnNlIGNhbGxi
YWNrLCB3ZSBjYW4ndCB1c2UgdGhlIHNlbmQgZnVuY3Rpb24oKS4gCiAgICAgaWYgKCFtX2NvcmVM
b2FkZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTczMzU1KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3Qg
Ynl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlV2l0aENlcnRpZmljYXRlSW5mbyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBuZWVkc0NvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wgbmVlZHNDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9p
ZCBkaWRGaW5pc2hSZXNvdXJjZUxvYWQoZG91YmxlIGZpbmlzaFRpbWUpOwogICAgIHZvaWQgZGlk
RmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VM
b2FkZXIgTGVnYWN5UmVjZQogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFdlJ2xsIG5l
ZWQgbXVjaCBtb3JlIGdyYW51bGFyaXR5IGZvciByZXNwb25zZSBtZXNzYWdlcy4KICAgICBXaWxs
U2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSkKICAgICBEaWRTZW5kRGF0YSh1aW50NjRf
dCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCkKLSAgICBEaWRSZWNlaXZl
UmVzcG9uc2VXaXRoQ2VydGlmaWNhdGVJbmZvKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2UsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCisgICAgRGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiAgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkRmluaXNo
UmVzb3VyY2VMb2FkKGRvdWJsZSBmaW5pc2hUaW1lKQogICAgIERpZEZhaWxSZXNvdXJjZUxvYWQo
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkQ28KIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgogCi0gICAgd2ViUGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+
ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIu
cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBz
dGF0aWNfY2FzdDx1aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRU
eXBlKCkpLCBDZXJ0aWZpY2F0ZUluZm8oZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKSksIEluamVj
dGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIHdlYlBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tbWl0TG9hZEZvckZyYW1lKG1f
ZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3VtZW50
TG9hZGVyLnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9mcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92
aWRlciwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIo
KS5sb2FkVHlwZSgpKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8o
KSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiAg
ICAgd2ViUGFnZS0+ZGlkQ29tbWl0TG9hZChtX2ZyYW1lKTsKIH0KIApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCShyZXZpc2lvbiAxNzMz
NTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MTcsNyArNDE3LDcgQEAgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
IFdlYkZyYW1lOjpjZXJ0aQogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVy
biBDZXJ0aWZpY2F0ZUluZm8oKTsKIAotICAgIHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oZG9jdW1l
bnRMb2FkZXItPnJlc3BvbnNlKCkpOworICAgIHJldHVybiBkb2N1bWVudExvYWRlci0+cmVzcG9u
c2UoKS5jZXJ0aWZpY2F0ZUluZm8oKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjppbm5lclRleHQo
KSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237765</attachid>
            <date>2014-09-08 01:01:32 -0700</date>
            <delta_ts>2014-09-08 02:20:49 -0700</delta_ts>
            <desc>patch 2</desc>
            <filename>certificate-info-5.patch</filename>
            <type>text/plain</type>
            <size>29575</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzM2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE0LTA5LTA3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBQYXNzIGNlcnRpZmljYXRlIGlu
Zm8gYXMgcGFydCBvZiBSZXNvdXJjZVJlc3BvbnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY2MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY3VycmVudCB3YXkgb2YgcGFzc2luZyBjZXJ0aWZp
Y2F0ZSBpbmZvIHNlcGFyYXRlbHkgZnJvbSBSZXNvdXJjZVJlc3BvbnNlIGFuZCB0aGVuIGphbW1p
bmcgaXQgYmFjaworICAgICAgICBpcyBjb21wbGV4IGFuZCBjb25mdXNpbmcuIFRoaXMgcGF0Y2gg
bWFrZXMgaXQgYSB0cnVlIHBhcnQgb2YgdGhlIFJlc291cmNlUmVzcG9uc2UuCisKKyAgICAgICAg
V2l0aCB0aGlzIHBhdGNoIHdlIGFsc28gb25seSBjcmVhdGUgYW5kIHBhc3MgdGhlIGNlcnRpZmlj
YXRlIGluZm8gb2JqZWN0IGZvciB0aGUgbWFpbiByZXNvdXJjZS4gSXQgaXMKKyAgICAgICAgYSBi
aWcgYW5kIGNvbXBsZXggb2JqZWN0IGFuZCB3ZSBuZXZlciBsb29rIGludG8gaXQgZm9yIGFueSBv
dGhlciByZXNvdXJjZSB0eXBlLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UpOgorCisg
ICAgICAgICAgICBNYXJrIGluaXRpYWxpemVkIGZvciBzeW50aGV0aWMgcmVzcG9uc2VzLCB1bml0
aWFsaXplZCBmb3IgdGhvc2UgYmFja2VkIGJ5IGEgcGxhdGZvcm0gcmVxdWVzdC4KKworICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmluaXRpYWxpemVDZXJ0aWZpY2F0ZUlu
Zm8pOgorCisgICAgICAgICAgICBDYWxsaW5nIHRoaXMgcHVsbHMgdGhlIGNlcnRpZmljYXRlIGlu
Zm8gb3V0IGZyb20gdGhlIHBsYXRmb3JtIHR5cGUuCisgICAgICAgICAgICBJdCBzaG91ZCBvbmx5
IGJlIHVzZWQgZm9yIHJlc291cmNlcyB0aGF0IG5lZWQgaXQuCisKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2VCYXNlOjpwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUpOgorCisgICAgICAgICAg
ICBFbmNvZGUgYW5kIGRlY29kZSBjZXJ0aWZpY2F0ZSBpbmZvIGlmIGl0IGlzIHByZXNlbnQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm8uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm9NYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnNldENlcnRpZmljYXRlQ2hhaW4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6Y2VydGlmaWNhdGVDaGFpbik6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZp
Y2F0ZUluZm8pOgorCiAyMDE0LTA5LTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgogCiAgICAgICAgIFtGdWxsc2NyZWVuXSBBZGQgYSBzaXRlLXNwZWNpZmljIGhhY2sgdG8gd29y
ayBhcm91bmQgImZsYXNoIG9uIGV4aXQiIGJlaGF2aW9yIG9mIFlvdVR1YmUuY29tLgpJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE3MzM1NikKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC00OTEsOCArNDkxLDcgQEAgX19aTjdXZWJD
b3JlMTVCYWNrRm9yd2FyZExpc3Q4YmFja0l0ZW1FdgogX19aTjdXZWJDb3JlMTVCYWNrRm9yd2Fy
ZExpc3Q4Y2FwYWNpdHlFdgogX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q5Z29Gb3J3YXJk
RXYKIF9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0QzFFUE5TXzRQYWdlRQotX19aTjdXZWJD
b3JlMTVDZXJ0aWZpY2F0ZUluZm9DMUVQSzlfX0NGQXJyYXkKLV9fWk43V2ViQ29yZTE1Q2VydGlm
aWNhdGVJbmZvQzFFUktOU18xNlJlc291cmNlUmVzcG9uc2VFCitfX1pON1dlYkNvcmUxNUNlcnRp
ZmljYXRlSW5mb0MxRU4zV1RGOVJldGFpblB0cklQSzlfX0NGQXJyYXlFRQogX19aTjdXZWJDb3Jl
MTVDZXJ0aWZpY2F0ZUluZm9DMUV2CiBfX1pON1dlYkNvcmUxNURPTVdyYXBwZXJXb3JsZDEzY2xl
YXJXcmFwcGVyc0V2CiBfX1pON1dlYkNvcmUxNURPTVdyYXBwZXJXb3JsZEQxRXYKQEAgLTcxNiw3
ICs3MTUsNiBAQCBfX1pON1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05TXzE1CiBfX1pO
N1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RU5TXzEz
RnJhbWVMb2FkVHlwZUViCiBfX1pON1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05TXzE1
UmVzb3VyY2VSZXF1ZXN0RU5TXzE0TmF2aWdhdGlvblR5cGVFCiBfX1pON1dlYkNvcmUxNk5hdmln
YXRpb25BY3Rpb25DMUV2Ci1fX1pON1dlYkNvcmUxNlJlc291cmNlUmVzcG9uc2UxOXNldENlcnRp
ZmljYXRlQ2hhaW5FUEs5X19DRkFycmF5CiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIx
MGluaXRTY3JpcHRFUk5TXzE1RE9NV3JhcHBlcldvcmxkRQogX19aTjdXZWJDb3JlMTZTY3JpcHRD
b250cm9sbGVyMTFjcmVhdGVXb3JsZEV2CiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIx
M2V4ZWN1dGVTY3JpcHRFUktOM1dURjZTdHJpbmdFYgpAQCAtMTc4MSw3ICsxNzc5LDYgQEAgX19a
Tks3V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDIwaXNEYXRlVAogX19aTks3V2ViQ29yZTE2SFRN
TElucHV0RWxlbWVudDZpc1RleHRFdgogX19aTks3V2ViQ29yZTE2SWNvbkRhdGFiYXNlQmFzZTEy
ZGF0YWJhc2VQYXRoRXYKIF9fWk5LN1dlYkNvcmUxNlJlc291cmNlUmVzcG9uc2UxM25zVVJMUmVz
cG9uc2VFdgotX19aTks3V2ViQ29yZTE2UmVzb3VyY2VSZXNwb25zZTE2Y2VydGlmaWNhdGVDaGFp
bkV2CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTdpc0NvbnRlbnRFZGl0YWJsZUV2
CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTdpc0luUGFzc3dvcmRGaWVsZEV2CiBf
X1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTd0b05vcm1hbGl6ZWRSYW5nZUV2CkBAIC0x
ODMwLDExICsxODI3LDEzIEBAIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTJp
c0EKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTJsYXN0TW9kaWZpZWRFdgog
X19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxNGh0dHBTdGF0dXNDb2RlRXYKIF9f
Wk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTRodHRwU3RhdHVzVGV4dEV2CitfX1pO
SzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTE1Y2VydGlmaWNhdGVJbmZvRXYKIF9fWk5L
N1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTVodHRwSGVhZGVyRmllbGRFTlNfMTRIVFRQ
SGVhZGVyTmFtZUUKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTZodHRwSGVh
ZGVyRmllbGRzRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTZ0ZXh0RW5j
b2RpbmdOYW1lRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTdzdWdnZXN0
ZWRGaWxlbmFtZUV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTIxZXhwZWN0
ZWRDb250ZW50TGVuZ3RoRXYKK19fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjVp
bml0aWFsaXplQ2VydGlmaWNhdGVJbmZvRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9u
c2VCYXNlM3VybEV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTZpc0hUVFBF
dgogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U4bGF6eUluaXRFTlMwXzlJbml0
TGV2ZWxFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oJKHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5NTE1LDYgKzE5NTE1LDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHdpblxXaW5kb3dzVG91Y2gu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXENGVVJMRXh0cmFz
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlx3aW5cQ2VydGlm
aWNhdGVDRldpbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2Zc
d2luXENlcnRpZmljYXRlSW5mby5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcQml0bWFwSW1hZ2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXENvbG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIiAvPgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yvd2luL0NlcnRpZmljYXRlSW5mby5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUluZm8u
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL3dpbi9DZXJ0aWZp
Y2F0ZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBDZXJ0aWZpY2F0ZUluZm9faAorI2RlZmluZSBDZXJ0aWZpY2F0ZUluZm9faAorCit0
eXBlZGVmIGludDMyX3QgQ2VydGlmaWNhdGVJbmZvOworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuY3BwCShyZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYs
NyBAQCBpbmxpbmUgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgUmVzb3VyY2VSCiAKIFJlc291cmNl
UmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZSgpICAKICAgICA6IG1fZXhwZWN0ZWRD
b250ZW50TGVuZ3RoKDApCisgICAgLCBtX2RpZEluaXRpYWxpemVDZXJ0aWZpY2F0ZUluZm8oZmFs
c2UpCiAgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDApCiAgICAgLCBtX2Nvbm5lY3Rpb25JRCgwKQog
ICAgICwgbV9jYWNoZUNvbnRyb2xNYXhBZ2UoMCkKQEAgLTcyLDYgKzczLDcgQEAgUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYQogICAgICwgbV9taW1lVHlwZShtaW1lVHlw
ZSkKICAgICAsIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKGV4cGVjdGVkTGVuZ3RoKQogICAgICwg
bV90ZXh0RW5jb2RpbmdOYW1lKHRleHRFbmNvZGluZ05hbWUpCisgICAgLCBtX2RpZEluaXRpYWxp
emVDZXJ0aWZpY2F0ZUluZm8odHJ1ZSkKICAgICAsIG1faHR0cFN0YXR1c0NvZGUoMCkKICAgICAs
IG1fY29ubmVjdGlvbklEKDApCiAgICAgLCBtX2NhY2hlQ29udHJvbE1heEFnZSgwKQpAQCAtMjA1
LDcgKzIwNywxOCBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRUZXh0RW5jb2RpCiAg
ICAgLy8gRklYTUU6IFNob3VsZCBpbnZhbGlkYXRlIG9yIHVwZGF0ZSBwbGF0Zm9ybSByZXNwb25z
ZSBpZiBwcmVzZW50LgogfQogCi0vLyBGSVhNRSBzaG91bGQgY29tcHV0ZSB0aGlzIG9uIHRoZSBm
bHkKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmluaXRpYWxpemVDZXJ0aWZpY2F0ZUluZm8o
KSBjb25zdAoreworICAgIG1fY2VydGlmaWNhdGVJbmZvID0gc3RhdGljX2Nhc3Q8Y29uc3QgUmVz
b3VyY2VSZXNwb25zZSo+KHRoaXMpLT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpOworICAgIG1f
ZGlkSW5pdGlhbGl6ZUNlcnRpZmljYXRlSW5mbyA9IHRydWU7Cit9CisKK0NlcnRpZmljYXRlSW5m
byBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2VydGlmaWNhdGVJbmZvKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQobV9kaWRJbml0aWFsaXplQ2VydGlmaWNhdGVJbmZvKTsKKyAgICByZXR1cm4gbV9jZXJ0
aWZpY2F0ZUluZm87Cit9CisKIFN0cmluZyBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c3VnZ2VzdGVk
RmlsZW5hbWUoKSBjb25zdAogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlKj4odGhpcyktPnBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmgJKHJldmlzaW9uIDE3MzM1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2lmbmRlZiBSZXNvdXJjZVJlc3BvbnNlQmFzZV9oCiAjZGVmaW5lIFJlc291cmNlUmVz
cG9uc2VCYXNlX2gKIAorI2luY2x1ZGUgIkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIkhU
VFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRU
aW1pbmcuaCIKQEAgLTkxLDYgKzkyLDkgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3Vn
Z2VzdGVkRmlsZW5hbWUoKSBjb25zdDsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUNlcnRpZmljYXRl
SW5mbygpIGNvbnN0OworICAgIENlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8oKSBjb25z
dDsKICAgICAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIHBhcnNlZCB2YWx1ZXMgb2Yg
dGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2UgaGVhZGVycy4KICAgICAvLyBOYU4gbWVhbnMgdGhh
dCB0aGUgaGVhZGVyIHdhcyBub3QgcHJlc2VudCBvciBoYWQgaW52YWxpZCB2YWx1ZS4KQEAgLTE0
MSw3ICsxNDUsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBUaGUgUmVzb3VyY2VSZXNwb25zZSBz
dWJjbGFzcyBtYXkgInNoYWRvdyIgdGhpcyBtZXRob2QgdG8gbGF6aWx5IGluaXRpYWxpemUgcGxh
dGZvcm0gc3BlY2lmaWMgZmllbGRzCiAgICAgdm9pZCBwbGF0Zm9ybUxhenlJbml0KEluaXRMZXZl
bCkgeyB9Ci0gICAgU3RyaW5nIHBsYXRmb3JtU3VnZ2VzdGVkRmlsZU5hbWUoKSB7IHJldHVybiBT
dHJpbmcoKTsgfQorICAgIENlcnRpZmljYXRlSW5mbyBwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygp
IGNvbnN0IHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9OworICAgIFN0cmluZyBwbGF0Zm9y
bVN1Z2dlc3RlZEZpbGVOYW1lKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KIAogICAgIC8v
IFRoZSBSZXNvdXJjZVJlc3BvbnNlIHN1YmNsYXNzIG1heSAic2hhZG93IiB0aGlzIG1ldGhvZCB0
byBjb21wYXJlIHBsYXRmb3JtIHNwZWNpZmljIGZpZWxkcwogICAgIHN0YXRpYyBib29sIHBsYXRm
b3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE1NCw2ICsxNTksOSBAQCBwcm90ZWN0ZWQ6CiAgICAg
SFRUUEhlYWRlck1hcCBtX2h0dHBIZWFkZXJGaWVsZHM7CiAgICAgbXV0YWJsZSBSZXNvdXJjZUxv
YWRUaW1pbmcgbV9yZXNvdXJjZUxvYWRUaW1pbmc7CiAKKyAgICBtdXRhYmxlIGJvb2wgbV9kaWRJ
bml0aWFsaXplQ2VydGlmaWNhdGVJbmZvOworICAgIG11dGFibGUgQ2VydGlmaWNhdGVJbmZvIG1f
Y2VydGlmaWNhdGVJbmZvOworCiAgICAgaW50IG1faHR0cFN0YXR1c0NvZGU7CiAgICAgdW5zaWdu
ZWQgbV9jb25uZWN0aW9uSUQ7CiAKQEAgLTIwNiw2ICsyMTQsOSBAQCB2b2lkIFJlc291cmNlUmVz
cG9uc2VCYXNlOjplbmNvZGUoRW5jb2RlCiAgICAgZW5jb2RlciA8PCBtX3Jlc291cmNlTG9hZFRp
bWluZzsKICAgICBlbmNvZGVyIDw8IG1faHR0cFN0YXR1c0NvZGU7CiAgICAgZW5jb2RlciA8PCBt
X2Nvbm5lY3Rpb25JRDsKKyAgICBlbmNvZGVyIDw8IG1fZGlkSW5pdGlhbGl6ZUNlcnRpZmljYXRl
SW5mbzsKKyAgICBpZiAobV9kaWRJbml0aWFsaXplQ2VydGlmaWNhdGVJbmZvKQorICAgICAgICBl
bmNvZGVyIDw8IG1fY2VydGlmaWNhdGVJbmZvOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgpAQCAtMjQwLDYgKzI1MSwxMiBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUo
RGVjb2RlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3BvbnNlLm1fY29ubmVjdGlvbklEKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9kaWRJbml0aWFsaXplQ2VydGlmaWNhdGVJbmZvKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChyZXNwb25zZS5tX2RpZEluaXRpYWxpemVD
ZXJ0aWZpY2F0ZUluZm8pIHsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5t
X2NlcnRpZmljYXRlSW5mbykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAg
IHJlc3BvbnNlLm1faXNOdWxsID0gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNw
b25zZS5oCShyZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTEgKzkyLDYg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVzcG9uc2UgKm5zVVJMUmVzcG9u
c2UoKSBjb25zdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdP
UkspCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDZXJ0aWZpY2F0ZUNoYWluKENGQXJyYXlS
ZWYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRkFycmF5UmVmPiBjZXJ0aWZpY2F0
ZUNoYWluKCkgY29uc3Q7Ci0jZW5kaWYKLQogICAgIGJvb2wgcGxhdGZvcm1SZXNwb25zZUlzVXBU
b0RhdGUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtUmVzcG9uc2VJc1VwVG9EYXRlOyB9CiAK
IHByaXZhdGU6CkBAIC0xMDQsNiArOTksOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9y
bUxhenlJbml0KEluaXRMZXZlbCk7CiAgICAgU3RyaW5nIHBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5h
bWUoKSBjb25zdDsKKyAgICBDZXJ0aWZpY2F0ZUluZm8gcGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8o
KSBjb25zdDsKKwogICAgIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0
YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3Bv
bnNlRGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQogICAgIHZvaWQgZG9QbGF0Zm9y
bUFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4pIHsgfQog
I2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTIxLDEwICsxMTgsNiBAQCBwcml2YXRlOgogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIG11dGFibGUgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IG1fbnNS
ZXNwb25zZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQot
ICAgIC8vIENlcnRpZmljYXRlIGNoYWluIGlzIG5vcm1hbGx5IHBhcnQgb2YgTlMvQ0ZVUkxSZXNw
b25zZSwgYnV0IHRoZXJlIGlzIG5vIHdheSB0byByZS1hZGQgaXQgdG8gYSBkZXNlcmlhbGl6ZWQg
cmVzcG9uc2UgYWZ0ZXIgSVBDLgotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBtX2V4dGVybmFs
Q2VydGlmaWNhdGVDaGFpbjsKLSNlbmRpZgogfTsKIAogc3RydWN0IENyb3NzVGhyZWFkUmVzb3Vy
Y2VSZXNwb25zZURhdGEgOiBwdWJsaWMgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YUJh
c2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ2VydGlmaWNh
dGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvQ2VydGlmaWNhdGVJbmZvLmgJKHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL0NlcnRpZmljYXRlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw3ICsyNiw2IEBACiAjaWZuZGVmIENlcnRpZmljYXRlSW5mb19oCiAjZGVmaW5lIENlcnRp
ZmljYXRlSW5mb19oCiAKLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0LDgg
KzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2VydGlmaWNhdGVJbmZvIHsKIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBDZXJ0aWZpY2F0ZUluZm8oKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDZXJ0aWZpY2F0ZUluZm8oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENlcnRpZmljYXRlSW5mbyhDRkFycmF5UmVm
IGNlcnRpZmljYXRlQ2hhaW4pOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENlcnRpZmlj
YXRlSW5mbyhSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY2VydGlmaWNhdGVDaGFpbik7CiAKICAgICB2
b2lkIHNldENlcnRpZmljYXRlQ2hhaW4oQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKSB7IG1f
Y2VydGlmaWNhdGVDaGFpbiA9IGNlcnRpZmljYXRlQ2hhaW47IH0KICAgICBDRkFycmF5UmVmIGNl
cnRpZmljYXRlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlQ2hhaW4uZ2V0KCk7
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NlcnRpZmljYXRl
SW5mb01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9DZXJ0aWZpY2F0ZUluZm9NYWMubW0JKHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NlcnRpZmljYXRlSW5mb01hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDcgQEAgQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZUlu
Zm8oKQogewogfQogCi1DZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlSW5mbyhjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKLSAgICA6IG1fY2VydGlmaWNhdGVDaGFpbihyZXNwb25z
ZS5jZXJ0aWZpY2F0ZUNoYWluKCkpCi17Ci19Ci0KLUNlcnRpZmljYXRlSW5mbzo6Q2VydGlmaWNh
dGVJbmZvKENGQXJyYXlSZWYgY2VydGlmaWNhdGVDaGFpbikKK0NlcnRpZmljYXRlSW5mbzo6Q2Vy
dGlmaWNhdGVJbmZvKFJldGFpblB0cjxDRkFycmF5UmVmPiBjZXJ0aWZpY2F0ZUNoYWluKQogICAg
IDogbV9jZXJ0aWZpY2F0ZUNoYWluKGNlcnRpZmljYXRlQ2hhaW4pCiB7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
UmVzcG9uc2VNYWMubW0JKHJldmlzaW9uIDE3MzM2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTE3Miw2ICsxNzIsMTIgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0
KAogICAgIG1faW5pdExldmVsID0gaW5pdExldmVsOwogfQogCitDZXJ0aWZpY2F0ZUluZm8gUmVz
b3VyY2VSZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAoreworICAgIEFT
U0VSVChtX25zUmVzcG9uc2UpOworICAgIHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oYWRvcHRDRih3
a0NvcHlOU1VSTFJlc3BvbnNlQ2VydGlmaWNhdGVDaGFpbihtX25zUmVzcG9uc2UuZ2V0KCkpKSk7
Cit9CisKIFN0cmluZyBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1l
KCkgY29uc3QKIHsKICAgICByZXR1cm4gW25zVVJMUmVzcG9uc2UoKSBzdWdnZXN0ZWRGaWxlbmFt
ZV07CkBAIC0xODQsMjMgKzE5MCw1IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1D
b21wYXJlKGMKIAogI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCiAKLSNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGTkVUV09SSykKLQotdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRDZXJ0aWZp
Y2F0ZUNoYWluKENGQXJyYXlSZWYgY2VydGlmaWNhdGVDaGFpbikKLXsKLSAgICBBU1NFUlQoIW1f
bnNSZXNwb25zZSB8fCAhd2tDb3B5TlNVUkxSZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4obV9uc1Jl
c3BvbnNlLmdldCgpKSk7Ci0gICAgbV9leHRlcm5hbENlcnRpZmljYXRlQ2hhaW4gPSBjZXJ0aWZp
Y2F0ZUNoYWluOwotfQotCi1SZXRhaW5QdHI8Q0ZBcnJheVJlZj4gUmVzb3VyY2VSZXNwb25zZTo6
Y2VydGlmaWNhdGVDaGFpbigpIGNvbnN0Ci17Ci0gICAgaWYgKG1fZXh0ZXJuYWxDZXJ0aWZpY2F0
ZUNoYWluKQotICAgICAgICByZXR1cm4gbV9leHRlcm5hbENlcnRpZmljYXRlQ2hhaW47Ci0KLSAg
ICByZXR1cm4gYWRvcHRDRih3a0NvcHlOU1VSTFJlc3BvbnNlQ2VydGlmaWNhdGVDaGFpbihuc1VS
TFJlc3BvbnNlKCkpKTsKLX0KLQotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZO
RVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaAko
cmV2aXNpb24gMTczMzU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVzcG9uc2UoKSB7IH0KICAgICBTdHJp
bmcgcGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0OworICAgIENlcnRpZmljYXRlSW5m
byBwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpIGNvbnN0OwogCiAgICAgUGFzc093blB0cjxDcm9z
c1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoUGFzc093blB0
cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkYXRhKSBjb25zdCB7IHJldHVybiBk
YXRhOyB9CiAgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJl
c291cmNlUmVzcG9uc2VEYXRhPikgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAJ
KHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEs
MTEgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjp1cGRhdGVGcm9tU291cE1lcwogICAgIHNldEV4
cGVjdGVkQ29udGVudExlbmd0aChzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfY29udGVudF9sZW5n
dGgoaGVhZGVycykpOwogfQogCitDZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VSZXNwb25zZTo6cGxh
dGZvcm1DZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAoreworICAgIHJldHVybiBDZXJ0aWZpY2F0ZUlu
Zm8obV9jZXJ0aWZpY2F0ZS5nZXQoKSwgbV90bHNFcnJvcnMpOworfQorCiBTdHJpbmcgUmVzb3Vy
Y2VSZXNwb25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oaHR0cEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpDb250ZW50RGlzcG9zaXRpb24pKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDE3MzM2NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDMxIEBACisyMDE0LTA5LTA3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KKworICAgICAgICBQYXNzIGNlcnRpZmljYXRlIGluZm8gYXMgcGFydCBvZiBSZXNvdXJj
ZVJlc3BvbnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzY2MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMpOgor
CisgICAgICAgICAgICBJbml0aWFsaXplIHRoZSBjZXJ0aWZpY2F0ZSBpbmZvIG9ubHkgaWYgcmVx
dWVzdGVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2VXaXRoQ2VydGlmaWNhdGVJbmZvKTogRGVsZXRlZC4KKworICAgICAgICAgICAgUmVuYW1l
IGRpZFJlY2VpdmVSZXNwb25zZVdpdGhDZXJ0aWZpY2F0ZUluZm8gLT4gZGlkUmVjZWl2ZVJlc3Bv
bnNlIGFzIGl0IGlzIG5vdyBwYXJ0IG9mIHRoZSByZXNwb25zZS4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKworICAgICAgICAg
ICAgUmVxdWVzdCBjZXJ0aWZpY2F0ZSBpbmZvIGZvciB0aGUgbWFpbiByZXNvdXJjZSBvbmx5Lgor
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1p
dExvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjZXJ0aWZpY2F0ZUluZm8pOgorCiAyMDE0LTA5LTA2ICBT
YW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgWFBDUHRyIHNob3VsZCBiZSBj
b252ZXJ0ZWQgaW50byBhbiBhbGwgcHVycG9zZSBzbWFydCBwb2ludGVyIGZvciBvc19vYmplY3Rz
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk3LDYgKzk3LDcgQEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VM
bwogICAgICwgbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KHBhcmFt
ZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCkKICAgICAsIG1f
aXNMb2FkaW5nTWFpblJlc291cmNlKHBhcmFtZXRlcnMuaXNNYWluUmVzb3VyY2UpCiAgICAgLCBt
X2RlZmVyc0xvYWRpbmcocGFyYW1ldGVycy5kZWZlcnNMb2FkaW5nKQorICAgICwgbV9uZWVkc0Nl
cnRpZmljYXRlSW5mbyhwYXJhbWV0ZXJzLm5lZWRzQ2VydGlmaWNhdGVJbmZvKQogICAgICwgbV9z
YW5kYm94RXh0ZW5zaW9uc0FyZUNvbnN1bWVkKGZhbHNlKQogICAgICwgbV9jb25uZWN0aW9uKGNv
bm5lY3Rpb24pCiB7CkBAIC0yMTYsMTAgKzIxNywxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZVJlCiB7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9
PSBtX2hhbmRsZSk7CiAKKyAgICBpZiAobV9uZWVkc0NlcnRpZmljYXRlSW5mbykKKyAgICAgICAg
cmVzcG9uc2UuaW5pdGlhbGl6ZUNlcnRpZmljYXRlSW5mbygpOworCiAgICAgaWYgKGlzU3luY2hy
b25vdXMoKSkKICAgICAgICAgbV9zeW5jaHJvbm91c0xvYWREYXRhLT5tX3Jlc3BvbnNlID0gcmVz
cG9uc2U7CiAgICAgZWxzZQotICAgICAgICBzZW5kQWJvcnRpbmdPbkZhaWx1cmUoTWVzc2FnZXM6
OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2VXaXRoQ2VydGlmaWNhdGVJbmZv
KHJlc3BvbnNlLCBDZXJ0aWZpY2F0ZUluZm8ocmVzcG9uc2UpLCBpc0xvYWRpbmdNYWluUmVzb3Vy
Y2UoKSkpOworICAgICAgICBzZW5kQWJvcnRpbmdPbkZhaWx1cmUoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIGlzTG9hZGluZ01haW5SZXNv
dXJjZSgpKSk7CiAKICAgICAvLyBtX2hhbmRsZSB3aWxsIGJlIG51bGwgaWYgdGhlIHJlcXVlc3Qg
Z290IGFib3J0ZWQgYWJvdmUuCiAgICAgaWYgKCFtX2hhbmRsZSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShy
ZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDYgKzE5MCw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Q7
CiAgICAgYm9vbCBtX2lzTG9hZGluZ01haW5SZXNvdXJjZTsKICAgICBib29sIG1fZGVmZXJzTG9h
ZGluZzsKKyAgICBib29sIG1fbmVlZHNDZXJ0aWZpY2F0ZUluZm87CiAKICAgICBWZWN0b3I8UmVm
UHRyPFNhbmRib3hFeHRlbnNpb24+PiBtX3JlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnM7CiAg
ICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gbV9yZXNvdXJjZVNhbmRib3hFeHRl
bnNpb25zOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTcz
MzU1KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpOZXR3b3JrUmUKICAgICAsIGlzTWFpblJlc291cmNlKGZh
bHNlKQogICAgICwgZGVmZXJzTG9hZGluZyhmYWxzZSkKICAgICAsIHNob3VsZEJ1ZmZlclJlc291
cmNlKGZhbHNlKQorICAgICwgbmVlZHNDZXJ0aWZpY2F0ZUluZm8oZmFsc2UpCiB7CiB9CiAKQEAg
LTk2LDYgKzk3LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jbwog
ICAgIGVuY29kZXIgPDwgaXNNYWluUmVzb3VyY2U7CiAgICAgZW5jb2RlciA8PCBkZWZlcnNMb2Fk
aW5nOwogICAgIGVuY29kZXIgPDwgc2hvdWxkQnVmZmVyUmVzb3VyY2U7CisgICAgZW5jb2RlciA8
PCBuZWVkc0NlcnRpZmljYXRlSW5mbzsKIH0KIAogYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyYgcmVzdWx0KQpAQCAtMTQ4LDYgKzE1MCw4IEBAIGJvb2wgTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY28KICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNob3VsZEJ1ZmZlclJlc291cmNlKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm5lZWRz
Q2VydGlmaWNhdGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9O
ZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDE3MzM1NSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAgcHVibGljOgogICAgIGJv
b2wgaXNNYWluUmVzb3VyY2U7CiAgICAgYm9vbCBkZWZlcnNMb2FkaW5nOwogICAgIGJvb2wgc2hv
dWxkQnVmZmVyUmVzb3VyY2U7CisgICAgYm9vbCBuZWVkc0NlcnRpZmljYXRlSW5mbzsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJ
KHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNiArMTQy
LDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTAogICAgIGxvYWRQ
YXJhbWV0ZXJzLmlzTWFpblJlc291cmNlID0gcmVzb3VyY2UgJiYgcmVzb3VyY2UtPnR5cGUoKSA9
PSBDYWNoZWRSZXNvdXJjZTo6TWFpblJlc291cmNlOwogICAgIGxvYWRQYXJhbWV0ZXJzLmRlZmVy
c0xvYWRpbmcgPSByZXNvdXJjZUxvYWRlci0+ZGVmZXJzTG9hZGluZygpOwogICAgIGxvYWRQYXJh
bWV0ZXJzLnNob3VsZEJ1ZmZlclJlc291cmNlID0gcmVzb3VyY2UgJiYgKHJlc291cmNlLT50eXBl
KCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQgfHwgcmVzb3VyY2UtPnR5cGUoKSA9
PSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0KTsKKyAgICAvLyBDZXJ0aWZpY2F0ZSBpbmZvIGlzIGEg
YmlnIG9iamVjdCB0byBzZXJpYWxpemUgYW5kIHdlIG9ubHkgdXNlIGl0IGZvciB0aGUgbWFpbiBy
ZXNvdXJjZS4KKyAgICBsb2FkUGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbyA9IGxvYWRQ
YXJhbWV0ZXJzLmlzTWFpblJlc291cmNlOwogCiAgICAgQVNTRVJUKChsb2FkUGFyYW1ldGVycy53
ZWJQYWdlSUQgJiYgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCkgfHwgbG9hZFBhcmFtZXRlcnMu
Y2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBEb05vdEFza0NsaWVudEZvckFueUNyZWRlbnRpYWxz
KTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDIsMzMgKzEwMiwyMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRTZW5k
RGF0YSh1aW50CiAgICAgbV9jb3JlTG9hZGVyLT5kaWRTZW5kRGF0YShieXRlc1NlbnQsIHRvdGFs
Qnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZVdpdGhDZXJ0aWZpY2F0ZUluZm8oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIG5lZWRzQ29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29s
IG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogewogICAgIExPRyhOZXR3
b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VX
aXRoQ2VydGlmaWNhdGVJbmZvIGZvciAnJXMnLiBTdGF0dXMgJWQuIiwgbV9jb3JlTG9hZGVyLT51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsK
IAogICAgIFJlZjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CiAKLSAgICBSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlQ29weShyZXNwb25zZSk7Ci0KLSAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgdXNlIENlcnRpZmljYXRlSW5mbyB0byBhdm9pZCB0aGUgcGxhdGZvcm0gaWZkZWZz
LiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDcyNC4KLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICByZXNwb25zZUNvcHkuc2V0Q2VydGlmaWNhdGVDaGFpbihj
ZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGVDaGFpbigpKTsKLSNlbGlmIFVTRShTT1VQKQotICAg
IHJlc3BvbnNlQ29weS5zZXRTb3VwTWVzc2FnZUNlcnRpZmljYXRlKGNlcnRpZmljYXRlSW5mby5j
ZXJ0aWZpY2F0ZSgpKTsKLSAgICByZXNwb25zZUNvcHkuc2V0U291cE1lc3NhZ2VUTFNFcnJvcnMo
Y2VydGlmaWNhdGVJbmZvLnRsc0Vycm9ycygpKTsKLSNlbmRpZgotCi0gICAgaWYgKG1fY29yZUxv
YWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2Fk
RmFsbGJhY2tGb3JSZXNwb25zZShtX2NvcmVMb2FkZXIuZ2V0KCksIHJlc3BvbnNlQ29weSkpCisg
ICAgaWYgKG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhv
c3QoKS0+bWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShtX2NvcmVMb2FkZXIuZ2V0KCksIHJl
c3BvbnNlKSkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgLy8g
UmVmcmFpbiBmcm9tIGNhbGxpbmcgZGlkUmVjZWl2ZVJlc3BvbnNlIGlmIFF1aWNrTG9vayB3aWxs
IGNvbnZlcnQgdGhpcyByZXNwb25zZSwgc2luY2UgdGhlIE1JTUUgdHlwZSBvZiB0aGUKICAgICAv
LyBjb252ZXJ0ZWQgcmVzb3VyY2UgaXNuJ3QgeWV0IGtub3duLiBXZWJSZXNvdXJjZUxvYWRlclF1
aWNrTG9va0RlbGVnYXRlIHdpbGwgbGF0ZXIgY2FsbCBkaWRSZWNlaXZlUmVzcG9uc2UgdXBvbgog
ICAgIC8vIHJlY2VpdmluZyB0aGUgY29udmVydGVkIGRhdGEuCi0gICAgbV9jb3JlTG9hZGVyLT5k
b2N1bWVudExvYWRlcigpLT5zZXRRdWlja0xvb2tIYW5kbGUoUXVpY2tMb29rSGFuZGxlOjpjcmVh
dGUocmVzb3VyY2VMb2FkZXIoKSwgcmVzcG9uc2VDb3B5Lm5zVVJMUmVzcG9uc2UoKSkpOworICAg
IG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UXVpY2tMb29rSGFuZGxlKFF1aWNr
TG9va0hhbmRsZTo6Y3JlYXRlKHJlc291cmNlTG9hZGVyKCksIHJlc3BvbnNlLm5zVVJMUmVzcG9u
c2UoKSkpOwogICAgIGlmICghbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5xdWlja0xv
b2tIYW5kbGUoKSkKICNlbmRpZgotICAgICAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVSZXNw
b25zZShyZXNwb25zZUNvcHkpOworICAgICAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVSZXNw
b25zZShyZXNwb25zZSk7CiAKICAgICAvLyBJZiBtX2NvcmVMb2FkZXIgYmVjb21lcyBudWxsIGFz
IGEgcmVzdWx0IG9mIHRoZSBkaWRSZWNlaXZlUmVzcG9uc2UgY2FsbGJhY2ssIHdlIGNhbid0IHVz
ZSB0aGUgc2VuZCBmdW5jdGlvbigpLiAKICAgICBpZiAoIW1fY29yZUxvYWRlcikKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oCShyZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSk7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2
NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VXaXRo
Q2VydGlmaWNhdGVJbmZvKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2VNZXNzYWdlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
TWVzc2FnZSk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaFJlc291
cmNlTG9hZChkb3VibGUgZmluaXNoVGltZSk7CiAgICAgdm9pZCBkaWRGYWlsUmVzb3VyY2VMb2Fk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
bWVzc2FnZXMuaW4JKHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksNyBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNl
CiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogV2UnbGwgbmVlZCBtdWNoIG1vcmUgZ3Jh
bnVsYXJpdHkgZm9yIHJlc3BvbnNlIG1lc3NhZ2VzLgogICAgIFdpbGxTZW5kUmVxdWVzdChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZWRpcmVjdFJlc3BvbnNlKQogICAgIERpZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWlu
dDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KQotICAgIERpZFJlY2VpdmVSZXNwb25zZVdpdGhDZXJ0
aWZpY2F0ZUluZm8oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbywgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlTWVzc2FnZSkKKyAgICBEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSkKICAgICBEaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwg
aW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKICAgICBEaWRGaW5pc2hSZXNvdXJjZUxvYWQoZG91
YmxlIGZpbmlzaFRpbWUpCiAgICAgRGlkRmFpbFJlc291cmNlTG9hZChXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGVycm9yKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJl
dmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTUsNyArNDU1
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbwogCiAgICAgLy8g
Tm90aWZ5IHRoZSBVSVByb2Nlc3MuCiAKLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3Vt
ZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1pbWVU
eXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0PHVpbnQz
Ml90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSksIENlcnRpZmlj
YXRlSW5mbyhkb2N1bWVudExvYWRlci5yZXNwb25zZSgpKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVz
c2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgp
LCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2Uo
KS5taW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCBk
b2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBJbmplY3RlZEJ1bmRs
ZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKICAgICB3ZWJQYWdlLT5kaWRD
b21taXRMb2FkKG1fZnJhbWUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQxNyw3ICs0MTcsNyBAQCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gV2ViRnJhbWU6OmNlcnRp
CiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuIENlcnRpZmljYXRlSW5m
bygpOwogCi0gICAgcmV0dXJuIENlcnRpZmljYXRlSW5mbyhkb2N1bWVudExvYWRlci0+cmVzcG9u
c2UoKSk7CisgICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmNlcnRpZmljYXRl
SW5mbygpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OmlubmVyVGV4dCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237768</attachid>
            <date>2014-09-08 02:20:49 -0700</date>
            <delta_ts>2014-09-08 02:32:26 -0700</delta_ts>
            <desc>patch 3</desc>
            <filename>certificate-info-7.patch</filename>
            <type>text/plain</type>
            <size>34452</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzM2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE0LTA5LTA3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBQYXNzIGNlcnRpZmljYXRlIGlu
Zm8gYXMgcGFydCBvZiBSZXNvdXJjZVJlc3BvbnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY2MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY3VycmVudCB3YXkgb2YgcGFzc2luZyBjZXJ0aWZp
Y2F0ZSBpbmZvIHNlcGFyYXRlbHkgZnJvbSBSZXNvdXJjZVJlc3BvbnNlIGFuZCB0aGVuIGphbW1p
bmcgaXQgYmFjaworICAgICAgICBpcyBjb21wbGV4IGFuZCBjb25mdXNpbmcuIFRoaXMgcGF0Y2gg
bWFrZXMgaXQgYSB0cnVlIHBhcnQgb2YgdGhlIFJlc291cmNlUmVzcG9uc2UuCisKKyAgICAgICAg
V2l0aCB0aGlzIHBhdGNoIHdlIGFsc28gb25seSBjcmVhdGUgYW5kIHBhc3MgdGhlIGNlcnRpZmlj
YXRlIGluZm8gb2JqZWN0IGZvciB0aGUgbWFpbiByZXNvdXJjZS4gSXQgaXMKKyAgICAgICAgYSBi
aWcgYW5kIGNvbXBsZXggb2JqZWN0IGFuZCB3ZSBuZXZlciBsb29rIGludG8gaXQgZm9yIGFueSBv
dGhlciByZXNvdXJjZSB0eXBlLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UpOgorCisg
ICAgICAgICAgICBNYXJrIGluaXRpYWxpemVkIGZvciBzeW50aGV0aWMgcmVzcG9uc2VzLCB1bml0
aWFsaXplZCBmb3IgdGhvc2UgYmFja2VkIGJ5IGEgcGxhdGZvcm0gcmVxdWVzdC4KKworICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmluaXRpYWxpemVDZXJ0aWZpY2F0ZUlu
Zm8pOgorCisgICAgICAgICAgICBDYWxsaW5nIHRoaXMgcHVsbHMgdGhlIGNlcnRpZmljYXRlIGlu
Zm8gb3V0IGZyb20gdGhlIHBsYXRmb3JtIHR5cGUuCisgICAgICAgICAgICBJdCBzaG91ZCBvbmx5
IGJlIHVzZWQgZm9yIHJlc291cmNlcyB0aGF0IG5lZWQgaXQuCisKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2VCYXNlOjpwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUpOgorCisgICAgICAgICAg
ICBFbmNvZGUgYW5kIGRlY29kZSBjZXJ0aWZpY2F0ZSBpbmZvIGlmIGl0IGlzIHByZXNlbnQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm8uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm9NYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnNldENlcnRpZmljYXRlQ2hhaW4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6Y2VydGlmaWNhdGVDaGFpbik6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZp
Y2F0ZUluZm8pOgorCiAyMDE0LTA5LTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgogCiAgICAgICAgIFtGdWxsc2NyZWVuXSBBZGQgYSBzaXRlLXNwZWNpZmljIGhhY2sgdG8gd29y
ayBhcm91bmQgImZsYXNoIG9uIGV4aXQiIGJlaGF2aW9yIG9mIFlvdVR1YmUuY29tLgpJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE3MzM1NikKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC00OTEsOCArNDkxLDcgQEAgX19aTjdXZWJD
b3JlMTVCYWNrRm9yd2FyZExpc3Q4YmFja0l0ZW1FdgogX19aTjdXZWJDb3JlMTVCYWNrRm9yd2Fy
ZExpc3Q4Y2FwYWNpdHlFdgogX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q5Z29Gb3J3YXJk
RXYKIF9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0QzFFUE5TXzRQYWdlRQotX19aTjdXZWJD
b3JlMTVDZXJ0aWZpY2F0ZUluZm9DMUVQSzlfX0NGQXJyYXkKLV9fWk43V2ViQ29yZTE1Q2VydGlm
aWNhdGVJbmZvQzFFUktOU18xNlJlc291cmNlUmVzcG9uc2VFCitfX1pON1dlYkNvcmUxNUNlcnRp
ZmljYXRlSW5mb0MxRU4zV1RGOVJldGFpblB0cklQSzlfX0NGQXJyYXlFRQogX19aTjdXZWJDb3Jl
MTVDZXJ0aWZpY2F0ZUluZm9DMUV2CiBfX1pON1dlYkNvcmUxNURPTVdyYXBwZXJXb3JsZDEzY2xl
YXJXcmFwcGVyc0V2CiBfX1pON1dlYkNvcmUxNURPTVdyYXBwZXJXb3JsZEQxRXYKQEAgLTcxNiw3
ICs3MTUsNiBAQCBfX1pON1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05TXzE1CiBfX1pO
N1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RU5TXzEz
RnJhbWVMb2FkVHlwZUViCiBfX1pON1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05TXzE1
UmVzb3VyY2VSZXF1ZXN0RU5TXzE0TmF2aWdhdGlvblR5cGVFCiBfX1pON1dlYkNvcmUxNk5hdmln
YXRpb25BY3Rpb25DMUV2Ci1fX1pON1dlYkNvcmUxNlJlc291cmNlUmVzcG9uc2UxOXNldENlcnRp
ZmljYXRlQ2hhaW5FUEs5X19DRkFycmF5CiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIx
MGluaXRTY3JpcHRFUk5TXzE1RE9NV3JhcHBlcldvcmxkRQogX19aTjdXZWJDb3JlMTZTY3JpcHRD
b250cm9sbGVyMTFjcmVhdGVXb3JsZEV2CiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIx
M2V4ZWN1dGVTY3JpcHRFUktOM1dURjZTdHJpbmdFYgpAQCAtMTc4MSw3ICsxNzc5LDYgQEAgX19a
Tks3V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDIwaXNEYXRlVAogX19aTks3V2ViQ29yZTE2SFRN
TElucHV0RWxlbWVudDZpc1RleHRFdgogX19aTks3V2ViQ29yZTE2SWNvbkRhdGFiYXNlQmFzZTEy
ZGF0YWJhc2VQYXRoRXYKIF9fWk5LN1dlYkNvcmUxNlJlc291cmNlUmVzcG9uc2UxM25zVVJMUmVz
cG9uc2VFdgotX19aTks3V2ViQ29yZTE2UmVzb3VyY2VSZXNwb25zZTE2Y2VydGlmaWNhdGVDaGFp
bkV2CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTdpc0NvbnRlbnRFZGl0YWJsZUV2
CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTdpc0luUGFzc3dvcmRGaWVsZEV2CiBf
X1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTd0b05vcm1hbGl6ZWRSYW5nZUV2CkBAIC0x
ODMwLDExICsxODI3LDEzIEBAIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTJp
c0EKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTJsYXN0TW9kaWZpZWRFdgog
X19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxNGh0dHBTdGF0dXNDb2RlRXYKIF9f
Wk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTRodHRwU3RhdHVzVGV4dEV2CitfX1pO
SzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTE1Y2VydGlmaWNhdGVJbmZvRXYKIF9fWk5L
N1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTVodHRwSGVhZGVyRmllbGRFTlNfMTRIVFRQ
SGVhZGVyTmFtZUUKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTZodHRwSGVh
ZGVyRmllbGRzRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTZ0ZXh0RW5j
b2RpbmdOYW1lRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTdzdWdnZXN0
ZWRGaWxlbmFtZUV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTIxZXhwZWN0
ZWRDb250ZW50TGVuZ3RoRXYKK19fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjVp
bml0aWFsaXplQ2VydGlmaWNhdGVJbmZvRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9u
c2VCYXNlM3VybEV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTZpc0hUVFBF
dgogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U4bGF6eUluaXRFTlMwXzlJbml0
TGV2ZWxFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oJKHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5Nzk4LDYgKzE5Nzk4LDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcU3luY2hyb25v
dXNMb2FkZXJDbGllbnQuaCIgLz4KICAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXG5ldHdvcmtcY2ZcQXV0aGVudGljYXRpb25DRi5oIiAvPgogICAgIDxDdXN0b21CdWls
ZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5oIiAvPgorICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0
d29ya1xjZlxDZXJ0aWZpY2F0ZUluZm8uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXG5ldHdvcmtcY2ZcRG93bmxvYWRCdW5kbGUuaCIgLz4KICAgICA8Q3VzdG9tQnVp
bGRTdGVwIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcRm9ybURhdGFTdHJlYW1DRk5l
dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxM
b2FkZXJSdW5Mb29wQ0YuaCIgLz4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTYzMTcsNyArMTYzMTcsNiBAQAogCQkJCTUxNEM3NjQyMENFOTIzNEUwMDdFRjNDRCAvKiBB
dXRoZW50aWNhdGlvbk1hYy5oICovLAogCQkJCTUxNEM3NjQzMENFOTIzNEUwMDdFRjNDRCAvKiBB
dXRoZW50aWNhdGlvbk1hYy5tbSAqLywKIAkJCQlFMTY0QTJFQjE5MUFFNjM1MDAxMDczN0QgLyog
QmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tICovLAotCQkJCTVGMkRCQkU4MTc4RTMzNjkwMDE0
MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm8uaCAqLywKIAkJCQk1RjJEQkJFNzE3OEUzMzJEMDAxNDE0
ODYgLyogQ2VydGlmaWNhdGVJbmZvTWFjLm1tICovLAogCQkJCUUxNDI0QzhGMTY0QjQ2MEIwMEYz
MkQ0MCAvKiBDb29raWVKYXJNYWMubW0gKi8sCiAJCQkJRTEzRjAxRjAxMjcwRTE5MDAwREZCQTcx
IC8qIENvb2tpZVN0b3JhZ2VNYWMubW0gKi8sCkBAIC0yMDU2OSw2ICsyMDU2OCw3IEBACiAJCQkJ
N0VFNjg0NEMxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ0YuY3BwICovLAogCQkJ
CTdFRTY4NDREMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNGLmggKi8sCiAJCQkJ
N0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggKi8s
CisJCQkJNUYyREJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5mby5oICovLAog
CQkJCTdFRTY4NDRGMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVKYXJDRk5ldC5jcHAgKi8sCiAJ
CQkJN0VFNjg0NTAxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZVN0b3JhZ2VDRk5ldC5jcHAgKi8s
CiAJCQkJN0VFNjg0NTIxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQu
Y3BwICovLApAQCAtMjEwNzIsNyArMjEwNzIsNiBAQAogCQkJCTdFRTY4NDczMTJEMjZFNTUwMEU3
OTQxNSAvKiBjZiAqLywKIAkJCQk3RTRERTEwQjE5OEIxMDgxMDA1MUNCMDIgLyogY29jb2EgKi8s
CiAJCQkJNTEyNkU2QjYwQTJFM0FFRjAwNUMyOUZBIC8qIGljb24gKi8sCi0JCQkJQ0U3OUQ2ODYx
N0YyMjBFRDAwODE1QzAwIC8qIGlvcyAqLywKIAkJCQk5M0ExRUFBMjBBNTYzNEQ4MDA2OTYwQTAg
LyogbWFjICovLAogCQkJCUUxNDI0QzkxMTY0QjUyQzgwMEYzMkQ0MCAvKiBDb29raWVKYXIuY3Bw
ICovLAogCQkJCUUxNDI0QzkyMTY0QjUyQzgwMEYzMkQ0MCAvKiBDb29raWVKYXIuaCAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuY3BwCShyZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDYsNiArNDYsNyBAQCBpbmxpbmUgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgUmVzb3VyY2VS
CiAKIFJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZSgpICAKICAgICA6
IG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKDApCisgICAgLCBtX2RpZEluaXRpYWxpemVDZXJ0aWZp
Y2F0ZUluZm8oZmFsc2UpCiAgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDApCiAgICAgLCBtX2Nvbm5l
Y3Rpb25JRCgwKQogICAgICwgbV9jYWNoZUNvbnRyb2xNYXhBZ2UoMCkKQEAgLTcyLDYgKzczLDcg
QEAgUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYQogICAgICwgbV9taW1l
VHlwZShtaW1lVHlwZSkKICAgICAsIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKGV4cGVjdGVkTGVu
Z3RoKQogICAgICwgbV90ZXh0RW5jb2RpbmdOYW1lKHRleHRFbmNvZGluZ05hbWUpCisgICAgLCBt
X2RpZEluaXRpYWxpemVDZXJ0aWZpY2F0ZUluZm8odHJ1ZSkKICAgICAsIG1faHR0cFN0YXR1c0Nv
ZGUoMCkKICAgICAsIG1fY29ubmVjdGlvbklEKDApCiAgICAgLCBtX2NhY2hlQ29udHJvbE1heEFn
ZSgwKQpAQCAtMjA1LDcgKzIwNywxOCBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRU
ZXh0RW5jb2RpCiAgICAgLy8gRklYTUU6IFNob3VsZCBpbnZhbGlkYXRlIG9yIHVwZGF0ZSBwbGF0
Zm9ybSByZXNwb25zZSBpZiBwcmVzZW50LgogfQogCi0vLyBGSVhNRSBzaG91bGQgY29tcHV0ZSB0
aGlzIG9uIHRoZSBmbHkKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmluaXRpYWxpemVDZXJ0
aWZpY2F0ZUluZm8oKSBjb25zdAoreworICAgIG1fY2VydGlmaWNhdGVJbmZvID0gc3RhdGljX2Nh
c3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpLT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5m
bygpOworICAgIG1fZGlkSW5pdGlhbGl6ZUNlcnRpZmljYXRlSW5mbyA9IHRydWU7Cit9CisKK0Nl
cnRpZmljYXRlSW5mbyBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2VydGlmaWNhdGVJbmZvKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQobV9kaWRJbml0aWFsaXplQ2VydGlmaWNhdGVJbmZvKTsKKyAgICBy
ZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87Cit9CisKIFN0cmluZyBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdAogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBSZXNvdXJjZVJlc3BvbnNlKj4odGhpcyktPnBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVzcG9uc2VCYXNlLmgJKHJldmlzaW9uIDE3MzM1NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBSZXNvdXJjZVJlc3BvbnNlQmFzZV9oCiAjZGVmaW5l
IFJlc291cmNlUmVzcG9uc2VCYXNlX2gKIAorI2luY2x1ZGUgIkNlcnRpZmljYXRlSW5mby5oIgog
I2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUxvYWRUaW1pbmcuaCIKQEAgLTkxLDYgKzkyLDkgQEAgcHVibGljOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdDsKKworICAgIHZvaWQgaW5pdGlhbGl6
ZUNlcnRpZmljYXRlSW5mbygpIGNvbnN0OworICAgIENlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0
ZUluZm8oKSBjb25zdDsKICAgICAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIHBhcnNl
ZCB2YWx1ZXMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2UgaGVhZGVycy4KICAgICAvLyBO
YU4gbWVhbnMgdGhhdCB0aGUgaGVhZGVyIHdhcyBub3QgcHJlc2VudCBvciBoYWQgaW52YWxpZCB2
YWx1ZS4KQEAgLTE0MSw3ICsxNDUsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBUaGUgUmVzb3Vy
Y2VSZXNwb25zZSBzdWJjbGFzcyBtYXkgInNoYWRvdyIgdGhpcyBtZXRob2QgdG8gbGF6aWx5IGlu
aXRpYWxpemUgcGxhdGZvcm0gc3BlY2lmaWMgZmllbGRzCiAgICAgdm9pZCBwbGF0Zm9ybUxhenlJ
bml0KEluaXRMZXZlbCkgeyB9Ci0gICAgU3RyaW5nIHBsYXRmb3JtU3VnZ2VzdGVkRmlsZU5hbWUo
KSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIENlcnRpZmljYXRlSW5mbyBwbGF0Zm9ybUNlcnRp
ZmljYXRlSW5mbygpIGNvbnN0IHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9OworICAgIFN0
cmluZyBwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVOYW1lKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7
IH0KIAogICAgIC8vIFRoZSBSZXNvdXJjZVJlc3BvbnNlIHN1YmNsYXNzIG1heSAic2hhZG93IiB0
aGlzIG1ldGhvZCB0byBjb21wYXJlIHBsYXRmb3JtIHNwZWNpZmljIGZpZWxkcwogICAgIHN0YXRp
YyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE1NCw2ICsxNTksOSBAQCBwcm90
ZWN0ZWQ6CiAgICAgSFRUUEhlYWRlck1hcCBtX2h0dHBIZWFkZXJGaWVsZHM7CiAgICAgbXV0YWJs
ZSBSZXNvdXJjZUxvYWRUaW1pbmcgbV9yZXNvdXJjZUxvYWRUaW1pbmc7CiAKKyAgICBtdXRhYmxl
IGJvb2wgbV9kaWRJbml0aWFsaXplQ2VydGlmaWNhdGVJbmZvOworICAgIG11dGFibGUgQ2VydGlm
aWNhdGVJbmZvIG1fY2VydGlmaWNhdGVJbmZvOworCiAgICAgaW50IG1faHR0cFN0YXR1c0NvZGU7
CiAgICAgdW5zaWduZWQgbV9jb25uZWN0aW9uSUQ7CiAKQEAgLTIwNiw2ICsyMTQsOSBAQCB2b2lk
IFJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUoRW5jb2RlCiAgICAgZW5jb2RlciA8PCBtX3Jl
c291cmNlTG9hZFRpbWluZzsKICAgICBlbmNvZGVyIDw8IG1faHR0cFN0YXR1c0NvZGU7CiAgICAg
ZW5jb2RlciA8PCBtX2Nvbm5lY3Rpb25JRDsKKyAgICBlbmNvZGVyIDw8IG1fZGlkSW5pdGlhbGl6
ZUNlcnRpZmljYXRlSW5mbzsKKyAgICBpZiAobV9kaWRJbml0aWFsaXplQ2VydGlmaWNhdGVJbmZv
KQorICAgICAgICBlbmNvZGVyIDw8IG1fY2VydGlmaWNhdGVJbmZvOwogfQogCiB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgpAQCAtMjQwLDYgKzI1MSwxMiBAQCBib29sIFJlc291cmNlUmVzcG9uc2VC
YXNlOjpkZWNvZGUoRGVjb2RlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3BvbnNlLm1fY29ubmVjdGlvbklEKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9kaWRJbml0aWFsaXplQ2VydGlm
aWNhdGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChyZXNwb25zZS5tX2Rp
ZEluaXRpYWxpemVDZXJ0aWZpY2F0ZUluZm8pIHsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXNwb25zZS5tX2NlcnRpZmljYXRlSW5mbykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQogICAgIHJlc3BvbnNlLm1faXNOdWxsID0gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJ
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9D
ZXJ0aWZpY2F0ZUluZm8uaAkocmV2aXNpb24gMTczMzU1KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm8uaDoxNzMzNTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mby5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENlcnRpZmljYXRlSW5m
b19oCisjZGVmaW5lIENlcnRpZmljYXRlSW5mb19oCisKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQ2VydGlmaWNhdGVJbmZvIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JF
X0VYUE9SVCBDZXJ0aWZpY2F0ZUluZm8oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBD
ZXJ0aWZpY2F0ZUluZm8oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IENlcnRpZmljYXRlSW5mbyhDRkFycmF5UmVmIGNlcnRpZmljYXRlQ2hhaW4p
OworCisgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUNoYWluKENGQXJyYXlSZWYgY2VydGlmaWNhdGVD
aGFpbikgeyBtX2NlcnRpZmljYXRlQ2hhaW4gPSBjZXJ0aWZpY2F0ZUNoYWluOyB9CisgICAgQ0ZB
cnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZUNo
YWluLmdldCgpOyB9CisKKyNpZm5kZWYgTkRFQlVHCisgICAgdm9pZCBkdW1wKCkgY29uc3Q7Cisj
ZW5kaWYKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbV9jZXJ0aWZpY2F0
ZUNoYWluOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBDZXJ0aWZp
Y2F0ZUluZm9faApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0
aWZpY2F0ZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0NlcnRpZmljYXRlSW5mby5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw3ICsyNiw4IEBACiAjaWZuZGVmIENlcnRpZmljYXRlSW5mb19oCiAjZGVmaW5lIENlcnRp
ZmljYXRlSW5mb19oCiAKLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNp
ZiBQTEFURk9STShDT0NPQSkKKwogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzQsOCArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBDZXJ0aWZpY2F0ZUluZm8gewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIENlcnRpZmlj
YXRlSW5mbygpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENlcnRpZmljYXRlSW5mbyhj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ2Vy
dGlmaWNhdGVJbmZvKENGQXJyYXlSZWYgY2VydGlmaWNhdGVDaGFpbik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgQ2VydGlmaWNhdGVJbmZvKFJldGFpblB0cjxDRkFycmF5UmVmPiBjZXJ0
aWZpY2F0ZUNoYWluKTsKIAogICAgIHZvaWQgc2V0Q2VydGlmaWNhdGVDaGFpbihDRkFycmF5UmVm
IGNlcnRpZmljYXRlQ2hhaW4pIHsgbV9jZXJ0aWZpY2F0ZUNoYWluID0gY2VydGlmaWNhdGVDaGFp
bjsgfQogICAgIENGQXJyYXlSZWYgY2VydGlmaWNhdGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1f
Y2VydGlmaWNhdGVDaGFpbi5nZXQoKTsgfQpAQCAtNDgsNiArNDgsMTIgQEAgcHJpdmF0ZToKICAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbV9jZXJ0aWZpY2F0ZUNoYWluOwogfTsKIAorI2Vsc2UK
KwordHlwZWRlZiBpbnQzMl90IENlcnRpZmljYXRlSW5mbzsKKworI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gQ2VydGlmaWNhdGVJbmZvX2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25z
ZS5oCShyZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlUmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTEgKzkyLDYgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVzcG9uc2UgKm5zVVJMUmVzcG9uc2Uo
KSBjb25zdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUksp
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDZXJ0aWZpY2F0ZUNoYWluKENGQXJyYXlSZWYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRkFycmF5UmVmPiBjZXJ0aWZpY2F0ZUNo
YWluKCkgY29uc3Q7Ci0jZW5kaWYKLQogICAgIGJvb2wgcGxhdGZvcm1SZXNwb25zZUlzVXBUb0Rh
dGUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtUmVzcG9uc2VJc1VwVG9EYXRlOyB9CiAKIHBy
aXZhdGU6CkBAIC0xMDQsNiArOTksOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9ybUxh
enlJbml0KEluaXRMZXZlbCk7CiAgICAgU3RyaW5nIHBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUo
KSBjb25zdDsKKyAgICBDZXJ0aWZpY2F0ZUluZm8gcGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKSBj
b25zdDsKKwogICAgIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4g
ZG9QbGF0Zm9ybUNvcHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNl
RGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQogICAgIHZvaWQgZG9QbGF0Zm9ybUFk
b3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4pIHsgfQogI2lm
IFBMQVRGT1JNKENPQ09BKQpAQCAtMTIxLDEwICsxMTgsNiBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIG11dGFibGUgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IG1fbnNSZXNw
b25zZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAg
IC8vIENlcnRpZmljYXRlIGNoYWluIGlzIG5vcm1hbGx5IHBhcnQgb2YgTlMvQ0ZVUkxSZXNwb25z
ZSwgYnV0IHRoZXJlIGlzIG5vIHdheSB0byByZS1hZGQgaXQgdG8gYSBkZXNlcmlhbGl6ZWQgcmVz
cG9uc2UgYWZ0ZXIgSVBDLgotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBtX2V4dGVybmFsQ2Vy
dGlmaWNhdGVDaGFpbjsKLSNlbmRpZgogfTsKIAogc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VS
ZXNwb25zZURhdGEgOiBwdWJsaWMgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YUJhc2Ug
ewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ2VydGlmaWNhdGVJ
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
Q2VydGlmaWNhdGVJbmZvLmgJKHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0NlcnRpZmljYXRlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENlcnRpZmljYXRlSW5mb19oCi0jZGVm
aW5lIENlcnRpZmljYXRlSW5mb19oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9u
c2UuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgQ2VydGlmaWNhdGVJbmZvIHsKLXB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBD
ZXJ0aWZpY2F0ZUluZm8oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDZXJ0aWZpY2F0
ZUluZm8oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IENlcnRpZmljYXRlSW5mbyhDRkFycmF5UmVmIGNlcnRpZmljYXRlQ2hhaW4pOwotCi0gICAg
dm9pZCBzZXRDZXJ0aWZpY2F0ZUNoYWluKENGQXJyYXlSZWYgY2VydGlmaWNhdGVDaGFpbikgeyBt
X2NlcnRpZmljYXRlQ2hhaW4gPSBjZXJ0aWZpY2F0ZUNoYWluOyB9Ci0gICAgQ0ZBcnJheVJlZiBj
ZXJ0aWZpY2F0ZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZUNoYWluLmdldCgp
OyB9Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBkdW1wKCkgY29uc3Q7Ci0jZW5kaWYKLQot
cHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbV9jZXJ0aWZpY2F0ZUNoYWluOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBDZXJ0aWZpY2F0ZUluZm9f
aApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ2VydGlmaWNhdGVJ
bmZvTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0NlcnRpZmljYXRlSW5mb01hYy5tbQkocmV2aXNpb24gMTczMzU1KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ2VydGlmaWNhdGVJbmZvTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiwxMiArMzIsNyBAQCBDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlSW5m
bygpCiB7CiB9CiAKLUNlcnRpZmljYXRlSW5mbzo6Q2VydGlmaWNhdGVJbmZvKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotICAgIDogbV9jZXJ0aWZpY2F0ZUNoYWluKHJlc3BvbnNl
LmNlcnRpZmljYXRlQ2hhaW4oKSkKLXsKLX0KLQotQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0
ZUluZm8oQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKQorQ2VydGlmaWNhdGVJbmZvOjpDZXJ0
aWZpY2F0ZUluZm8oUmV0YWluUHRyPENGQXJyYXlSZWY+IGNlcnRpZmljYXRlQ2hhaW4pCiAgICAg
OiBtX2NlcnRpZmljYXRlQ2hhaW4oY2VydGlmaWNhdGVDaGFpbikKIHsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VS
ZXNwb25zZU1hYy5tbQkocmV2aXNpb24gMTczMzYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTcyLDYgKzE3MiwxMiBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQo
CiAgICAgbV9pbml0TGV2ZWwgPSBpbml0TGV2ZWw7CiB9CiAKK0NlcnRpZmljYXRlSW5mbyBSZXNv
dXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpIGNvbnN0Cit7CisgICAgQVNT
RVJUKG1fbnNSZXNwb25zZSk7CisgICAgcmV0dXJuIENlcnRpZmljYXRlSW5mbyhhZG9wdENGKHdr
Q29weU5TVVJMUmVzcG9uc2VDZXJ0aWZpY2F0ZUNoYWluKG1fbnNSZXNwb25zZS5nZXQoKSkpKTsK
K30KKwogU3RyaW5nIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUo
KSBjb25zdAogewogICAgIHJldHVybiBbbnNVUkxSZXNwb25zZSgpIHN1Z2dlc3RlZEZpbGVuYW1l
XTsKQEAgLTE4NCwyMyArMTkwLDUgQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNv
bXBhcmUoYwogCiAjZW5kaWYgLy8gVVNFKENGTkVUV09SSykKIAotI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoQ0ZORVRXT1JLKQotCi12b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldENlcnRpZmlj
YXRlQ2hhaW4oQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKQotewotICAgIEFTU0VSVCghbV9u
c1Jlc3BvbnNlIHx8ICF3a0NvcHlOU1VSTFJlc3BvbnNlQ2VydGlmaWNhdGVDaGFpbihtX25zUmVz
cG9uc2UuZ2V0KCkpKTsKLSAgICBtX2V4dGVybmFsQ2VydGlmaWNhdGVDaGFpbiA9IGNlcnRpZmlj
YXRlQ2hhaW47Ci19Ci0KLVJldGFpblB0cjxDRkFycmF5UmVmPiBSZXNvdXJjZVJlc3BvbnNlOjpj
ZXJ0aWZpY2F0ZUNoYWluKCkgY29uc3QKLXsKLSAgICBpZiAobV9leHRlcm5hbENlcnRpZmljYXRl
Q2hhaW4pCi0gICAgICAgIHJldHVybiBtX2V4dGVybmFsQ2VydGlmaWNhdGVDaGFpbjsKLQotICAg
IHJldHVybiBhZG9wdENGKHdrQ29weU5TVVJMUmVzcG9uc2VDZXJ0aWZpY2F0ZUNoYWluKG5zVVJM
UmVzcG9uc2UoKSkpOwotfQotCi0jZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5F
VFdPUkspCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oCShy
ZXZpc2lvbiAxNzMzNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VSZXNwb25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpIHsgfQogICAgIFN0cmlu
ZyBwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3Q7CisgICAgQ2VydGlmaWNhdGVJbmZv
IHBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CiAKICAgICBQYXNzT3duUHRyPENyb3Nz
VGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShQYXNzT3duUHRy
PENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIGRh
dGE7IH0KICAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVz
b3VyY2VSZXNwb25zZURhdGE+KSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAko
cmV2aXNpb24gMTczMzU1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSwx
MSBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnVwZGF0ZUZyb21Tb3VwTWVzCiAgICAgc2V0RXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9jb250ZW50X2xlbmd0
aChoZWFkZXJzKSk7CiB9CiAKK0NlcnRpZmljYXRlSW5mbyBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0
Zm9ybUNlcnRpZmljYXRlSW5mbygpIGNvbnN0Cit7CisgICAgcmV0dXJuIENlcnRpZmljYXRlSW5m
byhtX2NlcnRpZmljYXRlLmdldCgpLCBtX3Rsc0Vycm9ycyk7Cit9CisKIFN0cmluZyBSZXNvdXJj
ZVJlc3BvbnNlOjpwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKIHsKICAgICByZXR1
cm4gZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihodHRwSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OkNvbnRlbnREaXNwb3NpdGlvbikpOwpJbmRleDogU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNp
b24gMTczMzY3KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTQtMDktMDcgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFBhc3MgY2VydGlmaWNhdGUgaW5mbyBhcyBwYXJ0IG9mIFJlc291cmNl
UmVzcG9uc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNjYxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyk6CisK
KyAgICAgICAgICAgIEluaXRpYWxpemUgdGhlIGNlcnRpZmljYXRlIGluZm8gb25seSBpZiByZXF1
ZXN0ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZVdpdGhDZXJ0aWZpY2F0ZUluZm8pOiBEZWxldGVkLgorCisgICAgICAgICAgICBSZW5hbWUg
ZGlkUmVjZWl2ZVJlc3BvbnNlV2l0aENlcnRpZmljYXRlSW5mbyAtPiBkaWRSZWNlaXZlUmVzcG9u
c2UgYXMgaXQgaXMgbm93IHBhcnQgb2YgdGhlIHJlc3BvbnNlLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorCisgICAgICAgICAg
ICBSZXF1ZXN0IGNlcnRpZmljYXRlIGluZm8gZm9yIHRoZSBtYWluIHJlc291cmNlIG9ubHkuCisK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0
TG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OmNlcnRpZmljYXRlSW5mbyk6CisKIDIwMTQtMDktMDYgIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBYUENQdHIgc2hvdWxkIGJlIGNv
bnZlcnRlZCBpbnRvIGFuIGFsbCBwdXJwb3NlIHNtYXJ0IHBvaW50ZXIgZm9yIG9zX29iamVjdHMK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTczMzU1KQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTcsNiArOTcsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxv
CiAgICAgLCBtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QocGFyYW1l
dGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KQogICAgICwgbV9p
c0xvYWRpbmdNYWluUmVzb3VyY2UocGFyYW1ldGVycy5pc01haW5SZXNvdXJjZSkKICAgICAsIG1f
ZGVmZXJzTG9hZGluZyhwYXJhbWV0ZXJzLmRlZmVyc0xvYWRpbmcpCisgICAgLCBtX25lZWRzQ2Vy
dGlmaWNhdGVJbmZvKHBhcmFtZXRlcnMubmVlZHNDZXJ0aWZpY2F0ZUluZm8pCiAgICAgLCBtX3Nh
bmRib3hFeHRlbnNpb25zQXJlQ29uc3VtZWQoZmFsc2UpCiAgICAgLCBtX2Nvbm5lY3Rpb24oY29u
bmVjdGlvbikKIHsKQEAgLTIxNiwxMCArMjE3LDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmUKIHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09
IG1faGFuZGxlKTsKIAorICAgIGlmIChtX25lZWRzQ2VydGlmaWNhdGVJbmZvKQorICAgICAgICBy
ZXNwb25zZS5pbml0aWFsaXplQ2VydGlmaWNhdGVJbmZvKCk7CisKICAgICBpZiAoaXNTeW5jaHJv
bm91cygpKQogICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEtPm1fcmVzcG9uc2UgPSByZXNw
b25zZTsKICAgICBlbHNlCi0gICAgICAgIHNlbmRBYm9ydGluZ09uRmFpbHVyZShNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZVdpdGhDZXJ0aWZpY2F0ZUluZm8o
cmVzcG9uc2UsIENlcnRpZmljYXRlSW5mbyhyZXNwb25zZSksIGlzTG9hZGluZ01haW5SZXNvdXJj
ZSgpKSk7CisgICAgICAgIHNlbmRBYm9ydGluZ09uRmFpbHVyZShNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgaXNMb2FkaW5nTWFpblJlc291
cmNlKCkpKTsKIAogICAgIC8vIG1faGFuZGxlIHdpbGwgYmUgbnVsbCBpZiB0aGUgcmVxdWVzdCBn
b3QgYWJvcnRlZCBhYm92ZS4KICAgICBpZiAoIW1faGFuZGxlKQpJbmRleDogU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJl
dmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNiArMTkwLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdDsK
ICAgICBib29sIG1faXNMb2FkaW5nTWFpblJlc291cmNlOwogICAgIGJvb2wgbV9kZWZlcnNMb2Fk
aW5nOworICAgIGJvb2wgbV9uZWVkc0NlcnRpZmljYXRlSW5mbzsKIAogICAgIFZlY3RvcjxSZWZQ
dHI8U2FuZGJveEV4dGVuc2lvbj4+IG1fcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uczsKICAg
ICBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBtX3Jlc291cmNlU2FuZGJveEV4dGVu
c2lvbnM7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxNzMz
NTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnM6Ok5ldHdvcmtSZQogICAgICwgaXNNYWluUmVzb3VyY2UoZmFs
c2UpCiAgICAgLCBkZWZlcnNMb2FkaW5nKGZhbHNlKQogICAgICwgc2hvdWxkQnVmZmVyUmVzb3Vy
Y2UoZmFsc2UpCisgICAgLCBuZWVkc0NlcnRpZmljYXRlSW5mbyhmYWxzZSkKIHsKIH0KIApAQCAt
OTYsNiArOTcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvCiAg
ICAgZW5jb2RlciA8PCBpc01haW5SZXNvdXJjZTsKICAgICBlbmNvZGVyIDw8IGRlZmVyc0xvYWRp
bmc7CiAgICAgZW5jb2RlciA8PCBzaG91bGRCdWZmZXJSZXNvdXJjZTsKKyAgICBlbmNvZGVyIDw8
IG5lZWRzQ2VydGlmaWNhdGVJbmZvOwogfQogCiBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzJiByZXN1bHQpCkBAIC0xNDgsNiArMTUwLDggQEAgYm9vbCBOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2hvdWxkQnVmZmVyUmVzb3VyY2UpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubmVlZHND
ZXJ0aWZpY2F0ZUluZm8pKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTczMzU1KQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc01haW5SZXNvdXJjZTsKICAgICBib29sIGRlZmVyc0xvYWRpbmc7CiAgICAgYm9vbCBzaG91
bGRCdWZmZXJSZXNvdXJjZTsKKyAgICBib29sIG5lZWRzQ2VydGlmaWNhdGVJbmZvOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAko
cmV2aXNpb24gMTczMzU1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw2ICsxNDIs
OCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMCiAgICAgbG9hZFBh
cmFtZXRlcnMuaXNNYWluUmVzb3VyY2UgPSByZXNvdXJjZSAmJiByZXNvdXJjZS0+dHlwZSgpID09
IENhY2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2U7CiAgICAgbG9hZFBhcmFtZXRlcnMuZGVmZXJz
TG9hZGluZyA9IHJlc291cmNlTG9hZGVyLT5kZWZlcnNMb2FkaW5nKCk7CiAgICAgbG9hZFBhcmFt
ZXRlcnMuc2hvdWxkQnVmZmVyUmVzb3VyY2UgPSByZXNvdXJjZSAmJiAocmVzb3VyY2UtPnR5cGUo
KSA9PSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCB8fCByZXNvdXJjZS0+dHlwZSgpID09
IENhY2hlZFJlc291cmNlOjpTY3JpcHQpOworICAgIC8vIENlcnRpZmljYXRlIGluZm8gaXMgYSBi
aWcgb2JqZWN0IHRvIHNlcmlhbGl6ZSBhbmQgd2Ugb25seSB1c2UgaXQgZm9yIHRoZSBtYWluIHJl
c291cmNlLgorICAgIGxvYWRQYXJhbWV0ZXJzLm5lZWRzQ2VydGlmaWNhdGVJbmZvID0gbG9hZFBh
cmFtZXRlcnMuaXNNYWluUmVzb3VyY2U7CiAKICAgICBBU1NFUlQoKGxvYWRQYXJhbWV0ZXJzLndl
YlBhZ2VJRCAmJiBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlEKSB8fCBsb2FkUGFyYW1ldGVycy5j
bGllbnRDcmVkZW50aWFsUG9saWN5ID09IERvTm90QXNrQ2xpZW50Rm9yQW55Q3JlZGVudGlhbHMp
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMiwzMyArMTAyLDIzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFNlbmRE
YXRhKHVpbnQKICAgICBtX2NvcmVMb2FkZXItPmRpZFNlbmREYXRhKGJ5dGVzU2VudCwgdG90YWxC
eXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlV2l0aENlcnRpZmljYXRlSW5mbyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgbmVlZHNDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvb2wg
bmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiB7CiAgICAgTE9HKE5ldHdv
cmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZVdp
dGhDZXJ0aWZpY2F0ZUluZm8gZm9yICclcycuIFN0YXR1cyAlZC4iLCBtX2NvcmVMb2FkZXItPnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwog
CiAgICAgUmVmPFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKIAotICAgIFJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2VDb3B5KHJlc3BvbnNlKTsKLQotICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCB1c2UgQ2VydGlmaWNhdGVJbmZvIHRvIGF2b2lkIHRoZSBwbGF0Zm9ybSBpZmRlZnMu
IFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NzI0LgotI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIHJlc3BvbnNlQ29weS5zZXRDZXJ0aWZpY2F0ZUNoYWluKGNl
cnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZUNoYWluKCkpOwotI2VsaWYgVVNFKFNPVVApCi0gICAg
cmVzcG9uc2VDb3B5LnNldFNvdXBNZXNzYWdlQ2VydGlmaWNhdGUoY2VydGlmaWNhdGVJbmZvLmNl
cnRpZmljYXRlKCkpOwotICAgIHJlc3BvbnNlQ29weS5zZXRTb3VwTWVzc2FnZVRMU0Vycm9ycyhj
ZXJ0aWZpY2F0ZUluZm8udGxzRXJyb3JzKCkpOwotI2VuZGlmCi0KLSAgICBpZiAobV9jb3JlTG9h
ZGVyLT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRG
YWxsYmFja0ZvclJlc3BvbnNlKG1fY29yZUxvYWRlci5nZXQoKSwgcmVzcG9uc2VDb3B5KSkKKyAg
ICBpZiAobV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9z
dCgpLT5tYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKG1fY29yZUxvYWRlci5nZXQoKSwgcmVz
cG9uc2UpKQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAvLyBS
ZWZyYWluIGZyb20gY2FsbGluZyBkaWRSZWNlaXZlUmVzcG9uc2UgaWYgUXVpY2tMb29rIHdpbGwg
Y29udmVydCB0aGlzIHJlc3BvbnNlLCBzaW5jZSB0aGUgTUlNRSB0eXBlIG9mIHRoZQogICAgIC8v
IGNvbnZlcnRlZCByZXNvdXJjZSBpc24ndCB5ZXQga25vd24uIFdlYlJlc291cmNlTG9hZGVyUXVp
Y2tMb29rRGVsZWdhdGUgd2lsbCBsYXRlciBjYWxsIGRpZFJlY2VpdmVSZXNwb25zZSB1cG9uCiAg
ICAgLy8gcmVjZWl2aW5nIHRoZSBjb252ZXJ0ZWQgZGF0YS4KLSAgICBtX2NvcmVMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPnNldFF1aWNrTG9va0hhbmRsZShRdWlja0xvb2tIYW5kbGU6OmNyZWF0
ZShyZXNvdXJjZUxvYWRlcigpLCByZXNwb25zZUNvcHkubnNVUkxSZXNwb25zZSgpKSk7CisgICAg
bV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zZXRRdWlja0xvb2tIYW5kbGUoUXVpY2tM
b29rSGFuZGxlOjpjcmVhdGUocmVzb3VyY2VMb2FkZXIoKSwgcmVzcG9uc2UubnNVUkxSZXNwb25z
ZSgpKSk7CiAgICAgaWYgKCFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnF1aWNrTG9v
a0hhbmRsZSgpKQogI2VuZGlmCi0gICAgICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3Bv
bnNlKHJlc3BvbnNlQ29weSk7CisgICAgICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3Bv
bnNlKHJlc3BvbnNlKTsKIAogICAgIC8vIElmIG1fY29yZUxvYWRlciBiZWNvbWVzIG51bGwgYXMg
YSByZXN1bHQgb2YgdGhlIGRpZFJlY2VpdmVSZXNwb25zZSBjYWxsYmFjaywgd2UgY2FuJ3QgdXNl
IHRoZSBzZW5kIGZ1bmN0aW9uKCkuIAogICAgIGlmICghbV9jb3JlTG9hZGVyKQpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmgJKHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlKTsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0
X3QgdG90YWxCeXRlc1RvQmVTZW50KTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZVdpdGhD
ZXJ0aWZpY2F0ZUluZm8oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZU1lc3NhZ2UpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoUmVzb3Vy
Y2VMb2FkKGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICB2b2lkIGRpZEZhaWxSZXNvdXJjZUxvYWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5t
ZXNzYWdlcy5pbgkocmV2aXNpb24gMTczMzU1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxMCArMjYsOSBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNl
CiAKICAgICBDYW5jZWxSZXNvdXJjZUxvYWRlcigpCiAKLSAgICAvLyBGSVhNRSAoTmV0d29ya1By
b2Nlc3MpOiBXZSdsbCBuZWVkIG11Y2ggbW9yZSBncmFudWxhcml0eSBmb3IgcmVzcG9uc2UgbWVz
c2FnZXMuCiAgICAgV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UpCiAgICAgRGlk
U2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQp
Ci0gICAgRGlkUmVjZWl2ZVJlc3BvbnNlV2l0aENlcnRpZmljYXRlSW5mbyhXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNh
dGVJbmZvLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQorICAg
IERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBi
b29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogICAgIERpZFJlY2Vp
dmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3Ro
KQogICAgIERpZEZpbmlzaFJlc291cmNlTG9hZChkb3VibGUgZmluaXNoVGltZSkKICAgICBEaWRG
YWlsUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMTczMzU1KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1NSw3ICs0NTUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZENvCiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KIAot
ICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tbWl0TG9hZEZv
ckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCks
IGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9mcmFtZUhhc0N1c3RvbUNv
bnRlbnRQcm92aWRlciwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fZnJhbWUtPmNvcmVGcmFtZSgp
LT5sb2FkZXIoKS5sb2FkVHlwZSgpKSwgQ2VydGlmaWNhdGVJbmZvKGRvY3VtZW50TG9hZGVyLnJl
c3BvbnNlKCkpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQo
KSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1p
dExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRp
b25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fZnJhbWVIYXND
dXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2ZyYW1lLT5jb3Jl
RnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCku
Y2VydGlmaWNhdGVJbmZvKCksIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJE
YXRhLmdldCgpKSkpOwogICAgIHdlYlBhZ2UtPmRpZENvbW1pdExvYWQobV9mcmFtZSk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cAkocmV2aXNpb24gMTczMzU1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE3LDcgKzQxNyw3IEBAIFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbyBXZWJGcmFtZTo6Y2VydGkKICAgICBpZiAoIWRvY3VtZW50TG9hZGVy
KQogICAgICAgICByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7CiAKLSAgICByZXR1cm4gQ2VydGlm
aWNhdGVJbmZvKGRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpKTsKKyAgICByZXR1cm4gZG9jdW1l
bnRMb2FkZXItPnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCk7CiB9CiAKIFN0cmluZyBXZWJG
cmFtZTo6aW5uZXJUZXh0KCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237770</attachid>
            <date>2014-09-08 02:32:26 -0700</date>
            <delta_ts>2014-09-08 02:39:11 -0700</delta_ts>
            <desc>patch 4</desc>
            <filename>certificate-info-8.patch</filename>
            <type>text/plain</type>
            <size>33698</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzM2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE0LTA5LTA3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBQYXNzIGNlcnRpZmljYXRlIGlu
Zm8gYXMgcGFydCBvZiBSZXNvdXJjZVJlc3BvbnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY2MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY3VycmVudCB3YXkgb2YgcGFzc2luZyBjZXJ0aWZp
Y2F0ZSBpbmZvIHNlcGFyYXRlbHkgZnJvbSBSZXNvdXJjZVJlc3BvbnNlIGFuZCB0aGVuIGphbW1p
bmcgaXQgYmFjaworICAgICAgICBpcyBjb21wbGV4IGFuZCBjb25mdXNpbmcuIFRoaXMgcGF0Y2gg
bWFrZXMgaXQgYSB0cnVlIHBhcnQgb2YgdGhlIFJlc291cmNlUmVzcG9uc2UuCisKKyAgICAgICAg
V2l0aCB0aGlzIHBhdGNoIHdlIGFsc28gb25seSBjcmVhdGUgYW5kIHBhc3MgdGhlIGNlcnRpZmlj
YXRlIGluZm8gb2JqZWN0IGZvciB0aGUgbWFpbiByZXNvdXJjZS4gSXQgaXMKKyAgICAgICAgYSBi
aWcgYW5kIGNvbXBsZXggb2JqZWN0IGFuZCB3ZSBuZXZlciBsb29rIGludG8gaXQgZm9yIGFueSBv
dGhlciByZXNvdXJjZSB0eXBlLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UpOgorCisg
ICAgICAgICAgICBNYXJrIGluaXRpYWxpemVkIGZvciBzeW50aGV0aWMgcmVzcG9uc2VzLCB1bml0
aWFsaXplZCBmb3IgdGhvc2UgYmFja2VkIGJ5IGEgcGxhdGZvcm0gcmVxdWVzdC4KKworICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmluaXRpYWxpemVDZXJ0aWZpY2F0ZUlu
Zm8pOgorCisgICAgICAgICAgICBDYWxsaW5nIHRoaXMgcHVsbHMgdGhlIGNlcnRpZmljYXRlIGlu
Zm8gb3V0IGZyb20gdGhlIHBsYXRmb3JtIHR5cGUuCisgICAgICAgICAgICBJdCBzaG91ZCBvbmx5
IGJlIHVzZWQgZm9yIHJlc291cmNlcyB0aGF0IG5lZWQgaXQuCisKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2VCYXNlOjpwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUpOgorCisgICAgICAgICAg
ICBFbmNvZGUgYW5kIGRlY29kZSBjZXJ0aWZpY2F0ZSBpbmZvIGlmIGl0IGlzIHByZXNlbnQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm8uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm9NYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnNldENlcnRpZmljYXRlQ2hhaW4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6Y2VydGlmaWNhdGVDaGFpbik6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZp
Y2F0ZUluZm8pOgorCiAyMDE0LTA5LTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgogCiAgICAgICAgIFtGdWxsc2NyZWVuXSBBZGQgYSBzaXRlLXNwZWNpZmljIGhhY2sgdG8gd29y
ayBhcm91bmQgImZsYXNoIG9uIGV4aXQiIGJlaGF2aW9yIG9mIFlvdVR1YmUuY29tLgpJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE3MzM1NikKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC00OTEsOCArNDkxLDcgQEAgX19aTjdXZWJD
b3JlMTVCYWNrRm9yd2FyZExpc3Q4YmFja0l0ZW1FdgogX19aTjdXZWJDb3JlMTVCYWNrRm9yd2Fy
ZExpc3Q4Y2FwYWNpdHlFdgogX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q5Z29Gb3J3YXJk
RXYKIF9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0QzFFUE5TXzRQYWdlRQotX19aTjdXZWJD
b3JlMTVDZXJ0aWZpY2F0ZUluZm9DMUVQSzlfX0NGQXJyYXkKLV9fWk43V2ViQ29yZTE1Q2VydGlm
aWNhdGVJbmZvQzFFUktOU18xNlJlc291cmNlUmVzcG9uc2VFCitfX1pON1dlYkNvcmUxNUNlcnRp
ZmljYXRlSW5mb0MxRU4zV1RGOVJldGFpblB0cklQSzlfX0NGQXJyYXlFRQogX19aTjdXZWJDb3Jl
MTVDZXJ0aWZpY2F0ZUluZm9DMUV2CiBfX1pON1dlYkNvcmUxNURPTVdyYXBwZXJXb3JsZDEzY2xl
YXJXcmFwcGVyc0V2CiBfX1pON1dlYkNvcmUxNURPTVdyYXBwZXJXb3JsZEQxRXYKQEAgLTcxNiw3
ICs3MTUsNiBAQCBfX1pON1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05TXzE1CiBfX1pO
N1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RU5TXzEz
RnJhbWVMb2FkVHlwZUViCiBfX1pON1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05TXzE1
UmVzb3VyY2VSZXF1ZXN0RU5TXzE0TmF2aWdhdGlvblR5cGVFCiBfX1pON1dlYkNvcmUxNk5hdmln
YXRpb25BY3Rpb25DMUV2Ci1fX1pON1dlYkNvcmUxNlJlc291cmNlUmVzcG9uc2UxOXNldENlcnRp
ZmljYXRlQ2hhaW5FUEs5X19DRkFycmF5CiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIx
MGluaXRTY3JpcHRFUk5TXzE1RE9NV3JhcHBlcldvcmxkRQogX19aTjdXZWJDb3JlMTZTY3JpcHRD
b250cm9sbGVyMTFjcmVhdGVXb3JsZEV2CiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIx
M2V4ZWN1dGVTY3JpcHRFUktOM1dURjZTdHJpbmdFYgpAQCAtMTc4MSw3ICsxNzc5LDYgQEAgX19a
Tks3V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDIwaXNEYXRlVAogX19aTks3V2ViQ29yZTE2SFRN
TElucHV0RWxlbWVudDZpc1RleHRFdgogX19aTks3V2ViQ29yZTE2SWNvbkRhdGFiYXNlQmFzZTEy
ZGF0YWJhc2VQYXRoRXYKIF9fWk5LN1dlYkNvcmUxNlJlc291cmNlUmVzcG9uc2UxM25zVVJMUmVz
cG9uc2VFdgotX19aTks3V2ViQ29yZTE2UmVzb3VyY2VSZXNwb25zZTE2Y2VydGlmaWNhdGVDaGFp
bkV2CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTdpc0NvbnRlbnRFZGl0YWJsZUV2
CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTdpc0luUGFzc3dvcmRGaWVsZEV2CiBf
X1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTd0b05vcm1hbGl6ZWRSYW5nZUV2CkBAIC0x
ODMwLDExICsxODI3LDEzIEBAIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTJp
c0EKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTJsYXN0TW9kaWZpZWRFdgog
X19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxNGh0dHBTdGF0dXNDb2RlRXYKIF9f
Wk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTRodHRwU3RhdHVzVGV4dEV2CitfX1pO
SzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTE1Y2VydGlmaWNhdGVJbmZvRXYKIF9fWk5L
N1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTVodHRwSGVhZGVyRmllbGRFTlNfMTRIVFRQ
SGVhZGVyTmFtZUUKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTZodHRwSGVh
ZGVyRmllbGRzRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTZ0ZXh0RW5j
b2RpbmdOYW1lRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTdzdWdnZXN0
ZWRGaWxlbmFtZUV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTIxZXhwZWN0
ZWRDb250ZW50TGVuZ3RoRXYKK19fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjVp
bml0aWFsaXplQ2VydGlmaWNhdGVJbmZvRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9u
c2VCYXNlM3VybEV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTZpc0hUVFBF
dgogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U4bGF6eUluaXRFTlMwXzlJbml0
TGV2ZWxFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oJKHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5Nzk4LDYgKzE5Nzk4LDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcU3luY2hyb25v
dXNMb2FkZXJDbGllbnQuaCIgLz4KICAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXG5ldHdvcmtcY2ZcQXV0aGVudGljYXRpb25DRi5oIiAvPgogICAgIDxDdXN0b21CdWls
ZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5oIiAvPgorICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0
d29ya1xtYWNcQ2VydGlmaWNhdGVJbmZvLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXGNmXERvd25sb2FkQnVuZGxlLmgiIC8+CiAgICAgPEN1c3RvbUJ1
aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXEZvcm1EYXRhU3RyZWFtQ0ZO
ZXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2Zc
TG9hZGVyUnVuTG9vcENGLmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTkxOTksNyArOTE5OSw3IEBACiAJCTVEQjFCQzY5MTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFu
c2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1REZFQkFCNjE4NTkyQjZEMDBDNzVCRUIgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF2YWlsYWJpbGl0eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RjJEQkJFNzE3OEUzMzJEMDAxNDE0ODYgLyogQ2Vy
dGlmaWNhdGVJbmZvTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQ2VydGlmaWNhdGVJbmZvTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
RjJEQkJFODE3OEUzMzY5MDAxNDE0ODYgLyogQ2VydGlmaWNhdGVJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENlcnRpZmljYXRlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1RjJEQkJFODE3OEUzMzY5MDAxNDE0ODYgLyogQ2VydGlmaWNhdGVJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENlcnRpZmljYXRlSW5mby5oOyBw
YXRoID0gLi4vbWFjL0NlcnRpZmljYXRlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1RkM3REMyNkNGRTI1NjMyMDBCODVBRTUgLyogSlNFdmVudFRhcmdldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFdmVudFRhcmdldC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1RkUxRDI5MTE3OEZEMUYzMDAxQUEzQzMgLyogU2VjdXJpdHkuZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBTZWN1cml0eS5mcmFtZXdvcms7IHBhdGggPSBTeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNE
S1JPT1Q7IH07CiAJCTYyNkNERTBDMTE0MDQyNEMwMDFFNUE2OCAvKiBTcGF0aWFsTmF2aWdhdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGF0aWFsTmF2aWdh
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjMxNyw3ICsxNjMxNyw2
IEBACiAJCQkJNTE0Qzc2NDIwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmgg
Ki8sCiAJCQkJNTE0Qzc2NDMwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLm1t
ICovLAogCQkJCUUxNjRBMkVCMTkxQUU2MzUwMDEwNzM3RCAvKiBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2VNYWMubW0gKi8sCi0JCQkJNUYyREJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRl
SW5mby5oICovLAogCQkJCTVGMkRCQkU3MTc4RTMzMkQwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUlu
Zm9NYWMubW0gKi8sCiAJCQkJRTE0MjRDOEYxNjRCNDYwQjAwRjMyRDQwIC8qIENvb2tpZUphck1h
Yy5tbSAqLywKIAkJCQlFMTNGMDFGMDEyNzBFMTkwMDBERkJBNzEgLyogQ29va2llU3RvcmFnZU1h
Yy5tbSAqLywKQEAgLTIwNTY5LDYgKzIwNTY4LDcgQEAKIAkJCQk3RUU2ODQ0QzEyRDI2RTM4MDBF
Nzk0MTUgLyogQXV0aGVudGljYXRpb25DRi5jcHAgKi8sCiAJCQkJN0VFNjg0NEQxMkQyNkUzODAw
RTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ0YuaCAqLywKIAkJCQk3RUU2ODQ0RTEyRDI2RTM4MDBF
Nzk0MTUgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAqLywKKwkJCQk1RjJEQkJFODE3OEUz
MzY5MDAxNDE0ODYgLyogQ2VydGlmaWNhdGVJbmZvLmggKi8sCiAJCQkJN0VFNjg0NEYxMkQyNkUz
ODAwRTc5NDE1IC8qIENvb2tpZUphckNGTmV0LmNwcCAqLywKIAkJCQk3RUU2ODQ1MDEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0LmNwcCAqLywKIAkJCQk3RUU2ODQ1MjEyRDI2
RTM4MDBFNzk0MTUgLyogQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAgKi8sCkBAIC0yMTA3Miw3
ICsyMTA3Miw2IEBACiAJCQkJN0VFNjg0NzMxMkQyNkU1NTAwRTc5NDE1IC8qIGNmICovLAogCQkJ
CTdFNERFMTBCMTk4QjEwODEwMDUxQ0IwMiAvKiBjb2NvYSAqLywKIAkJCQk1MTI2RTZCNjBBMkUz
QUVGMDA1QzI5RkEgLyogaWNvbiAqLywKLQkJCQlDRTc5RDY4NjE3RjIyMEVEMDA4MTVDMDAgLyog
aW9zICovLAogCQkJCTkzQTFFQUEyMEE1NjM0RDgwMDY5NjBBMCAvKiBtYWMgKi8sCiAJCQkJRTE0
MjRDOTExNjRCNTJDODAwRjMyRDQwIC8qIENvb2tpZUphci5jcHAgKi8sCiAJCQkJRTE0MjRDOTIx
NjRCNTJDODAwRjMyRDQwIC8qIENvb2tpZUphci5oICovLApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJ
KHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIGlu
bGluZSBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBSZXNvdXJjZVIKIAogUmVzb3VyY2VSZXNwb25z
ZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKCkgIAogICAgIDogbV9leHBlY3RlZENvbnRlbnRM
ZW5ndGgoMCkKKyAgICAsIG1fZGlkSW5pdGlhbGl6ZUNlcnRpZmljYXRlSW5mbyhmYWxzZSkKICAg
ICAsIG1faHR0cFN0YXR1c0NvZGUoMCkKICAgICAsIG1fY29ubmVjdGlvbklEKDApCiAgICAgLCBt
X2NhY2hlQ29udHJvbE1heEFnZSgwKQpAQCAtNzIsNiArNzMsNyBAQCBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAg
ICwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgoZXhwZWN0ZWRMZW5ndGgpCiAgICAgLCBtX3RleHRF
bmNvZGluZ05hbWUodGV4dEVuY29kaW5nTmFtZSkKKyAgICAsIG1fZGlkSW5pdGlhbGl6ZUNlcnRp
ZmljYXRlSW5mbyh0cnVlKQogICAgICwgbV9odHRwU3RhdHVzQ29kZSgwKQogICAgICwgbV9jb25u
ZWN0aW9uSUQoMCkKICAgICAsIG1fY2FjaGVDb250cm9sTWF4QWdlKDApCkBAIC0yMDUsNyArMjA3
LDE4IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFRleHRFbmNvZGkKICAgICAvLyBG
SVhNRTogU2hvdWxkIGludmFsaWRhdGUgb3IgdXBkYXRlIHBsYXRmb3JtIHJlc3BvbnNlIGlmIHBy
ZXNlbnQuCiB9CiAKLS8vIEZJWE1FIHNob3VsZCBjb21wdXRlIHRoaXMgb24gdGhlIGZseQordm9p
ZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aW5pdGlhbGl6ZUNlcnRpZmljYXRlSW5mbygpIGNvbnN0
Cit7CisgICAgbV9jZXJ0aWZpY2F0ZUluZm8gPSBzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJjZVJl
c3BvbnNlKj4odGhpcyktPnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCk7CisgICAgbV9kaWRJbml0
aWFsaXplQ2VydGlmaWNhdGVJbmZvID0gdHJ1ZTsKK30KKworQ2VydGlmaWNhdGVJbmZvIFJlc291
cmNlUmVzcG9uc2VCYXNlOjpjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAoreworICAgIEFTU0VSVCht
X2RpZEluaXRpYWxpemVDZXJ0aWZpY2F0ZUluZm8pOworICAgIHJldHVybiBtX2NlcnRpZmljYXRl
SW5mbzsKK30KKwogU3RyaW5nIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzdWdnZXN0ZWRGaWxlbmFt
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJlc291cmNlUmVzcG9u
c2UqPih0aGlzKS0+cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2Uu
aAkocmV2aXNpb24gMTczMzU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAj
aWZuZGVmIFJlc291cmNlUmVzcG9uc2VCYXNlX2gKICNkZWZpbmUgUmVzb3VyY2VSZXNwb25zZUJh
c2VfaAogCisjaW5jbHVkZSAiQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRl
ck1hcC5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFRpbWluZy5o
IgpAQCAtOTEsNiArOTIsOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlz
QXR0YWNobWVudCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdWdnZXN0ZWRG
aWxlbmFtZSgpIGNvbnN0OworCisgICAgdm9pZCBpbml0aWFsaXplQ2VydGlmaWNhdGVJbmZvKCkg
Y29uc3Q7CisgICAgQ2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0OwogICAg
IAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gcGFyc2VkIHZhbHVlcyBvZiB0aGUgY29y
cmVzcG9uZGluZyByZXNwb25zZSBoZWFkZXJzLgogICAgIC8vIE5hTiBtZWFucyB0aGF0IHRoZSBo
ZWFkZXIgd2FzIG5vdCBwcmVzZW50IG9yIGhhZCBpbnZhbGlkIHZhbHVlLgpAQCAtMTQxLDcgKzE0
NSw4IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIFRoZSBSZXNvdXJjZVJlc3BvbnNlIHN1YmNsYXNz
IG1heSAic2hhZG93IiB0aGlzIG1ldGhvZCB0byBsYXppbHkgaW5pdGlhbGl6ZSBwbGF0Zm9ybSBz
cGVjaWZpYyBmaWVsZHMKICAgICB2b2lkIHBsYXRmb3JtTGF6eUluaXQoSW5pdExldmVsKSB7IH0K
LSAgICBTdHJpbmcgcGxhdGZvcm1TdWdnZXN0ZWRGaWxlTmFtZSgpIHsgcmV0dXJuIFN0cmluZygp
OyB9CisgICAgQ2VydGlmaWNhdGVJbmZvIHBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkgY29uc3Qg
eyByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7IH07CisgICAgU3RyaW5nIHBsYXRmb3JtU3VnZ2Vz
dGVkRmlsZU5hbWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogCiAgICAgLy8gVGhlIFJl
c291cmNlUmVzcG9uc2Ugc3ViY2xhc3MgbWF5ICJzaGFkb3ciIHRoaXMgbWV0aG9kIHRvIGNvbXBh
cmUgcGxhdGZvcm0gc3BlY2lmaWMgZmllbGRzCiAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21w
YXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyBy
ZXR1cm4gdHJ1ZTsgfQpAQCAtMTU0LDYgKzE1OSw5IEBAIHByb3RlY3RlZDoKICAgICBIVFRQSGVh
ZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKICAgICBtdXRhYmxlIFJlc291cmNlTG9hZFRpbWlu
ZyBtX3Jlc291cmNlTG9hZFRpbWluZzsKIAorICAgIG11dGFibGUgYm9vbCBtX2RpZEluaXRpYWxp
emVDZXJ0aWZpY2F0ZUluZm87CisgICAgbXV0YWJsZSBDZXJ0aWZpY2F0ZUluZm8gbV9jZXJ0aWZp
Y2F0ZUluZm87CisKICAgICBpbnQgbV9odHRwU3RhdHVzQ29kZTsKICAgICB1bnNpZ25lZCBtX2Nv
bm5lY3Rpb25JRDsKIApAQCAtMjA2LDYgKzIxNCw5IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJh
c2U6OmVuY29kZShFbmNvZGUKICAgICBlbmNvZGVyIDw8IG1fcmVzb3VyY2VMb2FkVGltaW5nOwog
ICAgIGVuY29kZXIgPDwgbV9odHRwU3RhdHVzQ29kZTsKICAgICBlbmNvZGVyIDw8IG1fY29ubmVj
dGlvbklEOworICAgIGVuY29kZXIgPDwgbV9kaWRJbml0aWFsaXplQ2VydGlmaWNhdGVJbmZvOwor
ICAgIGlmIChtX2RpZEluaXRpYWxpemVDZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgIGVuY29kZXIg
PDwgbV9jZXJ0aWZpY2F0ZUluZm87CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0y
NDAsNiArMjUxLDEyIEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29kZShEZWNvZGUK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2Uu
bV9jb25uZWN0aW9uSUQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXNwb25zZS5tX2RpZEluaXRpYWxpemVDZXJ0aWZpY2F0ZUluZm8pKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHJlc3BvbnNlLm1fZGlkSW5pdGlhbGl6ZUNlcnRpZmlj
YXRlSW5mbykgeworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fY2VydGlm
aWNhdGVJbmZvKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgcmVzcG9u
c2UubV9pc051bGwgPSBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJ
KHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXNwb25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMSArOTIsNiBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxSZXNwb25zZSAqbnNVUkxSZXNwb25zZSgpIGNv
bnN0OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENlcnRpZmljYXRlQ2hhaW4oQ0ZBcnJheVJlZik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNlcnRpZmljYXRlQ2hhaW4o
KSBjb25zdDsKLSNlbmRpZgotCiAgICAgYm9vbCBwbGF0Zm9ybVJlc3BvbnNlSXNVcFRvRGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1SZXNwb25zZUlzVXBUb0RhdGU7IH0KIAogcHJpdmF0
ZToKQEAgLTEwNCw2ICs5OSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBsYXRmb3JtTGF6eUlu
aXQoSW5pdExldmVsKTsKICAgICBTdHJpbmcgcGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpIGNv
bnN0OworICAgIENlcnRpZmljYXRlSW5mbyBwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpIGNvbnN0
OworCiAgICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkb1Bs
YXRmb3JtQ29weURhdGEoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRh
PiBkYXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9CiAgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQo
UGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPikgeyB9CiAjaWYgUExB
VEZPUk0oQ09DT0EpCkBAIC0xMjEsMTAgKzExOCw2IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gbV9uc1Jlc3BvbnNl
OwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgLy8g
Q2VydGlmaWNhdGUgY2hhaW4gaXMgbm9ybWFsbHkgcGFydCBvZiBOUy9DRlVSTFJlc3BvbnNlLCBi
dXQgdGhlcmUgaXMgbm8gd2F5IHRvIHJlLWFkZCBpdCB0byBhIGRlc2VyaWFsaXplZCByZXNwb25z
ZSBhZnRlciBJUEMuCi0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IG1fZXh0ZXJuYWxDZXJ0aWZp
Y2F0ZUNoYWluOwotI2VuZGlmCiB9OwogCiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3Bv
bnNlRGF0YSA6IHB1YmxpYyBDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhQmFzZSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0
aWZpY2F0ZUluZm8uaAkocmV2aXNpb24gMTczMzU1KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm8uaDoxNzMzNTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm8uaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDZXJ0aWZpY2F0ZUluZm9f
aAorI2RlZmluZSBDZXJ0aWZpY2F0ZUluZm9faAorCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIENlcnRpZmljYXRlSW5mbyB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9F
WFBPUlQgQ2VydGlmaWNhdGVJbmZvKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ2Vy
dGlmaWNhdGVJbmZvKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBDZXJ0aWZpY2F0ZUluZm8oQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKTsK
KworICAgIHZvaWQgc2V0Q2VydGlmaWNhdGVDaGFpbihDRkFycmF5UmVmIGNlcnRpZmljYXRlQ2hh
aW4pIHsgbV9jZXJ0aWZpY2F0ZUNoYWluID0gY2VydGlmaWNhdGVDaGFpbjsgfQorICAgIENGQXJy
YXlSZWYgY2VydGlmaWNhdGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGVDaGFp
bi5nZXQoKTsgfQorCisjaWZuZGVmIE5ERUJVRworICAgIHZvaWQgZHVtcCgpIGNvbnN0OworI2Vu
ZGlmCisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IG1fY2VydGlmaWNhdGVD
aGFpbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gQ2VydGlmaWNh
dGVJbmZvX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NlcnRp
ZmljYXRlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL0NlcnRpZmljYXRlSW5mby5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm8uaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNyArMjYsOCBAQAogI2lmbmRlZiBDZXJ0aWZpY2F0ZUluZm9faAogI2RlZmluZSBDZXJ0
aWZpY2F0ZUluZm9faAogCi0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTM0LDggKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQ2VydGlmaWNhdGVJbmZvIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBDZXJ0aWZp
Y2F0ZUluZm8oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDZXJ0aWZpY2F0ZUluZm8o
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENl
cnRpZmljYXRlSW5mbyhDRkFycmF5UmVmIGNlcnRpZmljYXRlQ2hhaW4pOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IENlcnRpZmljYXRlSW5mbyhSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY2Vy
dGlmaWNhdGVDaGFpbik7CiAKICAgICB2b2lkIHNldENlcnRpZmljYXRlQ2hhaW4oQ0ZBcnJheVJl
ZiBjZXJ0aWZpY2F0ZUNoYWluKSB7IG1fY2VydGlmaWNhdGVDaGFpbiA9IGNlcnRpZmljYXRlQ2hh
aW47IH0KICAgICBDRkFycmF5UmVmIGNlcnRpZmljYXRlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBt
X2NlcnRpZmljYXRlQ2hhaW4uZ2V0KCk7IH0KQEAgLTQ4LDYgKzQ4LDEyIEBAIHByaXZhdGU6CiAg
ICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IG1fY2VydGlmaWNhdGVDaGFpbjsKIH07CiAKKyNlbHNl
CisKK3R5cGVkZWYgaW50MzJfdCBDZXJ0aWZpY2F0ZUluZm87CisKKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIENlcnRpZmljYXRlSW5mb19oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm9NYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ2VydGlmaWNh
dGVJbmZvTWFjLm1tCShyZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm9NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMy
LDEyICszMiw3IEBAIENlcnRpZmljYXRlSW5mbzo6Q2VydGlmaWNhdGVJbmZvKCkKIHsKIH0KIAot
Q2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZUluZm8oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCi0gICAgOiBtX2NlcnRpZmljYXRlQ2hhaW4ocmVzcG9uc2UuY2VydGlmaWNhdGVD
aGFpbigpKQotewotfQotCi1DZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlSW5mbyhDRkFycmF5
UmVmIGNlcnRpZmljYXRlQ2hhaW4pCitDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlSW5mbyhS
ZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY2VydGlmaWNhdGVDaGFpbikKICAgICA6IG1fY2VydGlmaWNh
dGVDaGFpbihjZXJ0aWZpY2F0ZUNoYWluKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1t
CShyZXZpc2lvbiAxNzMzNjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDEy
IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdCgKICAgICBtX2luaXRM
ZXZlbCA9IGluaXRMZXZlbDsKIH0KIAorQ2VydGlmaWNhdGVJbmZvIFJlc291cmNlUmVzcG9uc2U6
OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9uc1Jlc3Bv
bnNlKTsKKyAgICByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKGFkb3B0Q0Yod2tDb3B5TlNVUkxSZXNw
b25zZUNlcnRpZmljYXRlQ2hhaW4obV9uc1Jlc3BvbnNlLmdldCgpKSkpOworfQorCiBTdHJpbmcg
UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFtuc1VSTFJlc3BvbnNlKCkgc3VnZ2VzdGVkRmlsZW5hbWVdOwpAQCAtMTg0LDIz
ICsxOTAsNSBAQCBib29sIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShjCiAKICNl
bmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5F
VFdPUkspCi0KLXZvaWQgUmVzb3VyY2VSZXNwb25zZTo6c2V0Q2VydGlmaWNhdGVDaGFpbihDRkFy
cmF5UmVmIGNlcnRpZmljYXRlQ2hhaW4pCi17Ci0gICAgQVNTRVJUKCFtX25zUmVzcG9uc2UgfHwg
IXdrQ29weU5TVVJMUmVzcG9uc2VDZXJ0aWZpY2F0ZUNoYWluKG1fbnNSZXNwb25zZS5nZXQoKSkp
OwotICAgIG1fZXh0ZXJuYWxDZXJ0aWZpY2F0ZUNoYWluID0gY2VydGlmaWNhdGVDaGFpbjsKLX0K
LQotUmV0YWluUHRyPENGQXJyYXlSZWY+IFJlc291cmNlUmVzcG9uc2U6OmNlcnRpZmljYXRlQ2hh
aW4oKSBjb25zdAotewotICAgIGlmIChtX2V4dGVybmFsQ2VydGlmaWNhdGVDaGFpbikKLSAgICAg
ICAgcmV0dXJuIG1fZXh0ZXJuYWxDZXJ0aWZpY2F0ZUNoYWluOwotCi0gICAgcmV0dXJuIGFkb3B0
Q0Yod2tDb3B5TlNVUkxSZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4obnNVUkxSZXNwb25zZSgpKSk7
Ci19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlLmgJKHJldmlzaW9uIDE3MzM1
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3Bv
bnNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgZG9VcGRhdGVSZXNvdXJjZVJlc3BvbnNlKCkgeyB9CiAgICAgU3RyaW5nIHBsYXRmb3JtU3Vn
Z2VzdGVkRmlsZW5hbWUoKSBjb25zdDsKKyAgICBDZXJ0aWZpY2F0ZUluZm8gcGxhdGZvcm1DZXJ0
aWZpY2F0ZUluZm8oKSBjb25zdDsKIAogICAgIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJj
ZVJlc3BvbnNlRGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRS
ZXNvdXJjZVJlc3BvbnNlRGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQogICAgIHZv
aWQgZG9QbGF0Zm9ybUFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNl
RGF0YT4pIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlUmVzcG9uc2VTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCShyZXZpc2lvbiAxNzMz
NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNw
b25zZVNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDExIEBAIHZvaWQgUmVz
b3VyY2VSZXNwb25zZTo6dXBkYXRlRnJvbVNvdXBNZXMKICAgICBzZXRFeHBlY3RlZENvbnRlbnRM
ZW5ndGgoc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRlbnRfbGVuZ3RoKGhlYWRlcnMpKTsK
IH0KIAorQ2VydGlmaWNhdGVJbmZvIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNh
dGVJbmZvKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKG1fY2VydGlmaWNh
dGUuZ2V0KCksIG1fdGxzRXJyb3JzKTsKK30KKwogU3RyaW5nIFJlc291cmNlUmVzcG9uc2U6OnBs
YXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdAogewogICAgIHJldHVybiBmaWxlbmFtZUZy
b21IVFRQQ29udGVudERpc3Bvc2l0aW9uKGh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6
Q29udGVudERpc3Bvc2l0aW9uKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzMzNjcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBA
QAorMjAxNC0wOS0wNyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAg
ICAgUGFzcyBjZXJ0aWZpY2F0ZSBpbmZvIGFzIHBhcnQgb2YgUmVzb3VyY2VSZXNwb25zZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NjExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKToKKworICAgICAgICAgICAg
SW5pdGlhbGl6ZSB0aGUgY2VydGlmaWNhdGUgaW5mbyBvbmx5IGlmIHJlcXVlc3RlZC4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlV2l0aENlcnRp
ZmljYXRlSW5mbyk6IERlbGV0ZWQuCisKKyAgICAgICAgICAgIFJlbmFtZSBkaWRSZWNlaXZlUmVz
cG9uc2VXaXRoQ2VydGlmaWNhdGVJbmZvIC0+IGRpZFJlY2VpdmVSZXNwb25zZSBhcyBpdCBpcyBu
b3cgcGFydCBvZiB0aGUgcmVzcG9uc2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisKKyAgICAgICAgICAgIFJlcXVlc3QgY2Vy
dGlmaWNhdGUgaW5mbyBmb3IgdGhlIG1haW4gcmVzb3VyY2Ugb25seS4KKworICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZTo6Y2VydGlmaWNhdGVJbmZvKToKKwogMjAxNC0wOS0wNiAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIFhQQ1B0ciBzaG91bGQgYmUgY29udmVydGVkIGludG8g
YW4gYWxsIHB1cnBvc2Ugc21hcnQgcG9pbnRlciBmb3Igb3Nfb2JqZWN0cwpJbmRleDogU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCShyZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5Nyw3
IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG8KICAgICAsIG1fc2hv
dWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdChwYXJhbWV0ZXJzLnNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpCiAgICAgLCBtX2lzTG9hZGluZ01haW5S
ZXNvdXJjZShwYXJhbWV0ZXJzLmlzTWFpblJlc291cmNlKQogICAgICwgbV9kZWZlcnNMb2FkaW5n
KHBhcmFtZXRlcnMuZGVmZXJzTG9hZGluZykKKyAgICAsIG1fbmVlZHNDZXJ0aWZpY2F0ZUluZm8o
cGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbykKICAgICAsIG1fc2FuZGJveEV4dGVuc2lv
bnNBcmVDb25zdW1lZChmYWxzZSkKICAgICAsIG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQogewpA
QCAtMjE2LDEwICsyMTcsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZQogewogICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOwog
CisgICAgaWYgKG1fbmVlZHNDZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgIHJlc3BvbnNlLmluaXRp
YWxpemVDZXJ0aWZpY2F0ZUluZm8oKTsKKwogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCiAgICAg
ICAgIG1fc3luY2hyb25vdXNMb2FkRGF0YS0+bV9yZXNwb25zZSA9IHJlc3BvbnNlOwogICAgIGVs
c2UKLSAgICAgICAgc2VuZEFib3J0aW5nT25GYWlsdXJlKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlV2l0aENlcnRpZmljYXRlSW5mbyhyZXNwb25zZSwgQ2Vy
dGlmaWNhdGVJbmZvKHJlc3BvbnNlKSwgaXNMb2FkaW5nTWFpblJlc291cmNlKCkpKTsKKyAgICAg
ICAgc2VuZEFib3J0aW5nT25GYWlsdXJlKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlk
UmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkpOwogCiAg
ICAgLy8gbV9oYW5kbGUgd2lsbCBiZSBudWxsIGlmIHRoZSByZXF1ZXN0IGdvdCBhYm9ydGVkIGFi
b3ZlLgogICAgIGlmICghbV9oYW5kbGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTczMzU1
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw2ICsxOTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OwogICAgIGJvb2wgbV9p
c0xvYWRpbmdNYWluUmVzb3VyY2U7CiAgICAgYm9vbCBtX2RlZmVyc0xvYWRpbmc7CisgICAgYm9v
bCBtX25lZWRzQ2VydGlmaWNhdGVJbmZvOwogCiAgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPj4gbV9yZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zOwogICAgIFZlY3RvcjxSZWZQ
dHI8U2FuZGJveEV4dGVuc2lvbj4+IG1fcmVzb3VyY2VTYW5kYm94RXh0ZW5zaW9uczsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVyczo6TmV0d29ya1JlCiAgICAgLCBpc01haW5SZXNvdXJjZShmYWxzZSkKICAgICAsIGRl
ZmVyc0xvYWRpbmcoZmFsc2UpCiAgICAgLCBzaG91bGRCdWZmZXJSZXNvdXJjZShmYWxzZSkKKyAg
ICAsIG5lZWRzQ2VydGlmaWNhdGVJbmZvKGZhbHNlKQogewogfQogCkBAIC05Niw2ICs5Nyw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY28KICAgICBlbmNvZGVyIDw8
IGlzTWFpblJlc291cmNlOwogICAgIGVuY29kZXIgPDwgZGVmZXJzTG9hZGluZzsKICAgICBlbmNv
ZGVyIDw8IHNob3VsZEJ1ZmZlclJlc291cmNlOworICAgIGVuY29kZXIgPDwgbmVlZHNDZXJ0aWZp
Y2F0ZUluZm87CiB9CiAKIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29k
ZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMmIHJlc3VsdCkKQEAgLTE0OCw2ICsxNTAsOCBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzOjpkZWNvCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5zaG91bGRCdWZmZXJSZXNvdXJjZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5uZWVkc0NlcnRpZmljYXRlSW5m
bykpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCShyZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTWFpblJlc291
cmNlOwogICAgIGJvb2wgZGVmZXJzTG9hZGluZzsKICAgICBib29sIHNob3VsZEJ1ZmZlclJlc291
cmNlOworICAgIGJvb2wgbmVlZHNDZXJ0aWZpY2F0ZUluZm87CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCShyZXZpc2lvbiAxNzMz
NTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0Miw4IEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUwKICAgICBsb2FkUGFyYW1ldGVycy5pc01h
aW5SZXNvdXJjZSA9IHJlc291cmNlICYmIHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3Vy
Y2U6Ok1haW5SZXNvdXJjZTsKICAgICBsb2FkUGFyYW1ldGVycy5kZWZlcnNMb2FkaW5nID0gcmVz
b3VyY2VMb2FkZXItPmRlZmVyc0xvYWRpbmcoKTsKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRC
dWZmZXJSZXNvdXJjZSA9IHJlc291cmNlICYmIChyZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJl
c291cmNlOjpDU1NTdHlsZVNoZWV0IHx8IHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3Vy
Y2U6OlNjcmlwdCk7CisgICAgLy8gQ2VydGlmaWNhdGUgaW5mbyBpcyBhIGJpZyBvYmplY3QgdG8g
c2VyaWFsaXplIGFuZCB3ZSBvbmx5IHVzZSBpdCBmb3IgdGhlIG1haW4gcmVzb3VyY2UuCisgICAg
bG9hZFBhcmFtZXRlcnMubmVlZHNDZXJ0aWZpY2F0ZUluZm8gPSBsb2FkUGFyYW1ldGVycy5pc01h
aW5SZXNvdXJjZTsKIAogICAgIEFTU0VSVCgobG9hZFBhcmFtZXRlcnMud2ViUGFnZUlEICYmIGxv
YWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQpIHx8IGxvYWRQYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRp
YWxQb2xpY3kgPT0gRG9Ob3RBc2tDbGllbnRGb3JBbnlDcmVkZW50aWFscyk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcAkocmV2aXNpb24gMTczMzU1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDMz
ICsxMDIsMjMgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEodWludAogICAg
IG1fY29yZUxvYWRlci0+ZGlkU2VuZERhdGEoYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQp
OwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VXaXRoQ2Vy
dGlmaWNhdGVJbmZvKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBDZXJ0
aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlTWVzc2FnZSkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9j
ZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlV2l0aENlcnRpZmljYXRl
SW5mbyBmb3IgJyVzJy4gU3RhdHVzICVkLiIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAKICAgICBSZWY8V2Vi
UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOwogCi0gICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZUNvcHkocmVzcG9uc2UpOwotCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBD
ZXJ0aWZpY2F0ZUluZm8gdG8gYXZvaWQgdGhlIHBsYXRmb3JtIGlmZGVmcy4gU2VlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ3MjQuCi0jaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgcmVzcG9uc2VDb3B5LnNldENlcnRpZmljYXRlQ2hhaW4oY2VydGlmaWNhdGVJbmZv
LmNlcnRpZmljYXRlQ2hhaW4oKSk7Ci0jZWxpZiBVU0UoU09VUCkKLSAgICByZXNwb25zZUNvcHku
c2V0U291cE1lc3NhZ2VDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGUoKSk7
Ci0gICAgcmVzcG9uc2VDb3B5LnNldFNvdXBNZXNzYWdlVExTRXJyb3JzKGNlcnRpZmljYXRlSW5m
by50bHNFcnJvcnMoKSk7Ci0jZW5kaWYKLQotICAgIGlmIChtX2NvcmVMb2FkZXItPmRvY3VtZW50
TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZEZhbGxiYWNrRm9yUmVz
cG9uc2UobV9jb3JlTG9hZGVyLmdldCgpLCByZXNwb25zZUNvcHkpKQorICAgIGlmIChtX2NvcmVM
b2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9h
ZEZhbGxiYWNrRm9yUmVzcG9uc2UobV9jb3JlTG9hZGVyLmdldCgpLCByZXNwb25zZSkpCiAgICAg
ICAgIHJldHVybjsKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIC8vIFJlZnJhaW4gZnJvbSBj
YWxsaW5nIGRpZFJlY2VpdmVSZXNwb25zZSBpZiBRdWlja0xvb2sgd2lsbCBjb252ZXJ0IHRoaXMg
cmVzcG9uc2UsIHNpbmNlIHRoZSBNSU1FIHR5cGUgb2YgdGhlCiAgICAgLy8gY29udmVydGVkIHJl
c291cmNlIGlzbid0IHlldCBrbm93bi4gV2ViUmVzb3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0
ZSB3aWxsIGxhdGVyIGNhbGwgZGlkUmVjZWl2ZVJlc3BvbnNlIHVwb24KICAgICAvLyByZWNlaXZp
bmcgdGhlIGNvbnZlcnRlZCBkYXRhLgotICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIo
KS0+c2V0UXVpY2tMb29rSGFuZGxlKFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKHJlc291cmNlTG9h
ZGVyKCksIHJlc3BvbnNlQ29weS5uc1VSTFJlc3BvbnNlKCkpKTsKKyAgICBtX2NvcmVMb2FkZXIt
PmRvY3VtZW50TG9hZGVyKCktPnNldFF1aWNrTG9va0hhbmRsZShRdWlja0xvb2tIYW5kbGU6OmNy
ZWF0ZShyZXNvdXJjZUxvYWRlcigpLCByZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkpKTsKICAgICBp
ZiAoIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+cXVpY2tMb29rSGFuZGxlKCkpCiAj
ZW5kaWYKLSAgICAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VD
b3B5KTsKKyAgICAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2Up
OwogCiAgICAgLy8gSWYgbV9jb3JlTG9hZGVyIGJlY29tZXMgbnVsbCBhcyBhIHJlc3VsdCBvZiB0
aGUgZGlkUmVjZWl2ZVJlc3BvbnNlIGNhbGxiYWNrLCB3ZSBjYW4ndCB1c2UgdGhlIHNlbmQgZnVu
Y3Rpb24oKS4gCiAgICAgaWYgKCFtX2NvcmVMb2FkZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNp
b24gMTczMzU1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAg
IHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVz
VG9CZVNlbnQpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlV2l0aENlcnRpZmljYXRlSW5m
byhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7
CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBl
bmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hSZXNvdXJjZUxvYWQoZG91Ymxl
IGZpbmlzaFRpbWUpOwogICAgIHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCShy
ZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI2LDEwICsyNiw5
IEBAIG1lc3NhZ2VzIC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2FjeVJlY2UKIAogICAgIENhbmNl
bFJlc291cmNlTG9hZGVyKCkKIAotICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFdlJ2xs
IG5lZWQgbXVjaCBtb3JlIGdyYW51bGFyaXR5IGZvciByZXNwb25zZSBtZXNzYWdlcy4KICAgICBX
aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSkKICAgICBEaWRTZW5kRGF0YSh1aW50
NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCkKLSAgICBEaWRSZWNl
aXZlUmVzcG9uc2VXaXRoQ2VydGlmaWNhdGVJbmZvKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2UsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wg
bmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCisgICAgRGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiAgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpE
YXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkRmlu
aXNoUmVzb3VyY2VMb2FkKGRvdWJsZSBmaW5pc2hUaW1lKQogICAgIERpZEZhaWxSZXNvdXJjZUxv
YWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkQ28KIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgogCi0gICAgd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFt
ZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2Fk
ZXIucmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVy
LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxv
YWRUeXBlKCkpLCBDZXJ0aWZpY2F0ZUluZm8oZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKSksIElu
amVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tbWl0TG9hZEZvckZyYW1l
KG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3Vt
ZW50TG9hZGVyLnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9mcmFtZUhhc0N1c3RvbUNvbnRlbnRQ
cm92aWRlciwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2Fk
ZXIoKS5sb2FkVHlwZSgpKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5jZXJ0aWZpY2F0ZUlu
Zm8oKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7
CiAgICAgd2ViUGFnZS0+ZGlkQ29tbWl0TG9hZChtX2ZyYW1lKTsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCShyZXZpc2lvbiAx
NzMzNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MTcsNyArNDE3LDcgQEAgV2ViQ29yZTo6Q2VydGlmaWNhdGVJ
bmZvIFdlYkZyYW1lOjpjZXJ0aQogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJl
dHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsKIAotICAgIHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oZG9j
dW1lbnRMb2FkZXItPnJlc3BvbnNlKCkpOworICAgIHJldHVybiBkb2N1bWVudExvYWRlci0+cmVz
cG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjppbm5lclRl
eHQoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237771</attachid>
            <date>2014-09-08 02:39:11 -0700</date>
            <delta_ts>2014-09-08 02:44:10 -0700</delta_ts>
            <desc>patch 5</desc>
            <filename>certificate-info-9.patch</filename>
            <type>text/plain</type>
            <size>31243</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzM2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE0LTA5LTA3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBQYXNzIGNlcnRpZmljYXRlIGlu
Zm8gYXMgcGFydCBvZiBSZXNvdXJjZVJlc3BvbnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY2MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY3VycmVudCB3YXkgb2YgcGFzc2luZyBjZXJ0aWZp
Y2F0ZSBpbmZvIHNlcGFyYXRlbHkgZnJvbSBSZXNvdXJjZVJlc3BvbnNlIGFuZCB0aGVuIGphbW1p
bmcgaXQgYmFjaworICAgICAgICBpcyBjb21wbGV4IGFuZCBjb25mdXNpbmcuIFRoaXMgcGF0Y2gg
bWFrZXMgaXQgYSB0cnVlIHBhcnQgb2YgdGhlIFJlc291cmNlUmVzcG9uc2UuCisKKyAgICAgICAg
V2l0aCB0aGlzIHBhdGNoIHdlIGFsc28gb25seSBjcmVhdGUgYW5kIHBhc3MgdGhlIGNlcnRpZmlj
YXRlIGluZm8gb2JqZWN0IGZvciB0aGUgbWFpbiByZXNvdXJjZS4gSXQgaXMKKyAgICAgICAgYSBi
aWcgYW5kIGNvbXBsZXggb2JqZWN0IGFuZCB3ZSBuZXZlciBsb29rIGludG8gaXQgZm9yIGFueSBv
dGhlciByZXNvdXJjZSB0eXBlLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UpOgorCisg
ICAgICAgICAgICBNYXJrIGluaXRpYWxpemVkIGZvciBzeW50aGV0aWMgcmVzcG9uc2VzLCB1bml0
aWFsaXplZCBmb3IgdGhvc2UgYmFja2VkIGJ5IGEgcGxhdGZvcm0gcmVxdWVzdC4KKworICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmluaXRpYWxpemVDZXJ0aWZpY2F0ZUlu
Zm8pOgorCisgICAgICAgICAgICBDYWxsaW5nIHRoaXMgcHVsbHMgdGhlIGNlcnRpZmljYXRlIGlu
Zm8gb3V0IGZyb20gdGhlIHBsYXRmb3JtIHR5cGUuCisgICAgICAgICAgICBJdCBzaG91ZCBvbmx5
IGJlIHVzZWQgZm9yIHJlc291cmNlcyB0aGF0IG5lZWQgaXQuCisKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2VCYXNlOjpwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUpOgorCisgICAgICAgICAg
ICBFbmNvZGUgYW5kIGRlY29kZSBjZXJ0aWZpY2F0ZSBpbmZvIGlmIGl0IGlzIHByZXNlbnQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm8uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm9NYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnNldENlcnRpZmljYXRlQ2hhaW4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6Y2VydGlmaWNhdGVDaGFpbik6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZp
Y2F0ZUluZm8pOgorCiAyMDE0LTA5LTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgogCiAgICAgICAgIFtGdWxsc2NyZWVuXSBBZGQgYSBzaXRlLXNwZWNpZmljIGhhY2sgdG8gd29y
ayBhcm91bmQgImZsYXNoIG9uIGV4aXQiIGJlaGF2aW9yIG9mIFlvdVR1YmUuY29tLgpJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE3MzM1NikKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC00OTEsOCArNDkxLDcgQEAgX19aTjdXZWJD
b3JlMTVCYWNrRm9yd2FyZExpc3Q4YmFja0l0ZW1FdgogX19aTjdXZWJDb3JlMTVCYWNrRm9yd2Fy
ZExpc3Q4Y2FwYWNpdHlFdgogX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q5Z29Gb3J3YXJk
RXYKIF9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0QzFFUE5TXzRQYWdlRQotX19aTjdXZWJD
b3JlMTVDZXJ0aWZpY2F0ZUluZm9DMUVQSzlfX0NGQXJyYXkKLV9fWk43V2ViQ29yZTE1Q2VydGlm
aWNhdGVJbmZvQzFFUktOU18xNlJlc291cmNlUmVzcG9uc2VFCitfX1pON1dlYkNvcmUxNUNlcnRp
ZmljYXRlSW5mb0MxRU4zV1RGOVJldGFpblB0cklQSzlfX0NGQXJyYXlFRQogX19aTjdXZWJDb3Jl
MTVDZXJ0aWZpY2F0ZUluZm9DMUV2CiBfX1pON1dlYkNvcmUxNURPTVdyYXBwZXJXb3JsZDEzY2xl
YXJXcmFwcGVyc0V2CiBfX1pON1dlYkNvcmUxNURPTVdyYXBwZXJXb3JsZEQxRXYKQEAgLTcxNiw3
ICs3MTUsNiBAQCBfX1pON1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05TXzE1CiBfX1pO
N1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RU5TXzEz
RnJhbWVMb2FkVHlwZUViCiBfX1pON1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05TXzE1
UmVzb3VyY2VSZXF1ZXN0RU5TXzE0TmF2aWdhdGlvblR5cGVFCiBfX1pON1dlYkNvcmUxNk5hdmln
YXRpb25BY3Rpb25DMUV2Ci1fX1pON1dlYkNvcmUxNlJlc291cmNlUmVzcG9uc2UxOXNldENlcnRp
ZmljYXRlQ2hhaW5FUEs5X19DRkFycmF5CiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIx
MGluaXRTY3JpcHRFUk5TXzE1RE9NV3JhcHBlcldvcmxkRQogX19aTjdXZWJDb3JlMTZTY3JpcHRD
b250cm9sbGVyMTFjcmVhdGVXb3JsZEV2CiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIx
M2V4ZWN1dGVTY3JpcHRFUktOM1dURjZTdHJpbmdFYgpAQCAtMTc4MSw3ICsxNzc5LDYgQEAgX19a
Tks3V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDIwaXNEYXRlVAogX19aTks3V2ViQ29yZTE2SFRN
TElucHV0RWxlbWVudDZpc1RleHRFdgogX19aTks3V2ViQ29yZTE2SWNvbkRhdGFiYXNlQmFzZTEy
ZGF0YWJhc2VQYXRoRXYKIF9fWk5LN1dlYkNvcmUxNlJlc291cmNlUmVzcG9uc2UxM25zVVJMUmVz
cG9uc2VFdgotX19aTks3V2ViQ29yZTE2UmVzb3VyY2VSZXNwb25zZTE2Y2VydGlmaWNhdGVDaGFp
bkV2CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTdpc0NvbnRlbnRFZGl0YWJsZUV2
CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTdpc0luUGFzc3dvcmRGaWVsZEV2CiBf
X1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTd0b05vcm1hbGl6ZWRSYW5nZUV2CkBAIC0x
ODMwLDExICsxODI3LDEzIEBAIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTJp
c0EKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTJsYXN0TW9kaWZpZWRFdgog
X19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxNGh0dHBTdGF0dXNDb2RlRXYKIF9f
Wk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTRodHRwU3RhdHVzVGV4dEV2CitfX1pO
SzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTE1Y2VydGlmaWNhdGVJbmZvRXYKIF9fWk5L
N1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTVodHRwSGVhZGVyRmllbGRFTlNfMTRIVFRQ
SGVhZGVyTmFtZUUKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTZodHRwSGVh
ZGVyRmllbGRzRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTZ0ZXh0RW5j
b2RpbmdOYW1lRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTdzdWdnZXN0
ZWRGaWxlbmFtZUV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTIxZXhwZWN0
ZWRDb250ZW50TGVuZ3RoRXYKK19fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjVp
bml0aWFsaXplQ2VydGlmaWNhdGVJbmZvRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9u
c2VCYXNlM3VybEV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTZpc0hUVFBF
dgogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U4bGF6eUluaXRFTlMwXzlJbml0
TGV2ZWxFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oJKHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5Nzk4LDYgKzE5Nzk4LDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcU3luY2hyb25v
dXNMb2FkZXJDbGllbnQuaCIgLz4KICAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXG5ldHdvcmtcY2ZcQXV0aGVudGljYXRpb25DRi5oIiAvPgogICAgIDxDdXN0b21CdWls
ZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5oIiAvPgorICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0
d29ya1xtYWNcQ2VydGlmaWNhdGVJbmZvLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXGNmXERvd25sb2FkQnVuZGxlLmgiIC8+CiAgICAgPEN1c3RvbUJ1
aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXEZvcm1EYXRhU3RyZWFtQ0ZO
ZXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2Zc
TG9hZGVyUnVuTG9vcENGLmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTkxOTksNyArOTE5OSw3IEBACiAJCTVEQjFCQzY5MTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFu
c2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1REZFQkFCNjE4NTkyQjZEMDBDNzVCRUIgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF2YWlsYWJpbGl0eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RjJEQkJFNzE3OEUzMzJEMDAxNDE0ODYgLyogQ2Vy
dGlmaWNhdGVJbmZvTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQ2VydGlmaWNhdGVJbmZvTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
RjJEQkJFODE3OEUzMzY5MDAxNDE0ODYgLyogQ2VydGlmaWNhdGVJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENlcnRpZmljYXRlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1RjJEQkJFODE3OEUzMzY5MDAxNDE0ODYgLyogQ2VydGlmaWNhdGVJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENlcnRpZmljYXRlSW5mby5oOyBw
YXRoID0gLi4vbWFjL0NlcnRpZmljYXRlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1RkM3REMyNkNGRTI1NjMyMDBCODVBRTUgLyogSlNFdmVudFRhcmdldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFdmVudFRhcmdldC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1RkUxRDI5MTE3OEZEMUYzMDAxQUEzQzMgLyogU2VjdXJpdHkuZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBTZWN1cml0eS5mcmFtZXdvcms7IHBhdGggPSBTeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNE
S1JPT1Q7IH07CiAJCTYyNkNERTBDMTE0MDQyNEMwMDFFNUE2OCAvKiBTcGF0aWFsTmF2aWdhdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGF0aWFsTmF2aWdh
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjMxNyw3ICsxNjMxNyw2
IEBACiAJCQkJNTE0Qzc2NDIwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmgg
Ki8sCiAJCQkJNTE0Qzc2NDMwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLm1t
ICovLAogCQkJCUUxNjRBMkVCMTkxQUU2MzUwMDEwNzM3RCAvKiBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2VNYWMubW0gKi8sCi0JCQkJNUYyREJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRl
SW5mby5oICovLAogCQkJCTVGMkRCQkU3MTc4RTMzMkQwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUlu
Zm9NYWMubW0gKi8sCiAJCQkJRTE0MjRDOEYxNjRCNDYwQjAwRjMyRDQwIC8qIENvb2tpZUphck1h
Yy5tbSAqLywKIAkJCQlFMTNGMDFGMDEyNzBFMTkwMDBERkJBNzEgLyogQ29va2llU3RvcmFnZU1h
Yy5tbSAqLywKQEAgLTIwNTY5LDYgKzIwNTY4LDcgQEAKIAkJCQk3RUU2ODQ0QzEyRDI2RTM4MDBF
Nzk0MTUgLyogQXV0aGVudGljYXRpb25DRi5jcHAgKi8sCiAJCQkJN0VFNjg0NEQxMkQyNkUzODAw
RTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ0YuaCAqLywKIAkJCQk3RUU2ODQ0RTEyRDI2RTM4MDBF
Nzk0MTUgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAqLywKKwkJCQk1RjJEQkJFODE3OEUz
MzY5MDAxNDE0ODYgLyogQ2VydGlmaWNhdGVJbmZvLmggKi8sCiAJCQkJN0VFNjg0NEYxMkQyNkUz
ODAwRTc5NDE1IC8qIENvb2tpZUphckNGTmV0LmNwcCAqLywKIAkJCQk3RUU2ODQ1MDEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0LmNwcCAqLywKIAkJCQk3RUU2ODQ1MjEyRDI2
RTM4MDBFNzk0MTUgLyogQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAgKi8sCkBAIC0yMTA3Miw3
ICsyMTA3Miw2IEBACiAJCQkJN0VFNjg0NzMxMkQyNkU1NTAwRTc5NDE1IC8qIGNmICovLAogCQkJ
CTdFNERFMTBCMTk4QjEwODEwMDUxQ0IwMiAvKiBjb2NvYSAqLywKIAkJCQk1MTI2RTZCNjBBMkUz
QUVGMDA1QzI5RkEgLyogaWNvbiAqLywKLQkJCQlDRTc5RDY4NjE3RjIyMEVEMDA4MTVDMDAgLyog
aW9zICovLAogCQkJCTkzQTFFQUEyMEE1NjM0RDgwMDY5NjBBMCAvKiBtYWMgKi8sCiAJCQkJRTE0
MjRDOTExNjRCNTJDODAwRjMyRDQwIC8qIENvb2tpZUphci5jcHAgKi8sCiAJCQkJRTE0MjRDOTIx
NjRCNTJDODAwRjMyRDQwIC8qIENvb2tpZUphci5oICovLApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJ
KHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIGlu
bGluZSBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBSZXNvdXJjZVIKIAogUmVzb3VyY2VSZXNwb25z
ZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKCkgIAogICAgIDogbV9leHBlY3RlZENvbnRlbnRM
ZW5ndGgoMCkKKyAgICAsIG1fZGlkSW5pdGlhbGl6ZUNlcnRpZmljYXRlSW5mbyhmYWxzZSkKICAg
ICAsIG1faHR0cFN0YXR1c0NvZGUoMCkKICAgICAsIG1fY29ubmVjdGlvbklEKDApCiAgICAgLCBt
X2NhY2hlQ29udHJvbE1heEFnZSgwKQpAQCAtNzIsNiArNzMsNyBAQCBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAg
ICwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgoZXhwZWN0ZWRMZW5ndGgpCiAgICAgLCBtX3RleHRF
bmNvZGluZ05hbWUodGV4dEVuY29kaW5nTmFtZSkKKyAgICAsIG1fZGlkSW5pdGlhbGl6ZUNlcnRp
ZmljYXRlSW5mbyh0cnVlKQogICAgICwgbV9odHRwU3RhdHVzQ29kZSgwKQogICAgICwgbV9jb25u
ZWN0aW9uSUQoMCkKICAgICAsIG1fY2FjaGVDb250cm9sTWF4QWdlKDApCkBAIC0yMDUsNyArMjA3
LDE4IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFRleHRFbmNvZGkKICAgICAvLyBG
SVhNRTogU2hvdWxkIGludmFsaWRhdGUgb3IgdXBkYXRlIHBsYXRmb3JtIHJlc3BvbnNlIGlmIHBy
ZXNlbnQuCiB9CiAKLS8vIEZJWE1FIHNob3VsZCBjb21wdXRlIHRoaXMgb24gdGhlIGZseQordm9p
ZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aW5pdGlhbGl6ZUNlcnRpZmljYXRlSW5mbygpIGNvbnN0
Cit7CisgICAgbV9jZXJ0aWZpY2F0ZUluZm8gPSBzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJjZVJl
c3BvbnNlKj4odGhpcyktPnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCk7CisgICAgbV9kaWRJbml0
aWFsaXplQ2VydGlmaWNhdGVJbmZvID0gdHJ1ZTsKK30KKworQ2VydGlmaWNhdGVJbmZvIFJlc291
cmNlUmVzcG9uc2VCYXNlOjpjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAoreworICAgIEFTU0VSVCht
X2RpZEluaXRpYWxpemVDZXJ0aWZpY2F0ZUluZm8pOworICAgIHJldHVybiBtX2NlcnRpZmljYXRl
SW5mbzsKK30KKwogU3RyaW5nIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzdWdnZXN0ZWRGaWxlbmFt
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJlc291cmNlUmVzcG9u
c2UqPih0aGlzKS0+cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2Uu
aAkocmV2aXNpb24gMTczMzU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAj
aWZuZGVmIFJlc291cmNlUmVzcG9uc2VCYXNlX2gKICNkZWZpbmUgUmVzb3VyY2VSZXNwb25zZUJh
c2VfaAogCisjaW5jbHVkZSAiQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRl
ck1hcC5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFRpbWluZy5o
IgpAQCAtOTEsNiArOTIsOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlz
QXR0YWNobWVudCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdWdnZXN0ZWRG
aWxlbmFtZSgpIGNvbnN0OworCisgICAgdm9pZCBpbml0aWFsaXplQ2VydGlmaWNhdGVJbmZvKCkg
Y29uc3Q7CisgICAgQ2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0OwogICAg
IAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gcGFyc2VkIHZhbHVlcyBvZiB0aGUgY29y
cmVzcG9uZGluZyByZXNwb25zZSBoZWFkZXJzLgogICAgIC8vIE5hTiBtZWFucyB0aGF0IHRoZSBo
ZWFkZXIgd2FzIG5vdCBwcmVzZW50IG9yIGhhZCBpbnZhbGlkIHZhbHVlLgpAQCAtMTQxLDcgKzE0
NSw4IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIFRoZSBSZXNvdXJjZVJlc3BvbnNlIHN1YmNsYXNz
IG1heSAic2hhZG93IiB0aGlzIG1ldGhvZCB0byBsYXppbHkgaW5pdGlhbGl6ZSBwbGF0Zm9ybSBz
cGVjaWZpYyBmaWVsZHMKICAgICB2b2lkIHBsYXRmb3JtTGF6eUluaXQoSW5pdExldmVsKSB7IH0K
LSAgICBTdHJpbmcgcGxhdGZvcm1TdWdnZXN0ZWRGaWxlTmFtZSgpIHsgcmV0dXJuIFN0cmluZygp
OyB9CisgICAgQ2VydGlmaWNhdGVJbmZvIHBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkgY29uc3Qg
eyByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7IH07CisgICAgU3RyaW5nIHBsYXRmb3JtU3VnZ2Vz
dGVkRmlsZU5hbWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogCiAgICAgLy8gVGhlIFJl
c291cmNlUmVzcG9uc2Ugc3ViY2xhc3MgbWF5ICJzaGFkb3ciIHRoaXMgbWV0aG9kIHRvIGNvbXBh
cmUgcGxhdGZvcm0gc3BlY2lmaWMgZmllbGRzCiAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21w
YXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyBy
ZXR1cm4gdHJ1ZTsgfQpAQCAtMTU0LDYgKzE1OSw5IEBAIHByb3RlY3RlZDoKICAgICBIVFRQSGVh
ZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKICAgICBtdXRhYmxlIFJlc291cmNlTG9hZFRpbWlu
ZyBtX3Jlc291cmNlTG9hZFRpbWluZzsKIAorICAgIG11dGFibGUgYm9vbCBtX2RpZEluaXRpYWxp
emVDZXJ0aWZpY2F0ZUluZm87CisgICAgbXV0YWJsZSBDZXJ0aWZpY2F0ZUluZm8gbV9jZXJ0aWZp
Y2F0ZUluZm87CisKICAgICBpbnQgbV9odHRwU3RhdHVzQ29kZTsKICAgICB1bnNpZ25lZCBtX2Nv
bm5lY3Rpb25JRDsKIApAQCAtMjA2LDYgKzIxNCw5IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJh
c2U6OmVuY29kZShFbmNvZGUKICAgICBlbmNvZGVyIDw8IG1fcmVzb3VyY2VMb2FkVGltaW5nOwog
ICAgIGVuY29kZXIgPDwgbV9odHRwU3RhdHVzQ29kZTsKICAgICBlbmNvZGVyIDw8IG1fY29ubmVj
dGlvbklEOworICAgIGVuY29kZXIgPDwgbV9kaWRJbml0aWFsaXplQ2VydGlmaWNhdGVJbmZvOwor
ICAgIGlmIChtX2RpZEluaXRpYWxpemVDZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgIGVuY29kZXIg
PDwgbV9jZXJ0aWZpY2F0ZUluZm87CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0y
NDAsNiArMjUxLDEyIEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29kZShEZWNvZGUK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2Uu
bV9jb25uZWN0aW9uSUQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXNwb25zZS5tX2RpZEluaXRpYWxpemVDZXJ0aWZpY2F0ZUluZm8pKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHJlc3BvbnNlLm1fZGlkSW5pdGlhbGl6ZUNlcnRpZmlj
YXRlSW5mbykgeworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fY2VydGlm
aWNhdGVJbmZvKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgcmVzcG9u
c2UubV9pc051bGwgPSBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJ
KHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXNwb25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMSArOTIsNiBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxSZXNwb25zZSAqbnNVUkxSZXNwb25zZSgpIGNv
bnN0OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENlcnRpZmljYXRlQ2hhaW4oQ0ZBcnJheVJlZik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNlcnRpZmljYXRlQ2hhaW4o
KSBjb25zdDsKLSNlbmRpZgotCiAgICAgYm9vbCBwbGF0Zm9ybVJlc3BvbnNlSXNVcFRvRGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1SZXNwb25zZUlzVXBUb0RhdGU7IH0KIAogcHJpdmF0
ZToKQEAgLTEwNCw2ICs5OSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBsYXRmb3JtTGF6eUlu
aXQoSW5pdExldmVsKTsKICAgICBTdHJpbmcgcGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpIGNv
bnN0OworICAgIENlcnRpZmljYXRlSW5mbyBwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpIGNvbnN0
OworCiAgICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkb1Bs
YXRmb3JtQ29weURhdGEoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRh
PiBkYXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9CiAgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQo
UGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPikgeyB9CiAjaWYgUExB
VEZPUk0oQ09DT0EpCkBAIC0xMjEsMTAgKzExOCw2IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gbV9uc1Jlc3BvbnNl
OwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgLy8g
Q2VydGlmaWNhdGUgY2hhaW4gaXMgbm9ybWFsbHkgcGFydCBvZiBOUy9DRlVSTFJlc3BvbnNlLCBi
dXQgdGhlcmUgaXMgbm8gd2F5IHRvIHJlLWFkZCBpdCB0byBhIGRlc2VyaWFsaXplZCByZXNwb25z
ZSBhZnRlciBJUEMuCi0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IG1fZXh0ZXJuYWxDZXJ0aWZp
Y2F0ZUNoYWluOwotI2VuZGlmCiB9OwogCiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3Bv
bnNlRGF0YSA6IHB1YmxpYyBDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhQmFzZSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0
aWZpY2F0ZUluZm8uaAkocmV2aXNpb24gMTczMzU1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvQ2VydGlmaWNhdGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDggQEAKICNpZm5kZWYgQ2VydGlmaWNhdGVJbmZvX2gKICNkZWZpbmUgQ2VydGlmaWNhdGVJ
bmZvX2gKIAotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorI2lmIFBMQVRG
T1JNKENPQ09BKQorCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0zNCw4ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENlcnRp
ZmljYXRlSW5mbyB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgQ2VydGlmaWNhdGVJbmZv
KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ2VydGlmaWNhdGVJbmZvKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDZXJ0aWZpY2F0
ZUluZm8oQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBDZXJ0aWZpY2F0ZUluZm8oUmV0YWluUHRyPENGQXJyYXlSZWY+IGNlcnRpZmljYXRl
Q2hhaW4pOwogCiAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUNoYWluKENGQXJyYXlSZWYgY2VydGlm
aWNhdGVDaGFpbikgeyBtX2NlcnRpZmljYXRlQ2hhaW4gPSBjZXJ0aWZpY2F0ZUNoYWluOyB9CiAg
ICAgQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZp
Y2F0ZUNoYWluLmdldCgpOyB9CkBAIC00OCw2ICs0OCw5IEBAIHByaXZhdGU6CiAgICAgUmV0YWlu
UHRyPENGQXJyYXlSZWY+IG1fY2VydGlmaWNhdGVDaGFpbjsKIH07CiAKLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAorI2Vsc2UKK3R5cGVkZWYgaW50MzJfdCBDZXJ0aWZpY2F0ZUluZm87CisjZW5kaWYK
K30KIAotI2VuZGlmIC8vIENlcnRpZmljYXRlSW5mb19oCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NlcnRpZmljYXRlSW5mb01hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUlu
Zm9NYWMubW0JKHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL0NlcnRpZmljYXRlSW5mb01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIg
KzMyLDcgQEAgQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZUluZm8oKQogewogfQogCi1DZXJ0
aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlSW5mbyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKLSAgICA6IG1fY2VydGlmaWNhdGVDaGFpbihyZXNwb25zZS5jZXJ0aWZpY2F0ZUNoYWlu
KCkpCi17Ci19Ci0KLUNlcnRpZmljYXRlSW5mbzo6Q2VydGlmaWNhdGVJbmZvKENGQXJyYXlSZWYg
Y2VydGlmaWNhdGVDaGFpbikKK0NlcnRpZmljYXRlSW5mbzo6Q2VydGlmaWNhdGVJbmZvKFJldGFp
blB0cjxDRkFycmF5UmVmPiBjZXJ0aWZpY2F0ZUNoYWluKQogICAgIDogbV9jZXJ0aWZpY2F0ZUNo
YWluKGNlcnRpZmljYXRlQ2hhaW4pCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0JKHJl
dmlzaW9uIDE3MzM2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlUmVzcG9uc2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3Miw2ICsxNzIsMTIgQEAg
dm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KAogICAgIG1faW5pdExldmVs
ID0gaW5pdExldmVsOwogfQogCitDZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VSZXNwb25zZTo6cGxh
dGZvcm1DZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAoreworICAgIEFTU0VSVChtX25zUmVzcG9uc2Up
OworICAgIHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oYWRvcHRDRih3a0NvcHlOU1VSTFJlc3BvbnNl
Q2VydGlmaWNhdGVDaGFpbihtX25zUmVzcG9uc2UuZ2V0KCkpKSk7Cit9CisKIFN0cmluZyBSZXNv
dXJjZVJlc3BvbnNlOjpwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gW25zVVJMUmVzcG9uc2UoKSBzdWdnZXN0ZWRGaWxlbmFtZV07CkBAIC0xODQsMjMgKzE5
MCw1IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGMKIAogI2VuZGlm
IC8vIFVTRShDRk5FVFdPUkspCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09S
SykKLQotdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRDZXJ0aWZpY2F0ZUNoYWluKENGQXJyYXlS
ZWYgY2VydGlmaWNhdGVDaGFpbikKLXsKLSAgICBBU1NFUlQoIW1fbnNSZXNwb25zZSB8fCAhd2tD
b3B5TlNVUkxSZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4obV9uc1Jlc3BvbnNlLmdldCgpKSk7Ci0g
ICAgbV9leHRlcm5hbENlcnRpZmljYXRlQ2hhaW4gPSBjZXJ0aWZpY2F0ZUNoYWluOwotfQotCi1S
ZXRhaW5QdHI8Q0ZBcnJheVJlZj4gUmVzb3VyY2VSZXNwb25zZTo6Y2VydGlmaWNhdGVDaGFpbigp
IGNvbnN0Ci17Ci0gICAgaWYgKG1fZXh0ZXJuYWxDZXJ0aWZpY2F0ZUNoYWluKQotICAgICAgICBy
ZXR1cm4gbV9leHRlcm5hbENlcnRpZmljYXRlQ2hhaW47Ci0KLSAgICByZXR1cm4gYWRvcHRDRih3
a0NvcHlOU1VSTFJlc3BvbnNlQ2VydGlmaWNhdGVDaGFpbihuc1VSTFJlc3BvbnNlKCkpKTsKLX0K
LQotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZVJlc3BvbnNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMTczMzU2KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBk
b1VwZGF0ZVJlc291cmNlUmVzcG9uc2UoKSB7IH0KICAgICBTdHJpbmcgcGxhdGZvcm1TdWdnZXN0
ZWRGaWxlbmFtZSgpIGNvbnN0OworICAgIENlcnRpZmljYXRlSW5mbyBwbGF0Zm9ybUNlcnRpZmlj
YXRlSW5mbygpIGNvbnN0OwogCiAgICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVz
cG9uc2VEYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291
cmNlUmVzcG9uc2VEYXRhPiBkYXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9CiAgICAgdm9pZCBk
b1BsYXRmb3JtQWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRh
PikgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VSZXNwb25zZVNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAJKHJldmlzaW9uIDE3MzM1NSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNl
U291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsMTEgQEAgdm9pZCBSZXNvdXJj
ZVJlc3BvbnNlOjp1cGRhdGVGcm9tU291cE1lcwogICAgIHNldEV4cGVjdGVkQ29udGVudExlbmd0
aChzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfY29udGVudF9sZW5ndGgoaGVhZGVycykpOwogfQog
CitDZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUlu
Zm8oKSBjb25zdAoreworICAgIHJldHVybiBDZXJ0aWZpY2F0ZUluZm8obV9jZXJ0aWZpY2F0ZS5n
ZXQoKSwgbV90bHNFcnJvcnMpOworfQorCiBTdHJpbmcgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZv
cm1TdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZpbGVuYW1lRnJvbUhU
VFBDb250ZW50RGlzcG9zaXRpb24oaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250
ZW50RGlzcG9zaXRpb24pKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzM2NykKKysrIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisy
MDE0LTA5LTA3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBQ
YXNzIGNlcnRpZmljYXRlIGluZm8gYXMgcGFydCBvZiBSZXNvdXJjZVJlc3BvbnNlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY2MTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMpOgorCisgICAgICAgICAgICBJbml0
aWFsaXplIHRoZSBjZXJ0aWZpY2F0ZSBpbmZvIG9ubHkgaWYgcmVxdWVzdGVkLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VXaXRoQ2VydGlmaWNh
dGVJbmZvKTogRGVsZXRlZC4KKworICAgICAgICAgICAgUmVuYW1lIGRpZFJlY2VpdmVSZXNwb25z
ZVdpdGhDZXJ0aWZpY2F0ZUluZm8gLT4gZGlkUmVjZWl2ZVJlc3BvbnNlIGFzIGl0IGlzIG5vdyBw
YXJ0IG9mIHRoZSByZXNwb25zZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKworICAgICAgICAgICAgUmVxdWVzdCBjZXJ0aWZp
Y2F0ZSBpbmZvIGZvciB0aGUgbWFpbiByZXNvdXJjZSBvbmx5LgorCisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lOjpjZXJ0aWZpY2F0ZUluZm8pOgorCiAyMDE0LTA5LTA2ICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgWFBDUHRyIHNob3VsZCBiZSBjb252ZXJ0ZWQgaW50byBhbiBh
bGwgcHVycG9zZSBzbWFydCBwb2ludGVyIGZvciBvc19vYmplY3RzCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAJKHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYgKzk3LDcgQEAg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMbwogICAgICwgbV9zaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KHBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCkKICAgICAsIG1faXNMb2FkaW5nTWFpblJlc291
cmNlKHBhcmFtZXRlcnMuaXNNYWluUmVzb3VyY2UpCiAgICAgLCBtX2RlZmVyc0xvYWRpbmcocGFy
YW1ldGVycy5kZWZlcnNMb2FkaW5nKQorICAgICwgbV9uZWVkc0NlcnRpZmljYXRlSW5mbyhwYXJh
bWV0ZXJzLm5lZWRzQ2VydGlmaWNhdGVJbmZvKQogICAgICwgbV9zYW5kYm94RXh0ZW5zaW9uc0Fy
ZUNvbnN1bWVkKGZhbHNlKQogICAgICwgbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCiB7CkBAIC0y
MTYsMTAgKzIxNywxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7CiAKKyAg
ICBpZiAobV9uZWVkc0NlcnRpZmljYXRlSW5mbykKKyAgICAgICAgcmVzcG9uc2UuaW5pdGlhbGl6
ZUNlcnRpZmljYXRlSW5mbygpOworCiAgICAgaWYgKGlzU3luY2hyb25vdXMoKSkKICAgICAgICAg
bV9zeW5jaHJvbm91c0xvYWREYXRhLT5tX3Jlc3BvbnNlID0gcmVzcG9uc2U7CiAgICAgZWxzZQot
ICAgICAgICBzZW5kQWJvcnRpbmdPbkZhaWx1cmUoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVy
OjpEaWRSZWNlaXZlUmVzcG9uc2VXaXRoQ2VydGlmaWNhdGVJbmZvKHJlc3BvbnNlLCBDZXJ0aWZp
Y2F0ZUluZm8ocmVzcG9uc2UpLCBpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkpOworICAgICAgICBz
ZW5kQWJvcnRpbmdPbkZhaWx1cmUoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNl
aXZlUmVzcG9uc2UocmVzcG9uc2UsIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKSk7CiAKICAgICAv
LyBtX2hhbmRsZSB3aWxsIGJlIG51bGwgaWYgdGhlIHJlcXVlc3QgZ290IGFib3J0ZWQgYWJvdmUu
CiAgICAgaWYgKCFtX2hhbmRsZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAxNzMzNTUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMTkwLDYgKzE5MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3No
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Q7CiAgICAgYm9vbCBtX2lzTG9h
ZGluZ01haW5SZXNvdXJjZTsKICAgICBib29sIG1fZGVmZXJzTG9hZGluZzsKKyAgICBib29sIG1f
bmVlZHNDZXJ0aWZpY2F0ZUluZm87CiAKICAgICBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNp
b24+PiBtX3JlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnM7CiAgICAgVmVjdG9yPFJlZlB0cjxT
YW5kYm94RXh0ZW5zaW9uPj4gbV9yZXNvdXJjZVNhbmRib3hFeHRlbnNpb25zOwpJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTczMzU1KQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzOjpOZXR3b3JrUmUKICAgICAsIGlzTWFpblJlc291cmNlKGZhbHNlKQogICAgICwgZGVmZXJz
TG9hZGluZyhmYWxzZSkKICAgICAsIHNob3VsZEJ1ZmZlclJlc291cmNlKGZhbHNlKQorICAgICwg
bmVlZHNDZXJ0aWZpY2F0ZUluZm8oZmFsc2UpCiB7CiB9CiAKQEAgLTk2LDYgKzk3LDcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jbwogICAgIGVuY29kZXIgPDwgaXNN
YWluUmVzb3VyY2U7CiAgICAgZW5jb2RlciA8PCBkZWZlcnNMb2FkaW5nOwogICAgIGVuY29kZXIg
PDwgc2hvdWxkQnVmZmVyUmVzb3VyY2U7CisgICAgZW5jb2RlciA8PCBuZWVkc0NlcnRpZmljYXRl
SW5mbzsKIH0KIAogYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQ
Qzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cyYgcmVzdWx0KQpAQCAtMTQ4LDYgKzE1MCw4IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnM6OmRlY28KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LnNob3VsZEJ1ZmZlclJlc291cmNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm5lZWRzQ2VydGlmaWNhdGVJbmZvKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDYgKzY0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNNYWluUmVzb3VyY2U7
CiAgICAgYm9vbCBkZWZlcnNMb2FkaW5nOwogICAgIGJvb2wgc2hvdWxkQnVmZmVyUmVzb3VyY2U7
CisgICAgYm9vbCBuZWVkc0NlcnRpZmljYXRlSW5mbzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZFNjaGVkdWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDE3MzM1NSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNiArMTQyLDggQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTAogICAgIGxvYWRQYXJhbWV0ZXJzLmlzTWFpblJl
c291cmNlID0gcmVzb3VyY2UgJiYgcmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6
TWFpblJlc291cmNlOwogICAgIGxvYWRQYXJhbWV0ZXJzLmRlZmVyc0xvYWRpbmcgPSByZXNvdXJj
ZUxvYWRlci0+ZGVmZXJzTG9hZGluZygpOwogICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZEJ1ZmZl
clJlc291cmNlID0gcmVzb3VyY2UgJiYgKHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3Vy
Y2U6OkNTU1N0eWxlU2hlZXQgfHwgcmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6
U2NyaXB0KTsKKyAgICAvLyBDZXJ0aWZpY2F0ZSBpbmZvIGlzIGEgYmlnIG9iamVjdCB0byBzZXJp
YWxpemUgYW5kIHdlIG9ubHkgdXNlIGl0IGZvciB0aGUgbWFpbiByZXNvdXJjZS4KKyAgICBsb2Fk
UGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbyA9IGxvYWRQYXJhbWV0ZXJzLmlzTWFpblJl
c291cmNlOwogCiAgICAgQVNTRVJUKChsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQgJiYgbG9hZFBh
cmFtZXRlcnMud2ViRnJhbWVJRCkgfHwgbG9hZFBhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBv
bGljeSA9PSBEb05vdEFza0NsaWVudEZvckFueUNyZWRlbnRpYWxzKTsKIApJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwCShyZXZpc2lvbiAxNzMzNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsMzMgKzEw
MiwyMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YSh1aW50CiAgICAgbV9j
b3JlTG9hZGVyLT5kaWRTZW5kRGF0YShieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9
CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZVdpdGhDZXJ0aWZp
Y2F0ZUluZm8oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IENlcnRpZmlj
YXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2VNZXNzYWdlKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3Mp
IFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VXaXRoQ2VydGlmaWNhdGVJbmZv
IGZvciAnJXMnLiBTdGF0dXMgJWQuIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKIAogICAgIFJlZjxXZWJSZXNv
dXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CiAKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlQ29weShyZXNwb25zZSk7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIENlcnRp
ZmljYXRlSW5mbyB0byBhdm9pZCB0aGUgcGxhdGZvcm0gaWZkZWZzLiBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDcyNC4KLSNpZiBQTEFURk9STShDT0NPQSkK
LSAgICByZXNwb25zZUNvcHkuc2V0Q2VydGlmaWNhdGVDaGFpbihjZXJ0aWZpY2F0ZUluZm8uY2Vy
dGlmaWNhdGVDaGFpbigpKTsKLSNlbGlmIFVTRShTT1VQKQotICAgIHJlc3BvbnNlQ29weS5zZXRT
b3VwTWVzc2FnZUNlcnRpZmljYXRlKGNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgpKTsKLSAg
ICByZXNwb25zZUNvcHkuc2V0U291cE1lc3NhZ2VUTFNFcnJvcnMoY2VydGlmaWNhdGVJbmZvLnRs
c0Vycm9ycygpKTsKLSNlbmRpZgotCi0gICAgaWYgKG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2Fk
ZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25z
ZShtX2NvcmVMb2FkZXIuZ2V0KCksIHJlc3BvbnNlQ29weSkpCisgICAgaWYgKG1fY29yZUxvYWRl
ci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkRmFs
bGJhY2tGb3JSZXNwb25zZShtX2NvcmVMb2FkZXIuZ2V0KCksIHJlc3BvbnNlKSkKICAgICAgICAg
cmV0dXJuOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgLy8gUmVmcmFpbiBmcm9tIGNhbGxp
bmcgZGlkUmVjZWl2ZVJlc3BvbnNlIGlmIFF1aWNrTG9vayB3aWxsIGNvbnZlcnQgdGhpcyByZXNw
b25zZSwgc2luY2UgdGhlIE1JTUUgdHlwZSBvZiB0aGUKICAgICAvLyBjb252ZXJ0ZWQgcmVzb3Vy
Y2UgaXNuJ3QgeWV0IGtub3duLiBXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIHdp
bGwgbGF0ZXIgY2FsbCBkaWRSZWNlaXZlUmVzcG9uc2UgdXBvbgogICAgIC8vIHJlY2VpdmluZyB0
aGUgY29udmVydGVkIGRhdGEuCi0gICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5z
ZXRRdWlja0xvb2tIYW5kbGUoUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUocmVzb3VyY2VMb2FkZXIo
KSwgcmVzcG9uc2VDb3B5Lm5zVVJMUmVzcG9uc2UoKSkpOworICAgIG1fY29yZUxvYWRlci0+ZG9j
dW1lbnRMb2FkZXIoKS0+c2V0UXVpY2tMb29rSGFuZGxlKFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRl
KHJlc291cmNlTG9hZGVyKCksIHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSkpOwogICAgIGlmICgh
bV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5xdWlja0xvb2tIYW5kbGUoKSkKICNlbmRp
ZgotICAgICAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZUNvcHkp
OworICAgICAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiAK
ICAgICAvLyBJZiBtX2NvcmVMb2FkZXIgYmVjb21lcyBudWxsIGFzIGEgcmVzdWx0IG9mIHRoZSBk
aWRSZWNlaXZlUmVzcG9uc2UgY2FsbGJhY2ssIHdlIGNhbid0IHVzZSB0aGUgc2VuZCBmdW5jdGlv
bigpLiAKICAgICBpZiAoIW1fY29yZUxvYWRlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAx
NzMzNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9p
ZCBkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0Jl
U2VudCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VXaXRoQ2VydGlmaWNhdGVJbmZvKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8mLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaFJlc291cmNlTG9hZChkb3VibGUgZmlu
aXNoVGltZSk7CiAgICAgdm9pZCBkaWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDkgQEAg
bWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZQogCiAgICAgQ2FuY2VsUmVz
b3VyY2VMb2FkZXIoKQogCi0gICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogV2UnbGwgbmVl
ZCBtdWNoIG1vcmUgZ3JhbnVsYXJpdHkgZm9yIHJlc3BvbnNlIG1lc3NhZ2VzLgogICAgIFdpbGxT
ZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlKQogICAgIERpZFNlbmREYXRhKHVpbnQ2NF90
IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KQotICAgIERpZFJlY2VpdmVS
ZXNwb25zZVdpdGhDZXJ0aWZpY2F0ZUluZm8oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZSwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbywgYm9vbCBuZWVk
c0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKKyAgICBEaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKICAgICBEaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFS
ZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKICAgICBEaWRGaW5pc2hS
ZXNvdXJjZUxvYWQoZG91YmxlIGZpbmlzaFRpbWUpCiAgICAgRGlkRmFpbFJlc291cmNlTG9hZChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAJKHJldmlzaW9uIDE3MzM1NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NTUsNyArNDU1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRDbwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCiAKLSAgICB3ZWJQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5m
cmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0
YXRpY19jYXN0PHVpbnQzMl90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5
cGUoKSksIENlcnRpZmljYXRlSW5mbyhkb2N1bWVudExvYWRlci5yZXNwb25zZSgpKSwgSW5qZWN0
ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CisgICAgd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9m
cmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRM
b2FkZXIucmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3Zp
ZGVyLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigp
LmxvYWRUeXBlKCkpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygp
LCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKICAg
ICB3ZWJQYWdlLT5kaWRDb21taXRMb2FkKG1fZnJhbWUpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDE3MzM1
NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQxNyw3ICs0MTcsNyBAQCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8g
V2ViRnJhbWU6OmNlcnRpCiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJu
IENlcnRpZmljYXRlSW5mbygpOwogCi0gICAgcmV0dXJuIENlcnRpZmljYXRlSW5mbyhkb2N1bWVu
dExvYWRlci0+cmVzcG9uc2UoKSk7CisgICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLT5yZXNwb25z
ZSgpLmNlcnRpZmljYXRlSW5mbygpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OmlubmVyVGV4dCgp
IGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237774</attachid>
            <date>2014-09-08 02:44:10 -0700</date>
            <delta_ts>2014-09-08 09:55:05 -0700</delta_ts>
            <desc>patch 6</desc>
            <filename>certificate-info-10.patch</filename>
            <type>text/plain</type>
            <size>30893</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzM3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE0LTA5LTA3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBQYXNzIGNlcnRpZmljYXRlIGlu
Zm8gYXMgcGFydCBvZiBSZXNvdXJjZVJlc3BvbnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY2MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY3VycmVudCB3YXkgb2YgcGFzc2luZyBjZXJ0aWZp
Y2F0ZSBpbmZvIHNlcGFyYXRlbHkgZnJvbSBSZXNvdXJjZVJlc3BvbnNlIGFuZCB0aGVuIGphbW1p
bmcgaXQgYmFjaworICAgICAgICBpcyBjb21wbGV4IGFuZCBjb25mdXNpbmcuIFRoaXMgcGF0Y2gg
bWFrZXMgaXQgYSB0cnVlIHBhcnQgb2YgdGhlIFJlc291cmNlUmVzcG9uc2UuCisKKyAgICAgICAg
V2l0aCB0aGlzIHBhdGNoIHdlIGFsc28gb25seSBjcmVhdGUgYW5kIHBhc3MgdGhlIGNlcnRpZmlj
YXRlIGluZm8gb2JqZWN0IGZvciB0aGUgbWFpbiByZXNvdXJjZS4gSXQgaXMKKyAgICAgICAgYSBi
aWcgYW5kIGNvbXBsZXggb2JqZWN0IGFuZCB3ZSBuZXZlciBsb29rIGludG8gaXQgZm9yIGFueSBv
dGhlciByZXNvdXJjZSB0eXBlLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UpOgorCisg
ICAgICAgICAgICBNYXJrIGluaXRpYWxpemVkIGZvciBzeW50aGV0aWMgcmVzcG9uc2VzLCB1bml0
aWFsaXplZCBmb3IgdGhvc2UgYmFja2VkIGJ5IGEgcGxhdGZvcm0gcmVxdWVzdC4KKworICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmluaXRpYWxpemVDZXJ0aWZpY2F0ZUlu
Zm8pOgorCisgICAgICAgICAgICBDYWxsaW5nIHRoaXMgcHVsbHMgdGhlIGNlcnRpZmljYXRlIGlu
Zm8gb3V0IGZyb20gdGhlIHBsYXRmb3JtIHR5cGUuCisgICAgICAgICAgICBJdCBzaG91ZCBvbmx5
IGJlIHVzZWQgZm9yIHJlc291cmNlcyB0aGF0IG5lZWQgaXQuCisKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2VCYXNlOjpwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUpOgorCisgICAgICAgICAg
ICBFbmNvZGUgYW5kIGRlY29kZSBjZXJ0aWZpY2F0ZSBpbmZvIGlmIGl0IGlzIHByZXNlbnQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm8uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm9NYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnNldENlcnRpZmljYXRlQ2hhaW4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6Y2VydGlmaWNhdGVDaGFpbik6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZp
Y2F0ZUluZm8pOgorCiAyMDE0LTA5LTA3ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ft
c3VuZy5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIHRvQmFzaWNTaGFwZUZvbygpIGluc3RlYWQg
b2Ygc3RhdGljX2Nhc3Q8QmFzaWNTaGFwZUZvbyo+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgko
cmV2aXNpb24gMTczMzcyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTQ5MSw4ICs0OTEsNyBAQCBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlz
dDhiYWNrSXRlbUV2CiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDhjYXBhY2l0eUV2CiBf
X1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDlnb0ZvcndhcmRFdgogX19aTjdXZWJDb3JlMTVC
YWNrRm9yd2FyZExpc3RDMUVQTlNfNFBhZ2VFCi1fX1pON1dlYkNvcmUxNUNlcnRpZmljYXRlSW5m
b0MxRVBLOV9fQ0ZBcnJheQotX19aTjdXZWJDb3JlMTVDZXJ0aWZpY2F0ZUluZm9DMUVSS05TXzE2
UmVzb3VyY2VSZXNwb25zZUUKK19fWk43V2ViQ29yZTE1Q2VydGlmaWNhdGVJbmZvQzFFTjNXVEY5
UmV0YWluUHRySVBLOV9fQ0ZBcnJheUVFCiBfX1pON1dlYkNvcmUxNUNlcnRpZmljYXRlSW5mb0Mx
RXYKIF9fWk43V2ViQ29yZTE1RE9NV3JhcHBlcldvcmxkMTNjbGVhcldyYXBwZXJzRXYKIF9fWk43
V2ViQ29yZTE1RE9NV3JhcHBlcldvcmxkRDFFdgpAQCAtNzE2LDcgKzcxNSw2IEBAIF9fWk43V2Vi
Q29yZTE2TmF2aWdhdGlvbkFjdGlvbkMxRVJLTlNfMTUKIF9fWk43V2ViQ29yZTE2TmF2aWdhdGlv
bkFjdGlvbkMxRVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFTlNfMTNGcmFtZUxvYWRUeXBlRWIKIF9f
Wk43V2ViQ29yZTE2TmF2aWdhdGlvbkFjdGlvbkMxRVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFTlNf
MTROYXZpZ2F0aW9uVHlwZUUKIF9fWk43V2ViQ29yZTE2TmF2aWdhdGlvbkFjdGlvbkMxRXYKLV9f
Wk43V2ViQ29yZTE2UmVzb3VyY2VSZXNwb25zZTE5c2V0Q2VydGlmaWNhdGVDaGFpbkVQSzlfX0NG
QXJyYXkKIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjEwaW5pdFNjcmlwdEVSTlNfMTVE
T01XcmFwcGVyV29ybGRFCiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIxMWNyZWF0ZVdv
cmxkRXYKIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjEzZXhlY3V0ZVNjcmlwdEVSS04z
V1RGNlN0cmluZ0ViCkBAIC0xNzgxLDcgKzE3NzksNiBAQCBfX1pOSzdXZWJDb3JlMTZIVE1MSW5w
dXRFbGVtZW50MjBpc0RhdGVUCiBfX1pOSzdXZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50NmlzVGV4
dEV2CiBfX1pOSzdXZWJDb3JlMTZJY29uRGF0YWJhc2VCYXNlMTJkYXRhYmFzZVBhdGhFdgogX19a
Tks3V2ViQ29yZTE2UmVzb3VyY2VSZXNwb25zZTEzbnNVUkxSZXNwb25zZUV2Ci1fX1pOSzdXZWJD
b3JlMTZSZXNvdXJjZVJlc3BvbnNlMTZjZXJ0aWZpY2F0ZUNoYWluRXYKIF9fWk5LN1dlYkNvcmUx
NlZpc2libGVTZWxlY3Rpb24xN2lzQ29udGVudEVkaXRhYmxlRXYKIF9fWk5LN1dlYkNvcmUxNlZp
c2libGVTZWxlY3Rpb24xN2lzSW5QYXNzd29yZEZpZWxkRXYKIF9fWk5LN1dlYkNvcmUxNlZpc2li
bGVTZWxlY3Rpb24xN3RvTm9ybWFsaXplZFJhbmdlRXYKQEAgLTE4MzAsMTEgKzE4MjcsMTMgQEAg
X19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxMmlzQQogX19aTks3V2ViQ29yZTIw
UmVzb3VyY2VSZXNwb25zZUJhc2UxMmxhc3RNb2RpZmllZEV2CiBfX1pOSzdXZWJDb3JlMjBSZXNv
dXJjZVJlc3BvbnNlQmFzZTE0aHR0cFN0YXR1c0NvZGVFdgogX19aTks3V2ViQ29yZTIwUmVzb3Vy
Y2VSZXNwb25zZUJhc2UxNGh0dHBTdGF0dXNUZXh0RXYKK19fWk5LN1dlYkNvcmUyMFJlc291cmNl
UmVzcG9uc2VCYXNlMTVjZXJ0aWZpY2F0ZUluZm9FdgogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VS
ZXNwb25zZUJhc2UxNWh0dHBIZWFkZXJGaWVsZEVOU18xNEhUVFBIZWFkZXJOYW1lRQogX19aTks3
V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxNmh0dHBIZWFkZXJGaWVsZHNFdgogX19aTks3
V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxNnRleHRFbmNvZGluZ05hbWVFdgogX19aTks3
V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxN3N1Z2dlc3RlZEZpbGVuYW1lRXYKIF9fWk5L
N1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjFleHBlY3RlZENvbnRlbnRMZW5ndGhFdgor
X19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UyNWluaXRpYWxpemVDZXJ0aWZpY2F0
ZUluZm9FdgogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UzdXJsRXYKIF9fWk5L
N1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlNmlzSFRUUEV2CiBfX1pOSzdXZWJDb3JlMjBS
ZXNvdXJjZVJlc3BvbnNlQmFzZThsYXp5SW5pdEVOUzBfOUluaXRMZXZlbEUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNpb24g
MTczMzcyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTk3OTgsNiArMTk3OTgsNyBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xTeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIiAv
PgogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxB
dXRoZW50aWNhdGlvbkNGLmgiIC8+CiAgICAgPEN1c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxuZXR3b3JrXGNmXEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiIC8+CisgICAgPEN1
c3RvbUJ1aWxkU3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXG1hY1xDZXJ0aWZpY2F0
ZUluZm8uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtc
Y2ZcRG93bmxvYWRCdW5kbGUuaCIgLz4KICAgICA8Q3VzdG9tQnVpbGRTdGVwIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXG5ldHdvcmtcY2ZcRm9ybURhdGFTdHJlYW1DRk5ldC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxMb2FkZXJSdW5Mb29wQ0YuaCIg
Lz4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDE3MzM3MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTE5OSw3ICs5MTk5LDcg
QEAKIAkJNURCMUJDNjkxMDcxNUE2NDAwRUZBQTQ5IC8qIFRyYW5zZm9ybVNvdXJjZUxpYnhzbHQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhbnNmb3JtU291cmNl
TGlieHNsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVERkVCQUI2MTg1OTJC
NkQwMEM3NUJFQiAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViS2l0QXZhaWxhYmlsaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVGMkRCQkU3MTc4RTMzMkQwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm9NYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDZXJ0aWZpY2F0ZUluZm9N
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVGMkRCQkU4MTc4RTMzNjkwMDE0
MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2VydGlmaWNhdGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVGMkRC
QkU4MTc4RTMzNjkwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ2VydGlmaWNhdGVJbmZvLmg7IHBhdGggPSAuLi9tYWMvQ2VydGlm
aWNhdGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVGQzdEQzI2Q0ZFMjU2
MzIwMEI4NUFFNSAvKiBKU0V2ZW50VGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0V2ZW50VGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVG
RTFEMjkxMTc4RkQxRjMwMDFBQTNDMyAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsg
bmFtZSA9IFNlY3VyaXR5LmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvU2VjdXJpdHkuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJNjI2Q0RF
MEMxMTQwNDI0QzAwMUU1QTY4IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwYXRpYWxOYXZpZ2F0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MzE3LDcgKzE2MzE3LDYgQEAKIAkJCQk1MTRDNzY0MjBD
RTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMuaCAqLywKIAkJCQk1MTRDNzY0MzBD
RTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMubW0gKi8sCiAJCQkJRTE2NEEyRUIx
OTFBRTYzNTAwMTA3MzdEIC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbSAqLywKLQkJCQk1
RjJEQkJFODE3OEUzMzY5MDAxNDE0ODYgLyogQ2VydGlmaWNhdGVJbmZvLmggKi8sCiAJCQkJNUYy
REJCRTcxNzhFMzMyRDAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5mb01hYy5tbSAqLywKIAkJCQlF
MTQyNEM4RjE2NEI0NjBCMDBGMzJENDAgLyogQ29va2llSmFyTWFjLm1tICovLAogCQkJCUUxM0Yw
MUYwMTI3MEUxOTAwMERGQkE3MSAvKiBDb29raWVTdG9yYWdlTWFjLm1tICovLApAQCAtMjA1Njks
NiArMjA1NjgsNyBAQAogCQkJCTdFRTY4NDRDMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNh
dGlvbkNGLmNwcCAqLywKIAkJCQk3RUU2ODQ0RDEyRDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGlj
YXRpb25DRi5oICovLAogCQkJCTdFRTY4NDRFMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oICovLAorCQkJCTVGMkRCQkU4MTc4RTMzNjkwMDE0MTQ4NiAvKiBDZXJ0
aWZpY2F0ZUluZm8uaCAqLywKIAkJCQk3RUU2ODQ0RjEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2ll
SmFyQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDUwMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVT
dG9yYWdlQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDUyMTJEMjZFMzgwMEU3OTQxNSAvKiBDcmVk
ZW50aWFsU3RvcmFnZUNGTmV0LmNwcCAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCShyZXZpc2lv
biAxNzMzNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBpbmxpbmUgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgUmVzb3VyY2VSCiAKIFJlc291cmNlUmVzcG9uc2VCYXNlOjpS
ZXNvdXJjZVJlc3BvbnNlQmFzZSgpICAKICAgICA6IG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKDAp
CisgICAgLCBtX2RpZEluaXRpYWxpemVDZXJ0aWZpY2F0ZUluZm8oZmFsc2UpCiAgICAgLCBtX2h0
dHBTdGF0dXNDb2RlKDApCiAgICAgLCBtX2Nvbm5lY3Rpb25JRCgwKQogICAgICwgbV9jYWNoZUNv
bnRyb2xNYXhBZ2UoMCkKQEAgLTcyLDYgKzczLDcgQEAgUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJl
c291cmNlUmVzcG9uc2VCYQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1fZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKGV4cGVjdGVkTGVuZ3RoKQogICAgICwgbV90ZXh0RW5jb2RpbmdO
YW1lKHRleHRFbmNvZGluZ05hbWUpCisgICAgLCBtX2RpZEluaXRpYWxpemVDZXJ0aWZpY2F0ZUlu
Zm8odHJ1ZSkKICAgICAsIG1faHR0cFN0YXR1c0NvZGUoMCkKICAgICAsIG1fY29ubmVjdGlvbklE
KDApCiAgICAgLCBtX2NhY2hlQ29udHJvbE1heEFnZSgwKQpAQCAtMjA1LDcgKzIwNywxOCBAQCB2
b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRUZXh0RW5jb2RpCiAgICAgLy8gRklYTUU6IFNo
b3VsZCBpbnZhbGlkYXRlIG9yIHVwZGF0ZSBwbGF0Zm9ybSByZXNwb25zZSBpZiBwcmVzZW50Lgog
fQogCi0vLyBGSVhNRSBzaG91bGQgY29tcHV0ZSB0aGlzIG9uIHRoZSBmbHkKK3ZvaWQgUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OmluaXRpYWxpemVDZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAoreworICAg
IG1fY2VydGlmaWNhdGVJbmZvID0gc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+
KHRoaXMpLT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpOworICAgIG1fZGlkSW5pdGlhbGl6ZUNl
cnRpZmljYXRlSW5mbyA9IHRydWU7Cit9CisKK0NlcnRpZmljYXRlSW5mbyBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6Y2VydGlmaWNhdGVJbmZvKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9kaWRJbml0
aWFsaXplQ2VydGlmaWNhdGVJbmZvKTsKKyAgICByZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87Cit9
CisKIFN0cmluZyBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25z
dAogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJjZVJlc3BvbnNlKj4odGhp
cyktPnBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHJldmlz
aW9uIDE3MzM3MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBS
ZXNvdXJjZVJlc3BvbnNlQmFzZV9oCiAjZGVmaW5lIFJlc291cmNlUmVzcG9uc2VCYXNlX2gKIAor
I2luY2x1ZGUgIkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIK
ICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRUaW1pbmcuaCIKQEAgLTkx
LDYgKzkyLDkgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0F0dGFjaG1l
bnQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUo
KSBjb25zdDsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUNlcnRpZmljYXRlSW5mbygpIGNvbnN0Owor
ICAgIENlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKICAgICAKICAgICAv
LyBUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIHBhcnNlZCB2YWx1ZXMgb2YgdGhlIGNvcnJlc3BvbmRp
bmcgcmVzcG9uc2UgaGVhZGVycy4KICAgICAvLyBOYU4gbWVhbnMgdGhhdCB0aGUgaGVhZGVyIHdh
cyBub3QgcHJlc2VudCBvciBoYWQgaW52YWxpZCB2YWx1ZS4KQEAgLTE0MSw3ICsxNDUsOCBAQCBw
cm90ZWN0ZWQ6CiAKICAgICAvLyBUaGUgUmVzb3VyY2VSZXNwb25zZSBzdWJjbGFzcyBtYXkgInNo
YWRvdyIgdGhpcyBtZXRob2QgdG8gbGF6aWx5IGluaXRpYWxpemUgcGxhdGZvcm0gc3BlY2lmaWMg
ZmllbGRzCiAgICAgdm9pZCBwbGF0Zm9ybUxhenlJbml0KEluaXRMZXZlbCkgeyB9Ci0gICAgU3Ry
aW5nIHBsYXRmb3JtU3VnZ2VzdGVkRmlsZU5hbWUoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAg
IENlcnRpZmljYXRlSW5mbyBwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsgcmV0dXJu
IENlcnRpZmljYXRlSW5mbygpOyB9OworICAgIFN0cmluZyBwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVO
YW1lKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KIAogICAgIC8vIFRoZSBSZXNvdXJjZVJl
c3BvbnNlIHN1YmNsYXNzIG1heSAic2hhZG93IiB0aGlzIG1ldGhvZCB0byBjb21wYXJlIHBsYXRm
b3JtIHNwZWNpZmljIGZpZWxkcwogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRy
dWU7IH0KQEAgLTE1NCw2ICsxNTksOSBAQCBwcm90ZWN0ZWQ6CiAgICAgSFRUUEhlYWRlck1hcCBt
X2h0dHBIZWFkZXJGaWVsZHM7CiAgICAgbXV0YWJsZSBSZXNvdXJjZUxvYWRUaW1pbmcgbV9yZXNv
dXJjZUxvYWRUaW1pbmc7CiAKKyAgICBtdXRhYmxlIGJvb2wgbV9kaWRJbml0aWFsaXplQ2VydGlm
aWNhdGVJbmZvOworICAgIG11dGFibGUgQ2VydGlmaWNhdGVJbmZvIG1fY2VydGlmaWNhdGVJbmZv
OworCiAgICAgaW50IG1faHR0cFN0YXR1c0NvZGU7CiAgICAgdW5zaWduZWQgbV9jb25uZWN0aW9u
SUQ7CiAKQEAgLTIwNiw2ICsyMTQsOSBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNv
ZGUoRW5jb2RlCiAgICAgZW5jb2RlciA8PCBtX3Jlc291cmNlTG9hZFRpbWluZzsKICAgICBlbmNv
ZGVyIDw8IG1faHR0cFN0YXR1c0NvZGU7CiAgICAgZW5jb2RlciA8PCBtX2Nvbm5lY3Rpb25JRDsK
KyAgICBlbmNvZGVyIDw8IG1fZGlkSW5pdGlhbGl6ZUNlcnRpZmljYXRlSW5mbzsKKyAgICBpZiAo
bV9kaWRJbml0aWFsaXplQ2VydGlmaWNhdGVJbmZvKQorICAgICAgICBlbmNvZGVyIDw8IG1fY2Vy
dGlmaWNhdGVJbmZvOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMjQwLDYgKzI1
MSwxMiBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUoRGVjb2RlCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fY29ubmVj
dGlvbklEKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzcG9uc2UubV9kaWRJbml0aWFsaXplQ2VydGlmaWNhdGVJbmZvKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChyZXNwb25zZS5tX2RpZEluaXRpYWxpemVDZXJ0aWZpY2F0ZUluZm8p
IHsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2NlcnRpZmljYXRlSW5m
bykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIHJlc3BvbnNlLm1faXNO
dWxsID0gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lv
biAxNzMzNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTEgKzkyLDYgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVzcG9uc2UgKm5zVVJMUmVzcG9uc2UoKSBjb25zdDsKICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRDZXJ0aWZpY2F0ZUNoYWluKENGQXJyYXlSZWYpOwotICAgIFdFQkNP
UkVfRVhQT1JUIFJldGFpblB0cjxDRkFycmF5UmVmPiBjZXJ0aWZpY2F0ZUNoYWluKCkgY29uc3Q7
Ci0jZW5kaWYKLQogICAgIGJvb2wgcGxhdGZvcm1SZXNwb25zZUlzVXBUb0RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3BsYXRmb3JtUmVzcG9uc2VJc1VwVG9EYXRlOyB9CiAKIHByaXZhdGU6CkBAIC0x
MDQsNiArOTksOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9ybUxhenlJbml0KEluaXRM
ZXZlbCk7CiAgICAgU3RyaW5nIHBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdDsKKyAg
ICBDZXJ0aWZpY2F0ZUluZm8gcGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKKwogICAg
IFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZG9QbGF0Zm9ybUNv
cHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZGF0YSkg
Y29uc3QgeyByZXR1cm4gZGF0YTsgfQogICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KFBhc3NPd25Q
dHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4pIHsgfQogI2lmIFBMQVRGT1JNKENP
Q09BKQpAQCAtMTIxLDEwICsxMTgsNiBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIG11dGFibGUgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IG1fbnNSZXNwb25zZTsKICNlbmRp
ZgotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIC8vIENlcnRpZmlj
YXRlIGNoYWluIGlzIG5vcm1hbGx5IHBhcnQgb2YgTlMvQ0ZVUkxSZXNwb25zZSwgYnV0IHRoZXJl
IGlzIG5vIHdheSB0byByZS1hZGQgaXQgdG8gYSBkZXNlcmlhbGl6ZWQgcmVzcG9uc2UgYWZ0ZXIg
SVBDLgotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBtX2V4dGVybmFsQ2VydGlmaWNhdGVDaGFp
bjsKLSNlbmRpZgogfTsKIAogc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGEg
OiBwdWJsaWMgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YUJhc2UgewpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ2VydGlmaWNhdGVJbmZvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ2VydGlmaWNhdGVJ
bmZvLmgJKHJldmlzaW9uIDE3MzM3MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL0NlcnRpZmljYXRlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw4IEBA
CiAjaWZuZGVmIENlcnRpZmljYXRlSW5mb19oCiAjZGVmaW5lIENlcnRpZmljYXRlSW5mb19oCiAK
LSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpZiBQTEFURk9STShDT0NP
QSkKKwogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMzQsOCArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDZXJ0aWZpY2F0ZUlu
Zm8gewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIENlcnRpZmljYXRlSW5mbygpOwotICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENlcnRpZmljYXRlSW5mbyhjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ2VydGlmaWNhdGVJbmZvKENG
QXJyYXlSZWYgY2VydGlmaWNhdGVDaGFpbik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
Q2VydGlmaWNhdGVJbmZvKFJldGFpblB0cjxDRkFycmF5UmVmPiBjZXJ0aWZpY2F0ZUNoYWluKTsK
IAogICAgIHZvaWQgc2V0Q2VydGlmaWNhdGVDaGFpbihDRkFycmF5UmVmIGNlcnRpZmljYXRlQ2hh
aW4pIHsgbV9jZXJ0aWZpY2F0ZUNoYWluID0gY2VydGlmaWNhdGVDaGFpbjsgfQogICAgIENGQXJy
YXlSZWYgY2VydGlmaWNhdGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGVDaGFp
bi5nZXQoKTsgfQpAQCAtNDgsNiArNDgsOSBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDRkFy
cmF5UmVmPiBtX2NlcnRpZmljYXRlQ2hhaW47CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KyNlbHNlCit0eXBlZGVmIGludDMyX3QgQ2VydGlmaWNhdGVJbmZvOworI2VuZGlmCit9CiAKLSNl
bmRpZiAvLyBDZXJ0aWZpY2F0ZUluZm9faAorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm9NYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ2VydGlmaWNhdGVJbmZvTWFjLm1t
CShyZXZpc2lvbiAxNzMzNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9DZXJ0aWZpY2F0ZUluZm9NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDEyICszMiw3IEBA
IENlcnRpZmljYXRlSW5mbzo6Q2VydGlmaWNhdGVJbmZvKCkKIHsKIH0KIAotQ2VydGlmaWNhdGVJ
bmZvOjpDZXJ0aWZpY2F0ZUluZm8oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi0g
ICAgOiBtX2NlcnRpZmljYXRlQ2hhaW4ocmVzcG9uc2UuY2VydGlmaWNhdGVDaGFpbigpKQotewot
fQotCi1DZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlSW5mbyhDRkFycmF5UmVmIGNlcnRpZmlj
YXRlQ2hhaW4pCitDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlSW5mbyhSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gY2VydGlmaWNhdGVDaGFpbikKICAgICA6IG1fY2VydGlmaWNhdGVDaGFpbihjZXJ0
aWZpY2F0ZUNoYWluKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCShyZXZpc2lvbiAx
NzMzNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJl
c3BvbnNlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDEyIEBAIHZvaWQgUmVz
b3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdCgKICAgICBtX2luaXRMZXZlbCA9IGluaXRM
ZXZlbDsKIH0KIAorQ2VydGlmaWNhdGVJbmZvIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2Vy
dGlmaWNhdGVJbmZvKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9uc1Jlc3BvbnNlKTsKKyAgICBy
ZXR1cm4gQ2VydGlmaWNhdGVJbmZvKGFkb3B0Q0Yod2tDb3B5TlNVUkxSZXNwb25zZUNlcnRpZmlj
YXRlQ2hhaW4obV9uc1Jlc3BvbnNlLmdldCgpKSkpOworfQorCiBTdHJpbmcgUmVzb3VyY2VSZXNw
b25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFtu
c1VSTFJlc3BvbnNlKCkgc3VnZ2VzdGVkRmlsZW5hbWVdOwpAQCAtMTg0LDIzICsxOTAsNSBAQCBi
b29sIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShjCiAKICNlbmRpZiAvLyBVU0Uo
Q0ZORVRXT1JLKQogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCi0KLXZv
aWQgUmVzb3VyY2VSZXNwb25zZTo6c2V0Q2VydGlmaWNhdGVDaGFpbihDRkFycmF5UmVmIGNlcnRp
ZmljYXRlQ2hhaW4pCi17Ci0gICAgQVNTRVJUKCFtX25zUmVzcG9uc2UgfHwgIXdrQ29weU5TVVJM
UmVzcG9uc2VDZXJ0aWZpY2F0ZUNoYWluKG1fbnNSZXNwb25zZS5nZXQoKSkpOwotICAgIG1fZXh0
ZXJuYWxDZXJ0aWZpY2F0ZUNoYWluID0gY2VydGlmaWNhdGVDaGFpbjsKLX0KLQotUmV0YWluUHRy
PENGQXJyYXlSZWY+IFJlc291cmNlUmVzcG9uc2U6OmNlcnRpZmljYXRlQ2hhaW4oKSBjb25zdAot
ewotICAgIGlmIChtX2V4dGVybmFsQ2VydGlmaWNhdGVDaGFpbikKLSAgICAgICAgcmV0dXJuIG1f
ZXh0ZXJuYWxDZXJ0aWZpY2F0ZUNoYWluOwotCi0gICAgcmV0dXJuIGFkb3B0Q0Yod2tDb3B5TlNV
UkxSZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4obnNVUkxSZXNwb25zZSgpKSk7Ci19Ci0KLSNlbmRp
ZiAvLyBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlLmgJKHJldmlzaW9uIDE3MzM3MikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZG9VcGRhdGVS
ZXNvdXJjZVJlc3BvbnNlKCkgeyB9CiAgICAgU3RyaW5nIHBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5h
bWUoKSBjb25zdDsKKyAgICBDZXJ0aWZpY2F0ZUluZm8gcGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8o
KSBjb25zdDsKIAogICAgIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0
YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3Bv
bnNlRGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQogICAgIHZvaWQgZG9QbGF0Zm9y
bUFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4pIHsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9u
c2VTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCShyZXZpc2lvbiAxNzMzNzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDExIEBAIHZvaWQgUmVzb3VyY2VSZXNwb25z
ZTo6dXBkYXRlRnJvbVNvdXBNZXMKICAgICBzZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoc291cF9t
ZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRlbnRfbGVuZ3RoKGhlYWRlcnMpKTsKIH0KIAorQ2VydGlm
aWNhdGVJbmZvIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKG1fY2VydGlmaWNhdGUuZ2V0KCksIG1f
dGxzRXJyb3JzKTsKK30KKwogU3RyaW5nIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2Vz
dGVkRmlsZW5hbWUoKSBjb25zdAogewogICAgIHJldHVybiBmaWxlbmFtZUZyb21IVFRQQ29udGVu
dERpc3Bvc2l0aW9uKGh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudERpc3Bv
c2l0aW9uKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzMzNzIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAxNC0wOS0w
NyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUGFzcyBjZXJ0
aWZpY2F0ZSBpbmZvIGFzIHBhcnQgb2YgUmVzb3VyY2VSZXNwb25zZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NjExCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKToKKworICAgICAgICAgICAgSW5pdGlhbGl6ZSB0
aGUgY2VydGlmaWNhdGUgaW5mbyBvbmx5IGlmIHJlcXVlc3RlZC4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlV2l0aENlcnRpZmljYXRlSW5mbyk6
IERlbGV0ZWQuCisKKyAgICAgICAgICAgIFJlbmFtZSBkaWRSZWNlaXZlUmVzcG9uc2VXaXRoQ2Vy
dGlmaWNhdGVJbmZvIC0+IGRpZFJlY2VpdmVSZXNwb25zZSBhcyBpdCBpcyBub3cgcGFydCBvZiB0
aGUgcmVzcG9uc2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
bWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisKKyAgICAgICAgICAgIFJlcXVlc3QgY2VydGlmaWNhdGUgaW5m
byBmb3IgdGhlIG1haW4gcmVzb3VyY2Ugb25seS4KKworICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y2Vy
dGlmaWNhdGVJbmZvKToKKwogMjAxNC0wOS0wNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFhQQ1B0ciBzaG91bGQgYmUgY29udmVydGVkIGludG8gYW4gYWxsIHB1cnBv
c2Ugc21hcnQgcG9pbnRlciBmb3Igb3Nfb2JqZWN0cwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZp
c2lvbiAxNzMzNzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5Nyw3IEBAIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG8KICAgICAsIG1fc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdChwYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QpCiAgICAgLCBtX2lzTG9hZGluZ01haW5SZXNvdXJjZShwYXJh
bWV0ZXJzLmlzTWFpblJlc291cmNlKQogICAgICwgbV9kZWZlcnNMb2FkaW5nKHBhcmFtZXRlcnMu
ZGVmZXJzTG9hZGluZykKKyAgICAsIG1fbmVlZHNDZXJ0aWZpY2F0ZUluZm8ocGFyYW1ldGVycy5u
ZWVkc0NlcnRpZmljYXRlSW5mbykKICAgICAsIG1fc2FuZGJveEV4dGVuc2lvbnNBcmVDb25zdW1l
ZChmYWxzZSkKICAgICAsIG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQogewpAQCAtMjE2LDEwICsy
MTcsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZQogewogICAg
IEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOwogCisgICAgaWYgKG1f
bmVlZHNDZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgIHJlc3BvbnNlLmluaXRpYWxpemVDZXJ0aWZp
Y2F0ZUluZm8oKTsKKwogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCiAgICAgICAgIG1fc3luY2hy
b25vdXNMb2FkRGF0YS0+bV9yZXNwb25zZSA9IHJlc3BvbnNlOwogICAgIGVsc2UKLSAgICAgICAg
c2VuZEFib3J0aW5nT25GYWlsdXJlKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVj
ZWl2ZVJlc3BvbnNlV2l0aENlcnRpZmljYXRlSW5mbyhyZXNwb25zZSwgQ2VydGlmaWNhdGVJbmZv
KHJlc3BvbnNlKSwgaXNMb2FkaW5nTWFpblJlc291cmNlKCkpKTsKKyAgICAgICAgc2VuZEFib3J0
aW5nT25GYWlsdXJlKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3Bv
bnNlKHJlc3BvbnNlLCBpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkpOwogCiAgICAgLy8gbV9oYW5k
bGUgd2lsbCBiZSBudWxsIGlmIHRoZSByZXF1ZXN0IGdvdCBhYm9ydGVkIGFib3ZlLgogICAgIGlm
ICghbV9oYW5kbGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTczMzcyKQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE5MCw2ICsxOTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OwogICAgIGJvb2wgbV9pc0xvYWRpbmdNYWlu
UmVzb3VyY2U7CiAgICAgYm9vbCBtX2RlZmVyc0xvYWRpbmc7CisgICAgYm9vbCBtX25lZWRzQ2Vy
dGlmaWNhdGVJbmZvOwogCiAgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gbV9y
ZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zOwogICAgIFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4
dGVuc2lvbj4+IG1fcmVzb3VyY2VTYW5kYm94RXh0ZW5zaW9uczsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDE3MzM3MikKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDgsNiArNDgsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6TmV0
d29ya1JlCiAgICAgLCBpc01haW5SZXNvdXJjZShmYWxzZSkKICAgICAsIGRlZmVyc0xvYWRpbmco
ZmFsc2UpCiAgICAgLCBzaG91bGRCdWZmZXJSZXNvdXJjZShmYWxzZSkKKyAgICAsIG5lZWRzQ2Vy
dGlmaWNhdGVJbmZvKGZhbHNlKQogewogfQogCkBAIC05Niw2ICs5Nyw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY28KICAgICBlbmNvZGVyIDw8IGlzTWFpblJlc291
cmNlOwogICAgIGVuY29kZXIgPDwgZGVmZXJzTG9hZGluZzsKICAgICBlbmNvZGVyIDw8IHNob3Vs
ZEJ1ZmZlclJlc291cmNlOworICAgIGVuY29kZXIgPDwgbmVlZHNDZXJ0aWZpY2F0ZUluZm87CiB9
CiAKIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkFyZ3Vt
ZW50RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIHJlc3Vs
dCkKQEAgLTE0OCw2ICsxNTAsOCBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
OjpkZWNvCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5zaG91bGRCdWZmZXJSZXNvdXJjZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5uZWVkc0NlcnRpZmljYXRlSW5mbykpCisgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogU291cmNlL1dlYktp
dDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oCShyZXZpc2lvbiAxNzMzNzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
TmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC02NCw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTWFpblJlc291cmNlOwogICAgIGJv
b2wgZGVmZXJzTG9hZGluZzsKICAgICBib29sIHNob3VsZEJ1ZmZlclJlc291cmNlOworICAgIGJv
b2wgbmVlZHNDZXJ0aWZpY2F0ZUluZm87CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCShyZXZpc2lvbiAxNzMzNzIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0Miw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjpzY2hlZHVsZUwKICAgICBsb2FkUGFyYW1ldGVycy5pc01haW5SZXNvdXJjZSA9
IHJlc291cmNlICYmIHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNv
dXJjZTsKICAgICBsb2FkUGFyYW1ldGVycy5kZWZlcnNMb2FkaW5nID0gcmVzb3VyY2VMb2FkZXIt
PmRlZmVyc0xvYWRpbmcoKTsKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRCdWZmZXJSZXNvdXJj
ZSA9IHJlc291cmNlICYmIChyZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpDU1NT
dHlsZVNoZWV0IHx8IHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdCk7
CisgICAgLy8gQ2VydGlmaWNhdGUgaW5mbyBpcyBhIGJpZyBvYmplY3QgdG8gc2VyaWFsaXplIGFu
ZCB3ZSBvbmx5IHVzZSBpdCBmb3IgdGhlIG1haW4gcmVzb3VyY2UuCisgICAgbG9hZFBhcmFtZXRl
cnMubmVlZHNDZXJ0aWZpY2F0ZUluZm8gPSBsb2FkUGFyYW1ldGVycy5pc01haW5SZXNvdXJjZTsK
IAogICAgIEFTU0VSVCgobG9hZFBhcmFtZXRlcnMud2ViUGFnZUlEICYmIGxvYWRQYXJhbWV0ZXJz
LndlYkZyYW1lSUQpIHx8IGxvYWRQYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0g
RG9Ob3RBc2tDbGllbnRGb3JBbnlDcmVkZW50aWFscyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAko
cmV2aXNpb24gMTczMzcyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDMzICsxMDIsMjMgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEodWludAogICAgIG1fY29yZUxvYWRl
ci0+ZGlkU2VuZERhdGEoYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lk
IFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VXaXRoQ2VydGlmaWNhdGVJbmZv
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8m
IGNlcnRpZmljYXRlSW5mbywgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVz
c2FnZSkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlTWVzc2FnZSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlV2l0aENlcnRpZmljYXRlSW5mbyBmb3IgJyVz
Jy4gU3RhdHVzICVkLiIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAKICAgICBSZWY8V2ViUmVzb3VyY2VMb2Fk
ZXI+IHByb3RlY3QoKnRoaXMpOwogCi0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZUNvcHko
cmVzcG9uc2UpOwotCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBDZXJ0aWZpY2F0ZUlu
Zm8gdG8gYXZvaWQgdGhlIHBsYXRmb3JtIGlmZGVmcy4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ3MjQuCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgcmVz
cG9uc2VDb3B5LnNldENlcnRpZmljYXRlQ2hhaW4oY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRl
Q2hhaW4oKSk7Ci0jZWxpZiBVU0UoU09VUCkKLSAgICByZXNwb25zZUNvcHkuc2V0U291cE1lc3Nh
Z2VDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGUoKSk7Ci0gICAgcmVzcG9u
c2VDb3B5LnNldFNvdXBNZXNzYWdlVExTRXJyb3JzKGNlcnRpZmljYXRlSW5mby50bHNFcnJvcnMo
KSk7Ci0jZW5kaWYKLQotICAgIGlmIChtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFw
cGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UobV9jb3Jl
TG9hZGVyLmdldCgpLCByZXNwb25zZUNvcHkpKQorICAgIGlmIChtX2NvcmVMb2FkZXItPmRvY3Vt
ZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZEZhbGxiYWNrRm9y
UmVzcG9uc2UobV9jb3JlTG9hZGVyLmdldCgpLCByZXNwb25zZSkpCiAgICAgICAgIHJldHVybjsK
IAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIC8vIFJlZnJhaW4gZnJvbSBjYWxsaW5nIGRpZFJl
Y2VpdmVSZXNwb25zZSBpZiBRdWlja0xvb2sgd2lsbCBjb252ZXJ0IHRoaXMgcmVzcG9uc2UsIHNp
bmNlIHRoZSBNSU1FIHR5cGUgb2YgdGhlCiAgICAgLy8gY29udmVydGVkIHJlc291cmNlIGlzbid0
IHlldCBrbm93bi4gV2ViUmVzb3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSB3aWxsIGxhdGVy
IGNhbGwgZGlkUmVjZWl2ZVJlc3BvbnNlIHVwb24KICAgICAvLyByZWNlaXZpbmcgdGhlIGNvbnZl
cnRlZCBkYXRhLgotICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UXVpY2tM
b29rSGFuZGxlKFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKHJlc291cmNlTG9hZGVyKCksIHJlc3Bv
bnNlQ29weS5uc1VSTFJlc3BvbnNlKCkpKTsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9h
ZGVyKCktPnNldFF1aWNrTG9va0hhbmRsZShRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShyZXNvdXJj
ZUxvYWRlcigpLCByZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkpKTsKICAgICBpZiAoIW1fY29yZUxv
YWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+cXVpY2tMb29rSGFuZGxlKCkpCiAjZW5kaWYKLSAgICAg
ICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VDb3B5KTsKKyAgICAg
ICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwogCiAgICAgLy8g
SWYgbV9jb3JlTG9hZGVyIGJlY29tZXMgbnVsbCBhcyBhIHJlc3VsdCBvZiB0aGUgZGlkUmVjZWl2
ZVJlc3BvbnNlIGNhbGxiYWNrLCB3ZSBjYW4ndCB1c2UgdGhlIHNlbmQgZnVuY3Rpb24oKS4gCiAg
ICAgaWYgKCFtX2NvcmVMb2FkZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTczMzcyKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgZGlkU2Vu
ZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlV2l0aENlcnRpZmljYXRlSW5mbyhjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwg
Ym9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7CisgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wg
bmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxl
bmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hSZXNvdXJjZUxvYWQoZG91YmxlIGZpbmlzaFRpbWUp
OwogICAgIHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxNzMz
NzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI2LDEwICsyNiw5IEBAIG1lc3NhZ2Vz
IC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2FjeVJlY2UKIAogICAgIENhbmNlbFJlc291cmNlTG9h
ZGVyKCkKIAotICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFdlJ2xsIG5lZWQgbXVjaCBt
b3JlIGdyYW51bGFyaXR5IGZvciByZXNwb25zZSBtZXNzYWdlcy4KICAgICBXaWxsU2VuZFJlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVkaXJlY3RSZXNwb25zZSkKICAgICBEaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1Nl
bnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCkKLSAgICBEaWRSZWNlaXZlUmVzcG9uc2VX
aXRoQ2VydGlmaWNhdGVJbmZvKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgbmVlZHNDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCisgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UpCiAgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNl
IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkRmluaXNoUmVzb3VyY2VM
b2FkKGRvdWJsZSBmaW5pc2hUaW1lKQogICAgIERpZEZhaWxSZXNvdXJjZUxvYWQoV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBlcnJvcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCShyZXZpc2lvbiAxNzMzNzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU1
LDcgKzQ1NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ28KIAog
ICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgogCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgp
LCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2Uo
KS5taW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCBD
ZXJ0aWZpY2F0ZUluZm8oZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKSksIEluamVjdGVkQnVuZGxl
VXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tbWl0TG9hZEZvckZyYW1lKG1fZnJhbWUtPmZy
YW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3VtZW50TG9hZGVyLnJl
c3BvbnNlKCkubWltZVR5cGUoKSwgbV9mcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkVHlw
ZSgpKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKSwgSW5qZWN0
ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiAgICAgd2ViUGFn
ZS0+ZGlkQ29tbWl0TG9hZChtX2ZyYW1lKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCShyZXZpc2lvbiAxNzMzNzIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MTcsNyArNDE3LDcgQEAgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIFdlYkZyYW1l
OjpjZXJ0aQogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBDZXJ0aWZp
Y2F0ZUluZm8oKTsKIAotICAgIHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oZG9jdW1lbnRMb2FkZXIt
PnJlc3BvbnNlKCkpOworICAgIHJldHVybiBkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5jZXJ0
aWZpY2F0ZUluZm8oKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjppbm5lclRleHQoKSBjb25zdAo=
</data>
<flag name="review"
          id="262511"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>