<?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>184467</bug_id>
          
          <creation_ts>2018-04-10 14:07:08 -0700</creation_ts>
          <short_desc>Introduce remote variants of Frame / DOMWindow classes</short_desc>
          <delta_ts>2018-04-20 11:44:33 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=184544</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>184466</blocked>
    
    <blocked>184515</blocked>
    
    <blocked>184591</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1413387</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-10 14:07:08 -0700</bug_when>
    <thetext>Introduce remote variants of Frame / DOMWindow classes, for when these frames / windows are hosted on another WebProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413388</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-10 14:07:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/39011267&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413421</commentid>
    <comment_count>2</comment_count>
      <attachid>337643</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-10 15:14:50 -0700</bug_when>
    <thetext>Created attachment 337643
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413443</commentid>
    <comment_count>3</comment_count>
      <attachid>337650</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-10 15:57:53 -0700</bug_when>
    <thetext>Created attachment 337650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413447</commentid>
    <comment_count>4</comment_count>
      <attachid>337651</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-10 16:14:05 -0700</bug_when>
    <thetext>Created attachment 337651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413453</commentid>
    <comment_count>5</comment_count>
      <attachid>337653</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-10 16:23:02 -0700</bug_when>
    <thetext>Created attachment 337653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413460</commentid>
    <comment_count>6</comment_count>
      <attachid>337655</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-10 16:45:10 -0700</bug_when>
    <thetext>Created attachment 337655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413794</commentid>
    <comment_count>7</comment_count>
      <attachid>337729</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-11 13:26:12 -0700</bug_when>
    <thetext>Created attachment 337729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413804</commentid>
    <comment_count>8</comment_count>
      <attachid>337729</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-04-11 13:56:30 -0700</bug_when>
    <thetext>Comment on attachment 337729
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Introduce remote variants of Frame / DOMWindow classes, for when these frames / windows
&gt; +        are hosted on another WebProcess. Those will be used in a follow-up patch.

Given what a fundamental change this is, I think this could use a more fleshed out ChangeLog. Specifically, I like to see an overview of how these remote variants will work, especially for things like the Frame/DOMWindow tree, openers, etc.

&gt; Source/WebCore/ChangeLog:66
&gt; +        * page/RemoteDOMWindow.cpp: Added.
&gt; +        (WebCore::RemoteDOMWindow::RemoteDOMWindow):
&gt; +        (WebCore::RemoteDOMWindow::~RemoteDOMWindow):
&gt; +        (WebCore::RemoteDOMWindow::self const):
&gt; +        (WebCore::RemoteDOMWindow::location const):
&gt; +        (WebCore::RemoteDOMWindow::close):
&gt; +        (WebCore::RemoteDOMWindow::closed const):
&gt; +        (WebCore::RemoteDOMWindow::focus):
&gt; +        (WebCore::RemoteDOMWindow::blur):
&gt; +        (WebCore::RemoteDOMWindow::length const):
&gt; +        (WebCore::RemoteDOMWindow::top const):
&gt; +        (WebCore::RemoteDOMWindow::opener const):
&gt; +        (WebCore::RemoteDOMWindow::parent const):
&gt; +        (WebCore::RemoteDOMWindow::postMessage):
&gt; +        * page/RemoteDOMWindow.h: Added.
&gt; +        (isType):

It would be nice to have an explanation of why this subset of the DOMWindow API is being exposed (presumably these are the functions/properties exposed cross origin).

&gt; Source/WebCore/loader/ContentFilter.cpp:234
&gt; -        static_assert(std::is_base_of&lt;ThreadSafeRefCounted&lt;Frame&gt;, Frame&gt;::value, &quot;Frame must be ThreadSafeRefCounted.&quot;);
&gt; +        static_assert(std::is_base_of&lt;ThreadSafeRefCounted&lt;AbstractFrame&gt;, Frame&gt;::value, &quot;Frame must be ThreadSafeRefCounted.&quot;);

Should probably update the comment too.

&gt; Source/WebCore/page/GlobalFrameIdentifier.h:32
&gt; +struct GlobalFrameIdentifier {

I think a comment explaining what this is for would be helpful.

&gt; Source/WebCore/page/GlobalWindowIdentifier.h:37
&gt; +struct GlobalWindowIdentifier {

I think a comment explaining what this is for would be helpful.

&gt; Source/WebCore/page/GlobalWindowIdentifier.h:58
&gt; +    unsigned hashes[2];
&gt; +    hashes[0] = WTF::intHash(processIdentifier.toUInt64());
&gt; +    hashes[1] = WTF::intHash(windowIdentifier.toUInt64());
&gt; +
&gt; +    return StringHasher::hashMemory(hashes, sizeof(hashes));

I believe we traditionally try not to hash hashes, though I do not remember the math behind that.

&gt; Source/WebCore/page/RemoteDOMWindow.cpp:44
&gt; +    m_frame-&gt;setWindow(nullptr);

I&apos;m not clear how/if m_frame can become null, but since you null check it in the functions below, it seems like you should either null check it here, or remove the null checks below and convert m_frame to Ref&lt;RemoteFrame&gt;.

&gt; Source/WebCore/page/RemoteDOMWindow.h:57
&gt; +    // DOM API.

An explanation of why this subset is here would be useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413810</commentid>
    <comment_count>9</comment_count>
      <attachid>337729</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-11 14:10:05 -0700</bug_when>
    <thetext>Comment on attachment 337729
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        are hosted on another WebProcess. Those will be used in a follow-up patch.
&gt; 
&gt; Given what a fundamental change this is, I think this could use a more fleshed out ChangeLog. Specifically, I like to see an overview of how these remote variants will work, especially for things like the Frame/DOMWindow tree, openers, etc.

Ok, I&apos;ll flesh out the changelog and upload the follow-up patch to a separate bug so you can see how it is used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413813</commentid>
    <comment_count>10</comment_count>
      <attachid>337729</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-11 14:17:36 -0700</bug_when>
    <thetext>Comment on attachment 337729
Patch

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt;&gt; +        are hosted on another WebProcess. Those will be used in a follow-up patch.
&gt;&gt; 
&gt;&gt; Given what a fundamental change this is, I think this could use a more fleshed out ChangeLog. Specifically, I like to see an overview of how these remote variants will work, especially for things like the Frame/DOMWindow tree, openers, etc.
&gt; 
&gt; Ok, I&apos;ll flesh out the changelog and upload the follow-up patch to a separate bug so you can see how it is used.

Note that short-term I only plan to implement window.open() cross origin, not out of process iframes. This makes things a bit simpler as only a top-level window/frame can be remote for now.

&gt;&gt; Source/WebCore/ChangeLog:66
&gt;&gt; +        (isType):
&gt; 
&gt; It would be nice to have an explanation of why this subset of the DOMWindow API is being exposed (presumably these are the functions/properties exposed cross origin).

Yes, this is the API subset that is exposed cross origin. It becomes more obvious in the next patch but I&apos;ll improve the changelog.

&gt;&gt; Source/WebCore/loader/ContentFilter.cpp:234
&gt;&gt; +        static_assert(std::is_base_of&lt;ThreadSafeRefCounted&lt;AbstractFrame&gt;, Frame&gt;::value, &quot;Frame must be ThreadSafeRefCounted.&quot;);
&gt; 
&gt; Should probably update the comment too.

As you wish, it is still true though :)

&gt;&gt; Source/WebCore/page/RemoteDOMWindow.cpp:44
&gt;&gt; +    m_frame-&gt;setWindow(nullptr);
&gt; 
&gt; I&apos;m not clear how/if m_frame can become null, but since you null check it in the functions below, it seems like you should either null check it here, or remove the null checks below and convert m_frame to Ref&lt;RemoteFrame&gt;.

Similarly as for regular DOMWindows, RemoteDOMWindows&apos; frame can become null when that frame gets destroyed. Frameless windows behave very differently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413819</commentid>
    <comment_count>11</comment_count>
      <attachid>337729</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-11 14:25:13 -0700</bug_when>
    <thetext>Comment on attachment 337729
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt;&gt;&gt; +        are hosted on another WebProcess. Those will be used in a follow-up patch.
&gt;&gt;&gt; 
&gt;&gt;&gt; Given what a fundamental change this is, I think this could use a more fleshed out ChangeLog. Specifically, I like to see an overview of how these remote variants will work, especially for things like the Frame/DOMWindow tree, openers, etc.
&gt;&gt; 
&gt;&gt; Ok, I&apos;ll flesh out the changelog and upload the follow-up patch to a separate bug so you can see how it is used.
&gt; 
&gt; Note that short-term I only plan to implement window.open() cross origin, not out of process iframes. This makes things a bit simpler as only a top-level window/frame can be remote for now.

I uploaded a more complete patch at https://bugs.webkit.org/show_bug.cgi?id=184515 where this code is used. Feedback is most welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413832</commentid>
    <comment_count>12</comment_count>
      <attachid>337738</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-11 15:01:18 -0700</bug_when>
    <thetext>Created attachment 337738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413917</commentid>
    <comment_count>13</comment_count>
      <attachid>337738</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-11 21:00:09 -0700</bug_when>
    <thetext>Comment on attachment 337738
Patch

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

&gt; Source/WebCore/page/DOMWindow.cpp:404
&gt; +    : AbstractDOMWindow(GlobalWindowIdentifier { Process::identifier(), generateObjectIdentifier&lt;WindowIdentifierType&gt;() })

Process::identifier() grabs a lock... Can we cache the result in a static local variable for the main thread?

&gt; Source/WebCore/page/GlobalFrameIdentifier.h:32
&gt; +// Frame identifier that is unique across all WebContent processes.

If this is the case, can&apos;t we just make DOMWindow identifier generated from frame ID &amp; some monotonically increasing number?
We can&apos;t have a DOMWindow without a frame, right?

&gt; Source/WebCore/page/GlobalWindowIdentifier.h:39
&gt; +    ProcessIdentifier processIdentifier;

Can&apos;t we just use pageID here too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413920</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-11 21:16:33 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #13)
&gt; Comment on attachment 337738 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=337738&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/DOMWindow.cpp:404
&gt; &gt; +    : AbstractDOMWindow(GlobalWindowIdentifier { Process::identifier(), generateObjectIdentifier&lt;WindowIdentifierType&gt;() })
&gt; 
&gt; Process::identifier() grabs a lock... Can we cache the result in a static
&gt; local variable for the main thread?
&gt; 
&gt; &gt; Source/WebCore/page/GlobalFrameIdentifier.h:32
&gt; &gt; +// Frame identifier that is unique across all WebContent processes.
&gt; 
&gt; If this is the case, can&apos;t we just make DOMWindow identifier generated from
&gt; frame ID &amp; some monotonically increasing number?
&gt; We can&apos;t have a DOMWindow without a frame, right?
&gt; 

We can totally have a window without a Frame. When a Frame gets navigated, the previous window gets detached from the frame and a new window gets created and attached to the frame.

&gt; &gt; Source/WebCore/page/GlobalWindowIdentifier.h:39
&gt; &gt; +    ProcessIdentifier processIdentifier;
&gt; 
&gt; Can&apos;t we just use pageID here too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413928</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-11 22:02:37 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #14)
&gt; (In reply to Ryosuke Niwa from comment #13)
&gt; &gt; Comment on attachment 337738 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=337738&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/DOMWindow.cpp:404
&gt; &gt; &gt; +    : AbstractDOMWindow(GlobalWindowIdentifier { Process::identifier(), generateObjectIdentifier&lt;WindowIdentifierType&gt;() })
&gt; &gt; 
&gt; &gt; Process::identifier() grabs a lock... Can we cache the result in a static
&gt; &gt; local variable for the main thread?
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/GlobalFrameIdentifier.h:32
&gt; &gt; &gt; +// Frame identifier that is unique across all WebContent processes.
&gt; &gt; 
&gt; &gt; If this is the case, can&apos;t we just make DOMWindow identifier generated from
&gt; &gt; frame ID &amp; some monotonically increasing number?
&gt; &gt; We can&apos;t have a DOMWindow without a frame, right?
&gt; &gt; 
&gt; 
&gt; We can totally have a window without a Frame. When a Frame gets navigated,
&gt; the previous window gets detached from the frame and a new window gets
&gt; created and attached to the frame.

That&apos;s fine. We have a frame when we create DOMWindow, and that detached DOMWindow can&apos;t inserted back into some other frame, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414032</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-12 09:06:25 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #15)
&gt; (In reply to Chris Dumez from comment #14)
&gt; &gt; (In reply to Ryosuke Niwa from comment #13)
&gt; &gt; &gt; Comment on attachment 337738 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=337738&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/page/DOMWindow.cpp:404
&gt; &gt; &gt; &gt; +    : AbstractDOMWindow(GlobalWindowIdentifier { Process::identifier(), generateObjectIdentifier&lt;WindowIdentifierType&gt;() })
&gt; &gt; &gt; 
&gt; &gt; &gt; Process::identifier() grabs a lock... Can we cache the result in a static
&gt; &gt; &gt; local variable for the main thread?
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/page/GlobalFrameIdentifier.h:32
&gt; &gt; &gt; &gt; +// Frame identifier that is unique across all WebContent processes.
&gt; &gt; &gt; 
&gt; &gt; &gt; If this is the case, can&apos;t we just make DOMWindow identifier generated from
&gt; &gt; &gt; frame ID &amp; some monotonically increasing number?
&gt; &gt; &gt; We can&apos;t have a DOMWindow without a frame, right?
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; We can totally have a window without a Frame. When a Frame gets navigated,
&gt; &gt; the previous window gets detached from the frame and a new window gets
&gt; &gt; created and attached to the frame.
&gt; 
&gt; That&apos;s fine. We have a frame when we create DOMWindow, and that detached
&gt; DOMWindow can&apos;t inserted back into some other frame, right?

That&apos;s right. However, since a Window can exist without a Frame / Page. If I omit the Process Identifier, how do you suggest which WebProcess the DOMWindow is in? We cannot rely on the WebPage / WebFrame identifiers because they may no longer exist and therefore, I wouldn&apos;t be able to find them in the HashMaps on the UIProcess side.

If anything, I think we may have to reconsider the GlobalFrameIdentifier at some point to start using a ProcessIdentifier too (rather than relying on the PageID), as a Frame can be detached from its page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414049</commentid>
    <comment_count>17</comment_count>
      <attachid>337738</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-12 09:42:41 -0700</bug_when>
    <thetext>Comment on attachment 337738
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/page/DOMWindow.cpp:404
&gt;&gt;&gt;&gt;&gt; +    : AbstractDOMWindow(GlobalWindowIdentifier { Process::identifier(), generateObjectIdentifier&lt;WindowIdentifierType&gt;() })
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Process::identifier() grabs a lock... Can we cache the result in a static local variable for the main thread?
&gt;&gt;&gt; 
&gt;&gt;&gt; We can totally have a window without a Frame. When a Frame gets navigated, the previous window gets detached from the frame and a new window gets created and attached to the frame.
&gt;&gt; 
&gt;&gt; That&apos;s fine. We have a frame when we create DOMWindow, and that detached DOMWindow can&apos;t inserted back into some other frame, right?
&gt; 
&gt; That&apos;s right. However, since a Window can exist without a Frame / Page. If I omit the Process Identifier, how do you suggest which WebProcess the DOMWindow is in? We cannot rely on the WebPage / WebFrame identifiers because they may no longer exist and therefore, I wouldn&apos;t be able to find them in the HashMaps on the UIProcess side.
&gt; 
&gt; If anything, I think we may have to reconsider the GlobalFrameIdentifier at some point to start using a ProcessIdentifier too (rather than relying on the PageID), as a Frame can be detached from its page.

Regarding the locking, I&apos;ll talk with Brady since he wrote the Process Identifier code. As far as I can tell, there is no need for such locking and we could rewrite the code like so:
void setIdentifier(ProcessIdentifier processIdentifier)
{
    ASSERT(isMainThread());
    globalIdentifier = processIdentifier;
}

ProcessIdentifier identifier()
{
    static std::once_flag onceFlag;
    std::call_once(onceFlag, [] {
        if (!globalIdentifier)
            globalIdentifier = generateThreadSafeObjectIdentifier&lt;ProcessIdentifierType&gt;();
    });

    return *globalIdentifier;
}

Process::setIdentifier() gets called once, upon ChildProcess initialization, on the main thread. Then, it shouldn&apos;t matter that later on, Process::identifier() gets called on background thread since the variable has already been initialized. If it hasn&apos;t, then we can rely on the std::call_once() and generateThreadSafeObjectIdentifier for this uncommon case. At least, the common case (identifier has been initialized) would not do any locking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414090</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-12 11:10:04 -0700</bug_when>
    <thetext>Okay, then your current approach seems fine to me.

We may want to add some DEBUG assertions to make sure the timing of setProcessIdentifier doesn&apos;t get changed e.g. to make process startup more lazy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414239</commentid>
    <comment_count>19</comment_count>
      <attachid>337738</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-12 16:55:08 -0700</bug_when>
    <thetext>Comment on attachment 337738
Patch

Clearing flags on attachment: 337738

Committed r230613: &lt;https://trac.webkit.org/changeset/230613&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414240</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-12 16:55:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416343</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-20 11:44:33 -0700</bug_when>
    <thetext>*** Bug 184151 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337643</attachid>
            <date>2018-04-10 15:14:50 -0700</date>
            <delta_ts>2018-04-10 15:57:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184467-20180410151449.patch</filename>
            <type>text/plain</type>
            <size>49883</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzdiNDhmNjk1ODlmMDcw
ODJjYTAzMzYzOTQzNDdkZWJjNzBjZGMyOC4uMmYwODhlOWI4NmJkYWU4MGUwZGRkNmI1MzQ4N2I4
MzYwODI1YmE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE4LTA0LTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIHJlbW90ZSB2
YXJpYW50cyBvZiBGcmFtZSAvIERPTVdpbmRvdyBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ0NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzM5MDExMjY3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEludHJvZHVjZSByZW1vdGUgdmFyaWFudHMgb2YgRnJhbWUgLyBET01XaW5kb3cgY2xh
c3NlcywgZm9yIHdoZW4gdGhlc2UgZnJhbWVzIC8gd2luZG93cworICAgICAgICBhcmUgaG9zdGVk
IG9uIGFub3RoZXIgV2ViUHJvY2Vzcy4gVGhvc2Ugd2lsbCBiZSB1c2VkIGluIGEgZm9sbG93LXVw
IHBhdGNoLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZSk6CisgICAgICAg
ICogcGFnZS9BYnN0cmFjdERPTVdpbmRvdy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWJzdHJhY3RET01XaW5kb3c6OkFic3RyYWN0RE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkFic3RyYWN0RE9NV2luZG93Ojp+QWJzdHJhY3RET01XaW5kb3cpOgorICAgICAgICAqIHBhZ2Uv
QWJzdHJhY3RET01XaW5kb3cuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdERP
TVdpbmRvdzo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICogcGFnZS9BYnN0cmFjdEZyYW1l
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdEZyYW1lOjpBYnN0cmFjdEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RnJhbWU6On5BYnN0cmFjdEZyYW1lKToK
KyAgICAgICAgKiBwYWdlL0Fic3RyYWN0RnJhbWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBYnN0cmFjdEZyYW1lOjp3aW5kb3cgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6RE9NV2luZG93KToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp3aW5kb3cgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6OnZpcnR1YWxXaW5kb3cgY29uc3QpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWUuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGFnZS9HbG9iYWxGcmFtZUlk
ZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHbG9iYWxGcmFtZUlkZW50aWZp
ZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHbG9iYWxGcmFtZUlkZW50aWZp
ZXI6OmRlY29kZSk6CisgICAgICAgICogcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpH
bG9iYWxXaW5kb3dJZGVudGlmaWVyOjpoYXNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okds
b2JhbFdpbmRvd0lkZW50aWZpZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
bG9iYWxXaW5kb3dJZGVudGlmaWVyOjpkZWNvZGUpOgorICAgICAgICAoV1RGOjpHbG9iYWxXaW5k
b3dJZGVudGlmaWVySGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6Okdsb2JhbFdpbmRvd0lkZW50
aWZpZXJIYXNoOjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6R2xv
YmFsV2luZG93SWRlbnRpZmllcj46OmVtcHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJh
aXRzPFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXI+Ojpjb25zdHJ1Y3REZWxldGVkVmFs
dWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50
aWZpZXI+Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogcGFnZS9MYXlvdXRDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dENvbnRleHQ6On5MYXlvdXRDb250ZXh0KToKKyAg
ICAgICAgKiBwYWdlL0xheW91dENvbnRleHQuaDoKKyAgICAgICAgKiBwYWdlL1JlbW90ZURPTVdp
bmRvdy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpSZW1v
dGVET01XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93Ojp+UmVtb3Rl
RE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURPTVdpbmRvdzo6c2VsZiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVET01XaW5kb3c6OmxvY2F0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURPTVdpbmRvdzo6Y2xvc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlRE9NV2luZG93OjpjbG9zZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlRE9NV2luZG93Ojpmb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVET01XaW5k
b3c6OmJsdXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpsZW5ndGggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93Ojp0b3AgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpvcGVuZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpwYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVtb3RlRE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFnZS9SZW1vdGVE
T01XaW5kb3cuaDogQWRkZWQuCisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHBhZ2UvUmVt
b3RlRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUZyYW1lOjpSZW1v
dGVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVGcmFtZTo6flJlbW90ZUZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUZyYW1lOjp2aXJ0dWFsV2luZG93IGNvbnN0KToKKyAg
ICAgICAgKiBwYWdlL1JlbW90ZUZyYW1lLmg6IEFkZGVkLgorICAgICAgICAoaXNUeXBlKToKKwog
MjAxOC0wNC0xMCAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CiAKICAgICAgICAg
TWVkaWFTZXNzaW9uTWFuYWdlcmlPUyBzaG91bGQgZGVmZXIgY3JlYXRpb24gb2YgTVBWb2x1bWVW
aWV3IHVudGlsIGl0IG5lZWRzIHRvIG1vbml0b3IgQWlyUGxheSByb3V0ZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
aW5kZXggZmY5NDJiMzZhNDRmMzNmZGQ5OTg1ZTYzZGY4ZTk1ODlkYWNhODJlZC4uMjVkMzJlZWY3
YTU2YjY0ODkzNGM3N2Y1YTMyYmZlMzM5YzRmYzk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTEzMTAs
NiArMTMxMCw4IEBAIG1hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuY3BwCiBtYXRobWwvTWF0aE1M
VW5kZXJPdmVyRWxlbWVudC5jcHAKIG1hdGhtbC9NYXRoTUxVbmtub3duRWxlbWVudC5jcHAKIAor
cGFnZS9BYnN0cmFjdERPTVdpbmRvdy5jcHAKK3BhZ2UvQWJzdHJhY3RGcmFtZS5jcHAKIHBhZ2Uv
QXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCiBwYWdlL0JhclByb3AuY3BwCiBwYWdlL0Jhc2U2NFV0
aWxpdGllcy5jcHAKQEAgLTEzNjksNiArMTM3MSw4IEBAIHBhZ2UvUGVyZm9ybWFuY2VUaW1pbmcu
Y3BwCiBwYWdlL1BlcmZvcm1hbmNlVXNlclRpbWluZy5jcHAKIHBhZ2UvUG9pbnRlckxvY2tDb250
cm9sbGVyLmNwcAogcGFnZS9QcmludENvbnRleHQuY3BwCitwYWdlL1JlbW90ZURPTVdpbmRvdy5j
cHAKK3BhZ2UvUmVtb3RlRnJhbWUuY3BwCiBwYWdlL1Jlc291cmNlVXNhZ2VEYXRhLmNwcAogcGFn
ZS9SZXNvdXJjZVVzYWdlT3ZlcmxheS5jcHAKIHBhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAyYWUwYzhhMjJkNTI1OWYwYWQyMTg2MDgxNDkwMWJiYjg2Y2U4NjNkLi5jOWQ0ZWQ4ODhm
YmMwYzhkMDhjODIwYWQ3YWIwYzI2NjE3ZTcyMjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjAxLDYgKzEyMDEsMTIgQEAK
IAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5
NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0Njg5RjFBRjEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg5RjFBRTEy
NjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCNjNGNkMxQzZFOEQxOTAwMkU5MTRCIC8qIEpT
RXZlbnRUYXJnZXRDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9t
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZC
OTUxOTUyMDdENjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4QTIwN0Q2MzI4MDBBN0Qy
REQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk0NkI5NTE5NjIwN0Q2MzNBMDBBN0QyREQgLyogQWJzdHJhY3RG
cmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZC
OTUxOEYyMDdENjMyQjAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkI5NTE5NzIwN0Q2MzQwMDBBN0Qy
REQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOTAyMDdENjMyQzAwQTdEMkREIC8qIEdsb2JhbFdp
bmRvd0lkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk0NkI5NTE5ODIwN0Q2MzQ3MDBBN0QyREQgLyogR2xvYmFsRnJhbWVJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5
NTE5MTIwN0Q2MzJEMDBBN0QyREQgLyogR2xvYmFsRnJhbWVJZGVudGlmaWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZCOTUxOTkyMDdENjM0
RDAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOEUyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90ZURP
TVdpbmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTQ2Qjk1MTlBMjA3RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOTIyMDdENjMyRTAwQTdE
MkREIC8qIFJlbW90ZUZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDZDNjk2Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkM5MUU3
MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1v
bml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4
M0VGRTFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBH
ZW9Ob3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC03NDM0LDYgKzc0NDAsMTYgQEAKIAkJNDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8q
IERPTVJlY3RMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVJlY3RMaXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRh
dGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZU1ldGFkYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBK
U0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RXZlbnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCOTUx
OEEyMDdENjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0RE9NV2luZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ2Qjk1MThDMjA3RDYzMjkwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVGcmFtZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Qjk1MThEMjA3RDYzMkEwMEE3RDJERCAvKiBS
ZW1vdGVET01XaW5kb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlRE9NV2luZG93LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCOTUx
OEUyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVET01XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDZCOTUxOEYyMDdENjMyQjAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RGcmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0NkI5NTE5MDIwN0Q2MzJDMDBBN0QyREQgLyogR2xvYmFsV2lu
ZG93SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbG9iYWxX
aW5kb3dJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Qjk1MTkx
MjA3RDYzMkQwMEE3RDJERCAvKiBHbG9iYWxGcmFtZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR2xvYmFsRnJhbWVJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2Qjk1MTkyMjA3RDYzMkUwMEE3RDJERCAvKiBSZW1vdGVGcmFt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVGcmFtZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI5NTE5MzIwN0Q2MzJGMDBBN0QyREQgLyogQWJz
dHJhY3RET01XaW5kb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QWJzdHJhY3RET01XaW5kb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI5
NTE5NDIwN0Q2MzMwMDBBN0QyREQgLyogQWJzdHJhY3RGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZDNjk2QzkxRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1BVTW9uaXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NkM2OTZDQTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDUFVNb25pdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDODNFRkIxQTlCQkUyOTAwQTc5QTQx
IC8qIEdlb05vdGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdlb05vdGlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4OTQ0LDYg
KzE4OTYwLDEwIEBACiAJCQkJMThBNkNENkYwRDhGMjAyNTAwMURDM0NFIC8qIGlvcyAqLywKIAkJ
CQk5M0MwOUE4MjBCMDY0RjA1MDA1QUJENEQgLyogbWFjICovLAogCQkJCTFBRjYyRUUxMTREQTIy
QTcwMDQxNTU2QyAvKiBzY3JvbGxpbmcgKi8sCisJCQkJNDZCOTUxOTMyMDdENjMyRjAwQTdEMkRE
IC8qIEFic3RyYWN0RE9NV2luZG93LmNwcCAqLywKKwkJCQk0NkI5NTE4QTIwN0Q2MzI4MDBBN0Qy
REQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLywKKwkJCQk0NkI5NTE5NDIwN0Q2MzMwMDBBN0Qy
REQgLyogQWJzdHJhY3RGcmFtZS5jcHAgKi8sCisJCQkJNDZCOTUxOEYyMDdENjMyQjAwQTdEMkRE
IC8qIEFic3RyYWN0RnJhbWUuaCAqLywKIAkJCQk3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyog
QWN0aXZpdHlTdGF0ZS5oICovLAogCQkJCTcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rp
dml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLywKIAkJCQlCQ0Y0OENFNjEzNzBEMTE0MDA0RTg3
RDYgLyogQWRqdXN0Vmlld1NpemVPck5vdC5oICovLApAQCAtMTkwMjUsNyArMTkwNDUsOSBAQAog
CQkJCTY1Q0JGRUY3MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwICovLAogCQkJCTY1
Q0JGRUY4MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuaCAqLywKIAkJCQk1NzRENDI3OTFE
NTk0RkY2MDAyQ0Y1MEUgLyogR2xvYmFsQ3J5cHRvLmlkbCAqLywKKwkJCQk0NkI5NTE5MTIwN0Q2
MzJEMDBBN0QyREQgLyogR2xvYmFsRnJhbWVJZGVudGlmaWVyLmggKi8sCiAJCQkJN0M5ODkyNDUx
RjVBMDc2NTAwOTFEQzcwIC8qIEdsb2JhbFBlcmZvcm1hbmNlLmlkbCAqLywKKwkJCQk0NkI5NTE5
MDIwN0Q2MzJDMDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oICovLAogCQkJCUJD
OTREMTUwMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmNwcCAqLywKIAkJCQlCQzk0RDE1MTBD
Mjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5oICovLAogCQkJCUJDOTREMTUyMEMyNzVDOEIwMDZC
QzYxNyAvKiBIaXN0b3J5LmlkbCAqLywKQEAgLTE5MTE4LDYgKzE5MTQwLDEwIEBACiAJCQkJMzc3
MkIwOTUxNjUzNTg1NjAwMEE0OUNBIC8qIFBvcHVwT3BlbmluZ09ic2VydmVyLmggKi8sCiAJCQkJ
Qjc3NkQ0M0MxMTA0NTI3NTAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5jcHAgKi8sCiAJCQkJQjc3
NkQ0M0ExMTA0NTI1RDAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5oICovLAorCQkJCTQ2Qjk1MThE
MjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuY3BwICovLAorCQkJCTQ2Qjk1MThF
MjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCAqLywKKwkJCQk0NkI5NTE4QzIw
N0Q2MzI5MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuY3BwICovLAorCQkJCTQ2Qjk1MTkyMjA3RDYz
MkUwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oICovLAogCQkJCUE1MDcxRThBMUM1NkZBRkEwMDk5
NTFCRSAvKiBSZXNvdXJjZVVzYWdlRGF0YS5jcHAgKi8sCiAJCQkJQTUwNzFFODIxQzU2RDA3OTAw
OTk1MUJFIC8qIFJlc291cmNlVXNhZ2VEYXRhLmggKi8sCiAJCQkJQURCQUQ2RUMxQkNERDk1MDAw
MzgxMzI1IC8qIFJlc291cmNlVXNhZ2VPdmVybGF5LmNwcCAqLywKQEAgLTI2Njc2LDYgKzI2NzAy
LDggQEAKIAkJCWZpbGVzID0gKAogCQkJCTdDRDBFMkI4MUY4MEE0ODIwMDE2QTRDRSAvKiBBYm9y
dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDBFMkJGMUY4MEE1NkUwMDE2QTRD
RSAvKiBBYm9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZCOTUxOTUyMDdENjMzNDAw
QTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkI5NTE5
NjIwN0Q2MzNBMDBBN0QyREQgLyogQWJzdHJhY3RGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RjQ4MjIzMTMxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIyRTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzY2Myw2ICsyNzY5MSw4IEBA
CiAJCQkJMEZCNjI1MkYxOERFMUIxNTAwQTA3QzA1IC8qIEdlb21ldHJ5VXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0NkM4M0VGRTFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjJBMTRGNERERTYwMDNFN0E3MCAvKiBHZW9wb3Np
dGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZCOTUxOTgyMDdENjM0NzAwQTdEMkREIC8qIEds
b2JhbEZyYW1lSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZCOTUxOTcyMDdENjM0
MDAwQTdEMkREIC8qIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA4NkJCRDBGMTM2MDM5QzIwMDhCMTVEOCAvKiBHbHlwaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJDM0RBNkMwRDAwNkNENjAwRUY2RjI2IC8qIEdseXBoQnVmZmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDNUQ0QUE3QTExNkJBRkI2MDA2OUNBOTMgLyogR2x5cGhNZXRyaWNzTWFwLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI5NDI5LDYgKzI5NDU5LDggQEAKIAkJCQlBNTc4RjQzRjFERTBCNjMwMDAz
REZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RG
QzM2MDYxOENBNjFDMjAwMjZFNTZGIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0Q4QUNBODkxRDIzN0FBMjAwRUNDNTlFIC8qIFJlbW90ZUNvbW1hbmRMaXN0
ZW5lck1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZCOTUxOTkyMDdENjM0RDAwQTdEMkREIC8q
IFJlbW90ZURPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZCOTUxOUEyMDdENjM1NDAw
QTdEMkREIC8qIFJlbW90ZUZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDZDMEQ4RjBDRkQx
MTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTMzMDlFMDUwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92ZU5vZGVDb21tYW5kLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzMwOUUwNzA5OUU2NDkyMDA1NkU1ODEgLyogUmVtb3ZlTm9kZVByZXNlcnZp
bmdDaGlsZHJlbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuY3BwCmluZGV4IDQ2NjgwYWI0OGRkOGQ4YTA2N2U3MGEzMTQwYThhNWM2NTMz
ZGYxNDEuLjUzMzk4Mjc1MTRlYjRhMmFkYThjOGFmNjU5ZGExZGE5MTJlOThjNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lk
IENvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0ZSkKICAgICBSZWZQdHI8RnJhbWU+
IGZyYW1lIHsgbV9kb2N1bWVudExvYWRlci5mcmFtZSgpIH07CiAgICAgU3RyaW5nIHVuYmxvY2tS
ZXF1ZXN0RGVuaWVkU2NyaXB0IHsgbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXItPnVuYmxvY2tSZXF1
ZXN0RGVuaWVkU2NyaXB0KCkgfTsKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
LmlzRW1wdHkoKSAmJiBmcmFtZSkgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZjxUaHJlYWRTYWZlUmVmQ291bnRlZDxGcmFtZT4sIEZyYW1lPjo6dmFsdWUsICJGcmFtZSBt
dXN0IGJlIFRocmVhZFNhZmVSZWZDb3VudGVkLiIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZjxUaHJlYWRTYWZlUmVmQ291bnRlZDxBYnN0cmFjdEZyYW1lPiwgRnJhbWU+
Ojp2YWx1ZSwgIkZyYW1lIG11c3QgYmUgVGhyZWFkU2FmZVJlZkNvdW50ZWQuIik7CiAgICAgICAg
IHVuYmxvY2tIYW5kbGVyLndyYXBXaXRoRGVjaXNpb25IYW5kbGVyKFtmcmFtZSA9IFdURk1vdmUo
ZnJhbWUpLCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc29sYXRlZENvcHko
KV0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAgICAgIGlmICghdW5ibG9ja2VkKQogICAgICAg
ICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KHNjcmlwdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RE9NV2luZG93LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQWJzdHJhY3RET01XaW5kb3cuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhNzQ1MTljMWVl
MjdkYjc1NzdjM2I2NzMwNDhkNmZmNTZjNDAzYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Fic3RyYWN0RE9NV2luZG93LmNwcApAQCAtMCwwICsxLDUzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFic3RyYWN0RE9NV2luZG93
LmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitIYXNoTWFwPEdsb2JhbFdpbmRvd0lkZW50aWZpZXIsIEFic3RyYWN0RE9NV2luZG93
Kj4mIEFic3RyYWN0RE9NV2luZG93OjphbGxXaW5kb3dzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPEdsb2JhbFdpbmRv
d0lkZW50aWZpZXIsIEFic3RyYWN0RE9NV2luZG93Kj4+IG1hcDsKKyAgICByZXR1cm4gbWFwOwor
fQorCitBYnN0cmFjdERPTVdpbmRvdzo6QWJzdHJhY3RET01XaW5kb3coR2xvYmFsV2luZG93SWRl
bnRpZmllciYmIGlkZW50aWZpZXIpCisgICAgOiBtX2lkZW50aWZpZXIoV1RGTW92ZShpZGVudGlm
aWVyKSkKK3sKKyAgICBBU1NFUlQoIWFsbFdpbmRvd3MoKS5jb250YWlucyhpZGVudGlmaWVyKSk7
CisgICAgYWxsV2luZG93cygpLmFkZChpZGVudGlmaWVyLCB0aGlzKTsKK30KKworQWJzdHJhY3RE
T01XaW5kb3c6On5BYnN0cmFjdERPTVdpbmRvdygpCit7CisgICAgQVNTRVJUKGFsbFdpbmRvd3Mo
KS5jb250YWlucyhpZGVudGlmaWVyKCkpKTsKKyAgICBhbGxXaW5kb3dzKCkucmVtb3ZlKGlkZW50
aWZpZXIoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
QWJzdHJhY3RET01XaW5kb3cuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTVkZWJkNTMyYWQ5YTIyZTg4NGJiNjZi
YzlkZmFiMjhkZGJiY2EzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9B
YnN0cmFjdERPTVdpbmRvdy5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkJhc2U2NFV0aWxpdGllcy5oIgorI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCisjaW5jbHVkZSAiR2xvYmFsV2luZG93SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBBYnN0cmFjdEZyYW1lOworCisvLyBGSVhNRTogUmVuYW1lIERPTVdp
bmRvdyB0byBMb2NhbFdpbmRvdyBhbmQgQWJzdHJhY3RET01XaW5kb3cgdG8gRE9NV2luZG93Lgor
Y2xhc3MgQWJzdHJhY3RET01XaW5kb3cgOiBwdWJsaWMgUmVmQ291bnRlZDxBYnN0cmFjdERPTVdp
bmRvdz4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5BYnN0cmFjdERPTVdpbmRvdygpOworCisgICAgc3RhdGljIEhhc2hNYXA8R2xvYmFs
V2luZG93SWRlbnRpZmllciwgQWJzdHJhY3RET01XaW5kb3cqPiYgYWxsV2luZG93cygpOworCisg
ICAgY29uc3QgR2xvYmFsV2luZG93SWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgdmlydHVhbCBBYnN0cmFjdEZyYW1lKiBmcmFtZSgp
IGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0xvY2FsRE9NV2luZG93KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1JlbW90ZURPTVdpbmRvdygpIGNvbnN0ID0gMDsKKwor
ICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsK
KworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IEFic3RyYWN0RE9NV2luZG93KEdsb2JhbFdpbmRv
d0lkZW50aWZpZXImJik7CisKKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIERPTVdpbmRvd0V2ZW50VGFyZ2V0SW50ZXJm
YWNlVHlwZTsgfQorICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9Cisg
ICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CisKK3ByaXZhdGU6
CisgICAgR2xvYmFsV2luZG93SWRlbnRpZmllciBtX2lkZW50aWZpZXI7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0
RnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdEZyYW1lLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yZjBmNmRhNjBiZjIxM2U5ZjgyNzJiMmNkM2NjYWNiMTIyN2I4ODg1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdEZyYW1lLmNwcApAQCAtMCwwICsx
LDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFic3Ry
YWN0RnJhbWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBYnN0cmFjdEZyYW1lOjpBYnN0
cmFjdEZyYW1lKCkKK3sKK30KKworQWJzdHJhY3RGcmFtZTo6fkFic3RyYWN0RnJhbWUoKQorewor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Fic3RyYWN0RnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU2MTE1ZWI2Y2NiYzIwMzMyNTMzZGFiYWE1NjI5MGJhZjAxZDFiYmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RnJhbWUuaApAQCAt
MCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYv
VGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWJzdHJhY3RET01XaW5kb3c7CitjbGFzcyBXaW5k
b3dQcm94eUNvbnRyb2xsZXI7CisKKy8vIEZJWE1FOiBSZW5hbWUgRnJhbWUgdG8gTG9jYWxGcmFt
ZSBhbmQgQWJzdHJhY3RGcmFtZSB0byBGcmFtZS4KK2NsYXNzIEFic3RyYWN0RnJhbWUgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWJzdHJhY3RGcmFtZT4geworcHVibGljOgorICAgIHZp
cnR1YWwgfkFic3RyYWN0RnJhbWUoKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0xvY2FsRnJhbWUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUmVtb3RlRnJhbWUoKSBjb25zdCA9IDA7
CisKKyAgICBBYnN0cmFjdERPTVdpbmRvdyogd2luZG93KCkgY29uc3QgeyByZXR1cm4gdmlydHVh
bFdpbmRvdygpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBBYnN0cmFjdEZyYW1lKCk7CisKK3ByaXZh
dGU6CisgICAgdmlydHVhbCBBYnN0cmFjdERPTVdpbmRvdyogdmlydHVhbFdpbmRvdygpIGNvbnN0
ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAppbmRleCA5MGMzZThlNWE3ODM4ZGQwYmY4YmM0MGU5ZjllN2IxZTM4NGFjODAxLi4wMjEw
YjA4YTE4MjFkZWIwYzg5MDZjOWZmMDgyYTQ2YWUzN2VhN2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCkBAIC00MDEsNyArNDAxLDggQEAgdm9pZCBET01XaW5kb3c6OnNldENhblNob3dN
b2RhbERpYWxvZ092ZXJyaWRlKGJvb2wgYWxsb3cpCiB9CiAKIERPTVdpbmRvdzo6RE9NV2luZG93
KERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZk
b2N1bWVudCkKKyAgICA6IEFic3RyYWN0RE9NV2luZG93KEdsb2JhbFdpbmRvd0lkZW50aWZpZXIg
eyBQcm9jZXNzOjppZGVudGlmaWVyKCksIGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcjxXaW5kb3dJ
ZGVudGlmaWVyVHlwZT4oKSB9KQorICAgICwgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmRv
Y3VtZW50KQogICAgICwgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKGRvY3VtZW50LmZyYW1lKCkp
CiB7CiAgICAgQVNTRVJUKGZyYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKaW5kZXggNGM2
NmI3MjRlMjlhYmJiMGEwYjJiY2I2NmQ1NzMxY2U4NGVkMWQ3ZS4uNDk5YTU1OGQyZWUxOGQ1NDc1
ZmQwODI5NDVkNjZjMzg4OGI5OTYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC0yNiwx
MCArMjYsMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBYnN0cmFjdERPTVdpbmRv
dy5oIgogI2luY2x1ZGUgIkJhc2U2NFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyLmgiCi0jaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJF
eGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVEZXN0cnVj
dGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VCaXRtYXAuaCIKICNpbmNsdWRlICJTY3Jv
bGxUb09wdGlvbnMuaCIKQEAgLTg3LDkgKzg4LDkgQEAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwog
ZW51bSBTZXRMb2NhdGlvbkxvY2tpbmcgeyBMb2NrSGlzdG9yeUJhc2VkT25HZXN0dXJlU3RhdGUs
IExvY2tIaXN0b3J5QW5kQmFja0ZvcndhcmRMaXN0IH07CiAKIC8vIEZJWE1FOiBET01XaW5kb3cg
c2hvdWxkbid0IHN1YmNsYXNzIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciBhbmQgaW5zdGVhZCBz
aG91bGQgZ2V0IHRvIEZyYW1lIHZpYSBpdHMgRG9jdW1lbnQuCisvLyBGSVhNRTogUmVuYW1lIERP
TVdpbmRvdyB0byBMb2NhbFdpbmRvdyBhbmQgQWJzdHJhY3RET01XaW5kb3cgdG8gRE9NV2luZG93
LgogY2xhc3MgRE9NV2luZG93IGZpbmFsCi0gICAgOiBwdWJsaWMgUmVmQ291bnRlZDxET01XaW5k
b3c+Ci0gICAgLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YQorICAgIDogcHVibGlj
IEFic3RyYWN0RE9NV2luZG93CiAgICAgLCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIKICAgICAsIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIKICAgICAsIHB1YmxpYyBC
YXNlNjRVdGlsaXRpZXMKQEAgLTE5OCw2ICsxOTksOCBAQCBwdWJsaWM6CiAgICAgRE9NV2luZG93
KiBwYXJlbnQoKSBjb25zdDsKICAgICBET01XaW5kb3cqIHRvcCgpIGNvbnN0OwogCisgICAgRnJh
bWUqIGZyYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVy
OjpmcmFtZSgpOyB9CisKICAgICBTdHJpbmcgb3JpZ2luKCkgY29uc3Q7CiAKICAgICAvLyBET00g
TGV2ZWwgMiBBYnN0cmFjdFZpZXcgSW50ZXJmYWNlCkBAIC0yNzYsOSArMjc5LDYgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoKTsKIAotICAgIHVzaW5nIFJlZkNvdW50ZWQ6
OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKLQogICAgIC8vIEhUTUwgNSBrZXkv
dmFsdWUgc3RvcmFnZQogICAgIEV4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBzZXNzaW9uU3RvcmFnZSgp
IGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBsb2NhbFN0b3JhZ2UoKSBjb25zdDsK
QEAgLTMzOCwxOCArMzM4LDE3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRE9N
V2luZG93KERvY3VtZW50Jik7CiAKLSAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdl
dEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIERPTVdpbmRvd0V2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKKyAgICBib29sIGlzTG9jYWxET01XaW5k
b3coKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc1JlbW90ZURPTVdp
bmRvdygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBQYWdlKiBwYWdlKCk7
CiAgICAgYm9vbCBhbGxvd2VkVG9DaGFuZ2VXaW5kb3dHZW9tZXRyeSgpIGNvbnN0OwogCiAgICAg
dm9pZCBmcmFtZURlc3Ryb3llZCgpIGZpbmFsOwogICAgIHZvaWQgd2lsbERldGFjaFBhZ2UoKSBm
aW5hbDsKIAotICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9Ci0gICAg
dm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9Ci0KICAgICBzdGF0aWMg
UmVmUHRyPEZyYW1lPiBjcmVhdGVXaW5kb3coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0
IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIERPTVdpbmRv
dyYgYWN0aXZlV2luZG93LCBGcmFtZSYgZmlyc3RGcmFtZSwgRnJhbWUmIG9wZW5lckZyYW1lLCBj
b25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoRE9NV2luZG93Jik+JiBwcmVwYXJlRGlhbG9nRnVuY3Rp
b24gPSBudWxscHRyKTsKICAgICBib29sIGlzSW5zZWN1cmVTY3JpcHRBY2Nlc3MoRE9NV2luZG93
JiBhY3RpdmVXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKIApAQCAtNDMyLDUgKzQz
MSw2IEBAIGlubGluZSBTdHJpbmcgRE9NV2luZG93OjpkZWZhdWx0U3RhdHVzKCkgY29uc3QKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJD
b3JlOjpET01XaW5kb3cpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkFi
c3RyYWN0RE9NV2luZG93JiB3aW5kb3cpIHsgcmV0dXJuIHdpbmRvdy5pc0xvY2FsRE9NV2luZG93
KCk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RXZlbnRUYXJnZXQm
IHRhcmdldCkgeyByZXR1cm4gdGFyZ2V0LmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgPT0gV2ViQ29y
ZTo6RE9NV2luZG93RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDJlZTM3NWRkMGIyN2YxOWFhYTAy
NmUzNDg3ZDRjY2RmNzMzMzJlNjYuLjgwNjc3YzQ1ZmU2Y2Q4NDg4M2ZlY2QzMjU4NzA1MjJjNWU3
YjRlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC05MzksNiArOTM5LDE2IEBAIHZvaWQgRnJh
bWU6OmNyZWF0ZVZpZXcoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBDb2xvciYg
YmFja2dyb3VuZENvbG9yCiAgICAgICAgIHZpZXcoKS0+c2V0Q2FuSGF2ZVNjcm9sbGJhcnMob3du
ZXItPnNjcm9sbGluZ01vZGUoKSAhPSBTY3JvbGxiYXJBbHdheXNPZmYpOwogfQogCitET01XaW5k
b3cqIEZyYW1lOjp3aW5kb3coKSBjb25zdAoreworICAgIHJldHVybiBkb2N1bWVudCgpID8gZG9j
dW1lbnQoKS0+ZG9tV2luZG93KCkgOiBudWxscHRyOworfQorCitBYnN0cmFjdERPTVdpbmRvdyog
RnJhbWU6OnZpcnR1YWxXaW5kb3coKSBjb25zdAoreworICAgIHJldHVybiB3aW5kb3coKTsKK30K
KwogU3RyaW5nIEZyYW1lOjpsYXllclRyZWVBc1RleHQoTGF5ZXJUcmVlRmxhZ3MgZmxhZ3MpIGNv
bnN0CiB7CiAgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5k
ZXggYjM1YjhmZDA3NTVmNjM4MzAzODM5Y2YxYzliZTg4MjJiODVmMmEwMC4uZGVkOTZmODliYTM1
NjYxOTAxNzY1ZTdkYTMwZmYyMzYzNWY2ODU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMjcsMTIg
KzI3LDEyIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWJzdHJhY3RGcmFtZS5oIgog
I2luY2x1ZGUgIkFkanVzdFZpZXdTaXplT3JOb3QuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIK
ICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlVzZXJTY3JpcHRUeXBlcy5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpA
QCAtNjEsNiArNjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0FuaW1hdGlv
bkNvbnRyb2xsZXI7CiBjbGFzcyBDb2xvcjsKK2NsYXNzIERPTVdpbmRvdzsKIGNsYXNzIERvY3Vt
ZW50OwogY2xhc3MgRWRpdG9yOwogY2xhc3MgRWxlbWVudDsKQEAgLTExNyw3ICsxMTgsOCBAQCBl
bnVtIHsKIH07CiB0eXBlZGVmIHVuc2lnbmVkIExheWVyVHJlZUZsYWdzOwogCi1jbGFzcyBGcmFt
ZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxGcmFtZT4geworLy8gRklYTUU6
IFJlbmFtZSBGcmFtZSB0byBMb2NhbEZyYW1lIGFuZCBBYnN0cmFjdEZyYW1lIHRvIEZyYW1lLgor
Y2xhc3MgRnJhbWUgZmluYWwgOiBwdWJsaWMgQWJzdHJhY3RGcmFtZSB7CiBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFtZT4gY3JlYXRlKFBhZ2UqLCBIVE1MRnJhbWVP
d25lckVsZW1lbnQqLCBGcmFtZUxvYWRlckNsaWVudCopOwogCkBAIC0xMzQsNiArMTM2LDggQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZyYW1lKCk7CiAKKyAgICBET01XaW5kb3cq
IHdpbmRvdygpIGNvbnN0OworCiAgICAgdm9pZCBhZGREZXN0cnVjdGlvbk9ic2VydmVyKEZyYW1l
RGVzdHJ1Y3Rpb25PYnNlcnZlciopOwogICAgIHZvaWQgcmVtb3ZlRGVzdHJ1Y3Rpb25PYnNlcnZl
cihGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIqKTsKIApAQCAtMjkxLDYgKzI5NSwxMSBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBkcm9wQ2hpbGRyZW4oKTsKIAorICAgIGJvb2wgaXNMb2NhbEZyYW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNSZW1vdGVGcmFtZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBBYnN0cmFjdERPTVdpbmRvdyog
dmlydHVhbFdpbmRvdygpIGNvbnN0IGZpbmFsOworCiAgICAgSGFzaFNldDxGcmFtZURlc3RydWN0
aW9uT2JzZXJ2ZXIqPiBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzOwogCiAgICAgRnJhbWUmIG1fbWFp
bkZyYW1lOwpAQCAtMzkwLDMgKzM5OSw3IEBAIGlubGluZSBGcmFtZSYgRnJhbWU6Om1haW5GcmFt
ZSgpIGNvbnN0CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpGcmFtZSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29u
c3QgV2ViQ29yZTo6QWJzdHJhY3RGcmFtZSYgZnJhbWUpIHsgcmV0dXJuIGZyYW1lLmlzTG9jYWxG
cmFtZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjYxMTdkNTExZjIzM2Vk
YjNmM2U2MGRhZDQzNzFjNWFjOThmYmNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgR2xvYmFsRnJhbWVJZGVudGlmaWVyIHsKKyAgICB1aW50
NjRfdCBwYWdlSUQ7CisgICAgdWludDY0X3QgZnJhbWVJRDsKKworICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHbG9iYWxGcmFtZUlkZW50aWZpZXI+IGRl
Y29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBHbG9i
YWxGcmFtZUlkZW50aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAg
IGVuY29kZXIgPDwgcGFnZUlEIDw8IGZyYW1lSUQ7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CitzdGQ6Om9wdGlvbmFsPEdsb2JhbEZyYW1lSWRlbnRpZmllcj4gR2xvYmFsRnJhbWVJZGVu
dGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQ7CisgICAgZGVjb2RlciA+PiBwYWdlSUQ7CisgICAgaWYgKCFwYWdlSUQp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlEOworICAgIGRlY29kZXIgPj4gZnJhbWVJRDsKKyAgICBpZiAoIWZyYW1lSUQp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUo
KnBhZ2VJRCksIFdURk1vdmUoKmZyYW1lSUQpIH0gfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlm
aWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbFdpbmRvd0lkZW50aWZpZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yN2UxOWE5NGE5YjBjM2RmNDIxMDA0NWJlYzVlYjRkMWVjYzdlMDhjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmgK
QEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IlByb2Nlc3MuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9P
YmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBXaW5kb3dJ
ZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBXaW5kb3dJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRp
ZmllcjxXaW5kb3dJZGVudGlmaWVyVHlwZT47CisKK3N0cnVjdCBHbG9iYWxXaW5kb3dJZGVudGlm
aWVyIHsKKyAgICBQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICBXaW5k
b3dJZGVudGlmaWVyIHdpbmRvd0lkZW50aWZpZXI7CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29u
c3Q7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8
R2xvYmFsV2luZG93SWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK2lubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgR2xvYmFsV2luZG93SWRlbnRpZmllciYgYSwgY29uc3QgR2xv
YmFsV2luZG93SWRlbnRpZmllciYgYikKK3sKKyAgICByZXR1cm4gYS5wcm9jZXNzSWRlbnRpZmll
ciA9PSBiLnByb2Nlc3NJZGVudGlmaWVyICYmICBhLndpbmRvd0lkZW50aWZpZXIgPT0gYi53aW5k
b3dJZGVudGlmaWVyOworfQorCitpbmxpbmUgdW5zaWduZWQgR2xvYmFsV2luZG93SWRlbnRpZmll
cjo6aGFzaCgpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgaGFzaGVzWzJdOworICAgIGhhc2hlc1sw
XSA9IFdURjo6aW50SGFzaChwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBoYXNo
ZXNbMV0gPSBXVEY6OmludEhhc2god2luZG93SWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKworICAg
IHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnkoaGFzaGVzLCBzaXplb2YoaGFzaGVzKSk7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEdsb2JhbFdpbmRvd0lkZW50aWZp
ZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgcHJv
Y2Vzc0lkZW50aWZpZXIgPDwgd2luZG93SWRlbnRpZmllcjsKK30KKwordGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8R2xvYmFsV2luZG93SWRlbnRpZmllcj4gR2xvYmFsV2lu
ZG93SWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRp
b25hbDxQcm9jZXNzSWRlbnRpZmllcj4gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgZGVjb2RlciA+
PiBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICBpZiAoIXByb2Nlc3NJZGVudGlmaWVyKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxXaW5kb3dJZGVudGlm
aWVyPiB3aW5kb3dJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gd2luZG93SWRlbnRpZmllcjsK
KyAgICBpZiAoIXdpbmRvd0lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKnByb2Nlc3NJZGVudGlmaWVyKSwgV1RGTW92ZSgq
d2luZG93SWRlbnRpZmllcikgfSB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25h
bWVzcGFjZSBXVEYgeworCitzdHJ1Y3QgR2xvYmFsV2luZG93SWRlbnRpZmllckhhc2ggeworICAg
IHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZp
ZXImIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNv
bnN0IFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXImIGEsIGNvbnN0IFdlYkNvcmU6Okds
b2JhbFdpbmRvd0lkZW50aWZpZXImIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBj
b25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6R2xvYmFsV2luZG93SWRlbnRpZmll
cj4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyPiB7
CisgICAgc3RhdGljIFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXIgZW1wdHlWYWx1ZSgp
IHsgcmV0dXJuIHsgfTsgfQorCisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVl
KFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXImIHNsb3QpIHsgc2xvdC53aW5kb3dJZGVu
dGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6V2luZG93SWRlbnRpZmllclR5
cGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7IH0KKyAgICBzdGF0aWMg
Ym9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVy
JiBzbG90KSB7IHJldHVybiBzbG90LndpbmRvd0lkZW50aWZpZXIudG9VSW50NjQoKSA9PSBzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7IH0KK307CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXI+IHsKKyAgICB0
eXBlZGVmIEdsb2JhbFdpbmRvd0lkZW50aWZpZXJIYXNoIEhhc2g7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTGF5b3V0Q29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xheW91dENvbnRleHQuY3BwCmluZGV4IDU4ZjUzYzQy
YWIyNTNhYWYxNzMwMTk0ZGUzODZmZGRmZDgwYWIwZWUuLjU2M2QxY2JmNDM0MjUxNGI3MDU0MDAx
MTFmYmI0MjYzZTI0YmQ0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTGF5b3V0
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9MYXlvdXRDb250ZXh0LmNwcApA
QCAtNDEsNiArNDEsNyBAQAogCiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVk
ZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTE4LDYgKzExOSwxMCBAQCBMYXlvdXRDb250
ZXh0OjpMYXlvdXRDb250ZXh0KEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewogfQogCitMYXlvdXRD
b250ZXh0Ojp+TGF5b3V0Q29udGV4dCgpCit7Cit9CisKIHZvaWQgTGF5b3V0Q29udGV4dDo6bGF5
b3V0KCkKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oTGF5b3V0LCBzdHJlYW0gPDwgIkZyYW1lVmll
dyAiIDw8ICZ2aWV3KCkgPDwgIiBMYXlvdXRDb250ZXh0OjpsYXlvdXQoKSB3aXRoIHNpemUgIiA8
PCB2aWV3KCkubGF5b3V0U2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TGF5b3V0Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9MYXlvdXRDb250ZXh0LmgKaW5k
ZXggNzAzNDQyMjJjNDk2ODUwMjUyMWNmY2VlN2IzOWM5ZDdkZTk0NDBlNS4uNTJiMDFjYTNlNDUx
YzE5ZDBkMWRmNjhmYWY2YmNiZDVhMDkzNTczMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9MYXlvdXRDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9MYXlvdXRDb250
ZXh0LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgUmVuZGVyVmlldzsKIGNsYXNzIExheW91dENv
bnRleHQgewogcHVibGljOgogICAgIExheW91dENvbnRleHQoRnJhbWVWaWV3Jik7CisgICAgfkxh
eW91dENvbnRleHQoKTsKIAogICAgIHZvaWQgbGF5b3V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVtb3RlRE9NV2luZG93LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODAzNDI0Mzc4ZmJmMWQ0YmNmYjA2ZTVh
MWQwOTE0ODNiMzY1OGM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9S
ZW1vdGVET01XaW5kb3cuY3BwCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZURPTVdpbmRvdy5oIgorCisjaW5jbHVkZSAi
UmVtb3RlRnJhbWUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitSZW1vdGVET01XaW5kb3c6OlJlbW90ZURPTVdpbmRvdyhSZWY8UmVtb3Rl
RnJhbWU+JiYgZnJhbWUsIEdsb2JhbFdpbmRvd0lkZW50aWZpZXImJiBpZGVudGlmaWVyKQorICAg
IDogQWJzdHJhY3RET01XaW5kb3coV1RGTW92ZShpZGVudGlmaWVyKSkKKyAgICAsIG1fZnJhbWUo
V1RGTW92ZShmcmFtZSkpCit7CisgICAgbV9mcmFtZS0+c2V0V2luZG93KHRoaXMpOworfQorCitS
ZW1vdGVET01XaW5kb3c6On5SZW1vdGVET01XaW5kb3coKQoreworICAgIG1fZnJhbWUtPnNldFdp
bmRvdyhudWxscHRyKTsKK30KKworUmVtb3RlRE9NV2luZG93KiBSZW1vdGVET01XaW5kb3c6OnNl
bGYoKSBjb25zdAoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVtb3RlRE9NV2luZG93Kj4odGhpcyk7Cit9CisKK0xv
Y2F0aW9uKiBSZW1vdGVET01XaW5kb3c6OmxvY2F0aW9uKCkgY29uc3QKK3sKKyAgICAvLyBGSVhN
RTogSW1wbGVtZW50ZWQgdGhpcy4KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBSZW1v
dGVET01XaW5kb3c6OmNsb3NlKERvY3VtZW50JikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50
ZWQgdGhpcy4KK30KKworYm9vbCBSZW1vdGVET01XaW5kb3c6OmNsb3NlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICFtX2ZyYW1lOworfQorCit2b2lkIFJlbW90ZURPTVdpbmRvdzo6Zm9jdXMoRE9N
V2luZG93JiBpbmN1bWJlbnRXaW5kb3cpCit7CisgICAgVU5VU0VEX1BBUkFNKGluY3VtYmVudFdp
bmRvdyk7CisgICAgLy8gRklYTUU6IEltcGxlbWVudGVkIHRoaXMuCit9CisKK3ZvaWQgUmVtb3Rl
RE9NV2luZG93OjpibHVyKCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50ZWQgdGhpcy4KK30K
KwordW5zaWduZWQgUmVtb3RlRE9NV2luZG93OjpsZW5ndGgoKSBjb25zdAoreworICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnRlZCB0aGlzLgorICAgIHJldHVybiAxOworfQorCitSZW1vdGVET01XaW5k
b3cqIFJlbW90ZURPTVdpbmRvdzo6dG9wKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZnJhbWUpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gRklYTUU6IEltcGxlbWVudGVkIHRoaXMu
CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVtb3RlRE9NV2luZG93Kj4odGhpcyk7Cit9CisKK0RP
TVdpbmRvdyogUmVtb3RlRE9NV2luZG93OjpvcGVuZXIoKSBjb25zdAoreworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnRlZCB0aGlzLgorICAgIHJldHVybiBudWxscHRyOworfQorCitSZW1vdGVET01X
aW5kb3cqIFJlbW90ZURPTVdpbmRvdzo6cGFyZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZnJh
bWUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gRklYTUU6IEltcGxlbWVudGVk
IHRoaXMuCisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVtb3RlRE9NV2luZG93Kj4odGhpcyk7Cit9
CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IFJlbW90ZURPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoSlNDOjpF
eGVjU3RhdGUmLCBET01XaW5kb3cmIGluY3VtYmVudFdpbmRvdywgSlNDOjpKU1ZhbHVlIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpK
U09iamVjdD4+JiYpCit7CisgICAgVU5VU0VEX1BBUkFNKGluY3VtYmVudFdpbmRvdyk7CisgICAg
VU5VU0VEX1BBUkFNKG1lc3NhZ2UpOworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRPcmlnaW4pOwor
CisgICAgLy8gRklYTUU6IEltcGxlbWVudGVkIHRoaXMuCisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhMmYxZmQxNjc4NjJlYTJj
ZDgzZjk4ZWQ4OTFlYzYzZWMyNGJlYmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFic3RyYWN0RE9NV2luZG93LmgiCisjaW5jbHVkZSAi
UmVtb3RlRnJhbWUuaCIKKyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisKK25hbWVzcGFjZSBK
U0MgeworY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgSlNPYmplY3Q7CitjbGFzcyBKU1ZhbHVlOwor
dGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0cm9uZzsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBET01XaW5kb3c7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIExvY2F0aW9uOwor
CitjbGFzcyBSZW1vdGVET01XaW5kb3cgZmluYWwgOiBwdWJsaWMgQWJzdHJhY3RET01XaW5kb3cg
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3RlRE9NV2luZG93PiBjcmVhdGUoUmVmPFJl
bW90ZUZyYW1lPiYmIGZyYW1lLCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYgaWRlbnRpZmllcikK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZURPTVdpbmRvdyhXVEZN
b3ZlKGZyYW1lKSwgV1RGTW92ZShpZGVudGlmaWVyKSkpOworICAgIH0KKworICAgIH5SZW1vdGVE
T01XaW5kb3coKSBmaW5hbDsKKworICAgIFJlbW90ZUZyYW1lKiBmcmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fZnJhbWUuZ2V0KCk7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQor
CisgICAgLy8gRE9NIEFQSS4KKyAgICBSZW1vdGVET01XaW5kb3cqIHNlbGYoKSBjb25zdDsKKyAg
ICBMb2NhdGlvbiogbG9jYXRpb24oKSBjb25zdDsKKyAgICB2b2lkIGNsb3NlKERvY3VtZW50Jik7
CisgICAgYm9vbCBjbG9zZWQoKSBjb25zdDsKKyAgICB2b2lkIGZvY3VzKERPTVdpbmRvdyYgaW5j
dW1iZW50V2luZG93KTsKKyAgICB2b2lkIGJsdXIoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdDsKKyAgICBSZW1vdGVET01XaW5kb3cqIHRvcCgpIGNvbnN0OworICAgIERPTVdpbmRvdyog
b3BlbmVyKCkgY29uc3Q7CisgICAgUmVtb3RlRE9NV2luZG93KiBwYXJlbnQoKSBjb25zdDsKKyAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIERPTVdpbmRv
dyYgaW5jdW1iZW50V2luZG93LCBKU0M6OkpTVmFsdWUgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiB0
YXJnZXRPcmlnaW4sIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJik7CisKK3By
aXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgUmVtb3RlRE9NV2luZG93KFJlZjxSZW1vdGVGcmFt
ZT4mJiwgR2xvYmFsV2luZG93SWRlbnRpZmllciYmKTsKKworICAgIGJvb2wgaXNSZW1vdGVET01X
aW5kb3coKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0xvY2FsRE9N
V2luZG93KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIFJlZlB0cjxSZW1v
dGVGcmFtZT4gbV9mcmFtZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpSZW1vdGVET01XaW5kb3cpCisgICAgc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkFic3RyYWN0RE9NV2luZG93JiB3aW5kb3cp
IHsgcmV0dXJuIHdpbmRvdy5pc1JlbW90ZURPTVdpbmRvdygpOyB9CitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIw
MTBjMzdjNWNjMTIwOWJiYjNkZDgxYmEyMzQxYWFkNDJkYmNiZDcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcApAQCAtMCwwICsxLDQ3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUZyYW1lLmgi
CisKKyNpbmNsdWRlICJSZW1vdGVET01XaW5kb3cuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitSZW1vdGVGcmFtZTo6UmVtb3RlRnJhbWUoR2xvYmFsRnJhbWVJZGVudGlmaWVyJiYgZnJhbWVJ
ZGVudGlmaWVyKQorICAgIDogbV9pZGVudGlmaWVyKFdURk1vdmUoZnJhbWVJZGVudGlmaWVyKSkK
K3sKK30KKworUmVtb3RlRnJhbWU6On5SZW1vdGVGcmFtZSgpCit7Cit9CisKK0Fic3RyYWN0RE9N
V2luZG93KiBSZW1vdGVGcmFtZTo6dmlydHVhbFdpbmRvdygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHdpbmRvdygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90
ZUZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzZmYzNmYjE5NzFiNTYzMjdlMTUzNTJkMWExOGU5YWU0Mzkw
ZDkyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUu
aApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJBYnN0cmFjdEZyYW1lLmgiCisjaW5jbHVkZSAiR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW1vdGVET01XaW5kb3c7CisKK2NsYXNzIFJlbW90ZUZy
YW1lIGZpbmFsIDogcHVibGljIEFic3RyYWN0RnJhbWUgeworcHVibGljOgorICAgIHN0YXRpYyBS
ZWY8UmVtb3RlRnJhbWU+IGNyZWF0ZShHbG9iYWxGcmFtZUlkZW50aWZpZXImJiBmcmFtZUlkZW50
aWZpZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKiBuZXcgUmVtb3RlRnJhbWUo
V1RGTW92ZShmcmFtZUlkZW50aWZpZXIpKSk7CisgICAgfQorICAgIH5SZW1vdGVGcmFtZSgpOwor
CisgICAgY29uc3QgR2xvYmFsRnJhbWVJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyAgICB2b2lkIHNldFdpbmRvdyhSZW1vdGVET01XaW5k
b3cqIHdpbmRvdykgeyBtX3dpbmRvdyA9IHdpbmRvdzsgfQorICAgIFJlbW90ZURPTVdpbmRvdyog
d2luZG93KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3c7IH0KKworcHJpdmF0ZToKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBSZW1vdGVGcmFtZShHbG9iYWxGcmFtZUlkZW50aWZpZXImJik7
CisKKyAgICBib29sIGlzUmVtb3RlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CisgICAgYm9vbCBpc0xvY2FsRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQor
CisgICAgQWJzdHJhY3RET01XaW5kb3cqIHZpcnR1YWxXaW5kb3coKSBjb25zdCBmaW5hbDsKKwor
ICAgIEdsb2JhbEZyYW1lSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVtb3RlRE9NV2lu
ZG93KiBtX3dpbmRvdyB7IG51bGxwdHIgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpSZW1vdGVGcmFtZSkKKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QWJzdHJhY3RGcmFtZSYgZnJhbWUp
IHsgcmV0dXJuIGZyYW1lLmlzUmVtb3RlRnJhbWUoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337650</attachid>
            <date>2018-04-10 15:57:53 -0700</date>
            <delta_ts>2018-04-10 16:14:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184467-20180410155752.patch</filename>
            <type>text/plain</type>
            <size>49221</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhmYWM5OTQ4MjNkYmYz
OTQ2Y2FlOTBiODk3OTBjYjY4OTBiYjhiMC4uNzk5MGQzNjgxMDk4ZTJhZGMzYWZjNWQwNTA1ZDdj
MjM0YTBmNGE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE4LTA0LTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIHJlbW90ZSB2
YXJpYW50cyBvZiBGcmFtZSAvIERPTVdpbmRvdyBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ0NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzM5MDExMjY3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEludHJvZHVjZSByZW1vdGUgdmFyaWFudHMgb2YgRnJhbWUgLyBET01XaW5kb3cgY2xh
c3NlcywgZm9yIHdoZW4gdGhlc2UgZnJhbWVzIC8gd2luZG93cworICAgICAgICBhcmUgaG9zdGVk
IG9uIGFub3RoZXIgV2ViUHJvY2Vzcy4gVGhvc2Ugd2lsbCBiZSB1c2VkIGluIGEgZm9sbG93LXVw
IHBhdGNoLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZSk6CisgICAgICAg
ICogcGFnZS9BYnN0cmFjdERPTVdpbmRvdy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWJzdHJhY3RET01XaW5kb3c6OkFic3RyYWN0RE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkFic3RyYWN0RE9NV2luZG93Ojp+QWJzdHJhY3RET01XaW5kb3cpOgorICAgICAgICAqIHBhZ2Uv
QWJzdHJhY3RET01XaW5kb3cuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdERP
TVdpbmRvdzo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICogcGFnZS9BYnN0cmFjdEZyYW1l
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdEZyYW1lOjpBYnN0cmFjdEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RnJhbWU6On5BYnN0cmFjdEZyYW1lKToK
KyAgICAgICAgKiBwYWdlL0Fic3RyYWN0RnJhbWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBYnN0cmFjdEZyYW1lOjp3aW5kb3cgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6RE9NV2luZG93KToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp3aW5kb3cgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6OnZpcnR1YWxXaW5kb3cgY29uc3QpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWUuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGFnZS9HbG9iYWxGcmFtZUlk
ZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHbG9iYWxGcmFtZUlkZW50aWZp
ZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHbG9iYWxGcmFtZUlkZW50aWZp
ZXI6OmRlY29kZSk6CisgICAgICAgICogcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpH
bG9iYWxXaW5kb3dJZGVudGlmaWVyOjpoYXNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okds
b2JhbFdpbmRvd0lkZW50aWZpZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
bG9iYWxXaW5kb3dJZGVudGlmaWVyOjpkZWNvZGUpOgorICAgICAgICAoV1RGOjpHbG9iYWxXaW5k
b3dJZGVudGlmaWVySGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6Okdsb2JhbFdpbmRvd0lkZW50
aWZpZXJIYXNoOjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6R2xv
YmFsV2luZG93SWRlbnRpZmllcj46OmVtcHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJh
aXRzPFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXI+Ojpjb25zdHJ1Y3REZWxldGVkVmFs
dWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50
aWZpZXI+Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogcGFnZS9MYXlvdXRDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dENvbnRleHQ6On5MYXlvdXRDb250ZXh0KToKKyAg
ICAgICAgKiBwYWdlL0xheW91dENvbnRleHQuaDoKKyAgICAgICAgKiBwYWdlL1JlbW90ZURPTVdp
bmRvdy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpSZW1v
dGVET01XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93Ojp+UmVtb3Rl
RE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURPTVdpbmRvdzo6c2VsZiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVET01XaW5kb3c6OmxvY2F0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURPTVdpbmRvdzo6Y2xvc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlRE9NV2luZG93OjpjbG9zZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlRE9NV2luZG93Ojpmb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVET01XaW5k
b3c6OmJsdXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpsZW5ndGggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93Ojp0b3AgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpvcGVuZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpwYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVtb3RlRE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFnZS9SZW1vdGVE
T01XaW5kb3cuaDogQWRkZWQuCisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHBhZ2UvUmVt
b3RlRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUZyYW1lOjpSZW1v
dGVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVGcmFtZTo6flJlbW90ZUZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUZyYW1lOjp2aXJ0dWFsV2luZG93IGNvbnN0KToKKyAg
ICAgICAgKiBwYWdlL1JlbW90ZUZyYW1lLmg6IEFkZGVkLgorICAgICAgICAoaXNUeXBlKToKKwog
MjAxOC0wNC0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBmZjk0MmIzNmE0NGYzM2ZkZDk5
ODVlNjNkZjhlOTU4OWRhY2E4MmVkLi4yNWQzMmVlZjdhNTZiNjQ4OTM0Yzc3ZjVhMzJiZmUzMzlj
NGZjOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTMxMCw2ICsxMzEwLDggQEAgbWF0aG1sL01hdGhN
TFRva2VuRWxlbWVudC5jcHAKIG1hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcAogbWF0
aG1sL01hdGhNTFVua25vd25FbGVtZW50LmNwcAogCitwYWdlL0Fic3RyYWN0RE9NV2luZG93LmNw
cAorcGFnZS9BYnN0cmFjdEZyYW1lLmNwcAogcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAK
IHBhZ2UvQmFyUHJvcC5jcHAKIHBhZ2UvQmFzZTY0VXRpbGl0aWVzLmNwcApAQCAtMTM2OSw2ICsx
MzcxLDggQEAgcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAKIHBhZ2UvUGVyZm9ybWFuY2VVc2Vy
VGltaW5nLmNwcAogcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwCiBwYWdlL1ByaW50Q29u
dGV4dC5jcHAKK3BhZ2UvUmVtb3RlRE9NV2luZG93LmNwcAorcGFnZS9SZW1vdGVGcmFtZS5jcHAK
IHBhZ2UvUmVzb3VyY2VVc2FnZURhdGEuY3BwCiBwYWdlL1Jlc291cmNlVXNhZ2VPdmVybGF5LmNw
cAogcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJhZTBjOGEyMmQ1MjU5ZjBhZDIx
ODYwODE0OTAxYmJiODZjZTg2M2QuLmM5ZDRlZDg4OGZiYzBjOGQwOGM4MjBhZDdhYjBjMjY2MTdl
NzIyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTEyMDEsNiArMTIwMSwxMiBAQAogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5
NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODlGMUFGMTI2
N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0
YWRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZFOENE
RjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0QyREQgLyog
QWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2Qjk1
MTk2MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4RjIwN0Q2MzJCMDBBN0QyREQgLyog
QWJzdHJhY3RGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTQ2Qjk1MTk3MjA3RDYzNDAwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5
NTE5MDIwN0Q2MzJDMDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2Qjk1MTk4MjA3RDYz
NDcwMEE3RDJERCAvKiBHbG9iYWxGcmFtZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkxMjA3RDYzMkQwMEE3RDJERCAvKiBH
bG9iYWxGcmFtZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk0NkI5NTE5OTIwN0Q2MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2lu
ZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5
NTE4RTIwN0Q2MzJBMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZCOTUxOUEyMDdENjM1NDAwQTdE
MkREIC8qIFJlbW90ZUZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkI5NTE5MjIwN0Q2MzJFMDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkM2OTZDQjFF
NzIwNUY3MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2QzkxRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NkM2OTZDQzFFNzIwNUZDMDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZDQTFFNzIwNUU0MDA1OTc5Mzcg
LyogQ1BVTW9uaXRvci5jcHAgKi87IH07CiAJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3OUE0MSAvKiBH
ZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc0MzQsNiArNzQ0MCwxNiBA
QAogCQk0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NUmVjdExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUYx
QUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGaWxlTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFdmVudFRhcmdldEN1c3RvbS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI5NTE4QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJz
dHJhY3RET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJh
Y3RET01XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCOTUxOEMyMDdE
NjMyOTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbW90ZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDZCOTUxOEQyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVET01XaW5kb3cuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI5NTE4RTIwN0Q2MzJBMDBBN0QyREQgLyogUmVt
b3RlRE9NV2luZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZURP
TVdpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI5NTE4RjIwN0Q2MzJC
MDBBN0QyREQgLyogQWJzdHJhY3RGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBYnN0cmFjdEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Qjk1
MTkwMjA3RDYzMkMwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCOTUxOTEyMDdENjMyRDAwQTdEMkREIC8qIEdsb2Jh
bEZyYW1lSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbG9i
YWxGcmFtZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCOTUx
OTIyMDdENjMyRTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ2Qjk1MTkzMjA3RDYzMkYwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRvdy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Qjk1MTk0MjA3RDYzMzAwMEE3RDJERCAvKiBB
YnN0cmFjdEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFi
c3RyYWN0RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM2OTZDOTFF
NzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDUFVNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzY5
NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENQVU1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NkM4M0VGQjFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvTm90aWZpZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg5NDQsNiArMTg5NjAsMTAgQEAKIAkJCQkxOEE2Q0Q2
RjBEOEYyMDI1MDAxREMzQ0UgLyogaW9zICovLAogCQkJCTkzQzA5QTgyMEIwNjRGMDUwMDVBQkQ0
RCAvKiBtYWMgKi8sCiAJCQkJMUFGNjJFRTExNERBMjJBNzAwNDE1NTZDIC8qIHNjcm9sbGluZyAq
LywKKwkJCQk0NkI5NTE5MzIwN0Q2MzJGMDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuY3Bw
ICovLAorCQkJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5o
ICovLAorCQkJCTQ2Qjk1MTk0MjA3RDYzMzAwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmNwcCAq
LywKKwkJCQk0NkI5NTE4RjIwN0Q2MzJCMDBBN0QyREQgLyogQWJzdHJhY3RGcmFtZS5oICovLAog
CQkJCTcyNEVFNTRFMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggKi8sCiAJCQkJ
NzI0RUU1NEYxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5o
ICovLAogCQkJCUJDRjQ4Q0U2MTM3MEQxMTQwMDRFODdENiAvKiBBZGp1c3RWaWV3U2l6ZU9yTm90
LmggKi8sCkBAIC0xOTAyNSw3ICsxOTA0NSw5IEBACiAJCQkJNjVDQkZFRjcwOTc0RjYwNzAwMURB
QzI1IC8qIEZyYW1lVmlldy5jcHAgKi8sCiAJCQkJNjVDQkZFRjgwOTc0RjYwNzAwMURBQzI1IC8q
IEZyYW1lVmlldy5oICovLAogCQkJCTU3NEQ0Mjc5MUQ1OTRGRjYwMDJDRjUwRSAvKiBHbG9iYWxD
cnlwdG8uaWRsICovLAorCQkJCTQ2Qjk1MTkxMjA3RDYzMkQwMEE3RDJERCAvKiBHbG9iYWxGcmFt
ZUlkZW50aWZpZXIuaCAqLywKIAkJCQk3Qzk4OTI0NTFGNUEwNzY1MDA5MURDNzAgLyogR2xvYmFs
UGVyZm9ybWFuY2UuaWRsICovLAorCQkJCTQ2Qjk1MTkwMjA3RDYzMkMwMEE3RDJERCAvKiBHbG9i
YWxXaW5kb3dJZGVudGlmaWVyLmggKi8sCiAJCQkJQkM5NEQxNTAwQzI3NUM4QjAwNkJDNjE3IC8q
IEhpc3RvcnkuY3BwICovLAogCQkJCUJDOTREMTUxMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5
LmggKi8sCiAJCQkJQkM5NEQxNTIwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuaWRsICovLApA
QCAtMTkxMTgsNiArMTkxNDAsMTAgQEAKIAkJCQkzNzcyQjA5NTE2NTM1ODU2MDAwQTQ5Q0EgLyog
UG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCAqLywKIAkJCQlCNzc2RDQzQzExMDQ1Mjc1MDBCRUIwRUMg
LyogUHJpbnRDb250ZXh0LmNwcCAqLywKIAkJCQlCNzc2RDQzQTExMDQ1MjVEMDBCRUIwRUMgLyog
UHJpbnRDb250ZXh0LmggKi8sCisJCQkJNDZCOTUxOEQyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90
ZURPTVdpbmRvdy5jcHAgKi8sCisJCQkJNDZCOTUxOEUyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90
ZURPTVdpbmRvdy5oICovLAorCQkJCTQ2Qjk1MThDMjA3RDYzMjkwMEE3RDJERCAvKiBSZW1vdGVG
cmFtZS5jcHAgKi8sCisJCQkJNDZCOTUxOTIyMDdENjMyRTAwQTdEMkREIC8qIFJlbW90ZUZyYW1l
LmggKi8sCiAJCQkJQTUwNzFFOEExQzU2RkFGQTAwOTk1MUJFIC8qIFJlc291cmNlVXNhZ2VEYXRh
LmNwcCAqLywKIAkJCQlBNTA3MUU4MjFDNTZEMDc5MDA5OTUxQkUgLyogUmVzb3VyY2VVc2FnZURh
dGEuaCAqLywKIAkJCQlBREJBRDZFQzFCQ0REOTUwMDAzODEzMjUgLyogUmVzb3VyY2VVc2FnZU92
ZXJsYXkuY3BwICovLApAQCAtMjY2NzYsNiArMjY3MDIsOCBAQAogCQkJZmlsZXMgPSAoCiAJCQkJ
N0NEMEUyQjgxRjgwQTQ4MjAwMTZBNENFIC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0NEMEUyQkYxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5k
b3cuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Qjk1MTk2MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0
cmFjdEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDgyMjMxMzFFMzg2RTI0MDA2NkZDNzkg
LyogQWJzdHJhY3RQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUUxQjFEMTBGRjU5
ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgx
MjJFMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI3NjYzLDYgKzI3NjkxLDggQEAKIAkJCQkwRkI2MjUyRjE4REUxQjE1MDBB
MDdDMDUgLyogR2VvbWV0cnlVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QzgzRUZF
MUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0
NkFGMkExNEY0RERFNjAwM0U3QTcwIC8qIEdlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0NkI5NTE5ODIwN0Q2MzQ3MDBBN0QyREQgLyogR2xvYmFsRnJhbWVJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0NkI5NTE5NzIwN0Q2MzQwMDBBN0QyREQgLyogR2xvYmFsV2luZG93
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg2QkJEMEYxMzYwMzlDMjAwOEIxNUQ4
IC8qIEdseXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE2QzBEMDA2Q0Q2MDBFRjZGMjYg
LyogR2x5cGhCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1RDRBQTdBMTE2QkFGQjYwMDY5
Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAuaCBpbiBIZWFkZXJzICovLApAQCAtMjk0MjksNiArMjk0
NTksOCBAQAogCQkJCUE1NzhGNDNGMURFMEI2MzAwMDNERkM2QSAvKiBSZWplY3RlZFByb21pc2VU
cmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREZDMzYwNjE4Q0E2MUMyMDAyNkU1NkYgLyog
UmVtb3RlQ29tbWFuZExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDhBQ0E4OTFEMjM3
QUEyMDBFQ0M1OUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0NkI5NTE5OTIwN0Q2MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUQwNkMwRDhGMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3Jt
YXRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUwNTA5OUU2NDkyMDA1NkU1ODEg
LyogUmVtb3ZlTm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTA3MDk5RTY0
OTIwMDU2RTU4MSAvKiBSZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggNDY2
ODBhYjQ4ZGQ4ZDhhMDY3ZTcwYTMxNDBhOGE1YzY1MzNkZjE0MS4uNTMzOTgyNzUxNGViNGEyYWRh
OGM4YWY2NTlkYTFkYTkxMmU5OGM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVjaWRl
KFN0YXRlIHN0YXRlKQogICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgeyBtX2RvY3VtZW50TG9hZGVy
LmZyYW1lKCkgfTsKICAgICBTdHJpbmcgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQgeyBtX2Js
b2NraW5nQ29udGVudEZpbHRlci0+dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQoKSB9OwogICAg
IGlmICghdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNFbXB0eSgpICYmIGZyYW1lKSB7Ci0g
ICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mPFRocmVhZFNhZmVSZWZDb3VudGVk
PEZyYW1lPiwgRnJhbWU+Ojp2YWx1ZSwgIkZyYW1lIG11c3QgYmUgVGhyZWFkU2FmZVJlZkNvdW50
ZWQuIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mPFRocmVhZFNhZmVS
ZWZDb3VudGVkPEFic3RyYWN0RnJhbWU+LCBGcmFtZT46OnZhbHVlLCAiRnJhbWUgbXVzdCBiZSBU
aHJlYWRTYWZlUmVmQ291bnRlZC4iKTsKICAgICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhE
ZWNpc2lvbkhhbmRsZXIoW2ZyYW1lID0gV1RGTW92ZShmcmFtZSksIHNjcmlwdCA9IHVuYmxvY2tS
ZXF1ZXN0RGVuaWVkU2NyaXB0Lmlzb2xhdGVkQ29weSgpXShib29sIHVuYmxvY2tlZCkgewogICAg
ICAgICAgICAgaWYgKCF1bmJsb2NrZWQpCiAgICAgICAgICAgICAgICAgZnJhbWUtPnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHQoc2NyaXB0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
QWJzdHJhY3RET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdERPTVdp
bmRvdy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE3NDUxOWMxZWUyN2RiNzU3N2MzYjY3MzA0OGQ2ZmY1NmM0
MDNhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RET01X
aW5kb3cuY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQWJzdHJhY3RET01XaW5kb3cuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0hhc2hNYXA8R2xvYmFsV2lu
ZG93SWRlbnRpZmllciwgQWJzdHJhY3RET01XaW5kb3cqPiYgQWJzdHJhY3RET01XaW5kb3c6OmFs
bFdpbmRvd3MoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hNYXA8R2xvYmFsV2luZG93SWRlbnRpZmllciwgQWJzdHJhY3RET01X
aW5kb3cqPj4gbWFwOworICAgIHJldHVybiBtYXA7Cit9CisKK0Fic3RyYWN0RE9NV2luZG93OjpB
YnN0cmFjdERPTVdpbmRvdyhHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYgaWRlbnRpZmllcikKKyAg
ICA6IG1faWRlbnRpZmllcihXVEZNb3ZlKGlkZW50aWZpZXIpKQoreworICAgIEFTU0VSVCghYWxs
V2luZG93cygpLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBhbGxXaW5kb3dzKCkuYWRkKGlk
ZW50aWZpZXIsIHRoaXMpOworfQorCitBYnN0cmFjdERPTVdpbmRvdzo6fkFic3RyYWN0RE9NV2lu
ZG93KCkKK3sKKyAgICBBU1NFUlQoYWxsV2luZG93cygpLmNvbnRhaW5zKGlkZW50aWZpZXIoKSkp
OworICAgIGFsbFdpbmRvd3MoKS5yZW1vdmUoaWRlbnRpZmllcigpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdERP
TVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdERPTVdpbmRvdy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVhNWRlYmQ1MzJhZDlhMjJlODg0YmI2NmJjOWRmYWIyOGRkYmJjYTMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RE9NV2luZG93LmgKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQmFzZTY0
VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJHbG9iYWxX
aW5kb3dJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFic3RyYWN0
RnJhbWU7CisKKy8vIEZJWE1FOiBSZW5hbWUgRE9NV2luZG93IHRvIExvY2FsV2luZG93IGFuZCBB
YnN0cmFjdERPTVdpbmRvdyB0byBET01XaW5kb3cuCitjbGFzcyBBYnN0cmFjdERPTVdpbmRvdyA6
IHB1YmxpYyBSZWZDb3VudGVkPEFic3RyYWN0RE9NV2luZG93PiwgcHVibGljIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGEgeworcHVibGljOgorICAgIHZpcnR1YWwgfkFic3RyYWN0RE9NV2luZG93
KCk7CisKKyAgICBzdGF0aWMgSGFzaE1hcDxHbG9iYWxXaW5kb3dJZGVudGlmaWVyLCBBYnN0cmFj
dERPTVdpbmRvdyo+JiBhbGxXaW5kb3dzKCk7CisKKyAgICBjb25zdCBHbG9iYWxXaW5kb3dJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyAg
ICB2aXJ0dWFsIEFic3RyYWN0RnJhbWUqIGZyYW1lKCkgY29uc3QgPSAwOworCisgICAgdmlydHVh
bCBib29sIGlzTG9jYWxET01XaW5kb3coKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
UmVtb3RlRE9NV2luZG93KCkgY29uc3QgPSAwOworCisgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVm
OworICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOworCitwcm90ZWN0ZWQ6CisgICAgZXhwbGlj
aXQgQWJzdHJhY3RET01XaW5kb3coR2xvYmFsV2luZG93SWRlbnRpZmllciYmKTsKKworICAgIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gRE9NV2luZG93RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgdm9pZCByZWZF
dmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQo
KSBmaW5hbCB7IGRlcmVmKCk7IH0KKworcHJpdmF0ZToKKyAgICBHbG9iYWxXaW5kb3dJZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Fic3RyYWN0RnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmMGY2ZGE2MGJmMjEzZTlmODI3
MmIyY2QzY2NhY2IxMjI3Yjg4ODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Fic3RyYWN0RnJhbWUuY3BwCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWJzdHJhY3RGcmFtZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0Fic3RyYWN0RnJhbWU6OkFic3RyYWN0RnJhbWUoKQoreworfQorCitBYnN0
cmFjdEZyYW1lOjp+QWJzdHJhY3RGcmFtZSgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdEZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTYxMTVlYjZjY2Jj
MjAzMzI1MzNkYWJhYTU2MjkwYmFmMDFkMWJiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBBYnN0cmFjdERPTVdpbmRvdzsKK2NsYXNzIFdpbmRvd1Byb3h5Q29udHJvbGxlcjsKKworLy8g
RklYTUU6IFJlbmFtZSBGcmFtZSB0byBMb2NhbEZyYW1lIGFuZCBBYnN0cmFjdEZyYW1lIHRvIEZy
YW1lLgorY2xhc3MgQWJzdHJhY3RGcmFtZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxB
YnN0cmFjdEZyYW1lPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QWJzdHJhY3RGcmFtZSgpOwor
CisgICAgdmlydHVhbCBib29sIGlzTG9jYWxGcmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNSZW1vdGVGcmFtZSgpIGNvbnN0ID0gMDsKKworICAgIEFic3RyYWN0RE9NV2luZG93
KiB3aW5kb3coKSBjb25zdCB7IHJldHVybiB2aXJ0dWFsV2luZG93KCk7IH0KKworcHJvdGVjdGVk
OgorICAgIEFic3RyYWN0RnJhbWUoKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIEFic3RyYWN0
RE9NV2luZG93KiB2aXJ0dWFsV2luZG93KCkgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDkwYzNlOGU1YTc4Mzhk
ZDBiZjhiYzQwZTlmOWU3YjFlMzg0YWM4MDEuLjAyMTBiMDhhMTgyMWRlYjBjODkwNmM5ZmYwODJh
NDZhZTM3ZWE3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTQwMSw3ICs0MDEs
OCBAQCB2b2lkIERPTVdpbmRvdzo6c2V0Q2FuU2hvd01vZGFsRGlhbG9nT3ZlcnJpZGUoYm9vbCBh
bGxvdykKIH0KIAogRE9NV2luZG93OjpET01XaW5kb3coRG9jdW1lbnQmIGRvY3VtZW50KQotICAg
IDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmRvY3VtZW50KQorICAgIDogQWJzdHJhY3RE
T01XaW5kb3coR2xvYmFsV2luZG93SWRlbnRpZmllciB7IFByb2Nlc3M6OmlkZW50aWZpZXIoKSwg
Z2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPFdpbmRvd0lkZW50aWZpZXJUeXBlPigpIH0pCisgICAg
LCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmZG9jdW1lbnQpCiAgICAgLCBGcmFtZURlc3Ry
dWN0aW9uT2JzZXJ2ZXIoZG9jdW1lbnQuZnJhbWUoKSkKIHsKICAgICBBU1NFUlQoZnJhbWUoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCA0YzY2YjcyNGUyOWFiYmIwYTBiMmJjYjY2ZDU3
MzFjZTg0ZWQxZDdlLi40OTlhNTU4ZDJlZTE4ZDU0NzVmZDA4Mjk0NWQ2NmMzODg4Yjk5NjI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTI2LDEwICsyNiwxMSBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkFic3RyYWN0RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiQmFzZTY0VXRp
bGl0aWVzLmgiCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKLSNpbmNs
dWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRl
ICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNjcm9sbFRvT3B0aW9ucy5oIgpAQCAtODcsOSAr
ODgsOSBAQCBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiBlbnVtIFNldExvY2F0aW9uTG9ja2luZyB7
IExvY2tIaXN0b3J5QmFzZWRPbkdlc3R1cmVTdGF0ZSwgTG9ja0hpc3RvcnlBbmRCYWNrRm9yd2Fy
ZExpc3QgfTsKIAogLy8gRklYTUU6IERPTVdpbmRvdyBzaG91bGRuJ3Qgc3ViY2xhc3MgRnJhbWVE
ZXN0cnVjdGlvbk9ic2VydmVyIGFuZCBpbnN0ZWFkIHNob3VsZCBnZXQgdG8gRnJhbWUgdmlhIGl0
cyBEb2N1bWVudC4KKy8vIEZJWE1FOiBSZW5hbWUgRE9NV2luZG93IHRvIExvY2FsV2luZG93IGFu
ZCBBYnN0cmFjdERPTVdpbmRvdyB0byBET01XaW5kb3cuCiBjbGFzcyBET01XaW5kb3cgZmluYWwK
LSAgICA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVdpbmRvdz4KLSAgICAsIHB1YmxpYyBFdmVudFRh
cmdldFdpdGhJbmxpbmVEYXRhCisgICAgOiBwdWJsaWMgQWJzdHJhY3RET01XaW5kb3cKICAgICAs
IHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgogICAgICwgcHVibGljIEZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlcgogICAgICwgcHVibGljIEJhc2U2NFV0aWxpdGllcwpAQCAtMTk4LDYg
KzE5OSw4IEBAIHB1YmxpYzoKICAgICBET01XaW5kb3cqIHBhcmVudCgpIGNvbnN0OwogICAgIERP
TVdpbmRvdyogdG9wKCkgY29uc3Q7CiAKKyAgICBGcmFtZSogZnJhbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXI6OmZyYW1lKCk7IH0KKwogICAgIFN0cmlu
ZyBvcmlnaW4oKSBjb25zdDsKIAogICAgIC8vIERPTSBMZXZlbCAyIEFic3RyYWN0VmlldyBJbnRl
cmZhY2UKQEAgLTI3Niw5ICsyNzksNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZpbmlzaGVkTG9h
ZGluZygpOwogCi0gICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50
ZWQ6OmRlcmVmOwotCiAgICAgLy8gSFRNTCA1IGtleS92YWx1ZSBzdG9yYWdlCiAgICAgRXhjZXB0
aW9uT3I8U3RvcmFnZSo+IHNlc3Npb25TdG9yYWdlKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8
U3RvcmFnZSo+IGxvY2FsU3RvcmFnZSgpIGNvbnN0OwpAQCAtMzM4LDE4ICszMzgsMTcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBET01XaW5kb3coRG9jdW1lbnQmKTsKIAotICAg
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gRE9NV2luZG93RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7IH0KIAorICAgIGJvb2wgaXNMb2NhbERPTVdpbmRvdygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBib29sIGlzUmVtb3RlRE9NV2luZG93KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KKwogICAgIFBhZ2UqIHBhZ2UoKTsKICAgICBib29sIGFsbG93ZWRUb0NoYW5n
ZVdpbmRvd0dlb21ldHJ5KCkgY29uc3Q7CiAKICAgICB2b2lkIGZyYW1lRGVzdHJveWVkKCkgZmlu
YWw7CiAgICAgdm9pZCB3aWxsRGV0YWNoUGFnZSgpIGZpbmFsOwogCi0gICAgdm9pZCByZWZFdmVu
dFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBm
aW5hbCB7IGRlcmVmKCk7IH0KLQogICAgIHN0YXRpYyBSZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRv
dyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUs
IGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIEZyYW1lJiBm
aXJzdEZyYW1lLCBGcmFtZSYgb3BlbmVyRnJhbWUsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChE
T01XaW5kb3cmKT4mIHByZXBhcmVEaWFsb2dGdW5jdGlvbiA9IG51bGxwdHIpOwogICAgIGJvb2wg
aXNJbnNlY3VyZVNjcmlwdEFjY2VzcyhET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcpOwogCkBAIC00MzIsNSArNDMxLDYgQEAgaW5saW5lIFN0cmluZyBET01X
aW5kb3c6OmRlZmF1bHRTdGF0dXMoKSBjb25zdAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkRPTVdpbmRvdykKKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QWJzdHJhY3RET01XaW5kb3cmIHdpbmRvdykg
eyByZXR1cm4gd2luZG93LmlzTG9jYWxET01XaW5kb3coKTsgfQogICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpFdmVudFRhcmdldCYgdGFyZ2V0KSB7IHJldHVybiB0YXJnZXQu
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSA9PSBXZWJDb3JlOjpET01XaW5kb3dFdmVudFRhcmdldElu
dGVyZmFjZVR5cGU7IH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKaW5kZXggMmVlMzc1ZGQwYjI3ZjE5YWFhMDI2ZTM0ODdkNGNjZGY3MzMzMmU2Ni4uODA2
NzdjNDVmZTZjZDg0ODgzZmVjZDMyNTg3MDUyMmM1ZTdiNGUxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKQEAgLTkzOSw2ICs5MzksMTYgQEAgdm9pZCBGcmFtZTo6Y3JlYXRlVmlldyhjb25zdCBJbnRT
aXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IKICAgICAgICAg
dmlldygpLT5zZXRDYW5IYXZlU2Nyb2xsYmFycyhvd25lci0+c2Nyb2xsaW5nTW9kZSgpICE9IFNj
cm9sbGJhckFsd2F5c09mZik7CiB9CiAKK0RPTVdpbmRvdyogRnJhbWU6OndpbmRvdygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGRvY3VtZW50KCkgPyBkb2N1bWVudCgpLT5kb21XaW5kb3coKSA6IG51
bGxwdHI7Cit9CisKK0Fic3RyYWN0RE9NV2luZG93KiBGcmFtZTo6dmlydHVhbFdpbmRvdygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHdpbmRvdygpOworfQorCiBTdHJpbmcgRnJhbWU6OmxheWVyVHJl
ZUFzVGV4dChMYXllclRyZWVGbGFncyBmbGFncykgY29uc3QKIHsKICAgICBkb2N1bWVudCgpLT51
cGRhdGVMYXlvdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCBiMzViOGZkMDc1NWY2MzgzMDM4Mzlj
ZjFjOWJlODgyMmI4NWYyYTAwLi5kZWQ5NmY4OWJhMzU2NjE5MDE3NjVlN2RhMzBmZjIzNjM1ZjY4
NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0yNywxMiArMjcsMTIgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJBYnN0cmFjdEZyYW1lLmgiCiAjaW5jbHVkZSAiQWRqdXN0Vmlld1NpemVP
ck5vdC5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgi
CiAjaW5jbHVkZSAiVXNlclNjcmlwdFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
LSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC02MSw2ICs2MSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTQW5pbWF0aW9uQ29udHJvbGxlcjsKIGNsYXNzIENvbG9y
OworY2xhc3MgRE9NV2luZG93OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFZGl0b3I7CiBjbGFz
cyBFbGVtZW50OwpAQCAtMTE3LDcgKzExOCw4IEBAIGVudW0gewogfTsKIHR5cGVkZWYgdW5zaWdu
ZWQgTGF5ZXJUcmVlRmxhZ3M7CiAKLWNsYXNzIEZyYW1lIGZpbmFsIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPEZyYW1lPiB7CisvLyBGSVhNRTogUmVuYW1lIEZyYW1lIHRvIExvY2FsRnJh
bWUgYW5kIEFic3RyYWN0RnJhbWUgdG8gRnJhbWUuCitjbGFzcyBGcmFtZSBmaW5hbCA6IHB1Ymxp
YyBBYnN0cmFjdEZyYW1lIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEZyYW1lPiBjcmVhdGUoUGFnZSosIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIEZyYW1lTG9hZGVy
Q2xpZW50Kik7CiAKQEAgLTEzNCw2ICsxMzYsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB+RnJhbWUoKTsKIAorICAgIERPTVdpbmRvdyogd2luZG93KCkgY29uc3Q7CisKICAgICB2
b2lkIGFkZERlc3RydWN0aW9uT2JzZXJ2ZXIoRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKik7CiAg
ICAgdm9pZCByZW1vdmVEZXN0cnVjdGlvbk9ic2VydmVyKEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZl
ciopOwogCkBAIC0yOTEsNiArMjk1LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRyb3BDaGls
ZHJlbigpOwogCisgICAgYm9vbCBpc0xvY2FsRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CisgICAgYm9vbCBpc1JlbW90ZUZyYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFs
c2U7IH0KKworICAgIEFic3RyYWN0RE9NV2luZG93KiB2aXJ0dWFsV2luZG93KCkgY29uc3QgZmlu
YWw7CisKICAgICBIYXNoU2V0PEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcio+IG1fZGVzdHJ1Y3Rp
b25PYnNlcnZlcnM7CiAKICAgICBGcmFtZSYgbV9tYWluRnJhbWU7CkBAIC0zOTAsMyArMzk5LDcg
QEAgaW5saW5lIEZyYW1lJiBGcmFtZTo6bWFpbkZyYW1lKCkgY29uc3QKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkZy
YW1lKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpBYnN0cmFjdEZyYW1l
JiBmcmFtZSkgeyByZXR1cm4gZnJhbWUuaXNMb2NhbEZyYW1lKCk7IH0KK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJh
bWVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmll
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhiNjExN2Q1MTFmMjMzZWRiM2YzZTYwZGFkNDM3MWM1YWM5OGZiY2MK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRp
Zmllci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBH
bG9iYWxGcmFtZUlkZW50aWZpZXIgeworICAgIHVpbnQ2NF90IHBhZ2VJRDsKKyAgICB1aW50NjRf
dCBmcmFtZUlEOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEdsb2JhbEZyYW1lSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3Rl
bXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEdsb2JhbEZyYW1lSWRlbnRpZmllcjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBwYWdlSUQgPDwgZnJh
bWVJRDsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8R2xvYmFs
RnJhbWVJZGVudGlmaWVyPiBHbG9iYWxGcmFtZUlkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBkZWNv
ZGVyID4+IHBhZ2VJRDsKKyAgICBpZiAoIXBhZ2VJRCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7CisgICAgZGVjb2Rl
ciA+PiBmcmFtZUlEOworICAgIGlmICghZnJhbWVJRCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqcGFnZUlEKSwgV1RGTW92ZSgqZnJhbWVJ
RCkgfSB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0dsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvR2xvYmFsV2luZG93SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3ZTE5YTk0YTliMGMzZGY0
MjEwMDQ1YmVjNWViNGQxZWNjN2UwOGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0dsb2JhbFdpbmRvd0lkZW50aWZpZXIuaApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUHJvY2Vzcy5oIgorI2luY2x1ZGUgPHd0
Zi9IYXNoVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFdpbmRvd0lkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5n
IFdpbmRvd0lkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFdpbmRvd0lkZW50aWZpZXJUeXBl
PjsKKworc3RydWN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXIgeworICAgIFByb2Nlc3NJZGVudGlm
aWVyIHByb2Nlc3NJZGVudGlmaWVyOworICAgIFdpbmRvd0lkZW50aWZpZXIgd2luZG93SWRlbnRp
ZmllcjsKKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKKworICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHbG9iYWxXaW5kb3dJZGVudGlmaWVyPiBk
ZWNvZGUoRGVjb2RlciYpOworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHbG9i
YWxXaW5kb3dJZGVudGlmaWVyJiBhLCBjb25zdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiBiKQor
eworICAgIHJldHVybiBhLnByb2Nlc3NJZGVudGlmaWVyID09IGIucHJvY2Vzc0lkZW50aWZpZXIg
JiYgIGEud2luZG93SWRlbnRpZmllciA9PSBiLndpbmRvd0lkZW50aWZpZXI7Cit9CisKK2lubGlu
ZSB1bnNpZ25lZCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOjpoYXNoKCkgY29uc3QKK3sKKyAgICB1
bnNpZ25lZCBoYXNoZXNbMl07CisgICAgaGFzaGVzWzBdID0gV1RGOjppbnRIYXNoKHByb2Nlc3NJ
ZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGhhc2hlc1sxXSA9IFdURjo6aW50SGFzaCh3aW5k
b3dJZGVudGlmaWVyLnRvVUludDY0KCkpOworCisgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFz
aE1lbW9yeShoYXNoZXMsIHNpemVvZihoYXNoZXMpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KK3ZvaWQgR2xvYmFsV2luZG93SWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBwcm9jZXNzSWRlbnRpZmllciA8PCB3aW5kb3dJ
ZGVudGlmaWVyOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxH
bG9iYWxXaW5kb3dJZGVudGlmaWVyPiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBw
cm9jZXNzSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHByb2Nlc3NJZGVudGlmaWVyOworICAg
IGlmICghcHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBzdGQ6Om9wdGlvbmFsPFdpbmRvd0lkZW50aWZpZXI+IHdpbmRvd0lkZW50aWZpZXI7Cisg
ICAgZGVjb2RlciA+PiB3aW5kb3dJZGVudGlmaWVyOworICAgIGlmICghd2luZG93SWRlbnRpZmll
cikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgV1RGTW92
ZSgqcHJvY2Vzc0lkZW50aWZpZXIpLCBXVEZNb3ZlKCp3aW5kb3dJZGVudGlmaWVyKSB9IH07Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVjdCBH
bG9iYWxXaW5kb3dJZGVudGlmaWVySGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgV2ViQ29yZTo6R2xvYmFsV2luZG93SWRlbnRpZmllciYga2V5KSB7IHJldHVybiBrZXkuaGFz
aCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29yZTo6R2xvYmFsV2luZG93
SWRlbnRpZmllciYgYSwgY29uc3QgV2ViQ29yZTo6R2xvYmFsV2luZG93SWRlbnRpZmllciYgYikg
eyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0
czxXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdl
YkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXI+IHsKKyAgICBzdGF0aWMgV2ViQ29yZTo6R2xv
YmFsV2luZG93SWRlbnRpZmllciBlbXB0eVZhbHVlKCkgeyByZXR1cm4geyB9OyB9CisKKyAgICBz
dGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6R2xvYmFsV2luZG93SWRl
bnRpZmllciYgc2xvdCkgeyBzbG90LndpbmRvd0lkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRp
ZmllcjxXZWJDb3JlOjpXaW5kb3dJZGVudGlmaWVyVHlwZT4oc3RkOjpudW1lcmljX2xpbWl0czx1
aW50NjRfdD46Om1heCgpKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0
IFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXImIHNsb3QpIHsgcmV0dXJuIHNsb3Qud2lu
ZG93SWRlbnRpZmllci50b1VJbnQ2NCgpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+
OjptYXgoKTsgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6
R2xvYmFsV2luZG93SWRlbnRpZmllcj4geworICAgIHR5cGVkZWYgR2xvYmFsV2luZG93SWRlbnRp
Zmllckhhc2ggSGFzaDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVET01XaW5kb3cuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4MDM0MjQzNzhmYmYxZDRiY2ZiMDZl
NWExZDA5MTQ4M2IzNjU4YzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbW90ZURPTVdpbmRvdy5jcHAKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlRE9NV2luZG93LmgiCisKKyNpbmNsdWRl
ICJSZW1vdGVGcmFtZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWUuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1JlbW90ZURPTVdpbmRvdzo6UmVtb3RlRE9NV2luZG93KFJlZjxSZW1v
dGVGcmFtZT4mJiBmcmFtZSwgR2xvYmFsV2luZG93SWRlbnRpZmllciYmIGlkZW50aWZpZXIpCisg
ICAgOiBBYnN0cmFjdERPTVdpbmRvdyhXVEZNb3ZlKGlkZW50aWZpZXIpKQorICAgICwgbV9mcmFt
ZShXVEZNb3ZlKGZyYW1lKSkKK3sKKyAgICBtX2ZyYW1lLT5zZXRXaW5kb3codGhpcyk7Cit9CisK
K1JlbW90ZURPTVdpbmRvdzo6flJlbW90ZURPTVdpbmRvdygpCit7CisgICAgbV9mcmFtZS0+c2V0
V2luZG93KG51bGxwdHIpOworfQorCitSZW1vdGVET01XaW5kb3cqIFJlbW90ZURPTVdpbmRvdzo6
c2VsZigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxSZW1vdGVET01XaW5kb3cqPih0aGlzKTsKK30KKwor
TG9jYXRpb24qIFJlbW90ZURPTVdpbmRvdzo6bG9jYXRpb24oKSBjb25zdAoreworICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnRlZCB0aGlzLgorICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFJl
bW90ZURPTVdpbmRvdzo6Y2xvc2UoRG9jdW1lbnQmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnRlZCB0aGlzLgorfQorCitib29sIFJlbW90ZURPTVdpbmRvdzo6Y2xvc2VkKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gIW1fZnJhbWU7Cit9CisKK3ZvaWQgUmVtb3RlRE9NV2luZG93Ojpmb2N1cyhE
T01XaW5kb3cmIGluY3VtYmVudFdpbmRvdykKK3sKKyAgICBVTlVTRURfUEFSQU0oaW5jdW1iZW50
V2luZG93KTsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50ZWQgdGhpcy4KK30KKwordm9pZCBSZW1v
dGVET01XaW5kb3c6OmJsdXIoKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnRlZCB0aGlzLgor
fQorCit1bnNpZ25lZCBSZW1vdGVET01XaW5kb3c6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgLy8g
RklYTUU6IEltcGxlbWVudGVkIHRoaXMuCisgICAgcmV0dXJuIDE7Cit9CisKK1JlbW90ZURPTVdp
bmRvdyogUmVtb3RlRE9NV2luZG93Ojp0b3AoKSBjb25zdAoreworICAgIGlmICghbV9mcmFtZSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50ZWQgdGhp
cy4KKyAgICByZXR1cm4gY29uc3RfY2FzdDxSZW1vdGVET01XaW5kb3cqPih0aGlzKTsKK30KKwor
RE9NV2luZG93KiBSZW1vdGVET01XaW5kb3c6Om9wZW5lcigpIGNvbnN0Cit7CisgICAgLy8gRklY
TUU6IEltcGxlbWVudGVkIHRoaXMuCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlbW90ZURP
TVdpbmRvdyogUmVtb3RlRE9NV2luZG93OjpwYXJlbnQoKSBjb25zdAoreworICAgIGlmICghbV9m
cmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50
ZWQgdGhpcy4KKyAgICByZXR1cm4gY29uc3RfY2FzdDxSZW1vdGVET01XaW5kb3cqPih0aGlzKTsK
K30KKworRXhjZXB0aW9uT3I8dm9pZD4gUmVtb3RlRE9NV2luZG93Ojpwb3N0TWVzc2FnZShKU0M6
OkV4ZWNTdGF0ZSYsIERPTVdpbmRvdyYgaW5jdW1iZW50V2luZG93LCBKU0M6OkpTVmFsdWUgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6
OkpTT2JqZWN0Pj4mJikKK3sKKyAgICBVTlVTRURfUEFSQU0oaW5jdW1iZW50V2luZG93KTsKKyAg
ICBVTlVTRURfUEFSQU0obWVzc2FnZSk7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldE9yaWdpbik7
CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50ZWQgdGhpcy4KKyAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2EyZjFmZDE2Nzg2MmVh
MmNkODNmOThlZDg5MWVjNjNlYzI0YmViZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWJzdHJhY3RET01XaW5kb3cuaCIKKyNpbmNsdWRl
ICJSZW1vdGVGcmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KKworbmFtZXNwYWNl
IEpTQyB7CitjbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBKU09iamVjdDsKK2NsYXNzIEpTVmFsdWU7
Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgU3Ryb25nOworfQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIERPTVdpbmRvdzsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgTG9jYXRpb247
CisKK2NsYXNzIFJlbW90ZURPTVdpbmRvdyBmaW5hbCA6IHB1YmxpYyBBYnN0cmFjdERPTVdpbmRv
dyB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZW1vdGVET01XaW5kb3c+IGNyZWF0ZShSZWY8
UmVtb3RlRnJhbWU+JiYgZnJhbWUsIEdsb2JhbFdpbmRvd0lkZW50aWZpZXImJiBpZGVudGlmaWVy
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlRE9NV2luZG93KFdU
Rk1vdmUoZnJhbWUpLCBXVEZNb3ZlKGlkZW50aWZpZXIpKSk7CisgICAgfQorCisgICAgflJlbW90
ZURPTVdpbmRvdygpIGZpbmFsOworCisgICAgUmVtb3RlRnJhbWUqIGZyYW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9mcmFtZS5nZXQoKTsgfQorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9
CisKKyAgICAvLyBET00gQVBJLgorICAgIFJlbW90ZURPTVdpbmRvdyogc2VsZigpIGNvbnN0Owor
ICAgIExvY2F0aW9uKiBsb2NhdGlvbigpIGNvbnN0OworICAgIHZvaWQgY2xvc2UoRG9jdW1lbnQm
KTsKKyAgICBib29sIGNsb3NlZCgpIGNvbnN0OworICAgIHZvaWQgZm9jdXMoRE9NV2luZG93JiBp
bmN1bWJlbnRXaW5kb3cpOworICAgIHZvaWQgYmx1cigpOworICAgIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0OworICAgIFJlbW90ZURPTVdpbmRvdyogdG9wKCkgY29uc3Q7CisgICAgRE9NV2luZG93
KiBvcGVuZXIoKSBjb25zdDsKKyAgICBSZW1vdGVET01XaW5kb3cqIHBhcmVudCgpIGNvbnN0Owor
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiwgRE9NV2lu
ZG93JiBpbmN1bWJlbnRXaW5kb3csIEpTQzo6SlNWYWx1ZSBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IHRhcmdldE9yaWdpbiwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmKTsKKwor
cHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBSZW1vdGVET01XaW5kb3coUmVmPFJlbW90ZUZy
YW1lPiYmLCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYpOworCisgICAgYm9vbCBpc1JlbW90ZURP
TVdpbmRvdygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzTG9jYWxE
T01XaW5kb3coKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgUmVmUHRyPFJl
bW90ZUZyYW1lPiBtX2ZyYW1lOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlJlbW90ZURPTVdpbmRvdykKKyAgICBz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QWJzdHJhY3RET01XaW5kb3cmIHdpbmRv
dykgeyByZXR1cm4gd2luZG93LmlzUmVtb3RlRE9NV2luZG93KCk7IH0KK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjAxMGMzN2M1Y2MxMjA5YmJiM2RkODFiYTIzNDFhYWQ0MmRiY2JkNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwCkBAIC0wLDAgKzEsNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlRnJhbWUu
aCIKKworI2luY2x1ZGUgIlJlbW90ZURPTVdpbmRvdy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1JlbW90ZUZyYW1lOjpSZW1vdGVGcmFtZShHbG9iYWxGcmFtZUlkZW50aWZpZXImJiBmcmFt
ZUlkZW50aWZpZXIpCisgICAgOiBtX2lkZW50aWZpZXIoV1RGTW92ZShmcmFtZUlkZW50aWZpZXIp
KQoreworfQorCitSZW1vdGVGcmFtZTo6flJlbW90ZUZyYW1lKCkKK3sKK30KKworQWJzdHJhY3RE
T01XaW5kb3cqIFJlbW90ZUZyYW1lOjp2aXJ0dWFsV2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gd2luZG93KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNmZjM2ZiMTk3MWI1NjMyN2UxNTM1MmQxYTE4ZTlhZTQz
OTBkOTIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFt
ZS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkFic3RyYWN0RnJhbWUuaCIKKyNpbmNsdWRlICJHbG9iYWxGcmFtZUlkZW50aWZpZXIuaCIK
KyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbW90ZURPTVdpbmRvdzsKKworY2xhc3MgUmVtb3Rl
RnJhbWUgZmluYWwgOiBwdWJsaWMgQWJzdHJhY3RGcmFtZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxSZW1vdGVGcmFtZT4gY3JlYXRlKEdsb2JhbEZyYW1lSWRlbnRpZmllciYmIGZyYW1lSWRl
bnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqIG5ldyBSZW1vdGVGcmFt
ZShXVEZNb3ZlKGZyYW1lSWRlbnRpZmllcikpKTsKKyAgICB9CisgICAgflJlbW90ZUZyYW1lKCk7
CisKKyAgICBjb25zdCBHbG9iYWxGcmFtZUlkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIHZvaWQgc2V0V2luZG93KFJlbW90ZURPTVdp
bmRvdyogd2luZG93KSB7IG1fd2luZG93ID0gd2luZG93OyB9CisgICAgUmVtb3RlRE9NV2luZG93
KiB3aW5kb3coKSBjb25zdCB7IHJldHVybiBtX3dpbmRvdzsgfQorCitwcml2YXRlOgorICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFJlbW90ZUZyYW1lKEdsb2JhbEZyYW1lSWRlbnRpZmllciYm
KTsKKworICAgIGJvb2wgaXNSZW1vdGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KKyAgICBib29sIGlzTG9jYWxGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9
CisKKyAgICBBYnN0cmFjdERPTVdpbmRvdyogdmlydHVhbFdpbmRvdygpIGNvbnN0IGZpbmFsOwor
CisgICAgR2xvYmFsRnJhbWVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBSZW1vdGVET01X
aW5kb3cqIG1fd2luZG93IHsgbnVsbHB0ciB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlJlbW90ZUZyYW1lKQor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpBYnN0cmFjdEZyYW1lJiBmcmFt
ZSkgeyByZXR1cm4gZnJhbWUuaXNSZW1vdGVGcmFtZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9WUlBsYXRm
b3JtRGlzcGxheS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvVlJQbGF0Zm9ybURpc3Bs
YXkuaAppbmRleCA5OThiMzdkY2Y2YTM1NTBkYmY0MTNlMWY3MzY2NzJlMjE5MzMyNDhiLi4wMDg3
YjdlYmQ2MWM2YmI2ZTBkMGRmZTk3NGQxOGM1OTM5NmE5MTA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3ZyL1ZSUGxhdGZvcm1EaXNwbGF5LmgKQEAgLTMwLDcgKzMwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB0eXBlZGVmIHVuc2lnbmVkIFZSRGlzcGxheUNhcGFiaWxpdHlG
bGFnczsKIAotZW51bSBWUkRpc3BsYXlDYXBhYmlsaXR5RmxhZyB7CitlbnVtIGNsYXNzIFZSRGlz
cGxheUNhcGFiaWxpdHlGbGFnIHsKICAgICBOb25lID0gMCwKICAgICBQb3NpdGlvbiA9IDEgPDwg
MSwKICAgICBPcmllbnRhdGlvbiA9IDEgPDwgMiwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337651</attachid>
            <date>2018-04-10 16:14:05 -0700</date>
            <delta_ts>2018-04-10 16:23:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184467-20180410161405.patch</filename>
            <type>text/plain</type>
            <size>51969</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhmYWM5OTQ4MjNkYmYz
OTQ2Y2FlOTBiODk3OTBjYjY4OTBiYjhiMC4uNzk5MGQzNjgxMDk4ZTJhZGMzYWZjNWQwNTA1ZDdj
MjM0YTBmNGE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE4LTA0LTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIHJlbW90ZSB2
YXJpYW50cyBvZiBGcmFtZSAvIERPTVdpbmRvdyBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ0NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzM5MDExMjY3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEludHJvZHVjZSByZW1vdGUgdmFyaWFudHMgb2YgRnJhbWUgLyBET01XaW5kb3cgY2xh
c3NlcywgZm9yIHdoZW4gdGhlc2UgZnJhbWVzIC8gd2luZG93cworICAgICAgICBhcmUgaG9zdGVk
IG9uIGFub3RoZXIgV2ViUHJvY2Vzcy4gVGhvc2Ugd2lsbCBiZSB1c2VkIGluIGEgZm9sbG93LXVw
IHBhdGNoLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZSk6CisgICAgICAg
ICogcGFnZS9BYnN0cmFjdERPTVdpbmRvdy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWJzdHJhY3RET01XaW5kb3c6OkFic3RyYWN0RE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkFic3RyYWN0RE9NV2luZG93Ojp+QWJzdHJhY3RET01XaW5kb3cpOgorICAgICAgICAqIHBhZ2Uv
QWJzdHJhY3RET01XaW5kb3cuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdERP
TVdpbmRvdzo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICogcGFnZS9BYnN0cmFjdEZyYW1l
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdEZyYW1lOjpBYnN0cmFjdEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RnJhbWU6On5BYnN0cmFjdEZyYW1lKToK
KyAgICAgICAgKiBwYWdlL0Fic3RyYWN0RnJhbWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBYnN0cmFjdEZyYW1lOjp3aW5kb3cgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6RE9NV2luZG93KToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp3aW5kb3cgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6OnZpcnR1YWxXaW5kb3cgY29uc3QpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWUuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGFnZS9HbG9iYWxGcmFtZUlk
ZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHbG9iYWxGcmFtZUlkZW50aWZp
ZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHbG9iYWxGcmFtZUlkZW50aWZp
ZXI6OmRlY29kZSk6CisgICAgICAgICogcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpH
bG9iYWxXaW5kb3dJZGVudGlmaWVyOjpoYXNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okds
b2JhbFdpbmRvd0lkZW50aWZpZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
bG9iYWxXaW5kb3dJZGVudGlmaWVyOjpkZWNvZGUpOgorICAgICAgICAoV1RGOjpHbG9iYWxXaW5k
b3dJZGVudGlmaWVySGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6Okdsb2JhbFdpbmRvd0lkZW50
aWZpZXJIYXNoOjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6R2xv
YmFsV2luZG93SWRlbnRpZmllcj46OmVtcHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJh
aXRzPFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXI+Ojpjb25zdHJ1Y3REZWxldGVkVmFs
dWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50
aWZpZXI+Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogcGFnZS9MYXlvdXRDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dENvbnRleHQ6On5MYXlvdXRDb250ZXh0KToKKyAg
ICAgICAgKiBwYWdlL0xheW91dENvbnRleHQuaDoKKyAgICAgICAgKiBwYWdlL1JlbW90ZURPTVdp
bmRvdy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpSZW1v
dGVET01XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93Ojp+UmVtb3Rl
RE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURPTVdpbmRvdzo6c2VsZiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVET01XaW5kb3c6OmxvY2F0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURPTVdpbmRvdzo6Y2xvc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlRE9NV2luZG93OjpjbG9zZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlRE9NV2luZG93Ojpmb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVET01XaW5k
b3c6OmJsdXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpsZW5ndGggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93Ojp0b3AgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpvcGVuZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpwYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVtb3RlRE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFnZS9SZW1vdGVE
T01XaW5kb3cuaDogQWRkZWQuCisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHBhZ2UvUmVt
b3RlRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUZyYW1lOjpSZW1v
dGVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVGcmFtZTo6flJlbW90ZUZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUZyYW1lOjp2aXJ0dWFsV2luZG93IGNvbnN0KToKKyAg
ICAgICAgKiBwYWdlL1JlbW90ZUZyYW1lLmg6IEFkZGVkLgorICAgICAgICAoaXNUeXBlKToKKwog
MjAxOC0wNC0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ2ci9WUkRpc3BsYXlDYXBhYmlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
dnIvVlJEaXNwbGF5Q2FwYWJpbGl0aWVzLmgKaW5kZXggYWEzZjNlYTBjZmI5OTVkNWVhMzc4NzVh
NTIyZjA4OGU5ZjZiZTJmZi4uNzE0NmU2MTU4NjBjYmMzODZjZjQ3ZjYyODhmZDc3YjhkYzM0YWMz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlDYXBh
YmlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheUNh
cGFiaWxpdGllcy5oCkBAIC0zOSwxMCArMzksMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBWUkRpc3BsYXlDYXBhYmlsaXRpZXMoY2FwYWJpbGl0eUZsYWdzKSk7CiAg
ICAgfQogCi0gICAgYm9vbCBoYXNQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBW
UkRpc3BsYXlDYXBhYmlsaXR5RmxhZzo6UG9zaXRpb247IH0KLSAgICBib29sIGhhc09yaWVudGF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnOjpP
cmllbnRhdGlvbjsgfQotICAgIGJvb2wgaGFzRXh0ZXJuYWxEaXNwbGF5KCkgY29uc3QgeyByZXR1
cm4gbV9mbGFncyAmIFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnOjpFeHRlcm5hbERpc3BsYXk7IH0K
LSAgICBib29sIGNhblByZXNlbnQoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgVlJEaXNwbGF5
Q2FwYWJpbGl0eUZsYWc6OlByZXNlbnQ7IH0KKyAgICBib29sIGhhc1Bvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9mbGFncyAmIFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnUG9zaXRpb247IH0KKyAg
ICBib29sIGhhc09yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIFZSRGlzcGxh
eUNhcGFiaWxpdHlGbGFnT3JpZW50YXRpb247IH0KKyAgICBib29sIGhhc0V4dGVybmFsRGlzcGxh
eSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBWUkRpc3BsYXlDYXBhYmlsaXR5RXh0ZXJuYWxG
bGFnRGlzcGxheTsgfQorICAgIGJvb2wgY2FuUHJlc2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxh
Z3MgJiBWUkRpc3BsYXlDYXBhYmlsaXR5RmxhZ1ByZXNlbnQ7IH0KICAgICB1bnNpZ25lZCBtYXhM
YXllcigpIGNvbnN0IHsgcmV0dXJuIGNhblByZXNlbnQoKSA/IDEgOiAwOyB9CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IGZmOTQyYjM2YTQ0ZjMzZmRkOTk4NWU2M2RmOGU5NTg5ZGFjYTgy
ZWQuLjI1ZDMyZWVmN2E1NmI2NDg5MzRjNzdmNWEzMmJmZTMzOWM0ZmM5OWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0xMzEwLDYgKzEzMTAsOCBAQCBtYXRobWwvTWF0aE1MVG9rZW5FbGVtZW50LmNwcAog
bWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwCiBtYXRobWwvTWF0aE1MVW5rbm93bkVs
ZW1lbnQuY3BwCiAKK3BhZ2UvQWJzdHJhY3RET01XaW5kb3cuY3BwCitwYWdlL0Fic3RyYWN0RnJh
bWUuY3BwCiBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcAogcGFnZS9CYXJQcm9wLmNwcAog
cGFnZS9CYXNlNjRVdGlsaXRpZXMuY3BwCkBAIC0xMzY5LDYgKzEzNzEsOCBAQCBwYWdlL1BlcmZv
cm1hbmNlVGltaW5nLmNwcAogcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3BwCiBwYWdlL1Bv
aW50ZXJMb2NrQ29udHJvbGxlci5jcHAKIHBhZ2UvUHJpbnRDb250ZXh0LmNwcAorcGFnZS9SZW1v
dGVET01XaW5kb3cuY3BwCitwYWdlL1JlbW90ZUZyYW1lLmNwcAogcGFnZS9SZXNvdXJjZVVzYWdl
RGF0YS5jcHAKIHBhZ2UvUmVzb3VyY2VVc2FnZU92ZXJsYXkuY3BwCiBwYWdlL1Jlc291cmNlVXNh
Z2VUaHJlYWQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMmFlMGM4YTIyZDUyNTlmMGFkMjE4NjA4MTQ5MDFiYmI4NmNlODYz
ZC4uYzlkNGVkODg4ZmJjMGM4ZDA4YzgyMGFkN2FiMGMyNjYxN2U3MjIxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIwMSw2
ICsxMjAxLDEyIEBACiAJCTQ2ODM0NEUwMUVEREZBQUEwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0REUx
RURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OUYxQUYxMjY3QkFFMTAwRThEMzgwIC8qIEZp
bGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkw
MDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVu
dFRhcmdldEN1c3RvbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOEEy
MDdENjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZCOTUxOTYyMDdENjMzQTAwQTdEMkRE
IC8qIEFic3RyYWN0RnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2Qjk1MThGMjA3RDYzMkIwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZCOTUxOTcy
MDdENjM0MDAwQTdEMkREIC8qIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkwMjA3RDYzMkMwMEE3RDJE
RCAvKiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZCOTUxOTgyMDdENjM0NzAwQTdEMkREIC8qIEdsb2Jh
bEZyYW1lSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZCOTUxOTEyMDdENjMyRDAwQTdEMkREIC8qIEdsb2JhbEZyYW1lSWRlbnRpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2
Qjk1MTk5MjA3RDYzNEQwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThFMjA3RDYzMkEwMEE3RDJE
RCAvKiBSZW1vdGVET01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTky
MjA3RDYzMkUwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5NkNCMUU3MjA1RjcwMDU5NzkzNyAvKiBD
UFVNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5NkNDMUU3MjA1RkMwMDU5
NzkzNyAvKiBDUFVNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCAq
LzsgfTsKIAkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJCRTI5
MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtNzQzNCw2ICs3NDQwLDE2IEBACiAJCTQ2ODM0NERFMUVEREZB
NUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01SZWN0TGlzdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAg
LyogRmlsZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVN
ZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4Q0RG
MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRvdy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0QyREQgLyogUmVt
b3RlRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI5NTE4RDIwN0Q2MzJB
MDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ2Qjk1MThFMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlRE9NV2luZG93Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Qjk1MThGMjA3RDYzMkIwMEE3RDJERCAvKiBBYnN0cmFj
dEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0RnJhbWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCOTUxOTAyMDdENjMyQzAwQTdEMkRE
IC8qIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR2xvYmFsV2luZG93SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NkI5NTE5MTIwN0Q2MzJEMDBBN0QyREQgLyogR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbEZyYW1lSWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI5NTE5MjIwN0Q2MzJFMDBBN0QyREQg
LyogUmVtb3RlRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
RnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCOTUxOTMyMDdENjMyRjAw
QTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFic3RyYWN0RE9NV2luZG93LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDZCOTUxOTQyMDdENjMzMDAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RGcmFtZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBD
UFVNb25pdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENQVU1vbml0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3
IC8qIENQVU1vbml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q1BVTW9uaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzgzRUZCMUE5
QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHZW9Ob3RpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xODk0NCw2ICsxODk2MCwxMCBAQAogCQkJCTE4QTZDRDZGMEQ4RjIwMjUwMDFEQzNDRSAv
KiBpb3MgKi8sCiAJCQkJOTNDMDlBODIwQjA2NEYwNTAwNUFCRDREIC8qIG1hYyAqLywKIAkJCQkx
QUY2MkVFMTE0REEyMkE3MDA0MTU1NkMgLyogc2Nyb2xsaW5nICovLAorCQkJCTQ2Qjk1MTkzMjA3
RDYzMkYwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5jcHAgKi8sCisJCQkJNDZCOTUxOEEy
MDdENjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi8sCisJCQkJNDZCOTUxOTQy
MDdENjMzMDAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuY3BwICovLAorCQkJCTQ2Qjk1MThGMjA3
RDYzMkIwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggKi8sCiAJCQkJNzI0RUU1NEUxREM3RjI1
QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLywKIAkJCQk3MjRFRTU0RjFEQzdGMjVCMDBB
OTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8sCiAJCQkJQkNGNDhDRTYx
MzcwRDExNDAwNEU4N0Q2IC8qIEFkanVzdFZpZXdTaXplT3JOb3QuaCAqLywKQEAgLTE5MDI1LDcg
KzE5MDQ1LDkgQEAKIAkJCQk2NUNCRkVGNzA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNw
cCAqLywKIAkJCQk2NUNCRkVGODA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmggKi8sCiAJ
CQkJNTc0RDQyNzkxRDU5NEZGNjAwMkNGNTBFIC8qIEdsb2JhbENyeXB0by5pZGwgKi8sCisJCQkJ
NDZCOTUxOTEyMDdENjMyRDAwQTdEMkREIC8qIEdsb2JhbEZyYW1lSWRlbnRpZmllci5oICovLAog
CQkJCTdDOTg5MjQ1MUY1QTA3NjUwMDkxREM3MCAvKiBHbG9iYWxQZXJmb3JtYW5jZS5pZGwgKi8s
CisJCQkJNDZCOTUxOTAyMDdENjMyQzAwQTdEMkREIC8qIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIu
aCAqLywKIAkJCQlCQzk0RDE1MDBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5jcHAgKi8sCiAJ
CQkJQkM5NEQxNTEwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuaCAqLywKIAkJCQlCQzk0RDE1
MjBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5pZGwgKi8sCkBAIC0xOTExOCw2ICsxOTE0MCwx
MCBAQAogCQkJCTM3NzJCMDk1MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZl
ci5oICovLAogCQkJCUI3NzZENDNDMTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQuY3Bw
ICovLAogCQkJCUI3NzZENDNBMTEwNDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAqLywK
KwkJCQk0NkI5NTE4RDIwN0Q2MzJBMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLywK
KwkJCQk0NkI5NTE4RTIwN0Q2MzJBMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggKi8sCisJ
CQkJNDZCOTUxOEMyMDdENjMyOTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmNwcCAqLywKKwkJCQk0
NkI5NTE5MjIwN0Q2MzJFMDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCAqLywKIAkJCQlBNTA3MUU4
QTFDNTZGQUZBMDA5OTUxQkUgLyogUmVzb3VyY2VVc2FnZURhdGEuY3BwICovLAogCQkJCUE1MDcx
RTgyMUM1NkQwNzkwMDk5NTFCRSAvKiBSZXNvdXJjZVVzYWdlRGF0YS5oICovLAogCQkJCUFEQkFE
NkVDMUJDREQ5NTAwMDM4MTMyNSAvKiBSZXNvdXJjZVVzYWdlT3ZlcmxheS5jcHAgKi8sCkBAIC0y
NjY3Niw2ICsyNjcwMiw4IEBACiAJCQlmaWxlcyA9ICgKIAkJCQk3Q0QwRTJCODFGODBBNDgyMDAx
NkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJCRjFG
ODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Qjk1
MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDZCOTUxOTYyMDdENjMzQTAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUY0ODIyMzEzMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9h
cmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0
cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMkUwRkJCOUMxRDAwNTEwMjkz
IC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCBpbiBIZWFkZXJzICovLApAQCAtMjc2NjMs
NiArMjc2OTEsOCBAQAogCQkJCTBGQjYyNTJGMThERTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8q
IEdlb05vdGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyQTE0RjREREU2MDAzRTdB
NzAgLyogR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Qjk1MTk4MjA3RDYzNDcw
MEE3RDJERCAvKiBHbG9iYWxGcmFtZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2
Qjk1MTk3MjA3RDYzNDAwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwODZCQkQwRjEzNjAzOUMyMDA4QjE1RDggLyogR2x5cGguaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyQzNEQTZDMEQwMDZDRDYwMEVGNkYyNiAvKiBHbHlwaEJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzVENEFBN0ExMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmlj
c01hcC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTQyOSw2ICsyOTQ1OSw4IEBACiAJCQkJQTU3OEY0
M0YxREUwQjYzMDAwM0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNERkMzNjA2MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVu
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOEFDQTg5MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1v
dGVDb21tYW5kTGlzdGVuZXJNYWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Qjk1MTk5MjA3RDYz
NEQwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Qjk1
MTlBMjA3RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RDA2QzBEOEYwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1hdENvbW1hbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzMzA5RTA1MDk5RTY0OTIwMDU2RTU4MSAvKiBSZW1vdmVOb2RlQ29tbWFu
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMDcwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92
ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCA0NjY4MGFiNDhkZDhkOGEwNjdlNzBh
MzE0MGE4YTVjNjUzM2RmMTQxLi41MzM5ODI3NTE0ZWI0YTJhZGE4YzhhZjY1OWRhMWRhOTEyZTk4
YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzEsNyAr
MjMxLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdGUpCiAgICAg
UmVmUHRyPEZyYW1lPiBmcmFtZSB7IG1fZG9jdW1lbnRMb2FkZXIuZnJhbWUoKSB9OwogICAgIFN0
cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCB7IG1fYmxvY2tpbmdDb250ZW50RmlsdGVy
LT51bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCgpIH07CiAgICAgaWYgKCF1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUpIHsKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2Y8VGhyZWFkU2FmZVJlZkNvdW50ZWQ8RnJhbWU+LCBGcmFtZT46OnZh
bHVlLCAiRnJhbWUgbXVzdCBiZSBUaHJlYWRTYWZlUmVmQ291bnRlZC4iKTsKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Y8VGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWJzdHJhY3RG
cmFtZT4sIEZyYW1lPjo6dmFsdWUsICJGcmFtZSBtdXN0IGJlIFRocmVhZFNhZmVSZWZDb3VudGVk
LiIpOwogICAgICAgICB1bmJsb2NrSGFuZGxlci53cmFwV2l0aERlY2lzaW9uSGFuZGxlcihbZnJh
bWUgPSBXVEZNb3ZlKGZyYW1lKSwgc2NyaXB0ID0gdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQu
aXNvbGF0ZWRDb3B5KCldKGJvb2wgdW5ibG9ja2VkKSB7CiAgICAgICAgICAgICBpZiAoIXVuYmxv
Y2tlZCkKICAgICAgICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChzY3Jp
cHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdERPTVdpbmRvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RE9NV2luZG93LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iYTc0NTE5YzFlZTI3ZGI3NTc3YzNiNjczMDQ4ZDZmZjU2YzQwM2FhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdERPTVdpbmRvdy5jcHAKQEAgLTAsMCAr
MSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBYnN0
cmFjdERPTVdpbmRvdy5oIgorCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworSGFzaE1hcDxHbG9iYWxXaW5kb3dJZGVudGlmaWVyLCBBYnN0
cmFjdERPTVdpbmRvdyo+JiBBYnN0cmFjdERPTVdpbmRvdzo6YWxsV2luZG93cygpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxHbG9iYWxXaW5kb3dJZGVudGlmaWVyLCBBYnN0cmFjdERPTVdpbmRvdyo+PiBtYXA7CisgICAg
cmV0dXJuIG1hcDsKK30KKworQWJzdHJhY3RET01XaW5kb3c6OkFic3RyYWN0RE9NV2luZG93KEds
b2JhbFdpbmRvd0lkZW50aWZpZXImJiBpZGVudGlmaWVyKQorICAgIDogbV9pZGVudGlmaWVyKFdU
Rk1vdmUoaWRlbnRpZmllcikpCit7CisgICAgQVNTRVJUKCFhbGxXaW5kb3dzKCkuY29udGFpbnMo
aWRlbnRpZmllcikpOworICAgIGFsbFdpbmRvd3MoKS5hZGQoaWRlbnRpZmllciwgdGhpcyk7Cit9
CisKK0Fic3RyYWN0RE9NV2luZG93Ojp+QWJzdHJhY3RET01XaW5kb3coKQoreworICAgIEFTU0VS
VChhbGxXaW5kb3dzKCkuY29udGFpbnMoaWRlbnRpZmllcigpKSk7CisgICAgYWxsV2luZG93cygp
LnJlbW92ZShpZGVudGlmaWVyKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RE9NV2luZG93LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Fic3RyYWN0RE9NV2luZG93LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE1ZGViZDUzMmFk
OWEyMmU4ODRiYjY2YmM5ZGZhYjI4ZGRiYmNhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQWJzdHJhY3RET01XaW5kb3cuaApAQCAtMCwwICsxLDY2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJCYXNlNjRVdGlsaXRpZXMuaCIKKyNpbmNs
dWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWJzdHJhY3RGcmFtZTsKKworLy8gRklYTUU6
IFJlbmFtZSBET01XaW5kb3cgdG8gTG9jYWxXaW5kb3cgYW5kIEFic3RyYWN0RE9NV2luZG93IHRv
IERPTVdpbmRvdy4KK2NsYXNzIEFic3RyYWN0RE9NV2luZG93IDogcHVibGljIFJlZkNvdW50ZWQ8
QWJzdHJhY3RET01XaW5kb3c+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+QWJzdHJhY3RET01XaW5kb3coKTsKKworICAgIHN0YXRpYyBI
YXNoTWFwPEdsb2JhbFdpbmRvd0lkZW50aWZpZXIsIEFic3RyYWN0RE9NV2luZG93Kj4mIGFsbFdp
bmRvd3MoKTsKKworICAgIGNvbnN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXImIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIHZpcnR1YWwgQWJzdHJhY3RG
cmFtZSogZnJhbWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhbERPTVdp
bmRvdygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW1vdGVET01XaW5kb3coKSBj
b25zdCA9IDA7CisKKyAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CisgICAgdXNpbmcgUmVmQ291
bnRlZDo6ZGVyZWY7CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBBYnN0cmFjdERPTVdpbmRv
dyhHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYpOworCisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2Ug
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBET01XaW5kb3dFdmVu
dFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwg
eyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsg
fQorCitwcml2YXRlOgorICAgIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIgbV9pZGVudGlmaWVyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9BYnN0cmFjdEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFt
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmYwZjZkYTYwYmYyMTNlOWY4MjcyYjJjZDNjY2FjYjEyMjdiODg4
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5j
cHAKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBYnN0cmFjdEZyYW1lLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQWJzdHJh
Y3RGcmFtZTo6QWJzdHJhY3RGcmFtZSgpCit7Cit9CisKK0Fic3RyYWN0RnJhbWU6On5BYnN0cmFj
dEZyYW1lKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fi
c3RyYWN0RnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjExNWViNmNjYmMyMDMzMjUzM2RhYmFhNTYyOTBi
YWYwMWQxYmJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFj
dEZyYW1lLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFic3RyYWN0RE9NV2luZG93
OworY2xhc3MgV2luZG93UHJveHlDb250cm9sbGVyOworCisvLyBGSVhNRTogUmVuYW1lIEZyYW1l
IHRvIExvY2FsRnJhbWUgYW5kIEFic3RyYWN0RnJhbWUgdG8gRnJhbWUuCitjbGFzcyBBYnN0cmFj
dEZyYW1lIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFic3RyYWN0RnJhbWU+IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5BYnN0cmFjdEZyYW1lKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wg
aXNMb2NhbEZyYW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1JlbW90ZUZyYW1l
KCkgY29uc3QgPSAwOworCisgICAgQWJzdHJhY3RET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0IHsg
cmV0dXJuIHZpcnR1YWxXaW5kb3coKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgQWJzdHJhY3RGcmFt
ZSgpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgQWJzdHJhY3RET01XaW5kb3cqIHZpcnR1YWxX
aW5kb3coKSBjb25zdCA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggOTBjM2U4ZTVhNzgzOGRkMGJmOGJjNDBlOWY5ZTdiMWUz
ODRhYzgwMS4uMDIxMGIwOGExODIxZGViMGM4OTA2YzlmZjA4MmE0NmFlMzdlYTdkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNDAxLDcgKzQwMSw4IEBAIHZvaWQgRE9NV2luZG93
OjpzZXRDYW5TaG93TW9kYWxEaWFsb2dPdmVycmlkZShib29sIGFsbG93KQogfQogCiBET01XaW5k
b3c6OkRPTVdpbmRvdyhEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcigmZG9jdW1lbnQpCisgICAgOiBBYnN0cmFjdERPTVdpbmRvdyhHbG9iYWxXaW5k
b3dJZGVudGlmaWVyIHsgUHJvY2Vzczo6aWRlbnRpZmllcigpLCBnZW5lcmF0ZU9iamVjdElkZW50
aWZpZXI8V2luZG93SWRlbnRpZmllclR5cGU+KCkgfSkKKyAgICAsIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyKCZkb2N1bWVudCkKICAgICAsIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcihkb2N1
bWVudC5mcmFtZSgpKQogewogICAgIEFTU0VSVChmcmFtZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5oCmluZGV4IDRjNjZiNzI0ZTI5YWJiYjBhMGIyYmNiNjZkNTczMWNlODRlZDFkN2UuLjQ5OWE1
NThkMmVlMThkNTQ3NWZkMDgyOTQ1ZDY2YzM4ODhiOTk2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaApAQCAtMjYsMTAgKzI2LDExIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWJz
dHJhY3RET01XaW5kb3cuaCIKICNpbmNsdWRlICJCYXNlNjRVdGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0Lmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkltYWdlQml0bWFwLmgiCiAj
aW5jbHVkZSAiU2Nyb2xsVG9PcHRpb25zLmgiCkBAIC04Nyw5ICs4OCw5IEBAIHN0cnVjdCBXaW5k
b3dGZWF0dXJlczsKIGVudW0gU2V0TG9jYXRpb25Mb2NraW5nIHsgTG9ja0hpc3RvcnlCYXNlZE9u
R2VzdHVyZVN0YXRlLCBMb2NrSGlzdG9yeUFuZEJhY2tGb3J3YXJkTGlzdCB9OwogCiAvLyBGSVhN
RTogRE9NV2luZG93IHNob3VsZG4ndCBzdWJjbGFzcyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIg
YW5kIGluc3RlYWQgc2hvdWxkIGdldCB0byBGcmFtZSB2aWEgaXRzIERvY3VtZW50LgorLy8gRklY
TUU6IFJlbmFtZSBET01XaW5kb3cgdG8gTG9jYWxXaW5kb3cgYW5kIEFic3RyYWN0RE9NV2luZG93
IHRvIERPTVdpbmRvdy4KIGNsYXNzIERPTVdpbmRvdyBmaW5hbAotICAgIDogcHVibGljIFJlZkNv
dW50ZWQ8RE9NV2luZG93PgotICAgICwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEK
KyAgICA6IHB1YmxpYyBBYnN0cmFjdERPTVdpbmRvdwogICAgICwgcHVibGljIENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyCiAgICAgLCBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyCiAg
ICAgLCBwdWJsaWMgQmFzZTY0VXRpbGl0aWVzCkBAIC0xOTgsNiArMTk5LDggQEAgcHVibGljOgog
ICAgIERPTVdpbmRvdyogcGFyZW50KCkgY29uc3Q7CiAgICAgRE9NV2luZG93KiB0b3AoKSBjb25z
dDsKIAorICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEZyYW1lRGVzdHJ1
Y3Rpb25PYnNlcnZlcjo6ZnJhbWUoKTsgfQorCiAgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0Owog
CiAgICAgLy8gRE9NIExldmVsIDIgQWJzdHJhY3RWaWV3IEludGVyZmFjZQpAQCAtMjc2LDkgKzI3
OSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKCk7CiAKLSAgICB1c2lu
ZyBSZWZDb3VudGVkOjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7Ci0KICAgICAv
LyBIVE1MIDUga2V5L3ZhbHVlIHN0b3JhZ2UKICAgICBFeGNlcHRpb25PcjxTdG9yYWdlKj4gc2Vz
c2lvblN0b3JhZ2UoKSBjb25zdDsKICAgICBFeGNlcHRpb25PcjxTdG9yYWdlKj4gbG9jYWxTdG9y
YWdlKCkgY29uc3Q7CkBAIC0zMzgsMTggKzMzOCwxNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IERPTVdpbmRvdyhEb2N1bWVudCYpOwogCi0gICAgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBET01XaW5kb3dF
dmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCisgICAgYm9vbCBp
c0xvY2FsRE9NV2luZG93KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wg
aXNSZW1vdGVET01XaW5kb3coKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAg
UGFnZSogcGFnZSgpOwogICAgIGJvb2wgYWxsb3dlZFRvQ2hhbmdlV2luZG93R2VvbWV0cnkoKSBj
b25zdDsKIAogICAgIHZvaWQgZnJhbWVEZXN0cm95ZWQoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxE
ZXRhY2hQYWdlKCkgZmluYWw7CiAKLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBy
ZWYoKTsgfQotICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQot
CiAgICAgc3RhdGljIFJlZlB0cjxGcmFtZT4gY3JlYXRlV2luZG93KGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgV2luZG93RmVhdHVy
ZXMmLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRnJhbWUmIGZpcnN0RnJhbWUsIEZyYW1lJiBv
cGVuZXJGcmFtZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERPTVdpbmRvdyYpPiYgcHJlcGFy
ZURpYWxvZ0Z1bmN0aW9uID0gbnVsbHB0cik7CiAgICAgYm9vbCBpc0luc2VjdXJlU2NyaXB0QWNj
ZXNzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAK
QEAgLTQzMiw1ICs0MzEsNiBAQCBpbmxpbmUgU3RyaW5nIERPTVdpbmRvdzo6ZGVmYXVsdFN0YXR1
cygpIGNvbnN0CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQkVHSU4oV2ViQ29yZTo6RE9NV2luZG93KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25z
dCBXZWJDb3JlOjpBYnN0cmFjdERPTVdpbmRvdyYgd2luZG93KSB7IHJldHVybiB3aW5kb3cuaXNM
b2NhbERPTVdpbmRvdygpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6
OkV2ZW50VGFyZ2V0JiB0YXJnZXQpIHsgcmV0dXJuIHRhcmdldC5ldmVudFRhcmdldEludGVyZmFj
ZSgpID09IFdlYkNvcmU6OkRPTVdpbmRvd0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAyZWUzNzVk
ZDBiMjdmMTlhYWEwMjZlMzQ4N2Q0Y2NkZjczMzMyZTY2Li44MDY3N2M0NWZlNmNkODQ4ODNmZWNk
MzI1ODcwNTIyYzVlN2I0ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtOTM5LDYgKzkzOSwx
NiBAQCB2b2lkIEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwg
Y29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcgogICAgICAgICB2aWV3KCktPnNldENhbkhhdmVT
Y3JvbGxiYXJzKG93bmVyLT5zY3JvbGxpbmdNb2RlKCkgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmKTsK
IH0KIAorRE9NV2luZG93KiBGcmFtZTo6d2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZG9j
dW1lbnQoKSA/IGRvY3VtZW50KCktPmRvbVdpbmRvdygpIDogbnVsbHB0cjsKK30KKworQWJzdHJh
Y3RET01XaW5kb3cqIEZyYW1lOjp2aXJ0dWFsV2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
d2luZG93KCk7Cit9CisKIFN0cmluZyBGcmFtZTo6bGF5ZXJUcmVlQXNUZXh0KExheWVyVHJlZUZs
YWdzIGZsYWdzKSBjb25zdAogewogICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5oCmluZGV4IGIzNWI4ZmQwNzU1ZjYzODMwMzgzOWNmMWM5YmU4ODIyYjg1ZjJhMDAu
LmRlZDk2Zjg5YmEzNTY2MTkwMTc2NWU3ZGEzMGZmMjM2MzVmNjg1ODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmgKQEAgLTI3LDEyICsyNywxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFic3Ry
YWN0RnJhbWUuaCIKICNpbmNsdWRlICJBZGp1c3RWaWV3U2l6ZU9yTm90LmgiCiAjaW5jbHVkZSAi
RnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJVc2VyU2Ny
aXB0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogI2lmIFBM
QVRGT1JNKElPUykKQEAgLTYxLDYgKzYxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDU1NBbmltYXRpb25Db250cm9sbGVyOwogY2xhc3MgQ29sb3I7CitjbGFzcyBET01XaW5kb3c7
CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVkaXRvcjsKIGNsYXNzIEVsZW1lbnQ7CkBAIC0xMTcs
NyArMTE4LDggQEAgZW51bSB7CiB9OwogdHlwZWRlZiB1bnNpZ25lZCBMYXllclRyZWVGbGFnczsK
IAotY2xhc3MgRnJhbWUgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RnJhbWU+
IHsKKy8vIEZJWE1FOiBSZW5hbWUgRnJhbWUgdG8gTG9jYWxGcmFtZSBhbmQgQWJzdHJhY3RGcmFt
ZSB0byBGcmFtZS4KK2NsYXNzIEZyYW1lIGZpbmFsIDogcHVibGljIEFic3RyYWN0RnJhbWUgewog
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhbWU+IGNyZWF0ZShQYWdl
KiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgRnJhbWVMb2FkZXJDbGllbnQqKTsKIApAQCAtMTM0
LDYgKzEzNiw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5GcmFtZSgpOwogCisg
ICAgRE9NV2luZG93KiB3aW5kb3coKSBjb25zdDsKKwogICAgIHZvaWQgYWRkRGVzdHJ1Y3Rpb25P
YnNlcnZlcihGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIqKTsKICAgICB2b2lkIHJlbW92ZURlc3Ry
dWN0aW9uT2JzZXJ2ZXIoRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKik7CiAKQEAgLTI5MSw2ICsy
OTUsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHJvcENoaWxkcmVuKCk7CiAKKyAgICBib29s
IGlzTG9jYWxGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlz
UmVtb3RlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgQWJzdHJh
Y3RET01XaW5kb3cqIHZpcnR1YWxXaW5kb3coKSBjb25zdCBmaW5hbDsKKwogICAgIEhhc2hTZXQ8
RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKj4gbV9kZXN0cnVjdGlvbk9ic2VydmVyczsKIAogICAg
IEZyYW1lJiBtX21haW5GcmFtZTsKQEAgLTM5MCwzICszOTksNyBAQCBpbmxpbmUgRnJhbWUmIEZy
YW1lOjptYWluRnJhbWUoKSBjb25zdAogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6RnJhbWUpCisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkFic3RyYWN0RnJhbWUmIGZyYW1lKSB7IHJldHVybiBm
cmFtZS5pc0xvY2FsRnJhbWUoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI2
MTE3ZDUxMWYyMzNlZGIzZjNlNjBkYWQ0MzcxYzVhYzk4ZmJjYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKQEAgLTAsMCArMSw2
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdsb2JhbEZyYW1lSWRlbnRpZmll
ciB7CisgICAgdWludDY0X3QgcGFnZUlEOworICAgIHVpbnQ2NF90IGZyYW1lSUQ7CisKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8R2xvYmFsRnJhbWVJ
ZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KK3ZvaWQgR2xvYmFsRnJhbWVJZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHBhZ2VJRCA8PCBmcmFtZUlEOworfQorCit0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxHbG9iYWxGcmFtZUlkZW50aWZpZXI+IEds
b2JhbEZyYW1lSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIGRlY29kZXIgPj4gcGFnZUlEOworICAg
IGlmICghcGFnZUlEKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKKyAgICBkZWNvZGVyID4+IGZyYW1lSUQ7CisgICAg
aWYgKCFmcmFtZUlEKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJu
IHsgeyBXVEZNb3ZlKCpwYWdlSUQpLCBXVEZNb3ZlKCpmcmFtZUlEKSB9IH07Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFs
V2luZG93SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxXaW5kb3dJZGVu
dGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdlMTlhOTRhOWIwYzNkZjQyMTAwNDViZWM1ZWI0ZDFlY2M3
ZTA4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsV2luZG93
SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJQcm9jZXNzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNp
bmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2VudW0gV2luZG93SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgV2luZG93SWRlbnRpZmllciA9
IE9iamVjdElkZW50aWZpZXI8V2luZG93SWRlbnRpZmllclR5cGU+OworCitzdHJ1Y3QgR2xvYmFs
V2luZG93SWRlbnRpZmllciB7CisgICAgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZp
ZXI7CisgICAgV2luZG93SWRlbnRpZmllciB3aW5kb3dJZGVudGlmaWVyOworCisgICAgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEdsb2JhbFdpbmRvd0lkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7Cit9
OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXIm
IGEsIGNvbnN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXImIGIpCit7CisgICAgcmV0dXJuIGEucHJv
Y2Vzc0lkZW50aWZpZXIgPT0gYi5wcm9jZXNzSWRlbnRpZmllciAmJiAgYS53aW5kb3dJZGVudGlm
aWVyID09IGIud2luZG93SWRlbnRpZmllcjsKK30KKworaW5saW5lIHVuc2lnbmVkIEdsb2JhbFdp
bmRvd0lkZW50aWZpZXI6Omhhc2goKSBjb25zdAoreworICAgIHVuc2lnbmVkIGhhc2hlc1syXTsK
KyAgICBoYXNoZXNbMF0gPSBXVEY6OmludEhhc2gocHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQo
KSk7CisgICAgaGFzaGVzWzFdID0gV1RGOjppbnRIYXNoKHdpbmRvd0lkZW50aWZpZXIudG9VSW50
NjQoKSk7CisKKyAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KGhhc2hlcywgc2l6
ZW9mKGhhc2hlcykpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBHbG9iYWxX
aW5kb3dJZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBl
bmNvZGVyIDw8IHByb2Nlc3NJZGVudGlmaWVyIDw8IHdpbmRvd0lkZW50aWZpZXI7Cit9CisKK3Rl
bXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPEdsb2JhbFdpbmRvd0lkZW50aWZp
ZXI+IEdsb2JhbFdpbmRvd0lkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVyOwor
ICAgIGRlY29kZXIgPj4gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgaWYgKCFwcm9jZXNzSWRlbnRp
ZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8
V2luZG93SWRlbnRpZmllcj4gd2luZG93SWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHdpbmRv
d0lkZW50aWZpZXI7CisgICAgaWYgKCF3aW5kb3dJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpwcm9jZXNzSWRlbnRpZmll
ciksIFdURk1vdmUoKndpbmRvd0lkZW50aWZpZXIpIH0gfTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IEdsb2JhbFdpbmRvd0lkZW50aWZp
ZXJIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJDb3JlOjpHbG9iYWxX
aW5kb3dJZGVudGlmaWVyJiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0aWMg
Ym9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiBhLCBjb25z
dCBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiBiKSB7IHJldHVybiBhID09IGI7IH0K
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRy
dWU7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6Okdsb2JhbFdp
bmRvd0lkZW50aWZpZXI+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6R2xvYmFsV2luZG93
SWRlbnRpZmllcj4geworICAgIHN0YXRpYyBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVy
IGVtcHR5VmFsdWUoKSB7IHJldHVybiB7IH07IH0KKworICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVj
dERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiBzbG90KSB7IHNs
b3Qud2luZG93SWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OldpbmRv
d0lkZW50aWZpZXJUeXBlPihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOyB9
CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6R2xvYmFsV2lu
ZG93SWRlbnRpZmllciYgc2xvdCkgeyByZXR1cm4gc2xvdC53aW5kb3dJZGVudGlmaWVyLnRvVUlu
dDY0KCkgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOyB9Cit9OworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlm
aWVyPiB7CisgICAgdHlwZWRlZiBHbG9iYWxXaW5kb3dJZGVudGlmaWVySGFzaCBIYXNoOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
bW90ZURPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTgwMzQyNDM3OGZiZjFkNGJjZmIwNmU1YTFkMDkxNDgzYjM2NThjOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmNw
cApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZW1vdGVET01XaW5kb3cuaCIKKworI2luY2x1ZGUgIlJlbW90ZUZyYW1lLmgiCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVt
b3RlRE9NV2luZG93OjpSZW1vdGVET01XaW5kb3coUmVmPFJlbW90ZUZyYW1lPiYmIGZyYW1lLCBH
bG9iYWxXaW5kb3dJZGVudGlmaWVyJiYgaWRlbnRpZmllcikKKyAgICA6IEFic3RyYWN0RE9NV2lu
ZG93KFdURk1vdmUoaWRlbnRpZmllcikpCisgICAgLCBtX2ZyYW1lKFdURk1vdmUoZnJhbWUpKQor
eworICAgIG1fZnJhbWUtPnNldFdpbmRvdyh0aGlzKTsKK30KKworUmVtb3RlRE9NV2luZG93Ojp+
UmVtb3RlRE9NV2luZG93KCkKK3sKKyAgICBtX2ZyYW1lLT5zZXRXaW5kb3cobnVsbHB0cik7Cit9
CisKK1JlbW90ZURPTVdpbmRvdyogUmVtb3RlRE9NV2luZG93OjpzZWxmKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjb25z
dF9jYXN0PFJlbW90ZURPTVdpbmRvdyo+KHRoaXMpOworfQorCitMb2NhdGlvbiogUmVtb3RlRE9N
V2luZG93Ojpsb2NhdGlvbigpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudGVkIHRo
aXMuCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlRE9NV2luZG93OjpjbG9z
ZShEb2N1bWVudCYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudGVkIHRoaXMuCit9CisKK2Jv
b2wgUmVtb3RlRE9NV2luZG93OjpjbG9zZWQoKSBjb25zdAoreworICAgIHJldHVybiAhbV9mcmFt
ZTsKK30KKwordm9pZCBSZW1vdGVET01XaW5kb3c6OmZvY3VzKERPTVdpbmRvdyYgaW5jdW1iZW50
V2luZG93KQoreworICAgIFVOVVNFRF9QQVJBTShpbmN1bWJlbnRXaW5kb3cpOworICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnRlZCB0aGlzLgorfQorCit2b2lkIFJlbW90ZURPTVdpbmRvdzo6Ymx1cigp
Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudGVkIHRoaXMuCit9CisKK3Vuc2lnbmVkIFJlbW90
ZURPTVdpbmRvdzo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50ZWQg
dGhpcy4KKyAgICByZXR1cm4gMTsKK30KKworUmVtb3RlRE9NV2luZG93KiBSZW1vdGVET01XaW5k
b3c6OnRvcCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnRlZCB0aGlzLgorICAgIHJldHVybiBjb25z
dF9jYXN0PFJlbW90ZURPTVdpbmRvdyo+KHRoaXMpOworfQorCitET01XaW5kb3cqIFJlbW90ZURP
TVdpbmRvdzo6b3BlbmVyKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50ZWQgdGhp
cy4KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVtb3RlRE9NV2luZG93KiBSZW1vdGVET01X
aW5kb3c6OnBhcmVudCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnRlZCB0aGlzLgorICAgIHJldHVy
biBjb25zdF9jYXN0PFJlbW90ZURPTVdpbmRvdyo+KHRoaXMpOworfQorCitFeGNlcHRpb25Pcjx2
b2lkPiBSZW1vdGVET01XaW5kb3c6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiwgRE9NV2lu
ZG93JiBpbmN1bWJlbnRXaW5kb3csIEpTQzo6SlNWYWx1ZSBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IHRhcmdldE9yaWdpbiwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmKQorewor
ICAgIFVOVVNFRF9QQVJBTShpbmN1bWJlbnRXaW5kb3cpOworICAgIFVOVVNFRF9QQVJBTShtZXNz
YWdlKTsKKyAgICBVTlVTRURfUEFSQU0odGFyZ2V0T3JpZ2luKTsKKworICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnRlZCB0aGlzLgorICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJv
ciB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVE
T01XaW5kb3cuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTJmMWZkMTY3ODYyZWEyY2Q4M2Y5OGVkODkxZWM2M2Vj
MjRiZWJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01X
aW5kb3cuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJBYnN0cmFjdERPTVdpbmRvdy5oIgorI2luY2x1ZGUgIlJlbW90ZUZyYW1lLmgiCisj
aW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNT
dGF0ZTsKK2NsYXNzIEpTT2JqZWN0OworY2xhc3MgSlNWYWx1ZTsKK3RlbXBsYXRlPHR5cGVuYW1l
PiBjbGFzcyBTdHJvbmc7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NV2lu
ZG93OworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBMb2NhdGlvbjsKKworY2xhc3MgUmVtb3RlRE9N
V2luZG93IGZpbmFsIDogcHVibGljIEFic3RyYWN0RE9NV2luZG93IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFJlbW90ZURPTVdpbmRvdz4gY3JlYXRlKFJlZjxSZW1vdGVGcmFtZT4mJiBmcmFt
ZSwgR2xvYmFsV2luZG93SWRlbnRpZmllciYmIGlkZW50aWZpZXIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVET01XaW5kb3coV1RGTW92ZShmcmFtZSksIFdURk1v
dmUoaWRlbnRpZmllcikpKTsKKyAgICB9CisKKyAgICB+UmVtb3RlRE9NV2luZG93KCkgZmluYWw7
CisKKyAgICBSZW1vdGVGcmFtZSogZnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZyYW1l
LmdldCgpOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIC8vIERPTSBBUEku
CisgICAgUmVtb3RlRE9NV2luZG93KiBzZWxmKCkgY29uc3Q7CisgICAgTG9jYXRpb24qIGxvY2F0
aW9uKCkgY29uc3Q7CisgICAgdm9pZCBjbG9zZShEb2N1bWVudCYpOworICAgIGJvb2wgY2xvc2Vk
KCkgY29uc3Q7CisgICAgdm9pZCBmb2N1cyhET01XaW5kb3cmIGluY3VtYmVudFdpbmRvdyk7Cisg
ICAgdm9pZCBibHVyKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAgUmVtb3Rl
RE9NV2luZG93KiB0b3AoKSBjb25zdDsKKyAgICBET01XaW5kb3cqIG9wZW5lcigpIGNvbnN0Owor
ICAgIFJlbW90ZURPTVdpbmRvdyogcGFyZW50KCkgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gcG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBET01XaW5kb3cmIGluY3VtYmVudFdpbmRv
dywgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBWZWN0
b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYpOworCitwcml2YXRlOgorICAgIFdFQkNP
UkVfRVhQT1JUIFJlbW90ZURPTVdpbmRvdyhSZWY8UmVtb3RlRnJhbWU+JiYsIEdsb2JhbFdpbmRv
d0lkZW50aWZpZXImJik7CisKKyAgICBib29sIGlzUmVtb3RlRE9NV2luZG93KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNMb2NhbERPTVdpbmRvdygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBSZWZQdHI8UmVtb3RlRnJhbWU+IG1fZnJhbWU7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpBYnN0cmFjdERPTVdpbmRvdyYgd2luZG93KSB7IHJldHVybiB3aW5kb3cu
aXNSZW1vdGVET01XaW5kb3coKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDEwYzM3YzVjYzEyMDliYmIz
ZGQ4MWJhMjM0MWFhZDQyZGJjYmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9SZW1vdGVGcmFtZS5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVGcmFtZS5oIgorCisjaW5jbHVkZSAiUmVt
b3RlRE9NV2luZG93LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVtb3RlRnJhbWU6OlJl
bW90ZUZyYW1lKEdsb2JhbEZyYW1lSWRlbnRpZmllciYmIGZyYW1lSWRlbnRpZmllcikKKyAgICA6
IG1faWRlbnRpZmllcihXVEZNb3ZlKGZyYW1lSWRlbnRpZmllcikpCit7Cit9CisKK1JlbW90ZUZy
YW1lOjp+UmVtb3RlRnJhbWUoKQoreworfQorCitBYnN0cmFjdERPTVdpbmRvdyogUmVtb3RlRnJh
bWU6OnZpcnR1YWxXaW5kb3coKSBjb25zdAoreworICAgIHJldHVybiB3aW5kb3coKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9S
ZW1vdGVGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjM2ZmMzZmIxOTcxYjU2MzI3ZTE1MzUyZDFhMThlOWFlNDM5MGQ5MjIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmgKQEAgLTAsMCArMSw2NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWJzdHJhY3RGcmFtZS5o
IgorI2luY2x1ZGUgIkdsb2JhbEZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KKyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgUmVtb3RlRE9NV2luZG93OworCitjbGFzcyBSZW1vdGVGcmFtZSBmaW5hbCA6IHB1Ymxp
YyBBYnN0cmFjdEZyYW1lIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUZyYW1lPiBj
cmVhdGUoR2xvYmFsRnJhbWVJZGVudGlmaWVyJiYgZnJhbWVJZGVudGlmaWVyKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCogbmV3IFJlbW90ZUZyYW1lKFdURk1vdmUoZnJhbWVJZGVu
dGlmaWVyKSkpOworICAgIH0KKyAgICB+UmVtb3RlRnJhbWUoKTsKKworICAgIGNvbnN0IEdsb2Jh
bEZyYW1lSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
cjsgfQorCisgICAgdm9pZCBzZXRXaW5kb3coUmVtb3RlRE9NV2luZG93KiB3aW5kb3cpIHsgbV93
aW5kb3cgPSB3aW5kb3c7IH0KKyAgICBSZW1vdGVET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0IHsg
cmV0dXJuIG1fd2luZG93OyB9CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgUmVtb3RlRnJhbWUoR2xvYmFsRnJhbWVJZGVudGlmaWVyJiYpOworCisgICAgYm9vbCBpc1Jl
bW90ZUZyYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNMb2Nh
bEZyYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIEFic3RyYWN0RE9N
V2luZG93KiB2aXJ0dWFsV2luZG93KCkgY29uc3QgZmluYWw7CisKKyAgICBHbG9iYWxGcmFtZUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFJlbW90ZURPTVdpbmRvdyogbV93aW5kb3cgeyBu
dWxscHRyIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6UmVtb3RlRnJhbWUpCisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6OkFic3RyYWN0RnJhbWUmIGZyYW1lKSB7IHJldHVybiBmcmFtZS5p
c1JlbW90ZUZyYW1lKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZSUGxhdGZvcm1EaXNwbGF5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheS5oCmluZGV4IDk5OGIzN2Rj
ZjZhMzU1MGRiZjQxM2UxZjczNjY3MmUyMTkzMzI0OGIuLjc2MjMyNWNiYzQ0YWYyZjExN2YwODZj
YjkwMWJhYzBjZDA5ZTcyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Zy
L1ZSUGxhdGZvcm1EaXNwbGF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvVlJQ
bGF0Zm9ybURpc3BsYXkuaApAQCAtMzEsMTEgKzMxLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHR5cGVkZWYgdW5zaWduZWQgVlJEaXNwbGF5Q2FwYWJpbGl0eUZsYWdzOwogCiBlbnVtIFZSRGlz
cGxheUNhcGFiaWxpdHlGbGFnIHsKLSAgICBOb25lID0gMCwKLSAgICBQb3NpdGlvbiA9IDEgPDwg
MSwKLSAgICBPcmllbnRhdGlvbiA9IDEgPDwgMiwKLSAgICBFeHRlcm5hbERpc3BsYXkgPSAxIDw8
IDMsCi0gICAgUHJlc2VudCA9IDEgPDwgNAorICAgIFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnTm9u
ZSA9IDAsCisgICAgVlJEaXNwbGF5Q2FwYWJpbGl0eUZsYWdQb3NpdGlvbiA9IDEgPDwgMSwKKyAg
ICBWUkRpc3BsYXlDYXBhYmlsaXR5RmxhZ09yaWVudGF0aW9uID0gMSA8PCAyLAorICAgIFZSRGlz
cGxheUNhcGFiaWxpdHlGbGFnRXh0ZXJuYWxEaXNwbGF5ID0gMSA8PCAzLAorICAgIFZSRGlzcGxh
eUNhcGFiaWxpdHlGbGFnUHJlc2VudCA9IDEgPDwgNAogfTsKIAogLyogVGhlIHB1cnBvc2Ugb2Yg
dGhpcyBjbGFzcyBpcyB0byBlbmNhcHN1bGF0ZSBhbGwgdGhlIGluZm8gYWJvdXQgdGhlIGRpc3Bs
YXkgaW4gYSBzaW5nbGUgY2xhc3MvZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZSLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5jcHAKaW5kZXgg
ZmFkYjZmYzEzNzM2MjA3MTU2OTA3NzI0YzBkOGNlODdkYzZkNWIzNS4uZGQ2Mjg4ZTBlZGJlN2Fj
ODcxMzk2NGQ4Y2E3MjI5YzA4Y2I3MGViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZSLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuY3BwCkBA
IC00OCw3ICs0OCw3IEBAIFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSOjpWUlBsYXRmb3JtRGlzcGxh
eU9wZW5WUih2cjo6SVZSU3lzdGVtKiBzeXN0ZW0sIHZyOjpJVlJDCiAgICAgbV9kaXNwbGF5SW5m
by5zZXREaXNwbGF5TmFtZShzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwogICAgIG1fZGlzcGxh
eUluZm8uc2V0SXNNb3VudGVkKGZhbHNlKTsKICAgICAvLyBGSVhNRTogV2UncmUgYXNzdW1pbmcg
YW4gSFRDIFZpdmUgSE1EIGhlcmUuIEdldCB0aGlzIGluZm8gZnJvbSBPcGVuVlI/LgotICAgIG1f
ZGlzcGxheUluZm8uc2V0Q2FwYWJpbGl0eUZsYWdzKFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnOjpO
b25lIHwgVlJEaXNwbGF5Q2FwYWJpbGl0eUZsYWc6OlBvc2l0aW9uIHwgVlJEaXNwbGF5Q2FwYWJp
bGl0eUZsYWc6Ok9yaWVudGF0aW9uIHwgVlJEaXNwbGF5Q2FwYWJpbGl0eUZsYWc6OkV4dGVybmFs
RGlzcGxheSB8IFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnOjpQcmVzZW50KTsKKyAgICBtX2Rpc3Bs
YXlJbmZvLnNldENhcGFiaWxpdHlGbGFncyhWUkRpc3BsYXlDYXBhYmlsaXR5RmxhZ05vbmUgfCBW
UkRpc3BsYXlDYXBhYmlsaXR5RmxhZ1Bvc2l0aW9uIHwgVlJEaXNwbGF5Q2FwYWJpbGl0eUZsYWdP
cmllbnRhdGlvbiB8IFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnRXh0ZXJuYWxEaXNwbGF5IHwgVlJE
aXNwbGF5Q2FwYWJpbGl0eUZsYWdQcmVzZW50KTsKIAogICAgIG1fY29tcG9zaXRvci0+U2V0VHJh
Y2tpbmdTcGFjZSh2cjo6VHJhY2tpbmdVbml2ZXJzZVNlYXRlZCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337653</attachid>
            <date>2018-04-10 16:23:02 -0700</date>
            <delta_ts>2018-04-10 16:45:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184467-20180410162301.patch</filename>
            <type>text/plain</type>
            <size>51969</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhmYWM5OTQ4MjNkYmYz
OTQ2Y2FlOTBiODk3OTBjYjY4OTBiYjhiMC4uNzk5MGQzNjgxMDk4ZTJhZGMzYWZjNWQwNTA1ZDdj
MjM0YTBmNGE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE4LTA0LTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIHJlbW90ZSB2
YXJpYW50cyBvZiBGcmFtZSAvIERPTVdpbmRvdyBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ0NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzM5MDExMjY3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEludHJvZHVjZSByZW1vdGUgdmFyaWFudHMgb2YgRnJhbWUgLyBET01XaW5kb3cgY2xh
c3NlcywgZm9yIHdoZW4gdGhlc2UgZnJhbWVzIC8gd2luZG93cworICAgICAgICBhcmUgaG9zdGVk
IG9uIGFub3RoZXIgV2ViUHJvY2Vzcy4gVGhvc2Ugd2lsbCBiZSB1c2VkIGluIGEgZm9sbG93LXVw
IHBhdGNoLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZSk6CisgICAgICAg
ICogcGFnZS9BYnN0cmFjdERPTVdpbmRvdy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWJzdHJhY3RET01XaW5kb3c6OkFic3RyYWN0RE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkFic3RyYWN0RE9NV2luZG93Ojp+QWJzdHJhY3RET01XaW5kb3cpOgorICAgICAgICAqIHBhZ2Uv
QWJzdHJhY3RET01XaW5kb3cuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdERP
TVdpbmRvdzo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICogcGFnZS9BYnN0cmFjdEZyYW1l
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdEZyYW1lOjpBYnN0cmFjdEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RnJhbWU6On5BYnN0cmFjdEZyYW1lKToK
KyAgICAgICAgKiBwYWdlL0Fic3RyYWN0RnJhbWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBYnN0cmFjdEZyYW1lOjp3aW5kb3cgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6RE9NV2luZG93KToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp3aW5kb3cgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6OnZpcnR1YWxXaW5kb3cgY29uc3QpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWUuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGFnZS9HbG9iYWxGcmFtZUlk
ZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHbG9iYWxGcmFtZUlkZW50aWZp
ZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHbG9iYWxGcmFtZUlkZW50aWZp
ZXI6OmRlY29kZSk6CisgICAgICAgICogcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpH
bG9iYWxXaW5kb3dJZGVudGlmaWVyOjpoYXNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okds
b2JhbFdpbmRvd0lkZW50aWZpZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
bG9iYWxXaW5kb3dJZGVudGlmaWVyOjpkZWNvZGUpOgorICAgICAgICAoV1RGOjpHbG9iYWxXaW5k
b3dJZGVudGlmaWVySGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6Okdsb2JhbFdpbmRvd0lkZW50
aWZpZXJIYXNoOjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6R2xv
YmFsV2luZG93SWRlbnRpZmllcj46OmVtcHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJh
aXRzPFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXI+Ojpjb25zdHJ1Y3REZWxldGVkVmFs
dWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50
aWZpZXI+Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogcGFnZS9MYXlvdXRDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dENvbnRleHQ6On5MYXlvdXRDb250ZXh0KToKKyAg
ICAgICAgKiBwYWdlL0xheW91dENvbnRleHQuaDoKKyAgICAgICAgKiBwYWdlL1JlbW90ZURPTVdp
bmRvdy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpSZW1v
dGVET01XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93Ojp+UmVtb3Rl
RE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURPTVdpbmRvdzo6c2VsZiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVET01XaW5kb3c6OmxvY2F0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURPTVdpbmRvdzo6Y2xvc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlRE9NV2luZG93OjpjbG9zZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlRE9NV2luZG93Ojpmb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVET01XaW5k
b3c6OmJsdXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpsZW5ndGggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93Ojp0b3AgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpvcGVuZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpwYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVtb3RlRE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFnZS9SZW1vdGVE
T01XaW5kb3cuaDogQWRkZWQuCisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHBhZ2UvUmVt
b3RlRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUZyYW1lOjpSZW1v
dGVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVGcmFtZTo6flJlbW90ZUZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUZyYW1lOjp2aXJ0dWFsV2luZG93IGNvbnN0KToKKyAg
ICAgICAgKiBwYWdlL1JlbW90ZUZyYW1lLmg6IEFkZGVkLgorICAgICAgICAoaXNUeXBlKToKKwog
MjAxOC0wNC0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ2ci9WUkRpc3BsYXlDYXBhYmlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
dnIvVlJEaXNwbGF5Q2FwYWJpbGl0aWVzLmgKaW5kZXggYWEzZjNlYTBjZmI5OTVkNWVhMzc4NzVh
NTIyZjA4OGU5ZjZiZTJmZi4uOGY2NGFiNDE0ZGVjZTY4NTg3ZjNkNzlkYWY4MjFlZGU3MjIzNjI4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlDYXBh
YmlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZSRGlzcGxheUNh
cGFiaWxpdGllcy5oCkBAIC0zOSwxMCArMzksMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBWUkRpc3BsYXlDYXBhYmlsaXRpZXMoY2FwYWJpbGl0eUZsYWdzKSk7CiAg
ICAgfQogCi0gICAgYm9vbCBoYXNQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBW
UkRpc3BsYXlDYXBhYmlsaXR5RmxhZzo6UG9zaXRpb247IH0KLSAgICBib29sIGhhc09yaWVudGF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnOjpP
cmllbnRhdGlvbjsgfQotICAgIGJvb2wgaGFzRXh0ZXJuYWxEaXNwbGF5KCkgY29uc3QgeyByZXR1
cm4gbV9mbGFncyAmIFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnOjpFeHRlcm5hbERpc3BsYXk7IH0K
LSAgICBib29sIGNhblByZXNlbnQoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgVlJEaXNwbGF5
Q2FwYWJpbGl0eUZsYWc6OlByZXNlbnQ7IH0KKyAgICBib29sIGhhc1Bvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9mbGFncyAmIFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnUG9zaXRpb247IH0KKyAg
ICBib29sIGhhc09yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIFZSRGlzcGxh
eUNhcGFiaWxpdHlGbGFnT3JpZW50YXRpb247IH0KKyAgICBib29sIGhhc0V4dGVybmFsRGlzcGxh
eSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBWUkRpc3BsYXlDYXBhYmlsaXR5RmxhZ0V4dGVy
bmFsRGlzcGxheTsgfQorICAgIGJvb2wgY2FuUHJlc2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxh
Z3MgJiBWUkRpc3BsYXlDYXBhYmlsaXR5RmxhZ1ByZXNlbnQ7IH0KICAgICB1bnNpZ25lZCBtYXhM
YXllcigpIGNvbnN0IHsgcmV0dXJuIGNhblByZXNlbnQoKSA/IDEgOiAwOyB9CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IGZmOTQyYjM2YTQ0ZjMzZmRkOTk4NWU2M2RmOGU5NTg5ZGFjYTgy
ZWQuLjI1ZDMyZWVmN2E1NmI2NDg5MzRjNzdmNWEzMmJmZTMzOWM0ZmM5OWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0xMzEwLDYgKzEzMTAsOCBAQCBtYXRobWwvTWF0aE1MVG9rZW5FbGVtZW50LmNwcAog
bWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwCiBtYXRobWwvTWF0aE1MVW5rbm93bkVs
ZW1lbnQuY3BwCiAKK3BhZ2UvQWJzdHJhY3RET01XaW5kb3cuY3BwCitwYWdlL0Fic3RyYWN0RnJh
bWUuY3BwCiBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcAogcGFnZS9CYXJQcm9wLmNwcAog
cGFnZS9CYXNlNjRVdGlsaXRpZXMuY3BwCkBAIC0xMzY5LDYgKzEzNzEsOCBAQCBwYWdlL1BlcmZv
cm1hbmNlVGltaW5nLmNwcAogcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3BwCiBwYWdlL1Bv
aW50ZXJMb2NrQ29udHJvbGxlci5jcHAKIHBhZ2UvUHJpbnRDb250ZXh0LmNwcAorcGFnZS9SZW1v
dGVET01XaW5kb3cuY3BwCitwYWdlL1JlbW90ZUZyYW1lLmNwcAogcGFnZS9SZXNvdXJjZVVzYWdl
RGF0YS5jcHAKIHBhZ2UvUmVzb3VyY2VVc2FnZU92ZXJsYXkuY3BwCiBwYWdlL1Jlc291cmNlVXNh
Z2VUaHJlYWQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMmFlMGM4YTIyZDUyNTlmMGFkMjE4NjA4MTQ5MDFiYmI4NmNlODYz
ZC4uYzlkNGVkODg4ZmJjMGM4ZDA4YzgyMGFkN2FiMGMyNjYxN2U3MjIxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIwMSw2
ICsxMjAxLDEyIEBACiAJCTQ2ODM0NEUwMUVEREZBQUEwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0REUx
RURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OUYxQUYxMjY3QkFFMTAwRThEMzgwIC8qIEZp
bGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkw
MDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVu
dFRhcmdldEN1c3RvbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOEEy
MDdENjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZCOTUxOTYyMDdENjMzQTAwQTdEMkRE
IC8qIEFic3RyYWN0RnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2Qjk1MThGMjA3RDYzMkIwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZCOTUxOTcy
MDdENjM0MDAwQTdEMkREIC8qIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkwMjA3RDYzMkMwMEE3RDJE
RCAvKiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZCOTUxOTgyMDdENjM0NzAwQTdEMkREIC8qIEdsb2Jh
bEZyYW1lSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZCOTUxOTEyMDdENjMyRDAwQTdEMkREIC8qIEdsb2JhbEZyYW1lSWRlbnRpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2
Qjk1MTk5MjA3RDYzNEQwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThFMjA3RDYzMkEwMEE3RDJE
RCAvKiBSZW1vdGVET01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTky
MjA3RDYzMkUwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5NkNCMUU3MjA1RjcwMDU5NzkzNyAvKiBD
UFVNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5NkNDMUU3MjA1RkMwMDU5
NzkzNyAvKiBDUFVNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCAq
LzsgfTsKIAkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJCRTI5
MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtNzQzNCw2ICs3NDQwLDE2IEBACiAJCTQ2ODM0NERFMUVEREZB
NUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01SZWN0TGlzdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAg
LyogRmlsZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVN
ZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4Q0RG
MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRvdy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0QyREQgLyogUmVt
b3RlRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI5NTE4RDIwN0Q2MzJB
MDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ2Qjk1MThFMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlRE9NV2luZG93Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Qjk1MThGMjA3RDYzMkIwMEE3RDJERCAvKiBBYnN0cmFj
dEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0RnJhbWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCOTUxOTAyMDdENjMyQzAwQTdEMkRE
IC8qIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR2xvYmFsV2luZG93SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NkI5NTE5MTIwN0Q2MzJEMDBBN0QyREQgLyogR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbEZyYW1lSWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI5NTE5MjIwN0Q2MzJFMDBBN0QyREQg
LyogUmVtb3RlRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
RnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCOTUxOTMyMDdENjMyRjAw
QTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFic3RyYWN0RE9NV2luZG93LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDZCOTUxOTQyMDdENjMzMDAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RGcmFtZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBD
UFVNb25pdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENQVU1vbml0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3
IC8qIENQVU1vbml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q1BVTW9uaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzgzRUZCMUE5
QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHZW9Ob3RpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xODk0NCw2ICsxODk2MCwxMCBAQAogCQkJCTE4QTZDRDZGMEQ4RjIwMjUwMDFEQzNDRSAv
KiBpb3MgKi8sCiAJCQkJOTNDMDlBODIwQjA2NEYwNTAwNUFCRDREIC8qIG1hYyAqLywKIAkJCQkx
QUY2MkVFMTE0REEyMkE3MDA0MTU1NkMgLyogc2Nyb2xsaW5nICovLAorCQkJCTQ2Qjk1MTkzMjA3
RDYzMkYwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5jcHAgKi8sCisJCQkJNDZCOTUxOEEy
MDdENjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi8sCisJCQkJNDZCOTUxOTQy
MDdENjMzMDAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuY3BwICovLAorCQkJCTQ2Qjk1MThGMjA3
RDYzMkIwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggKi8sCiAJCQkJNzI0RUU1NEUxREM3RjI1
QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLywKIAkJCQk3MjRFRTU0RjFEQzdGMjVCMDBB
OTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8sCiAJCQkJQkNGNDhDRTYx
MzcwRDExNDAwNEU4N0Q2IC8qIEFkanVzdFZpZXdTaXplT3JOb3QuaCAqLywKQEAgLTE5MDI1LDcg
KzE5MDQ1LDkgQEAKIAkJCQk2NUNCRkVGNzA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNw
cCAqLywKIAkJCQk2NUNCRkVGODA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmggKi8sCiAJ
CQkJNTc0RDQyNzkxRDU5NEZGNjAwMkNGNTBFIC8qIEdsb2JhbENyeXB0by5pZGwgKi8sCisJCQkJ
NDZCOTUxOTEyMDdENjMyRDAwQTdEMkREIC8qIEdsb2JhbEZyYW1lSWRlbnRpZmllci5oICovLAog
CQkJCTdDOTg5MjQ1MUY1QTA3NjUwMDkxREM3MCAvKiBHbG9iYWxQZXJmb3JtYW5jZS5pZGwgKi8s
CisJCQkJNDZCOTUxOTAyMDdENjMyQzAwQTdEMkREIC8qIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIu
aCAqLywKIAkJCQlCQzk0RDE1MDBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5jcHAgKi8sCiAJ
CQkJQkM5NEQxNTEwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuaCAqLywKIAkJCQlCQzk0RDE1
MjBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5pZGwgKi8sCkBAIC0xOTExOCw2ICsxOTE0MCwx
MCBAQAogCQkJCTM3NzJCMDk1MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZl
ci5oICovLAogCQkJCUI3NzZENDNDMTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQuY3Bw
ICovLAogCQkJCUI3NzZENDNBMTEwNDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAqLywK
KwkJCQk0NkI5NTE4RDIwN0Q2MzJBMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLywK
KwkJCQk0NkI5NTE4RTIwN0Q2MzJBMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggKi8sCisJ
CQkJNDZCOTUxOEMyMDdENjMyOTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmNwcCAqLywKKwkJCQk0
NkI5NTE5MjIwN0Q2MzJFMDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCAqLywKIAkJCQlBNTA3MUU4
QTFDNTZGQUZBMDA5OTUxQkUgLyogUmVzb3VyY2VVc2FnZURhdGEuY3BwICovLAogCQkJCUE1MDcx
RTgyMUM1NkQwNzkwMDk5NTFCRSAvKiBSZXNvdXJjZVVzYWdlRGF0YS5oICovLAogCQkJCUFEQkFE
NkVDMUJDREQ5NTAwMDM4MTMyNSAvKiBSZXNvdXJjZVVzYWdlT3ZlcmxheS5jcHAgKi8sCkBAIC0y
NjY3Niw2ICsyNjcwMiw4IEBACiAJCQlmaWxlcyA9ICgKIAkJCQk3Q0QwRTJCODFGODBBNDgyMDAx
NkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJCRjFG
ODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Qjk1
MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDZCOTUxOTYyMDdENjMzQTAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUY0ODIyMzEzMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9h
cmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0
cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMkUwRkJCOUMxRDAwNTEwMjkz
IC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCBpbiBIZWFkZXJzICovLApAQCAtMjc2NjMs
NiArMjc2OTEsOCBAQAogCQkJCTBGQjYyNTJGMThERTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8q
IEdlb05vdGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyQTE0RjREREU2MDAzRTdB
NzAgLyogR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Qjk1MTk4MjA3RDYzNDcw
MEE3RDJERCAvKiBHbG9iYWxGcmFtZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2
Qjk1MTk3MjA3RDYzNDAwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwODZCQkQwRjEzNjAzOUMyMDA4QjE1RDggLyogR2x5cGguaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyQzNEQTZDMEQwMDZDRDYwMEVGNkYyNiAvKiBHbHlwaEJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzVENEFBN0ExMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmlj
c01hcC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTQyOSw2ICsyOTQ1OSw4IEBACiAJCQkJQTU3OEY0
M0YxREUwQjYzMDAwM0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNERkMzNjA2MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVu
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOEFDQTg5MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1v
dGVDb21tYW5kTGlzdGVuZXJNYWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Qjk1MTk5MjA3RDYz
NEQwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Qjk1
MTlBMjA3RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RDA2QzBEOEYwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1hdENvbW1hbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzMzA5RTA1MDk5RTY0OTIwMDU2RTU4MSAvKiBSZW1vdmVOb2RlQ29tbWFu
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMDcwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92
ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCA0NjY4MGFiNDhkZDhkOGEwNjdlNzBh
MzE0MGE4YTVjNjUzM2RmMTQxLi41MzM5ODI3NTE0ZWI0YTJhZGE4YzhhZjY1OWRhMWRhOTEyZTk4
YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzEsNyAr
MjMxLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdGUpCiAgICAg
UmVmUHRyPEZyYW1lPiBmcmFtZSB7IG1fZG9jdW1lbnRMb2FkZXIuZnJhbWUoKSB9OwogICAgIFN0
cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCB7IG1fYmxvY2tpbmdDb250ZW50RmlsdGVy
LT51bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCgpIH07CiAgICAgaWYgKCF1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUpIHsKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2Y8VGhyZWFkU2FmZVJlZkNvdW50ZWQ8RnJhbWU+LCBGcmFtZT46OnZh
bHVlLCAiRnJhbWUgbXVzdCBiZSBUaHJlYWRTYWZlUmVmQ291bnRlZC4iKTsKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Y8VGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWJzdHJhY3RG
cmFtZT4sIEZyYW1lPjo6dmFsdWUsICJGcmFtZSBtdXN0IGJlIFRocmVhZFNhZmVSZWZDb3VudGVk
LiIpOwogICAgICAgICB1bmJsb2NrSGFuZGxlci53cmFwV2l0aERlY2lzaW9uSGFuZGxlcihbZnJh
bWUgPSBXVEZNb3ZlKGZyYW1lKSwgc2NyaXB0ID0gdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQu
aXNvbGF0ZWRDb3B5KCldKGJvb2wgdW5ibG9ja2VkKSB7CiAgICAgICAgICAgICBpZiAoIXVuYmxv
Y2tlZCkKICAgICAgICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChzY3Jp
cHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdERPTVdpbmRvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RE9NV2luZG93LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iYTc0NTE5YzFlZTI3ZGI3NTc3YzNiNjczMDQ4ZDZmZjU2YzQwM2FhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdERPTVdpbmRvdy5jcHAKQEAgLTAsMCAr
MSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBYnN0
cmFjdERPTVdpbmRvdy5oIgorCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworSGFzaE1hcDxHbG9iYWxXaW5kb3dJZGVudGlmaWVyLCBBYnN0
cmFjdERPTVdpbmRvdyo+JiBBYnN0cmFjdERPTVdpbmRvdzo6YWxsV2luZG93cygpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxHbG9iYWxXaW5kb3dJZGVudGlmaWVyLCBBYnN0cmFjdERPTVdpbmRvdyo+PiBtYXA7CisgICAg
cmV0dXJuIG1hcDsKK30KKworQWJzdHJhY3RET01XaW5kb3c6OkFic3RyYWN0RE9NV2luZG93KEds
b2JhbFdpbmRvd0lkZW50aWZpZXImJiBpZGVudGlmaWVyKQorICAgIDogbV9pZGVudGlmaWVyKFdU
Rk1vdmUoaWRlbnRpZmllcikpCit7CisgICAgQVNTRVJUKCFhbGxXaW5kb3dzKCkuY29udGFpbnMo
aWRlbnRpZmllcikpOworICAgIGFsbFdpbmRvd3MoKS5hZGQoaWRlbnRpZmllciwgdGhpcyk7Cit9
CisKK0Fic3RyYWN0RE9NV2luZG93Ojp+QWJzdHJhY3RET01XaW5kb3coKQoreworICAgIEFTU0VS
VChhbGxXaW5kb3dzKCkuY29udGFpbnMoaWRlbnRpZmllcigpKSk7CisgICAgYWxsV2luZG93cygp
LnJlbW92ZShpZGVudGlmaWVyKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RE9NV2luZG93LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Fic3RyYWN0RE9NV2luZG93LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE1ZGViZDUzMmFk
OWEyMmU4ODRiYjY2YmM5ZGZhYjI4ZGRiYmNhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQWJzdHJhY3RET01XaW5kb3cuaApAQCAtMCwwICsxLDY2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJCYXNlNjRVdGlsaXRpZXMuaCIKKyNpbmNs
dWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWJzdHJhY3RGcmFtZTsKKworLy8gRklYTUU6
IFJlbmFtZSBET01XaW5kb3cgdG8gTG9jYWxXaW5kb3cgYW5kIEFic3RyYWN0RE9NV2luZG93IHRv
IERPTVdpbmRvdy4KK2NsYXNzIEFic3RyYWN0RE9NV2luZG93IDogcHVibGljIFJlZkNvdW50ZWQ8
QWJzdHJhY3RET01XaW5kb3c+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+QWJzdHJhY3RET01XaW5kb3coKTsKKworICAgIHN0YXRpYyBI
YXNoTWFwPEdsb2JhbFdpbmRvd0lkZW50aWZpZXIsIEFic3RyYWN0RE9NV2luZG93Kj4mIGFsbFdp
bmRvd3MoKTsKKworICAgIGNvbnN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXImIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIHZpcnR1YWwgQWJzdHJhY3RG
cmFtZSogZnJhbWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhbERPTVdp
bmRvdygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW1vdGVET01XaW5kb3coKSBj
b25zdCA9IDA7CisKKyAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CisgICAgdXNpbmcgUmVmQ291
bnRlZDo6ZGVyZWY7CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBBYnN0cmFjdERPTVdpbmRv
dyhHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYpOworCisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2Ug
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBET01XaW5kb3dFdmVu
dFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwg
eyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsg
fQorCitwcml2YXRlOgorICAgIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIgbV9pZGVudGlmaWVyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9BYnN0cmFjdEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFt
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmYwZjZkYTYwYmYyMTNlOWY4MjcyYjJjZDNjY2FjYjEyMjdiODg4
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5j
cHAKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBYnN0cmFjdEZyYW1lLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQWJzdHJh
Y3RGcmFtZTo6QWJzdHJhY3RGcmFtZSgpCit7Cit9CisKK0Fic3RyYWN0RnJhbWU6On5BYnN0cmFj
dEZyYW1lKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fi
c3RyYWN0RnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjExNWViNmNjYmMyMDMzMjUzM2RhYmFhNTYyOTBi
YWYwMWQxYmJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFj
dEZyYW1lLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFic3RyYWN0RE9NV2luZG93
OworY2xhc3MgV2luZG93UHJveHlDb250cm9sbGVyOworCisvLyBGSVhNRTogUmVuYW1lIEZyYW1l
IHRvIExvY2FsRnJhbWUgYW5kIEFic3RyYWN0RnJhbWUgdG8gRnJhbWUuCitjbGFzcyBBYnN0cmFj
dEZyYW1lIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFic3RyYWN0RnJhbWU+IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5BYnN0cmFjdEZyYW1lKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wg
aXNMb2NhbEZyYW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1JlbW90ZUZyYW1l
KCkgY29uc3QgPSAwOworCisgICAgQWJzdHJhY3RET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0IHsg
cmV0dXJuIHZpcnR1YWxXaW5kb3coKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgQWJzdHJhY3RGcmFt
ZSgpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgQWJzdHJhY3RET01XaW5kb3cqIHZpcnR1YWxX
aW5kb3coKSBjb25zdCA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggOTBjM2U4ZTVhNzgzOGRkMGJmOGJjNDBlOWY5ZTdiMWUz
ODRhYzgwMS4uMDIxMGIwOGExODIxZGViMGM4OTA2YzlmZjA4MmE0NmFlMzdlYTdkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNDAxLDcgKzQwMSw4IEBAIHZvaWQgRE9NV2luZG93
OjpzZXRDYW5TaG93TW9kYWxEaWFsb2dPdmVycmlkZShib29sIGFsbG93KQogfQogCiBET01XaW5k
b3c6OkRPTVdpbmRvdyhEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcigmZG9jdW1lbnQpCisgICAgOiBBYnN0cmFjdERPTVdpbmRvdyhHbG9iYWxXaW5k
b3dJZGVudGlmaWVyIHsgUHJvY2Vzczo6aWRlbnRpZmllcigpLCBnZW5lcmF0ZU9iamVjdElkZW50
aWZpZXI8V2luZG93SWRlbnRpZmllclR5cGU+KCkgfSkKKyAgICAsIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyKCZkb2N1bWVudCkKICAgICAsIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcihkb2N1
bWVudC5mcmFtZSgpKQogewogICAgIEFTU0VSVChmcmFtZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5oCmluZGV4IDRjNjZiNzI0ZTI5YWJiYjBhMGIyYmNiNjZkNTczMWNlODRlZDFkN2UuLjQ5OWE1
NThkMmVlMThkNTQ3NWZkMDgyOTQ1ZDY2YzM4ODhiOTk2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaApAQCAtMjYsMTAgKzI2LDExIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWJz
dHJhY3RET01XaW5kb3cuaCIKICNpbmNsdWRlICJCYXNlNjRVdGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0Lmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkltYWdlQml0bWFwLmgiCiAj
aW5jbHVkZSAiU2Nyb2xsVG9PcHRpb25zLmgiCkBAIC04Nyw5ICs4OCw5IEBAIHN0cnVjdCBXaW5k
b3dGZWF0dXJlczsKIGVudW0gU2V0TG9jYXRpb25Mb2NraW5nIHsgTG9ja0hpc3RvcnlCYXNlZE9u
R2VzdHVyZVN0YXRlLCBMb2NrSGlzdG9yeUFuZEJhY2tGb3J3YXJkTGlzdCB9OwogCiAvLyBGSVhN
RTogRE9NV2luZG93IHNob3VsZG4ndCBzdWJjbGFzcyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIg
YW5kIGluc3RlYWQgc2hvdWxkIGdldCB0byBGcmFtZSB2aWEgaXRzIERvY3VtZW50LgorLy8gRklY
TUU6IFJlbmFtZSBET01XaW5kb3cgdG8gTG9jYWxXaW5kb3cgYW5kIEFic3RyYWN0RE9NV2luZG93
IHRvIERPTVdpbmRvdy4KIGNsYXNzIERPTVdpbmRvdyBmaW5hbAotICAgIDogcHVibGljIFJlZkNv
dW50ZWQ8RE9NV2luZG93PgotICAgICwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEK
KyAgICA6IHB1YmxpYyBBYnN0cmFjdERPTVdpbmRvdwogICAgICwgcHVibGljIENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyCiAgICAgLCBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyCiAg
ICAgLCBwdWJsaWMgQmFzZTY0VXRpbGl0aWVzCkBAIC0xOTgsNiArMTk5LDggQEAgcHVibGljOgog
ICAgIERPTVdpbmRvdyogcGFyZW50KCkgY29uc3Q7CiAgICAgRE9NV2luZG93KiB0b3AoKSBjb25z
dDsKIAorICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEZyYW1lRGVzdHJ1
Y3Rpb25PYnNlcnZlcjo6ZnJhbWUoKTsgfQorCiAgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0Owog
CiAgICAgLy8gRE9NIExldmVsIDIgQWJzdHJhY3RWaWV3IEludGVyZmFjZQpAQCAtMjc2LDkgKzI3
OSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKCk7CiAKLSAgICB1c2lu
ZyBSZWZDb3VudGVkOjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7Ci0KICAgICAv
LyBIVE1MIDUga2V5L3ZhbHVlIHN0b3JhZ2UKICAgICBFeGNlcHRpb25PcjxTdG9yYWdlKj4gc2Vz
c2lvblN0b3JhZ2UoKSBjb25zdDsKICAgICBFeGNlcHRpb25PcjxTdG9yYWdlKj4gbG9jYWxTdG9y
YWdlKCkgY29uc3Q7CkBAIC0zMzgsMTggKzMzOCwxNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IERPTVdpbmRvdyhEb2N1bWVudCYpOwogCi0gICAgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBET01XaW5kb3dF
dmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCisgICAgYm9vbCBp
c0xvY2FsRE9NV2luZG93KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wg
aXNSZW1vdGVET01XaW5kb3coKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAg
UGFnZSogcGFnZSgpOwogICAgIGJvb2wgYWxsb3dlZFRvQ2hhbmdlV2luZG93R2VvbWV0cnkoKSBj
b25zdDsKIAogICAgIHZvaWQgZnJhbWVEZXN0cm95ZWQoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxE
ZXRhY2hQYWdlKCkgZmluYWw7CiAKLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBy
ZWYoKTsgfQotICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQot
CiAgICAgc3RhdGljIFJlZlB0cjxGcmFtZT4gY3JlYXRlV2luZG93KGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgV2luZG93RmVhdHVy
ZXMmLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRnJhbWUmIGZpcnN0RnJhbWUsIEZyYW1lJiBv
cGVuZXJGcmFtZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERPTVdpbmRvdyYpPiYgcHJlcGFy
ZURpYWxvZ0Z1bmN0aW9uID0gbnVsbHB0cik7CiAgICAgYm9vbCBpc0luc2VjdXJlU2NyaXB0QWNj
ZXNzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAK
QEAgLTQzMiw1ICs0MzEsNiBAQCBpbmxpbmUgU3RyaW5nIERPTVdpbmRvdzo6ZGVmYXVsdFN0YXR1
cygpIGNvbnN0CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQkVHSU4oV2ViQ29yZTo6RE9NV2luZG93KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25z
dCBXZWJDb3JlOjpBYnN0cmFjdERPTVdpbmRvdyYgd2luZG93KSB7IHJldHVybiB3aW5kb3cuaXNM
b2NhbERPTVdpbmRvdygpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6
OkV2ZW50VGFyZ2V0JiB0YXJnZXQpIHsgcmV0dXJuIHRhcmdldC5ldmVudFRhcmdldEludGVyZmFj
ZSgpID09IFdlYkNvcmU6OkRPTVdpbmRvd0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAyZWUzNzVk
ZDBiMjdmMTlhYWEwMjZlMzQ4N2Q0Y2NkZjczMzMyZTY2Li44MDY3N2M0NWZlNmNkODQ4ODNmZWNk
MzI1ODcwNTIyYzVlN2I0ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtOTM5LDYgKzkzOSwx
NiBAQCB2b2lkIEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwg
Y29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcgogICAgICAgICB2aWV3KCktPnNldENhbkhhdmVT
Y3JvbGxiYXJzKG93bmVyLT5zY3JvbGxpbmdNb2RlKCkgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmKTsK
IH0KIAorRE9NV2luZG93KiBGcmFtZTo6d2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZG9j
dW1lbnQoKSA/IGRvY3VtZW50KCktPmRvbVdpbmRvdygpIDogbnVsbHB0cjsKK30KKworQWJzdHJh
Y3RET01XaW5kb3cqIEZyYW1lOjp2aXJ0dWFsV2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
d2luZG93KCk7Cit9CisKIFN0cmluZyBGcmFtZTo6bGF5ZXJUcmVlQXNUZXh0KExheWVyVHJlZUZs
YWdzIGZsYWdzKSBjb25zdAogewogICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5oCmluZGV4IGIzNWI4ZmQwNzU1ZjYzODMwMzgzOWNmMWM5YmU4ODIyYjg1ZjJhMDAu
LmRlZDk2Zjg5YmEzNTY2MTkwMTc2NWU3ZGEzMGZmMjM2MzVmNjg1ODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmgKQEAgLTI3LDEyICsyNywxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFic3Ry
YWN0RnJhbWUuaCIKICNpbmNsdWRlICJBZGp1c3RWaWV3U2l6ZU9yTm90LmgiCiAjaW5jbHVkZSAi
RnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJVc2VyU2Ny
aXB0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogI2lmIFBM
QVRGT1JNKElPUykKQEAgLTYxLDYgKzYxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDU1NBbmltYXRpb25Db250cm9sbGVyOwogY2xhc3MgQ29sb3I7CitjbGFzcyBET01XaW5kb3c7
CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVkaXRvcjsKIGNsYXNzIEVsZW1lbnQ7CkBAIC0xMTcs
NyArMTE4LDggQEAgZW51bSB7CiB9OwogdHlwZWRlZiB1bnNpZ25lZCBMYXllclRyZWVGbGFnczsK
IAotY2xhc3MgRnJhbWUgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RnJhbWU+
IHsKKy8vIEZJWE1FOiBSZW5hbWUgRnJhbWUgdG8gTG9jYWxGcmFtZSBhbmQgQWJzdHJhY3RGcmFt
ZSB0byBGcmFtZS4KK2NsYXNzIEZyYW1lIGZpbmFsIDogcHVibGljIEFic3RyYWN0RnJhbWUgewog
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhbWU+IGNyZWF0ZShQYWdl
KiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgRnJhbWVMb2FkZXJDbGllbnQqKTsKIApAQCAtMTM0
LDYgKzEzNiw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5GcmFtZSgpOwogCisg
ICAgRE9NV2luZG93KiB3aW5kb3coKSBjb25zdDsKKwogICAgIHZvaWQgYWRkRGVzdHJ1Y3Rpb25P
YnNlcnZlcihGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIqKTsKICAgICB2b2lkIHJlbW92ZURlc3Ry
dWN0aW9uT2JzZXJ2ZXIoRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKik7CiAKQEAgLTI5MSw2ICsy
OTUsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHJvcENoaWxkcmVuKCk7CiAKKyAgICBib29s
IGlzTG9jYWxGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlz
UmVtb3RlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgQWJzdHJh
Y3RET01XaW5kb3cqIHZpcnR1YWxXaW5kb3coKSBjb25zdCBmaW5hbDsKKwogICAgIEhhc2hTZXQ8
RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKj4gbV9kZXN0cnVjdGlvbk9ic2VydmVyczsKIAogICAg
IEZyYW1lJiBtX21haW5GcmFtZTsKQEAgLTM5MCwzICszOTksNyBAQCBpbmxpbmUgRnJhbWUmIEZy
YW1lOjptYWluRnJhbWUoKSBjb25zdAogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6RnJhbWUpCisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkFic3RyYWN0RnJhbWUmIGZyYW1lKSB7IHJldHVybiBm
cmFtZS5pc0xvY2FsRnJhbWUoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI2
MTE3ZDUxMWYyMzNlZGIzZjNlNjBkYWQ0MzcxYzVhYzk4ZmJjYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKQEAgLTAsMCArMSw2
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdsb2JhbEZyYW1lSWRlbnRpZmll
ciB7CisgICAgdWludDY0X3QgcGFnZUlEOworICAgIHVpbnQ2NF90IGZyYW1lSUQ7CisKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8R2xvYmFsRnJhbWVJ
ZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KK3ZvaWQgR2xvYmFsRnJhbWVJZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHBhZ2VJRCA8PCBmcmFtZUlEOworfQorCit0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxHbG9iYWxGcmFtZUlkZW50aWZpZXI+IEds
b2JhbEZyYW1lSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIGRlY29kZXIgPj4gcGFnZUlEOworICAg
IGlmICghcGFnZUlEKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKKyAgICBkZWNvZGVyID4+IGZyYW1lSUQ7CisgICAg
aWYgKCFmcmFtZUlEKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJu
IHsgeyBXVEZNb3ZlKCpwYWdlSUQpLCBXVEZNb3ZlKCpmcmFtZUlEKSB9IH07Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFs
V2luZG93SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxXaW5kb3dJZGVu
dGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdlMTlhOTRhOWIwYzNkZjQyMTAwNDViZWM1ZWI0ZDFlY2M3
ZTA4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsV2luZG93
SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJQcm9jZXNzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNp
bmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2VudW0gV2luZG93SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgV2luZG93SWRlbnRpZmllciA9
IE9iamVjdElkZW50aWZpZXI8V2luZG93SWRlbnRpZmllclR5cGU+OworCitzdHJ1Y3QgR2xvYmFs
V2luZG93SWRlbnRpZmllciB7CisgICAgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZp
ZXI7CisgICAgV2luZG93SWRlbnRpZmllciB3aW5kb3dJZGVudGlmaWVyOworCisgICAgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEdsb2JhbFdpbmRvd0lkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7Cit9
OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXIm
IGEsIGNvbnN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXImIGIpCit7CisgICAgcmV0dXJuIGEucHJv
Y2Vzc0lkZW50aWZpZXIgPT0gYi5wcm9jZXNzSWRlbnRpZmllciAmJiAgYS53aW5kb3dJZGVudGlm
aWVyID09IGIud2luZG93SWRlbnRpZmllcjsKK30KKworaW5saW5lIHVuc2lnbmVkIEdsb2JhbFdp
bmRvd0lkZW50aWZpZXI6Omhhc2goKSBjb25zdAoreworICAgIHVuc2lnbmVkIGhhc2hlc1syXTsK
KyAgICBoYXNoZXNbMF0gPSBXVEY6OmludEhhc2gocHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQo
KSk7CisgICAgaGFzaGVzWzFdID0gV1RGOjppbnRIYXNoKHdpbmRvd0lkZW50aWZpZXIudG9VSW50
NjQoKSk7CisKKyAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KGhhc2hlcywgc2l6
ZW9mKGhhc2hlcykpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBHbG9iYWxX
aW5kb3dJZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBl
bmNvZGVyIDw8IHByb2Nlc3NJZGVudGlmaWVyIDw8IHdpbmRvd0lkZW50aWZpZXI7Cit9CisKK3Rl
bXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPEdsb2JhbFdpbmRvd0lkZW50aWZp
ZXI+IEdsb2JhbFdpbmRvd0lkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVyOwor
ICAgIGRlY29kZXIgPj4gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgaWYgKCFwcm9jZXNzSWRlbnRp
ZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8
V2luZG93SWRlbnRpZmllcj4gd2luZG93SWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHdpbmRv
d0lkZW50aWZpZXI7CisgICAgaWYgKCF3aW5kb3dJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpwcm9jZXNzSWRlbnRpZmll
ciksIFdURk1vdmUoKndpbmRvd0lkZW50aWZpZXIpIH0gfTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IEdsb2JhbFdpbmRvd0lkZW50aWZp
ZXJIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJDb3JlOjpHbG9iYWxX
aW5kb3dJZGVudGlmaWVyJiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0aWMg
Ym9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiBhLCBjb25z
dCBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiBiKSB7IHJldHVybiBhID09IGI7IH0K
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRy
dWU7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6Okdsb2JhbFdp
bmRvd0lkZW50aWZpZXI+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6R2xvYmFsV2luZG93
SWRlbnRpZmllcj4geworICAgIHN0YXRpYyBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVy
IGVtcHR5VmFsdWUoKSB7IHJldHVybiB7IH07IH0KKworICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVj
dERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiBzbG90KSB7IHNs
b3Qud2luZG93SWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OldpbmRv
d0lkZW50aWZpZXJUeXBlPihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOyB9
CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6R2xvYmFsV2lu
ZG93SWRlbnRpZmllciYgc2xvdCkgeyByZXR1cm4gc2xvdC53aW5kb3dJZGVudGlmaWVyLnRvVUlu
dDY0KCkgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOyB9Cit9OworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlm
aWVyPiB7CisgICAgdHlwZWRlZiBHbG9iYWxXaW5kb3dJZGVudGlmaWVySGFzaCBIYXNoOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
bW90ZURPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTgwMzQyNDM3OGZiZjFkNGJjZmIwNmU1YTFkMDkxNDgzYjM2NThjOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmNw
cApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZW1vdGVET01XaW5kb3cuaCIKKworI2luY2x1ZGUgIlJlbW90ZUZyYW1lLmgiCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVt
b3RlRE9NV2luZG93OjpSZW1vdGVET01XaW5kb3coUmVmPFJlbW90ZUZyYW1lPiYmIGZyYW1lLCBH
bG9iYWxXaW5kb3dJZGVudGlmaWVyJiYgaWRlbnRpZmllcikKKyAgICA6IEFic3RyYWN0RE9NV2lu
ZG93KFdURk1vdmUoaWRlbnRpZmllcikpCisgICAgLCBtX2ZyYW1lKFdURk1vdmUoZnJhbWUpKQor
eworICAgIG1fZnJhbWUtPnNldFdpbmRvdyh0aGlzKTsKK30KKworUmVtb3RlRE9NV2luZG93Ojp+
UmVtb3RlRE9NV2luZG93KCkKK3sKKyAgICBtX2ZyYW1lLT5zZXRXaW5kb3cobnVsbHB0cik7Cit9
CisKK1JlbW90ZURPTVdpbmRvdyogUmVtb3RlRE9NV2luZG93OjpzZWxmKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjb25z
dF9jYXN0PFJlbW90ZURPTVdpbmRvdyo+KHRoaXMpOworfQorCitMb2NhdGlvbiogUmVtb3RlRE9N
V2luZG93Ojpsb2NhdGlvbigpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudGVkIHRo
aXMuCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlRE9NV2luZG93OjpjbG9z
ZShEb2N1bWVudCYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudGVkIHRoaXMuCit9CisKK2Jv
b2wgUmVtb3RlRE9NV2luZG93OjpjbG9zZWQoKSBjb25zdAoreworICAgIHJldHVybiAhbV9mcmFt
ZTsKK30KKwordm9pZCBSZW1vdGVET01XaW5kb3c6OmZvY3VzKERPTVdpbmRvdyYgaW5jdW1iZW50
V2luZG93KQoreworICAgIFVOVVNFRF9QQVJBTShpbmN1bWJlbnRXaW5kb3cpOworICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnRlZCB0aGlzLgorfQorCit2b2lkIFJlbW90ZURPTVdpbmRvdzo6Ymx1cigp
Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudGVkIHRoaXMuCit9CisKK3Vuc2lnbmVkIFJlbW90
ZURPTVdpbmRvdzo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50ZWQg
dGhpcy4KKyAgICByZXR1cm4gMTsKK30KKworUmVtb3RlRE9NV2luZG93KiBSZW1vdGVET01XaW5k
b3c6OnRvcCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnRlZCB0aGlzLgorICAgIHJldHVybiBjb25z
dF9jYXN0PFJlbW90ZURPTVdpbmRvdyo+KHRoaXMpOworfQorCitET01XaW5kb3cqIFJlbW90ZURP
TVdpbmRvdzo6b3BlbmVyKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50ZWQgdGhp
cy4KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVtb3RlRE9NV2luZG93KiBSZW1vdGVET01X
aW5kb3c6OnBhcmVudCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnRlZCB0aGlzLgorICAgIHJldHVy
biBjb25zdF9jYXN0PFJlbW90ZURPTVdpbmRvdyo+KHRoaXMpOworfQorCitFeGNlcHRpb25Pcjx2
b2lkPiBSZW1vdGVET01XaW5kb3c6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiwgRE9NV2lu
ZG93JiBpbmN1bWJlbnRXaW5kb3csIEpTQzo6SlNWYWx1ZSBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IHRhcmdldE9yaWdpbiwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmKQorewor
ICAgIFVOVVNFRF9QQVJBTShpbmN1bWJlbnRXaW5kb3cpOworICAgIFVOVVNFRF9QQVJBTShtZXNz
YWdlKTsKKyAgICBVTlVTRURfUEFSQU0odGFyZ2V0T3JpZ2luKTsKKworICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnRlZCB0aGlzLgorICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJv
ciB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVE
T01XaW5kb3cuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTJmMWZkMTY3ODYyZWEyY2Q4M2Y5OGVkODkxZWM2M2Vj
MjRiZWJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01X
aW5kb3cuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJBYnN0cmFjdERPTVdpbmRvdy5oIgorI2luY2x1ZGUgIlJlbW90ZUZyYW1lLmgiCisj
aW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNT
dGF0ZTsKK2NsYXNzIEpTT2JqZWN0OworY2xhc3MgSlNWYWx1ZTsKK3RlbXBsYXRlPHR5cGVuYW1l
PiBjbGFzcyBTdHJvbmc7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NV2lu
ZG93OworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBMb2NhdGlvbjsKKworY2xhc3MgUmVtb3RlRE9N
V2luZG93IGZpbmFsIDogcHVibGljIEFic3RyYWN0RE9NV2luZG93IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFJlbW90ZURPTVdpbmRvdz4gY3JlYXRlKFJlZjxSZW1vdGVGcmFtZT4mJiBmcmFt
ZSwgR2xvYmFsV2luZG93SWRlbnRpZmllciYmIGlkZW50aWZpZXIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVET01XaW5kb3coV1RGTW92ZShmcmFtZSksIFdURk1v
dmUoaWRlbnRpZmllcikpKTsKKyAgICB9CisKKyAgICB+UmVtb3RlRE9NV2luZG93KCkgZmluYWw7
CisKKyAgICBSZW1vdGVGcmFtZSogZnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZyYW1l
LmdldCgpOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIC8vIERPTSBBUEku
CisgICAgUmVtb3RlRE9NV2luZG93KiBzZWxmKCkgY29uc3Q7CisgICAgTG9jYXRpb24qIGxvY2F0
aW9uKCkgY29uc3Q7CisgICAgdm9pZCBjbG9zZShEb2N1bWVudCYpOworICAgIGJvb2wgY2xvc2Vk
KCkgY29uc3Q7CisgICAgdm9pZCBmb2N1cyhET01XaW5kb3cmIGluY3VtYmVudFdpbmRvdyk7Cisg
ICAgdm9pZCBibHVyKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAgUmVtb3Rl
RE9NV2luZG93KiB0b3AoKSBjb25zdDsKKyAgICBET01XaW5kb3cqIG9wZW5lcigpIGNvbnN0Owor
ICAgIFJlbW90ZURPTVdpbmRvdyogcGFyZW50KCkgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gcG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBET01XaW5kb3cmIGluY3VtYmVudFdpbmRv
dywgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBWZWN0
b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYpOworCitwcml2YXRlOgorICAgIFdFQkNP
UkVfRVhQT1JUIFJlbW90ZURPTVdpbmRvdyhSZWY8UmVtb3RlRnJhbWU+JiYsIEdsb2JhbFdpbmRv
d0lkZW50aWZpZXImJik7CisKKyAgICBib29sIGlzUmVtb3RlRE9NV2luZG93KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNMb2NhbERPTVdpbmRvdygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBSZWZQdHI8UmVtb3RlRnJhbWU+IG1fZnJhbWU7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpBYnN0cmFjdERPTVdpbmRvdyYgd2luZG93KSB7IHJldHVybiB3aW5kb3cu
aXNSZW1vdGVET01XaW5kb3coKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDEwYzM3YzVjYzEyMDliYmIz
ZGQ4MWJhMjM0MWFhZDQyZGJjYmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9SZW1vdGVGcmFtZS5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVGcmFtZS5oIgorCisjaW5jbHVkZSAiUmVt
b3RlRE9NV2luZG93LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVtb3RlRnJhbWU6OlJl
bW90ZUZyYW1lKEdsb2JhbEZyYW1lSWRlbnRpZmllciYmIGZyYW1lSWRlbnRpZmllcikKKyAgICA6
IG1faWRlbnRpZmllcihXVEZNb3ZlKGZyYW1lSWRlbnRpZmllcikpCit7Cit9CisKK1JlbW90ZUZy
YW1lOjp+UmVtb3RlRnJhbWUoKQoreworfQorCitBYnN0cmFjdERPTVdpbmRvdyogUmVtb3RlRnJh
bWU6OnZpcnR1YWxXaW5kb3coKSBjb25zdAoreworICAgIHJldHVybiB3aW5kb3coKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9S
ZW1vdGVGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjM2ZmMzZmIxOTcxYjU2MzI3ZTE1MzUyZDFhMThlOWFlNDM5MGQ5MjIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmgKQEAgLTAsMCArMSw2NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWJzdHJhY3RGcmFtZS5o
IgorI2luY2x1ZGUgIkdsb2JhbEZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KKyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgUmVtb3RlRE9NV2luZG93OworCitjbGFzcyBSZW1vdGVGcmFtZSBmaW5hbCA6IHB1Ymxp
YyBBYnN0cmFjdEZyYW1lIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUZyYW1lPiBj
cmVhdGUoR2xvYmFsRnJhbWVJZGVudGlmaWVyJiYgZnJhbWVJZGVudGlmaWVyKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCogbmV3IFJlbW90ZUZyYW1lKFdURk1vdmUoZnJhbWVJZGVu
dGlmaWVyKSkpOworICAgIH0KKyAgICB+UmVtb3RlRnJhbWUoKTsKKworICAgIGNvbnN0IEdsb2Jh
bEZyYW1lSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
cjsgfQorCisgICAgdm9pZCBzZXRXaW5kb3coUmVtb3RlRE9NV2luZG93KiB3aW5kb3cpIHsgbV93
aW5kb3cgPSB3aW5kb3c7IH0KKyAgICBSZW1vdGVET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0IHsg
cmV0dXJuIG1fd2luZG93OyB9CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgUmVtb3RlRnJhbWUoR2xvYmFsRnJhbWVJZGVudGlmaWVyJiYpOworCisgICAgYm9vbCBpc1Jl
bW90ZUZyYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNMb2Nh
bEZyYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIEFic3RyYWN0RE9N
V2luZG93KiB2aXJ0dWFsV2luZG93KCkgY29uc3QgZmluYWw7CisKKyAgICBHbG9iYWxGcmFtZUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFJlbW90ZURPTVdpbmRvdyogbV93aW5kb3cgeyBu
dWxscHRyIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6UmVtb3RlRnJhbWUpCisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6OkFic3RyYWN0RnJhbWUmIGZyYW1lKSB7IHJldHVybiBmcmFtZS5p
c1JlbW90ZUZyYW1lKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL1ZSUGxhdGZvcm1EaXNwbGF5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9WUlBsYXRmb3JtRGlzcGxheS5oCmluZGV4IDk5OGIzN2Rj
ZjZhMzU1MGRiZjQxM2UxZjczNjY3MmUyMTkzMzI0OGIuLjc2MjMyNWNiYzQ0YWYyZjExN2YwODZj
YjkwMWJhYzBjZDA5ZTcyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Zy
L1ZSUGxhdGZvcm1EaXNwbGF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvVlJQ
bGF0Zm9ybURpc3BsYXkuaApAQCAtMzEsMTEgKzMxLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHR5cGVkZWYgdW5zaWduZWQgVlJEaXNwbGF5Q2FwYWJpbGl0eUZsYWdzOwogCiBlbnVtIFZSRGlz
cGxheUNhcGFiaWxpdHlGbGFnIHsKLSAgICBOb25lID0gMCwKLSAgICBQb3NpdGlvbiA9IDEgPDwg
MSwKLSAgICBPcmllbnRhdGlvbiA9IDEgPDwgMiwKLSAgICBFeHRlcm5hbERpc3BsYXkgPSAxIDw8
IDMsCi0gICAgUHJlc2VudCA9IDEgPDwgNAorICAgIFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnTm9u
ZSA9IDAsCisgICAgVlJEaXNwbGF5Q2FwYWJpbGl0eUZsYWdQb3NpdGlvbiA9IDEgPDwgMSwKKyAg
ICBWUkRpc3BsYXlDYXBhYmlsaXR5RmxhZ09yaWVudGF0aW9uID0gMSA8PCAyLAorICAgIFZSRGlz
cGxheUNhcGFiaWxpdHlGbGFnRXh0ZXJuYWxEaXNwbGF5ID0gMSA8PCAzLAorICAgIFZSRGlzcGxh
eUNhcGFiaWxpdHlGbGFnUHJlc2VudCA9IDEgPDwgNAogfTsKIAogLyogVGhlIHB1cnBvc2Ugb2Yg
dGhpcyBjbGFzcyBpcyB0byBlbmNhcHN1bGF0ZSBhbGwgdGhlIGluZm8gYWJvdXQgdGhlIGRpc3Bs
YXkgaW4gYSBzaW5nbGUgY2xhc3MvZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZSLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5jcHAKaW5kZXgg
ZmFkYjZmYzEzNzM2MjA3MTU2OTA3NzI0YzBkOGNlODdkYzZkNWIzNS4uZGQ2Mjg4ZTBlZGJlN2Fj
ODcxMzk2NGQ4Y2E3MjI5YzA4Y2I3MGViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZSLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuY3BwCkBA
IC00OCw3ICs0OCw3IEBAIFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSOjpWUlBsYXRmb3JtRGlzcGxh
eU9wZW5WUih2cjo6SVZSU3lzdGVtKiBzeXN0ZW0sIHZyOjpJVlJDCiAgICAgbV9kaXNwbGF5SW5m
by5zZXREaXNwbGF5TmFtZShzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwogICAgIG1fZGlzcGxh
eUluZm8uc2V0SXNNb3VudGVkKGZhbHNlKTsKICAgICAvLyBGSVhNRTogV2UncmUgYXNzdW1pbmcg
YW4gSFRDIFZpdmUgSE1EIGhlcmUuIEdldCB0aGlzIGluZm8gZnJvbSBPcGVuVlI/LgotICAgIG1f
ZGlzcGxheUluZm8uc2V0Q2FwYWJpbGl0eUZsYWdzKFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnOjpO
b25lIHwgVlJEaXNwbGF5Q2FwYWJpbGl0eUZsYWc6OlBvc2l0aW9uIHwgVlJEaXNwbGF5Q2FwYWJp
bGl0eUZsYWc6Ok9yaWVudGF0aW9uIHwgVlJEaXNwbGF5Q2FwYWJpbGl0eUZsYWc6OkV4dGVybmFs
RGlzcGxheSB8IFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnOjpQcmVzZW50KTsKKyAgICBtX2Rpc3Bs
YXlJbmZvLnNldENhcGFiaWxpdHlGbGFncyhWUkRpc3BsYXlDYXBhYmlsaXR5RmxhZ05vbmUgfCBW
UkRpc3BsYXlDYXBhYmlsaXR5RmxhZ1Bvc2l0aW9uIHwgVlJEaXNwbGF5Q2FwYWJpbGl0eUZsYWdP
cmllbnRhdGlvbiB8IFZSRGlzcGxheUNhcGFiaWxpdHlGbGFnRXh0ZXJuYWxEaXNwbGF5IHwgVlJE
aXNwbGF5Q2FwYWJpbGl0eUZsYWdQcmVzZW50KTsKIAogICAgIG1fY29tcG9zaXRvci0+U2V0VHJh
Y2tpbmdTcGFjZSh2cjo6VHJhY2tpbmdVbml2ZXJzZVNlYXRlZCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337655</attachid>
            <date>2018-04-10 16:45:10 -0700</date>
            <delta_ts>2018-04-11 13:26:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184467-20180410164509.patch</filename>
            <type>text/plain</type>
            <size>48688</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTVjYWNjNWE2YTg0ZjQw
MGEyNDI4NTkzODI4NTYwNTFkY2NmZWFlYi4uNTk1N2U0NzVlNjFlOGRmYzdiMGE1MTIwNjNkOGQ4
MmZhZDI2OWQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE4LTA0LTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIHJlbW90ZSB2
YXJpYW50cyBvZiBGcmFtZSAvIERPTVdpbmRvdyBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ0NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzM5MDExMjY3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEludHJvZHVjZSByZW1vdGUgdmFyaWFudHMgb2YgRnJhbWUgLyBET01XaW5kb3cgY2xh
c3NlcywgZm9yIHdoZW4gdGhlc2UgZnJhbWVzIC8gd2luZG93cworICAgICAgICBhcmUgaG9zdGVk
IG9uIGFub3RoZXIgV2ViUHJvY2Vzcy4gVGhvc2Ugd2lsbCBiZSB1c2VkIGluIGEgZm9sbG93LXVw
IHBhdGNoLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZSk6CisgICAgICAg
ICogcGFnZS9BYnN0cmFjdERPTVdpbmRvdy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWJzdHJhY3RET01XaW5kb3c6OkFic3RyYWN0RE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkFic3RyYWN0RE9NV2luZG93Ojp+QWJzdHJhY3RET01XaW5kb3cpOgorICAgICAgICAqIHBhZ2Uv
QWJzdHJhY3RET01XaW5kb3cuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdERP
TVdpbmRvdzo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICogcGFnZS9BYnN0cmFjdEZyYW1l
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdEZyYW1lOjpBYnN0cmFjdEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RnJhbWU6On5BYnN0cmFjdEZyYW1lKToK
KyAgICAgICAgKiBwYWdlL0Fic3RyYWN0RnJhbWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBYnN0cmFjdEZyYW1lOjp3aW5kb3cgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6RE9NV2luZG93KToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp3aW5kb3cgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6OnZpcnR1YWxXaW5kb3cgY29uc3QpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWUuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGFnZS9HbG9iYWxGcmFtZUlk
ZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHbG9iYWxGcmFtZUlkZW50aWZp
ZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHbG9iYWxGcmFtZUlkZW50aWZp
ZXI6OmRlY29kZSk6CisgICAgICAgICogcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpH
bG9iYWxXaW5kb3dJZGVudGlmaWVyOjpoYXNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okds
b2JhbFdpbmRvd0lkZW50aWZpZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
bG9iYWxXaW5kb3dJZGVudGlmaWVyOjpkZWNvZGUpOgorICAgICAgICAoV1RGOjpHbG9iYWxXaW5k
b3dJZGVudGlmaWVySGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6Okdsb2JhbFdpbmRvd0lkZW50
aWZpZXJIYXNoOjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6R2xv
YmFsV2luZG93SWRlbnRpZmllcj46OmVtcHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJh
aXRzPFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXI+Ojpjb25zdHJ1Y3REZWxldGVkVmFs
dWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50
aWZpZXI+Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogcGFnZS9MYXlvdXRDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dENvbnRleHQ6On5MYXlvdXRDb250ZXh0KToKKyAg
ICAgICAgKiBwYWdlL0xheW91dENvbnRleHQuaDoKKyAgICAgICAgKiBwYWdlL1JlbW90ZURPTVdp
bmRvdy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpSZW1v
dGVET01XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93Ojp+UmVtb3Rl
RE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURPTVdpbmRvdzo6c2VsZiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVET01XaW5kb3c6OmxvY2F0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURPTVdpbmRvdzo6Y2xvc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlRE9NV2luZG93OjpjbG9zZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlRE9NV2luZG93Ojpmb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVET01XaW5k
b3c6OmJsdXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpsZW5ndGggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93Ojp0b3AgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpvcGVuZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpwYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVtb3RlRE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFnZS9SZW1vdGVE
T01XaW5kb3cuaDogQWRkZWQuCisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHBhZ2UvUmVt
b3RlRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUZyYW1lOjpSZW1v
dGVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVGcmFtZTo6flJlbW90ZUZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUZyYW1lOjp2aXJ0dWFsV2luZG93IGNvbnN0KToKKyAg
ICAgICAgKiBwYWdlL1JlbW90ZUZyYW1lLmg6IEFkZGVkLgorICAgICAgICAoaXNUeXBlKToKKwog
MjAxOC0wNC0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBmZjk0MmIzNmE0NGYzM2ZkZDk5
ODVlNjNkZjhlOTU4OWRhY2E4MmVkLi4yNWQzMmVlZjdhNTZiNjQ4OTM0Yzc3ZjVhMzJiZmUzMzlj
NGZjOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTMxMCw2ICsxMzEwLDggQEAgbWF0aG1sL01hdGhN
TFRva2VuRWxlbWVudC5jcHAKIG1hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcAogbWF0
aG1sL01hdGhNTFVua25vd25FbGVtZW50LmNwcAogCitwYWdlL0Fic3RyYWN0RE9NV2luZG93LmNw
cAorcGFnZS9BYnN0cmFjdEZyYW1lLmNwcAogcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAK
IHBhZ2UvQmFyUHJvcC5jcHAKIHBhZ2UvQmFzZTY0VXRpbGl0aWVzLmNwcApAQCAtMTM2OSw2ICsx
MzcxLDggQEAgcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAKIHBhZ2UvUGVyZm9ybWFuY2VVc2Vy
VGltaW5nLmNwcAogcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwCiBwYWdlL1ByaW50Q29u
dGV4dC5jcHAKK3BhZ2UvUmVtb3RlRE9NV2luZG93LmNwcAorcGFnZS9SZW1vdGVGcmFtZS5jcHAK
IHBhZ2UvUmVzb3VyY2VVc2FnZURhdGEuY3BwCiBwYWdlL1Jlc291cmNlVXNhZ2VPdmVybGF5LmNw
cAogcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJhZTBjOGEyMmQ1MjU5ZjBhZDIx
ODYwODE0OTAxYmJiODZjZTg2M2QuLmM5ZDRlZDg4OGZiYzBjOGQwOGM4MjBhZDdhYjBjMjY2MTdl
NzIyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTEyMDEsNiArMTIwMSwxMiBAQAogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5
NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODlGMUFGMTI2
N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0
YWRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZFOENE
RjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0QyREQgLyog
QWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2Qjk1
MTk2MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4RjIwN0Q2MzJCMDBBN0QyREQgLyog
QWJzdHJhY3RGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTQ2Qjk1MTk3MjA3RDYzNDAwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5
NTE5MDIwN0Q2MzJDMDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2Qjk1MTk4MjA3RDYz
NDcwMEE3RDJERCAvKiBHbG9iYWxGcmFtZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkxMjA3RDYzMkQwMEE3RDJERCAvKiBH
bG9iYWxGcmFtZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk0NkI5NTE5OTIwN0Q2MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2lu
ZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5
NTE4RTIwN0Q2MzJBMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZCOTUxOUEyMDdENjM1NDAwQTdE
MkREIC8qIFJlbW90ZUZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkI5NTE5MjIwN0Q2MzJFMDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkM2OTZDQjFF
NzIwNUY3MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2QzkxRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NkM2OTZDQzFFNzIwNUZDMDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZDQTFFNzIwNUU0MDA1OTc5Mzcg
LyogQ1BVTW9uaXRvci5jcHAgKi87IH07CiAJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3OUE0MSAvKiBH
ZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc0MzQsNiArNzQ0MCwxNiBA
QAogCQk0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NUmVjdExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUYx
QUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGaWxlTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFdmVudFRhcmdldEN1c3RvbS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI5NTE4QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJz
dHJhY3RET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJh
Y3RET01XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCOTUxOEMyMDdE
NjMyOTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbW90ZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDZCOTUxOEQyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVET01XaW5kb3cuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI5NTE4RTIwN0Q2MzJBMDBBN0QyREQgLyogUmVt
b3RlRE9NV2luZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZURP
TVdpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI5NTE4RjIwN0Q2MzJC
MDBBN0QyREQgLyogQWJzdHJhY3RGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBYnN0cmFjdEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Qjk1
MTkwMjA3RDYzMkMwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCOTUxOTEyMDdENjMyRDAwQTdEMkREIC8qIEdsb2Jh
bEZyYW1lSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbG9i
YWxGcmFtZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCOTUx
OTIyMDdENjMyRTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ2Qjk1MTkzMjA3RDYzMkYwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRvdy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Qjk1MTk0MjA3RDYzMzAwMEE3RDJERCAvKiBB
YnN0cmFjdEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFi
c3RyYWN0RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM2OTZDOTFF
NzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDUFVNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzY5
NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENQVU1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NkM4M0VGQjFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvTm90aWZpZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg5NDQsNiArMTg5NjAsMTAgQEAKIAkJCQkxOEE2Q0Q2
RjBEOEYyMDI1MDAxREMzQ0UgLyogaW9zICovLAogCQkJCTkzQzA5QTgyMEIwNjRGMDUwMDVBQkQ0
RCAvKiBtYWMgKi8sCiAJCQkJMUFGNjJFRTExNERBMjJBNzAwNDE1NTZDIC8qIHNjcm9sbGluZyAq
LywKKwkJCQk0NkI5NTE5MzIwN0Q2MzJGMDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuY3Bw
ICovLAorCQkJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5o
ICovLAorCQkJCTQ2Qjk1MTk0MjA3RDYzMzAwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmNwcCAq
LywKKwkJCQk0NkI5NTE4RjIwN0Q2MzJCMDBBN0QyREQgLyogQWJzdHJhY3RGcmFtZS5oICovLAog
CQkJCTcyNEVFNTRFMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggKi8sCiAJCQkJ
NzI0RUU1NEYxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5o
ICovLAogCQkJCUJDRjQ4Q0U2MTM3MEQxMTQwMDRFODdENiAvKiBBZGp1c3RWaWV3U2l6ZU9yTm90
LmggKi8sCkBAIC0xOTAyNSw3ICsxOTA0NSw5IEBACiAJCQkJNjVDQkZFRjcwOTc0RjYwNzAwMURB
QzI1IC8qIEZyYW1lVmlldy5jcHAgKi8sCiAJCQkJNjVDQkZFRjgwOTc0RjYwNzAwMURBQzI1IC8q
IEZyYW1lVmlldy5oICovLAogCQkJCTU3NEQ0Mjc5MUQ1OTRGRjYwMDJDRjUwRSAvKiBHbG9iYWxD
cnlwdG8uaWRsICovLAorCQkJCTQ2Qjk1MTkxMjA3RDYzMkQwMEE3RDJERCAvKiBHbG9iYWxGcmFt
ZUlkZW50aWZpZXIuaCAqLywKIAkJCQk3Qzk4OTI0NTFGNUEwNzY1MDA5MURDNzAgLyogR2xvYmFs
UGVyZm9ybWFuY2UuaWRsICovLAorCQkJCTQ2Qjk1MTkwMjA3RDYzMkMwMEE3RDJERCAvKiBHbG9i
YWxXaW5kb3dJZGVudGlmaWVyLmggKi8sCiAJCQkJQkM5NEQxNTAwQzI3NUM4QjAwNkJDNjE3IC8q
IEhpc3RvcnkuY3BwICovLAogCQkJCUJDOTREMTUxMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5
LmggKi8sCiAJCQkJQkM5NEQxNTIwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuaWRsICovLApA
QCAtMTkxMTgsNiArMTkxNDAsMTAgQEAKIAkJCQkzNzcyQjA5NTE2NTM1ODU2MDAwQTQ5Q0EgLyog
UG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCAqLywKIAkJCQlCNzc2RDQzQzExMDQ1Mjc1MDBCRUIwRUMg
LyogUHJpbnRDb250ZXh0LmNwcCAqLywKIAkJCQlCNzc2RDQzQTExMDQ1MjVEMDBCRUIwRUMgLyog
UHJpbnRDb250ZXh0LmggKi8sCisJCQkJNDZCOTUxOEQyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90
ZURPTVdpbmRvdy5jcHAgKi8sCisJCQkJNDZCOTUxOEUyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90
ZURPTVdpbmRvdy5oICovLAorCQkJCTQ2Qjk1MThDMjA3RDYzMjkwMEE3RDJERCAvKiBSZW1vdGVG
cmFtZS5jcHAgKi8sCisJCQkJNDZCOTUxOTIyMDdENjMyRTAwQTdEMkREIC8qIFJlbW90ZUZyYW1l
LmggKi8sCiAJCQkJQTUwNzFFOEExQzU2RkFGQTAwOTk1MUJFIC8qIFJlc291cmNlVXNhZ2VEYXRh
LmNwcCAqLywKIAkJCQlBNTA3MUU4MjFDNTZEMDc5MDA5OTUxQkUgLyogUmVzb3VyY2VVc2FnZURh
dGEuaCAqLywKIAkJCQlBREJBRDZFQzFCQ0REOTUwMDAzODEzMjUgLyogUmVzb3VyY2VVc2FnZU92
ZXJsYXkuY3BwICovLApAQCAtMjY2NzYsNiArMjY3MDIsOCBAQAogCQkJZmlsZXMgPSAoCiAJCQkJ
N0NEMEUyQjgxRjgwQTQ4MjAwMTZBNENFIC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0NEMEUyQkYxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5k
b3cuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Qjk1MTk2MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0
cmFjdEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDgyMjMxMzFFMzg2RTI0MDA2NkZDNzkg
LyogQWJzdHJhY3RQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUUxQjFEMTBGRjU5
ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgx
MjJFMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI3NjYzLDYgKzI3NjkxLDggQEAKIAkJCQkwRkI2MjUyRjE4REUxQjE1MDBB
MDdDMDUgLyogR2VvbWV0cnlVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QzgzRUZF
MUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0
NkFGMkExNEY0RERFNjAwM0U3QTcwIC8qIEdlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0NkI5NTE5ODIwN0Q2MzQ3MDBBN0QyREQgLyogR2xvYmFsRnJhbWVJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0NkI5NTE5NzIwN0Q2MzQwMDBBN0QyREQgLyogR2xvYmFsV2luZG93
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg2QkJEMEYxMzYwMzlDMjAwOEIxNUQ4
IC8qIEdseXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE2QzBEMDA2Q0Q2MDBFRjZGMjYg
LyogR2x5cGhCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1RDRBQTdBMTE2QkFGQjYwMDY5
Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAuaCBpbiBIZWFkZXJzICovLApAQCAtMjk0MjksNiArMjk0
NTksOCBAQAogCQkJCUE1NzhGNDNGMURFMEI2MzAwMDNERkM2QSAvKiBSZWplY3RlZFByb21pc2VU
cmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREZDMzYwNjE4Q0E2MUMyMDAyNkU1NkYgLyog
UmVtb3RlQ29tbWFuZExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDhBQ0E4OTFEMjM3
QUEyMDBFQ0M1OUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0NkI5NTE5OTIwN0Q2MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUQwNkMwRDhGMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3Jt
YXRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUwNTA5OUU2NDkyMDA1NkU1ODEg
LyogUmVtb3ZlTm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTA3MDk5RTY0
OTIwMDU2RTU4MSAvKiBSZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggNDY2
ODBhYjQ4ZGQ4ZDhhMDY3ZTcwYTMxNDBhOGE1YzY1MzNkZjE0MS4uNTMzOTgyNzUxNGViNGEyYWRh
OGM4YWY2NTlkYTFkYTkxMmU5OGM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVjaWRl
KFN0YXRlIHN0YXRlKQogICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgeyBtX2RvY3VtZW50TG9hZGVy
LmZyYW1lKCkgfTsKICAgICBTdHJpbmcgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQgeyBtX2Js
b2NraW5nQ29udGVudEZpbHRlci0+dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQoKSB9OwogICAg
IGlmICghdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNFbXB0eSgpICYmIGZyYW1lKSB7Ci0g
ICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mPFRocmVhZFNhZmVSZWZDb3VudGVk
PEZyYW1lPiwgRnJhbWU+Ojp2YWx1ZSwgIkZyYW1lIG11c3QgYmUgVGhyZWFkU2FmZVJlZkNvdW50
ZWQuIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mPFRocmVhZFNhZmVS
ZWZDb3VudGVkPEFic3RyYWN0RnJhbWU+LCBGcmFtZT46OnZhbHVlLCAiRnJhbWUgbXVzdCBiZSBU
aHJlYWRTYWZlUmVmQ291bnRlZC4iKTsKICAgICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhE
ZWNpc2lvbkhhbmRsZXIoW2ZyYW1lID0gV1RGTW92ZShmcmFtZSksIHNjcmlwdCA9IHVuYmxvY2tS
ZXF1ZXN0RGVuaWVkU2NyaXB0Lmlzb2xhdGVkQ29weSgpXShib29sIHVuYmxvY2tlZCkgewogICAg
ICAgICAgICAgaWYgKCF1bmJsb2NrZWQpCiAgICAgICAgICAgICAgICAgZnJhbWUtPnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHQoc2NyaXB0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
QWJzdHJhY3RET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdERPTVdp
bmRvdy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE3NDUxOWMxZWUyN2RiNzU3N2MzYjY3MzA0OGQ2ZmY1NmM0
MDNhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RET01X
aW5kb3cuY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQWJzdHJhY3RET01XaW5kb3cuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0hhc2hNYXA8R2xvYmFsV2lu
ZG93SWRlbnRpZmllciwgQWJzdHJhY3RET01XaW5kb3cqPiYgQWJzdHJhY3RET01XaW5kb3c6OmFs
bFdpbmRvd3MoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hNYXA8R2xvYmFsV2luZG93SWRlbnRpZmllciwgQWJzdHJhY3RET01X
aW5kb3cqPj4gbWFwOworICAgIHJldHVybiBtYXA7Cit9CisKK0Fic3RyYWN0RE9NV2luZG93OjpB
YnN0cmFjdERPTVdpbmRvdyhHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYgaWRlbnRpZmllcikKKyAg
ICA6IG1faWRlbnRpZmllcihXVEZNb3ZlKGlkZW50aWZpZXIpKQoreworICAgIEFTU0VSVCghYWxs
V2luZG93cygpLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBhbGxXaW5kb3dzKCkuYWRkKGlk
ZW50aWZpZXIsIHRoaXMpOworfQorCitBYnN0cmFjdERPTVdpbmRvdzo6fkFic3RyYWN0RE9NV2lu
ZG93KCkKK3sKKyAgICBBU1NFUlQoYWxsV2luZG93cygpLmNvbnRhaW5zKGlkZW50aWZpZXIoKSkp
OworICAgIGFsbFdpbmRvd3MoKS5yZW1vdmUoaWRlbnRpZmllcigpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdERP
TVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdERPTVdpbmRvdy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVhNWRlYmQ1MzJhZDlhMjJlODg0YmI2NmJjOWRmYWIyOGRkYmJjYTMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RE9NV2luZG93LmgKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQmFzZTY0
VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJHbG9iYWxX
aW5kb3dJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFic3RyYWN0
RnJhbWU7CisKKy8vIEZJWE1FOiBSZW5hbWUgRE9NV2luZG93IHRvIExvY2FsV2luZG93IGFuZCBB
YnN0cmFjdERPTVdpbmRvdyB0byBET01XaW5kb3cuCitjbGFzcyBBYnN0cmFjdERPTVdpbmRvdyA6
IHB1YmxpYyBSZWZDb3VudGVkPEFic3RyYWN0RE9NV2luZG93PiwgcHVibGljIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGEgeworcHVibGljOgorICAgIHZpcnR1YWwgfkFic3RyYWN0RE9NV2luZG93
KCk7CisKKyAgICBzdGF0aWMgSGFzaE1hcDxHbG9iYWxXaW5kb3dJZGVudGlmaWVyLCBBYnN0cmFj
dERPTVdpbmRvdyo+JiBhbGxXaW5kb3dzKCk7CisKKyAgICBjb25zdCBHbG9iYWxXaW5kb3dJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyAg
ICB2aXJ0dWFsIEFic3RyYWN0RnJhbWUqIGZyYW1lKCkgY29uc3QgPSAwOworCisgICAgdmlydHVh
bCBib29sIGlzTG9jYWxET01XaW5kb3coKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
UmVtb3RlRE9NV2luZG93KCkgY29uc3QgPSAwOworCisgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVm
OworICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOworCitwcm90ZWN0ZWQ6CisgICAgZXhwbGlj
aXQgQWJzdHJhY3RET01XaW5kb3coR2xvYmFsV2luZG93SWRlbnRpZmllciYmKTsKKworICAgIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gRE9NV2luZG93RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgdm9pZCByZWZF
dmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQo
KSBmaW5hbCB7IGRlcmVmKCk7IH0KKworcHJpdmF0ZToKKyAgICBHbG9iYWxXaW5kb3dJZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Fic3RyYWN0RnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmMGY2ZGE2MGJmMjEzZTlmODI3
MmIyY2QzY2NhY2IxMjI3Yjg4ODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Fic3RyYWN0RnJhbWUuY3BwCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWJzdHJhY3RGcmFtZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0Fic3RyYWN0RnJhbWU6OkFic3RyYWN0RnJhbWUoKQoreworfQorCitBYnN0
cmFjdEZyYW1lOjp+QWJzdHJhY3RGcmFtZSgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdEZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTYxMTVlYjZjY2Jj
MjAzMzI1MzNkYWJhYTU2MjkwYmFmMDFkMWJiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBBYnN0cmFjdERPTVdpbmRvdzsKK2NsYXNzIFdpbmRvd1Byb3h5Q29udHJvbGxlcjsKKworLy8g
RklYTUU6IFJlbmFtZSBGcmFtZSB0byBMb2NhbEZyYW1lIGFuZCBBYnN0cmFjdEZyYW1lIHRvIEZy
YW1lLgorY2xhc3MgQWJzdHJhY3RGcmFtZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxB
YnN0cmFjdEZyYW1lPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QWJzdHJhY3RGcmFtZSgpOwor
CisgICAgdmlydHVhbCBib29sIGlzTG9jYWxGcmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNSZW1vdGVGcmFtZSgpIGNvbnN0ID0gMDsKKworICAgIEFic3RyYWN0RE9NV2luZG93
KiB3aW5kb3coKSBjb25zdCB7IHJldHVybiB2aXJ0dWFsV2luZG93KCk7IH0KKworcHJvdGVjdGVk
OgorICAgIEFic3RyYWN0RnJhbWUoKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIEFic3RyYWN0
RE9NV2luZG93KiB2aXJ0dWFsV2luZG93KCkgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDkwYzNlOGU1YTc4Mzhk
ZDBiZjhiYzQwZTlmOWU3YjFlMzg0YWM4MDEuLjAyMTBiMDhhMTgyMWRlYjBjODkwNmM5ZmYwODJh
NDZhZTM3ZWE3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTQwMSw3ICs0MDEs
OCBAQCB2b2lkIERPTVdpbmRvdzo6c2V0Q2FuU2hvd01vZGFsRGlhbG9nT3ZlcnJpZGUoYm9vbCBh
bGxvdykKIH0KIAogRE9NV2luZG93OjpET01XaW5kb3coRG9jdW1lbnQmIGRvY3VtZW50KQotICAg
IDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmRvY3VtZW50KQorICAgIDogQWJzdHJhY3RE
T01XaW5kb3coR2xvYmFsV2luZG93SWRlbnRpZmllciB7IFByb2Nlc3M6OmlkZW50aWZpZXIoKSwg
Z2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPFdpbmRvd0lkZW50aWZpZXJUeXBlPigpIH0pCisgICAg
LCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmZG9jdW1lbnQpCiAgICAgLCBGcmFtZURlc3Ry
dWN0aW9uT2JzZXJ2ZXIoZG9jdW1lbnQuZnJhbWUoKSkKIHsKICAgICBBU1NFUlQoZnJhbWUoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCA0YzY2YjcyNGUyOWFiYmIwYTBiMmJjYjY2ZDU3
MzFjZTg0ZWQxZDdlLi40OTlhNTU4ZDJlZTE4ZDU0NzVmZDA4Mjk0NWQ2NmMzODg4Yjk5NjI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTI2LDEwICsyNiwxMSBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkFic3RyYWN0RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiQmFzZTY0VXRp
bGl0aWVzLmgiCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKLSNpbmNs
dWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRl
ICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNjcm9sbFRvT3B0aW9ucy5oIgpAQCAtODcsOSAr
ODgsOSBAQCBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiBlbnVtIFNldExvY2F0aW9uTG9ja2luZyB7
IExvY2tIaXN0b3J5QmFzZWRPbkdlc3R1cmVTdGF0ZSwgTG9ja0hpc3RvcnlBbmRCYWNrRm9yd2Fy
ZExpc3QgfTsKIAogLy8gRklYTUU6IERPTVdpbmRvdyBzaG91bGRuJ3Qgc3ViY2xhc3MgRnJhbWVE
ZXN0cnVjdGlvbk9ic2VydmVyIGFuZCBpbnN0ZWFkIHNob3VsZCBnZXQgdG8gRnJhbWUgdmlhIGl0
cyBEb2N1bWVudC4KKy8vIEZJWE1FOiBSZW5hbWUgRE9NV2luZG93IHRvIExvY2FsV2luZG93IGFu
ZCBBYnN0cmFjdERPTVdpbmRvdyB0byBET01XaW5kb3cuCiBjbGFzcyBET01XaW5kb3cgZmluYWwK
LSAgICA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVdpbmRvdz4KLSAgICAsIHB1YmxpYyBFdmVudFRh
cmdldFdpdGhJbmxpbmVEYXRhCisgICAgOiBwdWJsaWMgQWJzdHJhY3RET01XaW5kb3cKICAgICAs
IHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgogICAgICwgcHVibGljIEZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlcgogICAgICwgcHVibGljIEJhc2U2NFV0aWxpdGllcwpAQCAtMTk4LDYg
KzE5OSw4IEBAIHB1YmxpYzoKICAgICBET01XaW5kb3cqIHBhcmVudCgpIGNvbnN0OwogICAgIERP
TVdpbmRvdyogdG9wKCkgY29uc3Q7CiAKKyAgICBGcmFtZSogZnJhbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXI6OmZyYW1lKCk7IH0KKwogICAgIFN0cmlu
ZyBvcmlnaW4oKSBjb25zdDsKIAogICAgIC8vIERPTSBMZXZlbCAyIEFic3RyYWN0VmlldyBJbnRl
cmZhY2UKQEAgLTI3Niw5ICsyNzksNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZpbmlzaGVkTG9h
ZGluZygpOwogCi0gICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50
ZWQ6OmRlcmVmOwotCiAgICAgLy8gSFRNTCA1IGtleS92YWx1ZSBzdG9yYWdlCiAgICAgRXhjZXB0
aW9uT3I8U3RvcmFnZSo+IHNlc3Npb25TdG9yYWdlKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8
U3RvcmFnZSo+IGxvY2FsU3RvcmFnZSgpIGNvbnN0OwpAQCAtMzM4LDE4ICszMzgsMTcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBET01XaW5kb3coRG9jdW1lbnQmKTsKIAotICAg
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gRE9NV2luZG93RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7IH0KIAorICAgIGJvb2wgaXNMb2NhbERPTVdpbmRvdygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBib29sIGlzUmVtb3RlRE9NV2luZG93KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KKwogICAgIFBhZ2UqIHBhZ2UoKTsKICAgICBib29sIGFsbG93ZWRUb0NoYW5n
ZVdpbmRvd0dlb21ldHJ5KCkgY29uc3Q7CiAKICAgICB2b2lkIGZyYW1lRGVzdHJveWVkKCkgZmlu
YWw7CiAgICAgdm9pZCB3aWxsRGV0YWNoUGFnZSgpIGZpbmFsOwogCi0gICAgdm9pZCByZWZFdmVu
dFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBm
aW5hbCB7IGRlcmVmKCk7IH0KLQogICAgIHN0YXRpYyBSZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRv
dyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUs
IGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIEZyYW1lJiBm
aXJzdEZyYW1lLCBGcmFtZSYgb3BlbmVyRnJhbWUsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChE
T01XaW5kb3cmKT4mIHByZXBhcmVEaWFsb2dGdW5jdGlvbiA9IG51bGxwdHIpOwogICAgIGJvb2wg
aXNJbnNlY3VyZVNjcmlwdEFjY2VzcyhET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcpOwogCkBAIC00MzIsNSArNDMxLDYgQEAgaW5saW5lIFN0cmluZyBET01X
aW5kb3c6OmRlZmF1bHRTdGF0dXMoKSBjb25zdAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkRPTVdpbmRvdykKKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QWJzdHJhY3RET01XaW5kb3cmIHdpbmRvdykg
eyByZXR1cm4gd2luZG93LmlzTG9jYWxET01XaW5kb3coKTsgfQogICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpFdmVudFRhcmdldCYgdGFyZ2V0KSB7IHJldHVybiB0YXJnZXQu
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSA9PSBXZWJDb3JlOjpET01XaW5kb3dFdmVudFRhcmdldElu
dGVyZmFjZVR5cGU7IH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKaW5kZXggMmVlMzc1ZGQwYjI3ZjE5YWFhMDI2ZTM0ODdkNGNjZGY3MzMzMmU2Ni4uODA2
NzdjNDVmZTZjZDg0ODgzZmVjZDMyNTg3MDUyMmM1ZTdiNGUxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKQEAgLTkzOSw2ICs5MzksMTYgQEAgdm9pZCBGcmFtZTo6Y3JlYXRlVmlldyhjb25zdCBJbnRT
aXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IKICAgICAgICAg
dmlldygpLT5zZXRDYW5IYXZlU2Nyb2xsYmFycyhvd25lci0+c2Nyb2xsaW5nTW9kZSgpICE9IFNj
cm9sbGJhckFsd2F5c09mZik7CiB9CiAKK0RPTVdpbmRvdyogRnJhbWU6OndpbmRvdygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGRvY3VtZW50KCkgPyBkb2N1bWVudCgpLT5kb21XaW5kb3coKSA6IG51
bGxwdHI7Cit9CisKK0Fic3RyYWN0RE9NV2luZG93KiBGcmFtZTo6dmlydHVhbFdpbmRvdygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHdpbmRvdygpOworfQorCiBTdHJpbmcgRnJhbWU6OmxheWVyVHJl
ZUFzVGV4dChMYXllclRyZWVGbGFncyBmbGFncykgY29uc3QKIHsKICAgICBkb2N1bWVudCgpLT51
cGRhdGVMYXlvdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCBiMzViOGZkMDc1NWY2MzgzMDM4Mzlj
ZjFjOWJlODgyMmI4NWYyYTAwLi5kZWQ5NmY4OWJhMzU2NjE5MDE3NjVlN2RhMzBmZjIzNjM1ZjY4
NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0yNywxMiArMjcsMTIgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJBYnN0cmFjdEZyYW1lLmgiCiAjaW5jbHVkZSAiQWRqdXN0Vmlld1NpemVP
ck5vdC5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgi
CiAjaW5jbHVkZSAiVXNlclNjcmlwdFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
LSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC02MSw2ICs2MSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTQW5pbWF0aW9uQ29udHJvbGxlcjsKIGNsYXNzIENvbG9y
OworY2xhc3MgRE9NV2luZG93OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFZGl0b3I7CiBjbGFz
cyBFbGVtZW50OwpAQCAtMTE3LDcgKzExOCw4IEBAIGVudW0gewogfTsKIHR5cGVkZWYgdW5zaWdu
ZWQgTGF5ZXJUcmVlRmxhZ3M7CiAKLWNsYXNzIEZyYW1lIGZpbmFsIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPEZyYW1lPiB7CisvLyBGSVhNRTogUmVuYW1lIEZyYW1lIHRvIExvY2FsRnJh
bWUgYW5kIEFic3RyYWN0RnJhbWUgdG8gRnJhbWUuCitjbGFzcyBGcmFtZSBmaW5hbCA6IHB1Ymxp
YyBBYnN0cmFjdEZyYW1lIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEZyYW1lPiBjcmVhdGUoUGFnZSosIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIEZyYW1lTG9hZGVy
Q2xpZW50Kik7CiAKQEAgLTEzNCw2ICsxMzYsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB+RnJhbWUoKTsKIAorICAgIERPTVdpbmRvdyogd2luZG93KCkgY29uc3Q7CisKICAgICB2
b2lkIGFkZERlc3RydWN0aW9uT2JzZXJ2ZXIoRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKik7CiAg
ICAgdm9pZCByZW1vdmVEZXN0cnVjdGlvbk9ic2VydmVyKEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZl
ciopOwogCkBAIC0yOTEsNiArMjk1LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRyb3BDaGls
ZHJlbigpOwogCisgICAgYm9vbCBpc0xvY2FsRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CisgICAgYm9vbCBpc1JlbW90ZUZyYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFs
c2U7IH0KKworICAgIEFic3RyYWN0RE9NV2luZG93KiB2aXJ0dWFsV2luZG93KCkgY29uc3QgZmlu
YWw7CisKICAgICBIYXNoU2V0PEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcio+IG1fZGVzdHJ1Y3Rp
b25PYnNlcnZlcnM7CiAKICAgICBGcmFtZSYgbV9tYWluRnJhbWU7CkBAIC0zOTAsMyArMzk5LDcg
QEAgaW5saW5lIEZyYW1lJiBGcmFtZTo6bWFpbkZyYW1lKCkgY29uc3QKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkZy
YW1lKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpBYnN0cmFjdEZyYW1l
JiBmcmFtZSkgeyByZXR1cm4gZnJhbWUuaXNMb2NhbEZyYW1lKCk7IH0KK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJh
bWVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmll
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhiNjExN2Q1MTFmMjMzZWRiM2YzZTYwZGFkNDM3MWM1YWM5OGZiY2MK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRp
Zmllci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBH
bG9iYWxGcmFtZUlkZW50aWZpZXIgeworICAgIHVpbnQ2NF90IHBhZ2VJRDsKKyAgICB1aW50NjRf
dCBmcmFtZUlEOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEdsb2JhbEZyYW1lSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3Rl
bXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEdsb2JhbEZyYW1lSWRlbnRpZmllcjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBwYWdlSUQgPDwgZnJh
bWVJRDsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8R2xvYmFs
RnJhbWVJZGVudGlmaWVyPiBHbG9iYWxGcmFtZUlkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBkZWNv
ZGVyID4+IHBhZ2VJRDsKKyAgICBpZiAoIXBhZ2VJRCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7CisgICAgZGVjb2Rl
ciA+PiBmcmFtZUlEOworICAgIGlmICghZnJhbWVJRCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqcGFnZUlEKSwgV1RGTW92ZSgqZnJhbWVJ
RCkgfSB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0dsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvR2xvYmFsV2luZG93SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3ZTE5YTk0YTliMGMzZGY0
MjEwMDQ1YmVjNWViNGQxZWNjN2UwOGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0dsb2JhbFdpbmRvd0lkZW50aWZpZXIuaApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUHJvY2Vzcy5oIgorI2luY2x1ZGUgPHd0
Zi9IYXNoVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFdpbmRvd0lkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5n
IFdpbmRvd0lkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFdpbmRvd0lkZW50aWZpZXJUeXBl
PjsKKworc3RydWN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXIgeworICAgIFByb2Nlc3NJZGVudGlm
aWVyIHByb2Nlc3NJZGVudGlmaWVyOworICAgIFdpbmRvd0lkZW50aWZpZXIgd2luZG93SWRlbnRp
ZmllcjsKKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKKworICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHbG9iYWxXaW5kb3dJZGVudGlmaWVyPiBk
ZWNvZGUoRGVjb2RlciYpOworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHbG9i
YWxXaW5kb3dJZGVudGlmaWVyJiBhLCBjb25zdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiBiKQor
eworICAgIHJldHVybiBhLnByb2Nlc3NJZGVudGlmaWVyID09IGIucHJvY2Vzc0lkZW50aWZpZXIg
JiYgIGEud2luZG93SWRlbnRpZmllciA9PSBiLndpbmRvd0lkZW50aWZpZXI7Cit9CisKK2lubGlu
ZSB1bnNpZ25lZCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOjpoYXNoKCkgY29uc3QKK3sKKyAgICB1
bnNpZ25lZCBoYXNoZXNbMl07CisgICAgaGFzaGVzWzBdID0gV1RGOjppbnRIYXNoKHByb2Nlc3NJ
ZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGhhc2hlc1sxXSA9IFdURjo6aW50SGFzaCh3aW5k
b3dJZGVudGlmaWVyLnRvVUludDY0KCkpOworCisgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFz
aE1lbW9yeShoYXNoZXMsIHNpemVvZihoYXNoZXMpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KK3ZvaWQgR2xvYmFsV2luZG93SWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBwcm9jZXNzSWRlbnRpZmllciA8PCB3aW5kb3dJ
ZGVudGlmaWVyOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxH
bG9iYWxXaW5kb3dJZGVudGlmaWVyPiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBw
cm9jZXNzSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHByb2Nlc3NJZGVudGlmaWVyOworICAg
IGlmICghcHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBzdGQ6Om9wdGlvbmFsPFdpbmRvd0lkZW50aWZpZXI+IHdpbmRvd0lkZW50aWZpZXI7Cisg
ICAgZGVjb2RlciA+PiB3aW5kb3dJZGVudGlmaWVyOworICAgIGlmICghd2luZG93SWRlbnRpZmll
cikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgV1RGTW92
ZSgqcHJvY2Vzc0lkZW50aWZpZXIpLCBXVEZNb3ZlKCp3aW5kb3dJZGVudGlmaWVyKSB9IH07Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVjdCBH
bG9iYWxXaW5kb3dJZGVudGlmaWVySGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgV2ViQ29yZTo6R2xvYmFsV2luZG93SWRlbnRpZmllciYga2V5KSB7IHJldHVybiBrZXkuaGFz
aCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29yZTo6R2xvYmFsV2luZG93
SWRlbnRpZmllciYgYSwgY29uc3QgV2ViQ29yZTo6R2xvYmFsV2luZG93SWRlbnRpZmllciYgYikg
eyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0
czxXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdl
YkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXI+IHsKKyAgICBzdGF0aWMgV2ViQ29yZTo6R2xv
YmFsV2luZG93SWRlbnRpZmllciBlbXB0eVZhbHVlKCkgeyByZXR1cm4geyB9OyB9CisKKyAgICBz
dGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6R2xvYmFsV2luZG93SWRl
bnRpZmllciYgc2xvdCkgeyBzbG90LndpbmRvd0lkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRp
ZmllcjxXZWJDb3JlOjpXaW5kb3dJZGVudGlmaWVyVHlwZT4oc3RkOjpudW1lcmljX2xpbWl0czx1
aW50NjRfdD46Om1heCgpKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0
IFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXImIHNsb3QpIHsgcmV0dXJuIHNsb3Qud2lu
ZG93SWRlbnRpZmllci50b1VJbnQ2NCgpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+
OjptYXgoKTsgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6
R2xvYmFsV2luZG93SWRlbnRpZmllcj4geworICAgIHR5cGVkZWYgR2xvYmFsV2luZG93SWRlbnRp
Zmllckhhc2ggSGFzaDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVET01XaW5kb3cuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4MDM0MjQzNzhmYmYxZDRiY2ZiMDZl
NWExZDA5MTQ4M2IzNjU4YzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbW90ZURPTVdpbmRvdy5jcHAKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlRE9NV2luZG93LmgiCisKKyNpbmNsdWRl
ICJSZW1vdGVGcmFtZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWUuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1JlbW90ZURPTVdpbmRvdzo6UmVtb3RlRE9NV2luZG93KFJlZjxSZW1v
dGVGcmFtZT4mJiBmcmFtZSwgR2xvYmFsV2luZG93SWRlbnRpZmllciYmIGlkZW50aWZpZXIpCisg
ICAgOiBBYnN0cmFjdERPTVdpbmRvdyhXVEZNb3ZlKGlkZW50aWZpZXIpKQorICAgICwgbV9mcmFt
ZShXVEZNb3ZlKGZyYW1lKSkKK3sKKyAgICBtX2ZyYW1lLT5zZXRXaW5kb3codGhpcyk7Cit9CisK
K1JlbW90ZURPTVdpbmRvdzo6flJlbW90ZURPTVdpbmRvdygpCit7CisgICAgbV9mcmFtZS0+c2V0
V2luZG93KG51bGxwdHIpOworfQorCitSZW1vdGVET01XaW5kb3cqIFJlbW90ZURPTVdpbmRvdzo6
c2VsZigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxSZW1vdGVET01XaW5kb3cqPih0aGlzKTsKK30KKwor
TG9jYXRpb24qIFJlbW90ZURPTVdpbmRvdzo6bG9jYXRpb24oKSBjb25zdAoreworICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnRlZCB0aGlzLgorICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFJl
bW90ZURPTVdpbmRvdzo6Y2xvc2UoRG9jdW1lbnQmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnRlZCB0aGlzLgorfQorCitib29sIFJlbW90ZURPTVdpbmRvdzo6Y2xvc2VkKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gIW1fZnJhbWU7Cit9CisKK3ZvaWQgUmVtb3RlRE9NV2luZG93Ojpmb2N1cyhE
T01XaW5kb3cmIGluY3VtYmVudFdpbmRvdykKK3sKKyAgICBVTlVTRURfUEFSQU0oaW5jdW1iZW50
V2luZG93KTsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50ZWQgdGhpcy4KK30KKwordm9pZCBSZW1v
dGVET01XaW5kb3c6OmJsdXIoKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnRlZCB0aGlzLgor
fQorCit1bnNpZ25lZCBSZW1vdGVET01XaW5kb3c6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgLy8g
RklYTUU6IEltcGxlbWVudGVkIHRoaXMuCisgICAgcmV0dXJuIDE7Cit9CisKK1JlbW90ZURPTVdp
bmRvdyogUmVtb3RlRE9NV2luZG93Ojp0b3AoKSBjb25zdAoreworICAgIGlmICghbV9mcmFtZSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50ZWQgdGhp
cy4KKyAgICByZXR1cm4gY29uc3RfY2FzdDxSZW1vdGVET01XaW5kb3cqPih0aGlzKTsKK30KKwor
RE9NV2luZG93KiBSZW1vdGVET01XaW5kb3c6Om9wZW5lcigpIGNvbnN0Cit7CisgICAgLy8gRklY
TUU6IEltcGxlbWVudGVkIHRoaXMuCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlbW90ZURP
TVdpbmRvdyogUmVtb3RlRE9NV2luZG93OjpwYXJlbnQoKSBjb25zdAoreworICAgIGlmICghbV9m
cmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50
ZWQgdGhpcy4KKyAgICByZXR1cm4gY29uc3RfY2FzdDxSZW1vdGVET01XaW5kb3cqPih0aGlzKTsK
K30KKworRXhjZXB0aW9uT3I8dm9pZD4gUmVtb3RlRE9NV2luZG93Ojpwb3N0TWVzc2FnZShKU0M6
OkV4ZWNTdGF0ZSYsIERPTVdpbmRvdyYgaW5jdW1iZW50V2luZG93LCBKU0M6OkpTVmFsdWUgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6
OkpTT2JqZWN0Pj4mJikKK3sKKyAgICBVTlVTRURfUEFSQU0oaW5jdW1iZW50V2luZG93KTsKKyAg
ICBVTlVTRURfUEFSQU0obWVzc2FnZSk7CisgICAgVU5VU0VEX1BBUkFNKHRhcmdldE9yaWdpbik7
CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50ZWQgdGhpcy4KKyAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2EyZjFmZDE2Nzg2MmVh
MmNkODNmOThlZDg5MWVjNjNlYzI0YmViZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWJzdHJhY3RET01XaW5kb3cuaCIKKyNpbmNsdWRl
ICJSZW1vdGVGcmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KKworbmFtZXNwYWNl
IEpTQyB7CitjbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBKU09iamVjdDsKK2NsYXNzIEpTVmFsdWU7
Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgU3Ryb25nOworfQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIERPTVdpbmRvdzsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgTG9jYXRpb247
CisKK2NsYXNzIFJlbW90ZURPTVdpbmRvdyBmaW5hbCA6IHB1YmxpYyBBYnN0cmFjdERPTVdpbmRv
dyB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZW1vdGVET01XaW5kb3c+IGNyZWF0ZShSZWY8
UmVtb3RlRnJhbWU+JiYgZnJhbWUsIEdsb2JhbFdpbmRvd0lkZW50aWZpZXImJiBpZGVudGlmaWVy
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlRE9NV2luZG93KFdU
Rk1vdmUoZnJhbWUpLCBXVEZNb3ZlKGlkZW50aWZpZXIpKSk7CisgICAgfQorCisgICAgflJlbW90
ZURPTVdpbmRvdygpIGZpbmFsOworCisgICAgUmVtb3RlRnJhbWUqIGZyYW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9mcmFtZS5nZXQoKTsgfQorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9
CisKKyAgICAvLyBET00gQVBJLgorICAgIFJlbW90ZURPTVdpbmRvdyogc2VsZigpIGNvbnN0Owor
ICAgIExvY2F0aW9uKiBsb2NhdGlvbigpIGNvbnN0OworICAgIHZvaWQgY2xvc2UoRG9jdW1lbnQm
KTsKKyAgICBib29sIGNsb3NlZCgpIGNvbnN0OworICAgIHZvaWQgZm9jdXMoRE9NV2luZG93JiBp
bmN1bWJlbnRXaW5kb3cpOworICAgIHZvaWQgYmx1cigpOworICAgIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0OworICAgIFJlbW90ZURPTVdpbmRvdyogdG9wKCkgY29uc3Q7CisgICAgRE9NV2luZG93
KiBvcGVuZXIoKSBjb25zdDsKKyAgICBSZW1vdGVET01XaW5kb3cqIHBhcmVudCgpIGNvbnN0Owor
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiwgRE9NV2lu
ZG93JiBpbmN1bWJlbnRXaW5kb3csIEpTQzo6SlNWYWx1ZSBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IHRhcmdldE9yaWdpbiwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmKTsKKwor
cHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBSZW1vdGVET01XaW5kb3coUmVmPFJlbW90ZUZy
YW1lPiYmLCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYpOworCisgICAgYm9vbCBpc1JlbW90ZURP
TVdpbmRvdygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzTG9jYWxE
T01XaW5kb3coKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgUmVmUHRyPFJl
bW90ZUZyYW1lPiBtX2ZyYW1lOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlJlbW90ZURPTVdpbmRvdykKKyAgICBz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QWJzdHJhY3RET01XaW5kb3cmIHdpbmRv
dykgeyByZXR1cm4gd2luZG93LmlzUmVtb3RlRE9NV2luZG93KCk7IH0KK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjAxMGMzN2M1Y2MxMjA5YmJiM2RkODFiYTIzNDFhYWQ0MmRiY2JkNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwCkBAIC0wLDAgKzEsNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlRnJhbWUu
aCIKKworI2luY2x1ZGUgIlJlbW90ZURPTVdpbmRvdy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1JlbW90ZUZyYW1lOjpSZW1vdGVGcmFtZShHbG9iYWxGcmFtZUlkZW50aWZpZXImJiBmcmFt
ZUlkZW50aWZpZXIpCisgICAgOiBtX2lkZW50aWZpZXIoV1RGTW92ZShmcmFtZUlkZW50aWZpZXIp
KQoreworfQorCitSZW1vdGVGcmFtZTo6flJlbW90ZUZyYW1lKCkKK3sKK30KKworQWJzdHJhY3RE
T01XaW5kb3cqIFJlbW90ZUZyYW1lOjp2aXJ0dWFsV2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gd2luZG93KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNmZjM2ZiMTk3MWI1NjMyN2UxNTM1MmQxYTE4ZTlhZTQz
OTBkOTIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFt
ZS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkFic3RyYWN0RnJhbWUuaCIKKyNpbmNsdWRlICJHbG9iYWxGcmFtZUlkZW50aWZpZXIuaCIK
KyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbW90ZURPTVdpbmRvdzsKKworY2xhc3MgUmVtb3Rl
RnJhbWUgZmluYWwgOiBwdWJsaWMgQWJzdHJhY3RGcmFtZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxSZW1vdGVGcmFtZT4gY3JlYXRlKEdsb2JhbEZyYW1lSWRlbnRpZmllciYmIGZyYW1lSWRl
bnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqIG5ldyBSZW1vdGVGcmFt
ZShXVEZNb3ZlKGZyYW1lSWRlbnRpZmllcikpKTsKKyAgICB9CisgICAgflJlbW90ZUZyYW1lKCk7
CisKKyAgICBjb25zdCBHbG9iYWxGcmFtZUlkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIHZvaWQgc2V0V2luZG93KFJlbW90ZURPTVdp
bmRvdyogd2luZG93KSB7IG1fd2luZG93ID0gd2luZG93OyB9CisgICAgUmVtb3RlRE9NV2luZG93
KiB3aW5kb3coKSBjb25zdCB7IHJldHVybiBtX3dpbmRvdzsgfQorCitwcml2YXRlOgorICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFJlbW90ZUZyYW1lKEdsb2JhbEZyYW1lSWRlbnRpZmllciYm
KTsKKworICAgIGJvb2wgaXNSZW1vdGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KKyAgICBib29sIGlzTG9jYWxGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9
CisKKyAgICBBYnN0cmFjdERPTVdpbmRvdyogdmlydHVhbFdpbmRvdygpIGNvbnN0IGZpbmFsOwor
CisgICAgR2xvYmFsRnJhbWVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBSZW1vdGVET01X
aW5kb3cqIG1fd2luZG93IHsgbnVsbHB0ciB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlJlbW90ZUZyYW1lKQor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpBYnN0cmFjdEZyYW1lJiBmcmFt
ZSkgeyByZXR1cm4gZnJhbWUuaXNSZW1vdGVGcmFtZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337729</attachid>
            <date>2018-04-11 13:26:12 -0700</date>
            <delta_ts>2018-04-11 15:01:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184467-20180411132611.patch</filename>
            <type>text/plain</type>
            <size>48729</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzY3YWViMDdlMzcwMWI0
ZjY5ZjQxZjNhNmQ1MWEyZDY5NjE1MDI0ZS4uNzZiZDI0Mzk4MTUzZjdlMTI5YTc2YWMyZDhiYTFj
OTI0NjM1NThlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE4LTA0LTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIHJlbW90ZSB2
YXJpYW50cyBvZiBGcmFtZSAvIERPTVdpbmRvdyBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ0NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzM5MDExMjY3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEludHJvZHVjZSByZW1vdGUgdmFyaWFudHMgb2YgRnJhbWUgLyBET01XaW5kb3cgY2xh
c3NlcywgZm9yIHdoZW4gdGhlc2UgZnJhbWVzIC8gd2luZG93cworICAgICAgICBhcmUgaG9zdGVk
IG9uIGFub3RoZXIgV2ViUHJvY2Vzcy4gVGhvc2Ugd2lsbCBiZSB1c2VkIGluIGEgZm9sbG93LXVw
IHBhdGNoLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZSk6CisgICAgICAg
ICogcGFnZS9BYnN0cmFjdERPTVdpbmRvdy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWJzdHJhY3RET01XaW5kb3c6OkFic3RyYWN0RE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkFic3RyYWN0RE9NV2luZG93Ojp+QWJzdHJhY3RET01XaW5kb3cpOgorICAgICAgICAqIHBhZ2Uv
QWJzdHJhY3RET01XaW5kb3cuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdERP
TVdpbmRvdzo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICogcGFnZS9BYnN0cmFjdEZyYW1l
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdEZyYW1lOjpBYnN0cmFjdEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RnJhbWU6On5BYnN0cmFjdEZyYW1lKToK
KyAgICAgICAgKiBwYWdlL0Fic3RyYWN0RnJhbWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBYnN0cmFjdEZyYW1lOjp3aW5kb3cgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6RE9NV2luZG93KToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp3aW5kb3cgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6OnZpcnR1YWxXaW5kb3cgY29uc3QpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWUuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogcGFnZS9HbG9iYWxGcmFtZUlk
ZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHbG9iYWxGcmFtZUlkZW50aWZp
ZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHbG9iYWxGcmFtZUlkZW50aWZp
ZXI6OmRlY29kZSk6CisgICAgICAgICogcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpH
bG9iYWxXaW5kb3dJZGVudGlmaWVyOjpoYXNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okds
b2JhbFdpbmRvd0lkZW50aWZpZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
bG9iYWxXaW5kb3dJZGVudGlmaWVyOjpkZWNvZGUpOgorICAgICAgICAoV1RGOjpHbG9iYWxXaW5k
b3dJZGVudGlmaWVySGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6Okdsb2JhbFdpbmRvd0lkZW50
aWZpZXJIYXNoOjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6R2xv
YmFsV2luZG93SWRlbnRpZmllcj46OmVtcHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJh
aXRzPFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXI+Ojpjb25zdHJ1Y3REZWxldGVkVmFs
dWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50
aWZpZXI+Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogcGFnZS9MYXlvdXRDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dENvbnRleHQ6On5MYXlvdXRDb250ZXh0KToKKyAg
ICAgICAgKiBwYWdlL0xheW91dENvbnRleHQuaDoKKyAgICAgICAgKiBwYWdlL1JlbW90ZURPTVdp
bmRvdy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpSZW1v
dGVET01XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93Ojp+UmVtb3Rl
RE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURPTVdpbmRvdzo6c2VsZiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVET01XaW5kb3c6OmxvY2F0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURPTVdpbmRvdzo6Y2xvc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlRE9NV2luZG93OjpjbG9zZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlRE9NV2luZG93Ojpmb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVET01XaW5k
b3c6OmJsdXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpsZW5ndGggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93Ojp0b3AgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpvcGVuZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpwYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVtb3RlRE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFnZS9SZW1vdGVE
T01XaW5kb3cuaDogQWRkZWQuCisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIHBhZ2UvUmVt
b3RlRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUZyYW1lOjpSZW1v
dGVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVGcmFtZTo6flJlbW90ZUZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUZyYW1lOjp2aXJ0dWFsV2luZG93IGNvbnN0KToKKyAg
ICAgICAgKiBwYWdlL1JlbW90ZUZyYW1lLmg6IEFkZGVkLgorICAgICAgICAoaXNUeXBlKToKKwog
MjAxOC0wNC0xMSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5IGxlYWtzIGl0cyB3bF9kaXNw
bGF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CmluZGV4IGZmOTQyYjM2YTQ0ZjMzZmRkOTk4NWU2M2RmOGU5NTg5ZGFj
YTgyZWQuLjI1ZDMyZWVmN2E1NmI2NDg5MzRjNzdmNWEzMmJmZTMzOWM0ZmM5OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CkBAIC0xMzEwLDYgKzEzMTAsOCBAQCBtYXRobWwvTWF0aE1MVG9rZW5FbGVtZW50LmNw
cAogbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwCiBtYXRobWwvTWF0aE1MVW5rbm93
bkVsZW1lbnQuY3BwCiAKK3BhZ2UvQWJzdHJhY3RET01XaW5kb3cuY3BwCitwYWdlL0Fic3RyYWN0
RnJhbWUuY3BwCiBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcAogcGFnZS9CYXJQcm9wLmNw
cAogcGFnZS9CYXNlNjRVdGlsaXRpZXMuY3BwCkBAIC0xMzY5LDYgKzEzNzEsOCBAQCBwYWdlL1Bl
cmZvcm1hbmNlVGltaW5nLmNwcAogcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3BwCiBwYWdl
L1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKIHBhZ2UvUHJpbnRDb250ZXh0LmNwcAorcGFnZS9S
ZW1vdGVET01XaW5kb3cuY3BwCitwYWdlL1JlbW90ZUZyYW1lLmNwcAogcGFnZS9SZXNvdXJjZVVz
YWdlRGF0YS5jcHAKIHBhZ2UvUmVzb3VyY2VVc2FnZU92ZXJsYXkuY3BwCiBwYWdlL1Jlc291cmNl
VXNhZ2VUaHJlYWQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMmFlMGM4YTIyZDUyNTlmMGFkMjE4NjA4MTQ5MDFiYmI4NmNl
ODYzZC4uYzlkNGVkODg4ZmJjMGM4ZDA4YzgyMGFkN2FiMGMyNjYxN2U3MjIxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIw
MSw2ICsxMjAxLDEyIEBACiAJCTQ2ODM0NEUwMUVEREZBQUEwMEI3Nzk1QiAvKiBET01SZWN0TGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0
REUxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OUYxQUYxMjY3QkFFMTAwRThEMzgwIC8q
IEZpbGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QjYzRjZDMUM2RThE
MTkwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNF
dmVudFRhcmdldEN1c3RvbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRv
dy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUx
OEEyMDdENjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZCOTUxOTYyMDdENjMzQTAwQTdE
MkREIC8qIEFic3RyYWN0RnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2Qjk1MThGMjA3RDYzMkIwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZCOTUx
OTcyMDdENjM0MDAwQTdEMkREIC8qIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkwMjA3RDYzMkMwMEE3
RDJERCAvKiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZCOTUxOTgyMDdENjM0NzAwQTdEMkREIC8qIEds
b2JhbEZyYW1lSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZCOTUxOTEyMDdENjMyRDAwQTdEMkREIC8qIEdsb2JhbEZyYW1lSWRlbnRp
Zmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTQ2Qjk1MTk5MjA3RDYzNEQwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThFMjA3RDYzMkEwMEE3
RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJh
bWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1
MTkyMjA3RDYzMkUwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5NkNCMUU3MjA1RjcwMDU5NzkzNyAv
KiBDUFVNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5NkNDMUU3MjA1RkMw
MDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNw
cCAqLzsgfTsKIAkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJC
RTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzQzNCw2ICs3NDQwLDE2IEBACiAJCTQ2ODM0NERFMUVE
REZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01SZWN0TGlz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg5RjFBRTEyNjdCQUUxMDBFOEQz
ODAgLyogRmlsZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZp
bGVNZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4
Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRvdy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0QyREQgLyog
UmVtb3RlRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI5NTE4RDIwN0Q2
MzJBMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2Qjk1MThFMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlRE9NV2luZG93Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Qjk1MThGMjA3RDYzMkIwMEE3RDJERCAvKiBBYnN0
cmFjdEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0RnJh
bWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCOTUxOTAyMDdENjMyQzAwQTdE
MkREIC8qIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR2xvYmFsV2luZG93SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0NkI5NTE5MTIwN0Q2MzJEMDBBN0QyREQgLyogR2xvYmFsRnJhbWVJZGVudGlmaWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbEZyYW1lSWRlbnRpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkI5NTE5MjIwN0Q2MzJFMDBBN0Qy
REQgLyogUmVtb3RlRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCOTUxOTMyMDdENjMy
RjAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFic3RyYWN0RE9NV2luZG93LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDZCOTUxOTQyMDdENjMzMDAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RGcmFtZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAv
KiBDUFVNb25pdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENQVU1vbml0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNjk2Q0ExRTcyMDVFNDAwNTk3
OTM3IC8qIENQVU1vbml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ1BVTW9uaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzgzRUZC
MUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHZW9Ob3RpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xODk0NCw2ICsxODk2MCwxMCBAQAogCQkJCTE4QTZDRDZGMEQ4RjIwMjUwMDFEQzND
RSAvKiBpb3MgKi8sCiAJCQkJOTNDMDlBODIwQjA2NEYwNTAwNUFCRDREIC8qIG1hYyAqLywKIAkJ
CQkxQUY2MkVFMTE0REEyMkE3MDA0MTU1NkMgLyogc2Nyb2xsaW5nICovLAorCQkJCTQ2Qjk1MTkz
MjA3RDYzMkYwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5jcHAgKi8sCisJCQkJNDZCOTUx
OEEyMDdENjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi8sCisJCQkJNDZCOTUx
OTQyMDdENjMzMDAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuY3BwICovLAorCQkJCTQ2Qjk1MThG
MjA3RDYzMkIwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggKi8sCiAJCQkJNzI0RUU1NEUxREM3
RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLywKIAkJCQk3MjRFRTU0RjFEQzdGMjVC
MDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8sCiAJCQkJQkNGNDhD
RTYxMzcwRDExNDAwNEU4N0Q2IC8qIEFkanVzdFZpZXdTaXplT3JOb3QuaCAqLywKQEAgLTE5MDI1
LDcgKzE5MDQ1LDkgQEAKIAkJCQk2NUNCRkVGNzA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3
LmNwcCAqLywKIAkJCQk2NUNCRkVGODA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmggKi8s
CiAJCQkJNTc0RDQyNzkxRDU5NEZGNjAwMkNGNTBFIC8qIEdsb2JhbENyeXB0by5pZGwgKi8sCisJ
CQkJNDZCOTUxOTEyMDdENjMyRDAwQTdEMkREIC8qIEdsb2JhbEZyYW1lSWRlbnRpZmllci5oICov
LAogCQkJCTdDOTg5MjQ1MUY1QTA3NjUwMDkxREM3MCAvKiBHbG9iYWxQZXJmb3JtYW5jZS5pZGwg
Ki8sCisJCQkJNDZCOTUxOTAyMDdENjMyQzAwQTdEMkREIC8qIEdsb2JhbFdpbmRvd0lkZW50aWZp
ZXIuaCAqLywKIAkJCQlCQzk0RDE1MDBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5jcHAgKi8s
CiAJCQkJQkM5NEQxNTEwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuaCAqLywKIAkJCQlCQzk0
RDE1MjBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5pZGwgKi8sCkBAIC0xOTExOCw2ICsxOTE0
MCwxMCBAQAogCQkJCTM3NzJCMDk1MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNl
cnZlci5oICovLAogCQkJCUI3NzZENDNDMTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQu
Y3BwICovLAogCQkJCUI3NzZENDNBMTEwNDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAq
LywKKwkJCQk0NkI5NTE4RDIwN0Q2MzJBMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAq
LywKKwkJCQk0NkI5NTE4RTIwN0Q2MzJBMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggKi8s
CisJCQkJNDZCOTUxOEMyMDdENjMyOTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmNwcCAqLywKKwkJ
CQk0NkI5NTE5MjIwN0Q2MzJFMDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCAqLywKIAkJCQlBNTA3
MUU4QTFDNTZGQUZBMDA5OTUxQkUgLyogUmVzb3VyY2VVc2FnZURhdGEuY3BwICovLAogCQkJCUE1
MDcxRTgyMUM1NkQwNzkwMDk5NTFCRSAvKiBSZXNvdXJjZVVzYWdlRGF0YS5oICovLAogCQkJCUFE
QkFENkVDMUJDREQ5NTAwMDM4MTMyNSAvKiBSZXNvdXJjZVVzYWdlT3ZlcmxheS5jcHAgKi8sCkBA
IC0yNjY3Niw2ICsyNjcwMiw4IEBACiAJCQlmaWxlcyA9ICgKIAkJCQk3Q0QwRTJCODFGODBBNDgy
MDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJC
RjFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2
Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDZCOTUxOTYyMDdENjMzQTAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUY0ODIyMzEzMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3Rl
Ym9hcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAvKiBB
YnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMkUwRkJCOUMxRDAwNTEw
MjkzIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCBpbiBIZWFkZXJzICovLApAQCAtMjc2
NjMsNiArMjc2OTEsOCBAQAogCQkJCTBGQjYyNTJGMThERTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRy
eVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQx
IC8qIEdlb05vdGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyQTE0RjREREU2MDAz
RTdBNzAgLyogR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Qjk1MTk4MjA3RDYz
NDcwMEE3RDJERCAvKiBHbG9iYWxGcmFtZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQ2Qjk1MTk3MjA3RDYzNDAwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwODZCQkQwRjEzNjAzOUMyMDA4QjE1RDggLyogR2x5cGguaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyQzNEQTZDMEQwMDZDRDYwMEVGNkYyNiAvKiBHbHlwaEJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzVENEFBN0ExMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0
cmljc01hcC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTQyOSw2ICsyOTQ1OSw4IEBACiAJCQkJQTU3
OEY0M0YxREUwQjYzMDAwM0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNERkMzNjA2MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlz
dGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOEFDQTg5MUQyMzdBQTIwMEVDQzU5RSAvKiBS
ZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Qjk1MTk5MjA3
RDYzNEQwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2
Qjk1MTlBMjA3RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRDA2QzBEOEYwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1hdENvbW1hbmQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzMzA5RTA1MDk5RTY0OTIwMDU2RTU4MSAvKiBSZW1vdmVOb2RlQ29t
bWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMDcwOTlFNjQ5MjAwNTZFNTgxIC8qIFJl
bW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCA0NjY4MGFiNDhkZDhkOGEwNjdl
NzBhMzE0MGE4YTVjNjUzM2RmMTQxLi41MzM5ODI3NTE0ZWI0YTJhZGE4YzhhZjY1OWRhMWRhOTEy
ZTk4YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzEs
NyArMjMxLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdGUpCiAg
ICAgUmVmUHRyPEZyYW1lPiBmcmFtZSB7IG1fZG9jdW1lbnRMb2FkZXIuZnJhbWUoKSB9OwogICAg
IFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCB7IG1fYmxvY2tpbmdDb250ZW50Rmls
dGVyLT51bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCgpIH07CiAgICAgaWYgKCF1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUpIHsKLSAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2Y8VGhyZWFkU2FmZVJlZkNvdW50ZWQ8RnJhbWU+LCBGcmFtZT46
OnZhbHVlLCAiRnJhbWUgbXVzdCBiZSBUaHJlYWRTYWZlUmVmQ291bnRlZC4iKTsKKyAgICAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Y8VGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWJzdHJh
Y3RGcmFtZT4sIEZyYW1lPjo6dmFsdWUsICJGcmFtZSBtdXN0IGJlIFRocmVhZFNhZmVSZWZDb3Vu
dGVkLiIpOwogICAgICAgICB1bmJsb2NrSGFuZGxlci53cmFwV2l0aERlY2lzaW9uSGFuZGxlcihb
ZnJhbWUgPSBXVEZNb3ZlKGZyYW1lKSwgc2NyaXB0ID0gdW5ibG9ja1JlcXVlc3REZW5pZWRTY3Jp
cHQuaXNvbGF0ZWRDb3B5KCldKGJvb2wgdW5ibG9ja2VkKSB7CiAgICAgICAgICAgICBpZiAoIXVu
YmxvY2tlZCkKICAgICAgICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChz
Y3JpcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdERPTVdpbmRv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RE9NV2luZG93LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iYTc0NTE5YzFlZTI3ZGI3NTc3YzNiNjczMDQ4ZDZmZjU2YzQwM2FhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdERPTVdpbmRvdy5jcHAKQEAgLTAs
MCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJB
YnN0cmFjdERPTVdpbmRvdy5oIgorCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworSGFzaE1hcDxHbG9iYWxXaW5kb3dJZGVudGlmaWVyLCBB
YnN0cmFjdERPTVdpbmRvdyo+JiBBYnN0cmFjdERPTVdpbmRvdzo6YWxsV2luZG93cygpCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aE1hcDxHbG9iYWxXaW5kb3dJZGVudGlmaWVyLCBBYnN0cmFjdERPTVdpbmRvdyo+PiBtYXA7Cisg
ICAgcmV0dXJuIG1hcDsKK30KKworQWJzdHJhY3RET01XaW5kb3c6OkFic3RyYWN0RE9NV2luZG93
KEdsb2JhbFdpbmRvd0lkZW50aWZpZXImJiBpZGVudGlmaWVyKQorICAgIDogbV9pZGVudGlmaWVy
KFdURk1vdmUoaWRlbnRpZmllcikpCit7CisgICAgQVNTRVJUKCFhbGxXaW5kb3dzKCkuY29udGFp
bnMoaWRlbnRpZmllcikpOworICAgIGFsbFdpbmRvd3MoKS5hZGQoaWRlbnRpZmllciwgdGhpcyk7
Cit9CisKK0Fic3RyYWN0RE9NV2luZG93Ojp+QWJzdHJhY3RET01XaW5kb3coKQoreworICAgIEFT
U0VSVChhbGxXaW5kb3dzKCkuY29udGFpbnMoaWRlbnRpZmllcigpKSk7CisgICAgYWxsV2luZG93
cygpLnJlbW92ZShpZGVudGlmaWVyKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RE9NV2luZG93LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RE9NV2luZG93LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE1ZGViZDUz
MmFkOWEyMmU4ODRiYjY2YmM5ZGZhYjI4ZGRiYmNhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RET01XaW5kb3cuaApAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJCYXNlNjRVdGlsaXRpZXMuaCIKKyNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkdsb2JhbFdpbmRvd0lkZW50aWZpZXIu
aCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWJzdHJhY3RGcmFtZTsKKworLy8gRklY
TUU6IFJlbmFtZSBET01XaW5kb3cgdG8gTG9jYWxXaW5kb3cgYW5kIEFic3RyYWN0RE9NV2luZG93
IHRvIERPTVdpbmRvdy4KK2NsYXNzIEFic3RyYWN0RE9NV2luZG93IDogcHVibGljIFJlZkNvdW50
ZWQ8QWJzdHJhY3RET01XaW5kb3c+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+QWJzdHJhY3RET01XaW5kb3coKTsKKworICAgIHN0YXRp
YyBIYXNoTWFwPEdsb2JhbFdpbmRvd0lkZW50aWZpZXIsIEFic3RyYWN0RE9NV2luZG93Kj4mIGFs
bFdpbmRvd3MoKTsKKworICAgIGNvbnN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXImIGlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIHZpcnR1YWwgQWJzdHJh
Y3RGcmFtZSogZnJhbWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhbERP
TVdpbmRvdygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW1vdGVET01XaW5kb3co
KSBjb25zdCA9IDA7CisKKyAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CisgICAgdXNpbmcgUmVm
Q291bnRlZDo6ZGVyZWY7CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBBYnN0cmFjdERPTVdp
bmRvdyhHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYpOworCisgICAgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBET01XaW5kb3dF
dmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmlu
YWwgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYo
KTsgfQorCitwcml2YXRlOgorICAgIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIgbV9pZGVudGlmaWVy
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9BYnN0cmFjdEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RG
cmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYwZjZkYTYwYmYyMTNlOWY4MjcyYjJjZDNjY2FjYjEyMjdi
ODg4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFt
ZS5jcHAKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJBYnN0cmFjdEZyYW1lLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQWJz
dHJhY3RGcmFtZTo6QWJzdHJhY3RGcmFtZSgpCit7Cit9CisKK0Fic3RyYWN0RnJhbWU6On5BYnN0
cmFjdEZyYW1lKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Fic3RyYWN0RnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjExNWViNmNjYmMyMDMzMjUzM2RhYmFhNTYy
OTBiYWYwMWQxYmJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0
cmFjdEZyYW1lLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFic3RyYWN0RE9NV2lu
ZG93OworY2xhc3MgV2luZG93UHJveHlDb250cm9sbGVyOworCisvLyBGSVhNRTogUmVuYW1lIEZy
YW1lIHRvIExvY2FsRnJhbWUgYW5kIEFic3RyYWN0RnJhbWUgdG8gRnJhbWUuCitjbGFzcyBBYnN0
cmFjdEZyYW1lIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFic3RyYWN0RnJhbWU+IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BYnN0cmFjdEZyYW1lKCk7CisKKyAgICB2aXJ0dWFsIGJv
b2wgaXNMb2NhbEZyYW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1JlbW90ZUZy
YW1lKCkgY29uc3QgPSAwOworCisgICAgQWJzdHJhY3RET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0
IHsgcmV0dXJuIHZpcnR1YWxXaW5kb3coKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgQWJzdHJhY3RG
cmFtZSgpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgQWJzdHJhY3RET01XaW5kb3cqIHZpcnR1
YWxXaW5kb3coKSBjb25zdCA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggOTBjM2U4ZTVhNzgzOGRkMGJmOGJjNDBlOWY5ZTdi
MWUzODRhYzgwMS4uMDIxMGIwOGExODIxZGViMGM4OTA2YzlmZjA4MmE0NmFlMzdlYTdkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNDAxLDcgKzQwMSw4IEBAIHZvaWQgRE9NV2lu
ZG93OjpzZXRDYW5TaG93TW9kYWxEaWFsb2dPdmVycmlkZShib29sIGFsbG93KQogfQogCiBET01X
aW5kb3c6OkRPTVdpbmRvdyhEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlcigmZG9jdW1lbnQpCisgICAgOiBBYnN0cmFjdERPTVdpbmRvdyhHbG9iYWxX
aW5kb3dJZGVudGlmaWVyIHsgUHJvY2Vzczo6aWRlbnRpZmllcigpLCBnZW5lcmF0ZU9iamVjdElk
ZW50aWZpZXI8V2luZG93SWRlbnRpZmllclR5cGU+KCkgfSkKKyAgICAsIENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyKCZkb2N1bWVudCkKICAgICAsIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcihk
b2N1bWVudC5mcmFtZSgpKQogewogICAgIEFTU0VSVChmcmFtZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5oCmluZGV4IDRjNjZiNzI0ZTI5YWJiYjBhMGIyYmNiNjZkNTczMWNlODRlZDFkN2UuLjQ5
OWE1NThkMmVlMThkNTQ3NWZkMDgyOTQ1ZDY2YzM4ODhiOTk2MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaApAQCAtMjYsMTAgKzI2LDExIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
QWJzdHJhY3RET01XaW5kb3cuaCIKICNpbmNsdWRlICJCYXNlNjRVdGlsaXRpZXMuaCIKICNpbmNs
dWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkltYWdlQml0bWFwLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsVG9PcHRpb25zLmgiCkBAIC04Nyw5ICs4OCw5IEBAIHN0cnVjdCBX
aW5kb3dGZWF0dXJlczsKIGVudW0gU2V0TG9jYXRpb25Mb2NraW5nIHsgTG9ja0hpc3RvcnlCYXNl
ZE9uR2VzdHVyZVN0YXRlLCBMb2NrSGlzdG9yeUFuZEJhY2tGb3J3YXJkTGlzdCB9OwogCiAvLyBG
SVhNRTogRE9NV2luZG93IHNob3VsZG4ndCBzdWJjbGFzcyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2
ZXIgYW5kIGluc3RlYWQgc2hvdWxkIGdldCB0byBGcmFtZSB2aWEgaXRzIERvY3VtZW50LgorLy8g
RklYTUU6IFJlbmFtZSBET01XaW5kb3cgdG8gTG9jYWxXaW5kb3cgYW5kIEFic3RyYWN0RE9NV2lu
ZG93IHRvIERPTVdpbmRvdy4KIGNsYXNzIERPTVdpbmRvdyBmaW5hbAotICAgIDogcHVibGljIFJl
ZkNvdW50ZWQ8RE9NV2luZG93PgotICAgICwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURh
dGEKKyAgICA6IHB1YmxpYyBBYnN0cmFjdERPTVdpbmRvdwogICAgICwgcHVibGljIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyCiAgICAgLCBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVy
CiAgICAgLCBwdWJsaWMgQmFzZTY0VXRpbGl0aWVzCkBAIC0xOTgsNiArMTk5LDggQEAgcHVibGlj
OgogICAgIERPTVdpbmRvdyogcGFyZW50KCkgY29uc3Q7CiAgICAgRE9NV2luZG93KiB0b3AoKSBj
b25zdDsKIAorICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlcjo6ZnJhbWUoKTsgfQorCiAgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0
OwogCiAgICAgLy8gRE9NIExldmVsIDIgQWJzdHJhY3RWaWV3IEludGVyZmFjZQpAQCAtMjc2LDkg
KzI3OSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKCk7CiAKLSAgICB1
c2luZyBSZWZDb3VudGVkOjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7Ci0KICAg
ICAvLyBIVE1MIDUga2V5L3ZhbHVlIHN0b3JhZ2UKICAgICBFeGNlcHRpb25PcjxTdG9yYWdlKj4g
c2Vzc2lvblN0b3JhZ2UoKSBjb25zdDsKICAgICBFeGNlcHRpb25PcjxTdG9yYWdlKj4gbG9jYWxT
dG9yYWdlKCkgY29uc3Q7CkBAIC0zMzgsMTggKzMzOCwxNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IERPTVdpbmRvdyhEb2N1bWVudCYpOwogCi0gICAgRXZlbnRUYXJnZXRJbnRl
cmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBET01XaW5k
b3dFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCisgICAgYm9v
bCBpc0xvY2FsRE9NV2luZG93KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJv
b2wgaXNSZW1vdGVET01XaW5kb3coKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorCiAg
ICAgUGFnZSogcGFnZSgpOwogICAgIGJvb2wgYWxsb3dlZFRvQ2hhbmdlV2luZG93R2VvbWV0cnko
KSBjb25zdDsKIAogICAgIHZvaWQgZnJhbWVEZXN0cm95ZWQoKSBmaW5hbDsKICAgICB2b2lkIHdp
bGxEZXRhY2hQYWdlKCkgZmluYWw7CiAKLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwg
eyByZWYoKTsgfQotICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsg
fQotCiAgICAgc3RhdGljIFJlZlB0cjxGcmFtZT4gY3JlYXRlV2luZG93KGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgV2luZG93RmVh
dHVyZXMmLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRnJhbWUmIGZpcnN0RnJhbWUsIEZyYW1l
JiBvcGVuZXJGcmFtZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERPTVdpbmRvdyYpPiYgcHJl
cGFyZURpYWxvZ0Z1bmN0aW9uID0gbnVsbHB0cik7CiAgICAgYm9vbCBpc0luc2VjdXJlU2NyaXB0
QWNjZXNzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7
CiAKQEAgLTQzMiw1ICs0MzEsNiBAQCBpbmxpbmUgU3RyaW5nIERPTVdpbmRvdzo6ZGVmYXVsdFN0
YXR1cygpIGNvbnN0CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6RE9NV2luZG93KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpBYnN0cmFjdERPTVdpbmRvdyYgd2luZG93KSB7IHJldHVybiB3aW5kb3cu
aXNMb2NhbERPTVdpbmRvdygpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNv
cmU6OkV2ZW50VGFyZ2V0JiB0YXJnZXQpIHsgcmV0dXJuIHRhcmdldC5ldmVudFRhcmdldEludGVy
ZmFjZSgpID09IFdlYkNvcmU6OkRPTVdpbmRvd0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQog
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAyZWUz
NzVkZDBiMjdmMTlhYWEwMjZlMzQ4N2Q0Y2NkZjczMzMyZTY2Li44MDY3N2M0NWZlNmNkODQ4ODNm
ZWNkMzI1ODcwNTIyYzVlN2I0ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtOTM5LDYgKzkz
OSwxNiBAQCB2b2lkIEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6
ZSwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcgogICAgICAgICB2aWV3KCktPnNldENhbkhh
dmVTY3JvbGxiYXJzKG93bmVyLT5zY3JvbGxpbmdNb2RlKCkgIT0gU2Nyb2xsYmFyQWx3YXlzT2Zm
KTsKIH0KIAorRE9NV2luZG93KiBGcmFtZTo6d2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZG9jdW1lbnQoKSA/IGRvY3VtZW50KCktPmRvbVdpbmRvdygpIDogbnVsbHB0cjsKK30KKworQWJz
dHJhY3RET01XaW5kb3cqIEZyYW1lOjp2aXJ0dWFsV2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gd2luZG93KCk7Cit9CisKIFN0cmluZyBGcmFtZTo6bGF5ZXJUcmVlQXNUZXh0KExheWVyVHJl
ZUZsYWdzIGZsYWdzKSBjb25zdAogewogICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oCmluZGV4IGIzNWI4ZmQwNzU1ZjYzODMwMzgzOWNmMWM5YmU4ODIyYjg1ZjJh
MDAuLmRlZDk2Zjg5YmEzNTY2MTkwMTc2NWU3ZGEzMGZmMjM2MzVmNjg1ODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmgKQEAgLTI3LDEyICsyNywxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFi
c3RyYWN0RnJhbWUuaCIKICNpbmNsdWRlICJBZGp1c3RWaWV3U2l6ZU9yTm90LmgiCiAjaW5jbHVk
ZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJVc2Vy
U2NyaXB0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogI2lm
IFBMQVRGT1JNKElPUykKQEAgLTYxLDYgKzYxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDU1NBbmltYXRpb25Db250cm9sbGVyOwogY2xhc3MgQ29sb3I7CitjbGFzcyBET01XaW5k
b3c7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVkaXRvcjsKIGNsYXNzIEVsZW1lbnQ7CkBAIC0x
MTcsNyArMTE4LDggQEAgZW51bSB7CiB9OwogdHlwZWRlZiB1bnNpZ25lZCBMYXllclRyZWVGbGFn
czsKIAotY2xhc3MgRnJhbWUgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RnJh
bWU+IHsKKy8vIEZJWE1FOiBSZW5hbWUgRnJhbWUgdG8gTG9jYWxGcmFtZSBhbmQgQWJzdHJhY3RG
cmFtZSB0byBGcmFtZS4KK2NsYXNzIEZyYW1lIGZpbmFsIDogcHVibGljIEFic3RyYWN0RnJhbWUg
ewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhbWU+IGNyZWF0ZShQ
YWdlKiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgRnJhbWVMb2FkZXJDbGllbnQqKTsKIApAQCAt
MTM0LDYgKzEzNiw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5GcmFtZSgpOwog
CisgICAgRE9NV2luZG93KiB3aW5kb3coKSBjb25zdDsKKwogICAgIHZvaWQgYWRkRGVzdHJ1Y3Rp
b25PYnNlcnZlcihGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIqKTsKICAgICB2b2lkIHJlbW92ZURl
c3RydWN0aW9uT2JzZXJ2ZXIoRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKik7CiAKQEAgLTI5MSw2
ICsyOTUsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHJvcENoaWxkcmVuKCk7CiAKKyAgICBi
b29sIGlzTG9jYWxGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29s
IGlzUmVtb3RlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgQWJz
dHJhY3RET01XaW5kb3cqIHZpcnR1YWxXaW5kb3coKSBjb25zdCBmaW5hbDsKKwogICAgIEhhc2hT
ZXQ8RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKj4gbV9kZXN0cnVjdGlvbk9ic2VydmVyczsKIAog
ICAgIEZyYW1lJiBtX21haW5GcmFtZTsKQEAgLTM5MCwzICszOTksNyBAQCBpbmxpbmUgRnJhbWUm
IEZyYW1lOjptYWluRnJhbWUoKSBjb25zdAogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6RnJhbWUpCisgICAgc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkFic3RyYWN0RnJhbWUmIGZyYW1lKSB7IHJldHVy
biBmcmFtZS5pc0xvY2FsRnJhbWUoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGI2MTE3ZDUxMWYyMzNlZGIzZjNlNjBkYWQ0MzcxYzVhYzk4ZmJjYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdsb2JhbEZyYW1lSWRlbnRp
ZmllciB7CisgICAgdWludDY0X3QgcGFnZUlEOworICAgIHVpbnQ2NF90IGZyYW1lSUQ7CisKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8R2xvYmFsRnJh
bWVJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KK3ZvaWQgR2xvYmFsRnJhbWVJZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHBhZ2VJRCA8PCBmcmFtZUlEOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxHbG9iYWxGcmFtZUlkZW50aWZpZXI+
IEdsb2JhbEZyYW1lSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIGRlY29kZXIgPj4gcGFnZUlEOwor
ICAgIGlmICghcGFnZUlEKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKKyAgICBkZWNvZGVyID4+IGZyYW1lSUQ7Cisg
ICAgaWYgKCFmcmFtZUlEKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0
dXJuIHsgeyBXVEZNb3ZlKCpwYWdlSUQpLCBXVEZNb3ZlKCpmcmFtZUlEKSB9IH07Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xv
YmFsV2luZG93SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxXaW5kb3dJ
ZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdlMTlhOTRhOWIwYzNkZjQyMTAwNDViZWM1ZWI0ZDFl
Y2M3ZTA4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsV2lu
ZG93SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJQcm9jZXNzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4K
KyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2VudW0gV2luZG93SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgV2luZG93SWRlbnRpZmll
ciA9IE9iamVjdElkZW50aWZpZXI8V2luZG93SWRlbnRpZmllclR5cGU+OworCitzdHJ1Y3QgR2xv
YmFsV2luZG93SWRlbnRpZmllciB7CisgICAgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50
aWZpZXI7CisgICAgV2luZG93SWRlbnRpZmllciB3aW5kb3dJZGVudGlmaWVyOworCisgICAgdW5z
aWduZWQgaGFzaCgpIGNvbnN0OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEdsb2JhbFdpbmRvd0lkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7
Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdsb2JhbFdpbmRvd0lkZW50aWZp
ZXImIGEsIGNvbnN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXImIGIpCit7CisgICAgcmV0dXJuIGEu
cHJvY2Vzc0lkZW50aWZpZXIgPT0gYi5wcm9jZXNzSWRlbnRpZmllciAmJiAgYS53aW5kb3dJZGVu
dGlmaWVyID09IGIud2luZG93SWRlbnRpZmllcjsKK30KKworaW5saW5lIHVuc2lnbmVkIEdsb2Jh
bFdpbmRvd0lkZW50aWZpZXI6Omhhc2goKSBjb25zdAoreworICAgIHVuc2lnbmVkIGhhc2hlc1sy
XTsKKyAgICBoYXNoZXNbMF0gPSBXVEY6OmludEhhc2gocHJvY2Vzc0lkZW50aWZpZXIudG9VSW50
NjQoKSk7CisgICAgaGFzaGVzWzFdID0gV1RGOjppbnRIYXNoKHdpbmRvd0lkZW50aWZpZXIudG9V
SW50NjQoKSk7CisKKyAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KGhhc2hlcywg
c2l6ZW9mKGhhc2hlcykpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBHbG9i
YWxXaW5kb3dJZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyIDw8IHByb2Nlc3NJZGVudGlmaWVyIDw8IHdpbmRvd0lkZW50aWZpZXI7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPEdsb2JhbFdpbmRvd0lkZW50
aWZpZXI+IEdsb2JhbFdpbmRvd0lkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVy
OworICAgIGRlY29kZXIgPj4gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgaWYgKCFwcm9jZXNzSWRl
bnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9u
YWw8V2luZG93SWRlbnRpZmllcj4gd2luZG93SWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHdp
bmRvd0lkZW50aWZpZXI7CisgICAgaWYgKCF3aW5kb3dJZGVudGlmaWVyKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpwcm9jZXNzSWRlbnRp
ZmllciksIFdURk1vdmUoKndpbmRvd0lkZW50aWZpZXIpIH0gfTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IEdsb2JhbFdpbmRvd0lkZW50
aWZpZXJIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJDb3JlOjpHbG9i
YWxXaW5kb3dJZGVudGlmaWVyJiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiBhLCBj
b25zdCBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiBiKSB7IHJldHVybiBhID09IGI7
IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9
IHRydWU7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6Okdsb2Jh
bFdpbmRvd0lkZW50aWZpZXI+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6R2xvYmFsV2lu
ZG93SWRlbnRpZmllcj4geworICAgIHN0YXRpYyBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlm
aWVyIGVtcHR5VmFsdWUoKSB7IHJldHVybiB7IH07IH0KKworICAgIHN0YXRpYyB2b2lkIGNvbnN0
cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiBzbG90KSB7
IHNsb3Qud2luZG93SWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6Oldp
bmRvd0lkZW50aWZpZXJUeXBlPihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkp
OyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6R2xvYmFs
V2luZG93SWRlbnRpZmllciYgc2xvdCkgeyByZXR1cm4gc2xvdC53aW5kb3dJZGVudGlmaWVyLnRv
VUludDY0KCkgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOyB9Cit9Owor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVu
dGlmaWVyPiB7CisgICAgdHlwZWRlZiBHbG9iYWxXaW5kb3dJZGVudGlmaWVySGFzaCBIYXNoOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbW90ZURPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRv
dy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2I1MzhjNGI3MzkyMmVhOWFiMmJmOGZjY2YwMThlZDc4ODEzMDE4
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93
LmNwcApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVET01XaW5kb3cuaCIKKworI2luY2x1ZGUgIlJlbW90ZUZyYW1lLmgi
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UmVtb3RlRE9NV2luZG93OjpSZW1vdGVET01XaW5kb3coUmVmPFJlbW90ZUZyYW1lPiYmIGZyYW1l
LCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYgaWRlbnRpZmllcikKKyAgICA6IEFic3RyYWN0RE9N
V2luZG93KFdURk1vdmUoaWRlbnRpZmllcikpCisgICAgLCBtX2ZyYW1lKFdURk1vdmUoZnJhbWUp
KQoreworICAgIG1fZnJhbWUtPnNldFdpbmRvdyh0aGlzKTsKK30KKworUmVtb3RlRE9NV2luZG93
Ojp+UmVtb3RlRE9NV2luZG93KCkKK3sKKyAgICBtX2ZyYW1lLT5zZXRXaW5kb3cobnVsbHB0cik7
Cit9CisKK1JlbW90ZURPTVdpbmRvdyogUmVtb3RlRE9NV2luZG93OjpzZWxmKCkgY29uc3QKK3sK
KyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBj
b25zdF9jYXN0PFJlbW90ZURPTVdpbmRvdyo+KHRoaXMpOworfQorCitMb2NhdGlvbiogUmVtb3Rl
RE9NV2luZG93Ojpsb2NhdGlvbigpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudGVk
IHRoaXMuCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlRE9NV2luZG93Ojpj
bG9zZShEb2N1bWVudCYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudGVkIHRoaXMuCit9CisK
K2Jvb2wgUmVtb3RlRE9NV2luZG93OjpjbG9zZWQoKSBjb25zdAoreworICAgIHJldHVybiAhbV9m
cmFtZTsKK30KKwordm9pZCBSZW1vdGVET01XaW5kb3c6OmZvY3VzKERPTVdpbmRvdyYgaW5jdW1i
ZW50V2luZG93KQoreworICAgIFVOVVNFRF9QQVJBTShpbmN1bWJlbnRXaW5kb3cpOworICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnRlZCB0aGlzLgorfQorCit2b2lkIFJlbW90ZURPTVdpbmRvdzo6Ymx1
cigpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudGVkIHRoaXMuCit9CisKK3Vuc2lnbmVkIFJl
bW90ZURPTVdpbmRvdzo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50
ZWQgdGhpcy4KKyAgICByZXR1cm4gMDsKK30KKworUmVtb3RlRE9NV2luZG93KiBSZW1vdGVET01X
aW5kb3c6OnRvcCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnRlZCB0aGlzLgorICAgIHJldHVybiBj
b25zdF9jYXN0PFJlbW90ZURPTVdpbmRvdyo+KHRoaXMpOworfQorCitET01XaW5kb3cqIFJlbW90
ZURPTVdpbmRvdzo6b3BlbmVyKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50ZWQg
dGhpcy4KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVtb3RlRE9NV2luZG93KiBSZW1vdGVE
T01XaW5kb3c6OnBhcmVudCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnRlZCB0aGlzLgorICAgIHJl
dHVybiBjb25zdF9jYXN0PFJlbW90ZURPTVdpbmRvdyo+KHRoaXMpOworfQorCitFeGNlcHRpb25P
cjx2b2lkPiBSZW1vdGVET01XaW5kb3c6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiwgRE9N
V2luZG93JiBpbmN1bWJlbnRXaW5kb3csIEpTQzo6SlNWYWx1ZSBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIHRhcmdldE9yaWdpbiwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmKQor
eworICAgIFVOVVNFRF9QQVJBTShpbmN1bWJlbnRXaW5kb3cpOworICAgIFVOVVNFRF9QQVJBTSht
ZXNzYWdlKTsKKyAgICBVTlVTRURfUEFSQU0odGFyZ2V0T3JpZ2luKTsKKworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnRlZCB0aGlzLgorICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRF
cnJvciB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1v
dGVET01XaW5kb3cuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTJmMWZkMTY3ODYyZWEyY2Q4M2Y5OGVkODkxZWM2
M2VjMjRiZWJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVE
T01XaW5kb3cuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJBYnN0cmFjdERPTVdpbmRvdy5oIgorI2luY2x1ZGUgIlJlbW90ZUZyYW1lLmgi
CisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4
ZWNTdGF0ZTsKK2NsYXNzIEpTT2JqZWN0OworY2xhc3MgSlNWYWx1ZTsKK3RlbXBsYXRlPHR5cGVu
YW1lPiBjbGFzcyBTdHJvbmc7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9N
V2luZG93OworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBMb2NhdGlvbjsKKworY2xhc3MgUmVtb3Rl
RE9NV2luZG93IGZpbmFsIDogcHVibGljIEFic3RyYWN0RE9NV2luZG93IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPFJlbW90ZURPTVdpbmRvdz4gY3JlYXRlKFJlZjxSZW1vdGVGcmFtZT4mJiBm
cmFtZSwgR2xvYmFsV2luZG93SWRlbnRpZmllciYmIGlkZW50aWZpZXIpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVET01XaW5kb3coV1RGTW92ZShmcmFtZSksIFdU
Rk1vdmUoaWRlbnRpZmllcikpKTsKKyAgICB9CisKKyAgICB+UmVtb3RlRE9NV2luZG93KCkgZmlu
YWw7CisKKyAgICBSZW1vdGVGcmFtZSogZnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Zy
YW1lLmdldCgpOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIC8vIERPTSBB
UEkuCisgICAgUmVtb3RlRE9NV2luZG93KiBzZWxmKCkgY29uc3Q7CisgICAgTG9jYXRpb24qIGxv
Y2F0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBjbG9zZShEb2N1bWVudCYpOworICAgIGJvb2wgY2xv
c2VkKCkgY29uc3Q7CisgICAgdm9pZCBmb2N1cyhET01XaW5kb3cmIGluY3VtYmVudFdpbmRvdyk7
CisgICAgdm9pZCBibHVyKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAgUmVt
b3RlRE9NV2luZG93KiB0b3AoKSBjb25zdDsKKyAgICBET01XaW5kb3cqIG9wZW5lcigpIGNvbnN0
OworICAgIFJlbW90ZURPTVdpbmRvdyogcGFyZW50KCkgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8
dm9pZD4gcG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBET01XaW5kb3cmIGluY3VtYmVudFdp
bmRvdywgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBW
ZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYpOworCitwcml2YXRlOgorICAgIFdF
QkNPUkVfRVhQT1JUIFJlbW90ZURPTVdpbmRvdyhSZWY8UmVtb3RlRnJhbWU+JiYsIEdsb2JhbFdp
bmRvd0lkZW50aWZpZXImJik7CisKKyAgICBib29sIGlzUmVtb3RlRE9NV2luZG93KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNMb2NhbERPTVdpbmRvdygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBSZWZQdHI8UmVtb3RlRnJhbWU+IG1fZnJh
bWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQkVHSU4oV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93KQorICAgIHN0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpBYnN0cmFjdERPTVdpbmRvdyYgd2luZG93KSB7IHJldHVybiB3aW5k
b3cuaXNSZW1vdGVET01XaW5kb3coKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDEwYzM3YzVjYzEyMDli
YmIzZGQ4MWJhMjM0MWFhZDQyZGJjYmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVGcmFtZS5oIgorCisjaW5jbHVkZSAi
UmVtb3RlRE9NV2luZG93LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVtb3RlRnJhbWU6
OlJlbW90ZUZyYW1lKEdsb2JhbEZyYW1lSWRlbnRpZmllciYmIGZyYW1lSWRlbnRpZmllcikKKyAg
ICA6IG1faWRlbnRpZmllcihXVEZNb3ZlKGZyYW1lSWRlbnRpZmllcikpCit7Cit9CisKK1JlbW90
ZUZyYW1lOjp+UmVtb3RlRnJhbWUoKQoreworfQorCitBYnN0cmFjdERPTVdpbmRvdyogUmVtb3Rl
RnJhbWU6OnZpcnR1YWxXaW5kb3coKSBjb25zdAoreworICAgIHJldHVybiB3aW5kb3coKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM2ZmMzZmIxOTcxYjU2MzI3ZTE1MzUyZDFhMThlOWFlNDM5MGQ5MjIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmgKQEAgLTAsMCArMSw2
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWJzdHJhY3RGcmFt
ZS5oIgorI2luY2x1ZGUgIkdsb2JhbEZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KKyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgUmVtb3RlRE9NV2luZG93OworCitjbGFzcyBSZW1vdGVGcmFtZSBmaW5hbCA6IHB1
YmxpYyBBYnN0cmFjdEZyYW1lIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUZyYW1l
PiBjcmVhdGUoR2xvYmFsRnJhbWVJZGVudGlmaWVyJiYgZnJhbWVJZGVudGlmaWVyKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCogbmV3IFJlbW90ZUZyYW1lKFdURk1vdmUoZnJhbWVJ
ZGVudGlmaWVyKSkpOworICAgIH0KKyAgICB+UmVtb3RlRnJhbWUoKTsKKworICAgIGNvbnN0IEds
b2JhbEZyYW1lSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfQorCisgICAgdm9pZCBzZXRXaW5kb3coUmVtb3RlRE9NV2luZG93KiB3aW5kb3cpIHsg
bV93aW5kb3cgPSB3aW5kb3c7IH0KKyAgICBSZW1vdGVET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0
IHsgcmV0dXJuIG1fd2luZG93OyB9CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgUmVtb3RlRnJhbWUoR2xvYmFsRnJhbWVJZGVudGlmaWVyJiYpOworCisgICAgYm9vbCBp
c1JlbW90ZUZyYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNM
b2NhbEZyYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIEFic3RyYWN0
RE9NV2luZG93KiB2aXJ0dWFsV2luZG93KCkgY29uc3QgZmluYWw7CisKKyAgICBHbG9iYWxGcmFt
ZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFJlbW90ZURPTVdpbmRvdyogbV93aW5kb3cg
eyBudWxscHRyIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6UmVtb3RlRnJhbWUpCisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OkFic3RyYWN0RnJhbWUmIGZyYW1lKSB7IHJldHVybiBmcmFt
ZS5pc1JlbW90ZUZyYW1lKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337738</attachid>
            <date>2018-04-11 15:01:18 -0700</date>
            <delta_ts>2018-04-12 16:55:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184467-20180411150117.patch</filename>
            <type>text/plain</type>
            <size>51131</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzY3YWViMDdlMzcwMWI0
ZjY5ZjQxZjNhNmQ1MWEyZDY5NjE1MDI0ZS4uMDJmMjhhNGE5ZmFhYmFiMWQzMTMyZThhMjYwNTdl
NDY2YjYzZGZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxOC0wNC0xMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSByZW1vdGUg
dmFyaWFudHMgb2YgRnJhbWUgLyBET01XaW5kb3cgY2xhc3NlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NDY3CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zOTAxMTI2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbnRyb2R1Y2UgcmVtb3RlIHZhcmlhbnRzIG9mIEZyYW1lIC8gRE9NV2luZG93IGNs
YXNzZXMsIGZvciB3aGVuIHRoZXNlIGZyYW1lcyAvIHdpbmRvd3MKKyAgICAgICAgYXJlIGhvc3Rl
ZCBvbiBhbm90aGVyIFdlYlByb2Nlc3MuIFRob3NlIHdpbGwgYmUgdXNlZCBpbiBhIGZvbGxvdy11
cCBwYXRjaC4KKworICAgICAgICBUaGUgaGllcmFyY2h5IGlzIGFzIGZvbGxvd3MgKGNsYXNzIG5h
bWluZyB3aWxsIGJlIGltcHJvdmVkIGluIGEgZm9sbG93LXVwIHBhdGNoIHRvIG1pbmltaXNlCisg
ICAgICAgIHBhdGNoIHNpemUpOgorICAgICAgICAtIEFic3RyYWN0RnJhbWU6IEEgZnJhbWUgdGhh
dCBjYW4gYmUgZWl0aGVyIGxvY2FsIG9yIHJlbW90ZSAoaG9zdGVkIG9uIGFub3RoZXIgV2ViUHJv
Y2VzcykKKyAgICAgICAgICAgIC0gRnJhbWU6IEEgbG9jYWwgZnJhbWUKKyAgICAgICAgICAgIC0g
UmVtb3RlRnJhbWU6IEEgZnJhbWUgaG9zdGVkIG9uIGFub3RoZXIgV2ViUHJvY2Vzcy4gQSBSZW1v
dGVGcmFtZSdzIHdpbmRvdyBpcyBhbHNvIHJlbW90ZS4KKyAgICAgICAgLSBBYnN0cmFjdERPTVdp
bmRvdzogQSB3aW5kb3cgdGhhdCBiZSBlaXRoZXIgbG9jYWwgb3IgcmVtb3RlIChob3N0ZWQgb24g
YW5vdGhlciBXZWJQcm9jZXNzKQorICAgICAgICAgICAgLSBET01XaW5kb3c6IEEgbG9jYWwgRE9N
V2luZG93CisgICAgICAgICAgICAtIFJlbW90ZURPTVdpbmRvdzogQSB3aW5kb3cgaG9zdGVkIG9u
IGFub3RoZXIgV2ViUHJvY2Vzcy4gQSBSZW1vdGVET01XaW5kb3cncyBmcmFtZSBpcyBhbHNvCisg
ICAgICAgICAgICAgIHJlbW90ZS4gQSBSZW1vdGVET01XaW5kb3cgaXMgYWx3YXlzIGNyb3NzLW9y
aWdpbi4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgZ2xvYmFsIGlkZW50aWZpZXJz
ICh1bmlxdWUgYWNyb3NzIGFsbCBXZWJQcm9jZXNzZXMpIGZvciBib3RoIEZyYW1lcyBhbmQKKyAg
ICAgICAgV2luZG93cy4gVGhpcyBpcyB1c2VmdWwgYXMgd2UgbmVlZCB0byBrbm93IHdoaWNoIEZy
YW1lIC8gRE9NV2luZG93IGEgcGFydGljdWxhciBSZW1vdGVGcmFtZSAvCisgICAgICAgIFJlbW90
ZURPTVdpbmRvdyBpcyBwb2ludGluZyB0by4KKworICAgICAgICBGb2xsb3ctdXAgcGF0Y2ggd2ls
bCBhZGQgc3VwcG9ydCBmb3IgY29udmVydGluZyBhIGxvY2FsIERPTVdpbmRvdyAvIEZyYW1lIGlu
dG8gYSByZW1vdGUgb25lcywKKyAgICAgICAgd2hlbiBhIG5ld2x5IG9wZW5lZCB3aW5kb3cgKHZp
YSB3aW5kb3cub3BlbikgaXMgbmF2aWdhdGVkIGNyb3NzLW9yaWdpbiAoQnVnIDE4NDUxNSkuCisK
KyAgICAgICAgT3RoZXIgdGhpbmdzIHdlJ2xsIG5lZWQgdG8gaW1wbGVtZW50IGluIGZvbGxvdy11
cHM6CisgICAgICAgIC0gUmVtb3RlRE9NV2luZG93IHdpbGwgbmVlZCB0byBrbm93IGFib3V0IGl0
cyBvcGVuZXIgaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGUgd2luZG93Lm9wZW5lcgorICAgICAgICAg
IEFQSS4gSW50ZXJuYWxseSwgdGhlIG9wZW5lciB3aWxsIGJlIHN0b3JlZCBhcyBhIFJlbW90ZUZy
YW1lIHNvIHRoYXQgd2luZG93Lm9wZW5lciBhbHdheXMKKyAgICAgICAgICByZXR1cm5zIHRoZSBj
dXJyZW50IHdpbmRvdyBpbiB0aGUgb3BlbmVyIGZyYW1lICh3aGljaCBjaGFuZ2VzIHVwb24gbmF2
aWdhdGlvbikuCisgICAgICAgIC0gTnVsbGlmeSBhIFJlbW90ZURPTVdpbmRvdydzIGZyYW1lIHdo
ZW5ldmVyIHRoZSB3aW5kb3cgaXQgaXMgcG9pbnRpbmcgdG8gYmVjb21lcyBmcmFtZWxlc3MuCisg
ICAgICAgICAgQSBmcmFtZWxlc3Mgd2luZG93IGJlaGF2ZXMgdmVyeSBkaWZmZXJlbnRseSAoZS5n
LiB2ZXJ5IGxpdHRsZSBBUEkgaXMgZXhwb3NlZCB0byB0aGUgV2ViKS4KKyAgICAgICAgICBUaGlz
IGhhcHBlbnMgd2hlbiBlaXRoZXIgdGhlIG5ld2x5IG9wZW5lZCB3aW5kb3cgaXMgZWl0aGVyIGNs
b3NlZCBvciBuYXZpZ2F0ZWQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGlkRGVjaWRl
KToKKyAgICAgICAgKiBwYWdlL0Fic3RyYWN0RE9NV2luZG93LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpBYnN0cmFjdERPTVdpbmRvdzo6QWJzdHJhY3RET01XaW5kb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6QWJzdHJhY3RET01XaW5kb3c6On5BYnN0cmFjdERPTVdpbmRvdyk6CisgICAg
ICAgICogcGFnZS9BYnN0cmFjdERPTVdpbmRvdy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFic3RyYWN0RE9NV2luZG93OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0Fi
c3RyYWN0RnJhbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RnJhbWU6
OkFic3RyYWN0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RGcmFtZTo6fkFic3Ry
YWN0RnJhbWUpOgorICAgICAgICAqIHBhZ2UvQWJzdHJhY3RGcmFtZS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFic3RyYWN0RnJhbWU6OndpbmRvdyBjb25zdCk6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpET01XaW5kb3cp
OgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OndpbmRvdyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6dmlydHVhbFdpbmRvdyBjb25zdCk6CisgICAg
ICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBwYWdlL0ds
b2JhbEZyYW1lSWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdsb2JhbEZy
YW1lSWRlbnRpZmllcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okdsb2JhbEZy
YW1lSWRlbnRpZmllcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwYWdlL0dsb2JhbFdpbmRvd0lkZW50
aWZpZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXI6Omhhc2ggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6R2xvYmFsV2luZG93SWRlbnRpZmllcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXI6OmRlY29kZSk6CisgICAgICAgIChXVEY6
Okdsb2JhbFdpbmRvd0lkZW50aWZpZXJIYXNoOjpoYXNoKToKKyAgICAgICAgKFdURjo6R2xvYmFs
V2luZG93SWRlbnRpZmllckhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxX
ZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyPjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChX
VEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6R2xvYmFsV2luZG93SWRlbnRpZmllcj46OmNvbnN0cnVj
dERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6R2xvYmFs
V2luZG93SWRlbnRpZmllcj46OmlzRGVsZXRlZFZhbHVlKToKKworICAgICAgICAqIHBhZ2UvUmVt
b3RlRE9NV2luZG93LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVET01XaW5k
b3c6OlJlbW90ZURPTVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVET01XaW5kb3c6
On5SZW1vdGVET01XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93Ojpz
ZWxmIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURPTVdpbmRvdzo6bG9jYXRpb24g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRE9NV2luZG93OjpjbG9zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVET01XaW5kb3c6OmNsb3NlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW1vdGVET01XaW5kb3c6OmZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZURPTVdpbmRvdzo6Ymx1cik6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVET01XaW5kb3c6Omxl
bmd0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVET01XaW5kb3c6OnRvcCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVET01XaW5kb3c6Om9wZW5lciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW1vdGVET01XaW5kb3c6OnBhcmVudCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVET01XaW5kb3c6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgVGhlIERP
TSBBUEkgZXhwb3NlZCBvbiBSZW1vdGVET01XaW5kb3cgaXMgb25seSB0aGUgc3Vic2V0IG9mIHRo
ZSBET01XaW5kb3cgQVBJIHRoYXQgaXMgZXhwb3NlZCBjcm9zcyBvcmlnaW4sCisgICAgICAgIHNp
bmNlIHJlbW90ZSBET01XaW5kb3cgYXJlIGFsd2F5cyBmcm9tIGEgZGlmZmVyZW50IG9yaWdpbi4g
VGhlIHNob3J0LXRlcm0gcGxhbiBpcyB0byBpbXBsZW1lbnQgdGhlc2UgaW4gYQorICAgICAgICBm
b2xsb3ctdXAgYnkgcmVseWluZyBvbiBJUEMgKHN5bmNocm9ub3VzIHdoZW4gbmVjZXNzYXJ5KSB0
byBmZXRjaCB0aGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgcmVhbCB3aW5kb3cgaW4KKyAgICAgICAg
dGhlIFdlYlByb2Nlc3Mgd2hlcmUgaXQgbGl2ZXMuIExvbmdlciB0ZXJtLCB3ZSBzaG91bGQgcHJv
YmFibHkga2VlcCBSZW1vdGVET01XaW5kb3cgbWVtYmVycyBpbiBzeW5jIHdpdGggdGhlCisgICAg
ICAgIERPTVdpbmRvdyB0aGV5J3JlIHBvaW50aW5nIHRvLCBzbyB3ZSBkbyBub3QgaGF2ZSB0byBy
ZWx5IG9uIHN5bmNocm9ub3VzIElQQy4KKworICAgICAgICAqIHBhZ2UvUmVtb3RlRE9NV2luZG93
Lmg6IEFkZGVkLgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBwYWdlL1JlbW90ZUZyYW1l
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVGcmFtZTo6UmVtb3RlRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRnJhbWU6On5SZW1vdGVGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW1vdGVGcmFtZTo6dmlydHVhbFdpbmRvdyBjb25zdCk6CisgICAgICAgICog
cGFnZS9SZW1vdGVGcmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKGlzVHlwZSk6CisKIDIwMTgtMDQt
MTEgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdIFdheWxhbmRDb21wb3NpdG9yRGlzcGxheSBsZWFrcyBpdHMgd2xfZGlzcGxheQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAppbmRleCBmZjk0MmIzNmE0NGYzM2ZkZDk5ODVlNjNkZjhlOTU4OWRhY2E4MmVkLi4y
NWQzMmVlZjdhNTZiNjQ4OTM0Yzc3ZjVhMzJiZmUzMzljNGZjOTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApA
QCAtMTMxMCw2ICsxMzEwLDggQEAgbWF0aG1sL01hdGhNTFRva2VuRWxlbWVudC5jcHAKIG1hdGht
bC9NYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcAogbWF0aG1sL01hdGhNTFVua25vd25FbGVtZW50
LmNwcAogCitwYWdlL0Fic3RyYWN0RE9NV2luZG93LmNwcAorcGFnZS9BYnN0cmFjdEZyYW1lLmNw
cAogcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAKIHBhZ2UvQmFyUHJvcC5jcHAKIHBhZ2Uv
QmFzZTY0VXRpbGl0aWVzLmNwcApAQCAtMTM2OSw2ICsxMzcxLDggQEAgcGFnZS9QZXJmb3JtYW5j
ZVRpbWluZy5jcHAKIHBhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcAogcGFnZS9Qb2ludGVy
TG9ja0NvbnRyb2xsZXIuY3BwCiBwYWdlL1ByaW50Q29udGV4dC5jcHAKK3BhZ2UvUmVtb3RlRE9N
V2luZG93LmNwcAorcGFnZS9SZW1vdGVGcmFtZS5jcHAKIHBhZ2UvUmVzb3VyY2VVc2FnZURhdGEu
Y3BwCiBwYWdlL1Jlc291cmNlVXNhZ2VPdmVybGF5LmNwcAogcGFnZS9SZXNvdXJjZVVzYWdlVGhy
ZWFkLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDJhZTBjOGEyMmQ1MjU5ZjBhZDIxODYwODE0OTAxYmJiODZjZTg2M2QuLmM5
ZDRlZDg4OGZiYzBjOGQwOGM4MjBhZDdhYjBjMjY2MTdlNzIyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMDEsNiArMTIw
MSwxMiBAQAogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZB
NUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODlGMUFGMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0
YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkx
NEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJn
ZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThBMjA3RDYz
MjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2Qjk1MTk2MjA3RDYzM0EwMEE3RDJERCAvKiBB
YnN0cmFjdEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkI5NTE4RjIwN0Q2MzJCMDBBN0QyREQgLyogQWJzdHJhY3RGcmFtZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2Qjk1MTk3MjA3RDYz
NDAwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE5MDIwN0Q2MzJDMDBBN0QyREQgLyog
R2xvYmFsV2luZG93SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTQ2Qjk1MTk4MjA3RDYzNDcwMEE3RDJERCAvKiBHbG9iYWxGcmFt
ZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2Qjk1MTkxMjA3RDYzMkQwMEE3RDJERCAvKiBHbG9iYWxGcmFtZUlkZW50aWZpZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkI5NTE5
OTIwN0Q2MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4RTIwN0Q2MzJBMDBBN0QyREQgLyog
UmVtb3RlRE9NV2luZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNDZCOTUxOUEyMDdENjM1NDAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE5MjIwN0Q2
MzJFMDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkM2OTZDQjFFNzIwNUY3MDA1OTc5MzcgLyogQ1BVTW9u
aXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZD
Njk2QzkxRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkM2OTZDQzFFNzIwNUZDMDA1OTc5Mzcg
LyogQ1BVTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkM2OTZDQTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi87IH07
CiAJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5
QTQxIC8qIEdlb05vdGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTc0MzQsNiArNzQ0MCwxNiBAQAogCQk0NjgzNDRERTFFRERGQTVGMDBC
Nzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NUmVjdExpc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8qIEZp
bGVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlTWV0YWRh
dGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCNjNGNkIxQzZFOENERjAwMkU5
MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNFdmVudFRhcmdldEN1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NkI5NTE4QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RET01XaW5kb3cuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCOTUxOEMyMDdENjMyOTAwQTdEMkREIC8qIFJlbW90ZUZy
YW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUZyYW1l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCOTUxOEQyMDdENjMyQTAwQTdE
MkREIC8qIFJlbW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVET01XaW5kb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NkI5NTE4RTIwN0Q2MzJBMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZURPTVdpbmRvdy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0NkI5NTE4RjIwN0Q2MzJCMDBBN0QyREQgLyogQWJzdHJhY3RGcmFt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdEZyYW1lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Qjk1MTkwMjA3RDYzMkMwMEE3RDJERCAvKiBH
bG9iYWxXaW5kb3dJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDZCOTUxOTEyMDdENjMyRDAwQTdEMkREIC8qIEdsb2JhbEZyYW1lSWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbG9iYWxGcmFtZUlkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCOTUxOTIyMDdENjMyRTAwQTdEMkREIC8qIFJl
bW90ZUZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUZyYW1l
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Qjk1MTkzMjA3RDYzMkYwMEE3RDJE
RCAvKiBBYnN0cmFjdERPTVdpbmRvdy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBYnN0cmFjdERPTVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQ2Qjk1MTk0MjA3RDYzMzAwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFic3RyYWN0RnJhbWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9u
aXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDUFVNb25pdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBD
UFVNb25pdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENQVU1v
bml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM4M0VGQjFBOUJCRTI5
MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gR2VvTm90aWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTg5NDQsNiArMTg5NjAsMTAgQEAKIAkJCQkxOEE2Q0Q2RjBEOEYyMDI1MDAxREMzQ0UgLyogaW9z
ICovLAogCQkJCTkzQzA5QTgyMEIwNjRGMDUwMDVBQkQ0RCAvKiBtYWMgKi8sCiAJCQkJMUFGNjJF
RTExNERBMjJBNzAwNDE1NTZDIC8qIHNjcm9sbGluZyAqLywKKwkJCQk0NkI5NTE5MzIwN0Q2MzJG
MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuY3BwICovLAorCQkJCTQ2Qjk1MThBMjA3RDYz
MjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICovLAorCQkJCTQ2Qjk1MTk0MjA3RDYz
MzAwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmNwcCAqLywKKwkJCQk0NkI5NTE4RjIwN0Q2MzJC
MDBBN0QyREQgLyogQWJzdHJhY3RGcmFtZS5oICovLAogCQkJCTcyNEVFNTRFMURDN0YyNUIwMEE5
MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggKi8sCiAJCQkJNzI0RUU1NEYxREM3RjI1QjAwQTkxRkZC
IC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovLAogCQkJCUJDRjQ4Q0U2MTM3MEQx
MTQwMDRFODdENiAvKiBBZGp1c3RWaWV3U2l6ZU9yTm90LmggKi8sCkBAIC0xOTAyNSw3ICsxOTA0
NSw5IEBACiAJCQkJNjVDQkZFRjcwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8s
CiAJCQkJNjVDQkZFRjgwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oICovLAogCQkJCTU3
NEQ0Mjc5MUQ1OTRGRjYwMDJDRjUwRSAvKiBHbG9iYWxDcnlwdG8uaWRsICovLAorCQkJCTQ2Qjk1
MTkxMjA3RDYzMkQwMEE3RDJERCAvKiBHbG9iYWxGcmFtZUlkZW50aWZpZXIuaCAqLywKIAkJCQk3
Qzk4OTI0NTFGNUEwNzY1MDA5MURDNzAgLyogR2xvYmFsUGVyZm9ybWFuY2UuaWRsICovLAorCQkJ
CTQ2Qjk1MTkwMjA3RDYzMkMwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyLmggKi8s
CiAJCQkJQkM5NEQxNTAwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuY3BwICovLAogCQkJCUJD
OTREMTUxMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmggKi8sCiAJCQkJQkM5NEQxNTIwQzI3
NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuaWRsICovLApAQCAtMTkxMTgsNiArMTkxNDAsMTAgQEAK
IAkJCQkzNzcyQjA5NTE2NTM1ODU2MDAwQTQ5Q0EgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCAq
LywKIAkJCQlCNzc2RDQzQzExMDQ1Mjc1MDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmNwcCAqLywK
IAkJCQlCNzc2RDQzQTExMDQ1MjVEMDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmggKi8sCisJCQkJ
NDZCOTUxOEQyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5jcHAgKi8sCisJCQkJ
NDZCOTUxOEUyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5oICovLAorCQkJCTQ2
Qjk1MThDMjA3RDYzMjkwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5jcHAgKi8sCisJCQkJNDZCOTUx
OTIyMDdENjMyRTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmggKi8sCiAJCQkJQTUwNzFFOEExQzU2
RkFGQTAwOTk1MUJFIC8qIFJlc291cmNlVXNhZ2VEYXRhLmNwcCAqLywKIAkJCQlBNTA3MUU4MjFD
NTZEMDc5MDA5OTUxQkUgLyogUmVzb3VyY2VVc2FnZURhdGEuaCAqLywKIAkJCQlBREJBRDZFQzFC
Q0REOTUwMDAzODEzMjUgLyogUmVzb3VyY2VVc2FnZU92ZXJsYXkuY3BwICovLApAQCAtMjY2NzYs
NiArMjY3MDIsOCBAQAogCQkJZmlsZXMgPSAoCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZBNENF
IC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgwQTU2
RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkI5NTE5NTIw
N0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQ2Qjk1MTk2MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNDgyMjMxMzFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RX
b3JrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJFMEZCQjlDMUQwMDUxMDI5MyAvKiBB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NjYzLDYgKzI3
NjkxLDggQEAKIAkJCQkwRkI2MjUyRjE4REUxQjE1MDBBMDdDMDUgLyogR2VvbWV0cnlVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9O
b3RpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMkExNEY0RERFNjAwM0U3QTcwIC8q
IEdlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkI5NTE5ODIwN0Q2MzQ3MDBBN0Qy
REQgLyogR2xvYmFsRnJhbWVJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkI5NTE5
NzIwN0Q2MzQwMDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDg2QkJEMEYxMzYwMzlDMjAwOEIxNUQ4IC8qIEdseXBoLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMkMzREE2QzBEMDA2Q0Q2MDBFRjZGMjYgLyogR2x5cGhCdWZmZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUM1RDRBQTdBMTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAu
aCBpbiBIZWFkZXJzICovLApAQCAtMjk0MjksNiArMjk0NTksOCBAQAogCQkJCUE1NzhGNDNGMURF
MEI2MzAwMDNERkM2QSAvKiBSZWplY3RlZFByb21pc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDREZDMzYwNjE4Q0E2MUMyMDAyNkU1NkYgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRDhBQ0E4OTFEMjM3QUEyMDBFQ0M1OUUgLyogUmVtb3RlQ29t
bWFuZExpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkI5NTE5OTIwN0Q2MzREMDBB
N0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkI5NTE5QTIw
N0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwNkMw
RDhGMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3JtYXRDb21tYW5kLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5MzMwOUUwNTA5OUU2NDkyMDA1NkU1ODEgLyogUmVtb3ZlTm9kZUNvbW1hbmQuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzMzA5RTA3MDk5RTY0OTIwMDU2RTU4MSAvKiBSZW1vdmVOb2Rl
UHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggNDY2ODBhYjQ4ZGQ4ZDhhMDY3ZTcwYTMxNDBh
OGE1YzY1MzNkZjE0MS4uZTI5OTAxOTdmMmRhMDA5ODBkMWQwMWIwMTAxMDM1MDNjNmNiZDBkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtMjMxLDcgKzIzMSw3
IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKFN0YXRlIHN0YXRlKQogICAgIFJlZlB0
cjxGcmFtZT4gZnJhbWUgeyBtX2RvY3VtZW50TG9hZGVyLmZyYW1lKCkgfTsKICAgICBTdHJpbmcg
dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQgeyBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+dW5i
bG9ja1JlcXVlc3REZW5pZWRTY3JpcHQoKSB9OwogICAgIGlmICghdW5ibG9ja1JlcXVlc3REZW5p
ZWRTY3JpcHQuaXNFbXB0eSgpICYmIGZyYW1lKSB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mPFRocmVhZFNhZmVSZWZDb3VudGVkPEZyYW1lPiwgRnJhbWU+Ojp2YWx1ZSwg
IkZyYW1lIG11c3QgYmUgVGhyZWFkU2FmZVJlZkNvdW50ZWQuIik7CisgICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mPFRocmVhZFNhZmVSZWZDb3VudGVkPEFic3RyYWN0RnJhbWU+
LCBGcmFtZT46OnZhbHVlLCAiQWJzdHJhY3RGcmFtZSBtdXN0IGJlIFRocmVhZFNhZmVSZWZDb3Vu
dGVkLiIpOwogICAgICAgICB1bmJsb2NrSGFuZGxlci53cmFwV2l0aERlY2lzaW9uSGFuZGxlcihb
ZnJhbWUgPSBXVEZNb3ZlKGZyYW1lKSwgc2NyaXB0ID0gdW5ibG9ja1JlcXVlc3REZW5pZWRTY3Jp
cHQuaXNvbGF0ZWRDb3B5KCldKGJvb2wgdW5ibG9ja2VkKSB7CiAgICAgICAgICAgICBpZiAoIXVu
YmxvY2tlZCkKICAgICAgICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChz
Y3JpcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdERPTVdpbmRv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RE9NV2luZG93LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iYTc0NTE5YzFlZTI3ZGI3NTc3YzNiNjczMDQ4ZDZmZjU2YzQwM2FhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdERPTVdpbmRvdy5jcHAKQEAgLTAs
MCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJB
YnN0cmFjdERPTVdpbmRvdy5oIgorCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworSGFzaE1hcDxHbG9iYWxXaW5kb3dJZGVudGlmaWVyLCBB
YnN0cmFjdERPTVdpbmRvdyo+JiBBYnN0cmFjdERPTVdpbmRvdzo6YWxsV2luZG93cygpCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aE1hcDxHbG9iYWxXaW5kb3dJZGVudGlmaWVyLCBBYnN0cmFjdERPTVdpbmRvdyo+PiBtYXA7Cisg
ICAgcmV0dXJuIG1hcDsKK30KKworQWJzdHJhY3RET01XaW5kb3c6OkFic3RyYWN0RE9NV2luZG93
KEdsb2JhbFdpbmRvd0lkZW50aWZpZXImJiBpZGVudGlmaWVyKQorICAgIDogbV9pZGVudGlmaWVy
KFdURk1vdmUoaWRlbnRpZmllcikpCit7CisgICAgQVNTRVJUKCFhbGxXaW5kb3dzKCkuY29udGFp
bnMoaWRlbnRpZmllcikpOworICAgIGFsbFdpbmRvd3MoKS5hZGQoaWRlbnRpZmllciwgdGhpcyk7
Cit9CisKK0Fic3RyYWN0RE9NV2luZG93Ojp+QWJzdHJhY3RET01XaW5kb3coKQoreworICAgIEFT
U0VSVChhbGxXaW5kb3dzKCkuY29udGFpbnMoaWRlbnRpZmllcigpKSk7CisgICAgYWxsV2luZG93
cygpLnJlbW92ZShpZGVudGlmaWVyKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RE9NV2luZG93LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RE9NV2luZG93LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE1ZGViZDUz
MmFkOWEyMmU4ODRiYjY2YmM5ZGZhYjI4ZGRiYmNhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RET01XaW5kb3cuaApAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJCYXNlNjRVdGlsaXRpZXMuaCIKKyNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkdsb2JhbFdpbmRvd0lkZW50aWZpZXIu
aCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWJzdHJhY3RGcmFtZTsKKworLy8gRklY
TUU6IFJlbmFtZSBET01XaW5kb3cgdG8gTG9jYWxXaW5kb3cgYW5kIEFic3RyYWN0RE9NV2luZG93
IHRvIERPTVdpbmRvdy4KK2NsYXNzIEFic3RyYWN0RE9NV2luZG93IDogcHVibGljIFJlZkNvdW50
ZWQ8QWJzdHJhY3RET01XaW5kb3c+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+QWJzdHJhY3RET01XaW5kb3coKTsKKworICAgIHN0YXRp
YyBIYXNoTWFwPEdsb2JhbFdpbmRvd0lkZW50aWZpZXIsIEFic3RyYWN0RE9NV2luZG93Kj4mIGFs
bFdpbmRvd3MoKTsKKworICAgIGNvbnN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXImIGlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIHZpcnR1YWwgQWJzdHJh
Y3RGcmFtZSogZnJhbWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhbERP
TVdpbmRvdygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW1vdGVET01XaW5kb3co
KSBjb25zdCA9IDA7CisKKyAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CisgICAgdXNpbmcgUmVm
Q291bnRlZDo6ZGVyZWY7CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBBYnN0cmFjdERPTVdp
bmRvdyhHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYpOworCisgICAgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBET01XaW5kb3dF
dmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmlu
YWwgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYo
KTsgfQorCitwcml2YXRlOgorICAgIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIgbV9pZGVudGlmaWVy
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9BYnN0cmFjdEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RG
cmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYwZjZkYTYwYmYyMTNlOWY4MjcyYjJjZDNjY2FjYjEyMjdi
ODg4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFt
ZS5jcHAKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJBYnN0cmFjdEZyYW1lLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQWJz
dHJhY3RGcmFtZTo6QWJzdHJhY3RGcmFtZSgpCit7Cit9CisKK0Fic3RyYWN0RnJhbWU6On5BYnN0
cmFjdEZyYW1lKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Fic3RyYWN0RnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjExNWViNmNjYmMyMDMzMjUzM2RhYmFhNTYy
OTBiYWYwMWQxYmJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0
cmFjdEZyYW1lLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFic3RyYWN0RE9NV2lu
ZG93OworY2xhc3MgV2luZG93UHJveHlDb250cm9sbGVyOworCisvLyBGSVhNRTogUmVuYW1lIEZy
YW1lIHRvIExvY2FsRnJhbWUgYW5kIEFic3RyYWN0RnJhbWUgdG8gRnJhbWUuCitjbGFzcyBBYnN0
cmFjdEZyYW1lIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFic3RyYWN0RnJhbWU+IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BYnN0cmFjdEZyYW1lKCk7CisKKyAgICB2aXJ0dWFsIGJv
b2wgaXNMb2NhbEZyYW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1JlbW90ZUZy
YW1lKCkgY29uc3QgPSAwOworCisgICAgQWJzdHJhY3RET01XaW5kb3cqIHdpbmRvdygpIGNvbnN0
IHsgcmV0dXJuIHZpcnR1YWxXaW5kb3coKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgQWJzdHJhY3RG
cmFtZSgpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgQWJzdHJhY3RET01XaW5kb3cqIHZpcnR1
YWxXaW5kb3coKSBjb25zdCA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggOTBjM2U4ZTVhNzgzOGRkMGJmOGJjNDBlOWY5ZTdi
MWUzODRhYzgwMS4uMDIxMGIwOGExODIxZGViMGM4OTA2YzlmZjA4MmE0NmFlMzdlYTdkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNDAxLDcgKzQwMSw4IEBAIHZvaWQgRE9NV2lu
ZG93OjpzZXRDYW5TaG93TW9kYWxEaWFsb2dPdmVycmlkZShib29sIGFsbG93KQogfQogCiBET01X
aW5kb3c6OkRPTVdpbmRvdyhEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlcigmZG9jdW1lbnQpCisgICAgOiBBYnN0cmFjdERPTVdpbmRvdyhHbG9iYWxX
aW5kb3dJZGVudGlmaWVyIHsgUHJvY2Vzczo6aWRlbnRpZmllcigpLCBnZW5lcmF0ZU9iamVjdElk
ZW50aWZpZXI8V2luZG93SWRlbnRpZmllclR5cGU+KCkgfSkKKyAgICAsIENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyKCZkb2N1bWVudCkKICAgICAsIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcihk
b2N1bWVudC5mcmFtZSgpKQogewogICAgIEFTU0VSVChmcmFtZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5oCmluZGV4IDRjNjZiNzI0ZTI5YWJiYjBhMGIyYmNiNjZkNTczMWNlODRlZDFkN2UuLjQ5
OWE1NThkMmVlMThkNTQ3NWZkMDgyOTQ1ZDY2YzM4ODhiOTk2MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaApAQCAtMjYsMTAgKzI2LDExIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
QWJzdHJhY3RET01XaW5kb3cuaCIKICNpbmNsdWRlICJCYXNlNjRVdGlsaXRpZXMuaCIKICNpbmNs
dWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkltYWdlQml0bWFwLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsVG9PcHRpb25zLmgiCkBAIC04Nyw5ICs4OCw5IEBAIHN0cnVjdCBX
aW5kb3dGZWF0dXJlczsKIGVudW0gU2V0TG9jYXRpb25Mb2NraW5nIHsgTG9ja0hpc3RvcnlCYXNl
ZE9uR2VzdHVyZVN0YXRlLCBMb2NrSGlzdG9yeUFuZEJhY2tGb3J3YXJkTGlzdCB9OwogCiAvLyBG
SVhNRTogRE9NV2luZG93IHNob3VsZG4ndCBzdWJjbGFzcyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2
ZXIgYW5kIGluc3RlYWQgc2hvdWxkIGdldCB0byBGcmFtZSB2aWEgaXRzIERvY3VtZW50LgorLy8g
RklYTUU6IFJlbmFtZSBET01XaW5kb3cgdG8gTG9jYWxXaW5kb3cgYW5kIEFic3RyYWN0RE9NV2lu
ZG93IHRvIERPTVdpbmRvdy4KIGNsYXNzIERPTVdpbmRvdyBmaW5hbAotICAgIDogcHVibGljIFJl
ZkNvdW50ZWQ8RE9NV2luZG93PgotICAgICwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURh
dGEKKyAgICA6IHB1YmxpYyBBYnN0cmFjdERPTVdpbmRvdwogICAgICwgcHVibGljIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyCiAgICAgLCBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVy
CiAgICAgLCBwdWJsaWMgQmFzZTY0VXRpbGl0aWVzCkBAIC0xOTgsNiArMTk5LDggQEAgcHVibGlj
OgogICAgIERPTVdpbmRvdyogcGFyZW50KCkgY29uc3Q7CiAgICAgRE9NV2luZG93KiB0b3AoKSBj
b25zdDsKIAorICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlcjo6ZnJhbWUoKTsgfQorCiAgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0
OwogCiAgICAgLy8gRE9NIExldmVsIDIgQWJzdHJhY3RWaWV3IEludGVyZmFjZQpAQCAtMjc2LDkg
KzI3OSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKCk7CiAKLSAgICB1
c2luZyBSZWZDb3VudGVkOjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7Ci0KICAg
ICAvLyBIVE1MIDUga2V5L3ZhbHVlIHN0b3JhZ2UKICAgICBFeGNlcHRpb25PcjxTdG9yYWdlKj4g
c2Vzc2lvblN0b3JhZ2UoKSBjb25zdDsKICAgICBFeGNlcHRpb25PcjxTdG9yYWdlKj4gbG9jYWxT
dG9yYWdlKCkgY29uc3Q7CkBAIC0zMzgsMTggKzMzOCwxNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IERPTVdpbmRvdyhEb2N1bWVudCYpOwogCi0gICAgRXZlbnRUYXJnZXRJbnRl
cmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBET01XaW5k
b3dFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCisgICAgYm9v
bCBpc0xvY2FsRE9NV2luZG93KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJv
b2wgaXNSZW1vdGVET01XaW5kb3coKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorCiAg
ICAgUGFnZSogcGFnZSgpOwogICAgIGJvb2wgYWxsb3dlZFRvQ2hhbmdlV2luZG93R2VvbWV0cnko
KSBjb25zdDsKIAogICAgIHZvaWQgZnJhbWVEZXN0cm95ZWQoKSBmaW5hbDsKICAgICB2b2lkIHdp
bGxEZXRhY2hQYWdlKCkgZmluYWw7CiAKLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwg
eyByZWYoKTsgfQotICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsg
fQotCiAgICAgc3RhdGljIFJlZlB0cjxGcmFtZT4gY3JlYXRlV2luZG93KGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgV2luZG93RmVh
dHVyZXMmLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRnJhbWUmIGZpcnN0RnJhbWUsIEZyYW1l
JiBvcGVuZXJGcmFtZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERPTVdpbmRvdyYpPiYgcHJl
cGFyZURpYWxvZ0Z1bmN0aW9uID0gbnVsbHB0cik7CiAgICAgYm9vbCBpc0luc2VjdXJlU2NyaXB0
QWNjZXNzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7
CiAKQEAgLTQzMiw1ICs0MzEsNiBAQCBpbmxpbmUgU3RyaW5nIERPTVdpbmRvdzo6ZGVmYXVsdFN0
YXR1cygpIGNvbnN0CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6RE9NV2luZG93KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpBYnN0cmFjdERPTVdpbmRvdyYgd2luZG93KSB7IHJldHVybiB3aW5kb3cu
aXNMb2NhbERPTVdpbmRvdygpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNv
cmU6OkV2ZW50VGFyZ2V0JiB0YXJnZXQpIHsgcmV0dXJuIHRhcmdldC5ldmVudFRhcmdldEludGVy
ZmFjZSgpID09IFdlYkNvcmU6OkRPTVdpbmRvd0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQog
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAyZWUz
NzVkZDBiMjdmMTlhYWEwMjZlMzQ4N2Q0Y2NkZjczMzMyZTY2Li44MDY3N2M0NWZlNmNkODQ4ODNm
ZWNkMzI1ODcwNTIyYzVlN2I0ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtOTM5LDYgKzkz
OSwxNiBAQCB2b2lkIEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6
ZSwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcgogICAgICAgICB2aWV3KCktPnNldENhbkhh
dmVTY3JvbGxiYXJzKG93bmVyLT5zY3JvbGxpbmdNb2RlKCkgIT0gU2Nyb2xsYmFyQWx3YXlzT2Zm
KTsKIH0KIAorRE9NV2luZG93KiBGcmFtZTo6d2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZG9jdW1lbnQoKSA/IGRvY3VtZW50KCktPmRvbVdpbmRvdygpIDogbnVsbHB0cjsKK30KKworQWJz
dHJhY3RET01XaW5kb3cqIEZyYW1lOjp2aXJ0dWFsV2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gd2luZG93KCk7Cit9CisKIFN0cmluZyBGcmFtZTo6bGF5ZXJUcmVlQXNUZXh0KExheWVyVHJl
ZUZsYWdzIGZsYWdzKSBjb25zdAogewogICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oCmluZGV4IGIzNWI4ZmQwNzU1ZjYzODMwMzgzOWNmMWM5YmU4ODIyYjg1ZjJh
MDAuLmRlZDk2Zjg5YmEzNTY2MTkwMTc2NWU3ZGEzMGZmMjM2MzVmNjg1ODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmgKQEAgLTI3LDEyICsyNywxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFi
c3RyYWN0RnJhbWUuaCIKICNpbmNsdWRlICJBZGp1c3RWaWV3U2l6ZU9yTm90LmgiCiAjaW5jbHVk
ZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJVc2Vy
U2NyaXB0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogI2lm
IFBMQVRGT1JNKElPUykKQEAgLTYxLDYgKzYxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDU1NBbmltYXRpb25Db250cm9sbGVyOwogY2xhc3MgQ29sb3I7CitjbGFzcyBET01XaW5k
b3c7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVkaXRvcjsKIGNsYXNzIEVsZW1lbnQ7CkBAIC0x
MTcsNyArMTE4LDggQEAgZW51bSB7CiB9OwogdHlwZWRlZiB1bnNpZ25lZCBMYXllclRyZWVGbGFn
czsKIAotY2xhc3MgRnJhbWUgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RnJh
bWU+IHsKKy8vIEZJWE1FOiBSZW5hbWUgRnJhbWUgdG8gTG9jYWxGcmFtZSBhbmQgQWJzdHJhY3RG
cmFtZSB0byBGcmFtZS4KK2NsYXNzIEZyYW1lIGZpbmFsIDogcHVibGljIEFic3RyYWN0RnJhbWUg
ewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhbWU+IGNyZWF0ZShQ
YWdlKiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgRnJhbWVMb2FkZXJDbGllbnQqKTsKIApAQCAt
MTM0LDYgKzEzNiw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5GcmFtZSgpOwog
CisgICAgRE9NV2luZG93KiB3aW5kb3coKSBjb25zdDsKKwogICAgIHZvaWQgYWRkRGVzdHJ1Y3Rp
b25PYnNlcnZlcihGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIqKTsKICAgICB2b2lkIHJlbW92ZURl
c3RydWN0aW9uT2JzZXJ2ZXIoRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKik7CiAKQEAgLTI5MSw2
ICsyOTUsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHJvcENoaWxkcmVuKCk7CiAKKyAgICBi
b29sIGlzTG9jYWxGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29s
IGlzUmVtb3RlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgQWJz
dHJhY3RET01XaW5kb3cqIHZpcnR1YWxXaW5kb3coKSBjb25zdCBmaW5hbDsKKwogICAgIEhhc2hT
ZXQ8RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKj4gbV9kZXN0cnVjdGlvbk9ic2VydmVyczsKIAog
ICAgIEZyYW1lJiBtX21haW5GcmFtZTsKQEAgLTM5MCwzICszOTksNyBAQCBpbmxpbmUgRnJhbWUm
IEZyYW1lOjptYWluRnJhbWUoKSBjb25zdAogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6RnJhbWUpCisgICAgc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkFic3RyYWN0RnJhbWUmIGZyYW1lKSB7IHJldHVy
biBmcmFtZS5pc0xvY2FsRnJhbWUoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTM2ZWUzN2RmY2E2MzU0MjQ0YTU4NmEzNDYxMjk0ZDRjMmMzNTc5OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gRnJhbWUgaWRlbnRpZmllciB0aGF0
IGlzIHVuaXF1ZSBhY3Jvc3MgYWxsIFdlYkNvbnRlbnQgcHJvY2Vzc2VzLgorc3RydWN0IEdsb2Jh
bEZyYW1lSWRlbnRpZmllciB7CisgICAgdWludDY0X3QgcGFnZUlEOworICAgIHVpbnQ2NF90IGZy
YW1lSUQ7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgR2xvYmFsRnJhbWVJZGVudGlmaWVyOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHBhZ2VJRCA8PCBmcmFtZUlE
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxHbG9iYWxGcmFt
ZUlkZW50aWZpZXI+IEdsb2JhbEZyYW1lSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIGRlY29kZXIg
Pj4gcGFnZUlEOworICAgIGlmICghcGFnZUlEKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKKyAgICBkZWNvZGVyID4+
IGZyYW1lSUQ7CisgICAgaWYgKCFmcmFtZUlEKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpwYWdlSUQpLCBXVEZNb3ZlKCpmcmFtZUlEKSB9
IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvR2xvYmFsV2luZG93SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9H
bG9iYWxXaW5kb3dJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE1YTc0NjE2Y2M2ZmY2NGExN2Rh
MDFkZTllMWRlM2E4Njc4ZjRmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvR2xvYmFsV2luZG93SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQcm9jZXNzLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2VudW0gV2luZG93SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgV2lu
ZG93SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8V2luZG93SWRlbnRpZmllclR5cGU+Owor
CisvLyBXaW5kb3cgaWRlbnRpZmllciB0aGF0IGlzIHVuaXF1ZSBhY3Jvc3MgYWxsIFdlYkNvbnRl
bnQgcHJvY2Vzc2VzLgorc3RydWN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXIgeworICAgIFByb2Nl
c3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyOworICAgIFdpbmRvd0lkZW50aWZpZXIgd2lu
ZG93SWRlbnRpZmllcjsKKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKKworICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHbG9iYWxXaW5kb3dJZGVu
dGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiBhLCBjb25zdCBHbG9iYWxXaW5kb3dJZGVudGlm
aWVyJiBiKQoreworICAgIHJldHVybiBhLnByb2Nlc3NJZGVudGlmaWVyID09IGIucHJvY2Vzc0lk
ZW50aWZpZXIgJiYgIGEud2luZG93SWRlbnRpZmllciA9PSBiLndpbmRvd0lkZW50aWZpZXI7Cit9
CisKK2lubGluZSB1bnNpZ25lZCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOjpoYXNoKCkgY29uc3QK
K3sKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyc1syXTsKKyAgICBpZGVudGlmaWVyc1swXSA9IHBy
b2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCk7CisgICAgaWRlbnRpZmllcnNbMV0gPSB3aW5kb3dJ
ZGVudGlmaWVyLnRvVUludDY0KCk7CisKKyAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVt
b3J5KGlkZW50aWZpZXJzLCBzaXplb2YoaWRlbnRpZmllcnMpKTsKK30KKwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgR2xvYmFsV2luZG93SWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBwcm9jZXNzSWRlbnRpZmllciA8PCB3
aW5kb3dJZGVudGlmaWVyOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRp
b25hbDxHbG9iYWxXaW5kb3dJZGVudGlmaWVyPiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlm
aWVyPiBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHByb2Nlc3NJZGVudGlmaWVy
OworICAgIGlmICghcHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFdpbmRvd0lkZW50aWZpZXI+IHdpbmRvd0lkZW50aWZp
ZXI7CisgICAgZGVjb2RlciA+PiB3aW5kb3dJZGVudGlmaWVyOworICAgIGlmICghd2luZG93SWRl
bnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsg
V1RGTW92ZSgqcHJvY2Vzc0lkZW50aWZpZXIpLCBXVEZNb3ZlKCp3aW5kb3dJZGVudGlmaWVyKSB9
IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3N0
cnVjdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVySGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhh
c2goY29uc3QgV2ViQ29yZTo6R2xvYmFsV2luZG93SWRlbnRpZmllciYga2V5KSB7IHJldHVybiBr
ZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29yZTo6R2xvYmFs
V2luZG93SWRlbnRpZmllciYgYSwgY29uc3QgV2ViQ29yZTo6R2xvYmFsV2luZG93SWRlbnRpZmll
ciYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFz
aFRyYWl0czxXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyPiA6IEdlbmVyaWNIYXNoVHJh
aXRzPFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXI+IHsKKyAgICBzdGF0aWMgV2ViQ29y
ZTo6R2xvYmFsV2luZG93SWRlbnRpZmllciBlbXB0eVZhbHVlKCkgeyByZXR1cm4geyB9OyB9CisK
KyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6R2xvYmFsV2lu
ZG93SWRlbnRpZmllciYgc2xvdCkgeyBzbG90LndpbmRvd0lkZW50aWZpZXIgPSBtYWtlT2JqZWN0
SWRlbnRpZmllcjxXZWJDb3JlOjpXaW5kb3dJZGVudGlmaWVyVHlwZT4oc3RkOjpudW1lcmljX2xp
bWl0czx1aW50NjRfdD46Om1heCgpKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVl
KGNvbnN0IFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXImIHNsb3QpIHsgcmV0dXJuIHNs
b3Qud2luZG93SWRlbnRpZmllci50b1VJbnQ2NCgpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDY0X3Q+OjptYXgoKTsgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2Vi
Q29yZTo6R2xvYmFsV2luZG93SWRlbnRpZmllcj4geworICAgIHR5cGVkZWYgR2xvYmFsV2luZG93
SWRlbnRpZmllckhhc2ggSGFzaDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9SZW1vdGVET01XaW5kb3cuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3Y2UxMGVhNDY2NWQ2NTk3
ODk1MWRlYTQzZWY4ZWNkMzFmMDY2N2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5jcHAKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlRE9NV2luZG93LmgiCisKKyNp
bmNsdWRlICJSZW1vdGVGcmFtZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFs
dWUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlbW90ZURPTVdpbmRvdzo6UmVtb3RlRE9NV2luZG93KFJl
ZjxSZW1vdGVGcmFtZT4mJiBmcmFtZSwgR2xvYmFsV2luZG93SWRlbnRpZmllciYmIGlkZW50aWZp
ZXIpCisgICAgOiBBYnN0cmFjdERPTVdpbmRvdyhXVEZNb3ZlKGlkZW50aWZpZXIpKQorICAgICwg
bV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkKK3sKKyAgICBtX2ZyYW1lLT5zZXRXaW5kb3codGhpcyk7
Cit9CisKK1JlbW90ZURPTVdpbmRvdzo6flJlbW90ZURPTVdpbmRvdygpCit7CisgICAgaWYgKG1f
ZnJhbWUpCisgICAgICAgIG1fZnJhbWUtPnNldFdpbmRvdyhudWxscHRyKTsKK30KKworUmVtb3Rl
RE9NV2luZG93KiBSZW1vdGVET01XaW5kb3c6OnNlbGYoKSBjb25zdAoreworICAgIGlmICghbV9m
cmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVt
b3RlRE9NV2luZG93Kj4odGhpcyk7Cit9CisKK0xvY2F0aW9uKiBSZW1vdGVET01XaW5kb3c6Omxv
Y2F0aW9uKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50ZWQgdGhpcy4KKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBSZW1vdGVET01XaW5kb3c6OmNsb3NlKERvY3VtZW50
JikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50ZWQgdGhpcy4KK30KKworYm9vbCBSZW1vdGVE
T01XaW5kb3c6OmNsb3NlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2ZyYW1lOworfQorCit2
b2lkIFJlbW90ZURPTVdpbmRvdzo6Zm9jdXMoRE9NV2luZG93JiBpbmN1bWJlbnRXaW5kb3cpCit7
CisgICAgVU5VU0VEX1BBUkFNKGluY3VtYmVudFdpbmRvdyk7CisgICAgLy8gRklYTUU6IEltcGxl
bWVudGVkIHRoaXMuCit9CisKK3ZvaWQgUmVtb3RlRE9NV2luZG93OjpibHVyKCkKK3sKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50ZWQgdGhpcy4KK30KKwordW5zaWduZWQgUmVtb3RlRE9NV2luZG93
OjpsZW5ndGgoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnRlZCB0aGlzLgorICAg
IHJldHVybiAwOworfQorCitSZW1vdGVET01XaW5kb3cqIFJlbW90ZURPTVdpbmRvdzo6dG9wKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgLy8gRklYTUU6IEltcGxlbWVudGVkIHRoaXMuCisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVt
b3RlRE9NV2luZG93Kj4odGhpcyk7Cit9CisKK0RPTVdpbmRvdyogUmVtb3RlRE9NV2luZG93Ojpv
cGVuZXIoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnRlZCB0aGlzLgorICAgIHJl
dHVybiBudWxscHRyOworfQorCitSZW1vdGVET01XaW5kb3cqIFJlbW90ZURPTVdpbmRvdzo6cGFy
ZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgLy8gRklYTUU6IEltcGxlbWVudGVkIHRoaXMuCisgICAgcmV0dXJuIGNvbnN0X2Nh
c3Q8UmVtb3RlRE9NV2luZG93Kj4odGhpcyk7Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IFJlbW90
ZURPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBET01XaW5kb3cmIGluY3Vt
YmVudFdpbmRvdywgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3Jp
Z2luLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYpCit7CisgICAgVU5VU0VE
X1BBUkFNKGluY3VtYmVudFdpbmRvdyk7CisgICAgVU5VU0VEX1BBUkFNKG1lc3NhZ2UpOworICAg
IFVOVVNFRF9QQVJBTSh0YXJnZXRPcmlnaW4pOworCisgICAgLy8gRklYTUU6IEltcGxlbWVudGVk
IHRoaXMuCisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVtb3RlRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjEwODlhOThkNzc2YmM3ZmM2M2MxNDIxYmFmZjc3NmFjNTJmMmViNGYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5oCkBA
IC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFi
c3RyYWN0RE9NV2luZG93LmgiCisjaW5jbHVkZSAiUmVtb3RlRnJhbWUuaCIKKyNpbmNsdWRlIDx3
dGYvVHlwZUNhc3RzLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRXhlY1N0YXRlOworY2xh
c3MgSlNPYmplY3Q7CitjbGFzcyBKU1ZhbHVlOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0
cm9uZzsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBET01XaW5kb3c7CitjbGFz
cyBEb2N1bWVudDsKK2NsYXNzIExvY2F0aW9uOworCitjbGFzcyBSZW1vdGVET01XaW5kb3cgZmlu
YWwgOiBwdWJsaWMgQWJzdHJhY3RET01XaW5kb3cgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
UmVtb3RlRE9NV2luZG93PiBjcmVhdGUoUmVmPFJlbW90ZUZyYW1lPiYmIGZyYW1lLCBHbG9iYWxX
aW5kb3dJZGVudGlmaWVyJiYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZURPTVdpbmRvdyhXVEZNb3ZlKGZyYW1lKSwgV1RGTW92ZShpZGVudGlm
aWVyKSkpOworICAgIH0KKworICAgIH5SZW1vdGVET01XaW5kb3coKSBmaW5hbDsKKworICAgIFJl
bW90ZUZyYW1lKiBmcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZnJhbWUuZ2V0KCk7IH0K
KyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgLy8gRE9NIEFQSSBleHBvc2VkIGNy
b3NzLW9yaWdpbi4KKyAgICBSZW1vdGVET01XaW5kb3cqIHNlbGYoKSBjb25zdDsKKyAgICBMb2Nh
dGlvbiogbG9jYXRpb24oKSBjb25zdDsKKyAgICB2b2lkIGNsb3NlKERvY3VtZW50Jik7CisgICAg
Ym9vbCBjbG9zZWQoKSBjb25zdDsKKyAgICB2b2lkIGZvY3VzKERPTVdpbmRvdyYgaW5jdW1iZW50
V2luZG93KTsKKyAgICB2b2lkIGJsdXIoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsK
KyAgICBSZW1vdGVET01XaW5kb3cqIHRvcCgpIGNvbnN0OworICAgIERPTVdpbmRvdyogb3BlbmVy
KCkgY29uc3Q7CisgICAgUmVtb3RlRE9NV2luZG93KiBwYXJlbnQoKSBjb25zdDsKKyAgICBFeGNl
cHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIERPTVdpbmRvdyYgaW5j
dW1iZW50V2luZG93LCBKU0M6OkpTVmFsdWUgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiB0YXJnZXRP
cmlnaW4sIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJik7CisKK3ByaXZhdGU6
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVtb3RlRE9NV2luZG93KFJlZjxSZW1vdGVGcmFtZT4mJiwg
R2xvYmFsV2luZG93SWRlbnRpZmllciYmKTsKKworICAgIGJvb2wgaXNSZW1vdGVET01XaW5kb3co
KSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0xvY2FsRE9NV2luZG93
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIFJlZlB0cjxSZW1vdGVGcmFt
ZT4gbV9mcmFtZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpSZW1vdGVET01XaW5kb3cpCisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkFic3RyYWN0RE9NV2luZG93JiB3aW5kb3cpIHsgcmV0
dXJuIHdpbmRvdy5pc1JlbW90ZURPTVdpbmRvdygpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwMTBjMzdj
NWNjMTIwOWJiYjNkZDgxYmEyMzQxYWFkNDJkYmNiZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUZyYW1lLmgiCisKKyNp
bmNsdWRlICJSZW1vdGVET01XaW5kb3cuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZW1v
dGVGcmFtZTo6UmVtb3RlRnJhbWUoR2xvYmFsRnJhbWVJZGVudGlmaWVyJiYgZnJhbWVJZGVudGlm
aWVyKQorICAgIDogbV9pZGVudGlmaWVyKFdURk1vdmUoZnJhbWVJZGVudGlmaWVyKSkKK3sKK30K
KworUmVtb3RlRnJhbWU6On5SZW1vdGVGcmFtZSgpCit7Cit9CisKK0Fic3RyYWN0RE9NV2luZG93
KiBSZW1vdGVGcmFtZTo6dmlydHVhbFdpbmRvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdpbmRv
dygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbW90ZUZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1l
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzZmYzNmYjE5NzFiNTYzMjdlMTUzNTJkMWExOGU5YWU0MzkwZDkyMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuaApAQCAt
MCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBYnN0
cmFjdEZyYW1lLmgiCisjaW5jbHVkZSAiR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBSZW1vdGVET01XaW5kb3c7CisKK2NsYXNzIFJlbW90ZUZyYW1lIGZp
bmFsIDogcHVibGljIEFic3RyYWN0RnJhbWUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVt
b3RlRnJhbWU+IGNyZWF0ZShHbG9iYWxGcmFtZUlkZW50aWZpZXImJiBmcmFtZUlkZW50aWZpZXIp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKiBuZXcgUmVtb3RlRnJhbWUoV1RGTW92
ZShmcmFtZUlkZW50aWZpZXIpKSk7CisgICAgfQorICAgIH5SZW1vdGVGcmFtZSgpOworCisgICAg
Y29uc3QgR2xvYmFsRnJhbWVJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9pZGVudGlmaWVyOyB9CisKKyAgICB2b2lkIHNldFdpbmRvdyhSZW1vdGVET01XaW5kb3cqIHdp
bmRvdykgeyBtX3dpbmRvdyA9IHdpbmRvdzsgfQorICAgIFJlbW90ZURPTVdpbmRvdyogd2luZG93
KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3c7IH0KKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBSZW1vdGVGcmFtZShHbG9iYWxGcmFtZUlkZW50aWZpZXImJik7CisKKyAg
ICBib29sIGlzUmVtb3RlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAg
Ym9vbCBpc0xvY2FsRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorCisgICAg
QWJzdHJhY3RET01XaW5kb3cqIHZpcnR1YWxXaW5kb3coKSBjb25zdCBmaW5hbDsKKworICAgIEds
b2JhbEZyYW1lSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVtb3RlRE9NV2luZG93KiBt
X3dpbmRvdyB7IG51bGxwdHIgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpSZW1vdGVGcmFtZSkKKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QWJzdHJhY3RGcmFtZSYgZnJhbWUpIHsgcmV0
dXJuIGZyYW1lLmlzUmVtb3RlRnJhbWUoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>