<?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>48699</bug_id>
          
          <creation_ts>2010-10-29 17:12:41 -0700</creation_ts>
          <short_desc>Context menu support for WebKit2</short_desc>
          <delta_ts>2010-11-01 11:56:40 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>andersca</cc>
    
    <cc>aroben</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ossy</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>302195</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-10-29 17:12:41 -0700</bug_when>
    <thetext>Context menu support for WebKit2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302196</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-10-29 17:13:14 -0700</bug_when>
    <thetext>Patches coming shortly, starting with some small WebCore/ChromeClient changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302199</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-10-29 17:14:09 -0700</bug_when>
    <thetext>In radar as &lt;rdar://problem/7660547&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302208</commentid>
    <comment_count>3</comment_count>
      <attachid>72420</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-10-29 17:36:12 -0700</bug_when>
    <thetext>Created attachment 72420
Part 1 - lay Chrome/ChromeClient groundwork in all the WebKits

Just get all this crazy ChromeClient stuff in place before the serious WK2 patch comes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302214</commentid>
    <comment_count>4</comment_count>
      <attachid>72420</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-29 17:53:12 -0700</bug_when>
    <thetext>Comment on attachment 72420
Part 1 - lay Chrome/ChromeClient groundwork in all the WebKits

Rejecting patch 72420 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--ignore-builders&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 72420]&quot; exit_code: 1
Last 500 characters of output:
.cgi?id=72420&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=48699&amp;ctype=xml
Processing 1 patch from 1 bug.
Cleaning working directory
Updating working directory
Processing patch 72420 from bug 48699.
NOBODY (OOPS!) found in /Projects/CommitQueue/WebCore/ChangeLog does not appear to be a valid reviewer according to committers.py.
ERROR: /Projects/CommitQueue/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/4790080</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302341</commentid>
    <comment_count>5</comment_count>
      <attachid>72444</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-10-30 14:14:47 -0700</bug_when>
    <thetext>Created attachment 72444
Implement cross platform infrastructure and actual menu implementation for Mac

Wasn&apos;t getting any review traction trying to lay in a small piece fist, may as well put the whole thing up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302342</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-30 14:16:47 -0700</bug_when>
    <thetext>Attachment 72444 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/UIProcess/WebContextMenuProxy.h:34:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit2/Shared/WebContextMenuItem.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 2 in 52 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302344</commentid>
    <comment_count>7</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-30 14:33:14 -0700</bug_when>
    <thetext>Attachment 72444 did not build on qt:
Build output: http://queues.webkit.org/results/4745097</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302346</commentid>
    <comment_count>8</comment_count>
      <attachid>72445</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-10-30 15:03:58 -0700</bug_when>
    <thetext>Created attachment 72445
Patch v2 - Fix Qt (and presumably the Windows) builds with the right client method signatures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302347</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-30 15:08:39 -0700</bug_when>
    <thetext>Attachment 72445 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/UIProcess/WebContextMenuProxy.h:34:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit2/Shared/WebContextMenuItem.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 2 in 52 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302348</commentid>
    <comment_count>10</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-30 15:15:51 -0700</bug_when>
    <thetext>Attachment 72445 did not build on qt:
Build output: http://queues.webkit.org/results/4854111</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302350</commentid>
    <comment_count>11</comment_count>
      <attachid>72446</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-10-30 15:25:49 -0700</bug_when>
    <thetext>Created attachment 72446
v3 - Now with more colons!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302379</commentid>
    <comment_count>12</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-10-31 06:01:19 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created an attachment (id=72446) [details]
&gt; v3 - Now with more colons!

WebKit2/win/WebKit2.vcproj is in conflict with ToT. 
Could you update? EWS bots can test only appliable patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302408</commentid>
    <comment_count>13</comment_count>
      <attachid>72462</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-10-31 09:54:11 -0700</bug_when>
    <thetext>Created attachment 72462
v4 - Updated to this morning

I updated and there weren&apos;t any conflicts with the WebKit2.vcproj, but reattaching the new patch anyways...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302410</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-31 09:56:55 -0700</bug_when>
    <thetext>Attachment 72462 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/UIProcess/WebContextMenuProxy.h:34:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit2/Shared/WebContextMenuItem.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 2 in 52 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302415</commentid>
    <comment_count>15</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-31 10:04:10 -0700</bug_when>
    <thetext>Attachment 72462 did not build on qt:
Build output: http://queues.webkit.org/results/4855105</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302476</commentid>
    <comment_count>16</comment_count>
      <attachid>72474</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-10-31 13:24:21 -0700</bug_when>
    <thetext>Created attachment 72474
v5 - More Qt build fixing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302477</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-31 13:27:48 -0700</bug_when>
    <thetext>Attachment 72474 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/UIProcess/WebContextMenuProxy.h:34:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit2/Shared/WebContextMenuItem.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 2 in 52 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302480</commentid>
    <comment_count>18</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-31 13:36:22 -0700</bug_when>
    <thetext>Attachment 72474 did not build on qt:
Build output: http://queues.webkit.org/results/4797111</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302625</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-11-01 06:16:31 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Attachment 72474 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
&gt; WebKit2/UIProcess/WebContextMenuProxy.h:34:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
&gt; WebKit2/Shared/WebContextMenuItem.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
&gt; Total errors found: 2 in 52 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

You should fix these style errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302708</commentid>
    <comment_count>20</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-01 08:37:28 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #17)
&gt; &gt; Attachment 72474 [details] [details] did not pass style-queue:
&gt; &gt; 
&gt; &gt; Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
&gt; &gt; WebKit2/UIProcess/WebContextMenuProxy.h:34:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
&gt; &gt; WebKit2/Shared/WebContextMenuItem.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
&gt; &gt; Total errors found: 2 in 52 files
&gt; &gt; 
&gt; &gt; 
&gt; &gt; If any of these errors are false positives, please file a bug against check-webkit-style.
&gt; 
&gt; You should fix these style errors.

Do you mean I should file a bug on check-webkit-style, as the style errors are bogus?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302709</commentid>
    <comment_count>21</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-01 08:38:16 -0700</bug_when>
    <thetext>Will work on getting Qt (and presumably Windows as it falls in a similar situation) building this morning, but the fixes will be stubs - someone still can review this...  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302730</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-11-01 09:08:15 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; You should fix these style errors.
&gt; 
&gt; Do you mean I should file a bug on check-webkit-style, as the style errors are bogus?

I didn&apos;t notice they were bogus. You should definitely file a bug!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302734</commentid>
    <comment_count>23</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-01 09:13:11 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #20)
&gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; You should fix these style errors.
&gt; &gt; 
&gt; &gt; Do you mean I should file a bug on check-webkit-style, as the style errors are bogus?
&gt; 
&gt; I didn&apos;t notice they were bogus. You should definitely file a bug!

Upon reading the official style guidelines, they are not bogus.

But they are an exception to the &quot;no indented code in namespaces&quot; rule that we use liberally throughout the project - forward declarations of other-namespaced types in headers.

I suppose an email to webkit-dev to formalize that rule is in order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302736</commentid>
    <comment_count>24</comment_count>
      <attachid>72514</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-01 09:16:06 -0700</bug_when>
    <thetext>Created attachment 72514
v6 - Hopefully the final build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302739</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-01 09:19:36 -0700</bug_when>
    <thetext>Attachment 72514 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/UIProcess/WebContextMenuProxy.h:34:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit2/Shared/WebContextMenuItem.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 2 in 57 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302775</commentid>
    <comment_count>26</comment_count>
      <attachid>72514</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-11-01 10:40:12 -0700</bug_when>
    <thetext>Comment on attachment 72514
v6 - Hopefully the final build fix 

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

&gt; WebCore/platform/qt/ContextMenuQt.cpp:82
&gt; +    return result;

Can just return a temporary here:

return Vector&lt;ContextMenuItem&gt;();

&gt; WebCore/platform/win/ContextMenuWin.cpp:164
&gt; +}

Can just return a temporary here:

return Vector&lt;ContextMenuItem&gt;();

&gt; WebKit2/Shared/WebContextMenuItem.cpp:61
&gt; +    ASSERT(type == WebCore::SubmenuType);

If you assert that the type is SubmenuType do you even need to pass it to the constructor?

&gt; WebKit2/Shared/WebContextMenuItem.cpp:64
&gt; +WebContextMenuItem::WebContextMenuItem(WebCore::ContextMenuItem&amp; item, WebCore::ContextMenu* menu)

Can this be a const reference?

&gt; WebKit2/Shared/WebContextMenuItem.h:43
&gt; +struct WebContextMenuItem {

Why is this a struct and not a class?

&gt; WebKit2/UIProcess/WebContextMenuProxy.h:45
&gt; +    }

It&apos;s better if you define the destructor in the .cpp file instead; that way the vtable won&apos;t be weak and emitted everywhere.

&gt; WebKit2/UIProcess/WebContextMenuProxy.h:53
&gt; +    }

Might define the constructor in the .cpp file too.

&gt; WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:52
&gt; +        target = [[WebMenuTarget alloc] init];

You can just initialize target directly here.

&gt; WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:112
&gt; +        {

{ goes on the same line as the case.

&gt; WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:125
&gt; +        {            

{ goes on the same line as the case.

&gt; WebKit2/WebProcess/WebPage/WebContextMenu.h:35
&gt; +    static PassRefPtr&lt;WebContextMenu&gt; create(WebPage* page) { return adoptRef(new WebContextMenu(page)); }

{ should go on a new line, as should the return statement and the closing brace.

&gt; WebKit2/WebProcess/WebPage/WebPage.cpp:912
&gt; +    m_contextMenu-&gt;itemSelected(item);

Could you zero out the m_contextMenu variable here instead of keeping it around for the lifetime of the page?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302790</commentid>
    <comment_count>27</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-01 11:09:38 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 72514 [details])
&gt; &gt; WebKit2/Shared/WebContextMenuItem.cpp:64
&gt; &gt; +WebContextMenuItem::WebContextMenuItem(WebCore::ContextMenuItem&amp; item, WebCore::ContextMenu* menu)
&gt; 
&gt; Can this be a const reference?

No - WebCore actually modifies the ContextMenuItem when doing the &quot;checkOrEnableIfNeeded() on it.  I&apos;m not happy about this.

&gt; &gt; WebKit2/Shared/WebContextMenuItem.h:43
&gt; &gt; +struct WebContextMenuItem {
&gt; 
&gt; Why is this a struct and not a class?

Fixing.

&gt; 
&gt; &gt; WebKit2/UIProcess/WebContextMenuProxy.h:45
&gt; &gt; +    }
&gt; 
&gt; It&apos;s better if you define the destructor in the .cpp file instead; that way the vtable won&apos;t be weak and emitted everywhere.
&gt; Might define the constructor in the .cpp file too.

Done.

&gt; &gt; WebKit2/WebProcess/WebPage/WebPage.cpp:912
&gt; &gt; +    m_contextMenu-&gt;itemSelected(item);
&gt; 
&gt; Could you zero out the m_contextMenu variable here instead of keeping it around for the lifetime of the page?

Yup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302793</commentid>
    <comment_count>28</comment_count>
      <attachid>72524</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-01 11:15:05 -0700</bug_when>
    <thetext>Created attachment 72524
v7 - with Anders&apos; feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302796</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-01 11:20:31 -0700</bug_when>
    <thetext>Attachment 72524 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/UIProcess/WebContextMenuProxy.h:34:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit2/Shared/WebContextMenuItem.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 2 in 58 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302810</commentid>
    <comment_count>30</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-01 11:34:55 -0700</bug_when>
    <thetext>Landed in r71041</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302827</commentid>
    <comment_count>31</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-01 11:56:40 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; Landed in r71041

With a Windows build fix in r71042</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72420</attachid>
            <date>2010-10-29 17:36:12 -0700</date>
            <delta_ts>2010-10-30 14:14:47 -0700</delta_ts>
            <desc>Part 1 - lay Chrome/ChromeClient groundwork in all the WebKits</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>17013</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDk1NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMTAtMjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBh
cnQgb2YgPHJkYXI6Ly9wcm9ibGVtLzc2NjA1NDc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDg2OTkKKyAgICAgICAgQ29udGV4dCBtZW51IHN1cHBvcnQgZm9y
IFdlYktpdCAyLgorCisgICAgICAgIEFkZCBhICJzaG93Q29udGV4dE1lbnUiIGNhbGwgdG8gQ2hy
b21lL0Nocm9tZUNsaWVudDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6c2hvd0NvbnRleHRNZW51KToKKyAgICAg
ICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnNob3dDb250
ZXh0TWVudSk6CisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9t
ZUNsaWVudC5oOgorCisgICAgICAgIEFkZCBhICJwbGF0Zm9ybSBkZXNjcmlwdGlvbiB0byBDb250
ZXh0TWVudUl0ZW0iIGNyZWF0b3IsIHdpbGwgYmUgbmVlZGVkIGJ5IFdLMjoKKyAgICAgICAgKiBw
bGF0Zm9ybS9Db250ZXh0TWVudS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Db250ZXh0TWVu
dU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVZlY3Rvcik6IEltcGxl
bWVudCB0aGUgTWFjIHZlcnNpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ29udGV4dE1l
bnVJdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtOjpjaGVja2Vk
KTogSW1wbGVtZW50IHRoZSBNYWMgdmVyc2lvbiAtIHdpbGwgYmUgbmVlZGVkIGJ5IFdLMi4KKwog
MjAxMC0xMC0yOSAgTWlrZSBMYXd0aGVyICA8bWlrZWxhd3RoZXJAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpJbmRleDogV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmgJKHJldmlzaW9uIDcwOTA0KQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25z
dCB7IHJldHVybiBhZG9wdFJlZihuZXcgRW1wdHlQb3B1cE1lbnUoKSk7IH0KICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBN
ZW51Q2xpZW50KikgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYobmV3IEVtcHR5U2VhcmNoUG9wdXBN
ZW51KCkpOyB9CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2aXJ0dWFsIHZvaWQg
c2hvd0NvbnRleHRNZW51KCkgeyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0
dXNiYXJUZXh0KGNvbnN0IFN0cmluZyYpIHsgfQogCiAgICAgdmlydHVhbCBib29sIHRhYnNUb0xp
bmtzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiA3MDkw
NCkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNCAr
NTAyLDExIEBAIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBDaHJvbWU6OmNyZWEKICAgICBy
ZXR1cm4gbV9jbGllbnQtPmNyZWF0ZVNlYXJjaFBvcHVwTWVudShjbGllbnQpOwogfQogCisjaWYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCit2b2lkIENocm9tZTo6c2hvd0NvbnRleHRNZW51KCkKK3sK
KyAgICBtX2NsaWVudC0+c2hvd0NvbnRleHRNZW51KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9DaHJvbWUuaAkocmV2aXNpb24gNzA5MDQpCisrKyBXZWJDb3JlL3BhZ2Uv
Q2hyb21lLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2ICsxNTUsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBQYXNzUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBv
cHVwTWVudUNsaWVudCopIGNvbnN0OwogICAgICAgICBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVu
dT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogCisjaWYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KCk7Cisj
ZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAgICAgICAgQ2hy
b21lQ2xpZW50KiBtX2NsaWVudDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDcwOTA0
KQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjks
NiArMjY5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0ID0g
MDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2Vh
cmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShD
T05URVhUX01FTlVTKQorICAgICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgPSAw
OworI2VuZGlmCisKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlv
bikgeyB9CiAKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRN
ZW51LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oCShyZXZp
c2lvbiA3MDkwNCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaAkod29ya2luZyBj
b3B5KQpAQCAtOTEsNiArOTEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICB9
OwogCitWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiBjb250ZXh0TWVudUl0ZW1WZWN0b3IoUGxhdGZv
cm1NZW51RGVzY3JpcHRpb24gbWVudSk7CisKIH0KIAogI2VuZGlmIC8vIENvbnRleHRNZW51X2gK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0NvbnRleHRNZW51SXRlbU1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudUl0ZW1NYWMubW0JKHJldmlz
aW9uIDcwOTA0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ29udGV4dE1lbnVJdGVtTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNiArMTU0LDExIEBAIGJvb2wgQ29udGV4dE1lbnVJdGVt
OjplbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gW21fcGxhdGZvcm1EZXNjcmlwdGlvbi5nZXQo
KSBpc0VuYWJsZWRdOwogfQogCitib29sIENvbnRleHRNZW51SXRlbTo6Y2hlY2tlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIFttX3BsYXRmb3JtRGVzY3JpcHRpb24uZ2V0KCkgc3RhdGVdID09IE5T
T25TdGF0ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KENPTlRFWFRfTUVOVVMpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5t
bQkocmV2aXNpb24gNzA5MDQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTUzLDYgKzE1MywxOSBAQCBOU011dGFibGVBcnJheSog
Q29udGV4dE1lbnU6OnJlbGVhc2VQbGF0CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlwdGlv
bi5yZWxlYXNlUmVmKCk7CiB9CiAKK1ZlY3RvcjxDb250ZXh0TWVudUl0ZW0+IGNvbnRleHRNZW51
SXRlbVZlY3RvcihQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBtZW51KQoreworICAgIFZlY3RvcjxD
b250ZXh0TWVudUl0ZW0+IGl0ZW1zOworICAgIHVuc2lnbmVkIGNvdW50ID0gW21lbnUgY291bnRd
OworICAgIGlmIChtZW51KQorICAgICAgICBpdGVtcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOwor
ICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICBp
dGVtcy5hcHBlbmQoQ29udGV4dE1lbnVJdGVtKFttZW51IG9iamVjdEF0SW5kZXg6aV0pKTsKKyAg
ICAKKyAgICByZXR1cm4gaXRlbXM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQpJbmRleDogV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDcwOTU3KQorKysgV2ViS2l0
Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0xMC0yOSAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCBvZiA8cmRhcjovL3Byb2JsZW0vNzY2MDU0
Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODY5OQorICAg
ICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNocm9tZUNsaWVudDo6c2hvd0NvbnRleHRNZW51KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorCiAyMDEwLTEwLTI5ICBBZGFt
IFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIGVuY29kZS9k
ZWNvZGVCeXRlcyBmb3IgV2ViRXZlbnQgc3ViY2xhc3NlcwpJbmRleDogV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlz
aW9uIDcwOTA0KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0Myw2ICs1NDMsMTMgQEAgUGFzc1JlZlB0
cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IFdlYgogICAgIHJldHVybiBXZWJTZWFyY2hQb3B1
cE1lbnU6OmNyZWF0ZShtX3BhZ2UsIGNsaWVudCk7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzaG93Q29udGV4dE1lbnUoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKwogUGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtz
PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiA3MDkwNCkKKysrIFdlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTcwLDYgKzE3MCwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQq
KSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7
CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRl
eHRNZW51KCk7CisjZW5kaWYKKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAg
ICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzT25lU2hv
dERyYXdpbmdTeW5jaHJvbml6YXRpb24oKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNzA5
NTcpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTAtMTAtMjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgb2Yg
PHJkYXI6Ly9wcm9ibGVtLzc2NjA1NDc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDg2OTkKKyAgICAgICAgQ29udGV4dCBtZW51IHN1cHBvcnQgZm9yIFdlYktp
dCAyLgorCisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYktp
dDo6Q2hyb21lQ2xpZW50SW1wbDo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxMC0xMC0yOSAgS2F2
aXRhIEthbmV0a2FyICA8a2thbmV0a2FyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmgJKHJldmlzaW9uIDcwOTA0KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsMTAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShX
ZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6
UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAg
ICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9CisjZW5kaWYKKwogcHJpdmF0ZToK
ICAgICB2b2lkIGdldFBvcHVwTWVudUluZm8oV2ViQ29yZTo6UG9wdXBDb250YWluZXIqLCBXZWJQ
b3B1cE1lbnVJbmZvKik7CiAKSW5kZXg6IFdlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MDk1NykKKysrIFdlYktpdC9lZmwv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTAtMjkgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgb2YgPHJkYXI6Ly9wcm9ibGVtLzc2NjA1NDc+
IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg2OTkKKyAgICAg
ICAgQ29udGV4dCBtZW51IHN1cHBvcnQgZm9yIFdlYktpdCAyLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRFZmw6OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTAtMTAtMjkgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBX
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgJKHJldmlzaW9uIDcw
OTA0KQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAkod29y
a2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qKTsKICNl
bmRpZgogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgdmlydHVhbCB2b2lkIHNob3dD
b250ZXh0TWVudSgpIHsgfQorI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVs
KEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogICAgIHZpcnR1YWwgdm9pZCBjaG9v
c2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlQ2hvb3NlciopOwogICAg
IHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgTm9kZSopOwpJbmRleDogV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDcwOTU3KQorKysgV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMyBAQAorMjAxMC0xMC0yOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFy
dCBvZiA8cmRhcjovL3Byb2JsZW0vNzY2MDU0Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00ODY5OQorICAgICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3Ig
V2ViS2l0IDIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoK
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzaG93Q29udGV4dE1lbnUpOgorCiAyMDEw
LTEwLTI5ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBCdWlsZCBmaXggZm9yIEdUSysgYWZ0ZXIgQmFja0ZvcndhcmRMaXN0SW1wbCBpbnRyb2R1Y3Rp
b24uCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgJ
KHJldmlzaW9uIDcwOTA0KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw5IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90
IHNwYWNlTmVlZGVkKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKICNlbmRpZgorI2lmIEVO
QUJMRShDT05URVhUX01FTlVTKQorICAgICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51
KCkgeyB9CisjZW5kaWYKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChXZWJDb3Jl
OjpGcmFtZSosIFBhc3NSZWZQdHI8V2ViQ29yZTo6RmlsZUNob29zZXI+KTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+Jiwg
V2ViQ29yZTo6RmlsZUNob29zZXIqKTsKIApJbmRleDogV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MDk1NykKKysr
IFdlYktpdC9oYWlrdS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAxMC0xMC0yOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCBvZiA8cmRhcjovL3By
b2JsZW0vNzY2MDU0Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00ODY5OQorICAgICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTAtMTAtMjkg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50SGFpa3UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50SGFpa3UuaAkocmV2aXNpb24gNzA5MDQpCisrKyBXZWJLaXQvaGFpa3UvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYg
KzEzNyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNo
ZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKik7
CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICAgICAgdmlydHVhbCB2b2lk
IHNob3dDb250ZXh0TWVudSgpIHsgfQorI2VuZGlmCiAKICAgICAgICAgLy8gVGhpcyBpcyBhbiBh
c3luY2hyb25vdXMgY2FsbC4gVGhlIENocm9tZUNsaWVudCBjYW4gZGlzcGxheSBVSSBhc2tpbmcg
dGhlIHVzZXIgZm9yIHBlcm1pc3Npb24KICAgICAgICAgLy8gdG8gdXNlIEdlb2xvY29jYXRpb24u
CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0No
YW5nZUxvZwkocmV2aXNpb24gNzA5NTcpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTEwLTI5ICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYXJ0IG9mIDxyZGFyOi8vcHJvYmxlbS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Njk5CisgICAgICAgIENvbnRleHQgbWVudSBz
dXBwb3J0IGZvciBXZWJLaXQgMi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpzaG93Q29udGV4dE1lbnUpOgor
CiAyMDEwLTEwLTI5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiA3MDkwNCkKKysrIFdlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw2ICsxNzgs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4g
Y3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBv
cHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKIAorI2lmIEVOQUJMRShD
T05URVhUX01FTlVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0KKyNl
bmRpZgogcHJpdmF0ZToKICAgICBXZWJWaWV3ICptX3dlYlZpZXc7CiB9OwpJbmRleDogV2ViS2l0
L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lv
biA3MDk1NykKKysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMC0xMC0yOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCBvZiA8
cmRhcjovL3Byb2JsZW0vNzY2MDU0Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00ODY5OQorICAgICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0
IDIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTAtMTAt
MjkgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFyaXlhIEhpZGF5YXQuCkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50UXQuaAkocmV2aXNpb24gNzA5MDQpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDYgKzEzNCw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNp
emUoaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKik7CiAjZW5kaWYKKyNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkg
eyB9CisjZW5kaWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICB2aXJ0dWFs
IE5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3Q7Cklu
ZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5n
ZUxvZwkocmV2aXNpb24gNzA5NTcpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTEwLTI5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQYXJ0IG9mIDxyZGFyOi8vcHJvYmxlbS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Njk5CisgICAgICAgIENvbnRleHQgbWVudSBzdXBw
b3J0IGZvciBXZWJLaXQgMi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpzaG93Q29udGV4dE1lbnUpOgorCiAy
MDEwLTEwLTI5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiA3MDkwNCkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsMTAg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShD
T05URVhUX01FTlVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0KKyNl
bmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlVmlzaXRlZExpbmtzKCk7CiAKICAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRDdXN0b21TY3JvbGxiYXIoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgV2ViQ29yZTo6U2Nyb2xsYmFyQ29udHJvbFNp
emUsIApJbmRleDogV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gv
Q2hhbmdlTG9nCShyZXZpc2lvbiA3MDk1NykKKysrIFdlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMC0yOSAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUGFydCBvZiA8cmRhcjovL3Byb2JsZW0vNzY2MDU0Nz4gYW5kIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODY5OQorICAgICAgICBDb250ZXh0IG1lbnUg
c3VwcG9ydCBmb3IgV2ViS2l0IDIuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNs
aWVudFd4Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6c2hvd0NvbnRleHRN
ZW51KToKKwogMjAxMC0xMC0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdlYktpdC93eC9XZWJLaXRTdXBw
b3J0L0Nocm9tZUNsaWVudFd4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvQ2hyb21lQ2xpZW50V3guaAkocmV2aXNpb24gNzA5MDQpCisrKyBXZWJLaXQvd3gvV2ViS2l0
U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNiArMTI5LDEw
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShTZWN1cml0eU9yaWdpbiopOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9CisjZW5kaWYKKwog
ICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9v
c2VyPik7CiAgICAgdmlydHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIEZpbGVDaG9vc2VyKik7CiAK
</data>
<flag name="commit-queue"
          id="62667"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72444</attachid>
            <date>2010-10-30 14:14:47 -0700</date>
            <delta_ts>2010-10-30 15:03:58 -0700</delta_ts>
            <desc>Implement cross platform infrastructure and actual menu implementation for Mac</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>70955</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMTAtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ4Njk5CisgICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQg
Mi4KKworICAgICAgICBBZGQgYSAic2hvd0NvbnRleHRNZW51IiBjYWxsIHRvIENocm9tZS9DaHJv
bWVDbGllbnQ6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgICogcGFn
ZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzaG93Q29udGV4dE1lbnUp
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQu
aDoKKworICAgICAgICBBZGQgYSAicGxhdGZvcm0gZGVzY3JpcHRpb24gdG8gQ29udGV4dE1lbnVJ
dGVtIiBjcmVhdG9yLCB3aWxsIGJlIG5lZWRlZCBieSBzb21lIFdLMiBwb3J0czoKKyAgICAgICAg
KiBwbGF0Zm9ybS9Db250ZXh0TWVudS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Db250ZXh0
TWVudU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVZlY3Rvcik6IElt
cGxlbWVudCB0aGUgTWFjIHZlcnNpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ29udGV4
dE1lbnVJdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtOjpjaGVj
a2VkKTogSW1wbGVtZW50IHRoZSBNYWMgdmVyc2lvbiAtIHdpbGwgYmUgbmVlZGVkIGJ5IFdLMi4K
KwogMjAxMC0xMC0zMCAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA3
MDk4NCkKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyMjUs
OSArMTIyNSwyMiBAQCBfX1pOSzdXZWJDb3JlMThSZW5kZXJMYXllckJhY2tpbmcyMGNvbXBvCiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiBfX1pON1dlYkNvcmUxMUNvbnRleHRNZW51MjJzZXRQ
bGF0Zm9ybURlc2NyaXB0aW9uRVAxNE5TTXV0YWJsZUFycmF5CiBfX1pON1dlYkNvcmUxMkV2ZW50
SGFuZGxlcjIwc2VuZENvbnRleHRNZW51RXZlbnRFUDdOU0V2ZW50CitfX1pON1dlYkNvcmUxMkV2
ZW50SGFuZGxlcjIwc2VuZENvbnRleHRNZW51RXZlbnRFUktOU18xOFBsYXRmb3JtTW91c2VFdmVu
dEUKIF9fWk43V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtMjZyZWxlYXNlUGxhdGZvcm1EZXNjcmlw
dGlvbkV2CitfX1pON1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbUMxRU5TXzE5Q29udGV4dE1lbnVJ
dGVtVHlwZUVOU18xN0NvbnRleHRNZW51QWN0aW9uRVJLTjNXVEY2U3RyaW5nRVBOU18xMUNvbnRl
eHRNZW51RQorX19aTjdXZWJDb3JlMTVDb250ZXh0TWVudUl0ZW1EMUV2CiBfX1pON1dlYkNvcmUy
MUNvbnRleHRNZW51Q29udHJvbGxlcjE2Y2xlYXJDb250ZXh0TWVudUV2CitfX1pON1dlYkNvcmUy
MUNvbnRleHRNZW51Q29udHJvbGxlcjIzY29udGV4dE1lbnVJdGVtU2VsZWN0ZWRFUE5TXzE1Q29u
dGV4dE1lbnVJdGVtRQorX19aTjdXZWJDb3JlMjFjb250ZXh0TWVudUl0ZW1WZWN0b3JFUDE0TlNN
dXRhYmxlQXJyYXkKK19fWk43V2ViQ29yZTZDaHJvbWUxNXNob3dDb250ZXh0TWVudUV2CiBfX1pO
SzdXZWJDb3JlMTFDb250ZXh0TWVudTE5cGxhdGZvcm1EZXNjcmlwdGlvbkV2CitfX1pOSzdXZWJD
b3JlMTFDb250ZXh0TWVudTIxY2hlY2tPckVuYWJsZUlmTmVlZGVkRVJOU18xNUNvbnRleHRNZW51
SXRlbUUKK19fWk5LN1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTE1cGxhdGZvcm1TdWJNZW51RXYK
K19fWk5LN1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTR0eXBlRXYKK19fWk5LN1dlYkNvcmUxNUNv
bnRleHRNZW51SXRlbTV0aXRsZUV2CitfX1pOSzdXZWJDb3JlMTVDb250ZXh0TWVudUl0ZW02YWN0
aW9uRXYKK19fWk5LN1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTdjaGVja2VkRXYKK19fWk5LN1dl
YkNvcmUxNUNvbnRleHRNZW51SXRlbTdlbmFibGVkRXYKICNlbmRpZgogCiAjaWYgRU5BQkxFKERB
U0hCT0FSRF9TVVBQT1JUKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDcwOTg0
KQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEz
OSw2ICsxMzksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQb3B1cE1lbnU+
IGNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdCB7IHJldHVybiBhZG9wdFJl
ZihuZXcgRW1wdHlQb3B1cE1lbnUoKSk7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNo
UG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Qg
eyByZXR1cm4gYWRvcHRSZWYobmV3IEVtcHR5U2VhcmNoUG9wdXBNZW51KCkpOyB9CiAKKyNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkg
eyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0
cmluZyYpIHsgfQogCiAgICAgdmlydHVhbCBib29sIHRhYnNUb0xpbmtzKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNCArNTAyLDExIEBAIFBhc3NSZWZQ
dHI8U2VhcmNoUG9wdXBNZW51PiBDaHJvbWU6OmNyZWEKICAgICByZXR1cm4gbV9jbGllbnQtPmNy
ZWF0ZVNlYXJjaFBvcHVwTWVudShjbGllbnQpOwogfQogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCit2b2lkIENocm9tZTo6c2hvd0NvbnRleHRNZW51KCkKK3sKKyAgICBtX2NsaWVudC0+c2hv
d0NvbnRleHRNZW51KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9wYWdlL0Nocm9tZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJv
bWUuaAkocmV2aXNpb24gNzA5ODQpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE1NSw2ICsxNTUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQ
YXNzUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNv
bnN0OwogICAgICAgICBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9w
dXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCisgICAgICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KCk7CisjZW5kaWYKKwogICAgIHByaXZh
dGU6CiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAgICAgICAgQ2hyb21lQ2xpZW50KiBtX2NsaWVu
dDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDcwOTg0KQorKysgV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjksNiArMjY5LDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBvcHVwTWVudT4gY3Jl
YXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVw
TWVudUNsaWVudCopIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgPSAwOworI2VuZGlmCisKICAgICAg
ICAgdmlydHVhbCB2b2lkIHBvc3RBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKEFjY2Vzc2liaWxp
dHlPYmplY3QqLCBBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbikgeyB9CiAKICAgICBwcm90
ZWN0ZWQ6CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oCShyZXZpc2lvbiA3MDk4NCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsNiArOTEs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICB9OwogCitWZWN0b3I8Q29udGV4
dE1lbnVJdGVtPiBjb250ZXh0TWVudUl0ZW1WZWN0b3IoUGxhdGZvcm1NZW51RGVzY3JpcHRpb24g
bWVudSk7CisKIH0KIAogI2VuZGlmIC8vIENvbnRleHRNZW51X2gKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vbWFjL0NvbnRleHRNZW51SXRlbU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL21hYy9Db250ZXh0TWVudUl0ZW1NYWMubW0JKHJldmlzaW9uIDcwOTg0KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvQ29udGV4dE1lbnVJdGVtTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTQsNiArMTU0LDExIEBAIGJvb2wgQ29udGV4dE1lbnVJdGVtOjplbmFibGVkKCkgY29uc3QK
ICAgICByZXR1cm4gW21fcGxhdGZvcm1EZXNjcmlwdGlvbi5nZXQoKSBpc0VuYWJsZWRdOwogfQog
Citib29sIENvbnRleHRNZW51SXRlbTo6Y2hlY2tlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFtt
X3BsYXRmb3JtRGVzY3JpcHRpb24uZ2V0KCkgc3RhdGVdID09IE5TT25TdGF0ZTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbQkocmV2aXNpb24gNzA5ODQp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTUzLDYgKzE1MywxOSBAQCBOU011dGFibGVBcnJheSogQ29udGV4dE1lbnU6OnJlbGVh
c2VQbGF0CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5yZWxlYXNlUmVmKCk7CiB9
CiAKK1ZlY3RvcjxDb250ZXh0TWVudUl0ZW0+IGNvbnRleHRNZW51SXRlbVZlY3RvcihQbGF0Zm9y
bU1lbnVEZXNjcmlwdGlvbiBtZW51KQoreworICAgIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+IGl0
ZW1zOworICAgIHVuc2lnbmVkIGNvdW50ID0gW21lbnUgY291bnRdOworICAgIGlmIChtZW51KQor
ICAgICAgICBpdGVtcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOworICAgIAorICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICBpdGVtcy5hcHBlbmQoQ29udGV4
dE1lbnVJdGVtKFttZW51IG9iamVjdEF0SW5kZXg6aV0pKTsKKyAgICAKKyAgICByZXR1cm4gaXRl
bXM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05U
RVhUX01FTlVTKQpJbmRleDogV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDcwOTg2KQorKysgV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw4MyBAQAorMjAxMC0xMC0zMCAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NjA1NDc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg2OTkKKyAgICAgICAgQ29udGV4dCBtZW51IHN1cHBvcnQg
Zm9yIFdlYktpdCAyLgorCisgICAgICAgICogV2ViS2l0Mi5wcm86CisgICAgICAgICogV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdpbi9XZWJLaXQyLnZjcHJv
ajoKKworICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtOjpXZWJDb250ZXh0TWVudUl0ZW0pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW06OmVuY29kZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6a2l0
SXRlbXMpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaDogQWRkZWQuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9xdC9xd2twYWdlLmNwcDoKKyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpjcmVhdGVD
b250ZXh0TWVudVByb3h5KTogU3R1YiB0byBrZWVwIHRoZSBidWlsZCB3b3JraW5nLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5Lmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5Ojp+V2ViQ29udGV4
dE1lbnVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHk6OldlYkNv
bnRleHRNZW51UHJveHkpOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd0NvbnRleHRNZW51KTogU2hvd3Mg
dGhlIG1lbnUgYWZ0ZXIgcmVjZWl2aW5nIHRoZSBtZXNzYWdlIGZyb20gdGhlIFdlYlByb2Nlc3Mu
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQp
OiBTZW5kcyBpbmZvIGFib3V0IHRoZSBzZWxlY3RlZCBtZW51IGl0ZW0gdG8gdGhlIFdlYlByb2Nl
c3MKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V2ViQ29udGV4dE1lbnVQcm94eU1hYy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dE1lbnVQcm94eU1hYzo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNZW51UHJveHlNYWMubW06IEFkZGVkLgorICAgICAgICAoK1tXZWJNZW51VGFyZ2V0IHNo
YXJlZE1lbnVUYXJnZXRdKToKKyAgICAgICAgKC1bV2ViTWVudVRhcmdldCBXZWJLaXQ6Ol0pOgor
ICAgICAgICAoLVtXZWJNZW51VGFyZ2V0IHNldE1lbnVQcm94eTpXZWJLaXQ6Ol0pOgorICAgICAg
ICAoLVtXZWJNZW51VGFyZ2V0IGZvcndhcmRDb250ZXh0TWVudUFjdGlvbjpdKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWM6On5XZWJDb250ZXh0TWVu
dVByb3h5TWFjKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y29u
dGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0Ojpwb3B1bGF0ZU5TTWVudSk6
CisgICAgICAgIChXZWJLaXQ6Om5zTWVudUl0ZW1WZWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudVByb3h5TWFjOjpwb3B1bGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHRNZW51UHJveHlNYWM6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHRNZW51UHJveHlNYWM6OmhpZGVDb250ZXh0TWVudSk6CisKKyAgICAgICAgKiBVSVBy
b2Nlc3Mvd2luL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpjcmVhdGVD
b250ZXh0TWVudVByb3h5KTogU3R1YiBmb3Igbm93LgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4v
V2ViVmlldy5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnNob3dDb250
ZXh0TWVudSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUNsaWVudDo6
Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMpOiBSZXR1cm4gdGhlIFdlYkNvcmUtcHJvdmlk
ZWQgZGVmYXVsdAorICAgICAgICAgIG1lbnUgZm9yIG5vdy4gRW1iZWRkaW5nIGFwcCBjdXN0b21p
emF0aW9uIHdpbGwgY29tZSBsYXRlciAoc2VlIGJ1ZyA0ODcyMCkKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0TWVudTo6V2ViQ29udGV4dE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0TWVudTo6fldlYkNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dE1lbnU6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudTo6aXRlbVNlbGVj
dGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51OjpjcmVhdGUpOgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpjb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6OmhhbmRsZU1vdXNlRXZlbnQpOiBQ
YXNzIHJpZ2h0IG1vdXNlIHByZXNzZXMgYWxvbmcgdG8gV2ViQ29yZSBhcyBib3RoIGEgbW91c2Ug
ZXZlbnQgYW5kIGNvbnRleHQgbWVudSBldmVudCwgCisgICAgICAgICAgdGhlIHNhbWUgd2F5IFdl
YktpdDEgZG9lcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkU2VsZWN0SXRlbUZyb21B
Y3RpdmVDb250ZXh0TWVudSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwog
MjAxMC0xMC0zMCAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJLaXQyL1dl
YktpdDIucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHJldmlzaW9uIDcw
OTg0KQorKysgV2ViS2l0Mi9XZWJLaXQyLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjE0LDYgKzIx
NCw3IEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oIFwKICAg
ICBTaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5oIFwKICAgICBTaGFyZWQvV2ViQ2VydGlmaWNhdGVJ
bmZvLmggXAorICAgIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaCBcCiAgICAgU2hhcmVkL1dl
YkV2ZW50LmggXAogICAgIFNoYXJlZC9XZWJFcnJvci5oIFwKICAgICBTaGFyZWQvV2ViRXZlbnRD
b252ZXJzaW9uLmggXApAQCAtMjY0LDYgKzI2NSw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJv
Y2Vzcy9WaXNpdGVkTGlua1Byb3ZpZGVyLmggXAogICAgIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmgg
XAogICAgIFVJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBcCisgICAg
VUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkNvbnRl
eHRVc2VyTWVzc2FnZUNvZGVycy5oIFwKICAgICBVSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94
eS5oIFwKICAgICBVSVByb2Nlc3MvV2ViRmluZENsaWVudC5oIFwKQEAgLTMyOSw2ICszMzEsNyBA
QCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaCBc
CiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRQYWdlT3ZlcmxheS5oIFwKICAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuaCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
bnRleHRNZW51LmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5oIFwK
ICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5oIFwKQEAgLTM3Niw2ICszNzksNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBTaGFyZWQvcXQvV2ViVVJMUmVxdWVzdFF0LmNwcCBcCiAgICAgU2hhcmVkL3F0L1dlYlVSTFJl
c3BvbnNlUXQuY3BwIFwKICAgICBTaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5jcHAgXAorICAgIFNo
YXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwIFwKICAgICBTaGFyZWQvV2ViRXJyb3IuY3BwIFwK
ICAgICBTaGFyZWQvV2ViRXZlbnQuY3BwIFwKICAgICBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9u
LmNwcCBcCkBAIC00OTIsNiArNDk2LDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRQ
YWdlT3ZlcmxheS5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHAg
XAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAgXAogICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3Bw
IFwKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRl
bS5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJBcmd1bWVudHMu
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db250
ZXh0TWVudS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29udGV4dE1lbnVJdGVtOjpX
ZWJDb250ZXh0TWVudUl0ZW0oKQorICAgIDogbV90eXBlKFdlYkNvcmU6OkFjdGlvblR5cGUpCisg
ICAgLCBtX2FjdGlvbihXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbikKKyAgICAs
IG1fZW5hYmxlZCh0cnVlKQorICAgICwgbV9jaGVja2VkKGZhbHNlKQoreworfQorCitXZWJDb250
ZXh0TWVudUl0ZW06OldlYkNvbnRleHRNZW51SXRlbShXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
eXBlIHR5cGUsIFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbiwgY29uc3QgU3RyaW5n
JiB0aXRsZSwgYm9vbCBlbmFibGVkLCBib29sIGNoZWNrZWQpCisgICAgOiBtX3R5cGUodHlwZSkK
KyAgICAsIG1fYWN0aW9uKGFjdGlvbikKKyAgICAsIG1fdGl0bGUodGl0bGUpCisgICAgLCBtX2Vu
YWJsZWQoZW5hYmxlZCkKKyAgICAsIG1fY2hlY2tlZChjaGVja2VkKQoreworICAgIEFTU0VSVCh0
eXBlID09IFdlYkNvcmU6OkFjdGlvblR5cGUgfHwgdHlwZSA9PSBXZWJDb3JlOjpDaGVja2FibGVB
Y3Rpb25UeXBlIHx8IHR5cGUgPT0gV2ViQ29yZTo6U2VwYXJhdG9yVHlwZSk7Cit9CisKK1dlYkNv
bnRleHRNZW51SXRlbTo6V2ViQ29udGV4dE1lbnVJdGVtKFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVR5cGUgdHlwZSwgV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBjb25zdCBTdHJp
bmcmIHRpdGxlLCBib29sIGVuYWJsZWQsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+
JiBzdWJtZW51KQorICAgIDogbV90eXBlKHR5cGUpCisgICAgLCBtX2FjdGlvbihhY3Rpb24pCisg
ICAgLCBtX3RpdGxlKHRpdGxlKQorICAgICwgbV9lbmFibGVkKGVuYWJsZWQpCisgICAgLCBtX2No
ZWNrZWQoZmFsc2UpCisgICAgLCBtX3N1Ym1lbnUoc3VibWVudSkKK3sKKyAgICBBU1NFUlQodHlw
ZSA9PSBXZWJDb3JlOjpTdWJtZW51VHlwZSk7Cit9CisKK1dlYkNvbnRleHRNZW51SXRlbTo6V2Vi
Q29udGV4dE1lbnVJdGVtKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSYgaXRlbSwgV2ViQ29yZTo6
Q29udGV4dE1lbnUqIG1lbnUpCisgICAgOiBtX3R5cGUoaXRlbS50eXBlKCkpCisgICAgLCBtX2Fj
dGlvbihpdGVtLmFjdGlvbigpKQorICAgICwgbV90aXRsZShpdGVtLnRpdGxlKCkpCit7CisgICAg
aWYgKG1fdHlwZSA9PSBXZWJDb3JlOjpTdWJtZW51VHlwZSkgeworICAgICAgICBWZWN0b3I8V2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtPiBjb3JlU3VibWVudSA9IFdlYkNvcmU6OmNvbnRleHRNZW51
SXRlbVZlY3RvcihpdGVtLnBsYXRmb3JtU3ViTWVudSgpKTsKKyAgICAgICAgbV9zdWJtZW51ID0g
a2l0SXRlbXMoY29yZVN1Ym1lbnUsIG1lbnUpOworICAgIH0KKyAgICAKKyAgICBtZW51LT5jaGVj
a09yRW5hYmxlSWZOZWVkZWQoaXRlbSk7CisgICAgCisgICAgbV9lbmFibGVkID0gaXRlbS5lbmFi
bGVkKCk7CisgICAgbV9jaGVja2VkID0gaXRlbS5jaGVja2VkKCk7Cit9CisKK3ZvaWQgV2ViQ29u
dGV4dE1lbnVJdGVtOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihzdGF0aWNfY2FzdDx1aW50
MzJfdD4obV90eXBlKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fYWN0aW9uKSwgbV90aXRsZSwg
bV9jaGVja2VkLCBtX2VuYWJsZWQsIG1fc3VibWVudSkpOworfQorCitib29sIFdlYkNvbnRleHRN
ZW51SXRlbTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29u
dGV4dE1lbnVJdGVtJiBpdGVtKQoreworICAgIHVpbnQzMl90IHR5cGU7CisgICAgdWludDMyX3Qg
YWN0aW9uOworICAgIFN0cmluZyB0aXRsZTsKKyAgICBib29sIGNoZWNrZWQ7CisgICAgYm9vbCBl
bmFibGVkOworICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+IHN1Ym1lbnU7CisKKyAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQodHlwZSwgYWN0aW9uLCB0aXRsZSwgY2hl
Y2tlZCwgZW5hYmxlZCwgc3VibWVudSkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBz
d2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFdlYkNvcmU6OkFjdGlvblR5cGU6CisgICAgY2FzZSBX
ZWJDb3JlOjpTZXBhcmF0b3JUeXBlOgorICAgIGNhc2UgV2ViQ29yZTo6Q2hlY2thYmxlQWN0aW9u
VHlwZToKKyAgICAgICAgaXRlbSA9IFdlYkNvbnRleHRNZW51SXRlbShzdGF0aWNfY2FzdDxXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UeXBlPih0eXBlKSwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29u
dGV4dE1lbnVBY3Rpb24+KGFjdGlvbiksIHRpdGxlLCBlbmFibGVkLCBjaGVja2VkKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpTdWJtZW51VHlwZToKKyAgICAgICAgaXRlbSA9
IFdlYkNvbnRleHRNZW51SXRlbShzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
eXBlPih0eXBlKSwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24+KGFjdGlv
biksIHRpdGxlLCBlbmFibGVkLCBzdWJtZW51KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworVmVjdG9yPFdlYkNvbnRleHRNZW51SXRl
bT4ga2l0SXRlbXMoVmVjdG9yPFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbT4mIGNvcmVJdGVtcywg
V2ViQ29yZTo6Q29udGV4dE1lbnUqIG1lbnUpCit7CisgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51
SXRlbT4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkoY29yZUl0ZW1zLnNpemUo
KSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvcmVJdGVtcy5zaXplKCk7ICsraSkK
KyAgICAgICAgcmVzdWx0LmFwcGVuZChXZWJDb250ZXh0TWVudUl0ZW0oY29yZUl0ZW1zW2ldLCBt
ZW51KSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaAkocmV2aXNpb24gMCkKKysr
IFdlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb250ZXh0TWVudUl0ZW1faAorI2Rl
ZmluZSBXZWJDb250ZXh0TWVudUl0ZW1faAorCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVu
dUl0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIENv
cmVJUEMgeworICAgIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKKyAgICBjbGFzcyBBcmd1bWVudEVu
Y29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBDb250ZXh0TWVudTsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJDb250ZXh0TWVudUl0ZW0gewor
ICAgIFdlYkNvbnRleHRNZW51SXRlbSgpOworICAgIFdlYkNvbnRleHRNZW51SXRlbShXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW0mLCBXZWJDb3JlOjpDb250ZXh0TWVudSogbWVudSk7CisgICAgV2Vi
Q29udGV4dE1lbnVJdGVtKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVR5cGUsIFdlYkNvcmU6OkNv
bnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBib29sIGVuYWJsZWQsIGJvb2wg
Y2hlY2tlZCk7CisgICAgV2ViQ29udGV4dE1lbnVJdGVtKFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVR5cGUsIFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBi
b29sIGVuYWJsZWQsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+JiBzdWJtZW51KTsK
KyAgICAKKyAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdDsK
KyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgV2ViQ29u
dGV4dE1lbnVJdGVtJik7CisKKyAgICBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UeXBlIG1fdHlw
ZTsKKyAgICBXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiBtX2FjdGlvbjsKKyAgICBTdHJpbmcg
bV90aXRsZTsKKyAgICBib29sIG1fZW5hYmxlZDsKKyAgICBib29sIG1fY2hlY2tlZDsKKyAgICBW
ZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtPiBtX3N1Ym1lbnU7Cit9OworCitWZWN0b3I8V2ViQ29u
dGV4dE1lbnVJdGVtPiBraXRJdGVtcyhWZWN0b3I8V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtPiYs
IFdlYkNvcmU6OkNvbnRleHRNZW51Kik7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gV2ViQ29udGV4dE1lbnVJdGVtX2gKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJl
dmlzaW9uIDcwOTg0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw4ICszOSw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBGaW5k
SW5kaWNhdG9yOwogY2xhc3MgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKLWNsYXNzIFdlYkVkaXRD
b21tYW5kUHJveHk7CiBjbGFzcyBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OworY2xhc3MgV2ViQ29u
dGV4dE1lbnVQcm94eTsKK2NsYXNzIFdlYkVkaXRDb21tYW5kUHJveHk7CiBjbGFzcyBXZWJQb3B1
cE1lbnVQcm94eTsKIAogY2xhc3MgUGFnZUNsaWVudCB7CkBAIC03Miw2ICs3Myw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90SGFuZGxlS2V5RXZlbnQoY29uc3QgTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudCYpID0gMDsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQb3B1cE1l
bnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoKSA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVBy
b3h5KikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0
cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KSA9IDA7CiAKSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvbnRleHRNZW51UHJveHlfaAorI2RlZmluZSBXZWJD
b250ZXh0TWVudVByb3h5X2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBJbnRQb2ludDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3N0cnVjdCBXZWJDb250ZXh0TWVudUl0ZW07CisKK2NsYXNzIFdlYkNvbnRleHRNZW51UHJv
eHkgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb250ZXh0TWVudVByb3h5PiB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+V2ViQ29udGV4dE1lbnVQcm94eSgpCisgICAgeworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25z
dCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtPiYgaXRlbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgaGlkZUNvbnRleHRNZW51KCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgV2ViQ29udGV4dE1l
bnVQcm94eSgpCisgICAgeworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gV2ViUG9wdXBNZW51UHJveHlfaApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5j
bHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHkuaCIKICNp
bmNsdWRlICJXZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJEYXRhLmgiCkBAIC0xMTI0LDYgKzExMjUs
MjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVQb3B1cE1lbnUoKQogICAgIG1fYWN0aXZlUG9w
dXBNZW51ID0gMDsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVudShjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4
dE1lbnVJdGVtPiYgaXRlbXMpCit7CisgICAgaWYgKG1fYWN0aXZlQ29udGV4dE1lbnUpCisgICAg
ICAgIG1fYWN0aXZlQ29udGV4dE1lbnUtPmhpZGVDb250ZXh0TWVudSgpOworICAgIGVsc2UKKyAg
ICAgICAgbV9hY3RpdmVDb250ZXh0TWVudSA9IG1fcGFnZUNsaWVudC0+Y3JlYXRlQ29udGV4dE1l
bnVQcm94eSh0aGlzKTsKKyAgICAgIAorICAgIG1fYWN0aXZlQ29udGV4dE1lbnUtPnNob3dDb250
ZXh0TWVudShtZW51TG9jYXRpb24sIGl0ZW1zKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNv
bnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbSYgaXRlbSkKK3sK
KyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFNlbGVjdEl0ZW1Gcm9t
QWN0aXZlQ29udGV4dE1lbnUoaXRlbSksIG1fcGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJv
eHk6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBj
b21tYW5kUHJveHksIFVuZG9PclJlZG8gdW5kb09yUmVkbykKIHsKICAgICBtX3BhZ2VDbGllbnQt
PnJlZ2lzdGVyRWRpdENvbW1hbmQoY29tbWFuZFByb3h5LCB1bmRvT3JSZWRvKTsKSW5kZXg6IFdl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5j
bHVkZSAiV0tCYXNlLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtLmgiCiAjaW5jbHVk
ZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJXZWJGaW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
Rm9ybUNsaWVudC5oIgpAQCAtNzcsNiArNzgsNyBAQCBjbGFzcyBQbGF0Zm9ybUNlcnRpZmljYXRl
SW5mbzsKIGNsYXNzIFN0cmluZ1BhaXJWZWN0b3I7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7
CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOworY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94
eTsKIGNsYXNzIFdlYkRhdGE7CiBjbGFzcyBXZWJFZGl0Q29tbWFuZFByb3h5OwogY2xhc3MgV2Vi
S2V5Ym9hcmRFdmVudDsKQEAgLTIzMSw2ICsyMzMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdl
dFN0YXRpc3RpY3MoV0tDb250ZXh0U3RhdGlzdGljcyopOwogCisgICAgdm9pZCBjb250ZXh0TWVu
dUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW0mKTsKKwogcHJpdmF0ZToKICAg
ICBXZWJQYWdlUHJveHkoV2ViUGFnZU5hbWVzcGFjZSosIHVpbnQ2NF90IHBhZ2VJRCk7CiAKQEAg
LTMyMSw2ICszMjUsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2hvd1BvcHVwTWVudShjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiByZWN0LCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMs
IGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CiAgICAgdm9pZCBoaWRlUG9wdXBNZW51KCk7CiAKKyAg
ICAvLyBDb250ZXh0IE1lbnUuCisgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtPiYgaXRlbXMpOwor
CiAgICAgdm9pZCB0YWtlRm9jdXMoYm9vbCBkaXJlY3Rpb24pOwogICAgIHZvaWQgc2V0VG9vbFRp
cChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJz
b3ImKTsKQEAgLTM2MSw2ICszNjgsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8V2ViRWRpdENv
bW1hbmRQcm94eSo+IG1fZWRpdENvbW1hbmRTZXQ7CiAKICAgICBSZWZQdHI8V2ViUG9wdXBNZW51
UHJveHk+IG1fYWN0aXZlUG9wdXBNZW51OworICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5
PiBtX2FjdGl2ZUNvbnRleHRNZW51OwogCiAgICAgZG91YmxlIG1fZXN0aW1hdGVkUHJvZ3Jlc3M7
CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJl
dmlzaW9uIDcwOTg0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICAjIFBvcHVwTWVudS4KICAgICBTaG93UG9wdXBNZW51KFdlYkNvcmU6Oklu
dFJlY3QgcmVjdCwgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiBpdGVtcywgaW50MzJfdCBz
ZWxlY3RlZEluZGV4KQogICAgIEhpZGVQb3B1cE1lbnUoKQorICAgIAorICAgICMgQ29udGV4dE1l
bnUKKyAgICBTaG93Q29udGV4dE1lbnUoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFZlY3RvcjxX
ZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4gaXRlbXMpCiAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAgICAgIyBBY2NlbGVyYXRlZCBjb21wc2l0aW5nIG1lc3NhZ2VzLgpJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24g
NzA5ODQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkTm90SGFuZGxlS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYpOwogCiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQ
cm94eSgpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVh
dGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopOwogCiAgICAgdm9pZCBzZXRGaW5kSW5k
aWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJvb2wgZmFkZU91dCk7CiAKSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkocmV2aXNpb24g
NzA5ODQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNp
bXBvcnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQgIldLVmlld0ludGVybmFsLmgiCisjaW1wb3J0
ICJXZWJDb250ZXh0TWVudVByb3h5TWFjLmgiCiAjaW1wb3J0ICJXZWJFZGl0Q29tbWFuZFByb3h5
LmgiCiAjaW1wb3J0ICJXZWJQb3B1cE1lbnVQcm94eU1hYy5oIgogI2ltcG9ydCA8V2ViQ29yZS9D
dXJzb3IuaD4KQEAgLTI0NSw2ICsyNDYsMTEgQEAgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94
eT4gUGFnZUNsaWVudAogICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94eU1hYzo6Y3JlYXRlKG1f
d2tWaWV3KTsKIH0KIAorUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50
SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCit7CisgICAg
cmV0dXJuIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OmNyZWF0ZShtX3drVmlldywgcGFnZSk7Cit9
CisKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5k
SW5kaWNhdG9yPiBmaW5kSW5kaWNhdG9yLCBib29sIGZhZGVPdXQpCiB7CiAgICAgW21fd2tWaWV3
IF9zZXRGaW5kSW5kaWNhdG9yOmZpbmRJbmRpY2F0b3IgZmFkZU91dDpmYWRlT3V0XTsKSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAJKHJldmlzaW9uIDcwOTg0KQorKysgV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQs
NiArMTM0LDEyIEBAIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFFXS1BhZ2VQcmkKICAg
ICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlRdDo6Y3JlYXRlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8
V2ViQ29udGV4dE1lbnVQcm94eT4gUVdLUGFnZVByaXZhdGU6OmNyZWF0ZUNvbnRleHRNZW51UHJv
eHkoKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQ7CisgICAgcmV0dXJuIDA7Cit9CisKIHZv
aWQgUVdLUGFnZVByaXZhdGU6OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNh
dG9yPiwgYm9vbCBmYWRlT3V0KQogewogfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3a3BhZ2VfcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2tw
YWdlX3AuaAkocmV2aXNpb24gNzA5ODQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdr
cGFnZV9wLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90SGFuZGxlS2V5RXZlbnQoY29u
c3QgV2ViS2l0OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KCk7Cisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRl
Q29udGV4dE1lbnVQcm94eSgpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0b3Io
UGFzc1JlZlB0cjxXZWJLaXQ6OkZpbmRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQpOwogCkluZGV4
OiBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1h
Yy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJDb250ZXh0TWVudVByb3h5TWFjX2gKKyNkZWZpbmUgV2ViQ29udGV4dE1lbnVQcm94eU1hY19o
CisKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5LmgiCisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorCisjaWZkZWYgX19PQkpDX18KK0BjbGFzcyBOU1BvcFVwQnV0dG9uQ2VsbDsKK0Bj
bGFzcyBXS1ZpZXc7CisjZWxzZQorY2xhc3MgTlNQb3BVcEJ1dHRvbkNlbGw7CitjbGFzcyBXS1Zp
ZXc7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsK
KworY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eU1hYyA6IHB1YmxpYyBXZWJDb250ZXh0TWVudVBy
b3h5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5
TWFjPiBjcmVhdGUoV0tWaWV3KiB3ZWJWaWV3LCBXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbnRleHRNZW51UHJveHlNYWMod2ViVmll
dywgcGFnZSkpOworICAgIH0KKyAgICB+V2ViQ29udGV4dE1lbnVQcm94eU1hYygpOworCisgICAg
dmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNv
bnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+Jik7CisgICAgdmlydHVhbCB2b2lkIGhpZGVD
b250ZXh0TWVudSgpOworICAgIAorICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29u
c3QgV2ViQ29udGV4dE1lbnVJdGVtJik7CisKK3ByaXZhdGU6CisgICAgV2ViQ29udGV4dE1lbnVQ
cm94eU1hYyhXS1ZpZXcqLCBXZWJQYWdlUHJveHkqKTsKKworICAgIHZvaWQgcG9wdWxhdGUoY29u
c3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbT4mKTsKKworICAgIFJldGFpblB0cjxOU1BvcFVw
QnV0dG9uQ2VsbD4gbV9wb3B1cDsKKyAgICBXS1ZpZXcqIG1fd2ViVmlldzsKKyAgICBXZWJQYWdl
UHJveHkqIG1fcGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
V2ViQ29udGV4dE1lbnVQcm94eU1hY19oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5TWFj
LmgiCisKKyNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRN
ZW51SXRlbS5oIgorI2luY2x1ZGUgIldLVmlldy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9JbnRS
ZWN0Lmg+CisjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCitAaW50ZXJmYWNlIFdlYk1lbnVUYXJnZXQgOiBOU09iamVjdCB7Cisg
ICAgV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiBfbWVudVByb3h5OworfQorKyAoV2Vi
TWVudVRhcmdldCopc2hhcmVkTWVudVRhcmdldDsKKy0gKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQ
cm94eU1hYyopbWVudVByb3h5OworLSAodm9pZClzZXRNZW51UHJveHk6KFdlYktpdDo6V2ViQ29u
dGV4dE1lbnVQcm94eU1hYyopbWVudVByb3h5OworLSAodm9pZClmb3J3YXJkQ29udGV4dE1lbnVB
Y3Rpb246KGlkKXNlbmRlcjsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYk1lbnVUYXJnZXQK
KworKyAoV2ViTWVudVRhcmdldCopc2hhcmVkTWVudVRhcmdldAoreworICAgIHN0YXRpYyBXZWJN
ZW51VGFyZ2V0KiB0YXJnZXQ7CisgICAgaWYgKCF0YXJnZXQpCisgICAgICAgIHRhcmdldCA9IFtb
V2ViTWVudVRhcmdldCBhbGxvY10gaW5pdF07CisgICAgcmV0dXJuIHRhcmdldDsKK30KKworLSAo
V2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiltZW51UHJveHkKK3sKKyAgICByZXR1cm4g
X21lbnVQcm94eTsKK30KKworLSAodm9pZClzZXRNZW51UHJveHk6KFdlYktpdDo6V2ViQ29udGV4
dE1lbnVQcm94eU1hYyopbWVudVByb3h5Cit7CisgICAgX21lbnVQcm94eSA9IG1lbnVQcm94eTsK
K30KKworLSAodm9pZClmb3J3YXJkQ29udGV4dE1lbnVBY3Rpb246KGlkKXNlbmRlcgoreworICAg
IFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtIGl0ZW0oQWN0aW9uVHlwZSwgc3RhdGljX2Nhc3Q8
Q29udGV4dE1lbnVBY3Rpb24+KFtzZW5kZXIgdGFnXSksIFtzZW5kZXIgdGl0bGVdLCBbc2VuZGVy
IGlzRW5hYmxlZF0sIFtzZW5kZXIgc3RhdGVdID09IE5TT25TdGF0ZSk7CisgICAgX21lbnVQcm94
eS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaXRlbSk7Cit9CisKK0BlbmQKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK1dlYkNvbnRleHRNZW51UHJveHlNYWM6OldlYkNvbnRleHRNZW51UHJveHlN
YWMoV0tWaWV3KiB3ZWJWaWV3LCBXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgOiBtX3dlYlZpZXco
d2ViVmlldykKKyAgICAsIG1fcGFnZShwYWdlKQoreworfQorCitXZWJDb250ZXh0TWVudVByb3h5
TWFjOjp+V2ViQ29udGV4dE1lbnVQcm94eU1hYygpCit7CisgICAgaWYgKG1fcG9wdXApCisgICAg
ICAgIFttX3BvcHVwLmdldCgpIHNldENvbnRyb2xWaWV3Om5pbF07Cit9CisKK3ZvaWQgV2ViQ29u
dGV4dE1lbnVQcm94eU1hYzo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4
dE1lbnVJdGVtJiBpdGVtKQoreworICAgIG1fcGFnZS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQo
aXRlbSk7Cit9CisKK3N0YXRpYyB2b2lkIHBvcHVsYXRlTlNNZW51KE5TTWVudSogbWVudSwgY29u
c3QgVmVjdG9yPFJldGFpblB0cjxOU01lbnVJdGVtPiA+JiBtZW51SXRlbVZlY3RvcikKK3sKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWVudUl0ZW1WZWN0b3Iuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgTlNJbnRlZ2VyIG9sZFN0YXRlID0gW21lbnVJdGVtVmVjdG9yW2ldLmdldCgpIHN0
YXRlXTsKKyAgICAgICAgW21lbnUgYWRkSXRlbTptZW51SXRlbVZlY3RvcltpXS5nZXQoKV07Cisg
ICAgICAgIFttZW51SXRlbVZlY3RvcltpXS5nZXQoKSBzZXRTdGF0ZTpvbGRTdGF0ZV07CisgICAg
fQorfQorCitzdGF0aWMgVmVjdG9yPFJldGFpblB0cjxOU01lbnVJdGVtPiA+IG5zTWVudUl0ZW1W
ZWN0b3IoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbT4mIGl0ZW1zKQoreworICAgIFZl
Y3RvcjxSZXRhaW5QdHI8TlNNZW51SXRlbT4gPiByZXN1bHQ7CisKKyAgICB1bnNpZ25lZCBzaXpl
ID0gaXRlbXMuc2l6ZSgpOworICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkoc2l6ZSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBzd2l0Y2ggKGl0
ZW1zW2ldLm1fdHlwZSkgeworICAgICAgICBjYXNlIEFjdGlvblR5cGU6CisgICAgICAgIGNhc2Ug
Q2hlY2thYmxlQWN0aW9uVHlwZToKKyAgICAgICAgeworICAgICAgICAgICAgTlNNZW51SXRlbSog
bWVudUl0ZW0gPSBbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6bnNTdHJpbmdGcm9t
V2ViQ29yZVN0cmluZyhpdGVtc1tpXS5tX3RpdGxlKSBhY3Rpb246QHNlbGVjdG9yKGZvcndhcmRD
b250ZXh0TWVudUFjdGlvbjopIGtleUVxdWl2YWxlbnQ6QCIiXTsKKyAgICAgICAgICAgIFttZW51
SXRlbSBzZXRUYWc6aXRlbXNbaV0ubV9hY3Rpb25dOworICAgICAgICAgICAgW21lbnVJdGVtIHNl
dEVuYWJsZWQ6aXRlbXNbaV0ubV9lbmFibGVkXTsKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRT
dGF0ZTppdGVtc1tpXS5tX2NoZWNrZWQgPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChSZXRhaW5QdHI8
TlNNZW51SXRlbT4oQWRvcHROUywgbWVudUl0ZW0pKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgU2VwYXJhdG9yVHlwZToKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoW05TTWVudUl0ZW0gc2VwYXJhdG9ySXRlbV0pOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgU3VibWVudVR5cGU6CisgICAgICAgIHsgICAgICAgICAgICAKKyAgICAgICAg
ICAgIE5TTWVudSogbWVudSA9IFtbTlNNZW51IGFsbG9jXSBpbml0V2l0aFRpdGxlOm5zU3RyaW5n
RnJvbVdlYkNvcmVTdHJpbmcoaXRlbXNbaV0ubV90aXRsZSldOworICAgICAgICAgICAgW21lbnUg
c2V0QXV0b2VuYWJsZXNJdGVtczpOT107CisgICAgICAgICAgICBwb3B1bGF0ZU5TTWVudShtZW51
LCBuc01lbnVJdGVtVmVjdG9yKGl0ZW1zW2ldLm1fc3VibWVudSkpOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgTlNNZW51SXRlbSogbWVudUl0ZW0gPSBbW05TTWVudUl0ZW0gYWxsb2Nd
IGluaXRXaXRoVGl0bGU6bnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhpdGVtc1tpXS5tX3RpdGxl
KSBhY3Rpb246QHNlbGVjdG9yKGZvcndhcmRDb250ZXh0TWVudUFjdGlvbjopIGtleUVxdWl2YWxl
bnQ6QCIiXTsKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRFbmFibGVkOml0ZW1zW2ldLm1fZW5h
YmxlZF07CisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3VibWVudTptZW51XTsKKyAgICAgICAg
ICAgIFttZW51IHJlbGVhc2VdOworCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFJldGFpblB0
cjxOU01lbnVJdGVtPihBZG9wdE5TLCBtZW51SXRlbSkpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBXZWJNZW51VGFyZ2V0
KiB0YXJnZXQgPSBbV2ViTWVudVRhcmdldCBzaGFyZWRNZW51VGFyZ2V0XTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBbcmVzdWx0W2ldLmdldCgpIHNl
dFRhcmdldDp0YXJnZXRdOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgV2Vi
Q29udGV4dE1lbnVQcm94eU1hYzo6cG9wdWxhdGUoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51
SXRlbT4mIGl0ZW1zKQoreworICAgIGlmIChtX3BvcHVwKQorICAgICAgICBbbV9wb3B1cC5nZXQo
KSByZW1vdmVBbGxJdGVtc107CisgICAgZWxzZSB7CisgICAgICAgIG1fcG9wdXAuYWRvcHROUyhb
W05TUG9wVXBCdXR0b25DZWxsIGFsbG9jXSBpbml0VGV4dENlbGw6QCIiIHB1bGxzRG93bjpOT10p
OworICAgICAgICBbbV9wb3B1cC5nZXQoKSBzZXRVc2VzSXRlbUZyb21NZW51Ok5PXTsKKyAgICAg
ICAgW21fcG9wdXAuZ2V0KCkgc2V0QXV0b2VuYWJsZXNJdGVtczpOT107CisgICAgfQorCisgICAg
TlNNZW51KiBtZW51ID0gW21fcG9wdXAuZ2V0KCkgbWVudV07CisgICAgcG9wdWxhdGVOU01lbnUo
bWVudSwgbnNNZW51SXRlbVZlY3RvcihpdGVtcykpOworfQorCit2b2lkIFdlYkNvbnRleHRNZW51
UHJveHlNYWM6OnNob3dDb250ZXh0TWVudShjb25zdCBJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBj
b25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtPiYgaXRlbXMpCit7CisgICAgcG9wdWxhdGUo
aXRlbXMpOworICAgIFtbV2ViTWVudVRhcmdldCBzaGFyZWRNZW51VGFyZ2V0XSBzZXRNZW51UHJv
eHk6dGhpc107CisgICAgCisgICAgTlNSZWN0IG1lbnVSZWN0ID0gTlNNYWtlUmVjdChtZW51TG9j
YXRpb24ueCgpLCBtZW51TG9jYXRpb24ueSgpLCAwLCAwKTsKKyAgICAKKyAgICBbbV9wb3B1cC5n
ZXQoKSBhdHRhY2hQb3BVcFdpdGhGcmFtZTptZW51UmVjdCBpblZpZXc6bV93ZWJWaWV3XTsKKwor
ICAgIE5TTWVudSogbWVudSA9IFttX3BvcHVwLmdldCgpIG1lbnVdOworCisgICAgLy8gVGhlc2Ug
dmFsdWVzIHdlcmUgYm9ycm93ZWQgZnJvbSBBcHBLaXQgdG8gbWF0Y2ggdGhlaXIgcGxhY2VtZW50
IG9mIHRoZSBtZW51LgorICAgIE5TUmVjdCB0aXRsZUZyYW1lID0gW21fcG9wdXAuZ2V0KCkgIHRp
dGxlUmVjdEZvckJvdW5kczptZW51UmVjdF07CisgICAgaWYgKHRpdGxlRnJhbWUuc2l6ZS53aWR0
aCA8PSAwIHx8IHRpdGxlRnJhbWUuc2l6ZS5oZWlnaHQgPD0gMCkKKyAgICAgICAgdGl0bGVGcmFt
ZSA9IG1lbnVSZWN0OworICAgIGZsb2F0IHZlcnRPZmZzZXQgPSByb3VuZGYoKE5TTWF4WShtZW51
UmVjdCkgLSBOU01heFkodGl0bGVGcmFtZSkpICsgTlNIZWlnaHQodGl0bGVGcmFtZSkpOworICAg
IE5TUG9pbnQgbG9jYXRpb24gPSBOU01ha2VQb2ludChOU01pblgobWVudVJlY3QpLCBOU01heFko
bWVudVJlY3QpIC0gdmVydE9mZnNldCk7CisKKyAgICBSZXRhaW5QdHI8TlNWaWV3PiBkdW1teVZp
ZXcoQWRvcHROUywgW1tOU1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6bWVudVJlY3RdKTsKKyAg
ICBbbV93ZWJWaWV3IGFkZFN1YnZpZXc6ZHVtbXlWaWV3LmdldCgpXTsKKyAgICBsb2NhdGlvbiA9
IFtkdW1teVZpZXcuZ2V0KCkgY29udmVydFBvaW50OmxvY2F0aW9uIGZyb21WaWV3Om1fd2ViVmll
d107CisKKyAgICBXS1BvcHVwTWVudShtZW51LCBsb2NhdGlvbiwgcm91bmRmKE5TV2lkdGgobWVu
dVJlY3QpKSwgZHVtbXlWaWV3LmdldCgpLCAtMSwgbmlsKTsKKworICAgIFttX3BvcHVwLmdldCgp
IGRpc21pc3NQb3BVcF07CisgICAgW2R1bW15Vmlldy5nZXQoKSByZW1vdmVGcm9tU3VwZXJ2aWV3
XTsKK30KKwordm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpoaWRlQ29udGV4dE1lbnUoKQor
eworICAgIFttX3BvcHVwLmdldCgpIGRpc21pc3NQb3BVcF07Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gNzA5ODQp
CisrKyBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYyNSw2ICs2MjUsMTIgQEAgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gV2ViVmlldzo6
YwogICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94eVdpbjo6Y3JlYXRlKCk7CiB9CiAKK1Bhc3NS
ZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gV2ViVmlldzo6Y3JlYXRlQ29udGV4dE1lbnVQcm94
eSgpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAgICByZXR1cm4gMDsKK30KKwogdm9p
ZCBXZWJWaWV3OjpzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJv
b2wgZmFkZU91dCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgpJbmRleDogV2ViS2l0Mi9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy93
aW4vV2ViVmlldy5oCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9X
ZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90SGFuZGxlS2V5RXZlbnQo
Y29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoKTsKKyAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRv
cj4sIGJvb2wgZmFkZU91dCk7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCklu
ZGV4OiBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
NzA5ODQpCisrKyBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTY0LDggKzE2NCwxNSBAQAogCQkxQzhFMjkzQTEyNzYxRTVCMDBCQzdC
RDAgLyogV0tJbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUM4RTI5MzgxMjc2MUU1QjAwQkM3QkQwIC8qIFdLSW5zcGVjdG9yLmNwcCAq
LzsgfTsKIAkJNTE1NzhCODMxMjA5RUNFRjAwQTM3QzRBIC8qIFdlYkRhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTc4QjgyMTIwOUVDRUYwMEEz
N0M0QSAvKiBXZWJEYXRhLmggKi87IH07CiAJCTUxNkE0QTVEMTIwQTJDQ0QwMEMwNUI3RiAvKiBX
ZWJFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE2QTRBNUIxMjBBMkNDRDAwQzA1QjdGIC8qIFdlYkVycm9yLmggKi87IH07CisJCTUxODcxQjVC
MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIgLyog
V2ViQ29udGV4dE1lbnUuY3BwICovOyB9OworCQk1MTg3MUI1QzEyN0NCODlEMDBGNzYyMzIgLyog
V2ViQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovOyB9
OwogCQk1MUE3RjJGMzEyNUJGODIwMDA4QUVCMUQgLyogTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBN0YyRjIxMjVCRjgyMDAwOEFFQjFE
IC8qIExvZ2dpbmcuaCAqLzsgfTsKIAkJNTFBN0YyRjUxMjVCRjhENDAwOEFFQjFEIC8qIExvZ2dp
bmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFB
N0YyRjQxMjVCRjhENDAwOEFFQjFEIC8qIExvZ2dpbmcuY3BwICovOyB9OworCQk1MUFDQkExNTEy
NzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUNCQTEzMTI3OUU4QzMwMEQyMDNCOSAv
KiBXZWJDb250ZXh0TWVudUl0ZW0uY3BwICovOyB9OworCQk1MUFDQkExNjEyNzlFOEMzMDBEMjAz
QjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUFDQkExNDEyNzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4dE1l
bnVJdGVtLmggKi87IH07CisJCTUxQUNCQjgyMTI3QThCQUQwMEQyMDNCOSAvKiBXZWJDb250ZXh0
TWVudVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUFDQkI4MTEyN0E4QkFEMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eS5oICovOyB9
OworCQk1MUFDQkJBMDEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQ0JCOUUx
MjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMuaCAqLzsgfTsKKwkJNTFB
Q0JCQTExMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFDQkI5RjEyN0E4RjJD
MDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSAqLzsgfTsKIAkJNTFCMzAwNTAx
MjUyOUQwRTAwMEI1Q0EwIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjMwMDRFMTI1MjlEMEUwMDBCNUNB
MCAvKiBXZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAgKi87IH07CiAJCTUxQjMwMDUxMTI1MjlEMEUw
MDBCNUNBMCAvKiBXZWJQYWdlUHJveHlDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIzMDA0RjEyNTI5RDBFMDAwQjVDQTAgLyogV2ViUGFnZVBy
b3h5Q0YuY3BwICovOyB9OwogCQk2RDhBOTFBNjExRjBFRkQxMDBERDAxRkUgLyogY29tLmFwcGxl
LldlYlByb2Nlc3Muc2IgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZEOEE5MUE1MTFGMEVGRDEwMEREMDFGRSAvKiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5z
YiAqLzsgfTsKQEAgLTY3MCw4ICs2NzcsMTUgQEAKIAkJMzJEQkNGNUUwMzcwQURFRTAwQzkxNzgz
IC8qIFdlYktpdDJQcmVmaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
S2l0MlByZWZpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTU3OEI4MjEyMDlF
Q0VGMDBBMzdDNEEgLyogV2ViRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNkE0QTVCMTIwQTJD
Q0QwMEMwNUI3RiAvKiBXZWJFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTg3MUI1OTEyN0NC
ODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dE1lbnUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBN0YyRjIxMjVCRjgyMDAwOEFFQjFEIC8qIExvZ2dpbmcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9nZ2luZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUE3RjJGNDEyNUJGOEQ0MDA4QUVCMUQgLyogTG9nZ2luZy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2dnaW5nLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQ0JBMTMxMjc5RThDMzAwRDIwM0I5IC8qIFdl
YkNvbnRleHRNZW51SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJDb250ZXh0TWVudUl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MUFDQkExNDEyNzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbnRleHRNZW51SXRlbS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MUFDQkI4MTEyN0E4QkFEMDBEMjAzQjkgLyogV2ViQ29udGV4
dE1lbnVQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0
TWVudVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQUNCQjlFMTI3QThG
MkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkNvbnRleHRNZW51UHJveHlNYWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTFBQ0JCOUYxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51
UHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJD
b250ZXh0TWVudVByb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIz
MDA0RTEyNTI5RDBFMDAwQjVDQTAgLyogV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwOyBw
YXRoID0gY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUIzMDA0RjEyNTI5RDBFMDAwQjVDQTAgLyogV2ViUGFnZVByb3h5Q0YuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUGFnZVByb3h5Q0YuY3BwOyBw
YXRoID0gY2YvV2ViUGFnZVByb3h5Q0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1REFENzI5NDExNkZGNzBCMDBFRTUzOTYgLyogV2ViUHJvY2Vzcy54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJQcm9jZXNzLnhjY29uZmlnOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTI3NCwxMiArMTI4OCwxNCBAQAogCQkJCUJDQjBBRUU3MTIy
RjUzRTMwMEIxMzQxRSAvKiBNdXRhYmxlRGljdGlvbmFyeS5oICovLAogCQkJCUMwMkJGRjE1MTI1
MTRGRDgwMDlDQ0JFQSAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmggKi8sCiAJCQkJQkNDNTcx
NjExMTVBREI0MjAwMUNDQUY5IC8qIE5vdEltcGxlbWVudGVkLmggKi8sCisJCQkJQkNCRDNDM0Ex
MjVCRkE3QTAwRDJDMjlGIC8qIFN0cmluZ1BhaXJWZWN0b3IuaCAqLywKIAkJCQlCQ0IwQjBERjEy
MzA1QUIxMDBCMTM0MUUgLyogVXNlck1lc3NhZ2VDb2RlcnMuaCAqLywKIAkJCQkxQTBGMjlDOTEy
MEIzNzE2MDA1M0QxQjkgLyogVmlzaXRlZExpbmtUYWJsZS5jcHAgKi8sCiAJCQkJMUEwRjI5Q0Ex
MjBCMzcxNjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rVGFibGUuaCAqLywKIAkJCQlCQzFERDdCMTEx
NERDMzk2MDA1QURBRjMgLyogV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggKi8sCiAJCQkJQkNGNTA3
MjYxMjQzMjlBQTAwNTk1NUFFIC8qIFdlYkNlcnRpZmljYXRlSW5mby5oICovLAotCQkJCUJDQkQz
QzNBMTI1QkZBN0EwMEQyQzI5RiAvKiBTdHJpbmdQYWlyVmVjdG9yLmggKi8sCisJCQkJNTFBQ0JB
MTMxMjc5RThDMzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51SXRlbS5jcHAgKi8sCisJCQkJNTFB
Q0JBMTQxMjc5RThDMzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51SXRlbS5oICovLAogCQkJCTUx
NTc4QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggKi8sCiAJCQkJQkM1NzU2MTIxMjZF
MDEzODAwNkYwRjEyIC8qIFdlYkVycm9yLmNwcCAqLywKIAkJCQk1MTZBNEE1QjEyMEEyQ0NEMDBD
MDVCN0YgLyogV2ViRXJyb3IuaCAqLywKQEAgLTE0NTEsNiArMTQ2Nyw4IEBACiAJCUJDMDMyRDVF
MTBGNDM3MkIwMDU4QzE1QSAvKiBXZWJQYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk1MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4
dE1lbnUuY3BwICovLAorCQkJCTUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0
TWVudS5oICovLAogCQkJCUJDOTYzRDZDMTEzREQxOTUwMDU3NEJFMiAvKiBtYWMgKi8sCiAJCQkJ
QkM1RjdCQjIxMTgyMzc2QzAwNTJDMDJDIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5jcHAg
Ki8sCiAJCQkJQkM1RjdCQjMxMTgyMzc2QzAwNTJDMDJDIC8qIENodW5rZWRVcGRhdGVEcmF3aW5n
QXJlYS5oICovLApAQCAtMTUwOCw2ICsxNTI2LDcgQEAKIAkJCQlCQzY0NkJGNjExREQzNzdCMDA2
NDU1QjAgLyogV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oICovLAogCQkJCUJDQjlFMjQyMTEyMERB
Q0EwMEExMzdFMCAvKiBXZWJDb250ZXh0LmNwcCAqLywKIAkJCQlCQ0I5RTI0MTExMjBEQUNBMDBB
MTM3RTAgLyogV2ViQ29udGV4dC5oICovLAorCQkJCTUxQUNCQjgxMTI3QThCQUQwMEQyMDNCOSAv
KiBXZWJDb250ZXh0TWVudVByb3h5LmggKi8sCiAJCQkJQkNERTA1OUExMUNEQThBRTAwRTQxQUYx
IC8qIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgKi8sCiAJCQkJQkNERTA1OTkx
MUNEQThBRTAwRTQxQUYxIC8qIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovLAog
CQkJCUJDQjBCMERCMTIzMDVBMjUwMEIxMzQxRSAvKiBXZWJDb250ZXh0VXNlck1lc3NhZ2VDb2Rl
cnMuaCAqLywKQEAgLTE4NjEsNiArMTg4MCw4IEBACiAJCQkJQkMyNjUxRjUxMTgyNUVGODAwMjQz
RTEyIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5TWFjLm1tICovLAogCQkJCTBGNTI2
NUJCMTFERDM3ODYwMDA2RDMzQyAvKiBMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHlNYWMubW0g
Ki8sCiAJCQkJMUExQzY0ODYxMUY0MTVCNzAwNTUzQzE5IC8qIFdlYkNvbnRleHRNYWMubW0gKi8s
CisJCQkJNTFBQ0JCOUUxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMu
aCAqLywKKwkJCQk1MUFDQkI5RjEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94
eU1hYy5tbSAqLywKIAkJCQlCQzU3NTA5NTEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51
UHJveHlNYWMuaCAqLywKIAkJCQlCQzU3NTA5NjEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBN
ZW51UHJveHlNYWMubW0gKi8sCiAJCQkpOwpAQCAtMjIxMSw3ICsyMjMyLDExIEBACiAJCQkJOTM1
RUVCQTQxMjc3NjFENjAwMzMyMkI4IC8qIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRl
bS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2MTYxNTAxMjc3OThCNTAwM0FDRDg2IC8qIERvd25s
b2FkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2MTYxRDQxMjc4OTgxQzAwM0FDRDg2
IC8qIERvd25sb2FkLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUFDQkExNjEyNzlFOEMzMDBEMjAz
QjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUFDQkI4MjEy
N0E4QkFEMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTFBQ0JCQTAxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBMTE5QTk1MTI3Qjc5NjIwMEE5RUNCMSAvKiBNZXNzYWdlU2Vu
ZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg3MUI1QzEyN0NCODlEMDBGNzYyMzIgLyogV2Vi
Q29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjUzNCwxMiArMjU1OSwxNSBAQAogCQkJ
CTFBNjE2MTRGMTI3Nzk4QjUwMDNBQ0Q4NiAvKiBEb3dubG9hZE1hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUE2MTYxRDUxMjc4OTgxQzAwM0FDRDg2IC8qIERvd25sb2FkLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBNjE2Mzk2MTI3ODlCMkYwMDNBQ0Q4NiAvKiBEb3dubG9hZE1hYy5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTUxQUNCQTE1MTI3OUU4QzMwMEQyMDNCOSAvKiBXZWJDb250
ZXh0TWVudUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFBQ0JCQTExMjdBOEYyQzAwRDIw
M0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMDMz
N0RBRTEyN0EyNEZFMDA4RkY0RjQgLyogV2ViRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QzAzMzdEQjAxMjdBMjhEMDAwOEZGNEY0IC8qIFdlYk1vdXNlRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzAzMzdERDExMjdBMjk4MDAwOEZGNEY0IC8qIFdlYldoZWVsRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdERDMxMjdBMkEwRTAwOEZGNEY0IC8qIFdlYktleWJvYXJk
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdERDgxMjdBNTFCNjAwOEZGNEY0IC8q
IFdlYlRvdWNoRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdEREQxMjdBNTIxQzAw
OEZGNEY0IC8qIFdlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MTg3MUI1QjEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gNzA5ODQpCisrKyBXZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnUu
aCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFt
ZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC01MjUsNiArNTI2LDEz
IEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBXZWIKICAgICByZXR1cm4g
V2ViU2VhcmNoUG9wdXBNZW51OjpjcmVhdGUobV9wYWdlLCBjbGllbnQpOwogfQogCisjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6c2hvd0NvbnRleHRNZW51
KCkKK3sKKyAgICBtX3BhZ2UtPmNvbnRleHRNZW51KCktPnNob3coKTsKK30KKyNlbmRpZgorCiBQ
YXNzT3duUHRyPEhUTUxQYXJzZXJRdWlya3M+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSFRNTFBh
cnNlclF1aXJrcygpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFdlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlz
aW9uIDcwOTg0KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNiArMTcwLDEwIEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51
KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3Jl
OjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKIAorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQor
ICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKTsKKyNlbmRpZgorCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hSb290R3JhcGhp
Y3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbigpOwpJbmRl
eDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuY3BwCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDYgKzI1LDggQEAKIAogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51Q2xpZW50Lmgi
CiAKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CisKICNkZWZpbmUgRElTQUJMRV9O
T1RfSU1QTEVNRU5URURfV0FSTklOR1MgMQogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAK
QEAgLTM3LDEwICszOSwxMyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVu
dURlCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLVBsYXRmb3JtTWVudURlc2NyaXB0aW9uIFdlYkNv
bnRleHRNZW51Q2xpZW50OjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhDb250ZXh0TWVu
dSopCitQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBXZWJDb250ZXh0TWVudUNsaWVudDo6Z2V0Q3Vz
dG9tTWVudUZyb21EZWZhdWx0SXRlbXMoQ29udGV4dE1lbnUqIG1lbnUpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICAvLyBGSVhNRTogIFRoZSBlbWJlZGRlZCBh
cHAgbmVlZHMgYSBjaGFuY2UgdG8gY3VzdG9taXplIHRoZSBjb250ZXh0IG1lbnUsIGFuZCB0aGF0
IHdpbGwgcHJvYmFibHkgaGFwcGVuCisgICAgLy8gdmlhIGFuIGluamVjdGVkIGJ1bmRsZS4gPHJk
YXI6Ly9wcm9ibGVtLzg2MTM3Mjc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDg3MjAgY292ZXIgdGhpcyB0YXNrLgorCisgICAgQVNTRVJUKG1lbnUpOworICAg
IHJldHVybiBtZW51LT5wbGF0Zm9ybURlc2NyaXB0aW9uKCk7CiB9CiAKIHZvaWQgV2ViQ29udGV4
dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSosIGNv
bnN0IENvbnRleHRNZW51KikKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
bnRleHRNZW51LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJDb250ZXh0TWVudS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJDb250ZXh0TWVudS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKgorICovCisKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudS5oIgorCisjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUg
IldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51
Q29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvbnRleHRNZW51OjpXZWJD
b250ZXh0TWVudShXZWJQYWdlKiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK1dl
YkNvbnRleHRNZW51Ojp+V2ViQ29udGV4dE1lbnUoKQoreworfQorCit2b2lkIFdlYkNvbnRleHRN
ZW51OjpzaG93KCkKK3sKKyAgICBXZWJDb3JlOjpDb250ZXh0TWVudSogbWVudSA9IG1fcGFnZS0+
Y29yZVBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNvbnRleHRNZW51KCk7CisgICAg
aWYgKCFtZW51KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgVmVjdG9yPFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbT4gY29yZUl0ZW1zID0gV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVmVjdG9y
KG1lbnUtPnBsYXRmb3JtRGVzY3JpcHRpb24oKSk7CisgICAgICAgIAorICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93
Q29udGV4dE1lbnUobWVudS0+aGl0VGVzdFJlc3VsdCgpLnBvaW50KCksIGtpdEl0ZW1zKGNvcmVJ
dGVtcywgbWVudSkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJDb250ZXh0TWVu
dTo6aXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbSYgaXRlbSkKK3sKKyAgICBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0gY29yZUl0ZW0oV2ViQ29yZTo6QWN0aW9uVHlwZSwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24+KGl0ZW0ubV9hY3Rpb24pLCBpdGVt
Lm1fdGl0bGUpOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVy
KCktPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKCZjb3JlSXRlbSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1l
bnUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0
TWVudS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29u
dGV4dE1lbnUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFdl
YkNvbnRleHRNZW51X2gKKyNkZWZpbmUgV2ViQ29udGV4dE1lbnVfaAorCisjaW5jbHVkZSAiV2Vi
Q29udGV4dE1lbnVJdGVtLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQ
YWdlOworCitjbGFzcyBXZWJDb250ZXh0TWVudSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvbnRl
eHRNZW51PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnU+
IGNyZWF0ZShXZWJQYWdlKiBwYWdlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29udGV4dE1l
bnUocGFnZSkpOyB9CisgICAgfldlYkNvbnRleHRNZW51KCk7CisKKyAgICB2b2lkIHNob3coKTsK
KyAgICB2b2lkIGl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW0mKTsKKworcHJp
dmF0ZToKKyAgICBXZWJDb250ZXh0TWVudShXZWJQYWdlKik7CisgICAgCisgICAgV2ViUGFnZSog
bV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQb3B1
cE1lbnVfaApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlz
aW9uIDcwOTg0KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAj
aW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCIKICNpbmNsdWRlICJXZWJDaHJvbWVD
bGllbnQuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudS5oIgogI2luY2x1ZGUgIldlYkNvbnRl
eHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5j
bHVkZSAiV2ViRHJhZ0NsaWVudC5oIgpAQCAtNTMsNiArNTQsOCBAQAogI2luY2x1ZGUgIldlYlBy
ZWZlcmVuY2VzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Byb3h5TWVzc2FnZUtpbmRzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWUuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRXZlbnRIYW5kbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CkBAIC00ODAsNiArNDgzLDEzIEBAIHZvaWQg
V2ViUGFnZTo6cGFnZURpZFNjcm9sbCgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpQYWdlRGlkU2Nyb2xsKCkpOwogfQogCitXZWJDb250ZXh0TWVudSogV2ViUGFnZTo6Y29udGV4
dE1lbnUoKQoreworICAgIGlmICghbV9jb250ZXh0TWVudSkKKyAgICAgICAgbV9jb250ZXh0TWVu
dSA9IFdlYkNvbnRleHRNZW51OjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIG1fY29udGV4dE1l
bnUuZ2V0KCk7Cit9CisKIC8vIEV2ZW50cyAKIAogc3RhdGljIGNvbnN0IFdlYkV2ZW50KiBnX2N1
cnJlbnRFdmVudCA9IDA7CkBAIC01MTksNyArNTI5LDIwIEBAIHN0YXRpYyBib29sIGhhbmRsZU1v
dXNlRXZlbnQoY29uc3QgV2ViTW8KIAogICAgIHN3aXRjaCAocGxhdGZvcm1Nb3VzZUV2ZW50LmV2
ZW50VHlwZSgpKSB7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6TW91c2VFdmVudFByZXNzZWQ6Ci0g
ICAgICAgICAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVByZXNz
RXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50KTsKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHBs
YXRmb3JtTW91c2VFdmVudC5idXR0b24oKSA9PSBXZWJDb3JlOjpSaWdodEJ1dHRvbikKKyAgICAg
ICAgICAgICAgICBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVu
dSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBib29sIGhhbmRsZWQgPSBmcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUHJlc3NFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAocGxhdGZvcm1Nb3VzZUV2ZW50LmJ1dHRvbigp
ID09IFdlYkNvcmU6OlJpZ2h0QnV0dG9uKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlZCA9IGZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+c2VuZENvbnRleHRNZW51RXZlbnQocGxhdGZvcm1Nb3VzZUV2
ZW50KTsKKyAgICAgICAgICAgICAgICBpZiAoaGFuZGxlZCkKKyAgICAgICAgICAgICAgICAgICAg
cGFnZS0+Y2hyb21lKCktPnNob3dDb250ZXh0TWVudSgpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gaGFuZGxlZDsKKyAgICAgICAgfQogICAgICAgICBjYXNlIFdlYkNvcmU6
Ok1vdXNlRXZlbnRSZWxlYXNlZDoKICAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KHBsYXRmb3JtTW91c2VFdmVudCk7CiAgICAg
ICAgIGNhc2UgV2ViQ29yZTo6TW91c2VFdmVudE1vdmVkOgpAQCAtODgzLDYgKzkwNiwxMiBAQCB2
b2lkIFdlYlBhZ2U6OmRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBCiAgICAgbV9hY3RpdmVQb3B1
cE1lbnUgPSAwOwogfQogCit2b2lkIFdlYlBhZ2U6OmRpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29u
dGV4dE1lbnUoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtJiBpdGVtKQoreworICAgIEFTU0VSVCht
X2NvbnRleHRNZW51KTsKKyAgICBtX2NvbnRleHRNZW51LT5pdGVtU2VsZWN0ZWQoaXRlbSk7Cit9
CisKICNpZiBQTEFURk9STShNQUMpCiB2b2lkIFdlYlBhZ2U6OmFkZFBsdWdpblZpZXcoUGx1Z2lu
VmlldyogcGx1Z2luVmlldykKIHsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgJKHJldmlzaW9uIDcwOTg0KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCw4IEBAIGNsYXNzIERyYXdpbmdBcmVhOwog
Y2xhc3MgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBQYWdlT3ZlcmxheTsK
IGNsYXNzIFBsdWdpblZpZXc7CitjbGFzcyBXZWJDb250ZXh0TWVudTsKK2NsYXNzIFdlYkNvbnRl
eHRNZW51SXRlbTsKIGNsYXNzIFdlYkV2ZW50OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJ
bnNwZWN0b3I7CkBAIC0xODYsNiArMTg4LDggQEAgcHVibGljOgogICAgIEZpbmRDb250cm9sbGVy
JiBmaW5kQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fZmluZENvbnRyb2xsZXI7IH0KIAogICAgIHZv
aWQgcGFnZURpZFNjcm9sbCgpOworICAgIAorICAgIFdlYkNvbnRleHRNZW51KiBjb250ZXh0TWVu
dSgpOwogCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CkBAIC0yNTIsNiArMjU2LDEwIEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBY3RpdmVQb3B1cE1lbnUoaW50MzJf
dCBuZXdJbmRleCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2b2lkIGRpZFNl
bGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtJik7
CisjZW5kaWYKKwogICAgIE93blB0cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CiAgICAgUmVmUHRy
PFdlYkZyYW1lPiBtX21haW5GcmFtZTsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVCYWNrRm9y
d2FyZExpc3Q+IG1fYmFja0ZvcndhcmRMaXN0OwpAQCAtMjk0LDYgKzMwMiw4IEBAIHByaXZhdGU6
CiAKICAgICBSZWZQdHI8V2ViUG9wdXBNZW51PiBtX2FjdGl2ZVBvcHVwTWVudTsKIAorICAgIFJl
ZlB0cjxXZWJDb250ZXh0TWVudT4gbV9jb250ZXh0TWVudTsKKwogICAgIHVpbnQ2NF90IG1fcGFn
ZUlEOwogfTsKIApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDkgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAKICAgICAjIFBvcHVwIG1lbnUuCiAgICAgRGlkQ2hhbmdl
U2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVudShpbnQzMl90IG5ld0luZGV4KTsKKyAgICAK
KyAgICAjIENvbnRleHQgbWVudS4KKyAgICBEaWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRN
ZW51KFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtIG1lbnVJdGVtKTsKIAogICAgIFNldFdpbmRv
d1Jlc2l6ZXJTaXplKFdlYkNvcmU6OkludFNpemUgaW50ZXJzZWN0c1ZpZXcpCiAKSW5kZXg6IFdl
YktpdDIvd2luL1dlYktpdDIudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktp
dDIudmNwcm9qCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC00ODksNiArNDg5LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4N
CiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJDb250ZXh0TWVudUl0
ZW0uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cU2hhcmVkXFdlYkNvbnRleHRNZW51SXRlbS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0K
KwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYkNvcmVBcmd1bWVudENv
ZGVycy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTExODgsNiArMTE5NiwxNCBAQAogCQkJ
CQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2Vi
UHJvY2Vzc1xXZWJQYWdlXFdlYkNvbnRleHRNZW51LmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxl
Pg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2Vc
V2ViQ29udGV4dE1lbnUuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2VcV2ViRWRpdENvbW1hbmQuY3Bw
Ig0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpAQCAtMTY4NSw2ICsxNzAxLDEwIEBACiAJCQkJPg0K
IAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xX
ZWJDb250ZXh0TWVudVByb3h5LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcV2ViQ29udGV4dFVzZXJNZXNzYWdlQ29kZXJz
LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA3MDk4
NCkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMC0xMC0zMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc2NjA1NDc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDg2OTkKKyAgICAgICAgQ29udGV4dCBtZW51IHN1cHBvcnQgZm9yIFdlYktpdCAyLgorCisg
ICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21l
Q2xpZW50SW1wbDo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxMC0xMC0yOSAgRGFuaWVsIEJhdGVz
ICA8ZGJhdGVzQHJpbS5jb20+CiAKICAgICAgICAgTm8gcmV2aWV3LCByb2xsaW5nIG91dCA3MDk3
MS4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA3
MDk4NCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzQsNiArMTc0LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51
Q2xpZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBv
cHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCop
IGNvbnN0OwogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgdmlydHVhbCB2b2lkIHNo
b3dDb250ZXh0TWVudSgpIHsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgdm9pZCBnZXRQb3B1
cE1lbnVJbmZvKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiwgV2ViUG9wdXBNZW51SW5mbyopOwog
CkluZGV4OiBXZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL0No
YW5nZUxvZwkocmV2aXNpb24gNzA5ODQpCisrKyBXZWJLaXQvZWZsL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTEwLTMwICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY2MDU0Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00ODY5OQorICAgICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBm
b3IgV2ViS2l0IDIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6c2hvd0NvbnRleHRNZW51KToK
KwogMjAxMC0xMC0yOSAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+CiAKICAgICAgICAg
Tm8gcmV2aWV3LCByb2xsaW5nIG91dCA3MDk3MS4KSW5kZXg6IFdlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAkocmV2aXNpb24gNzA5ODQpCisrKyBXZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUs
NiArMTE1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiopOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9Cisj
ZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRy
PEZpbGVDaG9vc2VyPik7CiAgICAgdmlydHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVDaG9vc2VyKik7CiAgICAgdmlydHVhbCB2b2lkIGZvcm1T
dGF0ZURpZENoYW5nZShjb25zdCBOb2RlKik7CkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNzA5ODQpCisrKyBX
ZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEw
LTEwLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY2MDU0
Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODY5OQorICAg
ICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xp
ZW50OjpzaG93Q29udGV4dE1lbnUpOgorCiAyMDEwLTEwLTMwICBYYW4gTG9wZXogIDx4bG9wZXpA
aWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCkluZGV4
OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgJKHJldmlzaW9u
IDcwOTg0KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAko
d29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVl
ZGVkKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKICNlbmRpZgorI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQorICAgICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9Cisj
ZW5kaWYKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChXZWJDb3JlOjpGcmFtZSos
IFBhc3NSZWZQdHI8V2ViQ29yZTo6RmlsZUNob29zZXI+KTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgV2ViQ29yZTo6
RmlsZUNob29zZXIqKTsKIApJbmRleDogV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdC9o
YWlrdS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMC0z
MCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NjA1NDc+IGFu
ZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg2OTkKKyAgICAgICAg
Q29udGV4dCBtZW51IHN1cHBvcnQgZm9yIFdlYktpdCAyLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dEhhaWt1OjpzaG93Q29udGV4dE1lbnUpOgorCiAyMDEwLTEwLTI5ICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJ
bmRleDogV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1
LmgJKHJldmlzaW9uIDcwOTg0KQorKysgV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEhhaWt1LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw2ICsxMzcsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXpl
KGludDY0X3Qgc3BhY2VOZWVkZWQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiopOwogI2VuZGlmCisjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCisgICAgICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUo
KSB7IH0KKyNlbmRpZgogCiAgICAgICAgIC8vIFRoaXMgaXMgYW4gYXN5bmNocm9ub3VzIGNhbGwu
IFRoZSBDaHJvbWVDbGllbnQgY2FuIGRpc3BsYXkgVUkgYXNraW5nIHRoZSB1c2VyIGZvciBwZXJt
aXNzaW9uCiAgICAgICAgIC8vIHRvIHVzZSBHZW9sb2NvY2F0aW9uLgpJbmRleDogV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDcwOTg0KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMC0xMC0zMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc2NjA1NDc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDg2OTkKKyAgICAgICAgQ29udGV4dCBtZW51IHN1cHBvcnQgZm9yIFdlYktpdCAyLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
aHJvbWVDbGllbnQ6OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTAtMTAtMjkgIERhbmllbCBCYXRl
cyAgPGRiYXRlc0ByaW0uY29tPgogCiAgICAgICAgIE5vIHJldmlldywgcm9sbGluZyBvdXQgNzA5
NzEuCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJ
KHJldmlzaW9uIDcwOTg0KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDYgKzE3OCw5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoV2Vi
Q29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBv
cHVwTWVudUNsaWVudCopIGNvbnN0OwogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAg
dmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgpIHsgfQorI2VuZGlmCiBwcml2YXRlOgogICAg
IFdlYlZpZXcgKm1fd2ViVmlldzsKIH07CkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDcwOTg0KQorKysgV2ViS2l0
L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTEwLTMw
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY2MDU0Nz4gYW5k
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODY5OQorICAgICAgICBD
b250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6
OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTAtMTAtMzAgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCkluZGV4OiBX
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAkocmV2aXNpb24gNzA5ODQp
CisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTM0LDYgKzEzNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNl
Y3VyaXR5T3JpZ2luKik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2
aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9CisjZW5kaWYKIAogI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQogICAgICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByZXNlbnRlciogbm90
aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3Q7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNzA5ODQpCisrKyBX
ZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEw
LTEwLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY2MDU0
Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODY5OQorICAg
ICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6
c2hvd0NvbnRleHRNZW51KToKKwogMjAxMC0xMC0yOSAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJp
bS5jb20+CiAKICAgICAgICAgTm8gcmV2aWV3LCByb2xsaW5nIG91dCA3MDk3MS4KSW5kZXg6IFdl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNzA5
ODQpCisrKyBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biopOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2aXJ0dWFsIHZv
aWQgc2hvd0NvbnRleHRNZW51KCkgeyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBwb3B1
bGF0ZVZpc2l0ZWRMaW5rcygpOwogCiAgICAgdmlydHVhbCBib29sIHBhaW50Q3VzdG9tU2Nyb2xs
YmFyKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYs
IFdlYkNvcmU6OlNjcm9sbGJhckNvbnRyb2xTaXplLCAKSW5kZXg6IFdlYktpdC93eC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gNzA5ODQpCisr
KyBXZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTAtMTAtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjYw
NTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Njk5Cisg
ICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQgMi4KKworICAgICAgICAqIFdl
YktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudFd4OjpzaG93Q29udGV4dE1lbnUpOgorCiAyMDEwLTEwLTI5ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDog
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCShyZXZpc2lvbiA3MDk4NCkK
KysrIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEyOSw2ICsxMjksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVk
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKik7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1l
bnUoKSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSos
IFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZv
ckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUNob29zZXIqKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72445</attachid>
            <date>2010-10-30 15:03:58 -0700</date>
            <delta_ts>2010-10-30 15:25:49 -0700</delta_ts>
            <desc>Patch v2 - Fix Qt (and presumably the Windows) builds with the right client method signatures.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>71014</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMTAtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ4Njk5CisgICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQg
Mi4KKworICAgICAgICBBZGQgYSAic2hvd0NvbnRleHRNZW51IiBjYWxsIHRvIENocm9tZS9DaHJv
bWVDbGllbnQ6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgICogcGFn
ZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzaG93Q29udGV4dE1lbnUp
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQu
aDoKKworICAgICAgICBBZGQgYSAicGxhdGZvcm0gZGVzY3JpcHRpb24gdG8gQ29udGV4dE1lbnVJ
dGVtIiBjcmVhdG9yLCB3aWxsIGJlIG5lZWRlZCBieSBzb21lIFdLMiBwb3J0czoKKyAgICAgICAg
KiBwbGF0Zm9ybS9Db250ZXh0TWVudS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Db250ZXh0
TWVudU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVZlY3Rvcik6IElt
cGxlbWVudCB0aGUgTWFjIHZlcnNpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ29udGV4
dE1lbnVJdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtOjpjaGVj
a2VkKTogSW1wbGVtZW50IHRoZSBNYWMgdmVyc2lvbiAtIHdpbGwgYmUgbmVlZGVkIGJ5IFdLMi4K
KwogMjAxMC0xMC0zMCAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA3
MDk4NCkKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyMjUs
OSArMTIyNSwyMiBAQCBfX1pOSzdXZWJDb3JlMThSZW5kZXJMYXllckJhY2tpbmcyMGNvbXBvCiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiBfX1pON1dlYkNvcmUxMUNvbnRleHRNZW51MjJzZXRQ
bGF0Zm9ybURlc2NyaXB0aW9uRVAxNE5TTXV0YWJsZUFycmF5CiBfX1pON1dlYkNvcmUxMkV2ZW50
SGFuZGxlcjIwc2VuZENvbnRleHRNZW51RXZlbnRFUDdOU0V2ZW50CitfX1pON1dlYkNvcmUxMkV2
ZW50SGFuZGxlcjIwc2VuZENvbnRleHRNZW51RXZlbnRFUktOU18xOFBsYXRmb3JtTW91c2VFdmVu
dEUKIF9fWk43V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtMjZyZWxlYXNlUGxhdGZvcm1EZXNjcmlw
dGlvbkV2CitfX1pON1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbUMxRU5TXzE5Q29udGV4dE1lbnVJ
dGVtVHlwZUVOU18xN0NvbnRleHRNZW51QWN0aW9uRVJLTjNXVEY2U3RyaW5nRVBOU18xMUNvbnRl
eHRNZW51RQorX19aTjdXZWJDb3JlMTVDb250ZXh0TWVudUl0ZW1EMUV2CiBfX1pON1dlYkNvcmUy
MUNvbnRleHRNZW51Q29udHJvbGxlcjE2Y2xlYXJDb250ZXh0TWVudUV2CitfX1pON1dlYkNvcmUy
MUNvbnRleHRNZW51Q29udHJvbGxlcjIzY29udGV4dE1lbnVJdGVtU2VsZWN0ZWRFUE5TXzE1Q29u
dGV4dE1lbnVJdGVtRQorX19aTjdXZWJDb3JlMjFjb250ZXh0TWVudUl0ZW1WZWN0b3JFUDE0TlNN
dXRhYmxlQXJyYXkKK19fWk43V2ViQ29yZTZDaHJvbWUxNXNob3dDb250ZXh0TWVudUV2CiBfX1pO
SzdXZWJDb3JlMTFDb250ZXh0TWVudTE5cGxhdGZvcm1EZXNjcmlwdGlvbkV2CitfX1pOSzdXZWJD
b3JlMTFDb250ZXh0TWVudTIxY2hlY2tPckVuYWJsZUlmTmVlZGVkRVJOU18xNUNvbnRleHRNZW51
SXRlbUUKK19fWk5LN1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTE1cGxhdGZvcm1TdWJNZW51RXYK
K19fWk5LN1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTR0eXBlRXYKK19fWk5LN1dlYkNvcmUxNUNv
bnRleHRNZW51SXRlbTV0aXRsZUV2CitfX1pOSzdXZWJDb3JlMTVDb250ZXh0TWVudUl0ZW02YWN0
aW9uRXYKK19fWk5LN1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTdjaGVja2VkRXYKK19fWk5LN1dl
YkNvcmUxNUNvbnRleHRNZW51SXRlbTdlbmFibGVkRXYKICNlbmRpZgogCiAjaWYgRU5BQkxFKERB
U0hCT0FSRF9TVVBQT1JUKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDcwOTg0
KQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEz
OSw2ICsxMzksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQb3B1cE1lbnU+
IGNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdCB7IHJldHVybiBhZG9wdFJl
ZihuZXcgRW1wdHlQb3B1cE1lbnUoKSk7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNo
UG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Qg
eyByZXR1cm4gYWRvcHRSZWYobmV3IEVtcHR5U2VhcmNoUG9wdXBNZW51KCkpOyB9CiAKKyNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkg
eyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0
cmluZyYpIHsgfQogCiAgICAgdmlydHVhbCBib29sIHRhYnNUb0xpbmtzKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNCArNTAyLDExIEBAIFBhc3NSZWZQ
dHI8U2VhcmNoUG9wdXBNZW51PiBDaHJvbWU6OmNyZWEKICAgICByZXR1cm4gbV9jbGllbnQtPmNy
ZWF0ZVNlYXJjaFBvcHVwTWVudShjbGllbnQpOwogfQogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCit2b2lkIENocm9tZTo6c2hvd0NvbnRleHRNZW51KCkKK3sKKyAgICBtX2NsaWVudC0+c2hv
d0NvbnRleHRNZW51KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9wYWdlL0Nocm9tZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJv
bWUuaAkocmV2aXNpb24gNzA5ODQpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE1NSw2ICsxNTUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQ
YXNzUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNv
bnN0OwogICAgICAgICBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9w
dXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCisgICAgICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KCk7CisjZW5kaWYKKwogICAgIHByaXZh
dGU6CiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAgICAgICAgQ2hyb21lQ2xpZW50KiBtX2NsaWVu
dDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDcwOTg0KQorKysgV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjksNiArMjY5LDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBvcHVwTWVudT4gY3Jl
YXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVw
TWVudUNsaWVudCopIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgPSAwOworI2VuZGlmCisKICAgICAg
ICAgdmlydHVhbCB2b2lkIHBvc3RBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKEFjY2Vzc2liaWxp
dHlPYmplY3QqLCBBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbikgeyB9CiAKICAgICBwcm90
ZWN0ZWQ6CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oCShyZXZpc2lvbiA3MDk4NCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsNiArOTEs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICB9OwogCitWZWN0b3I8Q29udGV4
dE1lbnVJdGVtPiBjb250ZXh0TWVudUl0ZW1WZWN0b3IoUGxhdGZvcm1NZW51RGVzY3JpcHRpb24g
bWVudSk7CisKIH0KIAogI2VuZGlmIC8vIENvbnRleHRNZW51X2gKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vbWFjL0NvbnRleHRNZW51SXRlbU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL21hYy9Db250ZXh0TWVudUl0ZW1NYWMubW0JKHJldmlzaW9uIDcwOTg0KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvQ29udGV4dE1lbnVJdGVtTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTQsNiArMTU0LDExIEBAIGJvb2wgQ29udGV4dE1lbnVJdGVtOjplbmFibGVkKCkgY29uc3QK
ICAgICByZXR1cm4gW21fcGxhdGZvcm1EZXNjcmlwdGlvbi5nZXQoKSBpc0VuYWJsZWRdOwogfQog
Citib29sIENvbnRleHRNZW51SXRlbTo6Y2hlY2tlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFtt
X3BsYXRmb3JtRGVzY3JpcHRpb24uZ2V0KCkgc3RhdGVdID09IE5TT25TdGF0ZTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbQkocmV2aXNpb24gNzA5ODQp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTUzLDYgKzE1MywxOSBAQCBOU011dGFibGVBcnJheSogQ29udGV4dE1lbnU6OnJlbGVh
c2VQbGF0CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5yZWxlYXNlUmVmKCk7CiB9
CiAKK1ZlY3RvcjxDb250ZXh0TWVudUl0ZW0+IGNvbnRleHRNZW51SXRlbVZlY3RvcihQbGF0Zm9y
bU1lbnVEZXNjcmlwdGlvbiBtZW51KQoreworICAgIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+IGl0
ZW1zOworICAgIHVuc2lnbmVkIGNvdW50ID0gW21lbnUgY291bnRdOworICAgIGlmIChtZW51KQor
ICAgICAgICBpdGVtcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOworICAgIAorICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICBpdGVtcy5hcHBlbmQoQ29udGV4
dE1lbnVJdGVtKFttZW51IG9iamVjdEF0SW5kZXg6aV0pKTsKKyAgICAKKyAgICByZXR1cm4gaXRl
bXM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05U
RVhUX01FTlVTKQpJbmRleDogV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDcwOTg2KQorKysgV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw4MyBAQAorMjAxMC0xMC0zMCAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NjA1NDc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg2OTkKKyAgICAgICAgQ29udGV4dCBtZW51IHN1cHBvcnQg
Zm9yIFdlYktpdCAyLgorCisgICAgICAgICogV2ViS2l0Mi5wcm86CisgICAgICAgICogV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdpbi9XZWJLaXQyLnZjcHJv
ajoKKworICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtOjpXZWJDb250ZXh0TWVudUl0ZW0pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW06OmVuY29kZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6a2l0
SXRlbXMpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaDogQWRkZWQuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9xdC9xd2twYWdlLmNwcDoKKyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpjcmVhdGVD
b250ZXh0TWVudVByb3h5KTogU3R1YiB0byBrZWVwIHRoZSBidWlsZCB3b3JraW5nLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5Lmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5Ojp+V2ViQ29udGV4
dE1lbnVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHk6OldlYkNv
bnRleHRNZW51UHJveHkpOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd0NvbnRleHRNZW51KTogU2hvd3Mg
dGhlIG1lbnUgYWZ0ZXIgcmVjZWl2aW5nIHRoZSBtZXNzYWdlIGZyb20gdGhlIFdlYlByb2Nlc3Mu
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQp
OiBTZW5kcyBpbmZvIGFib3V0IHRoZSBzZWxlY3RlZCBtZW51IGl0ZW0gdG8gdGhlIFdlYlByb2Nl
c3MKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V2ViQ29udGV4dE1lbnVQcm94eU1hYy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dE1lbnVQcm94eU1hYzo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNZW51UHJveHlNYWMubW06IEFkZGVkLgorICAgICAgICAoK1tXZWJNZW51VGFyZ2V0IHNo
YXJlZE1lbnVUYXJnZXRdKToKKyAgICAgICAgKC1bV2ViTWVudVRhcmdldCBXZWJLaXQ6Ol0pOgor
ICAgICAgICAoLVtXZWJNZW51VGFyZ2V0IHNldE1lbnVQcm94eTpXZWJLaXQ6Ol0pOgorICAgICAg
ICAoLVtXZWJNZW51VGFyZ2V0IGZvcndhcmRDb250ZXh0TWVudUFjdGlvbjpdKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWM6On5XZWJDb250ZXh0TWVu
dVByb3h5TWFjKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y29u
dGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0Ojpwb3B1bGF0ZU5TTWVudSk6
CisgICAgICAgIChXZWJLaXQ6Om5zTWVudUl0ZW1WZWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudVByb3h5TWFjOjpwb3B1bGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHRNZW51UHJveHlNYWM6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHRNZW51UHJveHlNYWM6OmhpZGVDb250ZXh0TWVudSk6CisKKyAgICAgICAgKiBVSVBy
b2Nlc3Mvd2luL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpjcmVhdGVD
b250ZXh0TWVudVByb3h5KTogU3R1YiBmb3Igbm93LgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4v
V2ViVmlldy5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnNob3dDb250
ZXh0TWVudSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUNsaWVudDo6
Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMpOiBSZXR1cm4gdGhlIFdlYkNvcmUtcHJvdmlk
ZWQgZGVmYXVsdAorICAgICAgICAgIG1lbnUgZm9yIG5vdy4gRW1iZWRkaW5nIGFwcCBjdXN0b21p
emF0aW9uIHdpbGwgY29tZSBsYXRlciAoc2VlIGJ1ZyA0ODcyMCkKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0TWVudTo6V2ViQ29udGV4dE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0TWVudTo6fldlYkNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dE1lbnU6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudTo6aXRlbVNlbGVj
dGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51OjpjcmVhdGUpOgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpjb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6OmhhbmRsZU1vdXNlRXZlbnQpOiBQ
YXNzIHJpZ2h0IG1vdXNlIHByZXNzZXMgYWxvbmcgdG8gV2ViQ29yZSBhcyBib3RoIGEgbW91c2Ug
ZXZlbnQgYW5kIGNvbnRleHQgbWVudSBldmVudCwgCisgICAgICAgICAgdGhlIHNhbWUgd2F5IFdl
YktpdDEgZG9lcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkU2VsZWN0SXRlbUZyb21B
Y3RpdmVDb250ZXh0TWVudSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwog
MjAxMC0xMC0zMCAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJLaXQyL1dl
YktpdDIucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHJldmlzaW9uIDcw
OTg0KQorKysgV2ViS2l0Mi9XZWJLaXQyLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjE0LDYgKzIx
NCw3IEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oIFwKICAg
ICBTaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5oIFwKICAgICBTaGFyZWQvV2ViQ2VydGlmaWNhdGVJ
bmZvLmggXAorICAgIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaCBcCiAgICAgU2hhcmVkL1dl
YkV2ZW50LmggXAogICAgIFNoYXJlZC9XZWJFcnJvci5oIFwKICAgICBTaGFyZWQvV2ViRXZlbnRD
b252ZXJzaW9uLmggXApAQCAtMjY0LDYgKzI2NSw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJv
Y2Vzcy9WaXNpdGVkTGlua1Byb3ZpZGVyLmggXAogICAgIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmgg
XAogICAgIFVJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBcCisgICAg
VUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkNvbnRl
eHRVc2VyTWVzc2FnZUNvZGVycy5oIFwKICAgICBVSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94
eS5oIFwKICAgICBVSVByb2Nlc3MvV2ViRmluZENsaWVudC5oIFwKQEAgLTMyOSw2ICszMzEsNyBA
QCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaCBc
CiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRQYWdlT3ZlcmxheS5oIFwKICAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuaCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
bnRleHRNZW51LmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5oIFwK
ICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5oIFwKQEAgLTM3Niw2ICszNzksNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBTaGFyZWQvcXQvV2ViVVJMUmVxdWVzdFF0LmNwcCBcCiAgICAgU2hhcmVkL3F0L1dlYlVSTFJl
c3BvbnNlUXQuY3BwIFwKICAgICBTaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5jcHAgXAorICAgIFNo
YXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwIFwKICAgICBTaGFyZWQvV2ViRXJyb3IuY3BwIFwK
ICAgICBTaGFyZWQvV2ViRXZlbnQuY3BwIFwKICAgICBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9u
LmNwcCBcCkBAIC00OTIsNiArNDk2LDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRQ
YWdlT3ZlcmxheS5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHAg
XAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAgXAogICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3Bw
IFwKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRl
bS5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJBcmd1bWVudHMu
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db250
ZXh0TWVudS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29udGV4dE1lbnVJdGVtOjpX
ZWJDb250ZXh0TWVudUl0ZW0oKQorICAgIDogbV90eXBlKFdlYkNvcmU6OkFjdGlvblR5cGUpCisg
ICAgLCBtX2FjdGlvbihXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbikKKyAgICAs
IG1fZW5hYmxlZCh0cnVlKQorICAgICwgbV9jaGVja2VkKGZhbHNlKQoreworfQorCitXZWJDb250
ZXh0TWVudUl0ZW06OldlYkNvbnRleHRNZW51SXRlbShXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
eXBlIHR5cGUsIFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbiwgY29uc3QgU3RyaW5n
JiB0aXRsZSwgYm9vbCBlbmFibGVkLCBib29sIGNoZWNrZWQpCisgICAgOiBtX3R5cGUodHlwZSkK
KyAgICAsIG1fYWN0aW9uKGFjdGlvbikKKyAgICAsIG1fdGl0bGUodGl0bGUpCisgICAgLCBtX2Vu
YWJsZWQoZW5hYmxlZCkKKyAgICAsIG1fY2hlY2tlZChjaGVja2VkKQoreworICAgIEFTU0VSVCh0
eXBlID09IFdlYkNvcmU6OkFjdGlvblR5cGUgfHwgdHlwZSA9PSBXZWJDb3JlOjpDaGVja2FibGVB
Y3Rpb25UeXBlIHx8IHR5cGUgPT0gV2ViQ29yZTo6U2VwYXJhdG9yVHlwZSk7Cit9CisKK1dlYkNv
bnRleHRNZW51SXRlbTo6V2ViQ29udGV4dE1lbnVJdGVtKFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVR5cGUgdHlwZSwgV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBjb25zdCBTdHJp
bmcmIHRpdGxlLCBib29sIGVuYWJsZWQsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+
JiBzdWJtZW51KQorICAgIDogbV90eXBlKHR5cGUpCisgICAgLCBtX2FjdGlvbihhY3Rpb24pCisg
ICAgLCBtX3RpdGxlKHRpdGxlKQorICAgICwgbV9lbmFibGVkKGVuYWJsZWQpCisgICAgLCBtX2No
ZWNrZWQoZmFsc2UpCisgICAgLCBtX3N1Ym1lbnUoc3VibWVudSkKK3sKKyAgICBBU1NFUlQodHlw
ZSA9PSBXZWJDb3JlOjpTdWJtZW51VHlwZSk7Cit9CisKK1dlYkNvbnRleHRNZW51SXRlbTo6V2Vi
Q29udGV4dE1lbnVJdGVtKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSYgaXRlbSwgV2ViQ29yZTo6
Q29udGV4dE1lbnUqIG1lbnUpCisgICAgOiBtX3R5cGUoaXRlbS50eXBlKCkpCisgICAgLCBtX2Fj
dGlvbihpdGVtLmFjdGlvbigpKQorICAgICwgbV90aXRsZShpdGVtLnRpdGxlKCkpCit7CisgICAg
aWYgKG1fdHlwZSA9PSBXZWJDb3JlOjpTdWJtZW51VHlwZSkgeworICAgICAgICBWZWN0b3I8V2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtPiBjb3JlU3VibWVudSA9IFdlYkNvcmU6OmNvbnRleHRNZW51
SXRlbVZlY3RvcihpdGVtLnBsYXRmb3JtU3ViTWVudSgpKTsKKyAgICAgICAgbV9zdWJtZW51ID0g
a2l0SXRlbXMoY29yZVN1Ym1lbnUsIG1lbnUpOworICAgIH0KKyAgICAKKyAgICBtZW51LT5jaGVj
a09yRW5hYmxlSWZOZWVkZWQoaXRlbSk7CisgICAgCisgICAgbV9lbmFibGVkID0gaXRlbS5lbmFi
bGVkKCk7CisgICAgbV9jaGVja2VkID0gaXRlbS5jaGVja2VkKCk7Cit9CisKK3ZvaWQgV2ViQ29u
dGV4dE1lbnVJdGVtOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihzdGF0aWNfY2FzdDx1aW50
MzJfdD4obV90eXBlKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fYWN0aW9uKSwgbV90aXRsZSwg
bV9jaGVja2VkLCBtX2VuYWJsZWQsIG1fc3VibWVudSkpOworfQorCitib29sIFdlYkNvbnRleHRN
ZW51SXRlbTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29u
dGV4dE1lbnVJdGVtJiBpdGVtKQoreworICAgIHVpbnQzMl90IHR5cGU7CisgICAgdWludDMyX3Qg
YWN0aW9uOworICAgIFN0cmluZyB0aXRsZTsKKyAgICBib29sIGNoZWNrZWQ7CisgICAgYm9vbCBl
bmFibGVkOworICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+IHN1Ym1lbnU7CisKKyAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQodHlwZSwgYWN0aW9uLCB0aXRsZSwgY2hl
Y2tlZCwgZW5hYmxlZCwgc3VibWVudSkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBz
d2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFdlYkNvcmU6OkFjdGlvblR5cGU6CisgICAgY2FzZSBX
ZWJDb3JlOjpTZXBhcmF0b3JUeXBlOgorICAgIGNhc2UgV2ViQ29yZTo6Q2hlY2thYmxlQWN0aW9u
VHlwZToKKyAgICAgICAgaXRlbSA9IFdlYkNvbnRleHRNZW51SXRlbShzdGF0aWNfY2FzdDxXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UeXBlPih0eXBlKSwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29u
dGV4dE1lbnVBY3Rpb24+KGFjdGlvbiksIHRpdGxlLCBlbmFibGVkLCBjaGVja2VkKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpTdWJtZW51VHlwZToKKyAgICAgICAgaXRlbSA9
IFdlYkNvbnRleHRNZW51SXRlbShzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
eXBlPih0eXBlKSwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24+KGFjdGlv
biksIHRpdGxlLCBlbmFibGVkLCBzdWJtZW51KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworVmVjdG9yPFdlYkNvbnRleHRNZW51SXRl
bT4ga2l0SXRlbXMoVmVjdG9yPFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbT4mIGNvcmVJdGVtcywg
V2ViQ29yZTo6Q29udGV4dE1lbnUqIG1lbnUpCit7CisgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51
SXRlbT4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkoY29yZUl0ZW1zLnNpemUo
KSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvcmVJdGVtcy5zaXplKCk7ICsraSkK
KyAgICAgICAgcmVzdWx0LmFwcGVuZChXZWJDb250ZXh0TWVudUl0ZW0oY29yZUl0ZW1zW2ldLCBt
ZW51KSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaAkocmV2aXNpb24gMCkKKysr
IFdlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb250ZXh0TWVudUl0ZW1faAorI2Rl
ZmluZSBXZWJDb250ZXh0TWVudUl0ZW1faAorCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVu
dUl0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIENv
cmVJUEMgeworICAgIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKKyAgICBjbGFzcyBBcmd1bWVudEVu
Y29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBDb250ZXh0TWVudTsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJDb250ZXh0TWVudUl0ZW0gewor
ICAgIFdlYkNvbnRleHRNZW51SXRlbSgpOworICAgIFdlYkNvbnRleHRNZW51SXRlbShXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW0mLCBXZWJDb3JlOjpDb250ZXh0TWVudSogbWVudSk7CisgICAgV2Vi
Q29udGV4dE1lbnVJdGVtKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVR5cGUsIFdlYkNvcmU6OkNv
bnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBib29sIGVuYWJsZWQsIGJvb2wg
Y2hlY2tlZCk7CisgICAgV2ViQ29udGV4dE1lbnVJdGVtKFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVR5cGUsIFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBi
b29sIGVuYWJsZWQsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+JiBzdWJtZW51KTsK
KyAgICAKKyAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdDsK
KyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgV2ViQ29u
dGV4dE1lbnVJdGVtJik7CisKKyAgICBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UeXBlIG1fdHlw
ZTsKKyAgICBXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiBtX2FjdGlvbjsKKyAgICBTdHJpbmcg
bV90aXRsZTsKKyAgICBib29sIG1fZW5hYmxlZDsKKyAgICBib29sIG1fY2hlY2tlZDsKKyAgICBW
ZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtPiBtX3N1Ym1lbnU7Cit9OworCitWZWN0b3I8V2ViQ29u
dGV4dE1lbnVJdGVtPiBraXRJdGVtcyhWZWN0b3I8V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtPiYs
IFdlYkNvcmU6OkNvbnRleHRNZW51Kik7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gV2ViQ29udGV4dE1lbnVJdGVtX2gKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJl
dmlzaW9uIDcwOTg0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw4ICszOSw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBGaW5k
SW5kaWNhdG9yOwogY2xhc3MgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKLWNsYXNzIFdlYkVkaXRD
b21tYW5kUHJveHk7CiBjbGFzcyBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OworY2xhc3MgV2ViQ29u
dGV4dE1lbnVQcm94eTsKK2NsYXNzIFdlYkVkaXRDb21tYW5kUHJveHk7CiBjbGFzcyBXZWJQb3B1
cE1lbnVQcm94eTsKIAogY2xhc3MgUGFnZUNsaWVudCB7CkBAIC03Miw2ICs3Myw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90SGFuZGxlS2V5RXZlbnQoY29uc3QgTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudCYpID0gMDsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQb3B1cE1l
bnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoKSA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVBy
b3h5KikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0
cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KSA9IDA7CiAKSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvbnRleHRNZW51UHJveHlfaAorI2RlZmluZSBXZWJD
b250ZXh0TWVudVByb3h5X2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBJbnRQb2ludDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3N0cnVjdCBXZWJDb250ZXh0TWVudUl0ZW07CisKK2NsYXNzIFdlYkNvbnRleHRNZW51UHJv
eHkgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb250ZXh0TWVudVByb3h5PiB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+V2ViQ29udGV4dE1lbnVQcm94eSgpCisgICAgeworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25z
dCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtPiYgaXRlbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgaGlkZUNvbnRleHRNZW51KCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgV2ViQ29udGV4dE1l
bnVQcm94eSgpCisgICAgeworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gV2ViUG9wdXBNZW51UHJveHlfaApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5j
bHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHkuaCIKICNp
bmNsdWRlICJXZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJEYXRhLmgiCkBAIC0xMTI0LDYgKzExMjUs
MjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVQb3B1cE1lbnUoKQogICAgIG1fYWN0aXZlUG9w
dXBNZW51ID0gMDsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVudShjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4
dE1lbnVJdGVtPiYgaXRlbXMpCit7CisgICAgaWYgKG1fYWN0aXZlQ29udGV4dE1lbnUpCisgICAg
ICAgIG1fYWN0aXZlQ29udGV4dE1lbnUtPmhpZGVDb250ZXh0TWVudSgpOworICAgIGVsc2UKKyAg
ICAgICAgbV9hY3RpdmVDb250ZXh0TWVudSA9IG1fcGFnZUNsaWVudC0+Y3JlYXRlQ29udGV4dE1l
bnVQcm94eSh0aGlzKTsKKyAgICAgIAorICAgIG1fYWN0aXZlQ29udGV4dE1lbnUtPnNob3dDb250
ZXh0TWVudShtZW51TG9jYXRpb24sIGl0ZW1zKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNv
bnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbSYgaXRlbSkKK3sK
KyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFNlbGVjdEl0ZW1Gcm9t
QWN0aXZlQ29udGV4dE1lbnUoaXRlbSksIG1fcGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJv
eHk6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBj
b21tYW5kUHJveHksIFVuZG9PclJlZG8gdW5kb09yUmVkbykKIHsKICAgICBtX3BhZ2VDbGllbnQt
PnJlZ2lzdGVyRWRpdENvbW1hbmQoY29tbWFuZFByb3h5LCB1bmRvT3JSZWRvKTsKSW5kZXg6IFdl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5j
bHVkZSAiV0tCYXNlLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtLmgiCiAjaW5jbHVk
ZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJXZWJGaW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
Rm9ybUNsaWVudC5oIgpAQCAtNzcsNiArNzgsNyBAQCBjbGFzcyBQbGF0Zm9ybUNlcnRpZmljYXRl
SW5mbzsKIGNsYXNzIFN0cmluZ1BhaXJWZWN0b3I7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7
CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOworY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94
eTsKIGNsYXNzIFdlYkRhdGE7CiBjbGFzcyBXZWJFZGl0Q29tbWFuZFByb3h5OwogY2xhc3MgV2Vi
S2V5Ym9hcmRFdmVudDsKQEAgLTIzMSw2ICsyMzMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdl
dFN0YXRpc3RpY3MoV0tDb250ZXh0U3RhdGlzdGljcyopOwogCisgICAgdm9pZCBjb250ZXh0TWVu
dUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW0mKTsKKwogcHJpdmF0ZToKICAg
ICBXZWJQYWdlUHJveHkoV2ViUGFnZU5hbWVzcGFjZSosIHVpbnQ2NF90IHBhZ2VJRCk7CiAKQEAg
LTMyMSw2ICszMjUsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2hvd1BvcHVwTWVudShjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiByZWN0LCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMs
IGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CiAgICAgdm9pZCBoaWRlUG9wdXBNZW51KCk7CiAKKyAg
ICAvLyBDb250ZXh0IE1lbnUuCisgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtPiYgaXRlbXMpOwor
CiAgICAgdm9pZCB0YWtlRm9jdXMoYm9vbCBkaXJlY3Rpb24pOwogICAgIHZvaWQgc2V0VG9vbFRp
cChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJz
b3ImKTsKQEAgLTM2MSw2ICszNjgsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8V2ViRWRpdENv
bW1hbmRQcm94eSo+IG1fZWRpdENvbW1hbmRTZXQ7CiAKICAgICBSZWZQdHI8V2ViUG9wdXBNZW51
UHJveHk+IG1fYWN0aXZlUG9wdXBNZW51OworICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5
PiBtX2FjdGl2ZUNvbnRleHRNZW51OwogCiAgICAgZG91YmxlIG1fZXN0aW1hdGVkUHJvZ3Jlc3M7
CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJl
dmlzaW9uIDcwOTg0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICAjIFBvcHVwTWVudS4KICAgICBTaG93UG9wdXBNZW51KFdlYkNvcmU6Oklu
dFJlY3QgcmVjdCwgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiBpdGVtcywgaW50MzJfdCBz
ZWxlY3RlZEluZGV4KQogICAgIEhpZGVQb3B1cE1lbnUoKQorICAgIAorICAgICMgQ29udGV4dE1l
bnUKKyAgICBTaG93Q29udGV4dE1lbnUoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFZlY3RvcjxX
ZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4gaXRlbXMpCiAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAgICAgIyBBY2NlbGVyYXRlZCBjb21wc2l0aW5nIG1lc3NhZ2VzLgpJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24g
NzA5ODQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkTm90SGFuZGxlS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYpOwogCiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQ
cm94eSgpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVh
dGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopOwogCiAgICAgdm9pZCBzZXRGaW5kSW5k
aWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJvb2wgZmFkZU91dCk7CiAKSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkocmV2aXNpb24g
NzA5ODQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNp
bXBvcnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQgIldLVmlld0ludGVybmFsLmgiCisjaW1wb3J0
ICJXZWJDb250ZXh0TWVudVByb3h5TWFjLmgiCiAjaW1wb3J0ICJXZWJFZGl0Q29tbWFuZFByb3h5
LmgiCiAjaW1wb3J0ICJXZWJQb3B1cE1lbnVQcm94eU1hYy5oIgogI2ltcG9ydCA8V2ViQ29yZS9D
dXJzb3IuaD4KQEAgLTI0NSw2ICsyNDYsMTEgQEAgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94
eT4gUGFnZUNsaWVudAogICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94eU1hYzo6Y3JlYXRlKG1f
d2tWaWV3KTsKIH0KIAorUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50
SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCit7CisgICAg
cmV0dXJuIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OmNyZWF0ZShtX3drVmlldywgcGFnZSk7Cit9
CisKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5k
SW5kaWNhdG9yPiBmaW5kSW5kaWNhdG9yLCBib29sIGZhZGVPdXQpCiB7CiAgICAgW21fd2tWaWV3
IF9zZXRGaW5kSW5kaWNhdG9yOmZpbmRJbmRpY2F0b3IgZmFkZU91dDpmYWRlT3V0XTsKSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAJKHJldmlzaW9uIDcwOTg0KQorKysgV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQs
NiArMTM0LDEyIEBAIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFFXS1BhZ2VQcmkKICAg
ICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlRdDo6Y3JlYXRlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8
V2ViQ29udGV4dE1lbnVQcm94eT4gUVdLUGFnZVByaXZhdGU6OmNyZWF0ZUNvbnRleHRNZW51UHJv
eHkoV2ViUGFnZVByb3h5KikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50OworICAgIHJldHVy
biAwOworfQorCiB2b2lkIFFXS1BhZ2VQcml2YXRlOjpzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQ
dHI8RmluZEluZGljYXRvcj4sIGJvb2wgZmFkZU91dCkKIHsKIH0KSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdrcGFnZV9wLmgJKHJldmlzaW9uIDcwOTg0KQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3a3BhZ2VfcC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9Vc2VyU3BhY2Uo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZE5vdEhhbmRs
ZUtleUV2ZW50KGNvbnN0IFdlYktpdDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1l
bnVQcm94eSgpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51
UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViS2l0OldlYlBhZ2VQcm94eSopOwogCiAg
ICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxXZWJLaXQ6OkZpbmRJ
bmRpY2F0b3I+LCBib29sIGZhZGVPdXQpOwogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViQ29udGV4dE1lbnVQcm94eU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb250ZXh0TWVudVByb3h5TWFjX2gK
KyNkZWZpbmUgV2ViQ29udGV4dE1lbnVQcm94eU1hY19oCisKKyNpbmNsdWRlICJXZWJDb250ZXh0
TWVudVByb3h5LmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWZkZWYgX19PQkpD
X18KK0BjbGFzcyBOU1BvcFVwQnV0dG9uQ2VsbDsKK0BjbGFzcyBXS1ZpZXc7CisjZWxzZQorY2xh
c3MgTlNQb3BVcEJ1dHRvbkNlbGw7CitjbGFzcyBXS1ZpZXc7CisjZW5kaWYKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViQ29udGV4dE1lbnVQ
cm94eU1hYyA6IHB1YmxpYyBXZWJDb250ZXh0TWVudVByb3h5IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5TWFjPiBjcmVhdGUoV0tWaWV3KiB3ZWJW
aWV3LCBXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYkNvbnRleHRNZW51UHJveHlNYWMod2ViVmlldywgcGFnZSkpOworICAgIH0KKyAgICB+
V2ViQ29udGV4dE1lbnVQcm94eU1hYygpOworCisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0
TWVudShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVu
dUl0ZW0+Jik7CisgICAgdmlydHVhbCB2b2lkIGhpZGVDb250ZXh0TWVudSgpOworICAgIAorICAg
IHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtJik7
CisKK3ByaXZhdGU6CisgICAgV2ViQ29udGV4dE1lbnVQcm94eU1hYyhXS1ZpZXcqLCBXZWJQYWdl
UHJveHkqKTsKKworICAgIHZvaWQgcG9wdWxhdGUoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51
SXRlbT4mKTsKKworICAgIFJldGFpblB0cjxOU1BvcFVwQnV0dG9uQ2VsbD4gbV9wb3B1cDsKKyAg
ICBXS1ZpZXcqIG1fd2ViVmlldzsKKyAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViQ29udGV4dE1lbnVQcm94eU1hY19o
CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1h
Yy5tbQkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVu
dVByb3h5TWFjLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5TWFjLmgiCisKKyNpbmNsdWRlICJQYWdlQ2xp
ZW50SW1wbC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbS5oIgorI2luY2x1ZGUgIldL
Vmlldy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViS2l0
U3lzdGVtSW50ZXJmYWNlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW50ZXJm
YWNlIFdlYk1lbnVUYXJnZXQgOiBOU09iamVjdCB7CisgICAgV2ViS2l0OjpXZWJDb250ZXh0TWVu
dVByb3h5TWFjKiBfbWVudVByb3h5OworfQorKyAoV2ViTWVudVRhcmdldCopc2hhcmVkTWVudVRh
cmdldDsKKy0gKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyopbWVudVByb3h5OworLSAo
dm9pZClzZXRNZW51UHJveHk6KFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyopbWVudVBy
b3h5OworLSAodm9pZClmb3J3YXJkQ29udGV4dE1lbnVBY3Rpb246KGlkKXNlbmRlcjsKK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIFdlYk1lbnVUYXJnZXQKKworKyAoV2ViTWVudVRhcmdldCopc2hh
cmVkTWVudVRhcmdldAoreworICAgIHN0YXRpYyBXZWJNZW51VGFyZ2V0KiB0YXJnZXQ7CisgICAg
aWYgKCF0YXJnZXQpCisgICAgICAgIHRhcmdldCA9IFtbV2ViTWVudVRhcmdldCBhbGxvY10gaW5p
dF07CisgICAgcmV0dXJuIHRhcmdldDsKK30KKworLSAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVBy
b3h5TWFjKiltZW51UHJveHkKK3sKKyAgICByZXR1cm4gX21lbnVQcm94eTsKK30KKworLSAodm9p
ZClzZXRNZW51UHJveHk6KFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyopbWVudVByb3h5
Cit7CisgICAgX21lbnVQcm94eSA9IG1lbnVQcm94eTsKK30KKworLSAodm9pZClmb3J3YXJkQ29u
dGV4dE1lbnVBY3Rpb246KGlkKXNlbmRlcgoreworICAgIFdlYktpdDo6V2ViQ29udGV4dE1lbnVJ
dGVtIGl0ZW0oQWN0aW9uVHlwZSwgc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24+KFtzZW5k
ZXIgdGFnXSksIFtzZW5kZXIgdGl0bGVdLCBbc2VuZGVyIGlzRW5hYmxlZF0sIFtzZW5kZXIgc3Rh
dGVdID09IE5TT25TdGF0ZSk7CisgICAgX21lbnVQcm94eS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0
ZWQoaXRlbSk7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvbnRleHRN
ZW51UHJveHlNYWM6OldlYkNvbnRleHRNZW51UHJveHlNYWMoV0tWaWV3KiB3ZWJWaWV3LCBXZWJQ
YWdlUHJveHkqIHBhZ2UpCisgICAgOiBtX3dlYlZpZXcod2ViVmlldykKKyAgICAsIG1fcGFnZShw
YWdlKQoreworfQorCitXZWJDb250ZXh0TWVudVByb3h5TWFjOjp+V2ViQ29udGV4dE1lbnVQcm94
eU1hYygpCit7CisgICAgaWYgKG1fcG9wdXApCisgICAgICAgIFttX3BvcHVwLmdldCgpIHNldENv
bnRyb2xWaWV3Om5pbF07Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtJiBpdGVtKQoreworICAg
IG1fcGFnZS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaXRlbSk7Cit9CisKK3N0YXRpYyB2b2lk
IHBvcHVsYXRlTlNNZW51KE5TTWVudSogbWVudSwgY29uc3QgVmVjdG9yPFJldGFpblB0cjxOU01l
bnVJdGVtPiA+JiBtZW51SXRlbVZlY3RvcikKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbWVudUl0ZW1WZWN0b3Iuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgTlNJbnRlZ2VyIG9sZFN0
YXRlID0gW21lbnVJdGVtVmVjdG9yW2ldLmdldCgpIHN0YXRlXTsKKyAgICAgICAgW21lbnUgYWRk
SXRlbTptZW51SXRlbVZlY3RvcltpXS5nZXQoKV07CisgICAgICAgIFttZW51SXRlbVZlY3Rvcltp
XS5nZXQoKSBzZXRTdGF0ZTpvbGRTdGF0ZV07CisgICAgfQorfQorCitzdGF0aWMgVmVjdG9yPFJl
dGFpblB0cjxOU01lbnVJdGVtPiA+IG5zTWVudUl0ZW1WZWN0b3IoY29uc3QgVmVjdG9yPFdlYkNv
bnRleHRNZW51SXRlbT4mIGl0ZW1zKQoreworICAgIFZlY3RvcjxSZXRhaW5QdHI8TlNNZW51SXRl
bT4gPiByZXN1bHQ7CisKKyAgICB1bnNpZ25lZCBzaXplID0gaXRlbXMuc2l6ZSgpOworICAgIHJl
c3VsdC5yZXNlcnZlQ2FwYWNpdHkoc2l6ZSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNpemU7IGkrKykgeworICAgICAgICBzd2l0Y2ggKGl0ZW1zW2ldLm1fdHlwZSkgeworICAgICAg
ICBjYXNlIEFjdGlvblR5cGU6CisgICAgICAgIGNhc2UgQ2hlY2thYmxlQWN0aW9uVHlwZToKKyAg
ICAgICAgeworICAgICAgICAgICAgTlNNZW51SXRlbSogbWVudUl0ZW0gPSBbW05TTWVudUl0ZW0g
YWxsb2NdIGluaXRXaXRoVGl0bGU6bnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhpdGVtc1tpXS5t
X3RpdGxlKSBhY3Rpb246QHNlbGVjdG9yKGZvcndhcmRDb250ZXh0TWVudUFjdGlvbjopIGtleUVx
dWl2YWxlbnQ6QCIiXTsKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRUYWc6aXRlbXNbaV0ubV9h
Y3Rpb25dOworICAgICAgICAgICAgW21lbnVJdGVtIHNldEVuYWJsZWQ6aXRlbXNbaV0ubV9lbmFi
bGVkXTsKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTppdGVtc1tpXS5tX2NoZWNrZWQg
PyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChSZXRhaW5QdHI8TlNNZW51SXRlbT4oQWRvcHROUywgbWVu
dUl0ZW0pKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgU2Vw
YXJhdG9yVHlwZToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoW05TTWVudUl0ZW0gc2VwYXJh
dG9ySXRlbV0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3VibWVudVR5cGU6
CisgICAgICAgIHsgICAgICAgICAgICAKKyAgICAgICAgICAgIE5TTWVudSogbWVudSA9IFtbTlNN
ZW51IGFsbG9jXSBpbml0V2l0aFRpdGxlOm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoaXRlbXNb
aV0ubV90aXRsZSldOworICAgICAgICAgICAgW21lbnUgc2V0QXV0b2VuYWJsZXNJdGVtczpOT107
CisgICAgICAgICAgICBwb3B1bGF0ZU5TTWVudShtZW51LCBuc01lbnVJdGVtVmVjdG9yKGl0ZW1z
W2ldLm1fc3VibWVudSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgTlNNZW51SXRl
bSogbWVudUl0ZW0gPSBbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6bnNTdHJpbmdG
cm9tV2ViQ29yZVN0cmluZyhpdGVtc1tpXS5tX3RpdGxlKSBhY3Rpb246QHNlbGVjdG9yKGZvcndh
cmRDb250ZXh0TWVudUFjdGlvbjopIGtleUVxdWl2YWxlbnQ6QCIiXTsKKyAgICAgICAgICAgIFtt
ZW51SXRlbSBzZXRFbmFibGVkOml0ZW1zW2ldLm1fZW5hYmxlZF07CisgICAgICAgICAgICBbbWVu
dUl0ZW0gc2V0U3VibWVudTptZW51XTsKKyAgICAgICAgICAgIFttZW51IHJlbGVhc2VdOworCisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKFJldGFpblB0cjxOU01lbnVJdGVtPihBZG9wdE5TLCBt
ZW51SXRlbSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBXZWJNZW51VGFyZ2V0KiB0YXJnZXQgPSBbV2ViTWVudVRhcmdl
dCBzaGFyZWRNZW51VGFyZ2V0XTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsg
KytpKQorICAgICAgICBbcmVzdWx0W2ldLmdldCgpIHNldFRhcmdldDp0YXJnZXRdOworICAgIAor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6cG9w
dWxhdGUoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbT4mIGl0ZW1zKQoreworICAgIGlm
IChtX3BvcHVwKQorICAgICAgICBbbV9wb3B1cC5nZXQoKSByZW1vdmVBbGxJdGVtc107CisgICAg
ZWxzZSB7CisgICAgICAgIG1fcG9wdXAuYWRvcHROUyhbW05TUG9wVXBCdXR0b25DZWxsIGFsbG9j
XSBpbml0VGV4dENlbGw6QCIiIHB1bGxzRG93bjpOT10pOworICAgICAgICBbbV9wb3B1cC5nZXQo
KSBzZXRVc2VzSXRlbUZyb21NZW51Ok5PXTsKKyAgICAgICAgW21fcG9wdXAuZ2V0KCkgc2V0QXV0
b2VuYWJsZXNJdGVtczpOT107CisgICAgfQorCisgICAgTlNNZW51KiBtZW51ID0gW21fcG9wdXAu
Z2V0KCkgbWVudV07CisgICAgcG9wdWxhdGVOU01lbnUobWVudSwgbnNNZW51SXRlbVZlY3Rvcihp
dGVtcykpOworfQorCit2b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OnNob3dDb250ZXh0TWVu
dShjb25zdCBJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1l
bnVJdGVtPiYgaXRlbXMpCit7CisgICAgcG9wdWxhdGUoaXRlbXMpOworICAgIFtbV2ViTWVudVRh
cmdldCBzaGFyZWRNZW51VGFyZ2V0XSBzZXRNZW51UHJveHk6dGhpc107CisgICAgCisgICAgTlNS
ZWN0IG1lbnVSZWN0ID0gTlNNYWtlUmVjdChtZW51TG9jYXRpb24ueCgpLCBtZW51TG9jYXRpb24u
eSgpLCAwLCAwKTsKKyAgICAKKyAgICBbbV9wb3B1cC5nZXQoKSBhdHRhY2hQb3BVcFdpdGhGcmFt
ZTptZW51UmVjdCBpblZpZXc6bV93ZWJWaWV3XTsKKworICAgIE5TTWVudSogbWVudSA9IFttX3Bv
cHVwLmdldCgpIG1lbnVdOworCisgICAgLy8gVGhlc2UgdmFsdWVzIHdlcmUgYm9ycm93ZWQgZnJv
bSBBcHBLaXQgdG8gbWF0Y2ggdGhlaXIgcGxhY2VtZW50IG9mIHRoZSBtZW51LgorICAgIE5TUmVj
dCB0aXRsZUZyYW1lID0gW21fcG9wdXAuZ2V0KCkgIHRpdGxlUmVjdEZvckJvdW5kczptZW51UmVj
dF07CisgICAgaWYgKHRpdGxlRnJhbWUuc2l6ZS53aWR0aCA8PSAwIHx8IHRpdGxlRnJhbWUuc2l6
ZS5oZWlnaHQgPD0gMCkKKyAgICAgICAgdGl0bGVGcmFtZSA9IG1lbnVSZWN0OworICAgIGZsb2F0
IHZlcnRPZmZzZXQgPSByb3VuZGYoKE5TTWF4WShtZW51UmVjdCkgLSBOU01heFkodGl0bGVGcmFt
ZSkpICsgTlNIZWlnaHQodGl0bGVGcmFtZSkpOworICAgIE5TUG9pbnQgbG9jYXRpb24gPSBOU01h
a2VQb2ludChOU01pblgobWVudVJlY3QpLCBOU01heFkobWVudVJlY3QpIC0gdmVydE9mZnNldCk7
CisKKyAgICBSZXRhaW5QdHI8TlNWaWV3PiBkdW1teVZpZXcoQWRvcHROUywgW1tOU1ZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6bWVudVJlY3RdKTsKKyAgICBbbV93ZWJWaWV3IGFkZFN1YnZpZXc6
ZHVtbXlWaWV3LmdldCgpXTsKKyAgICBsb2NhdGlvbiA9IFtkdW1teVZpZXcuZ2V0KCkgY29udmVy
dFBvaW50OmxvY2F0aW9uIGZyb21WaWV3Om1fd2ViVmlld107CisKKyAgICBXS1BvcHVwTWVudSht
ZW51LCBsb2NhdGlvbiwgcm91bmRmKE5TV2lkdGgobWVudVJlY3QpKSwgZHVtbXlWaWV3LmdldCgp
LCAtMSwgbmlsKTsKKworICAgIFttX3BvcHVwLmdldCgpIGRpc21pc3NQb3BVcF07CisgICAgW2R1
bW15Vmlldy5nZXQoKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKK30KKwordm9pZCBXZWJDb250ZXh0
TWVudVByb3h5TWFjOjpoaWRlQ29udGV4dE1lbnUoKQoreworICAgIFttX3BvcHVwLmdldCgpIGRp
c21pc3NQb3BVcF07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNz
L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gNzA5ODQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy93
aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyNSw2ICs2MjUsMTIgQEAgUGFzc1Jl
ZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gV2ViVmlldzo6YwogICAgIHJldHVybiBXZWJQb3B1cE1l
bnVQcm94eVdpbjo6Y3JlYXRlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94
eT4gV2ViVmlldzo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQoreworICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgV2ViVmlldzo6
c2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQp
CiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL3dp
bi9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcu
aAkocmV2aXNpb24gNzA5ODQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZE5vdEhhbmRsZUtleUV2ZW50KGNvbnN0IE5hdGl2
ZVdlYktleWJvYXJkRXZlbnQmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51
UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Kik7
CiAgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNh
dG9yPiwgYm9vbCBmYWRlT3V0KTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
SW5kZXg6IFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biA3MDk4NCkKKysrIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjQsOCArMTY0LDE1IEBACiAJCTFDOEUyOTNBMTI3NjFFNUIwMEJD
N0JEMCAvKiBXS0luc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQzhFMjkzODEyNzYxRTVCMDBCQzdCRDAgLyogV0tJbnNwZWN0b3IuY3Bw
ICovOyB9OwogCQk1MTU3OEI4MzEyMDlFQ0VGMDBBMzdDNEEgLyogV2ViRGF0YS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1NzhCODIxMjA5RUNFRjAw
QTM3QzRBIC8qIFdlYkRhdGEuaCAqLzsgfTsKIAkJNTE2QTRBNUQxMjBBMkNDRDAwQzA1QjdGIC8q
IFdlYkVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0YgLyogV2ViRXJyb3IuaCAqLzsgfTsKKwkJNTE4NzFC
NUIxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAv
KiBXZWJDb250ZXh0TWVudS5jcHAgKi87IH07CisJCTUxODcxQjVDMTI3Q0I4OUQwMEY3NjIzMiAv
KiBXZWJDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmggKi87
IH07CiAJCTUxQTdGMkYzMTI1QkY4MjAwMDhBRUIxRCAvKiBMb2dnaW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE3RjJGMjEyNUJGODIwMDA4QUVC
MUQgLyogTG9nZ2luZy5oICovOyB9OwogCQk1MUE3RjJGNTEyNUJGOEQ0MDA4QUVCMUQgLyogTG9n
Z2luZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUE3RjJGNDEyNUJGOEQ0MDA4QUVCMUQgLyogTG9nZ2luZy5jcHAgKi87IH07CisJCTUxQUNCQTE1
MTI3OUU4QzMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQ0JBMTMxMjc5RThDMzAwRDIwM0I5
IC8qIFdlYkNvbnRleHRNZW51SXRlbS5jcHAgKi87IH07CisJCTUxQUNCQTE2MTI3OUU4QzMwMEQy
MDNCOSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUNCQTE0MTI3OUU4QzMwMEQyMDNCOSAvKiBXZWJDb250ZXh0
TWVudUl0ZW0uaCAqLzsgfTsKKwkJNTFBQ0JCODIxMjdBOEJBRDAwRDIwM0I5IC8qIFdlYkNvbnRl
eHRNZW51UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQUNCQjgxMTI3QThCQUQwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5LmggKi87
IH07CisJCTUxQUNCQkEwMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFj
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFDQkI5
RTEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oICovOyB9OworCQk1
MUFDQkJBMTEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUNCQjlGMTI3QThG
MkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1tICovOyB9OwogCQk1MUIzMDA1
MDEyNTI5RDBFMDAwQjVDQTAgLyogV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMzAwNEUxMjUyOUQwRTAwMEI1
Q0EwIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCAqLzsgfTsKIAkJNTFCMzAwNTExMjUyOUQw
RTAwMEI1Q0EwIC8qIFdlYlBhZ2VQcm94eUNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjMwMDRGMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJQYWdl
UHJveHlDRi5jcHAgKi87IH07CiAJCTZEOEE5MUE2MTFGMEVGRDEwMEREMDFGRSAvKiBjb20uYXBw
bGUuV2ViUHJvY2Vzcy5zYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkQ4QTkxQTUxMUYwRUZEMTAwREQwMUZFIC8qIGNvbS5hcHBsZS5XZWJQcm9jZXNz
LnNiICovOyB9OwpAQCAtNjcwLDggKzY3NywxNSBAQAogCQkzMkRCQ0Y1RTAzNzBBREVFMDBDOTE3
ODMgLyogV2ViS2l0MlByZWZpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJLaXQyUHJlZml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNTc4QjgyMTIw
OUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2QTRBNUIxMjBB
MkNDRDAwQzA1QjdGIC8qIFdlYkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxODcxQjU5MTI3
Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE3RjJGMjEyNUJGODIwMDA4QUVCMUQgLyogTG9nZ2lu
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2dnaW5nLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQTdGMkY0MTI1QkY4RDQwMDhBRUIxRCAvKiBMb2dnaW5n
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvZ2dpbmcuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUFDQkExMzEyNzlFOEMzMDBEMjAzQjkgLyog
V2ViQ29udGV4dE1lbnVJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkNvbnRleHRNZW51SXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxQUNCQTE0MTI3OUU4QzMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dE1lbnVJdGVtLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQUNCQjgxMTI3QThCQUQwMEQyMDNCOSAvKiBXZWJDb250
ZXh0TWVudVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbnRl
eHRNZW51UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQ0JCOUUxMjdB
OEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MUFDQkI5RjEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1l
bnVQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
YkNvbnRleHRNZW51UHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
QjMwMDRFMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJCYWNrRm9yd2FyZExpc3RDRi5jcHA7
IHBhdGggPSBjZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxQjMwMDRGMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJQYWdlUHJveHlDRi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJQYWdlUHJveHlDRi5jcHA7
IHBhdGggPSBjZi9XZWJQYWdlUHJveHlDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVEQUQ3Mjk0MTE2RkY3MEIwMEVFNTM5NiAvKiBXZWJQcm9jZXNzLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdlYlByb2Nlc3MueGNjb25maWc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjc0LDEyICsxMjg4LDE0IEBACiAJCQkJQkNCMEFFRTcx
MjJGNTNFMzAwQjEzNDFFIC8qIE11dGFibGVEaWN0aW9uYXJ5LmggKi8sCiAJCQkJQzAyQkZGMTUx
MjUxNEZEODAwOUNDQkVBIC8qIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCAqLywKIAkJCQlCQ0M1
NzE2MTExNUFEQjQyMDAxQ0NBRjkgLyogTm90SW1wbGVtZW50ZWQuaCAqLywKKwkJCQlCQ0JEM0Mz
QTEyNUJGQTdBMDBEMkMyOUYgLyogU3RyaW5nUGFpclZlY3Rvci5oICovLAogCQkJCUJDQjBCMERG
MTIzMDVBQjEwMEIxMzQxRSAvKiBVc2VyTWVzc2FnZUNvZGVycy5oICovLAogCQkJCTFBMEYyOUM5
MTIwQjM3MTYwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1RhYmxlLmNwcCAqLywKIAkJCQkxQTBGMjlD
QTEyMEIzNzE2MDA1M0QxQjkgLyogVmlzaXRlZExpbmtUYWJsZS5oICovLAogCQkJCUJDMUREN0Ix
MTE0REMzOTYwMDVBREFGMyAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCAqLywKIAkJCQlCQ0Y1
MDcyNjEyNDMyOUFBMDA1OTU1QUUgLyogV2ViQ2VydGlmaWNhdGVJbmZvLmggKi8sCi0JCQkJQkNC
RDNDM0ExMjVCRkE3QTAwRDJDMjlGIC8qIFN0cmluZ1BhaXJWZWN0b3IuaCAqLywKKwkJCQk1MUFD
QkExMzEyNzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmNwcCAqLywKKwkJCQk1
MUFDQkExNDEyNzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggKi8sCiAJCQkJ
NTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8qIFdlYkRhdGEuaCAqLywKIAkJCQlCQzU3NTYxMjEy
NkUwMTM4MDA2RjBGMTIgLyogV2ViRXJyb3IuY3BwICovLAogCQkJCTUxNkE0QTVCMTIwQTJDQ0Qw
MEMwNUI3RiAvKiBXZWJFcnJvci5oICovLApAQCAtMTQ1MSw2ICsxNDY3LDggQEAKIAkJQkMwMzJE
NUUxMEY0MzcyQjAwNThDMTVBIC8qIFdlYlBhZ2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250
ZXh0TWVudS5jcHAgKi8sCisJCQkJNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRl
eHRNZW51LmggKi8sCiAJCQkJQkM5NjNENkMxMTNERDE5NTAwNTc0QkUyIC8qIG1hYyAqLywKIAkJ
CQlCQzVGN0JCMjExODIzNzZDMDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmNw
cCAqLywKIAkJCQlCQzVGN0JCMzExODIzNzZDMDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0ZURyYXdp
bmdBcmVhLmggKi8sCkBAIC0xNTA4LDYgKzE1MjYsNyBAQAogCQkJCUJDNjQ2QkY2MTFERDM3N0Iw
MDY0NTVCMCAvKiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggKi8sCiAJCQkJQkNCOUUyNDIxMTIw
REFDQTAwQTEzN0UwIC8qIFdlYkNvbnRleHQuY3BwICovLAogCQkJCUJDQjlFMjQxMTEyMERBQ0Ew
MEExMzdFMCAvKiBXZWJDb250ZXh0LmggKi8sCisJCQkJNTFBQ0JCODExMjdBOEJBRDAwRDIwM0I5
IC8qIFdlYkNvbnRleHRNZW51UHJveHkuaCAqLywKIAkJCQlCQ0RFMDU5QTExQ0RBOEFFMDBFNDFB
RjEgLyogV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCAqLywKIAkJCQlCQ0RFMDU5
OTExQ0RBOEFFMDBFNDFBRjEgLyogV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggKi8s
CiAJCQkJQkNCMEIwREIxMjMwNUEyNTAwQjEzNDFFIC8qIFdlYkNvbnRleHRVc2VyTWVzc2FnZUNv
ZGVycy5oICovLApAQCAtMTg2MSw2ICsxODgwLDggQEAKIAkJCQlCQzI2NTFGNTExODI1RUY4MDAy
NDNFMTIgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlNYWMubW0gKi8sCiAJCQkJMEY1
MjY1QkIxMUREMzc4NjAwMDZEMzNDIC8qIExheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eU1hYy5t
bSAqLywKIAkJCQkxQTFDNjQ4NjExRjQxNUI3MDA1NTNDMTkgLyogV2ViQ29udGV4dE1hYy5tbSAq
LywKKwkJCQk1MUFDQkI5RTEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1h
Yy5oICovLAorCQkJCTUxQUNCQjlGMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVBy
b3h5TWFjLm1tICovLAogCQkJCUJDNTc1MDk1MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1cE1l
bnVQcm94eU1hYy5oICovLAogCQkJCUJDNTc1MDk2MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1
cE1lbnVQcm94eU1hYy5tbSAqLywKIAkJCSk7CkBAIC0yMjExLDcgKzIyMzIsMTEgQEAKIAkJCQk5
MzVFRUJBNDEyNzc2MUQ2MDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJ
dGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTYxNjE1MDEyNzc5OEI1MDAzQUNEODYgLyogRG93
bmxvYWRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTYxNjFENDEyNzg5ODFDMDAzQUNE
ODYgLyogRG93bmxvYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQUNCQTE2MTI3OUU4QzMwMEQy
MDNCOSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQUNCQjgy
MTI3QThCQUQwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5LmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MUFDQkJBMDEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUExMTlBOTUxMjdCNzk2MjAwQTlFQ0IxIC8qIE1lc3NhZ2VT
ZW5kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODcxQjVDMTI3Q0I4OUQwMEY3NjIzMiAvKiBX
ZWJDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTM0LDEyICsyNTU5LDE1IEBACiAJ
CQkJMUE2MTYxNEYxMjc3OThCNTAwM0FDRDg2IC8qIERvd25sb2FkTWFuYWdlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQTYxNjFENTEyNzg5ODFDMDAzQUNEODYgLyogRG93bmxvYWQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUE2MTYzOTYxMjc4OUIyRjAwM0FDRDg2IC8qIERvd25sb2FkTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTFBQ0JBMTUxMjc5RThDMzAwRDIwM0I5IC8qIFdlYkNv
bnRleHRNZW51SXRlbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUFDQkJBMTEyN0E4RjJDMDBE
MjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMw
MzM3REFFMTI3QTI0RkUwMDhGRjRGNCAvKiBXZWJFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDMDMzN0RCMDEyN0EyOEQwMDA4RkY0RjQgLyogV2ViTW91c2VFdmVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDMDMzN0REMTEyN0EyOTgwMDA4RkY0RjQgLyogV2ViV2hlZWxFdmVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDMDMzN0REMzEyN0EyQTBFMDA4RkY0RjQgLyogV2ViS2V5Ym9h
cmRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDMzN0REODEyN0E1MUI2MDA4RkY0RjQg
LyogV2ViVG91Y2hFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDMzN0RERDEyN0E1MjFD
MDA4RkY0RjQgLyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUxODcxQjVCMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgogI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVu
dS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkZy
YW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAgLTUyNSw2ICs1MjYs
MTMgQEAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IFdlYgogICAgIHJldHVy
biBXZWJTZWFyY2hQb3B1cE1lbnU6OmNyZWF0ZShtX3BhZ2UsIGNsaWVudCk7CiB9CiAKKyNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzaG93Q29udGV4dE1l
bnUoKQoreworICAgIG1fcGFnZS0+Y29udGV4dE1lbnUoKS0+c2hvdygpOworfQorI2VuZGlmCisK
IFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVIVE1M
UGFyc2VyUXVpcmtzKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2
aXNpb24gNzA5ODQpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAsMTAgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1l
bnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNv
cmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
CisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgpOworI2VuZGlmCisKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFw
aGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOwogICAg
IHZpcnR1YWwgdm9pZCBzZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCk7Cklu
ZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5jcHAJKHJldmlzaW9uIDcwOTg0KQorKysgV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjUsNiArMjUsOCBAQAogCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVDbGllbnQu
aCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KKwogI2RlZmluZSBESVNBQkxF
X05PVF9JTVBMRU1FTlRFRF9XQVJOSU5HUyAxCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
IApAQCAtMzcsMTAgKzM5LDEzIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNvbnRleHRN
ZW51RGUKICAgICBkZWxldGUgdGhpczsKIH0KIAotUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gV2Vi
Q29udGV4dE1lbnVDbGllbnQ6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKENvbnRleHRN
ZW51KikKK1BsYXRmb3JtTWVudURlc2NyaXB0aW9uIFdlYkNvbnRleHRNZW51Q2xpZW50OjpnZXRD
dXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhDb250ZXh0TWVudSogbWVudSkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIC8vIEZJWE1FOiAgVGhlIGVtYmVkZGVk
IGFwcCBuZWVkcyBhIGNoYW5jZSB0byBjdXN0b21pemUgdGhlIGNvbnRleHQgbWVudSwgYW5kIHRo
YXQgd2lsbCBwcm9iYWJseSBoYXBwZW4KKyAgICAvLyB2aWEgYW4gaW5qZWN0ZWQgYnVuZGxlLiA8
cmRhcjovL3Byb2JsZW0vODYxMzcyNz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00ODcyMCBjb3ZlciB0aGlzIHRhc2suCisKKyAgICBBU1NFUlQobWVudSk7Cisg
ICAgcmV0dXJuIG1lbnUtPnBsYXRmb3JtRGVzY3JpcHRpb24oKTsKIH0KIAogdm9pZCBXZWJDb250
ZXh0TWVudUNsaWVudDo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiwg
Y29uc3QgQ29udGV4dE1lbnUqKQpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29udGV4dE1lbnUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkNvbnRleHRNZW51LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgIldlYkNvbnRleHRNZW51LmgiCisKKyNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1l
bnVDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29udGV4dE1lbnU6Oldl
YkNvbnRleHRNZW51KFdlYlBhZ2UqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKwor
V2ViQ29udGV4dE1lbnU6On5XZWJDb250ZXh0TWVudSgpCit7Cit9CisKK3ZvaWQgV2ViQ29udGV4
dE1lbnU6OnNob3coKQoreworICAgIFdlYkNvcmU6OkNvbnRleHRNZW51KiBtZW51ID0gbV9wYWdl
LT5jb3JlUGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y29udGV4dE1lbnUoKTsKKyAg
ICBpZiAoIW1lbnUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBWZWN0b3I8V2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtPiBjb3JlSXRlbXMgPSBXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1WZWN0
b3IobWVudS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgCisgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNo
b3dDb250ZXh0TWVudShtZW51LT5oaXRUZXN0UmVzdWx0KCkucG9pbnQoKSwga2l0SXRlbXMoY29y
ZUl0ZW1zLCBtZW51KSksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYkNvbnRleHRN
ZW51OjppdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtJiBpdGVtKQoreworICAg
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSBjb3JlSXRlbShXZWJDb3JlOjpBY3Rpb25UeXBlLCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbj4oaXRlbS5tX2FjdGlvbiksIGl0
ZW0ubV90aXRsZSk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xs
ZXIoKS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoJmNvcmVJdGVtKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0
TWVudS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRl
eHRNZW51LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJD
b250ZXh0TWVudS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYg
V2ViQ29udGV4dE1lbnVfaAorI2RlZmluZSBXZWJDb250ZXh0TWVudV9oCisKKyNpbmNsdWRlICJX
ZWJDb250ZXh0TWVudUl0ZW0uaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YlBhZ2U7CisKK2NsYXNzIFdlYkNvbnRleHRNZW51IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViQ29u
dGV4dE1lbnU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVu
dT4gY3JlYXRlKFdlYlBhZ2UqIHBhZ2UpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb250ZXh0
TWVudShwYWdlKSk7IH0KKyAgICB+V2ViQ29udGV4dE1lbnUoKTsKKworICAgIHZvaWQgc2hvdygp
OworICAgIHZvaWQgaXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbSYpOworCitw
cml2YXRlOgorICAgIFdlYkNvbnRleHRNZW51KFdlYlBhZ2UqKTsKKyAgICAKKyAgICBXZWJQYWdl
KiBtX3BhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBv
cHVwTWVudV9oCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2
aXNpb24gNzA5ODQpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIK
ICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIgogI2luY2x1ZGUgIldlYkNocm9t
ZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51LmgiCiAjaW5jbHVkZSAiV2ViQ29u
dGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlICJXZWJEcmFnQ2xpZW50LmgiCkBAIC01Myw2ICs1NCw4IEBACiAjaW5jbHVkZSAiV2Vi
UHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzUHJveHlNZXNzYWdlS2luZHMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KQEAgLTQ4MCw2ICs0ODMsMTMgQEAgdm9p
ZCBXZWJQYWdlOjpwYWdlRGlkU2Nyb2xsKCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlBhZ2VEaWRTY3JvbGwoKSk7CiB9CiAKK1dlYkNvbnRleHRNZW51KiBXZWJQYWdlOjpjb250
ZXh0TWVudSgpCit7CisgICAgaWYgKCFtX2NvbnRleHRNZW51KQorICAgICAgICBtX2NvbnRleHRN
ZW51ID0gV2ViQ29udGV4dE1lbnU6OmNyZWF0ZSh0aGlzKTsKKyAgICByZXR1cm4gbV9jb250ZXh0
TWVudS5nZXQoKTsKK30KKwogLy8gRXZlbnRzIAogCiBzdGF0aWMgY29uc3QgV2ViRXZlbnQqIGdf
Y3VycmVudEV2ZW50ID0gMDsKQEAgLTUxOSw3ICs1MjksMjAgQEAgc3RhdGljIGJvb2wgaGFuZGxl
TW91c2VFdmVudChjb25zdCBXZWJNbwogCiAgICAgc3dpdGNoIChwbGF0Zm9ybU1vdXNlRXZlbnQu
ZXZlbnRUeXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpNb3VzZUV2ZW50UHJlc3NlZDoK
LSAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUHJl
c3NFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQpOworICAgICAgICB7CisgICAgICAgICAgICBpZiAo
cGxhdGZvcm1Nb3VzZUV2ZW50LmJ1dHRvbigpID09IFdlYkNvcmU6OlJpZ2h0QnV0dG9uKQorICAg
ICAgICAgICAgICAgIHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jbGVhckNvbnRleHRN
ZW51KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJvb2wgaGFuZGxlZCA9IGZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VQcmVzc0V2ZW50KHBsYXRmb3JtTW91c2VFdmVudCk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChwbGF0Zm9ybU1vdXNlRXZlbnQuYnV0dG9u
KCkgPT0gV2ViQ29yZTo6UmlnaHRCdXR0b24pIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0g
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZW5kQ29udGV4dE1lbnVFdmVudChwbGF0Zm9ybU1vdXNl
RXZlbnQpOworICAgICAgICAgICAgICAgIGlmIChoYW5kbGVkKQorICAgICAgICAgICAgICAgICAg
ICBwYWdlLT5jaHJvbWUoKS0+c2hvd0NvbnRleHRNZW51KCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBoYW5kbGVkOworICAgICAgICB9CiAgICAgICAgIGNhc2UgV2ViQ29y
ZTo6TW91c2VFdmVudFJlbGVhc2VkOgogICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50KTsKICAg
ICAgICAgY2FzZSBXZWJDb3JlOjpNb3VzZUV2ZW50TW92ZWQ6CkBAIC04ODMsNiArOTA2LDEyIEBA
IHZvaWQgV2ViUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckEKICAgICBtX2FjdGl2ZVBv
cHVwTWVudSA9IDA7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6ZGlkU2VsZWN0SXRlbUZyb21BY3RpdmVD
b250ZXh0TWVudShjb25zdCBXZWJDb250ZXh0TWVudUl0ZW0mIGl0ZW0pCit7CisgICAgQVNTRVJU
KG1fY29udGV4dE1lbnUpOworICAgIG1fY29udGV4dE1lbnUtPml0ZW1TZWxlY3RlZChpdGVtKTsK
K30KKwogI2lmIFBMQVRGT1JNKE1BQykKIHZvaWQgV2ViUGFnZTo6YWRkUGx1Z2luVmlldyhQbHVn
aW5WaWV3KiBwbHVnaW5WaWV3KQogewpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAkocmV2aXNpb24gNzA5ODQpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDggQEAgY2xhc3MgRHJhd2luZ0FyZWE7
CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdDsKIGNsYXNzIFBhZ2VPdmVybGF5
OwogY2xhc3MgUGx1Z2luVmlldzsKK2NsYXNzIFdlYkNvbnRleHRNZW51OworY2xhc3MgV2ViQ29u
dGV4dE1lbnVJdGVtOwogY2xhc3MgV2ViRXZlbnQ7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdl
Ykluc3BlY3RvcjsKQEAgLTE4Niw2ICsxODgsOCBAQCBwdWJsaWM6CiAgICAgRmluZENvbnRyb2xs
ZXImIGZpbmRDb250cm9sbGVyKCkgeyByZXR1cm4gbV9maW5kQ29udHJvbGxlcjsgfQogCiAgICAg
dm9pZCBwYWdlRGlkU2Nyb2xsKCk7CisgICAgCisgICAgV2ViQ29udGV4dE1lbnUqIGNvbnRleHRN
ZW51KCk7CiAKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKQEAgLTI1Miw2ICsyNTYsMTAgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVudShpbnQz
Ml90IG5ld0luZGV4KTsKIAorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIHZvaWQgZGlk
U2VsZWN0SXRlbUZyb21BY3RpdmVDb250ZXh0TWVudShjb25zdCBXZWJDb250ZXh0TWVudUl0ZW0m
KTsKKyNlbmRpZgorCiAgICAgT3duUHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFnZTsKICAgICBSZWZQ
dHI8V2ViRnJhbWU+IG1fbWFpbkZyYW1lOwogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUJhY2tG
b3J3YXJkTGlzdD4gbV9iYWNrRm9yd2FyZExpc3Q7CkBAIC0yOTQsNiArMzAyLDggQEAgcHJpdmF0
ZToKIAogICAgIFJlZlB0cjxXZWJQb3B1cE1lbnU+IG1fYWN0aXZlUG9wdXBNZW51OwogCisgICAg
UmVmUHRyPFdlYkNvbnRleHRNZW51PiBtX2NvbnRleHRNZW51OworCiAgICAgdWludDY0X3QgbV9w
YWdlSUQ7CiB9OwogCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDcwOTg0KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsOSBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKIAogICAgICMgUG9wdXAgbWVudS4KICAgICBEaWRDaGFu
Z2VTZWxlY3RlZEluZGV4Rm9yQWN0aXZlUG9wdXBNZW51KGludDMyX3QgbmV3SW5kZXgpOworICAg
IAorICAgICMgQ29udGV4dCBtZW51LgorICAgIERpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4
dE1lbnUoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW0gbWVudUl0ZW0pOwogCiAgICAgU2V0V2lu
ZG93UmVzaXplclNpemUoV2ViQ29yZTo6SW50U2l6ZSBpbnRlcnNlY3RzVmlldykKIApJbmRleDog
V2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi93aW4vV2Vi
S2l0Mi52Y3Byb2oJKHJldmlzaW9uIDcwOTg0KQorKysgV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3By
b2oJKHdvcmtpbmcgY29weSkKQEAgLTQ4OSw2ICs0ODksMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxl
Pg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYkNvbnRleHRNZW51
SXRlbS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxTaGFyZWRcV2ViQ29udGV4dE1lbnVJdGVtLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMTE4OCw2ICsxMTk2LDE0IEBACiAJ
CQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxX
ZWJQcm9jZXNzXFdlYlBhZ2VcV2ViQ29udGV4dE1lbnUuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0Zp
bGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2ViUGFn
ZVxXZWJDb250ZXh0TWVudS5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQog
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2ViUGFnZVxXZWJFZGl0Q29tbWFuZC5j
cHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkBAIC0xNjg1LDYgKzE3MDEsMTAgQEAKIAkJCQk+
DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNz
XFdlYkNvbnRleHRNZW51UHJveHkuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xXZWJDb250ZXh0VXNlck1lc3NhZ2VDb2Rl
cnMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDcw
OTg0KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDEwLTEwLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzY2MDU0Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00ODY5OQorICAgICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIuCisK
KyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnRJbXBsOjpzaG93Q29udGV4dE1lbnUpOgorCiAyMDEwLTEwLTI5ICBEYW5pZWwgQmF0
ZXMgIDxkYmF0ZXNAcmltLmNvbT4KIAogICAgICAgICBObyByZXZpZXcsIHJvbGxpbmcgb3V0IDcw
OTcxLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJKHJldmlzaW9u
IDcwOTg0KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE3NCw2ICsxNzQsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1l
bnVDbGllbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNo
UG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50
KikgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2aXJ0dWFsIHZvaWQg
c2hvd0NvbnRleHRNZW51KCkgeyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIGdldFBv
cHVwTWVudUluZm8oV2ViQ29yZTo6UG9wdXBDb250YWluZXIqLCBXZWJQb3B1cE1lbnVJbmZvKik7
CiAKSW5kZXg6IFdlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwv
Q2hhbmdlTG9nCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTAtMzAgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Njk5CisgICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0
IGZvciBXZWJLaXQgMi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpzaG93Q29udGV4dE1lbnUp
OgorCiAyMDEwLTEwLTI5ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KIAogICAgICAg
ICBObyByZXZpZXcsIHJvbGxpbmcgb3V0IDcwOTcxLgpJbmRleDogV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
NSw2ICsxMTUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKik7CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0K
KyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQ
dHI8RmlsZUNob29zZXI+KTsKICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUNob29zZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZm9y
bVN0YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKTsKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MDk4NCkKKysr
IFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTAtMTAtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjYw
NTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Njk5Cisg
ICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQgMi4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVD
bGllbnQ6OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTAtMTAtMzAgIFhhbiBMb3BleiAgPHhsb3Bl
ekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KSW5k
ZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAkocmV2aXNp
b24gNzA5ODQpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VO
ZWVkZWQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOwogI2VuZGlmCisjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCisgICAgICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0K
KyNlbmRpZgogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1l
KiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4pOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBXZWJDb3Jl
OjpGaWxlQ2hvb3NlciopOwogCkluZGV4OiBXZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9oYWlrdS9DaGFuZ2VMb2cJKHJldmlzaW9uIDcwOTg0KQorKysgV2ViS2l0
L2hhaWt1L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTEw
LTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY2MDU0Nz4g
YW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODY5OQorICAgICAg
ICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50SGFpa3U6OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTAtMTAtMjkgIEFsZXhleSBQcm9za3Vy
eWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CkluZGV4OiBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFp
a3UuaAkocmV2aXNpb24gNzA5ODQpCisrKyBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50SGFpa3UuaAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNp
emUoaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKik7CiAjZW5kaWYKKyNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICAgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVu
dSgpIHsgfQorI2VuZGlmCiAKICAgICAgICAgLy8gVGhpcyBpcyBhbiBhc3luY2hyb25vdXMgY2Fs
bC4gVGhlIENocm9tZUNsaWVudCBjYW4gZGlzcGxheSBVSSBhc2tpbmcgdGhlIHVzZXIgZm9yIHBl
cm1pc3Npb24KICAgICAgICAgLy8gdG8gdXNlIEdlb2xvY29jYXRpb24uCkluZGV4OiBXZWJLaXQv
bWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gNzA5ODQpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDEwLTEwLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzY2MDU0Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00ODY5OQorICAgICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNocm9tZUNsaWVudDo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxMC0xMC0yOSAgRGFuaWVsIEJh
dGVzICA8ZGJhdGVzQHJpbS5jb20+CiAKICAgICAgICAgTm8gcmV2aWV3LCByb2xsaW5nIG91dCA3
MDk3MS4KSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAkocmV2aXNpb24gNzA5ODQpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNiArMTc4LDkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShX
ZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6
UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAg
ICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9CisjZW5kaWYKIHByaXZhdGU6CiAg
ICAgV2ViVmlldyAqbV93ZWJWaWV3OwogfTsKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNzA5ODQpCisrKyBXZWJL
aXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTAt
MzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjYwNTQ3PiBh
bmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Njk5CisgICAgICAg
IENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQgMi4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRR
dDo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxMC0xMC0zMCAgQW5kcmVhcyBLbGluZyAgPGtsaW5n
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KSW5kZXg6
IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCShyZXZpc2lvbiA3MDk4
NCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzQsNiArMTM0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEo
U2VjdXJpdHlPcmlnaW4qKTsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAg
IHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0KKyNlbmRpZgogCiAjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCiAgICAgICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBu
b3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdDsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA3MDk4NCkKKysr
IFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTAtMTAtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjYw
NTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Njk5Cisg
ICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQgMi4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50
OjpzaG93Q29udGV4dE1lbnUpOgorCiAyMDEwLTEwLTI5ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNA
cmltLmNvbT4KIAogICAgICAgICBObyByZXZpZXcsIHJvbGxpbmcgb3V0IDcwOTcxLgpJbmRleDog
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiA3
MDk4NCkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luKik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIHZpcnR1YWwg
dm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHBv
cHVsYXRlVmlzaXRlZExpbmtzKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDdXN0b21TY3Jv
bGxiYXIoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgV2ViQ29yZTo6U2Nyb2xsYmFyQ29udHJvbFNpemUsIApJbmRleDogV2ViS2l0L3d4L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MDk4NCkK
KysrIFdlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAxMC0xMC0zMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2
NjA1NDc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg2OTkK
KyAgICAgICAgQ29udGV4dCBtZW51IHN1cHBvcnQgZm9yIFdlYktpdCAyLgorCisgICAgICAgICog
V2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50V3g6OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTAtMTAtMjkgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4
OiBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgJKHJldmlzaW9uIDcwOTg0
KQorKysgV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAkod29ya2luZyBj
b3B5KQpAQCAtMTI5LDYgKzEyOSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlYWNo
ZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qKTsKICNlbmRpZgog
CisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0
TWVudSgpIHsgfQorI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1l
KiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VJY29u
Rm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlQ2hvb3NlciopOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72446</attachid>
            <date>2010-10-30 15:25:49 -0700</date>
            <delta_ts>2010-10-31 09:54:11 -0700</delta_ts>
            <desc>v3 - Now with more colons!</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>70976</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMTAtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ4Njk5CisgICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQg
Mi4KKworICAgICAgICBBZGQgYSAic2hvd0NvbnRleHRNZW51IiBjYWxsIHRvIENocm9tZS9DaHJv
bWVDbGllbnQ6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgICogcGFn
ZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzaG93Q29udGV4dE1lbnUp
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQu
aDoKKworICAgICAgICBBZGQgYSAicGxhdGZvcm0gZGVzY3JpcHRpb24gdG8gQ29udGV4dE1lbnVJ
dGVtIiBjcmVhdG9yLCB3aWxsIGJlIG5lZWRlZCBieSBzb21lIFdLMiBwb3J0czoKKyAgICAgICAg
KiBwbGF0Zm9ybS9Db250ZXh0TWVudS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Db250ZXh0
TWVudU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVZlY3Rvcik6IElt
cGxlbWVudCB0aGUgTWFjIHZlcnNpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ29udGV4
dE1lbnVJdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtOjpjaGVj
a2VkKTogSW1wbGVtZW50IHRoZSBNYWMgdmVyc2lvbiAtIHdpbGwgYmUgbmVlZGVkIGJ5IFdLMi4K
KwogMjAxMC0xMC0zMCAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA3
MDk4NCkKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyMjUs
OSArMTIyNSwyMiBAQCBfX1pOSzdXZWJDb3JlMThSZW5kZXJMYXllckJhY2tpbmcyMGNvbXBvCiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiBfX1pON1dlYkNvcmUxMUNvbnRleHRNZW51MjJzZXRQ
bGF0Zm9ybURlc2NyaXB0aW9uRVAxNE5TTXV0YWJsZUFycmF5CiBfX1pON1dlYkNvcmUxMkV2ZW50
SGFuZGxlcjIwc2VuZENvbnRleHRNZW51RXZlbnRFUDdOU0V2ZW50CitfX1pON1dlYkNvcmUxMkV2
ZW50SGFuZGxlcjIwc2VuZENvbnRleHRNZW51RXZlbnRFUktOU18xOFBsYXRmb3JtTW91c2VFdmVu
dEUKIF9fWk43V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtMjZyZWxlYXNlUGxhdGZvcm1EZXNjcmlw
dGlvbkV2CitfX1pON1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbUMxRU5TXzE5Q29udGV4dE1lbnVJ
dGVtVHlwZUVOU18xN0NvbnRleHRNZW51QWN0aW9uRVJLTjNXVEY2U3RyaW5nRVBOU18xMUNvbnRl
eHRNZW51RQorX19aTjdXZWJDb3JlMTVDb250ZXh0TWVudUl0ZW1EMUV2CiBfX1pON1dlYkNvcmUy
MUNvbnRleHRNZW51Q29udHJvbGxlcjE2Y2xlYXJDb250ZXh0TWVudUV2CitfX1pON1dlYkNvcmUy
MUNvbnRleHRNZW51Q29udHJvbGxlcjIzY29udGV4dE1lbnVJdGVtU2VsZWN0ZWRFUE5TXzE1Q29u
dGV4dE1lbnVJdGVtRQorX19aTjdXZWJDb3JlMjFjb250ZXh0TWVudUl0ZW1WZWN0b3JFUDE0TlNN
dXRhYmxlQXJyYXkKK19fWk43V2ViQ29yZTZDaHJvbWUxNXNob3dDb250ZXh0TWVudUV2CiBfX1pO
SzdXZWJDb3JlMTFDb250ZXh0TWVudTE5cGxhdGZvcm1EZXNjcmlwdGlvbkV2CitfX1pOSzdXZWJD
b3JlMTFDb250ZXh0TWVudTIxY2hlY2tPckVuYWJsZUlmTmVlZGVkRVJOU18xNUNvbnRleHRNZW51
SXRlbUUKK19fWk5LN1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTE1cGxhdGZvcm1TdWJNZW51RXYK
K19fWk5LN1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTR0eXBlRXYKK19fWk5LN1dlYkNvcmUxNUNv
bnRleHRNZW51SXRlbTV0aXRsZUV2CitfX1pOSzdXZWJDb3JlMTVDb250ZXh0TWVudUl0ZW02YWN0
aW9uRXYKK19fWk5LN1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTdjaGVja2VkRXYKK19fWk5LN1dl
YkNvcmUxNUNvbnRleHRNZW51SXRlbTdlbmFibGVkRXYKICNlbmRpZgogCiAjaWYgRU5BQkxFKERB
U0hCT0FSRF9TVVBQT1JUKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDcwOTg0
KQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEz
OSw2ICsxMzksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQb3B1cE1lbnU+
IGNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdCB7IHJldHVybiBhZG9wdFJl
ZihuZXcgRW1wdHlQb3B1cE1lbnUoKSk7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNo
UG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Qg
eyByZXR1cm4gYWRvcHRSZWYobmV3IEVtcHR5U2VhcmNoUG9wdXBNZW51KCkpOyB9CiAKKyNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkg
eyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0
cmluZyYpIHsgfQogCiAgICAgdmlydHVhbCBib29sIHRhYnNUb0xpbmtzKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNCArNTAyLDExIEBAIFBhc3NSZWZQ
dHI8U2VhcmNoUG9wdXBNZW51PiBDaHJvbWU6OmNyZWEKICAgICByZXR1cm4gbV9jbGllbnQtPmNy
ZWF0ZVNlYXJjaFBvcHVwTWVudShjbGllbnQpOwogfQogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCit2b2lkIENocm9tZTo6c2hvd0NvbnRleHRNZW51KCkKK3sKKyAgICBtX2NsaWVudC0+c2hv
d0NvbnRleHRNZW51KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9wYWdlL0Nocm9tZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJv
bWUuaAkocmV2aXNpb24gNzA5ODQpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE1NSw2ICsxNTUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQ
YXNzUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNv
bnN0OwogICAgICAgICBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9w
dXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCisgICAgICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KCk7CisjZW5kaWYKKwogICAgIHByaXZh
dGU6CiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAgICAgICAgQ2hyb21lQ2xpZW50KiBtX2NsaWVu
dDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDcwOTg0KQorKysgV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjksNiArMjY5LDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBvcHVwTWVudT4gY3Jl
YXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVw
TWVudUNsaWVudCopIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgPSAwOworI2VuZGlmCisKICAgICAg
ICAgdmlydHVhbCB2b2lkIHBvc3RBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKEFjY2Vzc2liaWxp
dHlPYmplY3QqLCBBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbikgeyB9CiAKICAgICBwcm90
ZWN0ZWQ6CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oCShyZXZpc2lvbiA3MDk4NCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsNiArOTEs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICB9OwogCitWZWN0b3I8Q29udGV4
dE1lbnVJdGVtPiBjb250ZXh0TWVudUl0ZW1WZWN0b3IoUGxhdGZvcm1NZW51RGVzY3JpcHRpb24g
bWVudSk7CisKIH0KIAogI2VuZGlmIC8vIENvbnRleHRNZW51X2gKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vbWFjL0NvbnRleHRNZW51SXRlbU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL21hYy9Db250ZXh0TWVudUl0ZW1NYWMubW0JKHJldmlzaW9uIDcwOTg0KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvQ29udGV4dE1lbnVJdGVtTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTQsNiArMTU0LDExIEBAIGJvb2wgQ29udGV4dE1lbnVJdGVtOjplbmFibGVkKCkgY29uc3QK
ICAgICByZXR1cm4gW21fcGxhdGZvcm1EZXNjcmlwdGlvbi5nZXQoKSBpc0VuYWJsZWRdOwogfQog
Citib29sIENvbnRleHRNZW51SXRlbTo6Y2hlY2tlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFtt
X3BsYXRmb3JtRGVzY3JpcHRpb24uZ2V0KCkgc3RhdGVdID09IE5TT25TdGF0ZTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbQkocmV2aXNpb24gNzA5ODQp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTUzLDYgKzE1MywxOSBAQCBOU011dGFibGVBcnJheSogQ29udGV4dE1lbnU6OnJlbGVh
c2VQbGF0CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5yZWxlYXNlUmVmKCk7CiB9
CiAKK1ZlY3RvcjxDb250ZXh0TWVudUl0ZW0+IGNvbnRleHRNZW51SXRlbVZlY3RvcihQbGF0Zm9y
bU1lbnVEZXNjcmlwdGlvbiBtZW51KQoreworICAgIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+IGl0
ZW1zOworICAgIHVuc2lnbmVkIGNvdW50ID0gW21lbnUgY291bnRdOworICAgIGlmIChtZW51KQor
ICAgICAgICBpdGVtcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOworICAgIAorICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICBpdGVtcy5hcHBlbmQoQ29udGV4
dE1lbnVJdGVtKFttZW51IG9iamVjdEF0SW5kZXg6aV0pKTsKKyAgICAKKyAgICByZXR1cm4gaXRl
bXM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05U
RVhUX01FTlVTKQpJbmRleDogV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDcwOTg2KQorKysgV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw4MyBAQAorMjAxMC0xMC0zMCAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NjA1NDc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg2OTkKKyAgICAgICAgQ29udGV4dCBtZW51IHN1cHBvcnQg
Zm9yIFdlYktpdCAyLgorCisgICAgICAgICogV2ViS2l0Mi5wcm86CisgICAgICAgICogV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdpbi9XZWJLaXQyLnZjcHJv
ajoKKworICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtOjpXZWJDb250ZXh0TWVudUl0ZW0pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW06OmVuY29kZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6a2l0
SXRlbXMpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaDogQWRkZWQuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9xdC9xd2twYWdlLmNwcDoKKyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpjcmVhdGVD
b250ZXh0TWVudVByb3h5KTogU3R1YiB0byBrZWVwIHRoZSBidWlsZCB3b3JraW5nLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5Lmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5Ojp+V2ViQ29udGV4
dE1lbnVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHk6OldlYkNv
bnRleHRNZW51UHJveHkpOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd0NvbnRleHRNZW51KTogU2hvd3Mg
dGhlIG1lbnUgYWZ0ZXIgcmVjZWl2aW5nIHRoZSBtZXNzYWdlIGZyb20gdGhlIFdlYlByb2Nlc3Mu
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQp
OiBTZW5kcyBpbmZvIGFib3V0IHRoZSBzZWxlY3RlZCBtZW51IGl0ZW0gdG8gdGhlIFdlYlByb2Nl
c3MKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V2ViQ29udGV4dE1lbnVQcm94eU1hYy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dE1lbnVQcm94eU1hYzo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNZW51UHJveHlNYWMubW06IEFkZGVkLgorICAgICAgICAoK1tXZWJNZW51VGFyZ2V0IHNo
YXJlZE1lbnVUYXJnZXRdKToKKyAgICAgICAgKC1bV2ViTWVudVRhcmdldCBXZWJLaXQ6Ol0pOgor
ICAgICAgICAoLVtXZWJNZW51VGFyZ2V0IHNldE1lbnVQcm94eTpXZWJLaXQ6Ol0pOgorICAgICAg
ICAoLVtXZWJNZW51VGFyZ2V0IGZvcndhcmRDb250ZXh0TWVudUFjdGlvbjpdKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWM6On5XZWJDb250ZXh0TWVu
dVByb3h5TWFjKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y29u
dGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0Ojpwb3B1bGF0ZU5TTWVudSk6
CisgICAgICAgIChXZWJLaXQ6Om5zTWVudUl0ZW1WZWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudVByb3h5TWFjOjpwb3B1bGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHRNZW51UHJveHlNYWM6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHRNZW51UHJveHlNYWM6OmhpZGVDb250ZXh0TWVudSk6CisKKyAgICAgICAgKiBVSVBy
b2Nlc3Mvd2luL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpjcmVhdGVD
b250ZXh0TWVudVByb3h5KTogU3R1YiBmb3Igbm93LgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4v
V2ViVmlldy5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnNob3dDb250
ZXh0TWVudSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUNsaWVudDo6
Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMpOiBSZXR1cm4gdGhlIFdlYkNvcmUtcHJvdmlk
ZWQgZGVmYXVsdAorICAgICAgICAgIG1lbnUgZm9yIG5vdy4gRW1iZWRkaW5nIGFwcCBjdXN0b21p
emF0aW9uIHdpbGwgY29tZSBsYXRlciAoc2VlIGJ1ZyA0ODcyMCkKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0TWVudTo6V2ViQ29udGV4dE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0TWVudTo6fldlYkNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dE1lbnU6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudTo6aXRlbVNlbGVj
dGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51OjpjcmVhdGUpOgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpjb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6OmhhbmRsZU1vdXNlRXZlbnQpOiBQ
YXNzIHJpZ2h0IG1vdXNlIHByZXNzZXMgYWxvbmcgdG8gV2ViQ29yZSBhcyBib3RoIGEgbW91c2Ug
ZXZlbnQgYW5kIGNvbnRleHQgbWVudSBldmVudCwgCisgICAgICAgICAgdGhlIHNhbWUgd2F5IFdl
YktpdDEgZG9lcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkU2VsZWN0SXRlbUZyb21B
Y3RpdmVDb250ZXh0TWVudSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwog
MjAxMC0xMC0zMCAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJLaXQyL1dl
YktpdDIucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHJldmlzaW9uIDcw
OTg0KQorKysgV2ViS2l0Mi9XZWJLaXQyLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjE0LDYgKzIx
NCw3IEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oIFwKICAg
ICBTaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5oIFwKICAgICBTaGFyZWQvV2ViQ2VydGlmaWNhdGVJ
bmZvLmggXAorICAgIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaCBcCiAgICAgU2hhcmVkL1dl
YkV2ZW50LmggXAogICAgIFNoYXJlZC9XZWJFcnJvci5oIFwKICAgICBTaGFyZWQvV2ViRXZlbnRD
b252ZXJzaW9uLmggXApAQCAtMjY0LDYgKzI2NSw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJv
Y2Vzcy9WaXNpdGVkTGlua1Byb3ZpZGVyLmggXAogICAgIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmgg
XAogICAgIFVJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBcCisgICAg
VUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkNvbnRl
eHRVc2VyTWVzc2FnZUNvZGVycy5oIFwKICAgICBVSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94
eS5oIFwKICAgICBVSVByb2Nlc3MvV2ViRmluZENsaWVudC5oIFwKQEAgLTMyOSw2ICszMzEsNyBA
QCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaCBc
CiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRQYWdlT3ZlcmxheS5oIFwKICAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuaCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
bnRleHRNZW51LmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5oIFwK
ICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5oIFwKQEAgLTM3Niw2ICszNzksNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBTaGFyZWQvcXQvV2ViVVJMUmVxdWVzdFF0LmNwcCBcCiAgICAgU2hhcmVkL3F0L1dlYlVSTFJl
c3BvbnNlUXQuY3BwIFwKICAgICBTaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5jcHAgXAorICAgIFNo
YXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwIFwKICAgICBTaGFyZWQvV2ViRXJyb3IuY3BwIFwK
ICAgICBTaGFyZWQvV2ViRXZlbnQuY3BwIFwKICAgICBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9u
LmNwcCBcCkBAIC00OTIsNiArNDk2LDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRQ
YWdlT3ZlcmxheS5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHAg
XAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAgXAogICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3Bw
IFwKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRl
bS5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJBcmd1bWVudHMu
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db250
ZXh0TWVudS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29udGV4dE1lbnVJdGVtOjpX
ZWJDb250ZXh0TWVudUl0ZW0oKQorICAgIDogbV90eXBlKFdlYkNvcmU6OkFjdGlvblR5cGUpCisg
ICAgLCBtX2FjdGlvbihXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbikKKyAgICAs
IG1fZW5hYmxlZCh0cnVlKQorICAgICwgbV9jaGVja2VkKGZhbHNlKQoreworfQorCitXZWJDb250
ZXh0TWVudUl0ZW06OldlYkNvbnRleHRNZW51SXRlbShXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
eXBlIHR5cGUsIFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbiwgY29uc3QgU3RyaW5n
JiB0aXRsZSwgYm9vbCBlbmFibGVkLCBib29sIGNoZWNrZWQpCisgICAgOiBtX3R5cGUodHlwZSkK
KyAgICAsIG1fYWN0aW9uKGFjdGlvbikKKyAgICAsIG1fdGl0bGUodGl0bGUpCisgICAgLCBtX2Vu
YWJsZWQoZW5hYmxlZCkKKyAgICAsIG1fY2hlY2tlZChjaGVja2VkKQoreworICAgIEFTU0VSVCh0
eXBlID09IFdlYkNvcmU6OkFjdGlvblR5cGUgfHwgdHlwZSA9PSBXZWJDb3JlOjpDaGVja2FibGVB
Y3Rpb25UeXBlIHx8IHR5cGUgPT0gV2ViQ29yZTo6U2VwYXJhdG9yVHlwZSk7Cit9CisKK1dlYkNv
bnRleHRNZW51SXRlbTo6V2ViQ29udGV4dE1lbnVJdGVtKFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVR5cGUgdHlwZSwgV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBjb25zdCBTdHJp
bmcmIHRpdGxlLCBib29sIGVuYWJsZWQsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+
JiBzdWJtZW51KQorICAgIDogbV90eXBlKHR5cGUpCisgICAgLCBtX2FjdGlvbihhY3Rpb24pCisg
ICAgLCBtX3RpdGxlKHRpdGxlKQorICAgICwgbV9lbmFibGVkKGVuYWJsZWQpCisgICAgLCBtX2No
ZWNrZWQoZmFsc2UpCisgICAgLCBtX3N1Ym1lbnUoc3VibWVudSkKK3sKKyAgICBBU1NFUlQodHlw
ZSA9PSBXZWJDb3JlOjpTdWJtZW51VHlwZSk7Cit9CisKK1dlYkNvbnRleHRNZW51SXRlbTo6V2Vi
Q29udGV4dE1lbnVJdGVtKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSYgaXRlbSwgV2ViQ29yZTo6
Q29udGV4dE1lbnUqIG1lbnUpCisgICAgOiBtX3R5cGUoaXRlbS50eXBlKCkpCisgICAgLCBtX2Fj
dGlvbihpdGVtLmFjdGlvbigpKQorICAgICwgbV90aXRsZShpdGVtLnRpdGxlKCkpCit7CisgICAg
aWYgKG1fdHlwZSA9PSBXZWJDb3JlOjpTdWJtZW51VHlwZSkgeworICAgICAgICBWZWN0b3I8V2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtPiBjb3JlU3VibWVudSA9IFdlYkNvcmU6OmNvbnRleHRNZW51
SXRlbVZlY3RvcihpdGVtLnBsYXRmb3JtU3ViTWVudSgpKTsKKyAgICAgICAgbV9zdWJtZW51ID0g
a2l0SXRlbXMoY29yZVN1Ym1lbnUsIG1lbnUpOworICAgIH0KKyAgICAKKyAgICBtZW51LT5jaGVj
a09yRW5hYmxlSWZOZWVkZWQoaXRlbSk7CisgICAgCisgICAgbV9lbmFibGVkID0gaXRlbS5lbmFi
bGVkKCk7CisgICAgbV9jaGVja2VkID0gaXRlbS5jaGVja2VkKCk7Cit9CisKK3ZvaWQgV2ViQ29u
dGV4dE1lbnVJdGVtOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihzdGF0aWNfY2FzdDx1aW50
MzJfdD4obV90eXBlKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fYWN0aW9uKSwgbV90aXRsZSwg
bV9jaGVja2VkLCBtX2VuYWJsZWQsIG1fc3VibWVudSkpOworfQorCitib29sIFdlYkNvbnRleHRN
ZW51SXRlbTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29u
dGV4dE1lbnVJdGVtJiBpdGVtKQoreworICAgIHVpbnQzMl90IHR5cGU7CisgICAgdWludDMyX3Qg
YWN0aW9uOworICAgIFN0cmluZyB0aXRsZTsKKyAgICBib29sIGNoZWNrZWQ7CisgICAgYm9vbCBl
bmFibGVkOworICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+IHN1Ym1lbnU7CisKKyAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQodHlwZSwgYWN0aW9uLCB0aXRsZSwgY2hl
Y2tlZCwgZW5hYmxlZCwgc3VibWVudSkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBz
d2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFdlYkNvcmU6OkFjdGlvblR5cGU6CisgICAgY2FzZSBX
ZWJDb3JlOjpTZXBhcmF0b3JUeXBlOgorICAgIGNhc2UgV2ViQ29yZTo6Q2hlY2thYmxlQWN0aW9u
VHlwZToKKyAgICAgICAgaXRlbSA9IFdlYkNvbnRleHRNZW51SXRlbShzdGF0aWNfY2FzdDxXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UeXBlPih0eXBlKSwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29u
dGV4dE1lbnVBY3Rpb24+KGFjdGlvbiksIHRpdGxlLCBlbmFibGVkLCBjaGVja2VkKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpTdWJtZW51VHlwZToKKyAgICAgICAgaXRlbSA9
IFdlYkNvbnRleHRNZW51SXRlbShzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
eXBlPih0eXBlKSwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24+KGFjdGlv
biksIHRpdGxlLCBlbmFibGVkLCBzdWJtZW51KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworVmVjdG9yPFdlYkNvbnRleHRNZW51SXRl
bT4ga2l0SXRlbXMoVmVjdG9yPFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbT4mIGNvcmVJdGVtcywg
V2ViQ29yZTo6Q29udGV4dE1lbnUqIG1lbnUpCit7CisgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51
SXRlbT4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkoY29yZUl0ZW1zLnNpemUo
KSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvcmVJdGVtcy5zaXplKCk7ICsraSkK
KyAgICAgICAgcmVzdWx0LmFwcGVuZChXZWJDb250ZXh0TWVudUl0ZW0oY29yZUl0ZW1zW2ldLCBt
ZW51KSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaAkocmV2aXNpb24gMCkKKysr
IFdlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb250ZXh0TWVudUl0ZW1faAorI2Rl
ZmluZSBXZWJDb250ZXh0TWVudUl0ZW1faAorCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVu
dUl0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIENv
cmVJUEMgeworICAgIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKKyAgICBjbGFzcyBBcmd1bWVudEVu
Y29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBDb250ZXh0TWVudTsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJDb250ZXh0TWVudUl0ZW0gewor
ICAgIFdlYkNvbnRleHRNZW51SXRlbSgpOworICAgIFdlYkNvbnRleHRNZW51SXRlbShXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW0mLCBXZWJDb3JlOjpDb250ZXh0TWVudSogbWVudSk7CisgICAgV2Vi
Q29udGV4dE1lbnVJdGVtKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVR5cGUsIFdlYkNvcmU6OkNv
bnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBib29sIGVuYWJsZWQsIGJvb2wg
Y2hlY2tlZCk7CisgICAgV2ViQ29udGV4dE1lbnVJdGVtKFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVR5cGUsIFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBi
b29sIGVuYWJsZWQsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+JiBzdWJtZW51KTsK
KyAgICAKKyAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdDsK
KyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgV2ViQ29u
dGV4dE1lbnVJdGVtJik7CisKKyAgICBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UeXBlIG1fdHlw
ZTsKKyAgICBXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiBtX2FjdGlvbjsKKyAgICBTdHJpbmcg
bV90aXRsZTsKKyAgICBib29sIG1fZW5hYmxlZDsKKyAgICBib29sIG1fY2hlY2tlZDsKKyAgICBW
ZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtPiBtX3N1Ym1lbnU7Cit9OworCitWZWN0b3I8V2ViQ29u
dGV4dE1lbnVJdGVtPiBraXRJdGVtcyhWZWN0b3I8V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtPiYs
IFdlYkNvcmU6OkNvbnRleHRNZW51Kik7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gV2ViQ29udGV4dE1lbnVJdGVtX2gKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJl
dmlzaW9uIDcwOTg0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw4ICszOSw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBGaW5k
SW5kaWNhdG9yOwogY2xhc3MgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKLWNsYXNzIFdlYkVkaXRD
b21tYW5kUHJveHk7CiBjbGFzcyBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OworY2xhc3MgV2ViQ29u
dGV4dE1lbnVQcm94eTsKK2NsYXNzIFdlYkVkaXRDb21tYW5kUHJveHk7CiBjbGFzcyBXZWJQb3B1
cE1lbnVQcm94eTsKIAogY2xhc3MgUGFnZUNsaWVudCB7CkBAIC03Miw2ICs3Myw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90SGFuZGxlS2V5RXZlbnQoY29uc3QgTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudCYpID0gMDsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQb3B1cE1l
bnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoKSA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVBy
b3h5KikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0
cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KSA9IDA7CiAKSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvbnRleHRNZW51UHJveHlfaAorI2RlZmluZSBXZWJD
b250ZXh0TWVudVByb3h5X2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBJbnRQb2ludDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3N0cnVjdCBXZWJDb250ZXh0TWVudUl0ZW07CisKK2NsYXNzIFdlYkNvbnRleHRNZW51UHJv
eHkgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb250ZXh0TWVudVByb3h5PiB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+V2ViQ29udGV4dE1lbnVQcm94eSgpCisgICAgeworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25z
dCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtPiYgaXRlbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgaGlkZUNvbnRleHRNZW51KCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgV2ViQ29udGV4dE1l
bnVQcm94eSgpCisgICAgeworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gV2ViUG9wdXBNZW51UHJveHlfaApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5j
bHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHkuaCIKICNp
bmNsdWRlICJXZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJEYXRhLmgiCkBAIC0xMTI0LDYgKzExMjUs
MjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVQb3B1cE1lbnUoKQogICAgIG1fYWN0aXZlUG9w
dXBNZW51ID0gMDsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVudShjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4
dE1lbnVJdGVtPiYgaXRlbXMpCit7CisgICAgaWYgKG1fYWN0aXZlQ29udGV4dE1lbnUpCisgICAg
ICAgIG1fYWN0aXZlQ29udGV4dE1lbnUtPmhpZGVDb250ZXh0TWVudSgpOworICAgIGVsc2UKKyAg
ICAgICAgbV9hY3RpdmVDb250ZXh0TWVudSA9IG1fcGFnZUNsaWVudC0+Y3JlYXRlQ29udGV4dE1l
bnVQcm94eSh0aGlzKTsKKyAgICAgIAorICAgIG1fYWN0aXZlQ29udGV4dE1lbnUtPnNob3dDb250
ZXh0TWVudShtZW51TG9jYXRpb24sIGl0ZW1zKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNv
bnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbSYgaXRlbSkKK3sK
KyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFNlbGVjdEl0ZW1Gcm9t
QWN0aXZlQ29udGV4dE1lbnUoaXRlbSksIG1fcGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJv
eHk6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBj
b21tYW5kUHJveHksIFVuZG9PclJlZG8gdW5kb09yUmVkbykKIHsKICAgICBtX3BhZ2VDbGllbnQt
PnJlZ2lzdGVyRWRpdENvbW1hbmQoY29tbWFuZFByb3h5LCB1bmRvT3JSZWRvKTsKSW5kZXg6IFdl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5j
bHVkZSAiV0tCYXNlLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtLmgiCiAjaW5jbHVk
ZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJXZWJGaW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
Rm9ybUNsaWVudC5oIgpAQCAtNzcsNiArNzgsNyBAQCBjbGFzcyBQbGF0Zm9ybUNlcnRpZmljYXRl
SW5mbzsKIGNsYXNzIFN0cmluZ1BhaXJWZWN0b3I7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7
CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOworY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94
eTsKIGNsYXNzIFdlYkRhdGE7CiBjbGFzcyBXZWJFZGl0Q29tbWFuZFByb3h5OwogY2xhc3MgV2Vi
S2V5Ym9hcmRFdmVudDsKQEAgLTIzMSw2ICsyMzMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdl
dFN0YXRpc3RpY3MoV0tDb250ZXh0U3RhdGlzdGljcyopOwogCisgICAgdm9pZCBjb250ZXh0TWVu
dUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW0mKTsKKwogcHJpdmF0ZToKICAg
ICBXZWJQYWdlUHJveHkoV2ViUGFnZU5hbWVzcGFjZSosIHVpbnQ2NF90IHBhZ2VJRCk7CiAKQEAg
LTMyMSw2ICszMjUsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2hvd1BvcHVwTWVudShjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiByZWN0LCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMs
IGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CiAgICAgdm9pZCBoaWRlUG9wdXBNZW51KCk7CiAKKyAg
ICAvLyBDb250ZXh0IE1lbnUuCisgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtPiYgaXRlbXMpOwor
CiAgICAgdm9pZCB0YWtlRm9jdXMoYm9vbCBkaXJlY3Rpb24pOwogICAgIHZvaWQgc2V0VG9vbFRp
cChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJz
b3ImKTsKQEAgLTM2MSw2ICszNjgsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8V2ViRWRpdENv
bW1hbmRQcm94eSo+IG1fZWRpdENvbW1hbmRTZXQ7CiAKICAgICBSZWZQdHI8V2ViUG9wdXBNZW51
UHJveHk+IG1fYWN0aXZlUG9wdXBNZW51OworICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5
PiBtX2FjdGl2ZUNvbnRleHRNZW51OwogCiAgICAgZG91YmxlIG1fZXN0aW1hdGVkUHJvZ3Jlc3M7
CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJl
dmlzaW9uIDcwOTg0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICAjIFBvcHVwTWVudS4KICAgICBTaG93UG9wdXBNZW51KFdlYkNvcmU6Oklu
dFJlY3QgcmVjdCwgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiBpdGVtcywgaW50MzJfdCBz
ZWxlY3RlZEluZGV4KQogICAgIEhpZGVQb3B1cE1lbnUoKQorICAgIAorICAgICMgQ29udGV4dE1l
bnUKKyAgICBTaG93Q29udGV4dE1lbnUoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFZlY3RvcjxX
ZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4gaXRlbXMpCiAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAgICAgIyBBY2NlbGVyYXRlZCBjb21wc2l0aW5nIG1lc3NhZ2VzLgpJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24g
NzA5ODQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkTm90SGFuZGxlS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYpOwogCiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQ
cm94eSgpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVh
dGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopOwogCiAgICAgdm9pZCBzZXRGaW5kSW5k
aWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJvb2wgZmFkZU91dCk7CiAKSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkocmV2aXNpb24g
NzA5ODQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNp
bXBvcnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQgIldLVmlld0ludGVybmFsLmgiCisjaW1wb3J0
ICJXZWJDb250ZXh0TWVudVByb3h5TWFjLmgiCiAjaW1wb3J0ICJXZWJFZGl0Q29tbWFuZFByb3h5
LmgiCiAjaW1wb3J0ICJXZWJQb3B1cE1lbnVQcm94eU1hYy5oIgogI2ltcG9ydCA8V2ViQ29yZS9D
dXJzb3IuaD4KQEAgLTI0NSw2ICsyNDYsMTEgQEAgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94
eT4gUGFnZUNsaWVudAogICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94eU1hYzo6Y3JlYXRlKG1f
d2tWaWV3KTsKIH0KIAorUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50
SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCit7CisgICAg
cmV0dXJuIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OmNyZWF0ZShtX3drVmlldywgcGFnZSk7Cit9
CisKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5k
SW5kaWNhdG9yPiBmaW5kSW5kaWNhdG9yLCBib29sIGZhZGVPdXQpCiB7CiAgICAgW21fd2tWaWV3
IF9zZXRGaW5kSW5kaWNhdG9yOmZpbmRJbmRpY2F0b3IgZmFkZU91dDpmYWRlT3V0XTsKSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAJKHJldmlzaW9uIDcwOTg0KQorKysgV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQs
NiArMTM0LDEyIEBAIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFFXS1BhZ2VQcmkKICAg
ICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlRdDo6Y3JlYXRlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8
V2ViQ29udGV4dE1lbnVQcm94eT4gUVdLUGFnZVByaXZhdGU6OmNyZWF0ZUNvbnRleHRNZW51UHJv
eHkoV2ViUGFnZVByb3h5KikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50OworICAgIHJldHVy
biAwOworfQorCiB2b2lkIFFXS1BhZ2VQcml2YXRlOjpzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQ
dHI8RmluZEluZGljYXRvcj4sIGJvb2wgZmFkZU91dCkKIHsKIH0KSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdrcGFnZV9wLmgJKHJldmlzaW9uIDcwOTg0KQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3a3BhZ2VfcC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9Vc2VyU3BhY2Uo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZE5vdEhhbmRs
ZUtleUV2ZW50KGNvbnN0IFdlYktpdDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1l
bnVQcm94eSgpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51
UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8V2ViS2l0OjpGaW5k
SW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KTsKIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYkNvbnRleHRNZW51UHJveHlNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29udGV4dE1lbnVQcm94eU1hY19o
CisjZGVmaW5lIFdlYkNvbnRleHRNZW51UHJveHlNYWNfaAorCisjaW5jbHVkZSAiV2ViQ29udGV4
dE1lbnVQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmZGVmIF9fT0JK
Q19fCitAY2xhc3MgTlNQb3BVcEJ1dHRvbkNlbGw7CitAY2xhc3MgV0tWaWV3OworI2Vsc2UKK2Ns
YXNzIE5TUG9wVXBCdXR0b25DZWxsOworY2xhc3MgV0tWaWV3OworI2VuZGlmCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdlYkNvbnRleHRNZW51
UHJveHlNYWMgOiBwdWJsaWMgV2ViQ29udGV4dE1lbnVQcm94eSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eU1hYz4gY3JlYXRlKFdLVmlldyogd2Vi
VmlldywgV2ViUGFnZVByb3h5KiBwYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJDb250ZXh0TWVudVByb3h5TWFjKHdlYlZpZXcsIHBhZ2UpKTsKKyAgICB9CisgICAg
fldlYkNvbnRleHRNZW51UHJveHlNYWMoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4
dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1l
bnVJdGVtPiYpOworICAgIHZpcnR1YWwgdm9pZCBoaWRlQ29udGV4dE1lbnUoKTsKKyAgICAKKyAg
ICB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbSYp
OworCitwcml2YXRlOgorICAgIFdlYkNvbnRleHRNZW51UHJveHlNYWMoV0tWaWV3KiwgV2ViUGFn
ZVByb3h5Kik7CisKKyAgICB2b2lkIHBvcHVsYXRlKGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVu
dUl0ZW0+Jik7CisKKyAgICBSZXRhaW5QdHI8TlNQb3BVcEJ1dHRvbkNlbGw+IG1fcG9wdXA7Cisg
ICAgV0tWaWV3KiBtX3dlYlZpZXc7CisgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkNvbnRleHRNZW51UHJveHlNYWNf
aApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlN
YWMubW0JKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1l
bnVQcm94eU1hYy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oIgorCisjaW5jbHVkZSAiUGFnZUNs
aWVudEltcGwuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKKyNpbmNsdWRlICJX
S1ZpZXcuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgorI2luY2x1ZGUgPFdlYktp
dFN5c3RlbUludGVyZmFjZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQGludGVy
ZmFjZSBXZWJNZW51VGFyZ2V0IDogTlNPYmplY3QgeworICAgIFdlYktpdDo6V2ViQ29udGV4dE1l
bnVQcm94eU1hYyogX21lbnVQcm94eTsKK30KKysgKFdlYk1lbnVUYXJnZXQqKXNoYXJlZE1lbnVU
YXJnZXQ7CistIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eTsKKy0g
KHZvaWQpc2V0TWVudVByb3h5OihXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQ
cm94eTsKKy0gKHZvaWQpZm9yd2FyZENvbnRleHRNZW51QWN0aW9uOihpZClzZW5kZXI7CitAZW5k
CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJNZW51VGFyZ2V0CisKKysgKFdlYk1lbnVUYXJnZXQqKXNo
YXJlZE1lbnVUYXJnZXQKK3sKKyAgICBzdGF0aWMgV2ViTWVudVRhcmdldCogdGFyZ2V0OworICAg
IGlmICghdGFyZ2V0KQorICAgICAgICB0YXJnZXQgPSBbW1dlYk1lbnVUYXJnZXQgYWxsb2NdIGlu
aXRdOworICAgIHJldHVybiB0YXJnZXQ7Cit9CisKKy0gKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQ
cm94eU1hYyopbWVudVByb3h5Cit7CisgICAgcmV0dXJuIF9tZW51UHJveHk7Cit9CisKKy0gKHZv
aWQpc2V0TWVudVByb3h5OihXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94
eQoreworICAgIF9tZW51UHJveHkgPSBtZW51UHJveHk7Cit9CisKKy0gKHZvaWQpZm9yd2FyZENv
bnRleHRNZW51QWN0aW9uOihpZClzZW5kZXIKK3sKKyAgICBXZWJLaXQ6OldlYkNvbnRleHRNZW51
SXRlbSBpdGVtKEFjdGlvblR5cGUsIHN0YXRpY19jYXN0PENvbnRleHRNZW51QWN0aW9uPihbc2Vu
ZGVyIHRhZ10pLCBbc2VuZGVyIHRpdGxlXSwgW3NlbmRlciBpc0VuYWJsZWRdLCBbc2VuZGVyIHN0
YXRlXSA9PSBOU09uU3RhdGUpOworICAgIF9tZW51UHJveHktPmNvbnRleHRNZW51SXRlbVNlbGVj
dGVkKGl0ZW0pOworfQorCitAZW5kCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb250ZXh0
TWVudVByb3h5TWFjOjpXZWJDb250ZXh0TWVudVByb3h5TWFjKFdLVmlldyogd2ViVmlldywgV2Vi
UGFnZVByb3h5KiBwYWdlKQorICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCisgICAgLCBtX3BhZ2Uo
cGFnZSkKK3sKK30KKworV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6fldlYkNvbnRleHRNZW51UHJv
eHlNYWMoKQoreworICAgIGlmIChtX3BvcHVwKQorICAgICAgICBbbV9wb3B1cC5nZXQoKSBzZXRD
b250cm9sVmlldzpuaWxdOworfQorCit2b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OmNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbSYgaXRlbSkKK3sKKyAg
ICBtX3BhZ2UtPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGl0ZW0pOworfQorCitzdGF0aWMgdm9p
ZCBwb3B1bGF0ZU5TTWVudShOU01lbnUqIG1lbnUsIGNvbnN0IFZlY3RvcjxSZXRhaW5QdHI8TlNN
ZW51SXRlbT4gPiYgbWVudUl0ZW1WZWN0b3IpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1lbnVJdGVtVmVjdG9yLnNpemUoKTsgKytpKSB7CisgICAgICAgIE5TSW50ZWdlciBvbGRT
dGF0ZSA9IFttZW51SXRlbVZlY3RvcltpXS5nZXQoKSBzdGF0ZV07CisgICAgICAgIFttZW51IGFk
ZEl0ZW06bWVudUl0ZW1WZWN0b3JbaV0uZ2V0KCldOworICAgICAgICBbbWVudUl0ZW1WZWN0b3Jb
aV0uZ2V0KCkgc2V0U3RhdGU6b2xkU3RhdGVdOworICAgIH0KK30KKworc3RhdGljIFZlY3RvcjxS
ZXRhaW5QdHI8TlNNZW51SXRlbT4gPiBuc01lbnVJdGVtVmVjdG9yKGNvbnN0IFZlY3RvcjxXZWJD
b250ZXh0TWVudUl0ZW0+JiBpdGVtcykKK3sKKyAgICBWZWN0b3I8UmV0YWluUHRyPE5TTWVudUl0
ZW0+ID4gcmVzdWx0OworCisgICAgdW5zaWduZWQgc2l6ZSA9IGl0ZW1zLnNpemUoKTsKKyAgICBy
ZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KHNpemUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBzaXplOyBpKyspIHsKKyAgICAgICAgc3dpdGNoIChpdGVtc1tpXS5tX3R5cGUpIHsKKyAgICAg
ICAgY2FzZSBBY3Rpb25UeXBlOgorICAgICAgICBjYXNlIENoZWNrYWJsZUFjdGlvblR5cGU6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIE5TTWVudUl0ZW0qIG1lbnVJdGVtID0gW1tOU01lbnVJdGVt
IGFsbG9jXSBpbml0V2l0aFRpdGxlOm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoaXRlbXNbaV0u
bV90aXRsZSkgYWN0aW9uOkBzZWxlY3Rvcihmb3J3YXJkQ29udGV4dE1lbnVBY3Rpb246KSBrZXlF
cXVpdmFsZW50OkAiIl07CisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0VGFnOml0ZW1zW2ldLm1f
YWN0aW9uXTsKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRFbmFibGVkOml0ZW1zW2ldLm1fZW5h
YmxlZF07CisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6aXRlbXNbaV0ubV9jaGVja2Vk
ID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoUmV0YWluUHRyPE5TTWVudUl0ZW0+KEFkb3B0TlMsIG1l
bnVJdGVtKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFNl
cGFyYXRvclR5cGU6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFtOU01lbnVJdGVtIHNlcGFy
YXRvckl0ZW1dKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN1Ym1lbnVUeXBl
OgorICAgICAgICB7ICAgICAgICAgICAgCisgICAgICAgICAgICBOU01lbnUqIG1lbnUgPSBbW05T
TWVudSBhbGxvY10gaW5pdFdpdGhUaXRsZTpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGl0ZW1z
W2ldLm1fdGl0bGUpXTsKKyAgICAgICAgICAgIFttZW51IHNldEF1dG9lbmFibGVzSXRlbXM6Tk9d
OworICAgICAgICAgICAgcG9wdWxhdGVOU01lbnUobWVudSwgbnNNZW51SXRlbVZlY3RvcihpdGVt
c1tpXS5tX3N1Ym1lbnUpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIE5TTWVudUl0
ZW0qIG1lbnVJdGVtID0gW1tOU01lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOm5zU3RyaW5n
RnJvbVdlYkNvcmVTdHJpbmcoaXRlbXNbaV0ubV90aXRsZSkgYWN0aW9uOkBzZWxlY3Rvcihmb3J3
YXJkQ29udGV4dE1lbnVBY3Rpb246KSBrZXlFcXVpdmFsZW50OkAiIl07CisgICAgICAgICAgICBb
bWVudUl0ZW0gc2V0RW5hYmxlZDppdGVtc1tpXS5tX2VuYWJsZWRdOworICAgICAgICAgICAgW21l
bnVJdGVtIHNldFN1Ym1lbnU6bWVudV07CisgICAgICAgICAgICBbbWVudSByZWxlYXNlXTsKKwor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChSZXRhaW5QdHI8TlNNZW51SXRlbT4oQWRvcHROUywg
bWVudUl0ZW0pKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB9CisgICAgfQorCisgICAgV2ViTWVudVRhcmdldCogdGFyZ2V0ID0gW1dlYk1lbnVUYXJn
ZXQgc2hhcmVkTWVudVRhcmdldF07CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7
ICsraSkKKyAgICAgICAgW3Jlc3VsdFtpXS5nZXQoKSBzZXRUYXJnZXQ6dGFyZ2V0XTsKKyAgICAK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OnBv
cHVsYXRlKGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykKK3sKKyAgICBp
ZiAobV9wb3B1cCkKKyAgICAgICAgW21fcG9wdXAuZ2V0KCkgcmVtb3ZlQWxsSXRlbXNdOworICAg
IGVsc2UgeworICAgICAgICBtX3BvcHVwLmFkb3B0TlMoW1tOU1BvcFVwQnV0dG9uQ2VsbCBhbGxv
Y10gaW5pdFRleHRDZWxsOkAiIiBwdWxsc0Rvd246Tk9dKTsKKyAgICAgICAgW21fcG9wdXAuZ2V0
KCkgc2V0VXNlc0l0ZW1Gcm9tTWVudTpOT107CisgICAgICAgIFttX3BvcHVwLmdldCgpIHNldEF1
dG9lbmFibGVzSXRlbXM6Tk9dOworICAgIH0KKworICAgIE5TTWVudSogbWVudSA9IFttX3BvcHVw
LmdldCgpIG1lbnVdOworICAgIHBvcHVsYXRlTlNNZW51KG1lbnUsIG5zTWVudUl0ZW1WZWN0b3Io
aXRlbXMpKTsKK30KKwordm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzaG93Q29udGV4dE1l
bnUoY29uc3QgSW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRN
ZW51SXRlbT4mIGl0ZW1zKQoreworICAgIHBvcHVsYXRlKGl0ZW1zKTsKKyAgICBbW1dlYk1lbnVU
YXJnZXQgc2hhcmVkTWVudVRhcmdldF0gc2V0TWVudVByb3h5OnRoaXNdOworICAgIAorICAgIE5T
UmVjdCBtZW51UmVjdCA9IE5TTWFrZVJlY3QobWVudUxvY2F0aW9uLngoKSwgbWVudUxvY2F0aW9u
LnkoKSwgMCwgMCk7CisgICAgCisgICAgW21fcG9wdXAuZ2V0KCkgYXR0YWNoUG9wVXBXaXRoRnJh
bWU6bWVudVJlY3QgaW5WaWV3Om1fd2ViVmlld107CisKKyAgICBOU01lbnUqIG1lbnUgPSBbbV9w
b3B1cC5nZXQoKSBtZW51XTsKKworICAgIC8vIFRoZXNlIHZhbHVlcyB3ZXJlIGJvcnJvd2VkIGZy
b20gQXBwS2l0IHRvIG1hdGNoIHRoZWlyIHBsYWNlbWVudCBvZiB0aGUgbWVudS4KKyAgICBOU1Jl
Y3QgdGl0bGVGcmFtZSA9IFttX3BvcHVwLmdldCgpICB0aXRsZVJlY3RGb3JCb3VuZHM6bWVudVJl
Y3RdOworICAgIGlmICh0aXRsZUZyYW1lLnNpemUud2lkdGggPD0gMCB8fCB0aXRsZUZyYW1lLnNp
emUuaGVpZ2h0IDw9IDApCisgICAgICAgIHRpdGxlRnJhbWUgPSBtZW51UmVjdDsKKyAgICBmbG9h
dCB2ZXJ0T2Zmc2V0ID0gcm91bmRmKChOU01heFkobWVudVJlY3QpIC0gTlNNYXhZKHRpdGxlRnJh
bWUpKSArIE5TSGVpZ2h0KHRpdGxlRnJhbWUpKTsKKyAgICBOU1BvaW50IGxvY2F0aW9uID0gTlNN
YWtlUG9pbnQoTlNNaW5YKG1lbnVSZWN0KSwgTlNNYXhZKG1lbnVSZWN0KSAtIHZlcnRPZmZzZXQp
OworCisgICAgUmV0YWluUHRyPE5TVmlldz4gZHVtbXlWaWV3KEFkb3B0TlMsIFtbTlNWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOm1lbnVSZWN0XSk7CisgICAgW21fd2ViVmlldyBhZGRTdWJ2aWV3
OmR1bW15Vmlldy5nZXQoKV07CisgICAgbG9jYXRpb24gPSBbZHVtbXlWaWV3LmdldCgpIGNvbnZl
cnRQb2ludDpsb2NhdGlvbiBmcm9tVmlldzptX3dlYlZpZXddOworCisgICAgV0tQb3B1cE1lbnUo
bWVudSwgbG9jYXRpb24sIHJvdW5kZihOU1dpZHRoKG1lbnVSZWN0KSksIGR1bW15Vmlldy5nZXQo
KSwgLTEsIG5pbCk7CisKKyAgICBbbV9wb3B1cC5nZXQoKSBkaXNtaXNzUG9wVXBdOworICAgIFtk
dW1teVZpZXcuZ2V0KCkgcmVtb3ZlRnJvbVN1cGVydmlld107Cit9CisKK3ZvaWQgV2ViQ29udGV4
dE1lbnVQcm94eU1hYzo6aGlkZUNvbnRleHRNZW51KCkKK3sKKyAgICBbbV9wb3B1cC5nZXQoKSBk
aXNtaXNzUG9wVXBdOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIv
VUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDcwOTg0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mv
d2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjUsNiArNjI1LDEyIEBAIFBhc3NS
ZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFdlYlZpZXc6OmMKICAgICByZXR1cm4gV2ViUG9wdXBN
ZW51UHJveHlXaW46OmNyZWF0ZSgpOwogfQogCitQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJv
eHk+IFdlYlZpZXc6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKK3sKKyAg
ICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIHJldHVybiAwOworfQorCiB2b2lkIFdlYlZpZXc6
OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0
KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy93
aW4vV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3
LmgJKHJldmlzaW9uIDcwOTg0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaAko
d29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWROb3RIYW5kbGVLZXlFdmVudChjb25zdCBOYXRp
dmVXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVu
dVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eSgpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSop
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGlj
YXRvcj4sIGJvb2wgZmFkZU91dCk7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CkluZGV4OiBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gNzA5ODQpCisrKyBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTY0LDggKzE2NCwxNSBAQAogCQkxQzhFMjkzQTEyNzYxRTVCMDBC
QzdCRDAgLyogV0tJbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUM4RTI5MzgxMjc2MUU1QjAwQkM3QkQwIC8qIFdLSW5zcGVjdG9yLmNw
cCAqLzsgfTsKIAkJNTE1NzhCODMxMjA5RUNFRjAwQTM3QzRBIC8qIFdlYkRhdGEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTc4QjgyMTIwOUVDRUYw
MEEzN0M0QSAvKiBXZWJEYXRhLmggKi87IH07CiAJCTUxNkE0QTVEMTIwQTJDQ0QwMEMwNUI3RiAv
KiBXZWJFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE2QTRBNUIxMjBBMkNDRDAwQzA1QjdGIC8qIFdlYkVycm9yLmggKi87IH07CisJCTUxODcx
QjVCMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIg
LyogV2ViQ29udGV4dE1lbnUuY3BwICovOyB9OworCQk1MTg3MUI1QzEyN0NCODlEMDBGNzYyMzIg
LyogV2ViQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICov
OyB9OwogCQk1MUE3RjJGMzEyNUJGODIwMDA4QUVCMUQgLyogTG9nZ2luZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBN0YyRjIxMjVCRjgyMDAwOEFF
QjFEIC8qIExvZ2dpbmcuaCAqLzsgfTsKIAkJNTFBN0YyRjUxMjVCRjhENDAwOEFFQjFEIC8qIExv
Z2dpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFBN0YyRjQxMjVCRjhENDAwOEFFQjFEIC8qIExvZ2dpbmcuY3BwICovOyB9OworCQk1MUFDQkEx
NTEyNzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUNCQTEzMTI3OUU4QzMwMEQyMDNC
OSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uY3BwICovOyB9OworCQk1MUFDQkExNjEyNzlFOEMzMDBE
MjAzQjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFDQkExNDEyNzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4
dE1lbnVJdGVtLmggKi87IH07CisJCTUxQUNCQjgyMTI3QThCQUQwMEQyMDNCOSAvKiBXZWJDb250
ZXh0TWVudVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUFDQkI4MTEyN0E4QkFEMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eS5oICov
OyB9OworCQk1MUFDQkJBMDEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1h
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQ0JC
OUUxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMuaCAqLzsgfTsKKwkJ
NTFBQ0JCQTExMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFDQkI5RjEyN0E4
RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSAqLzsgfTsKIAkJNTFCMzAw
NTAxMjUyOUQwRTAwMEI1Q0EwIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjMwMDRFMTI1MjlEMEUwMDBC
NUNBMCAvKiBXZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAgKi87IH07CiAJCTUxQjMwMDUxMTI1MjlE
MEUwMDBCNUNBMCAvKiBXZWJQYWdlUHJveHlDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIzMDA0RjEyNTI5RDBFMDAwQjVDQTAgLyogV2ViUGFn
ZVByb3h5Q0YuY3BwICovOyB9OwogCQk2RDhBOTFBNjExRjBFRkQxMDBERDAxRkUgLyogY29tLmFw
cGxlLldlYlByb2Nlc3Muc2IgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZEOEE5MUE1MTFGMEVGRDEwMEREMDFGRSAvKiBjb20uYXBwbGUuV2ViUHJvY2Vz
cy5zYiAqLzsgfTsKQEAgLTY3MCw4ICs2NzcsMTUgQEAKIAkJMzJEQkNGNUUwMzcwQURFRTAwQzkx
NzgzIC8qIFdlYktpdDJQcmVmaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViS2l0MlByZWZpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTU3OEI4MjEy
MDlFQ0VGMDBBMzdDNEEgLyogV2ViRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNkE0QTVCMTIw
QTJDQ0QwMEMwNUI3RiAvKiBXZWJFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTg3MUI1OTEy
N0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dE1lbnUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBN0YyRjIxMjVCRjgyMDAwOEFFQjFEIC8qIExvZ2dp
bmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9nZ2luZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE3RjJGNDEyNUJGOEQ0MDA4QUVCMUQgLyogTG9nZ2lu
Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2dnaW5nLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQ0JBMTMxMjc5RThDMzAwRDIwM0I5IC8q
IFdlYkNvbnRleHRNZW51SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJDb250ZXh0TWVudUl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MUFDQkExNDEyNzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbnRleHRNZW51SXRlbS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUFDQkI4MTEyN0E4QkFEMDBEMjAzQjkgLyogV2ViQ29u
dGV4dE1lbnVQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250
ZXh0TWVudVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQUNCQjlFMTI3
QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbnRleHRNZW51UHJveHlNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQ0JCOUYxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRN
ZW51UHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJDb250ZXh0TWVudVByb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUIzMDA0RTEyNTI5RDBFMDAwQjVDQTAgLyogV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3Bw
OyBwYXRoID0gY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUIzMDA0RjEyNTI5RDBFMDAwQjVDQTAgLyogV2ViUGFnZVByb3h5Q0YuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUGFnZVByb3h5Q0YuY3Bw
OyBwYXRoID0gY2YvV2ViUGFnZVByb3h5Q0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1REFENzI5NDExNkZGNzBCMDBFRTUzOTYgLyogV2ViUHJvY2Vzcy54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJQcm9jZXNzLnhjY29uZmlnOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI3NCwxMiArMTI4OCwxNCBAQAogCQkJCUJDQjBBRUU3
MTIyRjUzRTMwMEIxMzQxRSAvKiBNdXRhYmxlRGljdGlvbmFyeS5oICovLAogCQkJCUMwMkJGRjE1
MTI1MTRGRDgwMDlDQ0JFQSAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmggKi8sCiAJCQkJQkND
NTcxNjExMTVBREI0MjAwMUNDQUY5IC8qIE5vdEltcGxlbWVudGVkLmggKi8sCisJCQkJQkNCRDND
M0ExMjVCRkE3QTAwRDJDMjlGIC8qIFN0cmluZ1BhaXJWZWN0b3IuaCAqLywKIAkJCQlCQ0IwQjBE
RjEyMzA1QUIxMDBCMTM0MUUgLyogVXNlck1lc3NhZ2VDb2RlcnMuaCAqLywKIAkJCQkxQTBGMjlD
OTEyMEIzNzE2MDA1M0QxQjkgLyogVmlzaXRlZExpbmtUYWJsZS5jcHAgKi8sCiAJCQkJMUEwRjI5
Q0ExMjBCMzcxNjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rVGFibGUuaCAqLywKIAkJCQlCQzFERDdC
MTExNERDMzk2MDA1QURBRjMgLyogV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggKi8sCiAJCQkJQkNG
NTA3MjYxMjQzMjlBQTAwNTk1NUFFIC8qIFdlYkNlcnRpZmljYXRlSW5mby5oICovLAotCQkJCUJD
QkQzQzNBMTI1QkZBN0EwMEQyQzI5RiAvKiBTdHJpbmdQYWlyVmVjdG9yLmggKi8sCisJCQkJNTFB
Q0JBMTMxMjc5RThDMzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51SXRlbS5jcHAgKi8sCisJCQkJ
NTFBQ0JBMTQxMjc5RThDMzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51SXRlbS5oICovLAogCQkJ
CTUxNTc4QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggKi8sCiAJCQkJQkM1NzU2MTIx
MjZFMDEzODAwNkYwRjEyIC8qIFdlYkVycm9yLmNwcCAqLywKIAkJCQk1MTZBNEE1QjEyMEEyQ0NE
MDBDMDVCN0YgLyogV2ViRXJyb3IuaCAqLywKQEAgLTE0NTEsNiArMTQ2Nyw4IEBACiAJCUJDMDMy
RDVFMTBGNDM3MkIwMDU4QzE1QSAvKiBXZWJQYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29u
dGV4dE1lbnUuY3BwICovLAorCQkJCTUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250
ZXh0TWVudS5oICovLAogCQkJCUJDOTYzRDZDMTEzREQxOTUwMDU3NEJFMiAvKiBtYWMgKi8sCiAJ
CQkJQkM1RjdCQjIxMTgyMzc2QzAwNTJDMDJDIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5j
cHAgKi8sCiAJCQkJQkM1RjdCQjMxMTgyMzc2QzAwNTJDMDJDIC8qIENodW5rZWRVcGRhdGVEcmF3
aW5nQXJlYS5oICovLApAQCAtMTUwOCw2ICsxNTI2LDcgQEAKIAkJCQlCQzY0NkJGNjExREQzNzdC
MDA2NDU1QjAgLyogV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oICovLAogCQkJCUJDQjlFMjQyMTEy
MERBQ0EwMEExMzdFMCAvKiBXZWJDb250ZXh0LmNwcCAqLywKIAkJCQlCQ0I5RTI0MTExMjBEQUNB
MDBBMTM3RTAgLyogV2ViQ29udGV4dC5oICovLAorCQkJCTUxQUNCQjgxMTI3QThCQUQwMEQyMDNC
OSAvKiBXZWJDb250ZXh0TWVudVByb3h5LmggKi8sCiAJCQkJQkNERTA1OUExMUNEQThBRTAwRTQx
QUYxIC8qIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgKi8sCiAJCQkJQkNERTA1
OTkxMUNEQThBRTAwRTQxQUYxIC8qIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oICov
LAogCQkJCUJDQjBCMERCMTIzMDVBMjUwMEIxMzQxRSAvKiBXZWJDb250ZXh0VXNlck1lc3NhZ2VD
b2RlcnMuaCAqLywKQEAgLTE4NjEsNiArMTg4MCw4IEBACiAJCQkJQkMyNjUxRjUxMTgyNUVGODAw
MjQzRTEyIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5TWFjLm1tICovLAogCQkJCTBG
NTI2NUJCMTFERDM3ODYwMDA2RDMzQyAvKiBMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHlNYWMu
bW0gKi8sCiAJCQkJMUExQzY0ODYxMUY0MTVCNzAwNTUzQzE5IC8qIFdlYkNvbnRleHRNYWMubW0g
Ki8sCisJCQkJNTFBQ0JCOUUxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlN
YWMuaCAqLywKKwkJCQk1MUFDQkI5RjEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQ
cm94eU1hYy5tbSAqLywKIAkJCQlCQzU3NTA5NTEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBN
ZW51UHJveHlNYWMuaCAqLywKIAkJCQlCQzU3NTA5NjEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9w
dXBNZW51UHJveHlNYWMubW0gKi8sCiAJCQkpOwpAQCAtMjIxMSw3ICsyMjMyLDExIEBACiAJCQkJ
OTM1RUVCQTQxMjc3NjFENjAwMzMyMkI4IC8qIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0
SXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2MTYxNTAxMjc3OThCNTAwM0FDRDg2IC8qIERv
d25sb2FkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2MTYxRDQxMjc4OTgxQzAwM0FD
RDg2IC8qIERvd25sb2FkLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUFDQkExNjEyNzlFOEMzMDBE
MjAzQjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUFDQkI4
MjEyN0E4QkFEMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTFBQ0JCQTAxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBMTE5QTk1MTI3Qjc5NjIwMEE5RUNCMSAvKiBNZXNzYWdl
U2VuZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg3MUI1QzEyN0NCODlEMDBGNzYyMzIgLyog
V2ViQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjUzNCwxMiArMjU1OSwxNSBAQAog
CQkJCTFBNjE2MTRGMTI3Nzk4QjUwMDNBQ0Q4NiAvKiBEb3dubG9hZE1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUE2MTYxRDUxMjc4OTgxQzAwM0FDRDg2IC8qIERvd25sb2FkLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBNjE2Mzk2MTI3ODlCMkYwMDNBQ0Q4NiAvKiBEb3dubG9hZE1h
Yy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxQUNCQTE1MTI3OUU4QzMwMEQyMDNCOSAvKiBXZWJD
b250ZXh0TWVudUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFBQ0JCQTExMjdBOEYyQzAw
RDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlD
MDMzN0RBRTEyN0EyNEZFMDA4RkY0RjQgLyogV2ViRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQzAzMzdEQjAxMjdBMjhEMDAwOEZGNEY0IC8qIFdlYk1vdXNlRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQzAzMzdERDExMjdBMjk4MDAwOEZGNEY0IC8qIFdlYldoZWVsRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdERDMxMjdBMkEwRTAwOEZGNEY0IC8qIFdlYktleWJv
YXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdERDgxMjdBNTFCNjAwOEZGNEY0
IC8qIFdlYlRvdWNoRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdEREQxMjdBNTIx
QzAwOEZGNEY0IC8qIFdlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1MTg3MUI1QjEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gNzA5ODQpCisrKyBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1l
bnUuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJG
cmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC01MjUsNiArNTI2
LDEzIEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBXZWIKICAgICByZXR1
cm4gV2ViU2VhcmNoUG9wdXBNZW51OjpjcmVhdGUobV9wYWdlLCBjbGllbnQpOwogfQogCisjaWYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6c2hvd0NvbnRleHRN
ZW51KCkKK3sKKyAgICBtX3BhZ2UtPmNvbnRleHRNZW51KCktPnNob3coKTsKK30KKyNlbmRpZgor
CiBQYXNzT3duUHRyPEhUTUxQYXJzZXJRdWlya3M+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSFRN
TFBhcnNlclF1aXJrcygpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFdlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJl
dmlzaW9uIDcwOTg0KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNiArMTcwLDEwIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBN
ZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJD
b3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKIAorI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKTsKKyNlbmRpZgorCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hSb290R3Jh
cGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbigpOwpJ
bmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDYgKzI1LDggQEAKIAogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51Q2xpZW50
LmgiCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CisKICNkZWZpbmUgRElTQUJM
RV9OT1RfSU1QTEVNRU5URURfV0FSTklOR1MgMQogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAKQEAgLTM3LDEwICszOSwxMyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0
TWVudURlCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLVBsYXRmb3JtTWVudURlc2NyaXB0aW9uIFdl
YkNvbnRleHRNZW51Q2xpZW50OjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhDb250ZXh0
TWVudSopCitQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBXZWJDb250ZXh0TWVudUNsaWVudDo6Z2V0
Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoQ29udGV4dE1lbnUqIG1lbnUpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICAvLyBGSVhNRTogIFRoZSBlbWJlZGRl
ZCBhcHAgbmVlZHMgYSBjaGFuY2UgdG8gY3VzdG9taXplIHRoZSBjb250ZXh0IG1lbnUsIGFuZCB0
aGF0IHdpbGwgcHJvYmFibHkgaGFwcGVuCisgICAgLy8gdmlhIGFuIGluamVjdGVkIGJ1bmRsZS4g
PHJkYXI6Ly9wcm9ibGVtLzg2MTM3Mjc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDg3MjAgY292ZXIgdGhpcyB0YXNrLgorCisgICAgQVNTRVJUKG1lbnUpOwor
ICAgIHJldHVybiBtZW51LT5wbGF0Zm9ybURlc2NyaXB0aW9uKCk7CiB9CiAKIHZvaWQgV2ViQ29u
dGV4dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSos
IGNvbnN0IENvbnRleHRNZW51KikKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkNvbnRleHRNZW51LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJDb250ZXh0TWVudS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudS5oIgorCisjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1
ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvbnRleHRNZW51OjpX
ZWJDb250ZXh0TWVudShXZWJQYWdlKiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisK
K1dlYkNvbnRleHRNZW51Ojp+V2ViQ29udGV4dE1lbnUoKQoreworfQorCit2b2lkIFdlYkNvbnRl
eHRNZW51OjpzaG93KCkKK3sKKyAgICBXZWJDb3JlOjpDb250ZXh0TWVudSogbWVudSA9IG1fcGFn
ZS0+Y29yZVBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNvbnRleHRNZW51KCk7Cisg
ICAgaWYgKCFtZW51KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgVmVjdG9yPFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbT4gY29yZUl0ZW1zID0gV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVmVj
dG9yKG1lbnUtPnBsYXRmb3JtRGVzY3JpcHRpb24oKSk7CisgICAgICAgIAorICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
aG93Q29udGV4dE1lbnUobWVudS0+aGl0VGVzdFJlc3VsdCgpLnBvaW50KCksIGtpdEl0ZW1zKGNv
cmVJdGVtcywgbWVudSkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJDb250ZXh0
TWVudTo6aXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbSYgaXRlbSkKK3sKKyAg
ICBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0gY29yZUl0ZW0oV2ViQ29yZTo6QWN0aW9uVHlwZSwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24+KGl0ZW0ubV9hY3Rpb24pLCBp
dGVtLm1fdGl0bGUpOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9s
bGVyKCktPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKCZjb3JlSXRlbSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4
dE1lbnUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250
ZXh0TWVudS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29udGV4dE1lbnUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVm
IFdlYkNvbnRleHRNZW51X2gKKyNkZWZpbmUgV2ViQ29udGV4dE1lbnVfaAorCisjaW5jbHVkZSAi
V2ViQ29udGV4dE1lbnVJdGVtLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJQYWdlOworCitjbGFzcyBXZWJDb250ZXh0TWVudSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNv
bnRleHRNZW51PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1l
bnU+IGNyZWF0ZShXZWJQYWdlKiBwYWdlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29udGV4
dE1lbnUocGFnZSkpOyB9CisgICAgfldlYkNvbnRleHRNZW51KCk7CisKKyAgICB2b2lkIHNob3co
KTsKKyAgICB2b2lkIGl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW0mKTsKKwor
cHJpdmF0ZToKKyAgICBXZWJDb250ZXh0TWVudShXZWJQYWdlKik7CisgICAgCisgICAgV2ViUGFn
ZSogbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQ
b3B1cE1lbnVfaApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJl
dmlzaW9uIDcwOTg0KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJQbHVnaW5WaWV3Lmgi
CiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCIKICNpbmNsdWRlICJXZWJDaHJv
bWVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudS5oIgogI2luY2x1ZGUgIldlYkNv
bnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAj
aW5jbHVkZSAiV2ViRHJhZ0NsaWVudC5oIgpAQCAtNTMsNiArNTQsOCBAQAogI2luY2x1ZGUgIldl
YlByZWZlcmVuY2VzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Byb3h5TWVzc2FnZUtpbmRzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWUu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xs
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CkBAIC00ODAsNiArNDgzLDEzIEBAIHZv
aWQgV2ViUGFnZTo6cGFnZURpZFNjcm9sbCgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpQYWdlRGlkU2Nyb2xsKCkpOwogfQogCitXZWJDb250ZXh0TWVudSogV2ViUGFnZTo6Y29u
dGV4dE1lbnUoKQoreworICAgIGlmICghbV9jb250ZXh0TWVudSkKKyAgICAgICAgbV9jb250ZXh0
TWVudSA9IFdlYkNvbnRleHRNZW51OjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIG1fY29udGV4
dE1lbnUuZ2V0KCk7Cit9CisKIC8vIEV2ZW50cyAKIAogc3RhdGljIGNvbnN0IFdlYkV2ZW50KiBn
X2N1cnJlbnRFdmVudCA9IDA7CkBAIC01MTksNyArNTI5LDIwIEBAIHN0YXRpYyBib29sIGhhbmRs
ZU1vdXNlRXZlbnQoY29uc3QgV2ViTW8KIAogICAgIHN3aXRjaCAocGxhdGZvcm1Nb3VzZUV2ZW50
LmV2ZW50VHlwZSgpKSB7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6TW91c2VFdmVudFByZXNzZWQ6
Ci0gICAgICAgICAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVBy
ZXNzRXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50KTsKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHBsYXRmb3JtTW91c2VFdmVudC5idXR0b24oKSA9PSBXZWJDb3JlOjpSaWdodEJ1dHRvbikKKyAg
ICAgICAgICAgICAgICBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJDb250ZXh0
TWVudSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBib29sIGhhbmRsZWQgPSBmcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUHJlc3NFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQp
OworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAocGxhdGZvcm1Nb3VzZUV2ZW50LmJ1dHRv
bigpID09IFdlYkNvcmU6OlJpZ2h0QnV0dG9uKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlZCA9
IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2VuZENvbnRleHRNZW51RXZlbnQocGxhdGZvcm1Nb3Vz
ZUV2ZW50KTsKKyAgICAgICAgICAgICAgICBpZiAoaGFuZGxlZCkKKyAgICAgICAgICAgICAgICAg
ICAgcGFnZS0+Y2hyb21lKCktPnNob3dDb250ZXh0TWVudSgpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gaGFuZGxlZDsKKyAgICAgICAgfQogICAgICAgICBjYXNlIFdlYkNv
cmU6Ok1vdXNlRXZlbnRSZWxlYXNlZDoKICAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KHBsYXRmb3JtTW91c2VFdmVudCk7CiAg
ICAgICAgIGNhc2UgV2ViQ29yZTo6TW91c2VFdmVudE1vdmVkOgpAQCAtODgzLDYgKzkwNiwxMiBA
QCB2b2lkIFdlYlBhZ2U6OmRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBCiAgICAgbV9hY3RpdmVQ
b3B1cE1lbnUgPSAwOwogfQogCit2b2lkIFdlYlBhZ2U6OmRpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZl
Q29udGV4dE1lbnUoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtJiBpdGVtKQoreworICAgIEFTU0VS
VChtX2NvbnRleHRNZW51KTsKKyAgICBtX2NvbnRleHRNZW51LT5pdGVtU2VsZWN0ZWQoaXRlbSk7
Cit9CisKICNpZiBQTEFURk9STShNQUMpCiB2b2lkIFdlYlBhZ2U6OmFkZFBsdWdpblZpZXcoUGx1
Z2luVmlldyogcGx1Z2luVmlldykKIHsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgJKHJldmlzaW9uIDcwOTg0KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCw4IEBAIGNsYXNzIERyYXdpbmdBcmVh
OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBQYWdlT3Zlcmxh
eTsKIGNsYXNzIFBsdWdpblZpZXc7CitjbGFzcyBXZWJDb250ZXh0TWVudTsKK2NsYXNzIFdlYkNv
bnRleHRNZW51SXRlbTsKIGNsYXNzIFdlYkV2ZW50OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBX
ZWJJbnNwZWN0b3I7CkBAIC0xODYsNiArMTg4LDggQEAgcHVibGljOgogICAgIEZpbmRDb250cm9s
bGVyJiBmaW5kQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fZmluZENvbnRyb2xsZXI7IH0KIAogICAg
IHZvaWQgcGFnZURpZFNjcm9sbCgpOworICAgIAorICAgIFdlYkNvbnRleHRNZW51KiBjb250ZXh0
TWVudSgpOwogCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CkBAIC0yNTIsNiArMjU2LDEwIEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBY3RpdmVQb3B1cE1lbnUoaW50
MzJfdCBuZXdJbmRleCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2b2lkIGRp
ZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVt
Jik7CisjZW5kaWYKKwogICAgIE93blB0cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CiAgICAgUmVm
UHRyPFdlYkZyYW1lPiBtX21haW5GcmFtZTsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVCYWNr
Rm9yd2FyZExpc3Q+IG1fYmFja0ZvcndhcmRMaXN0OwpAQCAtMjk0LDYgKzMwMiw4IEBAIHByaXZh
dGU6CiAKICAgICBSZWZQdHI8V2ViUG9wdXBNZW51PiBtX2FjdGl2ZVBvcHVwTWVudTsKIAorICAg
IFJlZlB0cjxXZWJDb250ZXh0TWVudT4gbV9jb250ZXh0TWVudTsKKwogICAgIHVpbnQ2NF90IG1f
cGFnZUlEOwogfTsKIApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDkg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAKICAgICAjIFBvcHVwIG1lbnUuCiAgICAgRGlkQ2hh
bmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVudShpbnQzMl90IG5ld0luZGV4KTsKKyAg
ICAKKyAgICAjIENvbnRleHQgbWVudS4KKyAgICBEaWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRl
eHRNZW51KFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtIG1lbnVJdGVtKTsKIAogICAgIFNldFdp
bmRvd1Jlc2l6ZXJTaXplKFdlYkNvcmU6OkludFNpemUgaW50ZXJzZWN0c1ZpZXcpCiAKSW5kZXg6
IFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dl
YktpdDIudmNwcm9qCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdDIvd2luL1dlYktpdDIudmNw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC00ODksNiArNDg5LDE0IEBACiAJCQkJPgogCQkJPC9GaWxl
PgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJDb250ZXh0TWVudUl0
ZW0uY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlxTaGFyZWRcV2ViQ29udGV4dE1lbnVJdGVtLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
IAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0xMTg4LDYgKzExOTYsMTQgQEAKIAkJCQkJPgogCQkJCTwv
RmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2ViUGFn
ZVxXZWJDb250ZXh0TWVudS5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2VcV2ViQ29udGV4dE1lbnUuaCIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdl
YlByb2Nlc3NcV2ViUGFnZVxXZWJFZGl0Q29tbWFuZC5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+
CkBAIC0xNjg1LDYgKzE3MDEsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXFdlYkNvbnRleHRNZW51UHJveHkuaCIKKwkJCQk+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXFdl
YkNvbnRleHRVc2VyTWVzc2FnZUNvZGVycy5oIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkocmV2aXNpb24gNzA5ODQpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTAtMzAgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Njk5CisgICAgICAgIENvbnRleHQgbWVudSBzdXBw
b3J0IGZvciBXZWJLaXQgMi4KKworICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6Cisg
ICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnNob3dDb250ZXh0TWVudSk6CisKIDIw
MTAtMTAtMjkgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgogCiAgICAgICAgIE5vIHJl
dmlldywgcm9sbGluZyBvdXQgNzA5NzEuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuaAkocmV2aXNpb24gNzA5ODQpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDYgKzE3NCwxMCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBN
ZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJD
b3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKIAorI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0KKyNlbmRpZgorCiBwcml2
YXRlOgogICAgIHZvaWQgZ2V0UG9wdXBNZW51SW5mbyhXZWJDb3JlOjpQb3B1cENvbnRhaW5lcios
IFdlYlBvcHVwTWVudUluZm8qKTsKIApJbmRleDogV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlzaW9uIDcwOTg0KQorKysgV2ViS2l0
L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMC0z
MCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NjA1NDc+IGFu
ZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg2OTkKKyAgICAgICAg
Q29udGV4dCBtZW51IHN1cHBvcnQgZm9yIFdlYktpdCAyLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRF
Zmw6OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTAtMTAtMjkgIERhbmllbCBCYXRlcyAgPGRiYXRl
c0ByaW0uY29tPgogCiAgICAgICAgIE5vIHJldmlldywgcm9sbGluZyBvdXQgNzA5NzEuCkluZGV4
OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgJKHJldmlzaW9u
IDcwOTg0KQorKysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAko
d29ya2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qKTsK
ICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgdmlydHVhbCB2b2lkIHNo
b3dDb250ZXh0TWVudSgpIHsgfQorI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBh
bmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogICAgIHZpcnR1YWwgdm9pZCBj
aG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlQ2hvb3NlciopOwog
ICAgIHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgTm9kZSopOwpJbmRleDog
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDcwOTg0KQorKysgV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMC0zMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzc2NjA1NDc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDg2OTkKKyAgICAgICAgQ29udGV4dCBtZW51IHN1cHBvcnQgZm9yIFdlYktp
dCAyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmg6CisgICAg
ICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxMC0xMC0z
MCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
TWFydGluIFJvYmluc29uLgpJbmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5oCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsOSBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNo
ZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVk
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKik7CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICAgICAgdmlydHVhbCB2b2lkIHNo
b3dDb250ZXh0TWVudSgpIHsgfQorI2VuZGlmCiAgICAgICAgIHZpcnR1YWwgdm9pZCBydW5PcGVu
UGFuZWwoV2ViQ29yZTo6RnJhbWUqLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPik7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFdU
Rjo6U3RyaW5nPiYsIFdlYkNvcmU6OkZpbGVDaG9vc2VyKik7CiAKSW5kZXg6IFdlYktpdC9oYWlr
dS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwkocmV2aXNp
b24gNzA5ODQpCisrKyBXZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTAtMTAtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ4Njk5CisgICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQgMi4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxMC0x
MC0yOSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRIYWlrdS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9oYWlrdS9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdC9oYWlr
dS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzcsNiArMTM3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmln
aW4qKTsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgICAgICB2aXJ0dWFs
IHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9CisjZW5kaWYKIAogICAgICAgICAvLyBUaGlzIGlz
IGFuIGFzeW5jaHJvbm91cyBjYWxsLiBUaGUgQ2hyb21lQ2xpZW50IGNhbiBkaXNwbGF5IFVJIGFz
a2luZyB0aGUgdXNlciBmb3IgcGVybWlzc2lvbgogICAgICAgICAvLyB0byB1c2UgR2VvbG9jb2Nh
dGlvbi4KSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTAtMzAgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Njk5CisgICAgICAgIENvbnRleHQgbWVudSBzdXBw
b3J0IGZvciBXZWJLaXQgMi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpzaG93Q29udGV4dE1lbnUpOgorCiAy
MDEwLTEwLTI5ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KIAogICAgICAgICBObyBy
ZXZpZXcsIHJvbGxpbmcgb3V0IDcwOTcxLgpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiA3MDk4NCkKKysrIFdlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw2ICsx
NzgsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVu
dT4gY3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJj
aFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKIAorI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0K
KyNlbmRpZgogcHJpdmF0ZToKICAgICBXZWJWaWV3ICptX3dlYlZpZXc7CiB9OwpJbmRleDogV2Vi
S2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZp
c2lvbiA3MDk4NCkKKysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMyBAQAorMjAxMC0xMC0zMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzc2NjA1NDc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDg2OTkKKyAgICAgICAgQ29udGV4dCBtZW51IHN1cHBvcnQgZm9yIFdlYktpdCAyLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFF0OjpzaG93Q29udGV4dE1lbnUpOgorCiAyMDEwLTEwLTMwICBB
bmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBB
bnRvbmlvIEdvbWVzLgpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0LmgJKHJldmlzaW9uIDcwOTg0KQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw2ICsxMzQsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGlu
dDY0X3Qgc3BhY2VOZWVkZWQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiopOwogI2VuZGlmCisjaWYgRU5BQkxF
KENPTlRFWFRfTUVOVVMpCisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgpIHsgfQor
I2VuZGlmCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICAgICAgdmlydHVhbCBOb3Rp
ZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0OwpJbmRleDog
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDcwOTg0KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMC0zMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzc2NjA1NDc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDg2OTkKKyAgICAgICAgQ29udGV4dCBtZW51IHN1cHBvcnQgZm9yIFdlYktp
dCAyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAg
ICAgIChXZWJDaHJvbWVDbGllbnQ6OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTAtMTAtMjkgIERh
bmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgogCiAgICAgICAgIE5vIHJldmlldywgcm9sbGlu
ZyBvdXQgNzA5NzEuCkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgJKHJldmlzaW9uIDcwOTg0KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEyMiwxMCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgpIHsgfQorI2VuZGlmCisK
ICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVWaXNpdGVkTGlua3MoKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBwYWludEN1c3RvbVNjcm9sbGJhcihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBXZWJDb3JlOjpTY3JvbGxiYXJDb250cm9sU2l6ZSwgCklu
ZGV4OiBXZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93eC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDcwOTg0KQorKysgV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTEwLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNzY2MDU0Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00ODY5OQorICAgICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2Vi
S2l0IDIuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxMC0x
MC0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVu
dFd4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50
V3guaAkocmV2aXNpb24gNzA5ODQpCisrKyBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVD
bGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNiArMTI5LDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0
eU9yaWdpbiopOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2aXJ0
dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9p
ZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7CiAgICAgdmly
dHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVD
aG9vc2VyKik7CiA=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72462</attachid>
            <date>2010-10-31 09:54:11 -0700</date>
            <delta_ts>2010-10-31 13:24:21 -0700</delta_ts>
            <desc>v4 - Updated to this morning</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>71017</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDk5MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMTAtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ4Njk5CisgICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQg
Mi4KKworICAgICAgICBBZGQgYSAic2hvd0NvbnRleHRNZW51IiBjYWxsIHRvIENocm9tZS9DaHJv
bWVDbGllbnQ6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgICogcGFn
ZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzaG93Q29udGV4dE1lbnUp
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQu
aDoKKworICAgICAgICBBZGQgYSAicGxhdGZvcm0gZGVzY3JpcHRpb24gdG8gQ29udGV4dE1lbnVJ
dGVtIiBjcmVhdG9yLCB3aWxsIGJlIG5lZWRlZCBieSBzb21lIFdLMiBwb3J0czoKKyAgICAgICAg
KiBwbGF0Zm9ybS9Db250ZXh0TWVudS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Db250ZXh0
TWVudU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVZlY3Rvcik6IElt
cGxlbWVudCB0aGUgTWFjIHZlcnNpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ29udGV4
dE1lbnVJdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtOjpjaGVj
a2VkKTogSW1wbGVtZW50IHRoZSBNYWMgdmVyc2lvbiAtIHdpbGwgYmUgbmVlZGVkIGJ5IFdLMi4K
KwogMjAxMC0xMC0zMCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9u
IDcwOTkwKQorKysgV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTIy
NSw5ICsxMjI1LDIyIEBAIF9fWk5LN1dlYkNvcmUxOFJlbmRlckxheWVyQmFja2luZzIwY29tcG8K
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIF9fWk43V2ViQ29yZTExQ29udGV4dE1lbnUyMnNl
dFBsYXRmb3JtRGVzY3JpcHRpb25FUDE0TlNNdXRhYmxlQXJyYXkKIF9fWk43V2ViQ29yZTEyRXZl
bnRIYW5kbGVyMjBzZW5kQ29udGV4dE1lbnVFdmVudEVQN05TRXZlbnQKK19fWk43V2ViQ29yZTEy
RXZlbnRIYW5kbGVyMjBzZW5kQ29udGV4dE1lbnVFdmVudEVSS05TXzE4UGxhdGZvcm1Nb3VzZUV2
ZW50RQogX19aTjdXZWJDb3JlMTVDb250ZXh0TWVudUl0ZW0yNnJlbGVhc2VQbGF0Zm9ybURlc2Ny
aXB0aW9uRXYKK19fWk43V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtQzFFTlNfMTlDb250ZXh0TWVu
dUl0ZW1UeXBlRU5TXzE3Q29udGV4dE1lbnVBY3Rpb25FUktOM1dURjZTdHJpbmdFUE5TXzExQ29u
dGV4dE1lbnVFCitfX1pON1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbUQxRXYKIF9fWk43V2ViQ29y
ZTIxQ29udGV4dE1lbnVDb250cm9sbGVyMTZjbGVhckNvbnRleHRNZW51RXYKK19fWk43V2ViQ29y
ZTIxQ29udGV4dE1lbnVDb250cm9sbGVyMjNjb250ZXh0TWVudUl0ZW1TZWxlY3RlZEVQTlNfMTVD
b250ZXh0TWVudUl0ZW1FCitfX1pON1dlYkNvcmUyMWNvbnRleHRNZW51SXRlbVZlY3RvckVQMTRO
U011dGFibGVBcnJheQorX19aTjdXZWJDb3JlNkNocm9tZTE1c2hvd0NvbnRleHRNZW51RXYKIF9f
Wk5LN1dlYkNvcmUxMUNvbnRleHRNZW51MTlwbGF0Zm9ybURlc2NyaXB0aW9uRXYKK19fWk5LN1dl
YkNvcmUxMUNvbnRleHRNZW51MjFjaGVja09yRW5hYmxlSWZOZWVkZWRFUk5TXzE1Q29udGV4dE1l
bnVJdGVtRQorX19aTks3V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtMTVwbGF0Zm9ybVN1Yk1lbnVF
dgorX19aTks3V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtNHR5cGVFdgorX19aTks3V2ViQ29yZTE1
Q29udGV4dE1lbnVJdGVtNXRpdGxlRXYKK19fWk5LN1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTZh
Y3Rpb25FdgorX19aTks3V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtN2NoZWNrZWRFdgorX19aTks3
V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtN2VuYWJsZWRFdgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
REFTSEJPQVJEX1NVUFBPUlQpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gNzA5
OTApCisrKyBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTM5LDYgKzEzOSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBvcHVwTWVu
dT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0IHsgcmV0dXJuIGFkb3B0
UmVmKG5ldyBFbXB0eVBvcHVwTWVudSgpKTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTZWFy
Y2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25z
dCB7IHJldHVybiBhZG9wdFJlZihuZXcgRW1wdHlTZWFyY2hQb3B1cE1lbnUoKSk7IH0KIAorI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUo
KSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHNldFN0YXR1c2JhclRleHQoY29uc3Qg
U3RyaW5nJikgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgdGFic1RvTGlua3MoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDcwOTkwKQorKysgV2ViQ29yZS9w
YWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMiw0ICs1MDIsMTEgQEAgUGFzc1Jl
ZlB0cjxTZWFyY2hQb3B1cE1lbnU+IENocm9tZTo6Y3JlYQogICAgIHJldHVybiBtX2NsaWVudC0+
Y3JlYXRlU2VhcmNoUG9wdXBNZW51KGNsaWVudCk7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKK3ZvaWQgQ2hyb21lOjpzaG93Q29udGV4dE1lbnUoKQoreworICAgIG1fY2xpZW50LT5z
aG93Q29udGV4dE1lbnUoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0No
cm9tZS5oCShyZXZpc2lvbiA3MDk5MCkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU1LDYgKzE1NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFBhc3NSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50Kikg
Y29uc3Q7CiAgICAgICAgIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQ
b3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKKyAgICAgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoKTsKKyNlbmRpZgorCiAgICAgcHJp
dmF0ZToKICAgICAgICAgUGFnZSogbV9wYWdlOwogICAgICAgICBDaHJvbWVDbGllbnQqIG1fY2xp
ZW50OwpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNzA5OTApCisrKyBXZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw2ICsyNjksMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UG9wdXBNZW51PiBj
cmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3QgPSAwOwogICAgICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9w
dXBNZW51Q2xpZW50KikgY29uc3QgPSAwOwogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSA9IDA7CisjZW5kaWYKKwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oQWNjZXNzaWJp
bGl0eU9iamVjdCosIEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uKSB7IH0KIAogICAgIHBy
b3RlY3RlZDoKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmgJKHJldmlzaW9uIDcwOTkwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5
MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgIH07CiAKK1ZlY3RvcjxDb250
ZXh0TWVudUl0ZW0+IGNvbnRleHRNZW51SXRlbVZlY3RvcihQbGF0Zm9ybU1lbnVEZXNjcmlwdGlv
biBtZW51KTsKKwogfQogCiAjZW5kaWYgLy8gQ29udGV4dE1lbnVfaApJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvQ29udGV4dE1lbnVJdGVtTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vbWFjL0NvbnRleHRNZW51SXRlbU1hYy5tbQkocmV2aXNpb24gNzA5OTApCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudUl0ZW1NYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTE1NCw2ICsxNTQsMTEgQEAgYm9vbCBDb250ZXh0TWVudUl0ZW06OmVuYWJsZWQoKSBjb25z
dAogICAgIHJldHVybiBbbV9wbGF0Zm9ybURlc2NyaXB0aW9uLmdldCgpIGlzRW5hYmxlZF07CiB9
CiAKK2Jvb2wgQ29udGV4dE1lbnVJdGVtOjpjaGVja2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
W21fcGxhdGZvcm1EZXNjcmlwdGlvbi5nZXQoKSBzdGF0ZV0gPT0gTlNPblN0YXRlOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0NvbnRleHRNZW51TWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0NvbnRleHRNZW51TWFjLm1tCShyZXZpc2lvbiA3MDk5
MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0NvbnRleHRNZW51TWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTMsNiArMTUzLDE5IEBAIE5TTXV0YWJsZUFycmF5KiBDb250ZXh0TWVudTo6cmVs
ZWFzZVBsYXQKICAgICByZXR1cm4gbV9wbGF0Zm9ybURlc2NyaXB0aW9uLnJlbGVhc2VSZWYoKTsK
IH0KIAorVmVjdG9yPENvbnRleHRNZW51SXRlbT4gY29udGV4dE1lbnVJdGVtVmVjdG9yKFBsYXRm
b3JtTWVudURlc2NyaXB0aW9uIG1lbnUpCit7CisgICAgVmVjdG9yPENvbnRleHRNZW51SXRlbT4g
aXRlbXM7CisgICAgdW5zaWduZWQgY291bnQgPSBbbWVudSBjb3VudF07CisgICAgaWYgKG1lbnUp
CisgICAgICAgIGl0ZW1zLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CisgICAgCisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIGl0ZW1zLmFwcGVuZChDb250
ZXh0TWVudUl0ZW0oW21lbnUgb2JqZWN0QXRJbmRleDppXSkpOworICAgIAorICAgIHJldHVybiBp
dGVtczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENP
TlRFWFRfTUVOVVMpCkluZGV4OiBXZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQyL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBACisyMDEwLTEwLTMwICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY2MDU0Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODY5OQorICAgICAgICBDb250ZXh0IG1lbnUgc3VwcG9y
dCBmb3IgV2ViS2l0IDIuCisKKyAgICAgICAgKiBXZWJLaXQyLnBybzoKKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd2luL1dlYktpdDIudmNw
cm9qOgorCisgICAgICAgICogU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW06OldlYkNvbnRleHRNZW51SXRlbSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbTo6ZW5jb2RlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0Ojpr
aXRJdGVtcyk6CisgICAgICAgICogU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oOiBBZGRlZC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwOgorICAgICAgICAoUVdLUGFnZVByaXZhdGU6OmNyZWF0
ZUNvbnRleHRNZW51UHJveHkpOiBTdHViIHRvIGtlZXAgdGhlIGJ1aWxkIHdvcmtpbmcuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGFnZUNsaWVudC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHku
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHk6On5XZWJDb250
ZXh0TWVudVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eTo6V2Vi
Q29udGV4dE1lbnVQcm94eSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG93Q29udGV4dE1lbnUpOiBTaG93
cyB0aGUgbWVudSBhZnRlciByZWNlaXZpbmcgdGhlIG1lc3NhZ2UgZnJvbSB0aGUgV2ViUHJvY2Vz
cy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3Rl
ZCk6IFNlbmRzIGluZm8gYWJvdXQgdGhlIHNlbGVjdGVkIG1lbnUgaXRlbSB0byB0aGUgV2ViUHJv
Y2VzcworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0TWVudVByb3h5TWFjOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5tbTogQWRkZWQuCisgICAgICAgICgrW1dlYk1lbnVUYXJnZXQg
c2hhcmVkTWVudVRhcmdldF0pOgorICAgICAgICAoLVtXZWJNZW51VGFyZ2V0IFdlYktpdDo6XSk6
CisgICAgICAgICgtW1dlYk1lbnVUYXJnZXQgc2V0TWVudVByb3h5OldlYktpdDo6XSk6CisgICAg
ICAgICgtW1dlYk1lbnVUYXJnZXQgZm9yd2FyZENvbnRleHRNZW51QWN0aW9uOl0pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpXZWJDb250ZXh0TWVudVByb3h5TWFj
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6fldlYkNvbnRleHRN
ZW51UHJveHlNYWMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpj
b250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OnBvcHVsYXRlTlNNZW51
KToKKyAgICAgICAgKFdlYktpdDo6bnNNZW51SXRlbVZlY3Rvcik6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRleHRNZW51UHJveHlNYWM6OnBvcHVsYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVQcm94eU1hYzo6c2hvd0NvbnRleHRNZW51KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6aGlkZUNvbnRleHRNZW51KToKKworICAgICAgICAqIFVJ
UHJvY2Vzcy93aW4vV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0
ZUNvbnRleHRNZW51UHJveHkpOiBTdHViIGZvciBub3cuCisgICAgICAgICogVUlQcm9jZXNzL3dp
bi9XZWJWaWV3Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c2hvd0Nv
bnRleHRNZW51KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51Q2xpZW50
OjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6IFJldHVybiB0aGUgV2ViQ29yZS1wcm92
aWRlZCBkZWZhdWx0CisgICAgICAgICAgbWVudSBmb3Igbm93LiBFbWJlZGRpbmcgYXBwIGN1c3Rv
bWl6YXRpb24gd2lsbCBjb21lIGxhdGVyIChzZWUgYnVnIDQ4NzIwKQorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHRNZW51OjpXZWJDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHRNZW51Ojp+V2ViQ29udGV4dE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0TWVudTo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51OjppdGVtU2Vs
ZWN0ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnU6OmNyZWF0ZSk6CisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYktpdDo6aGFuZGxlTW91c2VFdmVudCk6
IFBhc3MgcmlnaHQgbW91c2UgcHJlc3NlcyBhbG9uZyB0byBXZWJDb3JlIGFzIGJvdGggYSBtb3Vz
ZSBldmVudCBhbmQgY29udGV4dCBtZW51IGV2ZW50LCAKKyAgICAgICAgICB0aGUgc2FtZSB3YXkg
V2ViS2l0MSBkb2VzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRTZWxlY3RJdGVtRnJv
bUFjdGl2ZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
CiAyMDEwLTEwLTMwICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYktpdDIv
V2ViS2l0Mi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnBybwkocmV2aXNpb24g
NzA5OTApCisrKyBXZWJLaXQyL1dlYktpdDIucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsNiAr
MjE0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmggXAog
ICAgIFNoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmggXAogICAgIFNoYXJlZC9XZWJDZXJ0aWZpY2F0
ZUluZm8uaCBcCisgICAgU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oIFwKICAgICBTaGFyZWQv
V2ViRXZlbnQuaCBcCiAgICAgU2hhcmVkL1dlYkVycm9yLmggXAogICAgIFNoYXJlZC9XZWJFdmVu
dENvbnZlcnNpb24uaCBcCkBAIC0yNjQsNiArMjY1LDcgQEAgSEVBREVSUyArPSBcCiAgICAgVUlQ
cm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkNvbnRleHQu
aCBcCiAgICAgVUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oIFwKKyAg
ICBVSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5oIFwKICAgICBVSVByb2Nlc3MvV2ViQ29u
dGV4dFVzZXJNZXNzYWdlQ29kZXJzLmggXAogICAgIFVJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFBy
b3h5LmggXAogICAgIFVJUHJvY2Vzcy9XZWJGaW5kQ2xpZW50LmggXApAQCAtMzI5LDYgKzMzMSw3
IEBAIEhFQURFUlMgKz0gXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5o
IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZFBhZ2VPdmVybGF5LmggXAogICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5oIFwKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29udGV4dE1lbnUuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkVkaXRDb21tYW5kLmgg
XAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIFwKICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yLmggXApAQCAtMzc2LDYgKzM3OSw3IEBAIFNPVVJDRVMgKz0gXAog
ICAgIFNoYXJlZC9xdC9XZWJVUkxSZXF1ZXN0UXQuY3BwIFwKICAgICBTaGFyZWQvcXQvV2ViVVJM
UmVzcG9uc2VRdC5jcHAgXAogICAgIFNoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmNwcCBcCisgICAg
U2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAgXAogICAgIFNoYXJlZC9XZWJFcnJvci5jcHAg
XAogICAgIFNoYXJlZC9XZWJFdmVudC5jcHAgXAogICAgIFNoYXJlZC9XZWJFdmVudENvbnZlcnNp
b24uY3BwIFwKQEAgLTQ5Miw2ICs0OTYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRmlu
ZFBhZ2VPdmVybGF5LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmNw
cCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcCBcCiAgICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkVkaXRDb21tYW5kLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5j
cHAgXApJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJ
dGVtLmgiCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkFyZ3VtZW50
cy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nv
bnRleHRNZW51Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb250ZXh0TWVudUl0ZW06
OldlYkNvbnRleHRNZW51SXRlbSgpCisgICAgOiBtX3R5cGUoV2ViQ29yZTo6QWN0aW9uVHlwZSkK
KyAgICAsIG1fYWN0aW9uKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uKQorICAg
ICwgbV9lbmFibGVkKHRydWUpCisgICAgLCBtX2NoZWNrZWQoZmFsc2UpCit7Cit9CisKK1dlYkNv
bnRleHRNZW51SXRlbTo6V2ViQ29udGV4dE1lbnVJdGVtKFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVR5cGUgdHlwZSwgV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBjb25zdCBTdHJp
bmcmIHRpdGxlLCBib29sIGVuYWJsZWQsIGJvb2wgY2hlY2tlZCkKKyAgICA6IG1fdHlwZSh0eXBl
KQorICAgICwgbV9hY3Rpb24oYWN0aW9uKQorICAgICwgbV90aXRsZSh0aXRsZSkKKyAgICAsIG1f
ZW5hYmxlZChlbmFibGVkKQorICAgICwgbV9jaGVja2VkKGNoZWNrZWQpCit7CisgICAgQVNTRVJU
KHR5cGUgPT0gV2ViQ29yZTo6QWN0aW9uVHlwZSB8fCB0eXBlID09IFdlYkNvcmU6OkNoZWNrYWJs
ZUFjdGlvblR5cGUgfHwgdHlwZSA9PSBXZWJDb3JlOjpTZXBhcmF0b3JUeXBlKTsKK30KKworV2Vi
Q29udGV4dE1lbnVJdGVtOjpXZWJDb250ZXh0TWVudUl0ZW0oV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVHlwZSB0eXBlLCBXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvbnN0IFN0
cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRl
bT4mIHN1Ym1lbnUpCisgICAgOiBtX3R5cGUodHlwZSkKKyAgICAsIG1fYWN0aW9uKGFjdGlvbikK
KyAgICAsIG1fdGl0bGUodGl0bGUpCisgICAgLCBtX2VuYWJsZWQoZW5hYmxlZCkKKyAgICAsIG1f
Y2hlY2tlZChmYWxzZSkKKyAgICAsIG1fc3VibWVudShzdWJtZW51KQoreworICAgIEFTU0VSVCh0
eXBlID09IFdlYkNvcmU6OlN1Ym1lbnVUeXBlKTsKK30KKworV2ViQ29udGV4dE1lbnVJdGVtOjpX
ZWJDb250ZXh0TWVudUl0ZW0oV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtJiBpdGVtLCBXZWJDb3Jl
OjpDb250ZXh0TWVudSogbWVudSkKKyAgICA6IG1fdHlwZShpdGVtLnR5cGUoKSkKKyAgICAsIG1f
YWN0aW9uKGl0ZW0uYWN0aW9uKCkpCisgICAgLCBtX3RpdGxlKGl0ZW0udGl0bGUoKSkKK3sKKyAg
ICBpZiAobV90eXBlID09IFdlYkNvcmU6OlN1Ym1lbnVUeXBlKSB7CisgICAgICAgIFZlY3RvcjxX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0+IGNvcmVTdWJtZW51ID0gV2ViQ29yZTo6Y29udGV4dE1l
bnVJdGVtVmVjdG9yKGl0ZW0ucGxhdGZvcm1TdWJNZW51KCkpOworICAgICAgICBtX3N1Ym1lbnUg
PSBraXRJdGVtcyhjb3JlU3VibWVudSwgbWVudSk7CisgICAgfQorICAgIAorICAgIG1lbnUtPmNo
ZWNrT3JFbmFibGVJZk5lZWRlZChpdGVtKTsKKyAgICAKKyAgICBtX2VuYWJsZWQgPSBpdGVtLmVu
YWJsZWQoKTsKKyAgICBtX2NoZWNrZWQgPSBpdGVtLmNoZWNrZWQoKTsKK30KKwordm9pZCBXZWJD
b250ZXh0TWVudUl0ZW06OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIp
IGNvbnN0Cit7CisgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKHN0YXRpY19jYXN0PHVp
bnQzMl90PihtX3R5cGUpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9hY3Rpb24pLCBtX3RpdGxl
LCBtX2NoZWNrZWQsIG1fZW5hYmxlZCwgbV9zdWJtZW51KSk7Cit9CisKK2Jvb2wgV2ViQ29udGV4
dE1lbnVJdGVtOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJD
b250ZXh0TWVudUl0ZW0mIGl0ZW0pCit7CisgICAgdWludDMyX3QgdHlwZTsKKyAgICB1aW50MzJf
dCBhY3Rpb247CisgICAgU3RyaW5nIHRpdGxlOworICAgIGJvb2wgY2hlY2tlZDsKKyAgICBib29s
IGVuYWJsZWQ7CisgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbT4gc3VibWVudTsKKworICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dCh0eXBlLCBhY3Rpb24sIHRpdGxlLCBj
aGVja2VkLCBlbmFibGVkLCBzdWJtZW51KSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgV2ViQ29yZTo6QWN0aW9uVHlwZToKKyAgICBjYXNl
IFdlYkNvcmU6OlNlcGFyYXRvclR5cGU6CisgICAgY2FzZSBXZWJDb3JlOjpDaGVja2FibGVBY3Rp
b25UeXBlOgorICAgICAgICBpdGVtID0gV2ViQ29udGV4dE1lbnVJdGVtKHN0YXRpY19jYXN0PFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVR5cGU+KHR5cGUpLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpD
b250ZXh0TWVudUFjdGlvbj4oYWN0aW9uKSwgdGl0bGUsIGVuYWJsZWQsIGNoZWNrZWQpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OlN1Ym1lbnVUeXBlOgorICAgICAgICBpdGVt
ID0gV2ViQ29udGV4dE1lbnVJdGVtKHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVR5cGU+KHR5cGUpLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbj4oYWN0
aW9uKSwgdGl0bGUsIGVuYWJsZWQsIHN1Ym1lbnUpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitWZWN0b3I8V2ViQ29udGV4dE1lbnVJ
dGVtPiBraXRJdGVtcyhWZWN0b3I8V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtPiYgY29yZUl0ZW1z
LCBXZWJDb3JlOjpDb250ZXh0TWVudSogbWVudSkKK3sKKyAgICBWZWN0b3I8V2ViQ29udGV4dE1l
bnVJdGVtPiByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShjb3JlSXRlbXMuc2l6
ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29yZUl0ZW1zLnNpemUoKTsgKytp
KQorICAgICAgICByZXN1bHQuYXBwZW5kKFdlYkNvbnRleHRNZW51SXRlbShjb3JlSXRlbXNbaV0s
IG1lbnUpKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oCShyZXZpc2lvbiAwKQor
KysgV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvbnRleHRNZW51SXRlbV9oCisj
ZGVmaW5lIFdlYkNvbnRleHRNZW51SXRlbV9oCisKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRN
ZW51SXRlbS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
Q29yZUlQQyB7CisgICAgY2xhc3MgQXJndW1lbnREZWNvZGVyOworICAgIGNsYXNzIEFyZ3VtZW50
RW5jb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIENvbnRleHRNZW51
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYkNvbnRleHRNZW51SXRlbSB7
CisgICAgV2ViQ29udGV4dE1lbnVJdGVtKCk7CisgICAgV2ViQ29udGV4dE1lbnVJdGVtKFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbSYsIFdlYkNvcmU6OkNvbnRleHRNZW51KiBtZW51KTsKKyAgICBX
ZWJDb250ZXh0TWVudUl0ZW0oV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVHlwZSwgV2ViQ29yZTo6
Q29udGV4dE1lbnVBY3Rpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgYm9v
bCBjaGVja2VkKTsKKyAgICBXZWJDb250ZXh0TWVudUl0ZW0oV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVHlwZSwgV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUs
IGJvb2wgZW5hYmxlZCwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbT4mIHN1Ym1lbnUp
OworICAgIAorICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopIGNvbnN0
OworICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBXZWJD
b250ZXh0TWVudUl0ZW0mKTsKKworICAgIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVR5cGUgbV90
eXBlOworICAgIFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIG1fYWN0aW9uOworICAgIFN0cmlu
ZyBtX3RpdGxlOworICAgIGJvb2wgbV9lbmFibGVkOworICAgIGJvb2wgbV9jaGVja2VkOworICAg
IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+IG1fc3VibWVudTsKK307CisKK1ZlY3RvcjxXZWJD
b250ZXh0TWVudUl0ZW0+IGtpdEl0ZW1zKFZlY3RvcjxXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0+
JiwgV2ViQ29yZTo6Q29udGV4dE1lbnUqKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBXZWJDb250ZXh0TWVudUl0ZW1faApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAko
cmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDggKzM5LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZp
bmRJbmRpY2F0b3I7CiBjbGFzcyBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OwotY2xhc3MgV2ViRWRp
dENvbW1hbmRQcm94eTsKIGNsYXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7CitjbGFzcyBXZWJD
b250ZXh0TWVudVByb3h5OworY2xhc3MgV2ViRWRpdENvbW1hbmRQcm94eTsKIGNsYXNzIFdlYlBv
cHVwTWVudVByb3h5OwogCiBjbGFzcyBQYWdlQ2xpZW50IHsKQEAgLTcyLDYgKzczLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWROb3RIYW5kbGVLZXlFdmVudChjb25zdCBOYXRpdmVX
ZWJLZXlib2FyZEV2ZW50JikgPSAwOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVw
TWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eSgpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdl
UHJveHkqKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RmluZEluZGljYXRvcihQYXNzUmVm
UHRyPEZpbmRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQpID0gMDsKIApJbmRleDogV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29udGV4dE1lbnVQcm94eV9oCisjZGVmaW5lIFdl
YkNvbnRleHRNZW51UHJveHlfaAorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworICAgIGNsYXNzIEludFBvaW50OworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworc3RydWN0IFdlYkNvbnRleHRNZW51SXRlbTsKKworY2xhc3MgV2ViQ29udGV4dE1lbnVQ
cm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvbnRleHRNZW51UHJveHk+IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5XZWJDb250ZXh0TWVudVByb3h5KCkKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNv
bnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBoaWRlQ29udGV4dE1lbnUoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBXZWJDb250ZXh0
TWVudVByb3h5KCkKKyAgICB7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBXZWJQb3B1cE1lbnVQcm94eV9oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAJKHJldmlzaW9uIDcwOTkwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIldlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKICNp
bmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgog
I2luY2x1ZGUgIldlYkNvbnRleHRVc2VyTWVzc2FnZUNvZGVycy5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkRhdGEuaCIKQEAgLTExMjQsNiArMTEy
NSwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGlkZVBvcHVwTWVudSgpCiAgICAgbV9hY3RpdmVQ
b3B1cE1lbnUgPSAwOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0NvbnRleHRNZW51KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0IFZlY3RvcjxXZWJDb250
ZXh0TWVudUl0ZW0+JiBpdGVtcykKK3sKKyAgICBpZiAobV9hY3RpdmVDb250ZXh0TWVudSkKKyAg
ICAgICAgbV9hY3RpdmVDb250ZXh0TWVudS0+aGlkZUNvbnRleHRNZW51KCk7CisgICAgZWxzZQor
ICAgICAgICBtX2FjdGl2ZUNvbnRleHRNZW51ID0gbV9wYWdlQ2xpZW50LT5jcmVhdGVDb250ZXh0
TWVudVByb3h5KHRoaXMpOworICAgICAgCisgICAgbV9hY3RpdmVDb250ZXh0TWVudS0+c2hvd0Nv
bnRleHRNZW51KG1lbnVMb2NhdGlvbiwgaXRlbXMpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtJiBpdGVtKQor
eworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU2VsZWN0SXRlbUZy
b21BY3RpdmVDb250ZXh0TWVudShpdGVtKSwgbV9wYWdlSUQpOworfQorCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+
IGNvbW1hbmRQcm94eSwgVW5kb09yUmVkbyB1bmRvT3JSZWRvKQogewogICAgIG1fcGFnZUNsaWVu
dC0+cmVnaXN0ZXJFZGl0Q29tbWFuZChjb21tYW5kUHJveHksIHVuZG9PclJlZG8pOwpJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDcwOTkwKQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNp
bmNsdWRlICJXS0Jhc2UuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKICNpbmNs
dWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgIldlYkZpbmRDbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJGb3JtQ2xpZW50LmgiCkBAIC03Nyw2ICs3OCw3IEBAIGNsYXNzIFBsYXRmb3JtQ2VydGlmaWNh
dGVJbmZvOwogY2xhc3MgU3RyaW5nUGFpclZlY3RvcjsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlz
dDsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CitjbGFzcyBXZWJDb250ZXh0TWVudVBy
b3h5OwogY2xhc3MgV2ViRGF0YTsKIGNsYXNzIFdlYkVkaXRDb21tYW5kUHJveHk7CiBjbGFzcyBX
ZWJLZXlib2FyZEV2ZW50OwpAQCAtMjMxLDYgKzIzMyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Z2V0U3RhdGlzdGljcyhXS0NvbnRleHRTdGF0aXN0aWNzKik7CiAKKyAgICB2b2lkIGNvbnRleHRN
ZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbSYpOworCiBwcml2YXRlOgog
ICAgIFdlYlBhZ2VQcm94eShXZWJQYWdlTmFtZXNwYWNlKiwgdWludDY0X3QgcGFnZUlEKTsKIApA
QCAtMzIxLDYgKzMyNSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaG93UG9wdXBNZW51KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHJlY3QsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVt
cywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKICAgICB2b2lkIGhpZGVQb3B1cE1lbnUoKTsKIAor
ICAgIC8vIENvbnRleHQgTWVudS4KKyAgICB2b2lkIHNob3dDb250ZXh0TWVudShjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+JiBpdGVtcyk7
CisKICAgICB2b2lkIHRha2VGb2N1cyhib29sIGRpcmVjdGlvbik7CiAgICAgdm9pZCBzZXRUb29s
VGlwKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1
cnNvciYpOwpAQCAtMzYxLDYgKzM2OCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxXZWJFZGl0
Q29tbWFuZFByb3h5Kj4gbV9lZGl0Q29tbWFuZFNldDsKIAogICAgIFJlZlB0cjxXZWJQb3B1cE1l
bnVQcm94eT4gbV9hY3RpdmVQb3B1cE1lbnU7CisgICAgUmVmUHRyPFdlYkNvbnRleHRNZW51UHJv
eHk+IG1fYWN0aXZlQ29udGV4dE1lbnU7CiAKICAgICBkb3VibGUgbV9lc3RpbWF0ZWRQcm9ncmVz
czsKIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgko
cmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsOSBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogICAgICMgUG9wdXBNZW51LgogICAgIFNob3dQb3B1cE1lbnUoV2ViQ29yZTo6
SW50UmVjdCByZWN0LCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+IGl0ZW1zLCBpbnQzMl90
IHNlbGVjdGVkSW5kZXgpCiAgICAgSGlkZVBvcHVwTWVudSgpCisgICAgCisgICAgIyBDb250ZXh0
TWVudQorICAgIFNob3dDb250ZXh0TWVudShXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgVmVjdG9y
PFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPiBpdGVtcykKIAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKICAgICAjIEFjY2VsZXJhdGVkIGNvbXBzaXRpbmcgbWVzc2FnZXMuCklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lv
biA3MDk5MCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAko
d29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWROb3RIYW5kbGVLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50Jik7CiAK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVu
dVByb3h5KCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNy
ZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Kik7CiAKICAgICB2b2lkIHNldEZpbmRJ
bmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KTsKIApJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCShyZXZpc2lv
biA3MDk5MCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIldLQVBJQ2FzdC5oIgog
I2ltcG9ydCAiV0tTdHJpbmdDRi5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKKyNpbXBv
cnQgIldlYkNvbnRleHRNZW51UHJveHlNYWMuaCIKICNpbXBvcnQgIldlYkVkaXRDb21tYW5kUHJv
eHkuaCIKICNpbXBvcnQgIldlYlBvcHVwTWVudVByb3h5TWFjLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L0N1cnNvci5oPgpAQCAtMjQ1LDYgKzI0NiwxMSBAQCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVBy
b3h5PiBQYWdlQ2xpZW50CiAgICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5TWFjOjpjcmVhdGUo
bV93a1ZpZXcpOwogfQogCitQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGll
bnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKK3sKKyAg
ICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y3JlYXRlKG1fd2tWaWV3LCBwYWdlKTsK
K30KKwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZp
bmRJbmRpY2F0b3I+IGZpbmRJbmRpY2F0b3IsIGJvb2wgZmFkZU91dCkKIHsKICAgICBbbV93a1Zp
ZXcgX3NldEZpbmRJbmRpY2F0b3I6ZmluZEluZGljYXRvciBmYWRlT3V0OmZhZGVPdXRdOwpJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAkocmV2aXNpb24gNzA5OTApCisrKyBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
NCw2ICsxMzQsMTIgQEAgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUVdLUGFnZVByaQog
ICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94eVF0OjpjcmVhdGUoKTsKIH0KIAorUGFzc1JlZlB0
cjxXZWJDb250ZXh0TWVudVByb3h5PiBRV0tQYWdlUHJpdmF0ZTo6Y3JlYXRlQ29udGV4dE1lbnVQ
cm94eShXZWJQYWdlUHJveHkqKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQ7CisgICAgcmV0
dXJuIDA7Cit9CisKIHZvaWQgUVdLUGFnZVByaXZhdGU6OnNldEZpbmRJbmRpY2F0b3IoUGFzc1Jl
ZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KQogewogfQpJbmRleDogV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xd2twYWdlX3AuaAkocmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFj
ZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90SGFu
ZGxlS2V5RXZlbnQoY29uc3QgV2ViS2l0OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVw
TWVudVByb3h5KCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYktpdDo6V2ViQ29udGV4dE1l
bnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwog
CiAgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxXZWJLaXQ6OkZp
bmRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQpOwogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb250ZXh0TWVudVByb3h5TWFj
X2gKKyNkZWZpbmUgV2ViQ29udGV4dE1lbnVQcm94eU1hY19oCisKKyNpbmNsdWRlICJXZWJDb250
ZXh0TWVudVByb3h5LmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWZkZWYgX19P
QkpDX18KK0BjbGFzcyBOU1BvcFVwQnV0dG9uQ2VsbDsKK0BjbGFzcyBXS1ZpZXc7CisjZWxzZQor
Y2xhc3MgTlNQb3BVcEJ1dHRvbkNlbGw7CitjbGFzcyBXS1ZpZXc7CisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViQ29udGV4dE1l
bnVQcm94eU1hYyA6IHB1YmxpYyBXZWJDb250ZXh0TWVudVByb3h5IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5TWFjPiBjcmVhdGUoV0tWaWV3KiB3
ZWJWaWV3LCBXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYkNvbnRleHRNZW51UHJveHlNYWMod2ViVmlldywgcGFnZSkpOworICAgIH0KKyAg
ICB+V2ViQ29udGV4dE1lbnVQcm94eU1hYygpOworCisgICAgdmlydHVhbCB2b2lkIHNob3dDb250
ZXh0TWVudShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0
TWVudUl0ZW0+Jik7CisgICAgdmlydHVhbCB2b2lkIGhpZGVDb250ZXh0TWVudSgpOworICAgIAor
ICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVt
Jik7CisKK3ByaXZhdGU6CisgICAgV2ViQ29udGV4dE1lbnVQcm94eU1hYyhXS1ZpZXcqLCBXZWJQ
YWdlUHJveHkqKTsKKworICAgIHZvaWQgcG9wdWxhdGUoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRN
ZW51SXRlbT4mKTsKKworICAgIFJldGFpblB0cjxOU1BvcFVwQnV0dG9uQ2VsbD4gbV9wb3B1cDsK
KyAgICBXS1ZpZXcqIG1fd2ViVmlldzsKKyAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViQ29udGV4dE1lbnVQcm94eU1h
Y19oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94
eU1hYy5tbQkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0
TWVudVByb3h5TWFjLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5TWFjLmgiCisKKyNpbmNsdWRlICJQYWdl
Q2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbS5oIgorI2luY2x1ZGUg
IldLVmlldy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW5jbHVkZSA8V2Vi
S2l0U3lzdGVtSW50ZXJmYWNlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW50
ZXJmYWNlIFdlYk1lbnVUYXJnZXQgOiBOU09iamVjdCB7CisgICAgV2ViS2l0OjpXZWJDb250ZXh0
TWVudVByb3h5TWFjKiBfbWVudVByb3h5OworfQorKyAoV2ViTWVudVRhcmdldCopc2hhcmVkTWVu
dVRhcmdldDsKKy0gKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyopbWVudVByb3h5Owor
LSAodm9pZClzZXRNZW51UHJveHk6KFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyopbWVu
dVByb3h5OworLSAodm9pZClmb3J3YXJkQ29udGV4dE1lbnVBY3Rpb246KGlkKXNlbmRlcjsKK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIFdlYk1lbnVUYXJnZXQKKworKyAoV2ViTWVudVRhcmdldCop
c2hhcmVkTWVudVRhcmdldAoreworICAgIHN0YXRpYyBXZWJNZW51VGFyZ2V0KiB0YXJnZXQ7Cisg
ICAgaWYgKCF0YXJnZXQpCisgICAgICAgIHRhcmdldCA9IFtbV2ViTWVudVRhcmdldCBhbGxvY10g
aW5pdF07CisgICAgcmV0dXJuIHRhcmdldDsKK30KKworLSAoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dVByb3h5TWFjKiltZW51UHJveHkKK3sKKyAgICByZXR1cm4gX21lbnVQcm94eTsKK30KKworLSAo
dm9pZClzZXRNZW51UHJveHk6KFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyopbWVudVBy
b3h5Cit7CisgICAgX21lbnVQcm94eSA9IG1lbnVQcm94eTsKK30KKworLSAodm9pZClmb3J3YXJk
Q29udGV4dE1lbnVBY3Rpb246KGlkKXNlbmRlcgoreworICAgIFdlYktpdDo6V2ViQ29udGV4dE1l
bnVJdGVtIGl0ZW0oQWN0aW9uVHlwZSwgc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24+KFtz
ZW5kZXIgdGFnXSksIFtzZW5kZXIgdGl0bGVdLCBbc2VuZGVyIGlzRW5hYmxlZF0sIFtzZW5kZXIg
c3RhdGVdID09IE5TT25TdGF0ZSk7CisgICAgX21lbnVQcm94eS0+Y29udGV4dE1lbnVJdGVtU2Vs
ZWN0ZWQoaXRlbSk7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvbnRl
eHRNZW51UHJveHlNYWM6OldlYkNvbnRleHRNZW51UHJveHlNYWMoV0tWaWV3KiB3ZWJWaWV3LCBX
ZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgOiBtX3dlYlZpZXcod2ViVmlldykKKyAgICAsIG1fcGFn
ZShwYWdlKQoreworfQorCitXZWJDb250ZXh0TWVudVByb3h5TWFjOjp+V2ViQ29udGV4dE1lbnVQ
cm94eU1hYygpCit7CisgICAgaWYgKG1fcG9wdXApCisgICAgICAgIFttX3BvcHVwLmdldCgpIHNl
dENvbnRyb2xWaWV3Om5pbF07Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y29u
dGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtJiBpdGVtKQorewor
ICAgIG1fcGFnZS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaXRlbSk7Cit9CisKK3N0YXRpYyB2
b2lkIHBvcHVsYXRlTlNNZW51KE5TTWVudSogbWVudSwgY29uc3QgVmVjdG9yPFJldGFpblB0cjxO
U01lbnVJdGVtPiA+JiBtZW51SXRlbVZlY3RvcikKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbWVudUl0ZW1WZWN0b3Iuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgTlNJbnRlZ2VyIG9s
ZFN0YXRlID0gW21lbnVJdGVtVmVjdG9yW2ldLmdldCgpIHN0YXRlXTsKKyAgICAgICAgW21lbnUg
YWRkSXRlbTptZW51SXRlbVZlY3RvcltpXS5nZXQoKV07CisgICAgICAgIFttZW51SXRlbVZlY3Rv
cltpXS5nZXQoKSBzZXRTdGF0ZTpvbGRTdGF0ZV07CisgICAgfQorfQorCitzdGF0aWMgVmVjdG9y
PFJldGFpblB0cjxOU01lbnVJdGVtPiA+IG5zTWVudUl0ZW1WZWN0b3IoY29uc3QgVmVjdG9yPFdl
YkNvbnRleHRNZW51SXRlbT4mIGl0ZW1zKQoreworICAgIFZlY3RvcjxSZXRhaW5QdHI8TlNNZW51
SXRlbT4gPiByZXN1bHQ7CisKKyAgICB1bnNpZ25lZCBzaXplID0gaXRlbXMuc2l6ZSgpOworICAg
IHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkoc2l6ZSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNpemU7IGkrKykgeworICAgICAgICBzd2l0Y2ggKGl0ZW1zW2ldLm1fdHlwZSkgeworICAg
ICAgICBjYXNlIEFjdGlvblR5cGU6CisgICAgICAgIGNhc2UgQ2hlY2thYmxlQWN0aW9uVHlwZToK
KyAgICAgICAgeworICAgICAgICAgICAgTlNNZW51SXRlbSogbWVudUl0ZW0gPSBbW05TTWVudUl0
ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6bnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhpdGVtc1tp
XS5tX3RpdGxlKSBhY3Rpb246QHNlbGVjdG9yKGZvcndhcmRDb250ZXh0TWVudUFjdGlvbjopIGtl
eUVxdWl2YWxlbnQ6QCIiXTsKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRUYWc6aXRlbXNbaV0u
bV9hY3Rpb25dOworICAgICAgICAgICAgW21lbnVJdGVtIHNldEVuYWJsZWQ6aXRlbXNbaV0ubV9l
bmFibGVkXTsKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTppdGVtc1tpXS5tX2NoZWNr
ZWQgPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChSZXRhaW5QdHI8TlNNZW51SXRlbT4oQWRvcHROUywg
bWVudUl0ZW0pKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
U2VwYXJhdG9yVHlwZToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoW05TTWVudUl0ZW0gc2Vw
YXJhdG9ySXRlbV0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3VibWVudVR5
cGU6CisgICAgICAgIHsgICAgICAgICAgICAKKyAgICAgICAgICAgIE5TTWVudSogbWVudSA9IFtb
TlNNZW51IGFsbG9jXSBpbml0V2l0aFRpdGxlOm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoaXRl
bXNbaV0ubV90aXRsZSldOworICAgICAgICAgICAgW21lbnUgc2V0QXV0b2VuYWJsZXNJdGVtczpO
T107CisgICAgICAgICAgICBwb3B1bGF0ZU5TTWVudShtZW51LCBuc01lbnVJdGVtVmVjdG9yKGl0
ZW1zW2ldLm1fc3VibWVudSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgTlNNZW51
SXRlbSogbWVudUl0ZW0gPSBbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6bnNTdHJp
bmdGcm9tV2ViQ29yZVN0cmluZyhpdGVtc1tpXS5tX3RpdGxlKSBhY3Rpb246QHNlbGVjdG9yKGZv
cndhcmRDb250ZXh0TWVudUFjdGlvbjopIGtleUVxdWl2YWxlbnQ6QCIiXTsKKyAgICAgICAgICAg
IFttZW51SXRlbSBzZXRFbmFibGVkOml0ZW1zW2ldLm1fZW5hYmxlZF07CisgICAgICAgICAgICBb
bWVudUl0ZW0gc2V0U3VibWVudTptZW51XTsKKyAgICAgICAgICAgIFttZW51IHJlbGVhc2VdOwor
CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFJldGFpblB0cjxOU01lbnVJdGVtPihBZG9wdE5T
LCBtZW51SXRlbSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBXZWJNZW51VGFyZ2V0KiB0YXJnZXQgPSBbV2ViTWVudVRh
cmdldCBzaGFyZWRNZW51VGFyZ2V0XTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6
ZTsgKytpKQorICAgICAgICBbcmVzdWx0W2ldLmdldCgpIHNldFRhcmdldDp0YXJnZXRdOworICAg
IAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6
cG9wdWxhdGUoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbT4mIGl0ZW1zKQoreworICAg
IGlmIChtX3BvcHVwKQorICAgICAgICBbbV9wb3B1cC5nZXQoKSByZW1vdmVBbGxJdGVtc107Cisg
ICAgZWxzZSB7CisgICAgICAgIG1fcG9wdXAuYWRvcHROUyhbW05TUG9wVXBCdXR0b25DZWxsIGFs
bG9jXSBpbml0VGV4dENlbGw6QCIiIHB1bGxzRG93bjpOT10pOworICAgICAgICBbbV9wb3B1cC5n
ZXQoKSBzZXRVc2VzSXRlbUZyb21NZW51Ok5PXTsKKyAgICAgICAgW21fcG9wdXAuZ2V0KCkgc2V0
QXV0b2VuYWJsZXNJdGVtczpOT107CisgICAgfQorCisgICAgTlNNZW51KiBtZW51ID0gW21fcG9w
dXAuZ2V0KCkgbWVudV07CisgICAgcG9wdWxhdGVOU01lbnUobWVudSwgbnNNZW51SXRlbVZlY3Rv
cihpdGVtcykpOworfQorCit2b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OnNob3dDb250ZXh0
TWVudShjb25zdCBJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4
dE1lbnVJdGVtPiYgaXRlbXMpCit7CisgICAgcG9wdWxhdGUoaXRlbXMpOworICAgIFtbV2ViTWVu
dVRhcmdldCBzaGFyZWRNZW51VGFyZ2V0XSBzZXRNZW51UHJveHk6dGhpc107CisgICAgCisgICAg
TlNSZWN0IG1lbnVSZWN0ID0gTlNNYWtlUmVjdChtZW51TG9jYXRpb24ueCgpLCBtZW51TG9jYXRp
b24ueSgpLCAwLCAwKTsKKyAgICAKKyAgICBbbV9wb3B1cC5nZXQoKSBhdHRhY2hQb3BVcFdpdGhG
cmFtZTptZW51UmVjdCBpblZpZXc6bV93ZWJWaWV3XTsKKworICAgIE5TTWVudSogbWVudSA9IFtt
X3BvcHVwLmdldCgpIG1lbnVdOworCisgICAgLy8gVGhlc2UgdmFsdWVzIHdlcmUgYm9ycm93ZWQg
ZnJvbSBBcHBLaXQgdG8gbWF0Y2ggdGhlaXIgcGxhY2VtZW50IG9mIHRoZSBtZW51LgorICAgIE5T
UmVjdCB0aXRsZUZyYW1lID0gW21fcG9wdXAuZ2V0KCkgIHRpdGxlUmVjdEZvckJvdW5kczptZW51
UmVjdF07CisgICAgaWYgKHRpdGxlRnJhbWUuc2l6ZS53aWR0aCA8PSAwIHx8IHRpdGxlRnJhbWUu
c2l6ZS5oZWlnaHQgPD0gMCkKKyAgICAgICAgdGl0bGVGcmFtZSA9IG1lbnVSZWN0OworICAgIGZs
b2F0IHZlcnRPZmZzZXQgPSByb3VuZGYoKE5TTWF4WShtZW51UmVjdCkgLSBOU01heFkodGl0bGVG
cmFtZSkpICsgTlNIZWlnaHQodGl0bGVGcmFtZSkpOworICAgIE5TUG9pbnQgbG9jYXRpb24gPSBO
U01ha2VQb2ludChOU01pblgobWVudVJlY3QpLCBOU01heFkobWVudVJlY3QpIC0gdmVydE9mZnNl
dCk7CisKKyAgICBSZXRhaW5QdHI8TlNWaWV3PiBkdW1teVZpZXcoQWRvcHROUywgW1tOU1ZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6bWVudVJlY3RdKTsKKyAgICBbbV93ZWJWaWV3IGFkZFN1YnZp
ZXc6ZHVtbXlWaWV3LmdldCgpXTsKKyAgICBsb2NhdGlvbiA9IFtkdW1teVZpZXcuZ2V0KCkgY29u
dmVydFBvaW50OmxvY2F0aW9uIGZyb21WaWV3Om1fd2ViVmlld107CisKKyAgICBXS1BvcHVwTWVu
dShtZW51LCBsb2NhdGlvbiwgcm91bmRmKE5TV2lkdGgobWVudVJlY3QpKSwgZHVtbXlWaWV3Lmdl
dCgpLCAtMSwgbmlsKTsKKworICAgIFttX3BvcHVwLmdldCgpIGRpc21pc3NQb3BVcF07CisgICAg
W2R1bW15Vmlldy5nZXQoKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKK30KKwordm9pZCBXZWJDb250
ZXh0TWVudVByb3h5TWFjOjpoaWRlQ29udGV4dE1lbnUoKQoreworICAgIFttX3BvcHVwLmdldCgp
IGRpc21pc3NQb3BVcF07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0
Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQyL1VJUHJvY2Vz
cy93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyNSw2ICs2MjUsMTIgQEAgUGFz
c1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gV2ViVmlldzo6YwogICAgIHJldHVybiBXZWJQb3B1
cE1lbnVQcm94eVdpbjo6Y3JlYXRlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQ
cm94eT4gV2ViVmlldzo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQorewor
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgV2ViVmll
dzo6c2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+LCBib29sIGZhZGVP
dXQpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNz
L3dpbi9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZp
ZXcuaAkocmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZE5vdEhhbmRsZUtleUV2ZW50KGNvbnN0IE5h
dGl2ZVdlYktleWJvYXJkRXZlbnQmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBN
ZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5
Kik7CiAgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5k
aWNhdG9yPiwgYm9vbCBmYWRlT3V0KTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKSW5kZXg6IFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiA3MDk5MCkKKysrIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsOCArMTY0LDE1IEBACiAJCTFDOEUyOTNBMTI3NjFFNUIw
MEJDN0JEMCAvKiBXS0luc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjkzODEyNzYxRTVCMDBCQzdCRDAgLyogV0tJbnNwZWN0b3Iu
Y3BwICovOyB9OwogCQk1MTU3OEI4MzEyMDlFQ0VGMDBBMzdDNEEgLyogV2ViRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1NzhCODIxMjA5RUNF
RjAwQTM3QzRBIC8qIFdlYkRhdGEuaCAqLzsgfTsKIAkJNTE2QTRBNUQxMjBBMkNDRDAwQzA1QjdG
IC8qIFdlYkVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0YgLyogV2ViRXJyb3IuaCAqLzsgfTsKKwkJNTE4
NzFCNUIxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODcxQjU5MTI3Q0I4OUQwMEY3NjIz
MiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi87IH07CisJCTUxODcxQjVDMTI3Q0I4OUQwMEY3NjIz
MiAvKiBXZWJDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51Lmgg
Ki87IH07CiAJCTUxQTdGMkYzMTI1QkY4MjAwMDhBRUIxRCAvKiBMb2dnaW5nLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE3RjJGMjEyNUJGODIwMDA4
QUVCMUQgLyogTG9nZ2luZy5oICovOyB9OwogCQk1MUE3RjJGNTEyNUJGOEQ0MDA4QUVCMUQgLyog
TG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUE3RjJGNDEyNUJGOEQ0MDA4QUVCMUQgLyogTG9nZ2luZy5jcHAgKi87IH07CisJCTUxQUNC
QTE1MTI3OUU4QzMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQ0JBMTMxMjc5RThDMzAwRDIw
M0I5IC8qIFdlYkNvbnRleHRNZW51SXRlbS5jcHAgKi87IH07CisJCTUxQUNCQTE2MTI3OUU4QzMw
MEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUNCQTE0MTI3OUU4QzMwMEQyMDNCOSAvKiBXZWJDb250
ZXh0TWVudUl0ZW0uaCAqLzsgfTsKKwkJNTFBQ0JCODIxMjdBOEJBRDAwRDIwM0I5IC8qIFdlYkNv
bnRleHRNZW51UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQUNCQjgxMTI3QThCQUQwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5Lmgg
Ki87IH07CisJCTUxQUNCQkEwMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5
TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFD
QkI5RTEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oICovOyB9Owor
CQk1MUFDQkJBMTEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUNCQjlGMTI3
QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1tICovOyB9OwogCQk1MUIz
MDA1MDEyNTI5RDBFMDAwQjVDQTAgLyogV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMzAwNEUxMjUyOUQwRTAw
MEI1Q0EwIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCAqLzsgfTsKIAkJNTFCMzAwNTExMjUy
OUQwRTAwMEI1Q0EwIC8qIFdlYlBhZ2VQcm94eUNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjMwMDRGMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJQ
YWdlUHJveHlDRi5jcHAgKi87IH07CiAJCTZEOEE5MUE2MTFGMEVGRDEwMEREMDFGRSAvKiBjb20u
YXBwbGUuV2ViUHJvY2Vzcy5zYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkQ4QTkxQTUxMUYwRUZEMTAwREQwMUZFIC8qIGNvbS5hcHBsZS5XZWJQcm9j
ZXNzLnNiICovOyB9OwpAQCAtNjcwLDggKzY3NywxNSBAQAogCQkzMkRCQ0Y1RTAzNzBBREVFMDBD
OTE3ODMgLyogV2ViS2l0MlByZWZpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJLaXQyUHJlZml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNTc4Qjgy
MTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2QTRBNUIx
MjBBMkNDRDAwQzA1QjdGIC8qIFdlYkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxODcxQjU5
MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE3RjJGMjEyNUJGODIwMDA4QUVCMUQgLyogTG9n
Z2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2dnaW5nLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQTdGMkY0MTI1QkY4RDQwMDhBRUIxRCAvKiBMb2dn
aW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvZ2dpbmcuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUFDQkExMzEyNzlFOEMzMDBEMjAzQjkg
LyogV2ViQ29udGV4dE1lbnVJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkNvbnRleHRNZW51SXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxQUNCQTE0MTI3OUU4QzMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dE1lbnVJdGVtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQUNCQjgxMTI3QThCQUQwMEQyMDNCOSAvKiBXZWJD
b250ZXh0TWVudVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNv
bnRleHRNZW51UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQ0JCOUUx
MjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MUFDQkI5RjEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4
dE1lbnVQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYkNvbnRleHRNZW51UHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxQjMwMDRFMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJCYWNrRm9yd2FyZExpc3RDRi5j
cHA7IHBhdGggPSBjZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxQjMwMDRGMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJQYWdlUHJveHlDRi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJQYWdlUHJveHlDRi5j
cHA7IHBhdGggPSBjZi9XZWJQYWdlUHJveHlDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVEQUQ3Mjk0MTE2RkY3MEIwMEVFNTM5NiAvKiBXZWJQcm9jZXNzLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdlYlByb2Nlc3MueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjc0LDEyICsxMjg4LDE0IEBACiAJCQkJQkNCMEFF
RTcxMjJGNTNFMzAwQjEzNDFFIC8qIE11dGFibGVEaWN0aW9uYXJ5LmggKi8sCiAJCQkJQzAyQkZG
MTUxMjUxNEZEODAwOUNDQkVBIC8qIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCAqLywKIAkJCQlC
Q0M1NzE2MTExNUFEQjQyMDAxQ0NBRjkgLyogTm90SW1wbGVtZW50ZWQuaCAqLywKKwkJCQlCQ0JE
M0MzQTEyNUJGQTdBMDBEMkMyOUYgLyogU3RyaW5nUGFpclZlY3Rvci5oICovLAogCQkJCUJDQjBC
MERGMTIzMDVBQjEwMEIxMzQxRSAvKiBVc2VyTWVzc2FnZUNvZGVycy5oICovLAogCQkJCTFBMEYy
OUM5MTIwQjM3MTYwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1RhYmxlLmNwcCAqLywKIAkJCQkxQTBG
MjlDQTEyMEIzNzE2MDA1M0QxQjkgLyogVmlzaXRlZExpbmtUYWJsZS5oICovLAogCQkJCUJDMURE
N0IxMTE0REMzOTYwMDVBREFGMyAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCAqLywKIAkJCQlC
Q0Y1MDcyNjEyNDMyOUFBMDA1OTU1QUUgLyogV2ViQ2VydGlmaWNhdGVJbmZvLmggKi8sCi0JCQkJ
QkNCRDNDM0ExMjVCRkE3QTAwRDJDMjlGIC8qIFN0cmluZ1BhaXJWZWN0b3IuaCAqLywKKwkJCQk1
MUFDQkExMzEyNzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmNwcCAqLywKKwkJ
CQk1MUFDQkExNDEyNzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggKi8sCiAJ
CQkJNTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8qIFdlYkRhdGEuaCAqLywKIAkJCQlCQzU3NTYx
MjEyNkUwMTM4MDA2RjBGMTIgLyogV2ViRXJyb3IuY3BwICovLAogCQkJCTUxNkE0QTVCMTIwQTJD
Q0QwMEMwNUI3RiAvKiBXZWJFcnJvci5oICovLApAQCAtMTQ1MSw2ICsxNDY3LDggQEAKIAkJQkMw
MzJENUUxMEY0MzcyQjAwNThDMTVBIC8qIFdlYlBhZ2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJD
b250ZXh0TWVudS5jcHAgKi8sCisJCQkJNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNv
bnRleHRNZW51LmggKi8sCiAJCQkJQkM5NjNENkMxMTNERDE5NTAwNTc0QkUyIC8qIG1hYyAqLywK
IAkJCQlCQzVGN0JCMjExODIzNzZDMDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVh
LmNwcCAqLywKIAkJCQlCQzVGN0JCMzExODIzNzZDMDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0ZURy
YXdpbmdBcmVhLmggKi8sCkBAIC0xNTA4LDYgKzE1MjYsNyBAQAogCQkJCUJDNjQ2QkY2MTFERDM3
N0IwMDY0NTVCMCAvKiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggKi8sCiAJCQkJQkNCOUUyNDIx
MTIwREFDQTAwQTEzN0UwIC8qIFdlYkNvbnRleHQuY3BwICovLAogCQkJCUJDQjlFMjQxMTEyMERB
Q0EwMEExMzdFMCAvKiBXZWJDb250ZXh0LmggKi8sCisJCQkJNTFBQ0JCODExMjdBOEJBRDAwRDIw
M0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHkuaCAqLywKIAkJCQlCQ0RFMDU5QTExQ0RBOEFFMDBF
NDFBRjEgLyogV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCAqLywKIAkJCQlCQ0RF
MDU5OTExQ0RBOEFFMDBFNDFBRjEgLyogV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmgg
Ki8sCiAJCQkJQkNCMEIwREIxMjMwNUEyNTAwQjEzNDFFIC8qIFdlYkNvbnRleHRVc2VyTWVzc2Fn
ZUNvZGVycy5oICovLApAQCAtMTg2MSw2ICsxODgwLDggQEAKIAkJCQlCQzI2NTFGNTExODI1RUY4
MDAyNDNFMTIgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlNYWMubW0gKi8sCiAJCQkJ
MEY1MjY1QkIxMUREMzc4NjAwMDZEMzNDIC8qIExheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eU1h
Yy5tbSAqLywKIAkJCQkxQTFDNjQ4NjExRjQxNUI3MDA1NTNDMTkgLyogV2ViQ29udGV4dE1hYy5t
bSAqLywKKwkJCQk1MUFDQkI5RTEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94
eU1hYy5oICovLAorCQkJCTUxQUNCQjlGMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVu
dVByb3h5TWFjLm1tICovLAogCQkJCUJDNTc1MDk1MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQb3B1
cE1lbnVQcm94eU1hYy5oICovLAogCQkJCUJDNTc1MDk2MTI2OEYzQzYwMDZGMEYxMiAvKiBXZWJQ
b3B1cE1lbnVQcm94eU1hYy5tbSAqLywKIAkJCSk7CkBAIC0yMjExLDcgKzIyMzIsMTEgQEAKIAkJ
CQk5MzVFRUJBNDEyNzc2MUQ2MDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExp
c3RJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTYxNjE1MDEyNzc5OEI1MDAzQUNEODYgLyog
RG93bmxvYWRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTYxNjFENDEyNzg5ODFDMDAz
QUNEODYgLyogRG93bmxvYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQUNCQTE2MTI3OUU4QzMw
MEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQUNC
QjgyMTI3QThCQUQwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5LmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MUFDQkJBMDEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1h
Yy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExMTlBOTUxMjdCNzk2MjAwQTlFQ0IxIC8qIE1lc3Nh
Z2VTZW5kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODcxQjVDMTI3Q0I4OUQwMEY3NjIzMiAv
KiBXZWJDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTM0LDEyICsyNTU5LDE1IEBA
CiAJCQkJMUE2MTYxNEYxMjc3OThCNTAwM0FDRDg2IC8qIERvd25sb2FkTWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQTYxNjFENTEyNzg5ODFDMDAzQUNEODYgLyogRG93bmxvYWQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2MTYzOTYxMjc4OUIyRjAwM0FDRDg2IC8qIERvd25sb2Fk
TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTFBQ0JBMTUxMjc5RThDMzAwRDIwM0I5IC8qIFdl
YkNvbnRleHRNZW51SXRlbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUFDQkJBMTEyN0E4RjJD
MDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUMwMzM3REFFMTI3QTI0RkUwMDhGRjRGNCAvKiBXZWJFdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDMDMzN0RCMDEyN0EyOEQwMDA4RkY0RjQgLyogV2ViTW91c2VFdmVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDMDMzN0REMTEyN0EyOTgwMDA4RkY0RjQgLyogV2ViV2hlZWxFdmVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDMzN0REMzEyN0EyQTBFMDA4RkY0RjQgLyogV2ViS2V5
Ym9hcmRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDMzN0REODEyN0E1MUI2MDA4RkY0
RjQgLyogV2ViVG91Y2hFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDMzN0RERDEyN0E1
MjFDMDA4RkY0RjQgLyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTUxODcxQjVCMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiA3MDk5MCkKKysrIFdlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgogI2luY2x1ZGUg
IkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0
TWVudS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldl
YkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAgLTUyNSw2ICs1
MjYsMTMgQEAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IFdlYgogICAgIHJl
dHVybiBXZWJTZWFyY2hQb3B1cE1lbnU6OmNyZWF0ZShtX3BhZ2UsIGNsaWVudCk7CiB9CiAKKyNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzaG93Q29udGV4
dE1lbnUoKQoreworICAgIG1fcGFnZS0+Y29udGV4dE1lbnUoKS0+c2hvdygpOworfQorI2VuZGlm
CisKIFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVI
VE1MUGFyc2VyUXVpcmtzKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAko
cmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAsMTAgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1
cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFdl
YkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgpOworI2VuZGlmCisKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFJvb3RH
cmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCk7
CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAJKHJldmlzaW9uIDcwOTkwKQorKysgV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsNiArMjUsOCBAQAogCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVDbGll
bnQuaCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KKwogI2RlZmluZSBESVNB
QkxFX05PVF9JTVBMRU1FTlRFRF9XQVJOSU5HUyAxCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKIApAQCAtMzcsMTAgKzM5LDEzIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNvbnRl
eHRNZW51RGUKICAgICBkZWxldGUgdGhpczsKIH0KIAotUGxhdGZvcm1NZW51RGVzY3JpcHRpb24g
V2ViQ29udGV4dE1lbnVDbGllbnQ6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKENvbnRl
eHRNZW51KikKK1BsYXRmb3JtTWVudURlc2NyaXB0aW9uIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpn
ZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhDb250ZXh0TWVudSogbWVudSkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIC8vIEZJWE1FOiAgVGhlIGVtYmVk
ZGVkIGFwcCBuZWVkcyBhIGNoYW5jZSB0byBjdXN0b21pemUgdGhlIGNvbnRleHQgbWVudSwgYW5k
IHRoYXQgd2lsbCBwcm9iYWJseSBoYXBwZW4KKyAgICAvLyB2aWEgYW4gaW5qZWN0ZWQgYnVuZGxl
LiA8cmRhcjovL3Byb2JsZW0vODYxMzcyNz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00ODcyMCBjb3ZlciB0aGlzIHRhc2suCisKKyAgICBBU1NFUlQobWVudSk7
CisgICAgcmV0dXJuIG1lbnUtPnBsYXRmb3JtRGVzY3JpcHRpb24oKTsKIH0KIAogdm9pZCBXZWJD
b250ZXh0TWVudUNsaWVudDo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVt
KiwgY29uc3QgQ29udGV4dE1lbnUqKQpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29udGV4dE1lbnUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkNvbnRleHRNZW51LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgIldlYkNvbnRleHRNZW51LmgiCisKKyNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5j
bHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4
dE1lbnVDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29udGV4dE1lbnU6
OldlYkNvbnRleHRNZW51KFdlYlBhZ2UqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30K
KworV2ViQ29udGV4dE1lbnU6On5XZWJDb250ZXh0TWVudSgpCit7Cit9CisKK3ZvaWQgV2ViQ29u
dGV4dE1lbnU6OnNob3coKQoreworICAgIFdlYkNvcmU6OkNvbnRleHRNZW51KiBtZW51ID0gbV9w
YWdlLT5jb3JlUGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y29udGV4dE1lbnUoKTsK
KyAgICBpZiAoIW1lbnUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBWZWN0b3I8V2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtPiBjb3JlSXRlbXMgPSBXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1W
ZWN0b3IobWVudS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgCisgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlNob3dDb250ZXh0TWVudShtZW51LT5oaXRUZXN0UmVzdWx0KCkucG9pbnQoKSwga2l0SXRlbXMo
Y29yZUl0ZW1zLCBtZW51KSksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYkNvbnRl
eHRNZW51OjppdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtJiBpdGVtKQorewor
ICAgIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSBjb3JlSXRlbShXZWJDb3JlOjpBY3Rpb25UeXBl
LCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbj4oaXRlbS5tX2FjdGlvbiks
IGl0ZW0ubV90aXRsZSk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5jb250ZXh0TWVudUNvbnRy
b2xsZXIoKS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoJmNvcmVJdGVtKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250
ZXh0TWVudS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
bnRleHRNZW51LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJDb250ZXh0TWVudS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5k
ZWYgV2ViQ29udGV4dE1lbnVfaAorI2RlZmluZSBXZWJDb250ZXh0TWVudV9oCisKKyNpbmNsdWRl
ICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYlBhZ2U7CisKK2NsYXNzIFdlYkNvbnRleHRNZW51IDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
Q29udGV4dE1lbnU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZXh0
TWVudT4gY3JlYXRlKFdlYlBhZ2UqIHBhZ2UpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb250
ZXh0TWVudShwYWdlKSk7IH0KKyAgICB+V2ViQ29udGV4dE1lbnUoKTsKKworICAgIHZvaWQgc2hv
dygpOworICAgIHZvaWQgaXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbSYpOwor
Citwcml2YXRlOgorICAgIFdlYkNvbnRleHRNZW51KFdlYlBhZ2UqKTsKKyAgICAKKyAgICBXZWJQ
YWdlKiBtX3BhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdl
YlBvcHVwTWVudV9oCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
cmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlBsdWdpblZpZXcu
aCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIgogI2luY2x1ZGUgIldlYkNo
cm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51LmgiCiAjaW5jbHVkZSAiV2Vi
Q29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlICJXZWJEcmFnQ2xpZW50LmgiCkBAIC01Myw2ICs1NCw4IEBACiAjaW5jbHVkZSAi
V2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlS2luZHMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nocm9t
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzQ29udHJv
bGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KQEAgLTQ4MCw2ICs0ODMsMTMgQEAg
dm9pZCBXZWJQYWdlOjpwYWdlRGlkU2Nyb2xsKCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlBhZ2VEaWRTY3JvbGwoKSk7CiB9CiAKK1dlYkNvbnRleHRNZW51KiBXZWJQYWdlOjpj
b250ZXh0TWVudSgpCit7CisgICAgaWYgKCFtX2NvbnRleHRNZW51KQorICAgICAgICBtX2NvbnRl
eHRNZW51ID0gV2ViQ29udGV4dE1lbnU6OmNyZWF0ZSh0aGlzKTsKKyAgICByZXR1cm4gbV9jb250
ZXh0TWVudS5nZXQoKTsKK30KKwogLy8gRXZlbnRzIAogCiBzdGF0aWMgY29uc3QgV2ViRXZlbnQq
IGdfY3VycmVudEV2ZW50ID0gMDsKQEAgLTUxOSw3ICs1MjksMjAgQEAgc3RhdGljIGJvb2wgaGFu
ZGxlTW91c2VFdmVudChjb25zdCBXZWJNbwogCiAgICAgc3dpdGNoIChwbGF0Zm9ybU1vdXNlRXZl
bnQuZXZlbnRUeXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpNb3VzZUV2ZW50UHJlc3Nl
ZDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNl
UHJlc3NFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQpOworICAgICAgICB7CisgICAgICAgICAgICBp
ZiAocGxhdGZvcm1Nb3VzZUV2ZW50LmJ1dHRvbigpID09IFdlYkNvcmU6OlJpZ2h0QnV0dG9uKQor
ICAgICAgICAgICAgICAgIHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jbGVhckNvbnRl
eHRNZW51KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJvb2wgaGFuZGxlZCA9IGZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VQcmVzc0V2ZW50KHBsYXRmb3JtTW91c2VFdmVu
dCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChwbGF0Zm9ybU1vdXNlRXZlbnQuYnV0
dG9uKCkgPT0gV2ViQ29yZTo6UmlnaHRCdXR0b24pIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVk
ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZW5kQ29udGV4dE1lbnVFdmVudChwbGF0Zm9ybU1v
dXNlRXZlbnQpOworICAgICAgICAgICAgICAgIGlmIChoYW5kbGVkKQorICAgICAgICAgICAgICAg
ICAgICBwYWdlLT5jaHJvbWUoKS0+c2hvd0NvbnRleHRNZW51KCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBoYW5kbGVkOworICAgICAgICB9CiAgICAgICAgIGNhc2UgV2Vi
Q29yZTo6TW91c2VFdmVudFJlbGVhc2VkOgogICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50KTsK
ICAgICAgICAgY2FzZSBXZWJDb3JlOjpNb3VzZUV2ZW50TW92ZWQ6CkBAIC04ODMsNiArOTA2LDEy
IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckEKICAgICBtX2FjdGl2
ZVBvcHVwTWVudSA9IDA7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6ZGlkU2VsZWN0SXRlbUZyb21BY3Rp
dmVDb250ZXh0TWVudShjb25zdCBXZWJDb250ZXh0TWVudUl0ZW0mIGl0ZW0pCit7CisgICAgQVNT
RVJUKG1fY29udGV4dE1lbnUpOworICAgIG1fY29udGV4dE1lbnUtPml0ZW1TZWxlY3RlZChpdGVt
KTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykKIHZvaWQgV2ViUGFnZTo6YWRkUGx1Z2luVmlldyhQ
bHVnaW5WaWV3KiBwbHVnaW5WaWV3KQogewpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAkocmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDggQEAgY2xhc3MgRHJhd2luZ0Fy
ZWE7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdDsKIGNsYXNzIFBhZ2VPdmVy
bGF5OwogY2xhc3MgUGx1Z2luVmlldzsKK2NsYXNzIFdlYkNvbnRleHRNZW51OworY2xhc3MgV2Vi
Q29udGV4dE1lbnVJdGVtOwogY2xhc3MgV2ViRXZlbnQ7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNz
IFdlYkluc3BlY3RvcjsKQEAgLTE4Niw2ICsxODgsOCBAQCBwdWJsaWM6CiAgICAgRmluZENvbnRy
b2xsZXImIGZpbmRDb250cm9sbGVyKCkgeyByZXR1cm4gbV9maW5kQ29udHJvbGxlcjsgfQogCiAg
ICAgdm9pZCBwYWdlRGlkU2Nyb2xsKCk7CisgICAgCisgICAgV2ViQ29udGV4dE1lbnUqIGNvbnRl
eHRNZW51KCk7CiAKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKQEAgLTI1Miw2ICsyNTYsMTAgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVudShp
bnQzMl90IG5ld0luZGV4KTsKIAorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIHZvaWQg
ZGlkU2VsZWN0SXRlbUZyb21BY3RpdmVDb250ZXh0TWVudShjb25zdCBXZWJDb250ZXh0TWVudUl0
ZW0mKTsKKyNlbmRpZgorCiAgICAgT3duUHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFnZTsKICAgICBS
ZWZQdHI8V2ViRnJhbWU+IG1fbWFpbkZyYW1lOwogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdD4gbV9iYWNrRm9yd2FyZExpc3Q7CkBAIC0yOTQsNiArMzAyLDggQEAgcHJp
dmF0ZToKIAogICAgIFJlZlB0cjxXZWJQb3B1cE1lbnU+IG1fYWN0aXZlUG9wdXBNZW51OwogCisg
ICAgUmVmUHRyPFdlYkNvbnRleHRNZW51PiBtX2NvbnRleHRNZW51OworCiAgICAgdWludDY0X3Qg
bV9wYWdlSUQ7CiB9OwogCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDcwOTkwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgs
OSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKIAogICAgICMgUG9wdXAgbWVudS4KICAgICBEaWRD
aGFuZ2VTZWxlY3RlZEluZGV4Rm9yQWN0aXZlUG9wdXBNZW51KGludDMyX3QgbmV3SW5kZXgpOwor
ICAgIAorICAgICMgQ29udGV4dCBtZW51LgorICAgIERpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29u
dGV4dE1lbnUoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW0gbWVudUl0ZW0pOwogCiAgICAgU2V0
V2luZG93UmVzaXplclNpemUoV2ViQ29yZTo6SW50U2l6ZSBpbnRlcnNlY3RzVmlldykKIApJbmRl
eDogV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi93aW4v
V2ViS2l0Mi52Y3Byb2oJKHJldmlzaW9uIDcwOTkwKQorKysgV2ViS2l0Mi93aW4vV2ViS2l0Mi52
Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ4OSw2ICs0ODksMTQgQEAKIAkJCQk+DQogCQkJPC9G
aWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYkNvbnRleHRN
ZW51SXRlbS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxTaGFyZWRcV2ViQ29udGV4dE1lbnVJdGVtLmgiDQorCQkJCT4NCisJCQk8L0Zp
bGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMTE4OCw2ICsxMTk2LDE0IEBA
CiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxXZWJQcm9jZXNzXFdlYlBhZ2VcV2ViQ29udGV4dE1lbnUuY3BwIg0KKwkJCQkJPg0KKwkJCQk8
L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2Vi
UGFnZVxXZWJDb250ZXh0TWVudS5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxl
DQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2ViUGFnZVxXZWJFZGl0Q29tbWFu
ZC5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkBAIC0xNjg1LDYgKzE3MDEsMTAgQEAKIAkJ
CQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9j
ZXNzXFdlYkNvbnRleHRNZW51UHJveHkuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xXZWJDb250ZXh0VXNlck1lc3NhZ2VD
b2RlcnMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDcwOTkwKQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDEwLTEwLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNzY2MDU0Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODY5OQorICAgICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIu
CisKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpD
aHJvbWVDbGllbnRJbXBsOjpzaG93Q29udGV4dE1lbnUpOgorCiAyMDEwLTEwLTI5ICBEYW5pZWwg
QmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KIAogICAgICAgICBObyByZXZpZXcsIHJvbGxpbmcgb3V0
IDcwOTcxLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJKHJldmlz
aW9uIDcwOTkwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1
cE1lbnVDbGllbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2Vh
cmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xp
ZW50KikgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2aXJ0dWFsIHZv
aWQgc2hvd0NvbnRleHRNZW51KCkgeyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIGdl
dFBvcHVwTWVudUluZm8oV2ViQ29yZTo6UG9wdXBDb250YWluZXIqLCBXZWJQb3B1cE1lbnVJbmZv
Kik7CiAKSW5kZXg6IFdlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9l
ZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MDk5MCkKKysrIFdlYktpdC9lZmwvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTAtMzAgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Njk5CisgICAgICAgIENvbnRleHQgbWVudSBzdXBw
b3J0IGZvciBXZWJLaXQgMi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpzaG93Q29udGV4dE1l
bnUpOgorCiAyMDEwLTEwLTI5ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KIAogICAg
ICAgICBObyByZXZpZXcsIHJvbGxpbmcgb3V0IDcwOTcxLgpJbmRleDogV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCShyZXZpc2lvbiA3MDk5MCkKKysrIFdlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExNSw2ICsxMTUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKik7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShDT05URVhUX01FTlVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7
IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NS
ZWZQdHI8RmlsZUNob29zZXI+KTsKICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUNob29zZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQg
Zm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKTsKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MDk5MCkK
KysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMTAtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83
NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Njk5
CisgICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQgMi4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnQ6OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTAtMTAtMzAgIFhhbiBMb3BleiAgPHhs
b3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4K
SW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAkocmV2
aXNpb24gNzA5OTApCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3Bh
Y2VOZWVkZWQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOwogI2VuZGlmCisjaWYgRU5BQkxF
KENPTlRFWFRfTUVOVVMpCisgICAgICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7
IH0KKyNlbmRpZgogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6OkZy
YW1lKiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4pOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBXZWJD
b3JlOjpGaWxlQ2hvb3NlciopOwogCkluZGV4OiBXZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9oYWlrdS9DaGFuZ2VMb2cJKHJldmlzaW9uIDcwOTkwKQorKysgV2Vi
S2l0L2hhaWt1L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEw
LTEwLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY2MDU0
Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODY5OQorICAg
ICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50SGFpa3U6OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTAtMTAtMjkgIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCkluZGV4OiBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
SGFpa3UuaAkocmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50SGFpa3UuaAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNo
ZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVk
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKik7CiAjZW5kaWYKKyNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICAgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0
TWVudSgpIHsgfQorI2VuZGlmCiAKICAgICAgICAgLy8gVGhpcyBpcyBhbiBhc3luY2hyb25vdXMg
Y2FsbC4gVGhlIENocm9tZUNsaWVudCBjYW4gZGlzcGxheSBVSSBhc2tpbmcgdGhlIHVzZXIgZm9y
IHBlcm1pc3Npb24KICAgICAgICAgLy8gdG8gdXNlIEdlb2xvY29jYXRpb24uCkluZGV4OiBXZWJL
aXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2
aXNpb24gNzA5OTApCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDEwLTEwLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNzY2MDU0Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODY5OQorICAgICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNocm9tZUNsaWVudDo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxMC0xMC0yOSAgRGFuaWVs
IEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+CiAKICAgICAgICAgTm8gcmV2aWV3LCByb2xsaW5nIG91
dCA3MDk3MS4KSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAkocmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNiArMTc4LDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVu
dShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29y
ZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
KyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9CisjZW5kaWYKIHByaXZhdGU6
CiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogfTsKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNzA5OTApCisrKyBX
ZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAt
MTAtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjYwNTQ3
PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Njk5CisgICAg
ICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQgMi4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRRdDo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxMC0xMC0zMCAgQW5kcmVhcyBLbGluZyAgPGts
aW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KSW5k
ZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCShyZXZpc2lvbiA3
MDk5MCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzQsNiArMTM0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVk
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEoU2VjdXJpdHlPcmlnaW4qKTsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQor
ICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0KKyNlbmRpZgogCiAjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCiAgICAgICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uUHJlc2VudGVy
KiBub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdDsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA3MDk5MCkK
KysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMTAtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83
NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Njk5
CisgICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQgMi4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ2hyb21lQ2xp
ZW50OjpzaG93Q29udGV4dE1lbnUpOgorCiAyMDEwLTEwLTI5ICBEYW5pZWwgQmF0ZXMgIDxkYmF0
ZXNAcmltLmNvbT4KIAogICAgICAgICBObyByZXZpZXcsIHJvbGxpbmcgb3V0IDcwOTcxLgpJbmRl
eDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lv
biA3MDk5MCkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luKik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIHZpcnR1
YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lk
IHBvcHVsYXRlVmlzaXRlZExpbmtzKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDdXN0b21T
Y3JvbGxiYXIoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgV2ViQ29yZTo6U2Nyb2xsYmFyQ29udHJvbFNpemUsIApJbmRleDogV2ViS2l0L3d4L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MDk5
MCkKKysrIFdlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxMC0xMC0zMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzc2NjA1NDc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg2
OTkKKyAgICAgICAgQ29udGV4dCBtZW51IHN1cHBvcnQgZm9yIFdlYktpdCAyLgorCisgICAgICAg
ICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50V3g6OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTAtMTAtMjkgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCklu
ZGV4OiBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgJKHJldmlzaW9uIDcw
OTkwKQorKysgV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI5LDYgKzEyOSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJl
YWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qKTsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgdmlydHVhbCB2b2lkIHNob3dDb250
ZXh0TWVudSgpIHsgfQorI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZy
YW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VJ
Y29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlQ2hvb3NlciopOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72474</attachid>
            <date>2010-10-31 13:24:21 -0700</date>
            <delta_ts>2010-11-01 09:16:06 -0700</delta_ts>
            <desc>v5 - More Qt build fixing</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>71264</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDk5MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMTAtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ4Njk5CisgICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQg
Mi4KKworICAgICAgICBBZGQgYSAic2hvd0NvbnRleHRNZW51IiBjYWxsIHRvIENocm9tZS9DaHJv
bWVDbGllbnQ6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgICogcGFn
ZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzaG93Q29udGV4dE1lbnUp
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQu
aDoKKworICAgICAgICBBZGQgYSAicGxhdGZvcm0gZGVzY3JpcHRpb24gdG8gQ29udGV4dE1lbnVJ
dGVtIiBjcmVhdG9yLCB3aWxsIGJlIG5lZWRlZCBieSBzb21lIFdLMiBwb3J0czoKKyAgICAgICAg
KiBwbGF0Zm9ybS9Db250ZXh0TWVudS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Db250ZXh0
TWVudU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVZlY3Rvcik6IElt
cGxlbWVudCB0aGUgTWFjIHZlcnNpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ29udGV4
dE1lbnVJdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtOjpjaGVj
a2VkKTogSW1wbGVtZW50IHRoZSBNYWMgdmVyc2lvbiAtIHdpbGwgYmUgbmVlZGVkIGJ5IFdLMi4K
KwogMjAxMC0xMC0zMCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9u
IDcwOTkwKQorKysgV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTIy
NSw5ICsxMjI1LDIyIEBAIF9fWk5LN1dlYkNvcmUxOFJlbmRlckxheWVyQmFja2luZzIwY29tcG8K
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIF9fWk43V2ViQ29yZTExQ29udGV4dE1lbnUyMnNl
dFBsYXRmb3JtRGVzY3JpcHRpb25FUDE0TlNNdXRhYmxlQXJyYXkKIF9fWk43V2ViQ29yZTEyRXZl
bnRIYW5kbGVyMjBzZW5kQ29udGV4dE1lbnVFdmVudEVQN05TRXZlbnQKK19fWk43V2ViQ29yZTEy
RXZlbnRIYW5kbGVyMjBzZW5kQ29udGV4dE1lbnVFdmVudEVSS05TXzE4UGxhdGZvcm1Nb3VzZUV2
ZW50RQogX19aTjdXZWJDb3JlMTVDb250ZXh0TWVudUl0ZW0yNnJlbGVhc2VQbGF0Zm9ybURlc2Ny
aXB0aW9uRXYKK19fWk43V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtQzFFTlNfMTlDb250ZXh0TWVu
dUl0ZW1UeXBlRU5TXzE3Q29udGV4dE1lbnVBY3Rpb25FUktOM1dURjZTdHJpbmdFUE5TXzExQ29u
dGV4dE1lbnVFCitfX1pON1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbUQxRXYKIF9fWk43V2ViQ29y
ZTIxQ29udGV4dE1lbnVDb250cm9sbGVyMTZjbGVhckNvbnRleHRNZW51RXYKK19fWk43V2ViQ29y
ZTIxQ29udGV4dE1lbnVDb250cm9sbGVyMjNjb250ZXh0TWVudUl0ZW1TZWxlY3RlZEVQTlNfMTVD
b250ZXh0TWVudUl0ZW1FCitfX1pON1dlYkNvcmUyMWNvbnRleHRNZW51SXRlbVZlY3RvckVQMTRO
U011dGFibGVBcnJheQorX19aTjdXZWJDb3JlNkNocm9tZTE1c2hvd0NvbnRleHRNZW51RXYKIF9f
Wk5LN1dlYkNvcmUxMUNvbnRleHRNZW51MTlwbGF0Zm9ybURlc2NyaXB0aW9uRXYKK19fWk5LN1dl
YkNvcmUxMUNvbnRleHRNZW51MjFjaGVja09yRW5hYmxlSWZOZWVkZWRFUk5TXzE1Q29udGV4dE1l
bnVJdGVtRQorX19aTks3V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtMTVwbGF0Zm9ybVN1Yk1lbnVF
dgorX19aTks3V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtNHR5cGVFdgorX19aTks3V2ViQ29yZTE1
Q29udGV4dE1lbnVJdGVtNXRpdGxlRXYKK19fWk5LN1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTZh
Y3Rpb25FdgorX19aTks3V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtN2NoZWNrZWRFdgorX19aTks3
V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtN2VuYWJsZWRFdgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
REFTSEJPQVJEX1NVUFBPUlQpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gNzA5
OTApCisrKyBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTM5LDYgKzEzOSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBvcHVwTWVu
dT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0IHsgcmV0dXJuIGFkb3B0
UmVmKG5ldyBFbXB0eVBvcHVwTWVudSgpKTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTZWFy
Y2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25z
dCB7IHJldHVybiBhZG9wdFJlZihuZXcgRW1wdHlTZWFyY2hQb3B1cE1lbnUoKSk7IH0KIAorI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUo
KSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHNldFN0YXR1c2JhclRleHQoY29uc3Qg
U3RyaW5nJikgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgdGFic1RvTGlua3MoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDcwOTkwKQorKysgV2ViQ29yZS9w
YWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMiw0ICs1MDIsMTEgQEAgUGFzc1Jl
ZlB0cjxTZWFyY2hQb3B1cE1lbnU+IENocm9tZTo6Y3JlYQogICAgIHJldHVybiBtX2NsaWVudC0+
Y3JlYXRlU2VhcmNoUG9wdXBNZW51KGNsaWVudCk7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKK3ZvaWQgQ2hyb21lOjpzaG93Q29udGV4dE1lbnUoKQoreworICAgIG1fY2xpZW50LT5z
aG93Q29udGV4dE1lbnUoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0No
cm9tZS5oCShyZXZpc2lvbiA3MDk5MCkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU1LDYgKzE1NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFBhc3NSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50Kikg
Y29uc3Q7CiAgICAgICAgIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQ
b3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKKyAgICAgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoKTsKKyNlbmRpZgorCiAgICAgcHJp
dmF0ZToKICAgICAgICAgUGFnZSogbV9wYWdlOwogICAgICAgICBDaHJvbWVDbGllbnQqIG1fY2xp
ZW50OwpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNzA5OTApCisrKyBXZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw2ICsyNjksMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UG9wdXBNZW51PiBj
cmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3QgPSAwOwogICAgICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9w
dXBNZW51Q2xpZW50KikgY29uc3QgPSAwOwogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSA9IDA7CisjZW5kaWYKKwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oQWNjZXNzaWJp
bGl0eU9iamVjdCosIEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uKSB7IH0KIAogICAgIHBy
b3RlY3RlZDoKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmgJKHJldmlzaW9uIDcwOTkwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5
MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgIH07CiAKK1ZlY3RvcjxDb250
ZXh0TWVudUl0ZW0+IGNvbnRleHRNZW51SXRlbVZlY3RvcihQbGF0Zm9ybU1lbnVEZXNjcmlwdGlv
biBtZW51KTsKKwogfQogCiAjZW5kaWYgLy8gQ29udGV4dE1lbnVfaApJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvQ29udGV4dE1lbnVJdGVtTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vbWFjL0NvbnRleHRNZW51SXRlbU1hYy5tbQkocmV2aXNpb24gNzA5OTApCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudUl0ZW1NYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTE1NCw2ICsxNTQsMTEgQEAgYm9vbCBDb250ZXh0TWVudUl0ZW06OmVuYWJsZWQoKSBjb25z
dAogICAgIHJldHVybiBbbV9wbGF0Zm9ybURlc2NyaXB0aW9uLmdldCgpIGlzRW5hYmxlZF07CiB9
CiAKK2Jvb2wgQ29udGV4dE1lbnVJdGVtOjpjaGVja2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
W21fcGxhdGZvcm1EZXNjcmlwdGlvbi5nZXQoKSBzdGF0ZV0gPT0gTlNPblN0YXRlOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0NvbnRleHRNZW51TWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0NvbnRleHRNZW51TWFjLm1tCShyZXZpc2lvbiA3MDk5
MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0NvbnRleHRNZW51TWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTMsNiArMTUzLDE5IEBAIE5TTXV0YWJsZUFycmF5KiBDb250ZXh0TWVudTo6cmVs
ZWFzZVBsYXQKICAgICByZXR1cm4gbV9wbGF0Zm9ybURlc2NyaXB0aW9uLnJlbGVhc2VSZWYoKTsK
IH0KIAorVmVjdG9yPENvbnRleHRNZW51SXRlbT4gY29udGV4dE1lbnVJdGVtVmVjdG9yKFBsYXRm
b3JtTWVudURlc2NyaXB0aW9uIG1lbnUpCit7CisgICAgVmVjdG9yPENvbnRleHRNZW51SXRlbT4g
aXRlbXM7CisgICAgdW5zaWduZWQgY291bnQgPSBbbWVudSBjb3VudF07CisgICAgaWYgKG1lbnUp
CisgICAgICAgIGl0ZW1zLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CisgICAgCisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIGl0ZW1zLmFwcGVuZChDb250
ZXh0TWVudUl0ZW0oW21lbnUgb2JqZWN0QXRJbmRleDppXSkpOworICAgIAorICAgIHJldHVybiBp
dGVtczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENP
TlRFWFRfTUVOVVMpCkluZGV4OiBXZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQyL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBACisyMDEwLTEwLTMwICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY2MDU0Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODY5OQorICAgICAgICBDb250ZXh0IG1lbnUgc3VwcG9y
dCBmb3IgV2ViS2l0IDIuCisKKyAgICAgICAgKiBXZWJLaXQyLnBybzoKKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd2luL1dlYktpdDIudmNw
cm9qOgorCisgICAgICAgICogU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW06OldlYkNvbnRleHRNZW51SXRlbSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbTo6ZW5jb2RlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0Ojpr
aXRJdGVtcyk6CisgICAgICAgICogU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oOiBBZGRlZC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwOgorICAgICAgICAoUVdLUGFnZVByaXZhdGU6OmNyZWF0
ZUNvbnRleHRNZW51UHJveHkpOiBTdHViIHRvIGtlZXAgdGhlIGJ1aWxkIHdvcmtpbmcuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGFnZUNsaWVudC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHku
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHk6On5XZWJDb250
ZXh0TWVudVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eTo6V2Vi
Q29udGV4dE1lbnVQcm94eSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG93Q29udGV4dE1lbnUpOiBTaG93
cyB0aGUgbWVudSBhZnRlciByZWNlaXZpbmcgdGhlIG1lc3NhZ2UgZnJvbSB0aGUgV2ViUHJvY2Vz
cy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3Rl
ZCk6IFNlbmRzIGluZm8gYWJvdXQgdGhlIHNlbGVjdGVkIG1lbnUgaXRlbSB0byB0aGUgV2ViUHJv
Y2VzcworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0TWVudVByb3h5TWFjOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5tbTogQWRkZWQuCisgICAgICAgICgrW1dlYk1lbnVUYXJnZXQg
c2hhcmVkTWVudVRhcmdldF0pOgorICAgICAgICAoLVtXZWJNZW51VGFyZ2V0IFdlYktpdDo6XSk6
CisgICAgICAgICgtW1dlYk1lbnVUYXJnZXQgc2V0TWVudVByb3h5OldlYktpdDo6XSk6CisgICAg
ICAgICgtW1dlYk1lbnVUYXJnZXQgZm9yd2FyZENvbnRleHRNZW51QWN0aW9uOl0pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpXZWJDb250ZXh0TWVudVByb3h5TWFj
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6fldlYkNvbnRleHRN
ZW51UHJveHlNYWMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpj
b250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OnBvcHVsYXRlTlNNZW51
KToKKyAgICAgICAgKFdlYktpdDo6bnNNZW51SXRlbVZlY3Rvcik6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRleHRNZW51UHJveHlNYWM6OnBvcHVsYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVQcm94eU1hYzo6c2hvd0NvbnRleHRNZW51KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6aGlkZUNvbnRleHRNZW51KToKKworICAgICAgICAqIFVJ
UHJvY2Vzcy93aW4vV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0
ZUNvbnRleHRNZW51UHJveHkpOiBTdHViIGZvciBub3cuCisgICAgICAgICogVUlQcm9jZXNzL3dp
bi9XZWJWaWV3Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c2hvd0Nv
bnRleHRNZW51KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51Q2xpZW50
OjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6IFJldHVybiB0aGUgV2ViQ29yZS1wcm92
aWRlZCBkZWZhdWx0CisgICAgICAgICAgbWVudSBmb3Igbm93LiBFbWJlZGRpbmcgYXBwIGN1c3Rv
bWl6YXRpb24gd2lsbCBjb21lIGxhdGVyIChzZWUgYnVnIDQ4NzIwKQorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHRNZW51OjpXZWJDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHRNZW51Ojp+V2ViQ29udGV4dE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0TWVudTo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51OjppdGVtU2Vs
ZWN0ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnU6OmNyZWF0ZSk6CisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYktpdDo6aGFuZGxlTW91c2VFdmVudCk6
IFBhc3MgcmlnaHQgbW91c2UgcHJlc3NlcyBhbG9uZyB0byBXZWJDb3JlIGFzIGJvdGggYSBtb3Vz
ZSBldmVudCBhbmQgY29udGV4dCBtZW51IGV2ZW50LCAKKyAgICAgICAgICB0aGUgc2FtZSB3YXkg
V2ViS2l0MSBkb2VzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRTZWxlY3RJdGVtRnJv
bUFjdGl2ZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
CiAyMDEwLTEwLTMwICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYktpdDIv
V2ViS2l0Mi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnBybwkocmV2aXNpb24g
NzA5OTApCisrKyBXZWJLaXQyL1dlYktpdDIucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsNiAr
MjE0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmggXAog
ICAgIFNoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmggXAogICAgIFNoYXJlZC9XZWJDZXJ0aWZpY2F0
ZUluZm8uaCBcCisgICAgU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oIFwKICAgICBTaGFyZWQv
V2ViRXZlbnQuaCBcCiAgICAgU2hhcmVkL1dlYkVycm9yLmggXAogICAgIFNoYXJlZC9XZWJFdmVu
dENvbnZlcnNpb24uaCBcCkBAIC0yNjQsNiArMjY1LDcgQEAgSEVBREVSUyArPSBcCiAgICAgVUlQ
cm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkNvbnRleHQu
aCBcCiAgICAgVUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oIFwKKyAg
ICBVSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5oIFwKICAgICBVSVByb2Nlc3MvV2ViQ29u
dGV4dFVzZXJNZXNzYWdlQ29kZXJzLmggXAogICAgIFVJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFBy
b3h5LmggXAogICAgIFVJUHJvY2Vzcy9XZWJGaW5kQ2xpZW50LmggXApAQCAtMzI5LDYgKzMzMSw3
IEBAIEhFQURFUlMgKz0gXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5o
IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZFBhZ2VPdmVybGF5LmggXAogICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5oIFwKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29udGV4dE1lbnUuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkVkaXRDb21tYW5kLmgg
XAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIFwKICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yLmggXApAQCAtMzc2LDYgKzM3OSw3IEBAIFNPVVJDRVMgKz0gXAog
ICAgIFNoYXJlZC9xdC9XZWJVUkxSZXF1ZXN0UXQuY3BwIFwKICAgICBTaGFyZWQvcXQvV2ViVVJM
UmVzcG9uc2VRdC5jcHAgXAogICAgIFNoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmNwcCBcCisgICAg
U2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAgXAogICAgIFNoYXJlZC9XZWJFcnJvci5jcHAg
XAogICAgIFNoYXJlZC9XZWJFdmVudC5jcHAgXAogICAgIFNoYXJlZC9XZWJFdmVudENvbnZlcnNp
b24uY3BwIFwKQEAgLTQ5Miw2ICs0OTYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRmlu
ZFBhZ2VPdmVybGF5LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmNw
cCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcCBcCiAgICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkVkaXRDb21tYW5kLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5j
cHAgXApJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJ
dGVtLmgiCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkFyZ3VtZW50
cy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nv
bnRleHRNZW51Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb250ZXh0TWVudUl0ZW06
OldlYkNvbnRleHRNZW51SXRlbSgpCisgICAgOiBtX3R5cGUoV2ViQ29yZTo6QWN0aW9uVHlwZSkK
KyAgICAsIG1fYWN0aW9uKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uKQorICAg
ICwgbV9lbmFibGVkKHRydWUpCisgICAgLCBtX2NoZWNrZWQoZmFsc2UpCit7Cit9CisKK1dlYkNv
bnRleHRNZW51SXRlbTo6V2ViQ29udGV4dE1lbnVJdGVtKFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVR5cGUgdHlwZSwgV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBjb25zdCBTdHJp
bmcmIHRpdGxlLCBib29sIGVuYWJsZWQsIGJvb2wgY2hlY2tlZCkKKyAgICA6IG1fdHlwZSh0eXBl
KQorICAgICwgbV9hY3Rpb24oYWN0aW9uKQorICAgICwgbV90aXRsZSh0aXRsZSkKKyAgICAsIG1f
ZW5hYmxlZChlbmFibGVkKQorICAgICwgbV9jaGVja2VkKGNoZWNrZWQpCit7CisgICAgQVNTRVJU
KHR5cGUgPT0gV2ViQ29yZTo6QWN0aW9uVHlwZSB8fCB0eXBlID09IFdlYkNvcmU6OkNoZWNrYWJs
ZUFjdGlvblR5cGUgfHwgdHlwZSA9PSBXZWJDb3JlOjpTZXBhcmF0b3JUeXBlKTsKK30KKworV2Vi
Q29udGV4dE1lbnVJdGVtOjpXZWJDb250ZXh0TWVudUl0ZW0oV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVHlwZSB0eXBlLCBXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvbnN0IFN0
cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRl
bT4mIHN1Ym1lbnUpCisgICAgOiBtX3R5cGUodHlwZSkKKyAgICAsIG1fYWN0aW9uKGFjdGlvbikK
KyAgICAsIG1fdGl0bGUodGl0bGUpCisgICAgLCBtX2VuYWJsZWQoZW5hYmxlZCkKKyAgICAsIG1f
Y2hlY2tlZChmYWxzZSkKKyAgICAsIG1fc3VibWVudShzdWJtZW51KQoreworICAgIEFTU0VSVCh0
eXBlID09IFdlYkNvcmU6OlN1Ym1lbnVUeXBlKTsKK30KKworV2ViQ29udGV4dE1lbnVJdGVtOjpX
ZWJDb250ZXh0TWVudUl0ZW0oV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtJiBpdGVtLCBXZWJDb3Jl
OjpDb250ZXh0TWVudSogbWVudSkKKyAgICA6IG1fdHlwZShpdGVtLnR5cGUoKSkKKyAgICAsIG1f
YWN0aW9uKGl0ZW0uYWN0aW9uKCkpCisgICAgLCBtX3RpdGxlKGl0ZW0udGl0bGUoKSkKK3sKKyAg
ICBpZiAobV90eXBlID09IFdlYkNvcmU6OlN1Ym1lbnVUeXBlKSB7CisgICAgICAgIFZlY3RvcjxX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0+IGNvcmVTdWJtZW51ID0gV2ViQ29yZTo6Y29udGV4dE1l
bnVJdGVtVmVjdG9yKGl0ZW0ucGxhdGZvcm1TdWJNZW51KCkpOworICAgICAgICBtX3N1Ym1lbnUg
PSBraXRJdGVtcyhjb3JlU3VibWVudSwgbWVudSk7CisgICAgfQorICAgIAorICAgIG1lbnUtPmNo
ZWNrT3JFbmFibGVJZk5lZWRlZChpdGVtKTsKKyAgICAKKyAgICBtX2VuYWJsZWQgPSBpdGVtLmVu
YWJsZWQoKTsKKyAgICBtX2NoZWNrZWQgPSBpdGVtLmNoZWNrZWQoKTsKK30KKwordm9pZCBXZWJD
b250ZXh0TWVudUl0ZW06OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIp
IGNvbnN0Cit7CisgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKHN0YXRpY19jYXN0PHVp
bnQzMl90PihtX3R5cGUpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9hY3Rpb24pLCBtX3RpdGxl
LCBtX2NoZWNrZWQsIG1fZW5hYmxlZCwgbV9zdWJtZW51KSk7Cit9CisKK2Jvb2wgV2ViQ29udGV4
dE1lbnVJdGVtOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJD
b250ZXh0TWVudUl0ZW0mIGl0ZW0pCit7CisgICAgdWludDMyX3QgdHlwZTsKKyAgICB1aW50MzJf
dCBhY3Rpb247CisgICAgU3RyaW5nIHRpdGxlOworICAgIGJvb2wgY2hlY2tlZDsKKyAgICBib29s
IGVuYWJsZWQ7CisgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbT4gc3VibWVudTsKKworICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dCh0eXBlLCBhY3Rpb24sIHRpdGxlLCBj
aGVja2VkLCBlbmFibGVkLCBzdWJtZW51KSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgV2ViQ29yZTo6QWN0aW9uVHlwZToKKyAgICBjYXNl
IFdlYkNvcmU6OlNlcGFyYXRvclR5cGU6CisgICAgY2FzZSBXZWJDb3JlOjpDaGVja2FibGVBY3Rp
b25UeXBlOgorICAgICAgICBpdGVtID0gV2ViQ29udGV4dE1lbnVJdGVtKHN0YXRpY19jYXN0PFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVR5cGU+KHR5cGUpLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpD
b250ZXh0TWVudUFjdGlvbj4oYWN0aW9uKSwgdGl0bGUsIGVuYWJsZWQsIGNoZWNrZWQpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OlN1Ym1lbnVUeXBlOgorICAgICAgICBpdGVt
ID0gV2ViQ29udGV4dE1lbnVJdGVtKHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVR5cGU+KHR5cGUpLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbj4oYWN0
aW9uKSwgdGl0bGUsIGVuYWJsZWQsIHN1Ym1lbnUpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitWZWN0b3I8V2ViQ29udGV4dE1lbnVJ
dGVtPiBraXRJdGVtcyhWZWN0b3I8V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtPiYgY29yZUl0ZW1z
LCBXZWJDb3JlOjpDb250ZXh0TWVudSogbWVudSkKK3sKKyAgICBWZWN0b3I8V2ViQ29udGV4dE1l
bnVJdGVtPiByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShjb3JlSXRlbXMuc2l6
ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29yZUl0ZW1zLnNpemUoKTsgKytp
KQorICAgICAgICByZXN1bHQuYXBwZW5kKFdlYkNvbnRleHRNZW51SXRlbShjb3JlSXRlbXNbaV0s
IG1lbnUpKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oCShyZXZpc2lvbiAwKQor
KysgV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvbnRleHRNZW51SXRlbV9oCisj
ZGVmaW5lIFdlYkNvbnRleHRNZW51SXRlbV9oCisKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRN
ZW51SXRlbS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
Q29yZUlQQyB7CisgICAgY2xhc3MgQXJndW1lbnREZWNvZGVyOworICAgIGNsYXNzIEFyZ3VtZW50
RW5jb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIENvbnRleHRNZW51
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYkNvbnRleHRNZW51SXRlbSB7
CisgICAgV2ViQ29udGV4dE1lbnVJdGVtKCk7CisgICAgV2ViQ29udGV4dE1lbnVJdGVtKFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbSYsIFdlYkNvcmU6OkNvbnRleHRNZW51KiBtZW51KTsKKyAgICBX
ZWJDb250ZXh0TWVudUl0ZW0oV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVHlwZSwgV2ViQ29yZTo6
Q29udGV4dE1lbnVBY3Rpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgYm9v
bCBjaGVja2VkKTsKKyAgICBXZWJDb250ZXh0TWVudUl0ZW0oV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVHlwZSwgV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUs
IGJvb2wgZW5hYmxlZCwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbT4mIHN1Ym1lbnUp
OworICAgIAorICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopIGNvbnN0
OworICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBXZWJD
b250ZXh0TWVudUl0ZW0mKTsKKworICAgIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVR5cGUgbV90
eXBlOworICAgIFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIG1fYWN0aW9uOworICAgIFN0cmlu
ZyBtX3RpdGxlOworICAgIGJvb2wgbV9lbmFibGVkOworICAgIGJvb2wgbV9jaGVja2VkOworICAg
IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+IG1fc3VibWVudTsKK307CisKK1ZlY3RvcjxXZWJD
b250ZXh0TWVudUl0ZW0+IGtpdEl0ZW1zKFZlY3RvcjxXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0+
JiwgV2ViQ29yZTo6Q29udGV4dE1lbnUqKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBXZWJDb250ZXh0TWVudUl0ZW1faApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAko
cmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDggKzM5LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZp
bmRJbmRpY2F0b3I7CiBjbGFzcyBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OwotY2xhc3MgV2ViRWRp
dENvbW1hbmRQcm94eTsKIGNsYXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7CitjbGFzcyBXZWJD
b250ZXh0TWVudVByb3h5OworY2xhc3MgV2ViRWRpdENvbW1hbmRQcm94eTsKIGNsYXNzIFdlYlBv
cHVwTWVudVByb3h5OwogCiBjbGFzcyBQYWdlQ2xpZW50IHsKQEAgLTcyLDYgKzczLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWROb3RIYW5kbGVLZXlFdmVudChjb25zdCBOYXRpdmVX
ZWJLZXlib2FyZEV2ZW50JikgPSAwOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVw
TWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eSgpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdl
UHJveHkqKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RmluZEluZGljYXRvcihQYXNzUmVm
UHRyPEZpbmRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQpID0gMDsKIApJbmRleDogV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29udGV4dE1lbnVQcm94eV9oCisjZGVmaW5lIFdl
YkNvbnRleHRNZW51UHJveHlfaAorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworICAgIGNsYXNzIEludFBvaW50OworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworc3RydWN0IFdlYkNvbnRleHRNZW51SXRlbTsKKworY2xhc3MgV2ViQ29udGV4dE1lbnVQ
cm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvbnRleHRNZW51UHJveHk+IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5XZWJDb250ZXh0TWVudVByb3h5KCkKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNv
bnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBoaWRlQ29udGV4dE1lbnUoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBXZWJDb250ZXh0
TWVudVByb3h5KCkKKyAgICB7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBXZWJQb3B1cE1lbnVQcm94eV9oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAJKHJldmlzaW9uIDcwOTkwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIldlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKICNp
bmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgog
I2luY2x1ZGUgIldlYkNvbnRleHRVc2VyTWVzc2FnZUNvZGVycy5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkRhdGEuaCIKQEAgLTExMjQsNiArMTEy
NSwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGlkZVBvcHVwTWVudSgpCiAgICAgbV9hY3RpdmVQ
b3B1cE1lbnUgPSAwOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0NvbnRleHRNZW51KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0IFZlY3RvcjxXZWJDb250
ZXh0TWVudUl0ZW0+JiBpdGVtcykKK3sKKyAgICBpZiAobV9hY3RpdmVDb250ZXh0TWVudSkKKyAg
ICAgICAgbV9hY3RpdmVDb250ZXh0TWVudS0+aGlkZUNvbnRleHRNZW51KCk7CisgICAgZWxzZQor
ICAgICAgICBtX2FjdGl2ZUNvbnRleHRNZW51ID0gbV9wYWdlQ2xpZW50LT5jcmVhdGVDb250ZXh0
TWVudVByb3h5KHRoaXMpOworICAgICAgCisgICAgbV9hY3RpdmVDb250ZXh0TWVudS0+c2hvd0Nv
bnRleHRNZW51KG1lbnVMb2NhdGlvbiwgaXRlbXMpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtJiBpdGVtKQor
eworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU2VsZWN0SXRlbUZy
b21BY3RpdmVDb250ZXh0TWVudShpdGVtKSwgbV9wYWdlSUQpOworfQorCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+
IGNvbW1hbmRQcm94eSwgVW5kb09yUmVkbyB1bmRvT3JSZWRvKQogewogICAgIG1fcGFnZUNsaWVu
dC0+cmVnaXN0ZXJFZGl0Q29tbWFuZChjb21tYW5kUHJveHksIHVuZG9PclJlZG8pOwpJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDcwOTkwKQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNp
bmNsdWRlICJXS0Jhc2UuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKICNpbmNs
dWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgIldlYkZpbmRDbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJGb3JtQ2xpZW50LmgiCkBAIC03Nyw2ICs3OCw3IEBAIGNsYXNzIFBsYXRmb3JtQ2VydGlmaWNh
dGVJbmZvOwogY2xhc3MgU3RyaW5nUGFpclZlY3RvcjsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlz
dDsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CitjbGFzcyBXZWJDb250ZXh0TWVudVBy
b3h5OwogY2xhc3MgV2ViRGF0YTsKIGNsYXNzIFdlYkVkaXRDb21tYW5kUHJveHk7CiBjbGFzcyBX
ZWJLZXlib2FyZEV2ZW50OwpAQCAtMjMxLDYgKzIzMyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Z2V0U3RhdGlzdGljcyhXS0NvbnRleHRTdGF0aXN0aWNzKik7CiAKKyAgICB2b2lkIGNvbnRleHRN
ZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbSYpOworCiBwcml2YXRlOgog
ICAgIFdlYlBhZ2VQcm94eShXZWJQYWdlTmFtZXNwYWNlKiwgdWludDY0X3QgcGFnZUlEKTsKIApA
QCAtMzIxLDYgKzMyNSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaG93UG9wdXBNZW51KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHJlY3QsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVt
cywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKICAgICB2b2lkIGhpZGVQb3B1cE1lbnUoKTsKIAor
ICAgIC8vIENvbnRleHQgTWVudS4KKyAgICB2b2lkIHNob3dDb250ZXh0TWVudShjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+JiBpdGVtcyk7
CisKICAgICB2b2lkIHRha2VGb2N1cyhib29sIGRpcmVjdGlvbik7CiAgICAgdm9pZCBzZXRUb29s
VGlwKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1
cnNvciYpOwpAQCAtMzYxLDYgKzM2OCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxXZWJFZGl0
Q29tbWFuZFByb3h5Kj4gbV9lZGl0Q29tbWFuZFNldDsKIAogICAgIFJlZlB0cjxXZWJQb3B1cE1l
bnVQcm94eT4gbV9hY3RpdmVQb3B1cE1lbnU7CisgICAgUmVmUHRyPFdlYkNvbnRleHRNZW51UHJv
eHk+IG1fYWN0aXZlQ29udGV4dE1lbnU7CiAKICAgICBkb3VibGUgbV9lc3RpbWF0ZWRQcm9ncmVz
czsKIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgko
cmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsOSBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogICAgICMgUG9wdXBNZW51LgogICAgIFNob3dQb3B1cE1lbnUoV2ViQ29yZTo6
SW50UmVjdCByZWN0LCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+IGl0ZW1zLCBpbnQzMl90
IHNlbGVjdGVkSW5kZXgpCiAgICAgSGlkZVBvcHVwTWVudSgpCisgICAgCisgICAgIyBDb250ZXh0
TWVudQorICAgIFNob3dDb250ZXh0TWVudShXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgVmVjdG9y
PFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPiBpdGVtcykKIAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKICAgICAjIEFjY2VsZXJhdGVkIGNvbXBzaXRpbmcgbWVzc2FnZXMuCklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lv
biA3MDk5MCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAko
d29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWROb3RIYW5kbGVLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50Jik7CiAK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVu
dVByb3h5KCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNy
ZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Kik7CiAKICAgICB2b2lkIHNldEZpbmRJ
bmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KTsKIApJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCShyZXZpc2lv
biA3MDk5MCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIldLQVBJQ2FzdC5oIgog
I2ltcG9ydCAiV0tTdHJpbmdDRi5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKKyNpbXBv
cnQgIldlYkNvbnRleHRNZW51UHJveHlNYWMuaCIKICNpbXBvcnQgIldlYkVkaXRDb21tYW5kUHJv
eHkuaCIKICNpbXBvcnQgIldlYlBvcHVwTWVudVByb3h5TWFjLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L0N1cnNvci5oPgpAQCAtMjQ1LDYgKzI0NiwxMSBAQCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVBy
b3h5PiBQYWdlQ2xpZW50CiAgICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5TWFjOjpjcmVhdGUo
bV93a1ZpZXcpOwogfQogCitQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGll
bnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKK3sKKyAg
ICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y3JlYXRlKG1fd2tWaWV3LCBwYWdlKTsK
K30KKwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZp
bmRJbmRpY2F0b3I+IGZpbmRJbmRpY2F0b3IsIGJvb2wgZmFkZU91dCkKIHsKICAgICBbbV93a1Zp
ZXcgX3NldEZpbmRJbmRpY2F0b3I6ZmluZEluZGljYXRvciBmYWRlT3V0OmZhZGVPdXRdOwpJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAkocmV2aXNpb24gNzA5OTApCisrKyBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRl
ICJXZWJDb250ZXh0TWVudVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViRXZlbnRGYWN0b3J5UXQuaCIK
ICNpbmNsdWRlICJXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1l
bnVQcm94eVF0LmgiCkBAIC0xMzQsNiArMTM1LDEyIEBAIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51
UHJveHk+IFFXS1BhZ2VQcmkKICAgICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlRdDo6Y3JlYXRl
KCk7CiB9CiAKK1Bhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUVdLUGFnZVByaXZhdGU6
OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKK3sKKyAgICAvLyBGSVhNRTog
SW1wbGVtZW50OworICAgIHJldHVybiAwOworfQorCiB2b2lkIFFXS1BhZ2VQcml2YXRlOjpzZXRG
aW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJvb2wgZmFkZU91dCkKIHsK
IH0KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgJKHJldmlzaW9uIDcwOTkw
KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVj
dCBjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAgICAgdmly
dHVhbCB2b2lkIGRpZE5vdEhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktpdDo6TmF0aXZlV2ViS2V5
Ym9hcmRFdmVudCYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBvcHVwTWVu
dVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eSgpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViS2l0
OjpXZWJQYWdlUHJveHkqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKFBh
c3NSZWZQdHI8V2ViS2l0OjpGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KTsKIApJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oCShyZXZp
c2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
Q29udGV4dE1lbnVQcm94eU1hY19oCisjZGVmaW5lIFdlYkNvbnRleHRNZW51UHJveHlNYWNfaAor
CisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKworI2lmZGVmIF9fT0JKQ19fCitAY2xhc3MgTlNQb3BVcEJ1dHRvbkNlbGw7CitAY2xh
c3MgV0tWaWV3OworI2Vsc2UKK2NsYXNzIE5TUG9wVXBCdXR0b25DZWxsOworY2xhc3MgV0tWaWV3
OworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisK
K2NsYXNzIFdlYkNvbnRleHRNZW51UHJveHlNYWMgOiBwdWJsaWMgV2ViQ29udGV4dE1lbnVQcm94
eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eU1h
Yz4gY3JlYXRlKFdLVmlldyogd2ViVmlldywgV2ViUGFnZVByb3h5KiBwYWdlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb250ZXh0TWVudVByb3h5TWFjKHdlYlZpZXcs
IHBhZ2UpKTsKKyAgICB9CisgICAgfldlYkNvbnRleHRNZW51UHJveHlNYWMoKTsKKworICAgIHZp
cnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25z
dCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtPiYpOworICAgIHZpcnR1YWwgdm9pZCBoaWRlQ29u
dGV4dE1lbnUoKTsKKyAgICAKKyAgICB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0
IFdlYkNvbnRleHRNZW51SXRlbSYpOworCitwcml2YXRlOgorICAgIFdlYkNvbnRleHRNZW51UHJv
eHlNYWMoV0tWaWV3KiwgV2ViUGFnZVByb3h5Kik7CisKKyAgICB2b2lkIHBvcHVsYXRlKGNvbnN0
IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+Jik7CisKKyAgICBSZXRhaW5QdHI8TlNQb3BVcEJ1
dHRvbkNlbGw+IG1fcG9wdXA7CisgICAgV0tWaWV3KiBtX3dlYlZpZXc7CisgICAgV2ViUGFnZVBy
b3h5KiBtX3BhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdl
YkNvbnRleHRNZW51UHJveHlNYWNfaApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNZW51UHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0JKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eU1hYy5o
IgorCisjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVu
dUl0ZW0uaCIKKyNpbmNsdWRlICJXS1ZpZXcuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVj
dC5oPgorI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworQGludGVyZmFjZSBXZWJNZW51VGFyZ2V0IDogTlNPYmplY3QgeworICAg
IFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyogX21lbnVQcm94eTsKK30KKysgKFdlYk1l
bnVUYXJnZXQqKXNoYXJlZE1lbnVUYXJnZXQ7CistIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJv
eHlNYWMqKW1lbnVQcm94eTsKKy0gKHZvaWQpc2V0TWVudVByb3h5OihXZWJLaXQ6OldlYkNvbnRl
eHRNZW51UHJveHlNYWMqKW1lbnVQcm94eTsKKy0gKHZvaWQpZm9yd2FyZENvbnRleHRNZW51QWN0
aW9uOihpZClzZW5kZXI7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJNZW51VGFyZ2V0CisK
KysgKFdlYk1lbnVUYXJnZXQqKXNoYXJlZE1lbnVUYXJnZXQKK3sKKyAgICBzdGF0aWMgV2ViTWVu
dVRhcmdldCogdGFyZ2V0OworICAgIGlmICghdGFyZ2V0KQorICAgICAgICB0YXJnZXQgPSBbW1dl
Yk1lbnVUYXJnZXQgYWxsb2NdIGluaXRdOworICAgIHJldHVybiB0YXJnZXQ7Cit9CisKKy0gKFdl
YktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyopbWVudVByb3h5Cit7CisgICAgcmV0dXJuIF9t
ZW51UHJveHk7Cit9CisKKy0gKHZvaWQpc2V0TWVudVByb3h5OihXZWJLaXQ6OldlYkNvbnRleHRN
ZW51UHJveHlNYWMqKW1lbnVQcm94eQoreworICAgIF9tZW51UHJveHkgPSBtZW51UHJveHk7Cit9
CisKKy0gKHZvaWQpZm9yd2FyZENvbnRleHRNZW51QWN0aW9uOihpZClzZW5kZXIKK3sKKyAgICBX
ZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbSBpdGVtKEFjdGlvblR5cGUsIHN0YXRpY19jYXN0PENv
bnRleHRNZW51QWN0aW9uPihbc2VuZGVyIHRhZ10pLCBbc2VuZGVyIHRpdGxlXSwgW3NlbmRlciBp
c0VuYWJsZWRdLCBbc2VuZGVyIHN0YXRlXSA9PSBOU09uU3RhdGUpOworICAgIF9tZW51UHJveHkt
PmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGl0ZW0pOworfQorCitAZW5kCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitXZWJDb250ZXh0TWVudVByb3h5TWFjOjpXZWJDb250ZXh0TWVudVByb3h5TWFj
KFdLVmlldyogd2ViVmlldywgV2ViUGFnZVByb3h5KiBwYWdlKQorICAgIDogbV93ZWJWaWV3KHdl
YlZpZXcpCisgICAgLCBtX3BhZ2UocGFnZSkKK3sKK30KKworV2ViQ29udGV4dE1lbnVQcm94eU1h
Yzo6fldlYkNvbnRleHRNZW51UHJveHlNYWMoKQoreworICAgIGlmIChtX3BvcHVwKQorICAgICAg
ICBbbV9wb3B1cC5nZXQoKSBzZXRDb250cm9sVmlldzpuaWxdOworfQorCit2b2lkIFdlYkNvbnRl
eHRNZW51UHJveHlNYWM6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRN
ZW51SXRlbSYgaXRlbSkKK3sKKyAgICBtX3BhZ2UtPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGl0
ZW0pOworfQorCitzdGF0aWMgdm9pZCBwb3B1bGF0ZU5TTWVudShOU01lbnUqIG1lbnUsIGNvbnN0
IFZlY3RvcjxSZXRhaW5QdHI8TlNNZW51SXRlbT4gPiYgbWVudUl0ZW1WZWN0b3IpCit7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1lbnVJdGVtVmVjdG9yLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIE5TSW50ZWdlciBvbGRTdGF0ZSA9IFttZW51SXRlbVZlY3RvcltpXS5nZXQoKSBzdGF0
ZV07CisgICAgICAgIFttZW51IGFkZEl0ZW06bWVudUl0ZW1WZWN0b3JbaV0uZ2V0KCldOworICAg
ICAgICBbbWVudUl0ZW1WZWN0b3JbaV0uZ2V0KCkgc2V0U3RhdGU6b2xkU3RhdGVdOworICAgIH0K
K30KKworc3RhdGljIFZlY3RvcjxSZXRhaW5QdHI8TlNNZW51SXRlbT4gPiBuc01lbnVJdGVtVmVj
dG9yKGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykKK3sKKyAgICBWZWN0
b3I8UmV0YWluUHRyPE5TTWVudUl0ZW0+ID4gcmVzdWx0OworCisgICAgdW5zaWduZWQgc2l6ZSA9
IGl0ZW1zLnNpemUoKTsKKyAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KHNpemUpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgc3dpdGNoIChpdGVt
c1tpXS5tX3R5cGUpIHsKKyAgICAgICAgY2FzZSBBY3Rpb25UeXBlOgorICAgICAgICBjYXNlIENo
ZWNrYWJsZUFjdGlvblR5cGU6CisgICAgICAgIHsKKyAgICAgICAgICAgIE5TTWVudUl0ZW0qIG1l
bnVJdGVtID0gW1tOU01lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOm5zU3RyaW5nRnJvbVdl
YkNvcmVTdHJpbmcoaXRlbXNbaV0ubV90aXRsZSkgYWN0aW9uOkBzZWxlY3Rvcihmb3J3YXJkQ29u
dGV4dE1lbnVBY3Rpb246KSBrZXlFcXVpdmFsZW50OkAiIl07CisgICAgICAgICAgICBbbWVudUl0
ZW0gc2V0VGFnOml0ZW1zW2ldLm1fYWN0aW9uXTsKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRF
bmFibGVkOml0ZW1zW2ldLm1fZW5hYmxlZF07CisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3Rh
dGU6aXRlbXNbaV0ubV9jaGVja2VkID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CisgICAgICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoUmV0YWluUHRyPE5T
TWVudUl0ZW0+KEFkb3B0TlMsIG1lbnVJdGVtKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIFNlcGFyYXRvclR5cGU6CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKFtOU01lbnVJdGVtIHNlcGFyYXRvckl0ZW1dKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFN1Ym1lbnVUeXBlOgorICAgICAgICB7ICAgICAgICAgICAgCisgICAgICAgICAg
ICBOU01lbnUqIG1lbnUgPSBbW05TTWVudSBhbGxvY10gaW5pdFdpdGhUaXRsZTpuc1N0cmluZ0Zy
b21XZWJDb3JlU3RyaW5nKGl0ZW1zW2ldLm1fdGl0bGUpXTsKKyAgICAgICAgICAgIFttZW51IHNl
dEF1dG9lbmFibGVzSXRlbXM6Tk9dOworICAgICAgICAgICAgcG9wdWxhdGVOU01lbnUobWVudSwg
bnNNZW51SXRlbVZlY3RvcihpdGVtc1tpXS5tX3N1Ym1lbnUpKTsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIE5TTWVudUl0ZW0qIG1lbnVJdGVtID0gW1tOU01lbnVJdGVtIGFsbG9jXSBp
bml0V2l0aFRpdGxlOm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoaXRlbXNbaV0ubV90aXRsZSkg
YWN0aW9uOkBzZWxlY3Rvcihmb3J3YXJkQ29udGV4dE1lbnVBY3Rpb246KSBrZXlFcXVpdmFsZW50
OkAiIl07CisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0RW5hYmxlZDppdGVtc1tpXS5tX2VuYWJs
ZWRdOworICAgICAgICAgICAgW21lbnVJdGVtIHNldFN1Ym1lbnU6bWVudV07CisgICAgICAgICAg
ICBbbWVudSByZWxlYXNlXTsKKworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChSZXRhaW5QdHI8
TlNNZW51SXRlbT4oQWRvcHROUywgbWVudUl0ZW0pKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgV2ViTWVudVRhcmdldCog
dGFyZ2V0ID0gW1dlYk1lbnVUYXJnZXQgc2hhcmVkTWVudVRhcmdldF07CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgW3Jlc3VsdFtpXS5nZXQoKSBzZXRU
YXJnZXQ6dGFyZ2V0XTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFdlYkNv
bnRleHRNZW51UHJveHlNYWM6OnBvcHVsYXRlKGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0
ZW0+JiBpdGVtcykKK3sKKyAgICBpZiAobV9wb3B1cCkKKyAgICAgICAgW21fcG9wdXAuZ2V0KCkg
cmVtb3ZlQWxsSXRlbXNdOworICAgIGVsc2UgeworICAgICAgICBtX3BvcHVwLmFkb3B0TlMoW1tO
U1BvcFVwQnV0dG9uQ2VsbCBhbGxvY10gaW5pdFRleHRDZWxsOkAiIiBwdWxsc0Rvd246Tk9dKTsK
KyAgICAgICAgW21fcG9wdXAuZ2V0KCkgc2V0VXNlc0l0ZW1Gcm9tTWVudTpOT107CisgICAgICAg
IFttX3BvcHVwLmdldCgpIHNldEF1dG9lbmFibGVzSXRlbXM6Tk9dOworICAgIH0KKworICAgIE5T
TWVudSogbWVudSA9IFttX3BvcHVwLmdldCgpIG1lbnVdOworICAgIHBvcHVsYXRlTlNNZW51KG1l
bnUsIG5zTWVudUl0ZW1WZWN0b3IoaXRlbXMpKTsKK30KKwordm9pZCBXZWJDb250ZXh0TWVudVBy
b3h5TWFjOjpzaG93Q29udGV4dE1lbnUoY29uc3QgSW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29u
c3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbT4mIGl0ZW1zKQoreworICAgIHBvcHVsYXRlKGl0
ZW1zKTsKKyAgICBbW1dlYk1lbnVUYXJnZXQgc2hhcmVkTWVudVRhcmdldF0gc2V0TWVudVByb3h5
OnRoaXNdOworICAgIAorICAgIE5TUmVjdCBtZW51UmVjdCA9IE5TTWFrZVJlY3QobWVudUxvY2F0
aW9uLngoKSwgbWVudUxvY2F0aW9uLnkoKSwgMCwgMCk7CisgICAgCisgICAgW21fcG9wdXAuZ2V0
KCkgYXR0YWNoUG9wVXBXaXRoRnJhbWU6bWVudVJlY3QgaW5WaWV3Om1fd2ViVmlld107CisKKyAg
ICBOU01lbnUqIG1lbnUgPSBbbV9wb3B1cC5nZXQoKSBtZW51XTsKKworICAgIC8vIFRoZXNlIHZh
bHVlcyB3ZXJlIGJvcnJvd2VkIGZyb20gQXBwS2l0IHRvIG1hdGNoIHRoZWlyIHBsYWNlbWVudCBv
ZiB0aGUgbWVudS4KKyAgICBOU1JlY3QgdGl0bGVGcmFtZSA9IFttX3BvcHVwLmdldCgpICB0aXRs
ZVJlY3RGb3JCb3VuZHM6bWVudVJlY3RdOworICAgIGlmICh0aXRsZUZyYW1lLnNpemUud2lkdGgg
PD0gMCB8fCB0aXRsZUZyYW1lLnNpemUuaGVpZ2h0IDw9IDApCisgICAgICAgIHRpdGxlRnJhbWUg
PSBtZW51UmVjdDsKKyAgICBmbG9hdCB2ZXJ0T2Zmc2V0ID0gcm91bmRmKChOU01heFkobWVudVJl
Y3QpIC0gTlNNYXhZKHRpdGxlRnJhbWUpKSArIE5TSGVpZ2h0KHRpdGxlRnJhbWUpKTsKKyAgICBO
U1BvaW50IGxvY2F0aW9uID0gTlNNYWtlUG9pbnQoTlNNaW5YKG1lbnVSZWN0KSwgTlNNYXhZKG1l
bnVSZWN0KSAtIHZlcnRPZmZzZXQpOworCisgICAgUmV0YWluUHRyPE5TVmlldz4gZHVtbXlWaWV3
KEFkb3B0TlMsIFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOm1lbnVSZWN0XSk7CisgICAg
W21fd2ViVmlldyBhZGRTdWJ2aWV3OmR1bW15Vmlldy5nZXQoKV07CisgICAgbG9jYXRpb24gPSBb
ZHVtbXlWaWV3LmdldCgpIGNvbnZlcnRQb2ludDpsb2NhdGlvbiBmcm9tVmlldzptX3dlYlZpZXdd
OworCisgICAgV0tQb3B1cE1lbnUobWVudSwgbG9jYXRpb24sIHJvdW5kZihOU1dpZHRoKG1lbnVS
ZWN0KSksIGR1bW15Vmlldy5nZXQoKSwgLTEsIG5pbCk7CisKKyAgICBbbV9wb3B1cC5nZXQoKSBk
aXNtaXNzUG9wVXBdOworICAgIFtkdW1teVZpZXcuZ2V0KCkgcmVtb3ZlRnJvbVN1cGVydmlld107
Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6aGlkZUNvbnRleHRNZW51KCkKK3sK
KyAgICBbbV9wb3B1cC5nZXQoKSBkaXNtaXNzUG9wVXBdOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDcwOTkwKQor
KysgV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MjUsNiArNjI1LDEyIEBAIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFdlYlZpZXc6OmMK
ICAgICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlXaW46OmNyZWF0ZSgpOwogfQogCitQYXNzUmVm
UHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFdlYlZpZXc6OmNyZWF0ZUNvbnRleHRNZW51UHJveHko
V2ViUGFnZVByb3h5KikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIHJldHVybiAw
OworfQorCiB2b2lkIFdlYlZpZXc6OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5k
aWNhdG9yPiwgYm9vbCBmYWRlT3V0KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCkluZGV4
OiBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
VUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDcwOTkwKQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3Mvd2luL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNl
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWROb3RIYW5k
bGVLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eSgpOworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVu
dVByb3h5KFdlYlBhZ2VQcm94eSopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGaW5kSW5kaWNhdG9y
KFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJvb2wgZmFkZU91dCk7CiAKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCkluZGV4OiBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY0LDggKzE2NCwxNSBAQAog
CQkxQzhFMjkzQTEyNzYxRTVCMDBCQzdCRDAgLyogV0tJbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI5MzgxMjc2MUU1QjAwQkM3
QkQwIC8qIFdLSW5zcGVjdG9yLmNwcCAqLzsgfTsKIAkJNTE1NzhCODMxMjA5RUNFRjAwQTM3QzRB
IC8qIFdlYkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNTc4QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggKi87IH07CiAJCTUxNkE0
QTVEMTIwQTJDQ0QwMEMwNUI3RiAvKiBXZWJFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2QTRBNUIxMjBBMkNDRDAwQzA1QjdGIC8qIFdlYkVy
cm9yLmggKi87IH07CisJCTUxODcxQjVCMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVu
dS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg3
MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwICovOyB9OworCQk1MTg3
MUI1QzEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAv
KiBXZWJDb250ZXh0TWVudS5oICovOyB9OwogCQk1MUE3RjJGMzEyNUJGODIwMDA4QUVCMUQgLyog
TG9nZ2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFBN0YyRjIxMjVCRjgyMDAwOEFFQjFEIC8qIExvZ2dpbmcuaCAqLzsgfTsKIAkJNTFBN0YyRjUx
MjVCRjhENDAwOEFFQjFEIC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBN0YyRjQxMjVCRjhENDAwOEFFQjFEIC8qIExvZ2dpbmcu
Y3BwICovOyB9OworCQk1MUFDQkExNTEyNzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVJ
dGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
QUNCQTEzMTI3OUU4QzMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uY3BwICovOyB9Owor
CQk1MUFDQkExNjEyNzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFDQkExNDEyNzlFOEMz
MDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggKi87IH07CisJCTUxQUNCQjgyMTI3QThC
QUQwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFDQkI4MTEyN0E4QkFEMDBEMjAzQjkgLyogV2Vi
Q29udGV4dE1lbnVQcm94eS5oICovOyB9OworCQk1MUFDQkJBMDEyN0E4RjJDMDBEMjAzQjkgLyog
V2ViQ29udGV4dE1lbnVQcm94eU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFBQ0JCOUUxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51
UHJveHlNYWMuaCAqLzsgfTsKKwkJNTFBQ0JCQTExMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRl
eHRNZW51UHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUFDQkI5RjEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1h
Yy5tbSAqLzsgfTsKIAkJNTFCMzAwNTAxMjUyOUQwRTAwMEI1Q0EwIC8qIFdlYkJhY2tGb3J3YXJk
TGlzdENGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQjMwMDRFMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAgKi87
IH07CiAJCTUxQjMwMDUxMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJQYWdlUHJveHlDRi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIzMDA0RjEyNTI5
RDBFMDAwQjVDQTAgLyogV2ViUGFnZVByb3h5Q0YuY3BwICovOyB9OwogCQk2RDhBOTFBNjExRjBF
RkQxMDBERDAxRkUgLyogY29tLmFwcGxlLldlYlByb2Nlc3Muc2IgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZEOEE5MUE1MTFGMEVGRDEwMEREMDFGRSAv
KiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYiAqLzsgfTsKQEAgLTY3MCw4ICs2NzcsMTUgQEAKIAkJ
MzJEQkNGNUUwMzcwQURFRTAwQzkxNzgzIC8qIFdlYktpdDJQcmVmaXguaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0MlByZWZpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTU3OEI4MjEyMDlFQ0VGMDBBMzdDNEEgLyogV2ViRGF0YS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNkE0QTVCMTIwQTJDQ0QwMEMwNUI3RiAvKiBXZWJFcnJvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIg
LyogV2ViQ29udGV4dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
Q29udGV4dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBN0YyRjIxMjVC
RjgyMDAwOEFFQjFEIC8qIExvZ2dpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTG9nZ2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE3RjJGNDEyNUJG
OEQ0MDA4QUVCMUQgLyogTG9nZ2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQ0JB
MTMxMjc5RThDMzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51SXRlbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudUl0ZW0uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUFDQkExNDEyNzlFOEMzMDBEMjAzQjkgLyogV2ViQ29u
dGV4dE1lbnVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbnRl
eHRNZW51SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUFDQkI4MTEyN0E4
QkFEMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxQUNCQjlFMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5
TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbnRleHRNZW51UHJv
eHlNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQ0JCOUYxMjdBOEYyQzAw
RDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUIzMDA0RTEyNTI5RDBFMDAwQjVDQTAgLyogV2ViQmFja0Zv
cndhcmRMaXN0Q0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2Vi
QmFja0ZvcndhcmRMaXN0Q0YuY3BwOyBwYXRoID0gY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIzMDA0RjEyNTI5RDBFMDAwQjVDQTAg
LyogV2ViUGFnZVByb3h5Q0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViUGFnZVByb3h5Q0YuY3BwOyBwYXRoID0gY2YvV2ViUGFnZVByb3h5Q0YuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1REFENzI5NDExNkZGNzBCMDBFRTUzOTYgLyogV2Vi
UHJvY2Vzcy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJQcm9j
ZXNzLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI3NCwxMiArMTI4
OCwxNCBAQAogCQkJCUJDQjBBRUU3MTIyRjUzRTMwMEIxMzQxRSAvKiBNdXRhYmxlRGljdGlvbmFy
eS5oICovLAogCQkJCUMwMkJGRjE1MTI1MTRGRDgwMDlDQ0JFQSAvKiBOYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50LmggKi8sCiAJCQkJQkNDNTcxNjExMTVBREI0MjAwMUNDQUY5IC8qIE5vdEltcGxlbWVu
dGVkLmggKi8sCisJCQkJQkNCRDNDM0ExMjVCRkE3QTAwRDJDMjlGIC8qIFN0cmluZ1BhaXJWZWN0
b3IuaCAqLywKIAkJCQlCQ0IwQjBERjEyMzA1QUIxMDBCMTM0MUUgLyogVXNlck1lc3NhZ2VDb2Rl
cnMuaCAqLywKIAkJCQkxQTBGMjlDOTEyMEIzNzE2MDA1M0QxQjkgLyogVmlzaXRlZExpbmtUYWJs
ZS5jcHAgKi8sCiAJCQkJMUEwRjI5Q0ExMjBCMzcxNjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rVGFi
bGUuaCAqLywKIAkJCQlCQzFERDdCMTExNERDMzk2MDA1QURBRjMgLyogV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmggKi8sCiAJCQkJQkNGNTA3MjYxMjQzMjlBQTAwNTk1NUFFIC8qIFdlYkNlcnRpZmlj
YXRlSW5mby5oICovLAotCQkJCUJDQkQzQzNBMTI1QkZBN0EwMEQyQzI5RiAvKiBTdHJpbmdQYWly
VmVjdG9yLmggKi8sCisJCQkJNTFBQ0JBMTMxMjc5RThDMzAwRDIwM0I5IC8qIFdlYkNvbnRleHRN
ZW51SXRlbS5jcHAgKi8sCisJCQkJNTFBQ0JBMTQxMjc5RThDMzAwRDIwM0I5IC8qIFdlYkNvbnRl
eHRNZW51SXRlbS5oICovLAogCQkJCTUxNTc4QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRh
LmggKi8sCiAJCQkJQkM1NzU2MTIxMjZFMDEzODAwNkYwRjEyIC8qIFdlYkVycm9yLmNwcCAqLywK
IAkJCQk1MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0YgLyogV2ViRXJyb3IuaCAqLywKQEAgLTE0NTEs
NiArMTQ2Nyw4IEBACiAJCUJDMDMyRDVFMTBGNDM3MkIwMDU4QzE1QSAvKiBXZWJQYWdlICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MTg3MUI1OTEyN0NC
ODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwICovLAorCQkJCTUxODcxQjVBMTI3Q0I4
OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovLAogCQkJCUJDOTYzRDZDMTEzREQxOTUw
MDU3NEJFMiAvKiBtYWMgKi8sCiAJCQkJQkM1RjdCQjIxMTgyMzc2QzAwNTJDMDJDIC8qIENodW5r
ZWRVcGRhdGVEcmF3aW5nQXJlYS5jcHAgKi8sCiAJCQkJQkM1RjdCQjMxMTgyMzc2QzAwNTJDMDJD
IC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5oICovLApAQCAtMTUwOCw2ICsxNTI2LDcgQEAK
IAkJCQlCQzY0NkJGNjExREQzNzdCMDA2NDU1QjAgLyogV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5o
ICovLAogCQkJCUJDQjlFMjQyMTEyMERBQ0EwMEExMzdFMCAvKiBXZWJDb250ZXh0LmNwcCAqLywK
IAkJCQlCQ0I5RTI0MTExMjBEQUNBMDBBMTM3RTAgLyogV2ViQ29udGV4dC5oICovLAorCQkJCTUx
QUNCQjgxMTI3QThCQUQwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5LmggKi8sCiAJCQkJ
QkNERTA1OUExMUNEQThBRTAwRTQxQUYxIC8qIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVu
dC5jcHAgKi8sCiAJCQkJQkNERTA1OTkxMUNEQThBRTAwRTQxQUYxIC8qIFdlYkNvbnRleHRJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5oICovLAogCQkJCUJDQjBCMERCMTIzMDVBMjUwMEIxMzQxRSAvKiBX
ZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaCAqLywKQEAgLTE4NjEsNiArMTg4MCw4IEBACiAJ
CQkJQkMyNjUxRjUxMTgyNUVGODAwMjQzRTEyIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVBy
b3h5TWFjLm1tICovLAogCQkJCTBGNTI2NUJCMTFERDM3ODYwMDA2RDMzQyAvKiBMYXllckJhY2tl
ZERyYXdpbmdBcmVhUHJveHlNYWMubW0gKi8sCiAJCQkJMUExQzY0ODYxMUY0MTVCNzAwNTUzQzE5
IC8qIFdlYkNvbnRleHRNYWMubW0gKi8sCisJCQkJNTFBQ0JCOUUxMjdBOEYyQzAwRDIwM0I5IC8q
IFdlYkNvbnRleHRNZW51UHJveHlNYWMuaCAqLywKKwkJCQk1MUFDQkI5RjEyN0E4RjJDMDBEMjAz
QjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSAqLywKIAkJCQlCQzU3NTA5NTEyNjhGM0M2
MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlNYWMuaCAqLywKIAkJCQlCQzU3NTA5NjEyNjhG
M0M2MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlNYWMubW0gKi8sCiAJCQkpOwpAQCAtMjIx
MSw3ICsyMjMyLDExIEBACiAJCQkJOTM1RUVCQTQxMjc3NjFENjAwMzMyMkI4IC8qIEluamVjdGVk
QnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2MTYxNTAx
Mjc3OThCNTAwM0FDRDg2IC8qIERvd25sb2FkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUE2MTYxRDQxMjc4OTgxQzAwM0FDRDg2IC8qIERvd25sb2FkLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MUFDQkExNjEyNzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1MUFDQkI4MjEyN0E4QkFEMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFBQ0JCQTAxMjdBOEYyQzAwRDIwM0I5IC8qIFdl
YkNvbnRleHRNZW51UHJveHlNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMTE5QTk1MTI3Qjc5
NjIwMEE5RUNCMSAvKiBNZXNzYWdlU2VuZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg3MUI1
QzEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAt
MjUzNCwxMiArMjU1OSwxNSBAQAogCQkJCTFBNjE2MTRGMTI3Nzk4QjUwMDNBQ0Q4NiAvKiBEb3du
bG9hZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2MTYxRDUxMjc4OTgxQzAwM0FD
RDg2IC8qIERvd25sb2FkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNjE2Mzk2MTI3ODlCMkYw
MDNBQ0Q4NiAvKiBEb3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxQUNCQTE1MTI3
OUU4QzMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTFBQ0JCQTExMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0g
aW4gU291cmNlcyAqLywKIAkJCQlDMDMzN0RBRTEyN0EyNEZFMDA4RkY0RjQgLyogV2ViRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdEQjAxMjdBMjhEMDAwOEZGNEY0IC8qIFdlYk1v
dXNlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdERDExMjdBMjk4MDAwOEZGNEY0
IC8qIFdlYldoZWVsRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdERDMxMjdBMkEw
RTAwOEZGNEY0IC8qIFdlYktleWJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzAz
MzdERDgxMjdBNTFCNjAwOEZGNEY0IC8qIFdlYlRvdWNoRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQzAzMzdEREQxMjdBNTIxQzAwOEZGNEY0IC8qIFdlYlBsYXRmb3JtVG91Y2hQb2ludC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg3MUI1QjEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29u
dGV4dE1lbnUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gNzA5
OTApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiRHJhd2lu
Z0FyZWEuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgiCisj
aW5jbHVkZSAiV2ViQ29udGV4dE1lbnUuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgiCkBAIC01MjUsNiArNTI2LDEzIEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9w
dXBNZW51PiBXZWIKICAgICByZXR1cm4gV2ViU2VhcmNoUG9wdXBNZW51OjpjcmVhdGUobV9wYWdl
LCBjbGllbnQpOwogfQogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCit2b2lkIFdlYkNocm9t
ZUNsaWVudDo6c2hvd0NvbnRleHRNZW51KCkKK3sKKyAgICBtX3BhZ2UtPmNvbnRleHRNZW51KCkt
PnNob3coKTsKK30KKyNlbmRpZgorCiBQYXNzT3duUHRyPEhUTUxQYXJzZXJRdWlya3M+IFdlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlSFRNTFBhcnNlclF1aXJrcygpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDcwOTkwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAs
NiArMTcwLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlBv
cHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0
OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0
ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKIAorI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUo
KTsKKyNlbmRpZgorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZpcnR1
YWwgdm9pZCBhdHRhY2hSb290R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNPbmVTaG90RHJhd2lu
Z1N5bmNocm9uaXphdGlvbigpOwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCShyZXZpc2lvbiA3
MDk5MCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDggQEAKIAogI2luY2x1ZGUg
IldlYkNvbnRleHRNZW51Q2xpZW50LmgiCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51
Lmg+CisKICNkZWZpbmUgRElTQUJMRV9OT1RfSU1QTEVNRU5URURfV0FSTklOR1MgMQogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKQEAgLTM3LDEwICszOSwxMyBAQCB2b2lkIFdlYkNvbnRl
eHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudURlCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLVBsYXRm
b3JtTWVudURlc2NyaXB0aW9uIFdlYkNvbnRleHRNZW51Q2xpZW50OjpnZXRDdXN0b21NZW51RnJv
bURlZmF1bHRJdGVtcyhDb250ZXh0TWVudSopCitQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBXZWJD
b250ZXh0TWVudUNsaWVudDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoQ29udGV4dE1l
bnUqIG1lbnUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICAv
LyBGSVhNRTogIFRoZSBlbWJlZGRlZCBhcHAgbmVlZHMgYSBjaGFuY2UgdG8gY3VzdG9taXplIHRo
ZSBjb250ZXh0IG1lbnUsIGFuZCB0aGF0IHdpbGwgcHJvYmFibHkgaGFwcGVuCisgICAgLy8gdmlh
IGFuIGluamVjdGVkIGJ1bmRsZS4gPHJkYXI6Ly9wcm9ibGVtLzg2MTM3Mjc+IGFuZCBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3MjAgY292ZXIgdGhpcyB0YXNrLgor
CisgICAgQVNTRVJUKG1lbnUpOworICAgIHJldHVybiBtZW51LT5wbGF0Zm9ybURlc2NyaXB0aW9u
KCk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51SXRlbVNlbGVj
dGVkKENvbnRleHRNZW51SXRlbSosIGNvbnN0IENvbnRleHRNZW51KikKSW5kZXg6IFdlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAJKHJldmlzaW9uIDApCisr
KyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJXZWJDb250
ZXh0TWVudS5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1dlYkNvbnRleHRNZW51OjpXZWJDb250ZXh0TWVudShXZWJQYWdlKiBwYWdlKQorICAgIDog
bV9wYWdlKHBhZ2UpCit7Cit9CisKK1dlYkNvbnRleHRNZW51Ojp+V2ViQ29udGV4dE1lbnUoKQor
eworfQorCit2b2lkIFdlYkNvbnRleHRNZW51OjpzaG93KCkKK3sKKyAgICBXZWJDb3JlOjpDb250
ZXh0TWVudSogbWVudSA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVy
KCktPmNvbnRleHRNZW51KCk7CisgICAgaWYgKCFtZW51KQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgVmVjdG9yPFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbT4gY29yZUl0ZW1zID0gV2ViQ29y
ZTo6Y29udGV4dE1lbnVJdGVtVmVjdG9yKG1lbnUtPnBsYXRmb3JtRGVzY3JpcHRpb24oKSk7Cisg
ICAgICAgIAorICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29udGV4dE1lbnUobWVudS0+aGl0VGVzdFJlc3VsdCgp
LnBvaW50KCksIGtpdEl0ZW1zKGNvcmVJdGVtcywgbWVudSkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
K30KKwordm9pZCBXZWJDb250ZXh0TWVudTo6aXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRN
ZW51SXRlbSYgaXRlbSkKK3sKKyAgICBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0gY29yZUl0ZW0o
V2ViQ29yZTo6QWN0aW9uVHlwZSwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rp
b24+KGl0ZW0ubV9hY3Rpb24pLCBpdGVtLm1fdGl0bGUpOworICAgIG1fcGFnZS0+Y29yZVBhZ2Uo
KS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKCZjb3Jl
SXRlbSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICoKKyAqLworCisjaWZuZGVmIFdlYkNvbnRleHRNZW51X2gKKyNkZWZpbmUgV2ViQ29udGV4
dE1lbnVfaAorCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtLmgiCisKKyNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBXZWJDb250ZXh0TWVudSA6IHB1
YmxpYyBSZWZDb3VudGVkPFdlYkNvbnRleHRNZW51PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViQ29udGV4dE1lbnU+IGNyZWF0ZShXZWJQYWdlKiBwYWdlKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViQ29udGV4dE1lbnUocGFnZSkpOyB9CisgICAgfldlYkNvbnRleHRNZW51
KCk7CisKKyAgICB2b2lkIHNob3coKTsKKyAgICB2b2lkIGl0ZW1TZWxlY3RlZChjb25zdCBXZWJD
b250ZXh0TWVudUl0ZW0mKTsKKworcHJpdmF0ZToKKyAgICBXZWJDb250ZXh0TWVudShXZWJQYWdl
Kik7CisgICAgCisgICAgV2ViUGFnZSogbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBXZWJQb3B1cE1lbnVfaApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDcwOTkwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNp
bmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0UHJveHku
aCIKICNpbmNsdWRlICJXZWJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVu
dS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRHJhZ0NsaWVudC5oIgpAQCAtNTMsNiAr
NTQsOCBAQAogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZUtpbmRzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9DaHJvbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CkBA
IC00ODAsNiArNDgzLDEzIEBAIHZvaWQgV2ViUGFnZTo6cGFnZURpZFNjcm9sbCgpCiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpQYWdlRGlkU2Nyb2xsKCkpOwogfQogCitXZWJDb250
ZXh0TWVudSogV2ViUGFnZTo6Y29udGV4dE1lbnUoKQoreworICAgIGlmICghbV9jb250ZXh0TWVu
dSkKKyAgICAgICAgbV9jb250ZXh0TWVudSA9IFdlYkNvbnRleHRNZW51OjpjcmVhdGUodGhpcyk7
CisgICAgcmV0dXJuIG1fY29udGV4dE1lbnUuZ2V0KCk7Cit9CisKIC8vIEV2ZW50cyAKIAogc3Rh
dGljIGNvbnN0IFdlYkV2ZW50KiBnX2N1cnJlbnRFdmVudCA9IDA7CkBAIC01MTksNyArNTI5LDIw
IEBAIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW8KIAogICAgIHN3aXRj
aCAocGxhdGZvcm1Nb3VzZUV2ZW50LmV2ZW50VHlwZSgpKSB7CiAgICAgICAgIGNhc2UgV2ViQ29y
ZTo6TW91c2VFdmVudFByZXNzZWQ6Ci0gICAgICAgICAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5oYW5kbGVNb3VzZVByZXNzRXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50KTsKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHBsYXRmb3JtTW91c2VFdmVudC5idXR0b24oKSA9PSBXZWJD
b3JlOjpSaWdodEJ1dHRvbikKKyAgICAgICAgICAgICAgICBwYWdlLT5jb250ZXh0TWVudUNvbnRy
b2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBi
b29sIGhhbmRsZWQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUHJlc3NFdmVu
dChwbGF0Zm9ybU1vdXNlRXZlbnQpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAocGxh
dGZvcm1Nb3VzZUV2ZW50LmJ1dHRvbigpID09IFdlYkNvcmU6OlJpZ2h0QnV0dG9uKSB7CisgICAg
ICAgICAgICAgICAgaGFuZGxlZCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2VuZENvbnRleHRN
ZW51RXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50KTsKKyAgICAgICAgICAgICAgICBpZiAoaGFuZGxl
ZCkKKyAgICAgICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCktPnNob3dDb250ZXh0TWVudSgp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gaGFuZGxlZDsKKyAgICAgICAg
fQogICAgICAgICBjYXNlIFdlYkNvcmU6Ok1vdXNlRXZlbnRSZWxlYXNlZDoKICAgICAgICAgICAg
IHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KHBs
YXRmb3JtTW91c2VFdmVudCk7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6TW91c2VFdmVudE1vdmVk
OgpAQCAtODgzLDYgKzkwNiwxMiBAQCB2b2lkIFdlYlBhZ2U6OmRpZENoYW5nZVNlbGVjdGVkSW5k
ZXhGb3JBCiAgICAgbV9hY3RpdmVQb3B1cE1lbnUgPSAwOwogfQogCit2b2lkIFdlYlBhZ2U6OmRp
ZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVt
JiBpdGVtKQoreworICAgIEFTU0VSVChtX2NvbnRleHRNZW51KTsKKyAgICBtX2NvbnRleHRNZW51
LT5pdGVtU2VsZWN0ZWQoaXRlbSk7Cit9CisKICNpZiBQTEFURk9STShNQUMpCiB2b2lkIFdlYlBh
Z2U6OmFkZFBsdWdpblZpZXcoUGx1Z2luVmlldyogcGx1Z2luVmlldykKIHsKSW5kZXg6IFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDcwOTkwKQorKysgV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCw4
IEBAIGNsYXNzIERyYXdpbmdBcmVhOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExp
c3Q7CiBjbGFzcyBQYWdlT3ZlcmxheTsKIGNsYXNzIFBsdWdpblZpZXc7CitjbGFzcyBXZWJDb250
ZXh0TWVudTsKK2NsYXNzIFdlYkNvbnRleHRNZW51SXRlbTsKIGNsYXNzIFdlYkV2ZW50OwogY2xh
c3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbnNwZWN0b3I7CkBAIC0xODYsNiArMTg4LDggQEAgcHVi
bGljOgogICAgIEZpbmRDb250cm9sbGVyJiBmaW5kQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fZmlu
ZENvbnRyb2xsZXI7IH0KIAogICAgIHZvaWQgcGFnZURpZFNjcm9sbCgpOworICAgIAorICAgIFdl
YkNvbnRleHRNZW51KiBjb250ZXh0TWVudSgpOwogCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWlu
dDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CkBAIC0yNTIs
NiArMjU2LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGVkSW5kZXhG
b3JBY3RpdmVQb3B1cE1lbnUoaW50MzJfdCBuZXdJbmRleCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVY
VF9NRU5VUykKKyAgICB2b2lkIGRpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoY29u
c3QgV2ViQ29udGV4dE1lbnVJdGVtJik7CisjZW5kaWYKKwogICAgIE93blB0cjxXZWJDb3JlOjpQ
YWdlPiBtX3BhZ2U7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBtX21haW5GcmFtZTsKICAgICBSZWZQ
dHI8SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q+IG1fYmFja0ZvcndhcmRMaXN0OwpAQCAt
Mjk0LDYgKzMwMiw4IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2ViUG9wdXBNZW51PiBtX2Fj
dGl2ZVBvcHVwTWVudTsKIAorICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudT4gbV9jb250ZXh0TWVu
dTsKKwogICAgIHVpbnQ2NF90IG1fcGFnZUlEOwogfTsKIApJbmRleDogV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiA3MDk5MCkKKysr
IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTc4LDYgKzc4LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAKICAgICAjIFBv
cHVwIG1lbnUuCiAgICAgRGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVudShp
bnQzMl90IG5ld0luZGV4KTsKKyAgICAKKyAgICAjIENvbnRleHQgbWVudS4KKyAgICBEaWRTZWxl
Y3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51KFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtIG1l
bnVJdGVtKTsKIAogICAgIFNldFdpbmRvd1Jlc2l6ZXJTaXplKFdlYkNvcmU6OkludFNpemUgaW50
ZXJzZWN0c1ZpZXcpCiAKSW5kZXg6IFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCShyZXZpc2lvbiA3MDk5MCkKKysrIFdl
YktpdDIvd2luL1dlYktpdDIudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00ODksNiArNDg5LDE0
IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFNoYXJlZFxXZWJDb250ZXh0TWVudUl0ZW0uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYkNvbnRleHRNZW51SXRlbS5o
Ig0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
U2hhcmVkXFdlYkNvcmVBcmd1bWVudENvZGVycy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAg
LTExODgsNiArMTE5NiwxNCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xXZWJQYWdlXFdlYkNvbnRleHRNZW51LmNw
cCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2VcV2ViQ29udGV4dE1lbnUuaCINCisJCQkJCT4NCisJCQkJ
PC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdl
YlBhZ2VcV2ViRWRpdENvbW1hbmQuY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpAQCAtMTY4
NSw2ICsxNzAxLDEwIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xXZWJDb250ZXh0TWVudVByb3h5LmgiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcV2Vi
Q29udGV4dFVzZXJNZXNzYWdlQ29kZXJzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpJbmRleDog
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCShyZXZpc2lvbiA3MDk5MCkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMC0zMCAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NjA1NDc+IGFuZCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg2OTkKKyAgICAgICAgQ29udGV4dCBtZW51IHN1
cHBvcnQgZm9yIFdlYktpdCAyLgorCisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoK
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6c2hvd0NvbnRleHRNZW51KToKKwog
MjAxMC0xMC0yOSAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+CiAKICAgICAgICAgTm8g
cmV2aWV3LCByb2xsaW5nIG91dCA3MDk3MS4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21lQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5oCShyZXZpc2lvbiA3MDk5MCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21lQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsNiArMTc0LDEwIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1
cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFdl
YkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgpIHsgfQorI2VuZGlmCisKIHBy
aXZhdGU6CiAgICAgdm9pZCBnZXRQb3B1cE1lbnVJbmZvKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVy
KiwgV2ViUG9wdXBNZW51SW5mbyopOwogCkluZGV4OiBXZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gNzA5OTApCisrKyBXZWJL
aXQvZWZsL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTEw
LTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY2MDU0Nz4g
YW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODY5OQorICAgICAg
ICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dEVmbDo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxMC0xMC0yOSAgRGFuaWVsIEJhdGVzICA8ZGJh
dGVzQHJpbS5jb20+CiAKICAgICAgICAgTm8gcmV2aWV3LCByb2xsaW5nIG91dCA3MDk3MS4KSW5k
ZXg6IFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAkocmV2aXNp
b24gNzA5OTApCisrKyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNiArMTE1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiop
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2aXJ0dWFsIHZvaWQg
c2hvd0NvbnRleHRNZW51KCkgeyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBydW5PcGVu
UGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7CiAgICAgdmlydHVhbCB2b2lk
IGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVDaG9vc2VyKik7
CiAgICAgdmlydHVhbCB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBOb2RlKik7CkluZGV4
OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxv
ZwkocmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTEwLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNzY2MDU0Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00ODY5OQorICAgICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2Vi
S2l0IDIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKyAg
ICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzaG93Q29udGV4dE1lbnUpOgorCiAyMDEwLTEw
LTMwICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBNYXJ0aW4gUm9iaW5zb24uCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmgJKHJldmlzaW9uIDcwOTkwKQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw5IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENh
Y2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNo
ZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsK
ICNlbmRpZgorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgICAgICB2aXJ0dWFsIHZvaWQg
c2hvd0NvbnRleHRNZW51KCkgeyB9CisjZW5kaWYKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bk9w
ZW5QYW5lbChXZWJDb3JlOjpGcmFtZSosIFBhc3NSZWZQdHI8V2ViQ29yZTo6RmlsZUNob29zZXI+
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiwgV2ViQ29yZTo6RmlsZUNob29zZXIqKTsKIApJbmRleDogV2ViS2l0L2hh
aWt1L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCShyZXZp
c2lvbiA3MDk5MCkKKysrIFdlYktpdC9oYWlrdS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMyBAQAorMjAxMC0xMC0zMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzc2NjA1NDc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDg2OTkKKyAgICAgICAgQ29udGV4dCBtZW51IHN1cHBvcnQgZm9yIFdlYktpdCAy
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpzaG93Q29udGV4dE1lbnUpOgorCiAyMDEw
LTEwLTI5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEhhaWt1LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2hhaWt1L1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgJKHJldmlzaW9uIDcwOTkwKQorKysgV2ViS2l0L2hh
aWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzNyw2ICsxMzcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9y
aWdpbiopOwogI2VuZGlmCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgICAgIHZpcnR1
YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0KKyNlbmRpZgogCiAgICAgICAgIC8vIFRoaXMg
aXMgYW4gYXN5bmNocm9ub3VzIGNhbGwuIFRoZSBDaHJvbWVDbGllbnQgY2FuIGRpc3BsYXkgVUkg
YXNraW5nIHRoZSB1c2VyIGZvciBwZXJtaXNzaW9uCiAgICAgICAgIC8vIHRvIHVzZSBHZW9sb2Nv
Y2F0aW9uLgpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDcwOTkwKQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMC0zMCAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NjA1NDc+IGFuZCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg2OTkKKyAgICAgICAgQ29udGV4dCBtZW51IHN1
cHBvcnQgZm9yIFdlYktpdCAyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnNob3dDb250ZXh0TWVudSk6CisK
IDIwMTAtMTAtMjkgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgogCiAgICAgICAgIE5v
IHJldmlldywgcm9sbGluZyBvdXQgNzA5NzEuCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDcwOTkwKQorKysgV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDYg
KzE3OCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBN
ZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2Vh
cmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogCisjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgpIHsg
fQorI2VuZGlmCiBwcml2YXRlOgogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKIH07CkluZGV4OiBX
ZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDcwOTkwKQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDEwLTEwLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNzY2MDU0Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODY5OQorICAgICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTAtMTAtMzAg
IEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFudG9uaW8gR29tZXMuCkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuaAkocmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDYgKzEzNCw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUo
aW50NjRfdCBzcGFjZU5lZWRlZCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKik7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9
CisjZW5kaWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICB2aXJ0dWFsIE5v
dGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3Q7CkluZGV4
OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxv
ZwkocmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTEwLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNzY2MDU0Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00ODY5OQorICAgICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2Vi
S2l0IDIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAg
ICAgICAgKFdlYkNocm9tZUNsaWVudDo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxMC0xMC0yOSAg
RGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+CiAKICAgICAgICAgTm8gcmV2aWV3LCByb2xs
aW5nIG91dCA3MDk3MS4KSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAkocmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDEwIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVY
VF9NRU5VUykKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9CisjZW5kaWYK
KwogICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVZpc2l0ZWRMaW5rcygpOwogCiAgICAgdmlydHVh
bCBib29sIHBhaW50Q3VzdG9tU2Nyb2xsYmFyKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIFdlYkNvcmU6OlNjcm9sbGJhckNvbnRyb2xTaXplLCAK
SW5kZXg6IFdlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L0NoYW5n
ZUxvZwkocmV2aXNpb24gNzA5OTApCisrKyBXZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTAtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ4Njk5CisgICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBX
ZWJLaXQgMi4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpzaG93Q29udGV4dE1lbnUpOgorCiAyMDEw
LTEwLTI5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xp
ZW50V3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGll
bnRXeC5oCShyZXZpc2lvbiA3MDk5MCkKKysrIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9t
ZUNsaWVudFd4LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw2ICsxMjksMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3Vy
aXR5T3JpZ2luKik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIHZp
cnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB2
b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKICAgICB2
aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmls
ZUNob29zZXIqKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72514</attachid>
            <date>2010-11-01 09:16:06 -0700</date>
            <delta_ts>2010-11-01 11:15:05 -0700</delta_ts>
            <desc>v6 - Hopefully the final build fix </desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>74264</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTAtMTEtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ4Njk5CisgICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQg
Mi4KKworICAgICAgICBBZGQgYSAic2hvd0NvbnRleHRNZW51IiBjYWxsIHRvIENocm9tZS9DaHJv
bWVDbGllbnQ6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgICogcGFn
ZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzaG93Q29udGV4dE1lbnUp
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQu
aDoKKworICAgICAgICBBZGQgYSAicGxhdGZvcm0gZGVzY3JpcHRpb24gdG8gQ29udGV4dE1lbnVJ
dGVtIiBjcmVhdG9yLCB3aWxsIGJlIG5lZWRlZCBieSBXZWJLaXQyCisgICAgICAgICogcGxhdGZv
cm0vQ29udGV4dE1lbnUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ29udGV4dE1lbnVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1WZWN0b3IpOgorCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL0NvbnRleHRNZW51SXRlbU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbTo6Y2hlY2tlZCk6IFdlYktpdDIgcG9ydHMgbm93IG5lZWQgdGhpcyBp
bXBsZW1lbnRlZC4KKworICAgICAgICBTdHViIHRoZXNlIG91dCB0byBrZWVwIHRoZWlyIFdLMiBw
b3J0cyBidWlsZGluZzoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Db250ZXh0TWVudUl0ZW1RdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OmNoZWNrZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L0NvbnRleHRNZW51UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dGV4dE1lbnVJdGVtVmVjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ29udGV4dE1lbnVJ
dGVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6Y2hlY2tlZCk6
CisgICAgICAgICogcGxhdGZvcm0vd2luL0NvbnRleHRNZW51V2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnRleHRNZW51SXRlbVZlY3Rvcik6CisKIDIwMTAtMTEtMDEgIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBM
b3Blei4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhw
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMjI1LDkgKzEyMjUsMjIgQEAgX19aTks3V2ViQ29yZTE4
UmVuZGVyTGF5ZXJCYWNraW5nMjBjb21wbwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogX19a
TjdXZWJDb3JlMTFDb250ZXh0TWVudTIyc2V0UGxhdGZvcm1EZXNjcmlwdGlvbkVQMTROU011dGFi
bGVBcnJheQogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIyMHNlbmRDb250ZXh0TWVudUV2ZW50
RVA3TlNFdmVudAorX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIyMHNlbmRDb250ZXh0TWVudUV2
ZW50RVJLTlNfMThQbGF0Zm9ybU1vdXNlRXZlbnRFCiBfX1pON1dlYkNvcmUxNUNvbnRleHRNZW51
SXRlbTI2cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb25FdgorX19aTjdXZWJDb3JlMTVDb250ZXh0
TWVudUl0ZW1DMUVOU18xOUNvbnRleHRNZW51SXRlbVR5cGVFTlNfMTdDb250ZXh0TWVudUFjdGlv
bkVSS04zV1RGNlN0cmluZ0VQTlNfMTFDb250ZXh0TWVudUUKK19fWk43V2ViQ29yZTE1Q29udGV4
dE1lbnVJdGVtRDFFdgogX19aTjdXZWJDb3JlMjFDb250ZXh0TWVudUNvbnRyb2xsZXIxNmNsZWFy
Q29udGV4dE1lbnVFdgorX19aTjdXZWJDb3JlMjFDb250ZXh0TWVudUNvbnRyb2xsZXIyM2NvbnRl
eHRNZW51SXRlbVNlbGVjdGVkRVBOU18xNUNvbnRleHRNZW51SXRlbUUKK19fWk43V2ViQ29yZTIx
Y29udGV4dE1lbnVJdGVtVmVjdG9yRVAxNE5TTXV0YWJsZUFycmF5CitfX1pON1dlYkNvcmU2Q2hy
b21lMTVzaG93Q29udGV4dE1lbnVFdgogX19aTks3V2ViQ29yZTExQ29udGV4dE1lbnUxOXBsYXRm
b3JtRGVzY3JpcHRpb25FdgorX19aTks3V2ViQ29yZTExQ29udGV4dE1lbnUyMWNoZWNrT3JFbmFi
bGVJZk5lZWRlZEVSTlNfMTVDb250ZXh0TWVudUl0ZW1FCitfX1pOSzdXZWJDb3JlMTVDb250ZXh0
TWVudUl0ZW0xNXBsYXRmb3JtU3ViTWVudUV2CitfX1pOSzdXZWJDb3JlMTVDb250ZXh0TWVudUl0
ZW00dHlwZUV2CitfX1pOSzdXZWJDb3JlMTVDb250ZXh0TWVudUl0ZW01dGl0bGVFdgorX19aTks3
V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtNmFjdGlvbkV2CitfX1pOSzdXZWJDb3JlMTVDb250ZXh0
TWVudUl0ZW03Y2hlY2tlZEV2CitfX1pOSzdXZWJDb3JlMTVDb250ZXh0TWVudUl0ZW03ZW5hYmxl
ZEV2CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKSW5kZXg6IFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3MTAzMSkKKysr
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTMwNSw2ICsyMTMwNSw3IEBACiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYnVpbGRD
b25maWd1cmF0aW9uTGlzdCA9IDE0OUMyODQzMDg5MDJCMTEwMDhBOUVGQyAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYkNvcmUiICovOwogCQkJY29tcGF0aWJp
bGl0eVZlcnNpb24gPSAiWGNvZGUgMi40IjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlz
aDsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0gKAog
CQkJCUVuZ2xpc2gsCkluZGV4OiBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gNzEwMzEpCisr
KyBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYg
KzEzOSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBvcHVwTWVudT4gY3Jl
YXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBFbXB0eVBvcHVwTWVudSgpKTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTZWFyY2hQb3B1
cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdCB7IHJl
dHVybiBhZG9wdFJlZihuZXcgRW1wdHlTZWFyY2hQb3B1cE1lbnUoKSk7IH0KIAorI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0K
KyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHNldFN0YXR1c2JhclRleHQoY29uc3QgU3RyaW5n
JikgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgdGFic1RvTGlua3MoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViQ29yZS9wYWdlL0No
cm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMiw0ICs1MDIsMTEgQEAgUGFzc1JlZlB0cjxT
ZWFyY2hQb3B1cE1lbnU+IENocm9tZTo6Y3JlYQogICAgIHJldHVybiBtX2NsaWVudC0+Y3JlYXRl
U2VhcmNoUG9wdXBNZW51KGNsaWVudCk7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
K3ZvaWQgQ2hyb21lOjpzaG93Q29udGV4dE1lbnUoKQoreworICAgIG1fY2xpZW50LT5zaG93Q29u
dGV4dE1lbnUoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5o
CShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTU1LDYgKzE1NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBhc3NS
ZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7
CiAgICAgICAgIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1l
bnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
KyAgICAgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoKTsKKyNlbmRpZgorCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgUGFnZSogbV9wYWdlOwogICAgICAgICBDaHJvbWVDbGllbnQqIG1fY2xpZW50OwpJ
bmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw2ICsyNjksMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQ
b3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51
Q2xpZW50KikgY29uc3QgPSAwOwogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgICAg
IHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSA9IDA7CisjZW5kaWYKKwogICAgICAgICB2
aXJ0dWFsIHZvaWQgcG9zdEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9i
amVjdCosIEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uKSB7IH0KIAogICAgIHByb3RlY3Rl
ZDoKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmgJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgIH07CiAKK1ZlY3RvcjxDb250ZXh0TWVu
dUl0ZW0+IGNvbnRleHRNZW51SXRlbVZlY3RvcihQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbik7CisK
IH0KIAogI2VuZGlmIC8vIENvbnRleHRNZW51X2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFj
L0NvbnRleHRNZW51SXRlbU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21h
Yy9Db250ZXh0TWVudUl0ZW1NYWMubW0JKHJldmlzaW9uIDcxMDMxKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvQ29udGV4dE1lbnVJdGVtTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNiAr
MTU0LDExIEBAIGJvb2wgQ29udGV4dE1lbnVJdGVtOjplbmFibGVkKCkgY29uc3QKICAgICByZXR1
cm4gW21fcGxhdGZvcm1EZXNjcmlwdGlvbi5nZXQoKSBpc0VuYWJsZWRdOwogfQogCitib29sIENv
bnRleHRNZW51SXRlbTo6Y2hlY2tlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX3BsYXRmb3Jt
RGVzY3JpcHRpb24uZ2V0KCkgc3RhdGVdID09IE5TT25TdGF0ZTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbQkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTUz
LDYgKzE1MywxOSBAQCBOU011dGFibGVBcnJheSogQ29udGV4dE1lbnU6OnJlbGVhc2VQbGF0CiAg
ICAgcmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5yZWxlYXNlUmVmKCk7CiB9CiAKK1ZlY3Rv
cjxDb250ZXh0TWVudUl0ZW0+IGNvbnRleHRNZW51SXRlbVZlY3RvcihQbGF0Zm9ybU1lbnVEZXNj
cmlwdGlvbiBtZW51KQoreworICAgIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+IGl0ZW1zOworICAg
IHVuc2lnbmVkIGNvdW50ID0gW21lbnUgY291bnRdOworICAgIGlmIChtZW51KQorICAgICAgICBp
dGVtcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICBpdGVtcy5hcHBlbmQoQ29udGV4dE1lbnVJdGVt
KFttZW51IG9iamVjdEF0SW5kZXg6aV0pKTsKKyAgICAKKyAgICByZXR1cm4gaXRlbXM7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVT
KQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db250ZXh0TWVudUl0ZW1RdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db250ZXh0TWVudUl0ZW1RdC5jcHAJKHJldmlz
aW9uIDcxMDMxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db250ZXh0TWVudUl0ZW1RdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNCw2ICsxMDQsMTIgQEAgdm9pZCBDb250ZXh0TWVudUl0ZW06
OnNldENoZWNrZWQoYm9vbCBvbgogICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5jaGVja2VkID0g
b247CiB9CiAKK2Jvb2wgQ29udGV4dE1lbnVJdGVtOjpjaGVja2VkKCkgY29uc3QKK3sKKyAgICAv
LyBGSVhNRSAtIEltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBDb250ZXh0
TWVudUl0ZW06OnNldEVuYWJsZWQoYm9vbCBvbikKIHsKICAgICBtX3BsYXRmb3JtRGVzY3JpcHRp
b24uZW5hYmxlZCA9IG9uOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db250ZXh0TWVudVF0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3F0L0NvbnRleHRNZW51UXQuY3Bw
CShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vcXQvQ29udGV4dE1lbnVRdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDEzIEBAIFBsYXRmb3JtTWVudURlc2NyaXB0
aW9uIENvbnRleHRNZW51OjpyZWwKICAgICByZXR1cm4gUGxhdGZvcm1NZW51RGVzY3JpcHRpb24o
KTsKIH0KIAorVmVjdG9yPENvbnRleHRNZW51SXRlbT4gY29udGV4dE1lbnVJdGVtVmVjdG9yKFBs
YXRmb3JtTWVudURlc2NyaXB0aW9uKQoreworICAgIC8vIEZJWE1FIC0gSW1wbGVtZW50CisgICAg
CisgICAgVmVjdG9yPENvbnRleHRNZW51SXRlbT4gcmVzdWx0OyAgICAKKyAgICByZXR1cm4gcmVz
dWx0OworfQogCiB9CiAvLyB2aW06IHRzPTQgc3c9NCBldApJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ29udGV4dE1lbnVJdGVtV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL3dpbi9Db250ZXh0TWVudUl0ZW1XaW4uY3BwCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vd2luL0NvbnRleHRNZW51SXRlbVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4NCw2ICsxODQsMTIgQEAgdm9pZCBDb250ZXh0TWVudUl0ZW06OnNldENoZWNrZWQoYm9vbCBj
aAogICAgIH0KIH0KIAorYm9vbCBDb250ZXh0TWVudUl0ZW06OmNoZWNrZWQoKSBjb25zdAorewor
ICAgIC8vIEZJWE1FIC0gSW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIENv
bnRleHRNZW51SXRlbTo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9wbGF0Zm9y
bURlc2NyaXB0aW9uLT5mTWFzayB8PSBNSUlNX1NUQVRFOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ29udGV4dE1lbnVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
d2luL0NvbnRleHRNZW51V2luLmNwcAkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL3dpbi9Db250ZXh0TWVudVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw0ICsxNTUs
MTIgQEAgSE1FTlUgQ29udGV4dE1lbnU6OnJlbGVhc2VQbGF0Zm9ybURlc2NyaQogICAgIHJldHVy
biBkZXNjcmlwdGlvbjsKIH0KIAorVmVjdG9yPENvbnRleHRNZW51SXRlbT4gY29udGV4dE1lbnVJ
dGVtVmVjdG9yKFBsYXRmb3JtTWVudURlc2NyaXB0aW9uKQoreworICAgIC8vIEZJWE1FIC0gSW1w
bGVtZW50CisgICAgCisgICAgVmVjdG9yPENvbnRleHRNZW51SXRlbT4gcmVzdWx0OyAgICAKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCiB9CkluZGV4OiBXZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQyL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBACisyMDEwLTExLTAxICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY2MDU0Nz4gYW5kIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODY5OQorICAgICAgICBDb250ZXh0
IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIuCisKKyAgICAgICAgKiBXZWJLaXQyLnBybzoKKyAg
ICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd2lu
L1dlYktpdDIudmNwcm9qOgorCisgICAgICAgICogU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW06OldlYkNvbnRl
eHRNZW51SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbTo6ZW5jb2Rl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtOjpkZWNvZGUpOgorICAgICAg
ICAoV2ViS2l0OjpraXRJdGVtcyk6CisgICAgICAgICogU2hhcmVkL1dlYkNvbnRleHRNZW51SXRl
bS5oOiBBZGRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW06CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwOgorICAgICAgICAoUVdLUGFnZVBy
aXZhdGU6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkpOiBTdHViIHRvIGtlZXAgdGhlIGJ1aWxkIHdv
cmtpbmcuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRl
eHRNZW51UHJveHkuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJv
eHk6On5XZWJDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1l
bnVQcm94eTo6V2ViQ29udGV4dE1lbnVQcm94eSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG93Q29udGV4
dE1lbnUpOiBTaG93cyB0aGUgbWVudSBhZnRlciByZWNlaXZpbmcgdGhlIG1lc3NhZ2UgZnJvbSB0
aGUgV2ViUHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb250ZXh0TWVu
dUl0ZW1TZWxlY3RlZCk6IFNlbmRzIGluZm8gYWJvdXQgdGhlIHNlbGVjdGVkIG1lbnUgaXRlbSB0
byB0aGUgV2ViUHJvY2VzcworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbTogQWRkZWQuCisgICAgICAgICgrW1dl
Yk1lbnVUYXJnZXQgc2hhcmVkTWVudVRhcmdldF0pOgorICAgICAgICAoLVtXZWJNZW51VGFyZ2V0
IFdlYktpdDo6XSk6CisgICAgICAgICgtW1dlYk1lbnVUYXJnZXQgc2V0TWVudVByb3h5OldlYktp
dDo6XSk6CisgICAgICAgICgtW1dlYk1lbnVUYXJnZXQgZm9yd2FyZENvbnRleHRNZW51QWN0aW9u
Ol0pOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpXZWJDb250ZXh0
TWVudVByb3h5TWFjKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6
fldlYkNvbnRleHRNZW51UHJveHlNYWMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dVByb3h5TWFjOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OnBv
cHVsYXRlTlNNZW51KToKKyAgICAgICAgKFdlYktpdDo6bnNNZW51SXRlbVZlY3Rvcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWM6OnBvcHVsYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6c2hvd0NvbnRleHRNZW51KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6aGlkZUNvbnRleHRNZW51KToKKwor
ICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXc6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkpOiBTdHViIGZvciBub3cuCisgICAgICAgICog
VUlQcm9jZXNzL3dpbi9XZWJWaWV3Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNs
aWVudDo6c2hvd0NvbnRleHRNZW51KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRl
eHRNZW51Q2xpZW50OjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6IFJldHVybiB0aGUg
V2ViQ29yZS1wcm92aWRlZCBkZWZhdWx0CisgICAgICAgICAgbWVudSBmb3Igbm93LiBFbWJlZGRp
bmcgYXBwIGN1c3RvbWl6YXRpb24gd2lsbCBjb21lIGxhdGVyIChzZWUgYnVnIDQ4NzIwKQorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51OjpXZWJDb250ZXh0TWVudSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHRNZW51Ojp+V2ViQ29udGV4dE1lbnUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb250ZXh0TWVudTo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRN
ZW51OjppdGVtU2VsZWN0ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250
ZXh0TWVudS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnU6OmNyZWF0
ZSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYktpdDo6aGFuZGxl
TW91c2VFdmVudCk6IFBhc3MgcmlnaHQgbW91c2UgcHJlc3NlcyBhbG9uZyB0byBXZWJDb3JlIGFz
IGJvdGggYSBtb3VzZSBldmVudCBhbmQgY29udGV4dCBtZW51IGV2ZW50LCAKKyAgICAgICAgICB0
aGUgc2FtZSB3YXkgV2ViS2l0MSBkb2VzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRT
ZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluOgorCiAyMDEwLTExLTAxICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5k
ZXg6IFdlYktpdDIvV2ViS2l0Mi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnBy
bwkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQyL1dlYktpdDIucHJvCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTQsNiArMjE0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL1VzZXJNZXNzYWdl
Q29kZXJzLmggXAogICAgIFNoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmggXAogICAgIFNoYXJlZC9X
ZWJDZXJ0aWZpY2F0ZUluZm8uaCBcCisgICAgU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oIFwK
ICAgICBTaGFyZWQvV2ViRXZlbnQuaCBcCiAgICAgU2hhcmVkL1dlYkVycm9yLmggXAogICAgIFNo
YXJlZC9XZWJFdmVudENvbnZlcnNpb24uaCBcCkBAIC0yNjQsNiArMjY1LDcgQEAgSEVBREVSUyAr
PSBcCiAgICAgVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuaCBcCiAgICAgVUlQcm9jZXNz
L1dlYkNvbnRleHQuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNs
aWVudC5oIFwKKyAgICBVSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5oIFwKICAgICBVSVBy
b2Nlc3MvV2ViQ29udGV4dFVzZXJNZXNzYWdlQ29kZXJzLmggXAogICAgIFVJUHJvY2Vzcy9XZWJF
ZGl0Q29tbWFuZFByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9XZWJGaW5kQ2xpZW50LmggXApAQCAt
MzI5LDYgKzMzMSw3IEBAIEhFQURFUlMgKz0gXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5k
Q29udHJvbGxlci5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZFBhZ2VPdmVybGF5Lmgg
XAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5oIFwKKyAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkVk
aXRDb21tYW5kLmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIFwKICAgICBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmggXApAQCAtMzc2LDYgKzM3OSw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIFNoYXJlZC9xdC9XZWJVUkxSZXF1ZXN0UXQuY3BwIFwKICAgICBTaGFy
ZWQvcXQvV2ViVVJMUmVzcG9uc2VRdC5jcHAgXAogICAgIFNoYXJlZC9WaXNpdGVkTGlua1RhYmxl
LmNwcCBcCisgICAgU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAgXAogICAgIFNoYXJlZC9X
ZWJFcnJvci5jcHAgXAogICAgIFNoYXJlZC9XZWJFdmVudC5jcHAgXAogICAgIFNoYXJlZC9XZWJF
dmVudENvbnZlcnNpb24uY3BwIFwKQEAgLTQ5Miw2ICs0OTYsNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwIFwKICAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZFBhZ2VPdmVybGF5LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1Bh
Z2VPdmVybGF5LmNwcCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNw
cCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkVkaXRDb21tYW5kLmNwcCBcCiAgICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5jcHAgXApJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVt
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3Bw
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2Vi
Q29udGV4dE1lbnVJdGVtLmgiCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1
ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb250
ZXh0TWVudUl0ZW06OldlYkNvbnRleHRNZW51SXRlbSgpCisgICAgOiBtX3R5cGUoV2ViQ29yZTo6
QWN0aW9uVHlwZSkKKyAgICAsIG1fYWN0aW9uKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ05v
QWN0aW9uKQorICAgICwgbV9lbmFibGVkKHRydWUpCisgICAgLCBtX2NoZWNrZWQoZmFsc2UpCit7
Cit9CisKK1dlYkNvbnRleHRNZW51SXRlbTo6V2ViQ29udGV4dE1lbnVJdGVtKFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVR5cGUgdHlwZSwgV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24gYWN0aW9u
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBib29sIGVuYWJsZWQsIGJvb2wgY2hlY2tlZCkKKyAgICA6
IG1fdHlwZSh0eXBlKQorICAgICwgbV9hY3Rpb24oYWN0aW9uKQorICAgICwgbV90aXRsZSh0aXRs
ZSkKKyAgICAsIG1fZW5hYmxlZChlbmFibGVkKQorICAgICwgbV9jaGVja2VkKGNoZWNrZWQpCit7
CisgICAgQVNTRVJUKHR5cGUgPT0gV2ViQ29yZTo6QWN0aW9uVHlwZSB8fCB0eXBlID09IFdlYkNv
cmU6OkNoZWNrYWJsZUFjdGlvblR5cGUgfHwgdHlwZSA9PSBXZWJDb3JlOjpTZXBhcmF0b3JUeXBl
KTsKK30KKworV2ViQ29udGV4dE1lbnVJdGVtOjpXZWJDb250ZXh0TWVudUl0ZW0oV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVHlwZSB0eXBlLCBXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiBhY3Rp
b24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgY29uc3QgVmVjdG9yPFdlYkNv
bnRleHRNZW51SXRlbT4mIHN1Ym1lbnUpCisgICAgOiBtX3R5cGUodHlwZSkKKyAgICAsIG1fYWN0
aW9uKGFjdGlvbikKKyAgICAsIG1fdGl0bGUodGl0bGUpCisgICAgLCBtX2VuYWJsZWQoZW5hYmxl
ZCkKKyAgICAsIG1fY2hlY2tlZChmYWxzZSkKKyAgICAsIG1fc3VibWVudShzdWJtZW51KQorewor
ICAgIEFTU0VSVCh0eXBlID09IFdlYkNvcmU6OlN1Ym1lbnVUeXBlKTsKK30KKworV2ViQ29udGV4
dE1lbnVJdGVtOjpXZWJDb250ZXh0TWVudUl0ZW0oV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtJiBp
dGVtLCBXZWJDb3JlOjpDb250ZXh0TWVudSogbWVudSkKKyAgICA6IG1fdHlwZShpdGVtLnR5cGUo
KSkKKyAgICAsIG1fYWN0aW9uKGl0ZW0uYWN0aW9uKCkpCisgICAgLCBtX3RpdGxlKGl0ZW0udGl0
bGUoKSkKK3sKKyAgICBpZiAobV90eXBlID09IFdlYkNvcmU6OlN1Ym1lbnVUeXBlKSB7CisgICAg
ICAgIFZlY3RvcjxXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0+IGNvcmVTdWJtZW51ID0gV2ViQ29y
ZTo6Y29udGV4dE1lbnVJdGVtVmVjdG9yKGl0ZW0ucGxhdGZvcm1TdWJNZW51KCkpOworICAgICAg
ICBtX3N1Ym1lbnUgPSBraXRJdGVtcyhjb3JlU3VibWVudSwgbWVudSk7CisgICAgfQorICAgIAor
ICAgIG1lbnUtPmNoZWNrT3JFbmFibGVJZk5lZWRlZChpdGVtKTsKKyAgICAKKyAgICBtX2VuYWJs
ZWQgPSBpdGVtLmVuYWJsZWQoKTsKKyAgICBtX2NoZWNrZWQgPSBpdGVtLmNoZWNrZWQoKTsKK30K
Kwordm9pZCBXZWJDb250ZXh0TWVudUl0ZW06OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXIqIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKHN0
YXRpY19jYXN0PHVpbnQzMl90PihtX3R5cGUpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9hY3Rp
b24pLCBtX3RpdGxlLCBtX2NoZWNrZWQsIG1fZW5hYmxlZCwgbV9zdWJtZW51KSk7Cit9CisKK2Jv
b2wgV2ViQ29udGV4dE1lbnVJdGVtOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBk
ZWNvZGVyLCBXZWJDb250ZXh0TWVudUl0ZW0mIGl0ZW0pCit7CisgICAgdWludDMyX3QgdHlwZTsK
KyAgICB1aW50MzJfdCBhY3Rpb247CisgICAgU3RyaW5nIHRpdGxlOworICAgIGJvb2wgY2hlY2tl
ZDsKKyAgICBib29sIGVuYWJsZWQ7CisgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbT4gc3Vi
bWVudTsKKworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dCh0eXBlLCBhY3Rp
b24sIHRpdGxlLCBjaGVja2VkLCBlbmFibGVkLCBzdWJtZW51KSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgV2ViQ29yZTo6QWN0aW9uVHlw
ZToKKyAgICBjYXNlIFdlYkNvcmU6OlNlcGFyYXRvclR5cGU6CisgICAgY2FzZSBXZWJDb3JlOjpD
aGVja2FibGVBY3Rpb25UeXBlOgorICAgICAgICBpdGVtID0gV2ViQ29udGV4dE1lbnVJdGVtKHN0
YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVR5cGU+KHR5cGUpLCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbj4oYWN0aW9uKSwgdGl0bGUsIGVuYWJsZWQsIGNo
ZWNrZWQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OlN1Ym1lbnVUeXBlOgor
ICAgICAgICBpdGVtID0gV2ViQ29udGV4dE1lbnVJdGVtKHN0YXRpY19jYXN0PFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVR5cGU+KHR5cGUpLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250ZXh0TWVu
dUFjdGlvbj4oYWN0aW9uKSwgdGl0bGUsIGVuYWJsZWQsIHN1Ym1lbnUpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitWZWN0b3I8V2Vi
Q29udGV4dE1lbnVJdGVtPiBraXRJdGVtcyhWZWN0b3I8V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
PiYgY29yZUl0ZW1zLCBXZWJDb3JlOjpDb250ZXh0TWVudSogbWVudSkKK3sKKyAgICBWZWN0b3I8
V2ViQ29udGV4dE1lbnVJdGVtPiByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShj
b3JlSXRlbXMuc2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29yZUl0ZW1z
LnNpemUoKTsgKytpKQorICAgICAgICByZXN1bHQuYXBwZW5kKFdlYkNvbnRleHRNZW51SXRlbShj
b3JlSXRlbXNbaV0sIG1lbnUpKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRl
bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oCShy
ZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvbnRleHRN
ZW51SXRlbV9oCisjZGVmaW5lIFdlYkNvbnRleHRNZW51SXRlbV9oCisKKyNpbmNsdWRlIDxXZWJD
b3JlL0NvbnRleHRNZW51SXRlbS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgQ29yZUlQQyB7CisgICAgY2xhc3MgQXJndW1lbnREZWNvZGVyOworICAgIGNs
YXNzIEFyZ3VtZW50RW5jb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNz
IENvbnRleHRNZW51OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYkNvbnRl
eHRNZW51SXRlbSB7CisgICAgV2ViQ29udGV4dE1lbnVJdGVtKCk7CisgICAgV2ViQ29udGV4dE1l
bnVJdGVtKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSYsIFdlYkNvcmU6OkNvbnRleHRNZW51KiBt
ZW51KTsKKyAgICBXZWJDb250ZXh0TWVudUl0ZW0oV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVHlw
ZSwgV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGJvb2wg
ZW5hYmxlZCwgYm9vbCBjaGVja2VkKTsKKyAgICBXZWJDb250ZXh0TWVudUl0ZW0oV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVHlwZSwgV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24sIGNvbnN0IFN0
cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRl
bT4mIHN1Ym1lbnUpOworICAgIAorICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5j
b2RlciopIGNvbnN0OworICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqLCBXZWJDb250ZXh0TWVudUl0ZW0mKTsKKworICAgIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVR5cGUgbV90eXBlOworICAgIFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIG1fYWN0aW9u
OworICAgIFN0cmluZyBtX3RpdGxlOworICAgIGJvb2wgbV9lbmFibGVkOworICAgIGJvb2wgbV9j
aGVja2VkOworICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+IG1fc3VibWVudTsKK307CisK
K1ZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+IGtpdEl0ZW1zKFZlY3RvcjxXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW0+JiwgV2ViQ29yZTo6Q29udGV4dE1lbnUqKTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBXZWJDb250ZXh0TWVudUl0ZW1faApJbmRleDogV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIEZpbmRJbmRpY2F0b3I7CiBjbGFzcyBOYXRpdmVXZWJLZXlib2FyZEV2ZW50Owot
Y2xhc3MgV2ViRWRpdENvbW1hbmRQcm94eTsKIGNsYXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7
CitjbGFzcyBXZWJDb250ZXh0TWVudVByb3h5OworY2xhc3MgV2ViRWRpdENvbW1hbmRQcm94eTsK
IGNsYXNzIFdlYlBvcHVwTWVudVByb3h5OwogCiBjbGFzcyBQYWdlQ2xpZW50IHsKQEAgLTcyLDYg
KzczLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWROb3RIYW5kbGVLZXlFdmVudChj
b25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JikgPSAwOwogCiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eSgpID0gMDsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQ
cm94eShXZWJQYWdlUHJveHkqKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RmluZEluZGlj
YXRvcihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQpID0gMDsKIApJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaAkocmV2aXNpb24gMCkKKysr
IFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29udGV4dE1lbnVQcm94eV9o
CisjZGVmaW5lIFdlYkNvbnRleHRNZW51UHJveHlfaAorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIEludFBvaW50OworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYkNvbnRleHRNZW51SXRlbTsKKworY2xhc3MgV2Vi
Q29udGV4dE1lbnVQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvbnRleHRNZW51UHJveHk+
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJDb250ZXh0TWVudVByb3h5KCkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudShjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBoaWRlQ29udGV4dE1lbnUoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAg
ICBXZWJDb250ZXh0TWVudVByb3h5KCkKKyAgICB7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQb3B1cE1lbnVQcm94eV9oCkluZGV4OiBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0
ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1l
bnVQcm94eS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRVc2VyTWVzc2FnZUNvZGVycy5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkRhdGEuaCIKQEAg
LTExMjQsNiArMTEyNSwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGlkZVBvcHVwTWVudSgpCiAg
ICAgbV9hY3RpdmVQb3B1cE1lbnUgPSAwOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0Nv
bnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0IFZl
Y3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykKK3sKKyAgICBpZiAobV9hY3RpdmVDb250
ZXh0TWVudSkKKyAgICAgICAgbV9hY3RpdmVDb250ZXh0TWVudS0+aGlkZUNvbnRleHRNZW51KCk7
CisgICAgZWxzZQorICAgICAgICBtX2FjdGl2ZUNvbnRleHRNZW51ID0gbV9wYWdlQ2xpZW50LT5j
cmVhdGVDb250ZXh0TWVudVByb3h5KHRoaXMpOworICAgICAgCisgICAgbV9hY3RpdmVDb250ZXh0
TWVudS0+c2hvd0NvbnRleHRNZW51KG1lbnVMb2NhdGlvbiwgaXRlbXMpOworfQorCit2b2lkIFdl
YlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJ
dGVtJiBpdGVtKQoreworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
U2VsZWN0SXRlbUZyb21BY3RpdmVDb250ZXh0TWVudShpdGVtKSwgbV9wYWdlSUQpOworfQorCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRD
b21tYW5kUHJveHk+IGNvbW1hbmRQcm94eSwgVW5kb09yUmVkbyB1bmRvT3JSZWRvKQogewogICAg
IG1fcGFnZUNsaWVudC0+cmVnaXN0ZXJFZGl0Q29tbWFuZChjb21tYW5kUHJveHksIHVuZG9PclJl
ZG8pOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDcxMDMxKQorKysg
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJTaGFyZWRN
ZW1vcnkuaCIKICNpbmNsdWRlICJXS0Jhc2UuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0
ZW0uaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgIldlYkZpbmRDbGllbnQuaCIK
ICNpbmNsdWRlICJXZWJGb3JtQ2xpZW50LmgiCkBAIC03Nyw2ICs3OCw3IEBAIGNsYXNzIFBsYXRm
b3JtQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgU3RyaW5nUGFpclZlY3RvcjsKIGNsYXNzIFdlYkJh
Y2tGb3J3YXJkTGlzdDsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CitjbGFzcyBXZWJD
b250ZXh0TWVudVByb3h5OwogY2xhc3MgV2ViRGF0YTsKIGNsYXNzIFdlYkVkaXRDb21tYW5kUHJv
eHk7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwpAQCAtMjMxLDYgKzIzMyw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZ2V0U3RhdGlzdGljcyhXS0NvbnRleHRTdGF0aXN0aWNzKik7CiAKKyAgICB2
b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbSYpOwor
CiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShXZWJQYWdlTmFtZXNwYWNlKiwgdWludDY0X3Qg
cGFnZUlEKTsKIApAQCAtMzIxLDYgKzMyNSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaG93UG9w
dXBNZW51KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QsIGNvbnN0IFZlY3RvcjxXZWJQb3B1
cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKICAgICB2b2lkIGhpZGVQb3B1
cE1lbnUoKTsKIAorICAgIC8vIENvbnRleHQgTWVudS4KKyAgICB2b2lkIHNob3dDb250ZXh0TWVu
dShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0
ZW0+JiBpdGVtcyk7CisKICAgICB2b2lkIHRha2VGb2N1cyhib29sIGRpcmVjdGlvbik7CiAgICAg
dm9pZCBzZXRUb29sVGlwKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0
IFdlYkNvcmU6OkN1cnNvciYpOwpAQCAtMzYxLDYgKzM2OCw3IEBAIHByaXZhdGU6CiAgICAgSGFz
aFNldDxXZWJFZGl0Q29tbWFuZFByb3h5Kj4gbV9lZGl0Q29tbWFuZFNldDsKIAogICAgIFJlZlB0
cjxXZWJQb3B1cE1lbnVQcm94eT4gbV9hY3RpdmVQb3B1cE1lbnU7CisgICAgUmVmUHRyPFdlYkNv
bnRleHRNZW51UHJveHk+IG1fYWN0aXZlQ29udGV4dE1lbnU7CiAKICAgICBkb3VibGUgbV9lc3Rp
bWF0ZWRQcm9ncmVzczsKIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsOSBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgICMgUG9wdXBNZW51LgogICAgIFNob3dQb3B1cE1l
bnUoV2ViQ29yZTo6SW50UmVjdCByZWN0LCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+IGl0
ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCiAgICAgSGlkZVBvcHVwTWVudSgpCisgICAgCisg
ICAgIyBDb250ZXh0TWVudQorICAgIFNob3dDb250ZXh0TWVudShXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCwgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPiBpdGVtcykKIAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAjIEFjY2VsZXJhdGVkIGNvbXBzaXRpbmcg
bWVzc2FnZXMuCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1w
bC5oCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNs
aWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBkaWROb3RIYW5kbGVLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50Jik7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNy
ZWF0ZVBvcHVwTWVudVByb3h5KCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRleHRN
ZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Kik7CiAKICAgICB2
b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRl
T3V0KTsKIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBs
Lm1tCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNs
aWVudEltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIldL
QVBJQ2FzdC5oIgogI2ltcG9ydCAiV0tTdHJpbmdDRi5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJu
YWwuaCIKKyNpbXBvcnQgIldlYkNvbnRleHRNZW51UHJveHlNYWMuaCIKICNpbXBvcnQgIldlYkVk
aXRDb21tYW5kUHJveHkuaCIKICNpbXBvcnQgIldlYlBvcHVwTWVudVByb3h5TWFjLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL0N1cnNvci5oPgpAQCAtMjQ1LDYgKzI0NiwxMSBAQCBQYXNzUmVmUHRyPFdl
YlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50CiAgICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5
TWFjOjpjcmVhdGUobV93a1ZpZXcpOwogfQogCitQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJv
eHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSog
cGFnZSkKK3sKKyAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y3JlYXRlKG1fd2tW
aWV3LCBwYWdlKTsKK30KKwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0RmluZEluZGljYXRvcihQ
YXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+IGZpbmRJbmRpY2F0b3IsIGJvb2wgZmFkZU91dCkKIHsK
ICAgICBbbV93a1ZpZXcgX3NldEZpbmRJbmRpY2F0b3I6ZmluZEluZGljYXRvciBmYWRlT3V0OmZh
ZGVPdXRdOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAkocmV2aXNpb24g
NzEwMzEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAj
aW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQu
aCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViRXZlbnRG
YWN0b3J5UXQuaCIKICNpbmNsdWRlICJXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRl
ICJXZWJQb3B1cE1lbnVQcm94eVF0LmgiCkBAIC0xMzQsNiArMTM1LDEyIEBAIFBhc3NSZWZQdHI8
V2ViUG9wdXBNZW51UHJveHk+IFFXS1BhZ2VQcmkKICAgICByZXR1cm4gV2ViUG9wdXBNZW51UHJv
eHlRdDo6Y3JlYXRlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUVdL
UGFnZVByaXZhdGU6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKK3sKKyAg
ICAvLyBGSVhNRTogSW1wbGVtZW50OworICAgIHJldHVybiAwOworfQorCiB2b2lkIFFXS1BhZ2VQ
cml2YXRlOjpzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJvb2wg
ZmFkZU91dCkKIHsKIH0KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3Au
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgJKHJl
dmlzaW9uIDcxMDMxKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZE5vdEhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktpdDo6
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJLaXQ6
OldlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eSgpOworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51
UHJveHkoV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRGaW5k
SW5kaWNhdG9yKFBhc3NSZWZQdHI8V2ViS2l0OjpGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0
KTsKIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94
eU1hYy5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRN
ZW51UHJveHlNYWMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViQ29udGV4dE1lbnVQcm94eU1hY19oCisjZGVmaW5lIFdlYkNvbnRleHRNZW51
UHJveHlNYWNfaAorCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgorI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmZGVmIF9fT0JKQ19fCitAY2xhc3MgTlNQb3BVcEJ1dHRv
bkNlbGw7CitAY2xhc3MgV0tWaWV3OworI2Vsc2UKK2NsYXNzIE5TUG9wVXBCdXR0b25DZWxsOwor
Y2xhc3MgV0tWaWV3OworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQ
YWdlUHJveHk7CisKK2NsYXNzIFdlYkNvbnRleHRNZW51UHJveHlNYWMgOiBwdWJsaWMgV2ViQ29u
dGV4dE1lbnVQcm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29udGV4
dE1lbnVQcm94eU1hYz4gY3JlYXRlKFdLVmlldyogd2ViVmlldywgV2ViUGFnZVByb3h5KiBwYWdl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb250ZXh0TWVudVByb3h5
TWFjKHdlYlZpZXcsIHBhZ2UpKTsKKyAgICB9CisgICAgfldlYkNvbnRleHRNZW51UHJveHlNYWMo
KTsKKworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtPiYpOworICAgIHZpcnR1YWwg
dm9pZCBoaWRlQ29udGV4dE1lbnUoKTsKKyAgICAKKyAgICB2b2lkIGNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbSYpOworCitwcml2YXRlOgorICAgIFdlYkNv
bnRleHRNZW51UHJveHlNYWMoV0tWaWV3KiwgV2ViUGFnZVByb3h5Kik7CisKKyAgICB2b2lkIHBv
cHVsYXRlKGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+Jik7CisKKyAgICBSZXRhaW5Q
dHI8TlNQb3BVcEJ1dHRvbkNlbGw+IG1fcG9wdXA7CisgICAgV0tWaWV3KiBtX3dlYlZpZXc7Cisg
ICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFdlYkNvbnRleHRNZW51UHJveHlNYWNfaApJbmRleDogV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0JKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViQ29udGV4dE1l
bnVQcm94eU1hYy5oIgorCisjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJX
ZWJDb250ZXh0TWVudUl0ZW0uaCIKKyNpbmNsdWRlICJXS1ZpZXcuaCIKKworI2luY2x1ZGUgPFdl
YkNvcmUvSW50UmVjdC5oPgorI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQGludGVyZmFjZSBXZWJNZW51VGFyZ2V0IDogTlNP
YmplY3QgeworICAgIFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyogX21lbnVQcm94eTsK
K30KKysgKFdlYk1lbnVUYXJnZXQqKXNoYXJlZE1lbnVUYXJnZXQ7CistIChXZWJLaXQ6OldlYkNv
bnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eTsKKy0gKHZvaWQpc2V0TWVudVByb3h5OihXZWJL
aXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eTsKKy0gKHZvaWQpZm9yd2FyZENv
bnRleHRNZW51QWN0aW9uOihpZClzZW5kZXI7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJN
ZW51VGFyZ2V0CisKKysgKFdlYk1lbnVUYXJnZXQqKXNoYXJlZE1lbnVUYXJnZXQKK3sKKyAgICBz
dGF0aWMgV2ViTWVudVRhcmdldCogdGFyZ2V0OworICAgIGlmICghdGFyZ2V0KQorICAgICAgICB0
YXJnZXQgPSBbW1dlYk1lbnVUYXJnZXQgYWxsb2NdIGluaXRdOworICAgIHJldHVybiB0YXJnZXQ7
Cit9CisKKy0gKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyopbWVudVByb3h5Cit7Cisg
ICAgcmV0dXJuIF9tZW51UHJveHk7Cit9CisKKy0gKHZvaWQpc2V0TWVudVByb3h5OihXZWJLaXQ6
OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eQoreworICAgIF9tZW51UHJveHkgPSBt
ZW51UHJveHk7Cit9CisKKy0gKHZvaWQpZm9yd2FyZENvbnRleHRNZW51QWN0aW9uOihpZClzZW5k
ZXIKK3sKKyAgICBXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbSBpdGVtKEFjdGlvblR5cGUsIHN0
YXRpY19jYXN0PENvbnRleHRNZW51QWN0aW9uPihbc2VuZGVyIHRhZ10pLCBbc2VuZGVyIHRpdGxl
XSwgW3NlbmRlciBpc0VuYWJsZWRdLCBbc2VuZGVyIHN0YXRlXSA9PSBOU09uU3RhdGUpOworICAg
IF9tZW51UHJveHktPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGl0ZW0pOworfQorCitAZW5kCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb250ZXh0TWVudVByb3h5TWFjOjpXZWJDb250ZXh0
TWVudVByb3h5TWFjKFdLVmlldyogd2ViVmlldywgV2ViUGFnZVByb3h5KiBwYWdlKQorICAgIDog
bV93ZWJWaWV3KHdlYlZpZXcpCisgICAgLCBtX3BhZ2UocGFnZSkKK3sKK30KKworV2ViQ29udGV4
dE1lbnVQcm94eU1hYzo6fldlYkNvbnRleHRNZW51UHJveHlNYWMoKQoreworICAgIGlmIChtX3Bv
cHVwKQorICAgICAgICBbbV9wb3B1cC5nZXQoKSBzZXRDb250cm9sVmlldzpuaWxdOworfQorCit2
b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0
IFdlYkNvbnRleHRNZW51SXRlbSYgaXRlbSkKK3sKKyAgICBtX3BhZ2UtPmNvbnRleHRNZW51SXRl
bVNlbGVjdGVkKGl0ZW0pOworfQorCitzdGF0aWMgdm9pZCBwb3B1bGF0ZU5TTWVudShOU01lbnUq
IG1lbnUsIGNvbnN0IFZlY3RvcjxSZXRhaW5QdHI8TlNNZW51SXRlbT4gPiYgbWVudUl0ZW1WZWN0
b3IpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1lbnVJdGVtVmVjdG9yLnNpemUo
KTsgKytpKSB7CisgICAgICAgIE5TSW50ZWdlciBvbGRTdGF0ZSA9IFttZW51SXRlbVZlY3Rvcltp
XS5nZXQoKSBzdGF0ZV07CisgICAgICAgIFttZW51IGFkZEl0ZW06bWVudUl0ZW1WZWN0b3JbaV0u
Z2V0KCldOworICAgICAgICBbbWVudUl0ZW1WZWN0b3JbaV0uZ2V0KCkgc2V0U3RhdGU6b2xkU3Rh
dGVdOworICAgIH0KK30KKworc3RhdGljIFZlY3RvcjxSZXRhaW5QdHI8TlNNZW51SXRlbT4gPiBu
c01lbnVJdGVtVmVjdG9yKGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykK
K3sKKyAgICBWZWN0b3I8UmV0YWluUHRyPE5TTWVudUl0ZW0+ID4gcmVzdWx0OworCisgICAgdW5z
aWduZWQgc2l6ZSA9IGl0ZW1zLnNpemUoKTsKKyAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KHNp
emUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAg
c3dpdGNoIChpdGVtc1tpXS5tX3R5cGUpIHsKKyAgICAgICAgY2FzZSBBY3Rpb25UeXBlOgorICAg
ICAgICBjYXNlIENoZWNrYWJsZUFjdGlvblR5cGU6CisgICAgICAgIHsKKyAgICAgICAgICAgIE5T
TWVudUl0ZW0qIG1lbnVJdGVtID0gW1tOU01lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOm5z
U3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoaXRlbXNbaV0ubV90aXRsZSkgYWN0aW9uOkBzZWxlY3Rv
cihmb3J3YXJkQ29udGV4dE1lbnVBY3Rpb246KSBrZXlFcXVpdmFsZW50OkAiIl07CisgICAgICAg
ICAgICBbbWVudUl0ZW0gc2V0VGFnOml0ZW1zW2ldLm1fYWN0aW9uXTsKKyAgICAgICAgICAgIFtt
ZW51SXRlbSBzZXRFbmFibGVkOml0ZW1zW2ldLm1fZW5hYmxlZF07CisgICAgICAgICAgICBbbWVu
dUl0ZW0gc2V0U3RhdGU6aXRlbXNbaV0ubV9jaGVja2VkID8gTlNPblN0YXRlIDogTlNPZmZTdGF0
ZV07CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
UmV0YWluUHRyPE5TTWVudUl0ZW0+KEFkb3B0TlMsIG1lbnVJdGVtKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFNlcGFyYXRvclR5cGU6CisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKFtOU01lbnVJdGVtIHNlcGFyYXRvckl0ZW1dKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFN1Ym1lbnVUeXBlOgorICAgICAgICB7ICAgICAgICAgICAg
CisgICAgICAgICAgICBOU01lbnUqIG1lbnUgPSBbW05TTWVudSBhbGxvY10gaW5pdFdpdGhUaXRs
ZTpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGl0ZW1zW2ldLm1fdGl0bGUpXTsKKyAgICAgICAg
ICAgIFttZW51IHNldEF1dG9lbmFibGVzSXRlbXM6Tk9dOworICAgICAgICAgICAgcG9wdWxhdGVO
U01lbnUobWVudSwgbnNNZW51SXRlbVZlY3RvcihpdGVtc1tpXS5tX3N1Ym1lbnUpKTsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIE5TTWVudUl0ZW0qIG1lbnVJdGVtID0gW1tOU01lbnVJ
dGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoaXRlbXNb
aV0ubV90aXRsZSkgYWN0aW9uOkBzZWxlY3Rvcihmb3J3YXJkQ29udGV4dE1lbnVBY3Rpb246KSBr
ZXlFcXVpdmFsZW50OkAiIl07CisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0RW5hYmxlZDppdGVt
c1tpXS5tX2VuYWJsZWRdOworICAgICAgICAgICAgW21lbnVJdGVtIHNldFN1Ym1lbnU6bWVudV07
CisgICAgICAgICAgICBbbWVudSByZWxlYXNlXTsKKworICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChSZXRhaW5QdHI8TlNNZW51SXRlbT4oQWRvcHROUywgbWVudUl0ZW0pKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgV2Vi
TWVudVRhcmdldCogdGFyZ2V0ID0gW1dlYk1lbnVUYXJnZXQgc2hhcmVkTWVudVRhcmdldF07Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgW3Jlc3VsdFtp
XS5nZXQoKSBzZXRUYXJnZXQ6dGFyZ2V0XTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit2b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OnBvcHVsYXRlKGNvbnN0IFZlY3RvcjxXZWJD
b250ZXh0TWVudUl0ZW0+JiBpdGVtcykKK3sKKyAgICBpZiAobV9wb3B1cCkKKyAgICAgICAgW21f
cG9wdXAuZ2V0KCkgcmVtb3ZlQWxsSXRlbXNdOworICAgIGVsc2UgeworICAgICAgICBtX3BvcHVw
LmFkb3B0TlMoW1tOU1BvcFVwQnV0dG9uQ2VsbCBhbGxvY10gaW5pdFRleHRDZWxsOkAiIiBwdWxs
c0Rvd246Tk9dKTsKKyAgICAgICAgW21fcG9wdXAuZ2V0KCkgc2V0VXNlc0l0ZW1Gcm9tTWVudTpO
T107CisgICAgICAgIFttX3BvcHVwLmdldCgpIHNldEF1dG9lbmFibGVzSXRlbXM6Tk9dOworICAg
IH0KKworICAgIE5TTWVudSogbWVudSA9IFttX3BvcHVwLmdldCgpIG1lbnVdOworICAgIHBvcHVs
YXRlTlNNZW51KG1lbnUsIG5zTWVudUl0ZW1WZWN0b3IoaXRlbXMpKTsKK30KKwordm9pZCBXZWJD
b250ZXh0TWVudVByb3h5TWFjOjpzaG93Q29udGV4dE1lbnUoY29uc3QgSW50UG9pbnQmIG1lbnVM
b2NhdGlvbiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbT4mIGl0ZW1zKQoreworICAg
IHBvcHVsYXRlKGl0ZW1zKTsKKyAgICBbW1dlYk1lbnVUYXJnZXQgc2hhcmVkTWVudVRhcmdldF0g
c2V0TWVudVByb3h5OnRoaXNdOworICAgIAorICAgIE5TUmVjdCBtZW51UmVjdCA9IE5TTWFrZVJl
Y3QobWVudUxvY2F0aW9uLngoKSwgbWVudUxvY2F0aW9uLnkoKSwgMCwgMCk7CisgICAgCisgICAg
W21fcG9wdXAuZ2V0KCkgYXR0YWNoUG9wVXBXaXRoRnJhbWU6bWVudVJlY3QgaW5WaWV3Om1fd2Vi
Vmlld107CisKKyAgICBOU01lbnUqIG1lbnUgPSBbbV9wb3B1cC5nZXQoKSBtZW51XTsKKworICAg
IC8vIFRoZXNlIHZhbHVlcyB3ZXJlIGJvcnJvd2VkIGZyb20gQXBwS2l0IHRvIG1hdGNoIHRoZWly
IHBsYWNlbWVudCBvZiB0aGUgbWVudS4KKyAgICBOU1JlY3QgdGl0bGVGcmFtZSA9IFttX3BvcHVw
LmdldCgpICB0aXRsZVJlY3RGb3JCb3VuZHM6bWVudVJlY3RdOworICAgIGlmICh0aXRsZUZyYW1l
LnNpemUud2lkdGggPD0gMCB8fCB0aXRsZUZyYW1lLnNpemUuaGVpZ2h0IDw9IDApCisgICAgICAg
IHRpdGxlRnJhbWUgPSBtZW51UmVjdDsKKyAgICBmbG9hdCB2ZXJ0T2Zmc2V0ID0gcm91bmRmKChO
U01heFkobWVudVJlY3QpIC0gTlNNYXhZKHRpdGxlRnJhbWUpKSArIE5TSGVpZ2h0KHRpdGxlRnJh
bWUpKTsKKyAgICBOU1BvaW50IGxvY2F0aW9uID0gTlNNYWtlUG9pbnQoTlNNaW5YKG1lbnVSZWN0
KSwgTlNNYXhZKG1lbnVSZWN0KSAtIHZlcnRPZmZzZXQpOworCisgICAgUmV0YWluUHRyPE5TVmll
dz4gZHVtbXlWaWV3KEFkb3B0TlMsIFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOm1lbnVS
ZWN0XSk7CisgICAgW21fd2ViVmlldyBhZGRTdWJ2aWV3OmR1bW15Vmlldy5nZXQoKV07CisgICAg
bG9jYXRpb24gPSBbZHVtbXlWaWV3LmdldCgpIGNvbnZlcnRQb2ludDpsb2NhdGlvbiBmcm9tVmll
dzptX3dlYlZpZXddOworCisgICAgV0tQb3B1cE1lbnUobWVudSwgbG9jYXRpb24sIHJvdW5kZihO
U1dpZHRoKG1lbnVSZWN0KSksIGR1bW15Vmlldy5nZXQoKSwgLTEsIG5pbCk7CisKKyAgICBbbV9w
b3B1cC5nZXQoKSBkaXNtaXNzUG9wVXBdOworICAgIFtkdW1teVZpZXcuZ2V0KCkgcmVtb3ZlRnJv
bVN1cGVydmlld107Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6aGlkZUNvbnRl
eHRNZW51KCkKK3sKKyAgICBbbV9wb3B1cC5nZXQoKSBkaXNtaXNzUG9wVXBdOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAJKHJldmlz
aW9uIDcxMDMxKQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MjUsNiArNjI1LDEyIEBAIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+
IFdlYlZpZXc6OmMKICAgICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlXaW46OmNyZWF0ZSgpOwog
fQogCitQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFdlYlZpZXc6OmNyZWF0ZUNvbnRl
eHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50Lgor
ICAgIHJldHVybiAwOworfQorCiB2b2lkIFdlYlZpZXc6OnNldEZpbmRJbmRpY2F0b3IoUGFzc1Jl
ZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KQogewogICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQuCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDcxMDMxKQorKysg
V2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYg
KzEwNSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVy
dFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWROb3RIYW5kbGVLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50Jik7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQ
cm94eSgpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVh
dGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRG
aW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJvb2wgZmFkZU91dCk7CiAK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkluZGV4OiBXZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY0LDgg
KzE2NCwxNSBAQAogCQkxQzhFMjkzQTEyNzYxRTVCMDBCQzdCRDAgLyogV0tJbnNwZWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI5Mzgx
Mjc2MUU1QjAwQkM3QkQwIC8qIFdLSW5zcGVjdG9yLmNwcCAqLzsgfTsKIAkJNTE1NzhCODMxMjA5
RUNFRjAwQTM3QzRBIC8qIFdlYkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNTc4QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggKi87
IH07CiAJCTUxNkE0QTVEMTIwQTJDQ0QwMEMwNUI3RiAvKiBXZWJFcnJvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2QTRBNUIxMjBBMkNDRDAwQzA1
QjdGIC8qIFdlYkVycm9yLmggKi87IH07CisJCTUxODcxQjVCMTI3Q0I4OUQwMEY3NjIzMiAvKiBX
ZWJDb250ZXh0TWVudS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwICov
OyB9OworCQk1MTg3MUI1QzEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODcxQjVBMTI3Q0I4
OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovOyB9OwogCQk1MUE3RjJGMzEyNUJGODIw
MDA4QUVCMUQgLyogTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFBN0YyRjIxMjVCRjgyMDAwOEFFQjFEIC8qIExvZ2dpbmcuaCAqLzsgfTsK
IAkJNTFBN0YyRjUxMjVCRjhENDAwOEFFQjFEIC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBN0YyRjQxMjVCRjhENDAwOEFFQjFE
IC8qIExvZ2dpbmcuY3BwICovOyB9OworCQk1MUFDQkExNTEyNzlFOEMzMDBEMjAzQjkgLyogV2Vi
Q29udGV4dE1lbnVJdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQUNCQTEzMTI3OUU4QzMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudUl0ZW0u
Y3BwICovOyB9OworCQk1MUFDQkExNjEyNzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVJ
dGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFD
QkExNDEyNzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggKi87IH07CisJCTUx
QUNCQjgyMTI3QThCQUQwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFDQkI4MTEyN0E4QkFEMDBE
MjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eS5oICovOyB9OworCQk1MUFDQkJBMDEyN0E4RjJD
MDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQ0JCOUUxMjdBOEYyQzAwRDIwM0I5IC8qIFdl
YkNvbnRleHRNZW51UHJveHlNYWMuaCAqLzsgfTsKKwkJNTFBQ0JCQTExMjdBOEYyQzAwRDIwM0I5
IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFDQkI5RjEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4
dE1lbnVQcm94eU1hYy5tbSAqLzsgfTsKIAkJNTFCMzAwNTAxMjUyOUQwRTAwMEI1Q0EwIC8qIFdl
YkJhY2tGb3J3YXJkTGlzdENGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQjMwMDRFMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJCYWNrRm9yd2FyZExp
c3RDRi5jcHAgKi87IH07CiAJCTUxQjMwMDUxMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJQYWdlUHJv
eHlDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUIzMDA0RjEyNTI5RDBFMDAwQjVDQTAgLyogV2ViUGFnZVByb3h5Q0YuY3BwICovOyB9OwogCQk2
RDhBOTFBNjExRjBFRkQxMDBERDAxRkUgLyogY29tLmFwcGxlLldlYlByb2Nlc3Muc2IgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZEOEE5MUE1MTFGMEVG
RDEwMEREMDFGRSAvKiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYiAqLzsgfTsKQEAgLTY3MCw4ICs2
NzcsMTUgQEAKIAkJMzJEQkNGNUUwMzcwQURFRTAwQzkxNzgzIC8qIFdlYktpdDJQcmVmaXguaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0MlByZWZpeC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTU3OEI4MjEyMDlFQ0VGMDBBMzdDNEEgLyogV2ViRGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEYXRhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNkE0QTVCMTIwQTJDQ0QwMEMwNUI3RiAvKiBXZWJFcnJv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJFcnJvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29u
dGV4dE1lbnUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29u
dGV4dE1lbnUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTg3MUI1QTEyN0NC
ODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViQ29udGV4dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFBN0YyRjIxMjVCRjgyMDAwOEFFQjFEIC8qIExvZ2dpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTG9nZ2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUE3RjJGNDEyNUJGOEQ0MDA4QUVCMUQgLyogTG9nZ2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTFBQ0JBMTMxMjc5RThDMzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51SXRlbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudUl0ZW0u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUFDQkExNDEyNzlFOEMzMDBEMjAz
QjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkNvbnRleHRNZW51SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MUFDQkI4MTEyN0E4QkFEMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudVByb3h5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQUNCQjlFMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250
ZXh0TWVudVByb3h5TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNv
bnRleHRNZW51UHJveHlNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQ0JC
OUYxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIzMDA0RTEyNTI5RDBFMDAwQjVDQTAg
LyogV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwOyBwYXRoID0gY2YvV2ViQmFja0Zvcndh
cmRMaXN0Q0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIzMDA0RjEyNTI5
RDBFMDAwQjVDQTAgLyogV2ViUGFnZVByb3h5Q0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gV2ViUGFnZVByb3h5Q0YuY3BwOyBwYXRoID0gY2YvV2ViUGFnZVByb3h5
Q0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1REFENzI5NDExNkZGNzBCMDBF
RTUzOTYgLyogV2ViUHJvY2Vzcy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBXZWJQcm9jZXNzLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTI3NCwxMiArMTI4OCwxNCBAQAogCQkJCUJDQjBBRUU3MTIyRjUzRTMwMEIxMzQxRSAvKiBNdXRh
YmxlRGljdGlvbmFyeS5oICovLAogCQkJCUMwMkJGRjE1MTI1MTRGRDgwMDlDQ0JFQSAvKiBOYXRp
dmVXZWJLZXlib2FyZEV2ZW50LmggKi8sCiAJCQkJQkNDNTcxNjExMTVBREI0MjAwMUNDQUY5IC8q
IE5vdEltcGxlbWVudGVkLmggKi8sCisJCQkJQkNCRDNDM0ExMjVCRkE3QTAwRDJDMjlGIC8qIFN0
cmluZ1BhaXJWZWN0b3IuaCAqLywKIAkJCQlCQ0IwQjBERjEyMzA1QUIxMDBCMTM0MUUgLyogVXNl
ck1lc3NhZ2VDb2RlcnMuaCAqLywKIAkJCQkxQTBGMjlDOTEyMEIzNzE2MDA1M0QxQjkgLyogVmlz
aXRlZExpbmtUYWJsZS5jcHAgKi8sCiAJCQkJMUEwRjI5Q0ExMjBCMzcxNjAwNTNEMUI5IC8qIFZp
c2l0ZWRMaW5rVGFibGUuaCAqLywKIAkJCQlCQzFERDdCMTExNERDMzk2MDA1QURBRjMgLyogV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmggKi8sCiAJCQkJQkNGNTA3MjYxMjQzMjlBQTAwNTk1NUFFIC8q
IFdlYkNlcnRpZmljYXRlSW5mby5oICovLAotCQkJCUJDQkQzQzNBMTI1QkZBN0EwMEQyQzI5RiAv
KiBTdHJpbmdQYWlyVmVjdG9yLmggKi8sCisJCQkJNTFBQ0JBMTMxMjc5RThDMzAwRDIwM0I5IC8q
IFdlYkNvbnRleHRNZW51SXRlbS5jcHAgKi8sCisJCQkJNTFBQ0JBMTQxMjc5RThDMzAwRDIwM0I5
IC8qIFdlYkNvbnRleHRNZW51SXRlbS5oICovLAogCQkJCTUxNTc4QjgyMTIwOUVDRUYwMEEzN0M0
QSAvKiBXZWJEYXRhLmggKi8sCiAJCQkJQkM1NzU2MTIxMjZFMDEzODAwNkYwRjEyIC8qIFdlYkVy
cm9yLmNwcCAqLywKIAkJCQk1MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0YgLyogV2ViRXJyb3IuaCAq
LywKQEAgLTE0NTEsNiArMTQ2Nyw4IEBACiAJCUJDMDMyRDVFMTBGNDM3MkIwMDU4QzE1QSAvKiBX
ZWJQYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1
MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwICovLAorCQkJCTUx
ODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovLAogCQkJCUJDOTYz
RDZDMTEzREQxOTUwMDU3NEJFMiAvKiBtYWMgKi8sCiAJCQkJQkM1RjdCQjIxMTgyMzc2QzAwNTJD
MDJDIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5jcHAgKi8sCiAJCQkJQkM1RjdCQjMxMTgy
Mzc2QzAwNTJDMDJDIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5oICovLApAQCAtMTUwOCw2
ICsxNTI2LDcgQEAKIAkJCQlCQzY0NkJGNjExREQzNzdCMDA2NDU1QjAgLyogV2ViQmFja0Zvcndh
cmRMaXN0SXRlbS5oICovLAogCQkJCUJDQjlFMjQyMTEyMERBQ0EwMEExMzdFMCAvKiBXZWJDb250
ZXh0LmNwcCAqLywKIAkJCQlCQ0I5RTI0MTExMjBEQUNBMDBBMTM3RTAgLyogV2ViQ29udGV4dC5o
ICovLAorCQkJCTUxQUNCQjgxMTI3QThCQUQwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5
LmggKi8sCiAJCQkJQkNERTA1OUExMUNEQThBRTAwRTQxQUYxIC8qIFdlYkNvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5jcHAgKi8sCiAJCQkJQkNERTA1OTkxMUNEQThBRTAwRTQxQUYxIC8qIFdl
YkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovLAogCQkJCUJDQjBCMERCMTIzMDVBMjUw
MEIxMzQxRSAvKiBXZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaCAqLywKQEAgLTE4NjEsNiAr
MTg4MCw4IEBACiAJCQkJQkMyNjUxRjUxMTgyNUVGODAwMjQzRTEyIC8qIENodW5rZWRVcGRhdGVE
cmF3aW5nQXJlYVByb3h5TWFjLm1tICovLAogCQkJCTBGNTI2NUJCMTFERDM3ODYwMDA2RDMzQyAv
KiBMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHlNYWMubW0gKi8sCiAJCQkJMUExQzY0ODYxMUY0
MTVCNzAwNTUzQzE5IC8qIFdlYkNvbnRleHRNYWMubW0gKi8sCisJCQkJNTFBQ0JCOUUxMjdBOEYy
QzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMuaCAqLywKKwkJCQk1MUFDQkI5RjEy
N0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSAqLywKIAkJCQlCQzU3
NTA5NTEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlNYWMuaCAqLywKIAkJCQlC
QzU3NTA5NjEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlNYWMubW0gKi8sCiAJ
CQkpOwpAQCAtMjIxMSw3ICsyMjMyLDExIEBACiAJCQkJOTM1RUVCQTQxMjc3NjFENjAwMzMyMkI4
IC8qIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUE2MTYxNTAxMjc3OThCNTAwM0FDRDg2IC8qIERvd25sb2FkTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE2MTYxRDQxMjc4OTgxQzAwM0FDRDg2IC8qIERvd25sb2FkLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1MUFDQkExNjEyNzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVJ
dGVtLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUFDQkI4MjEyN0E4QkFEMDBEMjAzQjkgLyogV2Vi
Q29udGV4dE1lbnVQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFBQ0JCQTAxMjdBOEYyQzAw
RDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
MTE5QTk1MTI3Qjc5NjIwMEE5RUNCMSAvKiBNZXNzYWdlU2VuZGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MTg3MUI1QzEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtMjUzNCwxMiArMjU1OSwxNSBAQAogCQkJCTFBNjE2MTRGMTI3Nzk4QjUwMDNB
Q0Q4NiAvKiBEb3dubG9hZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2MTYxRDUx
Mjc4OTgxQzAwM0FDRDg2IC8qIERvd25sb2FkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNjE2
Mzk2MTI3ODlCMkYwMDNBQ0Q4NiAvKiBEb3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTUxQUNCQTE1MTI3OUU4QzMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNTFBQ0JCQTExMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51
UHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMDMzN0RBRTEyN0EyNEZFMDA4RkY0RjQg
LyogV2ViRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdEQjAxMjdBMjhEMDAwOEZG
NEY0IC8qIFdlYk1vdXNlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdERDExMjdB
Mjk4MDAwOEZGNEY0IC8qIFdlYldoZWVsRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzAz
MzdERDMxMjdBMkEwRTAwOEZGNEY0IC8qIFdlYktleWJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzAzMzdERDgxMjdBNTFCNjAwOEZGNEY0IC8qIFdlYlRvdWNoRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdEREQxMjdBNTIxQzAwOEZGNEY0IC8qIFdlYlBsYXRmb3Jt
VG91Y2hQb2ludC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg3MUI1QjEyN0NCODlEMDBGNzYy
MzIgLyogV2ViQ29udGV4dE1lbnUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAko
cmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5j
bHVkZSAiRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdl
Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnUuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZy
YW1lTG9hZGVyQ2xpZW50LmgiCkBAIC01MjUsNiArNTI2LDEzIEBAIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6U2VhcmNoUG9wdXBNZW51PiBXZWIKICAgICByZXR1cm4gV2ViU2VhcmNoUG9wdXBNZW51Ojpj
cmVhdGUobV9wYWdlLCBjbGllbnQpOwogfQogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCit2
b2lkIFdlYkNocm9tZUNsaWVudDo6c2hvd0NvbnRleHRNZW51KCkKK3sKKyAgICBtX3BhZ2UtPmNv
bnRleHRNZW51KCktPnNob3coKTsKK30KKyNlbmRpZgorCiBQYXNzT3duUHRyPEhUTUxQYXJzZXJR
dWlya3M+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSFRNTFBhcnNlclF1aXJrcygpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzAsNiArMTcwLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNs
aWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1
cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBj
b25zdDsKIAorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93
Q29udGV4dE1lbnUoKTsKKyNlbmRpZgorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hSb290R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFt
ZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNP
bmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbigpOwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3Bw
CShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDggQEAK
IAogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCiAKKyNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRleHRNZW51Lmg+CisKICNkZWZpbmUgRElTQUJMRV9OT1RfSU1QTEVNRU5URURfV0FSTklO
R1MgMQogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKQEAgLTM3LDEwICszOSwxMyBAQCB2
b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudURlCiAgICAgZGVsZXRlIHRoaXM7
CiB9CiAKLVBsYXRmb3JtTWVudURlc2NyaXB0aW9uIFdlYkNvbnRleHRNZW51Q2xpZW50OjpnZXRD
dXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhDb250ZXh0TWVudSopCitQbGF0Zm9ybU1lbnVEZXNj
cmlwdGlvbiBXZWJDb250ZXh0TWVudUNsaWVudDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRl
bXMoQ29udGV4dE1lbnUqIG1lbnUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gMDsKKyAgICAvLyBGSVhNRTogIFRoZSBlbWJlZGRlZCBhcHAgbmVlZHMgYSBjaGFuY2UgdG8g
Y3VzdG9taXplIHRoZSBjb250ZXh0IG1lbnUsIGFuZCB0aGF0IHdpbGwgcHJvYmFibHkgaGFwcGVu
CisgICAgLy8gdmlhIGFuIGluamVjdGVkIGJ1bmRsZS4gPHJkYXI6Ly9wcm9ibGVtLzg2MTM3Mjc+
IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3MjAgY292ZXIg
dGhpcyB0YXNrLgorCisgICAgQVNTRVJUKG1lbnUpOworICAgIHJldHVybiBtZW51LT5wbGF0Zm9y
bURlc2NyaXB0aW9uKCk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNvbnRleHRN
ZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSosIGNvbnN0IENvbnRleHRNZW51KikKSW5k
ZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNs
dWRlICJXZWJDb250ZXh0TWVudS5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1l
bnUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1dlYkNvbnRleHRNZW51OjpXZWJDb250ZXh0TWVudShXZWJQYWdlKiBw
YWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK1dlYkNvbnRleHRNZW51Ojp+V2ViQ29u
dGV4dE1lbnUoKQoreworfQorCit2b2lkIFdlYkNvbnRleHRNZW51OjpzaG93KCkKK3sKKyAgICBX
ZWJDb3JlOjpDb250ZXh0TWVudSogbWVudSA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+Y29udGV4dE1l
bnVDb250cm9sbGVyKCktPmNvbnRleHRNZW51KCk7CisgICAgaWYgKCFtZW51KQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgVmVjdG9yPFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbT4gY29yZUl0
ZW1zID0gV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVmVjdG9yKG1lbnUtPnBsYXRmb3JtRGVzY3Jp
cHRpb24oKSk7CisgICAgICAgIAorICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29udGV4dE1lbnUobWVudS0+aGl0
VGVzdFJlc3VsdCgpLnBvaW50KCksIGtpdEl0ZW1zKGNvcmVJdGVtcywgbWVudSkpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJDb250ZXh0TWVudTo6aXRlbVNlbGVjdGVkKGNvbnN0
IFdlYkNvbnRleHRNZW51SXRlbSYgaXRlbSkKK3sKKyAgICBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW0gY29yZUl0ZW0oV2ViQ29yZTo6QWN0aW9uVHlwZSwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29u
dGV4dE1lbnVBY3Rpb24+KGl0ZW0ubV9hY3Rpb24pLCBpdGVtLm1fdGl0bGUpOworICAgIG1fcGFn
ZS0+Y29yZVBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKCZjb3JlSXRlbSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5oCShyZXZpc2lvbiAwKQor
KysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFdlYkNvbnRleHRNZW51X2gKKyNkZWZp
bmUgV2ViQ29udGV4dE1lbnVfaAorCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtLmgiCisK
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBXZWJDb250
ZXh0TWVudSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvbnRleHRNZW51PiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnU+IGNyZWF0ZShXZWJQYWdlKiBwYWdl
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29udGV4dE1lbnUocGFnZSkpOyB9CisgICAgfldl
YkNvbnRleHRNZW51KCk7CisKKyAgICB2b2lkIHNob3coKTsKKyAgICB2b2lkIGl0ZW1TZWxlY3Rl
ZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW0mKTsKKworcHJpdmF0ZToKKyAgICBXZWJDb250ZXh0
TWVudShXZWJQYWdlKik7CisgICAgCisgICAgV2ViUGFnZSogbV9wYWdlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQb3B1cE1lbnVfaApJbmRleDogV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYg
KzM4LDcgQEAKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiV2ViQmFja0Zvcndh
cmRMaXN0UHJveHkuaCIKICNpbmNsdWRlICJXZWJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJX
ZWJDb250ZXh0TWVudS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRHJhZ0NsaWVudC5o
IgpAQCAtNTMsNiArNTQsOCBAQAogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZUtp
bmRzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lLmg+CkBAIC00ODAsNiArNDgzLDEzIEBAIHZvaWQgV2ViUGFnZTo6cGFnZURpZFNjcm9s
bCgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpQYWdlRGlkU2Nyb2xsKCkpOwog
fQogCitXZWJDb250ZXh0TWVudSogV2ViUGFnZTo6Y29udGV4dE1lbnUoKQoreworICAgIGlmICgh
bV9jb250ZXh0TWVudSkKKyAgICAgICAgbV9jb250ZXh0TWVudSA9IFdlYkNvbnRleHRNZW51Ojpj
cmVhdGUodGhpcyk7CisgICAgcmV0dXJuIG1fY29udGV4dE1lbnUuZ2V0KCk7Cit9CisKIC8vIEV2
ZW50cyAKIAogc3RhdGljIGNvbnN0IFdlYkV2ZW50KiBnX2N1cnJlbnRFdmVudCA9IDA7CkBAIC01
MTksNyArNTI5LDIwIEBAIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW8K
IAogICAgIHN3aXRjaCAocGxhdGZvcm1Nb3VzZUV2ZW50LmV2ZW50VHlwZSgpKSB7CiAgICAgICAg
IGNhc2UgV2ViQ29yZTo6TW91c2VFdmVudFByZXNzZWQ6Ci0gICAgICAgICAgICByZXR1cm4gZnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVByZXNzRXZlbnQocGxhdGZvcm1Nb3VzZUV2
ZW50KTsKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHBsYXRmb3JtTW91c2VFdmVudC5idXR0
b24oKSA9PSBXZWJDb3JlOjpSaWdodEJ1dHRvbikKKyAgICAgICAgICAgICAgICBwYWdlLT5jb250
ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBib29sIGhhbmRsZWQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1v
dXNlUHJlc3NFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBpZiAocGxhdGZvcm1Nb3VzZUV2ZW50LmJ1dHRvbigpID09IFdlYkNvcmU6OlJpZ2h0QnV0
dG9uKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlZCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
c2VuZENvbnRleHRNZW51RXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50KTsKKyAgICAgICAgICAgICAg
ICBpZiAoaGFuZGxlZCkKKyAgICAgICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCktPnNob3dD
b250ZXh0TWVudSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gaGFuZGxl
ZDsKKyAgICAgICAgfQogICAgICAgICBjYXNlIFdlYkNvcmU6Ok1vdXNlRXZlbnRSZWxlYXNlZDoK
ICAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUmVs
ZWFzZUV2ZW50KHBsYXRmb3JtTW91c2VFdmVudCk7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6TW91
c2VFdmVudE1vdmVkOgpAQCAtODgzLDYgKzkwNiwxMiBAQCB2b2lkIFdlYlBhZ2U6OmRpZENoYW5n
ZVNlbGVjdGVkSW5kZXhGb3JBCiAgICAgbV9hY3RpdmVQb3B1cE1lbnUgPSAwOwogfQogCit2b2lk
IFdlYlBhZ2U6OmRpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoY29uc3QgV2ViQ29u
dGV4dE1lbnVJdGVtJiBpdGVtKQoreworICAgIEFTU0VSVChtX2NvbnRleHRNZW51KTsKKyAgICBt
X2NvbnRleHRNZW51LT5pdGVtU2VsZWN0ZWQoaXRlbSk7Cit9CisKICNpZiBQTEFURk9STShNQUMp
CiB2b2lkIFdlYlBhZ2U6OmFkZFBsdWdpblZpZXcoUGx1Z2luVmlldyogcGx1Z2luVmlldykKIHsK
SW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDcxMDMxKQor
KysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02OCw2ICs2OCw4IEBAIGNsYXNzIERyYXdpbmdBcmVhOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVC
YWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBQYWdlT3ZlcmxheTsKIGNsYXNzIFBsdWdpblZpZXc7Citj
bGFzcyBXZWJDb250ZXh0TWVudTsKK2NsYXNzIFdlYkNvbnRleHRNZW51SXRlbTsKIGNsYXNzIFdl
YkV2ZW50OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbnNwZWN0b3I7CkBAIC0xODYsNiAr
MTg4LDggQEAgcHVibGljOgogICAgIEZpbmRDb250cm9sbGVyJiBmaW5kQ29udHJvbGxlcigpIHsg
cmV0dXJuIG1fZmluZENvbnRyb2xsZXI7IH0KIAogICAgIHZvaWQgcGFnZURpZFNjcm9sbCgpOwor
ICAgIAorICAgIFdlYkNvbnRleHRNZW51KiBjb250ZXh0TWVudSgpOwogCiBwcml2YXRlOgogICAg
IFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
Jik7CkBAIC0yNTIsNiArMjU2LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZENoYW5nZVNl
bGVjdGVkSW5kZXhGb3JBY3RpdmVQb3B1cE1lbnUoaW50MzJfdCBuZXdJbmRleCk7CiAKKyNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2b2lkIGRpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29u
dGV4dE1lbnUoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtJik7CisjZW5kaWYKKwogICAgIE93blB0
cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBtX21haW5GcmFt
ZTsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q+IG1fYmFja0Zvcndh
cmRMaXN0OwpAQCAtMjk0LDYgKzMwMiw4IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2ViUG9w
dXBNZW51PiBtX2FjdGl2ZVBvcHVwTWVudTsKIAorICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudT4g
bV9jb250ZXh0TWVudTsKKwogICAgIHVpbnQ2NF90IG1fcGFnZUlEOwogfTsKIApJbmRleDogV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lv
biA3MTAzMSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7
CiAKICAgICAjIFBvcHVwIG1lbnUuCiAgICAgRGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2
ZVBvcHVwTWVudShpbnQzMl90IG5ld0luZGV4KTsKKyAgICAKKyAgICAjIENvbnRleHQgbWVudS4K
KyAgICBEaWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51KFdlYktpdDo6V2ViQ29udGV4
dE1lbnVJdGVtIG1lbnVJdGVtKTsKIAogICAgIFNldFdpbmRvd1Jlc2l6ZXJTaXplKFdlYkNvcmU6
OkludFNpemUgaW50ZXJzZWN0c1ZpZXcpCiAKSW5kZXg6IFdlYktpdDIvd2luL1dlYktpdDIudmNw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCShyZXZpc2lvbiA3
MTAzMSkKKysrIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00
ODksNiArNDg5LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJDb250ZXh0TWVudUl0ZW0uY3BwIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYkNvbnRl
eHRNZW51SXRlbS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0
aXZlUGF0aD0iLi5cU2hhcmVkXFdlYkNvcmVBcmd1bWVudENvZGVycy5oIg0KIAkJCQk+DQogCQkJ
PC9GaWxlPg0KQEAgLTExODgsNiArMTE5NiwxNCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJ
CQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xXZWJQYWdlXFdlYkNv
bnRleHRNZW51LmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2VcV2ViQ29udGV4dE1lbnUuaCINCisJ
CQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxX
ZWJQcm9jZXNzXFdlYlBhZ2VcV2ViRWRpdENvbW1hbmQuY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0Zp
bGU+DQpAQCAtMTY4NSw2ICsxNzAxLDEwIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xXZWJDb250ZXh0TWVudVByb3h5Lmgi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxV
SVByb2Nlc3NcV2ViQ29udGV4dFVzZXJNZXNzYWdlQ29kZXJzLmgiDQogCQkJCT4NCiAJCQk8L0Zp
bGU+DQpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMS0wMSAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NjA1NDc+IGFuZCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg2OTkKKyAgICAgICAgQ29u
dGV4dCBtZW51IHN1cHBvcnQgZm9yIFdlYktpdCAyLgorCisgICAgICAgICogc3JjL0Nocm9tZUNs
aWVudEltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6c2hvd0NvbnRl
eHRNZW51KToKKwogMjAxMC0xMS0wMSAgTGVhbmRybyBHcmFjaWEgR2lsICA8bGVhbmRyb2dyYWNp
YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA3MTAzMSkKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzQsNiArMTc0LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kikg
Y29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4g
Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0Owog
CisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0
TWVudSgpIHsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgdm9pZCBnZXRQb3B1cE1lbnVJbmZv
KFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiwgV2ViUG9wdXBNZW51SW5mbyopOwogCkluZGV4OiBX
ZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL0NoYW5nZUxvZwko
cmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQvZWZsL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDEwLTExLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzY2MDU0Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00ODY5OQorICAgICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0
IDIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxMC0x
MC0yOSAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+CiAKICAgICAgICAgTm8gcmV2aWV3
LCByb2xsaW5nIG91dCA3MDk3MS4KSW5kZXg6IFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50RWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuaAkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNiArMTE1LDEw
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShTZWN1cml0eU9yaWdpbiopOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9CisjZW5kaWYKKwog
ICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9v
c2VyPik7CiAgICAgdmlydHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIEZpbGVDaG9vc2VyKik7CiAgICAgdmlydHVhbCB2b2lkIGZvcm1TdGF0ZURpZENo
YW5nZShjb25zdCBOb2RlKik7CkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNzEwMjkpCisrKyBXZWJLaXQvZ3Rr
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTExLTAxICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY2MDU0Nz4gYW5kIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODY5OQorICAgICAgICBDb250
ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuaDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzaG93
Q29udGV4dE1lbnUpOgorCiAyMDEwLTExLTAxICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNo
ZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCklu
ZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgJKHJldmlz
aW9uIDcxMDMxKQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsu
aAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNl
TmVlZGVkKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKICNlbmRpZgorI2lmIEVOQUJMRShD
T05URVhUX01FTlVTKQorICAgICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9
CisjZW5kaWYKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChXZWJDb3JlOjpGcmFt
ZSosIFBhc3NSZWZQdHI8V2ViQ29yZTo6RmlsZUNob29zZXI+KTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgV2ViQ29y
ZTo6RmlsZUNob29zZXIqKTsKIApJbmRleDogV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktp
dC9oYWlrdS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0x
MS0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NjA1NDc+
IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg2OTkKKyAgICAg
ICAgQ29udGV4dCBtZW51IHN1cHBvcnQgZm9yIFdlYktpdCAyLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudEhhaWt1OjpzaG93Q29udGV4dE1lbnUpOgorCiAyMDEwLTEwLTI5ICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpJbmRleDogV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhh
aWt1LmgJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEhhaWt1LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw2ICsxMzcsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVT
aXplKGludDY0X3Qgc3BhY2VOZWVkZWQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiopOwogI2VuZGlmCisjaWYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1l
bnUoKSB7IH0KKyNlbmRpZgogCiAgICAgICAgIC8vIFRoaXMgaXMgYW4gYXN5bmNocm9ub3VzIGNh
bGwuIFRoZSBDaHJvbWVDbGllbnQgY2FuIGRpc3BsYXkgVUkgYXNraW5nIHRoZSB1c2VyIGZvciBw
ZXJtaXNzaW9uCiAgICAgICAgIC8vIHRvIHVzZSBHZW9sb2NvY2F0aW9uLgpJbmRleDogV2ViS2l0
L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDcxMDMxKQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMyBAQAorMjAxMC0xMS0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzc2NjA1NDc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDg2OTkKKyAgICAgICAgQ29udGV4dCBtZW51IHN1cHBvcnQgZm9yIFdlYktpdCAyLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChX
ZWJDaHJvbWVDbGllbnQ6OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTAtMTAtMjkgIERhbmllbCBC
YXRlcyAgPGRiYXRlc0ByaW0uY29tPgogCiAgICAgICAgIE5vIHJldmlldywgcm9sbGluZyBvdXQg
NzA5NzEuCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDYgKzE3OCw5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUo
V2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6
OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisg
ICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgpIHsgfQorI2VuZGlmCiBwcml2YXRlOgog
ICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKIH07CkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDcxMDMxKQorKysgV2Vi
S2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTEx
LTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY2MDU0Nz4g
YW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODY5OQorICAgICAg
ICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
UXQ6OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTAtMTAtMzEgIFJvYmVydCBIb2dhbiAgPHJvYmVy
dEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCkluZGV4
OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAkocmV2aXNpb24gNzEw
MzEpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM0LDYgKzEzNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
KFNlY3VyaXR5T3JpZ2luKik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAg
ICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9CisjZW5kaWYKIAogI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQogICAgICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByZXNlbnRlciog
bm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3Q7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNzEwMzEpCisr
KyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisy
MDEwLTExLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY2
MDU0Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODY5OQor
ICAgICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVu
dDo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxMC0xMC0yOSAgRGFuaWVsIEJhdGVzICA8ZGJhdGVz
QHJpbS5jb20+CiAKICAgICAgICAgTm8gcmV2aWV3LCByb2xsaW5nIG91dCA3MDk3MS4KSW5kZXg6
IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24g
NzEwMzEpCisrKyBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiopOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2aXJ0dWFs
IHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBw
b3B1bGF0ZVZpc2l0ZWRMaW5rcygpOwogCiAgICAgdmlydHVhbCBib29sIHBhaW50Q3VzdG9tU2Ny
b2xsYmFyKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIFdlYkNvcmU6OlNjcm9sbGJhckNvbnRyb2xTaXplLCAKSW5kZXg6IFdlYktpdC93eC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gNzEwMzEp
CisrKyBXZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMTEtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83
NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Njk5
CisgICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQgMi4KKworICAgICAgICAq
IFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudFd4OjpzaG93Q29udGV4dE1lbnUpOgorCiAyMDEwLTEwLTI5ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRl
eDogV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCShyZXZpc2lvbiA3MTAz
MSkKKysrIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyOSw2ICsxMjksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWFj
aGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKik7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4
dE1lbnUoKSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFt
ZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNv
bkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUNob29zZXIqKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72524</attachid>
            <date>2010-11-01 11:15:05 -0700</date>
            <delta_ts>2010-11-01 11:18:23 -0700</delta_ts>
            <desc>v7 - with Anders&apos; feedback</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>77188</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTAtMTEtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ4Njk5CisgICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQg
Mi4KKworICAgICAgICBBZGQgYSAic2hvd0NvbnRleHRNZW51IiBjYWxsIHRvIENocm9tZS9DaHJv
bWVDbGllbnQ6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgICogcGFn
ZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzaG93Q29udGV4dE1lbnUp
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQu
aDoKKworICAgICAgICBBZGQgYSAicGxhdGZvcm0gZGVzY3JpcHRpb24gdG8gQ29udGV4dE1lbnVJ
dGVtIiBjcmVhdG9yLCB3aWxsIGJlIG5lZWRlZCBieSBXZWJLaXQyCisgICAgICAgICogcGxhdGZv
cm0vQ29udGV4dE1lbnUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ29udGV4dE1lbnVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1WZWN0b3IpOgorCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL0NvbnRleHRNZW51SXRlbU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbTo6Y2hlY2tlZCk6IFdlYktpdDIgcG9ydHMgbm93IG5lZWQgdGhpcyBp
bXBsZW1lbnRlZC4KKworICAgICAgICBTdHViIHRoZXNlIG91dCB0byBrZWVwIHRoZWlyIFdLMiBw
b3J0cyBidWlsZGluZzoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Db250ZXh0TWVudUl0ZW1RdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OmNoZWNrZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L0NvbnRleHRNZW51UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dGV4dE1lbnVJdGVtVmVjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ29udGV4dE1lbnVJ
dGVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6Y2hlY2tlZCk6
CisgICAgICAgICogcGxhdGZvcm0vd2luL0NvbnRleHRNZW51V2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnRleHRNZW51SXRlbVZlY3Rvcik6CisKIDIwMTAtMTEtMDEgIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBM
b3Blei4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhw
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMjI1LDkgKzEyMjUsMjIgQEAgX19aTks3V2ViQ29yZTE4
UmVuZGVyTGF5ZXJCYWNraW5nMjBjb21wbwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogX19a
TjdXZWJDb3JlMTFDb250ZXh0TWVudTIyc2V0UGxhdGZvcm1EZXNjcmlwdGlvbkVQMTROU011dGFi
bGVBcnJheQogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIyMHNlbmRDb250ZXh0TWVudUV2ZW50
RVA3TlNFdmVudAorX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIyMHNlbmRDb250ZXh0TWVudUV2
ZW50RVJLTlNfMThQbGF0Zm9ybU1vdXNlRXZlbnRFCiBfX1pON1dlYkNvcmUxNUNvbnRleHRNZW51
SXRlbTI2cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb25FdgorX19aTjdXZWJDb3JlMTVDb250ZXh0
TWVudUl0ZW1DMUVOU18xOUNvbnRleHRNZW51SXRlbVR5cGVFTlNfMTdDb250ZXh0TWVudUFjdGlv
bkVSS04zV1RGNlN0cmluZ0VQTlNfMTFDb250ZXh0TWVudUUKK19fWk43V2ViQ29yZTE1Q29udGV4
dE1lbnVJdGVtRDFFdgogX19aTjdXZWJDb3JlMjFDb250ZXh0TWVudUNvbnRyb2xsZXIxNmNsZWFy
Q29udGV4dE1lbnVFdgorX19aTjdXZWJDb3JlMjFDb250ZXh0TWVudUNvbnRyb2xsZXIyM2NvbnRl
eHRNZW51SXRlbVNlbGVjdGVkRVBOU18xNUNvbnRleHRNZW51SXRlbUUKK19fWk43V2ViQ29yZTIx
Y29udGV4dE1lbnVJdGVtVmVjdG9yRVAxNE5TTXV0YWJsZUFycmF5CitfX1pON1dlYkNvcmU2Q2hy
b21lMTVzaG93Q29udGV4dE1lbnVFdgogX19aTks3V2ViQ29yZTExQ29udGV4dE1lbnUxOXBsYXRm
b3JtRGVzY3JpcHRpb25FdgorX19aTks3V2ViQ29yZTExQ29udGV4dE1lbnUyMWNoZWNrT3JFbmFi
bGVJZk5lZWRlZEVSTlNfMTVDb250ZXh0TWVudUl0ZW1FCitfX1pOSzdXZWJDb3JlMTVDb250ZXh0
TWVudUl0ZW0xNXBsYXRmb3JtU3ViTWVudUV2CitfX1pOSzdXZWJDb3JlMTVDb250ZXh0TWVudUl0
ZW00dHlwZUV2CitfX1pOSzdXZWJDb3JlMTVDb250ZXh0TWVudUl0ZW01dGl0bGVFdgorX19aTks3
V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtNmFjdGlvbkV2CitfX1pOSzdXZWJDb3JlMTVDb250ZXh0
TWVudUl0ZW03Y2hlY2tlZEV2CitfX1pOSzdXZWJDb3JlMTVDb250ZXh0TWVudUl0ZW03ZW5hYmxl
ZEV2CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKSW5kZXg6IFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3MTAzMSkKKysr
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTMwNSw2ICsyMTMwNSw3IEBACiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYnVpbGRD
b25maWd1cmF0aW9uTGlzdCA9IDE0OUMyODQzMDg5MDJCMTEwMDhBOUVGQyAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYkNvcmUiICovOwogCQkJY29tcGF0aWJp
bGl0eVZlcnNpb24gPSAiWGNvZGUgMi40IjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlz
aDsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0gKAog
CQkJCUVuZ2xpc2gsCkluZGV4OiBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gNzEwMzEpCisr
KyBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYg
KzEzOSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBvcHVwTWVudT4gY3Jl
YXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBFbXB0eVBvcHVwTWVudSgpKTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTZWFyY2hQb3B1
cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdCB7IHJl
dHVybiBhZG9wdFJlZihuZXcgRW1wdHlTZWFyY2hQb3B1cE1lbnUoKSk7IH0KIAorI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0K
KyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHNldFN0YXR1c2JhclRleHQoY29uc3QgU3RyaW5n
JikgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgdGFic1RvTGlua3MoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViQ29yZS9wYWdlL0No
cm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMiw0ICs1MDIsMTEgQEAgUGFzc1JlZlB0cjxT
ZWFyY2hQb3B1cE1lbnU+IENocm9tZTo6Y3JlYQogICAgIHJldHVybiBtX2NsaWVudC0+Y3JlYXRl
U2VhcmNoUG9wdXBNZW51KGNsaWVudCk7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
K3ZvaWQgQ2hyb21lOjpzaG93Q29udGV4dE1lbnUoKQoreworICAgIG1fY2xpZW50LT5zaG93Q29u
dGV4dE1lbnUoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5o
CShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTU1LDYgKzE1NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBhc3NS
ZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7
CiAgICAgICAgIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1l
bnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
KyAgICAgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoKTsKKyNlbmRpZgorCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgUGFnZSogbV9wYWdlOwogICAgICAgICBDaHJvbWVDbGllbnQqIG1fY2xpZW50OwpJ
bmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw2ICsyNjksMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQ
b3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51
Q2xpZW50KikgY29uc3QgPSAwOwogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgICAg
IHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSA9IDA7CisjZW5kaWYKKwogICAgICAgICB2
aXJ0dWFsIHZvaWQgcG9zdEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9i
amVjdCosIEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uKSB7IH0KIAogICAgIHByb3RlY3Rl
ZDoKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmgJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgIH07CiAKK1ZlY3RvcjxDb250ZXh0TWVu
dUl0ZW0+IGNvbnRleHRNZW51SXRlbVZlY3RvcihQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbik7CisK
IH0KIAogI2VuZGlmIC8vIENvbnRleHRNZW51X2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFj
L0NvbnRleHRNZW51SXRlbU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21h
Yy9Db250ZXh0TWVudUl0ZW1NYWMubW0JKHJldmlzaW9uIDcxMDMxKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvQ29udGV4dE1lbnVJdGVtTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNiAr
MTU0LDExIEBAIGJvb2wgQ29udGV4dE1lbnVJdGVtOjplbmFibGVkKCkgY29uc3QKICAgICByZXR1
cm4gW21fcGxhdGZvcm1EZXNjcmlwdGlvbi5nZXQoKSBpc0VuYWJsZWRdOwogfQogCitib29sIENv
bnRleHRNZW51SXRlbTo6Y2hlY2tlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX3BsYXRmb3Jt
RGVzY3JpcHRpb24uZ2V0KCkgc3RhdGVdID09IE5TT25TdGF0ZTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbQkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTUz
LDYgKzE1MywxOSBAQCBOU011dGFibGVBcnJheSogQ29udGV4dE1lbnU6OnJlbGVhc2VQbGF0CiAg
ICAgcmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5yZWxlYXNlUmVmKCk7CiB9CiAKK1ZlY3Rv
cjxDb250ZXh0TWVudUl0ZW0+IGNvbnRleHRNZW51SXRlbVZlY3RvcihQbGF0Zm9ybU1lbnVEZXNj
cmlwdGlvbiBtZW51KQoreworICAgIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+IGl0ZW1zOworICAg
IHVuc2lnbmVkIGNvdW50ID0gW21lbnUgY291bnRdOworICAgIGlmIChtZW51KQorICAgICAgICBp
dGVtcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICBpdGVtcy5hcHBlbmQoQ29udGV4dE1lbnVJdGVt
KFttZW51IG9iamVjdEF0SW5kZXg6aV0pKTsKKyAgICAKKyAgICByZXR1cm4gaXRlbXM7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVT
KQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db250ZXh0TWVudUl0ZW1RdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db250ZXh0TWVudUl0ZW1RdC5jcHAJKHJldmlz
aW9uIDcxMDMxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db250ZXh0TWVudUl0ZW1RdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNCw2ICsxMDQsMTIgQEAgdm9pZCBDb250ZXh0TWVudUl0ZW06
OnNldENoZWNrZWQoYm9vbCBvbgogICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5jaGVja2VkID0g
b247CiB9CiAKK2Jvb2wgQ29udGV4dE1lbnVJdGVtOjpjaGVja2VkKCkgY29uc3QKK3sKKyAgICAv
LyBGSVhNRSAtIEltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBDb250ZXh0
TWVudUl0ZW06OnNldEVuYWJsZWQoYm9vbCBvbikKIHsKICAgICBtX3BsYXRmb3JtRGVzY3JpcHRp
b24uZW5hYmxlZCA9IG9uOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db250ZXh0TWVudVF0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3F0L0NvbnRleHRNZW51UXQuY3Bw
CShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vcXQvQ29udGV4dE1lbnVRdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDExIEBAIFBsYXRmb3JtTWVudURlc2NyaXB0
aW9uIENvbnRleHRNZW51OjpyZWwKICAgICByZXR1cm4gUGxhdGZvcm1NZW51RGVzY3JpcHRpb24o
KTsKIH0KIAorVmVjdG9yPENvbnRleHRNZW51SXRlbT4gY29udGV4dE1lbnVJdGVtVmVjdG9yKFBs
YXRmb3JtTWVudURlc2NyaXB0aW9uKQoreworICAgIC8vIEZJWE1FIC0gSW1wbGVtZW50ICAgIAor
ICAgIHJldHVybiBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPigpOworfQogCiB9CiAvLyB2aW06IHRz
PTQgc3c9NCBldApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ29udGV4dE1lbnVJdGVtV2lu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3dpbi9Db250ZXh0TWVudUl0ZW1X
aW4uY3BwCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vd2luL0NvbnRleHRN
ZW51SXRlbVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw2ICsxODQsMTIgQEAgdm9pZCBD
b250ZXh0TWVudUl0ZW06OnNldENoZWNrZWQoYm9vbCBjaAogICAgIH0KIH0KIAorYm9vbCBDb250
ZXh0TWVudUl0ZW06OmNoZWNrZWQoKSBjb25zdAoreworICAgIC8vIEZJWE1FIC0gSW1wbGVtZW50
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIENvbnRleHRNZW51SXRlbTo6c2V0RW5hYmxl
ZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uLT5mTWFzayB8PSBN
SUlNX1NUQVRFOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ29udGV4dE1lbnVXaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd2luL0NvbnRleHRNZW51V2luLmNwcAko
cmV2aXNpb24gNzEwMzEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3dpbi9Db250ZXh0TWVudVdpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw0ICsxNTUsMTAgQEAgSE1FTlUgQ29udGV4dE1lbnU6
OnJlbGVhc2VQbGF0Zm9ybURlc2NyaQogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KIAorVmVj
dG9yPENvbnRleHRNZW51SXRlbT4gY29udGV4dE1lbnVJdGVtVmVjdG9yKFBsYXRmb3JtTWVudURl
c2NyaXB0aW9uKQoreworICAgIC8vIEZJWE1FIC0gSW1wbGVtZW50ICAgIAorICAgIHJldHVybiBW
ZWN0b3I8Q29udGV4dE1lbnVJdGVtPigpOworfQorCiB9CkluZGV4OiBXZWJLaXQyL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gNzEwMzEpCisrKyBX
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDEwLTEx
LTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY2MDU0Nz4g
YW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODY5OQorICAgICAg
ICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIuCisKKyAgICAgICAgKiBXZWJLaXQy
LnBybzoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogd2luL1dlYktpdDIudmNwcm9qOgorCisgICAgICAgICogU2hhcmVkL1dlYkNvbnRleHRN
ZW51SXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW06
OldlYkNvbnRleHRNZW51SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRl
bTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtOjpkZWNvZGUp
OgorICAgICAgICAoV2ViS2l0OjpraXRJdGVtcyk6CisgICAgICAgICogU2hhcmVkL1dlYkNvbnRl
eHRNZW51SXRlbS5oOiBBZGRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VD
bGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVBy
b3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwOgorICAgICAgICAo
UVdLUGFnZVByaXZhdGU6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkpOiBTdHViIHRvIGtlZXAgdGhl
IGJ1aWxkIHdvcmtpbmcuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYkNvbnRleHRNZW51UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dE1lbnVQcm94eTo6fldlYkNvbnRleHRNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudVByb3h5OjpXZWJDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5oOiBBZGRlZC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dD
b250ZXh0TWVudSk6IFNob3dzIHRoZSBtZW51IGFmdGVyIHJlY2VpdmluZyB0aGUgbWVzc2FnZSBm
cm9tIHRoZSBXZWJQcm9jZXNzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKTogU2VuZHMgaW5mbyBhYm91dCB0aGUgc2VsZWN0ZWQgbWVudSBp
dGVtIHRvIHRoZSBXZWJQcm9jZXNzCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWM6OmNyZWF0ZSk6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tOiBBZGRlZC4KKyAgICAgICAg
KCtbV2ViTWVudVRhcmdldCBzaGFyZWRNZW51VGFyZ2V0XSk6CisgICAgICAgICgtW1dlYk1lbnVU
YXJnZXQgV2ViS2l0OjpdKToKKyAgICAgICAgKC1bV2ViTWVudVRhcmdldCBzZXRNZW51UHJveHk6
V2ViS2l0OjpdKToKKyAgICAgICAgKC1bV2ViTWVudVRhcmdldCBmb3J3YXJkQ29udGV4dE1lbnVB
Y3Rpb246XSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWM6OldlYkNv
bnRleHRNZW51UHJveHlNYWMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5
TWFjOjp+V2ViQ29udGV4dE1lbnVQcm94eU1hYyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRl
eHRNZW51UHJveHlNYWM6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYktp
dDo6cG9wdWxhdGVOU01lbnUpOgorICAgICAgICAoV2ViS2l0Ojpuc01lbnVJdGVtVmVjdG9yKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6cG9wdWxhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzaG93Q29udGV4dE1lbnUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpoaWRlQ29udGV4dE1lbnUp
OgorCisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlldzo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6IFN0dWIgZm9yIG5vdy4KKyAgICAg
ICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZpZXcuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hy
b21lQ2xpZW50OjpzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVDbGllbnQ6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKTogUmV0dXJu
IHRoZSBXZWJDb3JlLXByb3ZpZGVkIGRlZmF1bHQKKyAgICAgICAgICBtZW51IGZvciBub3cuIEVt
YmVkZGluZyBhcHAgY3VzdG9taXphdGlvbiB3aWxsIGNvbWUgbGF0ZXIgKHNlZSBidWcgNDg3MjAp
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnU6OldlYkNvbnRleHRNZW51KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnU6On5XZWJDb250ZXh0TWVudSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHRNZW51OjpzaG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dE1lbnU6Oml0ZW1TZWxlY3RlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkNvbnRleHRNZW51Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudTo6
Y3JlYXRlKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29udGV4dE1lbnUpOgorICAgICAgICAoV2ViS2l0Ojpo
YW5kbGVNb3VzZUV2ZW50KTogUGFzcyByaWdodCBtb3VzZSBwcmVzc2VzIGFsb25nIHRvIFdlYkNv
cmUgYXMgYm90aCBhIG1vdXNlIGV2ZW50IGFuZCBjb250ZXh0IG1lbnUgZXZlbnQsIAorICAgICAg
ICAgIHRoZSBzYW1lIHdheSBXZWJLaXQxIGRvZXMuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmRpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW46CisKIDIwMTAtMTEtMDEgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgpJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktp
dDIucHJvCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHdvcmtpbmcg
Y29weSkKQEAgLTIxNCw2ICsyMTQsNyBAQCBIRUFERVJTICs9IFwKICAgICBTaGFyZWQvVXNlck1l
c3NhZ2VDb2RlcnMuaCBcCiAgICAgU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuaCBcCiAgICAgU2hh
cmVkL1dlYkNlcnRpZmljYXRlSW5mby5oIFwKKyAgICBTaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVt
LmggXAogICAgIFNoYXJlZC9XZWJFdmVudC5oIFwKICAgICBTaGFyZWQvV2ViRXJyb3IuaCBcCiAg
ICAgU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5oIFwKQEAgLTI2NCw2ICsyNjUsNyBAQCBIRUFE
RVJTICs9IFwKICAgICBVSVByb2Nlc3MvVmlzaXRlZExpbmtQcm92aWRlci5oIFwKICAgICBVSVBy
b2Nlc3MvV2ViQ29udGV4dC5oIFwKICAgICBVSVByb2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVu
ZGxlQ2xpZW50LmggXAorICAgIFVJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmggXAogICAg
IFVJUHJvY2Vzcy9XZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaCBcCiAgICAgVUlQcm9jZXNz
L1dlYkVkaXRDb21tYW5kUHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkZpbmRDbGllbnQuaCBc
CkBAIC0zMjksNiArMzMxLDcgQEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdl
L0ZpbmRDb250cm9sbGVyLmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kUGFnZU92ZXJs
YXkuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmggXAorICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRWRpdENvbW1hbmQuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmggXAog
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaCBcCkBAIC0zNzYsNiArMzc5LDcg
QEAgU09VUkNFUyArPSBcCiAgICAgU2hhcmVkL3F0L1dlYlVSTFJlcXVlc3RRdC5jcHAgXAogICAg
IFNoYXJlZC9xdC9XZWJVUkxSZXNwb25zZVF0LmNwcCBcCiAgICAgU2hhcmVkL1Zpc2l0ZWRMaW5r
VGFibGUuY3BwIFwKKyAgICBTaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcCBcCiAgICAgU2hh
cmVkL1dlYkVycm9yLmNwcCBcCiAgICAgU2hhcmVkL1dlYkV2ZW50LmNwcCBcCiAgICAgU2hhcmVk
L1dlYkV2ZW50Q29udmVyc2lvbi5jcHAgXApAQCAtNDIxLDYgKzQyNSw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwIFwKICAgICBVSVByb2Nlc3Mv
V2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNw
cCBcCisgICAgVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuY3BwIFwKICAgICBVSVByb2Nl
c3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dl
YkVkaXRDb21tYW5kUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViRmluZENsaWVudC5jcHAg
XApAQCAtNDkyLDYgKzQ5Nyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvV2ViUGFn
ZS9GaW5kQ29udHJvbGxlci5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kUGFnZU92
ZXJsYXkuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuY3BwIFwKKyAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwIFwKICAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRWRpdENvbW1hbmQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBcCklu
ZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIK
KworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1l
bnUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvbnRleHRNZW51SXRlbTo6V2ViQ29u
dGV4dE1lbnVJdGVtKCkKKyAgICA6IG1fdHlwZShXZWJDb3JlOjpBY3Rpb25UeXBlKQorICAgICwg
bV9hY3Rpb24oV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24pCisgICAgLCBtX2Vu
YWJsZWQodHJ1ZSkKKyAgICAsIG1fY2hlY2tlZChmYWxzZSkKK3sKK30KKworV2ViQ29udGV4dE1l
bnVJdGVtOjpXZWJDb250ZXh0TWVudUl0ZW0oV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVHlwZSB0
eXBlLCBXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdGl0
bGUsIGJvb2wgZW5hYmxlZCwgYm9vbCBjaGVja2VkKQorICAgIDogbV90eXBlKHR5cGUpCisgICAg
LCBtX2FjdGlvbihhY3Rpb24pCisgICAgLCBtX3RpdGxlKHRpdGxlKQorICAgICwgbV9lbmFibGVk
KGVuYWJsZWQpCisgICAgLCBtX2NoZWNrZWQoY2hlY2tlZCkKK3sKKyAgICBBU1NFUlQodHlwZSA9
PSBXZWJDb3JlOjpBY3Rpb25UeXBlIHx8IHR5cGUgPT0gV2ViQ29yZTo6Q2hlY2thYmxlQWN0aW9u
VHlwZSB8fCB0eXBlID09IFdlYkNvcmU6OlNlcGFyYXRvclR5cGUpOworfQorCitXZWJDb250ZXh0
TWVudUl0ZW06OldlYkNvbnRleHRNZW51SXRlbShXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiBh
Y3Rpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgY29uc3QgVmVjdG9yPFdl
YkNvbnRleHRNZW51SXRlbT4mIHN1Ym1lbnUpCisgICAgOiBtX3R5cGUoV2ViQ29yZTo6U3VibWVu
dVR5cGUpCisgICAgLCBtX2FjdGlvbihhY3Rpb24pCisgICAgLCBtX3RpdGxlKHRpdGxlKQorICAg
ICwgbV9lbmFibGVkKGVuYWJsZWQpCisgICAgLCBtX2NoZWNrZWQoZmFsc2UpCisgICAgLCBtX3N1
Ym1lbnUoc3VibWVudSkKK3sKK30KKworV2ViQ29udGV4dE1lbnVJdGVtOjpXZWJDb250ZXh0TWVu
dUl0ZW0oV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtJiBpdGVtLCBXZWJDb3JlOjpDb250ZXh0TWVu
dSogbWVudSkKKyAgICA6IG1fdHlwZShpdGVtLnR5cGUoKSkKKyAgICAsIG1fYWN0aW9uKGl0ZW0u
YWN0aW9uKCkpCisgICAgLCBtX3RpdGxlKGl0ZW0udGl0bGUoKSkKK3sKKyAgICBpZiAobV90eXBl
ID09IFdlYkNvcmU6OlN1Ym1lbnVUeXBlKSB7CisgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW0+IGNvcmVTdWJtZW51ID0gV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVmVjdG9y
KGl0ZW0ucGxhdGZvcm1TdWJNZW51KCkpOworICAgICAgICBtX3N1Ym1lbnUgPSBraXRJdGVtcyhj
b3JlU3VibWVudSwgbWVudSk7CisgICAgfQorICAgIAorICAgIG1lbnUtPmNoZWNrT3JFbmFibGVJ
Zk5lZWRlZChpdGVtKTsKKyAgICAKKyAgICBtX2VuYWJsZWQgPSBpdGVtLmVuYWJsZWQoKTsKKyAg
ICBtX2NoZWNrZWQgPSBpdGVtLmNoZWNrZWQoKTsKK30KKwordm9pZCBXZWJDb250ZXh0TWVudUl0
ZW06OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0Cit7Cisg
ICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3R5
cGUpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9hY3Rpb24pLCBtX3RpdGxlLCBtX2NoZWNrZWQs
IG1fZW5hYmxlZCwgbV9zdWJtZW51KSk7Cit9CisKK2Jvb2wgV2ViQ29udGV4dE1lbnVJdGVtOjpk
ZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb250ZXh0TWVudUl0
ZW0mIGl0ZW0pCit7CisgICAgdWludDMyX3QgdHlwZTsKKyAgICB1aW50MzJfdCBhY3Rpb247Cisg
ICAgU3RyaW5nIHRpdGxlOworICAgIGJvb2wgY2hlY2tlZDsKKyAgICBib29sIGVuYWJsZWQ7Cisg
ICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbT4gc3VibWVudTsKKworICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKENvcmVJUEM6Ok91dCh0eXBlLCBhY3Rpb24sIHRpdGxlLCBjaGVja2VkLCBlbmFi
bGVkLCBzdWJtZW51KSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAodHlw
ZSkgeworICAgIGNhc2UgV2ViQ29yZTo6QWN0aW9uVHlwZToKKyAgICBjYXNlIFdlYkNvcmU6OlNl
cGFyYXRvclR5cGU6CisgICAgY2FzZSBXZWJDb3JlOjpDaGVja2FibGVBY3Rpb25UeXBlOgorICAg
ICAgICBpdGVtID0gV2ViQ29udGV4dE1lbnVJdGVtKHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVR5cGU+KHR5cGUpLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250ZXh0TWVudUFj
dGlvbj4oYWN0aW9uKSwgdGl0bGUsIGVuYWJsZWQsIGNoZWNrZWQpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFdlYkNvcmU6OlN1Ym1lbnVUeXBlOgorICAgICAgICBpdGVtID0gV2ViQ29udGV4
dE1lbnVJdGVtKHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uPihhY3Rpb24p
LCB0aXRsZSwgZW5hYmxlZCwgc3VibWVudSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1ZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW0+
IGtpdEl0ZW1zKFZlY3RvcjxXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0+JiBjb3JlSXRlbXMsIFdl
YkNvcmU6OkNvbnRleHRNZW51KiBtZW51KQoreworICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0
ZW0+IHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KGNvcmVJdGVtcy5zaXplKCkp
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3JlSXRlbXMuc2l6ZSgpOyArK2kpCisg
ICAgICAgIHJlc3VsdC5hcHBlbmQoV2ViQ29udGV4dE1lbnVJdGVtKGNvcmVJdGVtc1tpXSwgbWVu
dSkpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmgJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29udGV4dE1lbnVJdGVtX2gKKyNkZWZp
bmUgV2ViQ29udGV4dE1lbnVJdGVtX2gKKworI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVJ
dGVtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBDb3Jl
SVBDIHsKKyAgICBjbGFzcyBBcmd1bWVudERlY29kZXI7CisgICAgY2xhc3MgQXJndW1lbnRFbmNv
ZGVyOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgQ29udGV4dE1lbnU7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDb250ZXh0TWVudUl0ZW0geworcHVi
bGljOgorICAgIFdlYkNvbnRleHRNZW51SXRlbSgpOworICAgIFdlYkNvbnRleHRNZW51SXRlbShX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0mLCBXZWJDb3JlOjpDb250ZXh0TWVudSogbWVudSk7Cisg
ICAgV2ViQ29udGV4dE1lbnVJdGVtKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVR5cGUsIFdlYkNv
cmU6OkNvbnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBib29sIGVuYWJsZWQs
IGJvb2wgY2hlY2tlZCk7CisgICAgV2ViQ29udGV4dE1lbnVJdGVtKFdlYkNvcmU6OkNvbnRleHRN
ZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBib29sIGVuYWJsZWQsIGNvbnN0IFZlY3Rv
cjxXZWJDb250ZXh0TWVudUl0ZW0+JiBzdWJtZW51KTsKKworICAgIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIFdlYkNvcmU6
OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aW9uOyB9Cisg
ICAgY29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KKyAgICBi
b29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKyAgICBib29sIGNoZWNr
ZWQoKSBjb25zdCB7IHJldHVybiBtX2NoZWNrZWQ7IH0KKyAgICBjb25zdCBWZWN0b3I8V2ViQ29u
dGV4dE1lbnVJdGVtPiYgc3VibWVudSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VibWVudTsgfQorICAg
IAorICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopIGNvbnN0OworICAg
IHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBXZWJDb250ZXh0
TWVudUl0ZW0mKTsKKworcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UeXBl
IG1fdHlwZTsKKyAgICBXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiBtX2FjdGlvbjsKKyAgICBT
dHJpbmcgbV90aXRsZTsKKyAgICBib29sIG1fZW5hYmxlZDsKKyAgICBib29sIG1fY2hlY2tlZDsK
KyAgICBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtPiBtX3N1Ym1lbnU7Cit9OworCitWZWN0b3I8
V2ViQ29udGV4dE1lbnVJdGVtPiBraXRJdGVtcyhWZWN0b3I8V2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtPiYsIFdlYkNvcmU6OkNvbnRleHRNZW51Kik7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gV2ViQ29udGV4dE1lbnVJdGVtX2gKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBGaW5kSW5kaWNhdG9yOwogY2xhc3MgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKLWNsYXNzIFdl
YkVkaXRDb21tYW5kUHJveHk7CiBjbGFzcyBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OworY2xhc3Mg
V2ViQ29udGV4dE1lbnVQcm94eTsKK2NsYXNzIFdlYkVkaXRDb21tYW5kUHJveHk7CiBjbGFzcyBX
ZWJQb3B1cE1lbnVQcm94eTsKIAogY2xhc3MgUGFnZUNsaWVudCB7CkBAIC03Miw2ICs3Myw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90SGFuZGxlS2V5RXZlbnQoY29uc3QgTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudCYpID0gMDsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQ
b3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoKSA9IDA7CisgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2Vi
UGFnZVByb3h5KikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFz
c1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KSA9IDA7CiAKSW5kZXg6IFdlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHkuY3BwCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHkuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvbnRleHRNZW51UHJveHk6OldlYkNvbnRleHRN
ZW51UHJveHkoKQoreworfQorCitXZWJDb250ZXh0TWVudVByb3h5Ojp+V2ViQ29udGV4dE1lbnVQ
cm94eSgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHRNZW51UHJveHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29udGV4dE1lbnVQcm94eV9oCisjZGVmaW5lIFdlYkNv
bnRleHRNZW51UHJveHlfaAorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworICAgIGNsYXNzIEludFBvaW50OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
Kworc3RydWN0IFdlYkNvbnRleHRNZW51SXRlbTsKKworY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94
eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvbnRleHRNZW51UHJveHk+IHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5XZWJDb250ZXh0TWVudVByb3h5KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2hv
d0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgVmVjdG9yPFdlYkNv
bnRleHRNZW51SXRlbT4mIGl0ZW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhpZGVDb250ZXh0
TWVudSgpID0gMDsKKworcHJvdGVjdGVkOgorICAgIFdlYkNvbnRleHRNZW51UHJveHkoKTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUG9wdXBNZW51UHJveHlf
aApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiA3MTAzMSkKKysr
IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVk
ZSAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1
ZGUgIldlYkNvbnRleHRNZW51UHJveHkuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0VXNlck1lc3Nh
Z2VDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
ICJXZWJEYXRhLmgiCkBAIC0xMTI0LDYgKzExMjUsMjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omhp
ZGVQb3B1cE1lbnUoKQogICAgIG1fYWN0aXZlUG9wdXBNZW51ID0gMDsKIH0KIAordm9pZCBXZWJQ
YWdlUHJveHk6OnNob3dDb250ZXh0TWVudShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxv
Y2F0aW9uLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtPiYgaXRlbXMpCit7CisgICAg
aWYgKG1fYWN0aXZlQ29udGV4dE1lbnUpCisgICAgICAgIG1fYWN0aXZlQ29udGV4dE1lbnUtPmhp
ZGVDb250ZXh0TWVudSgpOworICAgIGVsc2UKKyAgICAgICAgbV9hY3RpdmVDb250ZXh0TWVudSA9
IG1fcGFnZUNsaWVudC0+Y3JlYXRlQ29udGV4dE1lbnVQcm94eSh0aGlzKTsKKyAgICAgIAorICAg
IG1fYWN0aXZlQ29udGV4dE1lbnUtPnNob3dDb250ZXh0TWVudShtZW51TG9jYXRpb24sIGl0ZW1z
KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0
IFdlYkNvbnRleHRNZW51SXRlbSYgaXRlbSkKK3sKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoaXRlbSksIG1f
cGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFz
c1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjb21tYW5kUHJveHksIFVuZG9PclJlZG8gdW5k
b09yUmVkbykKIHsKICAgICBtX3BhZ2VDbGllbnQtPnJlZ2lzdGVyRWRpdENvbW1hbmQoY29tbWFu
ZFByb3h5LCB1bmRvT3JSZWRvKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZp
c2lvbiA3MTAzMSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiV0tCYXNlLmgiCisjaW5jbHVkZSAi
V2ViQ29udGV4dE1lbnVJdGVtLmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJX
ZWJGaW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRm9ybUNsaWVudC5oIgpAQCAtNzcsNiArNzgs
NyBAQCBjbGFzcyBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbzsKIGNsYXNzIFN0cmluZ1BhaXJWZWN0
b3I7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtOworY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eTsKIGNsYXNzIFdlYkRhdGE7CiBjbGFzcyBX
ZWJFZGl0Q29tbWFuZFByb3h5OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKQEAgLTIzMSw2ICsy
MzMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldFN0YXRpc3RpY3MoV0tDb250ZXh0U3RhdGlz
dGljcyopOwogCisgICAgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250
ZXh0TWVudUl0ZW0mKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoV2ViUGFnZU5hbWVz
cGFjZSosIHVpbnQ2NF90IHBhZ2VJRCk7CiAKQEAgLTMyMSw2ICszMjUsOSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2hvd1BvcHVwTWVudShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0LCBjb25z
dCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CiAg
ICAgdm9pZCBoaWRlUG9wdXBNZW51KCk7CiAKKyAgICAvLyBDb250ZXh0IE1lbnUuCisgICAgdm9p
ZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8
V2ViQ29udGV4dE1lbnVJdGVtPiYgaXRlbXMpOworCiAgICAgdm9pZCB0YWtlRm9jdXMoYm9vbCBk
aXJlY3Rpb24pOwogICAgIHZvaWQgc2V0VG9vbFRpcChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKTsKQEAgLTM2MSw2ICszNjgsNyBAQCBw
cml2YXRlOgogICAgIEhhc2hTZXQ8V2ViRWRpdENvbW1hbmRQcm94eSo+IG1fZWRpdENvbW1hbmRT
ZXQ7CiAKICAgICBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IG1fYWN0aXZlUG9wdXBNZW51Owor
ICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBtX2FjdGl2ZUNvbnRleHRNZW51OwogCiAg
ICAgZG91YmxlIG1fZXN0aW1hdGVkUHJvZ3Jlc3M7CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgs
NiArMTE4LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICAjIFBvcHVwTWVudS4K
ICAgICBTaG93UG9wdXBNZW51KFdlYkNvcmU6OkludFJlY3QgcmVjdCwgVmVjdG9yPFdlYktpdDo6
V2ViUG9wdXBJdGVtPiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KQogICAgIEhpZGVQb3B1
cE1lbnUoKQorICAgIAorICAgICMgQ29udGV4dE1lbnUKKyAgICBTaG93Q29udGV4dE1lbnUoV2Vi
Q29yZTo6SW50UG9pbnQgcG9pbnQsIFZlY3RvcjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4g
aXRlbXMpCiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgIyBBY2NlbGVy
YXRlZCBjb21wc2l0aW5nIG1lc3NhZ2VzLgpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9QYWdlQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90SGFuZGxlS2V5RXZlbnQoY29uc3Qg
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBv
cHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eSgpOworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQ
cm94eSopOwogCiAgICAgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGlj
YXRvcj4sIGJvb2wgZmFkZU91dCk7CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
UGFnZUNsaWVudEltcGwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9QYWdlQ2xpZW50SW1wbC5tbQkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBACiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKICNpbXBv
cnQgIldLVmlld0ludGVybmFsLmgiCisjaW1wb3J0ICJXZWJDb250ZXh0TWVudVByb3h5TWFjLmgi
CiAjaW1wb3J0ICJXZWJFZGl0Q29tbWFuZFByb3h5LmgiCiAjaW1wb3J0ICJXZWJQb3B1cE1lbnVQ
cm94eU1hYy5oIgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KQEAgLTI0NSw2ICsyNDYsMTEg
QEAgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudAogICAgIHJldHVybiBX
ZWJQb3B1cE1lbnVQcm94eU1hYzo6Y3JlYXRlKG1fd2tWaWV3KTsKIH0KIAorUGFzc1JlZlB0cjxX
ZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94
eShXZWJQYWdlUHJveHkqIHBhZ2UpCit7CisgICAgcmV0dXJuIFdlYkNvbnRleHRNZW51UHJveHlN
YWM6OmNyZWF0ZShtX3drVmlldywgcGFnZSk7Cit9CisKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNl
dEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiBmaW5kSW5kaWNhdG9yLCBi
b29sIGZhZGVPdXQpCiB7CiAgICAgW21fd2tWaWV3IF9zZXRGaW5kSW5kaWNhdG9yOmZpbmRJbmRp
Y2F0b3IgZmFkZU91dDpmYWRlT3V0XTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2twYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFn
ZS5jcHAJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3Bh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTG9jYWxp
emVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNs
dWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYkV2ZW50RmFjdG9yeVF0LmgiCiAjaW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlRdC5oIgpAQCAtMTM0LDYgKzEzNSwx
MiBAQCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBRV0tQYWdlUHJpCiAgICAgcmV0dXJu
IFdlYlBvcHVwTWVudVByb3h5UXQ6OmNyZWF0ZSgpOwogfQogCitQYXNzUmVmUHRyPFdlYkNvbnRl
eHRNZW51UHJveHk+IFFXS1BhZ2VQcml2YXRlOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBh
Z2VQcm94eSopCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudDsKKyAgICByZXR1cm4gMDsKK30K
Kwogdm9pZCBRV0tQYWdlUHJpdmF0ZTo6c2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJ
bmRpY2F0b3I+LCBib29sIGZhZGVPdXQpCiB7CiB9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXdrcGFnZV9wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3a3BhZ2VfcC5oCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2twYWdlX3AuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWROb3RIYW5kbGVLZXlFdmVu
dChjb25zdCBXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQmKTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHko
KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5PiBj
cmVhdGVDb250ZXh0TWVudVByb3h5KFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgc2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPFdlYktpdDo6RmluZEluZGljYXRv
cj4sIGJvb2wgZmFkZU91dCk7CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250
ZXh0TWVudVByb3h5TWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNZW51UHJveHlNYWMuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvbnRleHRNZW51UHJveHlNYWNfaAorI2RlZmlu
ZSBXZWJDb250ZXh0TWVudVByb3h5TWFjX2gKKworI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJv
eHkuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZmRlZiBfX09CSkNfXworQGNs
YXNzIE5TUG9wVXBCdXR0b25DZWxsOworQGNsYXNzIFdLVmlldzsKKyNlbHNlCitjbGFzcyBOU1Bv
cFVwQnV0dG9uQ2VsbDsKK2NsYXNzIFdLVmlldzsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBXZWJDb250ZXh0TWVudVByb3h5TWFj
IDogcHVibGljIFdlYkNvbnRleHRNZW51UHJveHkgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHlNYWM+IGNyZWF0ZShXS1ZpZXcqIHdlYlZpZXcsIFdl
YlBhZ2VQcm94eSogcGFnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
Q29udGV4dE1lbnVQcm94eU1hYyh3ZWJWaWV3LCBwYWdlKSk7CisgICAgfQorICAgIH5XZWJDb250
ZXh0TWVudVByb3h5TWFjKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbT4m
KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZUNvbnRleHRNZW51KCk7CisgICAgCisgICAgdm9pZCBj
b250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW0mKTsKKworcHJp
dmF0ZToKKyAgICBXZWJDb250ZXh0TWVudVByb3h5TWFjKFdLVmlldyosIFdlYlBhZ2VQcm94eSop
OworCisgICAgdm9pZCBwb3B1bGF0ZShjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtPiYp
OworCisgICAgUmV0YWluUHRyPE5TUG9wVXBCdXR0b25DZWxsPiBtX3BvcHVwOworICAgIFdLVmll
dyogbV93ZWJWaWV3OworICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJDb250ZXh0TWVudVByb3h5TWFjX2gKSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCShy
ZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlN
YWMubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTk0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgIldlYkNvbnRleHRNZW51UHJveHlNYWMuaCIKKworI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBs
LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtLmgiCisjaW5jbHVkZSAiV0tWaWV3Lmgi
CisKKyNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1J
bnRlcmZhY2UuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0BpbnRlcmZhY2UgV2Vi
TWVudVRhcmdldCA6IE5TT2JqZWN0IHsKKyAgICBXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlN
YWMqIF9tZW51UHJveHk7Cit9CisrIChXZWJNZW51VGFyZ2V0KilzaGFyZWRNZW51VGFyZ2V0Owor
LSAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiltZW51UHJveHk7CistICh2b2lkKXNl
dE1lbnVQcm94eTooV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiltZW51UHJveHk7Cist
ICh2b2lkKWZvcndhcmRDb250ZXh0TWVudUFjdGlvbjooaWQpc2VuZGVyOworQGVuZAorCitAaW1w
bGVtZW50YXRpb24gV2ViTWVudVRhcmdldAorCisrIChXZWJNZW51VGFyZ2V0KilzaGFyZWRNZW51
VGFyZ2V0Cit7CisgICAgc3RhdGljIFdlYk1lbnVUYXJnZXQqIHRhcmdldCA9IFtbV2ViTWVudVRh
cmdldCBhbGxvY10gaW5pdF07CisgICAgcmV0dXJuIHRhcmdldDsKK30KKworLSAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudVByb3h5TWFjKiltZW51UHJveHkKK3sKKyAgICByZXR1cm4gX21lbnVQcm94
eTsKK30KKworLSAodm9pZClzZXRNZW51UHJveHk6KFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94
eU1hYyopbWVudVByb3h5Cit7CisgICAgX21lbnVQcm94eSA9IG1lbnVQcm94eTsKK30KKworLSAo
dm9pZClmb3J3YXJkQ29udGV4dE1lbnVBY3Rpb246KGlkKXNlbmRlcgoreworICAgIFdlYktpdDo6
V2ViQ29udGV4dE1lbnVJdGVtIGl0ZW0oQWN0aW9uVHlwZSwgc3RhdGljX2Nhc3Q8Q29udGV4dE1l
bnVBY3Rpb24+KFtzZW5kZXIgdGFnXSksIFtzZW5kZXIgdGl0bGVdLCBbc2VuZGVyIGlzRW5hYmxl
ZF0sIFtzZW5kZXIgc3RhdGVdID09IE5TT25TdGF0ZSk7CisgICAgX21lbnVQcm94eS0+Y29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQoaXRlbSk7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1dlYkNvbnRleHRNZW51UHJveHlNYWM6OldlYkNvbnRleHRNZW51UHJveHlNYWMoV0tWaWV3
KiB3ZWJWaWV3LCBXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgOiBtX3dlYlZpZXcod2ViVmlldykK
KyAgICAsIG1fcGFnZShwYWdlKQoreworfQorCitXZWJDb250ZXh0TWVudVByb3h5TWFjOjp+V2Vi
Q29udGV4dE1lbnVQcm94eU1hYygpCit7CisgICAgaWYgKG1fcG9wdXApCisgICAgICAgIFttX3Bv
cHVwLmdldCgpIHNldENvbnRyb2xWaWV3Om5pbF07Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQ
cm94eU1hYzo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVt
JiBpdGVtKQoreworICAgIG1fcGFnZS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaXRlbSk7Cit9
CisKK3N0YXRpYyB2b2lkIHBvcHVsYXRlTlNNZW51KE5TTWVudSogbWVudSwgY29uc3QgVmVjdG9y
PFJldGFpblB0cjxOU01lbnVJdGVtPiA+JiBtZW51SXRlbVZlY3RvcikKK3sKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbWVudUl0ZW1WZWN0b3Iuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
TlNJbnRlZ2VyIG9sZFN0YXRlID0gW21lbnVJdGVtVmVjdG9yW2ldLmdldCgpIHN0YXRlXTsKKyAg
ICAgICAgW21lbnUgYWRkSXRlbTptZW51SXRlbVZlY3RvcltpXS5nZXQoKV07CisgICAgICAgIFtt
ZW51SXRlbVZlY3RvcltpXS5nZXQoKSBzZXRTdGF0ZTpvbGRTdGF0ZV07CisgICAgfQorfQorCitz
dGF0aWMgVmVjdG9yPFJldGFpblB0cjxOU01lbnVJdGVtPiA+IG5zTWVudUl0ZW1WZWN0b3IoY29u
c3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbT4mIGl0ZW1zKQoreworICAgIFZlY3RvcjxSZXRh
aW5QdHI8TlNNZW51SXRlbT4gPiByZXN1bHQ7CisKKyAgICB1bnNpZ25lZCBzaXplID0gaXRlbXMu
c2l6ZSgpOworICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkoc2l6ZSk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBzd2l0Y2ggKGl0ZW1zW2ldLnR5
cGUoKSkgeworICAgICAgICBjYXNlIEFjdGlvblR5cGU6CisgICAgICAgIGNhc2UgQ2hlY2thYmxl
QWN0aW9uVHlwZTogeworICAgICAgICAgICAgTlNNZW51SXRlbSogbWVudUl0ZW0gPSBbW05TTWVu
dUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6bnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhpdGVt
c1tpXS50aXRsZSgpKSBhY3Rpb246QHNlbGVjdG9yKGZvcndhcmRDb250ZXh0TWVudUFjdGlvbjop
IGtleUVxdWl2YWxlbnQ6QCIiXTsKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRUYWc6aXRlbXNb
aV0uYWN0aW9uKCldOworICAgICAgICAgICAgW21lbnVJdGVtIHNldEVuYWJsZWQ6aXRlbXNbaV0u
ZW5hYmxlZCgpXTsKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTppdGVtc1tpXS5jaGVj
a2VkKCkgPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChSZXRhaW5QdHI8TlNNZW51SXRlbT4oQWRvcHRO
UywgbWVudUl0ZW0pKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2UgU2VwYXJhdG9yVHlwZToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoW05TTWVudUl0ZW0g
c2VwYXJhdG9ySXRlbV0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3VibWVu
dVR5cGU6IHsKKyAgICAgICAgICAgIE5TTWVudSogbWVudSA9IFtbTlNNZW51IGFsbG9jXSBpbml0
V2l0aFRpdGxlOm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoaXRlbXNbaV0udGl0bGUoKSldOwor
ICAgICAgICAgICAgW21lbnUgc2V0QXV0b2VuYWJsZXNJdGVtczpOT107CisgICAgICAgICAgICBw
b3B1bGF0ZU5TTWVudShtZW51LCBuc01lbnVJdGVtVmVjdG9yKGl0ZW1zW2ldLnN1Ym1lbnUoKSkp
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgTlNNZW51SXRlbSogbWVudUl0ZW0gPSBb
W05TTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6bnNTdHJpbmdGcm9tV2ViQ29yZVN0cmlu
ZyhpdGVtc1tpXS50aXRsZSgpKSBhY3Rpb246QHNlbGVjdG9yKGZvcndhcmRDb250ZXh0TWVudUFj
dGlvbjopIGtleUVxdWl2YWxlbnQ6QCIiXTsKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRFbmFi
bGVkOml0ZW1zW2ldLmVuYWJsZWQoKV07CisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3VibWVu
dTptZW51XTsKKyAgICAgICAgICAgIFttZW51IHJlbGVhc2VdOworCisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKFJldGFpblB0cjxOU01lbnVJdGVtPihBZG9wdE5TLCBtZW51SXRlbSkpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBXZWJNZW51VGFyZ2V0KiB0YXJnZXQgPSBbV2ViTWVudVRhcmdldCBzaGFyZWRNZW51VGFy
Z2V0XTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBb
cmVzdWx0W2ldLmdldCgpIHNldFRhcmdldDp0YXJnZXRdOworICAgIAorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6cG9wdWxhdGUoY29uc3QgVmVj
dG9yPFdlYkNvbnRleHRNZW51SXRlbT4mIGl0ZW1zKQoreworICAgIGlmIChtX3BvcHVwKQorICAg
ICAgICBbbV9wb3B1cC5nZXQoKSByZW1vdmVBbGxJdGVtc107CisgICAgZWxzZSB7CisgICAgICAg
IG1fcG9wdXAuYWRvcHROUyhbW05TUG9wVXBCdXR0b25DZWxsIGFsbG9jXSBpbml0VGV4dENlbGw6
QCIiIHB1bGxzRG93bjpOT10pOworICAgICAgICBbbV9wb3B1cC5nZXQoKSBzZXRVc2VzSXRlbUZy
b21NZW51Ok5PXTsKKyAgICAgICAgW21fcG9wdXAuZ2V0KCkgc2V0QXV0b2VuYWJsZXNJdGVtczpO
T107CisgICAgfQorCisgICAgTlNNZW51KiBtZW51ID0gW21fcG9wdXAuZ2V0KCkgbWVudV07Cisg
ICAgcG9wdWxhdGVOU01lbnUobWVudSwgbnNNZW51SXRlbVZlY3RvcihpdGVtcykpOworfQorCit2
b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OnNob3dDb250ZXh0TWVudShjb25zdCBJbnRQb2lu
dCYgbWVudUxvY2F0aW9uLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtPiYgaXRlbXMp
Cit7CisgICAgcG9wdWxhdGUoaXRlbXMpOworICAgIFtbV2ViTWVudVRhcmdldCBzaGFyZWRNZW51
VGFyZ2V0XSBzZXRNZW51UHJveHk6dGhpc107CisgICAgCisgICAgTlNSZWN0IG1lbnVSZWN0ID0g
TlNNYWtlUmVjdChtZW51TG9jYXRpb24ueCgpLCBtZW51TG9jYXRpb24ueSgpLCAwLCAwKTsKKyAg
ICAKKyAgICBbbV9wb3B1cC5nZXQoKSBhdHRhY2hQb3BVcFdpdGhGcmFtZTptZW51UmVjdCBpblZp
ZXc6bV93ZWJWaWV3XTsKKworICAgIE5TTWVudSogbWVudSA9IFttX3BvcHVwLmdldCgpIG1lbnVd
OworCisgICAgLy8gVGhlc2UgdmFsdWVzIHdlcmUgYm9ycm93ZWQgZnJvbSBBcHBLaXQgdG8gbWF0
Y2ggdGhlaXIgcGxhY2VtZW50IG9mIHRoZSBtZW51LgorICAgIE5TUmVjdCB0aXRsZUZyYW1lID0g
W21fcG9wdXAuZ2V0KCkgIHRpdGxlUmVjdEZvckJvdW5kczptZW51UmVjdF07CisgICAgaWYgKHRp
dGxlRnJhbWUuc2l6ZS53aWR0aCA8PSAwIHx8IHRpdGxlRnJhbWUuc2l6ZS5oZWlnaHQgPD0gMCkK
KyAgICAgICAgdGl0bGVGcmFtZSA9IG1lbnVSZWN0OworICAgIGZsb2F0IHZlcnRPZmZzZXQgPSBy
b3VuZGYoKE5TTWF4WShtZW51UmVjdCkgLSBOU01heFkodGl0bGVGcmFtZSkpICsgTlNIZWlnaHQo
dGl0bGVGcmFtZSkpOworICAgIE5TUG9pbnQgbG9jYXRpb24gPSBOU01ha2VQb2ludChOU01pblgo
bWVudVJlY3QpLCBOU01heFkobWVudVJlY3QpIC0gdmVydE9mZnNldCk7CisKKyAgICBSZXRhaW5Q
dHI8TlNWaWV3PiBkdW1teVZpZXcoQWRvcHROUywgW1tOU1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6bWVudVJlY3RdKTsKKyAgICBbbV93ZWJWaWV3IGFkZFN1YnZpZXc6ZHVtbXlWaWV3LmdldCgp
XTsKKyAgICBsb2NhdGlvbiA9IFtkdW1teVZpZXcuZ2V0KCkgY29udmVydFBvaW50OmxvY2F0aW9u
IGZyb21WaWV3Om1fd2ViVmlld107CisKKyAgICBXS1BvcHVwTWVudShtZW51LCBsb2NhdGlvbiwg
cm91bmRmKE5TV2lkdGgobWVudVJlY3QpKSwgZHVtbXlWaWV3LmdldCgpLCAtMSwgbmlsKTsKKwor
ICAgIFttX3BvcHVwLmdldCgpIGRpc21pc3NQb3BVcF07CisgICAgW2R1bW15Vmlldy5nZXQoKSBy
ZW1vdmVGcm9tU3VwZXJ2aWV3XTsKK30KKwordm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpo
aWRlQ29udGV4dE1lbnUoKQoreworICAgIFttX3BvcHVwLmdldCgpIGRpc21pc3NQb3BVcF07Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNw
cAkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYyNSw2ICs2MjUsMTIgQEAgUGFzc1JlZlB0cjxXZWJQb3B1cE1l
bnVQcm94eT4gV2ViVmlldzo6YwogICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94eVdpbjo6Y3Jl
YXRlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gV2ViVmlldzo6Y3Jl
YXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQuCisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgV2ViVmlldzo6c2V0RmluZEluZGljYXRv
cihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQpCiB7CiAgICAgLy8gRklY
TUU6IEltcGxlbWVudC4KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaAkocmV2aXNpb24gNzEw
MzEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDUsNiArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVj
dCBjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAgICAgdmly
dHVhbCB2b2lkIGRpZE5vdEhhbmRsZUtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZl
bnQmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBv
cHVwTWVudVByb3h5KCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJv
eHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Kik7CiAgICAgdmlydHVhbCB2
b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRl
T3V0KTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKSW5kZXg6IFdlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3MTAzMSkKKysrIFdl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjQsOCArMTY0LDE2IEBACiAJCTFDOEUyOTNBMTI3NjFFNUIwMEJDN0JEMCAvKiBXS0luc3Bl
Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QzhFMjkzODEyNzYxRTVCMDBCQzdCRDAgLyogV0tJbnNwZWN0b3IuY3BwICovOyB9OwogCQk1MTU3
OEI4MzEyMDlFQ0VGMDBBMzdDNEEgLyogV2ViRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8qIFdlYkRh
dGEuaCAqLzsgfTsKIAkJNTE2QTRBNUQxMjBBMkNDRDAwQzA1QjdGIC8qIFdlYkVycm9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTZBNEE1QjEyMEEy
Q0NEMDBDMDVCN0YgLyogV2ViRXJyb3IuaCAqLzsgfTsKKwkJNTE4NzFCNUIxMjdDQjg5RDAwRjc2
MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVu
dS5jcHAgKi87IH07CisJCTUxODcxQjVDMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVu
dS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4NzFC
NUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmggKi87IH07CiAJCTUxQTdGMkYz
MTI1QkY4MjAwMDhBRUIxRCAvKiBMb2dnaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE3RjJGMjEyNUJGODIwMDA4QUVCMUQgLyogTG9nZ2luZy5o
ICovOyB9OwogCQk1MUE3RjJGNTEyNUJGOEQ0MDA4QUVCMUQgLyogTG9nZ2luZy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE3RjJGNDEyNUJGOEQ0
MDA4QUVCMUQgLyogTG9nZ2luZy5jcHAgKi87IH07CisJCTUxQTg0Q0UzMTI3RjM4NkIwMENBNkVB
NCAvKiBXZWJDb250ZXh0TWVudVByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTg0Q0UyMTI3RjM4NkIwMENBNkVBNCAvKiBXZWJDb250ZXh0
TWVudVByb3h5LmNwcCAqLzsgfTsKKwkJNTFBQ0JBMTUxMjc5RThDMzAwRDIwM0I5IC8qIFdlYkNv
bnRleHRNZW51SXRlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUFDQkExMzEyNzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmNw
cCAqLzsgfTsKKwkJNTFBQ0JBMTYxMjc5RThDMzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51SXRl
bS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQ0JB
MTQxMjc5RThDMzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51SXRlbS5oICovOyB9OworCQk1MUFD
QkI4MjEyN0E4QkFEMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQ0JCODExMjdBOEJBRDAwRDIw
M0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHkuaCAqLzsgfTsKKwkJNTFBQ0JCQTAxMjdBOEYyQzAw
RDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUNCQjlFMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJD
b250ZXh0TWVudVByb3h5TWFjLmggKi87IH07CisJCTUxQUNCQkExMTI3QThGMkMwMEQyMDNCOSAv
KiBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFBQ0JCOUYxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRN
ZW51UHJveHlNYWMubW0gKi87IH07CiAJCTUxQjMwMDUwMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJC
YWNrRm9yd2FyZExpc3RDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUIzMDA0RTEyNTI5RDBFMDAwQjVDQTAgLyogV2ViQmFja0ZvcndhcmRMaXN0
Q0YuY3BwICovOyB9OwogCQk1MUIzMDA1MTEyNTI5RDBFMDAwQjVDQTAgLyogV2ViUGFnZVByb3h5
Q0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFC
MzAwNEYxMjUyOUQwRTAwMEI1Q0EwIC8qIFdlYlBhZ2VQcm94eUNGLmNwcCAqLzsgfTsKIAkJNkQ4
QTkxQTYxMUYwRUZEMTAwREQwMUZFIC8qIGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RDhBOTFBNTExRjBFRkQx
MDBERDAxRkUgLyogY29tLmFwcGxlLldlYlByb2Nlc3Muc2IgKi87IH07CkBAIC02NzAsOCArNjc4
LDE2IEBACiAJCTMyREJDRjVFMDM3MEFERUUwMEM5MTc4MyAvKiBXZWJLaXQyUHJlZml4LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdDJQcmVmaXguaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8qIFdlYkRhdGEu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGF0YS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0YgLyogV2ViRXJyb3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRXJyb3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRl
eHRNZW51LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbnRl
eHRNZW51LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4NzFCNUExMjdDQjg5
RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkNvbnRleHRNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
QTdGMkYyMTI1QkY4MjAwMDhBRUIxRCAvKiBMb2dnaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExvZ2dpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFB
N0YyRjQxMjVCRjhENDAwOEFFQjFEIC8qIExvZ2dpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTG9nZ2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxQTg0Q0UyMTI3RjM4NkIwMENBNkVBNCAvKiBXZWJDb250ZXh0TWVudVByb3h5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbnRleHRNZW51UHJveHku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUFDQkExMzEyNzlFOEMzMDBEMjAz
QjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkNvbnRleHRNZW51SXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUxQUNCQTE0MTI3OUU4QzMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dE1lbnVJdGVtLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQUNCQjgxMTI3QThCQUQwMEQyMDNCOSAvKiBX
ZWJDb250ZXh0TWVudVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkNvbnRleHRNZW51UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQ0JC
OUUxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUFDQkI5RjEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29u
dGV4dE1lbnVQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYkNvbnRleHRNZW51UHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxQjMwMDRFMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJCYWNrRm9yd2FyZExpc3RD
Ri5jcHA7IHBhdGggPSBjZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxQjMwMDRGMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJQYWdlUHJveHlD
Ri5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJQYWdlUHJveHlD
Ri5jcHA7IHBhdGggPSBjZi9XZWJQYWdlUHJveHlDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVEQUQ3Mjk0MTE2RkY3MEIwMEVFNTM5NiAvKiBXZWJQcm9jZXNzLnhjY29uZmln
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdlYlByb2Nlc3MueGNjb25maWc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjc0LDEyICsxMjkwLDE0IEBACiAJCQkJQkNC
MEFFRTcxMjJGNTNFMzAwQjEzNDFFIC8qIE11dGFibGVEaWN0aW9uYXJ5LmggKi8sCiAJCQkJQzAy
QkZGMTUxMjUxNEZEODAwOUNDQkVBIC8qIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCAqLywKIAkJ
CQlCQ0M1NzE2MTExNUFEQjQyMDAxQ0NBRjkgLyogTm90SW1wbGVtZW50ZWQuaCAqLywKKwkJCQlC
Q0JEM0MzQTEyNUJGQTdBMDBEMkMyOUYgLyogU3RyaW5nUGFpclZlY3Rvci5oICovLAogCQkJCUJD
QjBCMERGMTIzMDVBQjEwMEIxMzQxRSAvKiBVc2VyTWVzc2FnZUNvZGVycy5oICovLAogCQkJCTFB
MEYyOUM5MTIwQjM3MTYwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1RhYmxlLmNwcCAqLywKIAkJCQkx
QTBGMjlDQTEyMEIzNzE2MDA1M0QxQjkgLyogVmlzaXRlZExpbmtUYWJsZS5oICovLAogCQkJCUJD
MUREN0IxMTE0REMzOTYwMDVBREFGMyAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCAqLywKIAkJ
CQlCQ0Y1MDcyNjEyNDMyOUFBMDA1OTU1QUUgLyogV2ViQ2VydGlmaWNhdGVJbmZvLmggKi8sCi0J
CQkJQkNCRDNDM0ExMjVCRkE3QTAwRDJDMjlGIC8qIFN0cmluZ1BhaXJWZWN0b3IuaCAqLywKKwkJ
CQk1MUFDQkExMzEyNzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmNwcCAqLywK
KwkJCQk1MUFDQkExNDEyNzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggKi8s
CiAJCQkJNTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8qIFdlYkRhdGEuaCAqLywKIAkJCQlCQzU3
NTYxMjEyNkUwMTM4MDA2RjBGMTIgLyogV2ViRXJyb3IuY3BwICovLAogCQkJCTUxNkE0QTVCMTIw
QTJDQ0QwMEMwNUI3RiAvKiBXZWJFcnJvci5oICovLApAQCAtMTQ1MSw2ICsxNDY5LDggQEAKIAkJ
QkMwMzJENUUxMEY0MzcyQjAwNThDMTVBIC8qIFdlYlBhZ2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBX
ZWJDb250ZXh0TWVudS5jcHAgKi8sCisJCQkJNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8qIFdl
YkNvbnRleHRNZW51LmggKi8sCiAJCQkJQkM5NjNENkMxMTNERDE5NTAwNTc0QkUyIC8qIG1hYyAq
LywKIAkJCQlCQzVGN0JCMjExODIzNzZDMDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdB
cmVhLmNwcCAqLywKIAkJCQlCQzVGN0JCMzExODIzNzZDMDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhLmggKi8sCkBAIC0xNTA4LDYgKzE1MjgsOCBAQAogCQkJCUJDNjQ2QkY2MTFE
RDM3N0IwMDY0NTVCMCAvKiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggKi8sCiAJCQkJQkNCOUUy
NDIxMTIwREFDQTAwQTEzN0UwIC8qIFdlYkNvbnRleHQuY3BwICovLAogCQkJCUJDQjlFMjQxMTEy
MERBQ0EwMEExMzdFMCAvKiBXZWJDb250ZXh0LmggKi8sCisJCQkJNTFBODRDRTIxMjdGMzg2QjAw
Q0E2RUE0IC8qIFdlYkNvbnRleHRNZW51UHJveHkuY3BwICovLAorCQkJCTUxQUNCQjgxMTI3QThC
QUQwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5LmggKi8sCiAJCQkJQkNERTA1OUExMUNE
QThBRTAwRTQxQUYxIC8qIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgKi8sCiAJ
CQkJQkNERTA1OTkxMUNEQThBRTAwRTQxQUYxIC8qIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNs
aWVudC5oICovLAogCQkJCUJDQjBCMERCMTIzMDVBMjUwMEIxMzQxRSAvKiBXZWJDb250ZXh0VXNl
ck1lc3NhZ2VDb2RlcnMuaCAqLywKQEAgLTE4NjEsNiArMTg4Myw4IEBACiAJCQkJQkMyNjUxRjUx
MTgyNUVGODAwMjQzRTEyIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5TWFjLm1tICov
LAogCQkJCTBGNTI2NUJCMTFERDM3ODYwMDA2RDMzQyAvKiBMYXllckJhY2tlZERyYXdpbmdBcmVh
UHJveHlNYWMubW0gKi8sCiAJCQkJMUExQzY0ODYxMUY0MTVCNzAwNTUzQzE5IC8qIFdlYkNvbnRl
eHRNYWMubW0gKi8sCisJCQkJNTFBQ0JCOUUxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRN
ZW51UHJveHlNYWMuaCAqLywKKwkJCQk1MUFDQkI5RjEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29u
dGV4dE1lbnVQcm94eU1hYy5tbSAqLywKIAkJCQlCQzU3NTA5NTEyNjhGM0M2MDA2RjBGMTIgLyog
V2ViUG9wdXBNZW51UHJveHlNYWMuaCAqLywKIAkJCQlCQzU3NTA5NjEyNjhGM0M2MDA2RjBGMTIg
LyogV2ViUG9wdXBNZW51UHJveHlNYWMubW0gKi8sCiAJCQkpOwpAQCAtMjIxMSw3ICsyMjM1LDEx
IEBACiAJCQkJOTM1RUVCQTQxMjc3NjFENjAwMzMyMkI4IC8qIEluamVjdGVkQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2MTYxNTAxMjc3OThCNTAwM0FD
RDg2IC8qIERvd25sb2FkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2MTYxRDQxMjc4
OTgxQzAwM0FDRDg2IC8qIERvd25sb2FkLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUFDQkExNjEy
NzlFOEMzMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MUFDQkI4MjEyN0E4QkFEMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTFBQ0JCQTAxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51
UHJveHlNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMTE5QTk1MTI3Qjc5NjIwMEE5RUNCMSAv
KiBNZXNzYWdlU2VuZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTg3MUI1QzEyN0NCODlEMDBG
NzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjUzNCwxMiArMjU2
MiwxNiBAQAogCQkJCTFBNjE2MTRGMTI3Nzk4QjUwMDNBQ0Q4NiAvKiBEb3dubG9hZE1hbmFnZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2MTYxRDUxMjc4OTgxQzAwM0FDRDg2IC8qIERvd25s
b2FkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNjE2Mzk2MTI3ODlCMkYwMDNBQ0Q4NiAvKiBE
b3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxQUNCQTE1MTI3OUU4QzMwMEQyMDNC
OSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFBQ0JCQTEx
MjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0gaW4gU291cmNlcyAq
LywKIAkJCQlDMDMzN0RBRTEyN0EyNEZFMDA4RkY0RjQgLyogV2ViRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQzAzMzdEQjAxMjdBMjhEMDAwOEZGNEY0IC8qIFdlYk1vdXNlRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdERDExMjdBMjk4MDAwOEZGNEY0IC8qIFdlYldoZWVs
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdERDMxMjdBMkEwRTAwOEZGNEY0IC8q
IFdlYktleWJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdERDgxMjdBNTFC
NjAwOEZGNEY0IC8qIFdlYlRvdWNoRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdE
REQxMjdBNTIxQzAwOEZGNEY0IC8qIFdlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MTg3MUI1QjEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTFBODRDRTMxMjdGMzg2QjAwQ0E2RUE0IC8qIFdlYkNvbnRl
eHRNZW51UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24g
NzEwMzEpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiRHJh
d2luZ0FyZWEuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgi
CisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnUuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lTG9hZGVy
Q2xpZW50LmgiCkBAIC01MjUsNiArNTI2LDEzIEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNo
UG9wdXBNZW51PiBXZWIKICAgICByZXR1cm4gV2ViU2VhcmNoUG9wdXBNZW51OjpjcmVhdGUobV9w
YWdlLCBjbGllbnQpOwogfQogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCit2b2lkIFdlYkNo
cm9tZUNsaWVudDo6c2hvd0NvbnRleHRNZW51KCkKK3sKKyAgICBtX3BhZ2UtPmNvbnRleHRNZW51
KCktPnNob3coKTsKK30KKyNlbmRpZgorCiBQYXNzT3duUHRyPEhUTUxQYXJzZXJRdWlya3M+IFdl
YkNocm9tZUNsaWVudDo6Y3JlYXRlSFRNTFBhcnNlclF1aXJrcygpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzAsNiArMTcwLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6
OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNv
bnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNy
ZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKIAor
I2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1l
bnUoKTsKKyNlbmRpZgorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZp
cnR1YWwgdm9pZCBhdHRhY2hSb290R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNPbmVTaG90RHJh
d2luZ1N5bmNocm9uaXphdGlvbigpOwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCShyZXZpc2lv
biA3MTAzMSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDggQEAKIAogI2luY2x1
ZGUgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRN
ZW51Lmg+CisKICNkZWZpbmUgRElTQUJMRV9OT1RfSU1QTEVNRU5URURfV0FSTklOR1MgMQogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKQEAgLTM3LDEwICszOSwxMyBAQCB2b2lkIFdlYkNv
bnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudURlCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLVBs
YXRmb3JtTWVudURlc2NyaXB0aW9uIFdlYkNvbnRleHRNZW51Q2xpZW50OjpnZXRDdXN0b21NZW51
RnJvbURlZmF1bHRJdGVtcyhDb250ZXh0TWVudSopCitQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBX
ZWJDb250ZXh0TWVudUNsaWVudDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoQ29udGV4
dE1lbnUqIG1lbnUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAg
ICAvLyBGSVhNRTogIFRoZSBlbWJlZGRlZCBhcHAgbmVlZHMgYSBjaGFuY2UgdG8gY3VzdG9taXpl
IHRoZSBjb250ZXh0IG1lbnUsIGFuZCB0aGF0IHdpbGwgcHJvYmFibHkgaGFwcGVuCisgICAgLy8g
dmlhIGFuIGluamVjdGVkIGJ1bmRsZS4gPHJkYXI6Ly9wcm9ibGVtLzg2MTM3Mjc+IGFuZCBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3MjAgY292ZXIgdGhpcyB0YXNr
LgorCisgICAgQVNTRVJUKG1lbnUpOworICAgIHJldHVybiBtZW51LT5wbGF0Zm9ybURlc2NyaXB0
aW9uKCk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKENvbnRleHRNZW51SXRlbSosIGNvbnN0IENvbnRleHRNZW51KikKSW5kZXg6IFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAJKHJldmlzaW9uIDAp
CisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJXZWJD
b250ZXh0TWVudS5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5j
bHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1dlYkNvbnRleHRNZW51OjpXZWJDb250ZXh0TWVudShXZWJQYWdlKiBwYWdlKQorICAg
IDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK1dlYkNvbnRleHRNZW51Ojp+V2ViQ29udGV4dE1lbnUo
KQoreworfQorCit2b2lkIFdlYkNvbnRleHRNZW51OjpzaG93KCkKK3sKKyAgICBXZWJDb3JlOjpD
b250ZXh0TWVudSogbWVudSA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9s
bGVyKCktPmNvbnRleHRNZW51KCk7CisgICAgaWYgKCFtZW51KQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgVmVjdG9yPFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbT4gY29yZUl0ZW1zID0gV2Vi
Q29yZTo6Y29udGV4dE1lbnVJdGVtVmVjdG9yKG1lbnUtPnBsYXRmb3JtRGVzY3JpcHRpb24oKSk7
CisgICAgICAgIAorICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29udGV4dE1lbnUobWVudS0+aGl0VGVzdFJlc3Vs
dCgpLnBvaW50KCksIGtpdEl0ZW1zKGNvcmVJdGVtcywgbWVudSkpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKK30KKwordm9pZCBXZWJDb250ZXh0TWVudTo6aXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRl
eHRNZW51SXRlbSYgaXRlbSkKK3sKKyAgICBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0gY29yZUl0
ZW0oV2ViQ29yZTo6QWN0aW9uVHlwZSwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGV4dE1lbnVB
Y3Rpb24+KGl0ZW0uYWN0aW9uKCkpLCBpdGVtLnRpdGxlKCkpOworICAgIG1fcGFnZS0+Y29yZVBh
Z2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKCZj
b3JlSXRlbSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICoKKyAqLworCisjaWZuZGVmIFdlYkNvbnRleHRNZW51X2gKKyNkZWZpbmUgV2ViQ29u
dGV4dE1lbnVfaAorCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtLmgiCisKKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBXZWJDb250ZXh0TWVudSA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvbnRleHRNZW51PiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnU+IGNyZWF0ZShXZWJQYWdlKiBwYWdlKSAKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29udGV4dE1lbnUocGFnZSkpOworICAg
IH0KKyAgICAKKyAgICB+V2ViQ29udGV4dE1lbnUoKTsKKworICAgIHZvaWQgc2hvdygpOworICAg
IHZvaWQgaXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbSYpOworCitwcml2YXRl
OgorICAgIFdlYkNvbnRleHRNZW51KFdlYlBhZ2UqKTsKKyAgICAKKyAgICBXZWJQYWdlKiBtX3Bh
Z2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBvcHVwTWVu
dV9oCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24g
NzEwMzEpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKICNpbmNs
dWRlICJXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIgogI2luY2x1ZGUgIldlYkNocm9tZUNsaWVu
dC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1l
bnVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
ICJXZWJEcmFnQ2xpZW50LmgiCkBAIC01Myw2ICs1NCw4IEBACiAjaW5jbHVkZSAiV2ViUHJlZmVy
ZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHlNZXNzYWdlS2luZHMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9FdmVudEhhbmRsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KQEAgLTQ4MCw2ICs0ODMsMTMgQEAgdm9pZCBXZWJQ
YWdlOjpwYWdlRGlkU2Nyb2xsKCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlBh
Z2VEaWRTY3JvbGwoKSk7CiB9CiAKK1dlYkNvbnRleHRNZW51KiBXZWJQYWdlOjpjb250ZXh0TWVu
dSgpCit7CisgICAgaWYgKCFtX2NvbnRleHRNZW51KQorICAgICAgICBtX2NvbnRleHRNZW51ID0g
V2ViQ29udGV4dE1lbnU6OmNyZWF0ZSh0aGlzKTsKKyAgICByZXR1cm4gbV9jb250ZXh0TWVudS5n
ZXQoKTsKK30KKwogLy8gRXZlbnRzIAogCiBzdGF0aWMgY29uc3QgV2ViRXZlbnQqIGdfY3VycmVu
dEV2ZW50ID0gMDsKQEAgLTUxOSw3ICs1MjksMjAgQEAgc3RhdGljIGJvb2wgaGFuZGxlTW91c2VF
dmVudChjb25zdCBXZWJNbwogCiAgICAgc3dpdGNoIChwbGF0Zm9ybU1vdXNlRXZlbnQuZXZlbnRU
eXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpNb3VzZUV2ZW50UHJlc3NlZDoKLSAgICAg
ICAgICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUHJlc3NFdmVu
dChwbGF0Zm9ybU1vdXNlRXZlbnQpOworICAgICAgICB7CisgICAgICAgICAgICBpZiAocGxhdGZv
cm1Nb3VzZUV2ZW50LmJ1dHRvbigpID09IFdlYkNvcmU6OlJpZ2h0QnV0dG9uKQorICAgICAgICAg
ICAgICAgIHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jbGVhckNvbnRleHRNZW51KCk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJvb2wgaGFuZGxlZCA9IGZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+aGFuZGxlTW91c2VQcmVzc0V2ZW50KHBsYXRmb3JtTW91c2VFdmVudCk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGlmIChwbGF0Zm9ybU1vdXNlRXZlbnQuYnV0dG9uKCkgPT0g
V2ViQ29yZTo6UmlnaHRCdXR0b24pIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gZnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5zZW5kQ29udGV4dE1lbnVFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQp
OworICAgICAgICAgICAgICAgIGlmIChoYW5kbGVkKQorICAgICAgICAgICAgICAgICAgICBwYWdl
LT5jaHJvbWUoKS0+c2hvd0NvbnRleHRNZW51KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBoYW5kbGVkOworICAgICAgICB9CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6TW91
c2VFdmVudFJlbGVhc2VkOgogICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50KTsKICAgICAgICAg
Y2FzZSBXZWJDb3JlOjpNb3VzZUV2ZW50TW92ZWQ6CkBAIC04ODMsNiArOTA2LDEzIEBAIHZvaWQg
V2ViUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckEKICAgICBtX2FjdGl2ZVBvcHVwTWVu
dSA9IDA7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6ZGlkU2VsZWN0SXRlbUZyb21BY3RpdmVDb250ZXh0
TWVudShjb25zdCBXZWJDb250ZXh0TWVudUl0ZW0mIGl0ZW0pCit7CisgICAgQVNTRVJUKG1fY29u
dGV4dE1lbnUpOworICAgIG1fY29udGV4dE1lbnUtPml0ZW1TZWxlY3RlZChpdGVtKTsKKyAgICBt
X2NvbnRleHRNZW51ID0gMDsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykKIHZvaWQgV2ViUGFnZTo6
YWRkUGx1Z2luVmlldyhQbHVnaW5WaWV3KiBwbHVnaW5WaWV3KQogewpJbmRleDogV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDggQEAg
Y2xhc3MgRHJhd2luZ0FyZWE7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdDsK
IGNsYXNzIFBhZ2VPdmVybGF5OwogY2xhc3MgUGx1Z2luVmlldzsKK2NsYXNzIFdlYkNvbnRleHRN
ZW51OworY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtOwogY2xhc3MgV2ViRXZlbnQ7CiBjbGFzcyBX
ZWJGcmFtZTsKIGNsYXNzIFdlYkluc3BlY3RvcjsKQEAgLTE4Niw2ICsxODgsOCBAQCBwdWJsaWM6
CiAgICAgRmluZENvbnRyb2xsZXImIGZpbmRDb250cm9sbGVyKCkgeyByZXR1cm4gbV9maW5kQ29u
dHJvbGxlcjsgfQogCiAgICAgdm9pZCBwYWdlRGlkU2Nyb2xsKCk7CisgICAgCisgICAgV2ViQ29u
dGV4dE1lbnUqIGNvbnRleHRNZW51KCk7CiAKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKQEAgLTI1Miw2ICsy
NTYsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFj
dGl2ZVBvcHVwTWVudShpbnQzMl90IG5ld0luZGV4KTsKIAorI2lmIEVOQUJMRShDT05URVhUX01F
TlVTKQorICAgIHZvaWQgZGlkU2VsZWN0SXRlbUZyb21BY3RpdmVDb250ZXh0TWVudShjb25zdCBX
ZWJDb250ZXh0TWVudUl0ZW0mKTsKKyNlbmRpZgorCiAgICAgT3duUHRyPFdlYkNvcmU6OlBhZ2U+
IG1fcGFnZTsKICAgICBSZWZQdHI8V2ViRnJhbWU+IG1fbWFpbkZyYW1lOwogICAgIFJlZlB0cjxJ
bmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdD4gbV9iYWNrRm9yd2FyZExpc3Q7CkBAIC0yOTQs
NiArMzAyLDggQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJQb3B1cE1lbnU+IG1fYWN0aXZl
UG9wdXBNZW51OwogCisgICAgUmVmUHRyPFdlYkNvbnRleHRNZW51PiBtX2NvbnRleHRNZW51Owor
CiAgICAgdWludDY0X3QgbV9wYWdlSUQ7CiB9OwogCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDcxMDMxKQorKysgV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtNzgsNiArNzgsOSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKIAogICAgICMgUG9wdXAg
bWVudS4KICAgICBEaWRDaGFuZ2VTZWxlY3RlZEluZGV4Rm9yQWN0aXZlUG9wdXBNZW51KGludDMy
X3QgbmV3SW5kZXgpOworICAgIAorICAgICMgQ29udGV4dCBtZW51LgorICAgIERpZFNlbGVjdEl0
ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW0gbWVudUl0
ZW0pOwogCiAgICAgU2V0V2luZG93UmVzaXplclNpemUoV2ViQ29yZTo6SW50U2l6ZSBpbnRlcnNl
Y3RzVmlldykKIApJbmRleDogV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0
Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ4OSw2ICs0ODksMTQgQEAK
IAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hh
cmVkXFdlYkNvbnRleHRNZW51SXRlbS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcV2ViQ29udGV4dE1lbnVJdGVtLmgiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFy
ZWRcV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMTE4
OCw2ICsxMTk2LDE0IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2VcV2ViQ29udGV4dE1lbnUuY3BwIg0K
KwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFdlYlByb2Nlc3NcV2ViUGFnZVxXZWJDb250ZXh0TWVudS5oIg0KKwkJCQkJPg0KKwkJCQk8L0Zp
bGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2ViUGFn
ZVxXZWJFZGl0Q29tbWFuZC5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkBAIC0xNjg1LDYg
KzE3MDEsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5cVUlQcm9jZXNzXFdlYkNvbnRleHRNZW51UHJveHkuY3BwIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXFdlYkNv
bnRleHRNZW51UHJveHkuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xXZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaCIN
CiAJCQkJPg0KIAkJCTwvRmlsZT4NCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDcxMDMxKQor
KysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDEwLTExLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNzY2MDU0Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
ODY5OQorICAgICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIuCisKKyAgICAg
ICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGll
bnRJbXBsOjpzaG93Q29udGV4dE1lbnUpOgorCiAyMDEwLTExLTAxICBMZWFuZHJvIEdyYWNpYSBH
aWwgIDxsZWFuZHJvZ3JhY2lhQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVy
ZW15IE9ybG93LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJKHJl
dmlzaW9uIDcxMDMxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQ
b3B1cE1lbnVDbGllbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51
Q2xpZW50KikgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2aXJ0dWFs
IHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lk
IGdldFBvcHVwTWVudUluZm8oV2ViQ29yZTo6UG9wdXBDb250YWluZXIqLCBXZWJQb3B1cE1lbnVJ
bmZvKik7CiAKSW5kZXg6IFdlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdC9lZmwvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTEtMDEgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Njk5CisgICAgICAgIENvbnRleHQgbWVudSBz
dXBwb3J0IGZvciBXZWJLaXQgMi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpzaG93Q29udGV4
dE1lbnUpOgorCiAyMDEwLTEwLTI5ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KIAog
ICAgICAgICBObyByZXZpZXcsIHJvbGxpbmcgb3V0IDcwOTcxLgpJbmRleDogV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCShyZXZpc2lvbiA3MTAzMSkKKysrIFdl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTExNSw2ICsxMTUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKik7CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUo
KSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBh
c3NSZWZQdHI8RmlsZUNob29zZXI+KTsKICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUNob29zZXIqKTsKICAgICB2aXJ0dWFsIHZv
aWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKTsKSW5kZXg6IFdlYktpdC9ndGsvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTAy
OSkKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTAtMTEtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4
Njk5CisgICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQgMi4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorICAgICAgICAoV2ViS2l0OjpD
aHJvbWVDbGllbnQ6OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTAtMTEtMDEgIE1hcmlvIFNhbmNo
ZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1h
cnRpbiBSb2JpbnNvbi4KSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuaAkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDkgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVT
aXplKGludDY0X3Qgc3BhY2VOZWVkZWQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgICAgIHZpcnR1YWwgdm9pZCBzaG93
Q29udGV4dE1lbnUoKSB7IH0KKyNlbmRpZgogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBh
bmVsKFdlYkNvcmU6OkZyYW1lKiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4pOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxXVEY6
OlN0cmluZz4mLCBXZWJDb3JlOjpGaWxlQ2hvb3NlciopOwogCkluZGV4OiBXZWJLaXQvaGFpa3Uv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9oYWlrdS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDcxMDMxKQorKysgV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDEwLTExLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzY2MDU0Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00ODY5OQorICAgICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTAtMTAt
MjkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50SGFpa3UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50SGFpa3UuaAkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQvaGFpa3Uv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaAkod29ya2luZyBjb3B5KQpAQCAtMTM3
LDYgKzEzNyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJl
YWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2lu
Kik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICAgICAgdmlydHVhbCB2
b2lkIHNob3dDb250ZXh0TWVudSgpIHsgfQorI2VuZGlmCiAKICAgICAgICAgLy8gVGhpcyBpcyBh
biBhc3luY2hyb25vdXMgY2FsbC4gVGhlIENocm9tZUNsaWVudCBjYW4gZGlzcGxheSBVSSBhc2tp
bmcgdGhlIHVzZXIgZm9yIHBlcm1pc3Npb24KICAgICAgICAgLy8gdG8gdXNlIEdlb2xvY29jYXRp
b24uCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTExLTAxICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY2MDU0Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODY5OQorICAgICAgICBDb250ZXh0IG1lbnUgc3VwcG9y
dCBmb3IgV2ViS2l0IDIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6c2hvd0NvbnRleHRNZW51KToKKwogMjAx
MC0xMC0yOSAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+CiAKICAgICAgICAgTm8gcmV2
aWV3LCByb2xsaW5nIG91dCA3MDk3MS4KSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNiArMTc4
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+
IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQ
b3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAKKyNpZiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9Cisj
ZW5kaWYKIHByaXZhdGU6CiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogfTsKSW5kZXg6IFdlYktp
dC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNp
b24gNzEwMzEpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTAtMTEtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ4Njk5CisgICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQgMi4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRRdDo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxMC0xMC0zMSAgUm9i
ZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50
b25pbyBHb21lcy4KSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5oCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNiArMTM0LDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2
NF90IHNwYWNlTmVlZGVkKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qKTsKICNlbmRpZgorI2lmIEVOQUJMRShD
T05URVhUX01FTlVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0KKyNl
bmRpZgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgICAgIHZpcnR1YWwgTm90aWZp
Y2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdDsKSW5kZXg6IFdl
YktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShy
ZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTAtMTEtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NjYwNTQ3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ4Njk5CisgICAgICAgIENvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXZWJLaXQg
Mi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAg
ICAoV2ViQ2hyb21lQ2xpZW50OjpzaG93Q29udGV4dE1lbnUpOgorCiAyMDEwLTEwLTI5ICBEYW5p
ZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KIAogICAgICAgICBObyByZXZpZXcsIHJvbGxpbmcg
b3V0IDcwOTcxLgpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luKik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URVhUX01F
TlVTKQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0KKyNlbmRpZgorCiAg
ICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlVmlzaXRlZExpbmtzKCk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgcGFpbnRDdXN0b21TY3JvbGxiYXIoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiwgV2ViQ29yZTo6U2Nyb2xsYmFyQ29udHJvbFNpemUsIApJbmRl
eDogV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMS0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzc2NjA1NDc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDg2OTkKKyAgICAgICAgQ29udGV4dCBtZW51IHN1cHBvcnQgZm9yIFdlYktp
dCAyLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTAtMTAt
MjkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFNhbSBXZWluaWcuCkluZGV4OiBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRX
eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4
LmgJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xp
ZW50V3guaAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDYgKzEyOSwxMCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlP
cmlnaW4qKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgdmlydHVh
bCB2b2lkIHNob3dDb250ZXh0TWVudSgpIHsgfQorI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQg
cnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogICAgIHZpcnR1
YWwgdm9pZCBjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlQ2hv
b3NlciopOwogCg==
</data>
<flag name="review"
          id="62787"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>