<?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>96546</bug_id>
          
          <creation_ts>2012-09-12 12:52:15 -0700</creation_ts>
          <short_desc>Delayed structure sweep can leak structures without bound</short_desc>
          <delta_ts>2012-10-03 10:51:46 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>96980</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>abarth</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ossy</cc>
    
    <cc>philn</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>718628</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-09-12 12:52:15 -0700</bug_when>
    <thetext>* STEPS TO REPRODUCE
1. Load attached test case (scratch.html) in TOT.
--&gt; Memory growth without bound</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718629</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-09-12 12:54:27 -0700</bug_when>
    <thetext>See MarkedAllocator::tryAllocateHelper and MarkedAllocator::addBlock for why this happens. We reset the m_blocksToSweep pointer to the end of the list if we end up not sweeping anything, which is entirely possible for us to do w/o actually sweeping blocks with only Structures. We need to leave the m_blocksToSweep where it is when we add a new block and only move it forward when we actually do some sweeping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718630</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-09-12 12:55:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/12286575&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721239</commentid>
    <comment_count>3</comment_count>
      <attachid>164247</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-09-14 16:34:41 -0700</bug_when>
    <thetext>Created attachment 164247
Test case

Sorry, forgot to upload the test case. Here it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721262</commentid>
    <comment_count>4</comment_count>
      <attachid>164251</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-09-14 17:07:55 -0700</bug_when>
    <thetext>Created attachment 164251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721273</commentid>
    <comment_count>5</comment_count>
      <attachid>164251</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-14 17:32:31 -0700</bug_when>
    <thetext>Comment on attachment 164251
Patch

Attachment 164251 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13852601</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721293</commentid>
    <comment_count>6</comment_count>
      <attachid>164251</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-14 18:09:05 -0700</bug_when>
    <thetext>Comment on attachment 164251
Patch

Attachment 164251 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13848719</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721315</commentid>
    <comment_count>7</comment_count>
      <attachid>164251</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-14 18:44:08 -0700</bug_when>
    <thetext>Comment on attachment 164251
Patch

Attachment 164251 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13858377</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721654</commentid>
    <comment_count>8</comment_count>
      <attachid>164332</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-09-16 18:24:11 -0700</bug_when>
    <thetext>Created attachment 164332
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721655</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-16 18:28:03 -0700</bug_when>
    <thetext>Attachment 164332 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackConstr...&quot; exit_code: 1
Source/JavaScriptCore/runtime/JSWrapperObject.h:31:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCell.h:39:  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>721660</commentid>
    <comment_count>10</comment_count>
      <attachid>164332</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-16 19:09:09 -0700</bug_when>
    <thetext>Comment on attachment 164332
Patch

Attachment 164332 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13871280</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721662</commentid>
    <comment_count>11</comment_count>
      <attachid>164332</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-16 19:16:10 -0700</bug_when>
    <thetext>Comment on attachment 164332
Patch

Attachment 164332 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13879096</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721666</commentid>
    <comment_count>12</comment_count>
      <attachid>164332</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-16 19:21:06 -0700</bug_when>
    <thetext>Comment on attachment 164332
Patch

Attachment 164332 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13871282</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721667</commentid>
    <comment_count>13</comment_count>
      <attachid>164334</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-09-16 19:25:27 -0700</bug_when>
    <thetext>Created attachment 164334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721669</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-16 19:28:48 -0700</bug_when>
    <thetext>Attachment 164334 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackConstr...&quot; exit_code: 1
Source/JavaScriptCore/runtime/JSWrapperObject.h:31:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCell.h:39:  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>721681</commentid>
    <comment_count>15</comment_count>
      <attachid>164336</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-09-16 21:54:31 -0700</bug_when>
    <thetext>Created attachment 164336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721684</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-16 21:57:31 -0700</bug_when>
    <thetext>Attachment 164336 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackConstr...&quot; exit_code: 1
Source/JavaScriptCore/runtime/JSWrapperObject.h:31:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCell.h:39:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 2 in 59 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>722076</commentid>
    <comment_count>17</comment_count>
      <attachid>164420</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-09-17 11:07:40 -0700</bug_when>
    <thetext>Created attachment 164420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722078</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-17 11:11:15 -0700</bug_when>
    <thetext>Attachment 164420 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackConstr...&quot; exit_code: 1
Source/JavaScriptCore/runtime/JSWrapperObject.h:31:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCell.h:39:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 2 in 59 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>722217</commentid>
    <comment_count>19</comment_count>
      <attachid>164420</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-09-17 13:21:08 -0700</bug_when>
    <thetext>Comment on attachment 164420
Patch

&quot;dtorType&quot; - please rename to &quot;destructorType&quot; – WebKit style doesn&apos;t allow abbreviation.

Is the idea that pretty much all classes that subclass JSNonFinalObject have been changed to subclass JSDestructibleObject? – if so, I&apos;d suggest it could be a good idea to rename JSNonFinalObject, to enforce this &amp; ensure no classes have been missed.  Even if you don&apos;t want to land this, might be worth doing a quick rename &amp; floating a patch for the EWS system to test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722218</commentid>
    <comment_count>20</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-09-17 13:27:51 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 164420 [details])
&gt; &quot;dtorType&quot; - please rename to &quot;destructorType&quot; – WebKit style doesn&apos;t allow abbreviation.

The compiler gets mad because destructorType is the same name as the accessor function.

&gt; 
&gt; Is the idea that pretty much all classes that subclass JSNonFinalObject have been changed to subclass JSDestructibleObject? – if so, I&apos;d suggest it could be a good idea to rename JSNonFinalObject, to enforce this &amp; ensure no classes have been missed.  Even if you don&apos;t want to land this, might be worth doing a quick rename &amp; floating a patch for the EWS system to test.

That&apos;s not quite the idea. There are some specific subclasses of JSNonFinalObject that *should not* have this extra field added, e.g. JSScope and some other stuff. That&apos;s why I used a finalizer for JSGlobalObject so as not to force JSScope to inherit from JSDestructibleObject. So we&apos;re trying to strike a balance between needing to access an object&apos;s ClassInfo safely during sweeping and not forcing too many other classes that don&apos;t need this to waste the extra space.

I could still use your suggestion and rename JSNonFinalObject to make sure that I didn&apos;t miss any subclasses of JSNonFinalObject that need to inherit from JSDestructibleObject instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722269</commentid>
    <comment_count>21</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-09-17 14:30:29 -0700</bug_when>
    <thetext>&gt; I could still use your suggestion and rename JSNonFinalObject to make sure that I didn&apos;t miss any subclasses of JSNonFinalObject that need to inherit from JSDestructibleObject instead.

Actually, this still won&apos;t guarantee anything because there could be subclasses that would still not be caught by the compiler. I&apos;ll just have to land and keep my eye on the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722273</commentid>
    <comment_count>22</comment_count>
      <attachid>164420</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-17 14:33:03 -0700</bug_when>
    <thetext>Comment on attachment 164420
Patch

Rejecting attachment 164420 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
orJS.pm
patching file Source/WebCore/bridge/runtime_array.cpp
patching file Source/WebCore/bridge/runtime_array.h
patching file Source/WebCore/bridge/runtime_object.cpp
patching file Source/WebCore/bridge/runtime_object.h
patching file Source/WebCore/bridge/objc/objc_runtime.h
patching file Source/WebCore/bridge/objc/objc_runtime.mm

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Gavin Barr...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/13878411</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722309</commentid>
    <comment_count>23</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-09-17 15:15:46 -0700</bug_when>
    <thetext>Committed r128813: &lt;http://trac.webkit.org/changeset/128813&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722494</commentid>
    <comment_count>24</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-17 22:35:30 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Committed r128813: &lt;http://trac.webkit.org/changeset/128813&gt;

This made all of tests on Apple Windows port crash.

http://build.webkit.org/results/Apple%20Win%207%20Release%20(Tests)/r128813%20(27780)/accessibility/accessibility-node-memory-management-crash-log.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722495</commentid>
    <comment_count>25</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-09-17 22:36:16 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; Committed r128813: &lt;http://trac.webkit.org/changeset/128813&gt;
&gt; 
&gt; This made all of tests on Apple Windows port crash.
&gt; 
&gt; http://build.webkit.org/results/Apple%20Win%207%20Release%20(Tests)/r128813%20(27780)/accessibility/accessibility-node-memory-management-crash-log.txt

Looking into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722497</commentid>
    <comment_count>26</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-09-17 22:53:50 -0700</bug_when>
    <thetext>Looks like the ArrayPrototype thinks it has a normal destructor, but it shouldn&apos;t need one. I think our compiler magic we do with the NeedsDestructor template has finally caught up with us. I&apos;ll try adding support for MSVC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722500</commentid>
    <comment_count>27</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-09-17 23:01:16 -0700</bug_when>
    <thetext>Reopen, because I had to roll it out by https://trac.webkit.org/changeset/128851, because it made all JSC and layout test fail on EFL, GTK, Qt bots ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731356</commentid>
    <comment_count>28</comment_count>
      <attachid>166396</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-09-30 18:30:19 -0700</bug_when>
    <thetext>Created attachment 166396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731357</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-30 18:32:33 -0700</bug_when>
    <thetext>Attachment 166396 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackConstr...&quot; exit_code: 1
Source/JavaScriptCore/runtime/JSWrapperObject.h:31:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCell.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/Arguments.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 3 in 61 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>731888</commentid>
    <comment_count>30</comment_count>
      <attachid>166396</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-01 12:17:42 -0700</bug_when>
    <thetext>Comment on attachment 166396
Patch

r=me

FWIW, I don&apos;t think m_immortalStructureDestructorSpace buys us much. There aren&apos;t very many of these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733838</commentid>
    <comment_count>31</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-10-03 10:51:46 -0700</bug_when>
    <thetext>Committed r130303: &lt;http://trac.webkit.org/changeset/130303&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>164247</attachid>
            <date>2012-09-14 16:34:41 -0700</date>
            <delta_ts>2012-09-14 16:34:41 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>scratch.html</filename>
            <type>text/html</type>
            <size>589</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">PHA+VGhpcyB0ZXN0cyB2ZXJpZmllcyB0aGUgaWRlbnRpdHkgb2YgZnVuY3Rpb24uYXJndW1lbnRz
IHZzICdhcmd1bWVudHMnIHVzZWQgbG9jYWxseS4KPC9wPgo8cHJlIGlkPSJjb25zb2xlIj48L3By
ZT4KCjxzY3JpcHQ+CmZ1bmN0aW9uIGxvZyhzKQp7Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29uc29sZSIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHMgKyAiXHJcbiIp
KTsKfQoKZnVuY3Rpb24gc2hvdWxkQmUoYSwgYURlc2NyaXB0aW9uLCBiKQp7CglpZiAoYSA9PSBi
KSB7CgkJbG9nKCJQQVNTOiAiICsgYURlc2NyaXB0aW9uICsgIiBzaG91bGQgYmUgIiArIGIgKyAi
IGFuZCBpcy4iKTsKCQlyZXR1cm47Cgl9Cglsb2coIkZBSUw6ICIgKyBhRGVzY3JpcHRpb24gKyAi
IHNob3VsZCBiZSAiICsgYiArICIgYnV0IGluc3RlYWQgaXMgIiArIGEgKyAiLiIpOwp9CgppZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwp9CgooZnVuY3Rp
b24oKSB7Cgl3aGlsZSAoMSkgewoJCXZhciBvID0geyB4OiBudWxsIH07CgkJZGVsZXRlIG8ueDsK
CX0KfSkoKTsKPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164251</attachid>
            <date>2012-09-14 17:07:55 -0700</date>
            <delta_ts>2012-09-16 18:24:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96546-20120914170726.patch</filename>
            <type>text/plain</type>
            <size>20458</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4NjcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBA
CisyMDEyLTA5LTE0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgRGVsYXllZCBzdHJ1Y3R1cmUgc3dlZXAgY2FuIGxlYWsgc3RydWN0dXJlcyB3aXRo
b3V0IGJvdW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NjU0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggZmxvYXRzIGdhcmJhZ2UgU3RydWN0dXJlcyBwb3RlbnRpYWxseSBhbiBhZGRp
dGlvbmFsIGFsbG9jYXRpb24gY3ljbGUsIGJ1dCBpdCBwbHVncyB0aGUgbWVtb3J5IGxlYWsgCisg
ICAgICAgIHdlIGN1cnJlbnRseSBoYXZlIGluIG91ciBTdHJ1Y3R1cmVzLW9ubHkgYWxsb2NhdG9y
IGluIHRoZSBNYXJrZWRTcGFjZS4gSXQgZG9lcyB0aGlzIGJ5IGhhdmluZyB0d28gU3RydWN0dXJl
IAorICAgICAgICBhbGxvY2F0b3JzLCBvbmUgd2hpY2ggY2FuIHNhZmVseSBydW4gZGVzdHJ1Y3Rv
cnMgKG1fb2xkU3RydWN0dXJlQWxsb2NhdG9yKSBhbmQgb25lIHRoYXQgYWxsb3dzIG5ldyBTdHJ1
Y3R1cmUgCisgICAgICAgIGFsbG9jYXRpb24gKG1fbmV3U3RydWN0dXJlQWxsb2NhdG9yKS4gVGhl
c2UgYWxsb2NhdG9ycyBhcmUgc3dhcHBlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggR0Mgc28g
dGhhdCB0aGUgCisgICAgICAgIG1lbW9yeSByZWNsYWltZWQgaW4gdGhlIG9sZCBTdHJ1Y3R1cmUg
YWxsb2NhdG9yIGNhbiBiZSByZXVzZWQgYW5kIHRoZSBtZW1vcnkgdGhhdCBiZWNhbWUgZGVhZCBp
biB0aGUgbmV3IAorICAgICAgICBTdHJ1Y3R1cmUgYWxsb2NhdG9yIGNhbiBiZSByZWNsYWltZWQu
CisKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0
KTogV2UgbmVlZCB0byBmaW5pc2ggdGhlIHN3ZWVwIG9mIGFsbCB0aGUgZ2FyYmFnZSBmcm9tIHRo
ZSBwcmV2aW91cyBjb2xsZWN0aW9uIGN5Y2xlIGJlZm9yZSAKKyAgICAgICAgd2Ugc3RhcnQgdGhp
cyBuZXcgY29sbGVjdGlvbiBjeWNsZSBzbyB0aGF0IHdlIGd1YXJhbnRlZSB0aGF0IHdlIHJlY3lj
bGUgb3VyIFN0cnVjdHVyZSBibG9ja3MuCisgICAgICAgICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVw
ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVwZXI6OmZpbmlzaFN3ZWVwaW5n
KTogSXRlcmF0ZSBvdmVyIHRoZSBibG9ja3MsIHN3ZWVwaW5nIHRoZW0gYXMgd2UgZ28gdW50aWwg
YWxsIGJsb2NrcyBpbiAKKyAgICAgICAgdGhlIEluY3JlbWVudGFsU3dlZXBlcidzIGN1cnJlbnQg
c25hcHNob3QgaGF2ZSBiZWVuIHN3ZXB0LiBXZSBub3RpZnkgdGhlIE1hcmtlZFNwYWNlIHRoYXQg
d2UgaGF2ZSBmaW5pc2hlZCBzd2VlcGluZyAKKyAgICAgICAgc28gdGhhdCBpdCBjYW4gc3dhcCB0
aGUgbmV3IGFuZCBvbGQgU3RydWN0dXJlIGFsbG9jYXRvcnMuIFdlIGRvbid0IG5lZWQgdG8gZG8g
dGhpcyBpbiBkb1N3ZWVwKCkgYmVjYXVzZSB3ZSBkb24ndCAKKyAgICAgICAgbmVlZCB0byBkbyBh
bnl0aGluZyBzcGVjaWFsIGlmIHdlIGZpbmlzaCBvcHBvcnR1bmlzdGljIHN3ZWVwaW5nIGVhcmx5
LiBXZSBvbmx5IG5lZWQgdG8gc3dhcCBpbW1lZGlhdGVseSBiZWZvcmUgYSBHQyBoYXBwZW5zLgor
ICAgICAgICAoSlNDKToKKyAgICAgICAgKiBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5oOgorICAg
ICAgICAoSW5jcmVtZW50YWxTd2VlcGVyKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEFsbG9jYXRv
ci5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVIZWxwZXIp
OiBXZSBjYW4gZ2V0IHJpZCBvZiBhbGwgdGhhdCBleHRyYSBsb2dpYyBoYXZpbmcgdG8gZG8gd2l0
aCBibG9ja3MgdGhhdCBvbmx5IAorICAgICAgICBjb250YWluIFN0cnVjdHVyZXMuIFdlIGVuY2Fw
c3VsYXRlIHRoaXMgbG9naWMgaW4gaXNPa2F5VG9Td2VlcFVubWFya2VkQ2VsbCBpbnN0ZWFkIHNv
IHRoYXQgd2UgY2FuIHNhZmVseSBzd2VlcCBvdmVyIAorICAgICAgICBibG9ja3Mgd2l0aCBTdHJ1
Y3R1cmVzIHRoYXQgaGF2ZSBiZWVuIGZvdW5kIHRvIGJlIGRlYWQgYnV0IGFyZSBjdXJyZW50bHkg
aW4gdGhlIG5ldyBTdHJ1Y3R1cmUgYWxsb2NhdG9yIHNwYWNlLgorICAgICAgICAoSlNDOjpNYXJr
ZWRBbGxvY2F0b3I6OmFsbG9jYXRlQmxvY2spOiBBcyBhbiBhc3Npc3QgdG8gaGVscCB1cyBmaW5p
c2ggc3dlZXBpbmcgYmxvY2tzIHNvb25lciBzbyB0aGF0IHdlIGNhbiBzdGFydCAKKyAgICAgICAg
c3dlZXBpbmcgU3RydWN0dXJlIGJsb2Nrcywgd2UgZG8gYW4gZXh0cmEgc3dlZXAgZm9yIGV2ZXJ5
IG5ldyBibG9jayB3ZSBoYXZlIHRvIGFsbG9jYXRlIGluIE1hcmtlZFNwYWNlLgorICAgICAgICAq
IGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y3JlYXRl
KTogV2Ugbm93IHN0b3JlIHRoZSBhbGxvY2F0b3IgZm9yIGEgcGFydGljdWxhciBNYXJrZWRCbG9j
ayBzaW5jZSB0aGVyZSBhcmUgcG90ZW50aWFsbHkgdHdvIAorICAgICAgICBhbGxvY2F0b3JzIGZv
ciBibG9ja3Mgb25seSBjb250YWlucyBTdHJ1Y3R1cmVzIGFuZCBpdCB3b3VsZCBiZSBpbXBvc3Np
YmxlIHRvIGtub3cgd2hpY2ggb25lIGl0IGNhbWUgZnJvbSB3aXRob3V0IAorICAgICAgICBwb3Rl
bnRpYWxseSBpdGVyYXRpbmcgYWxsIHRoZSBibG9ja3MgaW4gb25lIG9mIHRoZSBTdHJ1Y3R1cmUg
YWxsb2NhdG9ycy4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzT2theVRvU3dlZXBVbm1hcmtlZENlbGwpOiBUaGlz
IGNoZWNrIGFsbG93cyB1cyB0byBzYWZlbHkgc3dlZXAgU3RydWN0dXJlIGJsb2NrcyB3aXRob3V0
IGhhdmluZyB0byAKKyAgICAgICAgd29ycnkgaWYgYSBuZXdseSBkZWFkIFN0cnVjdHVyZSBpcyBp
biB0aGUgYmxvY2suIAorICAgICAgICAxKSBJZiB0aGUgYmxvY2sgaXMgTmV3LCB3ZSBrbm93IHdl
IGNhbiBzd2VlcCBldmVyeXRoaW5nLiAKKyAgICAgICAgMikgSWYgdGhlIGJsb2NrIGRvZXNuJ3Qg
Y29udGFpbiBTdHJ1Y3R1cmVzLCB3ZSBrbm93IHRoYXQgaXQncyBhbHdheXMgc2FmZSB0byBzd2Vl
cC4gCisgICAgICAgIDMpIElmIHRoZSBibG9jayBkb2VzIGNvbnRhaW4gU3RydWN0dXJlcyBidXQg
d2UndmUgcmVhY2hlZCB0aGUgcG9pbnQgaW4gb3VyIGluY3JlbWVudGFsIHN3ZWVwaW5nIHdoZXJl
IGl0J3Mgc2FmZSB0byAKKyAgICAgICAgICAgc3dlZXAgc3RydWN0dXJlcyAoaS5lLiBhbGwgb3Ro
ZXIgb2JqZWN0cyBoYXZlIGJlZW4gc3dlcHQpLCB0aGVuIGl0J3Mgb2theSBmb3IgdXMgdG8gc3dl
ZXAgdGhpcyBjZWxsLiAKKyAgICAgICAgNCkgSWYgd2UgaGF2ZW4ndCByZWFjaGVkIG91ciBzYWZl
IHBvaW50IHlldCBidXQgdGhpcyBjZWxsIGhhcyBiZWVuIHphcHBlZCwgdGhlbiBpdCdzIG9rYXkg
dG8gCisgICAgICAgIHB1dCB0aGlzIGNlbGwgaW50byBhIGZyZWUgbGlzdCBiZWNhdXNlIHdlIGtu
b3cgaXRzIGRlc3RydWN0b3IgaGFzIGFscmVhZHkgYmVlbiBydW4gCisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCk6IENhbGwgb3VyIG5l
dyBpc09rYXlUb1N3ZWVwVW5tYXJrZWRDZWxsIGZ1bmN0aW9uIGFmdGVyIHdlIGRldGVybWluZSB0
aGF0IHRoZSBjZWxsIGlzCisgICAgICAgIHVubWFya2VkLgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6c3dlZXBIZWxwZXIpOiBSZW1vdmUgdGhlIGFzc2VydGlvbiBoZXJlIGJlY2F1c2UgaXQn
cyBub3cgc2FmZSB0byBzd2VlcCBTdHJ1Y3R1cmUgYmxvY2tzIHNpbmNlIAorICAgICAgICBpc09r
YXlUb1N3ZWVwVW5tYXJrZWRDZWxsIGhhbmRsZXMgYWxsIG9mIHRoZSBwb3RlbnRpYWwgY2FzZXMg
Zm9yIHVzLgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChNYXJrZWRCbG9jayk6IFJlZmFjdG9yaW5nIE1hcmtlZEJsb2NrIHNvIHRoYXQgaXQg
a2VlcHMgdHJhY2sgb2YgaXRzIE1hcmtlZEFsbG9jYXRvci4KKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OmFsbG9jYXRvcik6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5jcHA6CisgICAg
ICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpNYXJrZWRTcGFjZSk6IEFkZCBhbiBhZGRpdGlvbmFsIE1h
cmtlZEFsbG9jYXRvciBzbyB0aGF0IHdlIGNhbiBoYXZlIHR3bywgb25lIGFzIGEgc29ydCBvZiBw
dXJnYXRvcnkgCisgICAgICAgIGZvciBTdHJ1Y3R1cmUgYmxvY2tzIHRvIGFjdHVhbGx5IGJlIHN3
ZXB0LCBhbmQgdGhlIG90aGVyIHdoaWNoIGlzIHRoZSBvbmUgd2UgYWx3YXlzIGFsbG9jYXRlIG5l
dyBTdHJ1Y3R1cmVzIGluLiBUaGUgbGF0dGVyIGNhbid0IAorICAgICAgICBhY3R1YWxseSBjYWxs
IGFueSBkZXN0cnVjdG9ycyBmb3IgU3RydWN0dXJlcywgYnV0IGl0IGNhbiBjcmVhdGUgZnJlZSBs
aXN0cyBpbiBvcmRlciB0byByZXVzZSBvbGQgc3BhY2UgaW4gdGhlIGJsb2NrIHdoaWNoIAorICAg
ICAgICB3YXMgZnJlZWQgd2hpbGUgaW4gcHVyZ2F0b3J5LiBUaGVzZSB0d28gc3BhY2VzIGFyZSBm
bGlwcGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZXZlcnkgR0Mgc28gdGhhdCB3ZSBjYW4gcmVjeWNs
ZSB0aGUgc3R1ZmYgCisgICAgICAgIGluIHRoZSAibmV3IiBwdXJnYXRvcnkgc3BhY2UgKGkuZS4g
d2hlcmUgd2Ugd2VyZSBqdXN0IGFsbG9jYXRpbmcgaW50bykgYW5kIHdlIGNhbiBzdGFydCB0byBy
ZXVzZSB0aGUgc3BhY2UgdGhhdCB3YXMgZnJlZWQgCisgICAgICAgIGluIHRoZSAib2xkIiBwdXJn
YXRvcnkgc3BhY2UuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMp
OiBUaHJlYWRpbmcgdGhlIG5ldyBhbGxvY2F0b3JzIHRocm91Z2guCisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjpjYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKToKKyAgICAgICAgKEpTQzo6
TWFya2VkU3BhY2U6OmlzUGFnZWRPdXQpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZnJl
ZUJsb2NrKTogVXNlIHRoZSBuZXcgYWxsb2NhdG9yKCkgZ2V0dGVyIGZvciB0aGUgYmxvY2suCisg
ICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmFsbG9jYXRlU3RydWN0dXJl
KTogV2UgYWx3YXlzIHdhbnQgdG8gYWxsb2NhdGUgbmV3IFN0cnVjdHVyZXMgaW4gd2hhdGV2ZXIg
c3BhY2UgaXMgY3VycmVudGx5IHRoZSAibmV3IgorICAgICAgICBTdHJ1Y3R1cmUgc3BhY2UsIHdo
aWNoIHN3aXRjaGVzIGV2ZXJ5IGFsbG9jYXRpb24gY3ljbGUuCisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpmb3JFYWNoQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZGlkRmlu
aXNoU3dlZXBpbmcpOiBUaGlzIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGRvZXMgdGhlIGFjdHVhbCBz
d2FwIG9mIHRoZSB0d28gU3RydWN0dXJlIGFsbG9jYXRvcnMsIAorICAgICAgICB3aGljaCBpcyBj
YWxsZWQgYXQgdGhlIGNvbmNsdXNpb24gb2YgSW5jcmVtZW50YWxTd2VlcGVyOjpmaW5pc2hTd2Vl
cGluZygpLCB3aGljaCBpcyBpbiB0dXJuIGNhbGxlZCBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgCisg
ICAgICAgIG9mIEhlYXA6OmNvbGxlY3QoKS4KKwogMjAxMi0wOS0xNCAgTWlrZSBXZXN0ICA8bWt3
c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEpTQyBzaG91bGQgdGhyb3cgYSBtb3JlIGRlc2Ny
aXB0aXZlIGV4Y2VwdGlvbiB3aGVuIGJsb2NraW5nICdldmFsJyB2aWEgQ1NQLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDEyODYxNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODUsNiArNjg1
LDggQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9nZwogewogICAgIFNh
bXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJHYXJiYWdlIENvbGxlY3Rpb24iKTsKICAgICAK
KyAgICBzd2VlcGVyKCktPmZpbmlzaFN3ZWVwaW5nKCk7CisKICAgICBHQ1BIQVNFKENvbGxlY3Qp
OwogICAgIEFTU0VSVChnbG9iYWxEYXRhKCktPmFwaUxvY2soKS5jdXJyZW50VGhyZWFkSXNIb2xk
aW5nTG9jaygpKTsKICAgICBBU1NFUlQoZ2xvYmFsRGF0YSgpLT5pZGVudGlmaWVyVGFibGUgPT0g
d3RmVGhyZWFkRGF0YSgpLmN1cnJlbnRJZGVudGlmaWVyVGFibGUoKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAJKHJldmlz
aW9uIDEyODYxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dl
ZXBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw0ICsxOTAsMTQgQEAgYm9vbCBJbmNyZW1l
bnRhbFN3ZWVwZXI6OnN0cnVjdHVyZXNDYW5CZQogICAgIHJldHVybiBtX3N0cnVjdHVyZXNDYW5C
ZVN3ZXB0OwogfQogCit2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6ZmluaXNoU3dlZXBpbmcoKQor
eworICAgIHdoaWxlIChtX2N1cnJlbnRCbG9ja1RvU3dlZXBJbmRleCA8IG1fYmxvY2tzVG9Td2Vl
cC5zaXplKCkpCisgICAgICAgIHN3ZWVwTmV4dEJsb2NrKCk7CisKKyAgICBtX2Jsb2Nrc1RvU3dl
ZXAuY2xlYXIoKTsKKyAgICBjYW5jZWxUaW1lcigpOworICAgIG1fZ2xvYmFsRGF0YS0+aGVhcC5v
YmplY3RTcGFjZSgpLmRpZEZpbmlzaFN3ZWVwaW5nKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2Vl
cGVyLmgJKHJldmlzaW9uIDEyODYxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lu
Y3JlbWVudGFsU3dlZXBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN3ZWVwTmV4dEJsb2NrKCk7CiAgICAgYm9vbCBzdHJ1Y3R1cmVzQ2FuQmVT
d2VwdCgpOwogICAgIHZvaWQgd2lsbEZpbmlzaFN3ZWVwaW5nKCk7CisgICAgdm9pZCBmaW5pc2hT
d2VlcGluZygpOwogCiBwcml2YXRlOgogI2lmIFVTRShDRikgfHwgUExBVEZPUk0oQkxBQ0tCRVJS
WSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9y
LmNwcAkocmV2aXNpb24gMTI4NjE0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTcgKzMwLDYgQEAgYm9vbCBN
YXJrZWRBbGxvY2F0b3I6OmlzUGFnZWRPdXQoZG91YmxlIAogaW5saW5lIHZvaWQqIE1hcmtlZEFs
bG9jYXRvcjo6dHJ5QWxsb2NhdGVIZWxwZXIoc2l6ZV90IGJ5dGVzKQogewogICAgIGlmICghbV9m
cmVlTGlzdC5oZWFkKSB7Ci0gICAgICAgIGlmIChtX29ubHlDb250YWluc1N0cnVjdHVyZXMgJiYg
IW1faGVhcC0+aXNTYWZlVG9Td2VlcFN0cnVjdHVyZXMoKSkgewotICAgICAgICAgICAgaWYgKG1f
Y3VycmVudEJsb2NrKSB7Ci0gICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmRpZENvbnN1
bWVGcmVlTGlzdCgpOwotICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gMDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIC8vIFdlIHN3ZWVwIGFub3RoZXIgcmFuZG9tIGJsb2NrIGhl
cmUgc28gdGhhdCB3ZSBjYW4gbWFrZSBwcm9ncmVzcwotICAgICAgICAgICAgLy8gdG93YXJkIGJl
aW5nIGFibGUgdG8gc3dlZXAgU3RydWN0dXJlcy4KLSAgICAgICAgICAgIG1faGVhcC0+c3dlZXBl
cigpLT5zd2VlcE5leHRCbG9jaygpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0K
LQogICAgICAgICBmb3IgKE1hcmtlZEJsb2NrKiYgYmxvY2sgPSBtX2Jsb2Nrc1RvU3dlZXA7IGJs
b2NrOyBibG9jayA9IGJsb2NrLT5uZXh0KCkpIHsKICAgICAgICAgICAgIE1hcmtlZEJsb2NrOjpG
cmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6U3dlZXBUb0ZyZWVM
aXN0KTsKICAgICAgICAgICAgIGlmICghZnJlZUxpc3QuaGVhZCkgewpAQCAtMTIyLDE1ICsxMTEs
MTcgQEAgTWFya2VkQmxvY2sqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVCbAogCiAgICAgc2l6
ZV90IGNlbGxTaXplID0gbV9jZWxsU2l6ZSA/IG1fY2VsbFNpemUgOiBXVEY6OnJvdW5kVXBUb011
bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXplPihieXRlcyk7CiAKKyAgICBoZWFwKCktPnN3
ZWVwZXIoKS0+c3dlZXBOZXh0QmxvY2soKTsKKwogICAgIGlmIChibG9ja1NpemUgPT0gTWFya2Vk
QmxvY2s6OmJsb2NrU2l6ZSkgewogICAgICAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQgYWxsb2Nh
dGlvbiA9IG1faGVhcC0+YmxvY2tBbGxvY2F0b3IoKS5hbGxvY2F0ZSgpOwotICAgICAgICByZXR1
cm4gTWFya2VkQmxvY2s6OmNyZWF0ZShhbGxvY2F0aW9uLCBtX2hlYXAsIGNlbGxTaXplLCBtX2Nl
bGxzTmVlZERlc3RydWN0aW9uLCBtX29ubHlDb250YWluc1N0cnVjdHVyZXMpOworICAgICAgICBy
ZXR1cm4gTWFya2VkQmxvY2s6OmNyZWF0ZShhbGxvY2F0aW9uLCB0aGlzLCBjZWxsU2l6ZSwgbV9j
ZWxsc05lZWREZXN0cnVjdGlvbiwgbV9vbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKTsKICAgICB9CiAK
ICAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQgYWxsb2NhdGlvbiA9IFBhZ2VBbGxvY2F0aW9uQWxp
Z25lZDo6YWxsb2NhdGUoYmxvY2tTaXplLCBNYXJrZWRCbG9jazo6YmxvY2tTaXplLCBPU0FsbG9j
YXRvcjo6SlNHQ0hlYXBQYWdlcyk7CiAgICAgaWYgKCFzdGF0aWNfY2FzdDxib29sPihhbGxvY2F0
aW9uKSkKICAgICAgICAgQ1JBU0goKTsKLSAgICByZXR1cm4gTWFya2VkQmxvY2s6OmNyZWF0ZShh
bGxvY2F0aW9uLCBtX2hlYXAsIGNlbGxTaXplLCBtX2NlbGxzTmVlZERlc3RydWN0aW9uLCBtX29u
bHlDb250YWluc1N0cnVjdHVyZXMpOworICAgIHJldHVybiBNYXJrZWRCbG9jazo6Y3JlYXRlKGFs
bG9jYXRpb24sIHRoaXMsIGNlbGxTaXplLCBtX2NlbGxzTmVlZERlc3RydWN0aW9uLCBtX29ubHlD
b250YWluc1N0cnVjdHVyZXMpOwogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6YWRkQmxvY2so
TWFya2VkQmxvY2sqIGJsb2NrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMTI4NjE0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywyMSArMzMsMjIgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLU1hcmtlZEJsb2NrKiBNYXJrZWRCbG9jazo6Y3JlYXRlKGNv
bnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYgYWxsb2NhdGlvbiwgSGVhcCogaGVhcCwgc2l6ZV90
IGNlbGxTaXplLCBib29sIGNlbGxzTmVlZERlc3RydWN0aW9uLCBib29sIG9ubHlDb250YWluc1N0
cnVjdHVyZXMpCitNYXJrZWRCbG9jayogTWFya2VkQmxvY2s6OmNyZWF0ZShjb25zdCBQYWdlQWxs
b2NhdGlvbkFsaWduZWQmIGFsbG9jYXRpb24sIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBz
aXplX3QgY2VsbFNpemUsIGJvb2wgY2VsbHNOZWVkRGVzdHJ1Y3Rpb24sIGJvb2wgb25seUNvbnRh
aW5zU3RydWN0dXJlcykKIHsKLSAgICByZXR1cm4gbmV3IChOb3ROdWxsLCBhbGxvY2F0aW9uLmJh
c2UoKSkgTWFya2VkQmxvY2soYWxsb2NhdGlvbiwgaGVhcCwgY2VsbFNpemUsIGNlbGxzTmVlZERl
c3RydWN0aW9uLCBvbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKTsKKyAgICByZXR1cm4gbmV3IChOb3RO
dWxsLCBhbGxvY2F0aW9uLmJhc2UoKSkgTWFya2VkQmxvY2soYWxsb2NhdGlvbiwgYWxsb2NhdG9y
LCBjZWxsU2l6ZSwgY2VsbHNOZWVkRGVzdHJ1Y3Rpb24sIG9ubHlDb250YWluc1N0cnVjdHVyZXMp
OwogfQogCi1NYXJrZWRCbG9jazo6TWFya2VkQmxvY2soY29uc3QgUGFnZUFsbG9jYXRpb25BbGln
bmVkJiBhbGxvY2F0aW9uLCBIZWFwKiBoZWFwLCBzaXplX3QgY2VsbFNpemUsIGJvb2wgY2VsbHNO
ZWVkRGVzdHJ1Y3Rpb24sIGJvb2wgb25seUNvbnRhaW5zU3RydWN0dXJlcykKK01hcmtlZEJsb2Nr
OjpNYXJrZWRCbG9jayhjb25zdCBQYWdlQWxsb2NhdGlvbkFsaWduZWQmIGFsbG9jYXRpb24sIE1h
cmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2VsbFNpemUsIGJvb2wgY2VsbHNOZWVk
RGVzdHJ1Y3Rpb24sIGJvb2wgb25seUNvbnRhaW5zU3RydWN0dXJlcykKICAgICA6IEhlYXBCbG9j
azxNYXJrZWRCbG9jaz4oYWxsb2NhdGlvbikKICAgICAsIG1fYXRvbXNQZXJDZWxsKChjZWxsU2l6
ZSArIGF0b21TaXplIC0gMSkgLyBhdG9tU2l6ZSkKICAgICAsIG1fZW5kQXRvbShhdG9tc1BlckJs
b2NrIC0gbV9hdG9tc1BlckNlbGwgKyAxKQogICAgICwgbV9jZWxsc05lZWREZXN0cnVjdGlvbihj
ZWxsc05lZWREZXN0cnVjdGlvbikKICAgICAsIG1fb25seUNvbnRhaW5zU3RydWN0dXJlcyhvbmx5
Q29udGFpbnNTdHJ1Y3R1cmVzKQorICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQogICAgICwg
bV9zdGF0ZShOZXcpIC8vIEFsbCBjZWxscyBzdGFydCBvdXQgdW5tYXJrZWQuCi0gICAgLCBtX3dl
YWtTZXQoaGVhcC0+Z2xvYmFsRGF0YSgpKQorICAgICwgbV93ZWFrU2V0KGFsbG9jYXRvci0+aGVh
cCgpLT5nbG9iYWxEYXRhKCkpCiB7Ci0gICAgQVNTRVJUKGhlYXApOworICAgIEFTU0VSVChhbGxv
Y2F0b3IpOwogICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7CiB9CiAK
QEAgLTY1LDYgKzY2LDEyIEBAIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpjYWxsRGVzdHJ1Y3Rv
cigKICAgICBjZWxsLT56YXAoKTsKIH0KIAoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzT2th
eVRvU3dlZXBVbm1hcmtlZENlbGwoSlNDZWxsKiBjZWxsKQoreworICAgIEFTU0VSVChtX3N0YXRl
ID09IE5ldyB8fCBtX3N0YXRlID09IE1hcmtlZCk7CisgICAgcmV0dXJuIG1fc3RhdGUgPT0gTmV3
IHx8ICFtX29ubHlDb250YWluc1N0cnVjdHVyZXMgfHwgaGVhcCgpLT5pc1NhZmVUb1N3ZWVwU3Ry
dWN0dXJlcygpIHx8IGNlbGwtPmlzWmFwcGVkKCk7Cit9CisKIHRlbXBsYXRlPE1hcmtlZEJsb2Nr
OjpCbG9ja1N0YXRlIGJsb2NrU3RhdGUsIE1hcmtlZEJsb2NrOjpTd2VlcE1vZGUgc3dlZXBNb2Rl
LCBib29sIGRlc3RydWN0b3JDYWxsTmVlZGVkPgogTWFya2VkQmxvY2s6OkZyZWVMaXN0IE1hcmtl
ZEJsb2NrOjpzcGVjaWFsaXplZFN3ZWVwKCkKIHsKQEAgLTgyLDYgKzg5LDkgQEAgTWFya2VkQmxv
Y2s6OkZyZWVMaXN0IE1hcmtlZEJsb2NrOjpzcGVjaQogCiAgICAgICAgIEpTQ2VsbCogY2VsbCA9
IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKIAorICAgICAgICBp
ZiAoIWlzT2theVRvU3dlZXBVbm1hcmtlZENlbGwoY2VsbCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKwogICAgICAgICBpZiAoZGVzdHJ1Y3RvckNhbGxOZWVkZWQgJiYgYmxvY2tTdGF0ZSAhPSBO
ZXcpCiAgICAgICAgICAgICBjYWxsRGVzdHJ1Y3RvcihjZWxsKTsKIApAQCAtMTI2LDcgKzEzNiw2
IEBAIE1hcmtlZEJsb2NrOjpGcmVlTGlzdCBNYXJrZWRCbG9jazo6c3dlZXAKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwogICAgIGNhc2Ug
TWFya2VkOgotICAgICAgICBBU1NFUlQoIW1fb25seUNvbnRhaW5zU3RydWN0dXJlcyB8fCBoZWFw
KCktPmlzU2FmZVRvU3dlZXBTdHJ1Y3R1cmVzKCkpOwogICAgICAgICByZXR1cm4gc3dlZXBNb2Rl
ID09IFN3ZWVwVG9GcmVlTGlzdAogICAgICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtl
ZCwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdG9yQ2FsbE5lZWRlZD4oKQogICAgICAgICAgICAg
OiBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBPbmx5LCBkZXN0cnVjdG9yQ2FsbE5lZWRl
ZD4oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2
aXNpb24gMTI4NjE0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAK
ICAgICBjbGFzcyBIZWFwOwogICAgIGNsYXNzIEpTQ2VsbDsKKyAgICBjbGFzcyBNYXJrZWRBbGxv
Y2F0b3I7CiAKICAgICB0eXBlZGVmIHVpbnRwdHJfdCBCaXRzOwogCkBAIC0xMTIsNyArMTEzLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBSZXR1cm5UeXBlIG1fY291bnQ7CiAgICAg
ICAgIH07CiAKLSAgICAgICAgc3RhdGljIE1hcmtlZEJsb2NrKiBjcmVhdGUoY29uc3QgUGFnZUFs
bG9jYXRpb25BbGlnbmVkJiwgSGVhcCosIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBjZWxsc05lZWRE
ZXN0cnVjdGlvbiwgYm9vbCBvbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKTsKKyAgICAgICAgc3RhdGlj
IE1hcmtlZEJsb2NrKiBjcmVhdGUoY29uc3QgUGFnZUFsbG9jYXRpb25BbGlnbmVkJiwgTWFya2Vk
QWxsb2NhdG9yKiwgc2l6ZV90IGNlbGxTaXplLCBib29sIGNlbGxzTmVlZERlc3RydWN0aW9uLCBi
b29sIG9ubHlDb250YWluc1N0cnVjdHVyZXMpOwogCiAgICAgICAgIHN0YXRpYyBib29sIGlzQXRv
bUFsaWduZWQoY29uc3Qgdm9pZCopOwogICAgICAgICBzdGF0aWMgTWFya2VkQmxvY2sqIGJsb2Nr
Rm9yKGNvbnN0IHZvaWQqKTsKQEAgLTEyMCw2ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgCiAgICAgICAgIHZvaWQgbGFzdENoYW5jZVRvRmluYWxpemUoKTsKIAorICAgICAgICBN
YXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvcigpIGNvbnN0OwogICAgICAgICBIZWFwKiBoZWFwKCkg
Y29uc3Q7CiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgpIGNvbnN0OwogICAgICAg
ICBXZWFrU2V0JiB3ZWFrU2V0KCk7CkBAIC0xOTEsNiArMTkzLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hEZWFkQ2Vs
bChGdW5jdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBib29sIGlzT2theVRvU3dlZXBV
bm1hcmtlZENlbGwoSlNDZWxsKik7CisKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBhdG9t
QWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0gMTsgLy8gYXRvbVNpemUgbXVzdCBiZSBhIHBvd2Vy
IG9mIHR3by4KIAogICAgICAgICBlbnVtIEJsb2NrU3RhdGUgeyBOZXcsIEZyZWVMaXN0ZWQsIEFs
bG9jYXRlZCwgTWFya2VkIH07CkBAIC0xOTgsNyArMjAyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgdHlwZWRlZiBjaGFyIEF0b21bYXRvbVNpemVdOwogCi0gICAgICAgIE1hcmtlZEJs
b2NrKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYsIEhlYXAqLCBzaXplX3QgY2VsbFNpemUs
IGJvb2wgY2VsbHNOZWVkRGVzdHJ1Y3Rpb24sIGJvb2wgb25seUNvbnRhaW5zU3RydWN0dXJlcyk7
CisgICAgICAgIE1hcmtlZEJsb2NrKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYsIE1hcmtl
ZEFsbG9jYXRvciosIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBjZWxsc05lZWREZXN0cnVjdGlvbiwg
Ym9vbCBvbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKTsKICAgICAgICAgQXRvbSogYXRvbXMoKTsKICAg
ICAgICAgc2l6ZV90IGF0b21OdW1iZXIoY29uc3Qgdm9pZCopOwogICAgICAgICB2b2lkIGNhbGxE
ZXN0cnVjdG9yKEpTQ2VsbCopOwpAQCAtMjE3LDYgKzIyMSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
I2VuZGlmCiAgICAgICAgIGJvb2wgbV9jZWxsc05lZWREZXN0cnVjdGlvbjsKICAgICAgICAgYm9v
bCBtX29ubHlDb250YWluc1N0cnVjdHVyZXM7CisgICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9h
bGxvY2F0b3I7CiAgICAgICAgIEJsb2NrU3RhdGUgbV9zdGF0ZTsKICAgICAgICAgV2Vha1NldCBt
X3dlYWtTZXQ7CiAgICAgfTsKQEAgLTI2MSw2ICsyNjYsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN3ZWVwKCk7CiAgICAgfQogCisgICAgaW5saW5lIE1hcmtlZEFsbG9jYXRvciogTWFy
a2VkQmxvY2s6OmFsbG9jYXRvcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hbGxv
Y2F0b3I7CisgICAgfQorCiAgICAgaW5saW5lIEhlYXAqIE1hcmtlZEJsb2NrOjpoZWFwKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3dlYWtTZXQuaGVhcCgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkocmV2aXNpb24gMTI4NjE0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03OSw2ICs3OSw4IEBAIHN0cnVjdCBSZWFwV2Vha1NldCA6IE1hcmtlZEJsb2NrOjpW
b2lkRnUKIAogTWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCiAgICAgOiBtX2hl
YXAoaGVhcCkKKyAgICAsIG1fbmV3U3RydWN0dXJlQWxsb2NhdG9yKDApCisgICAgLCBtX29sZFN0
cnVjdHVyZUFsbG9jYXRvcigwKQogewogICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gcHJlY2lz
ZVN0ZXA7IGNlbGxTaXplIDw9IHByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVw
KSB7CiAgICAgICAgIGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaW5pdChoZWFwLCB0aGlzLCBjZWxs
U2l6ZSwgZmFsc2UsIGZhbHNlKTsKQEAgLTkxLDcgKzkzLDEwIEBAIE1hcmtlZFNwYWNlOjpNYXJr
ZWRTcGFjZShIZWFwKiBoZWFwKQogICAgIH0KIAogICAgIG1fbGFyZ2VBbGxvY2F0b3IuaW5pdCho
ZWFwLCB0aGlzLCAwLCB0cnVlLCBmYWxzZSk7Ci0gICAgbV9zdHJ1Y3R1cmVBbGxvY2F0b3IuaW5p
dChoZWFwLCB0aGlzLCBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoMzIsIHNpemVvZihTdHJ1Y3R1
cmUpKSwgdHJ1ZSwgdHJ1ZSk7CisgICAgbV9zdHJ1Y3R1cmVBbGxvY2F0b3IxLmluaXQoaGVhcCwg
dGhpcywgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKDMyLCBzaXplb2YoU3RydWN0dXJlKSksIHRy
dWUsIHRydWUpOworICAgIG1fc3RydWN0dXJlQWxsb2NhdG9yMi5pbml0KGhlYXAsIHRoaXMsIFdU
Rjo6cm91bmRVcFRvTXVsdGlwbGVPZigzMiwgc2l6ZW9mKFN0cnVjdHVyZSkpLCB0cnVlLCB0cnVl
KTsKKyAgICBtX25ld1N0cnVjdHVyZUFsbG9jYXRvciA9ICZtX3N0cnVjdHVyZUFsbG9jYXRvcjE7
CisgICAgbV9vbGRTdHJ1Y3R1cmVBbGxvY2F0b3IgPSAmbV9zdHJ1Y3R1cmVBbGxvY2F0b3IyOwog
fQogCiBNYXJrZWRTcGFjZTo6fk1hcmtlZFNwYWNlKCkKQEAgLTEyOSw3ICsxMzQsOCBAQCB2b2lk
IE1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMoKQogICAgIH0KIAogICAgIG1fbGFyZ2VBbGxv
Y2F0b3IucmVzZXQoKTsKLSAgICBtX3N0cnVjdHVyZUFsbG9jYXRvci5yZXNldCgpOworICAgIG1f
c3RydWN0dXJlQWxsb2NhdG9yMS5yZXNldCgpOworICAgIG1fc3RydWN0dXJlQWxsb2NhdG9yMi5y
ZXNldCgpOwogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjp2aXNpdFdlYWtTZXRzKEhlYXBSb290Vmlz
aXRvciYgaGVhcFJvb3RWaXNpdG9yKQpAQCAtMTU2LDcgKzE2Miw4IEBAIHZvaWQgTWFya2VkU3Bh
Y2U6OmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmUKICAgICB9CiAKICAgICBtX2xhcmdlQWxsb2NhdG9y
LmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKTsKLSAgICBtX3N0cnVjdHVyZUFsbG9jYXRv
ci5jYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7CisgICAgbV9zdHJ1Y3R1cmVBbGxvY2F0
b3IxLmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKTsKKyAgICBtX3N0cnVjdHVyZUFsbG9j
YXRvcjIuY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOwogfQogCiBib29sIE1hcmtlZFNw
YWNlOjppc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSkKQEAgLTE3NCw3ICsxODEsNyBAQCBib29s
IE1hcmtlZFNwYWNlOjppc1BhZ2VkT3V0KGRvdWJsZSBkZWFkCiAgICAgaWYgKG1fbGFyZ2VBbGxv
Y2F0b3IuaXNQYWdlZE91dChkZWFkbGluZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
aWYgKG1fc3RydWN0dXJlQWxsb2NhdG9yLmlzUGFnZWRPdXQoZGVhZGxpbmUpKQorICAgIGlmICht
X3N0cnVjdHVyZUFsbG9jYXRvcjEuaXNQYWdlZE91dChkZWFkbGluZSkgfHwgbV9zdHJ1Y3R1cmVB
bGxvY2F0b3IyLmlzUGFnZWRPdXQoZGVhZGxpbmUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE4Miw3ICsxODksNyBAQCBib29sIE1hcmtlZFNwYWNlOjpp
c1BhZ2VkT3V0KGRvdWJsZSBkZWFkCiAKIHZvaWQgTWFya2VkU3BhY2U6OmZyZWVCbG9jayhNYXJr
ZWRCbG9jayogYmxvY2spCiB7Ci0gICAgYWxsb2NhdG9yRm9yKGJsb2NrKS5yZW1vdmVCbG9jayhi
bG9jayk7CisgICAgYmxvY2stPmFsbG9jYXRvcigpLT5yZW1vdmVCbG9jayhibG9jayk7CiAgICAg
bV9ibG9ja3MucmVtb3ZlKGJsb2NrKTsKICAgICBpZiAoYmxvY2stPmNhcGFjaXR5KCkgPT0gTWFy
a2VkQmxvY2s6OmJsb2NrU2l6ZSkgewogICAgICAgICBtX2hlYXAtPmJsb2NrQWxsb2NhdG9yKCku
ZGVhbGxvY2F0ZShNYXJrZWRCbG9jazo6ZGVzdHJveShibG9jaykpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAxMjg2MTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Niw3ICs3Niw2IEBAIHB1YmxpYzoKIAogICAgIE1hcmtlZEFsbG9jYXRvciYgZmlyc3RBbGxvY2F0
b3IoKTsKICAgICBNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvckZvcihzaXplX3QpOwotICAgIE1h
cmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yRm9yKE1hcmtlZEJsb2NrKik7CiAgICAgTWFya2VkQWxs
b2NhdG9yJiBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKHNpemVfdCk7CiAgICAgdm9pZCogYWxsb2Nh
dGVXaXRoRGVzdHJ1Y3RvcihzaXplX3QpOwogICAgIHZvaWQqIGFsbG9jYXRlV2l0aG91dERlc3Ry
dWN0b3Ioc2l6ZV90KTsKQEAgLTExMiw2ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGNh
cGFjaXR5KCk7CiAKICAgICBib29sIGlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsKKyAgICB2
b2lkIGRpZEZpbmlzaFN3ZWVwaW5nKCk7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTEzMSwxMiArMTMxLDE3IEBAIHByaXZhdGU6CiAgICAg
ICAgIEZpeGVkQXJyYXk8TWFya2VkQWxsb2NhdG9yLCBpbXByZWNpc2VDb3VudD4gaW1wcmVjaXNl
QWxsb2NhdG9yczsKICAgICB9OwogCisgICAgSGVhcCogbV9oZWFwOworCiAgICAgU3Vic3BhY2Ug
bV9kZXN0cnVjdG9yU3BhY2U7CiAgICAgU3Vic3BhY2UgbV9ub3JtYWxTcGFjZTsKICAgICBNYXJr
ZWRBbGxvY2F0b3IgbV9sYXJnZUFsbG9jYXRvcjsKLSAgICBNYXJrZWRBbGxvY2F0b3IgbV9zdHJ1
Y3R1cmVBbGxvY2F0b3I7CiAKLSAgICBIZWFwKiBtX2hlYXA7CisgICAgTWFya2VkQWxsb2NhdG9y
IG1fc3RydWN0dXJlQWxsb2NhdG9yMTsKKyAgICBNYXJrZWRBbGxvY2F0b3IgbV9zdHJ1Y3R1cmVB
bGxvY2F0b3IyOworICAgIE1hcmtlZEFsbG9jYXRvciogbV9uZXdTdHJ1Y3R1cmVBbGxvY2F0b3I7
CisgICAgTWFya2VkQWxsb2NhdG9yKiBtX29sZFN0cnVjdHVyZUFsbG9jYXRvcjsKKwogICAgIE1h
cmtlZEJsb2NrU2V0IG1fYmxvY2tzOwogfTsKIApAQCAtMTcxLDE3ICsxNzYsNiBAQCBpbmxpbmUg
TWFya2VkQWxsb2NhdG9yJiBNYXJrZWRTcGFjZTo6YWxsCiAgICAgcmV0dXJuIG1fbGFyZ2VBbGxv
Y2F0b3I7CiB9CiAKLWlubGluZSBNYXJrZWRBbGxvY2F0b3ImIE1hcmtlZFNwYWNlOjphbGxvY2F0
b3JGb3IoTWFya2VkQmxvY2sqIGJsb2NrKQotewotICAgIGlmIChibG9jay0+b25seUNvbnRhaW5z
U3RydWN0dXJlcygpKQotICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmVBbGxvY2F0b3I7Ci0KLSAg
ICBpZiAoYmxvY2stPmNlbGxzTmVlZERlc3RydWN0aW9uKCkpCi0gICAgICAgIHJldHVybiBkZXN0
cnVjdG9yQWxsb2NhdG9yRm9yKGJsb2NrLT5jZWxsU2l6ZSgpKTsKLQotICAgIHJldHVybiBhbGxv
Y2F0b3JGb3IoYmxvY2stPmNlbGxTaXplKCkpOwotfQotCiBpbmxpbmUgTWFya2VkQWxsb2NhdG9y
JiBNYXJrZWRTcGFjZTo6ZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihzaXplX3QgYnl0ZXMpCiB7CiAg
ICAgQVNTRVJUKGJ5dGVzKTsKQEAgLTIwNCw3ICsxOTgsNyBAQCBpbmxpbmUgdm9pZCogTWFya2Vk
U3BhY2U6OmFsbG9jYXRlV2l0aERlCiAKIGlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2Nh
dGVTdHJ1Y3R1cmUoc2l6ZV90IGJ5dGVzKQogewotICAgIHJldHVybiBtX3N0cnVjdHVyZUFsbG9j
YXRvci5hbGxvY2F0ZShieXRlcyk7CisgICAgcmV0dXJuIG1fbmV3U3RydWN0dXJlQWxsb2NhdG9y
LT5hbGxvY2F0ZShieXRlcyk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxp
bmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRTcGFjZTo6Zm9yRWFjaEJsb2Nr
KEZ1bmN0b3ImIGZ1bmN0b3IpCkBAIC0yMjAsNyArMjE0LDggQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IEZ1bmN0b3I+IGlubGluZSB0eXBlbgogICAgIH0KIAogICAgIG1fbGFyZ2VBbGxvY2F0b3IuZm9y
RWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgIG1fc3RydWN0dXJlQWxsb2NhdG9yLmZvckVhY2hCbG9j
ayhmdW5jdG9yKTsKKyAgICBtX29sZFN0cnVjdHVyZUFsbG9jYXRvci0+Zm9yRWFjaEJsb2NrKGZ1
bmN0b3IpOworICAgIG1fbmV3U3RydWN0dXJlQWxsb2NhdG9yLT5mb3JFYWNoQmxvY2soZnVuY3Rv
cik7CiAKICAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwogfQpAQCAtMjU2LDYgKzI1
MSwxMyBAQCBpbmxpbmUgc2l6ZV90IE1hcmtlZFNwYWNlOjpjYXBhY2l0eSgpCiAgICAgcmV0dXJu
IGZvckVhY2hCbG9jazxDYXBhY2l0eT4oKTsKIH0KIAoraW5saW5lIHZvaWQgTWFya2VkU3BhY2U6
OmRpZEZpbmlzaFN3ZWVwaW5nKCkKK3sKKyAgICBNYXJrZWRBbGxvY2F0b3IqIHRlbXAgPSBtX29s
ZFN0cnVjdHVyZUFsbG9jYXRvcjsKKyAgICBtX29sZFN0cnVjdHVyZUFsbG9jYXRvciA9IG1fbmV3
U3RydWN0dXJlQWxsb2NhdG9yOworICAgIG1fbmV3U3RydWN0dXJlQWxsb2NhdG9yID0gdGVtcDsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBNYXJrZWRTcGFjZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164332</attachid>
            <date>2012-09-16 18:24:11 -0700</date>
            <delta_ts>2012-09-16 19:25:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96546-20120916182340.patch</filename>
            <type>text/plain</type>
            <size>97061</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4MSBA
QAorMjAxMi0wOS0xNiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIERlbGF5ZWQgc3RydWN0dXJlIHN3ZWVwIGNhbiBsZWFrIHN0cnVjdHVyZXMgd2l0
aG91dCBib3VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTY1NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGdldHMgcmlkIG9mIHRoZSBzZXBhcmF0ZSBTdHJ1Y3R1cmUgYWxsb2NhdG9y
IGluIHRoZSBNYXJrZWRTcGFjZSBhbmQgYWRkcyB0d28gbmV3IGRlc3RydWN0b3Itb25seQorICAg
ICAgICBhbGxvY2F0b3JzLiBXZSBub3cgaGF2ZSBzZXBhcmF0ZSBhbGxvY2F0b3JzIGZvciBvdXIg
dGhyZWUgdHlwZXMgb2Ygb2JqZWN0czogdGhvc2Ugb2JqZWN0cyB3aXRoIG5vIGRlc3RydWN0b3Jz
LAorICAgICAgICB0aG9zZSBvYmplY3RzIHdpdGggZGVzdHJ1Y3RvcnMgYW5kIHdpdGggaW1tb3J0
YWwgc3RydWN0dXJlcywgYW5kIHRob3NlIG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycyB0aGF0IGRv
bid0IGhhdmUgCisgICAgICAgIGltbW9ydGFsIHN0cnVjdHVyZXMuIEFsbCBvZiB0aGUgb2JqZWN0
cyBvZiB0aGUgdGhpcmQgdHlwZSAoZGVzdHJ1Y3RvcnMgd2l0aG91dCBpbW1vcnRhbCBzdHJ1Y3R1
cmVzKSBub3cgCisgICAgICAgIGluaGVyaXQgZnJvbSBhIG5ldyBjbGFzcyBuYW1lZCBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCAod2hpY2ggaW4gdHVybiBpcyBhIHN1YmNsYXNzIG9mIEpTTm9uRmluYWxP
YmplY3QpLCB3aGljaCBzdG9yZXMgCisgICAgICAgIHRoZSBDbGFzc0luZm8gZm9yIHRoZXNlIGNs
YXNzZXMgYXQgYSBmaXhlZCBvZmZzZXQgZm9yIHNhZmUgcmV0cmlldmFsIGR1cmluZyBzd2VlcGlu
Zy9kZXN0cnVjdGlvbi4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3Bw
OiBVc2UgSlNEZXN0cnVjdGlibGVPYmplY3QgZm9yIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci4KKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6SlNDYWxs
YmFja0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmg6
CisgICAgICAgIChKU0NhbGxiYWNrQ29uc3RydWN0b3IpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0LmNwcDogSW5oZXJpdCBmcm9tIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IGZvciBub3Jt
YWwgSlNDYWxsYmFja09iamVjdHMgYW5kIHVzZSBhIGZpbmFsaXplciBmb3IgCisgICAgICAgIEpT
Q2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+LCBzaW5jZSBKU0dsb2JhbE9iamVjdCBhbHNv
IHVzZXMgYSBmaW5hbGl6ZXIuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjo6OmNyZWF0
ZSk6IFdlIG5lZWQgdG8gbW92ZSB0aGUgY3JlYXRlIGZ1bmN0aW9uIGZvciBKU0NhbGxiYWNrT2Jq
ZWN0PEpTR2xvYmFsT2JqZWN0PiBvdXQgb2YgbGluZSBzbyB3ZSBjYW4gYWRkIAorICAgICAgICB0
aGUgZmluYWxpemVyIGZvciBpdC4gV2UgZG9uJ3Qgd2FudCB0byBhZGQgdGhlIGZpbmFsaXplciBp
cyBzb21ldGhpbmcgbGlrZSBmaW5pc2hDcmVhdGlvbiBpbiBjYXNlIHNvbWVib2R5IGRlY2lkZXMg
CisgICAgICAgIHRvIHN1YmNsYXNzIHRoaXMuIFdlIHVzZSB0aGlzIHNhbWUgdGVjaG5pcXVlIGZv
ciBtYW55IG90aGVyIHN1YmNsYXNzZXMgb2YgSlNHbG9iYWxPYmplY3QuCisgICAgICAgIChKU0M6
Ojo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgor
ICAgICAgICAoSlNDYWxsYmFja09iamVjdCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIEFQ
SS9KU0NsYXNzUmVmLmNwcDogQ2hhbmdlIGFsbCB0aGUgSlNDYWxsYmFja09iamVjdDxKU05vbkZp
bmFsT2JqZWN0PiB0byB1c2UgSlNEZXN0cnVjdGlibGVPYmplY3QgaW5zdGVhZC4KKyAgICAgICAg
KE9wYXF1ZUpTQ2xhc3M6OnByb3RvdHlwZSk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNw
cDogRGl0dG8uCisgICAgICAgIChKU09iamVjdE1ha2UpOgorICAgICAgICAoSlNPYmplY3RHZXRQ
cml2YXRlKToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJpdmF0ZSk6CisgICAgICAgIChKU09iamVj
dEdldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU09iamVjdFNldFByaXZhdGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU09iamVjdERlbGV0ZVByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgICog
QVBJL0pTVmFsdWVSZWYuY3BwOiBEaXR0by4KKyAgICAgICAgKEpTVmFsdWVJc09iamVjdE9mQ2xh
c3MpOgorICAgICAgICAqIEFQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcDogRGl0dG8u
CisgICAgICAgICogSlNDVHlwZWRBcnJheVN0dWJzLmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6IFVzZSB0aGUgcHJvcGVyIGFsbG9jYXRvciB0eXBlIHdo
ZW4gZG9pbmcgaW5saW5lIGFsbG9jYXRpb24gaW4gdGhlIERGRy4KKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QpOgorICAg
ICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGhlYXAvSGVh
cC5oOiBBZGQgYWNjZXNzb3JzIGZvciB0aGUgdmFyaW91cyB0eXBlcyBvZiBhbGxvY2F0b3JzIG5v
dy4gQWxzbyByZW1vdmUgdGhlIGlzU2FmZVRvU3dlZXBTdHJ1Y3R1cmVzIGZ1bmN0aW9uIAorICAg
ICAgICBzaW5jZSBpdCdzIGFsd2F5cyBzYWZlIHRvIHN3ZWVwIFN0cnVjdHVyZXMgbm93LgorICAg
ICAgICAoSlNDOjpIZWFwOjphbGxvY2F0b3JGb3JPYmplY3RXaXRoTm9ybWFsRGVzdHJ1Y3Rvcik6
IAorICAgICAgICAoSlNDOjpIZWFwOjphbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0YWxTdHJ1
Y3R1cmVEZXN0cnVjdG9yKToKKyAgICAgICAgKEhlYXApOgorICAgICAgICAoSlNDOjpIZWFwOjph
bGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChK
U0M6OkhlYXA6OmFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3Rvcik6CisgICAg
ICAgICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwOiBSZW1vdmUgYWxsIHRoZSBsb2dpYyB0
byBkZXRlY3Qgd2hlbiBpdCdzIHNhZmUgdG8gc3dlZXAgU3RydWN0dXJlcyBmcm9tIHRoZSAKKyAg
ICAgICAgSW5jcmVtZW50YWxTd2VlcGVyIHNpbmNlIGl0J3MgYWx3YXlzIHNhZmUgdG8gc3dlZXAg
U3RydWN0dXJlcyBub3cuCisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVt
ZW50YWxTd2VlcGVyKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5l
eHRCbG9jayk6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGlu
Zyk6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6d2lsbEZpbmlzaFN3ZWVwaW5n
KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaDoK
KyAgICAgICAgKEluY3JlbWVudGFsU3dlZXBlcik6CisgICAgICAgICogaGVhcC9NYXJrZWRBbGxv
Y2F0b3IuY3BwOiBSZW1vdmUgdGhlIGxvZ2ljIHRoYXQgd2FzIHByZXZlbnRpbmcgdXMgZnJvbSBz
d2VlcGluZyBTdHJ1Y3R1cmVzIGlmIGl0IHdhc24ndCBzYWZlLiBBZGQgCisgICAgICAgIHRyYWNr
aW5nIG9mIHRoZSBzcGVjaWZpYyBkZXN0cnVjdG9yIHR5cGUgb2YgYWxsb2NhdG9yLiAKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUhlbHBlcik6CisgICAgICAgIChK
U0M6Ok1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVCbG9jayk6CisgICAgICAgICogaGVhcC9NYXJr
ZWRBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpkZXN0cnVjdG9y
VHlwZSk6CisgICAgICAgIChNYXJrZWRBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6aW5pdCk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6IEFkZCBhbGwgdGhlIGRl
c3RydWN0b3IgdHlwZSBzdHVmZiB0byBNYXJrZWRCbG9ja3Mgc28gdGhhdCB3ZSBkbyB0aGUgcmln
aHQgdGhpbmcgd2hlbiBzd2VlcGluZy4gCisgICAgICAgIFdlIGFsc28gdXNlIHRoZSBzdG9yZWQg
ZGVzdHJ1Y3RvciB0eXBlIHRvIGRldGVybWluZSB0aGUgcmlnaHQgdGhpbmcgdG8gZG8gaW4gYWxs
IEpTQ2VsbDo6Y2xhc3NJbmZvKCkgY2FsbHMuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6TWFya2VkQmxvY2spOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnNwZWNpYWxpemVkU3dlZXApOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3dlZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6c3dlZXBIZWxwZXIpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphbGxvY2F0b3IpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6ZGVzdHJ1Y3RvclR5cGUpOgorICAgICAgICAqIGhlYXAvTWFy
a2VkU3BhY2UuY3BwOiBBZGQgdGhlIG5ldyBkZXN0cnVjdG9yIGFsbG9jYXRvcnMgdG8gTWFya2Vk
U3BhY2UuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpNYXJrZWRTcGFjZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6Y2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSk6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjppc1BhZ2VkT3V0KToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZyZWVC
bG9jayk6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoTWFya2VkU3Bh
Y2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6aW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVj
dG9yQWxsb2NhdG9yRm9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Om5vcm1hbERlc3Ry
dWN0b3JBbGxvY2F0b3JGb3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YWxsb2NhdGVX
aXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3Bh
Y2U6OmFsbG9jYXRlV2l0aE5vcm1hbERlc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRT
cGFjZTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmNwcDogQWRk
IGluY2x1ZGUgYmVjYXVzZSB0aGUgc3ltYm9sIHdhcyBuZWVkZWQgaW4gYW4gaW5saW5lZCBmdW5j
dGlvbi4KKyAgICAgICAgKiBqaXQvSklULmg6IE1ha2Ugc3VyZSB3ZSB1c2UgdGhlIGNvcnJlY3Qg
YWxsb2NhdG9yIHdoZW4gZG9pbmcgaW5saW5lIGFsbG9jYXRpb25zIGluIHRoZSBiYXNlbGluZSBK
SVQuCisgICAgICAgICogaml0L0pJVElubGluZU1ldGhvZHMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QWxs
b2NhdGVKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QWxsb2NhdGVKU0Fy
cmF5KToKKyAgICAgICAgKiBqc2MuY3BwOiAKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6Y3JlYXRl
KTogQWRkIGZpbmFsaXplciBoZXJlIHNpbmNlIEpTR2xvYmFsT2JqZWN0IG5lZWRzIHRvIHVzZSBh
IGZpbmFsaXplciBpbnN0ZWFkIG9mIGluaGVyaXRpbmcgZnJvbSAKKyAgICAgICAgSlNEZXN0cnVj
dGlibGVPYmplY3QuCisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOiBJbmhlcml0IGZy
b20gSlNEZXN0cnVjdGlibGVPYmplY3QuCisgICAgICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRp
bWUvQXJndW1lbnRzLmg6CisgICAgICAgIChBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpBcmd1
bWVudHM6OkFyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6
IEFkZGVkIGFuIGFzc2VydCB0byBtYWtlIHN1cmUgd2UgaGF2ZSBhIHRyaXZpYWwgZGVzdHJ1Y3Rv
ci4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6IEluZGlj
YXRlIHRoYXQgYWxsIG9mIHRoZSBFeGVjdXRhYmxlKiBjbGFzc2VzIGhhdmUgaW1tb3J0YWwgU3Ry
dWN0dXJlcy4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmNwcDogSW5oZXJpdCBmcm9tIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgIChJbnRlcm5hbEZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOiBBZGRlZCB0aGUgTkVFRFNfREVT
VFJVQ1RPUiAgbWFjcm8gdG8gbWFrZSBpdCBlYXNpZXIgZm9yIGNsYXNzZXMgdG8gaW5kaWNhdGUg
dGhhdCBpbnN0ZWFkIG9mIGJlaW5nIAorICAgICAgICBhbGxvY2F0ZWQgaW4gYSBkZXN0cnVjdG9y
IE1hcmtlZEFsbG9jYXRvciB0aGF0IHRoZXkgd2lsbCBoYW5kbGUgdGhlaXIgZGVzdHJ1Y3Rpb24g
dGhlbXNlbHZlcyB0aHJvdWdoIHRoZSAKKyAgICAgICAgdXNlIG9mIGEgZmluYWxpemVyLgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEhhc0ltbW9ydGFsU3RydWN0dXJlKTogTmV3IHRlbXBsYXRl
IHRvIGhlbHAgdXMgZGV0ZXJtaW5lIGF0IGNvbXBpbGUtdGltZSBpZiBhIHBhcnRpY3VsYXIgY2xh
c3MgCisgICAgICAgIHNob3VsZCBiZSBhbGxvY2F0ZWQgaW4gdGhlIGltbW9ydGFsIHN0cnVjdHVy
ZSBNYXJrZWRBbGxvY2F0b3IuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGZhbHNlLiBJbiBvcmRlciAK
KyAgICAgICAgdG8gYmUgYWxsb2NhdGVkIGluIHRoZSBpbW1vcnRhbCBzdHJ1Y3R1cmUgYWxsb2Nh
dG9yLCBjbGFzc2VzIG11c3Qgc3BlY2lhbGl6ZSB0aGlzIHRlbXBsYXRlLiBBbHNvIGFkZGVkIAor
ICAgICAgICBhIG1hY3JvIHRvIG1ha2UgaXQgZWFzaWVyIGZvciBjbGFzc2VzIHRvIHNwZWNpYWxp
emUgdGhlIHRlbXBsYXRlLgorICAgICAgICAoSlNDOjphbGxvY2F0ZUNlbGwpOiBVc2UgdGhlIGFw
cHJvcHJpYXRlIGFsbG9jYXRvciBkZXBlbmRpbmcgb24gdGhlIGRlc3RydWN0b3IgdHlwZS4KKyAg
ICAgICAgKiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmg6IEFkZGVkLiBOZXcgY2xhc3Mg
dGhhdCBzdG9yZXMgdGhlIENsYXNzSW5mbyBvZiBhbnkgc3ViY2xhc3Mgc28gdGhhdCBpdCBjYW4g
YmUgCisgICAgICAgIGFjY2Vzc2VkIHNhZmVseSB3aGVuIHRoZSBvYmplY3QgaXMgYmVpbmcgZGVz
dHJveWVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KToK
KyAgICAgICAgKEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mbyk6CisgICAgICAg
IChKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0OjpKU0Rlc3RydWN0aWJsZU9iamVjdCk6CisgICAg
ICAgIChKU0M6OkpTQ2VsbDo6Y2xhc3NJbmZvKTogQ2hlY2tzIHRoZSBjdXJyZW50IE1hcmtlZEJs
b2NrIHRvIHNlZSB3aGVyZSBpdCBzaG91bGQgZ2V0IHRoZSBDbGFzc0luZm8gZnJvbSBzbyB0aGF0
IGl0J3MgYWx3YXlzIHNhZmUuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6
IEpTR2xvYmFsT2JqZWN0IG5vdyB1c2VzIGEgZmluYWxpemVyIGluc3RlYWQgb2YgYSBkZXN0cnVj
dG9yIHNvIHRoYXQgaXQgY2FuIGF2b2lkIGZvcmNpbmcgYWxsIAorICAgICAgICBvZiBpdHMgcmVs
YXRpdmVzIGluIHRoZSBpbmhlcml0YW5jZSBoaWVyYXJjaHkgKGUuZy4gSlNTY29wZSkgdG8gdXNl
IGRlc3RydWN0b3JzIGFzIHdlbGwuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXNl
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNHbG9i
YWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJ
Zk5lZWRlZCk6IFNpbmNlIHdlIGFsd2F5cyBjcmVhdGUgYSBmaW5hbGl6ZXIgbm93LCB3ZSBkb24n
dCBoYXZlIHRvIHdvcnJ5IGFib3V0IGFkZGluZyBvbmUgCisgICAgICAgIGZvciB0aGUgbV9yYXJl
RGF0YSBmaWVsZCB3aGVuIGl0J3MgY3JlYXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxU
aGlzLmg6IEluaGVyaXQgZnJvbSBKU0Rlc3RydWN0aWJsZU9iamVjdC4KKyAgICAgICAgKEpTR2xv
YmFsVGhpcyk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsVGhpczo6SlNHbG9iYWxUaGlzKToKKyAg
ICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDogSGFzIGFuIGltbW9ydGFs
IFN0cnVjdHVyZS4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNw
cDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOiBIYXMgYW4g
aW1tb3J0YWwgU3RydWN0dXJlLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pT
V3JhcHBlck9iamVjdC5oOiBJbmhlcml0IGZyb20gSlNEZXN0cnVjdGlibGVPYmplY3QuCisgICAg
ICAgIChKU1dyYXBwZXJPYmplY3QpOgorICAgICAgICAoSlNDOjpKU1dyYXBwZXJPYmplY3Q6OkpT
V3JhcHBlck9iamVjdCk6CisgICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0LmNwcDogQ2xlYW5p
bmcgdXAgc29tZSBvZiB0aGUgaW5oZXJpdGFuY2Ugc3R1ZmYuCisgICAgICAgIChKU0MpOgorICAg
ICAgICAqIHJ1bnRpbWUvTmFtZUluc3RhbmNlLmg6IEluaGVyaXQgZnJvbSBKU0Rlc3RydWN0aWJs
ZU9iamVjdC4KKyAgICAgICAgKE5hbWVJbnN0YW5jZSk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHAuaDogSGFzIGltbW9ydGFsIFN0cnVjdHVyZS4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICog
cnVudGltZS9SZWdFeHBPYmplY3QuY3BwOiBJbmhlcml0YW5jZSBjbGVhbnVwLgorICAgICAgICAo
SlNDKToKKyAgICAgICAgKiBydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaDogSGFzIGltbW9y
dGFsIFN0cnVjdHVyZS4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuaDogSGFzIGltbW9ydGFsIFN0cnVjdHVyZS4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oOiBEaXR0by4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
ICogcnVudGltZS9TeW1ib2xUYWJsZS5oOiBEaXR0by4KKyAgICAgICAgKFNoYXJlZFN5bWJvbFRh
YmxlKToKKyAgICAgICAgKEpTQyk6CisKIDIwMTItMDktMTYgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBKU09iamVjdC5jcHAgYW5kIEpTQXJyYXkuY3BwIGhhdmUg
aW5jb25zaXN0ZW50IHRlc3RzIGZvciB0aGUgaW52YWxpZCBhcnJheSBpbmRleCBjYXNlCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTI4
NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtp
bmcgY29weSkKQEAgLTUzMyw2ICs1MzMsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0ZU1hdGguaCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9u
LmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0pTQ1R5cGVkQXJyYXlTdHVicy5o
CShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJh
eVN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgSlNDVHlw
ZWRBcnJheVN0dWJzX2gKICNkZWZpbmUgSlNDVHlwZWRBcnJheVN0dWJzX2gKIAotI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKICNpbmNsdWRl
ICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+CiAjaW5j
bHVkZSA8d3RmL0Zsb2F0NjRBcnJheS5oPgpAQCAtNDIsOSArNDIsOSBAQAogbmFtZXNwYWNlIEpT
QyB7CiAgICAgCiAjZGVmaW5lIFRZUEVEX0FSUkFZKG5hbWUsIHR5cGUpIFwKLWNsYXNzIEpTIyNu
YW1lIyNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsgXAorY2xhc3MgSlMjI25hbWUj
I0FycmF5IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsgXAogcHVibGljOiBcCi0gICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7IFwKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0IEJhc2U7IFwKICAgICBzdGF0aWMgSlMjI25hbWUjI0FycmF5KiBjcmVhdGUoSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFz
c1JlZlB0cjxuYW1lIyNBcnJheT4gaW1wbCkgXAogICAgIHsgXAogICAgICAgICBKUyMjbmFtZSMj
QXJyYXkqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlMjI25hbWUjI0Fy
cmF5PihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlMjI25hbWUjI0FycmF5KHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJ
KHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzYsNiArMTc2LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgR2xv
YmFsT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmpl
Y3Q+KGdsb2JhbERhdGEuaGVhcCkpIEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUp
OwogICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGFyZ3VtZW50cyk7
CisgICAgICAgIGdsb2JhbERhdGEuaGVhcC5hZGRGaW5hbGl6ZXIob2JqZWN0LCBkZXN0cm95KTsK
ICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CiAKQEAgLTI0Myw2ICsyNDQsOSBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLCBpZGVudGlmaWVyLCBKU0Z1bmN0
aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBhcmd1bWVudHMsIGlkZW50aWZpZXIuc3Ry
aW5nKCksIGZ1bmN0aW9uLCBOb0ludHJpbnNpYywgZnVuY3Rpb24pKTsKICAgICB9CiB9OworCitO
RUVEU19ERVNUUlVDVE9SKEdsb2JhbE9iamVjdCwgZmFsc2UpOworCiBDT01QSUxFX0FTU0VSVCgh
SXNJbnRlZ2VyPEdsb2JhbE9iamVjdD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX0dsb2JhbE9iamVj
dF9mYWxzZSk7CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEdsb2JhbE9iamVjdCk7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1
Y3Rvci5jcHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTAgKzM2LDEw
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja0NvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJDYWxsYmFja0NvbnN0cnVjdG9yIiwgJkpTTm9uRmluYWxPYmpl
Y3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0NhbGxiYWNrQ29uc3RydWN0
b3IpIH07Citjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJDYWxsYmFja0NvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU0NhbGxiYWNrQ29uc3RydWN0b3IpIH07CiAKIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cjo6SlNDYWxsYmFja0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0NsYXNzUmVmIGpzQ2xhc3MsIEpTT2JqZWN0Q2FsbEFzQ29u
c3RydWN0b3JDYWxsYmFjayBjYWxsYmFjaykKLSAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKKyAgICA6IEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2NsYXNz
KGpzQ2xhc3MpCiAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQogewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oCShyZXZpc2lv
biAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMyArMjcsMTMgQEAKICNkZWZpbmUgSlNDYWxs
YmFja0NvbnN0cnVjdG9yX2gKIAogI2luY2x1ZGUgIkpTT2JqZWN0UmVmLmgiCi0jaW5jbHVkZSA8
cnVudGltZS9KU09iamVjdC5oPgorI2luY2x1ZGUgInJ1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmpl
Y3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvciA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK2NsYXNzIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvciA6
IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU05v
bkZpbmFsT2JqZWN0IEJhc2U7CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNl
OwogCiAgICAgc3RhdGljIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTQ2xhc3NSZWYgY2xhc3NSZWYsIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayBj
YWxsYmFjaykgCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3QuY3BwCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNSAr
MzIsMjQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwo
SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pik7CitBU1NFUlRfQ0xBU1NfRklUU19J
Tl9DRUxMKEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+KTsKIEFTU0VSVF9D
TEFTU19GSVRTX0lOX0NFTEwoSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4pOwogCiAv
LyBEZWZpbmUgdGhlIHR3byB0eXBlcyBvZiBKU0NhbGxiYWNrT2JqZWN0cyB3ZSBzdXBwb3J0Lgot
dGVtcGxhdGUgPD4gY29uc3QgQ2xhc3NJbmZvIEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9i
amVjdD46OnNfaW5mbyA9IHsgIkNhbGxiYWNrT2JqZWN0IiwgJkpTTm9uRmluYWxPYmplY3Q6OnNf
aW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0NhbGxiYWNrT2JqZWN0KSB9OwotdGVt
cGxhdGUgPD4gY29uc3QgQ2xhc3NJbmZvIEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+
OjpzX2luZm8gPSB7ICJDYWxsYmFja0dsb2JhbE9iamVjdCIsICZKU0dsb2JhbE9iamVjdDo6c19p
bmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ2FsbGJhY2tPYmplY3QpIH07Cit0ZW1w
bGF0ZSA8PiBjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9i
amVjdD46OnNfaW5mbyA9IHsgIkNhbGxiYWNrT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU0NhbGxiYWNrT2JqZWN0KSB9OwordGVtcGxhdGUgPD4gY29u
c3QgQ2xhc3NJbmZvIEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpzX2luZm8gPSB7
ICJDYWxsYmFja0dsb2JhbE9iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNDYWxsYmFja09iamVjdCkgfTsKKwordGVtcGxhdGU8PgorSlNDYWxsYmFja09i
amVjdDxKU0dsb2JhbE9iamVjdD4qIEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Ojpj
cmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NsYXNzUmVmIGNsYXNzUmVmLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0
PiogY2FsbGJhY2tPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNr
T2JqZWN0PEpTR2xvYmFsT2JqZWN0PiA+KGdsb2JhbERhdGEuaGVhcCkpIEpTQ2FsbGJhY2tPYmpl
Y3QoZ2xvYmFsRGF0YSwgY2xhc3NSZWYsIHN0cnVjdHVyZSk7CisgICAgY2FsbGJhY2tPYmplY3Qt
PmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOworICAgIGdsb2JhbERhdGEuaGVhcC5hZGRGaW5h
bGl6ZXIoY2FsbGJhY2tPYmplY3QsIGRlc3Ryb3kpOworICAgIHJldHVybiBjYWxsYmFja09iamVj
dDsKK30KIAogdGVtcGxhdGUgPD4KLVN0cnVjdHVyZSogSlNDYWxsYmFja09iamVjdDxKU05vbkZp
bmFsT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKK1N0cnVjdHVyZSogSlND
YWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG8pCiB7IAogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBn
bG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
ICZzX2luZm8pOyAKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdC5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDEzICsxMzMsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGNhbGxiYWNrT2JqZWN0LT5maW5pc2hDcmVhdGlvbihleGVjKTsK
ICAgICAgICAgcmV0dXJuIGNhbGxiYWNrT2JqZWN0OwogICAgIH0KLSAgICBzdGF0aWMgSlNDYWxs
YmFja09iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDbGFzc1JlZiBj
bGFzc1JlZiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBKU0NhbGxiYWNr
T2JqZWN0KiBjYWxsYmFja09iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ2Fs
bGJhY2tPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEpTQ2FsbGJhY2tPYmplY3QoZ2xvYmFsRGF0
YSwgY2xhc3NSZWYsIHN0cnVjdHVyZSk7Ci0gICAgICAgIGNhbGxiYWNrT2JqZWN0LT5maW5pc2hD
cmVhdGlvbihnbG9iYWxEYXRhKTsKLSAgICAgICAgcmV0dXJuIGNhbGxiYWNrT2JqZWN0OwotICAg
IH0KLQorICAgIHN0YXRpYyBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD4qIGNyZWF0ZShKU0dsb2Jh
bERhdGEmLCBKU0NsYXNzUmVmLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIHNldFByaXZhdGUodm9p
ZCogZGF0YSk7CiAgICAgdm9pZCogZ2V0UHJpdmF0ZSgpOwogCkBAIC0yMTcsNiArMjExLDggQEAg
cHJpdmF0ZToKICAgICBPd25QdHI8SlNDYWxsYmFja09iamVjdERhdGE+IG1fY2FsbGJhY2tPYmpl
Y3REYXRhOwogfTsKIAorTkVFRFNfREVTVFJVQ1RPUihKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFs
T2JqZWN0PiwgZmFsc2UpOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogLy8gaW5jbHVkZSB0aGUg
YWN0dWFsIHRlbXBsYXRlIGNsYXNzIGltcGxlbWVudGF0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw3
ICsxOTksNyBAQCBKU09iamVjdCogT3BhcXVlSlNDbGFzczo6cHJvdG90eXBlKEV4ZWNTCiAgICAg
ICAgIHJldHVybiBwcm90b3R5cGU7CiAKICAgICAvLyBSZWN1cnNpdmUsIGJ1dCBzaG91bGQgYmUg
Z29vZCBlbm91Z2ggZm9yIG91ciBwdXJwb3NlcwotICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBK
U0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+OjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNhbGxiYWNr
T2JqZWN0U3RydWN0dXJlKCksIHByb3RvdHlwZUNsYXNzLCAmanNDbGFzc0RhdGEpOyAvLyBzZXQg
anNDbGFzc0RhdGEgYXMgdGhlIG9iamVjdCdzIHByaXZhdGUgZGF0YSwgc28gaXQgY2FuIGNsZWFy
IG91ciByZWZlcmVuY2Ugb24gZGVzdHJ1Y3Rpb24KKyAgICBKU09iamVjdCogcHJvdG90eXBlID0g
SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OmNyZWF0ZShleGVjLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y2Fs
bGJhY2tPYmplY3RTdHJ1Y3R1cmUoKSwgcHJvdG90eXBlQ2xhc3MsICZqc0NsYXNzRGF0YSk7IC8v
IHNldCBqc0NsYXNzRGF0YSBhcyB0aGUgb2JqZWN0J3MgcHJpdmF0ZSBkYXRhLCBzbyBpdCBjYW4g
Y2xlYXIgb3VyIHJlZmVyZW5jZSBvbiBkZXN0cnVjdGlvbgogICAgIGlmIChwYXJlbnRDbGFzcykg
ewogICAgICAgICBpZiAoSlNPYmplY3QqIHBhcmVudFByb3RvdHlwZSA9IHBhcmVudENsYXNzLT5w
cm90b3R5cGUoZXhlYykpCiAgICAgICAgICAgICBwcm90b3R5cGUtPnNldFByb3RvdHlwZShleGVj
LT5nbG9iYWxEYXRhKCksIHBhcmVudFByb3RvdHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcg
KzgzLDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlKEpTQ29udGV4dFJlZiBjdAogICAgIGlm
ICghanNDbGFzcykKICAgICAgICAgcmV0dXJuIHRvUmVmKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4
ZWMpKTsKIAotICAgIEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4qIG9iamVjdCA9
IEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD46OmNyZWF0ZShleGVjLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y2FsbGJh
Y2tPYmplY3RTdHJ1Y3R1cmUoKSwganNDbGFzcywgZGF0YSk7CisgICAgSlNDYWxsYmFja09iamVj
dDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qIG9iamVjdCA9IEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0
cnVjdGlibGVPYmplY3Q+OjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCks
IGpzQ2xhc3MsIGRhdGEpOwogICAgIGlmIChKU09iamVjdCogcHJvdG90eXBlID0ganNDbGFzcy0+
cHJvdG90eXBlKGV4ZWMpKQogICAgICAgICBvYmplY3QtPnNldFByb3RvdHlwZShleGVjLT5nbG9i
YWxEYXRhKCksIHByb3RvdHlwZSk7CiAKQEAgLTM0MSw4ICszNDEsOCBAQCB2b2lkKiBKU09iamVj
dEdldFByaXZhdGUoSlNPYmplY3RSZWYgb2JqCiAgICAgCiAgICAgaWYgKGpzT2JqZWN0LT5pbmhl
cml0cygmSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OnNfaW5mbykpCiAgICAgICAg
IHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4qPihqc09iamVj
dCktPmdldFByaXZhdGUoKTsKLSAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNr
T2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+OjpzX2luZm8pKQotICAgICAgICByZXR1cm4ganNDYXN0
PEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4qPihqc09iamVjdCktPmdldFByaXZh
dGUoKTsKKyAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxi
YWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZSgp
OwogICAgIAogICAgIHJldHVybiAwOwogfQpAQCAtMzU1LDggKzM1NSw4IEBAIGJvb2wgSlNPYmpl
Y3RTZXRQcml2YXRlKEpTT2JqZWN0UmVmIG9iamUKICAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tP
YmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2YXRlKGRhdGEpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlND
YWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pjo6c19pbmZvKSkgewotICAgICAgICBqc0Nh
c3Q8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJp
dmF0ZShkYXRhKTsKKyAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0
PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkgeworICAgICAgICBqc0Nhc3Q8SlNDYWxs
YmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGUo
ZGF0YSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCkBAIC0zNzIsOCAr
MzcyLDggQEAgSlNWYWx1ZVJlZiBKU09iamVjdEdldFByaXZhdGVQcm9wZXJ0eShKUwogICAgIElk
ZW50aWZpZXIgbmFtZShwcm9wZXJ0eU5hbWUtPmlkZW50aWZpZXIoJmV4ZWMtPmdsb2JhbERhdGEo
KSkpOwogICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9i
YWxPYmplY3Q+OjpzX2luZm8pKQogICAgICAgICByZXN1bHQgPSBqc0Nhc3Q8SlNDYWxsYmFja09i
amVjdDxKU0dsb2JhbE9iamVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGVQcm9wZXJ0eShuYW1l
KTsKLSAgICBlbHNlIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNO
b25GaW5hbE9iamVjdD46OnNfaW5mbykpCi0gICAgICAgIHJlc3VsdCA9IGpzQ2FzdDxKU0NhbGxi
YWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2YXRlUHJvcGVy
dHkobmFtZSk7CisgICAgZWxzZSBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2Jq
ZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkKKyAgICAgICAgcmVzdWx0ID0ganND
YXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3QpLT5n
ZXRQcml2YXRlUHJvcGVydHkobmFtZSk7CiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHJlc3VsdCk7
CiB9CiAKQEAgLTM4OCw4ICszODgsOCBAQCBib29sIEpTT2JqZWN0U2V0UHJpdmF0ZVByb3BlcnR5
KEpTQ29udGV4CiAgICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0
Pio+KGpzT2JqZWN0KS0+c2V0UHJpdmF0ZVByb3BlcnR5KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFt
ZSwganNWYWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAoanNPYmpl
Y3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+OjpzX2luZm8p
KSB7Ci0gICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+Kj4o
anNPYmplY3QpLT5zZXRQcml2YXRlUHJvcGVydHkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lLCBq
c1ZhbHVlKTsKKyAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkgeworICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFj
a09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9w
ZXJ0eShleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUsIGpzVmFsdWUpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDA1LDggKzQwNSw4IEBAIGJvb2wg
SlNPYmplY3REZWxldGVQcml2YXRlUHJvcGVydHkoSlNDb24KICAgICAgICAganNDYXN0PEpTQ2Fs
bGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5kZWxldGVQcml2YXRlUHJv
cGVydHkobmFtZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAoanNPYmpl
Y3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+OjpzX2luZm8p
KSB7Ci0gICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+Kj4o
anNPYmplY3QpLT5kZWxldGVQcml2YXRlUHJvcGVydHkobmFtZSk7CisgICAgaWYgKGpzT2JqZWN0
LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OnNfaW5m
bykpIHsKKyAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmpl
Y3Q+Kj4oanNPYmplY3QpLT5kZWxldGVQcml2YXRlUHJvcGVydHkobmFtZSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw4
ICsxMzEsOCBAQCBib29sIEpTVmFsdWVJc09iamVjdE9mQ2xhc3MoSlNDb250ZXh0UmVmCiAgICAg
aWYgKEpTT2JqZWN0KiBvID0ganNWYWx1ZS5nZXRPYmplY3QoKSkgewogICAgICAgICBpZiAoby0+
aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpzX2luZm8pKQogICAg
ICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pio+
KG8pLT5pbmhlcml0cyhqc0NsYXNzKTsKLSAgICAgICAgaWYgKG8tPmluaGVyaXRzKCZKU0NhbGxi
YWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+OjpzX2luZm8pKQotICAgICAgICAgICAgcmV0dXJu
IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+Kj4obyktPmluaGVyaXRz
KGpzQ2xhc3MpOworICAgICAgICBpZiAoby0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNE
ZXN0cnVjdGlibGVPYmplY3Q+OjpzX2luZm8pKQorICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxK
U0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KG8pLT5pbmhlcml0cyhqc0Ns
YXNzKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwCShy
ZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVj
dE1hcFJlZlByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQg
SlNXZWFrT2JqZWN0TWFwU2V0KEpTQ29udGV4dFJlZiBjdHgKICAgICBKU09iamVjdCogb2JqID0g
dG9KUyhvYmplY3QpOwogICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJU
KG9iai0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpzX2luZm8p
IHx8IG9iai0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD46OnNf
aW5mbykpOworICAgIEFTU0VSVChvYmotPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTR2xv
YmFsT2JqZWN0Pjo6c19pbmZvKSB8fCBvYmotPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSk7CiAgICAgbWFwLT5tYXAoKS5zZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBrZXksIG9iaik7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxMjg3
MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtODQyLDYg
Kzg0MiwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxydW50aW1lXEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcSlNGdW5jdGlvbi5j
cHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MTAsNiArNzEw
LDcgQEAKIAkJQzI0MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNDAzMDUzMTRCNDA0
QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgKi87IH07CiAJCUMyNUY4QkNEMTU3NTQ0QTkw
MDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI1RjhCQ0IxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3Jl
bWVudGFsU3dlZXBlci5jcHAgKi87IH07CiAJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJ
bmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMkE3
RjY4ODE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQTdGNjg3MTYwNDMyRDQwMEY3
NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBNYXJr
ZWRBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyQjkxNkMxMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMkI5MTZDNTE0REEw
NDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQjkxNkM0MTREQTA0MEMwMENCQUM4NiAvKiBNYXJr
ZWRBbGxvY2F0b3IuY3BwICovOyB9OwogCQlDMkM4RDAyRDE0QTNDNkUwMDA1NzhFNjUgLyogQ29w
aWVkU3BhY2VJbmxpbmVNZXRob2RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMkM4RDAyQjE0QTNDNkIyMDA1NzhFNjUgLyogQ29waWVkU3BhY2VJbmxp
bmVNZXRob2RzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTE0ODMsNiArMTQ4NCw3IEBACiAJCUMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBD
b3BpZWRTcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb3Bp
ZWRTcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNUY4QkNCMTU3NTQ0
QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5jcmVtZW50YWxTd2VlcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzI1RjhCQ0MxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dl
ZXBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmNyZW1lbnRhbFN3ZWVw
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJBN0Y2ODcxNjA0MzJENDAwRjc2
Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyQjkxNkMxMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya2VkQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUMyQjkxNkM0MTREQTA0MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxv
Y2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFya2VkQWxs
b2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJDOEQwMkIxNEEzQzZC
MjAwNTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lTWV0aG9kcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb3BpZWRTcGFjZUlubGluZU1ldGhvZHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDMsNiArMjA0NSw3IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMw
MDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlDMkE3RjY4NzE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmpl
Y3QuaCAqLywKIAkJCQkwRjBDRDRDMzE1RjZCNkI1MDAzMkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1
ZU1hcC5jcHAgKi8sCiAJCQkJMEYwQ0Q0QzAxNUYxQTYwNDAwMzJGMUMwIC8qIFB1dERpcmVjdElu
ZGV4TW9kZS5oICovLAogCQkJCTBGQjdGMzg5MTVFRDhFMzgwMEYxNjdCMiAvKiBBcnJheUNvbnZl
bnRpb25zLmggKi8sCkBAIC0yNTYzLDYgKzI1NjYsNyBAQAogCQkJCTg2QUREMTQ1MEZEREVBOTgw
MDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJFQUQyRkMx
NEYwMjQ5ODAwQTRCMTU5IC8qIENvcGllZEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzJCOTE2QzIxNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQzJBN0Y2ODgxNjA0MzJENDAwRjc2Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTIwQ0U5RTE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRD
TG9vcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzIxMTIyRTIxNUREOUFCMzAwNzkwRTNBIC8qIEdD
VGhyZWFkU2hhcmVkRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzIxNjBGRTcxNUY3RTk1RTAw
OTQyREZDIC8qIFNsb3RWaXNpdG9ySW5saW5lTWV0aG9kcy5oIGluIEhlYWRlcnMgKi8sCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZp
c2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgJKHdvcmtpbmcgY29weSkKQEAgLTIxODksMTIgKzIxODksMTQgQEAgcHVibGljOgogICAg
CiAgICAgLy8gSXQgaXMgTk9UIG9rYXkgZm9yIHRoZSBzdHJ1Y3R1cmUgYW5kIHRoZSBzY3JhdGNo
IHJlZ2lzdGVyIHRvIGJlIHRoZSBzYW1lIHRoaW5nIGJlY2F1c2UgaWYgdGhleSBhcmUgdGhlbiB0
aGUgU3RydWN0dXJlIHdpbGwgCiAgICAgLy8gZ2V0IGNsb2JiZXJlZC4gCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIENsYXNzVHlwZSwgYm9vbCBkZXN0cnVjdG9yLCB0eXBlbmFtZSBTdHJ1Y3R1cmVU
eXBlPiAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlLCBNYXJrZWRCbG9jazo6RGVz
dHJ1Y3RvclR5cGUgZGVzdHJ1Y3RvclR5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IAogICAg
IHZvaWQgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdChTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwg
R1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCYgc2xvd1BhdGgpCiAgICAgewogICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRv
ciA9IDA7Ci0gICAgICAgIGlmIChkZXN0cnVjdG9yKQotICAgICAgICAgICAgYWxsb2NhdG9yID0g
Jm1faml0Lmdsb2JhbERhdGEoKS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoRGVzdHJ1Y3Rv
cihzaXplb2YoQ2xhc3NUeXBlKSk7CisgICAgICAgIGlmIChkZXN0cnVjdG9yVHlwZSA9PSBNYXJr
ZWRCbG9jazo6Tm9ybWFsKQorICAgICAgICAgICAgYWxsb2NhdG9yID0gJm1faml0Lmdsb2JhbERh
dGEoKS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoTm9ybWFsRGVzdHJ1Y3RvcihzaXplb2Yo
Q2xhc3NUeXBlKSk7CisgICAgICAgIGVsc2UgaWYgKGRlc3RydWN0b3JUeXBlID09IE1hcmtlZEJs
b2NrOjpJbW1vcnRhbFN0cnVjdHVyZSkKKyAgICAgICAgICAgIGFsbG9jYXRvciA9ICZtX2ppdC5n
bG9iYWxEYXRhKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aEltbW9ydGFsU3RydWN0dXJl
RGVzdHJ1Y3RvcihzaXplb2YoQ2xhc3NUeXBlKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGFsbG9jYXRvciA9ICZtX2ppdC5nbG9iYWxEYXRhKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0
V2l0aG91dERlc3RydWN0b3Ioc2l6ZW9mKENsYXNzVHlwZSkpOwogCkBAIC0yMjE2LDcgKzIyMTgs
NyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVtaXRBbGxv
Y2F0ZUpTRmluYWxPYmplY3QoVCBzdHJ1Y3R1cmUsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBz
Y3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNsb3dQYXRoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3Q8SlNGaW5hbE9iamVjdCwgZmFs
c2U+KHN0cnVjdHVyZSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7CisgICAgICAg
IHJldHVybiBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0PEpTRmluYWxPYmplY3QsIE1hcmtlZEJs
b2NrOjpOb25lPihzdHJ1Y3R1cmUsIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOwog
ICAgIH0KIAogI2lmIFVTRShKU1ZBTFVFNjQpIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzAsMTEgKzgzMCw2IEBAIHZvaWQgSGVhcDo6
YWRkQ29tcGlsZWRDb2RlKEV4ZWN1dGFibGVCYXMKICAgICBtX2NvbXBpbGVkQ29kZS5hcHBlbmQo
ZXhlY3V0YWJsZSk7CiB9CiAKLWJvb2wgSGVhcDo6aXNTYWZlVG9Td2VlcFN0cnVjdHVyZXMoKQot
ewotICAgIHJldHVybiAhbV9zd2VlcGVyIHx8IG1fc3dlZXBlci0+c3RydWN0dXJlc0NhbkJlU3dl
cHQoKTsKLX0KLQogdm9pZCBIZWFwOjpkaWRTdGFydFZNU2h1dGRvd24oKQogewogICAgIG1fYWN0
aXZpdHlDYWxsYmFjay0+ZGlkU3RhcnRWTVNodXRkb3duKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgCiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciYgZmlyc3RBbGxvY2F0b3JX
aXRob3V0RGVzdHJ1Y3RvcnMoKSB7IHJldHVybiBtX29iamVjdFNwYWNlLmZpcnN0QWxsb2NhdG9y
KCk7IH0KICAgICAgICAgTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0
RGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2UuYWxsb2NhdG9y
Rm9yKGJ5dGVzKTsgfQotICAgICAgICBNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvckZvck9iamVj
dFdpdGhEZXN0cnVjdG9yKHNpemVfdCBieXRlcykgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5kZXN0
cnVjdG9yQWxsb2NhdG9yRm9yKGJ5dGVzKTsgfQorICAgICAgICBNYXJrZWRBbGxvY2F0b3ImIGFs
bG9jYXRvckZvck9iamVjdFdpdGhOb3JtYWxEZXN0cnVjdG9yKHNpemVfdCBieXRlcykgeyByZXR1
cm4gbV9vYmplY3RTcGFjZS5ub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGJ5dGVzKTsgfQor
ICAgICAgICBNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvckZvck9iamVjdFdpdGhJbW1vcnRhbFN0
cnVjdHVyZURlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKSB7IHJldHVybiBtX29iamVjdFNwYWNlLmlt
bW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihieXRlcyk7IH0KICAgICAgICAg
Q29waWVkQWxsb2NhdG9yJiBzdG9yYWdlQWxsb2NhdG9yKCkgeyByZXR1cm4gbV9zdG9yYWdlU3Bh
Y2UuYWxsb2NhdG9yKCk7IH0KICAgICAgICAgQ2hlY2tlZEJvb2xlYW4gdHJ5QWxsb2NhdGVTdG9y
YWdlKHNpemVfdCwgdm9pZCoqKTsKICAgICAgICAgQ2hlY2tlZEJvb2xlYW4gdHJ5UmVhbGxvY2F0
ZVN0b3JhZ2Uodm9pZCoqLCBzaXplX3QsIHNpemVfdCk7CkBAIC0xNjgsNyArMTY5LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZGlkQWJhbmRvbihzaXplX3QpOwogCiAgICAgICAg
IGJvb2wgaXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpOwotICAgICAgICBib29sIGlzU2FmZVRv
U3dlZXBTdHJ1Y3R1cmVzKCk7CiAgICAgICAgIHZvaWQgZGlkU3RhcnRWTVNodXRkb3duKCk7CiAK
ICAgICBwcml2YXRlOgpAQCAtMTg0LDkgKzE4NCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQgdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmKTsK
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9jYXRlQ2VsbChI
ZWFwJiwgc2l6ZV90KTsKIAotICAgICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhEZXN0cnVjdG9yKHNp
emVfdCk7Ci0gICAgICAgIHZvaWQqIGFsbG9jYXRlV2l0aG91dERlc3RydWN0b3Ioc2l6ZV90KTsK
LSAgICAgICAgdm9pZCogYWxsb2NhdGVTdHJ1Y3R1cmUoc2l6ZV90KTsKKyAgICAgICAgdm9pZCog
YWxsb2NhdGVXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemVfdCk7IC8vIEZvciB1
c2Ugd2l0aCBzcGVjaWFsIG9iamVjdHMgd2hvc2UgU3RydWN0dXJlcyBuZXZlciBkaWUuCisgICAg
ICAgIHZvaWQqIGFsbG9jYXRlV2l0aE5vcm1hbERlc3RydWN0b3Ioc2l6ZV90KTsgLy8gRm9yIHVz
ZSB3aXRoIG9iamVjdHMgdGhhdCBpbmhlcml0IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgZnJvbSBK
U0Rlc3RydWN0aWJsZU9iamVjdC4KKyAgICAgICAgdm9pZCogYWxsb2NhdGVXaXRob3V0RGVzdHJ1
Y3RvcihzaXplX3QpOyAvLyBGb3IgdXNlIHdpdGggb2JqZWN0cyB3aXRob3V0IGRlc3RydWN0b3Jz
LgogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWluRXh0cmFDb3N0ID0gMjU2OwogICAg
ICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEV4dHJhQ29zdCA9IDEwMjQgKiAxMDI0OwpAQCAt
MzYxLDEwICszNjEsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBmb3JFYWNo
UHJvdGVjdGVkQ2VsbChmdW5jdG9yKTsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9pZCogSGVhcDo6
YWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpCisgICAgaW5saW5lIHZvaWQqIEhl
YXA6OmFsbG9jYXRlV2l0aE5vcm1hbERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGlzVmFsaWRBbGxvY2F0aW9uKGJ5dGVzKSk7Ci0gICAgICAgIHJldHVybiBt
X29iamVjdFNwYWNlLmFsbG9jYXRlV2l0aERlc3RydWN0b3IoYnl0ZXMpOworICAgICAgICByZXR1
cm4gbV9vYmplY3RTcGFjZS5hbGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKGJ5dGVzKTsKKyAg
ICB9CisgICAgCisgICAgaW5saW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlV2l0aEltbW9ydGFsU3Ry
dWN0dXJlRGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpCisgICAgeworICAgICAgICBBU1NFUlQoaXNW
YWxpZEFsbG9jYXRpb24oYnl0ZXMpKTsKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuYWxs
b2NhdGVXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKGJ5dGVzKTsKICAgICB9CiAgICAg
CiAgICAgaW5saW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlV2l0aG91dERlc3RydWN0b3Ioc2l6ZV90
IGJ5dGVzKQpAQCAtMzczLDExICszNzksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0
dXJuIG1fb2JqZWN0U3BhY2UuYWxsb2NhdGVXaXRob3V0RGVzdHJ1Y3RvcihieXRlcyk7CiAgICAg
fQogICAgCi0gICAgaW5saW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlU3RydWN0dXJlKHNpemVfdCBi
eXRlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX29iamVjdFNwYWNlLmFsbG9jYXRlU3RydWN0
dXJlKGJ5dGVzKTsKLSAgICB9Ci0gCiAgICAgaW5saW5lIENoZWNrZWRCb29sZWFuIEhlYXA6OnRy
eUFsbG9jYXRlU3RvcmFnZShzaXplX3QgYnl0ZXMsIHZvaWQqKiBvdXRQdHIpCiAgICAgewogICAg
ICAgICByZXR1cm4gbV9zdG9yYWdlU3BhY2UudHJ5QWxsb2NhdGUoYnl0ZXMsIG91dFB0cik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBl
ci5jcHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lu
Y3JlbWVudGFsU3dlZXBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgc3Rh
dGljIGNvbnN0IGRvdWJsZSBzd2VlcFRpbWVNdWx0aXBsaWVyIAogSW5jcmVtZW50YWxTd2VlcGVy
OjpJbmNyZW1lbnRhbFN3ZWVwZXIoSGVhcCogaGVhcCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCiAg
ICAgOiBIZWFwVGltZXIoaGVhcC0+Z2xvYmFsRGF0YSgpLCBydW5Mb29wKQogICAgICwgbV9jdXJy
ZW50QmxvY2tUb1N3ZWVwSW5kZXgoMCkKLSAgICAsIG1fc3RydWN0dXJlc0NhbkJlU3dlcHQoZmFs
c2UpCiB7CiB9CiAKQEAgLTcyLDcgKzcxLDYgQEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNh
bmNlbFRpbWVyKCkKIEluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAq
IGhlYXApCiAgICAgOiBIZWFwVGltZXIoaGVhcC0+Z2xvYmFsRGF0YSgpKQogICAgICwgbV9jdXJy
ZW50QmxvY2tUb1N3ZWVwSW5kZXgoMCkKLSAgICAsIG1fc3RydWN0dXJlc0NhbkJlU3dlcHQoZmFs
c2UpCiB7CiB9CiAKQEAgLTExOSwxMCArMTE3LDYgQEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6
OnN3ZWVwTmV4dEJsb2NrKAogewogICAgIHdoaWxlIChtX2N1cnJlbnRCbG9ja1RvU3dlZXBJbmRl
eCA8IG1fYmxvY2tzVG9Td2VlcC5zaXplKCkpIHsKICAgICAgICAgTWFya2VkQmxvY2sqIGJsb2Nr
ID0gbV9ibG9ja3NUb1N3ZWVwW21fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4KytdOwotICAgICAg
ICBpZiAoYmxvY2stPm9ubHlDb250YWluc1N0cnVjdHVyZXMoKSkKLSAgICAgICAgICAgIG1fc3Ry
dWN0dXJlc0NhbkJlU3dlcHQgPSB0cnVlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBBU1NF
UlQoIW1fc3RydWN0dXJlc0NhbkJlU3dlcHQpOwogCiAgICAgICAgIGlmICghYmxvY2stPm5lZWRz
U3dlZXBpbmcoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTM5LDE0ICsxMzMsMTIgQEAg
dm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN0YXJ0U3dlZXBpbmcoYwogICAgIENvcHlGdW5jdG9y
IGZ1bmN0b3IobV9ibG9ja3NUb1N3ZWVwKTsKICAgICBtX2dsb2JhbERhdGEtPmhlYXAub2JqZWN0
U3BhY2UoKS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAgICAgbV9jdXJyZW50QmxvY2tUb1N3ZWVw
SW5kZXggPSAwOwotICAgIG1fc3RydWN0dXJlc0NhbkJlU3dlcHQgPSBmYWxzZTsKICAgICBzY2hl
ZHVsZVRpbWVyKCk7CiB9CiAKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjp3aWxsRmluaXNoU3dl
ZXBpbmcoKQogewogICAgIG1fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4ID0gMDsKLSAgICBtX3N0
cnVjdHVyZXNDYW5CZVN3ZXB0ID0gdHJ1ZTsKICAgICBtX2Jsb2Nrc1RvU3dlZXAuY2xlYXIoKTsK
ICAgICBpZiAobV9nbG9iYWxEYXRhKQogICAgICAgICBjYW5jZWxUaW1lcigpOwpAQCAtMTU2LDcg
KzE0OCw2IEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjp3aWxsRmluaXNoU3dlZXAKIAogSW5j
cmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhKQogICAgIDogSGVhcFRpbWVyKGdsb2JhbERhdGEpCi0gICAgLCBtX3N0cnVjdHVyZXNDYW5C
ZVN3ZXB0KGZhbHNlKQogewogfQogCkBAIC0xNzEsMTIgKzE2MiwxMCBAQCBJbmNyZW1lbnRhbFN3
ZWVwZXIqIEluY3JlbWVudGFsU3dlZXBlcjo6CiAKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpz
dGFydFN3ZWVwaW5nKGNvbnN0IEhhc2hTZXQ8TWFya2VkQmxvY2sqPiYpCiB7Ci0gICAgbV9zdHJ1
Y3R1cmVzQ2FuQmVTd2VwdCA9IGZhbHNlOwogfQogCiB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6
d2lsbEZpbmlzaFN3ZWVwaW5nKCkKIHsKLSAgICBtX3N0cnVjdHVyZXNDYW5CZVN3ZXB0ID0gdHJ1
ZTsKIH0KIAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKCkKQEAgLTE4
NSw5ICsxNzQsNCBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6c3dlZXBOZXh0QmxvY2soCiAK
ICNlbmRpZgogCi1ib29sIEluY3JlbWVudGFsU3dlZXBlcjo6c3RydWN0dXJlc0NhbkJlU3dlcHQo
KQotewotICAgIHJldHVybiBtX3N0cnVjdHVyZXNDYW5CZVN3ZXB0OwotfQotCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dl
ZXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVu
dGFsU3dlZXBlci5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydFN3ZWVwaW5nKGNvbnN0IEhhc2hTZXQ8TWFya2VkQmxv
Y2sqPiYgYmxvY2tTbmFwc2hvdCk7CiAgICAgdmlydHVhbCB2b2lkIGRvV29yaygpOwogICAgIHZv
aWQgc3dlZXBOZXh0QmxvY2soKTsKLSAgICBib29sIHN0cnVjdHVyZXNDYW5CZVN3ZXB0KCk7CiAg
ICAgdm9pZCB3aWxsRmluaXNoU3dlZXBpbmcoKTsKIAogcHJpdmF0ZToKQEAgLTc4LDcgKzc3LDYg
QEAgcHJpdmF0ZToKICAgICBJbmNyZW1lbnRhbFN3ZWVwZXIoSlNHbG9iYWxEYXRhKik7CiAgICAg
CiAjZW5kaWYKLSAgICBib29sIG1fc3RydWN0dXJlc0NhbkJlU3dlcHQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9j
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTcgKzMwLDYg
QEAgYm9vbCBNYXJrZWRBbGxvY2F0b3I6OmlzUGFnZWRPdXQoZG91YmxlIAogaW5saW5lIHZvaWQq
IE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVIZWxwZXIoc2l6ZV90IGJ5dGVzKQogewogICAg
IGlmICghbV9mcmVlTGlzdC5oZWFkKSB7Ci0gICAgICAgIGlmIChtX29ubHlDb250YWluc1N0cnVj
dHVyZXMgJiYgIW1faGVhcC0+aXNTYWZlVG9Td2VlcFN0cnVjdHVyZXMoKSkgewotICAgICAgICAg
ICAgaWYgKG1fY3VycmVudEJsb2NrKSB7Ci0gICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2st
PmRpZENvbnN1bWVGcmVlTGlzdCgpOwotICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0g
MDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIFdlIHN3ZWVwIGFub3RoZXIgcmFuZG9t
IGJsb2NrIGhlcmUgc28gdGhhdCB3ZSBjYW4gbWFrZSBwcm9ncmVzcwotICAgICAgICAgICAgLy8g
dG93YXJkIGJlaW5nIGFibGUgdG8gc3dlZXAgU3RydWN0dXJlcy4KLSAgICAgICAgICAgIG1faGVh
cC0+c3dlZXBlcigpLT5zd2VlcE5leHRCbG9jaygpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgICAgIH0KLQogICAgICAgICBmb3IgKE1hcmtlZEJsb2NrKiYgYmxvY2sgPSBtX2Jsb2Nrc1Rv
U3dlZXA7IGJsb2NrOyBibG9jayA9IGJsb2NrLT5uZXh0KCkpIHsKICAgICAgICAgICAgIE1hcmtl
ZEJsb2NrOjpGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6U3dl
ZXBUb0ZyZWVMaXN0KTsKICAgICAgICAgICAgIGlmICghZnJlZUxpc3QuaGVhZCkgewpAQCAtMTI0
LDEzICsxMTMsMTMgQEAgTWFya2VkQmxvY2sqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVCbAog
CiAgICAgaWYgKGJsb2NrU2l6ZSA9PSBNYXJrZWRCbG9jazo6YmxvY2tTaXplKSB7CiAgICAgICAg
IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBhbGxvY2F0aW9uID0gbV9oZWFwLT5ibG9ja0FsbG9jYXRv
cigpLmFsbG9jYXRlKCk7Ci0gICAgICAgIHJldHVybiBNYXJrZWRCbG9jazo6Y3JlYXRlKGFsbG9j
YXRpb24sIG1faGVhcCwgY2VsbFNpemUsIG1fY2VsbHNOZWVkRGVzdHJ1Y3Rpb24sIG1fb25seUNv
bnRhaW5zU3RydWN0dXJlcyk7CisgICAgICAgIHJldHVybiBNYXJrZWRCbG9jazo6Y3JlYXRlKGFs
bG9jYXRpb24sIHRoaXMsIGNlbGxTaXplLCBtX2Rlc3RydWN0b3JUeXBlKTsKICAgICB9CiAKICAg
ICBQYWdlQWxsb2NhdGlvbkFsaWduZWQgYWxsb2NhdGlvbiA9IFBhZ2VBbGxvY2F0aW9uQWxpZ25l
ZDo6YWxsb2NhdGUoYmxvY2tTaXplLCBNYXJrZWRCbG9jazo6YmxvY2tTaXplLCBPU0FsbG9jYXRv
cjo6SlNHQ0hlYXBQYWdlcyk7CiAgICAgaWYgKCFzdGF0aWNfY2FzdDxib29sPihhbGxvY2F0aW9u
KSkKICAgICAgICAgQ1JBU0goKTsKLSAgICByZXR1cm4gTWFya2VkQmxvY2s6OmNyZWF0ZShhbGxv
Y2F0aW9uLCBtX2hlYXAsIGNlbGxTaXplLCBtX2NlbGxzTmVlZERlc3RydWN0aW9uLCBtX29ubHlD
b250YWluc1N0cnVjdHVyZXMpOworICAgIHJldHVybiBNYXJrZWRCbG9jazo6Y3JlYXRlKGFsbG9j
YXRpb24sIHRoaXMsIGNlbGxTaXplLCBtX2Rlc3RydWN0b3JUeXBlKTsKIH0KIAogdm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJsb2NrKiBibG9jaykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCShyZXZpc2lvbiAxMjg3MTIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldCgpOwogICAg
IHZvaWQgY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOwogICAgIHNpemVfdCBjZWxsU2l6
ZSgpIHsgcmV0dXJuIG1fY2VsbFNpemU7IH0KLSAgICBib29sIGNlbGxzTmVlZERlc3RydWN0aW9u
KCkgeyByZXR1cm4gbV9jZWxsc05lZWREZXN0cnVjdGlvbjsgfQotICAgIGJvb2wgb25seUNvbnRh
aW5zU3RydWN0dXJlcygpIHsgcmV0dXJuIG1fb25seUNvbnRhaW5zU3RydWN0dXJlczsgfQorICAg
IE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlwZSBkZXN0cnVjdG9yVHlwZSgpIHsgcmV0dXJuIG1f
ZGVzdHJ1Y3RvclR5cGU7IH0KICAgICB2b2lkKiBhbGxvY2F0ZShzaXplX3QpOwogICAgIEhlYXAq
IGhlYXAoKSB7IHJldHVybiBtX2hlYXA7IH0KICAgICAKQEAgLTMyLDcgKzMxLDcgQEAgcHVibGlj
OgogICAgIAogICAgIHZvaWQgYWRkQmxvY2soTWFya2VkQmxvY2sqKTsKICAgICB2b2lkIHJlbW92
ZUJsb2NrKE1hcmtlZEJsb2NrKik7Ci0gICAgdm9pZCBpbml0KEhlYXAqLCBNYXJrZWRTcGFjZSos
IHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBjZWxsc05lZWREZXN0cnVjdGlvbiwgYm9vbCBvbmx5Q29u
dGFpbnNTdHJ1Y3R1cmVzKTsKKyAgICB2b2lkIGluaXQoSGVhcCosIE1hcmtlZFNwYWNlKiwgc2l6
ZV90IGNlbGxTaXplLCBNYXJrZWRCbG9jazo6RGVzdHJ1Y3RvclR5cGUpOwogCiAgICAgYm9vbCBp
c1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSk7CiAgICAKQEAgLTQ5LDggKzQ4LDcgQEAgcHJpdmF0
ZToKICAgICBNYXJrZWRCbG9jayogbV9ibG9ja3NUb1N3ZWVwOwogICAgIERvdWJseUxpbmtlZExp
c3Q8TWFya2VkQmxvY2s+IG1fYmxvY2tMaXN0OwogICAgIHNpemVfdCBtX2NlbGxTaXplOwotICAg
IGJvb2wgbV9jZWxsc05lZWREZXN0cnVjdGlvbjsKLSAgICBib29sIG1fb25seUNvbnRhaW5zU3Ry
dWN0dXJlczsKKyAgICBNYXJrZWRCbG9jazo6RGVzdHJ1Y3RvclR5cGUgbV9kZXN0cnVjdG9yVHlw
ZTsKICAgICBIZWFwKiBtX2hlYXA7CiAgICAgTWFya2VkU3BhY2UqIG1fbWFya2VkU3BhY2U7CiB9
OwpAQCAtNTksMjAgKzU3LDE4IEBAIGlubGluZSBNYXJrZWRBbGxvY2F0b3I6Ok1hcmtlZEFsbG9j
YXRvcigKICAgICA6IG1fY3VycmVudEJsb2NrKDApCiAgICAgLCBtX2Jsb2Nrc1RvU3dlZXAoMCkK
ICAgICAsIG1fY2VsbFNpemUoMCkKLSAgICAsIG1fY2VsbHNOZWVkRGVzdHJ1Y3Rpb24odHJ1ZSkK
LSAgICAsIG1fb25seUNvbnRhaW5zU3RydWN0dXJlcyhmYWxzZSkKKyAgICAsIG1fZGVzdHJ1Y3Rv
clR5cGUoTWFya2VkQmxvY2s6Ok5vbmUpCiAgICAgLCBtX2hlYXAoMCkKICAgICAsIG1fbWFya2Vk
U3BhY2UoMCkKIHsKIH0KIAotaW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjppbml0KEhlYXAq
IGhlYXAsIE1hcmtlZFNwYWNlKiBtYXJrZWRTcGFjZSwgc2l6ZV90IGNlbGxTaXplLCBib29sIGNl
bGxzTmVlZERlc3RydWN0aW9uLCBib29sIG9ubHlDb250YWluc1N0cnVjdHVyZXMpCitpbmxpbmUg
dm9pZCBNYXJrZWRBbGxvY2F0b3I6OmluaXQoSGVhcCogaGVhcCwgTWFya2VkU3BhY2UqIG1hcmtl
ZFNwYWNlLCBzaXplX3QgY2VsbFNpemUsIE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlwZSBkZXN0
cnVjdG9yVHlwZSkKIHsKICAgICBtX2hlYXAgPSBoZWFwOwogICAgIG1fbWFya2VkU3BhY2UgPSBt
YXJrZWRTcGFjZTsKICAgICBtX2NlbGxTaXplID0gY2VsbFNpemU7Ci0gICAgbV9jZWxsc05lZWRE
ZXN0cnVjdGlvbiA9IGNlbGxzTmVlZERlc3RydWN0aW9uOwotICAgIG1fb25seUNvbnRhaW5zU3Ry
dWN0dXJlcyA9IG9ubHlDb250YWluc1N0cnVjdHVyZXM7CisgICAgbV9kZXN0cnVjdG9yVHlwZSA9
IGRlc3RydWN0b3JUeXBlOwogfQogCiBpbmxpbmUgdm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGxv
Y2F0ZShzaXplX3QgYnl0ZXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suY3BwCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDI2ICsyOCwyNiBAQAog
CiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCi0j
aW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgog
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1NYXJrZWRCbG9jayogTWFya2VkQmxvY2s6OmNyZWF0ZShj
b25zdCBQYWdlQWxsb2NhdGlvbkFsaWduZWQmIGFsbG9jYXRpb24sIEhlYXAqIGhlYXAsIHNpemVf
dCBjZWxsU2l6ZSwgYm9vbCBjZWxsc05lZWREZXN0cnVjdGlvbiwgYm9vbCBvbmx5Q29udGFpbnNT
dHJ1Y3R1cmVzKQorTWFya2VkQmxvY2sqIE1hcmtlZEJsb2NrOjpjcmVhdGUoY29uc3QgUGFnZUFs
bG9jYXRpb25BbGlnbmVkJiBhbGxvY2F0aW9uLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwg
c2l6ZV90IGNlbGxTaXplLCBEZXN0cnVjdG9yVHlwZSBkZXN0cnVjdG9yVHlwZSkKIHsKLSAgICBy
ZXR1cm4gbmV3IChOb3ROdWxsLCBhbGxvY2F0aW9uLmJhc2UoKSkgTWFya2VkQmxvY2soYWxsb2Nh
dGlvbiwgaGVhcCwgY2VsbFNpemUsIGNlbGxzTmVlZERlc3RydWN0aW9uLCBvbmx5Q29udGFpbnNT
dHJ1Y3R1cmVzKTsKKyAgICByZXR1cm4gbmV3IChOb3ROdWxsLCBhbGxvY2F0aW9uLmJhc2UoKSkg
TWFya2VkQmxvY2soYWxsb2NhdGlvbiwgYWxsb2NhdG9yLCBjZWxsU2l6ZSwgZGVzdHJ1Y3RvclR5
cGUpOwogfQogCi1NYXJrZWRCbG9jazo6TWFya2VkQmxvY2soY29uc3QgUGFnZUFsbG9jYXRpb25B
bGlnbmVkJiBhbGxvY2F0aW9uLCBIZWFwKiBoZWFwLCBzaXplX3QgY2VsbFNpemUsIGJvb2wgY2Vs
bHNOZWVkRGVzdHJ1Y3Rpb24sIGJvb2wgb25seUNvbnRhaW5zU3RydWN0dXJlcykKK01hcmtlZEJs
b2NrOjpNYXJrZWRCbG9jayhjb25zdCBQYWdlQWxsb2NhdGlvbkFsaWduZWQmIGFsbG9jYXRpb24s
IE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2VsbFNpemUsIERlc3RydWN0b3JU
eXBlIGRlc3RydWN0b3JUeXBlKQogICAgIDogSGVhcEJsb2NrPE1hcmtlZEJsb2NrPihhbGxvY2F0
aW9uKQogICAgICwgbV9hdG9tc1BlckNlbGwoKGNlbGxTaXplICsgYXRvbVNpemUgLSAxKSAvIGF0
b21TaXplKQogICAgICwgbV9lbmRBdG9tKGF0b21zUGVyQmxvY2sgLSBtX2F0b21zUGVyQ2VsbCAr
IDEpCi0gICAgLCBtX2NlbGxzTmVlZERlc3RydWN0aW9uKGNlbGxzTmVlZERlc3RydWN0aW9uKQot
ICAgICwgbV9vbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKG9ubHlDb250YWluc1N0cnVjdHVyZXMpCisg
ICAgLCBtX2Rlc3RydWN0b3JUeXBlKGRlc3RydWN0b3JUeXBlKQorICAgICwgbV9hbGxvY2F0b3Io
YWxsb2NhdG9yKQogICAgICwgbV9zdGF0ZShOZXcpIC8vIEFsbCBjZWxscyBzdGFydCBvdXQgdW5t
YXJrZWQuCi0gICAgLCBtX3dlYWtTZXQoaGVhcC0+Z2xvYmFsRGF0YSgpKQorICAgICwgbV93ZWFr
U2V0KGFsbG9jYXRvci0+aGVhcCgpLT5nbG9iYWxEYXRhKCkpCiB7Ci0gICAgQVNTRVJUKGhlYXAp
OworICAgIEFTU0VSVChhbGxvY2F0b3IpOwogICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5T
SVRJT04odGhpcyk7CiB9CiAKQEAgLTY1LDExICs2NSwxMSBAQCBpbmxpbmUgdm9pZCBNYXJrZWRC
bG9jazo6Y2FsbERlc3RydWN0b3IoCiAgICAgY2VsbC0+emFwKCk7CiB9CiAKLXRlbXBsYXRlPE1h
cmtlZEJsb2NrOjpCbG9ja1N0YXRlIGJsb2NrU3RhdGUsIE1hcmtlZEJsb2NrOjpTd2VlcE1vZGUg
c3dlZXBNb2RlLCBib29sIGRlc3RydWN0b3JDYWxsTmVlZGVkPgordGVtcGxhdGU8TWFya2VkQmxv
Y2s6OkJsb2NrU3RhdGUgYmxvY2tTdGF0ZSwgTWFya2VkQmxvY2s6OlN3ZWVwTW9kZSBzd2VlcE1v
ZGUsIE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlwZSBkdG9yVHlwZT4KIE1hcmtlZEJsb2NrOjpG
cmVlTGlzdCBNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCgpCiB7CiAgICAgQVNTRVJUKGJs
b2NrU3RhdGUgIT0gQWxsb2NhdGVkICYmIGJsb2NrU3RhdGUgIT0gRnJlZUxpc3RlZCk7Ci0gICAg
QVNTRVJUKGRlc3RydWN0b3JDYWxsTmVlZGVkIHx8IHN3ZWVwTW9kZSAhPSBTd2VlcE9ubHkpOwor
ICAgIEFTU0VSVCghKGR0b3JUeXBlID09IE1hcmtlZEJsb2NrOjpOb25lICYmIHN3ZWVwTW9kZSA9
PSBTd2VlcE9ubHkpKTsKIAogICAgIC8vIFRoaXMgcHJvZHVjZXMgYSBmcmVlIGxpc3QgdGhhdCBp
cyBvcmRlcmVkIGluIHJldmVyc2UgdGhyb3VnaCB0aGUgYmxvY2suCiAgICAgLy8gVGhpcyBpcyBm
aW5lLCBzaW5jZSB0aGUgYWxsb2NhdGlvbiBjb2RlIG1ha2VzIG5vIGFzc3VtcHRpb25zIGFib3V0
IHRoZQpAQCAtODIsNyArODIsNyBAQCBNYXJrZWRCbG9jazo6RnJlZUxpc3QgTWFya2VkQmxvY2s6
OnNwZWNpCiAKICAgICAgICAgSlNDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SlND
ZWxsKj4oJmF0b21zKClbaV0pOwogCi0gICAgICAgIGlmIChkZXN0cnVjdG9yQ2FsbE5lZWRlZCAm
JiBibG9ja1N0YXRlICE9IE5ldykKKyAgICAgICAgaWYgKGR0b3JUeXBlICE9IE1hcmtlZEJsb2Nr
OjpOb25lICYmIGJsb2NrU3RhdGUgIT0gTmV3KQogICAgICAgICAgICAgY2FsbERlc3RydWN0b3Io
Y2VsbCk7CiAKICAgICAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpIHsKQEAg
LTEwMywyMSArMTAzLDIzIEBAIE1hcmtlZEJsb2NrOjpGcmVlTGlzdCBNYXJrZWRCbG9jazo6c3dl
ZXAKIAogICAgIG1fd2Vha1NldC5zd2VlcCgpOwogCi0gICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2Vl
cE9ubHkgJiYgIW1fY2VsbHNOZWVkRGVzdHJ1Y3Rpb24pCisgICAgaWYgKHN3ZWVwTW9kZSA9PSBT
d2VlcE9ubHkgJiYgbV9kZXN0cnVjdG9yVHlwZSA9PSBNYXJrZWRCbG9jazo6Tm9uZSkKICAgICAg
ICAgcmV0dXJuIEZyZWVMaXN0KCk7CiAKLSAgICBpZiAobV9jZWxsc05lZWREZXN0cnVjdGlvbikK
LSAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyPHRydWU+KHN3ZWVwTW9kZSk7Ci0gICAgcmV0dXJu
IHN3ZWVwSGVscGVyPGZhbHNlPihzd2VlcE1vZGUpOworICAgIGlmIChtX2Rlc3RydWN0b3JUeXBl
ID09IE1hcmtlZEJsb2NrOjpJbW1vcnRhbFN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIHN3ZWVw
SGVscGVyPE1hcmtlZEJsb2NrOjpJbW1vcnRhbFN0cnVjdHVyZT4oc3dlZXBNb2RlKTsKKyAgICBp
ZiAobV9kZXN0cnVjdG9yVHlwZSA9PSBNYXJrZWRCbG9jazo6Tm9ybWFsKQorICAgICAgICByZXR1
cm4gc3dlZXBIZWxwZXI8TWFya2VkQmxvY2s6Ok5vcm1hbD4oc3dlZXBNb2RlKTsKKyAgICByZXR1
cm4gc3dlZXBIZWxwZXI8TWFya2VkQmxvY2s6Ok5vbmU+KHN3ZWVwTW9kZSk7CiB9CiAKLXRlbXBs
YXRlPGJvb2wgZGVzdHJ1Y3RvckNhbGxOZWVkZWQ+Cit0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6RGVz
dHJ1Y3RvclR5cGUgZHRvclR5cGU+CiBNYXJrZWRCbG9jazo6RnJlZUxpc3QgTWFya2VkQmxvY2s6
OnN3ZWVwSGVscGVyKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7CiAgICAgc3dpdGNoIChtX3N0YXRl
KSB7CiAgICAgY2FzZSBOZXc6CiAgICAgICAgIEFTU0VSVChzd2VlcE1vZGUgPT0gU3dlZXBUb0Zy
ZWVMaXN0KTsKLSAgICAgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8TmV3LCBTd2VlcFRvRnJl
ZUxpc3QsIGRlc3RydWN0b3JDYWxsTmVlZGVkPigpOworICAgICAgICByZXR1cm4gc3BlY2lhbGl6
ZWRTd2VlcDxOZXcsIFN3ZWVwVG9GcmVlTGlzdCwgZHRvclR5cGU+KCk7CiAgICAgY2FzZSBGcmVl
TGlzdGVkOgogICAgICAgICAvLyBIYXBwZW5zIHdoZW4gYSBibG9jayB0cmFuc2l0aW9ucyB0byBm
dWxseSBhbGxvY2F0ZWQuCiAgICAgICAgIEFTU0VSVChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVM
aXN0KTsKQEAgLTEyNiwxMCArMTI4LDkgQEAgTWFya2VkQmxvY2s6OkZyZWVMaXN0IE1hcmtlZEJs
b2NrOjpzd2VlcAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
IEZyZWVMaXN0KCk7CiAgICAgY2FzZSBNYXJrZWQ6Ci0gICAgICAgIEFTU0VSVCghbV9vbmx5Q29u
dGFpbnNTdHJ1Y3R1cmVzIHx8IGhlYXAoKS0+aXNTYWZlVG9Td2VlcFN0cnVjdHVyZXMoKSk7CiAg
ICAgICAgIHJldHVybiBzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0Ci0gICAgICAgICAgICA/
IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0b3JDYWxs
TmVlZGVkPigpCi0gICAgICAgICAgICA6IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcE9u
bHksIGRlc3RydWN0b3JDYWxsTmVlZGVkPigpOworICAgICAgICAgICAgPyBzcGVjaWFsaXplZFN3
ZWVwPE1hcmtlZCwgU3dlZXBUb0ZyZWVMaXN0LCBkdG9yVHlwZT4oKQorICAgICAgICAgICAgOiBz
cGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBPbmx5LCBkdG9yVHlwZT4oKTsKICAgICB9CiAK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBIZWFwOwogICAgIGNsYXNzIEpTQ2VsbDsK
KyAgICBjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CiAKICAgICB0eXBlZGVmIHVpbnRwdHJfdCBCaXRz
OwogCkBAIC0xMTIsNyArMTEzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBSZXR1
cm5UeXBlIG1fY291bnQ7CiAgICAgICAgIH07CiAKLSAgICAgICAgc3RhdGljIE1hcmtlZEJsb2Nr
KiBjcmVhdGUoY29uc3QgUGFnZUFsbG9jYXRpb25BbGlnbmVkJiwgSGVhcCosIHNpemVfdCBjZWxs
U2l6ZSwgYm9vbCBjZWxsc05lZWREZXN0cnVjdGlvbiwgYm9vbCBvbmx5Q29udGFpbnNTdHJ1Y3R1
cmVzKTsKKyAgICAgICAgZW51bSBEZXN0cnVjdG9yVHlwZSB7IE5vbmUsIEltbW9ydGFsU3RydWN0
dXJlLCBOb3JtYWwgfTsKKyAgICAgICAgc3RhdGljIE1hcmtlZEJsb2NrKiBjcmVhdGUoY29uc3Qg
UGFnZUFsbG9jYXRpb25BbGlnbmVkJiwgTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNlbGxTaXpl
LCBEZXN0cnVjdG9yVHlwZSk7CiAKICAgICAgICAgc3RhdGljIGJvb2wgaXNBdG9tQWxpZ25lZChj
b25zdCB2b2lkKik7CiAgICAgICAgIHN0YXRpYyBNYXJrZWRCbG9jayogYmxvY2tGb3IoY29uc3Qg
dm9pZCopOwpAQCAtMTIwLDYgKzEyMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAg
ICAgICAgdm9pZCBsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwogCisgICAgICAgIE1hcmtlZEFsbG9j
YXRvciogYWxsb2NhdG9yKCkgY29uc3Q7CiAgICAgICAgIEhlYXAqIGhlYXAoKSBjb25zdDsKICAg
ICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkgY29uc3Q7CiAgICAgICAgIFdlYWtTZXQm
IHdlYWtTZXQoKTsKQEAgLTE0Myw4ICsxNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Ym9vbCBpc0VtcHR5KCk7CiAKICAgICAgICAgc2l6ZV90IGNlbGxTaXplKCk7Ci0gICAgICAgIGJv
b2wgY2VsbHNOZWVkRGVzdHJ1Y3Rpb24oKTsKLSAgICAgICAgYm9vbCBvbmx5Q29udGFpbnNTdHJ1
Y3R1cmVzKCk7CisgICAgICAgIERlc3RydWN0b3JUeXBlIGRlc3RydWN0b3JUeXBlKCk7CiAKICAg
ICAgICAgc2l6ZV90IHNpemUoKTsKICAgICAgICAgc2l6ZV90IGNhcGFjaXR5KCk7CkBAIC0xOTQs
MTUgKzE5NiwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0gMTsgLy8gYXRvbVNpemUgbXVzdCBiZSBh
IHBvd2VyIG9mIHR3by4KIAogICAgICAgICBlbnVtIEJsb2NrU3RhdGUgeyBOZXcsIEZyZWVMaXN0
ZWQsIEFsbG9jYXRlZCwgTWFya2VkIH07Ci0gICAgICAgIHRlbXBsYXRlPGJvb2wgZGVzdHJ1Y3Rv
ckNhbGxOZWVkZWQ+IEZyZWVMaXN0IHN3ZWVwSGVscGVyKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7
CisgICAgICAgIHRlbXBsYXRlPERlc3RydWN0b3JUeXBlPiBGcmVlTGlzdCBzd2VlcEhlbHBlcihT
d2VlcE1vZGUgPSBTd2VlcE9ubHkpOwogCiAgICAgICAgIHR5cGVkZWYgY2hhciBBdG9tW2F0b21T
aXplXTsKIAotICAgICAgICBNYXJrZWRCbG9jayhjb25zdCBQYWdlQWxsb2NhdGlvbkFsaWduZWQm
LCBIZWFwKiwgc2l6ZV90IGNlbGxTaXplLCBib29sIGNlbGxzTmVlZERlc3RydWN0aW9uLCBib29s
IG9ubHlDb250YWluc1N0cnVjdHVyZXMpOworICAgICAgICBNYXJrZWRCbG9jayhjb25zdCBQYWdl
QWxsb2NhdGlvbkFsaWduZWQmLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2VsbFNpemUsIERl
c3RydWN0b3JUeXBlKTsKICAgICAgICAgQXRvbSogYXRvbXMoKTsKICAgICAgICAgc2l6ZV90IGF0
b21OdW1iZXIoY29uc3Qgdm9pZCopOwogICAgICAgICB2b2lkIGNhbGxEZXN0cnVjdG9yKEpTQ2Vs
bCopOwotICAgICAgICB0ZW1wbGF0ZTxCbG9ja1N0YXRlLCBTd2VlcE1vZGUsIGJvb2wgZGVzdHJ1
Y3RvckNhbGxOZWVkZWQ+IEZyZWVMaXN0IHNwZWNpYWxpemVkU3dlZXAoKTsKKyAgICAgICAgdGVt
cGxhdGU8QmxvY2tTdGF0ZSwgU3dlZXBNb2RlLCBEZXN0cnVjdG9yVHlwZT4gRnJlZUxpc3Qgc3Bl
Y2lhbGl6ZWRTd2VlcCgpOwogICAgICAgICAKICNpZiBFTkFCTEUoR0dDKQogICAgICAgICBDYXJk
U2V0PGJ5dGVzUGVyQ2FyZCwgYmxvY2tTaXplPiBtX2NhcmRzOwpAQCAtMjE1LDggKzIxNyw4IEBA
IG5hbWVzcGFjZSBKU0MgewogI2Vsc2UKICAgICAgICAgV1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9j
aywgV1RGOjpCaXRtYXBOb3RBdG9taWM+IG1fbWFya3M7CiAjZW5kaWYKLSAgICAgICAgYm9vbCBt
X2NlbGxzTmVlZERlc3RydWN0aW9uOwotICAgICAgICBib29sIG1fb25seUNvbnRhaW5zU3RydWN0
dXJlczsKKyAgICAgICAgRGVzdHJ1Y3RvclR5cGUgbV9kZXN0cnVjdG9yVHlwZTsKKyAgICAgICAg
TWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKICAgICAgICAgQmxvY2tTdGF0ZSBtX3N0YXRl
OwogICAgICAgICBXZWFrU2V0IG1fd2Vha1NldDsKICAgICB9OwpAQCAtMjYxLDYgKzI2MywxMSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3dlZXAoKTsKICAgICB9CiAKKyAgICBpbmxpbmUg
TWFya2VkQWxsb2NhdG9yKiBNYXJrZWRCbG9jazo6YWxsb2NhdG9yKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2FsbG9jYXRvcjsKKyAgICB9CisKICAgICBpbmxpbmUgSGVhcCogTWFy
a2VkQmxvY2s6OmhlYXAoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fd2Vha1NldC5o
ZWFwKCk7CkBAIC0zMjYsMTQgKzMzMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1
cm4gbV9hdG9tc1BlckNlbGwgKiBhdG9tU2l6ZTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBN
YXJrZWRCbG9jazo6Y2VsbHNOZWVkRGVzdHJ1Y3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fY2VsbHNOZWVkRGVzdHJ1Y3Rpb247IAotICAgIH0KLQotICAgIGlubGluZSBib29sIE1hcmtl
ZEJsb2NrOjpvbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKCkKKyAgICBpbmxpbmUgTWFya2VkQmxvY2s6
OkRlc3RydWN0b3JUeXBlIE1hcmtlZEJsb2NrOjpkZXN0cnVjdG9yVHlwZSgpCiAgICAgewotICAg
ICAgICByZXR1cm4gbV9vbmx5Q29udGFpbnNTdHJ1Y3R1cmVzOworICAgICAgICByZXR1cm4gbV9k
ZXN0cnVjdG9yVHlwZTsgCiAgICAgfQogCiAgICAgaW5saW5lIHNpemVfdCBNYXJrZWRCbG9jazo6
c2l6ZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3Bw
CShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDE3ICs4MSwxOSBAQCBNYXJrZWRTcGFjZTo6
TWFya2VkU3BhY2UoSGVhcCogaGVhcCkKICAgICA6IG1faGVhcChoZWFwKQogewogICAgIGZvciAo
c2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IHByZWNpc2VDdXRvZmY7
IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKSB7Ci0gICAgICAgIGFsbG9jYXRvckZvcihjZWxsU2l6
ZSkuaW5pdChoZWFwLCB0aGlzLCBjZWxsU2l6ZSwgZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgZGVz
dHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaW5pdChoZWFwLCB0aGlzLCBjZWxsU2l6ZSwg
dHJ1ZSwgZmFsc2UpOworICAgICAgICBhbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwg
dGhpcywgY2VsbFNpemUsIE1hcmtlZEJsb2NrOjpOb25lKTsKKyAgICAgICAgbm9ybWFsRGVzdHJ1
Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaW5pdChoZWFwLCB0aGlzLCBjZWxsU2l6ZSwgTWFy
a2VkQmxvY2s6Ok5vcm1hbCk7CisgICAgICAgIGltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFs
bG9jYXRvckZvcihjZWxsU2l6ZSkuaW5pdChoZWFwLCB0aGlzLCBjZWxsU2l6ZSwgTWFya2VkQmxv
Y2s6OkltbW9ydGFsU3RydWN0dXJlKTsKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6
ZSA9IGltcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IGltcHJlY2lzZUN1dG9mZjsgY2VsbFNpemUg
Kz0gaW1wcmVjaXNlU3RlcCkgewotICAgICAgICBhbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQo
aGVhcCwgdGhpcywgY2VsbFNpemUsIGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgIGRlc3RydWN0b3JB
bGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhpcywgY2VsbFNpemUsIHRydWUsIGZh
bHNlKTsKKyAgICAgICAgYWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAsIHRoaXMsIGNl
bGxTaXplLCBNYXJrZWRCbG9jazo6Tm9uZSk7CisgICAgICAgIG5vcm1hbERlc3RydWN0b3JBbGxv
Y2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhpcywgY2VsbFNpemUsIE1hcmtlZEJsb2Nr
OjpOb3JtYWwpOworICAgICAgICBpbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JG
b3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhpcywgY2VsbFNpemUsIE1hcmtlZEJsb2NrOjpJbW1v
cnRhbFN0cnVjdHVyZSk7CiAgICAgfQogCi0gICAgbV9sYXJnZUFsbG9jYXRvci5pbml0KGhlYXAs
IHRoaXMsIDAsIHRydWUsIGZhbHNlKTsKLSAgICBtX3N0cnVjdHVyZUFsbG9jYXRvci5pbml0KGhl
YXAsIHRoaXMsIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZigzMiwgc2l6ZW9mKFN0cnVjdHVyZSkp
LCB0cnVlLCB0cnVlKTsKKyAgICAvLyBUT0RPOiBEbyB3ZSBuZWVkIHR3byBzZXBhcmF0ZSBsYXJn
ZSBhbGxvY2F0b3JzLCBvbmUgZm9yIGltbW9ydGFsIGFuZCBvbmUgZm9yIG5vcm1hbD8KKyAgICBt
X2xhcmdlQWxsb2NhdG9yLmluaXQoaGVhcCwgdGhpcywgMCwgTWFya2VkQmxvY2s6OkltbW9ydGFs
U3RydWN0dXJlKTsKIH0KIAogTWFya2VkU3BhY2U6On5NYXJrZWRTcGFjZSgpCkBAIC0xMjAsMTYg
KzEyMiwxNyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMoKQogewogICAgIGZv
ciAoc2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IHByZWNpc2VDdXRv
ZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKSB7CiAgICAgICAgIGFsbG9jYXRvckZvcihjZWxs
U2l6ZSkucmVzZXQoKTsKLSAgICAgICAgZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSku
cmVzZXQoKTsKKyAgICAgICAgbm9ybWFsRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSku
cmVzZXQoKTsKKyAgICAgICAgaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9y
KGNlbGxTaXplKS5yZXNldCgpOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0g
aW1wcmVjaXNlU3RlcDsgY2VsbFNpemUgPD0gaW1wcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBp
bXByZWNpc2VTdGVwKSB7CiAgICAgICAgIGFsbG9jYXRvckZvcihjZWxsU2l6ZSkucmVzZXQoKTsK
LSAgICAgICAgZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkucmVzZXQoKTsKKyAgICAg
ICAgbm9ybWFsRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkucmVzZXQoKTsKKyAgICAg
ICAgaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5yZXNl
dCgpOwogICAgIH0KIAogICAgIG1fbGFyZ2VBbGxvY2F0b3IucmVzZXQoKTsKLSAgICBtX3N0cnVj
dHVyZUFsbG9jYXRvci5yZXNldCgpOwogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjp2aXNpdFdlYWtT
ZXRzKEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKQpAQCAtMTQ3LDQyICsxNTAsNDQg
QEAgdm9pZCBNYXJrZWRTcGFjZTo6Y2Fub25pY2FsaXplQ2VsbExpdmVuZQogewogICAgIGZvciAo
c2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IHByZWNpc2VDdXRvZmY7
IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKSB7CiAgICAgICAgIGFsbG9jYXRvckZvcihjZWxsU2l6
ZSkuY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOwotICAgICAgICBkZXN0cnVjdG9yQWxs
b2NhdG9yRm9yKGNlbGxTaXplKS5jYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7CisgICAg
ICAgIG5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmNhbm9uaWNhbGl6ZUNl
bGxMaXZlbmVzc0RhdGEoKTsKKyAgICAgICAgaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxs
b2NhdG9yRm9yKGNlbGxTaXplKS5jYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7CiAgICAg
fQogCiAgICAgZm9yIChzaXplX3QgY2VsbFNpemUgPSBpbXByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8
PSBpbXByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IGltcHJlY2lzZVN0ZXApIHsKICAgICAgICAg
YWxsb2NhdG9yRm9yKGNlbGxTaXplKS5jYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7Ci0g
ICAgICAgIGRlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmNhbm9uaWNhbGl6ZUNlbGxM
aXZlbmVzc0RhdGEoKTsKKyAgICAgICAgbm9ybWFsRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxs
U2l6ZSkuY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOworICAgICAgICBpbW1vcnRhbFN0
cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmNhbm9uaWNhbGl6ZUNlbGxM
aXZlbmVzc0RhdGEoKTsKICAgICB9CiAKICAgICBtX2xhcmdlQWxsb2NhdG9yLmNhbm9uaWNhbGl6
ZUNlbGxMaXZlbmVzc0RhdGEoKTsKLSAgICBtX3N0cnVjdHVyZUFsbG9jYXRvci5jYW5vbmljYWxp
emVDZWxsTGl2ZW5lc3NEYXRhKCk7CiB9CiAKIGJvb2wgTWFya2VkU3BhY2U6OmlzUGFnZWRPdXQo
ZG91YmxlIGRlYWRsaW5lKQogewogICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0
ZXA7IGNlbGxTaXplIDw9IHByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKSB7
Ci0gICAgICAgIGlmIChhbGxvY2F0b3JGb3IoY2VsbFNpemUpLmlzUGFnZWRPdXQoZGVhZGxpbmUp
IHx8IGRlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmlzUGFnZWRPdXQoZGVhZGxpbmUp
KQorICAgICAgICBpZiAoYWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0KGRlYWRsaW5l
KSAKKyAgICAgICAgICAgIHx8IG5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUp
LmlzUGFnZWRPdXQoZGVhZGxpbmUpIAorICAgICAgICAgICAgfHwgaW1tb3J0YWxTdHJ1Y3R1cmVE
ZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGNlbGxTaXpl
ID0gaW1wcmVjaXNlU3RlcDsgY2VsbFNpemUgPD0gaW1wcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSAr
PSBpbXByZWNpc2VTdGVwKSB7Ci0gICAgICAgIGlmIChhbGxvY2F0b3JGb3IoY2VsbFNpemUpLmlz
UGFnZWRPdXQoZGVhZGxpbmUpIHx8IGRlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmlz
UGFnZWRPdXQoZGVhZGxpbmUpKQorICAgICAgICBpZiAoYWxsb2NhdG9yRm9yKGNlbGxTaXplKS5p
c1BhZ2VkT3V0KGRlYWRsaW5lKSAKKyAgICAgICAgICAgIHx8IG5vcm1hbERlc3RydWN0b3JBbGxv
Y2F0b3JGb3IoY2VsbFNpemUpLmlzUGFnZWRPdXQoZGVhZGxpbmUpIAorICAgICAgICAgICAgfHwg
aW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1BhZ2Vk
T3V0KGRlYWRsaW5lKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGlm
IChtX2xhcmdlQWxsb2NhdG9yLmlzUGFnZWRPdXQoZGVhZGxpbmUpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIGlmIChtX3N0cnVjdHVyZUFsbG9jYXRvci5pc1BhZ2VkT3V0KGRlYWRsaW5l
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQg
TWFya2VkU3BhY2U6OmZyZWVCbG9jayhNYXJrZWRCbG9jayogYmxvY2spCiB7Ci0gICAgYWxsb2Nh
dG9yRm9yKGJsb2NrKS5yZW1vdmVCbG9jayhibG9jayk7CisgICAgYmxvY2stPmFsbG9jYXRvcigp
LT5yZW1vdmVCbG9jayhibG9jayk7CiAgICAgbV9ibG9ja3MucmVtb3ZlKGJsb2NrKTsKICAgICBp
ZiAoYmxvY2stPmNhcGFjaXR5KCkgPT0gTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSkgewogICAgICAg
ICBtX2hlYXAtPmJsb2NrQWxsb2NhdG9yKCkuZGVhbGxvY2F0ZShNYXJrZWRCbG9jazo6ZGVzdHJv
eShibG9jaykpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5o
CShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NiwxMSArNzYsMTEgQEAgcHVibGljOgogCiAgICAg
TWFya2VkQWxsb2NhdG9yJiBmaXJzdEFsbG9jYXRvcigpOwogICAgIE1hcmtlZEFsbG9jYXRvciYg
YWxsb2NhdG9yRm9yKHNpemVfdCk7Ci0gICAgTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3JGb3Io
TWFya2VkQmxvY2sqKTsKLSAgICBNYXJrZWRBbGxvY2F0b3ImIGRlc3RydWN0b3JBbGxvY2F0b3JG
b3Ioc2l6ZV90KTsKLSAgICB2b2lkKiBhbGxvY2F0ZVdpdGhEZXN0cnVjdG9yKHNpemVfdCk7Cisg
ICAgTWFya2VkQWxsb2NhdG9yJiBpbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JG
b3Ioc2l6ZV90KTsKKyAgICBNYXJrZWRBbGxvY2F0b3ImIG5vcm1hbERlc3RydWN0b3JBbGxvY2F0
b3JGb3Ioc2l6ZV90KTsKKyAgICB2b2lkKiBhbGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKHNp
emVfdCk7CisgICAgdm9pZCogYWxsb2NhdGVXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9y
KHNpemVfdCk7CiAgICAgdm9pZCogYWxsb2NhdGVXaXRob3V0RGVzdHJ1Y3RvcihzaXplX3QpOwot
ICAgIHZvaWQqIGFsbG9jYXRlU3RydWN0dXJlKHNpemVfdCk7CiAgCiAgICAgdm9pZCByZXNldEFs
bG9jYXRvcnMoKTsKIApAQCAtMTMxLDEwICsxMzEsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgRml4
ZWRBcnJheTxNYXJrZWRBbGxvY2F0b3IsIGltcHJlY2lzZUNvdW50PiBpbXByZWNpc2VBbGxvY2F0
b3JzOwogICAgIH07CiAKLSAgICBTdWJzcGFjZSBtX2Rlc3RydWN0b3JTcGFjZTsKKyAgICBTdWJz
cGFjZSBtX25vcm1hbERlc3RydWN0b3JTcGFjZTsKKyAgICBTdWJzcGFjZSBtX2ltbW9ydGFsU3Ry
dWN0dXJlRGVzdHJ1Y3RvclNwYWNlOwogICAgIFN1YnNwYWNlIG1fbm9ybWFsU3BhY2U7CiAgICAg
TWFya2VkQWxsb2NhdG9yIG1fbGFyZ2VBbGxvY2F0b3I7Ci0gICAgTWFya2VkQWxsb2NhdG9yIG1f
c3RydWN0dXJlQWxsb2NhdG9yOwogCiAgICAgSGVhcCogbV9oZWFwOwogICAgIE1hcmtlZEJsb2Nr
U2V0IG1fYmxvY2tzOwpAQCAtMTcxLDI0ICsxNzEsMjMgQEAgaW5saW5lIE1hcmtlZEFsbG9jYXRv
ciYgTWFya2VkU3BhY2U6OmFsbAogICAgIHJldHVybiBtX2xhcmdlQWxsb2NhdG9yOwogfQogCi1p
bmxpbmUgTWFya2VkQWxsb2NhdG9yJiBNYXJrZWRTcGFjZTo6YWxsb2NhdG9yRm9yKE1hcmtlZEJs
b2NrKiBibG9jaykKK2lubGluZSBNYXJrZWRBbGxvY2F0b3ImIE1hcmtlZFNwYWNlOjppbW1vcnRh
bFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3Ioc2l6ZV90IGJ5dGVzKQogewotICAgIGlm
IChibG9jay0+b25seUNvbnRhaW5zU3RydWN0dXJlcygpKQotICAgICAgICByZXR1cm4gbV9zdHJ1
Y3R1cmVBbGxvY2F0b3I7Ci0KLSAgICBpZiAoYmxvY2stPmNlbGxzTmVlZERlc3RydWN0aW9uKCkp
Ci0gICAgICAgIHJldHVybiBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGJsb2NrLT5jZWxsU2l6ZSgp
KTsKLQotICAgIHJldHVybiBhbGxvY2F0b3JGb3IoYmxvY2stPmNlbGxTaXplKCkpOworICAgIEFT
U0VSVChieXRlcyk7CisgICAgaWYgKGJ5dGVzIDw9IHByZWNpc2VDdXRvZmYpCisgICAgICAgIHJl
dHVybiBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0b3Jz
WyhieXRlcyAtIDEpIC8gcHJlY2lzZVN0ZXBdOworICAgIGlmIChieXRlcyA8PSBpbXByZWNpc2VD
dXRvZmYpCisgICAgICAgIHJldHVybiBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNl
LmltcHJlY2lzZUFsbG9jYXRvcnNbKGJ5dGVzIC0gMSkgLyBpbXByZWNpc2VTdGVwXTsKKyAgICBy
ZXR1cm4gbV9sYXJnZUFsbG9jYXRvcjsKIH0KIAotaW5saW5lIE1hcmtlZEFsbG9jYXRvciYgTWFy
a2VkU3BhY2U6OmRlc3RydWN0b3JBbGxvY2F0b3JGb3Ioc2l6ZV90IGJ5dGVzKQoraW5saW5lIE1h
cmtlZEFsbG9jYXRvciYgTWFya2VkU3BhY2U6Om5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3Io
c2l6ZV90IGJ5dGVzKQogewogICAgIEFTU0VSVChieXRlcyk7CiAgICAgaWYgKGJ5dGVzIDw9IHBy
ZWNpc2VDdXRvZmYpCi0gICAgICAgIHJldHVybiBtX2Rlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxs
b2NhdG9yc1soYnl0ZXMgLSAxKSAvIHByZWNpc2VTdGVwXTsKKyAgICAgICAgcmV0dXJuIG1fbm9y
bWFsRGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0b3JzWyhieXRlcyAtIDEpIC8gcHJlY2lz
ZVN0ZXBdOwogICAgIGlmIChieXRlcyA8PSBpbXByZWNpc2VDdXRvZmYpCi0gICAgICAgIHJldHVy
biBtX25vcm1hbFNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbKGJ5dGVzIC0gMSkgLyBpbXByZWNp
c2VTdGVwXTsKKyAgICAgICAgcmV0dXJuIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLmltcHJlY2lz
ZUFsbG9jYXRvcnNbKGJ5dGVzIC0gMSkgLyBpbXByZWNpc2VTdGVwXTsKICAgICByZXR1cm4gbV9s
YXJnZUFsbG9jYXRvcjsKIH0KIApAQCAtMTk3LDMwICsxOTYsMzEgQEAgaW5saW5lIHZvaWQqIE1h
cmtlZFNwYWNlOjphbGxvY2F0ZVdpdGhvdQogICAgIHJldHVybiBhbGxvY2F0b3JGb3IoYnl0ZXMp
LmFsbG9jYXRlKGJ5dGVzKTsKIH0KIAotaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0
ZVdpdGhEZXN0cnVjdG9yKHNpemVfdCBieXRlcykKK2lubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6
YWxsb2NhdGVXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemVfdCBieXRlcykKIHsK
LSAgICByZXR1cm4gZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihieXRlcykuYWxsb2NhdGUoYnl0ZXMp
OworICAgIHJldHVybiBpbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3IoYnl0
ZXMpLmFsbG9jYXRlKGJ5dGVzKTsKIH0KIAotaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxv
Y2F0ZVN0cnVjdHVyZShzaXplX3QgYnl0ZXMpCitpbmxpbmUgdm9pZCogTWFya2VkU3BhY2U6OmFs
bG9jYXRlV2l0aE5vcm1hbERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKQogewotICAgIHJldHVybiBt
X3N0cnVjdHVyZUFsbG9jYXRvci5hbGxvY2F0ZShieXRlcyk7CisgICAgcmV0dXJuIG5vcm1hbERl
c3RydWN0b3JBbGxvY2F0b3JGb3IoYnl0ZXMpLmFsbG9jYXRlKGJ5dGVzKTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBl
IE1hcmtlZFNwYWNlOjpmb3JFYWNoQmxvY2soRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHByZWNpc2VDb3VudDsgKytpKSB7CiAgICAgICAgIG1fbm9ybWFs
U3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgICAg
ICBtX2Rlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVu
Y3Rvcik7CisgICAgICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0b3Jz
W2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKyAgICAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURl
c3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7
CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VDb3VudDsgKytp
KSB7CiAgICAgICAgIG1fbm9ybWFsU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNo
QmxvY2soZnVuY3Rvcik7Ci0gICAgICAgIG1fZGVzdHJ1Y3RvclNwYWNlLmltcHJlY2lzZUFsbG9j
YXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOworICAgICAgICBtX25vcm1hbERlc3RydWN0
b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKyAg
ICAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0
b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKICAgICB9CiAKICAgICBtX2xhcmdlQWxsb2Nh
dG9yLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICBtX3N0cnVjdHVyZUFsbG9jYXRvci5mb3JF
YWNoQmxvY2soZnVuY3Rvcik7CiAKICAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkocmV2
aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01LDYgKzUsNyBAQAogI2luY2x1ZGUgIkNvcGllZFNwYWNl
LmgiCiAjaW5jbHVkZSAiQ29waWVkU3BhY2VJbmxpbmVNZXRob2RzLmgiCiAjaW5jbHVkZSAiSlNB
cnJheS5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5o
IgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzQsNyArNDM0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcihSZWdp
c3RlcklEIG93bmVyLCBSZWdpc3RlcklEIHZhbHVlVGFnLCBSZWdpc3RlcklEIHNjcmF0Y2gsIFJl
Z2lzdGVySUQgc2NyYXRjaDIsIFdyaXRlQmFycmllck1vZGUsIFdyaXRlQmFycmllclVzZUtpbmQp
OwogICAgICAgICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIoSlNDZWxsKiBvd25lciwgUmVnaXN0ZXJJ
RCB2YWx1ZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBXcml0ZUJhcnJpZXJNb2RlLCBXcml0ZUJhcnJp
ZXJVc2VLaW5kKTsKIAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGUsIGJvb2wg
ZGVzdHJ1Y3RvciwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gdm9pZCBlbWl0QWxsb2NhdGVCYXNp
Y0pTT2JqZWN0KFN0cnVjdHVyZVR5cGUsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0
b3JhZ2VQdHIpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGUsIE1hcmtlZEJs
b2NrOjpEZXN0cnVjdG9yVHlwZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gdm9pZCBlbWl0QWxs
b2NhdGVCYXNpY0pTT2JqZWN0KFN0cnVjdHVyZVR5cGUsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdp
c3RlcklEIHN0b3JhZ2VQdHIpOwogICAgICAgICB2b2lkIGVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFn
ZShzaXplX3QsIHB0cmRpZmZfdCBvZmZzZXRGcm9tQmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQpOwog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGVtaXRBbGxvY2F0ZUpTRmluYWxPYmpl
Y3QoVCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIp
OwogICAgICAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTQXJyYXkodW5zaWduZWQgdmFsdWVzUmVnaXN0
ZXIsIHVuc2lnbmVkIGxlbmd0aCwgUmVnaXN0ZXJJRCBjZWxsUmVzdWx0LCBSZWdpc3RlcklEIHN0
b3JhZ2VSZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAkocmV2aXNpb24gMTI4NzEyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwNSwxMSArNDA1LDEzIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFu
ZENvbnN0YW4KICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4
KHNyYykgJiYgZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYykuaXNTdHJpbmcoKSAmJiBhc1N0cmluZyhn
ZXRDb25zdGFudE9wZXJhbmQoc3JjKS5hc0NlbGwoKSktPmxlbmd0aCgpID09IDE7CiB9CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIGJvb2wgZGVzdHJ1Y3RvciwgdHlwZW5hbWUgU3Ry
dWN0dXJlVHlwZT4gaW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KFN0
cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9y
YWdlUHRyKQordGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgTWFya2VkQmxvY2s6OkRlc3Ry
dWN0b3JUeXBlIGRlc3RydWN0b3JUeXBlLCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiBpbmxpbmUg
dm9pZCBKSVQ6OmVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QoU3RydWN0dXJlVHlwZSBzdHJ1Y3R1
cmUsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpCiB7CiAgICAgTWFy
a2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAwOwotICAgIGlmIChkZXN0cnVjdG9yKQotICAgICAg
ICBhbGxvY2F0b3IgPSAmbV9nbG9iYWxEYXRhLT5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhE
ZXN0cnVjdG9yKHNpemVvZihDbGFzc1R5cGUpKTsKKyAgICBpZiAoZGVzdHJ1Y3RvclR5cGUgPT0g
TWFya2VkQmxvY2s6Ok5vcm1hbCkKKyAgICAgICAgYWxsb2NhdG9yID0gJm1fZ2xvYmFsRGF0YS0+
aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoTm9ybWFsRGVzdHJ1Y3RvcihzaXplb2YoQ2xhc3NU
eXBlKSk7CisgICAgZWxzZSBpZiAoZGVzdHJ1Y3RvclR5cGUgPT0gTWFya2VkQmxvY2s6OkltbW9y
dGFsU3RydWN0dXJlKQorICAgICAgICBhbGxvY2F0b3IgPSAmbV9nbG9iYWxEYXRhLT5oZWFwLmFs
bG9jYXRvckZvck9iamVjdFdpdGhJbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3Ioc2l6ZW9mKENs
YXNzVHlwZSkpOwogICAgIGVsc2UKICAgICAgICAgYWxsb2NhdG9yID0gJm1fZ2xvYmFsRGF0YS0+
aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcihzaXplb2YoQ2xhc3NUeXBl
KSk7CiAgICAgbG9hZFB0cigmYWxsb2NhdG9yLT5tX2ZyZWVMaXN0LmhlYWQsIHJlc3VsdCk7CkBA
IC00MjgsNyArNDMwLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgYm9vbCBkZXN0
cgogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2NhdGVK
U0ZpbmFsT2JqZWN0KFQgc3RydWN0dXJlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBz
Y3JhdGNoKQogewotICAgIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3Q8SlNGaW5hbE9iamVjdCwg
ZmFsc2UsIFQ+KHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoKTsKKyAgICBlbWl0QWxsb2NhdGVC
YXNpY0pTT2JqZWN0PEpTRmluYWxPYmplY3QsIE1hcmtlZEJsb2NrOjpOb25lLCBUPihzdHJ1Y3R1
cmUsIHJlc3VsdCwgc2NyYXRjaCk7CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRl
QmFzaWNTdG9yYWdlKHNpemVfdCBzaXplLCBwdHJkaWZmX3Qgb2Zmc2V0RnJvbUJhc2UsIFJlZ2lz
dGVySUQgcmVzdWx0KQpAQCAtNDUzLDcgKzQ1NSw3IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFs
bG9jYXRlSlNBcnJheSh1bnMKICAgICBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UoaW5pdGlhbFN0
b3JhZ2UsIHNpemVvZihJbmRleGluZ0hlYWRlciksIHN0b3JhZ2VSZXN1bHQpOwogCiAgICAgLy8g
QWxsb2NhdGUgdGhlIGNlbGwgZm9yIHRoZSBhcnJheS4KLSAgICBlbWl0QWxsb2NhdGVCYXNpY0pT
T2JqZWN0PEpTQXJyYXksIGZhbHNlPihUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmUoKSksIGNlbGxSZXN1bHQsIHN0b3JhZ2VQdHIpOworICAg
IGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3Q8SlNBcnJheSwgTWFya2VkQmxvY2s6Ok5vbmU+KFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZSgp
KSwgY2VsbFJlc3VsdCwgc3RvcmFnZVB0cik7CiAKICAgICAvLyBTdG9yZSBhbGwgdGhlIG5lY2Vz
c2FyeSBpbmZvIGluIHRoZSBBcnJheVN0b3JhZ2UuCiAgICAgc3RvcmUzMihJbW0zMihsZW5ndGgp
LCBBZGRyZXNzKHN0b3JhZ2VSZXN1bHQsIEFycmF5U3RvcmFnZTo6bGVuZ3RoT2Zmc2V0KCkpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkocmV2
aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChBcmd1bWVudHMpOwogCi1jb25zdCBDbGFzc0luZm8g
QXJndW1lbnRzOjpzX2luZm8gPSB7ICJBcmd1bWVudHMiLCAmSlNOb25GaW5hbE9iamVjdDo6c19p
bmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFyZ3VtZW50cykgfTsKK2NvbnN0IENsYXNz
SW5mbyBBcmd1bWVudHM6OnNfaW5mbyA9IHsgIkFyZ3VtZW50cyIsICZCYXNlOjpzX2luZm8sIDAs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoQXJndW1lbnRzKSB9OwogCiB2b2lkIEFyZ3VtZW50czo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHJldmlzaW9uIDEy
ODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAj
aW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3Qu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNTcsOSArNTgsOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGNhbGxlZTsKICAgICB9OwogCi0g
ICAgY2xhc3MgQXJndW1lbnRzIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworICAgIGNsYXNz
IEFyZ3VtZW50cyA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgcHVibGljOgot
ICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICAgICAgdHlwZWRlZiBK
U0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwogCiAgICAgICAgIHN0YXRpYyBBcmd1bWVudHMqIGNy
ZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAg
ICAgICB7CkBAIC0xNTQsMTMgKzE1NSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAKICAg
ICBpbmxpbmUgQXJndW1lbnRzOjpBcmd1bWVudHMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCi0gICAg
ICAgIDogSlNOb25GaW5hbE9iamVjdChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY2FsbEZyYW1l
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFyZ3VtZW50c1N0cnVjdHVyZSgpKQorICAgICAgICA6
IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjYWxsRnJhbWUt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJndW1lbnRzU3RydWN0dXJlKCkpCiAgICAgICAgICwg
ZChhZG9wdFB0cihuZXcgQXJndW1lbnRzRGF0YSkpCiAgICAgewogICAgIH0KIAogICAgIGlubGlu
ZSBBcmd1bWVudHM6OkFyZ3VtZW50cyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgTm9QYXJhbWV0ZXJz
VHlwZSkKLSAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgp
LCBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJndW1lbnRzU3RydWN0dXJlKCkp
CisgICAgICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCks
IGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcmd1bWVudHNTdHJ1Y3R1cmUoKSkK
ICAgICAgICAgLCBkKGFkb3B0UHRyKG5ldyBBcmd1bWVudHNEYXRhKSkKICAgICB7CiAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBl
LmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChFcnJvclByb3RvdHlwZSk7
CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihFcnJvclByb3RvdHlwZSk7CiAKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9GdW5jVG9TdHJpbmcoRXhl
Y1N0YXRlKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDYgKzI1Nyw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogI2VuZGlmCiAgICAgfTsKIAorICAgIEhBU19JTU1PUlRBTF9TVFJVQ1RVUkUoRXhl
Y3V0YWJsZUJhc2UpOworCiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZSA6IHB1YmxpYyBFeGVj
dXRhYmxlQmFzZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC0zMzksNiArMzQxLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEludHJpbnNpYyBtX2ludHJpbnNpYzsKICAgICB9OwogCisgICAgSEFT
X0lNTU9SVEFMX1NUUlVDVFVSRShOYXRpdmVFeGVjdXRhYmxlKTsKKwogICAgIGNsYXNzIFNjcmlw
dEV4ZWN1dGFibGUgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAgIHB1YmxpYzoKICAgICAg
ICAgdHlwZWRlZiBFeGVjdXRhYmxlQmFzZSBCYXNlOwpAQCAtNDY3LDYgKzQ3MSw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBPd25QdHI8RXZhbENvZGVCbG9jaz4gbV9ldmFsQ29kZUJsb2Nr
OwogICAgIH07CiAKKyAgICBIQVNfSU1NT1JUQUxfU1RSVUNUVVJFKEV2YWxFeGVjdXRhYmxlKTsK
KwogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUg
ewogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1Ymxp
YzoKQEAgLTUzNCw2ICs1NDAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3duUHRyPFBy
b2dyYW1Db2RlQmxvY2s+IG1fcHJvZ3JhbUNvZGVCbG9jazsKICAgICB9OwogCisgICAgSEFTX0lN
TU9SVEFMX1NUUlVDVFVSRShQcm9ncmFtRXhlY3V0YWJsZSk7CisKICAgICBjbGFzcyBGdW5jdGlv
bkV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBA
IC03NTUsNiArNzYzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdyaXRlQmFycmllcjxT
aGFyZWRTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZTsKICAgICB9OwogCisgICAgSEFTX0lNTU9S
VEFMX1NUUlVDVFVSRShGdW5jdGlvbkV4ZWN1dGFibGUpOworCiAgICAgaW5saW5lIEpTRnVuY3Rp
b246OkpTRnVuY3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQogICAgICAgICA6IEJhc2UoZ2xvYmFsRGF0
YSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5mdW5jdGlvblN0cnVjdHVyZSgpKQogICAgICAgICAs
IG1fZXhlY3V0YWJsZShnbG9iYWxEYXRhLCB0aGlzLCBleGVjdXRhYmxlKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAJKHJl
dmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMCArMzIsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEludGVybmFsRnVuY3Rpb24pOwogQVNT
RVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSW50ZXJuYWxGdW5jdGlvbik7CiAKLWNvbnN0IENs
YXNzSW5mbyBJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZKU05vbkZp
bmFsT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50ZXJuYWxGdW5j
dGlvbikgfTsKK2NvbnN0IENsYXNzSW5mbyBJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8gPSB7ICJG
dW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50ZXJu
YWxGdW5jdGlvbikgfTsKIAogSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICA6IEpT
Tm9uRmluYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKKyAg
ICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBzdHJ1
Y3R1cmUpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjQs
MTYgKzI0LDE2IEBACiAjaWZuZGVmIEludGVybmFsRnVuY3Rpb25faAogI2RlZmluZSBJbnRlcm5h
bEZ1bmN0aW9uX2gKIAotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAKLSAgICBjbGFzcyBJbnRlcm5hbEZ1
bmN0aW9uIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworICAgIGNsYXNzIEludGVybmFsRnVu
Y3Rpb24gOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgICAgIHR5cGVkZWYgSlNEZXN0
cnVjdGlibGVPYmplY3QgQmFzZTsKIAogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25z
dCBDbGFzc0luZm8gc19pbmZvOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKKyAgICBjbGFzcyBKU0Rlc3RydWN0aWJsZU9iamVjdDsKICAgICBjbGFzcyBKU0ds
b2JhbE9iamVjdDsKICAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
UHJvcGVydHlEZXNjcmlwdG9yOwpAQCAtMzIxLDYgKzMyMiwyMyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICB9OwogI2VuZGlmCiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBUPgorICAgIHN0cnVjdCBIYXNJ
bW1vcnRhbFN0cnVjdHVyZSB7CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFs
c2U7CisgICAgfTsKKworI2RlZmluZSBIQVNfSU1NT1JUQUxfU1RSVUNUVVJFKGtsYXNzKSBcCisg
ICAgdGVtcGxhdGUgPD4gXAorICAgIHN0cnVjdCBIYXNJbW1vcnRhbFN0cnVjdHVyZTxrbGFzcz4g
e1wKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlO1wKKyAgICB9CisKKyNk
ZWZpbmUgTkVFRFNfREVTVFJVQ1RPUihrbGFzcywgdikgXAorICAgIHRlbXBsYXRlIDw+IFwKKyAg
ICBzdHJ1Y3QgTmVlZHNEZXN0cnVjdG9yPGtsYXNzPiB7XAorICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCB2YWx1ZSA9IHY7XAorICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAg
dm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmIGhlYXApCiAgICAgewpAQCAtMzI5LDEyICszNDcsMTIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGhlYXAuZ2xvYmFsRGF0YSgpLT5zZXRJbml0aWFs
aXppbmdPYmplY3RDbGFzcygmVDo6c19pbmZvKTsKICNlbmRpZgogICAgICAgICBKU0NlbGwqIHJl
c3VsdCA9IDA7Ci0gICAgICAgIGlmIChOZWVkc0Rlc3RydWN0b3I8VD46OnZhbHVlKQotICAgICAg
ICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oaGVhcC5hbGxvY2F0ZVdpdGhEZXN0
cnVjdG9yKHNpemVvZihUKSkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChU
OjpzX2luZm8ubWV0aG9kVGFibGUuZGVzdHJveSA9PSBKU0NlbGw6OmRlc3Ryb3kpOworICAgICAg
ICBpZiAoTmVlZHNEZXN0cnVjdG9yPFQ+Ojp2YWx1ZSAmJiBIYXNJbW1vcnRhbFN0cnVjdHVyZTxU
Pjo6dmFsdWUpCisgICAgICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPihoZWFw
LmFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvcihzaXplb2YoVCkpKTsKKyAg
ICAgICAgZWxzZSBpZiAoTmVlZHNEZXN0cnVjdG9yPFQ+Ojp2YWx1ZSAmJiAhSGFzSW1tb3J0YWxT
dHJ1Y3R1cmU8VD46OnZhbHVlKQorICAgICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8SlND
ZWxsKj4oaGVhcC5hbGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKHNpemVvZihUKSkpOworICAg
ICAgICBlbHNlCiAgICAgICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPihoZWFw
LmFsbG9jYXRlV2l0aG91dERlc3RydWN0b3Ioc2l6ZW9mKFQpKSk7Ci0gICAgICAgIH0KICAgICAg
ICAgcmVzdWx0LT5jbGVhclN0cnVjdHVyZSgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KQEAgLTM0OCw4ICszNjYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGhlYXAuZ2xv
YmFsRGF0YSgpLT5zZXRJbml0aWFsaXppbmdPYmplY3RDbGFzcygmVDo6c19pbmZvKTsKICNlbmRp
ZgogICAgICAgICBKU0NlbGwqIHJlc3VsdCA9IDA7Ci0gICAgICAgIGlmIChOZWVkc0Rlc3RydWN0
b3I8VD46OnZhbHVlKQotICAgICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4o
aGVhcC5hbGxvY2F0ZVdpdGhEZXN0cnVjdG9yKHNpemUpKTsKKyAgICAgICAgaWYgKE5lZWRzRGVz
dHJ1Y3RvcjxUPjo6dmFsdWUgJiYgSGFzSW1tb3J0YWxTdHJ1Y3R1cmU8VD46OnZhbHVlKQorICAg
ICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oaGVhcC5hbGxvY2F0ZVdpdGhJ
bW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3Ioc2l6ZSkpOworICAgICAgICBlbHNlIGlmIChOZWVk
c0Rlc3RydWN0b3I8VD46OnZhbHVlICYmICFIYXNJbW1vcnRhbFN0cnVjdHVyZTxUPjo6dmFsdWUp
CisgICAgICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPihoZWFwLmFsbG9jYXRl
V2l0aE5vcm1hbERlc3RydWN0b3Ioc2l6ZSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IEFTU0VSVChUOjpzX2luZm8ubWV0aG9kVGFibGUuZGVzdHJveSA9PSBKU0NlbGw6OmRlc3Ryb3kp
OwogICAgICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oaGVhcC5hbGxvY2F0
ZVdpdGhvdXREZXN0cnVjdG9yKHNpemUpKTsKQEAgLTM2OSw3ICszODksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgQVNTRVJUKCFmcm9tIHx8IGZyb20tPkpTQ2VsbDo6aW5oZXJpdHMoJldU
Rjo6UmVtb3ZlUG9pbnRlcjxUbz46OlR5cGU6OnNfaW5mbykpOwogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VG8+KGZyb20pOwogICAgIH0KLQorICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFRvPgogICAgIGlubGluZSBUbyBqc0Nhc3QoSlNWYWx1ZSBmcm9tKQogICAgIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmpl
Y3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVz
dHJ1Y3RpYmxlT2JqZWN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEgQEAKKyNpZm5kZWYg
SlNEZXN0cnVjdGlibGVPYmplY3RfaAorI2RlZmluZSBKU0Rlc3RydWN0aWJsZU9iamVjdF9oCisK
KyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IENsYXNz
SW5mbzsKKworY2xhc3MgSlNEZXN0cnVjdGlibGVPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAg
ICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZv
OyB9CisKK3Byb3RlY3RlZDoKKyAgICBKU0Rlc3RydWN0aWJsZU9iamVjdChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9
IDApCisgICAgICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGJ1
dHRlcmZseSkKKyAgICAgICAgLCBtX2NsYXNzSW5mbyhzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY2xhc3NJbmZvKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbzsKK307CisKK2lubGluZSBjb25zdCBDbGFz
c0luZm8qIEpTQ2VsbDo6Y2xhc3NJbmZvKCkgY29uc3QKK3sKKyAgICBpZiAoTWFya2VkQmxvY2s6
OmJsb2NrRm9yKHRoaXMpLT5kZXN0cnVjdG9yVHlwZSgpID09IE1hcmtlZEJsb2NrOjpOb3JtYWwp
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0Rlc3RydWN0aWJsZU9iamVjdCo+
KHRoaXMpLT5jbGFzc0luZm8oKTsKKyNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKKyAgICByZXR1
cm4gbV9zdHJ1Y3R1cmUudW52YWxpZGF0ZWRHZXQoKS0+Y2xhc3NJbmZvKCk7CisjZWxzZQorICAg
IHJldHVybiBtX3N0cnVjdHVyZS0+Y2xhc3NJbmZvKCk7CisjZW5kaWYKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKKyNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjcsNyArMjI3LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90
bwogICAgIG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2FyZ3VtZW50
c1N0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBBcmd1bWVudHM6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpKSk7CiAgICAgbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlLnNldChleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMsIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBt
X2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpT
Q2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9jYWxs
YmFja09iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0NhbGxi
YWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmds
b2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKIAogICAgIG1fYXJy
YXlQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgQXJyYXlQcm90b3R5cGU6
OmNyZWF0ZShleGVjLCB0aGlzLCBBcnJheVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV9h
cnJheVN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0FycmF5OjpjcmVh
dGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX2FycmF5UHJvdG90eXBlLmdl
dCgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIEpTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QgQmFzZTsKICAgICAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0
cjxPcGFxdWVKU1dlYWtPYmplY3RNYXA+ID4gV2Vha01hcFNldDsKIAogICAgICAgICBzdHJ1Y3Qg
SlNHbG9iYWxPYmplY3RSYXJlRGF0YSB7CkBAIC0xNjYsMTQgKzE2NSwxNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIGlmIChtX3JhcmVEYXRhKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIG1fcmFyZURhdGEgPSBhZG9wdFB0cihuZXcgSlNHbG9iYWxPYmplY3RS
YXJlRGF0YSk7Ci0gICAgICAgICAgICBIZWFwOjpoZWFwKHRoaXMpLT5hZGRGaW5hbGl6ZXIodGhp
cywgY2xlYXJSYXJlRGF0YSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgcHVibGljOgorICAg
ICAgICB0eXBlZGVmIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgQmFzZTsKKwogICAgICAgICBz
dGF0aWMgSlNHbG9iYWxPYmplY3QqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHbG9iYWxPYmpl
Y3Q+KGdsb2JhbERhdGEuaGVhcCkpIEpTR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSk7CiAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEp
OworICAgICAgICAgICAgZ2xvYmFsRGF0YS5oZWFwLmFkZEZpbmFsaXplcihnbG9iYWxPYmplY3Qs
IGRlc3Ryb3kpOwogICAgICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdDsKICAgICAgICAgfQog
CkBAIC0zNjgsNiArMzY5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGNsZWFyUmFyZURhdGEoSlNDZWxsKik7CiAgICAgfTsKIAorICAg
IC8vIFdlIGRvbid0IG5lZWQgdG8gYmUgYWxsb2NhdGVkIGluIHRoZSBkZXN0cnVjdG9yIHNwYWNl
IGJlY2F1c2Ugd2UgdXNlIGEgZmluYWxpemVyIGluc3RlYWQuCisgICAgTkVFRFNfREVTVFJVQ1RP
UihKU0dsb2JhbE9iamVjdCwgZmFsc2UpOworCiAgICAgSlNHbG9iYWxPYmplY3QqIGFzR2xvYmFs
T2JqZWN0KEpTVmFsdWUpOwogCiAgICAgaW5saW5lIEpTR2xvYmFsT2JqZWN0KiBhc0dsb2JhbE9i
amVjdChKU1ZhbHVlIHZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxUaGlzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxUaGlzLmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsVGhpcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYs
MTMgQEAKICNpZm5kZWYgSlNHbG9iYWxUaGlzX2gKICNkZWZpbmUgSlNHbG9iYWxUaGlzX2gKIAot
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEpTR2xvYmFsVGhpcyA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKK2NsYXNzIEpTR2xvYmFsVGhpcyA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9i
amVjdCB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAg
dHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwogCiAgICAgc3RhdGljIEpTR2xvYmFs
VGhpcyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgewpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBK
U0dsb2JhbFRoaXMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKLSAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKKyAg
ICAgICAgOiBKU0Rlc3RydWN0aWJsZU9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAgICAg
ewogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDQsNiArMTA0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE93bkFy
cmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IG1fanNTdHJpbmdzOwogICAgIH07CiAKKyAg
ICBIQVNfSU1NT1JUQUxfU1RSVUNUVVJFKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOworCiAgICAg
aW5saW5lIHZvaWQgU3RydWN0dXJlOjpzZXRFbnVtZXJhdGlvbkNhY2hlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNoZSkKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghaXNEaWN0aW9uYXJ5KCkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw2ICszNCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VM
TChKU1Njb3BlKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTU2NvcGUpOwogCiB2
b2lkIEpTU2NvcGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAko
cmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIEpTUm9wZVN0cmluZyoganNTdHJpbmdCdWlsZGVyKEpTR2xvYmFsRGF0YSopOwogCisgICAg
SEFTX0lNTU9SVEFMX1NUUlVDVFVSRShKU1N0cmluZyk7CisKICAgICBjbGFzcyBKU1N0cmluZyA6
IHB1YmxpYyBKU0NlbGwgewogICAgIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsK
QEAgLTMyMSw2ICszMjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbXV0YWJsZSBGaXhl
ZEFycmF5PFdyaXRlQmFycmllcjxKU1N0cmluZz4sIHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoPiBt
X2ZpYmVyczsKICAgICB9OwogCisgICAgSEFTX0lNTU9SVEFMX1NUUlVDVFVSRShKU1JvcGVTdHJp
bmcpOworCiAgICAgSlNTdHJpbmcqIGFzU3RyaW5nKEpTVmFsdWUpOwogCiAgICAgaW5saW5lIEpT
U3RyaW5nKiBhc1N0cmluZyhKU1ZhbHVlIHZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgJKHJldmlzaW9uIDEyODcxMikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMiwxNSArMjIsMTUgQEAKICNpZm5kZWYgSlNXcmFwcGVyT2JqZWN0X2gKICNk
ZWZpbmUgSlNXcmFwcGVyT2JqZWN0X2gKIAotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICAvLyBU
aGlzIGNsYXNzIGlzIHVzZWQgYXMgYSBiYXNlIGZvciBjbGFzc2VzIHN1Y2ggYXMgU3RyaW5nLAog
ICAgIC8vIE51bWJlciwgQm9vbGVhbiBhbmQgRGF0ZSB3aGljaCBhcmUgd3JhcHBlcnMgZm9yIHBy
aW1pdGl2ZSB0eXBlcy4KLSAgICBjbGFzcyBKU1dyYXBwZXJPYmplY3QgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CisgICAgY2xhc3MgSlNXcmFwcGVyT2JqZWN0IDogcHVibGljIEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9i
amVjdCBCYXNlOworICAgICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAK
ICAgICAgICAgSlNWYWx1ZSBpbnRlcm5hbFZhbHVlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0
SW50ZXJuYWxWYWx1ZShKU0dsb2JhbERhdGEmLCBKU1ZhbHVlKTsKQEAgLTUxLDcgKzUxLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGlubGluZSBKU1dyYXBwZXJPYmplY3Q6OkpT
V3JhcHBlck9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQotICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQor
ICAgICAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAg
ICB7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRo
T2JqZWN0LmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWF0aE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE1hdGhPYmplY3QpOwor
QVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoTWF0aE9iamVjdCk7CiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBYnMoRXhlY1N0YXRlKik7CiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQUNvcyhFeGVj
U3RhdGUqKTsKQEAgLTU5LDkgKzYwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aAogCiBuYW1lc3BhY2UgSlNDIHsKIAotQVNTRVJUX0hBU19UUklWSUFMX0RFU1RS
VUNUT1IoTWF0aE9iamVjdCk7Ci0KLWNvbnN0IENsYXNzSW5mbyBNYXRoT2JqZWN0OjpzX2luZm8g
PSB7ICJNYXRoIiwgJkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjptYXRo
VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoTWF0aE9iamVjdCkgfTsKK2NvbnN0IENsYXNzSW5m
byBNYXRoT2JqZWN0OjpzX2luZm8gPSB7ICJNYXRoIiwgJkJhc2U6OnNfaW5mbywgMCwgRXhlY1N0
YXRlOjptYXRoVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoTWF0aE9iamVjdCkgfTsKIAogLyog
U291cmNlIGZvciBNYXRoT2JqZWN0Lmx1dC5oCiBAYmVnaW4gbWF0aFRhYmxlCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYW1lSW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYW1lSW5zdGFuY2UuaAkocmV2aXNpb24gMTI4
NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmFtZUluc3RhbmNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDE0ICsyNiwxNCBAQAogI2lmbmRlZiBOYW1lSW5zdGFuY2VfaAog
I2RlZmluZSBOYW1lSW5zdGFuY2VfaAogCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRl
ICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIlByaXZhdGVOYW1lLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCi1jbGFzcyBOYW1lSW5zdGFuY2UgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CitjbGFzcyBOYW1lSW5zdGFuY2UgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qg
ewogcHVibGljOgotICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHR5cGVk
ZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0lu
Zm8gc19pbmZvOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAko
cmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgT3duUHRyPFlhcnI6OkJ5dGVjb2RlUGF0dGVybj4gbV9yZWdFeHBCeXRlY29kZTsKICAg
ICB9OwogCisgICAgSEFTX0lNTU9SVEFMX1NUUlVDVFVSRShSZWdFeHApOworCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIFJlZ0V4cF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDggKzUwLDkgQEAgc3RhdGljIEpTVmFsdWUgcmVnRXhwT2JqZWN0U291cmNlKEV4
ZWNTdAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoUmVnRXhw
T2JqZWN0KTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFJlZ0V4cE9iamVjdCk7CiAK
LWNvbnN0IENsYXNzSW5mbyBSZWdFeHBPYmplY3Q6OnNfaW5mbyA9IHsgIlJlZ0V4cCIsICZKU05v
bkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6cmVnRXhwVGFibGUsIENSRUFURV9N
RVRIT0RfVEFCTEUoUmVnRXhwT2JqZWN0KSB9OworY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cE9iamVj
dDo6c19pbmZvID0geyAiUmVnRXhwIiwgJkJhc2U6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpyZWdF
eHBUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShSZWdFeHBPYmplY3QpIH07CiAKIC8qIFNvdXJj
ZSBmb3IgUmVnRXhwT2JqZWN0Lmx1dC5oCiBAYmVnaW4gcmVnRXhwVGFibGUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgJ
KHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJz
ZUFycmF5VmFsdWVNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDYgKzEyOCw4IEBAIHByaXZh
dGU6CiAgICAgc2l6ZV90IG1fcmVwb3J0ZWRDYXBhY2l0eTsKIH07CiAKK0hBU19JTU1PUlRBTF9T
VFJVQ1RVUkUoU3BhcnNlQXJyYXlWYWx1ZU1hcCk7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gU3BhcnNlQXJyYXlWYWx1ZU1hcF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2NCwxNiAr
NDY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhdGljRnVuY3Rp
b25SZWlmaWVkOwogICAgIH07CiAKLSAgICB0ZW1wbGF0ZSA8PiBpbmxpbmUgdm9pZCogYWxsb2Nh
dGVDZWxsPFN0cnVjdHVyZT4oSGVhcCYgaGVhcCkKLSAgICB7Ci0jaWYgRU5BQkxFKEdDX1ZBTElE
QVRJT04pCi0gICAgICAgIEFTU0VSVCghaGVhcC5nbG9iYWxEYXRhKCktPmlzSW5pdGlhbGl6aW5n
T2JqZWN0KCkpOwotICAgICAgICBoZWFwLmdsb2JhbERhdGEoKS0+c2V0SW5pdGlhbGl6aW5nT2Jq
ZWN0Q2xhc3MoJlN0cnVjdHVyZTo6c19pbmZvKTsKLSNlbmRpZgotICAgICAgICBKU0NlbGwqIHJl
c3VsdCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGhlYXAuYWxsb2NhdGVTdHJ1Y3R1cmUoc2l6ZW9m
KFN0cnVjdHVyZSkpKTsKLSAgICAgICAgcmVzdWx0LT5jbGVhclN0cnVjdHVyZSgpOwotICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgIH0KKyAgICBIQVNfSU1NT1JUQUxfU1RSVUNUVVJFKFN0cnVj
dHVyZSk7CiAKICAgICBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNyZWF0ZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8sIGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQogICAgIHsKQEAgLTYxOSwxNSArNjEw
LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZSB8fCAhZ2xv
YmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOwogICAgIH0KIAotICAgIGlubGluZSBjb25zdCBD
bGFzc0luZm8qIEpTQ2VsbDo6Y2xhc3NJbmZvKCkgY29uc3QKLSAgICB7Ci0jaWYgRU5BQkxFKEdD
X1ZBTElEQVRJT04pCi0gICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS51bnZhbGlkYXRlZEdldCgp
LT5jbGFzc0luZm8oKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCk7Ci0jZW5kaWYKLSAgICB9Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
U3RydWN0dXJlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gPiBtX3ZlY3RvcjsKICAgICB9OwogCisgICAgSEFTX0lNTU9SVEFMX1NUUlVDVFVSRShT
dHJ1Y3R1cmVDaGFpbik7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU3RydWN0
dXJlQ2hhaW5faApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNiArMzI3LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBTaGFyZWRTeW1ib2xUYWJsZSA6IHB1YmxpYyBKU0NlbGws
IHB1YmxpYyBTeW1ib2xUYWJsZSB7CiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTQ2Vs
bCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBTaGFyZWRTeW1ib2xUYWJsZSogY3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgU2hhcmVkU3ltYm9s
VGFibGUqIHNoYXJlZFN5bWJvbFRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2hh
cmVkU3ltYm9sVGFibGU+KGdsb2JhbERhdGEuaGVhcCkpIFNoYXJlZFN5bWJvbFRhYmxlKGdsb2Jh
bERhdGEpOwpAQCAtMzgwLDcgKzM4Miw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQg
bV9jYXB0dXJlU3RhcnQ7CiAgICAgICAgIGludCBtX2NhcHR1cmVFbmQ7CiAgICAgfTsKLSAgICAK
KyAgIAorICAgIEhBU19JTU1PUlRBTF9TVFJVQ1RVUkUoU2hhcmVkU3ltYm9sVGFibGUpOworIAog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBTeW1ib2xUYWJsZV9oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0wOS0xNiAgTWFyayBIYWhuZW5iZXJnICA8
bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIERlbGF5ZWQgc3RydWN0dXJlIHN3ZWVw
IGNhbiBsZWFrIHN0cnVjdHVyZXMgd2l0aG91dCBib3VuZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1NDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGdldHMgcmlkIG9mIHRoZSBzZXBh
cmF0ZSBTdHJ1Y3R1cmUgYWxsb2NhdG9yIGluIHRoZSBNYXJrZWRTcGFjZSBhbmQgYWRkcyB0d28g
bmV3IGRlc3RydWN0b3Itb25seQorICAgICAgICBhbGxvY2F0b3JzLiBXZSBub3cgaGF2ZSBzZXBh
cmF0ZSBhbGxvY2F0b3JzIGZvciBvdXIgdGhyZWUgdHlwZXMgb2Ygb2JqZWN0czogdGhvc2Ugb2Jq
ZWN0cyB3aXRoIG5vIGRlc3RydWN0b3JzLAorICAgICAgICB0aG9zZSBvYmplY3RzIHdpdGggZGVz
dHJ1Y3RvcnMgYW5kIHdpdGggaW1tb3J0YWwgc3RydWN0dXJlcywgYW5kIHRob3NlIG9iamVjdHMg
d2l0aCBkZXN0cnVjdG9ycyB0aGF0IGRvbid0IGhhdmUgCisgICAgICAgIGltbW9ydGFsIHN0cnVj
dHVyZXMuIEFsbCBvZiB0aGUgb2JqZWN0cyBvZiB0aGUgdGhpcmQgdHlwZSAoZGVzdHJ1Y3RvcnMg
d2l0aG91dCBpbW1vcnRhbCBzdHJ1Y3R1cmVzKSBub3cgCisgICAgICAgIGluaGVyaXQgZnJvbSBh
IG5ldyBjbGFzcyBuYW1lZCBKU0Rlc3RydWN0aWJsZU9iamVjdCAod2hpY2ggaW4gdHVybiBpcyBh
IHN1YmNsYXNzIG9mIEpTTm9uRmluYWxPYmplY3QpLCB3aGljaCBzdG9yZXMgCisgICAgICAgIHRo
ZSBDbGFzc0luZm8gZm9yIHRoZXNlIGNsYXNzZXMgYXQgYSBmaXhlZCBvZmZzZXQgZm9yIHNhZmUg
cmV0cmlldmFsIGR1cmluZyBzd2VlcGluZy9kZXN0cnVjdGlvbi4KKworICAgICAgICBObyBuZXcg
dGVzdHMuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTRGVzdHJ1Y3Rh
YmxlT2JqZWN0Lmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5o
OiBJbmhlcml0cyBmcm9tIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LgorICAgICAgICAoSlNET01XcmFw
cGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV3JhcHBlcjo6SlNET01XcmFwcGVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbTogQWRkIGZpbmFsaXpl
cnMgdG8gYW55dGhpbmcgdGhhdCBpbmhlcml0cyBmcm9tIEpTR2xvYmFsT2JqZWN0LAorICAgICAg
ICBlLmcuIEpTRE9NV2luZG93IGFuZCBKU1dvcmtlckNvbnRleHRzLiBGb3IgdGhvc2UgY2xhc3Nl
cyB3ZSBhbHNvIG5lZWQgdG8gdXNlIHRoZSBORUVEU19ERVNUUlVDVE9SIG1hY3JvLgorICAgICAg
ICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5o
OiBJbmhlcml0IGZyb20gSlNEZXN0cnVjdGlibGVPYmplY3QuCisgICAgICAgIChPYmpjRmFsbGJh
Y2tPYmplY3RJbXApOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAg
ICAgICAgKEJpbmRpbmdzKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09i
amVjdEltcDo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGlt
ZV9hcnJheS5jcHA6IFVzZSBhIGZpbmFsaXplciBzbyB0aGF0IEpTQXJyYXkgaXNuJ3QgZm9yY2Vk
IHRvIGluaGVyaXQgZnJvbSBKU0Rlc3RydWN0aWJsZU9iamVjdC4KKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6ZGVzdHJveSk6CisgICAgICAgICogYnJpZGdlL3J1
bnRpbWVfYXJyYXkuaDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuY3BwOiBJbmhlcml0
IGZyb20gSlNEZXN0cnVjdGlibGVPYmplY3QuCisgICAgICAgIChCaW5kaW5ncyk6CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpSdW50aW1lT2JqZWN0KToKKyAgICAgICAg
KiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKyAgICAgICAgKFJ1bnRpbWVPYmplY3QpOgorCiAy
MDEyLTA5LTE2ICBLYWxldiBMZW1iZXIgIDxrYWxldmxlbWJlckBnbWFpbC5jb20+CiAKICAgICAg
ICAgW0dUS10gTWlzc2luZyBkbGxleHBvcnQgY2F1c2luZyBsaW5raW5nIGVycm9ycyBvbiBXaW5k
b3dzIHBsYXRmb3JtCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50
aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU0Rlc3Ry
dWN0aWJsZU9iamVjdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2Vi
Q29yZV9GV0RfSlNEZXN0cnVjdGlibGVPYmplY3RfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9KU0Rl
c3RydWN0aWJsZU9iamVjdF9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGli
bGVPYmplY3QuaD4KKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XcmFwcGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XcmFwcGVyLmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywyMCArMjMsMjIgQEAKICNk
ZWZpbmUgSlNET01XcmFwcGVyX2gKIAogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCi0j
aW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNEZXN0cnVj
dGlibGVPYmplY3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwogCi1jbGFzcyBKU0RPTVdyYXBwZXIgOiBwdWJsaWMgSlNDOjpKU05vbkZp
bmFsT2JqZWN0IHsKK2NsYXNzIEpTRE9NV3JhcHBlciA6IHB1YmxpYyBKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0IHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QgQmFzZTsKKwogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdCB7
IHJldHVybiBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KEpTQzo6SlNOb25GaW5hbE9i
amVjdDo6Z2xvYmFsT2JqZWN0KCkpOyB9CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGdsb2JhbE9iamVjdCgpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAogcHJvdGVjdGVkOgogICAgIEpTRE9NV3JhcHBlcihK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIAotICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRh
KCksIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU0Rlc3RydWN0aWJsZU9iamVjdChnbG9iYWxPYmpl
Y3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDEyODcxMikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC03NDIsNiArNzQyLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsRGF0YS5oZWFwKSkgJHtjbGFzc05hbWV9KGds
b2JhbERhdGEsIHN0cnVjdHVyZSwgaW1wbCwgd2luZG93U2hlbGwpO1xuIik7CiAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0
YSwgd2luZG93U2hlbGwpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
ICAgIGdsb2JhbERhdGEuaGVhcC5hZGRGaW5hbGl6ZXIocHRyLCBkZXN0cm95KTtcbiIpOwogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKICAgICB9IGVsc2lmICgkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQifSkgewpAQCAtNzQ5
LDYgKzc1MCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAk
Y2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05h
bWU+KGdsb2JhbERhdGEuaGVhcCkpICR7Y2xhc3NOYW1lfShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUs
IGltcGwpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICAgICAgZ2xvYmFsRGF0YS5oZWFwLmFkZEZpbmFsaXplcihwdHIsIGRlc3Ryb3kp
O1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBwdHI7
XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB9XG5cbiIpOwogICAgIH0g
ZWxzaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQifSkgewpAQCAtMTAwOCw2ICsxMDEwLDE0IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIn07XG5cbiIpOwogCisgICAgaWYgKCRpbnRlcmZhY2VO
YW1lIGVxICJET01XaW5kb3ciIHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Iklz
V29ya2VyQ29udGV4dCJ9KSB7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlXG5cbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAibmFt
ZXNwYWNlIEpTQyB7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIk5FRURTX0RF
U1RSVUNUT1IoV2ViQ29yZTo6JHtjbGFzc05hbWV9LCBmYWxzZSk7XG5cbiIpOworICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAifSAvLyBuYW1lc3BhY2UgSlNDXG5cbiIpOworICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAibmFtZXNwYWNlIFdlYkNvcmUge1xuXG4iKTsKKyAgICB9CisK
ICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNJbmxpbmVHZXRPd25Q
cm9wZXJ0eVNsb3QifSAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
R2V0T3duUHJvcGVydHlTbG90In0pIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkFM
V0FZU19JTkxJTkUgYm9vbCAke2NsYXNzTmFtZX06OmdldE93blByb3BlcnR5U2xvdChKU0M6OkpT
Q2VsbCogY2VsbCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIntcbiIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
YXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2Fy
cmF5LmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfYXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgSlNDIHsKIAotY29uc3QgQ2xhc3NJbmZvIFJ1bnRp
bWVBcnJheTo6c19pbmZvID0geyAiUnVudGltZUFycmF5IiwgJkpTQXJyYXk6OnNfaW5mbywgMCwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShSdW50aW1lQXJyYXkpIH07Citjb25zdCBDbGFzc0luZm8g
UnVudGltZUFycmF5OjpzX2luZm8gPSB7ICJSdW50aW1lQXJyYXkiLCAmQmFzZTo6c19pbmZvLCAw
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJ1bnRpbWVBcnJheSkgfTsKIAogUnVudGltZUFycmF5
OjpSdW50aW1lQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAg
ICA6IEpTQXJyYXkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIDApCkBAIC01Nyw3ICs1
Nyw3IEBAIFJ1bnRpbWVBcnJheTo6flJ1bnRpbWVBcnJheSgpCiAKIHZvaWQgUnVudGltZUFycmF5
OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKLSAgICBzdGF0aWNfY2FzdDxSdW50aW1lQXJyYXkq
PihjZWxsKS0+UnVudGltZUFycmF5Ojp+UnVudGltZUFycmF5KCk7CisgICAganNDYXN0PFJ1bnRp
bWVBcnJheSo+KGNlbGwpLT5SdW50aW1lQXJyYXk6On5SdW50aW1lQXJyYXkoKTsKIH0KIAogSlNW
YWx1ZSBSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RC
YXNlLCBQcm9wZXJ0eU5hbWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5
LmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2Fy
cmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgcHVibGljOgogICAgICAgICBT
dHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1
cmU8UnVudGltZUFycmF5PihleGVjKTsKICAgICAgICAgUnVudGltZUFycmF5KiBydW50aW1lQXJy
YXkgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSdW50aW1lQXJyYXk+KCpleGVjLT5oZWFw
KCkpKSBSdW50aW1lQXJyYXkoZXhlYywgZG9tU3RydWN0dXJlKTsKICAgICAgICAgcnVudGltZUFy
cmF5LT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGFycmF5KTsKKyAgICAgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAuYWRkRmluYWxpemVyKHJ1bnRpbWVBcnJheSwgZGVzdHJv
eSk7CiAgICAgICAgIHJldHVybiBydW50aW1lQXJyYXk7CiAgICAgfQogCkBAIC04OCw2ICs4OSw4
IEBAIHByaXZhdGU6CiAKICAgICBCaW5kaW5nc0FycmF5KiBtX2FycmF5OwogfTsKKworTkVFRFNf
REVTVFJVQ1RPUihSdW50aW1lQXJyYXksIGZhbHNlKTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAJKHJldmlz
aW9uIDEyODcxMikKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDEwICszNSwxMCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAotY29uc3QgQ2xhc3NJ
bmZvIFJ1bnRpbWVPYmplY3Q6OnNfaW5mbyA9IHsgIlJ1bnRpbWVPYmplY3QiLCAmSlNOb25GaW5h
bE9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJ1bnRpbWVPYmplY3Qp
IH07Citjb25zdCBDbGFzc0luZm8gUnVudGltZU9iamVjdDo6c19pbmZvID0geyAiUnVudGltZU9i
amVjdCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUnVudGltZU9i
amVjdCkgfTsKIAogUnVudGltZU9iamVjdDo6UnVudGltZU9iamVjdChFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0
cjxJbnN0YW5jZT4gaW5zdGFuY2UpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbE9iamVj
dC0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCisgICAgOiBKU0Rlc3RydWN0aWJsZU9iamVjdChn
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogICAgICwgbV9pbnN0YW5jZShp
bnN0YW5jZSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5o
CShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiBu
YW1lc3BhY2UgQmluZGluZ3MgewogCi1jbGFzcyBSdW50aW1lT2JqZWN0IDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgeworY2xhc3MgUnVudGltZU9iamVjdCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJs
ZU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7Cisg
ICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwogCiAgICAgc3RhdGljIFJ1bnRp
bWVPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5j
ZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
aAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDkgKzkwLDkgQEAgcHJpdmF0ZToKICAgICBS
ZXRhaW5QdHI8T2JqZWN0U3RydWN0UHRyPiBfYXJyYXk7CiB9OwogCi1jbGFzcyBPYmpjRmFsbGJh
Y2tPYmplY3RJbXAgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitjbGFzcyBPYmpjRmFsbGJh
Y2tPYmplY3RJbXAgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgotICAg
IHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHR5cGVkZWYgSlNEZXN0cnVjdGli
bGVPYmplY3QgQmFzZTsKIAogICAgIHN0YXRpYyBPYmpjRmFsbGJhY2tPYmplY3RJbXAqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9iamNJbnN0
YW5jZSogaW5zdGFuY2UsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogICAgIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHJldmlzaW9uIDEy
ODcxMikKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTg4LDEwICsxODgsMTAgQEAgdW5zaWduZWQgaW50IE9iamNBcnJheTo6
Z2V0TGVuZ3RoKCkgY29ucwogICAgIHJldHVybiBbX2FycmF5LmdldCgpIGNvdW50XTsKIH0KIAot
Y29uc3QgQ2xhc3NJbmZvIE9iamNGYWxsYmFja09iamVjdEltcDo6c19pbmZvID0geyAiT2JqY0Zh
bGxiYWNrT2JqZWN0IiwgJkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShPYmpjRmFsbGJhY2tPYmplY3RJbXApIH07Citjb25zdCBDbGFzc0luZm8gT2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wOjpzX2luZm8gPSB7ICJPYmpjRmFsbGJhY2tPYmplY3QiLCAmQmFz
ZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE9iamNGYWxsYmFja09iamVjdElt
cCkgfTsKIAogT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpPYmpjRmFsbGJhY2tPYmplY3RJbXAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE9iamNJbnN0
YW5jZSogaSwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCi0gICAgOiBKU05vbkZpbmFsT2Jq
ZWN0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCisgICAgOiBKU0Rlc3Ry
dWN0aWJsZU9iamVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogICAg
ICwgX2luc3RhbmNlKGkpCiAgICAgLCBtX2l0ZW0ocHJvcGVydHlOYW1lKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164334</attachid>
            <date>2012-09-16 19:25:27 -0700</date>
            <delta_ts>2012-09-16 21:54:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96546-20120916192456.patch</filename>
            <type>text/plain</type>
            <size>97085</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4MSBA
QAorMjAxMi0wOS0xNiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIERlbGF5ZWQgc3RydWN0dXJlIHN3ZWVwIGNhbiBsZWFrIHN0cnVjdHVyZXMgd2l0
aG91dCBib3VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTY1NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGdldHMgcmlkIG9mIHRoZSBzZXBhcmF0ZSBTdHJ1Y3R1cmUgYWxsb2NhdG9y
IGluIHRoZSBNYXJrZWRTcGFjZSBhbmQgYWRkcyB0d28gbmV3IGRlc3RydWN0b3Itb25seQorICAg
ICAgICBhbGxvY2F0b3JzLiBXZSBub3cgaGF2ZSBzZXBhcmF0ZSBhbGxvY2F0b3JzIGZvciBvdXIg
dGhyZWUgdHlwZXMgb2Ygb2JqZWN0czogdGhvc2Ugb2JqZWN0cyB3aXRoIG5vIGRlc3RydWN0b3Jz
LAorICAgICAgICB0aG9zZSBvYmplY3RzIHdpdGggZGVzdHJ1Y3RvcnMgYW5kIHdpdGggaW1tb3J0
YWwgc3RydWN0dXJlcywgYW5kIHRob3NlIG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycyB0aGF0IGRv
bid0IGhhdmUgCisgICAgICAgIGltbW9ydGFsIHN0cnVjdHVyZXMuIEFsbCBvZiB0aGUgb2JqZWN0
cyBvZiB0aGUgdGhpcmQgdHlwZSAoZGVzdHJ1Y3RvcnMgd2l0aG91dCBpbW1vcnRhbCBzdHJ1Y3R1
cmVzKSBub3cgCisgICAgICAgIGluaGVyaXQgZnJvbSBhIG5ldyBjbGFzcyBuYW1lZCBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCAod2hpY2ggaW4gdHVybiBpcyBhIHN1YmNsYXNzIG9mIEpTTm9uRmluYWxP
YmplY3QpLCB3aGljaCBzdG9yZXMgCisgICAgICAgIHRoZSBDbGFzc0luZm8gZm9yIHRoZXNlIGNs
YXNzZXMgYXQgYSBmaXhlZCBvZmZzZXQgZm9yIHNhZmUgcmV0cmlldmFsIGR1cmluZyBzd2VlcGlu
Zy9kZXN0cnVjdGlvbi4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3Bw
OiBVc2UgSlNEZXN0cnVjdGlibGVPYmplY3QgZm9yIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci4KKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6SlNDYWxs
YmFja0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmg6
CisgICAgICAgIChKU0NhbGxiYWNrQ29uc3RydWN0b3IpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0LmNwcDogSW5oZXJpdCBmcm9tIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IGZvciBub3Jt
YWwgSlNDYWxsYmFja09iamVjdHMgYW5kIHVzZSBhIGZpbmFsaXplciBmb3IgCisgICAgICAgIEpT
Q2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+LCBzaW5jZSBKU0dsb2JhbE9iamVjdCBhbHNv
IHVzZXMgYSBmaW5hbGl6ZXIuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjo6OmNyZWF0
ZSk6IFdlIG5lZWQgdG8gbW92ZSB0aGUgY3JlYXRlIGZ1bmN0aW9uIGZvciBKU0NhbGxiYWNrT2Jq
ZWN0PEpTR2xvYmFsT2JqZWN0PiBvdXQgb2YgbGluZSBzbyB3ZSBjYW4gYWRkIAorICAgICAgICB0
aGUgZmluYWxpemVyIGZvciBpdC4gV2UgZG9uJ3Qgd2FudCB0byBhZGQgdGhlIGZpbmFsaXplciBp
cyBzb21ldGhpbmcgbGlrZSBmaW5pc2hDcmVhdGlvbiBpbiBjYXNlIHNvbWVib2R5IGRlY2lkZXMg
CisgICAgICAgIHRvIHN1YmNsYXNzIHRoaXMuIFdlIHVzZSB0aGlzIHNhbWUgdGVjaG5pcXVlIGZv
ciBtYW55IG90aGVyIHN1YmNsYXNzZXMgb2YgSlNHbG9iYWxPYmplY3QuCisgICAgICAgIChKU0M6
Ojo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgor
ICAgICAgICAoSlNDYWxsYmFja09iamVjdCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIEFQ
SS9KU0NsYXNzUmVmLmNwcDogQ2hhbmdlIGFsbCB0aGUgSlNDYWxsYmFja09iamVjdDxKU05vbkZp
bmFsT2JqZWN0PiB0byB1c2UgSlNEZXN0cnVjdGlibGVPYmplY3QgaW5zdGVhZC4KKyAgICAgICAg
KE9wYXF1ZUpTQ2xhc3M6OnByb3RvdHlwZSk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNw
cDogRGl0dG8uCisgICAgICAgIChKU09iamVjdE1ha2UpOgorICAgICAgICAoSlNPYmplY3RHZXRQ
cml2YXRlKToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJpdmF0ZSk6CisgICAgICAgIChKU09iamVj
dEdldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU09iamVjdFNldFByaXZhdGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU09iamVjdERlbGV0ZVByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgICog
QVBJL0pTVmFsdWVSZWYuY3BwOiBEaXR0by4KKyAgICAgICAgKEpTVmFsdWVJc09iamVjdE9mQ2xh
c3MpOgorICAgICAgICAqIEFQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcDogRGl0dG8u
CisgICAgICAgICogSlNDVHlwZWRBcnJheVN0dWJzLmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6IFVzZSB0aGUgcHJvcGVyIGFsbG9jYXRvciB0eXBlIHdo
ZW4gZG9pbmcgaW5saW5lIGFsbG9jYXRpb24gaW4gdGhlIERGRy4KKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QpOgorICAg
ICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGhlYXAvSGVh
cC5oOiBBZGQgYWNjZXNzb3JzIGZvciB0aGUgdmFyaW91cyB0eXBlcyBvZiBhbGxvY2F0b3JzIG5v
dy4gQWxzbyByZW1vdmUgdGhlIGlzU2FmZVRvU3dlZXBTdHJ1Y3R1cmVzIGZ1bmN0aW9uIAorICAg
ICAgICBzaW5jZSBpdCdzIGFsd2F5cyBzYWZlIHRvIHN3ZWVwIFN0cnVjdHVyZXMgbm93LgorICAg
ICAgICAoSlNDOjpIZWFwOjphbGxvY2F0b3JGb3JPYmplY3RXaXRoTm9ybWFsRGVzdHJ1Y3Rvcik6
IAorICAgICAgICAoSlNDOjpIZWFwOjphbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0YWxTdHJ1
Y3R1cmVEZXN0cnVjdG9yKToKKyAgICAgICAgKEhlYXApOgorICAgICAgICAoSlNDOjpIZWFwOjph
bGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChK
U0M6OkhlYXA6OmFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3Rvcik6CisgICAg
ICAgICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwOiBSZW1vdmUgYWxsIHRoZSBsb2dpYyB0
byBkZXRlY3Qgd2hlbiBpdCdzIHNhZmUgdG8gc3dlZXAgU3RydWN0dXJlcyBmcm9tIHRoZSAKKyAg
ICAgICAgSW5jcmVtZW50YWxTd2VlcGVyIHNpbmNlIGl0J3MgYWx3YXlzIHNhZmUgdG8gc3dlZXAg
U3RydWN0dXJlcyBub3cuCisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVt
ZW50YWxTd2VlcGVyKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5l
eHRCbG9jayk6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGlu
Zyk6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6d2lsbEZpbmlzaFN3ZWVwaW5n
KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaDoK
KyAgICAgICAgKEluY3JlbWVudGFsU3dlZXBlcik6CisgICAgICAgICogaGVhcC9NYXJrZWRBbGxv
Y2F0b3IuY3BwOiBSZW1vdmUgdGhlIGxvZ2ljIHRoYXQgd2FzIHByZXZlbnRpbmcgdXMgZnJvbSBz
d2VlcGluZyBTdHJ1Y3R1cmVzIGlmIGl0IHdhc24ndCBzYWZlLiBBZGQgCisgICAgICAgIHRyYWNr
aW5nIG9mIHRoZSBzcGVjaWZpYyBkZXN0cnVjdG9yIHR5cGUgb2YgYWxsb2NhdG9yLiAKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUhlbHBlcik6CisgICAgICAgIChK
U0M6Ok1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVCbG9jayk6CisgICAgICAgICogaGVhcC9NYXJr
ZWRBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpkZXN0cnVjdG9y
VHlwZSk6CisgICAgICAgIChNYXJrZWRBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6aW5pdCk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6IEFkZCBhbGwgdGhlIGRl
c3RydWN0b3IgdHlwZSBzdHVmZiB0byBNYXJrZWRCbG9ja3Mgc28gdGhhdCB3ZSBkbyB0aGUgcmln
aHQgdGhpbmcgd2hlbiBzd2VlcGluZy4gCisgICAgICAgIFdlIGFsc28gdXNlIHRoZSBzdG9yZWQg
ZGVzdHJ1Y3RvciB0eXBlIHRvIGRldGVybWluZSB0aGUgcmlnaHQgdGhpbmcgdG8gZG8gaW4gYWxs
IEpTQ2VsbDo6Y2xhc3NJbmZvKCkgY2FsbHMuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6TWFya2VkQmxvY2spOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnNwZWNpYWxpemVkU3dlZXApOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3dlZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6c3dlZXBIZWxwZXIpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphbGxvY2F0b3IpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6ZGVzdHJ1Y3RvclR5cGUpOgorICAgICAgICAqIGhlYXAvTWFy
a2VkU3BhY2UuY3BwOiBBZGQgdGhlIG5ldyBkZXN0cnVjdG9yIGFsbG9jYXRvcnMgdG8gTWFya2Vk
U3BhY2UuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpNYXJrZWRTcGFjZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6Y2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSk6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjppc1BhZ2VkT3V0KToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZyZWVC
bG9jayk6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoTWFya2VkU3Bh
Y2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6aW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVj
dG9yQWxsb2NhdG9yRm9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Om5vcm1hbERlc3Ry
dWN0b3JBbGxvY2F0b3JGb3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YWxsb2NhdGVX
aXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3Bh
Y2U6OmFsbG9jYXRlV2l0aE5vcm1hbERlc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRT
cGFjZTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmNwcDogQWRk
IGluY2x1ZGUgYmVjYXVzZSB0aGUgc3ltYm9sIHdhcyBuZWVkZWQgaW4gYW4gaW5saW5lZCBmdW5j
dGlvbi4KKyAgICAgICAgKiBqaXQvSklULmg6IE1ha2Ugc3VyZSB3ZSB1c2UgdGhlIGNvcnJlY3Qg
YWxsb2NhdG9yIHdoZW4gZG9pbmcgaW5saW5lIGFsbG9jYXRpb25zIGluIHRoZSBiYXNlbGluZSBK
SVQuCisgICAgICAgICogaml0L0pJVElubGluZU1ldGhvZHMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QWxs
b2NhdGVKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QWxsb2NhdGVKU0Fy
cmF5KToKKyAgICAgICAgKiBqc2MuY3BwOiAKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6Y3JlYXRl
KTogQWRkIGZpbmFsaXplciBoZXJlIHNpbmNlIEpTR2xvYmFsT2JqZWN0IG5lZWRzIHRvIHVzZSBh
IGZpbmFsaXplciBpbnN0ZWFkIG9mIGluaGVyaXRpbmcgZnJvbSAKKyAgICAgICAgSlNEZXN0cnVj
dGlibGVPYmplY3QuCisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOiBJbmhlcml0IGZy
b20gSlNEZXN0cnVjdGlibGVPYmplY3QuCisgICAgICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRp
bWUvQXJndW1lbnRzLmg6CisgICAgICAgIChBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpBcmd1
bWVudHM6OkFyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6
IEFkZGVkIGFuIGFzc2VydCB0byBtYWtlIHN1cmUgd2UgaGF2ZSBhIHRyaXZpYWwgZGVzdHJ1Y3Rv
ci4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6IEluZGlj
YXRlIHRoYXQgYWxsIG9mIHRoZSBFeGVjdXRhYmxlKiBjbGFzc2VzIGhhdmUgaW1tb3J0YWwgU3Ry
dWN0dXJlcy4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmNwcDogSW5oZXJpdCBmcm9tIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgIChJbnRlcm5hbEZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOiBBZGRlZCB0aGUgTkVFRFNfREVT
VFJVQ1RPUiAgbWFjcm8gdG8gbWFrZSBpdCBlYXNpZXIgZm9yIGNsYXNzZXMgdG8gaW5kaWNhdGUg
dGhhdCBpbnN0ZWFkIG9mIGJlaW5nIAorICAgICAgICBhbGxvY2F0ZWQgaW4gYSBkZXN0cnVjdG9y
IE1hcmtlZEFsbG9jYXRvciB0aGF0IHRoZXkgd2lsbCBoYW5kbGUgdGhlaXIgZGVzdHJ1Y3Rpb24g
dGhlbXNlbHZlcyB0aHJvdWdoIHRoZSAKKyAgICAgICAgdXNlIG9mIGEgZmluYWxpemVyLgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEhhc0ltbW9ydGFsU3RydWN0dXJlKTogTmV3IHRlbXBsYXRl
IHRvIGhlbHAgdXMgZGV0ZXJtaW5lIGF0IGNvbXBpbGUtdGltZSBpZiBhIHBhcnRpY3VsYXIgY2xh
c3MgCisgICAgICAgIHNob3VsZCBiZSBhbGxvY2F0ZWQgaW4gdGhlIGltbW9ydGFsIHN0cnVjdHVy
ZSBNYXJrZWRBbGxvY2F0b3IuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGZhbHNlLiBJbiBvcmRlciAK
KyAgICAgICAgdG8gYmUgYWxsb2NhdGVkIGluIHRoZSBpbW1vcnRhbCBzdHJ1Y3R1cmUgYWxsb2Nh
dG9yLCBjbGFzc2VzIG11c3Qgc3BlY2lhbGl6ZSB0aGlzIHRlbXBsYXRlLiBBbHNvIGFkZGVkIAor
ICAgICAgICBhIG1hY3JvIHRvIG1ha2UgaXQgZWFzaWVyIGZvciBjbGFzc2VzIHRvIHNwZWNpYWxp
emUgdGhlIHRlbXBsYXRlLgorICAgICAgICAoSlNDOjphbGxvY2F0ZUNlbGwpOiBVc2UgdGhlIGFw
cHJvcHJpYXRlIGFsbG9jYXRvciBkZXBlbmRpbmcgb24gdGhlIGRlc3RydWN0b3IgdHlwZS4KKyAg
ICAgICAgKiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmg6IEFkZGVkLiBOZXcgY2xhc3Mg
dGhhdCBzdG9yZXMgdGhlIENsYXNzSW5mbyBvZiBhbnkgc3ViY2xhc3Mgc28gdGhhdCBpdCBjYW4g
YmUgCisgICAgICAgIGFjY2Vzc2VkIHNhZmVseSB3aGVuIHRoZSBvYmplY3QgaXMgYmVpbmcgZGVz
dHJveWVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KToK
KyAgICAgICAgKEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mbyk6CisgICAgICAg
IChKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0OjpKU0Rlc3RydWN0aWJsZU9iamVjdCk6CisgICAg
ICAgIChKU0M6OkpTQ2VsbDo6Y2xhc3NJbmZvKTogQ2hlY2tzIHRoZSBjdXJyZW50IE1hcmtlZEJs
b2NrIHRvIHNlZSB3aGVyZSBpdCBzaG91bGQgZ2V0IHRoZSBDbGFzc0luZm8gZnJvbSBzbyB0aGF0
IGl0J3MgYWx3YXlzIHNhZmUuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6
IEpTR2xvYmFsT2JqZWN0IG5vdyB1c2VzIGEgZmluYWxpemVyIGluc3RlYWQgb2YgYSBkZXN0cnVj
dG9yIHNvIHRoYXQgaXQgY2FuIGF2b2lkIGZvcmNpbmcgYWxsIAorICAgICAgICBvZiBpdHMgcmVs
YXRpdmVzIGluIHRoZSBpbmhlcml0YW5jZSBoaWVyYXJjaHkgKGUuZy4gSlNTY29wZSkgdG8gdXNl
IGRlc3RydWN0b3JzIGFzIHdlbGwuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXNl
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNHbG9i
YWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJ
Zk5lZWRlZCk6IFNpbmNlIHdlIGFsd2F5cyBjcmVhdGUgYSBmaW5hbGl6ZXIgbm93LCB3ZSBkb24n
dCBoYXZlIHRvIHdvcnJ5IGFib3V0IGFkZGluZyBvbmUgCisgICAgICAgIGZvciB0aGUgbV9yYXJl
RGF0YSBmaWVsZCB3aGVuIGl0J3MgY3JlYXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxU
aGlzLmg6IEluaGVyaXQgZnJvbSBKU0Rlc3RydWN0aWJsZU9iamVjdC4KKyAgICAgICAgKEpTR2xv
YmFsVGhpcyk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsVGhpczo6SlNHbG9iYWxUaGlzKToKKyAg
ICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDogSGFzIGFuIGltbW9ydGFs
IFN0cnVjdHVyZS4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNw
cDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOiBIYXMgYW4g
aW1tb3J0YWwgU3RydWN0dXJlLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pT
V3JhcHBlck9iamVjdC5oOiBJbmhlcml0IGZyb20gSlNEZXN0cnVjdGlibGVPYmplY3QuCisgICAg
ICAgIChKU1dyYXBwZXJPYmplY3QpOgorICAgICAgICAoSlNDOjpKU1dyYXBwZXJPYmplY3Q6OkpT
V3JhcHBlck9iamVjdCk6CisgICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0LmNwcDogQ2xlYW5p
bmcgdXAgc29tZSBvZiB0aGUgaW5oZXJpdGFuY2Ugc3R1ZmYuCisgICAgICAgIChKU0MpOgorICAg
ICAgICAqIHJ1bnRpbWUvTmFtZUluc3RhbmNlLmg6IEluaGVyaXQgZnJvbSBKU0Rlc3RydWN0aWJs
ZU9iamVjdC4KKyAgICAgICAgKE5hbWVJbnN0YW5jZSk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHAuaDogSGFzIGltbW9ydGFsIFN0cnVjdHVyZS4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICog
cnVudGltZS9SZWdFeHBPYmplY3QuY3BwOiBJbmhlcml0YW5jZSBjbGVhbnVwLgorICAgICAgICAo
SlNDKToKKyAgICAgICAgKiBydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaDogSGFzIGltbW9y
dGFsIFN0cnVjdHVyZS4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuaDogSGFzIGltbW9ydGFsIFN0cnVjdHVyZS4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oOiBEaXR0by4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
ICogcnVudGltZS9TeW1ib2xUYWJsZS5oOiBEaXR0by4KKyAgICAgICAgKFNoYXJlZFN5bWJvbFRh
YmxlKToKKyAgICAgICAgKEpTQyk6CisKIDIwMTItMDktMTYgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBKU09iamVjdC5jcHAgYW5kIEpTQXJyYXkuY3BwIGhhdmUg
aW5jb25zaXN0ZW50IHRlc3RzIGZvciB0aGUgaW52YWxpZCBhcnJheSBpbmRleCBjYXNlCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTI4
NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtp
bmcgY29weSkKQEAgLTUzMyw2ICs1MzMsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0ZU1hdGguaCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9u
LmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0pTQ1R5cGVkQXJyYXlTdHVicy5o
CShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJh
eVN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgSlNDVHlw
ZWRBcnJheVN0dWJzX2gKICNkZWZpbmUgSlNDVHlwZWRBcnJheVN0dWJzX2gKIAotI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKICNpbmNsdWRl
ICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+CiAjaW5j
bHVkZSA8d3RmL0Zsb2F0NjRBcnJheS5oPgpAQCAtNDIsOSArNDIsOSBAQAogbmFtZXNwYWNlIEpT
QyB7CiAgICAgCiAjZGVmaW5lIFRZUEVEX0FSUkFZKG5hbWUsIHR5cGUpIFwKLWNsYXNzIEpTIyNu
YW1lIyNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsgXAorY2xhc3MgSlMjI25hbWUj
I0FycmF5IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsgXAogcHVibGljOiBcCi0gICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7IFwKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0IEJhc2U7IFwKICAgICBzdGF0aWMgSlMjI25hbWUjI0FycmF5KiBjcmVhdGUoSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFz
c1JlZlB0cjxuYW1lIyNBcnJheT4gaW1wbCkgXAogICAgIHsgXAogICAgICAgICBKUyMjbmFtZSMj
QXJyYXkqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlMjI25hbWUjI0Fy
cmF5PihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlMjI25hbWUjI0FycmF5KHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJ
KHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzYsNiArMTc2LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgR2xv
YmFsT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmpl
Y3Q+KGdsb2JhbERhdGEuaGVhcCkpIEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUp
OwogICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGFyZ3VtZW50cyk7
CisgICAgICAgIGdsb2JhbERhdGEuaGVhcC5hZGRGaW5hbGl6ZXIob2JqZWN0LCBkZXN0cm95KTsK
ICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CiAKQEAgLTI0Myw2ICsyNDQsMTIgQEAgcHJv
dGVjdGVkOgogICAgICAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgaWRlbnRpZmllciwgSlNGdW5j
dGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLnN0
cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGZ1bmN0aW9uKSk7CiAgICAgfQogfTsKKwor
CituYW1lc3BhY2UgSlNDIHsKK05FRURTX0RFU1RSVUNUT1IoR2xvYmFsT2JqZWN0LCBmYWxzZSk7
Cit9OworCiBDT01QSUxFX0FTU0VSVCghSXNJbnRlZ2VyPEdsb2JhbE9iamVjdD46OnZhbHVlLCBX
VEZfSXNJbnRlZ2VyX0dsb2JhbE9iamVjdF9mYWxzZSk7CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKEdsb2JhbE9iamVjdCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsMTAgKzM2LDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBD
bGFzc0luZm8gSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJDYWxsYmFja0NvbnN0
cnVjdG9yIiwgJkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU0NhbGxiYWNrQ29uc3RydWN0b3IpIH07Citjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFj
a0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJDYWxsYmFja0NvbnN0cnVjdG9yIiwgJkJhc2U6OnNf
aW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0NhbGxiYWNrQ29uc3RydWN0b3IpIH07
CiAKIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6SlNDYWxsYmFja0NvbnN0cnVjdG9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0NsYXNzUmVmIGpz
Q2xhc3MsIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayBjYWxsYmFjaykKLSAgICA6
IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkK
KyAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBz
dHJ1Y3R1cmUpCiAgICAgLCBtX2NsYXNzKGpzQ2xhc3MpCiAgICAgLCBtX2NhbGxiYWNrKGNhbGxi
YWNrKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3Ry
dWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMyAr
MjcsMTMgQEAKICNkZWZpbmUgSlNDYWxsYmFja0NvbnN0cnVjdG9yX2gKIAogI2luY2x1ZGUgIkpT
T2JqZWN0UmVmLmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgorI2luY2x1ZGUgInJ1
bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNz
IEpTQ2FsbGJhY2tDb25zdHJ1Y3RvciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK2NsYXNz
IEpTQ2FsbGJhY2tDb25zdHJ1Y3RvciA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBw
dWJsaWM6Ci0gICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgdHlwZWRlZiBK
U0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwogCiAgICAgc3RhdGljIEpTQ2FsbGJhY2tDb25zdHJ1
Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYgY2xhc3NSZWYsIEpTT2JqZWN0Q2Fs
bEFzQ29uc3RydWN0b3JDYWxsYmFjayBjYWxsYmFjaykgCiAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCShyZXZpc2lvbiAxMjg3
MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiwxNSArMzIsMjQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFT
U0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0
Pik7CitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVj
dGlibGVPYmplY3Q+KTsKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNDYWxsYmFja09iamVj
dDxKU0dsb2JhbE9iamVjdD4pOwogCiAvLyBEZWZpbmUgdGhlIHR3byB0eXBlcyBvZiBKU0NhbGxi
YWNrT2JqZWN0cyB3ZSBzdXBwb3J0LgotdGVtcGxhdGUgPD4gY29uc3QgQ2xhc3NJbmZvIEpTQ2Fs
bGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD46OnNfaW5mbyA9IHsgIkNhbGxiYWNrT2JqZWN0
IiwgJkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U0NhbGxiYWNrT2JqZWN0KSB9OwotdGVtcGxhdGUgPD4gY29uc3QgQ2xhc3NJbmZvIEpTQ2FsbGJh
Y2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpzX2luZm8gPSB7ICJDYWxsYmFja0dsb2JhbE9iamVj
dCIsICZKU0dsb2JhbE9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
Q2FsbGJhY2tPYmplY3QpIH07Cit0ZW1wbGF0ZSA8PiBjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFj
a09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OnNfaW5mbyA9IHsgIkNhbGxiYWNrT2JqZWN0
IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0NhbGxiYWNrT2Jq
ZWN0KSB9OwordGVtcGxhdGUgPD4gY29uc3QgQ2xhc3NJbmZvIEpTQ2FsbGJhY2tPYmplY3Q8SlNH
bG9iYWxPYmplY3Q+OjpzX2luZm8gPSB7ICJDYWxsYmFja0dsb2JhbE9iamVjdCIsICZCYXNlOjpz
X2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNDYWxsYmFja09iamVjdCkgfTsKKwor
dGVtcGxhdGU8PgorSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4qIEpTQ2FsbGJhY2tP
YmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U0NsYXNzUmVmIGNsYXNzUmVmLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBKU0NhbGxi
YWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0PiogY2FsbGJhY2tPYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0PiA+KGdsb2JhbERh
dGEuaGVhcCkpIEpTQ2FsbGJhY2tPYmplY3QoZ2xvYmFsRGF0YSwgY2xhc3NSZWYsIHN0cnVjdHVy
ZSk7CisgICAgY2FsbGJhY2tPYmplY3QtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOworICAg
IGdsb2JhbERhdGEuaGVhcC5hZGRGaW5hbGl6ZXIoY2FsbGJhY2tPYmplY3QsIGRlc3Ryb3kpOwor
ICAgIHJldHVybiBjYWxsYmFja09iamVjdDsKK30KIAogdGVtcGxhdGUgPD4KLVN0cnVjdHVyZSog
SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90bykKK1N0cnVjdHVyZSogSlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVj
dD46OmNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCiB7IAogICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOyAKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCShyZXZpc2lvbiAxMjg3MTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMTMzLDEzICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhbGxiYWNrT2JqZWN0
LT5maW5pc2hDcmVhdGlvbihleGVjKTsKICAgICAgICAgcmV0dXJuIGNhbGxiYWNrT2JqZWN0Owog
ICAgIH0KLSAgICBzdGF0aWMgSlNDYWxsYmFja09iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNDbGFzc1JlZiBjbGFzc1JlZiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0g
ICAgewotICAgICAgICBKU0NhbGxiYWNrT2JqZWN0KiBjYWxsYmFja09iamVjdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEpT
Q2FsbGJhY2tPYmplY3QoZ2xvYmFsRGF0YSwgY2xhc3NSZWYsIHN0cnVjdHVyZSk7Ci0gICAgICAg
IGNhbGxiYWNrT2JqZWN0LT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKLSAgICAgICAgcmV0
dXJuIGNhbGxiYWNrT2JqZWN0OwotICAgIH0KLQorICAgIHN0YXRpYyBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD4qIGNyZWF0ZShKU0dsb2JhbERhdGEmLCBKU0NsYXNzUmVmLCBTdHJ1Y3R1cmUqKTsK
ICAgICB2b2lkIHNldFByaXZhdGUodm9pZCogZGF0YSk7CiAgICAgdm9pZCogZ2V0UHJpdmF0ZSgp
OwogCkBAIC0yMTcsNiArMjExLDggQEAgcHJpdmF0ZToKICAgICBPd25QdHI8SlNDYWxsYmFja09i
amVjdERhdGE+IG1fY2FsbGJhY2tPYmplY3REYXRhOwogfTsKIAorTkVFRFNfREVTVFJVQ1RPUihK
U0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0PiwgZmFsc2UpOworCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogLy8gaW5jbHVkZSB0aGUgYWN0dWFsIHRlbXBsYXRlIGNsYXNzIGltcGxlbWVudGF0
aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAJKHJldmlz
aW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5OSw3ICsxOTksNyBAQCBKU09iamVjdCogT3BhcXVlSlNDbGFz
czo6cHJvdG90eXBlKEV4ZWNTCiAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAKICAgICAvLyBS
ZWN1cnNpdmUsIGJ1dCBzaG91bGQgYmUgZ29vZCBlbm91Z2ggZm9yIG91ciBwdXJwb3NlcwotICAg
IEpTT2JqZWN0KiBwcm90b3R5cGUgPSBKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+
OjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPmNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCksIHByb3RvdHlwZUNsYXNz
LCAmanNDbGFzc0RhdGEpOyAvLyBzZXQganNDbGFzc0RhdGEgYXMgdGhlIG9iamVjdCdzIHByaXZh
dGUgZGF0YSwgc28gaXQgY2FuIGNsZWFyIG91ciByZWZlcmVuY2Ugb24gZGVzdHJ1Y3Rpb24KKyAg
ICBKU09iamVjdCogcHJvdG90eXBlID0gSlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9i
amVjdD46OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUoKSwgcHJvdG90eXBl
Q2xhc3MsICZqc0NsYXNzRGF0YSk7IC8vIHNldCBqc0NsYXNzRGF0YSBhcyB0aGUgb2JqZWN0J3Mg
cHJpdmF0ZSBkYXRhLCBzbyBpdCBjYW4gY2xlYXIgb3VyIHJlZmVyZW5jZSBvbiBkZXN0cnVjdGlv
bgogICAgIGlmIChwYXJlbnRDbGFzcykgewogICAgICAgICBpZiAoSlNPYmplY3QqIHBhcmVudFBy
b3RvdHlwZSA9IHBhcmVudENsYXNzLT5wcm90b3R5cGUoZXhlYykpCiAgICAgICAgICAgICBwcm90
b3R5cGUtPnNldFByb3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCksIHBhcmVudFByb3RvdHlwZSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkocmV2aXNp
b24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtl
KEpTQ29udGV4dFJlZiBjdAogICAgIGlmICghanNDbGFzcykKICAgICAgICAgcmV0dXJuIHRvUmVm
KGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpKTsKIAotICAgIEpTQ2FsbGJhY2tPYmplY3Q8SlNO
b25GaW5hbE9iamVjdD4qIG9iamVjdCA9IEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVj
dD46OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUoKSwganNDbGFzcywgZGF0
YSk7CisgICAgSlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qIG9iamVjdCA9
IEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+OjpjcmVhdGUoZXhlYywgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNh
bGxiYWNrT2JqZWN0U3RydWN0dXJlKCksIGpzQ2xhc3MsIGRhdGEpOwogICAgIGlmIChKU09iamVj
dCogcHJvdG90eXBlID0ganNDbGFzcy0+cHJvdG90eXBlKGV4ZWMpKQogICAgICAgICBvYmplY3Qt
PnNldFByb3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlwZSk7CiAKQEAgLTM0MSw4
ICszNDEsOCBAQCB2b2lkKiBKU09iamVjdEdldFByaXZhdGUoSlNPYmplY3RSZWYgb2JqCiAgICAg
CiAgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9i
amVjdD46OnNfaW5mbykpCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxK
U0dsb2JhbE9iamVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGUoKTsKLSAgICBpZiAoanNPYmpl
Y3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+OjpzX2luZm8p
KQotICAgICAgICByZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVj
dD4qPihqc09iamVjdCktPmdldFByaXZhdGUoKTsKKyAgICBpZiAoanNPYmplY3QtPmluaGVyaXRz
KCZKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkKKyAgICAg
ICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pio+
KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZSgpOwogICAgIAogICAgIHJldHVybiAwOwogfQpAQCAtMzU1
LDggKzM1NSw4IEBAIGJvb2wgSlNPYmplY3RTZXRQcml2YXRlKEpTT2JqZWN0UmVmIG9iamUKICAg
ICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3Qp
LT5zZXRQcml2YXRlKGRhdGEpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgaWYg
KGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pjo6
c19pbmZvKSkgewotICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2Jq
ZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJpdmF0ZShkYXRhKTsKKyAgICBpZiAoanNPYmplY3QtPmlu
aGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkg
eworICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4q
Pihqc09iamVjdCktPnNldFByaXZhdGUoZGF0YSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICAgICAgCkBAIC0zNzIsOCArMzcyLDggQEAgSlNWYWx1ZVJlZiBKU09iamVjdEdldFBy
aXZhdGVQcm9wZXJ0eShKUwogICAgIElkZW50aWZpZXIgbmFtZShwcm9wZXJ0eU5hbWUtPmlkZW50
aWZpZXIoJmV4ZWMtPmdsb2JhbERhdGEoKSkpOwogICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMo
JkpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpzX2luZm8pKQogICAgICAgICByZXN1
bHQgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4qPihqc09iamVjdCkt
PmdldFByaXZhdGVQcm9wZXJ0eShuYW1lKTsKLSAgICBlbHNlIGlmIChqc09iamVjdC0+aW5oZXJp
dHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD46OnNfaW5mbykpCi0gICAgICAg
IHJlc3VsdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+Kj4oanNP
YmplY3QpLT5nZXRQcml2YXRlUHJvcGVydHkobmFtZSk7CisgICAgZWxzZSBpZiAoanNPYmplY3Qt
PmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZv
KSkKKyAgICAgICAgcmVzdWx0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGli
bGVPYmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2YXRlUHJvcGVydHkobmFtZSk7CiAgICAgcmV0
dXJuIHRvUmVmKGV4ZWMsIHJlc3VsdCk7CiB9CiAKQEAgLTM4OCw4ICszODgsOCBAQCBib29sIEpT
T2JqZWN0U2V0UHJpdmF0ZVByb3BlcnR5KEpTQ29udGV4CiAgICAgICAgIGpzQ2FzdDxKU0NhbGxi
YWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJpdmF0ZVByb3BlcnR5
KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSwganNWYWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KLSAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpT
Tm9uRmluYWxPYmplY3Q+OjpzX2luZm8pKSB7Ci0gICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2Jq
ZWN0PEpTTm9uRmluYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2YXRlUHJvcGVydHkoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBuYW1lLCBqc1ZhbHVlKTsKKyAgICBpZiAoanNPYmplY3QtPmluaGVy
aXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkgewor
ICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qPihq
c09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUsIGpz
VmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNDA1LDggKzQwNSw4IEBAIGJvb2wgSlNPYmplY3REZWxldGVQcml2YXRlUHJvcGVydHkoSlND
b24KICAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNP
YmplY3QpLT5kZWxldGVQcml2YXRlUHJvcGVydHkobmFtZSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KLSAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpT
Tm9uRmluYWxPYmplY3Q+OjpzX2luZm8pKSB7Ci0gICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2Jq
ZWN0PEpTTm9uRmluYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5kZWxldGVQcml2YXRlUHJvcGVydHko
bmFtZSk7CisgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0Rl
c3RydWN0aWJsZU9iamVjdD46OnNfaW5mbykpIHsKKyAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tP
YmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3QpLT5kZWxldGVQcml2YXRlUHJv
cGVydHkobmFtZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAJKHJldmlz
aW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMSw4ICsxMzEsOCBAQCBib29sIEpTVmFsdWVJc09iamVjdE9m
Q2xhc3MoSlNDb250ZXh0UmVmCiAgICAgaWYgKEpTT2JqZWN0KiBvID0ganNWYWx1ZS5nZXRPYmpl
Y3QoKSkgewogICAgICAgICBpZiAoby0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9i
YWxPYmplY3Q+OjpzX2luZm8pKQogICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNr
T2JqZWN0PEpTR2xvYmFsT2JqZWN0Pio+KG8pLT5pbmhlcml0cyhqc0NsYXNzKTsKLSAgICAgICAg
aWYgKG8tPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+OjpzX2lu
Zm8pKQotICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmlu
YWxPYmplY3Q+Kj4obyktPmluaGVyaXRzKGpzQ2xhc3MpOworICAgICAgICBpZiAoby0+aW5oZXJp
dHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+OjpzX2luZm8pKQorICAg
ICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0Pio+KG8pLT5pbmhlcml0cyhqc0NsYXNzKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09i
amVjdE1hcFJlZlByaXZhdGUuY3BwCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgSlNXZWFrT2JqZWN0TWFwU2V0KEpTQ29udGV4dFJlZiBj
dHgKICAgICBKU09iamVjdCogb2JqID0gdG9KUyhvYmplY3QpOwogICAgIGlmICghb2JqKQogICAg
ICAgICByZXR1cm47Ci0gICAgQVNTRVJUKG9iai0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8
SlNHbG9iYWxPYmplY3Q+OjpzX2luZm8pIHx8IG9iai0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmpl
Y3Q8SlNOb25GaW5hbE9iamVjdD46OnNfaW5mbykpOworICAgIEFTU0VSVChvYmotPmluaGVyaXRz
KCZKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pjo6c19pbmZvKSB8fCBvYmotPmluaGVy
aXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSk7CiAg
ICAgbWFwLT5tYXAoKS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBrZXksIG9iaik7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtODQyLDYgKzg0MiwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XC4uXHJ1bnRpbWVcSlNGdW5jdGlvbi5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MTAsNiArNzEwLDcgQEAKIAkJQzI0MDMwNTUxNEI0MDRFNjAwNzlFQjY0
IC8qIENvcGllZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgKi87
IH07CiAJCUMyNUY4QkNEMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI1RjhCQ0Ix
NTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAgKi87IH07CiAJCUMyNUY4
QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3
MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlDMkE3RjY4ODE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVj
dGlibGVPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyQTdGNjg3MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyQjkxNkMy
MTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQjkxNkMxMTREQTAxNEUwMENCQUM4NiAvKiBN
YXJrZWRBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDMkI5MTZDNTE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQjkxNkM0
MTREQTA0MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuY3BwICovOyB9OwogCQlDMkM4RDAy
RDE0QTNDNkUwMDA1NzhFNjUgLyogQ29waWVkU3BhY2VJbmxpbmVNZXRob2RzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkM4RDAyQjE0QTNDNkIyMDA1
NzhFNjUgLyogQ29waWVkU3BhY2VJbmxpbmVNZXRob2RzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0ODMsNiArMTQ4NCw3IEBACiAJCUMyNDAz
MDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb3BpZWRTcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMyNUY4QkNCMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5jcmVtZW50YWxTd2Vl
cGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI1RjhCQ0MxNTc1NDRBOTAw
MjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbmNyZW1lbnRhbFN3ZWVwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzJBN0Y2ODcxNjA0MzJENDAwRjc2Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQjkxNkMxMTREQTAxNEUwMENCQUM4NiAvKiBN
YXJrZWRBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya2Vk
QWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQjkxNkM0MTREQTA0
MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWFya2VkQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzJDOEQwMkIxNEEzQzZCMjAwNTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lTWV0
aG9kcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3BpZWRTcGFjZUlubGlu
ZU1ldGhvZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDMsNiArMjA0NSw3
IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMkE3RjY4NzE2MDQzMkQ0MDBGNzZC
OTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCAqLywKIAkJCQkwRjBDRDRDMzE1RjZCNkI1MDAz
MkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgKi8sCiAJCQkJMEYwQ0Q0QzAxNUYxQTYw
NDAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oICovLAogCQkJCTBGQjdGMzg5MTVFRDhF
MzgwMEYxNjdCMiAvKiBBcnJheUNvbnZlbnRpb25zLmggKi8sCkBAIC0yNTYzLDYgKzI1NjYsNyBA
QAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzJFQUQyRkMxNEYwMjQ5ODAwQTRCMTU5IC8qIENvcGllZEFsbG9jYXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJCOTE2QzIxNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtl
ZEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzJBN0Y2ODgxNjA0MzJENDAwRjc2Qjk4
IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTIwQ0U5RTE1
RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzIxMTIy
RTIxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzIxNjBGRTcxNUY3RTk1RTAwOTQyREZDIC8qIFNsb3RWaXNpdG9ySW5saW5lTWV0aG9k
cy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTIxODksMTIg
KzIxODksMTQgQEAgcHVibGljOgogICAgCiAgICAgLy8gSXQgaXMgTk9UIG9rYXkgZm9yIHRoZSBz
dHJ1Y3R1cmUgYW5kIHRoZSBzY3JhdGNoIHJlZ2lzdGVyIHRvIGJlIHRoZSBzYW1lIHRoaW5nIGJl
Y2F1c2UgaWYgdGhleSBhcmUgdGhlbiB0aGUgU3RydWN0dXJlIHdpbGwgCiAgICAgLy8gZ2V0IGNs
b2JiZXJlZC4gCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgYm9vbCBkZXN0cnVj
dG9yLCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xh
c3NUeXBlLCBNYXJrZWRCbG9jazo6RGVzdHJ1Y3RvclR5cGUgZGVzdHJ1Y3RvclR5cGUsIHR5cGVu
YW1lIFN0cnVjdHVyZVR5cGU+IAogICAgIHZvaWQgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdChT
dHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hH
UFIsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgc2xvd1BhdGgpCiAgICAgewogICAgICAgICBN
YXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9IDA7Ci0gICAgICAgIGlmIChkZXN0cnVjdG9yKQot
ICAgICAgICAgICAgYWxsb2NhdG9yID0gJm1faml0Lmdsb2JhbERhdGEoKS0+aGVhcC5hbGxvY2F0
b3JGb3JPYmplY3RXaXRoRGVzdHJ1Y3RvcihzaXplb2YoQ2xhc3NUeXBlKSk7CisgICAgICAgIGlm
IChkZXN0cnVjdG9yVHlwZSA9PSBNYXJrZWRCbG9jazo6Tm9ybWFsKQorICAgICAgICAgICAgYWxs
b2NhdG9yID0gJm1faml0Lmdsb2JhbERhdGEoKS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRo
Tm9ybWFsRGVzdHJ1Y3RvcihzaXplb2YoQ2xhc3NUeXBlKSk7CisgICAgICAgIGVsc2UgaWYgKGRl
c3RydWN0b3JUeXBlID09IE1hcmtlZEJsb2NrOjpJbW1vcnRhbFN0cnVjdHVyZSkKKyAgICAgICAg
ICAgIGFsbG9jYXRvciA9ICZtX2ppdC5nbG9iYWxEYXRhKCktPmhlYXAuYWxsb2NhdG9yRm9yT2Jq
ZWN0V2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvcihzaXplb2YoQ2xhc3NUeXBlKSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGFsbG9jYXRvciA9ICZtX2ppdC5nbG9iYWxEYXRhKCkt
PmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3Ioc2l6ZW9mKENsYXNzVHlw
ZSkpOwogCkBAIC0yMjE2LDcgKzIyMTgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KICAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QoVCBzdHJ1Y3R1cmUsIEdQ
UlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QmIHNsb3dQYXRoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGVtaXRBbGxvY2F0ZUJhc2ljSlNP
YmplY3Q8SlNGaW5hbE9iamVjdCwgZmFsc2U+KHN0cnVjdHVyZSwgcmVzdWx0R1BSLCBzY3JhdGNo
R1BSLCBzbG93UGF0aCk7CisgICAgICAgIHJldHVybiBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0
PEpTRmluYWxPYmplY3QsIE1hcmtlZEJsb2NrOjpOb25lPihzdHJ1Y3R1cmUsIHJlc3VsdEdQUiwg
c2NyYXRjaEdQUiwgc2xvd1BhdGgpOwogICAgIH0KIAogI2lmIFVTRShKU1ZBTFVFNjQpIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzAs
MTEgKzgzMCw2IEBAIHZvaWQgSGVhcDo6YWRkQ29tcGlsZWRDb2RlKEV4ZWN1dGFibGVCYXMKICAg
ICBtX2NvbXBpbGVkQ29kZS5hcHBlbmQoZXhlY3V0YWJsZSk7CiB9CiAKLWJvb2wgSGVhcDo6aXNT
YWZlVG9Td2VlcFN0cnVjdHVyZXMoKQotewotICAgIHJldHVybiAhbV9zd2VlcGVyIHx8IG1fc3dl
ZXBlci0+c3RydWN0dXJlc0NhbkJlU3dlcHQoKTsKLX0KLQogdm9pZCBIZWFwOjpkaWRTdGFydFZN
U2h1dGRvd24oKQogewogICAgIG1fYWN0aXZpdHlDYWxsYmFjay0+ZGlkU3RhcnRWTVNodXRkb3du
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMjg3MTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
Miw3ICsxMTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIE1hcmtlZEFs
bG9jYXRvciYgZmlyc3RBbGxvY2F0b3JXaXRob3V0RGVzdHJ1Y3RvcnMoKSB7IHJldHVybiBtX29i
amVjdFNwYWNlLmZpcnN0QWxsb2NhdG9yKCk7IH0KICAgICAgICAgTWFya2VkQWxsb2NhdG9yJiBh
bGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpIHsgcmV0dXJu
IG1fb2JqZWN0U3BhY2UuYWxsb2NhdG9yRm9yKGJ5dGVzKTsgfQotICAgICAgICBNYXJrZWRBbGxv
Y2F0b3ImIGFsbG9jYXRvckZvck9iamVjdFdpdGhEZXN0cnVjdG9yKHNpemVfdCBieXRlcykgeyBy
ZXR1cm4gbV9vYmplY3RTcGFjZS5kZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGJ5dGVzKTsgfQorICAg
ICAgICBNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvckZvck9iamVjdFdpdGhOb3JtYWxEZXN0cnVj
dG9yKHNpemVfdCBieXRlcykgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5ub3JtYWxEZXN0cnVjdG9y
QWxsb2NhdG9yRm9yKGJ5dGVzKTsgfQorICAgICAgICBNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRv
ckZvck9iamVjdFdpdGhJbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKSB7
IHJldHVybiBtX29iamVjdFNwYWNlLmltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRv
ckZvcihieXRlcyk7IH0KICAgICAgICAgQ29waWVkQWxsb2NhdG9yJiBzdG9yYWdlQWxsb2NhdG9y
KCkgeyByZXR1cm4gbV9zdG9yYWdlU3BhY2UuYWxsb2NhdG9yKCk7IH0KICAgICAgICAgQ2hlY2tl
ZEJvb2xlYW4gdHJ5QWxsb2NhdGVTdG9yYWdlKHNpemVfdCwgdm9pZCoqKTsKICAgICAgICAgQ2hl
Y2tlZEJvb2xlYW4gdHJ5UmVhbGxvY2F0ZVN0b3JhZ2Uodm9pZCoqLCBzaXplX3QsIHNpemVfdCk7
CkBAIC0xNjgsNyArMTY5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZGlkQWJh
bmRvbihzaXplX3QpOwogCiAgICAgICAgIGJvb2wgaXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUp
OwotICAgICAgICBib29sIGlzU2FmZVRvU3dlZXBTdHJ1Y3R1cmVzKCk7CiAgICAgICAgIHZvaWQg
ZGlkU3RhcnRWTVNodXRkb3duKCk7CiAKICAgICBwcml2YXRlOgpAQCAtMTg0LDkgKzE4NCw5IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQgdm9p
ZCogYWxsb2NhdGVDZWxsKEhlYXAmKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJp
ZW5kIHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiwgc2l6ZV90KTsKIAotICAgICAgICB2b2lkKiBh
bGxvY2F0ZVdpdGhEZXN0cnVjdG9yKHNpemVfdCk7Ci0gICAgICAgIHZvaWQqIGFsbG9jYXRlV2l0
aG91dERlc3RydWN0b3Ioc2l6ZV90KTsKLSAgICAgICAgdm9pZCogYWxsb2NhdGVTdHJ1Y3R1cmUo
c2l6ZV90KTsKKyAgICAgICAgdm9pZCogYWxsb2NhdGVXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0
cnVjdG9yKHNpemVfdCk7IC8vIEZvciB1c2Ugd2l0aCBzcGVjaWFsIG9iamVjdHMgd2hvc2UgU3Ry
dWN0dXJlcyBuZXZlciBkaWUuCisgICAgICAgIHZvaWQqIGFsbG9jYXRlV2l0aE5vcm1hbERlc3Ry
dWN0b3Ioc2l6ZV90KTsgLy8gRm9yIHVzZSB3aXRoIG9iamVjdHMgdGhhdCBpbmhlcml0IGRpcmVj
dGx5IG9yIGluZGlyZWN0bHkgZnJvbSBKU0Rlc3RydWN0aWJsZU9iamVjdC4KKyAgICAgICAgdm9p
ZCogYWxsb2NhdGVXaXRob3V0RGVzdHJ1Y3RvcihzaXplX3QpOyAvLyBGb3IgdXNlIHdpdGggb2Jq
ZWN0cyB3aXRob3V0IGRlc3RydWN0b3JzLgogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
bWluRXh0cmFDb3N0ID0gMjU2OwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEV4dHJh
Q29zdCA9IDEwMjQgKiAxMDI0OwpAQCAtMzYxLDEwICszNjEsMTYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHJldHVybiBmb3JFYWNoUHJvdGVjdGVkQ2VsbChmdW5jdG9yKTsKICAgICB9CiAK
LSAgICBpbmxpbmUgdm9pZCogSGVhcDo6YWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihzaXplX3QgYnl0
ZXMpCisgICAgaW5saW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlV2l0aE5vcm1hbERlc3RydWN0b3Io
c2l6ZV90IGJ5dGVzKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzVmFsaWRBbGxvY2F0aW9uKGJ5
dGVzKSk7Ci0gICAgICAgIHJldHVybiBtX29iamVjdFNwYWNlLmFsbG9jYXRlV2l0aERlc3RydWN0
b3IoYnl0ZXMpOworICAgICAgICByZXR1cm4gbV9vYmplY3RTcGFjZS5hbGxvY2F0ZVdpdGhOb3Jt
YWxEZXN0cnVjdG9yKGJ5dGVzKTsKKyAgICB9CisgICAgCisgICAgaW5saW5lIHZvaWQqIEhlYXA6
OmFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpCisg
ICAgeworICAgICAgICBBU1NFUlQoaXNWYWxpZEFsbG9jYXRpb24oYnl0ZXMpKTsKKyAgICAgICAg
cmV0dXJuIG1fb2JqZWN0U3BhY2UuYWxsb2NhdGVXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVj
dG9yKGJ5dGVzKTsKICAgICB9CiAgICAgCiAgICAgaW5saW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRl
V2l0aG91dERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKQpAQCAtMzczLDExICszNzksNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuYWxsb2NhdGVXaXRob3V0
RGVzdHJ1Y3RvcihieXRlcyk7CiAgICAgfQogICAgCi0gICAgaW5saW5lIHZvaWQqIEhlYXA6OmFs
bG9jYXRlU3RydWN0dXJlKHNpemVfdCBieXRlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX29i
amVjdFNwYWNlLmFsbG9jYXRlU3RydWN0dXJlKGJ5dGVzKTsKLSAgICB9Ci0gCiAgICAgaW5saW5l
IENoZWNrZWRCb29sZWFuIEhlYXA6OnRyeUFsbG9jYXRlU3RvcmFnZShzaXplX3QgYnl0ZXMsIHZv
aWQqKiBvdXRQdHIpCiAgICAgewogICAgICAgICByZXR1cm4gbV9zdG9yYWdlU3BhY2UudHJ5QWxs
b2NhdGUoYnl0ZXMsIG91dFB0cik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
bmNyZW1lbnRhbFN3ZWVwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDcgKzQ4LDYgQEAgc3RhdGljIGNvbnN0IGRvdWJsZSBzd2VlcFRpbWVNdWx0aXBs
aWVyIAogSW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIoSGVhcCogaGVhcCwg
Q0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCiAgICAgOiBIZWFwVGltZXIoaGVhcC0+Z2xvYmFsRGF0YSgp
LCBydW5Mb29wKQogICAgICwgbV9jdXJyZW50QmxvY2tUb1N3ZWVwSW5kZXgoMCkKLSAgICAsIG1f
c3RydWN0dXJlc0NhbkJlU3dlcHQoZmFsc2UpCiB7CiB9CiAKQEAgLTcyLDcgKzcxLDYgQEAgdm9p
ZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNhbmNlbFRpbWVyKCkKIEluY3JlbWVudGFsU3dlZXBlcjo6
SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqIGhlYXApCiAgICAgOiBIZWFwVGltZXIoaGVhcC0+Z2xv
YmFsRGF0YSgpKQogICAgICwgbV9jdXJyZW50QmxvY2tUb1N3ZWVwSW5kZXgoMCkKLSAgICAsIG1f
c3RydWN0dXJlc0NhbkJlU3dlcHQoZmFsc2UpCiB7CiB9CiAKQEAgLTExOSwxMCArMTE3LDYgQEAg
dm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKAogewogICAgIHdoaWxlICht
X2N1cnJlbnRCbG9ja1RvU3dlZXBJbmRleCA8IG1fYmxvY2tzVG9Td2VlcC5zaXplKCkpIHsKICAg
ICAgICAgTWFya2VkQmxvY2sqIGJsb2NrID0gbV9ibG9ja3NUb1N3ZWVwW21fY3VycmVudEJsb2Nr
VG9Td2VlcEluZGV4KytdOwotICAgICAgICBpZiAoYmxvY2stPm9ubHlDb250YWluc1N0cnVjdHVy
ZXMoKSkKLSAgICAgICAgICAgIG1fc3RydWN0dXJlc0NhbkJlU3dlcHQgPSB0cnVlOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBBU1NFUlQoIW1fc3RydWN0dXJlc0NhbkJlU3dlcHQpOwogCiAg
ICAgICAgIGlmICghYmxvY2stPm5lZWRzU3dlZXBpbmcoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwpAQCAtMTM5LDE0ICsxMzMsMTIgQEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN0YXJ0U3dl
ZXBpbmcoYwogICAgIENvcHlGdW5jdG9yIGZ1bmN0b3IobV9ibG9ja3NUb1N3ZWVwKTsKICAgICBt
X2dsb2JhbERhdGEtPmhlYXAub2JqZWN0U3BhY2UoKS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAg
ICAgbV9jdXJyZW50QmxvY2tUb1N3ZWVwSW5kZXggPSAwOwotICAgIG1fc3RydWN0dXJlc0NhbkJl
U3dlcHQgPSBmYWxzZTsKICAgICBzY2hlZHVsZVRpbWVyKCk7CiB9CiAKIHZvaWQgSW5jcmVtZW50
YWxTd2VlcGVyOjp3aWxsRmluaXNoU3dlZXBpbmcoKQogewogICAgIG1fY3VycmVudEJsb2NrVG9T
d2VlcEluZGV4ID0gMDsKLSAgICBtX3N0cnVjdHVyZXNDYW5CZVN3ZXB0ID0gdHJ1ZTsKICAgICBt
X2Jsb2Nrc1RvU3dlZXAuY2xlYXIoKTsKICAgICBpZiAobV9nbG9iYWxEYXRhKQogICAgICAgICBj
YW5jZWxUaW1lcigpOwpAQCAtMTU2LDcgKzE0OCw2IEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVy
Ojp3aWxsRmluaXNoU3dlZXAKIAogSW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVw
ZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogICAgIDogSGVhcFRpbWVyKGdsb2JhbERhdGEp
Ci0gICAgLCBtX3N0cnVjdHVyZXNDYW5CZVN3ZXB0KGZhbHNlKQogewogfQogCkBAIC0xNzEsMTIg
KzE2MiwxMCBAQCBJbmNyZW1lbnRhbFN3ZWVwZXIqIEluY3JlbWVudGFsU3dlZXBlcjo6CiAKIHZv
aWQgSW5jcmVtZW50YWxTd2VlcGVyOjpzdGFydFN3ZWVwaW5nKGNvbnN0IEhhc2hTZXQ8TWFya2Vk
QmxvY2sqPiYpCiB7Ci0gICAgbV9zdHJ1Y3R1cmVzQ2FuQmVTd2VwdCA9IGZhbHNlOwogfQogCiB2
b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6d2lsbEZpbmlzaFN3ZWVwaW5nKCkKIHsKLSAgICBtX3N0
cnVjdHVyZXNDYW5CZVN3ZXB0ID0gdHJ1ZTsKIH0KIAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6
OnN3ZWVwTmV4dEJsb2NrKCkKQEAgLTE4NSw5ICsxNzQsNCBAQCB2b2lkIEluY3JlbWVudGFsU3dl
ZXBlcjo6c3dlZXBOZXh0QmxvY2soCiAKICNlbmRpZgogCi1ib29sIEluY3JlbWVudGFsU3dlZXBl
cjo6c3RydWN0dXJlc0NhbkJlU3dlcHQoKQotewotICAgIHJldHVybiBtX3N0cnVjdHVyZXNDYW5C
ZVN3ZXB0OwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCShyZXZpc2lvbiAxMjg3MTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYsNyArNTYsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydFN3ZWVwaW5n
KGNvbnN0IEhhc2hTZXQ8TWFya2VkQmxvY2sqPiYgYmxvY2tTbmFwc2hvdCk7CiAgICAgdmlydHVh
bCB2b2lkIGRvV29yaygpOwogICAgIHZvaWQgc3dlZXBOZXh0QmxvY2soKTsKLSAgICBib29sIHN0
cnVjdHVyZXNDYW5CZVN3ZXB0KCk7CiAgICAgdm9pZCB3aWxsRmluaXNoU3dlZXBpbmcoKTsKIAog
cHJpdmF0ZToKQEAgLTc4LDcgKzc3LDYgQEAgcHJpdmF0ZToKICAgICBJbmNyZW1lbnRhbFN3ZWVw
ZXIoSlNHbG9iYWxEYXRhKik7CiAgICAgCiAjZW5kaWYKLSAgICBib29sIG1fc3RydWN0dXJlc0Nh
bkJlU3dlcHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMTI4NzEyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsMTcgKzMwLDYgQEAgYm9vbCBNYXJrZWRBbGxvY2F0b3I6OmlzUGFnZWRP
dXQoZG91YmxlIAogaW5saW5lIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVIZWxw
ZXIoc2l6ZV90IGJ5dGVzKQogewogICAgIGlmICghbV9mcmVlTGlzdC5oZWFkKSB7Ci0gICAgICAg
IGlmIChtX29ubHlDb250YWluc1N0cnVjdHVyZXMgJiYgIW1faGVhcC0+aXNTYWZlVG9Td2VlcFN0
cnVjdHVyZXMoKSkgewotICAgICAgICAgICAgaWYgKG1fY3VycmVudEJsb2NrKSB7Ci0gICAgICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPmRpZENvbnN1bWVGcmVlTGlzdCgpOwotICAgICAgICAg
ICAgICAgIG1fY3VycmVudEJsb2NrID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8v
IFdlIHN3ZWVwIGFub3RoZXIgcmFuZG9tIGJsb2NrIGhlcmUgc28gdGhhdCB3ZSBjYW4gbWFrZSBw
cm9ncmVzcwotICAgICAgICAgICAgLy8gdG93YXJkIGJlaW5nIGFibGUgdG8gc3dlZXAgU3RydWN0
dXJlcy4KLSAgICAgICAgICAgIG1faGVhcC0+c3dlZXBlcigpLT5zd2VlcE5leHRCbG9jaygpOwot
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQogICAgICAgICBmb3IgKE1hcmtlZEJs
b2NrKiYgYmxvY2sgPSBtX2Jsb2Nrc1RvU3dlZXA7IGJsb2NrOyBibG9jayA9IGJsb2NrLT5uZXh0
KCkpIHsKICAgICAgICAgICAgIE1hcmtlZEJsb2NrOjpGcmVlTGlzdCBmcmVlTGlzdCA9IGJsb2Nr
LT5zd2VlcChNYXJrZWRCbG9jazo6U3dlZXBUb0ZyZWVMaXN0KTsKICAgICAgICAgICAgIGlmICgh
ZnJlZUxpc3QuaGVhZCkgewpAQCAtMTI0LDEzICsxMTMsMTMgQEAgTWFya2VkQmxvY2sqIE1hcmtl
ZEFsbG9jYXRvcjo6YWxsb2NhdGVCbAogCiAgICAgaWYgKGJsb2NrU2l6ZSA9PSBNYXJrZWRCbG9j
azo6YmxvY2tTaXplKSB7CiAgICAgICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBhbGxvY2F0aW9u
ID0gbV9oZWFwLT5ibG9ja0FsbG9jYXRvcigpLmFsbG9jYXRlKCk7Ci0gICAgICAgIHJldHVybiBN
YXJrZWRCbG9jazo6Y3JlYXRlKGFsbG9jYXRpb24sIG1faGVhcCwgY2VsbFNpemUsIG1fY2VsbHNO
ZWVkRGVzdHJ1Y3Rpb24sIG1fb25seUNvbnRhaW5zU3RydWN0dXJlcyk7CisgICAgICAgIHJldHVy
biBNYXJrZWRCbG9jazo6Y3JlYXRlKGFsbG9jYXRpb24sIHRoaXMsIGNlbGxTaXplLCBtX2Rlc3Ry
dWN0b3JUeXBlKTsKICAgICB9CiAKICAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQgYWxsb2NhdGlv
biA9IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZDo6YWxsb2NhdGUoYmxvY2tTaXplLCBNYXJrZWRCbG9j
azo6YmxvY2tTaXplLCBPU0FsbG9jYXRvcjo6SlNHQ0hlYXBQYWdlcyk7CiAgICAgaWYgKCFzdGF0
aWNfY2FzdDxib29sPihhbGxvY2F0aW9uKSkKICAgICAgICAgQ1JBU0goKTsKLSAgICByZXR1cm4g
TWFya2VkQmxvY2s6OmNyZWF0ZShhbGxvY2F0aW9uLCBtX2hlYXAsIGNlbGxTaXplLCBtX2NlbGxz
TmVlZERlc3RydWN0aW9uLCBtX29ubHlDb250YWluc1N0cnVjdHVyZXMpOworICAgIHJldHVybiBN
YXJrZWRCbG9jazo6Y3JlYXRlKGFsbG9jYXRpb24sIHRoaXMsIGNlbGxTaXplLCBtX2Rlc3RydWN0
b3JUeXBlKTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJsb2Nr
KiBibG9jaykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9j
YXRvci5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQgY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0
YSgpOwogICAgIHNpemVfdCBjZWxsU2l6ZSgpIHsgcmV0dXJuIG1fY2VsbFNpemU7IH0KLSAgICBi
b29sIGNlbGxzTmVlZERlc3RydWN0aW9uKCkgeyByZXR1cm4gbV9jZWxsc05lZWREZXN0cnVjdGlv
bjsgfQotICAgIGJvb2wgb25seUNvbnRhaW5zU3RydWN0dXJlcygpIHsgcmV0dXJuIG1fb25seUNv
bnRhaW5zU3RydWN0dXJlczsgfQorICAgIE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlwZSBkZXN0
cnVjdG9yVHlwZSgpIHsgcmV0dXJuIG1fZGVzdHJ1Y3RvclR5cGU7IH0KICAgICB2b2lkKiBhbGxv
Y2F0ZShzaXplX3QpOwogICAgIEhlYXAqIGhlYXAoKSB7IHJldHVybiBtX2hlYXA7IH0KICAgICAK
QEAgLTMyLDcgKzMxLDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgYWRkQmxvY2soTWFya2Vk
QmxvY2sqKTsKICAgICB2b2lkIHJlbW92ZUJsb2NrKE1hcmtlZEJsb2NrKik7Ci0gICAgdm9pZCBp
bml0KEhlYXAqLCBNYXJrZWRTcGFjZSosIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBjZWxsc05lZWRE
ZXN0cnVjdGlvbiwgYm9vbCBvbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKTsKKyAgICB2b2lkIGluaXQo
SGVhcCosIE1hcmtlZFNwYWNlKiwgc2l6ZV90IGNlbGxTaXplLCBNYXJrZWRCbG9jazo6RGVzdHJ1
Y3RvclR5cGUpOwogCiAgICAgYm9vbCBpc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSk7CiAgICAK
QEAgLTQ5LDggKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBNYXJrZWRCbG9jayogbV9ibG9ja3NUb1N3
ZWVwOwogICAgIERvdWJseUxpbmtlZExpc3Q8TWFya2VkQmxvY2s+IG1fYmxvY2tMaXN0OwogICAg
IHNpemVfdCBtX2NlbGxTaXplOwotICAgIGJvb2wgbV9jZWxsc05lZWREZXN0cnVjdGlvbjsKLSAg
ICBib29sIG1fb25seUNvbnRhaW5zU3RydWN0dXJlczsKKyAgICBNYXJrZWRCbG9jazo6RGVzdHJ1
Y3RvclR5cGUgbV9kZXN0cnVjdG9yVHlwZTsKICAgICBIZWFwKiBtX2hlYXA7CiAgICAgTWFya2Vk
U3BhY2UqIG1fbWFya2VkU3BhY2U7CiB9OwpAQCAtNTksMjAgKzU3LDE4IEBAIGlubGluZSBNYXJr
ZWRBbGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRvcigKICAgICA6IG1fY3VycmVudEJsb2NrKDApCiAg
ICAgLCBtX2Jsb2Nrc1RvU3dlZXAoMCkKICAgICAsIG1fY2VsbFNpemUoMCkKLSAgICAsIG1fY2Vs
bHNOZWVkRGVzdHJ1Y3Rpb24odHJ1ZSkKLSAgICAsIG1fb25seUNvbnRhaW5zU3RydWN0dXJlcyhm
YWxzZSkKKyAgICAsIG1fZGVzdHJ1Y3RvclR5cGUoTWFya2VkQmxvY2s6Ok5vbmUpCiAgICAgLCBt
X2hlYXAoMCkKICAgICAsIG1fbWFya2VkU3BhY2UoMCkKIHsKIH0KIAotaW5saW5lIHZvaWQgTWFy
a2VkQWxsb2NhdG9yOjppbml0KEhlYXAqIGhlYXAsIE1hcmtlZFNwYWNlKiBtYXJrZWRTcGFjZSwg
c2l6ZV90IGNlbGxTaXplLCBib29sIGNlbGxzTmVlZERlc3RydWN0aW9uLCBib29sIG9ubHlDb250
YWluc1N0cnVjdHVyZXMpCitpbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmluaXQoSGVhcCog
aGVhcCwgTWFya2VkU3BhY2UqIG1hcmtlZFNwYWNlLCBzaXplX3QgY2VsbFNpemUsIE1hcmtlZEJs
b2NrOjpEZXN0cnVjdG9yVHlwZSBkZXN0cnVjdG9yVHlwZSkKIHsKICAgICBtX2hlYXAgPSBoZWFw
OwogICAgIG1fbWFya2VkU3BhY2UgPSBtYXJrZWRTcGFjZTsKICAgICBtX2NlbGxTaXplID0gY2Vs
bFNpemU7Ci0gICAgbV9jZWxsc05lZWREZXN0cnVjdGlvbiA9IGNlbGxzTmVlZERlc3RydWN0aW9u
OwotICAgIG1fb25seUNvbnRhaW5zU3RydWN0dXJlcyA9IG9ubHlDb250YWluc1N0cnVjdHVyZXM7
CisgICAgbV9kZXN0cnVjdG9yVHlwZSA9IGRlc3RydWN0b3JUeXBlOwogfQogCiBpbmxpbmUgdm9p
ZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZShzaXplX3QgYnl0ZXMpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZpc2lvbiAxMjg3MTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDI2ICsyOCwyNiBAQAogCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgi
CiAjaW5jbHVkZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJK
U0Rlc3RydWN0aWJsZU9iamVjdC5oIgogCiAKIG5hbWVzcGFjZSBKU0MgewogCi1NYXJrZWRCbG9j
ayogTWFya2VkQmxvY2s6OmNyZWF0ZShjb25zdCBQYWdlQWxsb2NhdGlvbkFsaWduZWQmIGFsbG9j
YXRpb24sIEhlYXAqIGhlYXAsIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBjZWxsc05lZWREZXN0cnVj
dGlvbiwgYm9vbCBvbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKQorTWFya2VkQmxvY2sqIE1hcmtlZEJs
b2NrOjpjcmVhdGUoY29uc3QgUGFnZUFsbG9jYXRpb25BbGlnbmVkJiBhbGxvY2F0aW9uLCBNYXJr
ZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNlbGxTaXplLCBEZXN0cnVjdG9yVHlwZSBk
ZXN0cnVjdG9yVHlwZSkKIHsKLSAgICByZXR1cm4gbmV3IChOb3ROdWxsLCBhbGxvY2F0aW9uLmJh
c2UoKSkgTWFya2VkQmxvY2soYWxsb2NhdGlvbiwgaGVhcCwgY2VsbFNpemUsIGNlbGxzTmVlZERl
c3RydWN0aW9uLCBvbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKTsKKyAgICByZXR1cm4gbmV3IChOb3RO
dWxsLCBhbGxvY2F0aW9uLmJhc2UoKSkgTWFya2VkQmxvY2soYWxsb2NhdGlvbiwgYWxsb2NhdG9y
LCBjZWxsU2l6ZSwgZGVzdHJ1Y3RvclR5cGUpOwogfQogCi1NYXJrZWRCbG9jazo6TWFya2VkQmxv
Y2soY29uc3QgUGFnZUFsbG9jYXRpb25BbGlnbmVkJiBhbGxvY2F0aW9uLCBIZWFwKiBoZWFwLCBz
aXplX3QgY2VsbFNpemUsIGJvb2wgY2VsbHNOZWVkRGVzdHJ1Y3Rpb24sIGJvb2wgb25seUNvbnRh
aW5zU3RydWN0dXJlcykKK01hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayhjb25zdCBQYWdlQWxsb2Nh
dGlvbkFsaWduZWQmIGFsbG9jYXRpb24sIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXpl
X3QgY2VsbFNpemUsIERlc3RydWN0b3JUeXBlIGRlc3RydWN0b3JUeXBlKQogICAgIDogSGVhcEJs
b2NrPE1hcmtlZEJsb2NrPihhbGxvY2F0aW9uKQogICAgICwgbV9hdG9tc1BlckNlbGwoKGNlbGxT
aXplICsgYXRvbVNpemUgLSAxKSAvIGF0b21TaXplKQogICAgICwgbV9lbmRBdG9tKGF0b21zUGVy
QmxvY2sgLSBtX2F0b21zUGVyQ2VsbCArIDEpCi0gICAgLCBtX2NlbGxzTmVlZERlc3RydWN0aW9u
KGNlbGxzTmVlZERlc3RydWN0aW9uKQotICAgICwgbV9vbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKG9u
bHlDb250YWluc1N0cnVjdHVyZXMpCisgICAgLCBtX2Rlc3RydWN0b3JUeXBlKGRlc3RydWN0b3JU
eXBlKQorICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQogICAgICwgbV9zdGF0ZShOZXcpIC8v
IEFsbCBjZWxscyBzdGFydCBvdXQgdW5tYXJrZWQuCi0gICAgLCBtX3dlYWtTZXQoaGVhcC0+Z2xv
YmFsRGF0YSgpKQorICAgICwgbV93ZWFrU2V0KGFsbG9jYXRvci0+aGVhcCgpLT5nbG9iYWxEYXRh
KCkpCiB7Ci0gICAgQVNTRVJUKGhlYXApOworICAgIEFTU0VSVChhbGxvY2F0b3IpOwogICAgIEhF
QVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7CiB9CiAKQEAgLTY1LDExICs2NSwx
MSBAQCBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0b3IoCiAgICAgY2VsbC0+
emFwKCk7CiB9CiAKLXRlbXBsYXRlPE1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlIGJsb2NrU3RhdGUs
IE1hcmtlZEJsb2NrOjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBib29sIGRlc3RydWN0b3JDYWxsTmVl
ZGVkPgordGVtcGxhdGU8TWFya2VkQmxvY2s6OkJsb2NrU3RhdGUgYmxvY2tTdGF0ZSwgTWFya2Vk
QmxvY2s6OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlwZSBk
dG9yVHlwZT4KIE1hcmtlZEJsb2NrOjpGcmVlTGlzdCBNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRT
d2VlcCgpCiB7CiAgICAgQVNTRVJUKGJsb2NrU3RhdGUgIT0gQWxsb2NhdGVkICYmIGJsb2NrU3Rh
dGUgIT0gRnJlZUxpc3RlZCk7Ci0gICAgQVNTRVJUKGRlc3RydWN0b3JDYWxsTmVlZGVkIHx8IHN3
ZWVwTW9kZSAhPSBTd2VlcE9ubHkpOworICAgIEFTU0VSVCghKGR0b3JUeXBlID09IE1hcmtlZEJs
b2NrOjpOb25lICYmIHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkpKTsKIAogICAgIC8vIFRoaXMgcHJv
ZHVjZXMgYSBmcmVlIGxpc3QgdGhhdCBpcyBvcmRlcmVkIGluIHJldmVyc2UgdGhyb3VnaCB0aGUg
YmxvY2suCiAgICAgLy8gVGhpcyBpcyBmaW5lLCBzaW5jZSB0aGUgYWxsb2NhdGlvbiBjb2RlIG1h
a2VzIG5vIGFzc3VtcHRpb25zIGFib3V0IHRoZQpAQCAtODIsNyArODIsNyBAQCBNYXJrZWRCbG9j
azo6RnJlZUxpc3QgTWFya2VkQmxvY2s6OnNwZWNpCiAKICAgICAgICAgSlNDZWxsKiBjZWxsID0g
cmVpbnRlcnByZXRfY2FzdF9wdHI8SlNDZWxsKj4oJmF0b21zKClbaV0pOwogCi0gICAgICAgIGlm
IChkZXN0cnVjdG9yQ2FsbE5lZWRlZCAmJiBibG9ja1N0YXRlICE9IE5ldykKKyAgICAgICAgaWYg
KGR0b3JUeXBlICE9IE1hcmtlZEJsb2NrOjpOb25lICYmIGJsb2NrU3RhdGUgIT0gTmV3KQogICAg
ICAgICAgICAgY2FsbERlc3RydWN0b3IoY2VsbCk7CiAKICAgICAgICAgaWYgKHN3ZWVwTW9kZSA9
PSBTd2VlcFRvRnJlZUxpc3QpIHsKQEAgLTEwMywyMSArMTAzLDIzIEBAIE1hcmtlZEJsb2NrOjpG
cmVlTGlzdCBNYXJrZWRCbG9jazo6c3dlZXAKIAogICAgIG1fd2Vha1NldC5zd2VlcCgpOwogCi0g
ICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkgJiYgIW1fY2VsbHNOZWVkRGVzdHJ1Y3Rpb24p
CisgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkgJiYgbV9kZXN0cnVjdG9yVHlwZSA9PSBN
YXJrZWRCbG9jazo6Tm9uZSkKICAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7CiAKLSAgICBpZiAo
bV9jZWxsc05lZWREZXN0cnVjdGlvbikKLSAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyPHRydWU+
KHN3ZWVwTW9kZSk7Ci0gICAgcmV0dXJuIHN3ZWVwSGVscGVyPGZhbHNlPihzd2VlcE1vZGUpOwor
ICAgIGlmIChtX2Rlc3RydWN0b3JUeXBlID09IE1hcmtlZEJsb2NrOjpJbW1vcnRhbFN0cnVjdHVy
ZSkKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyPE1hcmtlZEJsb2NrOjpJbW1vcnRhbFN0cnVj
dHVyZT4oc3dlZXBNb2RlKTsKKyAgICBpZiAobV9kZXN0cnVjdG9yVHlwZSA9PSBNYXJrZWRCbG9j
azo6Tm9ybWFsKQorICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXI8TWFya2VkQmxvY2s6Ok5vcm1h
bD4oc3dlZXBNb2RlKTsKKyAgICByZXR1cm4gc3dlZXBIZWxwZXI8TWFya2VkQmxvY2s6Ok5vbmU+
KHN3ZWVwTW9kZSk7CiB9CiAKLXRlbXBsYXRlPGJvb2wgZGVzdHJ1Y3RvckNhbGxOZWVkZWQ+Cit0
ZW1wbGF0ZTxNYXJrZWRCbG9jazo6RGVzdHJ1Y3RvclR5cGUgZHRvclR5cGU+CiBNYXJrZWRCbG9j
azo6RnJlZUxpc3QgTWFya2VkQmxvY2s6OnN3ZWVwSGVscGVyKFN3ZWVwTW9kZSBzd2VlcE1vZGUp
CiB7CiAgICAgc3dpdGNoIChtX3N0YXRlKSB7CiAgICAgY2FzZSBOZXc6CiAgICAgICAgIEFTU0VS
VChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KTsKLSAgICAgICAgcmV0dXJuIHNwZWNpYWxp
emVkU3dlZXA8TmV3LCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0b3JDYWxsTmVlZGVkPigpOwor
ICAgICAgICByZXR1cm4gc3BlY2lhbGl6ZWRTd2VlcDxOZXcsIFN3ZWVwVG9GcmVlTGlzdCwgZHRv
clR5cGU+KCk7CiAgICAgY2FzZSBGcmVlTGlzdGVkOgogICAgICAgICAvLyBIYXBwZW5zIHdoZW4g
YSBibG9jayB0cmFuc2l0aW9ucyB0byBmdWxseSBhbGxvY2F0ZWQuCiAgICAgICAgIEFTU0VSVChz
d2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KTsKQEAgLTEyNiwxMCArMTI4LDkgQEAgTWFya2Vk
QmxvY2s6OkZyZWVMaXN0IE1hcmtlZEJsb2NrOjpzd2VlcAogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7CiAgICAgY2FzZSBNYXJrZWQ6Ci0g
ICAgICAgIEFTU0VSVCghbV9vbmx5Q29udGFpbnNTdHJ1Y3R1cmVzIHx8IGhlYXAoKS0+aXNTYWZl
VG9Td2VlcFN0cnVjdHVyZXMoKSk7CiAgICAgICAgIHJldHVybiBzd2VlcE1vZGUgPT0gU3dlZXBU
b0ZyZWVMaXN0Ci0gICAgICAgICAgICA/IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcFRv
RnJlZUxpc3QsIGRlc3RydWN0b3JDYWxsTmVlZGVkPigpCi0gICAgICAgICAgICA6IHNwZWNpYWxp
emVkU3dlZXA8TWFya2VkLCBTd2VlcE9ubHksIGRlc3RydWN0b3JDYWxsTmVlZGVkPigpOworICAg
ICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBUb0ZyZWVMaXN0LCBkdG9y
VHlwZT4oKQorICAgICAgICAgICAgOiBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBPbmx5
LCBkdG9yVHlwZT4oKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMTI4NzEy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBj
b3B5KQpAQCAtNTIsNiArNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBI
ZWFwOwogICAgIGNsYXNzIEpTQ2VsbDsKKyAgICBjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CiAKICAg
ICB0eXBlZGVmIHVpbnRwdHJfdCBCaXRzOwogCkBAIC0xMTIsNyArMTEzLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBSZXR1cm5UeXBlIG1fY291bnQ7CiAgICAgICAgIH07CiAKLSAg
ICAgICAgc3RhdGljIE1hcmtlZEJsb2NrKiBjcmVhdGUoY29uc3QgUGFnZUFsbG9jYXRpb25BbGln
bmVkJiwgSGVhcCosIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBjZWxsc05lZWREZXN0cnVjdGlvbiwg
Ym9vbCBvbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKTsKKyAgICAgICAgZW51bSBEZXN0cnVjdG9yVHlw
ZSB7IE5vbmUsIEltbW9ydGFsU3RydWN0dXJlLCBOb3JtYWwgfTsKKyAgICAgICAgc3RhdGljIE1h
cmtlZEJsb2NrKiBjcmVhdGUoY29uc3QgUGFnZUFsbG9jYXRpb25BbGlnbmVkJiwgTWFya2VkQWxs
b2NhdG9yKiwgc2l6ZV90IGNlbGxTaXplLCBEZXN0cnVjdG9yVHlwZSk7CiAKICAgICAgICAgc3Rh
dGljIGJvb2wgaXNBdG9tQWxpZ25lZChjb25zdCB2b2lkKik7CiAgICAgICAgIHN0YXRpYyBNYXJr
ZWRCbG9jayogYmxvY2tGb3IoY29uc3Qgdm9pZCopOwpAQCAtMTIwLDYgKzEyMiw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgdm9pZCBsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgp
OwogCisgICAgICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yKCkgY29uc3Q7CiAgICAgICAg
IEhlYXAqIGhlYXAoKSBjb25zdDsKICAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkg
Y29uc3Q7CiAgICAgICAgIFdlYWtTZXQmIHdlYWtTZXQoKTsKQEAgLTE0Myw4ICsxNDYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc0VtcHR5KCk7CiAKICAgICAgICAgc2l6ZV90
IGNlbGxTaXplKCk7Ci0gICAgICAgIGJvb2wgY2VsbHNOZWVkRGVzdHJ1Y3Rpb24oKTsKLSAgICAg
ICAgYm9vbCBvbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKCk7CisgICAgICAgIERlc3RydWN0b3JUeXBl
IGRlc3RydWN0b3JUeXBlKCk7CiAKICAgICAgICAgc2l6ZV90IHNpemUoKTsKICAgICAgICAgc2l6
ZV90IGNhcGFjaXR5KCk7CkBAIC0xOTQsMTUgKzE5NiwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0g
MTsgLy8gYXRvbVNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by4KIAogICAgICAgICBlbnVtIEJs
b2NrU3RhdGUgeyBOZXcsIEZyZWVMaXN0ZWQsIEFsbG9jYXRlZCwgTWFya2VkIH07Ci0gICAgICAg
IHRlbXBsYXRlPGJvb2wgZGVzdHJ1Y3RvckNhbGxOZWVkZWQ+IEZyZWVMaXN0IHN3ZWVwSGVscGVy
KFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CisgICAgICAgIHRlbXBsYXRlPERlc3RydWN0b3JUeXBl
PiBGcmVlTGlzdCBzd2VlcEhlbHBlcihTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwogCiAgICAgICAg
IHR5cGVkZWYgY2hhciBBdG9tW2F0b21TaXplXTsKIAotICAgICAgICBNYXJrZWRCbG9jayhjb25z
dCBQYWdlQWxsb2NhdGlvbkFsaWduZWQmLCBIZWFwKiwgc2l6ZV90IGNlbGxTaXplLCBib29sIGNl
bGxzTmVlZERlc3RydWN0aW9uLCBib29sIG9ubHlDb250YWluc1N0cnVjdHVyZXMpOworICAgICAg
ICBNYXJrZWRCbG9jayhjb25zdCBQYWdlQWxsb2NhdGlvbkFsaWduZWQmLCBNYXJrZWRBbGxvY2F0
b3IqLCBzaXplX3QgY2VsbFNpemUsIERlc3RydWN0b3JUeXBlKTsKICAgICAgICAgQXRvbSogYXRv
bXMoKTsKICAgICAgICAgc2l6ZV90IGF0b21OdW1iZXIoY29uc3Qgdm9pZCopOwogICAgICAgICB2
b2lkIGNhbGxEZXN0cnVjdG9yKEpTQ2VsbCopOwotICAgICAgICB0ZW1wbGF0ZTxCbG9ja1N0YXRl
LCBTd2VlcE1vZGUsIGJvb2wgZGVzdHJ1Y3RvckNhbGxOZWVkZWQ+IEZyZWVMaXN0IHNwZWNpYWxp
emVkU3dlZXAoKTsKKyAgICAgICAgdGVtcGxhdGU8QmxvY2tTdGF0ZSwgU3dlZXBNb2RlLCBEZXN0
cnVjdG9yVHlwZT4gRnJlZUxpc3Qgc3BlY2lhbGl6ZWRTd2VlcCgpOwogICAgICAgICAKICNpZiBF
TkFCTEUoR0dDKQogICAgICAgICBDYXJkU2V0PGJ5dGVzUGVyQ2FyZCwgYmxvY2tTaXplPiBtX2Nh
cmRzOwpAQCAtMjE1LDggKzIxNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogI2Vsc2UKICAgICAgICAg
V1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaywgV1RGOjpCaXRtYXBOb3RBdG9taWM+IG1fbWFya3M7
CiAjZW5kaWYKLSAgICAgICAgYm9vbCBtX2NlbGxzTmVlZERlc3RydWN0aW9uOwotICAgICAgICBi
b29sIG1fb25seUNvbnRhaW5zU3RydWN0dXJlczsKKyAgICAgICAgRGVzdHJ1Y3RvclR5cGUgbV9k
ZXN0cnVjdG9yVHlwZTsKKyAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKICAg
ICAgICAgQmxvY2tTdGF0ZSBtX3N0YXRlOwogICAgICAgICBXZWFrU2V0IG1fd2Vha1NldDsKICAg
ICB9OwpAQCAtMjYxLDYgKzI2MywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3dlZXAo
KTsKICAgICB9CiAKKyAgICBpbmxpbmUgTWFya2VkQWxsb2NhdG9yKiBNYXJrZWRCbG9jazo6YWxs
b2NhdG9yKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FsbG9jYXRvcjsKKyAgICB9
CisKICAgICBpbmxpbmUgSGVhcCogTWFya2VkQmxvY2s6OmhlYXAoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fd2Vha1NldC5oZWFwKCk7CkBAIC0zMjYsMTQgKzMzMyw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICByZXR1cm4gbV9hdG9tc1BlckNlbGwgKiBhdG9tU2l6ZTsKICAg
ICB9CiAKLSAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6Y2VsbHNOZWVkRGVzdHJ1Y3Rpb24o
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY2VsbHNOZWVkRGVzdHJ1Y3Rpb247IAotICAgIH0K
LQotICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpvbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKCkK
KyAgICBpbmxpbmUgTWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBlIE1hcmtlZEJsb2NrOjpkZXN0
cnVjdG9yVHlwZSgpCiAgICAgewotICAgICAgICByZXR1cm4gbV9vbmx5Q29udGFpbnNTdHJ1Y3R1
cmVzOworICAgICAgICByZXR1cm4gbV9kZXN0cnVjdG9yVHlwZTsgCiAgICAgfQogCiAgICAgaW5s
aW5lIHNpemVfdCBNYXJrZWRCbG9jazo6c2l6ZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDE3
ICs4MSwxOSBAQCBNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UoSGVhcCogaGVhcCkKICAgICA6IG1f
aGVhcChoZWFwKQogewogICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7IGNl
bGxTaXplIDw9IHByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKSB7Ci0gICAg
ICAgIGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaW5pdChoZWFwLCB0aGlzLCBjZWxsU2l6ZSwgZmFs
c2UsIGZhbHNlKTsKLSAgICAgICAgZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaW5p
dChoZWFwLCB0aGlzLCBjZWxsU2l6ZSwgdHJ1ZSwgZmFsc2UpOworICAgICAgICBhbGxvY2F0b3JG
b3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhpcywgY2VsbFNpemUsIE1hcmtlZEJsb2NrOjpOb25l
KTsKKyAgICAgICAgbm9ybWFsRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaW5pdCho
ZWFwLCB0aGlzLCBjZWxsU2l6ZSwgTWFya2VkQmxvY2s6Ok5vcm1hbCk7CisgICAgICAgIGltbW9y
dGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaW5pdChoZWFwLCB0
aGlzLCBjZWxsU2l6ZSwgTWFya2VkQmxvY2s6OkltbW9ydGFsU3RydWN0dXJlKTsKICAgICB9CiAK
ICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IGltcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IGlt
cHJlY2lzZUN1dG9mZjsgY2VsbFNpemUgKz0gaW1wcmVjaXNlU3RlcCkgewotICAgICAgICBhbGxv
Y2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhpcywgY2VsbFNpemUsIGZhbHNlLCBmYWxz
ZSk7Ci0gICAgICAgIGRlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwg
dGhpcywgY2VsbFNpemUsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgYWxsb2NhdG9yRm9yKGNlbGxT
aXplKS5pbml0KGhlYXAsIHRoaXMsIGNlbGxTaXplLCBNYXJrZWRCbG9jazo6Tm9uZSk7CisgICAg
ICAgIG5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhp
cywgY2VsbFNpemUsIE1hcmtlZEJsb2NrOjpOb3JtYWwpOworICAgICAgICBpbW1vcnRhbFN0cnVj
dHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhpcywgY2Vs
bFNpemUsIE1hcmtlZEJsb2NrOjpJbW1vcnRhbFN0cnVjdHVyZSk7CiAgICAgfQogCi0gICAgbV9s
YXJnZUFsbG9jYXRvci5pbml0KGhlYXAsIHRoaXMsIDAsIHRydWUsIGZhbHNlKTsKLSAgICBtX3N0
cnVjdHVyZUFsbG9jYXRvci5pbml0KGhlYXAsIHRoaXMsIFdURjo6cm91bmRVcFRvTXVsdGlwbGVP
ZigzMiwgc2l6ZW9mKFN0cnVjdHVyZSkpLCB0cnVlLCB0cnVlKTsKKyAgICAvLyBUT0RPOiBEbyB3
ZSBuZWVkIHR3byBzZXBhcmF0ZSBsYXJnZSBhbGxvY2F0b3JzLCBvbmUgZm9yIGltbW9ydGFsIGFu
ZCBvbmUgZm9yIG5vcm1hbD8KKyAgICBtX2xhcmdlQWxsb2NhdG9yLmluaXQoaGVhcCwgdGhpcywg
MCwgTWFya2VkQmxvY2s6OkltbW9ydGFsU3RydWN0dXJlKTsKIH0KIAogTWFya2VkU3BhY2U6On5N
YXJrZWRTcGFjZSgpCkBAIC0xMjAsMTYgKzEyMiwxNyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpyZXNl
dEFsbG9jYXRvcnMoKQogewogICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7
IGNlbGxTaXplIDw9IHByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKSB7CiAg
ICAgICAgIGFsbG9jYXRvckZvcihjZWxsU2l6ZSkucmVzZXQoKTsKLSAgICAgICAgZGVzdHJ1Y3Rv
ckFsbG9jYXRvckZvcihjZWxsU2l6ZSkucmVzZXQoKTsKKyAgICAgICAgbm9ybWFsRGVzdHJ1Y3Rv
ckFsbG9jYXRvckZvcihjZWxsU2l6ZSkucmVzZXQoKTsKKyAgICAgICAgaW1tb3J0YWxTdHJ1Y3R1
cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5yZXNldCgpOwogICAgIH0KIAogICAg
IGZvciAoc2l6ZV90IGNlbGxTaXplID0gaW1wcmVjaXNlU3RlcDsgY2VsbFNpemUgPD0gaW1wcmVj
aXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBpbXByZWNpc2VTdGVwKSB7CiAgICAgICAgIGFsbG9jYXRv
ckZvcihjZWxsU2l6ZSkucmVzZXQoKTsKLSAgICAgICAgZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihj
ZWxsU2l6ZSkucmVzZXQoKTsKKyAgICAgICAgbm9ybWFsRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihj
ZWxsU2l6ZSkucmVzZXQoKTsKKyAgICAgICAgaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxs
b2NhdG9yRm9yKGNlbGxTaXplKS5yZXNldCgpOwogICAgIH0KIAogICAgIG1fbGFyZ2VBbGxvY2F0
b3IucmVzZXQoKTsKLSAgICBtX3N0cnVjdHVyZUFsbG9jYXRvci5yZXNldCgpOwogfQogCiB2b2lk
IE1hcmtlZFNwYWNlOjp2aXNpdFdlYWtTZXRzKEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RWaXNp
dG9yKQpAQCAtMTQ3LDQyICsxNTAsNDQgQEAgdm9pZCBNYXJrZWRTcGFjZTo6Y2Fub25pY2FsaXpl
Q2VsbExpdmVuZQogewogICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7IGNl
bGxTaXplIDw9IHByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKSB7CiAgICAg
ICAgIGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgp
OwotICAgICAgICBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5jYW5vbmljYWxpemVD
ZWxsTGl2ZW5lc3NEYXRhKCk7CisgICAgICAgIG5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3Io
Y2VsbFNpemUpLmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKTsKKyAgICAgICAgaW1tb3J0
YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5jYW5vbmljYWxpemVD
ZWxsTGl2ZW5lc3NEYXRhKCk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgY2VsbFNpemUgPSBp
bXByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8PSBpbXByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IGlt
cHJlY2lzZVN0ZXApIHsKICAgICAgICAgYWxsb2NhdG9yRm9yKGNlbGxTaXplKS5jYW5vbmljYWxp
emVDZWxsTGl2ZW5lc3NEYXRhKCk7Ci0gICAgICAgIGRlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2Vs
bFNpemUpLmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKTsKKyAgICAgICAgbm9ybWFsRGVz
dHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0
YSgpOworICAgICAgICBpbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2Vs
bFNpemUpLmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKTsKICAgICB9CiAKICAgICBtX2xh
cmdlQWxsb2NhdG9yLmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKTsKLSAgICBtX3N0cnVj
dHVyZUFsbG9jYXRvci5jYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7CiB9CiAKIGJvb2wg
TWFya2VkU3BhY2U6OmlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKQogewogICAgIGZvciAoc2l6
ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IHByZWNpc2VDdXRvZmY7IGNl
bGxTaXplICs9IHByZWNpc2VTdGVwKSB7Ci0gICAgICAgIGlmIChhbGxvY2F0b3JGb3IoY2VsbFNp
emUpLmlzUGFnZWRPdXQoZGVhZGxpbmUpIHx8IGRlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNp
emUpLmlzUGFnZWRPdXQoZGVhZGxpbmUpKQorICAgICAgICBpZiAoYWxsb2NhdG9yRm9yKGNlbGxT
aXplKS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSAKKyAgICAgICAgICAgIHx8IG5vcm1hbERlc3RydWN0
b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmlzUGFnZWRPdXQoZGVhZGxpbmUpIAorICAgICAgICAg
ICAgfHwgaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5p
c1BhZ2VkT3V0KGRlYWRsaW5lKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAog
ICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gaW1wcmVjaXNlU3RlcDsgY2VsbFNpemUgPD0gaW1w
cmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBpbXByZWNpc2VTdGVwKSB7Ci0gICAgICAgIGlmIChh
bGxvY2F0b3JGb3IoY2VsbFNpemUpLmlzUGFnZWRPdXQoZGVhZGxpbmUpIHx8IGRlc3RydWN0b3JB
bGxvY2F0b3JGb3IoY2VsbFNpemUpLmlzUGFnZWRPdXQoZGVhZGxpbmUpKQorICAgICAgICBpZiAo
YWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSAKKyAgICAgICAgICAg
IHx8IG5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmlzUGFnZWRPdXQoZGVh
ZGxpbmUpIAorICAgICAgICAgICAgfHwgaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2Nh
dG9yRm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAogICAgIGlmIChtX2xhcmdlQWxsb2NhdG9yLmlzUGFnZWRPdXQoZGVh
ZGxpbmUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChtX3N0cnVjdHVyZUFsbG9j
YXRvci5pc1BhZ2VkT3V0KGRlYWRsaW5lKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OmZyZWVCbG9jayhNYXJrZWRCbG9j
ayogYmxvY2spCiB7Ci0gICAgYWxsb2NhdG9yRm9yKGJsb2NrKS5yZW1vdmVCbG9jayhibG9jayk7
CisgICAgYmxvY2stPmFsbG9jYXRvcigpLT5yZW1vdmVCbG9jayhibG9jayk7CiAgICAgbV9ibG9j
a3MucmVtb3ZlKGJsb2NrKTsKICAgICBpZiAoYmxvY2stPmNhcGFjaXR5KCkgPT0gTWFya2VkQmxv
Y2s6OmJsb2NrU2l6ZSkgewogICAgICAgICBtX2hlYXAtPmJsb2NrQWxsb2NhdG9yKCkuZGVhbGxv
Y2F0ZShNYXJrZWRCbG9jazo6ZGVzdHJveShibG9jaykpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NiwxMSAr
NzYsMTEgQEAgcHVibGljOgogCiAgICAgTWFya2VkQWxsb2NhdG9yJiBmaXJzdEFsbG9jYXRvcigp
OwogICAgIE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yRm9yKHNpemVfdCk7Ci0gICAgTWFya2Vk
QWxsb2NhdG9yJiBhbGxvY2F0b3JGb3IoTWFya2VkQmxvY2sqKTsKLSAgICBNYXJrZWRBbGxvY2F0
b3ImIGRlc3RydWN0b3JBbGxvY2F0b3JGb3Ioc2l6ZV90KTsKLSAgICB2b2lkKiBhbGxvY2F0ZVdp
dGhEZXN0cnVjdG9yKHNpemVfdCk7CisgICAgTWFya2VkQWxsb2NhdG9yJiBpbW1vcnRhbFN0cnVj
dHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3Ioc2l6ZV90KTsKKyAgICBNYXJrZWRBbGxvY2F0b3Im
IG5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3Ioc2l6ZV90KTsKKyAgICB2b2lkKiBhbGxvY2F0
ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKHNpemVfdCk7CisgICAgdm9pZCogYWxsb2NhdGVXaXRoSW1t
b3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemVfdCk7CiAgICAgdm9pZCogYWxsb2NhdGVXaXRo
b3V0RGVzdHJ1Y3RvcihzaXplX3QpOwotICAgIHZvaWQqIGFsbG9jYXRlU3RydWN0dXJlKHNpemVf
dCk7CiAgCiAgICAgdm9pZCByZXNldEFsbG9jYXRvcnMoKTsKIApAQCAtMTMxLDEwICsxMzEsMTAg
QEAgcHJpdmF0ZToKICAgICAgICAgRml4ZWRBcnJheTxNYXJrZWRBbGxvY2F0b3IsIGltcHJlY2lz
ZUNvdW50PiBpbXByZWNpc2VBbGxvY2F0b3JzOwogICAgIH07CiAKLSAgICBTdWJzcGFjZSBtX2Rl
c3RydWN0b3JTcGFjZTsKKyAgICBTdWJzcGFjZSBtX25vcm1hbERlc3RydWN0b3JTcGFjZTsKKyAg
ICBTdWJzcGFjZSBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlOwogICAgIFN1YnNw
YWNlIG1fbm9ybWFsU3BhY2U7CiAgICAgTWFya2VkQWxsb2NhdG9yIG1fbGFyZ2VBbGxvY2F0b3I7
Ci0gICAgTWFya2VkQWxsb2NhdG9yIG1fc3RydWN0dXJlQWxsb2NhdG9yOwogCiAgICAgSGVhcCog
bV9oZWFwOwogICAgIE1hcmtlZEJsb2NrU2V0IG1fYmxvY2tzOwpAQCAtMTcxLDI0ICsxNzEsMjMg
QEAgaW5saW5lIE1hcmtlZEFsbG9jYXRvciYgTWFya2VkU3BhY2U6OmFsbAogICAgIHJldHVybiBt
X2xhcmdlQWxsb2NhdG9yOwogfQogCi1pbmxpbmUgTWFya2VkQWxsb2NhdG9yJiBNYXJrZWRTcGFj
ZTo6YWxsb2NhdG9yRm9yKE1hcmtlZEJsb2NrKiBibG9jaykKK2lubGluZSBNYXJrZWRBbGxvY2F0
b3ImIE1hcmtlZFNwYWNlOjppbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3Io
c2l6ZV90IGJ5dGVzKQogewotICAgIGlmIChibG9jay0+b25seUNvbnRhaW5zU3RydWN0dXJlcygp
KQotICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmVBbGxvY2F0b3I7Ci0KLSAgICBpZiAoYmxvY2st
PmNlbGxzTmVlZERlc3RydWN0aW9uKCkpCi0gICAgICAgIHJldHVybiBkZXN0cnVjdG9yQWxsb2Nh
dG9yRm9yKGJsb2NrLT5jZWxsU2l6ZSgpKTsKLQotICAgIHJldHVybiBhbGxvY2F0b3JGb3IoYmxv
Y2stPmNlbGxTaXplKCkpOworICAgIEFTU0VSVChieXRlcyk7CisgICAgaWYgKGJ5dGVzIDw9IHBy
ZWNpc2VDdXRvZmYpCisgICAgICAgIHJldHVybiBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3Rv
clNwYWNlLnByZWNpc2VBbGxvY2F0b3JzWyhieXRlcyAtIDEpIC8gcHJlY2lzZVN0ZXBdOworICAg
IGlmIChieXRlcyA8PSBpbXByZWNpc2VDdXRvZmYpCisgICAgICAgIHJldHVybiBtX2ltbW9ydGFs
U3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbKGJ5dGVzIC0gMSkg
LyBpbXByZWNpc2VTdGVwXTsKKyAgICByZXR1cm4gbV9sYXJnZUFsbG9jYXRvcjsKIH0KIAotaW5s
aW5lIE1hcmtlZEFsbG9jYXRvciYgTWFya2VkU3BhY2U6OmRlc3RydWN0b3JBbGxvY2F0b3JGb3Io
c2l6ZV90IGJ5dGVzKQoraW5saW5lIE1hcmtlZEFsbG9jYXRvciYgTWFya2VkU3BhY2U6Om5vcm1h
bERlc3RydWN0b3JBbGxvY2F0b3JGb3Ioc2l6ZV90IGJ5dGVzKQogewogICAgIEFTU0VSVChieXRl
cyk7CiAgICAgaWYgKGJ5dGVzIDw9IHByZWNpc2VDdXRvZmYpCi0gICAgICAgIHJldHVybiBtX2Rl
c3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1soYnl0ZXMgLSAxKSAvIHByZWNpc2VTdGVw
XTsKKyAgICAgICAgcmV0dXJuIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0
b3JzWyhieXRlcyAtIDEpIC8gcHJlY2lzZVN0ZXBdOwogICAgIGlmIChieXRlcyA8PSBpbXByZWNp
c2VDdXRvZmYpCi0gICAgICAgIHJldHVybiBtX25vcm1hbFNwYWNlLmltcHJlY2lzZUFsbG9jYXRv
cnNbKGJ5dGVzIC0gMSkgLyBpbXByZWNpc2VTdGVwXTsKKyAgICAgICAgcmV0dXJuIG1fbm9ybWFs
RGVzdHJ1Y3RvclNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbKGJ5dGVzIC0gMSkgLyBpbXByZWNp
c2VTdGVwXTsKICAgICByZXR1cm4gbV9sYXJnZUFsbG9jYXRvcjsKIH0KIApAQCAtMTk3LDMwICsx
OTYsMzEgQEAgaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZVdpdGhvdQogICAgIHJl
dHVybiBhbGxvY2F0b3JGb3IoYnl0ZXMpLmFsbG9jYXRlKGJ5dGVzKTsKIH0KIAotaW5saW5lIHZv
aWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZVdpdGhEZXN0cnVjdG9yKHNpemVfdCBieXRlcykKK2lu
bGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGVXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0
cnVjdG9yKHNpemVfdCBieXRlcykKIHsKLSAgICByZXR1cm4gZGVzdHJ1Y3RvckFsbG9jYXRvckZv
cihieXRlcykuYWxsb2NhdGUoYnl0ZXMpOworICAgIHJldHVybiBpbW1vcnRhbFN0cnVjdHVyZURl
c3RydWN0b3JBbGxvY2F0b3JGb3IoYnl0ZXMpLmFsbG9jYXRlKGJ5dGVzKTsKIH0KIAotaW5saW5l
IHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZVN0cnVjdHVyZShzaXplX3QgYnl0ZXMpCitpbmxp
bmUgdm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlV2l0aE5vcm1hbERlc3RydWN0b3Ioc2l6ZV90
IGJ5dGVzKQogewotICAgIHJldHVybiBtX3N0cnVjdHVyZUFsbG9jYXRvci5hbGxvY2F0ZShieXRl
cyk7CisgICAgcmV0dXJuIG5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3IoYnl0ZXMpLmFsbG9j
YXRlKGJ5dGVzKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBl
bmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoQmxvY2soRnVuY3Rv
ciYgZnVuY3RvcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWNpc2VDb3VudDsg
KytpKSB7CiAgICAgICAgIG1fbm9ybWFsU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFj
aEJsb2NrKGZ1bmN0b3IpOwotICAgICAgICBtX2Rlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2Nh
dG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisgICAgICAgIG1fbm9ybWFsRGVzdHJ1Y3Rv
clNwYWNlLnByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKyAgICAg
ICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tp
XS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBpbXByZWNpc2VDb3VudDsgKytpKSB7CiAgICAgICAgIG1fbm9ybWFsU3BhY2UuaW1wcmVj
aXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgICAgIG1fZGVzdHJ1
Y3RvclNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwor
ICAgICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZv
ckVhY2hCbG9jayhmdW5jdG9yKTsKKyAgICAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0
b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKICAg
ICB9CiAKICAgICBtX2xhcmdlQWxsb2NhdG9yLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICBt
X3N0cnVjdHVyZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAKICAgICByZXR1cm4g
ZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvU2xvdFZpc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1Nsb3RWaXNpdG9yLmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01LDYgKzUsNyBA
QAogI2luY2x1ZGUgIkNvcGllZFNwYWNlLmgiCiAjaW5jbHVkZSAiQ29waWVkU3BhY2VJbmxpbmVN
ZXRob2RzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShy
ZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MzQsNyArNDM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW1pdFdyaXRlQmFycmllcihSZWdpc3RlcklEIG93bmVyLCBSZWdpc3RlcklEIHZhbHVlVGFn
LCBSZWdpc3RlcklEIHNjcmF0Y2gsIFJlZ2lzdGVySUQgc2NyYXRjaDIsIFdyaXRlQmFycmllck1v
ZGUsIFdyaXRlQmFycmllclVzZUtpbmQpOwogICAgICAgICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIo
SlNDZWxsKiBvd25lciwgUmVnaXN0ZXJJRCB2YWx1ZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBXcml0
ZUJhcnJpZXJNb2RlLCBXcml0ZUJhcnJpZXJVc2VLaW5kKTsKIAotICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDbGFzc1R5cGUsIGJvb2wgZGVzdHJ1Y3RvciwgdHlwZW5hbWUgU3RydWN0dXJlVHlw
ZT4gdm9pZCBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KFN0cnVjdHVyZVR5cGUsIFJlZ2lzdGVy
SUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpOworICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDbGFzc1R5cGUsIE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlwZSwgdHlwZW5hbWUgU3Ry
dWN0dXJlVHlwZT4gdm9pZCBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KFN0cnVjdHVyZVR5cGUs
IFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpOwogICAgICAgICB2b2lk
IGVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShzaXplX3QsIHB0cmRpZmZfdCBvZmZzZXRGcm9tQmFz
ZSwgUmVnaXN0ZXJJRCByZXN1bHQpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lk
IGVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QoVCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgcmVzdWx0
LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpOwogICAgICAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTQXJy
YXkodW5zaWduZWQgdmFsdWVzUmVnaXN0ZXIsIHVuc2lnbmVkIGxlbmd0aCwgUmVnaXN0ZXJJRCBj
ZWxsUmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VSZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0
cik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMu
aAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVNZXRob2RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNSwxMSArNDA1LDEzIEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFuZENvbnN0YW4KICAgICByZXR1cm4gbV9jb2RlQmxvY2st
PmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KHNyYykgJiYgZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYyku
aXNTdHJpbmcoKSAmJiBhc1N0cmluZyhnZXRDb25zdGFudE9wZXJhbmQoc3JjKS5hc0NlbGwoKSkt
Pmxlbmd0aCgpID09IDE7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIGJvb2wg
ZGVzdHJ1Y3RvciwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gaW5saW5lIHZvaWQgSklUOjplbWl0
QWxsb2NhdGVCYXNpY0pTT2JqZWN0KFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBSZWdpc3RlcklE
IHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRyKQordGVtcGxhdGUgPHR5cGVuYW1lIENsYXNz
VHlwZSwgTWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBlIGRlc3RydWN0b3JUeXBlLCB0eXBlbmFt
ZSBTdHJ1Y3R1cmVUeXBlPiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxvY2F0ZUJhc2ljSlNPYmpl
Y3QoU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklE
IHN0b3JhZ2VQdHIpCiB7CiAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAwOwotICAg
IGlmIChkZXN0cnVjdG9yKQotICAgICAgICBhbGxvY2F0b3IgPSAmbV9nbG9iYWxEYXRhLT5oZWFw
LmFsbG9jYXRvckZvck9iamVjdFdpdGhEZXN0cnVjdG9yKHNpemVvZihDbGFzc1R5cGUpKTsKKyAg
ICBpZiAoZGVzdHJ1Y3RvclR5cGUgPT0gTWFya2VkQmxvY2s6Ok5vcm1hbCkKKyAgICAgICAgYWxs
b2NhdG9yID0gJm1fZ2xvYmFsRGF0YS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoTm9ybWFs
RGVzdHJ1Y3RvcihzaXplb2YoQ2xhc3NUeXBlKSk7CisgICAgZWxzZSBpZiAoZGVzdHJ1Y3RvclR5
cGUgPT0gTWFya2VkQmxvY2s6OkltbW9ydGFsU3RydWN0dXJlKQorICAgICAgICBhbGxvY2F0b3Ig
PSAmbV9nbG9iYWxEYXRhLT5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhJbW1vcnRhbFN0cnVj
dHVyZURlc3RydWN0b3Ioc2l6ZW9mKENsYXNzVHlwZSkpOwogICAgIGVsc2UKICAgICAgICAgYWxs
b2NhdG9yID0gJm1fZ2xvYmFsRGF0YS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVz
dHJ1Y3RvcihzaXplb2YoQ2xhc3NUeXBlKSk7CiAgICAgbG9hZFB0cigmYWxsb2NhdG9yLT5tX2Zy
ZWVMaXN0LmhlYWQsIHJlc3VsdCk7CkBAIC00MjgsNyArNDMwLDcgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIENsYXNzVHlwZSwgYm9vbCBkZXN0cgogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5l
IHZvaWQgSklUOjplbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KFQgc3RydWN0dXJlLCBSZWdpc3Rl
cklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQogewotICAgIGVtaXRBbGxvY2F0ZUJhc2lj
SlNPYmplY3Q8SlNGaW5hbE9iamVjdCwgZmFsc2UsIFQ+KHN0cnVjdHVyZSwgcmVzdWx0LCBzY3Jh
dGNoKTsKKyAgICBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0PEpTRmluYWxPYmplY3QsIE1hcmtl
ZEJsb2NrOjpOb25lLCBUPihzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaCk7CiB9CiAKIGlubGlu
ZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNTdG9yYWdlKHNpemVfdCBzaXplLCBwdHJkaWZm
X3Qgb2Zmc2V0RnJvbUJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0KQpAQCAtNDUzLDcgKzQ1NSw3IEBA
IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlSlNBcnJheSh1bnMKICAgICBlbWl0QWxsb2Nh
dGVCYXNpY1N0b3JhZ2UoaW5pdGlhbFN0b3JhZ2UsIHNpemVvZihJbmRleGluZ0hlYWRlciksIHN0
b3JhZ2VSZXN1bHQpOwogCiAgICAgLy8gQWxsb2NhdGUgdGhlIGNlbGwgZm9yIHRoZSBhcnJheS4K
LSAgICBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0PEpTQXJyYXksIGZhbHNlPihUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmUoKSksIGNlbGxS
ZXN1bHQsIHN0b3JhZ2VQdHIpOworICAgIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3Q8SlNBcnJh
eSwgTWFya2VkQmxvY2s6Ok5vbmU+KFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpLT5hcnJheVN0cnVjdHVyZSgpKSwgY2VsbFJlc3VsdCwgc3RvcmFnZVB0cik7CiAKICAg
ICAvLyBTdG9yZSBhbGwgdGhlIG5lY2Vzc2FyeSBpbmZvIGluIHRoZSBBcnJheVN0b3JhZ2UuCiAg
ICAgc3RvcmUzMihJbW0zMihsZW5ndGgpLCBBZGRyZXNzKHN0b3JhZ2VSZXN1bHQsIEFycmF5U3Rv
cmFnZTo6bGVuZ3RoT2Zmc2V0KCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzLmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChBcmd1bWVu
dHMpOwogCi1jb25zdCBDbGFzc0luZm8gQXJndW1lbnRzOjpzX2luZm8gPSB7ICJBcmd1bWVudHMi
LCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFy
Z3VtZW50cykgfTsKK2NvbnN0IENsYXNzSW5mbyBBcmd1bWVudHM6OnNfaW5mbyA9IHsgIkFyZ3Vt
ZW50cyIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoQXJndW1lbnRz
KSB9OwogCiB2b2lkIEFyZ3VtZW50czo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAKICNp
bmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVk
ZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNTcs
OSArNTgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rp
b24+IGNhbGxlZTsKICAgICB9OwogCi0gICAgY2xhc3MgQXJndW1lbnRzIDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgeworICAgIGNsYXNzIEFyZ3VtZW50cyA6IHB1YmxpYyBKU0Rlc3RydWN0aWJs
ZU9iamVjdCB7CiAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3Qg
QmFzZTsKKyAgICAgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwogCiAgICAg
ICAgIHN0YXRpYyBBcmd1bWVudHMqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICB7CkBAIC0xNTQsMTMgKzE1NSwxMyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICB9CiAKICAgICBpbmxpbmUgQXJndW1lbnRzOjpBcmd1bWVudHMoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCi0gICAgICAgIDogSlNOb25GaW5hbE9iamVjdChjYWxsRnJhbWUt
Pmdsb2JhbERhdGEoKSwgY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFyZ3VtZW50
c1N0cnVjdHVyZSgpKQorICAgICAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KGNhbGxGcmFtZS0+
Z2xvYmFsRGF0YSgpLCBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJndW1lbnRz
U3RydWN0dXJlKCkpCiAgICAgICAgICwgZChhZG9wdFB0cihuZXcgQXJndW1lbnRzRGF0YSkpCiAg
ICAgewogICAgIH0KIAogICAgIGlubGluZSBBcmd1bWVudHM6OkFyZ3VtZW50cyhDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgTm9QYXJhbWV0ZXJzVHlwZSkKLSAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0
KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+YXJndW1lbnRzU3RydWN0dXJlKCkpCisgICAgICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3Qo
Y2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5hcmd1bWVudHNTdHJ1Y3R1cmUoKSkKICAgICAgICAgLCBkKGFkb3B0UHRyKG5ldyBBcmd1bWVu
dHNEYXRhKSkKICAgICB7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNf
SU5fQ0VMTChFcnJvclByb3RvdHlwZSk7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihF
cnJvclByb3RvdHlwZSk7CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVy
cm9yUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjU3LDYgKzI1Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAgICAgfTsKIAorICAgIEhB
U19JTU1PUlRBTF9TVFJVQ1RVUkUoRXhlY3V0YWJsZUJhc2UpOworCiAgICAgY2xhc3MgTmF0aXZl
RXhlY3V0YWJsZSA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC0z
MzksNiArMzQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEludHJpbnNpYyBtX2ludHJp
bnNpYzsKICAgICB9OwogCisgICAgSEFTX0lNTU9SVEFMX1NUUlVDVFVSRShOYXRpdmVFeGVjdXRh
YmxlKTsKKwogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGUgOiBwdWJsaWMgRXhlY3V0YWJsZUJh
c2UgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBFeGVjdXRhYmxlQmFzZSBCYXNlOwpA
QCAtNDY3LDYgKzQ3MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPd25QdHI8RXZhbENv
ZGVCbG9jaz4gbV9ldmFsQ29kZUJsb2NrOwogICAgIH07CiAKKyAgICBIQVNfSU1NT1JUQUxfU1RS
VUNUVVJFKEV2YWxFeGVjdXRhYmxlKTsKKwogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIDog
cHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKQEAgLTUzNCw2ICs1NDAsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgT3duUHRyPFByb2dyYW1Db2RlQmxvY2s+IG1fcHJvZ3JhbUNvZGVCbG9j
azsKICAgICB9OwogCisgICAgSEFTX0lNTU9SVEFMX1NUUlVDVFVSRShQcm9ncmFtRXhlY3V0YWJs
ZSk7CisKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
YWJsZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC03NTUsNiArNzYzLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFdyaXRlQmFycmllcjxTaGFyZWRTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZTsK
ICAgICB9OwogCisgICAgSEFTX0lNTU9SVEFMX1NUUlVDVFVSRShGdW5jdGlvbkV4ZWN1dGFibGUp
OworCiAgICAgaW5saW5lIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQog
ICAgICAgICA6IEJhc2UoZ2xvYmFsRGF0YSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5mdW5jdGlv
blN0cnVjdHVyZSgpKQogICAgICAgICAsIG1fZXhlY3V0YWJsZShnbG9iYWxEYXRhLCB0aGlzLCBl
eGVjdXRhYmxlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxG
dW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MiwxMCArMzIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxM
KEludGVybmFsRnVuY3Rpb24pOwogQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoSW50ZXJu
YWxGdW5jdGlvbik7CiAKLWNvbnN0IENsYXNzSW5mbyBJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8g
PSB7ICJGdW5jdGlvbiIsICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoSW50ZXJuYWxGdW5jdGlvbikgfTsKK2NvbnN0IENsYXNzSW5mbyBJbnRlcm5h
bEZ1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSW50ZXJuYWxGdW5jdGlvbikgfTsKIAogSW50ZXJuYWxGdW5jdGlv
bjo6SW50ZXJuYWxGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxEYXRhKCksIHN0cnVjdHVyZSkKKyAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KGdsb2JhbE9i
amVjdC0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHJldmlzaW9uIDEy
ODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTYgKzI0LDE2IEBACiAjaWZuZGVmIEludGVybmFsRnVu
Y3Rpb25faAogI2RlZmluZSBJbnRlcm5hbEZ1bmN0aW9uX2gKIAotI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7
CiAKLSAgICBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
eworICAgIGNsYXNzIEludGVybmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmpl
Y3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7
CisgICAgICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKIAogICAgICAgICBz
dGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBKU0Rlc3RydWN0aWJs
ZU9iamVjdDsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwpAQCAtMzIxLDYgKzMy
MiwyMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogI2VuZGlmCiAKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBUPgorICAgIHN0cnVjdCBIYXNJbW1vcnRhbFN0cnVjdHVyZSB7CisgICAgICAgIHN0YXRp
YyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7CisgICAgfTsKKworI2RlZmluZSBIQVNfSU1NT1JU
QUxfU1RSVUNUVVJFKGtsYXNzKSBcCisgICAgdGVtcGxhdGUgPD4gXAorICAgIHN0cnVjdCBIYXNJ
bW1vcnRhbFN0cnVjdHVyZTxrbGFzcz4ge1wKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFs
dWUgPSB0cnVlO1wKKyAgICB9CisKKyNkZWZpbmUgTkVFRFNfREVTVFJVQ1RPUihrbGFzcywgdikg
XAorICAgIHRlbXBsYXRlIDw+IFwKKyAgICBzdHJ1Y3QgTmVlZHNEZXN0cnVjdG9yPGtsYXNzPiB7
XAorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHY7XAorICAgIH0KKwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmIGhlYXApCiAg
ICAgewpAQCAtMzI5LDEyICszNDcsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGhlYXAu
Z2xvYmFsRGF0YSgpLT5zZXRJbml0aWFsaXppbmdPYmplY3RDbGFzcygmVDo6c19pbmZvKTsKICNl
bmRpZgogICAgICAgICBKU0NlbGwqIHJlc3VsdCA9IDA7Ci0gICAgICAgIGlmIChOZWVkc0Rlc3Ry
dWN0b3I8VD46OnZhbHVlKQotICAgICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8SlNDZWxs
Kj4oaGVhcC5hbGxvY2F0ZVdpdGhEZXN0cnVjdG9yKHNpemVvZihUKSkpOwotICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIEFTU0VSVChUOjpzX2luZm8ubWV0aG9kVGFibGUuZGVzdHJveSA9PSBK
U0NlbGw6OmRlc3Ryb3kpOworICAgICAgICBpZiAoTmVlZHNEZXN0cnVjdG9yPFQ+Ojp2YWx1ZSAm
JiBIYXNJbW1vcnRhbFN0cnVjdHVyZTxUPjo6dmFsdWUpCisgICAgICAgICAgICByZXN1bHQgPSBz
dGF0aWNfY2FzdDxKU0NlbGwqPihoZWFwLmFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVz
dHJ1Y3RvcihzaXplb2YoVCkpKTsKKyAgICAgICAgZWxzZSBpZiAoTmVlZHNEZXN0cnVjdG9yPFQ+
Ojp2YWx1ZSAmJiAhSGFzSW1tb3J0YWxTdHJ1Y3R1cmU8VD46OnZhbHVlKQorICAgICAgICAgICAg
cmVzdWx0ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oaGVhcC5hbGxvY2F0ZVdpdGhOb3JtYWxEZXN0
cnVjdG9yKHNpemVvZihUKSkpOworICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXN1bHQgPSBz
dGF0aWNfY2FzdDxKU0NlbGwqPihoZWFwLmFsbG9jYXRlV2l0aG91dERlc3RydWN0b3Ioc2l6ZW9m
KFQpKSk7Ci0gICAgICAgIH0KICAgICAgICAgcmVzdWx0LT5jbGVhclN0cnVjdHVyZSgpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTM0OCw4ICszNjYsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGhlYXAuZ2xvYmFsRGF0YSgpLT5zZXRJbml0aWFsaXppbmdPYmplY3RD
bGFzcygmVDo6c19pbmZvKTsKICNlbmRpZgogICAgICAgICBKU0NlbGwqIHJlc3VsdCA9IDA7Ci0g
ICAgICAgIGlmIChOZWVkc0Rlc3RydWN0b3I8VD46OnZhbHVlKQotICAgICAgICAgICAgcmVzdWx0
ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oaGVhcC5hbGxvY2F0ZVdpdGhEZXN0cnVjdG9yKHNpemUp
KTsKKyAgICAgICAgaWYgKE5lZWRzRGVzdHJ1Y3RvcjxUPjo6dmFsdWUgJiYgSGFzSW1tb3J0YWxT
dHJ1Y3R1cmU8VD46OnZhbHVlKQorICAgICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8SlND
ZWxsKj4oaGVhcC5hbGxvY2F0ZVdpdGhJbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3Ioc2l6ZSkp
OworICAgICAgICBlbHNlIGlmIChOZWVkc0Rlc3RydWN0b3I8VD46OnZhbHVlICYmICFIYXNJbW1v
cnRhbFN0cnVjdHVyZTxUPjo6dmFsdWUpCisgICAgICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2Fz
dDxKU0NlbGwqPihoZWFwLmFsbG9jYXRlV2l0aE5vcm1hbERlc3RydWN0b3Ioc2l6ZSkpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChUOjpzX2luZm8ubWV0aG9kVGFibGUuZGVz
dHJveSA9PSBKU0NlbGw6OmRlc3Ryb3kpOwogICAgICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nh
c3Q8SlNDZWxsKj4oaGVhcC5hbGxvY2F0ZVdpdGhvdXREZXN0cnVjdG9yKHNpemUpKTsKQEAgLTM2
OSw3ICszODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQVNTRVJUKCFmcm9tIHx8IGZy
b20tPkpTQ2VsbDo6aW5oZXJpdHMoJldURjo6UmVtb3ZlUG9pbnRlcjxUbz46OlR5cGU6OnNfaW5m
bykpOwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VG8+KGZyb20pOwogICAgIH0KLQorICAg
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRvPgogICAgIGlubGluZSBUbyBqc0Nhc3QoSlNWYWx1
ZSBmcm9tKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVz
dHJ1Y3RpYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDEgQEAKKyNpZm5kZWYgSlNEZXN0cnVjdGlibGVPYmplY3RfaAorI2RlZmluZSBK
U0Rlc3RydWN0aWJsZU9iamVjdF9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworc3RydWN0IENsYXNzSW5mbzsKKworY2xhc3MgSlNEZXN0cnVjdGlibGVPYmpl
Y3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05v
bkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNv
bnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvOyB9CisKK3Byb3RlY3RlZDoKKyAgICBKU0Rlc3RydWN0
aWJsZU9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IDApCisgICAgICAgIDogSlNOb25GaW5hbE9iamVjdChn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSkKKyAgICAgICAgLCBtX2NsYXNzSW5mbyhz
dHJ1Y3R1cmUtPmNsYXNzSW5mbygpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY2xhc3NJbmZv
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbzsK
K307CisKK2lubGluZSBjb25zdCBDbGFzc0luZm8qIEpTQ2VsbDo6Y2xhc3NJbmZvKCkgY29uc3QK
K3sKKyAgICBpZiAoTWFya2VkQmxvY2s6OmJsb2NrRm9yKHRoaXMpLT5kZXN0cnVjdG9yVHlwZSgp
ID09IE1hcmtlZEJsb2NrOjpOb3JtYWwpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBKU0Rlc3RydWN0aWJsZU9iamVjdCo+KHRoaXMpLT5jbGFzc0luZm8oKTsKKyNpZiBFTkFCTEUo
R0NfVkFMSURBVElPTikKKyAgICByZXR1cm4gbV9zdHJ1Y3R1cmUudW52YWxpZGF0ZWRHZXQoKS0+
Y2xhc3NJbmZvKCk7CisjZWxzZQorICAgIHJldHVybiBtX3N0cnVjdHVyZS0+Y2xhc3NJbmZvKCk7
CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNp
b24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogICAgIG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVy
ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpKTsKICAgICBtX2FyZ3VtZW50c1N0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBBcmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9jYWxsYmFja0NvbnN0cnVjdG9y
U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTQ2FsbGJhY2tDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkpKTsKLSAgICBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD46
OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90
eXBlLmdldCgpKSk7CisgICAgbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCBKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6
Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQcm90b3R5
cGUuZ2V0KCkpKTsKIAogICAgIG1fYXJyYXlQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywgQXJyYXlQcm90b3R5cGU6OmNyZWF0ZShleGVjLCB0aGlzLCBBcnJheVByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQcm90
b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV9hcnJheVN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0
YSgpLCB0aGlzLCBKU0FycmF5OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBtX2FycmF5UHJvdG90eXBlLmdldCgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc3LDcgKzc3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0dsb2Jh
bE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBwcml2YXRl
OgotICAgICAgICB0eXBlZGVmIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgQmFzZTsKICAgICAg
ICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxPcGFxdWVKU1dlYWtPYmplY3RNYXA+ID4gV2Vha01h
cFNldDsKIAogICAgICAgICBzdHJ1Y3QgSlNHbG9iYWxPYmplY3RSYXJlRGF0YSB7CkBAIC0xNjYs
MTQgKzE2NSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGlmIChtX3JhcmVEYXRh
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1fcmFyZURhdGEgPSBhZG9w
dFB0cihuZXcgSlNHbG9iYWxPYmplY3RSYXJlRGF0YSk7Ci0gICAgICAgICAgICBIZWFwOjpoZWFw
KHRoaXMpLT5hZGRGaW5hbGl6ZXIodGhpcywgY2xlYXJSYXJlRGF0YSk7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QgQmFzZTsKKwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxPYmplY3QqIGNyZWF0ZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAg
ICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEpTR2xvYmFsT2Jq
ZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmZp
bmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOworICAgICAgICAgICAgZ2xvYmFsRGF0YS5oZWFwLmFk
ZEZpbmFsaXplcihnbG9iYWxPYmplY3QsIGRlc3Ryb3kpOwogICAgICAgICAgICAgcmV0dXJuIGds
b2JhbE9iamVjdDsKICAgICAgICAgfQogCkBAIC0zNjgsNiArMzY5LDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNsZWFyUmFyZURhdGEo
SlNDZWxsKik7CiAgICAgfTsKIAorICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gYmUgYWxsb2NhdGVk
IGluIHRoZSBkZXN0cnVjdG9yIHNwYWNlIGJlY2F1c2Ugd2UgdXNlIGEgZmluYWxpemVyIGluc3Rl
YWQuCisgICAgTkVFRFNfREVTVFJVQ1RPUihKU0dsb2JhbE9iamVjdCwgZmFsc2UpOworCiAgICAg
SlNHbG9iYWxPYmplY3QqIGFzR2xvYmFsT2JqZWN0KEpTVmFsdWUpOwogCiAgICAgaW5saW5lIEpT
R2xvYmFsT2JqZWN0KiBhc0dsb2JhbE9iamVjdChKU1ZhbHVlIHZhbHVlKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxUaGlzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxUaGlzLmgJKHJldmlzaW9uIDEyODcx
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsVGhpcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMTMgQEAKICNpZm5kZWYgSlNHbG9iYWxUaGlzX2gKICNk
ZWZpbmUgSlNHbG9iYWxUaGlzX2gKIAotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAi
SlNEZXN0cnVjdGlibGVPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEpTR2xv
YmFsVGhpcyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK2NsYXNzIEpTR2xvYmFsVGhpcyA6
IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU05v
bkZpbmFsT2JqZWN0IEJhc2U7CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNl
OwogCiAgICAgc3RhdGljIEpTR2xvYmFsVGhpcyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewpAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAKIHByb3RlY3RlZDoKICAgICBKU0dsb2JhbFRoaXMoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGds
b2JhbERhdGEsIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU0Rlc3RydWN0aWJsZU9iamVjdChnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUpCiAgICAgewogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkocmV2
aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IG1f
anNTdHJpbmdzOwogICAgIH07CiAKKyAgICBIQVNfSU1NT1JUQUxfU1RSVUNUVVJFKEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IpOworCiAgICAgaW5saW5lIHZvaWQgU3RydWN0dXJlOjpzZXRFbnVtZXJh
dGlvbkNhY2hlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ciogZW51bWVyYXRpb25DYWNoZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNEaWN0aW9uYXJ5
KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJKHJl
dmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1Njb3BlKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9E
RVNUUlVDVE9SKEpTU2NvcGUpOwogCiB2b2lkIEpTU2NvcGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTks
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIEpTUm9wZVN0cmluZyoganNTdHJpbmdCdWlsZGVy
KEpTR2xvYmFsRGF0YSopOwogCisgICAgSEFTX0lNTU9SVEFMX1NUUlVDVFVSRShKU1N0cmluZyk7
CisKICAgICBjbGFzcyBKU1N0cmluZyA6IHB1YmxpYyBKU0NlbGwgewogICAgIHB1YmxpYzoKICAg
ICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTMyMSw2ICszMjMsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgbXV0YWJsZSBGaXhlZEFycmF5PFdyaXRlQmFycmllcjxKU1N0cmluZz4sIHNf
bWF4SW50ZXJuYWxSb3BlTGVuZ3RoPiBtX2ZpYmVyczsKICAgICB9OwogCisgICAgSEFTX0lNTU9S
VEFMX1NUUlVDVFVSRShKU1JvcGVTdHJpbmcpOworCiAgICAgSlNTdHJpbmcqIGFzU3RyaW5nKEpT
VmFsdWUpOwogCiAgICAgaW5saW5lIEpTU3RyaW5nKiBhc1N0cmluZyhKU1ZhbHVlIHZhbHVlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0
LmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
V3JhcHBlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxNSArMjIsMTUgQEAKICNpZm5k
ZWYgSlNXcmFwcGVyT2JqZWN0X2gKICNkZWZpbmUgSlNXcmFwcGVyT2JqZWN0X2gKIAotI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAvLyBUaGlzIGNsYXNzIGlzIHVzZWQgYXMgYSBiYXNlIGZvciBj
bGFzc2VzIHN1Y2ggYXMgU3RyaW5nLAogICAgIC8vIE51bWJlciwgQm9vbGVhbiBhbmQgRGF0ZSB3
aGljaCBhcmUgd3JhcHBlcnMgZm9yIHByaW1pdGl2ZSB0eXBlcy4KLSAgICBjbGFzcyBKU1dyYXBw
ZXJPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgY2xhc3MgSlNXcmFwcGVy
T2JqZWN0IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgICAgICB0eXBlZGVmIEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAKICAgICAgICAgSlNWYWx1ZSBpbnRlcm5hbFZhbHVlKCkg
Y29uc3Q7CiAgICAgICAgIHZvaWQgc2V0SW50ZXJuYWxWYWx1ZShKU0dsb2JhbERhdGEmLCBKU1Zh
bHVlKTsKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGlu
bGluZSBKU1dyYXBwZXJPYmplY3Q6OkpTV3JhcHBlck9iamVjdChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICA6IEpTTm9uRmluYWxPYmplY3Qo
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKQorICAgICAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KGds
b2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICB7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklU
U19JTl9DRUxMKE1hdGhPYmplY3QpOworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoTWF0
aE9iamVjdCk7CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90
b0Z1bmNBYnMoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXRoUHJvdG9GdW5jQUNvcyhFeGVjU3RhdGUqKTsKQEAgLTU5LDkgKzYwLDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
QVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoTWF0aE9iamVjdCk7Ci0KLWNvbnN0IENsYXNz
SW5mbyBNYXRoT2JqZWN0OjpzX2luZm8gPSB7ICJNYXRoIiwgJkpTTm9uRmluYWxPYmplY3Q6OnNf
aW5mbywgMCwgRXhlY1N0YXRlOjptYXRoVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoTWF0aE9i
amVjdCkgfTsKK2NvbnN0IENsYXNzSW5mbyBNYXRoT2JqZWN0OjpzX2luZm8gPSB7ICJNYXRoIiwg
JkJhc2U6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjptYXRoVGFibGUsIENSRUFURV9NRVRIT0RfVEFC
TEUoTWF0aE9iamVjdCkgfTsKIAogLyogU291cmNlIGZvciBNYXRoT2JqZWN0Lmx1dC5oCiBAYmVn
aW4gbWF0aFRhYmxlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYW1lSW5z
dGFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYW1l
SW5zdGFuY2UuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmFtZUluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE0ICsyNiwxNCBAQAog
I2lmbmRlZiBOYW1lSW5zdGFuY2VfaAogI2RlZmluZSBOYW1lSW5zdGFuY2VfaAogCi0jaW5jbHVk
ZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1
ZGUgIlByaXZhdGVOYW1lLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBOYW1lSW5zdGFu
Y2UgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitjbGFzcyBOYW1lSW5zdGFuY2UgOiBwdWJs
aWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgotICAgIHR5cGVkZWYgSlNOb25GaW5h
bE9iamVjdCBCYXNlOworICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKIAog
ICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3duUHRyPFlhcnI6OkJ5dGVjb2RlUGF0dGVy
bj4gbV9yZWdFeHBCeXRlY29kZTsKICAgICB9OwogCisgICAgSEFTX0lNTU9SVEFMX1NUUlVDVFVS
RShSZWdFeHApOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFJlZ0V4cF9oCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJ
KHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDkgQEAgc3RhdGljIEpTVmFs
dWUgcmVnRXhwT2JqZWN0U291cmNlKEV4ZWNTdAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9D
TEFTU19GSVRTX0lOX0NFTEwoUmVnRXhwT2JqZWN0KTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNU
UlVDVE9SKFJlZ0V4cE9iamVjdCk7CiAKLWNvbnN0IENsYXNzSW5mbyBSZWdFeHBPYmplY3Q6OnNf
aW5mbyA9IHsgIlJlZ0V4cCIsICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIEV4ZWNTdGF0
ZTo6cmVnRXhwVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoUmVnRXhwT2JqZWN0KSB9OworY29u
c3QgQ2xhc3NJbmZvIFJlZ0V4cE9iamVjdDo6c19pbmZvID0geyAiUmVnRXhwIiwgJkJhc2U6OnNf
aW5mbywgMCwgRXhlY1N0YXRlOjpyZWdFeHBUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShSZWdF
eHBPYmplY3QpIH07CiAKIC8qIFNvdXJjZSBmb3IgUmVnRXhwT2JqZWN0Lmx1dC5oCiBAYmVnaW4g
cmVnRXhwVGFibGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFy
cmF5VmFsdWVNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAkod29ya2luZyBjb3B5KQpA
QCAtMTI4LDYgKzEyOCw4IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fcmVwb3J0ZWRDYXBhY2l0
eTsKIH07CiAKK0hBU19JTU1PUlRBTF9TVFJVQ1RVUkUoU3BhcnNlQXJyYXlWYWx1ZU1hcCk7CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU3BhcnNlQXJyYXlWYWx1ZU1hcF9oCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24g
MTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ2NCwxNiArNDY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHVuc2lnbmVkIG1fc3RhdGljRnVuY3Rpb25SZWlmaWVkOwogICAgIH07CiAKLSAgICB0ZW1wbGF0
ZSA8PiBpbmxpbmUgdm9pZCogYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4oSGVhcCYgaGVhcCkKLSAg
ICB7Ci0jaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCi0gICAgICAgIEFTU0VSVCghaGVhcC5nbG9i
YWxEYXRhKCktPmlzSW5pdGlhbGl6aW5nT2JqZWN0KCkpOwotICAgICAgICBoZWFwLmdsb2JhbERh
dGEoKS0+c2V0SW5pdGlhbGl6aW5nT2JqZWN0Q2xhc3MoJlN0cnVjdHVyZTo6c19pbmZvKTsKLSNl
bmRpZgotICAgICAgICBKU0NlbGwqIHJlc3VsdCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGhlYXAu
YWxsb2NhdGVTdHJ1Y3R1cmUoc2l6ZW9mKFN0cnVjdHVyZSkpKTsKLSAgICAgICAgcmVzdWx0LT5j
bGVhclN0cnVjdHVyZSgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KKyAgICBIQVNf
SU1NT1JUQUxfU1RSVUNUVVJFKFN0cnVjdHVyZSk7CiAKICAgICBpbmxpbmUgU3RydWN0dXJlKiBT
dHJ1Y3R1cmU6OmNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUlu
Zm8sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBl
KQogICAgIHsKQEAgLTYxOSwxNSArNjEwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEFT
U0VSVChtX3N0cnVjdHVyZSB8fCAhZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOwogICAg
IH0KIAotICAgIGlubGluZSBjb25zdCBDbGFzc0luZm8qIEpTQ2VsbDo6Y2xhc3NJbmZvKCkgY29u
c3QKLSAgICB7Ci0jaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCi0gICAgICAgIHJldHVybiBtX3N0
cnVjdHVyZS51bnZhbGlkYXRlZEdldCgpLT5jbGFzc0luZm8oKTsKLSNlbHNlCi0gICAgICAgIHJl
dHVybiBtX3N0cnVjdHVyZS0+Y2xhc3NJbmZvKCk7Ci0jZW5kaWYKLSAgICB9Ci0KIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU3RydWN0dXJlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gMTI4NzEyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2lu
ZyBjb3B5KQpAQCAtODIsNiArODIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3duQXJy
YXlQdHI8V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKICAgICB9OwogCisgICAg
SEFTX0lNTU9SVEFMX1NUUlVDVFVSRShTdHJ1Y3R1cmVDaGFpbik7CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwogCiAjZW5kaWYgLy8gU3RydWN0dXJlQ2hhaW5faApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMjcsNiArMzI3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBTaGFyZWRTeW1i
b2xUYWJsZSA6IHB1YmxpYyBKU0NlbGwsIHB1YmxpYyBTeW1ib2xUYWJsZSB7CiAgICAgcHVibGlj
OgorICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBTaGFyZWRT
eW1ib2xUYWJsZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgewog
ICAgICAgICAgICAgU2hhcmVkU3ltYm9sVGFibGUqIHNoYXJlZFN5bWJvbFRhYmxlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2hhcmVkU3ltYm9sVGFibGU+KGdsb2JhbERhdGEuaGVhcCkp
IFNoYXJlZFN5bWJvbFRhYmxlKGdsb2JhbERhdGEpOwpAQCAtMzgwLDcgKzM4Miw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBpbnQgbV9jYXB0dXJlU3RhcnQ7CiAgICAgICAgIGludCBtX2Nh
cHR1cmVFbmQ7CiAgICAgfTsKLSAgICAKKyAgIAorICAgIEhBU19JTU1PUlRBTF9TVFJVQ1RVUkUo
U2hhcmVkU3ltYm9sVGFibGUpOworIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBT
eW1ib2xUYWJsZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0w
OS0xNiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAg
IERlbGF5ZWQgc3RydWN0dXJlIHN3ZWVwIGNhbiBsZWFrIHN0cnVjdHVyZXMgd2l0aG91dCBib3Vu
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1NDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGdldHMgcmlkIG9mIHRoZSBzZXBhcmF0ZSBTdHJ1Y3R1cmUgYWxsb2NhdG9yIGluIHRoZSBN
YXJrZWRTcGFjZSBhbmQgYWRkcyB0d28gbmV3IGRlc3RydWN0b3Itb25seQorICAgICAgICBhbGxv
Y2F0b3JzLiBXZSBub3cgaGF2ZSBzZXBhcmF0ZSBhbGxvY2F0b3JzIGZvciBvdXIgdGhyZWUgdHlw
ZXMgb2Ygb2JqZWN0czogdGhvc2Ugb2JqZWN0cyB3aXRoIG5vIGRlc3RydWN0b3JzLAorICAgICAg
ICB0aG9zZSBvYmplY3RzIHdpdGggZGVzdHJ1Y3RvcnMgYW5kIHdpdGggaW1tb3J0YWwgc3RydWN0
dXJlcywgYW5kIHRob3NlIG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycyB0aGF0IGRvbid0IGhhdmUg
CisgICAgICAgIGltbW9ydGFsIHN0cnVjdHVyZXMuIEFsbCBvZiB0aGUgb2JqZWN0cyBvZiB0aGUg
dGhpcmQgdHlwZSAoZGVzdHJ1Y3RvcnMgd2l0aG91dCBpbW1vcnRhbCBzdHJ1Y3R1cmVzKSBub3cg
CisgICAgICAgIGluaGVyaXQgZnJvbSBhIG5ldyBjbGFzcyBuYW1lZCBKU0Rlc3RydWN0aWJsZU9i
amVjdCAod2hpY2ggaW4gdHVybiBpcyBhIHN1YmNsYXNzIG9mIEpTTm9uRmluYWxPYmplY3QpLCB3
aGljaCBzdG9yZXMgCisgICAgICAgIHRoZSBDbGFzc0luZm8gZm9yIHRoZXNlIGNsYXNzZXMgYXQg
YSBmaXhlZCBvZmZzZXQgZm9yIHNhZmUgcmV0cmlldmFsIGR1cmluZyBzd2VlcGluZy9kZXN0cnVj
dGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL0pTRGVzdHJ1Y3RhYmxlT2JqZWN0Lmg6IEFkZGVkLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oOiBJbmhlcml0cyBmcm9tIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LgorICAgICAgICAoSlNET01XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV3Jh
cHBlcjo6SlNET01XcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbTogQWRkIGZpbmFsaXplcnMgdG8gYW55dGhpbmcgdGhhdCBpbmhlcml0cyBmcm9t
IEpTR2xvYmFsT2JqZWN0LAorICAgICAgICBlLmcuIEpTRE9NV2luZG93IGFuZCBKU1dvcmtlckNv
bnRleHRzLiBGb3IgdGhvc2UgY2xhc3NlcyB3ZSBhbHNvIG5lZWQgdG8gdXNlIHRoZSBORUVEU19E
RVNUUlVDVE9SIG1hY3JvLgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAqIGJy
aWRnZS9vYmpjL29iamNfcnVudGltZS5oOiBJbmhlcml0IGZyb20gSlNEZXN0cnVjdGlibGVPYmpl
Y3QuCisgICAgICAgIChPYmpjRmFsbGJhY2tPYmplY3RJbXApOgorICAgICAgICAqIGJyaWRnZS9v
YmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEJpbmRpbmdzKToKKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKToK
KyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6IFVzZSBhIGZpbmFsaXplciBzbyB0
aGF0IEpTQXJyYXkgaXNuJ3QgZm9yY2VkIHRvIGluaGVyaXQgZnJvbSBKU0Rlc3RydWN0aWJsZU9i
amVjdC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6ZGVzdHJv
eSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAgICAgICAgKEpTQzo6UnVu
dGltZUFycmF5OjpjcmVhdGUpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBicmlkZ2UvcnVu
dGltZV9vYmplY3QuY3BwOiBJbmhlcml0IGZyb20gSlNEZXN0cnVjdGlibGVPYmplY3QuCisgICAg
ICAgIChCaW5kaW5ncyk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpS
dW50aW1lT2JqZWN0KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKyAgICAg
ICAgKFJ1bnRpbWVPYmplY3QpOgorCiAyMDEyLTA5LTE2ICBLYWxldiBMZW1iZXIgIDxrYWxldmxl
bWJlckBnbWFpbC5jb20+CiAKICAgICAgICAgW0dUS10gTWlzc2luZyBkbGxleHBvcnQgY2F1c2lu
ZyBsaW5raW5nIGVycm9ycyBvbiBXaW5kb3dzIHBsYXRmb3JtCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU0Rlc3Ry
dWN0aWJsZU9iamVjdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSlNEZXN0cnVjdGlibGVPYmplY3RfaAor
I2RlZmluZSBXZWJDb3JlX0ZXRF9KU0Rlc3RydWN0aWJsZU9iamVjdF9oCisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3QuaD4KKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgJKHJldmlzaW9uIDEyODcxMikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMywyMCArMjMsMjIgQEAKICNkZWZpbmUgSlNET01XcmFwcGVyX2gKIAogI2luY2x1ZGUg
IkpTRE9NR2xvYmFsT2JqZWN0LmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgorI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCi1jbGFzcyBKU0RPTVdyYXBw
ZXIgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK2NsYXNzIEpTRE9NV3JhcHBlciA6
IHB1YmxpYyBKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoKKyAgICB0eXBlZGVm
IEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKwogICAgIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KEpTQzo6SlNOb25GaW5hbE9iamVjdDo6Z2xvYmFsT2JqZWN0KCkpOyB9CiAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIGdsb2JhbE9iamVjdCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAogcHJvdGVj
dGVkOgogICAgIEpTRE9NV3JhcHBlcihKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIAotICAgICAgICA6IEpTTm9uRmluYWxPYmplY3Qo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU0Rlc3Ry
dWN0aWJsZU9iamVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogICAg
IHsKICAgICAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0JKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC03NDIsNiArNzQyLDcgQEAg
c3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xu
Iik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsRGF0
YS5oZWFwKSkgJHtjbGFzc05hbWV9KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgaW1wbCwgd2luZG93
U2hlbGwpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgd2luZG93U2hlbGwpO1xuIik7CisgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIGdsb2JhbERhdGEuaGVhcC5hZGRGaW5hbGl6ZXIo
cHRyLCBkZXN0cm95KTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAg
ICByZXR1cm4gcHRyO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxu
XG4iKTsKICAgICB9IGVsc2lmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dv
cmtlckNvbnRleHQifSkgewpAQCAtNzQ5LDYgKzc1MCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOwogICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KGdsb2JhbERhdGEuaGVhcCkpICR7Y2xhc3NOYW1l
fShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGltcGwpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7XG4iKTsK
KyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgZ2xvYmFsRGF0YS5oZWFwLmFk
ZEZpbmFsaXplcihwdHIsIGRlc3Ryb3kpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgICAgIHJldHVybiBwdHI7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICB9XG5cbiIpOwogICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Ik1hc3F1ZXJhZGVzQXNVbmRlZmluZWQifSkgewpAQCAtMTAwOCw2ICsxMDEwLDE0IEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIn07XG5cbiIp
OwogCisgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciIHx8ICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4dCJ9KSB7CisgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICJ9IC8vIG5hbWVzcGFjZSBXZWJDb3JlXG5cbiIpOworICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAibmFtZXNwYWNlIEpTQyB7XG4iKTsKKyAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIk5FRURTX0RFU1RSVUNUT1IoV2ViQ29yZTo6JHtjbGFzc05hbWV9LCBm
YWxzZSk7XG5cbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAifSAvLyBuYW1lc3Bh
Y2UgSlNDXG5cbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAibmFtZXNwYWNlIFdl
YkNvcmUge1xuXG4iKTsKKyAgICB9CisKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSlNJbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QifSAmJiAhJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90In0pIHsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIkFMV0FZU19JTkxJTkUgYm9vbCAke2NsYXNzTmFtZX06Omdl
dE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCogY2VsbCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmIHNsb3Qp
XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIntcbiIpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysgU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw3ICszNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgSlNDIHsK
IAotY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVBcnJheTo6c19pbmZvID0geyAiUnVudGltZUFycmF5
IiwgJkpTQXJyYXk6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShSdW50aW1lQXJy
YXkpIH07Citjb25zdCBDbGFzc0luZm8gUnVudGltZUFycmF5OjpzX2luZm8gPSB7ICJSdW50aW1l
QXJyYXkiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJ1bnRpbWVB
cnJheSkgfTsKIAogUnVudGltZUFycmF5OjpSdW50aW1lQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEpTQXJyYXkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBz
dHJ1Y3R1cmUsIDApCkBAIC01Nyw3ICs1Nyw3IEBAIFJ1bnRpbWVBcnJheTo6flJ1bnRpbWVBcnJh
eSgpCiAKIHZvaWQgUnVudGltZUFycmF5OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKLSAgICBz
dGF0aWNfY2FzdDxSdW50aW1lQXJyYXkqPihjZWxsKS0+UnVudGltZUFycmF5Ojp+UnVudGltZUFy
cmF5KCk7CisgICAganNDYXN0PFJ1bnRpbWVBcnJheSo+KGNlbGwpLT5SdW50aW1lQXJyYXk6On5S
dW50aW1lQXJyYXkoKTsKIH0KIAogSlNWYWx1ZSBSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcihF
eGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQz
LDcgQEAgcHVibGljOgogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6
OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UnVudGltZUFycmF5PihleGVjKTsKICAgICAgICAg
UnVudGltZUFycmF5KiBydW50aW1lQXJyYXkgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxS
dW50aW1lQXJyYXk+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lQXJyYXkoZXhlYywgZG9tU3RydWN0
dXJlKTsKICAgICAgICAgcnVudGltZUFycmF5LT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIGFycmF5KTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAuYWRkRmluYWxp
emVyKHJ1bnRpbWVBcnJheSwgZGVzdHJveSk7CiAgICAgICAgIHJldHVybiBydW50aW1lQXJyYXk7
CiAgICAgfQogCkBAIC04OCw2ICs4OSw4IEBAIHByaXZhdGU6CiAKICAgICBCaW5kaW5nc0FycmF5
KiBtX2FycmF5OwogfTsKKworTkVFRFNfREVTVFJVQ1RPUihSdW50aW1lQXJyYXksIGZhbHNlKTsK
ICAgICAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX29iamVjdC5jcHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEwICszNSwxMCBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIEJp
bmRpbmdzIHsKIAotY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVPYmplY3Q6OnNfaW5mbyA9IHsgIlJ1
bnRpbWVPYmplY3QiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFJ1bnRpbWVPYmplY3QpIH07Citjb25zdCBDbGFzc0luZm8gUnVudGltZU9iamVj
dDo6c19pbmZvID0geyAiUnVudGltZU9iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoUnVudGltZU9iamVjdCkgfTsKIAogUnVudGltZU9iamVjdDo6UnVudGlt
ZU9iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UpCi0gICAgOiBKU05v
bkZpbmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCisgICAg
OiBKU0Rlc3RydWN0aWJsZU9iamVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0
dXJlKQogICAgICwgbV9pbnN0YW5jZShpbnN0YW5jZSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX29iamVjdC5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIs
OSBAQAogbmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGluZ3MgewogCi1jbGFzcyBSdW50
aW1lT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworY2xhc3MgUnVudGltZU9iamVj
dCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBK
U05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBC
YXNlOwogCiAgICAgc3RhdGljIFJ1bnRpbWVPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNz
UmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDkg
KzkwLDkgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8T2JqZWN0U3RydWN0UHRyPiBfYXJyYXk7
CiB9OwogCi1jbGFzcyBPYmpjRmFsbGJhY2tPYmplY3RJbXAgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CitjbGFzcyBPYmpjRmFsbGJhY2tPYmplY3RJbXAgOiBwdWJsaWMgSlNEZXN0cnVjdGli
bGVPYmplY3QgewogcHVibGljOgotICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwor
ICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKIAogICAgIHN0YXRpYyBPYmpj
RmFsbGJhY2tPYmplY3RJbXAqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIE9iamNJbnN0YW5jZSogaW5zdGFuY2UsIGNvbnN0IFN0cmluZyYgcHJv
cGVydHlOYW1lKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
cnVudGltZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X3J1bnRpbWUubW0JKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfcnVudGltZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg4LDEwICsxODgsMTAgQEAg
dW5zaWduZWQgaW50IE9iamNBcnJheTo6Z2V0TGVuZ3RoKCkgY29ucwogICAgIHJldHVybiBbX2Fy
cmF5LmdldCgpIGNvdW50XTsKIH0KIAotY29uc3QgQ2xhc3NJbmZvIE9iamNGYWxsYmFja09iamVj
dEltcDo6c19pbmZvID0geyAiT2JqY0ZhbGxiYWNrT2JqZWN0IiwgJkpTTm9uRmluYWxPYmplY3Q6
OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShPYmpjRmFsbGJhY2tPYmplY3RJbXAp
IH07Citjb25zdCBDbGFzc0luZm8gT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpzX2luZm8gPSB7ICJP
YmpjRmFsbGJhY2tPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKE9iamNGYWxsYmFja09iamVjdEltcCkgfTsKIAogT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpP
YmpjRmFsbGJhY2tPYmplY3RJbXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIE9iamNJbnN0YW5jZSogaSwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5h
bWUpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBz
dHJ1Y3R1cmUpCisgICAgOiBKU0Rlc3RydWN0aWJsZU9iamVjdChnbG9iYWxPYmplY3QtPmdsb2Jh
bERhdGEoKSwgc3RydWN0dXJlKQogICAgICwgX2luc3RhbmNlKGkpCiAgICAgLCBtX2l0ZW0ocHJv
cGVydHlOYW1lKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164336</attachid>
            <date>2012-09-16 21:54:31 -0700</date>
            <delta_ts>2012-09-17 11:07:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96546-20120916215359.patch</filename>
            <type>text/plain</type>
            <size>98103</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4MSBA
QAorMjAxMi0wOS0xNiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIERlbGF5ZWQgc3RydWN0dXJlIHN3ZWVwIGNhbiBsZWFrIHN0cnVjdHVyZXMgd2l0
aG91dCBib3VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTY1NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGdldHMgcmlkIG9mIHRoZSBzZXBhcmF0ZSBTdHJ1Y3R1cmUgYWxsb2NhdG9y
IGluIHRoZSBNYXJrZWRTcGFjZSBhbmQgYWRkcyB0d28gbmV3IGRlc3RydWN0b3Itb25seQorICAg
ICAgICBhbGxvY2F0b3JzLiBXZSBub3cgaGF2ZSBzZXBhcmF0ZSBhbGxvY2F0b3JzIGZvciBvdXIg
dGhyZWUgdHlwZXMgb2Ygb2JqZWN0czogdGhvc2Ugb2JqZWN0cyB3aXRoIG5vIGRlc3RydWN0b3Jz
LAorICAgICAgICB0aG9zZSBvYmplY3RzIHdpdGggZGVzdHJ1Y3RvcnMgYW5kIHdpdGggaW1tb3J0
YWwgc3RydWN0dXJlcywgYW5kIHRob3NlIG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycyB0aGF0IGRv
bid0IGhhdmUgCisgICAgICAgIGltbW9ydGFsIHN0cnVjdHVyZXMuIEFsbCBvZiB0aGUgb2JqZWN0
cyBvZiB0aGUgdGhpcmQgdHlwZSAoZGVzdHJ1Y3RvcnMgd2l0aG91dCBpbW1vcnRhbCBzdHJ1Y3R1
cmVzKSBub3cgCisgICAgICAgIGluaGVyaXQgZnJvbSBhIG5ldyBjbGFzcyBuYW1lZCBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCAod2hpY2ggaW4gdHVybiBpcyBhIHN1YmNsYXNzIG9mIEpTTm9uRmluYWxP
YmplY3QpLCB3aGljaCBzdG9yZXMgCisgICAgICAgIHRoZSBDbGFzc0luZm8gZm9yIHRoZXNlIGNs
YXNzZXMgYXQgYSBmaXhlZCBvZmZzZXQgZm9yIHNhZmUgcmV0cmlldmFsIGR1cmluZyBzd2VlcGlu
Zy9kZXN0cnVjdGlvbi4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3Bw
OiBVc2UgSlNEZXN0cnVjdGlibGVPYmplY3QgZm9yIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci4KKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6SlNDYWxs
YmFja0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmg6
CisgICAgICAgIChKU0NhbGxiYWNrQ29uc3RydWN0b3IpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0LmNwcDogSW5oZXJpdCBmcm9tIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IGZvciBub3Jt
YWwgSlNDYWxsYmFja09iamVjdHMgYW5kIHVzZSBhIGZpbmFsaXplciBmb3IgCisgICAgICAgIEpT
Q2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+LCBzaW5jZSBKU0dsb2JhbE9iamVjdCBhbHNv
IHVzZXMgYSBmaW5hbGl6ZXIuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjo6OmNyZWF0
ZSk6IFdlIG5lZWQgdG8gbW92ZSB0aGUgY3JlYXRlIGZ1bmN0aW9uIGZvciBKU0NhbGxiYWNrT2Jq
ZWN0PEpTR2xvYmFsT2JqZWN0PiBvdXQgb2YgbGluZSBzbyB3ZSBjYW4gYWRkIAorICAgICAgICB0
aGUgZmluYWxpemVyIGZvciBpdC4gV2UgZG9uJ3Qgd2FudCB0byBhZGQgdGhlIGZpbmFsaXplciBp
cyBzb21ldGhpbmcgbGlrZSBmaW5pc2hDcmVhdGlvbiBpbiBjYXNlIHNvbWVib2R5IGRlY2lkZXMg
CisgICAgICAgIHRvIHN1YmNsYXNzIHRoaXMuIFdlIHVzZSB0aGlzIHNhbWUgdGVjaG5pcXVlIGZv
ciBtYW55IG90aGVyIHN1YmNsYXNzZXMgb2YgSlNHbG9iYWxPYmplY3QuCisgICAgICAgIChKU0M6
Ojo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgor
ICAgICAgICAoSlNDYWxsYmFja09iamVjdCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIEFQ
SS9KU0NsYXNzUmVmLmNwcDogQ2hhbmdlIGFsbCB0aGUgSlNDYWxsYmFja09iamVjdDxKU05vbkZp
bmFsT2JqZWN0PiB0byB1c2UgSlNEZXN0cnVjdGlibGVPYmplY3QgaW5zdGVhZC4KKyAgICAgICAg
KE9wYXF1ZUpTQ2xhc3M6OnByb3RvdHlwZSk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNw
cDogRGl0dG8uCisgICAgICAgIChKU09iamVjdE1ha2UpOgorICAgICAgICAoSlNPYmplY3RHZXRQ
cml2YXRlKToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJpdmF0ZSk6CisgICAgICAgIChKU09iamVj
dEdldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU09iamVjdFNldFByaXZhdGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU09iamVjdERlbGV0ZVByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgICog
QVBJL0pTVmFsdWVSZWYuY3BwOiBEaXR0by4KKyAgICAgICAgKEpTVmFsdWVJc09iamVjdE9mQ2xh
c3MpOgorICAgICAgICAqIEFQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcDogRGl0dG8u
CisgICAgICAgICogSlNDVHlwZWRBcnJheVN0dWJzLmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6IFVzZSB0aGUgcHJvcGVyIGFsbG9jYXRvciB0eXBlIHdo
ZW4gZG9pbmcgaW5saW5lIGFsbG9jYXRpb24gaW4gdGhlIERGRy4KKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QpOgorICAg
ICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGhlYXAvSGVh
cC5oOiBBZGQgYWNjZXNzb3JzIGZvciB0aGUgdmFyaW91cyB0eXBlcyBvZiBhbGxvY2F0b3JzIG5v
dy4gQWxzbyByZW1vdmUgdGhlIGlzU2FmZVRvU3dlZXBTdHJ1Y3R1cmVzIGZ1bmN0aW9uIAorICAg
ICAgICBzaW5jZSBpdCdzIGFsd2F5cyBzYWZlIHRvIHN3ZWVwIFN0cnVjdHVyZXMgbm93LgorICAg
ICAgICAoSlNDOjpIZWFwOjphbGxvY2F0b3JGb3JPYmplY3RXaXRoTm9ybWFsRGVzdHJ1Y3Rvcik6
IAorICAgICAgICAoSlNDOjpIZWFwOjphbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0YWxTdHJ1
Y3R1cmVEZXN0cnVjdG9yKToKKyAgICAgICAgKEhlYXApOgorICAgICAgICAoSlNDOjpIZWFwOjph
bGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChK
U0M6OkhlYXA6OmFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3Rvcik6CisgICAg
ICAgICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwOiBSZW1vdmUgYWxsIHRoZSBsb2dpYyB0
byBkZXRlY3Qgd2hlbiBpdCdzIHNhZmUgdG8gc3dlZXAgU3RydWN0dXJlcyBmcm9tIHRoZSAKKyAg
ICAgICAgSW5jcmVtZW50YWxTd2VlcGVyIHNpbmNlIGl0J3MgYWx3YXlzIHNhZmUgdG8gc3dlZXAg
U3RydWN0dXJlcyBub3cuCisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVt
ZW50YWxTd2VlcGVyKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5l
eHRCbG9jayk6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGlu
Zyk6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6d2lsbEZpbmlzaFN3ZWVwaW5n
KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaDoK
KyAgICAgICAgKEluY3JlbWVudGFsU3dlZXBlcik6CisgICAgICAgICogaGVhcC9NYXJrZWRBbGxv
Y2F0b3IuY3BwOiBSZW1vdmUgdGhlIGxvZ2ljIHRoYXQgd2FzIHByZXZlbnRpbmcgdXMgZnJvbSBz
d2VlcGluZyBTdHJ1Y3R1cmVzIGlmIGl0IHdhc24ndCBzYWZlLiBBZGQgCisgICAgICAgIHRyYWNr
aW5nIG9mIHRoZSBzcGVjaWZpYyBkZXN0cnVjdG9yIHR5cGUgb2YgYWxsb2NhdG9yLiAKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUhlbHBlcik6CisgICAgICAgIChK
U0M6Ok1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVCbG9jayk6CisgICAgICAgICogaGVhcC9NYXJr
ZWRBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpkZXN0cnVjdG9y
VHlwZSk6CisgICAgICAgIChNYXJrZWRBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6aW5pdCk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6IEFkZCBhbGwgdGhlIGRl
c3RydWN0b3IgdHlwZSBzdHVmZiB0byBNYXJrZWRCbG9ja3Mgc28gdGhhdCB3ZSBkbyB0aGUgcmln
aHQgdGhpbmcgd2hlbiBzd2VlcGluZy4gCisgICAgICAgIFdlIGFsc28gdXNlIHRoZSBzdG9yZWQg
ZGVzdHJ1Y3RvciB0eXBlIHRvIGRldGVybWluZSB0aGUgcmlnaHQgdGhpbmcgdG8gZG8gaW4gYWxs
IEpTQ2VsbDo6Y2xhc3NJbmZvKCkgY2FsbHMuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6TWFya2VkQmxvY2spOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnNwZWNpYWxpemVkU3dlZXApOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3dlZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6c3dlZXBIZWxwZXIpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphbGxvY2F0b3IpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6ZGVzdHJ1Y3RvclR5cGUpOgorICAgICAgICAqIGhlYXAvTWFy
a2VkU3BhY2UuY3BwOiBBZGQgdGhlIG5ldyBkZXN0cnVjdG9yIGFsbG9jYXRvcnMgdG8gTWFya2Vk
U3BhY2UuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpNYXJrZWRTcGFjZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6Y2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSk6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjppc1BhZ2VkT3V0KToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZyZWVC
bG9jayk6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoTWFya2VkU3Bh
Y2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6aW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVj
dG9yQWxsb2NhdG9yRm9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Om5vcm1hbERlc3Ry
dWN0b3JBbGxvY2F0b3JGb3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YWxsb2NhdGVX
aXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3Bh
Y2U6OmFsbG9jYXRlV2l0aE5vcm1hbERlc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRT
cGFjZTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmNwcDogQWRk
IGluY2x1ZGUgYmVjYXVzZSB0aGUgc3ltYm9sIHdhcyBuZWVkZWQgaW4gYW4gaW5saW5lZCBmdW5j
dGlvbi4KKyAgICAgICAgKiBqaXQvSklULmg6IE1ha2Ugc3VyZSB3ZSB1c2UgdGhlIGNvcnJlY3Qg
YWxsb2NhdG9yIHdoZW4gZG9pbmcgaW5saW5lIGFsbG9jYXRpb25zIGluIHRoZSBiYXNlbGluZSBK
SVQuCisgICAgICAgICogaml0L0pJVElubGluZU1ldGhvZHMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QWxs
b2NhdGVKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QWxsb2NhdGVKU0Fy
cmF5KToKKyAgICAgICAgKiBqc2MuY3BwOiAKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6Y3JlYXRl
KTogQWRkIGZpbmFsaXplciBoZXJlIHNpbmNlIEpTR2xvYmFsT2JqZWN0IG5lZWRzIHRvIHVzZSBh
IGZpbmFsaXplciBpbnN0ZWFkIG9mIGluaGVyaXRpbmcgZnJvbSAKKyAgICAgICAgSlNEZXN0cnVj
dGlibGVPYmplY3QuCisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOiBJbmhlcml0IGZy
b20gSlNEZXN0cnVjdGlibGVPYmplY3QuCisgICAgICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRp
bWUvQXJndW1lbnRzLmg6CisgICAgICAgIChBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpBcmd1
bWVudHM6OkFyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6
IEFkZGVkIGFuIGFzc2VydCB0byBtYWtlIHN1cmUgd2UgaGF2ZSBhIHRyaXZpYWwgZGVzdHJ1Y3Rv
ci4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6IEluZGlj
YXRlIHRoYXQgYWxsIG9mIHRoZSBFeGVjdXRhYmxlKiBjbGFzc2VzIGhhdmUgaW1tb3J0YWwgU3Ry
dWN0dXJlcy4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmNwcDogSW5oZXJpdCBmcm9tIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgIChJbnRlcm5hbEZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOiBBZGRlZCB0aGUgTkVFRFNfREVT
VFJVQ1RPUiAgbWFjcm8gdG8gbWFrZSBpdCBlYXNpZXIgZm9yIGNsYXNzZXMgdG8gaW5kaWNhdGUg
dGhhdCBpbnN0ZWFkIG9mIGJlaW5nIAorICAgICAgICBhbGxvY2F0ZWQgaW4gYSBkZXN0cnVjdG9y
IE1hcmtlZEFsbG9jYXRvciB0aGF0IHRoZXkgd2lsbCBoYW5kbGUgdGhlaXIgZGVzdHJ1Y3Rpb24g
dGhlbXNlbHZlcyB0aHJvdWdoIHRoZSAKKyAgICAgICAgdXNlIG9mIGEgZmluYWxpemVyLgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEhhc0ltbW9ydGFsU3RydWN0dXJlKTogTmV3IHRlbXBsYXRl
IHRvIGhlbHAgdXMgZGV0ZXJtaW5lIGF0IGNvbXBpbGUtdGltZSBpZiBhIHBhcnRpY3VsYXIgY2xh
c3MgCisgICAgICAgIHNob3VsZCBiZSBhbGxvY2F0ZWQgaW4gdGhlIGltbW9ydGFsIHN0cnVjdHVy
ZSBNYXJrZWRBbGxvY2F0b3IuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGZhbHNlLiBJbiBvcmRlciAK
KyAgICAgICAgdG8gYmUgYWxsb2NhdGVkIGluIHRoZSBpbW1vcnRhbCBzdHJ1Y3R1cmUgYWxsb2Nh
dG9yLCBjbGFzc2VzIG11c3Qgc3BlY2lhbGl6ZSB0aGlzIHRlbXBsYXRlLiBBbHNvIGFkZGVkIAor
ICAgICAgICBhIG1hY3JvIHRvIG1ha2UgaXQgZWFzaWVyIGZvciBjbGFzc2VzIHRvIHNwZWNpYWxp
emUgdGhlIHRlbXBsYXRlLgorICAgICAgICAoSlNDOjphbGxvY2F0ZUNlbGwpOiBVc2UgdGhlIGFw
cHJvcHJpYXRlIGFsbG9jYXRvciBkZXBlbmRpbmcgb24gdGhlIGRlc3RydWN0b3IgdHlwZS4KKyAg
ICAgICAgKiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmg6IEFkZGVkLiBOZXcgY2xhc3Mg
dGhhdCBzdG9yZXMgdGhlIENsYXNzSW5mbyBvZiBhbnkgc3ViY2xhc3Mgc28gdGhhdCBpdCBjYW4g
YmUgCisgICAgICAgIGFjY2Vzc2VkIHNhZmVseSB3aGVuIHRoZSBvYmplY3QgaXMgYmVpbmcgZGVz
dHJveWVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KToK
KyAgICAgICAgKEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mbyk6CisgICAgICAg
IChKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0OjpKU0Rlc3RydWN0aWJsZU9iamVjdCk6CisgICAg
ICAgIChKU0M6OkpTQ2VsbDo6Y2xhc3NJbmZvKTogQ2hlY2tzIHRoZSBjdXJyZW50IE1hcmtlZEJs
b2NrIHRvIHNlZSB3aGVyZSBpdCBzaG91bGQgZ2V0IHRoZSBDbGFzc0luZm8gZnJvbSBzbyB0aGF0
IGl0J3MgYWx3YXlzIHNhZmUuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6
IEpTR2xvYmFsT2JqZWN0IG5vdyB1c2VzIGEgZmluYWxpemVyIGluc3RlYWQgb2YgYSBkZXN0cnVj
dG9yIHNvIHRoYXQgaXQgY2FuIGF2b2lkIGZvcmNpbmcgYWxsIAorICAgICAgICBvZiBpdHMgcmVs
YXRpdmVzIGluIHRoZSBpbmhlcml0YW5jZSBoaWVyYXJjaHkgKGUuZy4gSlNTY29wZSkgdG8gdXNl
IGRlc3RydWN0b3JzIGFzIHdlbGwuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXNl
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNHbG9i
YWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJ
Zk5lZWRlZCk6IFNpbmNlIHdlIGFsd2F5cyBjcmVhdGUgYSBmaW5hbGl6ZXIgbm93LCB3ZSBkb24n
dCBoYXZlIHRvIHdvcnJ5IGFib3V0IGFkZGluZyBvbmUgCisgICAgICAgIGZvciB0aGUgbV9yYXJl
RGF0YSBmaWVsZCB3aGVuIGl0J3MgY3JlYXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxU
aGlzLmg6IEluaGVyaXQgZnJvbSBKU0Rlc3RydWN0aWJsZU9iamVjdC4KKyAgICAgICAgKEpTR2xv
YmFsVGhpcyk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsVGhpczo6SlNHbG9iYWxUaGlzKToKKyAg
ICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDogSGFzIGFuIGltbW9ydGFs
IFN0cnVjdHVyZS4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNw
cDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOiBIYXMgYW4g
aW1tb3J0YWwgU3RydWN0dXJlLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pT
V3JhcHBlck9iamVjdC5oOiBJbmhlcml0IGZyb20gSlNEZXN0cnVjdGlibGVPYmplY3QuCisgICAg
ICAgIChKU1dyYXBwZXJPYmplY3QpOgorICAgICAgICAoSlNDOjpKU1dyYXBwZXJPYmplY3Q6OkpT
V3JhcHBlck9iamVjdCk6CisgICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0LmNwcDogQ2xlYW5p
bmcgdXAgc29tZSBvZiB0aGUgaW5oZXJpdGFuY2Ugc3R1ZmYuCisgICAgICAgIChKU0MpOgorICAg
ICAgICAqIHJ1bnRpbWUvTmFtZUluc3RhbmNlLmg6IEluaGVyaXQgZnJvbSBKU0Rlc3RydWN0aWJs
ZU9iamVjdC4KKyAgICAgICAgKE5hbWVJbnN0YW5jZSk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHAuaDogSGFzIGltbW9ydGFsIFN0cnVjdHVyZS4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICog
cnVudGltZS9SZWdFeHBPYmplY3QuY3BwOiBJbmhlcml0YW5jZSBjbGVhbnVwLgorICAgICAgICAo
SlNDKToKKyAgICAgICAgKiBydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaDogSGFzIGltbW9y
dGFsIFN0cnVjdHVyZS4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuaDogSGFzIGltbW9ydGFsIFN0cnVjdHVyZS4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oOiBEaXR0by4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
ICogcnVudGltZS9TeW1ib2xUYWJsZS5oOiBEaXR0by4KKyAgICAgICAgKFNoYXJlZFN5bWJvbFRh
YmxlKToKKyAgICAgICAgKEpTQyk6CisKIDIwMTItMDktMTYgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBKU09iamVjdC5jcHAgYW5kIEpTQXJyYXkuY3BwIGhhdmUg
aW5jb25zaXN0ZW50IHRlc3RzIGZvciB0aGUgaW52YWxpZCBhcnJheSBpbmRleCBjYXNlCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTI4
NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtp
bmcgY29weSkKQEAgLTUzMyw2ICs1MzMsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0ZU1hdGguaCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9u
LmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0pTQ1R5cGVkQXJyYXlTdHVicy5o
CShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJh
eVN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgSlNDVHlw
ZWRBcnJheVN0dWJzX2gKICNkZWZpbmUgSlNDVHlwZWRBcnJheVN0dWJzX2gKIAotI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKICNpbmNsdWRl
ICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+CiAjaW5j
bHVkZSA8d3RmL0Zsb2F0NjRBcnJheS5oPgpAQCAtNDIsOSArNDIsOSBAQAogbmFtZXNwYWNlIEpT
QyB7CiAgICAgCiAjZGVmaW5lIFRZUEVEX0FSUkFZKG5hbWUsIHR5cGUpIFwKLWNsYXNzIEpTIyNu
YW1lIyNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsgXAorY2xhc3MgSlMjI25hbWUj
I0FycmF5IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsgXAogcHVibGljOiBcCi0gICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7IFwKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0IEJhc2U7IFwKICAgICBzdGF0aWMgSlMjI25hbWUjI0FycmF5KiBjcmVhdGUoSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFz
c1JlZlB0cjxuYW1lIyNBcnJheT4gaW1wbCkgXAogICAgIHsgXAogICAgICAgICBKUyMjbmFtZSMj
QXJyYXkqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlMjI25hbWUjI0Fy
cmF5PihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlMjI25hbWUjI0FycmF5KHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJ
KHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzYsNiArMTc2LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgR2xv
YmFsT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmpl
Y3Q+KGdsb2JhbERhdGEuaGVhcCkpIEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUp
OwogICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGFyZ3VtZW50cyk7
CisgICAgICAgIGdsb2JhbERhdGEuaGVhcC5hZGRGaW5hbGl6ZXIob2JqZWN0LCBkZXN0cm95KTsK
ICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CiAKQEAgLTI0Myw2ICsyNDQsMTIgQEAgcHJv
dGVjdGVkOgogICAgICAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgaWRlbnRpZmllciwgSlNGdW5j
dGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLnN0
cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGZ1bmN0aW9uKSk7CiAgICAgfQogfTsKKwor
CituYW1lc3BhY2UgSlNDIHsKK05FRURTX0RFU1RSVUNUT1IoR2xvYmFsT2JqZWN0LCBmYWxzZSk7
Cit9OworCiBDT01QSUxFX0FTU0VSVCghSXNJbnRlZ2VyPEdsb2JhbE9iamVjdD46OnZhbHVlLCBX
VEZfSXNJbnRlZ2VyX0dsb2JhbE9iamVjdF9mYWxzZSk7CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKEdsb2JhbE9iamVjdCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVn
RXhwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5j
cHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw5IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBHbG9iYWxPYmplY3QqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJndW1lbnRzKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdsb2JhbE9iamVjdD4o
Z2xvYmFsRGF0YS5oZWFwKSkgR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgYXJn
dW1lbnRzKTsKKyAgICAgICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEdsb2JhbE9i
amVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGFyZ3VtZW50cyk7CisgICAgICAgIGdsb2JhbERh
dGEuaGVhcC5hZGRGaW5hbGl6ZXIoZ2xvYmFsT2JqZWN0LCBkZXN0cm95KTsKKyAgICAgICAgcmV0
dXJuIGdsb2JhbE9iamVjdDsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNf
aW5mbzsKQEAgLTEzMyw2ICsxMzUsMTAgQEAgcHJvdGVjdGVkOgogICAgIH0KIH07CiAKK25hbWVz
cGFjZSBKU0MgeworTkVFRFNfREVTVFJVQ1RPUihHbG9iYWxPYmplY3QsIGZhbHNlKTsKK30KKwog
Q09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9iYWxPYmplY3Q+Ojp2YWx1ZSwgV1RGX0lzSW50
ZWdlcl9HbG9iYWxPYmplY3RfZmFsc2UpOwogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChHbG9i
YWxPYmplY3QpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tD
b25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDEwICszNiwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY29uc3QgQ2xhc3NJbmZv
IEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiQ2FsbGJhY2tDb25zdHJ1Y3RvciIs
ICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlND
YWxsYmFja0NvbnN0cnVjdG9yKSB9OworY29uc3QgQ2xhc3NJbmZvIEpTQ2FsbGJhY2tDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiQ2FsbGJhY2tDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNDYWxsYmFja0NvbnN0cnVjdG9yKSB9OwogCiBKU0Nh
bGxiYWNrQ29uc3RydWN0b3I6OkpTQ2FsbGJhY2tDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDbGFzc1JlZiBqc0NsYXNzLCBK
U09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY2FsbGJhY2spCi0gICAgOiBKU05vbkZp
bmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCisgICAgOiBK
U0Rlc3RydWN0aWJsZU9iamVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJl
KQogICAgICwgbV9jbGFzcyhqc0NsYXNzKQogICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3Ry
dWN0b3IuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTMgKzI3LDEzIEBA
CiAjZGVmaW5lIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcl9oCiAKICNpbmNsdWRlICJKU09iamVjdFJl
Zi5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KKyNpbmNsdWRlICJydW50aW1lL0pT
RGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBKU0NhbGxi
YWNrQ29uc3RydWN0b3IgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitjbGFzcyBKU0NhbGxi
YWNrQ29uc3RydWN0b3IgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgot
ICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHR5cGVkZWYgSlNEZXN0cnVj
dGlibGVPYmplY3QgQmFzZTsKIAogICAgIHN0YXRpYyBKU0NhbGxiYWNrQ29uc3RydWN0b3IqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0NsYXNzUmVmIGNsYXNzUmVmLCBKU09iamVjdENhbGxBc0NvbnN0
cnVjdG9yQ2FsbGJhY2sgY2FsbGJhY2spIAogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsMTUgKzMyLDI0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1BU1NFUlRfQ0xB
U1NfRklUU19JTl9DRUxMKEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4pOworQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0Pik7CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9i
YWxPYmplY3Q+KTsKIAogLy8gRGVmaW5lIHRoZSB0d28gdHlwZXMgb2YgSlNDYWxsYmFja09iamVj
dHMgd2Ugc3VwcG9ydC4KLXRlbXBsYXRlIDw+IGNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrT2Jq
ZWN0PEpTTm9uRmluYWxPYmplY3Q+OjpzX2luZm8gPSB7ICJDYWxsYmFja09iamVjdCIsICZKU05v
bkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNDYWxsYmFj
a09iamVjdCkgfTsKLXRlbXBsYXRlIDw+IGNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrT2JqZWN0
PEpTR2xvYmFsT2JqZWN0Pjo6c19pbmZvID0geyAiQ2FsbGJhY2tHbG9iYWxPYmplY3QiLCAmSlNH
bG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0NhbGxiYWNr
T2JqZWN0KSB9OwordGVtcGxhdGUgPD4gY29uc3QgQ2xhc3NJbmZvIEpTQ2FsbGJhY2tPYmplY3Q8
SlNEZXN0cnVjdGlibGVPYmplY3Q+OjpzX2luZm8gPSB7ICJDYWxsYmFja09iamVjdCIsICZCYXNl
OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNDYWxsYmFja09iamVjdCkgfTsK
K3RlbXBsYXRlIDw+IGNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2Jq
ZWN0Pjo6c19pbmZvID0geyAiQ2FsbGJhY2tHbG9iYWxPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAw
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ2FsbGJhY2tPYmplY3QpIH07CisKK3RlbXBsYXRl
PD4KK0pTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+KiBKU0NhbGxiYWNrT2JqZWN0PEpT
R2xvYmFsT2JqZWN0Pjo6Y3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDbGFzc1Jl
ZiBjbGFzc1JlZiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSlNDYWxsYmFja09iamVj
dDxKU0dsb2JhbE9iamVjdD4qIGNhbGxiYWNrT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4gPihnbG9iYWxEYXRhLmhlYXAp
KSBKU0NhbGxiYWNrT2JqZWN0KGdsb2JhbERhdGEsIGNsYXNzUmVmLCBzdHJ1Y3R1cmUpOworICAg
IGNhbGxiYWNrT2JqZWN0LT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKKyAgICBnbG9iYWxE
YXRhLmhlYXAuYWRkRmluYWxpemVyKGNhbGxiYWNrT2JqZWN0LCBkZXN0cm95KTsKKyAgICByZXR1
cm4gY2FsbGJhY2tPYmplY3Q7Cit9CiAKIHRlbXBsYXRlIDw+Ci1TdHJ1Y3R1cmUqIEpTQ2FsbGJh
Y2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8p
CitTdHJ1Y3R1cmUqIEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+OjpjcmVh
dGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQogeyAKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsgCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzMywxMyArMTMzLDcgQEAgcHVibGljOgogICAgICAgICBjYWxsYmFja09iamVjdC0+ZmluaXNo
Q3JlYXRpb24oZXhlYyk7CiAgICAgICAgIHJldHVybiBjYWxsYmFja09iamVjdDsKICAgICB9Ci0g
ICAgc3RhdGljIEpTQ2FsbGJhY2tPYmplY3QqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTQ2xhc3NSZWYgY2xhc3NSZWYsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAg
ICAgICAgSlNDYWxsYmFja09iamVjdCogY2FsbGJhY2tPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU0NhbGxiYWNrT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBKU0NhbGxiYWNr
T2JqZWN0KGdsb2JhbERhdGEsIGNsYXNzUmVmLCBzdHJ1Y3R1cmUpOwotICAgICAgICBjYWxsYmFj
a09iamVjdC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7Ci0gICAgICAgIHJldHVybiBjYWxs
YmFja09iamVjdDsKLSAgICB9Ci0KKyAgICBzdGF0aWMgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiwgSlNDbGFzc1JlZiwgU3RydWN0dXJlKik7CiAgICAgdm9p
ZCBzZXRQcml2YXRlKHZvaWQqIGRhdGEpOwogICAgIHZvaWQqIGdldFByaXZhdGUoKTsKIApAQCAt
MjE3LDYgKzIxMSw4IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEpTQ2FsbGJhY2tPYmplY3REYXRh
PiBtX2NhbGxiYWNrT2JqZWN0RGF0YTsKIH07CiAKK05FRURTX0RFU1RSVUNUT1IoSlNDYWxsYmFj
a09iamVjdDxKU0dsb2JhbE9iamVjdD4sIGZhbHNlKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
IC8vIGluY2x1ZGUgdGhlIGFjdHVhbCB0ZW1wbGF0ZSBjbGFzcyBpbXBsZW1lbnRhdGlvbgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCShyZXZpc2lvbiAxMjg3
MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTksNyArMTk5LDcgQEAgSlNPYmplY3QqIE9wYXF1ZUpTQ2xhc3M6OnByb3Rv
dHlwZShFeGVjUwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogCiAgICAgLy8gUmVjdXJzaXZl
LCBidXQgc2hvdWxkIGJlIGdvb2QgZW5vdWdoIGZvciBvdXIgcHVycG9zZXMKLSAgICBKU09iamVj
dCogcHJvdG90eXBlID0gSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pjo6Y3JlYXRl
KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5jYWxsYmFja09iamVjdFN0cnVjdHVyZSgpLCBwcm90b3R5cGVDbGFzcywgJmpzQ2xh
c3NEYXRhKTsgLy8gc2V0IGpzQ2xhc3NEYXRhIGFzIHRoZSBvYmplY3QncyBwcml2YXRlIGRhdGEs
IHNvIGl0IGNhbiBjbGVhciBvdXIgcmVmZXJlbmNlIG9uIGRlc3RydWN0aW9uCisgICAgSlNPYmpl
Y3QqIHByb3RvdHlwZSA9IEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Ojpj
cmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPmNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCksIHByb3RvdHlwZUNsYXNzLCAm
anNDbGFzc0RhdGEpOyAvLyBzZXQganNDbGFzc0RhdGEgYXMgdGhlIG9iamVjdCdzIHByaXZhdGUg
ZGF0YSwgc28gaXQgY2FuIGNsZWFyIG91ciByZWZlcmVuY2Ugb24gZGVzdHJ1Y3Rpb24KICAgICBp
ZiAocGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKEpTT2JqZWN0KiBwYXJlbnRQcm90b3R5cGUg
PSBwYXJlbnRDbGFzcy0+cHJvdG90eXBlKGV4ZWMpKQogICAgICAgICAgICAgcHJvdG90eXBlLT5z
ZXRQcm90b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwYXJlbnRQcm90b3R5cGUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHJldmlzaW9uIDEyODcx
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZShKU0NvbnRl
eHRSZWYgY3QKICAgICBpZiAoIWpzQ2xhc3MpCiAgICAgICAgIHJldHVybiB0b1JlZihjb25zdHJ1
Y3RFbXB0eU9iamVjdChleGVjKSk7CiAKLSAgICBKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxP
YmplY3Q+KiBvYmplY3QgPSBKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+OjpjcmVh
dGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPmNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCksIGpzQ2xhc3MsIGRhdGEpOworICAg
IEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+KiBvYmplY3QgPSBKU0NhbGxi
YWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jYWxsYmFja09i
amVjdFN0cnVjdHVyZSgpLCBqc0NsYXNzLCBkYXRhKTsKICAgICBpZiAoSlNPYmplY3QqIHByb3Rv
dHlwZSA9IGpzQ2xhc3MtPnByb3RvdHlwZShleGVjKSkKICAgICAgICAgb2JqZWN0LT5zZXRQcm90
b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm90b3R5cGUpOwogCkBAIC0zNDEsOCArMzQxLDgg
QEAgdm9pZCogSlNPYmplY3RHZXRQcml2YXRlKEpTT2JqZWN0UmVmIG9iagogICAgIAogICAgIGlm
IChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Ojpz
X2luZm8pKQogICAgICAgICByZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxP
YmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2YXRlKCk7Ci0gICAgaWYgKGpzT2JqZWN0LT5pbmhl
cml0cygmSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pjo6c19pbmZvKSkKLSAgICAg
ICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+Kj4oanNP
YmplY3QpLT5nZXRQcml2YXRlKCk7CisgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxs
YmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OnNfaW5mbykpCisgICAgICAgIHJldHVy
biBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qPihqc09iamVj
dCktPmdldFByaXZhdGUoKTsKICAgICAKICAgICByZXR1cm4gMDsKIH0KQEAgLTM1NSw4ICszNTUs
OCBAQCBib29sIEpTT2JqZWN0U2V0UHJpdmF0ZShKU09iamVjdFJlZiBvYmplCiAgICAgICAgIGpz
Q2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJp
dmF0ZShkYXRhKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGlmIChqc09iamVj
dC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD46OnNfaW5mbykp
IHsKLSAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4qPihq
c09iamVjdCktPnNldFByaXZhdGUoZGF0YSk7CisgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygm
SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OnNfaW5mbykpIHsKKyAgICAg
ICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmpl
Y3QpLT5zZXRQcml2YXRlKGRhdGEpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
ICAgIApAQCAtMzcyLDggKzM3Miw4IEBAIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcml2YXRlUHJv
cGVydHkoSlMKICAgICBJZGVudGlmaWVyIG5hbWUocHJvcGVydHlOYW1lLT5pZGVudGlmaWVyKCZl
eGVjLT5nbG9iYWxEYXRhKCkpKTsKICAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxi
YWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pjo6c19pbmZvKSkKICAgICAgICAgcmVzdWx0ID0ganND
YXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2
YXRlUHJvcGVydHkobmFtZSk7Ci0gICAgZWxzZSBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0Nh
bGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+OjpzX2luZm8pKQotICAgICAgICByZXN1bHQg
PSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+
Z2V0UHJpdmF0ZVByb3BlcnR5KG5hbWUpOworICAgIGVsc2UgaWYgKGpzT2JqZWN0LT5pbmhlcml0
cygmSlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OnNfaW5mbykpCisgICAg
ICAgIHJlc3VsdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZVByb3BlcnR5KG5hbWUpOwogICAgIHJldHVybiB0b1Jl
ZihleGVjLCByZXN1bHQpOwogfQogCkBAIC0zODgsOCArMzg4LDggQEAgYm9vbCBKU09iamVjdFNl
dFByaXZhdGVQcm9wZXJ0eShKU0NvbnRleAogICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVj
dDxKU0dsb2JhbE9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShleGVjLT5n
bG9iYWxEYXRhKCksIG5hbWUsIGpzVmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
Ci0gICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFs
T2JqZWN0Pjo6c19pbmZvKSkgewotICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU05v
bkZpbmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJpdmF0ZVByb3BlcnR5KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbmFtZSwganNWYWx1ZSk7CisgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlND
YWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OnNfaW5mbykpIHsKKyAgICAgICAg
anNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3Qp
LT5zZXRQcml2YXRlUHJvcGVydHkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lLCBqc1ZhbHVlKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTQwNSw4
ICs0MDUsOCBAQCBib29sIEpTT2JqZWN0RGVsZXRlUHJpdmF0ZVByb3BlcnR5KEpTQ29uCiAgICAg
ICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+
ZGVsZXRlUHJpdmF0ZVByb3BlcnR5KG5hbWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
Ci0gICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFs
T2JqZWN0Pjo6c19pbmZvKSkgewotICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU05v
bkZpbmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+ZGVsZXRlUHJpdmF0ZVByb3BlcnR5KG5hbWUpOwor
ICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGli
bGVPYmplY3Q+OjpzX2luZm8pKSB7CisgICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0KS0+ZGVsZXRlUHJpdmF0ZVByb3BlcnR5KG5h
bWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCShyZXZpc2lvbiAxMjg3
MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzEsOCArMTMxLDggQEAgYm9vbCBKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKEpT
Q29udGV4dFJlZgogICAgIGlmIChKU09iamVjdCogbyA9IGpzVmFsdWUuZ2V0T2JqZWN0KCkpIHsK
ICAgICAgICAgaWYgKG8tPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0
Pjo6c19pbmZvKSkKICAgICAgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxK
U0dsb2JhbE9iamVjdD4qPihvKS0+aW5oZXJpdHMoanNDbGFzcyk7Ci0gICAgICAgIGlmIChvLT5p
bmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pjo6c19pbmZvKSkKLSAg
ICAgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0
Pio+KG8pLT5pbmhlcml0cyhqc0NsYXNzKTsKKyAgICAgICAgaWYgKG8tPmluaGVyaXRzKCZKU0Nh
bGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkKKyAgICAgICAgICAg
IHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qPihv
KS0+aW5oZXJpdHMoanNDbGFzcyk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBS
ZWZQcml2YXRlLmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcs
NyArNTcsNyBAQCB2b2lkIEpTV2Vha09iamVjdE1hcFNldChKU0NvbnRleHRSZWYgY3R4CiAgICAg
SlNPYmplY3QqIG9iaiA9IHRvSlMob2JqZWN0KTsKICAgICBpZiAoIW9iaikKICAgICAgICAgcmV0
dXJuOwotICAgIEFTU0VSVChvYmotPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFs
T2JqZWN0Pjo6c19pbmZvKSB8fCBvYmotPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTTm9u
RmluYWxPYmplY3Q+OjpzX2luZm8pKTsKKyAgICBBU1NFUlQob2JqLT5pbmhlcml0cygmSlNDYWxs
YmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OnNfaW5mbykgfHwgb2JqLT5pbmhlcml0cygmSlND
YWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OnNfaW5mbykpOwogICAgIG1hcC0+
bWFwKCkuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwga2V5LCBvYmopOwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
agkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTg0Miw2ICs4NDIsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50
aW1lXEpTRnVuY3Rpb24uY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNzEwLDYgKzcxMCw3IEBACiAJCUMyNDAzMDU1MTRCNDA0RTYwMDc5RUI2NCAvKiBDb3Bp
ZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwICovOyB9OwogCQlD
MjVGOEJDRDE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUY4QkNCMTU3NTQ0QTkw
MDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovOyB9OwogCQlDMjVGOEJDRTE1NzU0
NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjVGOEJDQzE1NzU0NEE5MDAyNDVCNzEgLyogSW5j
cmVtZW50YWxTd2VlcGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQzJBN0Y2ODgxNjA0MzJENDAwRjc2Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkE3
RjY4NzE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMkI5MTZDMjE0REEwMTRF
MDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMkI5MTZDMTE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxs
b2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQzJCOTE2QzUxNERBMDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkI5MTZDNDE0REEwNDBD
MDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCAqLzsgfTsKIAkJQzJDOEQwMkQxNEEzQzZF
MDAwNTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lTWV0aG9kcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDOEQwMkIxNEEzQzZCMjAwNTc4RTY1IC8q
IENvcGllZFNwYWNlSW5saW5lTWV0aG9kcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xNDgzLDYgKzE0ODQsNyBAQAogCQlDMjQwMzA1MzE0QjQw
NEM5MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ29waWVkU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMjVGOEJDQjE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluY3JlbWVudGFsU3dlZXBlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAv
KiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5jcmVtZW50YWxTd2VlcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyQTdG
Njg3MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Rlc3RydWN0aWJsZU9iamVjdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMkI5MTZDMTE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxs
b2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZEFsbG9jYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkI5MTZDNDE0REEwNDBDMDBDQkFD
ODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1hcmtlZEFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyQzhEMDJCMTRBM0M2QjIwMDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZU1ldGhvZHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29waWVkU3BhY2VJbmxpbmVNZXRob2Rz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDQzLDYgKzIwNDUsNyBAQAogCQk3
RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzJBN0Y2ODcxNjA0MzJENDAwRjc2Qjk4IC8qIEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LmggKi8sCiAJCQkJMEYwQ0Q0QzMxNUY2QjZCNTAwMzJGMUMwIC8q
IFNwYXJzZUFycmF5VmFsdWVNYXAuY3BwICovLAogCQkJCTBGMENENEMwMTVGMUE2MDQwMDMyRjFD
MCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCAqLywKIAkJCQkwRkI3RjM4OTE1RUQ4RTM4MDBGMTY3
QjIgLyogQXJyYXlDb252ZW50aW9ucy5oICovLApAQCAtMjU2Myw2ICsyNTY2LDcgQEAKIAkJCQk4
NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyRUFEMkZDMTRGMDI0OTgwMEE0QjE1OSAvKiBDb3BpZWRBbGxvY2F0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyQTdGNjg4MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rl
c3RydWN0aWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUyMENFOUUxNUYwNEE5NTAw
REYzNDMwIC8qIExMSW50Q0xvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyMTEyMkUyMTVERDlB
QjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUMy
MTYwRkU3MTVGN0U5NUUwMDk0MkRGQyAvKiBTbG90VmlzaXRvcklubGluZU1ldGhvZHMuaCBpbiBI
ZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTg5LDEyICsyMTg5LDE0
IEBAIHB1YmxpYzoKICAgIAogICAgIC8vIEl0IGlzIE5PVCBva2F5IGZvciB0aGUgc3RydWN0dXJl
IGFuZCB0aGUgc2NyYXRjaCByZWdpc3RlciB0byBiZSB0aGUgc2FtZSB0aGluZyBiZWNhdXNlIGlm
IHRoZXkgYXJlIHRoZW4gdGhlIFN0cnVjdHVyZSB3aWxsIAogICAgIC8vIGdldCBjbG9iYmVyZWQu
IAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIGJvb2wgZGVzdHJ1Y3RvciwgdHlw
ZW5hbWUgU3RydWN0dXJlVHlwZT4gCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwg
TWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBlIGRlc3RydWN0b3JUeXBlLCB0eXBlbmFtZSBTdHJ1
Y3R1cmVUeXBlPiAKICAgICB2b2lkIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QoU3RydWN0dXJl
VHlwZSBzdHJ1Y3R1cmUsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNsb3dQYXRoKQogICAgIHsKICAgICAgICAgTWFya2VkQWxs
b2NhdG9yKiBhbGxvY2F0b3IgPSAwOwotICAgICAgICBpZiAoZGVzdHJ1Y3RvcikKLSAgICAgICAg
ICAgIGFsbG9jYXRvciA9ICZtX2ppdC5nbG9iYWxEYXRhKCktPmhlYXAuYWxsb2NhdG9yRm9yT2Jq
ZWN0V2l0aERlc3RydWN0b3Ioc2l6ZW9mKENsYXNzVHlwZSkpOworICAgICAgICBpZiAoZGVzdHJ1
Y3RvclR5cGUgPT0gTWFya2VkQmxvY2s6Ok5vcm1hbCkKKyAgICAgICAgICAgIGFsbG9jYXRvciA9
ICZtX2ppdC5nbG9iYWxEYXRhKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aE5vcm1hbERl
c3RydWN0b3Ioc2l6ZW9mKENsYXNzVHlwZSkpOworICAgICAgICBlbHNlIGlmIChkZXN0cnVjdG9y
VHlwZSA9PSBNYXJrZWRCbG9jazo6SW1tb3J0YWxTdHJ1Y3R1cmUpCisgICAgICAgICAgICBhbGxv
Y2F0b3IgPSAmbV9qaXQuZ2xvYmFsRGF0YSgpLT5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhJ
bW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3Ioc2l6ZW9mKENsYXNzVHlwZSkpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBhbGxvY2F0b3IgPSAmbV9qaXQuZ2xvYmFsRGF0YSgpLT5oZWFwLmFs
bG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKHNpemVvZihDbGFzc1R5cGUpKTsKIApA
QCAtMjIxNiw3ICsyMjE4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAg
ICAgdm9pZCBlbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KFQgc3RydWN0dXJlLCBHUFJSZWcgcmVz
dWx0R1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93
UGF0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0PEpT
RmluYWxPYmplY3QsIGZhbHNlPihzdHJ1Y3R1cmUsIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgc2xv
d1BhdGgpOworICAgICAgICByZXR1cm4gZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdDxKU0ZpbmFs
T2JqZWN0LCBNYXJrZWRCbG9jazo6Tm9uZT4oc3RydWN0dXJlLCByZXN1bHRHUFIsIHNjcmF0Y2hH
UFIsIHNsb3dQYXRoKTsKICAgICB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KSAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMwLDExICs4MzAs
NiBAQCB2b2lkIEhlYXA6OmFkZENvbXBpbGVkQ29kZShFeGVjdXRhYmxlQmFzCiAgICAgbV9jb21w
aWxlZENvZGUuYXBwZW5kKGV4ZWN1dGFibGUpOwogfQogCi1ib29sIEhlYXA6OmlzU2FmZVRvU3dl
ZXBTdHJ1Y3R1cmVzKCkKLXsKLSAgICByZXR1cm4gIW1fc3dlZXBlciB8fCBtX3N3ZWVwZXItPnN0
cnVjdHVyZXNDYW5CZVN3ZXB0KCk7Ci19Ci0KIHZvaWQgSGVhcDo6ZGlkU3RhcnRWTVNodXRkb3du
KCkKIHsKICAgICBtX2FjdGl2aXR5Q2FsbGJhY2stPmRpZFN0YXJ0Vk1TaHV0ZG93bigpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEy
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBNYXJrZWRBbGxvY2F0b3Im
IGZpcnN0QWxsb2NhdG9yV2l0aG91dERlc3RydWN0b3JzKCkgeyByZXR1cm4gbV9vYmplY3RTcGFj
ZS5maXJzdEFsbG9jYXRvcigpOyB9CiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9y
Rm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKSB7IHJldHVybiBtX29iamVj
dFNwYWNlLmFsbG9jYXRvckZvcihieXRlcyk7IH0KLSAgICAgICAgTWFya2VkQWxsb2NhdG9yJiBh
bGxvY2F0b3JGb3JPYmplY3RXaXRoRGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpIHsgcmV0dXJuIG1f
b2JqZWN0U3BhY2UuZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihieXRlcyk7IH0KKyAgICAgICAgTWFy
a2VkQWxsb2NhdG9yJiBhbGxvY2F0b3JGb3JPYmplY3RXaXRoTm9ybWFsRGVzdHJ1Y3RvcihzaXpl
X3QgYnl0ZXMpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uubm9ybWFsRGVzdHJ1Y3RvckFsbG9jYXRv
ckZvcihieXRlcyk7IH0KKyAgICAgICAgTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3JGb3JPYmpl
Y3RXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemVfdCBieXRlcykgeyByZXR1cm4g
bV9vYmplY3RTcGFjZS5pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3IoYnl0
ZXMpOyB9CiAgICAgICAgIENvcGllZEFsbG9jYXRvciYgc3RvcmFnZUFsbG9jYXRvcigpIHsgcmV0
dXJuIG1fc3RvcmFnZVNwYWNlLmFsbG9jYXRvcigpOyB9CiAgICAgICAgIENoZWNrZWRCb29sZWFu
IHRyeUFsbG9jYXRlU3RvcmFnZShzaXplX3QsIHZvaWQqKik7CiAgICAgICAgIENoZWNrZWRCb29s
ZWFuIHRyeVJlYWxsb2NhdGVTdG9yYWdlKHZvaWQqKiwgc2l6ZV90LCBzaXplX3QpOwpAQCAtMTY4
LDcgKzE2OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGRpZEFiYW5kb24oc2l6
ZV90KTsKIAogICAgICAgICBib29sIGlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsKLSAgICAg
ICAgYm9vbCBpc1NhZmVUb1N3ZWVwU3RydWN0dXJlcygpOwogICAgICAgICB2b2lkIGRpZFN0YXJ0
Vk1TaHV0ZG93bigpOwogCiAgICAgcHJpdmF0ZToKQEAgLTE4NCw5ICsxODQsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9j
YXRlQ2VsbChIZWFwJik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGZyaWVuZCB2b2lk
KiBhbGxvY2F0ZUNlbGwoSGVhcCYsIHNpemVfdCk7CiAKLSAgICAgICAgdm9pZCogYWxsb2NhdGVX
aXRoRGVzdHJ1Y3RvcihzaXplX3QpOwotICAgICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhvdXREZXN0
cnVjdG9yKHNpemVfdCk7Ci0gICAgICAgIHZvaWQqIGFsbG9jYXRlU3RydWN0dXJlKHNpemVfdCk7
CisgICAgICAgIHZvaWQqIGFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3Rvcihz
aXplX3QpOyAvLyBGb3IgdXNlIHdpdGggc3BlY2lhbCBvYmplY3RzIHdob3NlIFN0cnVjdHVyZXMg
bmV2ZXIgZGllLgorICAgICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKHNp
emVfdCk7IC8vIEZvciB1c2Ugd2l0aCBvYmplY3RzIHRoYXQgaW5oZXJpdCBkaXJlY3RseSBvciBp
bmRpcmVjdGx5IGZyb20gSlNEZXN0cnVjdGlibGVPYmplY3QuCisgICAgICAgIHZvaWQqIGFsbG9j
YXRlV2l0aG91dERlc3RydWN0b3Ioc2l6ZV90KTsgLy8gRm9yIHVzZSB3aXRoIG9iamVjdHMgd2l0
aG91dCBkZXN0cnVjdG9ycy4KIAogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1pbkV4dHJh
Q29zdCA9IDI1NjsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhFeHRyYUNvc3QgPSAx
MDI0ICogMTAyNDsKQEAgLTM2MSwxMCArMzYxLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICByZXR1cm4gZm9yRWFjaFByb3RlY3RlZENlbGwoZnVuY3Rvcik7CiAgICAgfQogCi0gICAgaW5s
aW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKQorICAg
IGlubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKHNpemVfdCBi
eXRlcykKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkQWxsb2NhdGlvbihieXRlcykpOwot
ICAgICAgICByZXR1cm4gbV9vYmplY3RTcGFjZS5hbGxvY2F0ZVdpdGhEZXN0cnVjdG9yKGJ5dGVz
KTsKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuYWxsb2NhdGVXaXRoTm9ybWFsRGVzdHJ1
Y3RvcihieXRlcyk7CisgICAgfQorICAgIAorICAgIGlubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0
ZVdpdGhJbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGlzVmFsaWRBbGxvY2F0aW9uKGJ5dGVzKSk7CisgICAgICAgIHJldHVybiBt
X29iamVjdFNwYWNlLmFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvcihieXRl
cyk7CiAgICAgfQogICAgIAogICAgIGlubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0ZVdpdGhvdXRE
ZXN0cnVjdG9yKHNpemVfdCBieXRlcykKQEAgLTM3MywxMSArMzc5LDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHJldHVybiBtX29iamVjdFNwYWNlLmFsbG9jYXRlV2l0aG91dERlc3RydWN0
b3IoYnl0ZXMpOwogICAgIH0KICAgIAotICAgIGlubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0ZVN0
cnVjdHVyZShzaXplX3QgYnl0ZXMpCi0gICAgewotICAgICAgICByZXR1cm4gbV9vYmplY3RTcGFj
ZS5hbGxvY2F0ZVN0cnVjdHVyZShieXRlcyk7Ci0gICAgfQotIAogICAgIGlubGluZSBDaGVja2Vk
Qm9vbGVhbiBIZWFwOjp0cnlBbGxvY2F0ZVN0b3JhZ2Uoc2l6ZV90IGJ5dGVzLCB2b2lkKiogb3V0
UHRyKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc3RvcmFnZVNwYWNlLnRyeUFsbG9jYXRlKGJ5
dGVzLCBvdXRQdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50
YWxTd2VlcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
bmNyZW1lbnRhbFN3ZWVwZXIuY3BwCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw3ICs0OCw2IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgc3dlZXBUaW1lTXVsdGlwbGllciAKIElu
Y3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqIGhlYXAsIENGUnVuTG9v
cFJlZiBydW5Mb29wKQogICAgIDogSGVhcFRpbWVyKGhlYXAtPmdsb2JhbERhdGEoKSwgcnVuTG9v
cCkKICAgICAsIG1fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4KDApCi0gICAgLCBtX3N0cnVjdHVy
ZXNDYW5CZVN3ZXB0KGZhbHNlKQogewogfQogCkBAIC03Miw3ICs3MSw2IEBAIHZvaWQgSW5jcmVt
ZW50YWxTd2VlcGVyOjpjYW5jZWxUaW1lcigpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVu
dGFsU3dlZXBlcihIZWFwKiBoZWFwKQogICAgIDogSGVhcFRpbWVyKGhlYXAtPmdsb2JhbERhdGEo
KSkKICAgICAsIG1fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4KDApCi0gICAgLCBtX3N0cnVjdHVy
ZXNDYW5CZVN3ZXB0KGZhbHNlKQogewogfQogCkBAIC0xMTksMTAgKzExNyw2IEBAIHZvaWQgSW5j
cmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9jaygKIHsKICAgICB3aGlsZSAobV9jdXJyZW50
QmxvY2tUb1N3ZWVwSW5kZXggPCBtX2Jsb2Nrc1RvU3dlZXAuc2l6ZSgpKSB7CiAgICAgICAgIE1h
cmtlZEJsb2NrKiBibG9jayA9IG1fYmxvY2tzVG9Td2VlcFttX2N1cnJlbnRCbG9ja1RvU3dlZXBJ
bmRleCsrXTsKLSAgICAgICAgaWYgKGJsb2NrLT5vbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKCkpCi0g
ICAgICAgICAgICBtX3N0cnVjdHVyZXNDYW5CZVN3ZXB0ID0gdHJ1ZTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgQVNTRVJUKCFtX3N0cnVjdHVyZXNDYW5CZVN3ZXB0KTsKIAogICAgICAgICBp
ZiAoIWJsb2NrLT5uZWVkc1N3ZWVwaW5nKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEz
OSwxNCArMTMzLDEyIEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpzdGFydFN3ZWVwaW5nKGMK
ICAgICBDb3B5RnVuY3RvciBmdW5jdG9yKG1fYmxvY2tzVG9Td2VlcCk7CiAgICAgbV9nbG9iYWxE
YXRhLT5oZWFwLm9iamVjdFNwYWNlKCkuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogICAgIG1fY3Vy
cmVudEJsb2NrVG9Td2VlcEluZGV4ID0gMDsKLSAgICBtX3N0cnVjdHVyZXNDYW5CZVN3ZXB0ID0g
ZmFsc2U7CiAgICAgc2NoZWR1bGVUaW1lcigpOwogfQogCiB2b2lkIEluY3JlbWVudGFsU3dlZXBl
cjo6d2lsbEZpbmlzaFN3ZWVwaW5nKCkKIHsKICAgICBtX2N1cnJlbnRCbG9ja1RvU3dlZXBJbmRl
eCA9IDA7Ci0gICAgbV9zdHJ1Y3R1cmVzQ2FuQmVTd2VwdCA9IHRydWU7CiAgICAgbV9ibG9ja3NU
b1N3ZWVwLmNsZWFyKCk7CiAgICAgaWYgKG1fZ2xvYmFsRGF0YSkKICAgICAgICAgY2FuY2VsVGlt
ZXIoKTsKQEAgLTE1Niw3ICsxNDgsNiBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6d2lsbEZp
bmlzaFN3ZWVwCiAKIEluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSkKICAgICA6IEhlYXBUaW1lcihnbG9iYWxEYXRhKQotICAgICwg
bV9zdHJ1Y3R1cmVzQ2FuQmVTd2VwdChmYWxzZSkKIHsKIH0KIApAQCAtMTcxLDEyICsxNjIsMTAg
QEAgSW5jcmVtZW50YWxTd2VlcGVyKiBJbmNyZW1lbnRhbFN3ZWVwZXI6OgogCiB2b2lkIEluY3Jl
bWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGluZyhjb25zdCBIYXNoU2V0PE1hcmtlZEJsb2NrKj4m
KQogewotICAgIG1fc3RydWN0dXJlc0NhbkJlU3dlcHQgPSBmYWxzZTsKIH0KIAogdm9pZCBJbmNy
ZW1lbnRhbFN3ZWVwZXI6OndpbGxGaW5pc2hTd2VlcGluZygpCiB7Ci0gICAgbV9zdHJ1Y3R1cmVz
Q2FuQmVTd2VwdCA9IHRydWU7CiB9CiAKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5l
eHRCbG9jaygpCkBAIC0xODUsOSArMTc0LDQgQEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN3
ZWVwTmV4dEJsb2NrKAogCiAjZW5kaWYKIAotYm9vbCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN0cnVj
dHVyZXNDYW5CZVN3ZXB0KCkKLXsKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmVzQ2FuQmVTd2VwdDsK
LX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDcgKzU2LDYgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRTd2VlcGluZyhjb25zdCBI
YXNoU2V0PE1hcmtlZEJsb2NrKj4mIGJsb2NrU25hcHNob3QpOwogICAgIHZpcnR1YWwgdm9pZCBk
b1dvcmsoKTsKICAgICB2b2lkIHN3ZWVwTmV4dEJsb2NrKCk7Ci0gICAgYm9vbCBzdHJ1Y3R1cmVz
Q2FuQmVTd2VwdCgpOwogICAgIHZvaWQgd2lsbEZpbmlzaFN3ZWVwaW5nKCk7CiAKIHByaXZhdGU6
CkBAIC03OCw3ICs3Nyw2IEBAIHByaXZhdGU6CiAgICAgSW5jcmVtZW50YWxTd2VlcGVyKEpTR2xv
YmFsRGF0YSopOwogICAgIAogI2VuZGlmCi0gICAgYm9vbCBtX3N0cnVjdHVyZXNDYW5CZVN3ZXB0
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDE3ICszMCw2IEBAIGJvb2wgTWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0KGRvdWJs
ZSAKIGlubGluZSB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlSGVscGVyKHNpemVf
dCBieXRlcykKIHsKICAgICBpZiAoIW1fZnJlZUxpc3QuaGVhZCkgewotICAgICAgICBpZiAobV9v
bmx5Q29udGFpbnNTdHJ1Y3R1cmVzICYmICFtX2hlYXAtPmlzU2FmZVRvU3dlZXBTdHJ1Y3R1cmVz
KCkpIHsKLSAgICAgICAgICAgIGlmIChtX2N1cnJlbnRCbG9jaykgewotICAgICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrLT5kaWRDb25zdW1lRnJlZUxpc3QoKTsKLSAgICAgICAgICAgICAgICBt
X2N1cnJlbnRCbG9jayA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBXZSBzd2Vl
cCBhbm90aGVyIHJhbmRvbSBibG9jayBoZXJlIHNvIHRoYXQgd2UgY2FuIG1ha2UgcHJvZ3Jlc3MK
LSAgICAgICAgICAgIC8vIHRvd2FyZCBiZWluZyBhYmxlIHRvIHN3ZWVwIFN0cnVjdHVyZXMuCi0g
ICAgICAgICAgICBtX2hlYXAtPnN3ZWVwZXIoKS0+c3dlZXBOZXh0QmxvY2soKTsKLSAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICB9Ci0KICAgICAgICAgZm9yIChNYXJrZWRCbG9jayomIGJs
b2NrID0gbV9ibG9ja3NUb1N3ZWVwOyBibG9jazsgYmxvY2sgPSBibG9jay0+bmV4dCgpKSB7CiAg
ICAgICAgICAgICBNYXJrZWRCbG9jazo6RnJlZUxpc3QgZnJlZUxpc3QgPSBibG9jay0+c3dlZXAo
TWFya2VkQmxvY2s6OlN3ZWVwVG9GcmVlTGlzdCk7CiAgICAgICAgICAgICBpZiAoIWZyZWVMaXN0
LmhlYWQpIHsKQEAgLTEyNCwxMyArMTEzLDEzIEBAIE1hcmtlZEJsb2NrKiBNYXJrZWRBbGxvY2F0
b3I6OmFsbG9jYXRlQmwKIAogICAgIGlmIChibG9ja1NpemUgPT0gTWFya2VkQmxvY2s6OmJsb2Nr
U2l6ZSkgewogICAgICAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQgYWxsb2NhdGlvbiA9IG1faGVh
cC0+YmxvY2tBbGxvY2F0b3IoKS5hbGxvY2F0ZSgpOwotICAgICAgICByZXR1cm4gTWFya2VkQmxv
Y2s6OmNyZWF0ZShhbGxvY2F0aW9uLCBtX2hlYXAsIGNlbGxTaXplLCBtX2NlbGxzTmVlZERlc3Ry
dWN0aW9uLCBtX29ubHlDb250YWluc1N0cnVjdHVyZXMpOworICAgICAgICByZXR1cm4gTWFya2Vk
QmxvY2s6OmNyZWF0ZShhbGxvY2F0aW9uLCB0aGlzLCBjZWxsU2l6ZSwgbV9kZXN0cnVjdG9yVHlw
ZSk7CiAgICAgfQogCiAgICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkIGFsbG9jYXRpb24gPSBQYWdl
QWxsb2NhdGlvbkFsaWduZWQ6OmFsbG9jYXRlKGJsb2NrU2l6ZSwgTWFya2VkQmxvY2s6OmJsb2Nr
U2l6ZSwgT1NBbGxvY2F0b3I6OkpTR0NIZWFwUGFnZXMpOwogICAgIGlmICghc3RhdGljX2Nhc3Q8
Ym9vbD4oYWxsb2NhdGlvbikpCiAgICAgICAgIENSQVNIKCk7Ci0gICAgcmV0dXJuIE1hcmtlZEJs
b2NrOjpjcmVhdGUoYWxsb2NhdGlvbiwgbV9oZWFwLCBjZWxsU2l6ZSwgbV9jZWxsc05lZWREZXN0
cnVjdGlvbiwgbV9vbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKTsKKyAgICByZXR1cm4gTWFya2VkQmxv
Y2s6OmNyZWF0ZShhbGxvY2F0aW9uLCB0aGlzLCBjZWxsU2l6ZSwgbV9kZXN0cnVjdG9yVHlwZSk7
CiB9CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9yOjphZGRCbG9jayhNYXJrZWRCbG9jayogYmxvY2sp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAko
cmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxs
b2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVzZXQoKTsKICAgICB2b2lkIGNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKTsKICAg
ICBzaXplX3QgY2VsbFNpemUoKSB7IHJldHVybiBtX2NlbGxTaXplOyB9Ci0gICAgYm9vbCBjZWxs
c05lZWREZXN0cnVjdGlvbigpIHsgcmV0dXJuIG1fY2VsbHNOZWVkRGVzdHJ1Y3Rpb247IH0KLSAg
ICBib29sIG9ubHlDb250YWluc1N0cnVjdHVyZXMoKSB7IHJldHVybiBtX29ubHlDb250YWluc1N0
cnVjdHVyZXM7IH0KKyAgICBNYXJrZWRCbG9jazo6RGVzdHJ1Y3RvclR5cGUgZGVzdHJ1Y3RvclR5
cGUoKSB7IHJldHVybiBtX2Rlc3RydWN0b3JUeXBlOyB9CiAgICAgdm9pZCogYWxsb2NhdGUoc2l6
ZV90KTsKICAgICBIZWFwKiBoZWFwKCkgeyByZXR1cm4gbV9oZWFwOyB9CiAgICAgCkBAIC0zMiw3
ICszMSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGFkZEJsb2NrKE1hcmtlZEJsb2NrKik7
CiAgICAgdm9pZCByZW1vdmVCbG9jayhNYXJrZWRCbG9jayopOwotICAgIHZvaWQgaW5pdChIZWFw
KiwgTWFya2VkU3BhY2UqLCBzaXplX3QgY2VsbFNpemUsIGJvb2wgY2VsbHNOZWVkRGVzdHJ1Y3Rp
b24sIGJvb2wgb25seUNvbnRhaW5zU3RydWN0dXJlcyk7CisgICAgdm9pZCBpbml0KEhlYXAqLCBN
YXJrZWRTcGFjZSosIHNpemVfdCBjZWxsU2l6ZSwgTWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBl
KTsKIAogICAgIGJvb2wgaXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpOwogICAgCkBAIC00OSw4
ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgTWFya2VkQmxvY2sqIG1fYmxvY2tzVG9Td2VlcDsKICAg
ICBEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJsb2NrPiBtX2Jsb2NrTGlzdDsKICAgICBzaXplX3Qg
bV9jZWxsU2l6ZTsKLSAgICBib29sIG1fY2VsbHNOZWVkRGVzdHJ1Y3Rpb247Ci0gICAgYm9vbCBt
X29ubHlDb250YWluc1N0cnVjdHVyZXM7CisgICAgTWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBl
IG1fZGVzdHJ1Y3RvclR5cGU7CiAgICAgSGVhcCogbV9oZWFwOwogICAgIE1hcmtlZFNwYWNlKiBt
X21hcmtlZFNwYWNlOwogfTsKQEAgLTU5LDIwICs1NywxOCBAQCBpbmxpbmUgTWFya2VkQWxsb2Nh
dG9yOjpNYXJrZWRBbGxvY2F0b3IoCiAgICAgOiBtX2N1cnJlbnRCbG9jaygwKQogICAgICwgbV9i
bG9ja3NUb1N3ZWVwKDApCiAgICAgLCBtX2NlbGxTaXplKDApCi0gICAgLCBtX2NlbGxzTmVlZERl
c3RydWN0aW9uKHRydWUpCi0gICAgLCBtX29ubHlDb250YWluc1N0cnVjdHVyZXMoZmFsc2UpCisg
ICAgLCBtX2Rlc3RydWN0b3JUeXBlKE1hcmtlZEJsb2NrOjpOb25lKQogICAgICwgbV9oZWFwKDAp
CiAgICAgLCBtX21hcmtlZFNwYWNlKDApCiB7CiB9CiAKLWlubGluZSB2b2lkIE1hcmtlZEFsbG9j
YXRvcjo6aW5pdChIZWFwKiBoZWFwLCBNYXJrZWRTcGFjZSogbWFya2VkU3BhY2UsIHNpemVfdCBj
ZWxsU2l6ZSwgYm9vbCBjZWxsc05lZWREZXN0cnVjdGlvbiwgYm9vbCBvbmx5Q29udGFpbnNTdHJ1
Y3R1cmVzKQoraW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjppbml0KEhlYXAqIGhlYXAsIE1h
cmtlZFNwYWNlKiBtYXJrZWRTcGFjZSwgc2l6ZV90IGNlbGxTaXplLCBNYXJrZWRCbG9jazo6RGVz
dHJ1Y3RvclR5cGUgZGVzdHJ1Y3RvclR5cGUpCiB7CiAgICAgbV9oZWFwID0gaGVhcDsKICAgICBt
X21hcmtlZFNwYWNlID0gbWFya2VkU3BhY2U7CiAgICAgbV9jZWxsU2l6ZSA9IGNlbGxTaXplOwot
ICAgIG1fY2VsbHNOZWVkRGVzdHJ1Y3Rpb24gPSBjZWxsc05lZWREZXN0cnVjdGlvbjsKLSAgICBt
X29ubHlDb250YWluc1N0cnVjdHVyZXMgPSBvbmx5Q29udGFpbnNTdHJ1Y3R1cmVzOworICAgIG1f
ZGVzdHJ1Y3RvclR5cGUgPSBkZXN0cnVjdG9yVHlwZTsKIH0KIAogaW5saW5lIHZvaWQqIE1hcmtl
ZEFsbG9jYXRvcjo6YWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwyNiArMjgsMjYgQEAKIAogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgogI2luY2x1
ZGUgIkpTQ2VsbC5oIgotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNEZXN0cnVj
dGlibGVPYmplY3QuaCIKIAogCiBuYW1lc3BhY2UgSlNDIHsKIAotTWFya2VkQmxvY2sqIE1hcmtl
ZEJsb2NrOjpjcmVhdGUoY29uc3QgUGFnZUFsbG9jYXRpb25BbGlnbmVkJiBhbGxvY2F0aW9uLCBI
ZWFwKiBoZWFwLCBzaXplX3QgY2VsbFNpemUsIGJvb2wgY2VsbHNOZWVkRGVzdHJ1Y3Rpb24sIGJv
b2wgb25seUNvbnRhaW5zU3RydWN0dXJlcykKK01hcmtlZEJsb2NrKiBNYXJrZWRCbG9jazo6Y3Jl
YXRlKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYgYWxsb2NhdGlvbiwgTWFya2VkQWxsb2Nh
dG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjZWxsU2l6ZSwgRGVzdHJ1Y3RvclR5cGUgZGVzdHJ1Y3Rv
clR5cGUpCiB7Ci0gICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgYWxsb2NhdGlvbi5iYXNlKCkpIE1h
cmtlZEJsb2NrKGFsbG9jYXRpb24sIGhlYXAsIGNlbGxTaXplLCBjZWxsc05lZWREZXN0cnVjdGlv
biwgb25seUNvbnRhaW5zU3RydWN0dXJlcyk7CisgICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgYWxs
b2NhdGlvbi5iYXNlKCkpIE1hcmtlZEJsb2NrKGFsbG9jYXRpb24sIGFsbG9jYXRvciwgY2VsbFNp
emUsIGRlc3RydWN0b3JUeXBlKTsKIH0KIAotTWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKGNvbnN0
IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYgYWxsb2NhdGlvbiwgSGVhcCogaGVhcCwgc2l6ZV90IGNl
bGxTaXplLCBib29sIGNlbGxzTmVlZERlc3RydWN0aW9uLCBib29sIG9ubHlDb250YWluc1N0cnVj
dHVyZXMpCitNYXJrZWRCbG9jazo6TWFya2VkQmxvY2soY29uc3QgUGFnZUFsbG9jYXRpb25BbGln
bmVkJiBhbGxvY2F0aW9uLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNlbGxT
aXplLCBEZXN0cnVjdG9yVHlwZSBkZXN0cnVjdG9yVHlwZSkKICAgICA6IEhlYXBCbG9jazxNYXJr
ZWRCbG9jaz4oYWxsb2NhdGlvbikKICAgICAsIG1fYXRvbXNQZXJDZWxsKChjZWxsU2l6ZSArIGF0
b21TaXplIC0gMSkgLyBhdG9tU2l6ZSkKICAgICAsIG1fZW5kQXRvbShhdG9tc1BlckJsb2NrIC0g
bV9hdG9tc1BlckNlbGwgKyAxKQotICAgICwgbV9jZWxsc05lZWREZXN0cnVjdGlvbihjZWxsc05l
ZWREZXN0cnVjdGlvbikKLSAgICAsIG1fb25seUNvbnRhaW5zU3RydWN0dXJlcyhvbmx5Q29udGFp
bnNTdHJ1Y3R1cmVzKQorICAgICwgbV9kZXN0cnVjdG9yVHlwZShkZXN0cnVjdG9yVHlwZSkKKyAg
ICAsIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKICAgICAsIG1fc3RhdGUoTmV3KSAvLyBBbGwgY2Vs
bHMgc3RhcnQgb3V0IHVubWFya2VkLgotICAgICwgbV93ZWFrU2V0KGhlYXAtPmdsb2JhbERhdGEo
KSkKKyAgICAsIG1fd2Vha1NldChhbGxvY2F0b3ItPmhlYXAoKS0+Z2xvYmFsRGF0YSgpKQogewot
ICAgIEFTU0VSVChoZWFwKTsKKyAgICBBU1NFUlQoYWxsb2NhdG9yKTsKICAgICBIRUFQX0xPR19C
TE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwogfQogCkBAIC02NSwxMSArNjUsMTEgQEAgaW5s
aW5lIHZvaWQgTWFya2VkQmxvY2s6OmNhbGxEZXN0cnVjdG9yKAogICAgIGNlbGwtPnphcCgpOwog
fQogCi10ZW1wbGF0ZTxNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSBibG9ja1N0YXRlLCBNYXJrZWRC
bG9jazo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgYm9vbCBkZXN0cnVjdG9yQ2FsbE5lZWRlZD4KK3Rl
bXBsYXRlPE1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlIGJsb2NrU3RhdGUsIE1hcmtlZEJsb2NrOjpT
d2VlcE1vZGUgc3dlZXBNb2RlLCBNYXJrZWRCbG9jazo6RGVzdHJ1Y3RvclR5cGUgZHRvclR5cGU+
CiBNYXJrZWRCbG9jazo6RnJlZUxpc3QgTWFya2VkQmxvY2s6OnNwZWNpYWxpemVkU3dlZXAoKQog
ewogICAgIEFTU0VSVChibG9ja1N0YXRlICE9IEFsbG9jYXRlZCAmJiBibG9ja1N0YXRlICE9IEZy
ZWVMaXN0ZWQpOwotICAgIEFTU0VSVChkZXN0cnVjdG9yQ2FsbE5lZWRlZCB8fCBzd2VlcE1vZGUg
IT0gU3dlZXBPbmx5KTsKKyAgICBBU1NFUlQoIShkdG9yVHlwZSA9PSBNYXJrZWRCbG9jazo6Tm9u
ZSAmJiBzd2VlcE1vZGUgPT0gU3dlZXBPbmx5KSk7CiAKICAgICAvLyBUaGlzIHByb2R1Y2VzIGEg
ZnJlZSBsaXN0IHRoYXQgaXMgb3JkZXJlZCBpbiByZXZlcnNlIHRocm91Z2ggdGhlIGJsb2NrLgog
ICAgIC8vIFRoaXMgaXMgZmluZSwgc2luY2UgdGhlIGFsbG9jYXRpb24gY29kZSBtYWtlcyBubyBh
c3N1bXB0aW9ucyBhYm91dCB0aGUKQEAgLTgyLDcgKzgyLDcgQEAgTWFya2VkQmxvY2s6OkZyZWVM
aXN0IE1hcmtlZEJsb2NrOjpzcGVjaQogCiAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50ZXJw
cmV0X2Nhc3RfcHRyPEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKIAotICAgICAgICBpZiAoZGVzdHJ1
Y3RvckNhbGxOZWVkZWQgJiYgYmxvY2tTdGF0ZSAhPSBOZXcpCisgICAgICAgIGlmIChkdG9yVHlw
ZSAhPSBNYXJrZWRCbG9jazo6Tm9uZSAmJiBibG9ja1N0YXRlICE9IE5ldykKICAgICAgICAgICAg
IGNhbGxEZXN0cnVjdG9yKGNlbGwpOwogCiAgICAgICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBU
b0ZyZWVMaXN0KSB7CkBAIC0xMDMsMjEgKzEwMywyMyBAQCBNYXJrZWRCbG9jazo6RnJlZUxpc3Qg
TWFya2VkQmxvY2s6OnN3ZWVwCiAKICAgICBtX3dlYWtTZXQuc3dlZXAoKTsKIAotICAgIGlmIChz
d2VlcE1vZGUgPT0gU3dlZXBPbmx5ICYmICFtX2NlbGxzTmVlZERlc3RydWN0aW9uKQorICAgIGlm
IChzd2VlcE1vZGUgPT0gU3dlZXBPbmx5ICYmIG1fZGVzdHJ1Y3RvclR5cGUgPT0gTWFya2VkQmxv
Y2s6Ok5vbmUpCiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwogCi0gICAgaWYgKG1fY2VsbHNO
ZWVkRGVzdHJ1Y3Rpb24pCi0gICAgICAgIHJldHVybiBzd2VlcEhlbHBlcjx0cnVlPihzd2VlcE1v
ZGUpOwotICAgIHJldHVybiBzd2VlcEhlbHBlcjxmYWxzZT4oc3dlZXBNb2RlKTsKKyAgICBpZiAo
bV9kZXN0cnVjdG9yVHlwZSA9PSBNYXJrZWRCbG9jazo6SW1tb3J0YWxTdHJ1Y3R1cmUpCisgICAg
ICAgIHJldHVybiBzd2VlcEhlbHBlcjxNYXJrZWRCbG9jazo6SW1tb3J0YWxTdHJ1Y3R1cmU+KHN3
ZWVwTW9kZSk7CisgICAgaWYgKG1fZGVzdHJ1Y3RvclR5cGUgPT0gTWFya2VkQmxvY2s6Ok5vcm1h
bCkKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyPE1hcmtlZEJsb2NrOjpOb3JtYWw+KHN3ZWVw
TW9kZSk7CisgICAgcmV0dXJuIHN3ZWVwSGVscGVyPE1hcmtlZEJsb2NrOjpOb25lPihzd2VlcE1v
ZGUpOwogfQogCi10ZW1wbGF0ZTxib29sIGRlc3RydWN0b3JDYWxsTmVlZGVkPgordGVtcGxhdGU8
TWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBlIGR0b3JUeXBlPgogTWFya2VkQmxvY2s6OkZyZWVM
aXN0IE1hcmtlZEJsb2NrOjpzd2VlcEhlbHBlcihTd2VlcE1vZGUgc3dlZXBNb2RlKQogewogICAg
IHN3aXRjaCAobV9zdGF0ZSkgewogICAgIGNhc2UgTmV3OgogICAgICAgICBBU1NFUlQoc3dlZXBN
b2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVw
PE5ldywgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdG9yQ2FsbE5lZWRlZD4oKTsKKyAgICAgICAg
cmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8TmV3LCBTd2VlcFRvRnJlZUxpc3QsIGR0b3JUeXBlPigp
OwogICAgIGNhc2UgRnJlZUxpc3RlZDoKICAgICAgICAgLy8gSGFwcGVucyB3aGVuIGEgYmxvY2sg
dHJhbnNpdGlvbnMgdG8gZnVsbHkgYWxsb2NhdGVkLgogICAgICAgICBBU1NFUlQoc3dlZXBNb2Rl
ID09IFN3ZWVwVG9GcmVlTGlzdCk7CkBAIC0xMjYsMTAgKzEyOCw5IEBAIE1hcmtlZEJsb2NrOjpG
cmVlTGlzdCBNYXJrZWRCbG9jazo6c3dlZXAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwogICAgIGNhc2UgTWFya2VkOgotICAgICAgICBB
U1NFUlQoIW1fb25seUNvbnRhaW5zU3RydWN0dXJlcyB8fCBoZWFwKCktPmlzU2FmZVRvU3dlZXBT
dHJ1Y3R1cmVzKCkpOwogICAgICAgICByZXR1cm4gc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlz
dAotICAgICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBUb0ZyZWVMaXN0
LCBkZXN0cnVjdG9yQ2FsbE5lZWRlZD4oKQotICAgICAgICAgICAgOiBzcGVjaWFsaXplZFN3ZWVw
PE1hcmtlZCwgU3dlZXBPbmx5LCBkZXN0cnVjdG9yQ2FsbE5lZWRlZD4oKTsKKyAgICAgICAgICAg
ID8gc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZHRvclR5cGU+KCkK
KyAgICAgICAgICAgIDogc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwT25seSwgZHRvclR5
cGU+KCk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUyLDYgKzUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgSGVhcDsKICAg
ICBjbGFzcyBKU0NlbGw7CisgICAgY2xhc3MgTWFya2VkQWxsb2NhdG9yOwogCiAgICAgdHlwZWRl
ZiB1aW50cHRyX3QgQml0czsKIApAQCAtMTEyLDcgKzExMyw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgUmV0dXJuVHlwZSBtX2NvdW50OwogICAgICAgICB9OwogCi0gICAgICAgIHN0
YXRpYyBNYXJrZWRCbG9jayogY3JlYXRlKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYsIEhl
YXAqLCBzaXplX3QgY2VsbFNpemUsIGJvb2wgY2VsbHNOZWVkRGVzdHJ1Y3Rpb24sIGJvb2wgb25s
eUNvbnRhaW5zU3RydWN0dXJlcyk7CisgICAgICAgIGVudW0gRGVzdHJ1Y3RvclR5cGUgeyBOb25l
LCBJbW1vcnRhbFN0cnVjdHVyZSwgTm9ybWFsIH07CisgICAgICAgIHN0YXRpYyBNYXJrZWRCbG9j
ayogY3JlYXRlKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYsIE1hcmtlZEFsbG9jYXRvcios
IHNpemVfdCBjZWxsU2l6ZSwgRGVzdHJ1Y3RvclR5cGUpOwogCiAgICAgICAgIHN0YXRpYyBib29s
IGlzQXRvbUFsaWduZWQoY29uc3Qgdm9pZCopOwogICAgICAgICBzdGF0aWMgTWFya2VkQmxvY2sq
IGJsb2NrRm9yKGNvbnN0IHZvaWQqKTsKQEAgLTEyMCw2ICsxMjIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgCiAgICAgICAgIHZvaWQgbGFzdENoYW5jZVRvRmluYWxpemUoKTsKIAorICAg
ICAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvcigpIGNvbnN0OwogICAgICAgICBIZWFwKiBo
ZWFwKCkgY29uc3Q7CiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgpIGNvbnN0Owog
ICAgICAgICBXZWFrU2V0JiB3ZWFrU2V0KCk7CkBAIC0xNDMsOCArMTQ2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGJvb2wgaXNFbXB0eSgpOwogCiAgICAgICAgIHNpemVfdCBjZWxsU2l6
ZSgpOwotICAgICAgICBib29sIGNlbGxzTmVlZERlc3RydWN0aW9uKCk7Ci0gICAgICAgIGJvb2wg
b25seUNvbnRhaW5zU3RydWN0dXJlcygpOworICAgICAgICBEZXN0cnVjdG9yVHlwZSBkZXN0cnVj
dG9yVHlwZSgpOwogCiAgICAgICAgIHNpemVfdCBzaXplKCk7CiAgICAgICAgIHNpemVfdCBjYXBh
Y2l0eSgpOwpAQCAtMTk0LDE1ICsxOTYsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7IC8vIGF0
b21TaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28uCiAKICAgICAgICAgZW51bSBCbG9ja1N0YXRl
IHsgTmV3LCBGcmVlTGlzdGVkLCBBbGxvY2F0ZWQsIE1hcmtlZCB9OwotICAgICAgICB0ZW1wbGF0
ZTxib29sIGRlc3RydWN0b3JDYWxsTmVlZGVkPiBGcmVlTGlzdCBzd2VlcEhlbHBlcihTd2VlcE1v
ZGUgPSBTd2VlcE9ubHkpOworICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdG9yVHlwZT4gRnJlZUxp
c3Qgc3dlZXBIZWxwZXIoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKIAogICAgICAgICB0eXBlZGVm
IGNoYXIgQXRvbVthdG9tU2l6ZV07CiAKLSAgICAgICAgTWFya2VkQmxvY2soY29uc3QgUGFnZUFs
bG9jYXRpb25BbGlnbmVkJiwgSGVhcCosIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBjZWxsc05lZWRE
ZXN0cnVjdGlvbiwgYm9vbCBvbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKTsKKyAgICAgICAgTWFya2Vk
QmxvY2soY29uc3QgUGFnZUFsbG9jYXRpb25BbGlnbmVkJiwgTWFya2VkQWxsb2NhdG9yKiwgc2l6
ZV90IGNlbGxTaXplLCBEZXN0cnVjdG9yVHlwZSk7CiAgICAgICAgIEF0b20qIGF0b21zKCk7CiAg
ICAgICAgIHNpemVfdCBhdG9tTnVtYmVyKGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9pZCBjYWxs
RGVzdHJ1Y3RvcihKU0NlbGwqKTsKLSAgICAgICAgdGVtcGxhdGU8QmxvY2tTdGF0ZSwgU3dlZXBN
b2RlLCBib29sIGRlc3RydWN0b3JDYWxsTmVlZGVkPiBGcmVlTGlzdCBzcGVjaWFsaXplZFN3ZWVw
KCk7CisgICAgICAgIHRlbXBsYXRlPEJsb2NrU3RhdGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3RvclR5
cGU+IEZyZWVMaXN0IHNwZWNpYWxpemVkU3dlZXAoKTsKICAgICAgICAgCiAjaWYgRU5BQkxFKEdH
QykKICAgICAgICAgQ2FyZFNldDxieXRlc1BlckNhcmQsIGJsb2NrU2l6ZT4gbV9jYXJkczsKQEAg
LTIxNSw4ICsyMTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbHNlCiAgICAgICAgIFdURjo6Qml0
bWFwPGF0b21zUGVyQmxvY2ssIFdURjo6Qml0bWFwTm90QXRvbWljPiBtX21hcmtzOwogI2VuZGlm
Ci0gICAgICAgIGJvb2wgbV9jZWxsc05lZWREZXN0cnVjdGlvbjsKLSAgICAgICAgYm9vbCBtX29u
bHlDb250YWluc1N0cnVjdHVyZXM7CisgICAgICAgIERlc3RydWN0b3JUeXBlIG1fZGVzdHJ1Y3Rv
clR5cGU7CisgICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3I7CiAgICAgICAgIEJs
b2NrU3RhdGUgbV9zdGF0ZTsKICAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7CiAgICAgfTsKQEAg
LTI2MSw2ICsyNjMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN3ZWVwKCk7CiAgICAg
fQogCisgICAgaW5saW5lIE1hcmtlZEFsbG9jYXRvciogTWFya2VkQmxvY2s6OmFsbG9jYXRvcigp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hbGxvY2F0b3I7CisgICAgfQorCiAgICAg
aW5saW5lIEhlYXAqIE1hcmtlZEJsb2NrOjpoZWFwKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiBtX3dlYWtTZXQuaGVhcCgpOwpAQCAtMzI2LDE0ICszMzMsOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgcmV0dXJuIG1fYXRvbXNQZXJDZWxsICogYXRvbVNpemU7CiAgICAgfQogCi0g
ICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmNlbGxzTmVlZERlc3RydWN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX2NlbGxzTmVlZERlc3RydWN0aW9uOyAKLSAgICB9Ci0KLSAgICBp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6b25seUNvbnRhaW5zU3RydWN0dXJlcygpCisgICAgaW5s
aW5lIE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlwZSBNYXJrZWRCbG9jazo6ZGVzdHJ1Y3RvclR5
cGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb25seUNvbnRhaW5zU3RydWN0dXJlczsKKyAg
ICAgICAgcmV0dXJuIG1fZGVzdHJ1Y3RvclR5cGU7IAogICAgIH0KIAogICAgIGlubGluZSBzaXpl
X3QgTWFya2VkQmxvY2s6OnNpemUoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlLmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSwxNyArODEsMTkg
QEAgTWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCiAgICAgOiBtX2hlYXAoaGVh
cCkKIHsKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8
PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVjaXNlU3RlcCkgewotICAgICAgICBhbGxv
Y2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhpcywgY2VsbFNpemUsIGZhbHNlLCBmYWxz
ZSk7Ci0gICAgICAgIGRlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwg
dGhpcywgY2VsbFNpemUsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgYWxsb2NhdG9yRm9yKGNlbGxT
aXplKS5pbml0KGhlYXAsIHRoaXMsIGNlbGxTaXplLCBNYXJrZWRCbG9jazo6Tm9uZSk7CisgICAg
ICAgIG5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhp
cywgY2VsbFNpemUsIE1hcmtlZEJsb2NrOjpOb3JtYWwpOworICAgICAgICBpbW1vcnRhbFN0cnVj
dHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhpcywgY2Vs
bFNpemUsIE1hcmtlZEJsb2NrOjpJbW1vcnRhbFN0cnVjdHVyZSk7CiAgICAgfQogCiAgICAgZm9y
IChzaXplX3QgY2VsbFNpemUgPSBpbXByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8PSBpbXByZWNpc2VD
dXRvZmY7IGNlbGxTaXplICs9IGltcHJlY2lzZVN0ZXApIHsKLSAgICAgICAgYWxsb2NhdG9yRm9y
KGNlbGxTaXplKS5pbml0KGhlYXAsIHRoaXMsIGNlbGxTaXplLCBmYWxzZSwgZmFsc2UpOwotICAg
ICAgICBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAsIHRoaXMsIGNl
bGxTaXplLCB0cnVlLCBmYWxzZSk7CisgICAgICAgIGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaW5p
dChoZWFwLCB0aGlzLCBjZWxsU2l6ZSwgTWFya2VkQmxvY2s6Ok5vbmUpOworICAgICAgICBub3Jt
YWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAsIHRoaXMsIGNlbGxT
aXplLCBNYXJrZWRCbG9jazo6Tm9ybWFsKTsKKyAgICAgICAgaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0
cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAsIHRoaXMsIGNlbGxTaXplLCBN
YXJrZWRCbG9jazo6SW1tb3J0YWxTdHJ1Y3R1cmUpOwogICAgIH0KIAotICAgIG1fbGFyZ2VBbGxv
Y2F0b3IuaW5pdChoZWFwLCB0aGlzLCAwLCB0cnVlLCBmYWxzZSk7Ci0gICAgbV9zdHJ1Y3R1cmVB
bGxvY2F0b3IuaW5pdChoZWFwLCB0aGlzLCBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoMzIsIHNp
emVvZihTdHJ1Y3R1cmUpKSwgdHJ1ZSwgdHJ1ZSk7CisgICAgLy8gVE9ETzogRG8gd2UgbmVlZCB0
d28gc2VwYXJhdGUgbGFyZ2UgYWxsb2NhdG9ycywgb25lIGZvciBpbW1vcnRhbCBhbmQgb25lIGZv
ciBub3JtYWw/CisgICAgbV9sYXJnZUFsbG9jYXRvci5pbml0KGhlYXAsIHRoaXMsIDAsIE1hcmtl
ZEJsb2NrOjpJbW1vcnRhbFN0cnVjdHVyZSk7CiB9CiAKIE1hcmtlZFNwYWNlOjp+TWFya2VkU3Bh
Y2UoKQpAQCAtMTIwLDE2ICsxMjIsMTcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6cmVzZXRBbGxvY2F0
b3JzKCkKIHsKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VTdGVwOyBjZWxsU2l6
ZSA8PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVjaXNlU3RlcCkgewogICAgICAgICBh
bGxvY2F0b3JGb3IoY2VsbFNpemUpLnJlc2V0KCk7Ci0gICAgICAgIGRlc3RydWN0b3JBbGxvY2F0
b3JGb3IoY2VsbFNpemUpLnJlc2V0KCk7CisgICAgICAgIG5vcm1hbERlc3RydWN0b3JBbGxvY2F0
b3JGb3IoY2VsbFNpemUpLnJlc2V0KCk7CisgICAgICAgIGltbW9ydGFsU3RydWN0dXJlRGVzdHJ1
Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkucmVzZXQoKTsKICAgICB9CiAKICAgICBmb3IgKHNp
emVfdCBjZWxsU2l6ZSA9IGltcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IGltcHJlY2lzZUN1dG9m
ZjsgY2VsbFNpemUgKz0gaW1wcmVjaXNlU3RlcCkgewogICAgICAgICBhbGxvY2F0b3JGb3IoY2Vs
bFNpemUpLnJlc2V0KCk7Ci0gICAgICAgIGRlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUp
LnJlc2V0KCk7CisgICAgICAgIG5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUp
LnJlc2V0KCk7CisgICAgICAgIGltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZv
cihjZWxsU2l6ZSkucmVzZXQoKTsKICAgICB9CiAKICAgICBtX2xhcmdlQWxsb2NhdG9yLnJlc2V0
KCk7Ci0gICAgbV9zdHJ1Y3R1cmVBbGxvY2F0b3IucmVzZXQoKTsKIH0KIAogdm9pZCBNYXJrZWRT
cGFjZTo6dmlzaXRXZWFrU2V0cyhIZWFwUm9vdFZpc2l0b3ImIGhlYXBSb290VmlzaXRvcikKQEAg
LTE0Nyw0MiArMTUwLDQ0IEBAIHZvaWQgTWFya2VkU3BhY2U6OmNhbm9uaWNhbGl6ZUNlbGxMaXZl
bmUKIHsKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8
PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVjaXNlU3RlcCkgewogICAgICAgICBhbGxv
Y2F0b3JGb3IoY2VsbFNpemUpLmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKTsKLSAgICAg
ICAgZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuY2Fub25pY2FsaXplQ2VsbExpdmVu
ZXNzRGF0YSgpOworICAgICAgICBub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXpl
KS5jYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7CisgICAgICAgIGltbW9ydGFsU3RydWN0
dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuY2Fub25pY2FsaXplQ2VsbExpdmVu
ZXNzRGF0YSgpOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gaW1wcmVjaXNl
U3RlcDsgY2VsbFNpemUgPD0gaW1wcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBpbXByZWNpc2VT
dGVwKSB7CiAgICAgICAgIGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuY2Fub25pY2FsaXplQ2VsbExp
dmVuZXNzRGF0YSgpOwotICAgICAgICBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5j
YW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7CisgICAgICAgIG5vcm1hbERlc3RydWN0b3JB
bGxvY2F0b3JGb3IoY2VsbFNpemUpLmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKTsKKyAg
ICAgICAgaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5j
YW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7CiAgICAgfQogCiAgICAgbV9sYXJnZUFsbG9j
YXRvci5jYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7Ci0gICAgbV9zdHJ1Y3R1cmVBbGxv
Y2F0b3IuY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOwogfQogCiBib29sIE1hcmtlZFNw
YWNlOjppc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSkKIHsKICAgICBmb3IgKHNpemVfdCBjZWxs
U2l6ZSA9IHByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSAr
PSBwcmVjaXNlU3RlcCkgewotICAgICAgICBpZiAoYWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1Bh
Z2VkT3V0KGRlYWRsaW5lKSB8fCBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1Bh
Z2VkT3V0KGRlYWRsaW5lKSkKKyAgICAgICAgaWYgKGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQ
YWdlZE91dChkZWFkbGluZSkgCisgICAgICAgICAgICB8fCBub3JtYWxEZXN0cnVjdG9yQWxsb2Nh
dG9yRm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSAKKyAgICAgICAgICAgIHx8IGlt
bW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQYWdlZE91
dChkZWFkbGluZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBmb3Ig
KHNpemVfdCBjZWxsU2l6ZSA9IGltcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IGltcHJlY2lzZUN1
dG9mZjsgY2VsbFNpemUgKz0gaW1wcmVjaXNlU3RlcCkgewotICAgICAgICBpZiAoYWxsb2NhdG9y
Rm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSB8fCBkZXN0cnVjdG9yQWxsb2NhdG9y
Rm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSkKKyAgICAgICAgaWYgKGFsbG9jYXRv
ckZvcihjZWxsU2l6ZSkuaXNQYWdlZE91dChkZWFkbGluZSkgCisgICAgICAgICAgICB8fCBub3Jt
YWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSAK
KyAgICAgICAgICAgIHx8IGltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihj
ZWxsU2l6ZSkuaXNQYWdlZE91dChkZWFkbGluZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKICAgICBpZiAobV9sYXJnZUFsbG9jYXRvci5pc1BhZ2VkT3V0KGRlYWRsaW5lKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobV9zdHJ1Y3R1cmVBbGxvY2F0b3IuaXNQ
YWdlZE91dChkZWFkbGluZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjpmcmVlQmxvY2soTWFya2VkQmxvY2sqIGJsb2Nr
KQogewotICAgIGFsbG9jYXRvckZvcihibG9jaykucmVtb3ZlQmxvY2soYmxvY2spOworICAgIGJs
b2NrLT5hbGxvY2F0b3IoKS0+cmVtb3ZlQmxvY2soYmxvY2spOwogICAgIG1fYmxvY2tzLnJlbW92
ZShibG9jayk7CiAgICAgaWYgKGJsb2NrLT5jYXBhY2l0eSgpID09IE1hcmtlZEJsb2NrOjpibG9j
a1NpemUpIHsKICAgICAgICAgbV9oZWFwLT5ibG9ja0FsbG9jYXRvcigpLmRlYWxsb2NhdGUoTWFy
a2VkQmxvY2s6OmRlc3Ryb3koYmxvY2spKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsMTEgKzc2LDExIEBA
IHB1YmxpYzoKIAogICAgIE1hcmtlZEFsbG9jYXRvciYgZmlyc3RBbGxvY2F0b3IoKTsKICAgICBN
YXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvckZvcihzaXplX3QpOwotICAgIE1hcmtlZEFsbG9jYXRv
ciYgYWxsb2NhdG9yRm9yKE1hcmtlZEJsb2NrKik7Ci0gICAgTWFya2VkQWxsb2NhdG9yJiBkZXN0
cnVjdG9yQWxsb2NhdG9yRm9yKHNpemVfdCk7Ci0gICAgdm9pZCogYWxsb2NhdGVXaXRoRGVzdHJ1
Y3RvcihzaXplX3QpOworICAgIE1hcmtlZEFsbG9jYXRvciYgaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0
cnVjdG9yQWxsb2NhdG9yRm9yKHNpemVfdCk7CisgICAgTWFya2VkQWxsb2NhdG9yJiBub3JtYWxE
ZXN0cnVjdG9yQWxsb2NhdG9yRm9yKHNpemVfdCk7CisgICAgdm9pZCogYWxsb2NhdGVXaXRoTm9y
bWFsRGVzdHJ1Y3RvcihzaXplX3QpOworICAgIHZvaWQqIGFsbG9jYXRlV2l0aEltbW9ydGFsU3Ry
dWN0dXJlRGVzdHJ1Y3RvcihzaXplX3QpOwogICAgIHZvaWQqIGFsbG9jYXRlV2l0aG91dERlc3Ry
dWN0b3Ioc2l6ZV90KTsKLSAgICB2b2lkKiBhbGxvY2F0ZVN0cnVjdHVyZShzaXplX3QpOwogIAog
ICAgIHZvaWQgcmVzZXRBbGxvY2F0b3JzKCk7CiAKQEAgLTEzMSwxMCArMTMxLDEwIEBAIHByaXZh
dGU6CiAgICAgICAgIEZpeGVkQXJyYXk8TWFya2VkQWxsb2NhdG9yLCBpbXByZWNpc2VDb3VudD4g
aW1wcmVjaXNlQWxsb2NhdG9yczsKICAgICB9OwogCi0gICAgU3Vic3BhY2UgbV9kZXN0cnVjdG9y
U3BhY2U7CisgICAgU3Vic3BhY2UgbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2U7CisgICAgU3Vic3Bh
Y2UgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZTsKICAgICBTdWJzcGFjZSBtX25v
cm1hbFNwYWNlOwogICAgIE1hcmtlZEFsbG9jYXRvciBtX2xhcmdlQWxsb2NhdG9yOwotICAgIE1h
cmtlZEFsbG9jYXRvciBtX3N0cnVjdHVyZUFsbG9jYXRvcjsKIAogICAgIEhlYXAqIG1faGVhcDsK
ICAgICBNYXJrZWRCbG9ja1NldCBtX2Jsb2NrczsKQEAgLTE3MSwyNCArMTcxLDIzIEBAIGlubGlu
ZSBNYXJrZWRBbGxvY2F0b3ImIE1hcmtlZFNwYWNlOjphbGwKICAgICByZXR1cm4gbV9sYXJnZUFs
bG9jYXRvcjsKIH0KIAotaW5saW5lIE1hcmtlZEFsbG9jYXRvciYgTWFya2VkU3BhY2U6OmFsbG9j
YXRvckZvcihNYXJrZWRCbG9jayogYmxvY2spCitpbmxpbmUgTWFya2VkQWxsb2NhdG9yJiBNYXJr
ZWRTcGFjZTo6aW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKHNpemVfdCBi
eXRlcykKIHsKLSAgICBpZiAoYmxvY2stPm9ubHlDb250YWluc1N0cnVjdHVyZXMoKSkKLSAgICAg
ICAgcmV0dXJuIG1fc3RydWN0dXJlQWxsb2NhdG9yOwotCi0gICAgaWYgKGJsb2NrLT5jZWxsc05l
ZWREZXN0cnVjdGlvbigpKQotICAgICAgICByZXR1cm4gZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihi
bG9jay0+Y2VsbFNpemUoKSk7Ci0KLSAgICByZXR1cm4gYWxsb2NhdG9yRm9yKGJsb2NrLT5jZWxs
U2l6ZSgpKTsKKyAgICBBU1NFUlQoYnl0ZXMpOworICAgIGlmIChieXRlcyA8PSBwcmVjaXNlQ3V0
b2ZmKQorICAgICAgICByZXR1cm4gbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5w
cmVjaXNlQWxsb2NhdG9yc1soYnl0ZXMgLSAxKSAvIHByZWNpc2VTdGVwXTsKKyAgICBpZiAoYnl0
ZXMgPD0gaW1wcmVjaXNlQ3V0b2ZmKQorICAgICAgICByZXR1cm4gbV9pbW1vcnRhbFN0cnVjdHVy
ZURlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzWyhieXRlcyAtIDEpIC8gaW1wcmVj
aXNlU3RlcF07CisgICAgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0b3I7CiB9CiAKLWlubGluZSBNYXJr
ZWRBbGxvY2F0b3ImIE1hcmtlZFNwYWNlOjpkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKHNpemVfdCBi
eXRlcykKK2lubGluZSBNYXJrZWRBbGxvY2F0b3ImIE1hcmtlZFNwYWNlOjpub3JtYWxEZXN0cnVj
dG9yQWxsb2NhdG9yRm9yKHNpemVfdCBieXRlcykKIHsKICAgICBBU1NFUlQoYnl0ZXMpOwogICAg
IGlmIChieXRlcyA8PSBwcmVjaXNlQ3V0b2ZmKQotICAgICAgICByZXR1cm4gbV9kZXN0cnVjdG9y
U3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbKGJ5dGVzIC0gMSkgLyBwcmVjaXNlU3RlcF07CisgICAg
ICAgIHJldHVybiBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1soYnl0
ZXMgLSAxKSAvIHByZWNpc2VTdGVwXTsKICAgICBpZiAoYnl0ZXMgPD0gaW1wcmVjaXNlQ3V0b2Zm
KQotICAgICAgICByZXR1cm4gbV9ub3JtYWxTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzWyhieXRl
cyAtIDEpIC8gaW1wcmVjaXNlU3RlcF07CisgICAgICAgIHJldHVybiBtX25vcm1hbERlc3RydWN0
b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzWyhieXRlcyAtIDEpIC8gaW1wcmVjaXNlU3RlcF07
CiAgICAgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0b3I7CiB9CiAKQEAgLTE5NywzMCArMTk2LDMxIEBA
IGlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGVXaXRob3UKICAgICByZXR1cm4gYWxs
b2NhdG9yRm9yKGJ5dGVzKS5hbGxvY2F0ZShieXRlcyk7CiB9CiAKLWlubGluZSB2b2lkKiBNYXJr
ZWRTcGFjZTo6YWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpCitpbmxpbmUgdm9p
ZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3Rvcihz
aXplX3QgYnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGRlc3RydWN0b3JBbGxvY2F0b3JGb3IoYnl0ZXMp
LmFsbG9jYXRlKGJ5dGVzKTsKKyAgICByZXR1cm4gaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9y
QWxsb2NhdG9yRm9yKGJ5dGVzKS5hbGxvY2F0ZShieXRlcyk7CiB9CiAKLWlubGluZSB2b2lkKiBN
YXJrZWRTcGFjZTo6YWxsb2NhdGVTdHJ1Y3R1cmUoc2l6ZV90IGJ5dGVzKQoraW5saW5lIHZvaWQq
IE1hcmtlZFNwYWNlOjphbGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKHNpemVfdCBieXRlcykK
IHsKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmVBbGxvY2F0b3IuYWxsb2NhdGUoYnl0ZXMpOworICAg
IHJldHVybiBub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGJ5dGVzKS5hbGxvY2F0ZShieXRl
cyk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVu
Y3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRTcGFjZTo6Zm9yRWFjaEJsb2NrKEZ1bmN0b3ImIGZ1bmN0
b3IpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7ICsraSkgewog
ICAgICAgICBtX25vcm1hbFNwYWNlLnByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhm
dW5jdG9yKTsKLSAgICAgICAgbV9kZXN0cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0u
Zm9yRWFjaEJsb2NrKGZ1bmN0b3IpOworICAgICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5w
cmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisgICAgICAgIG1faW1t
b3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFj
aEJsb2NrKGZ1bmN0b3IpOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW1w
cmVjaXNlQ291bnQ7ICsraSkgewogICAgICAgICBtX25vcm1hbFNwYWNlLmltcHJlY2lzZUFsbG9j
YXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgICAgICBtX2Rlc3RydWN0b3JTcGFj
ZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKyAgICAgICAg
bV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxv
Y2soZnVuY3Rvcik7CisgICAgICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2Uu
aW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAgICAgfQogCiAg
ICAgbV9sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgbV9zdHJ1Y3R1
cmVBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogCiAgICAgcmV0dXJuIGZ1bmN0b3Iu
cmV0dXJuVmFsdWUoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RW
aXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90
VmlzaXRvci5jcHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNSw2ICs1LDcgQEAKICNpbmNs
dWRlICJDb3BpZWRTcGFjZS5oIgogI2luY2x1ZGUgIkNvcGllZFNwYWNlSW5saW5lTWV0aG9kcy5o
IgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24g
MTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDM0LDcgKzQzNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRX
cml0ZUJhcnJpZXIoUmVnaXN0ZXJJRCBvd25lciwgUmVnaXN0ZXJJRCB2YWx1ZVRhZywgUmVnaXN0
ZXJJRCBzY3JhdGNoLCBSZWdpc3RlcklEIHNjcmF0Y2gyLCBXcml0ZUJhcnJpZXJNb2RlLCBXcml0
ZUJhcnJpZXJVc2VLaW5kKTsKICAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKEpTQ2VsbCog
b3duZXIsIFJlZ2lzdGVySUQgdmFsdWUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgV3JpdGVCYXJyaWVy
TW9kZSwgV3JpdGVCYXJyaWVyVXNlS2luZCk7CiAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2xhc3NUeXBlLCBib29sIGRlc3RydWN0b3IsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IHZvaWQg
ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdChTdHJ1Y3R1cmVUeXBlLCBSZWdpc3RlcklEIHJlc3Vs
dCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRyKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xh
c3NUeXBlLCBNYXJrZWRCbG9jazo6RGVzdHJ1Y3RvclR5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5
cGU+IHZvaWQgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdChTdHJ1Y3R1cmVUeXBlLCBSZWdpc3Rl
cklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRyKTsKICAgICAgICAgdm9pZCBlbWl0QWxs
b2NhdGVCYXNpY1N0b3JhZ2Uoc2l6ZV90LCBwdHJkaWZmX3Qgb2Zmc2V0RnJvbUJhc2UsIFJlZ2lz
dGVySUQgcmVzdWx0KTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBlbWl0QWxs
b2NhdGVKU0ZpbmFsT2JqZWN0KFQgc3RydWN0dXJlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0
ZXJJRCBzdG9yYWdlUHRyKTsKICAgICAgICAgdm9pZCBlbWl0QWxsb2NhdGVKU0FycmF5KHVuc2ln
bmVkIHZhbHVlc1JlZ2lzdGVyLCB1bnNpZ25lZCBsZW5ndGgsIFJlZ2lzdGVySUQgY2VsbFJlc3Vs
dCwgUmVnaXN0ZXJJRCBzdG9yYWdlUmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHJldmlz
aW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9k
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDUsMTEgKzQwNSwxMyBAQCBBTFdBWVNfSU5MSU5FIGJv
b2wgSklUOjppc09wZXJhbmRDb25zdGFuCiAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0
YW50UmVnaXN0ZXJJbmRleChzcmMpICYmIGdldENvbnN0YW50T3BlcmFuZChzcmMpLmlzU3RyaW5n
KCkgJiYgYXNTdHJpbmcoZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYykuYXNDZWxsKCkpLT5sZW5ndGgo
KSA9PSAxOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlLCBib29sIGRlc3RydWN0
b3IsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRl
QmFzaWNKU09iamVjdChTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQs
IFJlZ2lzdGVySUQgc3RvcmFnZVB0cikKK3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIE1h
cmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlwZSBkZXN0cnVjdG9yVHlwZSwgdHlwZW5hbWUgU3RydWN0
dXJlVHlwZT4gaW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KFN0cnVj
dHVyZVR5cGUgc3RydWN0dXJlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdl
UHRyKQogewogICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gMDsKLSAgICBpZiAoZGVz
dHJ1Y3RvcikKLSAgICAgICAgYWxsb2NhdG9yID0gJm1fZ2xvYmFsRGF0YS0+aGVhcC5hbGxvY2F0
b3JGb3JPYmplY3RXaXRoRGVzdHJ1Y3RvcihzaXplb2YoQ2xhc3NUeXBlKSk7CisgICAgaWYgKGRl
c3RydWN0b3JUeXBlID09IE1hcmtlZEJsb2NrOjpOb3JtYWwpCisgICAgICAgIGFsbG9jYXRvciA9
ICZtX2dsb2JhbERhdGEtPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aE5vcm1hbERlc3RydWN0
b3Ioc2l6ZW9mKENsYXNzVHlwZSkpOworICAgIGVsc2UgaWYgKGRlc3RydWN0b3JUeXBlID09IE1h
cmtlZEJsb2NrOjpJbW1vcnRhbFN0cnVjdHVyZSkKKyAgICAgICAgYWxsb2NhdG9yID0gJm1fZ2xv
YmFsRGF0YS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0
cnVjdG9yKHNpemVvZihDbGFzc1R5cGUpKTsKICAgICBlbHNlCiAgICAgICAgIGFsbG9jYXRvciA9
ICZtX2dsb2JhbERhdGEtPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3Io
c2l6ZW9mKENsYXNzVHlwZSkpOwogICAgIGxvYWRQdHIoJmFsbG9jYXRvci0+bV9mcmVlTGlzdC5o
ZWFkLCByZXN1bHQpOwpAQCAtNDI4LDcgKzQzMCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFz
c1R5cGUsIGJvb2wgZGVzdHIKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIEpJ
VDo6ZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChUIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1
bHQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKIHsKLSAgICBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0
PEpTRmluYWxPYmplY3QsIGZhbHNlLCBUPihzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaCk7Cisg
ICAgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdDxKU0ZpbmFsT2JqZWN0LCBNYXJrZWRCbG9jazo6
Tm9uZSwgVD4oc3RydWN0dXJlLCByZXN1bHQsIHNjcmF0Y2gpOwogfQogCiBpbmxpbmUgdm9pZCBK
SVQ6OmVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShzaXplX3Qgc2l6ZSwgcHRyZGlmZl90IG9mZnNl
dEZyb21CYXNlLCBSZWdpc3RlcklEIHJlc3VsdCkKQEAgLTQ1Myw3ICs0NTUsNyBAQCBpbmxpbmUg
dm9pZCBKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkodW5zCiAgICAgZW1pdEFsbG9jYXRlQmFzaWNT
dG9yYWdlKGluaXRpYWxTdG9yYWdlLCBzaXplb2YoSW5kZXhpbmdIZWFkZXIpLCBzdG9yYWdlUmVz
dWx0KTsKIAogICAgIC8vIEFsbG9jYXRlIHRoZSBjZWxsIGZvciB0aGUgYXJyYXkuCi0gICAgZW1p
dEFsbG9jYXRlQmFzaWNKU09iamVjdDxKU0FycmF5LCBmYWxzZT4oVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmFycmF5U3RydWN0dXJlKCkpLCBjZWxsUmVzdWx0LCBz
dG9yYWdlUHRyKTsKKyAgICBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0PEpTQXJyYXksIE1hcmtl
ZEJsb2NrOjpOb25lPihUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+
YXJyYXlTdHJ1Y3R1cmUoKSksIGNlbGxSZXN1bHQsIHN0b3JhZ2VQdHIpOwogCiAgICAgLy8gU3Rv
cmUgYWxsIHRoZSBuZWNlc3NhcnkgaW5mbyBpbiB0aGUgQXJyYXlTdG9yYWdlLgogICAgIHN0b3Jl
MzIoSW1tMzIobGVuZ3RoKSwgQWRkcmVzcyhzdG9yYWdlUmVzdWx0LCBBcnJheVN0b3JhZ2U6Omxl
bmd0aE9mZnNldCgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50cy5jcHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoQXJndW1lbnRzKTsKIAot
Y29uc3QgQ2xhc3NJbmZvIEFyZ3VtZW50czo6c19pbmZvID0geyAiQXJndW1lbnRzIiwgJkpTTm9u
RmluYWxPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShBcmd1bWVudHMp
IH07Citjb25zdCBDbGFzc0luZm8gQXJndW1lbnRzOjpzX2luZm8gPSB7ICJBcmd1bWVudHMiLCAm
QmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFyZ3VtZW50cykgfTsKIAog
dm9pZCBBcmd1bWVudHM6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50
cy5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAi
Q29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTU3LDkgKzU4LDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBjYWxs
ZWU7CiAgICAgfTsKIAotICAgIGNsYXNzIEFyZ3VtZW50cyA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKKyAgICBjbGFzcyBBcmd1bWVudHMgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7Cisg
ICAgICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKIAogICAgICAgICBzdGF0
aWMgQXJndW1lbnRzKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKICAgICAgICAgewpAQCAtMTU0LDEzICsxNTUsMTMgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgfQogCiAgICAgaW5saW5lIEFyZ3VtZW50czo6QXJndW1lbnRzKENhbGxGcmFtZSog
Y2FsbEZyYW1lKQotICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoY2FsbEZyYW1lLT5nbG9iYWxE
YXRhKCksIGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcmd1bWVudHNTdHJ1Y3R1
cmUoKSkKKyAgICAgICAgOiBKU0Rlc3RydWN0aWJsZU9iamVjdChjYWxsRnJhbWUtPmdsb2JhbERh
dGEoKSwgY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFyZ3VtZW50c1N0cnVjdHVy
ZSgpKQogICAgICAgICAsIGQoYWRvcHRQdHIobmV3IEFyZ3VtZW50c0RhdGEpKQogICAgIHsKICAg
ICB9CiAKICAgICBpbmxpbmUgQXJndW1lbnRzOjpBcmd1bWVudHMoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIE5vUGFyYW1ldGVyc1R5cGUpCi0gICAgICAgIDogSlNOb25GaW5hbE9iamVjdChjYWxsRnJh
bWUtPmdsb2JhbERhdGEoKSwgY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFyZ3Vt
ZW50c1N0cnVjdHVyZSgpKQorICAgICAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KGNhbGxGcmFt
ZS0+Z2xvYmFsRGF0YSgpLCBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJndW1l
bnRzU3RydWN0dXJlKCkpCiAgICAgICAgICwgZChhZG9wdFB0cihuZXcgQXJndW1lbnRzRGF0YSkp
CiAgICAgewogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NiArMzEsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwo
RXJyb3JQcm90b3R5cGUpOworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoRXJyb3JQcm90
b3R5cGUpOwogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlcnJvclByb3Rv
RnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Nyw2ICsy
NTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogICAgIH07CiAKKyAgICBIQVNfSU1NT1JU
QUxfU1RSVUNUVVJFKEV4ZWN1dGFibGVCYXNlKTsKKwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFi
bGUgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwog
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtMzM5LDYgKzM0
MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBJbnRyaW5zaWMgbV9pbnRyaW5zaWM7CiAg
ICAgfTsKIAorICAgIEhBU19JTU1PUlRBTF9TVFJVQ1RVUkUoTmF0aXZlRXhlY3V0YWJsZSk7CisK
ICAgICBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgRXhlY3V0YWJsZUJhc2UgQmFzZTsKQEAgLTQ2Nyw2
ICs0NzEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3duUHRyPEV2YWxDb2RlQmxvY2s+
IG1fZXZhbENvZGVCbG9jazsKICAgICB9OwogCisgICAgSEFTX0lNTU9SVEFMX1NUUlVDVFVSRShF
dmFsRXhlY3V0YWJsZSk7CisKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSA6IHB1YmxpYyBT
Y3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICBwdWJsaWM6CkBAIC01MzQsNiArNTQwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIE93blB0cjxQcm9ncmFtQ29kZUJsb2NrPiBtX3Byb2dyYW1Db2RlQmxvY2s7CiAgICAg
fTsKIAorICAgIEhBU19JTU1PUlRBTF9TVFJVQ1RVUkUoUHJvZ3JhbUV4ZWN1dGFibGUpOworCiAg
ICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewog
ICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwpAQCAtNzU1LDYgKzc2Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBXcml0ZUJhcnJpZXI8U2hhcmVkU3ltYm9sVGFibGU+IG1fc3ltYm9sVGFibGU7CiAgICAgfTsK
IAorICAgIEhBU19JTU1PUlRBTF9TVFJVQ1RVUkUoRnVuY3Rpb25FeGVjdXRhYmxlKTsKKwogICAg
IGlubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKICAgICAgICAg
OiBCYXNlKGdsb2JhbERhdGEsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25TdHJ1Y3R1
cmUoKSkKICAgICAgICAgLCBtX2V4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgdGhpcywgZXhlY3V0YWJs
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTAgKzMy
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChJbnRlcm5h
bEZ1bmN0aW9uKTsKIEFTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEludGVybmFsRnVuY3Rp
b24pOwogCi1jb25zdCBDbGFzc0luZm8gSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvID0geyAiRnVu
Y3Rpb24iLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEludGVybmFsRnVuY3Rpb24pIH07Citjb25zdCBDbGFzc0luZm8gSW50ZXJuYWxGdW5jdGlv
bjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEludGVybmFsRnVuY3Rpb24pIH07CiAKIEludGVybmFsRnVuY3Rpb246OkludGVy
bmFsRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
LCBzdHJ1Y3R1cmUpCisgICAgOiBKU0Rlc3RydWN0aWJsZU9iamVjdChnbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKSwgc3RydWN0dXJlKQogewogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCShyZXZpc2lvbiAxMjg3MTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDE2ICsyNCwxNiBAQAogI2lmbmRlZiBJbnRlcm5hbEZ1bmN0aW9uX2gK
ICNkZWZpbmUgSW50ZXJuYWxGdW5jdGlvbl9oCiAKLSNpbmNsdWRlICJKU09iamVjdC5oIgogI2lu
Y2x1ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogCi0gICAg
Y2xhc3MgSW50ZXJuYWxGdW5jdGlvbiA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAgICBj
bGFzcyBJbnRlcm5hbEZ1bmN0aW9uIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgICAg
ICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAKICAgICAgICAgc3RhdGljIEpT
X0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgSlNEZXN0cnVjdGlibGVPYmplY3Q7
CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKQEAgLTMyMSw2ICszMjIsMjMgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKICNlbmRpZgogCisgICAgdGVtcGxhdGU8Y2xhc3MgVD4K
KyAgICBzdHJ1Y3QgSGFzSW1tb3J0YWxTdHJ1Y3R1cmUgeworICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCB2YWx1ZSA9IGZhbHNlOworICAgIH07CisKKyNkZWZpbmUgSEFTX0lNTU9SVEFMX1NUUlVD
VFVSRShrbGFzcykgXAorICAgIHRlbXBsYXRlIDw+IFwKKyAgICBzdHJ1Y3QgSGFzSW1tb3J0YWxT
dHJ1Y3R1cmU8a2xhc3M+IHtcCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1
ZTtcCisgICAgfQorCisjZGVmaW5lIE5FRURTX0RFU1RSVUNUT1Ioa2xhc3MsIHYpIFwKKyAgICB0
ZW1wbGF0ZSA8PiBcCisgICAgc3RydWN0IE5lZWRzRGVzdHJ1Y3RvcjxrbGFzcz4ge1wKKyAgICAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB2O1wKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogICAgIHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiBoZWFwKQogICAgIHsKQEAg
LTMyOSwxMiArMzQ3LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBoZWFwLmdsb2JhbERh
dGEoKS0+c2V0SW5pdGlhbGl6aW5nT2JqZWN0Q2xhc3MoJlQ6OnNfaW5mbyk7CiAjZW5kaWYKICAg
ICAgICAgSlNDZWxsKiByZXN1bHQgPSAwOwotICAgICAgICBpZiAoTmVlZHNEZXN0cnVjdG9yPFQ+
Ojp2YWx1ZSkKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGhlYXAu
YWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihzaXplb2YoVCkpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBBU1NFUlQoVDo6c19pbmZvLm1ldGhvZFRhYmxlLmRlc3Ryb3kgPT0gSlNDZWxsOjpk
ZXN0cm95KTsKKyAgICAgICAgaWYgKE5lZWRzRGVzdHJ1Y3RvcjxUPjo6dmFsdWUgJiYgSGFzSW1t
b3J0YWxTdHJ1Y3R1cmU8VD46OnZhbHVlKQorICAgICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nh
c3Q8SlNDZWxsKj4oaGVhcC5hbGxvY2F0ZVdpdGhJbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3Io
c2l6ZW9mKFQpKSk7CisgICAgICAgIGVsc2UgaWYgKE5lZWRzRGVzdHJ1Y3RvcjxUPjo6dmFsdWUg
JiYgIUhhc0ltbW9ydGFsU3RydWN0dXJlPFQ+Ojp2YWx1ZSkKKyAgICAgICAgICAgIHJlc3VsdCA9
IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGhlYXAuYWxsb2NhdGVXaXRoTm9ybWFsRGVzdHJ1Y3Rvcihz
aXplb2YoVCkpKTsKKyAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nh
c3Q8SlNDZWxsKj4oaGVhcC5hbGxvY2F0ZVdpdGhvdXREZXN0cnVjdG9yKHNpemVvZihUKSkpOwot
ICAgICAgICB9CiAgICAgICAgIHJlc3VsdC0+Y2xlYXJTdHJ1Y3R1cmUoKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CkBAIC0zNDgsOCArMzY2LDEwIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBoZWFwLmdsb2JhbERhdGEoKS0+c2V0SW5pdGlhbGl6aW5nT2JqZWN0Q2xhc3MoJlQ6
OnNfaW5mbyk7CiAjZW5kaWYKICAgICAgICAgSlNDZWxsKiByZXN1bHQgPSAwOwotICAgICAgICBp
ZiAoTmVlZHNEZXN0cnVjdG9yPFQ+Ojp2YWx1ZSkKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0YXRp
Y19jYXN0PEpTQ2VsbCo+KGhlYXAuYWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihzaXplKSk7CisgICAg
ICAgIGlmIChOZWVkc0Rlc3RydWN0b3I8VD46OnZhbHVlICYmIEhhc0ltbW9ydGFsU3RydWN0dXJl
PFQ+Ojp2YWx1ZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGhl
YXAuYWxsb2NhdGVXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemUpKTsKKyAgICAg
ICAgZWxzZSBpZiAoTmVlZHNEZXN0cnVjdG9yPFQ+Ojp2YWx1ZSAmJiAhSGFzSW1tb3J0YWxTdHJ1
Y3R1cmU8VD46OnZhbHVlKQorICAgICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8SlNDZWxs
Kj4oaGVhcC5hbGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKHNpemUpKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBBU1NFUlQoVDo6c19pbmZvLm1ldGhvZFRhYmxlLmRlc3Ryb3kgPT0g
SlNDZWxsOjpkZXN0cm95KTsKICAgICAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEpTQ2Vs
bCo+KGhlYXAuYWxsb2NhdGVXaXRob3V0RGVzdHJ1Y3RvcihzaXplKSk7CkBAIC0zNjksNyArMzg5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEFTU0VSVCghZnJvbSB8fCBmcm9tLT5KU0Nl
bGw6OmluaGVyaXRzKCZXVEY6OlJlbW92ZVBvaW50ZXI8VG8+OjpUeXBlOjpzX2luZm8pKTsKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRvPihmcm9tKTsKICAgICB9Ci0KKyAgICAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUbz4KICAgICBpbmxpbmUgVG8ganNDYXN0KEpTVmFsdWUgZnJvbSkK
ICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGVzdHJ1Y3RpYmxlT2JqZWN0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQxIEBACisjaWZuZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0X2gKKyNkZWZpbmUgSlNEZXN0cnVj
dGlibGVPYmplY3RfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK3N0cnVjdCBDbGFzc0luZm87CisKK2NsYXNzIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9i
amVjdCBCYXNlOworCisgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJl
dHVybiBtX2NsYXNzSW5mbzsgfQorCitwcm90ZWN0ZWQ6CisgICAgSlNEZXN0cnVjdGlibGVPYmpl
Y3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVy
Zmx5KiBidXR0ZXJmbHkgPSAwKQorICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpCisgICAgICAgICwgbV9jbGFzc0luZm8oc3RydWN0dXJl
LT5jbGFzc0luZm8oKSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2NsYXNzSW5mbyk7CisgICAg
fQorCitwcml2YXRlOgorICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87Cit9OworCitp
bmxpbmUgY29uc3QgQ2xhc3NJbmZvKiBKU0NlbGw6OmNsYXNzSW5mbygpIGNvbnN0Cit7CisgICAg
aWYgKE1hcmtlZEJsb2NrOjpibG9ja0Zvcih0aGlzKS0+ZGVzdHJ1Y3RvclR5cGUoKSA9PSBNYXJr
ZWRCbG9jazo6Tm9ybWFsKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNEZXN0
cnVjdGlibGVPYmplY3QqPih0aGlzKS0+Y2xhc3NJbmZvKCk7CisjaWYgRU5BQkxFKEdDX1ZBTElE
QVRJT04pCisgICAgcmV0dXJuIG1fc3RydWN0dXJlLnVudmFsaWRhdGVkR2V0KCktPmNsYXNzSW5m
bygpOworI2Vsc2UKKyAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPmNsYXNzSW5mbygpOworI2VuZGlm
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDEyODcx
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJl
c2V0KEpTVmFsdWUgcHJvdG8KICAgICBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgSlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1
cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7
CiAgICAgbV9hcmd1bWVudHNTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
QXJndW1lbnRzOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX29i
amVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVy
ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0NhbGxiYWNrQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBl
LmdldCgpKSk7Ci0gICAgbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzLCBKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+OjpjcmVhdGVT
dHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQo
KSkpOworICAgIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywgSlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OmNyZWF0ZVN0
cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KSk7CiAKICAgICBtX2FycmF5UHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IEFycmF5UHJvdG90eXBlOjpjcmVhdGUoZXhlYywgdGhpcywgQXJyYXlQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpKSkpOwogICAgIG1fYXJyYXlTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywgSlNBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9h
cnJheVByb3RvdHlwZS5nZXQoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Nyw3ICs3Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgdHlwZWRlZiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IEJhc2U7CiAgICAgICAgIHR5cGVk
ZWYgSGFzaFNldDxSZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiA+IFdlYWtNYXBTZXQ7CiAK
ICAgICAgICAgc3RydWN0IEpTR2xvYmFsT2JqZWN0UmFyZURhdGEgewpAQCAtMTY2LDE0ICsxNjUs
MTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBtX3JhcmVEYXRhID0gYWRvcHRQdHIobmV3
IEpTR2xvYmFsT2JqZWN0UmFyZURhdGEpOwotICAgICAgICAgICAgSGVhcDo6aGVhcCh0aGlzKS0+
YWRkRmluYWxpemVyKHRoaXMsIGNsZWFyUmFyZURhdGEpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IEJh
c2U7CisKICAgICAgICAgc3RhdGljIEpTR2xvYmFsT2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewogICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTR2xvYmFsT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBKU0dsb2JhbE9iamVjdChnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5maW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIGdsb2JhbERhdGEuaGVhcC5hZGRGaW5hbGl6
ZXIoZ2xvYmFsT2JqZWN0LCBkZXN0cm95KTsKICAgICAgICAgICAgIHJldHVybiBnbG9iYWxPYmpl
Y3Q7CiAgICAgICAgIH0KIApAQCAtMzY4LDYgKzM2OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjbGVhclJhcmVEYXRhKEpTQ2VsbCop
OwogICAgIH07CiAKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGJlIGFsbG9jYXRlZCBpbiB0aGUg
ZGVzdHJ1Y3RvciBzcGFjZSBiZWNhdXNlIHdlIHVzZSBhIGZpbmFsaXplciBpbnN0ZWFkLgorICAg
IE5FRURTX0RFU1RSVUNUT1IoSlNHbG9iYWxPYmplY3QsIGZhbHNlKTsKKwogICAgIEpTR2xvYmFs
T2JqZWN0KiBhc0dsb2JhbE9iamVjdChKU1ZhbHVlKTsKIAogICAgIGlubGluZSBKU0dsb2JhbE9i
amVjdCogYXNHbG9iYWxPYmplY3QoSlNWYWx1ZSB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsVGhpcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsVGhpcy5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbFRoaXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsMTMgKzI2LDEzIEBACiAjaWZuZGVmIEpTR2xvYmFsVGhpc19oCiAjZGVmaW5lIEpT
R2xvYmFsVGhpc19oCiAKLSNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBKU0dsb2JhbFRoaXMg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitjbGFzcyBKU0dsb2JhbFRoaXMgOiBwdWJsaWMg
SlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgotICAgIHR5cGVkZWYgSlNOb25GaW5hbE9i
amVjdCBCYXNlOworICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKIAogICAg
IHN0YXRpYyBKU0dsb2JhbFRoaXMqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiBw
cm90ZWN0ZWQ6CiAgICAgSlNHbG9iYWxUaGlzKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUpCisgICAgICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3QoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKQogICAgIHsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEy
ODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDYgKzEwNCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiBtX2pzU3RyaW5n
czsKICAgICB9OwogCisgICAgSEFTX0lNTU9SVEFMX1NUUlVDVFVSRShKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yKTsKKwogICAgIGlubGluZSB2b2lkIFN0cnVjdHVyZTo6c2V0RW51bWVyYXRpb25DYWNo
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGVudW1l
cmF0aW9uQ2FjaGUpCiAgICAgewogICAgICAgICBBU1NFUlQoIWlzRGljdGlvbmFyeSgpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCShyZXZpc2lvbiAx
Mjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9D
TEFTU19GSVRTX0lOX0NFTEwoSlNTY29wZSk7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RP
UihKU1Njb3BlKTsKIAogdm9pZCBKU1Njb3BlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBKU1JvcGVTdHJpbmcqIGpzU3RyaW5nQnVpbGRlcihKU0dsb2Jh
bERhdGEqKTsKIAorICAgIEhBU19JTU1PUlRBTF9TVFJVQ1RVUkUoSlNTdHJpbmcpOworCiAgICAg
Y2xhc3MgSlNTdHJpbmcgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CkBAIC0zMjEsNiArMzIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIG11dGFibGUgRml4ZWRBcnJheTxXcml0ZUJhcnJpZXI8SlNTdHJpbmc+LCBzX21heEludGVy
bmFsUm9wZUxlbmd0aD4gbV9maWJlcnM7CiAgICAgfTsKIAorICAgIEhBU19JTU1PUlRBTF9TVFJV
Q1RVUkUoSlNSb3BlU3RyaW5nKTsKKwogICAgIEpTU3RyaW5nKiBhc1N0cmluZyhKU1ZhbHVlKTsK
IAogICAgIGlubGluZSBKU1N0cmluZyogYXNTdHJpbmcoSlNWYWx1ZSB2YWx1ZSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCShyZXZp
c2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTUgKzIyLDE1IEBACiAjaWZuZGVmIEpTV3Jh
cHBlck9iamVjdF9oCiAjZGVmaW5lIEpTV3JhcHBlck9iamVjdF9oCiAKLSNpbmNsdWRlICJKU09i
amVjdC5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgLy8gVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgYmFzZSBmb3IgY2xhc3NlcyBz
dWNoIGFzIFN0cmluZywKICAgICAvLyBOdW1iZXIsIEJvb2xlYW4gYW5kIERhdGUgd2hpY2ggYXJl
IHdyYXBwZXJzIGZvciBwcmltaXRpdmUgdHlwZXMuCi0gICAgY2xhc3MgSlNXcmFwcGVyT2JqZWN0
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworICAgIGNsYXNzIEpTV3JhcHBlck9iamVjdCA6
IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgcHVibGljOgotICAgICAgICB0eXBl
ZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICAgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJs
ZU9iamVjdCBCYXNlOwogCiAgICAgICAgIEpTVmFsdWUgaW50ZXJuYWxWYWx1ZSgpIGNvbnN0Owog
ICAgICAgICB2b2lkIHNldEludGVybmFsVmFsdWUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSk7CkBA
IC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBpbmxpbmUgSlNX
cmFwcGVyT2JqZWN0OjpKU1dyYXBwZXJPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERh
dGEsIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU0Rlc3RydWN0aWJsZU9iamVjdChnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUpCiAgICAgewogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VM
TChNYXRoT2JqZWN0KTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKE1hdGhPYmplY3Qp
OwogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQWJz
KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY0FDb3MoRXhlY1N0YXRlKik7CkBAIC01OSw5ICs2MCw3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGgKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFTU0VSVF9I
QVNfVFJJVklBTF9ERVNUUlVDVE9SKE1hdGhPYmplY3QpOwotCi1jb25zdCBDbGFzc0luZm8gTWF0
aE9iamVjdDo6c19pbmZvID0geyAiTWF0aCIsICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAs
IEV4ZWNTdGF0ZTo6bWF0aFRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1hdGhPYmplY3QpIH07
Citjb25zdCBDbGFzc0luZm8gTWF0aE9iamVjdDo6c19pbmZvID0geyAiTWF0aCIsICZCYXNlOjpz
X2luZm8sIDAsIEV4ZWNTdGF0ZTo6bWF0aFRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1hdGhP
YmplY3QpIH07CiAKIC8qIFNvdXJjZSBmb3IgTWF0aE9iamVjdC5sdXQuaAogQGJlZ2luIG1hdGhU
YWJsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmFtZUluc3RhbmNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmFtZUluc3RhbmNl
LmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
bWVJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNCArMjYsMTQgQEAKICNpZm5kZWYg
TmFtZUluc3RhbmNlX2gKICNkZWZpbmUgTmFtZUluc3RhbmNlX2gKIAotI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKICNpbmNsdWRlICJQcml2
YXRlTmFtZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgTmFtZUluc3RhbmNlIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgeworY2xhc3MgTmFtZUluc3RhbmNlIDogcHVibGljIEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3Qg
QmFzZTsKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAKICAgICBzdGF0
aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIE93blB0cjxZYXJyOjpCeXRlY29kZVBhdHRlcm4+IG1fcmVn
RXhwQnl0ZWNvZGU7CiAgICAgfTsKIAorICAgIEhBU19JTU1PUlRBTF9TVFJVQ1RVUkUoUmVnRXhw
KTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBSZWdFeHBfaApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCShyZXZpc2lv
biAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw5IEBAIHN0YXRpYyBKU1ZhbHVlIHJlZ0V4
cE9iamVjdFNvdXJjZShFeGVjU3QKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklU
U19JTl9DRUxMKFJlZ0V4cE9iamVjdCk7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihS
ZWdFeHBPYmplY3QpOwogCi1jb25zdCBDbGFzc0luZm8gUmVnRXhwT2JqZWN0OjpzX2luZm8gPSB7
ICJSZWdFeHAiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCBFeGVjU3RhdGU6OnJlZ0V4
cFRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJlZ0V4cE9iamVjdCkgfTsKK2NvbnN0IENsYXNz
SW5mbyBSZWdFeHBPYmplY3Q6OnNfaW5mbyA9IHsgIlJlZ0V4cCIsICZCYXNlOjpzX2luZm8sIDAs
IEV4ZWNTdGF0ZTo6cmVnRXhwVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoUmVnRXhwT2JqZWN0
KSB9OwogCiAvKiBTb3VyY2UgZm9yIFJlZ0V4cE9iamVjdC5sdXQuaAogQGJlZ2luIHJlZ0V4cFRh
YmxlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVl
TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNl
QXJyYXlWYWx1ZU1hcC5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw2
ICsxMjgsOCBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX3JlcG9ydGVkQ2FwYWNpdHk7CiB9Owog
CitIQVNfSU1NT1JUQUxfU1RSVUNUVVJFKFNwYXJzZUFycmF5VmFsdWVNYXApOworCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFNwYXJzZUFycmF5VmFsdWVNYXBfaApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEyODcxMikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NjQsMTYgKzQ2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25l
ZCBtX3N0YXRpY0Z1bmN0aW9uUmVpZmllZDsKICAgICB9OwogCi0gICAgdGVtcGxhdGUgPD4gaW5s
aW5lIHZvaWQqIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmU+KEhlYXAmIGhlYXApCi0gICAgewotI2lm
IEVOQUJMRShHQ19WQUxJREFUSU9OKQotICAgICAgICBBU1NFUlQoIWhlYXAuZ2xvYmFsRGF0YSgp
LT5pc0luaXRpYWxpemluZ09iamVjdCgpKTsKLSAgICAgICAgaGVhcC5nbG9iYWxEYXRhKCktPnNl
dEluaXRpYWxpemluZ09iamVjdENsYXNzKCZTdHJ1Y3R1cmU6OnNfaW5mbyk7Ci0jZW5kaWYKLSAg
ICAgICAgSlNDZWxsKiByZXN1bHQgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPihoZWFwLmFsbG9jYXRl
U3RydWN0dXJlKHNpemVvZihTdHJ1Y3R1cmUpKSk7Ci0gICAgICAgIHJlc3VsdC0+Y2xlYXJTdHJ1
Y3R1cmUoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9CisgICAgSEFTX0lNTU9SVEFM
X1NUUlVDVFVSRShTdHJ1Y3R1cmUpOwogCiAgICAgaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJl
OjpjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvLCBjb25z
dCBDbGFzc0luZm8qIGNsYXNzSW5mbywgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSkKICAgICB7
CkBAIC02MTksMTUgKzYxMCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBU1NFUlQobV9z
dHJ1Y3R1cmUgfHwgIWdsb2JhbERhdGEuc3RydWN0dXJlU3RydWN0dXJlKTsKICAgICB9CiAKLSAg
ICBpbmxpbmUgY29uc3QgQ2xhc3NJbmZvKiBKU0NlbGw6OmNsYXNzSW5mbygpIGNvbnN0Ci0gICAg
ewotI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQotICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUu
dW52YWxpZGF0ZWRHZXQoKS0+Y2xhc3NJbmZvKCk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gbV9z
dHJ1Y3R1cmUtPmNsYXNzSW5mbygpOwotI2VuZGlmCi0gICAgfQotCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmIC8vIFN0cnVjdHVyZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkK
QEAgLTgyLDYgKzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE93bkFycmF5UHRyPFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CiAgICAgfTsKIAorICAgIEhBU19JTU1P
UlRBTF9TVFJVQ1RVUkUoU3RydWN0dXJlQ2hhaW4pOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAog
I2VuZGlmIC8vIFN0cnVjdHVyZUNoYWluX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDYg
KzMyNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU2hhcmVkU3ltYm9sVGFibGUg
OiBwdWJsaWMgSlNDZWxsLCBwdWJsaWMgU3ltYm9sVGFibGUgewogICAgIHB1YmxpYzoKKyAgICAg
ICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKwogICAgICAgICBzdGF0aWMgU2hhcmVkU3ltYm9sVGFi
bGUqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIFNoYXJlZFN5bWJvbFRhYmxlKiBzaGFyZWRTeW1ib2xUYWJsZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFNoYXJlZFN5bWJvbFRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBTaGFyZWRT
eW1ib2xUYWJsZShnbG9iYWxEYXRhKTsKQEAgLTM4MCw3ICszODIsOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgaW50IG1fY2FwdHVyZVN0YXJ0OwogICAgICAgICBpbnQgbV9jYXB0dXJlRW5k
OwogICAgIH07Ci0gICAgCisgICAKKyAgICBIQVNfSU1NT1JUQUxfU1RSVUNUVVJFKFNoYXJlZFN5
bWJvbFRhYmxlKTsKKyAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU3ltYm9sVGFi
bGVfaApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTItMDktMTYgIE1h
cmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBEZWxheWVk
IHN0cnVjdHVyZSBzd2VlcCBjYW4gbGVhayBzdHJ1Y3R1cmVzIHdpdGhvdXQgYm91bmQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NTQ2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBnZXRz
IHJpZCBvZiB0aGUgc2VwYXJhdGUgU3RydWN0dXJlIGFsbG9jYXRvciBpbiB0aGUgTWFya2VkU3Bh
Y2UgYW5kIGFkZHMgdHdvIG5ldyBkZXN0cnVjdG9yLW9ubHkKKyAgICAgICAgYWxsb2NhdG9ycy4g
V2Ugbm93IGhhdmUgc2VwYXJhdGUgYWxsb2NhdG9ycyBmb3Igb3VyIHRocmVlIHR5cGVzIG9mIG9i
amVjdHM6IHRob3NlIG9iamVjdHMgd2l0aCBubyBkZXN0cnVjdG9ycywKKyAgICAgICAgdGhvc2Ug
b2JqZWN0cyB3aXRoIGRlc3RydWN0b3JzIGFuZCB3aXRoIGltbW9ydGFsIHN0cnVjdHVyZXMsIGFu
ZCB0aG9zZSBvYmplY3RzIHdpdGggZGVzdHJ1Y3RvcnMgdGhhdCBkb24ndCBoYXZlIAorICAgICAg
ICBpbW1vcnRhbCBzdHJ1Y3R1cmVzLiBBbGwgb2YgdGhlIG9iamVjdHMgb2YgdGhlIHRoaXJkIHR5
cGUgKGRlc3RydWN0b3JzIHdpdGhvdXQgaW1tb3J0YWwgc3RydWN0dXJlcykgbm93IAorICAgICAg
ICBpbmhlcml0IGZyb20gYSBuZXcgY2xhc3MgbmFtZWQgSlNEZXN0cnVjdGlibGVPYmplY3QgKHdo
aWNoIGluIHR1cm4gaXMgYSBzdWJjbGFzcyBvZiBKU05vbkZpbmFsT2JqZWN0KSwgd2hpY2ggc3Rv
cmVzIAorICAgICAgICB0aGUgQ2xhc3NJbmZvIGZvciB0aGVzZSBjbGFzc2VzIGF0IGEgZml4ZWQg
b2Zmc2V0IGZvciBzYWZlIHJldHJpZXZhbCBkdXJpbmcgc3dlZXBpbmcvZGVzdHJ1Y3Rpb24uCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9KU0Rlc3RydWN0YWJsZU9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdyYXBwZXIuaDogSW5oZXJpdHMgZnJvbSBKU0Rlc3RydWN0aWJsZU9iamVjdC4KKyAg
ICAgICAgKEpTRE9NV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdyYXBwZXI6OkpT
RE9NV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06IEFkZCBmaW5hbGl6ZXJzIHRvIGFueXRoaW5nIHRoYXQgaW5oZXJpdHMgZnJvbSBKU0dsb2Jh
bE9iamVjdCwKKyAgICAgICAgZS5nLiBKU0RPTVdpbmRvdyBhbmQgSlNXb3JrZXJDb250ZXh0cy4g
Rm9yIHRob3NlIGNsYXNzZXMgd2UgYWxzbyBuZWVkIHRvIHVzZSB0aGUgTkVFRFNfREVTVFJVQ1RP
UiBtYWNyby4KKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKiBicmlkZ2Uvb2Jq
Yy9vYmpjX3J1bnRpbWUuaDogSW5oZXJpdCBmcm9tIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LgorICAg
ICAgICAoT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpj
X3J1bnRpbWUubW06CisgICAgICAgIChCaW5kaW5ncyk6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6Ok9iamNGYWxsYmFja09iamVjdEltcCk6CisgICAgICAg
ICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOiBVc2UgYSBmaW5hbGl6ZXIgc28gdGhhdCBKU0Fy
cmF5IGlzbid0IGZvcmNlZCB0byBpbmhlcml0IGZyb20gSlNEZXN0cnVjdGlibGVPYmplY3QuCisg
ICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmRlc3Ryb3kpOgorICAg
ICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJh
eTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2Jq
ZWN0LmNwcDogSW5oZXJpdCBmcm9tIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LgorICAgICAgICAoQmlu
ZGluZ3MpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6UnVudGltZU9i
amVjdCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisgICAgICAgIChSdW50
aW1lT2JqZWN0KToKKwogMjAxMi0wOS0xNiAgS2FsZXYgTGVtYmVyICA8a2FsZXZsZW1iZXJAZ21h
aWwuY29tPgogCiAgICAgICAgIFtHVEtdIE1pc3NpbmcgZGxsZXhwb3J0IGNhdXNpbmcgbGlua2lu
ZyBlcnJvcnMgb24gV2luZG93cyBwbGF0Zm9ybQpJbmRleDogU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVP
YmplY3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0pTRGVzdHJ1Y3RpYmxlT2JqZWN0X2gKKyNkZWZpbmUg
V2ViQ29yZV9GV0RfSlNEZXN0cnVjdGlibGVPYmplY3RfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmg+CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
MjAgKzIzLDIyIEBACiAjZGVmaW5lIEpTRE9NV3JhcHBlcl9oCiAKICNpbmNsdWRlICJKU0RPTUds
b2JhbE9iamVjdC5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KKyNpbmNsdWRlIDxy
dW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotY2xhc3MgSlNET01XcmFwcGVyIDogcHVi
bGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitjbGFzcyBKU0RPTVdyYXBwZXIgOiBwdWJsaWMg
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihK
U0M6OkpTTm9uRmluYWxPYmplY3Q6Omdsb2JhbE9iamVjdCgpKTsgfQogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBnbG9i
YWxPYmplY3QoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKIHByb3RlY3RlZDoKICAg
ICBKU0RPTVdyYXBwZXIoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KSAKLSAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbE9i
amVjdC0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCisgICAgICAgIDogSlNEZXN0cnVjdGlibGVP
YmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShy
ZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtNzQyLDYgKzc0Miw3IEBAIHN1YiBHZW5l
cmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOwogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xhc3NOYW1lKiBwdHIgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KGdsb2JhbERhdGEuaGVhcCkp
ICR7Y2xhc3NOYW1lfShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGltcGwsIHdpbmRvd1NoZWxsKTtc
biIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBwdHItPmZpbmlzaENy
ZWF0aW9uKGdsb2JhbERhdGEsIHdpbmRvd1NoZWxsKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgICAgICBnbG9iYWxEYXRhLmhlYXAuYWRkRmluYWxpemVyKHB0ciwgZGVz
dHJveSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJu
IHB0cjtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7CiAg
ICAgfSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250
ZXh0In0pIHsKQEAgLTc0OSw2ICs3NTAsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxEYXRhLmhlYXApKSAke2NsYXNzTmFtZX0oZ2xvYmFs
RGF0YSwgc3RydWN0dXJlLCBpbXBsKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpO1xuIik7CisgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIGdsb2JhbERhdGEuaGVhcC5hZGRGaW5hbGl6
ZXIocHRyLCBkZXN0cm95KTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
ICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
fVxuXG4iKTsKICAgICB9IGVsc2lmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkIn0pIHsKQEAgLTEwMDgsNiArMTAxMCwxNCBAQCBzdWIgR2Vu
ZXJhdGVIZWFkZXIKIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9O1xuXG4iKTsKIAorICAg
IGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IiB8fCAkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQifSkgeworICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAifSAvLyBuYW1lc3BhY2UgV2ViQ29yZVxuXG4iKTsKKyAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIm5hbWVzcGFjZSBKU0Mge1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJORUVEU19ERVNUUlVDVE9SKFdlYkNvcmU6OiR7Y2xhc3NOYW1lfSwgZmFsc2UpO1xu
XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIn0gLy8gbmFtZXNwYWNlIEpTQ1xu
XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIm5hbWVzcGFjZSBXZWJDb3JlIHtc
blxuIik7CisgICAgfQorCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkpTSW5saW5lR2V0T3duUHJvcGVydHlTbG90In0gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbUdldE93blByb3BlcnR5U2xvdCJ9KSB7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICJBTFdBWVNfSU5MSU5FIGJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDOjpKU0NlbGwqIGNlbGwsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ7XG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9hcnJheS5jcHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0
IENsYXNzSW5mbyBSdW50aW1lQXJyYXk6OnNfaW5mbyA9IHsgIlJ1bnRpbWVBcnJheSIsICZKU0Fy
cmF5OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUnVudGltZUFycmF5KSB9Owor
Y29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVBcnJheTo6c19pbmZvID0geyAiUnVudGltZUFycmF5Iiwg
JkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShSdW50aW1lQXJyYXkpIH07
CiAKIFJ1bnRpbWVBcnJheTo6UnVudGltZUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgOiBKU0FycmF5KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJl
LCAwKQpAQCAtNTcsNyArNTcsNyBAQCBSdW50aW1lQXJyYXk6On5SdW50aW1lQXJyYXkoKQogCiB2
b2lkIFJ1bnRpbWVBcnJheTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7Ci0gICAgc3RhdGljX2Nh
c3Q8UnVudGltZUFycmF5Kj4oY2VsbCktPlJ1bnRpbWVBcnJheTo6flJ1bnRpbWVBcnJheSgpOwor
ICAgIGpzQ2FzdDxSdW50aW1lQXJyYXkqPihjZWxsKS0+UnVudGltZUFycmF5Ojp+UnVudGltZUFy
cmF5KCk7CiB9CiAKIEpTVmFsdWUgUnVudGltZUFycmF5OjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRl
KiwgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfYXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9hcnJheS5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9hcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHB1
YmxpYzoKICAgICAgICAgU3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNh
dGVkR2V0RE9NU3RydWN0dXJlPFJ1bnRpbWVBcnJheT4oZXhlYyk7CiAgICAgICAgIFJ1bnRpbWVB
cnJheSogcnVudGltZUFycmF5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UnVudGltZUFy
cmF5PigqZXhlYy0+aGVhcCgpKSkgUnVudGltZUFycmF5KGV4ZWMsIGRvbVN0cnVjdHVyZSk7CiAg
ICAgICAgIHJ1bnRpbWVBcnJheS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBh
cnJheSk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLmFkZEZpbmFsaXplcihydW50
aW1lQXJyYXksIGRlc3Ryb3kpOwogICAgICAgICByZXR1cm4gcnVudGltZUFycmF5OwogICAgIH0K
IApAQCAtODgsNiArODksOCBAQCBwcml2YXRlOgogCiAgICAgQmluZGluZ3NBcnJheSogbV9hcnJh
eTsKIH07CisKK05FRURTX0RFU1RSVUNUT1IoUnVudGltZUFycmF5LCBmYWxzZSk7CiAgICAgCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuY3BwCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMCArMzUsMTAgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBCaW5kaW5ncyB7
CiAKLWNvbnN0IENsYXNzSW5mbyBSdW50aW1lT2JqZWN0OjpzX2luZm8gPSB7ICJSdW50aW1lT2Jq
ZWN0IiwgJkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShSdW50aW1lT2JqZWN0KSB9OworY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVPYmplY3Q6OnNfaW5m
byA9IHsgIlJ1bnRpbWVPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKFJ1bnRpbWVPYmplY3QpIH07CiAKIFJ1bnRpbWVPYmplY3Q6OlJ1bnRpbWVPYmplY3Qo
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFBhc3NSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlKQotICAgIDogSlNOb25GaW5hbE9i
amVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQorICAgIDogSlNEZXN0
cnVjdGlibGVPYmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKICAg
ICAsIG1faW5zdGFuY2UoaW5zdGFuY2UpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9vYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9vYmplY3QuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDkgQEAKIG5h
bWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAotY2xhc3MgUnVudGltZU9iamVj
dCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK2NsYXNzIFJ1bnRpbWVPYmplY3QgOiBwdWJs
aWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgotICAgIHR5cGVkZWYgSlNOb25GaW5h
bE9iamVjdCBCYXNlOworICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKIAog
ICAgIHN0YXRpYyBSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxJ
bnN0YW5jZT4gaW5zdGFuY2UpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw5ICs5MCw5IEBA
IHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE9iamVjdFN0cnVjdFB0cj4gX2FycmF5OwogfTsKIAot
Y2xhc3MgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewor
Y2xhc3MgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICB0eXBl
ZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAKICAgICBzdGF0aWMgT2JqY0ZhbGxiYWNr
T2JqZWN0SW1wKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBPYmpjSW5zdGFuY2UqIGluc3RhbmNlLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1l
Lm1tCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X3J1bnRpbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4OCwxMCArMTg4LDEwIEBAIHVuc2lnbmVk
IGludCBPYmpjQXJyYXk6OmdldExlbmd0aCgpIGNvbnMKICAgICByZXR1cm4gW19hcnJheS5nZXQo
KSBjb3VudF07CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnNf
aW5mbyA9IHsgIk9iamNGYWxsYmFja09iamVjdCIsICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8s
IDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKSB9OworY29u
c3QgQ2xhc3NJbmZvIE9iamNGYWxsYmFja09iamVjdEltcDo6c19pbmZvID0geyAiT2JqY0ZhbGxi
YWNrT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShPYmpj
RmFsbGJhY2tPYmplY3RJbXApIH07CiAKIE9iamNGYWxsYmFja09iamVjdEltcDo6T2JqY0ZhbGxi
YWNrT2JqZWN0SW1wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBPYmpjSW5zdGFuY2UqIGksIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQotICAg
IDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJl
KQorICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCks
IHN0cnVjdHVyZSkKICAgICAsIF9pbnN0YW5jZShpKQogICAgICwgbV9pdGVtKHByb3BlcnR5TmFt
ZSkKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164420</attachid>
            <date>2012-09-17 11:07:40 -0700</date>
            <delta_ts>2012-09-30 18:30:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96546-20120917110708.patch</filename>
            <type>text/plain</type>
            <size>99586</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4MSBA
QAorMjAxMi0wOS0xNiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIERlbGF5ZWQgc3RydWN0dXJlIHN3ZWVwIGNhbiBsZWFrIHN0cnVjdHVyZXMgd2l0
aG91dCBib3VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTY1NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGdldHMgcmlkIG9mIHRoZSBzZXBhcmF0ZSBTdHJ1Y3R1cmUgYWxsb2NhdG9y
IGluIHRoZSBNYXJrZWRTcGFjZSBhbmQgYWRkcyB0d28gbmV3IGRlc3RydWN0b3Itb25seQorICAg
ICAgICBhbGxvY2F0b3JzLiBXZSBub3cgaGF2ZSBzZXBhcmF0ZSBhbGxvY2F0b3JzIGZvciBvdXIg
dGhyZWUgdHlwZXMgb2Ygb2JqZWN0czogdGhvc2Ugb2JqZWN0cyB3aXRoIG5vIGRlc3RydWN0b3Jz
LAorICAgICAgICB0aG9zZSBvYmplY3RzIHdpdGggZGVzdHJ1Y3RvcnMgYW5kIHdpdGggaW1tb3J0
YWwgc3RydWN0dXJlcywgYW5kIHRob3NlIG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycyB0aGF0IGRv
bid0IGhhdmUgCisgICAgICAgIGltbW9ydGFsIHN0cnVjdHVyZXMuIEFsbCBvZiB0aGUgb2JqZWN0
cyBvZiB0aGUgdGhpcmQgdHlwZSAoZGVzdHJ1Y3RvcnMgd2l0aG91dCBpbW1vcnRhbCBzdHJ1Y3R1
cmVzKSBub3cgCisgICAgICAgIGluaGVyaXQgZnJvbSBhIG5ldyBjbGFzcyBuYW1lZCBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCAod2hpY2ggaW4gdHVybiBpcyBhIHN1YmNsYXNzIG9mIEpTTm9uRmluYWxP
YmplY3QpLCB3aGljaCBzdG9yZXMgCisgICAgICAgIHRoZSBDbGFzc0luZm8gZm9yIHRoZXNlIGNs
YXNzZXMgYXQgYSBmaXhlZCBvZmZzZXQgZm9yIHNhZmUgcmV0cmlldmFsIGR1cmluZyBzd2VlcGlu
Zy9kZXN0cnVjdGlvbi4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3Bw
OiBVc2UgSlNEZXN0cnVjdGlibGVPYmplY3QgZm9yIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci4KKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6SlNDYWxs
YmFja0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmg6
CisgICAgICAgIChKU0NhbGxiYWNrQ29uc3RydWN0b3IpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0LmNwcDogSW5oZXJpdCBmcm9tIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IGZvciBub3Jt
YWwgSlNDYWxsYmFja09iamVjdHMgYW5kIHVzZSBhIGZpbmFsaXplciBmb3IgCisgICAgICAgIEpT
Q2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+LCBzaW5jZSBKU0dsb2JhbE9iamVjdCBhbHNv
IHVzZXMgYSBmaW5hbGl6ZXIuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjo6OmNyZWF0
ZSk6IFdlIG5lZWQgdG8gbW92ZSB0aGUgY3JlYXRlIGZ1bmN0aW9uIGZvciBKU0NhbGxiYWNrT2Jq
ZWN0PEpTR2xvYmFsT2JqZWN0PiBvdXQgb2YgbGluZSBzbyB3ZSBjYW4gYWRkIAorICAgICAgICB0
aGUgZmluYWxpemVyIGZvciBpdC4gV2UgZG9uJ3Qgd2FudCB0byBhZGQgdGhlIGZpbmFsaXplciBp
cyBzb21ldGhpbmcgbGlrZSBmaW5pc2hDcmVhdGlvbiBpbiBjYXNlIHNvbWVib2R5IGRlY2lkZXMg
CisgICAgICAgIHRvIHN1YmNsYXNzIHRoaXMuIFdlIHVzZSB0aGlzIHNhbWUgdGVjaG5pcXVlIGZv
ciBtYW55IG90aGVyIHN1YmNsYXNzZXMgb2YgSlNHbG9iYWxPYmplY3QuCisgICAgICAgIChKU0M6
Ojo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgor
ICAgICAgICAoSlNDYWxsYmFja09iamVjdCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIEFQ
SS9KU0NsYXNzUmVmLmNwcDogQ2hhbmdlIGFsbCB0aGUgSlNDYWxsYmFja09iamVjdDxKU05vbkZp
bmFsT2JqZWN0PiB0byB1c2UgSlNEZXN0cnVjdGlibGVPYmplY3QgaW5zdGVhZC4KKyAgICAgICAg
KE9wYXF1ZUpTQ2xhc3M6OnByb3RvdHlwZSk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNw
cDogRGl0dG8uCisgICAgICAgIChKU09iamVjdE1ha2UpOgorICAgICAgICAoSlNPYmplY3RHZXRQ
cml2YXRlKToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJpdmF0ZSk6CisgICAgICAgIChKU09iamVj
dEdldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU09iamVjdFNldFByaXZhdGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU09iamVjdERlbGV0ZVByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgICog
QVBJL0pTVmFsdWVSZWYuY3BwOiBEaXR0by4KKyAgICAgICAgKEpTVmFsdWVJc09iamVjdE9mQ2xh
c3MpOgorICAgICAgICAqIEFQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcDogRGl0dG8u
CisgICAgICAgICogSlNDVHlwZWRBcnJheVN0dWJzLmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6IFVzZSB0aGUgcHJvcGVyIGFsbG9jYXRvciB0eXBlIHdo
ZW4gZG9pbmcgaW5saW5lIGFsbG9jYXRpb24gaW4gdGhlIERGRy4KKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QpOgorICAg
ICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGhlYXAvSGVh
cC5oOiBBZGQgYWNjZXNzb3JzIGZvciB0aGUgdmFyaW91cyB0eXBlcyBvZiBhbGxvY2F0b3JzIG5v
dy4gQWxzbyByZW1vdmUgdGhlIGlzU2FmZVRvU3dlZXBTdHJ1Y3R1cmVzIGZ1bmN0aW9uIAorICAg
ICAgICBzaW5jZSBpdCdzIGFsd2F5cyBzYWZlIHRvIHN3ZWVwIFN0cnVjdHVyZXMgbm93LgorICAg
ICAgICAoSlNDOjpIZWFwOjphbGxvY2F0b3JGb3JPYmplY3RXaXRoTm9ybWFsRGVzdHJ1Y3Rvcik6
IAorICAgICAgICAoSlNDOjpIZWFwOjphbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0YWxTdHJ1
Y3R1cmVEZXN0cnVjdG9yKToKKyAgICAgICAgKEhlYXApOgorICAgICAgICAoSlNDOjpIZWFwOjph
bGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChK
U0M6OkhlYXA6OmFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3Rvcik6CisgICAg
ICAgICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwOiBSZW1vdmUgYWxsIHRoZSBsb2dpYyB0
byBkZXRlY3Qgd2hlbiBpdCdzIHNhZmUgdG8gc3dlZXAgU3RydWN0dXJlcyBmcm9tIHRoZSAKKyAg
ICAgICAgSW5jcmVtZW50YWxTd2VlcGVyIHNpbmNlIGl0J3MgYWx3YXlzIHNhZmUgdG8gc3dlZXAg
U3RydWN0dXJlcyBub3cuCisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVt
ZW50YWxTd2VlcGVyKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5l
eHRCbG9jayk6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGlu
Zyk6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6d2lsbEZpbmlzaFN3ZWVwaW5n
KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaDoK
KyAgICAgICAgKEluY3JlbWVudGFsU3dlZXBlcik6CisgICAgICAgICogaGVhcC9NYXJrZWRBbGxv
Y2F0b3IuY3BwOiBSZW1vdmUgdGhlIGxvZ2ljIHRoYXQgd2FzIHByZXZlbnRpbmcgdXMgZnJvbSBz
d2VlcGluZyBTdHJ1Y3R1cmVzIGlmIGl0IHdhc24ndCBzYWZlLiBBZGQgCisgICAgICAgIHRyYWNr
aW5nIG9mIHRoZSBzcGVjaWZpYyBkZXN0cnVjdG9yIHR5cGUgb2YgYWxsb2NhdG9yLiAKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUhlbHBlcik6CisgICAgICAgIChK
U0M6Ok1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVCbG9jayk6CisgICAgICAgICogaGVhcC9NYXJr
ZWRBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpkZXN0cnVjdG9y
VHlwZSk6CisgICAgICAgIChNYXJrZWRBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6aW5pdCk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6IEFkZCBhbGwgdGhlIGRl
c3RydWN0b3IgdHlwZSBzdHVmZiB0byBNYXJrZWRCbG9ja3Mgc28gdGhhdCB3ZSBkbyB0aGUgcmln
aHQgdGhpbmcgd2hlbiBzd2VlcGluZy4gCisgICAgICAgIFdlIGFsc28gdXNlIHRoZSBzdG9yZWQg
ZGVzdHJ1Y3RvciB0eXBlIHRvIGRldGVybWluZSB0aGUgcmlnaHQgdGhpbmcgdG8gZG8gaW4gYWxs
IEpTQ2VsbDo6Y2xhc3NJbmZvKCkgY2FsbHMuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6TWFya2VkQmxvY2spOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnNwZWNpYWxpemVkU3dlZXApOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3dlZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6c3dlZXBIZWxwZXIpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphbGxvY2F0b3IpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6ZGVzdHJ1Y3RvclR5cGUpOgorICAgICAgICAqIGhlYXAvTWFy
a2VkU3BhY2UuY3BwOiBBZGQgdGhlIG5ldyBkZXN0cnVjdG9yIGFsbG9jYXRvcnMgdG8gTWFya2Vk
U3BhY2UuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpNYXJrZWRTcGFjZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6Y2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSk6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjppc1BhZ2VkT3V0KToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZyZWVC
bG9jayk6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoTWFya2VkU3Bh
Y2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6aW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVj
dG9yQWxsb2NhdG9yRm9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Om5vcm1hbERlc3Ry
dWN0b3JBbGxvY2F0b3JGb3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YWxsb2NhdGVX
aXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3Bh
Y2U6OmFsbG9jYXRlV2l0aE5vcm1hbERlc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRT
cGFjZTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmNwcDogQWRk
IGluY2x1ZGUgYmVjYXVzZSB0aGUgc3ltYm9sIHdhcyBuZWVkZWQgaW4gYW4gaW5saW5lZCBmdW5j
dGlvbi4KKyAgICAgICAgKiBqaXQvSklULmg6IE1ha2Ugc3VyZSB3ZSB1c2UgdGhlIGNvcnJlY3Qg
YWxsb2NhdG9yIHdoZW4gZG9pbmcgaW5saW5lIGFsbG9jYXRpb25zIGluIHRoZSBiYXNlbGluZSBK
SVQuCisgICAgICAgICogaml0L0pJVElubGluZU1ldGhvZHMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QWxs
b2NhdGVKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QWxsb2NhdGVKU0Fy
cmF5KToKKyAgICAgICAgKiBqc2MuY3BwOiAKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6Y3JlYXRl
KTogQWRkIGZpbmFsaXplciBoZXJlIHNpbmNlIEpTR2xvYmFsT2JqZWN0IG5lZWRzIHRvIHVzZSBh
IGZpbmFsaXplciBpbnN0ZWFkIG9mIGluaGVyaXRpbmcgZnJvbSAKKyAgICAgICAgSlNEZXN0cnVj
dGlibGVPYmplY3QuCisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOiBJbmhlcml0IGZy
b20gSlNEZXN0cnVjdGlibGVPYmplY3QuCisgICAgICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRp
bWUvQXJndW1lbnRzLmg6CisgICAgICAgIChBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpBcmd1
bWVudHM6OkFyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6
IEFkZGVkIGFuIGFzc2VydCB0byBtYWtlIHN1cmUgd2UgaGF2ZSBhIHRyaXZpYWwgZGVzdHJ1Y3Rv
ci4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6IEluZGlj
YXRlIHRoYXQgYWxsIG9mIHRoZSBFeGVjdXRhYmxlKiBjbGFzc2VzIGhhdmUgaW1tb3J0YWwgU3Ry
dWN0dXJlcy4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmNwcDogSW5oZXJpdCBmcm9tIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgIChJbnRlcm5hbEZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOiBBZGRlZCB0aGUgTkVFRFNfREVT
VFJVQ1RPUiAgbWFjcm8gdG8gbWFrZSBpdCBlYXNpZXIgZm9yIGNsYXNzZXMgdG8gaW5kaWNhdGUg
dGhhdCBpbnN0ZWFkIG9mIGJlaW5nIAorICAgICAgICBhbGxvY2F0ZWQgaW4gYSBkZXN0cnVjdG9y
IE1hcmtlZEFsbG9jYXRvciB0aGF0IHRoZXkgd2lsbCBoYW5kbGUgdGhlaXIgZGVzdHJ1Y3Rpb24g
dGhlbXNlbHZlcyB0aHJvdWdoIHRoZSAKKyAgICAgICAgdXNlIG9mIGEgZmluYWxpemVyLgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEhhc0ltbW9ydGFsU3RydWN0dXJlKTogTmV3IHRlbXBsYXRl
IHRvIGhlbHAgdXMgZGV0ZXJtaW5lIGF0IGNvbXBpbGUtdGltZSBpZiBhIHBhcnRpY3VsYXIgY2xh
c3MgCisgICAgICAgIHNob3VsZCBiZSBhbGxvY2F0ZWQgaW4gdGhlIGltbW9ydGFsIHN0cnVjdHVy
ZSBNYXJrZWRBbGxvY2F0b3IuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGZhbHNlLiBJbiBvcmRlciAK
KyAgICAgICAgdG8gYmUgYWxsb2NhdGVkIGluIHRoZSBpbW1vcnRhbCBzdHJ1Y3R1cmUgYWxsb2Nh
dG9yLCBjbGFzc2VzIG11c3Qgc3BlY2lhbGl6ZSB0aGlzIHRlbXBsYXRlLiBBbHNvIGFkZGVkIAor
ICAgICAgICBhIG1hY3JvIHRvIG1ha2UgaXQgZWFzaWVyIGZvciBjbGFzc2VzIHRvIHNwZWNpYWxp
emUgdGhlIHRlbXBsYXRlLgorICAgICAgICAoSlNDOjphbGxvY2F0ZUNlbGwpOiBVc2UgdGhlIGFw
cHJvcHJpYXRlIGFsbG9jYXRvciBkZXBlbmRpbmcgb24gdGhlIGRlc3RydWN0b3IgdHlwZS4KKyAg
ICAgICAgKiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmg6IEFkZGVkLiBOZXcgY2xhc3Mg
dGhhdCBzdG9yZXMgdGhlIENsYXNzSW5mbyBvZiBhbnkgc3ViY2xhc3Mgc28gdGhhdCBpdCBjYW4g
YmUgCisgICAgICAgIGFjY2Vzc2VkIHNhZmVseSB3aGVuIHRoZSBvYmplY3QgaXMgYmVpbmcgZGVz
dHJveWVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KToK
KyAgICAgICAgKEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mbyk6CisgICAgICAg
IChKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0OjpKU0Rlc3RydWN0aWJsZU9iamVjdCk6CisgICAg
ICAgIChKU0M6OkpTQ2VsbDo6Y2xhc3NJbmZvKTogQ2hlY2tzIHRoZSBjdXJyZW50IE1hcmtlZEJs
b2NrIHRvIHNlZSB3aGVyZSBpdCBzaG91bGQgZ2V0IHRoZSBDbGFzc0luZm8gZnJvbSBzbyB0aGF0
IGl0J3MgYWx3YXlzIHNhZmUuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6
IEpTR2xvYmFsT2JqZWN0IG5vdyB1c2VzIGEgZmluYWxpemVyIGluc3RlYWQgb2YgYSBkZXN0cnVj
dG9yIHNvIHRoYXQgaXQgY2FuIGF2b2lkIGZvcmNpbmcgYWxsIAorICAgICAgICBvZiBpdHMgcmVs
YXRpdmVzIGluIHRoZSBpbmhlcml0YW5jZSBoaWVyYXJjaHkgKGUuZy4gSlNTY29wZSkgdG8gdXNl
IGRlc3RydWN0b3JzIGFzIHdlbGwuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXNl
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNHbG9i
YWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJ
Zk5lZWRlZCk6IFNpbmNlIHdlIGFsd2F5cyBjcmVhdGUgYSBmaW5hbGl6ZXIgbm93LCB3ZSBkb24n
dCBoYXZlIHRvIHdvcnJ5IGFib3V0IGFkZGluZyBvbmUgCisgICAgICAgIGZvciB0aGUgbV9yYXJl
RGF0YSBmaWVsZCB3aGVuIGl0J3MgY3JlYXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxU
aGlzLmg6IEluaGVyaXQgZnJvbSBKU0Rlc3RydWN0aWJsZU9iamVjdC4KKyAgICAgICAgKEpTR2xv
YmFsVGhpcyk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsVGhpczo6SlNHbG9iYWxUaGlzKToKKyAg
ICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDogSGFzIGFuIGltbW9ydGFs
IFN0cnVjdHVyZS4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNw
cDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOiBIYXMgYW4g
aW1tb3J0YWwgU3RydWN0dXJlLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pT
V3JhcHBlck9iamVjdC5oOiBJbmhlcml0IGZyb20gSlNEZXN0cnVjdGlibGVPYmplY3QuCisgICAg
ICAgIChKU1dyYXBwZXJPYmplY3QpOgorICAgICAgICAoSlNDOjpKU1dyYXBwZXJPYmplY3Q6OkpT
V3JhcHBlck9iamVjdCk6CisgICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0LmNwcDogQ2xlYW5p
bmcgdXAgc29tZSBvZiB0aGUgaW5oZXJpdGFuY2Ugc3R1ZmYuCisgICAgICAgIChKU0MpOgorICAg
ICAgICAqIHJ1bnRpbWUvTmFtZUluc3RhbmNlLmg6IEluaGVyaXQgZnJvbSBKU0Rlc3RydWN0aWJs
ZU9iamVjdC4KKyAgICAgICAgKE5hbWVJbnN0YW5jZSk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHAuaDogSGFzIGltbW9ydGFsIFN0cnVjdHVyZS4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICog
cnVudGltZS9SZWdFeHBPYmplY3QuY3BwOiBJbmhlcml0YW5jZSBjbGVhbnVwLgorICAgICAgICAo
SlNDKToKKyAgICAgICAgKiBydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaDogSGFzIGltbW9y
dGFsIFN0cnVjdHVyZS4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuaDogSGFzIGltbW9ydGFsIFN0cnVjdHVyZS4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oOiBEaXR0by4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
ICogcnVudGltZS9TeW1ib2xUYWJsZS5oOiBEaXR0by4KKyAgICAgICAgKFNoYXJlZFN5bWJvbFRh
YmxlKToKKyAgICAgICAgKEpTQyk6CisKIDIwMTItMDktMTYgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBKU09iamVjdC5jcHAgYW5kIEpTQXJyYXkuY3BwIGhhdmUg
aW5jb25zaXN0ZW50IHRlc3RzIGZvciB0aGUgaW52YWxpZCBhcnJheSBpbmRleCBjYXNlCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTI4
NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtp
bmcgY29weSkKQEAgLTUzMyw2ICs1MzMsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0ZU1hdGguaCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9u
LmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0pTQ1R5cGVkQXJyYXlTdHVicy5o
CShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJh
eVN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgSlNDVHlw
ZWRBcnJheVN0dWJzX2gKICNkZWZpbmUgSlNDVHlwZWRBcnJheVN0dWJzX2gKIAotI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKICNpbmNsdWRl
ICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+CiAjaW5j
bHVkZSA8d3RmL0Zsb2F0NjRBcnJheS5oPgpAQCAtNDIsOSArNDIsOSBAQAogbmFtZXNwYWNlIEpT
QyB7CiAgICAgCiAjZGVmaW5lIFRZUEVEX0FSUkFZKG5hbWUsIHR5cGUpIFwKLWNsYXNzIEpTIyNu
YW1lIyNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsgXAorY2xhc3MgSlMjI25hbWUj
I0FycmF5IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsgXAogcHVibGljOiBcCi0gICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7IFwKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0IEJhc2U7IFwKICAgICBzdGF0aWMgSlMjI25hbWUjI0FycmF5KiBjcmVhdGUoSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFz
c1JlZlB0cjxuYW1lIyNBcnJheT4gaW1wbCkgXAogICAgIHsgXAogICAgICAgICBKUyMjbmFtZSMj
QXJyYXkqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlMjI25hbWUjI0Fy
cmF5PihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlMjI25hbWUjI0FycmF5KHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJ
KHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzYsNiArMTc2LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgR2xv
YmFsT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmpl
Y3Q+KGdsb2JhbERhdGEuaGVhcCkpIEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUp
OwogICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGFyZ3VtZW50cyk7
CisgICAgICAgIGdsb2JhbERhdGEuaGVhcC5hZGRGaW5hbGl6ZXIob2JqZWN0LCBkZXN0cm95KTsK
ICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CiAKQEAgLTI0Myw2ICsyNDQsMTIgQEAgcHJv
dGVjdGVkOgogICAgICAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgaWRlbnRpZmllciwgSlNGdW5j
dGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLnN0
cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGZ1bmN0aW9uKSk7CiAgICAgfQogfTsKKwor
CituYW1lc3BhY2UgSlNDIHsKK05FRURTX0RFU1RSVUNUT1IoR2xvYmFsT2JqZWN0LCBmYWxzZSk7
Cit9OworCiBDT01QSUxFX0FTU0VSVCghSXNJbnRlZ2VyPEdsb2JhbE9iamVjdD46OnZhbHVlLCBX
VEZfSXNJbnRlZ2VyX0dsb2JhbE9iamVjdF9mYWxzZSk7CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKEdsb2JhbE9iamVjdCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVn
RXhwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5j
cHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw5IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBHbG9iYWxPYmplY3QqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJndW1lbnRzKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdsb2JhbE9iamVjdD4o
Z2xvYmFsRGF0YS5oZWFwKSkgR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgYXJn
dW1lbnRzKTsKKyAgICAgICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEdsb2JhbE9i
amVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGFyZ3VtZW50cyk7CisgICAgICAgIGdsb2JhbERh
dGEuaGVhcC5hZGRGaW5hbGl6ZXIoZ2xvYmFsT2JqZWN0LCBkZXN0cm95KTsKKyAgICAgICAgcmV0
dXJuIGdsb2JhbE9iamVjdDsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNf
aW5mbzsKQEAgLTEzMyw2ICsxMzUsMTAgQEAgcHJvdGVjdGVkOgogICAgIH0KIH07CiAKK25hbWVz
cGFjZSBKU0MgeworTkVFRFNfREVTVFJVQ1RPUihHbG9iYWxPYmplY3QsIGZhbHNlKTsKK30KKwog
Q09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9iYWxPYmplY3Q+Ojp2YWx1ZSwgV1RGX0lzSW50
ZWdlcl9HbG9iYWxPYmplY3RfZmFsc2UpOwogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChHbG9i
YWxPYmplY3QpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tD
b25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDEwICszNiwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY29uc3QgQ2xhc3NJbmZv
IEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiQ2FsbGJhY2tDb25zdHJ1Y3RvciIs
ICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlND
YWxsYmFja0NvbnN0cnVjdG9yKSB9OworY29uc3QgQ2xhc3NJbmZvIEpTQ2FsbGJhY2tDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiQ2FsbGJhY2tDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNDYWxsYmFja0NvbnN0cnVjdG9yKSB9OwogCiBKU0Nh
bGxiYWNrQ29uc3RydWN0b3I6OkpTQ2FsbGJhY2tDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDbGFzc1JlZiBqc0NsYXNzLCBK
U09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY2FsbGJhY2spCi0gICAgOiBKU05vbkZp
bmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCisgICAgOiBK
U0Rlc3RydWN0aWJsZU9iamVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJl
KQogICAgICwgbV9jbGFzcyhqc0NsYXNzKQogICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3Ry
dWN0b3IuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTMgKzI3LDEzIEBA
CiAjZGVmaW5lIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcl9oCiAKICNpbmNsdWRlICJKU09iamVjdFJl
Zi5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KKyNpbmNsdWRlICJydW50aW1lL0pT
RGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBKU0NhbGxi
YWNrQ29uc3RydWN0b3IgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitjbGFzcyBKU0NhbGxi
YWNrQ29uc3RydWN0b3IgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgot
ICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHR5cGVkZWYgSlNEZXN0cnVj
dGlibGVPYmplY3QgQmFzZTsKIAogICAgIHN0YXRpYyBKU0NhbGxiYWNrQ29uc3RydWN0b3IqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0NsYXNzUmVmIGNsYXNzUmVmLCBKU09iamVjdENhbGxBc0NvbnN0
cnVjdG9yQ2FsbGJhY2sgY2FsbGJhY2spIAogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsMTUgKzMyLDI0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1BU1NFUlRfQ0xB
U1NfRklUU19JTl9DRUxMKEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4pOworQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0Pik7CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9i
YWxPYmplY3Q+KTsKIAogLy8gRGVmaW5lIHRoZSB0d28gdHlwZXMgb2YgSlNDYWxsYmFja09iamVj
dHMgd2Ugc3VwcG9ydC4KLXRlbXBsYXRlIDw+IGNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrT2Jq
ZWN0PEpTTm9uRmluYWxPYmplY3Q+OjpzX2luZm8gPSB7ICJDYWxsYmFja09iamVjdCIsICZKU05v
bkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNDYWxsYmFj
a09iamVjdCkgfTsKLXRlbXBsYXRlIDw+IGNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrT2JqZWN0
PEpTR2xvYmFsT2JqZWN0Pjo6c19pbmZvID0geyAiQ2FsbGJhY2tHbG9iYWxPYmplY3QiLCAmSlNH
bG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0NhbGxiYWNr
T2JqZWN0KSB9OwordGVtcGxhdGUgPD4gY29uc3QgQ2xhc3NJbmZvIEpTQ2FsbGJhY2tPYmplY3Q8
SlNEZXN0cnVjdGlibGVPYmplY3Q+OjpzX2luZm8gPSB7ICJDYWxsYmFja09iamVjdCIsICZCYXNl
OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNDYWxsYmFja09iamVjdCkgfTsK
K3RlbXBsYXRlIDw+IGNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2Jq
ZWN0Pjo6c19pbmZvID0geyAiQ2FsbGJhY2tHbG9iYWxPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAw
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ2FsbGJhY2tPYmplY3QpIH07CisKK3RlbXBsYXRl
PD4KK0pTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+KiBKU0NhbGxiYWNrT2JqZWN0PEpT
R2xvYmFsT2JqZWN0Pjo6Y3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDbGFzc1Jl
ZiBjbGFzc1JlZiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSlNDYWxsYmFja09iamVj
dDxKU0dsb2JhbE9iamVjdD4qIGNhbGxiYWNrT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4gPihnbG9iYWxEYXRhLmhlYXAp
KSBKU0NhbGxiYWNrT2JqZWN0KGdsb2JhbERhdGEsIGNsYXNzUmVmLCBzdHJ1Y3R1cmUpOworICAg
IGNhbGxiYWNrT2JqZWN0LT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKKyAgICBnbG9iYWxE
YXRhLmhlYXAuYWRkRmluYWxpemVyKGNhbGxiYWNrT2JqZWN0LCBkZXN0cm95KTsKKyAgICByZXR1
cm4gY2FsbGJhY2tPYmplY3Q7Cit9CiAKIHRlbXBsYXRlIDw+Ci1TdHJ1Y3R1cmUqIEpTQ2FsbGJh
Y2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8p
CitTdHJ1Y3R1cmUqIEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+OjpjcmVh
dGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQogeyAKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsgCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzMywxMyArMTMzLDcgQEAgcHVibGljOgogICAgICAgICBjYWxsYmFja09iamVjdC0+ZmluaXNo
Q3JlYXRpb24oZXhlYyk7CiAgICAgICAgIHJldHVybiBjYWxsYmFja09iamVjdDsKICAgICB9Ci0g
ICAgc3RhdGljIEpTQ2FsbGJhY2tPYmplY3QqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTQ2xhc3NSZWYgY2xhc3NSZWYsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAg
ICAgICAgSlNDYWxsYmFja09iamVjdCogY2FsbGJhY2tPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU0NhbGxiYWNrT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBKU0NhbGxiYWNr
T2JqZWN0KGdsb2JhbERhdGEsIGNsYXNzUmVmLCBzdHJ1Y3R1cmUpOwotICAgICAgICBjYWxsYmFj
a09iamVjdC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7Ci0gICAgICAgIHJldHVybiBjYWxs
YmFja09iamVjdDsKLSAgICB9Ci0KKyAgICBzdGF0aWMgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiwgSlNDbGFzc1JlZiwgU3RydWN0dXJlKik7CiAgICAgdm9p
ZCBzZXRQcml2YXRlKHZvaWQqIGRhdGEpOwogICAgIHZvaWQqIGdldFByaXZhdGUoKTsKIApAQCAt
MjE3LDYgKzIxMSw4IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEpTQ2FsbGJhY2tPYmplY3REYXRh
PiBtX2NhbGxiYWNrT2JqZWN0RGF0YTsKIH07CiAKK05FRURTX0RFU1RSVUNUT1IoSlNDYWxsYmFj
a09iamVjdDxKU0dsb2JhbE9iamVjdD4sIGZhbHNlKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
IC8vIGluY2x1ZGUgdGhlIGFjdHVhbCB0ZW1wbGF0ZSBjbGFzcyBpbXBsZW1lbnRhdGlvbgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCShyZXZpc2lvbiAxMjg3
MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTksNyArMTk5LDcgQEAgSlNPYmplY3QqIE9wYXF1ZUpTQ2xhc3M6OnByb3Rv
dHlwZShFeGVjUwogICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogCiAgICAgLy8gUmVjdXJzaXZl
LCBidXQgc2hvdWxkIGJlIGdvb2QgZW5vdWdoIGZvciBvdXIgcHVycG9zZXMKLSAgICBKU09iamVj
dCogcHJvdG90eXBlID0gSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pjo6Y3JlYXRl
KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5jYWxsYmFja09iamVjdFN0cnVjdHVyZSgpLCBwcm90b3R5cGVDbGFzcywgJmpzQ2xh
c3NEYXRhKTsgLy8gc2V0IGpzQ2xhc3NEYXRhIGFzIHRoZSBvYmplY3QncyBwcml2YXRlIGRhdGEs
IHNvIGl0IGNhbiBjbGVhciBvdXIgcmVmZXJlbmNlIG9uIGRlc3RydWN0aW9uCisgICAgSlNPYmpl
Y3QqIHByb3RvdHlwZSA9IEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Ojpj
cmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPmNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCksIHByb3RvdHlwZUNsYXNzLCAm
anNDbGFzc0RhdGEpOyAvLyBzZXQganNDbGFzc0RhdGEgYXMgdGhlIG9iamVjdCdzIHByaXZhdGUg
ZGF0YSwgc28gaXQgY2FuIGNsZWFyIG91ciByZWZlcmVuY2Ugb24gZGVzdHJ1Y3Rpb24KICAgICBp
ZiAocGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKEpTT2JqZWN0KiBwYXJlbnRQcm90b3R5cGUg
PSBwYXJlbnRDbGFzcy0+cHJvdG90eXBlKGV4ZWMpKQogICAgICAgICAgICAgcHJvdG90eXBlLT5z
ZXRQcm90b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwYXJlbnRQcm90b3R5cGUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHJldmlzaW9uIDEyODcx
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZShKU0NvbnRl
eHRSZWYgY3QKICAgICBpZiAoIWpzQ2xhc3MpCiAgICAgICAgIHJldHVybiB0b1JlZihjb25zdHJ1
Y3RFbXB0eU9iamVjdChleGVjKSk7CiAKLSAgICBKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxP
YmplY3Q+KiBvYmplY3QgPSBKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+OjpjcmVh
dGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPmNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCksIGpzQ2xhc3MsIGRhdGEpOworICAg
IEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+KiBvYmplY3QgPSBKU0NhbGxi
YWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jYWxsYmFja09i
amVjdFN0cnVjdHVyZSgpLCBqc0NsYXNzLCBkYXRhKTsKICAgICBpZiAoSlNPYmplY3QqIHByb3Rv
dHlwZSA9IGpzQ2xhc3MtPnByb3RvdHlwZShleGVjKSkKICAgICAgICAgb2JqZWN0LT5zZXRQcm90
b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm90b3R5cGUpOwogCkBAIC0zNDEsOCArMzQxLDgg
QEAgdm9pZCogSlNPYmplY3RHZXRQcml2YXRlKEpTT2JqZWN0UmVmIG9iagogICAgIAogICAgIGlm
IChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Ojpz
X2luZm8pKQogICAgICAgICByZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxP
YmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2YXRlKCk7Ci0gICAgaWYgKGpzT2JqZWN0LT5pbmhl
cml0cygmSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pjo6c19pbmZvKSkKLSAgICAg
ICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+Kj4oanNP
YmplY3QpLT5nZXRQcml2YXRlKCk7CisgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxs
YmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OnNfaW5mbykpCisgICAgICAgIHJldHVy
biBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qPihqc09iamVj
dCktPmdldFByaXZhdGUoKTsKICAgICAKICAgICByZXR1cm4gMDsKIH0KQEAgLTM1NSw4ICszNTUs
OCBAQCBib29sIEpTT2JqZWN0U2V0UHJpdmF0ZShKU09iamVjdFJlZiBvYmplCiAgICAgICAgIGpz
Q2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJp
dmF0ZShkYXRhKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGlmIChqc09iamVj
dC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD46OnNfaW5mbykp
IHsKLSAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4qPihq
c09iamVjdCktPnNldFByaXZhdGUoZGF0YSk7CisgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygm
SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OnNfaW5mbykpIHsKKyAgICAg
ICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmpl
Y3QpLT5zZXRQcml2YXRlKGRhdGEpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
ICAgIApAQCAtMzcyLDggKzM3Miw4IEBAIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcml2YXRlUHJv
cGVydHkoSlMKICAgICBJZGVudGlmaWVyIG5hbWUocHJvcGVydHlOYW1lLT5pZGVudGlmaWVyKCZl
eGVjLT5nbG9iYWxEYXRhKCkpKTsKICAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxi
YWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pjo6c19pbmZvKSkKICAgICAgICAgcmVzdWx0ID0ganND
YXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2
YXRlUHJvcGVydHkobmFtZSk7Ci0gICAgZWxzZSBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0Nh
bGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+OjpzX2luZm8pKQotICAgICAgICByZXN1bHQg
PSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+
Z2V0UHJpdmF0ZVByb3BlcnR5KG5hbWUpOworICAgIGVsc2UgaWYgKGpzT2JqZWN0LT5pbmhlcml0
cygmSlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OnNfaW5mbykpCisgICAg
ICAgIHJlc3VsdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZVByb3BlcnR5KG5hbWUpOwogICAgIHJldHVybiB0b1Jl
ZihleGVjLCByZXN1bHQpOwogfQogCkBAIC0zODgsOCArMzg4LDggQEAgYm9vbCBKU09iamVjdFNl
dFByaXZhdGVQcm9wZXJ0eShKU0NvbnRleAogICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVj
dDxKU0dsb2JhbE9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShleGVjLT5n
bG9iYWxEYXRhKCksIG5hbWUsIGpzVmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
Ci0gICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFs
T2JqZWN0Pjo6c19pbmZvKSkgewotICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU05v
bkZpbmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJpdmF0ZVByb3BlcnR5KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbmFtZSwganNWYWx1ZSk7CisgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlND
YWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OnNfaW5mbykpIHsKKyAgICAgICAg
anNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3Qp
LT5zZXRQcml2YXRlUHJvcGVydHkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lLCBqc1ZhbHVlKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTQwNSw4
ICs0MDUsOCBAQCBib29sIEpTT2JqZWN0RGVsZXRlUHJpdmF0ZVByb3BlcnR5KEpTQ29uCiAgICAg
ICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+
ZGVsZXRlUHJpdmF0ZVByb3BlcnR5KG5hbWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
Ci0gICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFs
T2JqZWN0Pjo6c19pbmZvKSkgewotICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU05v
bkZpbmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+ZGVsZXRlUHJpdmF0ZVByb3BlcnR5KG5hbWUpOwor
ICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGli
bGVPYmplY3Q+OjpzX2luZm8pKSB7CisgICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0KS0+ZGVsZXRlUHJpdmF0ZVByb3BlcnR5KG5h
bWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCShyZXZpc2lvbiAxMjg3
MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzEsOCArMTMxLDggQEAgYm9vbCBKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKEpT
Q29udGV4dFJlZgogICAgIGlmIChKU09iamVjdCogbyA9IGpzVmFsdWUuZ2V0T2JqZWN0KCkpIHsK
ICAgICAgICAgaWYgKG8tPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0
Pjo6c19pbmZvKSkKICAgICAgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxK
U0dsb2JhbE9iamVjdD4qPihvKS0+aW5oZXJpdHMoanNDbGFzcyk7Ci0gICAgICAgIGlmIChvLT5p
bmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pjo6c19pbmZvKSkKLSAg
ICAgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0
Pio+KG8pLT5pbmhlcml0cyhqc0NsYXNzKTsKKyAgICAgICAgaWYgKG8tPmluaGVyaXRzKCZKU0Nh
bGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkKKyAgICAgICAgICAg
IHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qPihv
KS0+aW5oZXJpdHMoanNDbGFzcyk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBS
ZWZQcml2YXRlLmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcs
NyArNTcsNyBAQCB2b2lkIEpTV2Vha09iamVjdE1hcFNldChKU0NvbnRleHRSZWYgY3R4CiAgICAg
SlNPYmplY3QqIG9iaiA9IHRvSlMob2JqZWN0KTsKICAgICBpZiAoIW9iaikKICAgICAgICAgcmV0
dXJuOwotICAgIEFTU0VSVChvYmotPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFs
T2JqZWN0Pjo6c19pbmZvKSB8fCBvYmotPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTTm9u
RmluYWxPYmplY3Q+OjpzX2luZm8pKTsKKyAgICBBU1NFUlQob2JqLT5pbmhlcml0cygmSlNDYWxs
YmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OnNfaW5mbykgfHwgb2JqLT5pbmhlcml0cygmSlND
YWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OnNfaW5mbykpOwogICAgIG1hcC0+
bWFwKCkuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwga2V5LCBvYmopOwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
agkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTg0Miw2ICs4NDIsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50
aW1lXEpTRnVuY3Rpb24uY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNzEwLDYgKzcxMCw3IEBACiAJCUMyNDAzMDU1MTRCNDA0RTYwMDc5RUI2NCAvKiBDb3Bp
ZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwICovOyB9OwogCQlD
MjVGOEJDRDE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUY4QkNCMTU3NTQ0QTkw
MDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovOyB9OwogCQlDMjVGOEJDRTE1NzU0
NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjVGOEJDQzE1NzU0NEE5MDAyNDVCNzEgLyogSW5j
cmVtZW50YWxTd2VlcGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQzJBN0Y2ODgxNjA0MzJENDAwRjc2Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkE3
RjY4NzE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMkI5MTZDMjE0REEwMTRF
MDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMkI5MTZDMTE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxs
b2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQzJCOTE2QzUxNERBMDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkI5MTZDNDE0REEwNDBD
MDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCAqLzsgfTsKIAkJQzJDOEQwMkQxNEEzQzZF
MDAwNTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lTWV0aG9kcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDOEQwMkIxNEEzQzZCMjAwNTc4RTY1IC8q
IENvcGllZFNwYWNlSW5saW5lTWV0aG9kcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xNDgzLDYgKzE0ODQsNyBAQAogCQlDMjQwMzA1MzE0QjQw
NEM5MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ29waWVkU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMjVGOEJDQjE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluY3JlbWVudGFsU3dlZXBlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAv
KiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5jcmVtZW50YWxTd2VlcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyQTdG
Njg3MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Rlc3RydWN0aWJsZU9iamVjdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMkI5MTZDMTE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxs
b2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZEFsbG9jYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkI5MTZDNDE0REEwNDBDMDBDQkFD
ODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1hcmtlZEFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyQzhEMDJCMTRBM0M2QjIwMDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZU1ldGhvZHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29waWVkU3BhY2VJbmxpbmVNZXRob2Rz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDQzLDYgKzIwNDUsNyBAQAogCQk3
RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzJBN0Y2ODcxNjA0MzJENDAwRjc2Qjk4IC8qIEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LmggKi8sCiAJCQkJMEYwQ0Q0QzMxNUY2QjZCNTAwMzJGMUMwIC8q
IFNwYXJzZUFycmF5VmFsdWVNYXAuY3BwICovLAogCQkJCTBGMENENEMwMTVGMUE2MDQwMDMyRjFD
MCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCAqLywKIAkJCQkwRkI3RjM4OTE1RUQ4RTM4MDBGMTY3
QjIgLyogQXJyYXlDb252ZW50aW9ucy5oICovLApAQCAtMjU2Myw2ICsyNTY2LDcgQEAKIAkJCQk4
NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyRUFEMkZDMTRGMDI0OTgwMEE0QjE1OSAvKiBDb3BpZWRBbGxvY2F0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyQTdGNjg4MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rl
c3RydWN0aWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUyMENFOUUxNUYwNEE5NTAw
REYzNDMwIC8qIExMSW50Q0xvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyMTEyMkUyMTVERDlB
QjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUMy
MTYwRkU3MTVGN0U5NUUwMDk0MkRGQyAvKiBTbG90VmlzaXRvcklubGluZU1ldGhvZHMuaCBpbiBI
ZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTg5LDEyICsyMTg5LDE0
IEBAIHB1YmxpYzoKICAgIAogICAgIC8vIEl0IGlzIE5PVCBva2F5IGZvciB0aGUgc3RydWN0dXJl
IGFuZCB0aGUgc2NyYXRjaCByZWdpc3RlciB0byBiZSB0aGUgc2FtZSB0aGluZyBiZWNhdXNlIGlm
IHRoZXkgYXJlIHRoZW4gdGhlIFN0cnVjdHVyZSB3aWxsIAogICAgIC8vIGdldCBjbG9iYmVyZWQu
IAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIGJvb2wgZGVzdHJ1Y3RvciwgdHlw
ZW5hbWUgU3RydWN0dXJlVHlwZT4gCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwg
TWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBlIGRlc3RydWN0b3JUeXBlLCB0eXBlbmFtZSBTdHJ1
Y3R1cmVUeXBlPiAKICAgICB2b2lkIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QoU3RydWN0dXJl
VHlwZSBzdHJ1Y3R1cmUsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNsb3dQYXRoKQogICAgIHsKICAgICAgICAgTWFya2VkQWxs
b2NhdG9yKiBhbGxvY2F0b3IgPSAwOwotICAgICAgICBpZiAoZGVzdHJ1Y3RvcikKLSAgICAgICAg
ICAgIGFsbG9jYXRvciA9ICZtX2ppdC5nbG9iYWxEYXRhKCktPmhlYXAuYWxsb2NhdG9yRm9yT2Jq
ZWN0V2l0aERlc3RydWN0b3Ioc2l6ZW9mKENsYXNzVHlwZSkpOworICAgICAgICBpZiAoZGVzdHJ1
Y3RvclR5cGUgPT0gTWFya2VkQmxvY2s6Ok5vcm1hbCkKKyAgICAgICAgICAgIGFsbG9jYXRvciA9
ICZtX2ppdC5nbG9iYWxEYXRhKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aE5vcm1hbERl
c3RydWN0b3Ioc2l6ZW9mKENsYXNzVHlwZSkpOworICAgICAgICBlbHNlIGlmIChkZXN0cnVjdG9y
VHlwZSA9PSBNYXJrZWRCbG9jazo6SW1tb3J0YWxTdHJ1Y3R1cmUpCisgICAgICAgICAgICBhbGxv
Y2F0b3IgPSAmbV9qaXQuZ2xvYmFsRGF0YSgpLT5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhJ
bW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3Ioc2l6ZW9mKENsYXNzVHlwZSkpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBhbGxvY2F0b3IgPSAmbV9qaXQuZ2xvYmFsRGF0YSgpLT5oZWFwLmFs
bG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKHNpemVvZihDbGFzc1R5cGUpKTsKIApA
QCAtMjIxNiw3ICsyMjE4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAg
ICAgdm9pZCBlbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KFQgc3RydWN0dXJlLCBHUFJSZWcgcmVz
dWx0R1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93
UGF0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0PEpT
RmluYWxPYmplY3QsIGZhbHNlPihzdHJ1Y3R1cmUsIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgc2xv
d1BhdGgpOworICAgICAgICByZXR1cm4gZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdDxKU0ZpbmFs
T2JqZWN0LCBNYXJrZWRCbG9jazo6Tm9uZT4oc3RydWN0dXJlLCByZXN1bHRHUFIsIHNjcmF0Y2hH
UFIsIHNsb3dQYXRoKTsKICAgICB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KSAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMwLDExICs4MzAs
NiBAQCB2b2lkIEhlYXA6OmFkZENvbXBpbGVkQ29kZShFeGVjdXRhYmxlQmFzCiAgICAgbV9jb21w
aWxlZENvZGUuYXBwZW5kKGV4ZWN1dGFibGUpOwogfQogCi1ib29sIEhlYXA6OmlzU2FmZVRvU3dl
ZXBTdHJ1Y3R1cmVzKCkKLXsKLSAgICByZXR1cm4gIW1fc3dlZXBlciB8fCBtX3N3ZWVwZXItPnN0
cnVjdHVyZXNDYW5CZVN3ZXB0KCk7Ci19Ci0KIHZvaWQgSGVhcDo6ZGlkU3RhcnRWTVNodXRkb3du
KCkKIHsKICAgICBtX2FjdGl2aXR5Q2FsbGJhY2stPmRpZFN0YXJ0Vk1TaHV0ZG93bigpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEy
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBNYXJrZWRBbGxvY2F0b3Im
IGZpcnN0QWxsb2NhdG9yV2l0aG91dERlc3RydWN0b3JzKCkgeyByZXR1cm4gbV9vYmplY3RTcGFj
ZS5maXJzdEFsbG9jYXRvcigpOyB9CiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9y
Rm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKSB7IHJldHVybiBtX29iamVj
dFNwYWNlLmFsbG9jYXRvckZvcihieXRlcyk7IH0KLSAgICAgICAgTWFya2VkQWxsb2NhdG9yJiBh
bGxvY2F0b3JGb3JPYmplY3RXaXRoRGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpIHsgcmV0dXJuIG1f
b2JqZWN0U3BhY2UuZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihieXRlcyk7IH0KKyAgICAgICAgTWFy
a2VkQWxsb2NhdG9yJiBhbGxvY2F0b3JGb3JPYmplY3RXaXRoTm9ybWFsRGVzdHJ1Y3RvcihzaXpl
X3QgYnl0ZXMpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uubm9ybWFsRGVzdHJ1Y3RvckFsbG9jYXRv
ckZvcihieXRlcyk7IH0KKyAgICAgICAgTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3JGb3JPYmpl
Y3RXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemVfdCBieXRlcykgeyByZXR1cm4g
bV9vYmplY3RTcGFjZS5pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3IoYnl0
ZXMpOyB9CiAgICAgICAgIENvcGllZEFsbG9jYXRvciYgc3RvcmFnZUFsbG9jYXRvcigpIHsgcmV0
dXJuIG1fc3RvcmFnZVNwYWNlLmFsbG9jYXRvcigpOyB9CiAgICAgICAgIENoZWNrZWRCb29sZWFu
IHRyeUFsbG9jYXRlU3RvcmFnZShzaXplX3QsIHZvaWQqKik7CiAgICAgICAgIENoZWNrZWRCb29s
ZWFuIHRyeVJlYWxsb2NhdGVTdG9yYWdlKHZvaWQqKiwgc2l6ZV90LCBzaXplX3QpOwpAQCAtMTY4
LDcgKzE2OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGRpZEFiYW5kb24oc2l6
ZV90KTsKIAogICAgICAgICBib29sIGlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsKLSAgICAg
ICAgYm9vbCBpc1NhZmVUb1N3ZWVwU3RydWN0dXJlcygpOwogICAgICAgICB2b2lkIGRpZFN0YXJ0
Vk1TaHV0ZG93bigpOwogCiAgICAgcHJpdmF0ZToKQEAgLTE4NCw5ICsxODQsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9j
YXRlQ2VsbChIZWFwJik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGZyaWVuZCB2b2lk
KiBhbGxvY2F0ZUNlbGwoSGVhcCYsIHNpemVfdCk7CiAKLSAgICAgICAgdm9pZCogYWxsb2NhdGVX
aXRoRGVzdHJ1Y3RvcihzaXplX3QpOwotICAgICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhvdXREZXN0
cnVjdG9yKHNpemVfdCk7Ci0gICAgICAgIHZvaWQqIGFsbG9jYXRlU3RydWN0dXJlKHNpemVfdCk7
CisgICAgICAgIHZvaWQqIGFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3Rvcihz
aXplX3QpOyAvLyBGb3IgdXNlIHdpdGggc3BlY2lhbCBvYmplY3RzIHdob3NlIFN0cnVjdHVyZXMg
bmV2ZXIgZGllLgorICAgICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKHNp
emVfdCk7IC8vIEZvciB1c2Ugd2l0aCBvYmplY3RzIHRoYXQgaW5oZXJpdCBkaXJlY3RseSBvciBp
bmRpcmVjdGx5IGZyb20gSlNEZXN0cnVjdGlibGVPYmplY3QuCisgICAgICAgIHZvaWQqIGFsbG9j
YXRlV2l0aG91dERlc3RydWN0b3Ioc2l6ZV90KTsgLy8gRm9yIHVzZSB3aXRoIG9iamVjdHMgd2l0
aG91dCBkZXN0cnVjdG9ycy4KIAogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1pbkV4dHJh
Q29zdCA9IDI1NjsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhFeHRyYUNvc3QgPSAx
MDI0ICogMTAyNDsKQEAgLTM2MSwxMCArMzYxLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICByZXR1cm4gZm9yRWFjaFByb3RlY3RlZENlbGwoZnVuY3Rvcik7CiAgICAgfQogCi0gICAgaW5s
aW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKQorICAg
IGlubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKHNpemVfdCBi
eXRlcykKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkQWxsb2NhdGlvbihieXRlcykpOwot
ICAgICAgICByZXR1cm4gbV9vYmplY3RTcGFjZS5hbGxvY2F0ZVdpdGhEZXN0cnVjdG9yKGJ5dGVz
KTsKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuYWxsb2NhdGVXaXRoTm9ybWFsRGVzdHJ1
Y3RvcihieXRlcyk7CisgICAgfQorICAgIAorICAgIGlubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0
ZVdpdGhJbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGlzVmFsaWRBbGxvY2F0aW9uKGJ5dGVzKSk7CisgICAgICAgIHJldHVybiBt
X29iamVjdFNwYWNlLmFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvcihieXRl
cyk7CiAgICAgfQogICAgIAogICAgIGlubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0ZVdpdGhvdXRE
ZXN0cnVjdG9yKHNpemVfdCBieXRlcykKQEAgLTM3MywxMSArMzc5LDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHJldHVybiBtX29iamVjdFNwYWNlLmFsbG9jYXRlV2l0aG91dERlc3RydWN0
b3IoYnl0ZXMpOwogICAgIH0KICAgIAotICAgIGlubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0ZVN0
cnVjdHVyZShzaXplX3QgYnl0ZXMpCi0gICAgewotICAgICAgICByZXR1cm4gbV9vYmplY3RTcGFj
ZS5hbGxvY2F0ZVN0cnVjdHVyZShieXRlcyk7Ci0gICAgfQotIAogICAgIGlubGluZSBDaGVja2Vk
Qm9vbGVhbiBIZWFwOjp0cnlBbGxvY2F0ZVN0b3JhZ2Uoc2l6ZV90IGJ5dGVzLCB2b2lkKiogb3V0
UHRyKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc3RvcmFnZVNwYWNlLnRyeUFsbG9jYXRlKGJ5
dGVzLCBvdXRQdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50
YWxTd2VlcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
bmNyZW1lbnRhbFN3ZWVwZXIuY3BwCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw3ICs0OCw2IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgc3dlZXBUaW1lTXVsdGlwbGllciAKIElu
Y3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqIGhlYXAsIENGUnVuTG9v
cFJlZiBydW5Mb29wKQogICAgIDogSGVhcFRpbWVyKGhlYXAtPmdsb2JhbERhdGEoKSwgcnVuTG9v
cCkKICAgICAsIG1fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4KDApCi0gICAgLCBtX3N0cnVjdHVy
ZXNDYW5CZVN3ZXB0KGZhbHNlKQogewogfQogCkBAIC03Miw3ICs3MSw2IEBAIHZvaWQgSW5jcmVt
ZW50YWxTd2VlcGVyOjpjYW5jZWxUaW1lcigpCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVu
dGFsU3dlZXBlcihIZWFwKiBoZWFwKQogICAgIDogSGVhcFRpbWVyKGhlYXAtPmdsb2JhbERhdGEo
KSkKICAgICAsIG1fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4KDApCi0gICAgLCBtX3N0cnVjdHVy
ZXNDYW5CZVN3ZXB0KGZhbHNlKQogewogfQogCkBAIC0xMTksMTAgKzExNyw2IEBAIHZvaWQgSW5j
cmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9jaygKIHsKICAgICB3aGlsZSAobV9jdXJyZW50
QmxvY2tUb1N3ZWVwSW5kZXggPCBtX2Jsb2Nrc1RvU3dlZXAuc2l6ZSgpKSB7CiAgICAgICAgIE1h
cmtlZEJsb2NrKiBibG9jayA9IG1fYmxvY2tzVG9Td2VlcFttX2N1cnJlbnRCbG9ja1RvU3dlZXBJ
bmRleCsrXTsKLSAgICAgICAgaWYgKGJsb2NrLT5vbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKCkpCi0g
ICAgICAgICAgICBtX3N0cnVjdHVyZXNDYW5CZVN3ZXB0ID0gdHJ1ZTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgQVNTRVJUKCFtX3N0cnVjdHVyZXNDYW5CZVN3ZXB0KTsKIAogICAgICAgICBp
ZiAoIWJsb2NrLT5uZWVkc1N3ZWVwaW5nKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEz
OSwxNCArMTMzLDEyIEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpzdGFydFN3ZWVwaW5nKGMK
ICAgICBDb3B5RnVuY3RvciBmdW5jdG9yKG1fYmxvY2tzVG9Td2VlcCk7CiAgICAgbV9nbG9iYWxE
YXRhLT5oZWFwLm9iamVjdFNwYWNlKCkuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogICAgIG1fY3Vy
cmVudEJsb2NrVG9Td2VlcEluZGV4ID0gMDsKLSAgICBtX3N0cnVjdHVyZXNDYW5CZVN3ZXB0ID0g
ZmFsc2U7CiAgICAgc2NoZWR1bGVUaW1lcigpOwogfQogCiB2b2lkIEluY3JlbWVudGFsU3dlZXBl
cjo6d2lsbEZpbmlzaFN3ZWVwaW5nKCkKIHsKICAgICBtX2N1cnJlbnRCbG9ja1RvU3dlZXBJbmRl
eCA9IDA7Ci0gICAgbV9zdHJ1Y3R1cmVzQ2FuQmVTd2VwdCA9IHRydWU7CiAgICAgbV9ibG9ja3NU
b1N3ZWVwLmNsZWFyKCk7CiAgICAgaWYgKG1fZ2xvYmFsRGF0YSkKICAgICAgICAgY2FuY2VsVGlt
ZXIoKTsKQEAgLTE1Niw3ICsxNDgsNiBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6d2lsbEZp
bmlzaFN3ZWVwCiAKIEluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSkKICAgICA6IEhlYXBUaW1lcihnbG9iYWxEYXRhKQotICAgICwg
bV9zdHJ1Y3R1cmVzQ2FuQmVTd2VwdChmYWxzZSkKIHsKIH0KIApAQCAtMTcxLDEyICsxNjIsMTAg
QEAgSW5jcmVtZW50YWxTd2VlcGVyKiBJbmNyZW1lbnRhbFN3ZWVwZXI6OgogCiB2b2lkIEluY3Jl
bWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGluZyhjb25zdCBIYXNoU2V0PE1hcmtlZEJsb2NrKj4m
KQogewotICAgIG1fc3RydWN0dXJlc0NhbkJlU3dlcHQgPSBmYWxzZTsKIH0KIAogdm9pZCBJbmNy
ZW1lbnRhbFN3ZWVwZXI6OndpbGxGaW5pc2hTd2VlcGluZygpCiB7Ci0gICAgbV9zdHJ1Y3R1cmVz
Q2FuQmVTd2VwdCA9IHRydWU7CiB9CiAKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5l
eHRCbG9jaygpCkBAIC0xODUsOSArMTc0LDQgQEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN3
ZWVwTmV4dEJsb2NrKAogCiAjZW5kaWYKIAotYm9vbCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN0cnVj
dHVyZXNDYW5CZVN3ZXB0KCkKLXsKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmVzQ2FuQmVTd2VwdDsK
LX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDcgKzU2LDYgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRTd2VlcGluZyhjb25zdCBI
YXNoU2V0PE1hcmtlZEJsb2NrKj4mIGJsb2NrU25hcHNob3QpOwogICAgIHZpcnR1YWwgdm9pZCBk
b1dvcmsoKTsKICAgICB2b2lkIHN3ZWVwTmV4dEJsb2NrKCk7Ci0gICAgYm9vbCBzdHJ1Y3R1cmVz
Q2FuQmVTd2VwdCgpOwogICAgIHZvaWQgd2lsbEZpbmlzaFN3ZWVwaW5nKCk7CiAKIHByaXZhdGU6
CkBAIC03OCw3ICs3Nyw2IEBAIHByaXZhdGU6CiAgICAgSW5jcmVtZW50YWxTd2VlcGVyKEpTR2xv
YmFsRGF0YSopOwogICAgIAogI2VuZGlmCi0gICAgYm9vbCBtX3N0cnVjdHVyZXNDYW5CZVN3ZXB0
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDE3ICszMCw2IEBAIGJvb2wgTWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0KGRvdWJs
ZSAKIGlubGluZSB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlSGVscGVyKHNpemVf
dCBieXRlcykKIHsKICAgICBpZiAoIW1fZnJlZUxpc3QuaGVhZCkgewotICAgICAgICBpZiAobV9v
bmx5Q29udGFpbnNTdHJ1Y3R1cmVzICYmICFtX2hlYXAtPmlzU2FmZVRvU3dlZXBTdHJ1Y3R1cmVz
KCkpIHsKLSAgICAgICAgICAgIGlmIChtX2N1cnJlbnRCbG9jaykgewotICAgICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrLT5kaWRDb25zdW1lRnJlZUxpc3QoKTsKLSAgICAgICAgICAgICAgICBt
X2N1cnJlbnRCbG9jayA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBXZSBzd2Vl
cCBhbm90aGVyIHJhbmRvbSBibG9jayBoZXJlIHNvIHRoYXQgd2UgY2FuIG1ha2UgcHJvZ3Jlc3MK
LSAgICAgICAgICAgIC8vIHRvd2FyZCBiZWluZyBhYmxlIHRvIHN3ZWVwIFN0cnVjdHVyZXMuCi0g
ICAgICAgICAgICBtX2hlYXAtPnN3ZWVwZXIoKS0+c3dlZXBOZXh0QmxvY2soKTsKLSAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICB9Ci0KICAgICAgICAgZm9yIChNYXJrZWRCbG9jayomIGJs
b2NrID0gbV9ibG9ja3NUb1N3ZWVwOyBibG9jazsgYmxvY2sgPSBibG9jay0+bmV4dCgpKSB7CiAg
ICAgICAgICAgICBNYXJrZWRCbG9jazo6RnJlZUxpc3QgZnJlZUxpc3QgPSBibG9jay0+c3dlZXAo
TWFya2VkQmxvY2s6OlN3ZWVwVG9GcmVlTGlzdCk7CiAgICAgICAgICAgICBpZiAoIWZyZWVMaXN0
LmhlYWQpIHsKQEAgLTEyNCwxMyArMTEzLDEzIEBAIE1hcmtlZEJsb2NrKiBNYXJrZWRBbGxvY2F0
b3I6OmFsbG9jYXRlQmwKIAogICAgIGlmIChibG9ja1NpemUgPT0gTWFya2VkQmxvY2s6OmJsb2Nr
U2l6ZSkgewogICAgICAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQgYWxsb2NhdGlvbiA9IG1faGVh
cC0+YmxvY2tBbGxvY2F0b3IoKS5hbGxvY2F0ZSgpOwotICAgICAgICByZXR1cm4gTWFya2VkQmxv
Y2s6OmNyZWF0ZShhbGxvY2F0aW9uLCBtX2hlYXAsIGNlbGxTaXplLCBtX2NlbGxzTmVlZERlc3Ry
dWN0aW9uLCBtX29ubHlDb250YWluc1N0cnVjdHVyZXMpOworICAgICAgICByZXR1cm4gTWFya2Vk
QmxvY2s6OmNyZWF0ZShhbGxvY2F0aW9uLCB0aGlzLCBjZWxsU2l6ZSwgbV9kZXN0cnVjdG9yVHlw
ZSk7CiAgICAgfQogCiAgICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkIGFsbG9jYXRpb24gPSBQYWdl
QWxsb2NhdGlvbkFsaWduZWQ6OmFsbG9jYXRlKGJsb2NrU2l6ZSwgTWFya2VkQmxvY2s6OmJsb2Nr
U2l6ZSwgT1NBbGxvY2F0b3I6OkpTR0NIZWFwUGFnZXMpOwogICAgIGlmICghc3RhdGljX2Nhc3Q8
Ym9vbD4oYWxsb2NhdGlvbikpCiAgICAgICAgIENSQVNIKCk7Ci0gICAgcmV0dXJuIE1hcmtlZEJs
b2NrOjpjcmVhdGUoYWxsb2NhdGlvbiwgbV9oZWFwLCBjZWxsU2l6ZSwgbV9jZWxsc05lZWREZXN0
cnVjdGlvbiwgbV9vbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKTsKKyAgICByZXR1cm4gTWFya2VkQmxv
Y2s6OmNyZWF0ZShhbGxvY2F0aW9uLCB0aGlzLCBjZWxsU2l6ZSwgbV9kZXN0cnVjdG9yVHlwZSk7
CiB9CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9yOjphZGRCbG9jayhNYXJrZWRCbG9jayogYmxvY2sp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAko
cmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxs
b2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVzZXQoKTsKICAgICB2b2lkIGNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKTsKICAg
ICBzaXplX3QgY2VsbFNpemUoKSB7IHJldHVybiBtX2NlbGxTaXplOyB9Ci0gICAgYm9vbCBjZWxs
c05lZWREZXN0cnVjdGlvbigpIHsgcmV0dXJuIG1fY2VsbHNOZWVkRGVzdHJ1Y3Rpb247IH0KLSAg
ICBib29sIG9ubHlDb250YWluc1N0cnVjdHVyZXMoKSB7IHJldHVybiBtX29ubHlDb250YWluc1N0
cnVjdHVyZXM7IH0KKyAgICBNYXJrZWRCbG9jazo6RGVzdHJ1Y3RvclR5cGUgZGVzdHJ1Y3RvclR5
cGUoKSB7IHJldHVybiBtX2Rlc3RydWN0b3JUeXBlOyB9CiAgICAgdm9pZCogYWxsb2NhdGUoc2l6
ZV90KTsKICAgICBIZWFwKiBoZWFwKCkgeyByZXR1cm4gbV9oZWFwOyB9CiAgICAgCkBAIC0zMiw3
ICszMSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGFkZEJsb2NrKE1hcmtlZEJsb2NrKik7
CiAgICAgdm9pZCByZW1vdmVCbG9jayhNYXJrZWRCbG9jayopOwotICAgIHZvaWQgaW5pdChIZWFw
KiwgTWFya2VkU3BhY2UqLCBzaXplX3QgY2VsbFNpemUsIGJvb2wgY2VsbHNOZWVkRGVzdHJ1Y3Rp
b24sIGJvb2wgb25seUNvbnRhaW5zU3RydWN0dXJlcyk7CisgICAgdm9pZCBpbml0KEhlYXAqLCBN
YXJrZWRTcGFjZSosIHNpemVfdCBjZWxsU2l6ZSwgTWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBl
KTsKIAogICAgIGJvb2wgaXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpOwogICAgCkBAIC00OSw4
ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgTWFya2VkQmxvY2sqIG1fYmxvY2tzVG9Td2VlcDsKICAg
ICBEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJsb2NrPiBtX2Jsb2NrTGlzdDsKICAgICBzaXplX3Qg
bV9jZWxsU2l6ZTsKLSAgICBib29sIG1fY2VsbHNOZWVkRGVzdHJ1Y3Rpb247Ci0gICAgYm9vbCBt
X29ubHlDb250YWluc1N0cnVjdHVyZXM7CisgICAgTWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBl
IG1fZGVzdHJ1Y3RvclR5cGU7CiAgICAgSGVhcCogbV9oZWFwOwogICAgIE1hcmtlZFNwYWNlKiBt
X21hcmtlZFNwYWNlOwogfTsKQEAgLTU5LDIwICs1NywxOCBAQCBpbmxpbmUgTWFya2VkQWxsb2Nh
dG9yOjpNYXJrZWRBbGxvY2F0b3IoCiAgICAgOiBtX2N1cnJlbnRCbG9jaygwKQogICAgICwgbV9i
bG9ja3NUb1N3ZWVwKDApCiAgICAgLCBtX2NlbGxTaXplKDApCi0gICAgLCBtX2NlbGxzTmVlZERl
c3RydWN0aW9uKHRydWUpCi0gICAgLCBtX29ubHlDb250YWluc1N0cnVjdHVyZXMoZmFsc2UpCisg
ICAgLCBtX2Rlc3RydWN0b3JUeXBlKE1hcmtlZEJsb2NrOjpOb25lKQogICAgICwgbV9oZWFwKDAp
CiAgICAgLCBtX21hcmtlZFNwYWNlKDApCiB7CiB9CiAKLWlubGluZSB2b2lkIE1hcmtlZEFsbG9j
YXRvcjo6aW5pdChIZWFwKiBoZWFwLCBNYXJrZWRTcGFjZSogbWFya2VkU3BhY2UsIHNpemVfdCBj
ZWxsU2l6ZSwgYm9vbCBjZWxsc05lZWREZXN0cnVjdGlvbiwgYm9vbCBvbmx5Q29udGFpbnNTdHJ1
Y3R1cmVzKQoraW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjppbml0KEhlYXAqIGhlYXAsIE1h
cmtlZFNwYWNlKiBtYXJrZWRTcGFjZSwgc2l6ZV90IGNlbGxTaXplLCBNYXJrZWRCbG9jazo6RGVz
dHJ1Y3RvclR5cGUgZGVzdHJ1Y3RvclR5cGUpCiB7CiAgICAgbV9oZWFwID0gaGVhcDsKICAgICBt
X21hcmtlZFNwYWNlID0gbWFya2VkU3BhY2U7CiAgICAgbV9jZWxsU2l6ZSA9IGNlbGxTaXplOwot
ICAgIG1fY2VsbHNOZWVkRGVzdHJ1Y3Rpb24gPSBjZWxsc05lZWREZXN0cnVjdGlvbjsKLSAgICBt
X29ubHlDb250YWluc1N0cnVjdHVyZXMgPSBvbmx5Q29udGFpbnNTdHJ1Y3R1cmVzOworICAgIG1f
ZGVzdHJ1Y3RvclR5cGUgPSBkZXN0cnVjdG9yVHlwZTsKIH0KIAogaW5saW5lIHZvaWQqIE1hcmtl
ZEFsbG9jYXRvcjo6YWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwyNiArMjgsMjYgQEAKIAogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgogI2luY2x1
ZGUgIkpTQ2VsbC5oIgotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNEZXN0cnVj
dGlibGVPYmplY3QuaCIKIAogCiBuYW1lc3BhY2UgSlNDIHsKIAotTWFya2VkQmxvY2sqIE1hcmtl
ZEJsb2NrOjpjcmVhdGUoY29uc3QgUGFnZUFsbG9jYXRpb25BbGlnbmVkJiBhbGxvY2F0aW9uLCBI
ZWFwKiBoZWFwLCBzaXplX3QgY2VsbFNpemUsIGJvb2wgY2VsbHNOZWVkRGVzdHJ1Y3Rpb24sIGJv
b2wgb25seUNvbnRhaW5zU3RydWN0dXJlcykKK01hcmtlZEJsb2NrKiBNYXJrZWRCbG9jazo6Y3Jl
YXRlKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYgYWxsb2NhdGlvbiwgTWFya2VkQWxsb2Nh
dG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjZWxsU2l6ZSwgRGVzdHJ1Y3RvclR5cGUgZGVzdHJ1Y3Rv
clR5cGUpCiB7Ci0gICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgYWxsb2NhdGlvbi5iYXNlKCkpIE1h
cmtlZEJsb2NrKGFsbG9jYXRpb24sIGhlYXAsIGNlbGxTaXplLCBjZWxsc05lZWREZXN0cnVjdGlv
biwgb25seUNvbnRhaW5zU3RydWN0dXJlcyk7CisgICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgYWxs
b2NhdGlvbi5iYXNlKCkpIE1hcmtlZEJsb2NrKGFsbG9jYXRpb24sIGFsbG9jYXRvciwgY2VsbFNp
emUsIGRlc3RydWN0b3JUeXBlKTsKIH0KIAotTWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKGNvbnN0
IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYgYWxsb2NhdGlvbiwgSGVhcCogaGVhcCwgc2l6ZV90IGNl
bGxTaXplLCBib29sIGNlbGxzTmVlZERlc3RydWN0aW9uLCBib29sIG9ubHlDb250YWluc1N0cnVj
dHVyZXMpCitNYXJrZWRCbG9jazo6TWFya2VkQmxvY2soY29uc3QgUGFnZUFsbG9jYXRpb25BbGln
bmVkJiBhbGxvY2F0aW9uLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNlbGxT
aXplLCBEZXN0cnVjdG9yVHlwZSBkZXN0cnVjdG9yVHlwZSkKICAgICA6IEhlYXBCbG9jazxNYXJr
ZWRCbG9jaz4oYWxsb2NhdGlvbikKICAgICAsIG1fYXRvbXNQZXJDZWxsKChjZWxsU2l6ZSArIGF0
b21TaXplIC0gMSkgLyBhdG9tU2l6ZSkKICAgICAsIG1fZW5kQXRvbShhdG9tc1BlckJsb2NrIC0g
bV9hdG9tc1BlckNlbGwgKyAxKQotICAgICwgbV9jZWxsc05lZWREZXN0cnVjdGlvbihjZWxsc05l
ZWREZXN0cnVjdGlvbikKLSAgICAsIG1fb25seUNvbnRhaW5zU3RydWN0dXJlcyhvbmx5Q29udGFp
bnNTdHJ1Y3R1cmVzKQorICAgICwgbV9kZXN0cnVjdG9yVHlwZShkZXN0cnVjdG9yVHlwZSkKKyAg
ICAsIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKICAgICAsIG1fc3RhdGUoTmV3KSAvLyBBbGwgY2Vs
bHMgc3RhcnQgb3V0IHVubWFya2VkLgotICAgICwgbV93ZWFrU2V0KGhlYXAtPmdsb2JhbERhdGEo
KSkKKyAgICAsIG1fd2Vha1NldChhbGxvY2F0b3ItPmhlYXAoKS0+Z2xvYmFsRGF0YSgpKQogewot
ICAgIEFTU0VSVChoZWFwKTsKKyAgICBBU1NFUlQoYWxsb2NhdG9yKTsKICAgICBIRUFQX0xPR19C
TE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwogfQogCkBAIC02NSwxMSArNjUsMTEgQEAgaW5s
aW5lIHZvaWQgTWFya2VkQmxvY2s6OmNhbGxEZXN0cnVjdG9yKAogICAgIGNlbGwtPnphcCgpOwog
fQogCi10ZW1wbGF0ZTxNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSBibG9ja1N0YXRlLCBNYXJrZWRC
bG9jazo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgYm9vbCBkZXN0cnVjdG9yQ2FsbE5lZWRlZD4KK3Rl
bXBsYXRlPE1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlIGJsb2NrU3RhdGUsIE1hcmtlZEJsb2NrOjpT
d2VlcE1vZGUgc3dlZXBNb2RlLCBNYXJrZWRCbG9jazo6RGVzdHJ1Y3RvclR5cGUgZHRvclR5cGU+
CiBNYXJrZWRCbG9jazo6RnJlZUxpc3QgTWFya2VkQmxvY2s6OnNwZWNpYWxpemVkU3dlZXAoKQog
ewogICAgIEFTU0VSVChibG9ja1N0YXRlICE9IEFsbG9jYXRlZCAmJiBibG9ja1N0YXRlICE9IEZy
ZWVMaXN0ZWQpOwotICAgIEFTU0VSVChkZXN0cnVjdG9yQ2FsbE5lZWRlZCB8fCBzd2VlcE1vZGUg
IT0gU3dlZXBPbmx5KTsKKyAgICBBU1NFUlQoIShkdG9yVHlwZSA9PSBNYXJrZWRCbG9jazo6Tm9u
ZSAmJiBzd2VlcE1vZGUgPT0gU3dlZXBPbmx5KSk7CiAKICAgICAvLyBUaGlzIHByb2R1Y2VzIGEg
ZnJlZSBsaXN0IHRoYXQgaXMgb3JkZXJlZCBpbiByZXZlcnNlIHRocm91Z2ggdGhlIGJsb2NrLgog
ICAgIC8vIFRoaXMgaXMgZmluZSwgc2luY2UgdGhlIGFsbG9jYXRpb24gY29kZSBtYWtlcyBubyBh
c3N1bXB0aW9ucyBhYm91dCB0aGUKQEAgLTgyLDcgKzgyLDcgQEAgTWFya2VkQmxvY2s6OkZyZWVM
aXN0IE1hcmtlZEJsb2NrOjpzcGVjaQogCiAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50ZXJw
cmV0X2Nhc3RfcHRyPEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKIAotICAgICAgICBpZiAoZGVzdHJ1
Y3RvckNhbGxOZWVkZWQgJiYgYmxvY2tTdGF0ZSAhPSBOZXcpCisgICAgICAgIGlmIChkdG9yVHlw
ZSAhPSBNYXJrZWRCbG9jazo6Tm9uZSAmJiBibG9ja1N0YXRlICE9IE5ldykKICAgICAgICAgICAg
IGNhbGxEZXN0cnVjdG9yKGNlbGwpOwogCiAgICAgICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBU
b0ZyZWVMaXN0KSB7CkBAIC0xMDMsMjEgKzEwMywyMyBAQCBNYXJrZWRCbG9jazo6RnJlZUxpc3Qg
TWFya2VkQmxvY2s6OnN3ZWVwCiAKICAgICBtX3dlYWtTZXQuc3dlZXAoKTsKIAotICAgIGlmIChz
d2VlcE1vZGUgPT0gU3dlZXBPbmx5ICYmICFtX2NlbGxzTmVlZERlc3RydWN0aW9uKQorICAgIGlm
IChzd2VlcE1vZGUgPT0gU3dlZXBPbmx5ICYmIG1fZGVzdHJ1Y3RvclR5cGUgPT0gTWFya2VkQmxv
Y2s6Ok5vbmUpCiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwogCi0gICAgaWYgKG1fY2VsbHNO
ZWVkRGVzdHJ1Y3Rpb24pCi0gICAgICAgIHJldHVybiBzd2VlcEhlbHBlcjx0cnVlPihzd2VlcE1v
ZGUpOwotICAgIHJldHVybiBzd2VlcEhlbHBlcjxmYWxzZT4oc3dlZXBNb2RlKTsKKyAgICBpZiAo
bV9kZXN0cnVjdG9yVHlwZSA9PSBNYXJrZWRCbG9jazo6SW1tb3J0YWxTdHJ1Y3R1cmUpCisgICAg
ICAgIHJldHVybiBzd2VlcEhlbHBlcjxNYXJrZWRCbG9jazo6SW1tb3J0YWxTdHJ1Y3R1cmU+KHN3
ZWVwTW9kZSk7CisgICAgaWYgKG1fZGVzdHJ1Y3RvclR5cGUgPT0gTWFya2VkQmxvY2s6Ok5vcm1h
bCkKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyPE1hcmtlZEJsb2NrOjpOb3JtYWw+KHN3ZWVw
TW9kZSk7CisgICAgcmV0dXJuIHN3ZWVwSGVscGVyPE1hcmtlZEJsb2NrOjpOb25lPihzd2VlcE1v
ZGUpOwogfQogCi10ZW1wbGF0ZTxib29sIGRlc3RydWN0b3JDYWxsTmVlZGVkPgordGVtcGxhdGU8
TWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBlIGR0b3JUeXBlPgogTWFya2VkQmxvY2s6OkZyZWVM
aXN0IE1hcmtlZEJsb2NrOjpzd2VlcEhlbHBlcihTd2VlcE1vZGUgc3dlZXBNb2RlKQogewogICAg
IHN3aXRjaCAobV9zdGF0ZSkgewogICAgIGNhc2UgTmV3OgogICAgICAgICBBU1NFUlQoc3dlZXBN
b2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVw
PE5ldywgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdG9yQ2FsbE5lZWRlZD4oKTsKKyAgICAgICAg
cmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8TmV3LCBTd2VlcFRvRnJlZUxpc3QsIGR0b3JUeXBlPigp
OwogICAgIGNhc2UgRnJlZUxpc3RlZDoKICAgICAgICAgLy8gSGFwcGVucyB3aGVuIGEgYmxvY2sg
dHJhbnNpdGlvbnMgdG8gZnVsbHkgYWxsb2NhdGVkLgogICAgICAgICBBU1NFUlQoc3dlZXBNb2Rl
ID09IFN3ZWVwVG9GcmVlTGlzdCk7CkBAIC0xMjYsMTAgKzEyOCw5IEBAIE1hcmtlZEJsb2NrOjpG
cmVlTGlzdCBNYXJrZWRCbG9jazo6c3dlZXAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwogICAgIGNhc2UgTWFya2VkOgotICAgICAgICBB
U1NFUlQoIW1fb25seUNvbnRhaW5zU3RydWN0dXJlcyB8fCBoZWFwKCktPmlzU2FmZVRvU3dlZXBT
dHJ1Y3R1cmVzKCkpOwogICAgICAgICByZXR1cm4gc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlz
dAotICAgICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBUb0ZyZWVMaXN0
LCBkZXN0cnVjdG9yQ2FsbE5lZWRlZD4oKQotICAgICAgICAgICAgOiBzcGVjaWFsaXplZFN3ZWVw
PE1hcmtlZCwgU3dlZXBPbmx5LCBkZXN0cnVjdG9yQ2FsbE5lZWRlZD4oKTsKKyAgICAgICAgICAg
ID8gc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwgZHRvclR5cGU+KCkK
KyAgICAgICAgICAgIDogc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwT25seSwgZHRvclR5
cGU+KCk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUyLDYgKzUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgSGVhcDsKICAg
ICBjbGFzcyBKU0NlbGw7CisgICAgY2xhc3MgTWFya2VkQWxsb2NhdG9yOwogCiAgICAgdHlwZWRl
ZiB1aW50cHRyX3QgQml0czsKIApAQCAtMTEyLDcgKzExMyw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgUmV0dXJuVHlwZSBtX2NvdW50OwogICAgICAgICB9OwogCi0gICAgICAgIHN0
YXRpYyBNYXJrZWRCbG9jayogY3JlYXRlKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYsIEhl
YXAqLCBzaXplX3QgY2VsbFNpemUsIGJvb2wgY2VsbHNOZWVkRGVzdHJ1Y3Rpb24sIGJvb2wgb25s
eUNvbnRhaW5zU3RydWN0dXJlcyk7CisgICAgICAgIGVudW0gRGVzdHJ1Y3RvclR5cGUgeyBOb25l
LCBJbW1vcnRhbFN0cnVjdHVyZSwgTm9ybWFsIH07CisgICAgICAgIHN0YXRpYyBNYXJrZWRCbG9j
ayogY3JlYXRlKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYsIE1hcmtlZEFsbG9jYXRvcios
IHNpemVfdCBjZWxsU2l6ZSwgRGVzdHJ1Y3RvclR5cGUpOwogCiAgICAgICAgIHN0YXRpYyBib29s
IGlzQXRvbUFsaWduZWQoY29uc3Qgdm9pZCopOwogICAgICAgICBzdGF0aWMgTWFya2VkQmxvY2sq
IGJsb2NrRm9yKGNvbnN0IHZvaWQqKTsKQEAgLTEyMCw2ICsxMjIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgCiAgICAgICAgIHZvaWQgbGFzdENoYW5jZVRvRmluYWxpemUoKTsKIAorICAg
ICAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvcigpIGNvbnN0OwogICAgICAgICBIZWFwKiBo
ZWFwKCkgY29uc3Q7CiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgpIGNvbnN0Owog
ICAgICAgICBXZWFrU2V0JiB3ZWFrU2V0KCk7CkBAIC0xNDMsOCArMTQ2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGJvb2wgaXNFbXB0eSgpOwogCiAgICAgICAgIHNpemVfdCBjZWxsU2l6
ZSgpOwotICAgICAgICBib29sIGNlbGxzTmVlZERlc3RydWN0aW9uKCk7Ci0gICAgICAgIGJvb2wg
b25seUNvbnRhaW5zU3RydWN0dXJlcygpOworICAgICAgICBEZXN0cnVjdG9yVHlwZSBkZXN0cnVj
dG9yVHlwZSgpOwogCiAgICAgICAgIHNpemVfdCBzaXplKCk7CiAgICAgICAgIHNpemVfdCBjYXBh
Y2l0eSgpOwpAQCAtMTk0LDE1ICsxOTYsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7IC8vIGF0
b21TaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28uCiAKICAgICAgICAgZW51bSBCbG9ja1N0YXRl
IHsgTmV3LCBGcmVlTGlzdGVkLCBBbGxvY2F0ZWQsIE1hcmtlZCB9OwotICAgICAgICB0ZW1wbGF0
ZTxib29sIGRlc3RydWN0b3JDYWxsTmVlZGVkPiBGcmVlTGlzdCBzd2VlcEhlbHBlcihTd2VlcE1v
ZGUgPSBTd2VlcE9ubHkpOworICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdG9yVHlwZT4gRnJlZUxp
c3Qgc3dlZXBIZWxwZXIoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKIAogICAgICAgICB0eXBlZGVm
IGNoYXIgQXRvbVthdG9tU2l6ZV07CiAKLSAgICAgICAgTWFya2VkQmxvY2soY29uc3QgUGFnZUFs
bG9jYXRpb25BbGlnbmVkJiwgSGVhcCosIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBjZWxsc05lZWRE
ZXN0cnVjdGlvbiwgYm9vbCBvbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKTsKKyAgICAgICAgTWFya2Vk
QmxvY2soY29uc3QgUGFnZUFsbG9jYXRpb25BbGlnbmVkJiwgTWFya2VkQWxsb2NhdG9yKiwgc2l6
ZV90IGNlbGxTaXplLCBEZXN0cnVjdG9yVHlwZSk7CiAgICAgICAgIEF0b20qIGF0b21zKCk7CiAg
ICAgICAgIHNpemVfdCBhdG9tTnVtYmVyKGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9pZCBjYWxs
RGVzdHJ1Y3RvcihKU0NlbGwqKTsKLSAgICAgICAgdGVtcGxhdGU8QmxvY2tTdGF0ZSwgU3dlZXBN
b2RlLCBib29sIGRlc3RydWN0b3JDYWxsTmVlZGVkPiBGcmVlTGlzdCBzcGVjaWFsaXplZFN3ZWVw
KCk7CisgICAgICAgIHRlbXBsYXRlPEJsb2NrU3RhdGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3RvclR5
cGU+IEZyZWVMaXN0IHNwZWNpYWxpemVkU3dlZXAoKTsKICAgICAgICAgCiAjaWYgRU5BQkxFKEdH
QykKICAgICAgICAgQ2FyZFNldDxieXRlc1BlckNhcmQsIGJsb2NrU2l6ZT4gbV9jYXJkczsKQEAg
LTIxNSw4ICsyMTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbHNlCiAgICAgICAgIFdURjo6Qml0
bWFwPGF0b21zUGVyQmxvY2ssIFdURjo6Qml0bWFwTm90QXRvbWljPiBtX21hcmtzOwogI2VuZGlm
Ci0gICAgICAgIGJvb2wgbV9jZWxsc05lZWREZXN0cnVjdGlvbjsKLSAgICAgICAgYm9vbCBtX29u
bHlDb250YWluc1N0cnVjdHVyZXM7CisgICAgICAgIERlc3RydWN0b3JUeXBlIG1fZGVzdHJ1Y3Rv
clR5cGU7CisgICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3I7CiAgICAgICAgIEJs
b2NrU3RhdGUgbV9zdGF0ZTsKICAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7CiAgICAgfTsKQEAg
LTI2MSw2ICsyNjMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN3ZWVwKCk7CiAgICAg
fQogCisgICAgaW5saW5lIE1hcmtlZEFsbG9jYXRvciogTWFya2VkQmxvY2s6OmFsbG9jYXRvcigp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hbGxvY2F0b3I7CisgICAgfQorCiAgICAg
aW5saW5lIEhlYXAqIE1hcmtlZEJsb2NrOjpoZWFwKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiBtX3dlYWtTZXQuaGVhcCgpOwpAQCAtMzI2LDE0ICszMzMsOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgcmV0dXJuIG1fYXRvbXNQZXJDZWxsICogYXRvbVNpemU7CiAgICAgfQogCi0g
ICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmNlbGxzTmVlZERlc3RydWN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX2NlbGxzTmVlZERlc3RydWN0aW9uOyAKLSAgICB9Ci0KLSAgICBp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6b25seUNvbnRhaW5zU3RydWN0dXJlcygpCisgICAgaW5s
aW5lIE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlwZSBNYXJrZWRCbG9jazo6ZGVzdHJ1Y3RvclR5
cGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb25seUNvbnRhaW5zU3RydWN0dXJlczsKKyAg
ICAgICAgcmV0dXJuIG1fZGVzdHJ1Y3RvclR5cGU7IAogICAgIH0KIAogICAgIGlubGluZSBzaXpl
X3QgTWFya2VkQmxvY2s6OnNpemUoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlLmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSwxNyArODEsMjAg
QEAgTWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCiAgICAgOiBtX2hlYXAoaGVh
cCkKIHsKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8
PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVjaXNlU3RlcCkgewotICAgICAgICBhbGxv
Y2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhpcywgY2VsbFNpemUsIGZhbHNlLCBmYWxz
ZSk7Ci0gICAgICAgIGRlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwg
dGhpcywgY2VsbFNpemUsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgYWxsb2NhdG9yRm9yKGNlbGxT
aXplKS5pbml0KGhlYXAsIHRoaXMsIGNlbGxTaXplLCBNYXJrZWRCbG9jazo6Tm9uZSk7CisgICAg
ICAgIG5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhp
cywgY2VsbFNpemUsIE1hcmtlZEJsb2NrOjpOb3JtYWwpOworICAgICAgICBpbW1vcnRhbFN0cnVj
dHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhpcywgY2Vs
bFNpemUsIE1hcmtlZEJsb2NrOjpJbW1vcnRhbFN0cnVjdHVyZSk7CiAgICAgfQogCiAgICAgZm9y
IChzaXplX3QgY2VsbFNpemUgPSBpbXByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8PSBpbXByZWNpc2VD
dXRvZmY7IGNlbGxTaXplICs9IGltcHJlY2lzZVN0ZXApIHsKLSAgICAgICAgYWxsb2NhdG9yRm9y
KGNlbGxTaXplKS5pbml0KGhlYXAsIHRoaXMsIGNlbGxTaXplLCBmYWxzZSwgZmFsc2UpOwotICAg
ICAgICBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAsIHRoaXMsIGNl
bGxTaXplLCB0cnVlLCBmYWxzZSk7CisgICAgICAgIGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaW5p
dChoZWFwLCB0aGlzLCBjZWxsU2l6ZSwgTWFya2VkQmxvY2s6Ok5vbmUpOworICAgICAgICBub3Jt
YWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAsIHRoaXMsIGNlbGxT
aXplLCBNYXJrZWRCbG9jazo6Tm9ybWFsKTsKKyAgICAgICAgaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0
cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAsIHRoaXMsIGNlbGxTaXplLCBN
YXJrZWRCbG9jazo6SW1tb3J0YWxTdHJ1Y3R1cmUpOwogICAgIH0KIAotICAgIG1fbGFyZ2VBbGxv
Y2F0b3IuaW5pdChoZWFwLCB0aGlzLCAwLCB0cnVlLCBmYWxzZSk7Ci0gICAgbV9zdHJ1Y3R1cmVB
bGxvY2F0b3IuaW5pdChoZWFwLCB0aGlzLCBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoMzIsIHNp
emVvZihTdHJ1Y3R1cmUpKSwgdHJ1ZSwgdHJ1ZSk7CisgICAgbV9ub3JtYWxTcGFjZS5sYXJnZUFs
bG9jYXRvci5pbml0KGhlYXAsIHRoaXMsIDAsIE1hcmtlZEJsb2NrOjpOb25lKTsKKyAgICBtX25v
cm1hbERlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvci5pbml0KGhlYXAsIHRoaXMsIDAsIE1h
cmtlZEJsb2NrOjpOb3JtYWwpOworICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3Bh
Y2UubGFyZ2VBbGxvY2F0b3IuaW5pdChoZWFwLCB0aGlzLCAwLCBNYXJrZWRCbG9jazo6SW1tb3J0
YWxTdHJ1Y3R1cmUpOwogfQogCiBNYXJrZWRTcGFjZTo6fk1hcmtlZFNwYWNlKCkKQEAgLTEyMCwx
NiArMTIzLDE5IEBAIHZvaWQgTWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycygpCiB7CiAgICAg
Zm9yIChzaXplX3QgY2VsbFNpemUgPSBwcmVjaXNlU3RlcDsgY2VsbFNpemUgPD0gcHJlY2lzZUN1
dG9mZjsgY2VsbFNpemUgKz0gcHJlY2lzZVN0ZXApIHsKICAgICAgICAgYWxsb2NhdG9yRm9yKGNl
bGxTaXplKS5yZXNldCgpOwotICAgICAgICBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXpl
KS5yZXNldCgpOworICAgICAgICBub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXpl
KS5yZXNldCgpOworICAgICAgICBpbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JG
b3IoY2VsbFNpemUpLnJlc2V0KCk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgY2VsbFNpemUg
PSBpbXByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8PSBpbXByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9
IGltcHJlY2lzZVN0ZXApIHsKICAgICAgICAgYWxsb2NhdG9yRm9yKGNlbGxTaXplKS5yZXNldCgp
OwotICAgICAgICBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5yZXNldCgpOworICAg
ICAgICBub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5yZXNldCgpOworICAg
ICAgICBpbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLnJl
c2V0KCk7CiAgICAgfQogCi0gICAgbV9sYXJnZUFsbG9jYXRvci5yZXNldCgpOwotICAgIG1fc3Ry
dWN0dXJlQWxsb2NhdG9yLnJlc2V0KCk7CisgICAgbV9ub3JtYWxTcGFjZS5sYXJnZUFsbG9jYXRv
ci5yZXNldCgpOworICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLnJl
c2V0KCk7CisgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9j
YXRvci5yZXNldCgpOwogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjp2aXNpdFdlYWtTZXRzKEhlYXBS
b290VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKQpAQCAtMTQ3LDM0ICsxNTMsNDAgQEAgdm9pZCBN
YXJrZWRTcGFjZTo6Y2Fub25pY2FsaXplQ2VsbExpdmVuZQogewogICAgIGZvciAoc2l6ZV90IGNl
bGxTaXplID0gcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IHByZWNpc2VDdXRvZmY7IGNlbGxTaXpl
ICs9IHByZWNpc2VTdGVwKSB7CiAgICAgICAgIGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuY2Fub25p
Y2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOwotICAgICAgICBkZXN0cnVjdG9yQWxsb2NhdG9yRm9y
KGNlbGxTaXplKS5jYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7CisgICAgICAgIG5vcm1h
bERlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVz
c0RhdGEoKTsKKyAgICAgICAgaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9y
KGNlbGxTaXplKS5jYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7CiAgICAgfQogCiAgICAg
Zm9yIChzaXplX3QgY2VsbFNpemUgPSBpbXByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8PSBpbXByZWNp
c2VDdXRvZmY7IGNlbGxTaXplICs9IGltcHJlY2lzZVN0ZXApIHsKICAgICAgICAgYWxsb2NhdG9y
Rm9yKGNlbGxTaXplKS5jYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7Ci0gICAgICAgIGRl
c3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0Rh
dGEoKTsKKyAgICAgICAgbm9ybWFsRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuY2Fu
b25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOworICAgICAgICBpbW1vcnRhbFN0cnVjdHVyZURl
c3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0Rh
dGEoKTsKICAgICB9CiAKLSAgICBtX2xhcmdlQWxsb2NhdG9yLmNhbm9uaWNhbGl6ZUNlbGxMaXZl
bmVzc0RhdGEoKTsKLSAgICBtX3N0cnVjdHVyZUFsbG9jYXRvci5jYW5vbmljYWxpemVDZWxsTGl2
ZW5lc3NEYXRhKCk7CisgICAgbV9ub3JtYWxTcGFjZS5sYXJnZUFsbG9jYXRvci5jYW5vbmljYWxp
emVDZWxsTGl2ZW5lc3NEYXRhKCk7CisgICAgbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UubGFyZ2VB
bGxvY2F0b3IuY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOworICAgIG1faW1tb3J0YWxT
dHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3IuY2Fub25pY2FsaXplQ2VsbExp
dmVuZXNzRGF0YSgpOwogfQogCiBib29sIE1hcmtlZFNwYWNlOjppc1BhZ2VkT3V0KGRvdWJsZSBk
ZWFkbGluZSkKIHsKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VTdGVwOyBjZWxs
U2l6ZSA8PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVjaXNlU3RlcCkgewotICAgICAg
ICBpZiAoYWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSB8fCBkZXN0
cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSkKKyAgICAg
ICAgaWYgKGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQYWdlZE91dChkZWFkbGluZSkgCisgICAg
ICAgICAgICB8fCBub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1BhZ2Vk
T3V0KGRlYWRsaW5lKSAKKyAgICAgICAgICAgIHx8IGltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3Rv
ckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQYWdlZE91dChkZWFkbGluZSkpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IGltcHJl
Y2lzZVN0ZXA7IGNlbGxTaXplIDw9IGltcHJlY2lzZUN1dG9mZjsgY2VsbFNpemUgKz0gaW1wcmVj
aXNlU3RlcCkgewotICAgICAgICBpZiAoYWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0
KGRlYWRsaW5lKSB8fCBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0
KGRlYWRsaW5lKSkKKyAgICAgICAgaWYgKGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQYWdlZE91
dChkZWFkbGluZSkgCisgICAgICAgICAgICB8fCBub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9y
KGNlbGxTaXplKS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSAKKyAgICAgICAgICAgIHx8IGltbW9ydGFs
U3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQYWdlZE91dChkZWFk
bGluZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAobV9sYXJn
ZUFsbG9jYXRvci5pc1BhZ2VkT3V0KGRlYWRsaW5lKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICBpZiAobV9zdHJ1Y3R1cmVBbGxvY2F0b3IuaXNQYWdlZE91dChkZWFkbGluZSkpCisgICAg
aWYgKG1fbm9ybWFsU3BhY2UubGFyZ2VBbGxvY2F0b3IuaXNQYWdlZE91dChkZWFkbGluZSkKKyAg
ICAgICAgfHwgbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3IuaXNQYWdlZE91
dChkZWFkbGluZSkKKyAgICAgICAgfHwgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFj
ZS5sYXJnZUFsbG9jYXRvci5pc1BhZ2VkT3V0KGRlYWRsaW5lKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODIsNyArMTk0LDcgQEAgYm9vbCBNYXJrZWRT
cGFjZTo6aXNQYWdlZE91dChkb3VibGUgZGVhZAogCiB2b2lkIE1hcmtlZFNwYWNlOjpmcmVlQmxv
Y2soTWFya2VkQmxvY2sqIGJsb2NrKQogewotICAgIGFsbG9jYXRvckZvcihibG9jaykucmVtb3Zl
QmxvY2soYmxvY2spOworICAgIGJsb2NrLT5hbGxvY2F0b3IoKS0+cmVtb3ZlQmxvY2soYmxvY2sp
OwogICAgIG1fYmxvY2tzLnJlbW92ZShibG9jayk7CiAgICAgaWYgKGJsb2NrLT5jYXBhY2l0eSgp
ID09IE1hcmtlZEJsb2NrOjpibG9ja1NpemUpIHsKICAgICAgICAgbV9oZWFwLT5ibG9ja0FsbG9j
YXRvcigpLmRlYWxsb2NhdGUoTWFya2VkQmxvY2s6OmRlc3Ryb3koYmxvY2spKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMTI4NzEyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNzYsMTEgKzc2LDExIEBAIHB1YmxpYzoKIAogICAgIE1hcmtlZEFsbG9jYXRvciYgZmly
c3RBbGxvY2F0b3IoKTsKICAgICBNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvckZvcihzaXplX3Qp
OwotICAgIE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yRm9yKE1hcmtlZEJsb2NrKik7Ci0gICAg
TWFya2VkQWxsb2NhdG9yJiBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKHNpemVfdCk7Ci0gICAgdm9p
ZCogYWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihzaXplX3QpOworICAgIE1hcmtlZEFsbG9jYXRvciYg
aW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKHNpemVfdCk7CisgICAgTWFy
a2VkQWxsb2NhdG9yJiBub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKHNpemVfdCk7CisgICAg
dm9pZCogYWxsb2NhdGVXaXRoTm9ybWFsRGVzdHJ1Y3RvcihzaXplX3QpOworICAgIHZvaWQqIGFs
bG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvcihzaXplX3QpOwogICAgIHZvaWQq
IGFsbG9jYXRlV2l0aG91dERlc3RydWN0b3Ioc2l6ZV90KTsKLSAgICB2b2lkKiBhbGxvY2F0ZVN0
cnVjdHVyZShzaXplX3QpOwogIAogICAgIHZvaWQgcmVzZXRBbGxvY2F0b3JzKCk7CiAKQEAgLTEy
OSwxMiArMTI5LDEyIEBAIHByaXZhdGU6CiAgICAgc3RydWN0IFN1YnNwYWNlIHsKICAgICAgICAg
Rml4ZWRBcnJheTxNYXJrZWRBbGxvY2F0b3IsIHByZWNpc2VDb3VudD4gcHJlY2lzZUFsbG9jYXRv
cnM7CiAgICAgICAgIEZpeGVkQXJyYXk8TWFya2VkQWxsb2NhdG9yLCBpbXByZWNpc2VDb3VudD4g
aW1wcmVjaXNlQWxsb2NhdG9yczsKKyAgICAgICAgTWFya2VkQWxsb2NhdG9yIGxhcmdlQWxsb2Nh
dG9yOwogICAgIH07CiAKLSAgICBTdWJzcGFjZSBtX2Rlc3RydWN0b3JTcGFjZTsKKyAgICBTdWJz
cGFjZSBtX25vcm1hbERlc3RydWN0b3JTcGFjZTsKKyAgICBTdWJzcGFjZSBtX2ltbW9ydGFsU3Ry
dWN0dXJlRGVzdHJ1Y3RvclNwYWNlOwogICAgIFN1YnNwYWNlIG1fbm9ybWFsU3BhY2U7Ci0gICAg
TWFya2VkQWxsb2NhdG9yIG1fbGFyZ2VBbGxvY2F0b3I7Ci0gICAgTWFya2VkQWxsb2NhdG9yIG1f
c3RydWN0dXJlQWxsb2NhdG9yOwogCiAgICAgSGVhcCogbV9oZWFwOwogICAgIE1hcmtlZEJsb2Nr
U2V0IG1fYmxvY2tzOwpAQCAtMTY4LDI4ICsxNjgsMjcgQEAgaW5saW5lIE1hcmtlZEFsbG9jYXRv
ciYgTWFya2VkU3BhY2U6OmFsbAogICAgICAgICByZXR1cm4gbV9ub3JtYWxTcGFjZS5wcmVjaXNl
QWxsb2NhdG9yc1soYnl0ZXMgLSAxKSAvIHByZWNpc2VTdGVwXTsKICAgICBpZiAoYnl0ZXMgPD0g
aW1wcmVjaXNlQ3V0b2ZmKQogICAgICAgICByZXR1cm4gbV9ub3JtYWxTcGFjZS5pbXByZWNpc2VB
bGxvY2F0b3JzWyhieXRlcyAtIDEpIC8gaW1wcmVjaXNlU3RlcF07Ci0gICAgcmV0dXJuIG1fbGFy
Z2VBbGxvY2F0b3I7CisgICAgcmV0dXJuIG1fbm9ybWFsU3BhY2UubGFyZ2VBbGxvY2F0b3I7CiB9
CiAKLWlubGluZSBNYXJrZWRBbGxvY2F0b3ImIE1hcmtlZFNwYWNlOjphbGxvY2F0b3JGb3IoTWFy
a2VkQmxvY2sqIGJsb2NrKQoraW5saW5lIE1hcmtlZEFsbG9jYXRvciYgTWFya2VkU3BhY2U6Omlt
bW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihzaXplX3QgYnl0ZXMpCiB7Ci0g
ICAgaWYgKGJsb2NrLT5vbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKCkpCi0gICAgICAgIHJldHVybiBt
X3N0cnVjdHVyZUFsbG9jYXRvcjsKLQotICAgIGlmIChibG9jay0+Y2VsbHNOZWVkRGVzdHJ1Y3Rp
b24oKSkKLSAgICAgICAgcmV0dXJuIGRlc3RydWN0b3JBbGxvY2F0b3JGb3IoYmxvY2stPmNlbGxT
aXplKCkpOwotCi0gICAgcmV0dXJuIGFsbG9jYXRvckZvcihibG9jay0+Y2VsbFNpemUoKSk7Cisg
ICAgQVNTRVJUKGJ5dGVzKTsKKyAgICBpZiAoYnl0ZXMgPD0gcHJlY2lzZUN1dG9mZikKKyAgICAg
ICAgcmV0dXJuIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9j
YXRvcnNbKGJ5dGVzIC0gMSkgLyBwcmVjaXNlU3RlcF07CisgICAgaWYgKGJ5dGVzIDw9IGltcHJl
Y2lzZUN1dG9mZikKKyAgICAgICAgcmV0dXJuIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9y
U3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1soYnl0ZXMgLSAxKSAvIGltcHJlY2lzZVN0ZXBdOwor
ICAgIHJldHVybiBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2Nh
dG9yOwogfQogCi1pbmxpbmUgTWFya2VkQWxsb2NhdG9yJiBNYXJrZWRTcGFjZTo6ZGVzdHJ1Y3Rv
ckFsbG9jYXRvckZvcihzaXplX3QgYnl0ZXMpCitpbmxpbmUgTWFya2VkQWxsb2NhdG9yJiBNYXJr
ZWRTcGFjZTo6bm9ybWFsRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihzaXplX3QgYnl0ZXMpCiB7CiAg
ICAgQVNTRVJUKGJ5dGVzKTsKICAgICBpZiAoYnl0ZXMgPD0gcHJlY2lzZUN1dG9mZikKLSAgICAg
ICAgcmV0dXJuIG1fZGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0b3JzWyhieXRlcyAtIDEp
IC8gcHJlY2lzZVN0ZXBdOworICAgICAgICByZXR1cm4gbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2Uu
cHJlY2lzZUFsbG9jYXRvcnNbKGJ5dGVzIC0gMSkgLyBwcmVjaXNlU3RlcF07CiAgICAgaWYgKGJ5
dGVzIDw9IGltcHJlY2lzZUN1dG9mZikKLSAgICAgICAgcmV0dXJuIG1fbm9ybWFsU3BhY2UuaW1w
cmVjaXNlQWxsb2NhdG9yc1soYnl0ZXMgLSAxKSAvIGltcHJlY2lzZVN0ZXBdOwotICAgIHJldHVy
biBtX2xhcmdlQWxsb2NhdG9yOworICAgICAgICByZXR1cm4gbV9ub3JtYWxEZXN0cnVjdG9yU3Bh
Y2UuaW1wcmVjaXNlQWxsb2NhdG9yc1soYnl0ZXMgLSAxKSAvIGltcHJlY2lzZVN0ZXBdOworICAg
IHJldHVybiBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvcjsKIH0KIAogaW5s
aW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZVdpdGhvdXREZXN0cnVjdG9yKHNpemVfdCBi
eXRlcykKQEAgLTE5NywzMCArMTk2LDMzIEBAIGlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxs
b2NhdGVXaXRob3UKICAgICByZXR1cm4gYWxsb2NhdG9yRm9yKGJ5dGVzKS5hbGxvY2F0ZShieXRl
cyk7CiB9CiAKLWlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGVXaXRoRGVzdHJ1Y3Rv
cihzaXplX3QgYnl0ZXMpCitpbmxpbmUgdm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlV2l0aElt
bW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGRl
c3RydWN0b3JBbGxvY2F0b3JGb3IoYnl0ZXMpLmFsbG9jYXRlKGJ5dGVzKTsKKyAgICByZXR1cm4g
aW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGJ5dGVzKS5hbGxvY2F0ZShi
eXRlcyk7CiB9CiAKLWlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGVTdHJ1Y3R1cmUo
c2l6ZV90IGJ5dGVzKQoraW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZVdpdGhOb3Jt
YWxEZXN0cnVjdG9yKHNpemVfdCBieXRlcykKIHsKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmVBbGxv
Y2F0b3IuYWxsb2NhdGUoYnl0ZXMpOworICAgIHJldHVybiBub3JtYWxEZXN0cnVjdG9yQWxsb2Nh
dG9yRm9yKGJ5dGVzKS5hbGxvY2F0ZShieXRlcyk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBG
dW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRTcGFjZTo6
Zm9yRWFjaEJsb2NrKEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwcmVjaXNlQ291bnQ7ICsraSkgewogICAgICAgICBtX25vcm1hbFNwYWNlLnByZWNpc2VB
bGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICAgICAgbV9kZXN0cnVjdG9y
U3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOworICAgICAg
ICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxv
Y2soZnVuY3Rvcik7CisgICAgICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2Uu
cHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogICAgIH0KIAogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkgewogICAgICAgICBt
X25vcm1hbFNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3Ip
OwotICAgICAgICBtX2Rlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVh
Y2hCbG9jayhmdW5jdG9yKTsKKyAgICAgICAgbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UuaW1wcmVj
aXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisgICAgICAgIG1faW1tb3J0
YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNo
QmxvY2soZnVuY3Rvcik7CiAgICAgfQogCi0gICAgbV9sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxv
Y2soZnVuY3Rvcik7Ci0gICAgbV9zdHJ1Y3R1cmVBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGZ1bmN0
b3IpOworICAgIG1fbm9ybWFsU3BhY2UubGFyZ2VBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGZ1bmN0
b3IpOworICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmZvckVhY2hC
bG9jayhmdW5jdG9yKTsKKyAgICBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLmxh
cmdlQWxsb2NhdG9yLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKIAogICAgIHJldHVybiBmdW5jdG9y
LnJldHVyblZhbHVlKCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90
VmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xv
dFZpc2l0b3IuY3BwCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TbG90VmlzaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUsNiArNSw3IEBACiAjaW5j
bHVkZSAiQ29waWVkU3BhY2UuaCIKICNpbmNsdWRlICJDb3BpZWRTcGFjZUlubGluZU1ldGhvZHMu
aCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3Qu
aCIKICNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTU3RyaW5nLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9u
IDEyODcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzNCw3ICs0MzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
V3JpdGVCYXJyaWVyKFJlZ2lzdGVySUQgb3duZXIsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lz
dGVySUQgc2NyYXRjaCwgUmVnaXN0ZXJJRCBzY3JhdGNoMiwgV3JpdGVCYXJyaWVyTW9kZSwgV3Jp
dGVCYXJyaWVyVXNlS2luZCk7CiAgICAgICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcihKU0NlbGwq
IG93bmVyLCBSZWdpc3RlcklEIHZhbHVlLCBSZWdpc3RlcklEIHNjcmF0Y2gsIFdyaXRlQmFycmll
ck1vZGUsIFdyaXRlQmFycmllclVzZUtpbmQpOwogCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENsYXNzVHlwZSwgYm9vbCBkZXN0cnVjdG9yLCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiB2b2lk
IGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QoU3RydWN0dXJlVHlwZSwgUmVnaXN0ZXJJRCByZXN1
bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIENs
YXNzVHlwZSwgTWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBlLCB0eXBlbmFtZSBTdHJ1Y3R1cmVU
eXBlPiB2b2lkIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QoU3RydWN0dXJlVHlwZSwgUmVnaXN0
ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CiAgICAgICAgIHZvaWQgZW1pdEFs
bG9jYXRlQmFzaWNTdG9yYWdlKHNpemVfdCwgcHRyZGlmZl90IG9mZnNldEZyb21CYXNlLCBSZWdp
c3RlcklEIHJlc3VsdCk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgZW1pdEFs
bG9jYXRlSlNGaW5hbE9iamVjdChUIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lz
dGVySUQgc3RvcmFnZVB0cik7CiAgICAgICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNBcnJheSh1bnNp
Z25lZCB2YWx1ZXNSZWdpc3RlciwgdW5zaWduZWQgbGVuZ3RoLCBSZWdpc3RlcklEIGNlbGxSZXN1
bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRyKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCShyZXZp
c2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhv
ZHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDA1LDExICs0MDUsMTMgQEAgQUxXQVlTX0lOTElORSBi
b29sIEpJVDo6aXNPcGVyYW5kQ29uc3RhbgogICAgIHJldHVybiBtX2NvZGVCbG9jay0+aXNDb25z
dGFudFJlZ2lzdGVySW5kZXgoc3JjKSAmJiBnZXRDb25zdGFudE9wZXJhbmQoc3JjKS5pc1N0cmlu
ZygpICYmIGFzU3RyaW5nKGdldENvbnN0YW50T3BlcmFuZChzcmMpLmFzQ2VsbCgpKS0+bGVuZ3Ro
KCkgPT0gMTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgYm9vbCBkZXN0cnVj
dG9yLCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxvY2F0
ZUJhc2ljSlNPYmplY3QoU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgcmVzdWx0
LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlLCBN
YXJrZWRCbG9jazo6RGVzdHJ1Y3RvclR5cGUgZGVzdHJ1Y3RvclR5cGUsIHR5cGVuYW1lIFN0cnVj
dHVyZVR5cGU+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdChTdHJ1
Y3R1cmVUeXBlIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFn
ZVB0cikKIHsKICAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9IDA7Ci0gICAgaWYgKGRl
c3RydWN0b3IpCi0gICAgICAgIGFsbG9jYXRvciA9ICZtX2dsb2JhbERhdGEtPmhlYXAuYWxsb2Nh
dG9yRm9yT2JqZWN0V2l0aERlc3RydWN0b3Ioc2l6ZW9mKENsYXNzVHlwZSkpOworICAgIGlmIChk
ZXN0cnVjdG9yVHlwZSA9PSBNYXJrZWRCbG9jazo6Tm9ybWFsKQorICAgICAgICBhbGxvY2F0b3Ig
PSAmbV9nbG9iYWxEYXRhLT5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhOb3JtYWxEZXN0cnVj
dG9yKHNpemVvZihDbGFzc1R5cGUpKTsKKyAgICBlbHNlIGlmIChkZXN0cnVjdG9yVHlwZSA9PSBN
YXJrZWRCbG9jazo6SW1tb3J0YWxTdHJ1Y3R1cmUpCisgICAgICAgIGFsbG9jYXRvciA9ICZtX2ds
b2JhbERhdGEtPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aEltbW9ydGFsU3RydWN0dXJlRGVz
dHJ1Y3RvcihzaXplb2YoQ2xhc3NUeXBlKSk7CiAgICAgZWxzZQogICAgICAgICBhbGxvY2F0b3Ig
PSAmbV9nbG9iYWxEYXRhLT5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9y
KHNpemVvZihDbGFzc1R5cGUpKTsKICAgICBsb2FkUHRyKCZhbGxvY2F0b3ItPm1fZnJlZUxpc3Qu
aGVhZCwgcmVzdWx0KTsKQEAgLTQyOCw3ICs0MzAsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xh
c3NUeXBlLCBib29sIGRlc3RyCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBK
SVQ6OmVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QoVCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgcmVz
dWx0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCiB7Ci0gICAgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVj
dDxKU0ZpbmFsT2JqZWN0LCBmYWxzZSwgVD4oc3RydWN0dXJlLCByZXN1bHQsIHNjcmF0Y2gpOwor
ICAgIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3Q8SlNGaW5hbE9iamVjdCwgTWFya2VkQmxvY2s6
Ok5vbmUsIFQ+KHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoKTsKIH0KIAogaW5saW5lIHZvaWQg
SklUOjplbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2Uoc2l6ZV90IHNpemUsIHB0cmRpZmZfdCBvZmZz
ZXRGcm9tQmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQpCkBAIC00NTMsNyArNDU1LDcgQEAgaW5saW5l
IHZvaWQgSklUOjplbWl0QWxsb2NhdGVKU0FycmF5KHVucwogICAgIGVtaXRBbGxvY2F0ZUJhc2lj
U3RvcmFnZShpbml0aWFsU3RvcmFnZSwgc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSwgc3RvcmFnZVJl
c3VsdCk7CiAKICAgICAvLyBBbGxvY2F0ZSB0aGUgY2VsbCBmb3IgdGhlIGFycmF5LgotICAgIGVt
aXRBbGxvY2F0ZUJhc2ljSlNPYmplY3Q8SlNBcnJheSwgZmFsc2U+KFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZSgpKSwgY2VsbFJlc3VsdCwg
c3RvcmFnZVB0cik7CisgICAgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdDxKU0FycmF5LCBNYXJr
ZWRCbG9jazo6Tm9uZT4oVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkt
PmFycmF5U3RydWN0dXJlKCkpLCBjZWxsUmVzdWx0LCBzdG9yYWdlUHRyKTsKIAogICAgIC8vIFN0
b3JlIGFsbCB0aGUgbmVjZXNzYXJ5IGluZm8gaW4gdGhlIEFycmF5U3RvcmFnZS4KICAgICBzdG9y
ZTMyKEltbTMyKGxlbmd0aCksIEFkZHJlc3Moc3RvcmFnZVJlc3VsdCwgQXJyYXlTdG9yYWdlOjps
ZW5ndGhPZmZzZXQoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHMuY3BwCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bcmd1bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEFyZ3VtZW50cyk7CiAK
LWNvbnN0IENsYXNzSW5mbyBBcmd1bWVudHM6OnNfaW5mbyA9IHsgIkFyZ3VtZW50cyIsICZKU05v
bkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoQXJndW1lbnRz
KSB9OworY29uc3QgQ2xhc3NJbmZvIEFyZ3VtZW50czo6c19pbmZvID0geyAiQXJndW1lbnRzIiwg
JkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShBcmd1bWVudHMpIH07CiAK
IHZvaWQgQXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUg
IkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKKyNpbmNsdWRlICJKU0Rl
c3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC01Nyw5ICs1OCw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2Fs
bGVlOwogICAgIH07CiAKLSAgICBjbGFzcyBBcmd1bWVudHMgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CisgICAgY2xhc3MgQXJndW1lbnRzIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwor
ICAgICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAKICAgICAgICAgc3Rh
dGljIEFyZ3VtZW50cyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiAgICAgICAgIHsKQEAgLTE1NCwxMyArMTU1LDEzIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIH0KIAogICAgIGlubGluZSBBcmd1bWVudHM6OkFyZ3VtZW50cyhDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKLSAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFs
RGF0YSgpLCBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJndW1lbnRzU3RydWN0
dXJlKCkpCisgICAgICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3QoY2FsbEZyYW1lLT5nbG9iYWxE
YXRhKCksIGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcmd1bWVudHNTdHJ1Y3R1
cmUoKSkKICAgICAgICAgLCBkKGFkb3B0UHRyKG5ldyBBcmd1bWVudHNEYXRhKSkKICAgICB7CiAg
ICAgfQogCiAgICAgaW5saW5lIEFyZ3VtZW50czo6QXJndW1lbnRzKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBOb1BhcmFtZXRlcnNUeXBlKQotICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCksIGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcmd1
bWVudHNTdHJ1Y3R1cmUoKSkKKyAgICAgICAgOiBKU0Rlc3RydWN0aWJsZU9iamVjdChjYWxsRnJh
bWUtPmdsb2JhbERhdGEoKSwgY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFyZ3Vt
ZW50c1N0cnVjdHVyZSgpKQogICAgICAgICAsIGQoYWRvcHRQdHIobmV3IEFyZ3VtZW50c0RhdGEp
KQogICAgIHsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
clByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxM
KEVycm9yUHJvdG90eXBlKTsKK0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEVycm9yUHJv
dG90eXBlKTsKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90
b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcsNiAr
MjU3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICB9OwogCisgICAgSEFTX0lNTU9S
VEFMX1NUUlVDVFVSRShFeGVjdXRhYmxlQmFzZSk7CisKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRh
YmxlIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTMzOSw2ICsz
NDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSW50cmluc2ljIG1faW50cmluc2ljOwog
ICAgIH07CiAKKyAgICBIQVNfSU1NT1JUQUxfU1RSVUNUVVJFKE5hdGl2ZUV4ZWN1dGFibGUpOwor
CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZSA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAg
ICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEV4ZWN1dGFibGVCYXNlIEJhc2U7CkBAIC00Njcs
NiArNDcxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE93blB0cjxFdmFsQ29kZUJsb2Nr
PiBtX2V2YWxDb2RlQmxvY2s7CiAgICAgfTsKIAorICAgIEhBU19JTU1PUlRBTF9TVFJVQ1RVUkUo
RXZhbEV4ZWN1dGFibGUpOworCiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgOiBwdWJsaWMg
U2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgcHVibGljOgpAQCAtNTM0LDYgKzU0MCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBPd25QdHI8UHJvZ3JhbUNvZGVCbG9jaz4gbV9wcm9ncmFtQ29kZUJsb2NrOwogICAg
IH07CiAKKyAgICBIQVNfSU1NT1JUQUxfU1RSVUNUVVJFKFByb2dyYW1FeGVjdXRhYmxlKTsKKwog
ICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKQEAgLTc1NSw2ICs3NjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgV3JpdGVCYXJyaWVyPFNoYXJlZFN5bWJvbFRhYmxlPiBtX3N5bWJvbFRhYmxlOwogICAgIH07
CiAKKyAgICBIQVNfSU1NT1JUQUxfU1RSVUNUVVJFKEZ1bmN0aW9uRXhlY3V0YWJsZSk7CisKICAg
ICBpbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCiAgICAgICAg
IDogQmFzZShnbG9iYWxEYXRhLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmZ1bmN0aW9uU3RydWN0
dXJlKCkpCiAgICAgICAgICwgbV9leGVjdXRhYmxlKGdsb2JhbERhdGEsIHRoaXMsIGV4ZWN1dGFi
bGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEwICsz
MiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSW50ZXJu
YWxGdW5jdGlvbik7CiBBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihJbnRlcm5hbEZ1bmN0
aW9uKTsKIAotY29uc3QgQ2xhc3NJbmZvIEludGVybmFsRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1
bmN0aW9uIiwgJkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShJbnRlcm5hbEZ1bmN0aW9uKSB9OworY29uc3QgQ2xhc3NJbmZvIEludGVybmFsRnVuY3Rp
b246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShJbnRlcm5hbEZ1bmN0aW9uKSB9OwogCiBJbnRlcm5hbEZ1bmN0aW9uOjpJbnRl
cm5hbEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQotICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEo
KSwgc3RydWN0dXJlKQorICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3QoZ2xvYmFsT2JqZWN0LT5n
bG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKIHsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkocmV2aXNpb24gMTI4NzEyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCwxNiArMjQsMTYgQEAKICNpZm5kZWYgSW50ZXJuYWxGdW5jdGlvbl9o
CiAjZGVmaW5lIEludGVybmFsRnVuY3Rpb25faAogCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKICNp
bmNsdWRlICJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKIAotICAg
IGNsYXNzIEludGVybmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAg
Y2xhc3MgSW50ZXJuYWxGdW5jdGlvbiA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAg
ICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICAg
ICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwogCiAgICAgICAgIHN0YXRpYyBK
U19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYs
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
OwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CkBAIC0zMjEsNiArMzIyLDIzIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAjZW5kaWYKIAorICAgIHRlbXBsYXRlPGNsYXNzIFQ+
CisgICAgc3RydWN0IEhhc0ltbW9ydGFsU3RydWN0dXJlIHsKKyAgICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgdmFsdWUgPSBmYWxzZTsKKyAgICB9OworCisjZGVmaW5lIEhBU19JTU1PUlRBTF9TVFJV
Q1RVUkUoa2xhc3MpIFwKKyAgICB0ZW1wbGF0ZSA8PiBcCisgICAgc3RydWN0IEhhc0ltbW9ydGFs
U3RydWN0dXJlPGtsYXNzPiB7XAorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRy
dWU7XAorICAgIH0KKworI2RlZmluZSBORUVEU19ERVNUUlVDVE9SKGtsYXNzLCB2KSBcCisgICAg
dGVtcGxhdGUgPD4gXAorICAgIHN0cnVjdCBOZWVkc0Rlc3RydWN0b3I8a2xhc3M+IHtcCisgICAg
ICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdjtcCisgICAgfQorCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KICAgICB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCkKICAgICB7CkBA
IC0zMjksMTIgKzM0NywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaGVhcC5nbG9iYWxE
YXRhKCktPnNldEluaXRpYWxpemluZ09iamVjdENsYXNzKCZUOjpzX2luZm8pOwogI2VuZGlmCiAg
ICAgICAgIEpTQ2VsbCogcmVzdWx0ID0gMDsKLSAgICAgICAgaWYgKE5lZWRzRGVzdHJ1Y3RvcjxU
Pjo6dmFsdWUpCi0gICAgICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPihoZWFw
LmFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6ZW9mKFQpKSk7Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgQVNTRVJUKFQ6OnNfaW5mby5tZXRob2RUYWJsZS5kZXN0cm95ID09IEpTQ2VsbDo6
ZGVzdHJveSk7CisgICAgICAgIGlmIChOZWVkc0Rlc3RydWN0b3I8VD46OnZhbHVlICYmIEhhc0lt
bW9ydGFsU3RydWN0dXJlPFQ+Ojp2YWx1ZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19j
YXN0PEpTQ2VsbCo+KGhlYXAuYWxsb2NhdGVXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9y
KHNpemVvZihUKSkpOworICAgICAgICBlbHNlIGlmIChOZWVkc0Rlc3RydWN0b3I8VD46OnZhbHVl
ICYmICFIYXNJbW1vcnRhbFN0cnVjdHVyZTxUPjo6dmFsdWUpCisgICAgICAgICAgICByZXN1bHQg
PSBzdGF0aWNfY2FzdDxKU0NlbGwqPihoZWFwLmFsbG9jYXRlV2l0aE5vcm1hbERlc3RydWN0b3Io
c2l6ZW9mKFQpKSk7CisgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19j
YXN0PEpTQ2VsbCo+KGhlYXAuYWxsb2NhdGVXaXRob3V0RGVzdHJ1Y3RvcihzaXplb2YoVCkpKTsK
LSAgICAgICAgfQogICAgICAgICByZXN1bHQtPmNsZWFyU3RydWN0dXJlKCk7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMzQ4LDggKzM2NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgaGVhcC5nbG9iYWxEYXRhKCktPnNldEluaXRpYWxpemluZ09iamVjdENsYXNzKCZU
OjpzX2luZm8pOwogI2VuZGlmCiAgICAgICAgIEpTQ2VsbCogcmVzdWx0ID0gMDsKLSAgICAgICAg
aWYgKE5lZWRzRGVzdHJ1Y3RvcjxUPjo6dmFsdWUpCi0gICAgICAgICAgICByZXN1bHQgPSBzdGF0
aWNfY2FzdDxKU0NlbGwqPihoZWFwLmFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6ZSkpOworICAg
ICAgICBpZiAoTmVlZHNEZXN0cnVjdG9yPFQ+Ojp2YWx1ZSAmJiBIYXNJbW1vcnRhbFN0cnVjdHVy
ZTxUPjo6dmFsdWUpCisgICAgICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPiho
ZWFwLmFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvcihzaXplKSk7CisgICAg
ICAgIGVsc2UgaWYgKE5lZWRzRGVzdHJ1Y3RvcjxUPjo6dmFsdWUgJiYgIUhhc0ltbW9ydGFsU3Ry
dWN0dXJlPFQ+Ojp2YWx1ZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEpTQ2Vs
bCo+KGhlYXAuYWxsb2NhdGVXaXRoTm9ybWFsRGVzdHJ1Y3RvcihzaXplKSk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgQVNTRVJUKFQ6OnNfaW5mby5tZXRob2RUYWJsZS5kZXN0cm95ID09
IEpTQ2VsbDo6ZGVzdHJveSk7CiAgICAgICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxKU0Nl
bGwqPihoZWFwLmFsbG9jYXRlV2l0aG91dERlc3RydWN0b3Ioc2l6ZSkpOwpAQCAtMzY5LDcgKzM4
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBU1NFUlQoIWZyb20gfHwgZnJvbS0+SlND
ZWxsOjppbmhlcml0cygmV1RGOjpSZW1vdmVQb2ludGVyPFRvPjo6VHlwZTo6c19pbmZvKSk7CiAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUbz4oZnJvbSk7CiAgICAgfQotCisgICAgCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVG8+CiAgICAgaW5saW5lIFRvIGpzQ2FzdChKU1ZhbHVlIGZyb20p
CiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGli
bGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Rlc3RydWN0aWJsZU9iamVjdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0MSBAQAorI2lmbmRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdF9oCisjZGVmaW5lIEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0X2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitzdHJ1Y3QgQ2xhc3NJbmZvOworCitjbGFzcyBKU0Rlc3RydWN0aWJsZU9iamVjdCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxP
YmplY3QgQmFzZTsKKworICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGFzc0luZm87IH0KKworcHJvdGVjdGVkOgorICAgIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRl
cmZseSogYnV0dGVyZmx5ID0gMCkKKyAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERh
dGEsIHN0cnVjdHVyZSwgYnV0dGVyZmx5KQorICAgICAgICAsIG1fY2xhc3NJbmZvKHN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCkpCisgICAgeworICAgICAgICBBU1NFUlQobV9jbGFzc0luZm8pOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOworfTsKKwor
aW5saW5lIGNvbnN0IENsYXNzSW5mbyogSlNDZWxsOjpjbGFzc0luZm8oKSBjb25zdAoreworICAg
IGlmIChNYXJrZWRCbG9jazo6YmxvY2tGb3IodGhpcyktPmRlc3RydWN0b3JUeXBlKCkgPT0gTWFy
a2VkQmxvY2s6Ok5vcm1hbCkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0Kj4odGhpcyktPmNsYXNzSW5mbygpOworI2lmIEVOQUJMRShHQ19WQUxJ
REFUSU9OKQorICAgIHJldHVybiBtX3N0cnVjdHVyZS51bnZhbGlkYXRlZEdldCgpLT5jbGFzc0lu
Zm8oKTsKKyNlbHNlCisgICAgcmV0dXJuIG1fc3RydWN0dXJlLT5jbGFzc0luZm8oKTsKKyNlbmRp
ZgorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxMjg3
MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpy
ZXNldChKU1ZhbHVlIHByb3RvCiAgICAgbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLnNldChl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlU3RydWN0
dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkp
OwogICAgIG1fYXJndW1lbnRzU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IEFyZ3VtZW50czo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1
cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX29iamVjdFByb3RvdHlw
ZS5nZXQoKSkpOwotICAgIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgdGhpcywgSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pjo6Y3JlYXRl
U3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0
KCkpKTsKKyAgICBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXMsIEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+OjpjcmVhdGVT
dHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQo
KSkpOwogCiAgICAgbV9hcnJheVByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBBcnJheVByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEFycmF5UHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5n
ZXQoKSkpKTsKICAgICBtX2FycmF5U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIEpTQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1f
YXJyYXlQcm90b3R5cGUuZ2V0KCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NzcsNyArNzcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIHByaXZhdGU6Ci0gICAg
ICAgIHR5cGVkZWYgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCBCYXNlOwogICAgICAgICB0eXBl
ZGVmIEhhc2hTZXQ8UmVmUHRyPE9wYXF1ZUpTV2Vha09iamVjdE1hcD4gPiBXZWFrTWFwU2V0Owog
CiAgICAgICAgIHN0cnVjdCBKU0dsb2JhbE9iamVjdFJhcmVEYXRhIHsKQEAgLTE2NiwxNCArMTY1
LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaWYgKG1fcmFyZURhdGEpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgbV9yYXJlRGF0YSA9IGFkb3B0UHRyKG5l
dyBKU0dsb2JhbE9iamVjdFJhcmVEYXRhKTsKLSAgICAgICAgICAgIEhlYXA6OmhlYXAodGhpcykt
PmFkZEZpbmFsaXplcih0aGlzLCBjbGVhclJhcmVEYXRhKTsKICAgICAgICAgfQogICAgICAgICAK
ICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCBC
YXNlOworCiAgICAgICAgIHN0YXRpYyBKU0dsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU0dsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNHbG9iYWxPYmplY3QoZ2xv
YmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICBnbG9iYWxEYXRhLmhlYXAuYWRkRmluYWxp
emVyKGdsb2JhbE9iamVjdCwgZGVzdHJveSk7CiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0OwogICAgICAgICB9CiAKQEAgLTM2OCw2ICszNjksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY2xlYXJSYXJlRGF0YShKU0NlbGwq
KTsKICAgICB9OwogCisgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBiZSBhbGxvY2F0ZWQgaW4gdGhl
IGRlc3RydWN0b3Igc3BhY2UgYmVjYXVzZSB3ZSB1c2UgYSBmaW5hbGl6ZXIgaW5zdGVhZC4KKyAg
ICBORUVEU19ERVNUUlVDVE9SKEpTR2xvYmFsT2JqZWN0LCBmYWxzZSk7CisKICAgICBKU0dsb2Jh
bE9iamVjdCogYXNHbG9iYWxPYmplY3QoSlNWYWx1ZSk7CiAKICAgICBpbmxpbmUgSlNHbG9iYWxP
YmplY3QqIGFzR2xvYmFsT2JqZWN0KEpTVmFsdWUgdmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbFRoaXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbFRoaXMuaAkocmV2aXNpb24gMTI4NzEyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxUaGlzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDEzICsyNiwxMyBAQAogI2lmbmRlZiBKU0dsb2JhbFRoaXNfaAogI2RlZmluZSBK
U0dsb2JhbFRoaXNfaAogCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU0Rlc3Ry
dWN0aWJsZU9iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgSlNHbG9iYWxUaGlz
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworY2xhc3MgSlNHbG9iYWxUaGlzIDogcHVibGlj
IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTTm9uRmluYWxP
YmplY3QgQmFzZTsKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAKICAg
ICBzdGF0aWMgSlNHbG9iYWxUaGlzKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAog
cHJvdGVjdGVkOgogICAgIEpTR2xvYmFsVGhpcyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlKQorICAgICAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KGdsb2JhbERhdGEs
IHN0cnVjdHVyZSkKICAgICB7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAx
Mjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw2ICsxMDQsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gbV9qc1N0cmlu
Z3M7CiAgICAgfTsKIAorICAgIEhBU19JTU1PUlRBTF9TVFJVQ1RVUkUoSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcik7CisKICAgICBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OnNldEVudW1lcmF0aW9uQ2Fj
aGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBlbnVt
ZXJhdGlvbkNhY2hlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc0RpY3Rpb25hcnkoKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAkocmV2aXNpb24g
MTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRf
Q0xBU1NfRklUU19JTl9DRUxMKEpTU2NvcGUpOworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNU
T1IoSlNTY29wZSk7CiAKIHZvaWQgSlNTY29wZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw4IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgSlNSb3BlU3RyaW5nKiBqc1N0cmluZ0J1aWxkZXIoSlNHbG9i
YWxEYXRhKik7CiAKKyAgICBIQVNfSU1NT1JUQUxfU1RSVUNUVVJFKEpTU3RyaW5nKTsKKwogICAg
IGNsYXNzIEpTU3RyaW5nIDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAgICAgICBm
cmllbmQgY2xhc3MgSklUOwpAQCAtMzIxLDYgKzMyMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBtdXRhYmxlIEZpeGVkQXJyYXk8V3JpdGVCYXJyaWVyPEpTU3RyaW5nPiwgc19tYXhJbnRl
cm5hbFJvcGVMZW5ndGg+IG1fZmliZXJzOwogICAgIH07CiAKKyAgICBIQVNfSU1NT1JUQUxfU1RS
VUNUVVJFKEpTUm9wZVN0cmluZyk7CisKICAgICBKU1N0cmluZyogYXNTdHJpbmcoSlNWYWx1ZSk7
CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIGFzU3RyaW5nKEpTVmFsdWUgdmFsdWUpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAkocmV2
aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVy
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDE1ICsyMiwxNSBAQAogI2lmbmRlZiBKU1dy
YXBwZXJPYmplY3RfaAogI2RlZmluZSBKU1dyYXBwZXJPYmplY3RfaAogCi0jaW5jbHVkZSAiSlNP
YmplY3QuaCIKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIC8vIFRoaXMgY2xhc3MgaXMgdXNlZCBhcyBhIGJhc2UgZm9yIGNsYXNzZXMg
c3VjaCBhcyBTdHJpbmcsCiAgICAgLy8gTnVtYmVyLCBCb29sZWFuIGFuZCBEYXRlIHdoaWNoIGFy
ZSB3cmFwcGVycyBmb3IgcHJpbWl0aXZlIHR5cGVzLgotICAgIGNsYXNzIEpTV3JhcHBlck9iamVj
dCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAgICBjbGFzcyBKU1dyYXBwZXJPYmplY3Qg
OiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgdHlw
ZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgICAgIHR5cGVkZWYgSlNEZXN0cnVjdGli
bGVPYmplY3QgQmFzZTsKIAogICAgICAgICBKU1ZhbHVlIGludGVybmFsVmFsdWUoKSBjb25zdDsK
ICAgICAgICAgdm9pZCBzZXRJbnRlcm5hbFZhbHVlKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUpOwpA
QCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgaW5saW5lIEpT
V3JhcHBlck9iamVjdDo6SlNXcmFwcGVyT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxE
YXRhLCBzdHJ1Y3R1cmUpCisgICAgICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3QoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlKQogICAgIHsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NF
TEwoTWF0aE9iamVjdCk7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihNYXRoT2JqZWN0
KTsKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0Fi
cyhFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQ
cm90b0Z1bmNBQ29zKEV4ZWNTdGF0ZSopOwpAQCAtNTksOSArNjAsNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoCiAKIG5hbWVzcGFjZSBKU0MgewogCi1BU1NFUlRf
SEFTX1RSSVZJQUxfREVTVFJVQ1RPUihNYXRoT2JqZWN0KTsKLQotY29uc3QgQ2xhc3NJbmZvIE1h
dGhPYmplY3Q6OnNfaW5mbyA9IHsgIk1hdGgiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAw
LCBFeGVjU3RhdGU6Om1hdGhUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShNYXRoT2JqZWN0KSB9
OworY29uc3QgQ2xhc3NJbmZvIE1hdGhPYmplY3Q6OnNfaW5mbyA9IHsgIk1hdGgiLCAmQmFzZTo6
c19pbmZvLCAwLCBFeGVjU3RhdGU6Om1hdGhUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShNYXRo
T2JqZWN0KSB9OwogCiAvKiBTb3VyY2UgZm9yIE1hdGhPYmplY3QubHV0LmgKIEBiZWdpbiBtYXRo
VGFibGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hbWVJbnN0YW5jZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hbWVJbnN0YW5j
ZS5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YW1lSW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTQgKzI2LDE0IEBACiAjaWZuZGVm
IE5hbWVJbnN0YW5jZV9oCiAjZGVmaW5lIE5hbWVJbnN0YW5jZV9oCiAKLSNpbmNsdWRlICJKU09i
amVjdC5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiUHJp
dmF0ZU5hbWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIE5hbWVJbnN0YW5jZSA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK2NsYXNzIE5hbWVJbnN0YW5jZSA6IHB1YmxpYyBKU0Rl
c3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0
IEJhc2U7CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwogCiAgICAgc3Rh
dGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cC5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHAuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMyw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBPd25QdHI8WWFycjo6Qnl0ZWNvZGVQYXR0ZXJuPiBtX3Jl
Z0V4cEJ5dGVjb2RlOwogICAgIH07CiAKKyAgICBIQVNfSU1NT1JUQUxfU1RSVUNUVVJFKFJlZ0V4
cCk7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gUmVnRXhwX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAkocmV2aXNp
b24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsOCArNTAsOSBAQCBzdGF0aWMgSlNWYWx1ZSByZWdF
eHBPYmplY3RTb3VyY2UoRXhlY1N0CiBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJ
VFNfSU5fQ0VMTChSZWdFeHBPYmplY3QpOworQVNTRVJUX0hBU19UUklWSUFMX0RFU1RSVUNUT1Io
UmVnRXhwT2JqZWN0KTsKIAotY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cE9iamVjdDo6c19pbmZvID0g
eyAiUmVnRXhwIiwgJkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgRXhlY1N0YXRlOjpyZWdF
eHBUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShSZWdFeHBPYmplY3QpIH07Citjb25zdCBDbGFz
c0luZm8gUmVnRXhwT2JqZWN0OjpzX2luZm8gPSB7ICJSZWdFeHAiLCAmQmFzZTo6c19pbmZvLCAw
LCBFeGVjU3RhdGU6OnJlZ0V4cFRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJlZ0V4cE9iamVj
dCkgfTsKIAogLyogU291cmNlIGZvciBSZWdFeHBPYmplY3QubHV0LmgKIEBiZWdpbiByZWdFeHBU
YWJsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1
ZU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJz
ZUFycmF5VmFsdWVNYXAuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgs
NiArMTI4LDggQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9yZXBvcnRlZENhcGFjaXR5OwogfTsK
IAorSEFTX0lNTU9SVEFMX1NUUlVDVFVSRShTcGFyc2VBcnJheVZhbHVlTWFwKTsKKwogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBTcGFyc2VBcnJheVZhbHVlTWFwX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMjg3MTIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDY0LDE2ICs0NjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWdu
ZWQgbV9zdGF0aWNGdW5jdGlvblJlaWZpZWQ7CiAgICAgfTsKIAotICAgIHRlbXBsYXRlIDw+IGlu
bGluZSB2b2lkKiBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlPihIZWFwJiBoZWFwKQotICAgIHsKLSNp
ZiBFTkFCTEUoR0NfVkFMSURBVElPTikKLSAgICAgICAgQVNTRVJUKCFoZWFwLmdsb2JhbERhdGEo
KS0+aXNJbml0aWFsaXppbmdPYmplY3QoKSk7Ci0gICAgICAgIGhlYXAuZ2xvYmFsRGF0YSgpLT5z
ZXRJbml0aWFsaXppbmdPYmplY3RDbGFzcygmU3RydWN0dXJlOjpzX2luZm8pOwotI2VuZGlmCi0g
ICAgICAgIEpTQ2VsbCogcmVzdWx0ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oaGVhcC5hbGxvY2F0
ZVN0cnVjdHVyZShzaXplb2YoU3RydWN0dXJlKSkpOwotICAgICAgICByZXN1bHQtPmNsZWFyU3Ry
dWN0dXJlKCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQorICAgIEhBU19JTU1PUlRB
TF9TVFJVQ1RVUkUoU3RydWN0dXJlKTsKIAogICAgIGlubGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVy
ZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbywgY29u
c3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUpCiAgICAg
ewpAQCAtNjE5LDE1ICs2MTAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQVNTRVJUKG1f
c3RydWN0dXJlIHx8ICFnbG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZSk7CiAgICAgfQogCi0g
ICAgaW5saW5lIGNvbnN0IENsYXNzSW5mbyogSlNDZWxsOjpjbGFzc0luZm8oKSBjb25zdAotICAg
IHsKLSNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKLSAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJl
LnVudmFsaWRhdGVkR2V0KCktPmNsYXNzSW5mbygpOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1f
c3RydWN0dXJlLT5jbGFzc0luZm8oKTsKLSNlbmRpZgotICAgIH0KLQogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBTdHJ1Y3R1cmVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC04Miw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPd25BcnJheVB0cjxX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiA+IG1fdmVjdG9yOwogICAgIH07CiAKKyAgICBIQVNfSU1N
T1JUQUxfU1RSVUNUVVJFKFN0cnVjdHVyZUNoYWluKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ICNlbmRpZiAvLyBTdHJ1Y3R1cmVDaGFpbl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyNyw2
ICszMjcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFNoYXJlZFN5bWJvbFRhYmxl
IDogcHVibGljIEpTQ2VsbCwgcHVibGljIFN5bWJvbFRhYmxlIHsKICAgICBwdWJsaWM6CisgICAg
ICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisKICAgICAgICAgc3RhdGljIFNoYXJlZFN5bWJvbFRh
YmxlKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICB7CiAgICAgICAg
ICAgICBTaGFyZWRTeW1ib2xUYWJsZSogc2hhcmVkU3ltYm9sVGFibGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxTaGFyZWRTeW1ib2xUYWJsZT4oZ2xvYmFsRGF0YS5oZWFwKSkgU2hhcmVk
U3ltYm9sVGFibGUoZ2xvYmFsRGF0YSk7CkBAIC0zODAsNyArMzgyLDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGludCBtX2NhcHR1cmVTdGFydDsKICAgICAgICAgaW50IG1fY2FwdHVyZUVu
ZDsKICAgICB9OwotICAgIAorICAgCisgICAgSEFTX0lNTU9SVEFMX1NUUlVDVFVSRShTaGFyZWRT
eW1ib2xUYWJsZSk7CisgCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFN5bWJvbFRh
YmxlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA5LTE2ICBN
YXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRGVsYXll
ZCBzdHJ1Y3R1cmUgc3dlZXAgY2FuIGxlYWsgc3RydWN0dXJlcyB3aXRob3V0IGJvdW5kCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjU0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZ2V0
cyByaWQgb2YgdGhlIHNlcGFyYXRlIFN0cnVjdHVyZSBhbGxvY2F0b3IgaW4gdGhlIE1hcmtlZFNw
YWNlIGFuZCBhZGRzIHR3byBuZXcgZGVzdHJ1Y3Rvci1vbmx5CisgICAgICAgIGFsbG9jYXRvcnMu
IFdlIG5vdyBoYXZlIHNlcGFyYXRlIGFsbG9jYXRvcnMgZm9yIG91ciB0aHJlZSB0eXBlcyBvZiBv
YmplY3RzOiB0aG9zZSBvYmplY3RzIHdpdGggbm8gZGVzdHJ1Y3RvcnMsCisgICAgICAgIHRob3Nl
IG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycyBhbmQgd2l0aCBpbW1vcnRhbCBzdHJ1Y3R1cmVzLCBh
bmQgdGhvc2Ugb2JqZWN0cyB3aXRoIGRlc3RydWN0b3JzIHRoYXQgZG9uJ3QgaGF2ZSAKKyAgICAg
ICAgaW1tb3J0YWwgc3RydWN0dXJlcy4gQWxsIG9mIHRoZSBvYmplY3RzIG9mIHRoZSB0aGlyZCB0
eXBlIChkZXN0cnVjdG9ycyB3aXRob3V0IGltbW9ydGFsIHN0cnVjdHVyZXMpIG5vdyAKKyAgICAg
ICAgaW5oZXJpdCBmcm9tIGEgbmV3IGNsYXNzIG5hbWVkIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0ICh3
aGljaCBpbiB0dXJuIGlzIGEgc3ViY2xhc3Mgb2YgSlNOb25GaW5hbE9iamVjdCksIHdoaWNoIHN0
b3JlcyAKKyAgICAgICAgdGhlIENsYXNzSW5mbyBmb3IgdGhlc2UgY2xhc3NlcyBhdCBhIGZpeGVk
IG9mZnNldCBmb3Igc2FmZSByZXRyaWV2YWwgZHVyaW5nIHN3ZWVwaW5nL2Rlc3RydWN0aW9uLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvSlNEZXN0cnVjdGFibGVPYmplY3QuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01XcmFwcGVyLmg6IEluaGVyaXRzIGZyb20gSlNEZXN0cnVjdGlibGVPYmplY3QuCisg
ICAgICAgIChKU0RPTVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XcmFwcGVyOjpK
U0RPTVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOiBBZGQgZmluYWxpemVycyB0byBhbnl0aGluZyB0aGF0IGluaGVyaXRzIGZyb20gSlNHbG9i
YWxPYmplY3QsCisgICAgICAgIGUuZy4gSlNET01XaW5kb3cgYW5kIEpTV29ya2VyQ29udGV4dHMu
IEZvciB0aG9zZSBjbGFzc2VzIHdlIGFsc28gbmVlZCB0byB1c2UgdGhlIE5FRURTX0RFU1RSVUNU
T1IgbWFjcm8uCisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgICogYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLmg6IEluaGVyaXQgZnJvbSBKU0Rlc3RydWN0aWJsZU9iamVjdC4KKyAg
ICAgICAgKE9iamNGYWxsYmFja09iamVjdEltcCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLm1tOgorICAgICAgICAoQmluZGluZ3MpOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpPYmpjRmFsbGJhY2tPYmplY3RJbXApOgorICAgICAg
ICAqIGJyaWRnZS9ydW50aW1lX2FycmF5LmNwcDogVXNlIGEgZmluYWxpemVyIHNvIHRoYXQgSlNB
cnJheSBpc24ndCBmb3JjZWQgdG8gaW5oZXJpdCBmcm9tIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Lgor
ICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpkZXN0cm95KToKKyAg
ICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5oOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJy
YXk6OmNyZWF0ZSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29i
amVjdC5jcHA6IEluaGVyaXQgZnJvbSBKU0Rlc3RydWN0aWJsZU9iamVjdC4KKyAgICAgICAgKEJp
bmRpbmdzKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OlJ1bnRpbWVP
YmplY3QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5oOgorICAgICAgICAoUnVu
dGltZU9iamVjdCk6CisKIDIwMTItMDktMTYgIEthbGV2IExlbWJlciAgPGthbGV2bGVtYmVyQGdt
YWlsLmNvbT4KIAogICAgICAgICBbR1RLXSBNaXNzaW5nIGRsbGV4cG9ydCBjYXVzaW5nIGxpbmtp
bmcgZXJyb3JzIG9uIFdpbmRvd3MgcGxhdGZvcm0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxl
T2JqZWN0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9KU0Rlc3RydWN0aWJsZU9iamVjdF9oCisjZGVmaW5l
IFdlYkNvcmVfRldEX0pTRGVzdHJ1Y3RpYmxlT2JqZWN0X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oPgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDIwICsyMywyMiBAQAogI2RlZmluZSBKU0RPTVdyYXBwZXJfaAogCiAjaW5jbHVkZSAiSlNET01H
bG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8
cnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLWNsYXNzIEpTRE9NV3JhcHBlciA6IHB1
YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworY2xhc3MgSlNET01XcmFwcGVyIDogcHVibGlj
IEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgorICAgIHR5cGVkZWYgSlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworCiAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIEpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
SlNDOjpKU05vbkZpbmFsT2JqZWN0OjpnbG9iYWxPYmplY3QoKSk7IH0KICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gZ2xv
YmFsT2JqZWN0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiBwcm90ZWN0ZWQ6CiAg
ICAgSlNET01XcmFwcGVyKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkgCi0gICAgICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxP
YmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQorICAgICAgICA6IEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiAgICAgewogICAg
ICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQko
cmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTc0Miw2ICs3NDIsNyBAQCBzdWIgR2Vu
ZXJhdGVIZWFkZXIKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxEYXRhLmhlYXAp
KSAke2NsYXNzTmFtZX0oZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBpbXBsLCB3aW5kb3dTaGVsbCk7
XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcHRyLT5maW5pc2hD
cmVhdGlvbihnbG9iYWxEYXRhLCB3aW5kb3dTaGVsbCk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICAgICAgZ2xvYmFsRGF0YS5oZWFwLmFkZEZpbmFsaXplcihwdHIsIGRl
c3Ryb3kpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVy
biBwdHI7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB9XG5cbiIpOwog
ICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2VyQ29u
dGV4dCJ9KSB7CkBAIC03NDksNiArNzUwLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsRGF0YS5oZWFwKSkgJHtjbGFzc05hbWV9KGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSwgaW1wbCk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTtcbiIpOworICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBnbG9iYWxEYXRhLmhlYXAuYWRkRmluYWxp
emVyKHB0ciwgZGVzdHJveSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuIHB0cjtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IH1cblxuIik7CiAgICAgfSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCJ9KSB7CkBAIC0xMDA4LDYgKzEwMTAsMTQgQEAgc3ViIEdl
bmVyYXRlSGVhZGVyCiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAifTtcblxuIik7CiAKKyAg
ICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgfHwgJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0pIHsKKyAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIn0gLy8gbmFtZXNwYWNlIFdlYkNvcmVcblxuIik7CisgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICJuYW1lc3BhY2UgSlNDIHtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiTkVFRFNfREVTVFJVQ1RPUihXZWJDb3JlOjoke2NsYXNzTmFtZX0sIGZhbHNlKTtc
blxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9IC8vIG5hbWVzcGFjZSBKU0Nc
blxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJuYW1lc3BhY2UgV2ViQ29yZSB7
XG5cbiIpOworICAgIH0KKwogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJKU0lubGluZUdldE93blByb3BlcnR5U2xvdCJ9ICYmICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QifSkgewogICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiQUxXQVlTX0lOTElORSBib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJv
cGVydHlTbG90KEpTQzo6SlNDZWxsKiBjZWxsLCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAie1xuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25z
dCBDbGFzc0luZm8gUnVudGltZUFycmF5OjpzX2luZm8gPSB7ICJSdW50aW1lQXJyYXkiLCAmSlNB
cnJheTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJ1bnRpbWVBcnJheSkgfTsK
K2NvbnN0IENsYXNzSW5mbyBSdW50aW1lQXJyYXk6OnNfaW5mbyA9IHsgIlJ1bnRpbWVBcnJheSIs
ICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUnVudGltZUFycmF5KSB9
OwogCiBSdW50aW1lQXJyYXk6OlJ1bnRpbWVBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgIDogSlNBcnJheShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVy
ZSwgMCkKQEAgLTU3LDcgKzU3LDcgQEAgUnVudGltZUFycmF5Ojp+UnVudGltZUFycmF5KCkKIAog
dm9pZCBSdW50aW1lQXJyYXk6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogewotICAgIHN0YXRpY19j
YXN0PFJ1bnRpbWVBcnJheSo+KGNlbGwpLT5SdW50aW1lQXJyYXk6On5SdW50aW1lQXJyYXkoKTsK
KyAgICBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCktPlJ1bnRpbWVBcnJheTo6flJ1bnRpbWVB
cnJheSgpOwogfQogCiBKU1ZhbHVlIFJ1bnRpbWVBcnJheTo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0
ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX2FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfYXJyYXkuaAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfYXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBw
dWJsaWM6CiAgICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVj
YXRlZEdldERPTVN0cnVjdHVyZTxSdW50aW1lQXJyYXk+KGV4ZWMpOwogICAgICAgICBSdW50aW1l
QXJyYXkqIHJ1bnRpbWVBcnJheSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJ1bnRpbWVB
cnJheT4oKmV4ZWMtPmhlYXAoKSkpIFJ1bnRpbWVBcnJheShleGVjLCBkb21TdHJ1Y3R1cmUpOwog
ICAgICAgICBydW50aW1lQXJyYXktPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwg
YXJyYXkpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC5hZGRGaW5hbGl6ZXIocnVu
dGltZUFycmF5LCBkZXN0cm95KTsKICAgICAgICAgcmV0dXJuIHJ1bnRpbWVBcnJheTsKICAgICB9
CiAKQEAgLTg4LDYgKzg5LDggQEAgcHJpdmF0ZToKIAogICAgIEJpbmRpbmdzQXJyYXkqIG1fYXJy
YXk7CiB9OworCitORUVEU19ERVNUUlVDVE9SKFJ1bnRpbWVBcnJheSwgZmFsc2UpOwogICAgIAog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmNwcAkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTAgKzM1LDEwIEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGluZ3Mg
ewogCi1jb25zdCBDbGFzc0luZm8gUnVudGltZU9iamVjdDo6c19pbmZvID0geyAiUnVudGltZU9i
amVjdCIsICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoUnVudGltZU9iamVjdCkgfTsKK2NvbnN0IENsYXNzSW5mbyBSdW50aW1lT2JqZWN0OjpzX2lu
Zm8gPSB7ICJSdW50aW1lT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShSdW50aW1lT2JqZWN0KSB9OwogCiBSdW50aW1lT2JqZWN0OjpSdW50aW1lT2JqZWN0
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQYXNzUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSkKLSAgICA6IEpTTm9uRmluYWxP
YmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKKyAgICA6IEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiAg
ICAgLCBtX2luc3RhbmNlKGluc3RhbmNlKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfb2JqZWN0LmgJKHJldmlzaW9uIDEyODcxMikKKysrIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiw5IEBACiBu
YW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKLWNsYXNzIFJ1bnRpbWVPYmpl
Y3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitjbGFzcyBSdW50aW1lT2JqZWN0IDogcHVi
bGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTTm9uRmlu
YWxPYmplY3QgQmFzZTsKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAK
ICAgICBzdGF0aWMgUnVudGltZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8
SW5zdGFuY2U+IGluc3RhbmNlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfcnVudGltZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfcnVudGltZS5oCShyZXZpc2lvbiAxMjg3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsOSArOTAsOSBA
QCBwcml2YXRlOgogICAgIFJldGFpblB0cjxPYmplY3RTdHJ1Y3RQdHI+IF9hcnJheTsKIH07CiAK
LWNsYXNzIE9iamNGYWxsYmFja09iamVjdEltcCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
K2NsYXNzIE9iamNGYWxsYmFja09iamVjdEltcCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVj
dCB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgdHlw
ZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwogCiAgICAgc3RhdGljIE9iamNGYWxsYmFj
a09iamVjdEltcCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgT2JqY0luc3RhbmNlKiBpbnN0YW5jZSwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5h
bWUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1l
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGlt
ZS5tbQkocmV2aXNpb24gMTI4NzEyKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsMTAgKzE4OCwxMCBAQCB1bnNpZ25l
ZCBpbnQgT2JqY0FycmF5OjpnZXRMZW5ndGgoKSBjb25zCiAgICAgcmV0dXJuIFtfYXJyYXkuZ2V0
KCkgY291bnRdOwogfQogCi1jb25zdCBDbGFzc0luZm8gT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpz
X2luZm8gPSB7ICJPYmpjRmFsbGJhY2tPYmplY3QiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZv
LCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE9iamNGYWxsYmFja09iamVjdEltcCkgfTsKK2Nv
bnN0IENsYXNzSW5mbyBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnNfaW5mbyA9IHsgIk9iamNGYWxs
YmFja09iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoT2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wKSB9OwogCiBPYmpjRmFsbGJhY2tPYmplY3RJbXA6Ok9iamNGYWxs
YmFja09iamVjdEltcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgT2JqY0luc3RhbmNlKiBpLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKLSAg
ICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVy
ZSkKKyAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
LCBzdHJ1Y3R1cmUpCiAgICAgLCBfaW5zdGFuY2UoaSkKICAgICAsIG1faXRlbShwcm9wZXJ0eU5h
bWUpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166396</attachid>
            <date>2012-09-30 18:30:19 -0700</date>
            <delta_ts>2012-10-01 12:17:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96546-20120930182934.patch</filename>
            <type>text/plain</type>
            <size>102107</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5OTk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NSBA
QAorMjAxMi0wOS0xNiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIERlbGF5ZWQgc3RydWN0dXJlIHN3ZWVwIGNhbiBsZWFrIHN0cnVjdHVyZXMgd2l0
aG91dCBib3VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTY1NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGdldHMgcmlkIG9mIHRoZSBzZXBhcmF0ZSBTdHJ1Y3R1cmUgYWxsb2NhdG9y
IGluIHRoZSBNYXJrZWRTcGFjZSBhbmQgYWRkcyB0d28gbmV3IGRlc3RydWN0b3Itb25seQorICAg
ICAgICBhbGxvY2F0b3JzLiBXZSBub3cgaGF2ZSBzZXBhcmF0ZSBhbGxvY2F0b3JzIGZvciBvdXIg
dGhyZWUgdHlwZXMgb2Ygb2JqZWN0czogdGhvc2Ugb2JqZWN0cyB3aXRoIG5vIGRlc3RydWN0b3Jz
LAorICAgICAgICB0aG9zZSBvYmplY3RzIHdpdGggZGVzdHJ1Y3RvcnMgYW5kIHdpdGggaW1tb3J0
YWwgc3RydWN0dXJlcywgYW5kIHRob3NlIG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycyB0aGF0IGRv
bid0IGhhdmUgCisgICAgICAgIGltbW9ydGFsIHN0cnVjdHVyZXMuIEFsbCBvZiB0aGUgb2JqZWN0
cyBvZiB0aGUgdGhpcmQgdHlwZSAoZGVzdHJ1Y3RvcnMgd2l0aG91dCBpbW1vcnRhbCBzdHJ1Y3R1
cmVzKSBub3cgCisgICAgICAgIGluaGVyaXQgZnJvbSBhIG5ldyBjbGFzcyBuYW1lZCBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCAod2hpY2ggaW4gdHVybiBpcyBhIHN1YmNsYXNzIG9mIEpTTm9uRmluYWxP
YmplY3QpLCB3aGljaCBzdG9yZXMgCisgICAgICAgIHRoZSBDbGFzc0luZm8gZm9yIHRoZXNlIGNs
YXNzZXMgYXQgYSBmaXhlZCBvZmZzZXQgZm9yIHNhZmUgcmV0cmlldmFsIGR1cmluZyBzd2VlcGlu
Zy9kZXN0cnVjdGlvbi4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3Bw
OiBVc2UgSlNEZXN0cnVjdGlibGVPYmplY3QgZm9yIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci4KKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6SlNDYWxs
YmFja0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmg6
CisgICAgICAgIChKU0NhbGxiYWNrQ29uc3RydWN0b3IpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0LmNwcDogSW5oZXJpdCBmcm9tIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IGZvciBub3Jt
YWwgSlNDYWxsYmFja09iamVjdHMgYW5kIHVzZSBhIGZpbmFsaXplciBmb3IgCisgICAgICAgIEpT
Q2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+LCBzaW5jZSBKU0dsb2JhbE9iamVjdCBhbHNv
IHVzZXMgYSBmaW5hbGl6ZXIuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjo6OmNyZWF0
ZSk6IFdlIG5lZWQgdG8gbW92ZSB0aGUgY3JlYXRlIGZ1bmN0aW9uIGZvciBKU0NhbGxiYWNrT2Jq
ZWN0PEpTR2xvYmFsT2JqZWN0PiBvdXQgb2YgbGluZSBzbyB3ZSBjYW4gYWRkIAorICAgICAgICB0
aGUgZmluYWxpemVyIGZvciBpdC4gV2UgZG9uJ3Qgd2FudCB0byBhZGQgdGhlIGZpbmFsaXplciBp
cyBzb21ldGhpbmcgbGlrZSBmaW5pc2hDcmVhdGlvbiBpbiBjYXNlIHNvbWVib2R5IGRlY2lkZXMg
CisgICAgICAgIHRvIHN1YmNsYXNzIHRoaXMuIFdlIHVzZSB0aGlzIHNhbWUgdGVjaG5pcXVlIGZv
ciBtYW55IG90aGVyIHN1YmNsYXNzZXMgb2YgSlNHbG9iYWxPYmplY3QuCisgICAgICAgIChKU0M6
Ojo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgor
ICAgICAgICAoSlNDYWxsYmFja09iamVjdCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIEFQ
SS9KU0NsYXNzUmVmLmNwcDogQ2hhbmdlIGFsbCB0aGUgSlNDYWxsYmFja09iamVjdDxKU05vbkZp
bmFsT2JqZWN0PiB0byB1c2UgSlNEZXN0cnVjdGlibGVPYmplY3QgaW5zdGVhZC4KKyAgICAgICAg
KE9wYXF1ZUpTQ2xhc3M6OnByb3RvdHlwZSk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNw
cDogRGl0dG8uCisgICAgICAgIChKU09iamVjdE1ha2UpOgorICAgICAgICAoSlNPYmplY3RHZXRQ
cml2YXRlKToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJpdmF0ZSk6CisgICAgICAgIChKU09iamVj
dEdldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU09iamVjdFNldFByaXZhdGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU09iamVjdERlbGV0ZVByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgICog
QVBJL0pTVmFsdWVSZWYuY3BwOiBEaXR0by4KKyAgICAgICAgKEpTVmFsdWVJc09iamVjdE9mQ2xh
c3MpOgorICAgICAgICAqIEFQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcDogRGl0dG8u
CisgICAgICAgICogSlNDVHlwZWRBcnJheVN0dWJzLmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6IFVzZSB0aGUgcHJvcGVyIGFsbG9jYXRvciB0eXBlIHdo
ZW4gZG9pbmcgaW5saW5lIGFsbG9jYXRpb24gaW4gdGhlIERGRy4KKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QpOgorICAg
ICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGhlYXAvSGVh
cC5oOiBBZGQgYWNjZXNzb3JzIGZvciB0aGUgdmFyaW91cyB0eXBlcyBvZiBhbGxvY2F0b3JzIG5v
dy4gQWxzbyByZW1vdmUgdGhlIGlzU2FmZVRvU3dlZXBTdHJ1Y3R1cmVzIGZ1bmN0aW9uIAorICAg
ICAgICBzaW5jZSBpdCdzIGFsd2F5cyBzYWZlIHRvIHN3ZWVwIFN0cnVjdHVyZXMgbm93LgorICAg
ICAgICAoSlNDOjpIZWFwOjphbGxvY2F0b3JGb3JPYmplY3RXaXRoTm9ybWFsRGVzdHJ1Y3Rvcik6
IAorICAgICAgICAoSlNDOjpIZWFwOjphbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0YWxTdHJ1
Y3R1cmVEZXN0cnVjdG9yKToKKyAgICAgICAgKEhlYXApOgorICAgICAgICAoSlNDOjpIZWFwOjph
bGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChK
U0M6OkhlYXA6OmFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3Rvcik6CisgICAg
ICAgICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwOiBSZW1vdmUgYWxsIHRoZSBsb2dpYyB0
byBkZXRlY3Qgd2hlbiBpdCdzIHNhZmUgdG8gc3dlZXAgU3RydWN0dXJlcyBmcm9tIHRoZSAKKyAg
ICAgICAgSW5jcmVtZW50YWxTd2VlcGVyIHNpbmNlIGl0J3MgYWx3YXlzIHNhZmUgdG8gc3dlZXAg
U3RydWN0dXJlcyBub3cuCisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVt
ZW50YWxTd2VlcGVyKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5l
eHRCbG9jayk6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGlu
Zyk6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6d2lsbEZpbmlzaFN3ZWVwaW5n
KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaDoK
KyAgICAgICAgKEluY3JlbWVudGFsU3dlZXBlcik6CisgICAgICAgICogaGVhcC9NYXJrZWRBbGxv
Y2F0b3IuY3BwOiBSZW1vdmUgdGhlIGxvZ2ljIHRoYXQgd2FzIHByZXZlbnRpbmcgdXMgZnJvbSBz
d2VlcGluZyBTdHJ1Y3R1cmVzIGlmIGl0IHdhc24ndCBzYWZlLiBBZGQgCisgICAgICAgIHRyYWNr
aW5nIG9mIHRoZSBzcGVjaWZpYyBkZXN0cnVjdG9yIHR5cGUgb2YgYWxsb2NhdG9yLiAKKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUhlbHBlcik6CisgICAgICAgIChK
U0M6Ok1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVCbG9jayk6CisgICAgICAgICogaGVhcC9NYXJr
ZWRBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpkZXN0cnVjdG9y
VHlwZSk6CisgICAgICAgIChNYXJrZWRBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6aW5pdCk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6IEFkZCBhbGwgdGhlIGRl
c3RydWN0b3IgdHlwZSBzdHVmZiB0byBNYXJrZWRCbG9ja3Mgc28gdGhhdCB3ZSBkbyB0aGUgcmln
aHQgdGhpbmcgd2hlbiBzd2VlcGluZy4gCisgICAgICAgIFdlIGFsc28gdXNlIHRoZSBzdG9yZWQg
ZGVzdHJ1Y3RvciB0eXBlIHRvIGRldGVybWluZSB0aGUgcmlnaHQgdGhpbmcgdG8gZG8gaW4gYWxs
IEpTQ2VsbDo6Y2xhc3NJbmZvKCkgY2FsbHMuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6TWFya2VkQmxvY2spOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnNwZWNpYWxpemVkU3dlZXApOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3dlZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6c3dlZXBIZWxwZXIpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphbGxvY2F0b3IpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6ZGVzdHJ1Y3RvclR5cGUpOgorICAgICAgICAqIGhlYXAvTWFy
a2VkU3BhY2UuY3BwOiBBZGQgdGhlIG5ldyBkZXN0cnVjdG9yIGFsbG9jYXRvcnMgdG8gTWFya2Vk
U3BhY2UuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpNYXJrZWRTcGFjZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6Y2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSk6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjppc1BhZ2VkT3V0KToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZyZWVC
bG9jayk6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoTWFya2VkU3Bh
Y2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6aW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVj
dG9yQWxsb2NhdG9yRm9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Om5vcm1hbERlc3Ry
dWN0b3JBbGxvY2F0b3JGb3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YWxsb2NhdGVX
aXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3Bh
Y2U6OmFsbG9jYXRlV2l0aE5vcm1hbERlc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRT
cGFjZTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmNwcDogQWRk
IGluY2x1ZGUgYmVjYXVzZSB0aGUgc3ltYm9sIHdhcyBuZWVkZWQgaW4gYW4gaW5saW5lZCBmdW5j
dGlvbi4KKyAgICAgICAgKiBqaXQvSklULmg6IE1ha2Ugc3VyZSB3ZSB1c2UgdGhlIGNvcnJlY3Qg
YWxsb2NhdG9yIHdoZW4gZG9pbmcgaW5saW5lIGFsbG9jYXRpb25zIGluIHRoZSBiYXNlbGluZSBK
SVQuCisgICAgICAgICogaml0L0pJVElubGluZU1ldGhvZHMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QWxs
b2NhdGVKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QWxsb2NhdGVKU0Fy
cmF5KToKKyAgICAgICAgKiBqc2MuY3BwOiAKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6Y3JlYXRl
KTogQWRkIGZpbmFsaXplciBoZXJlIHNpbmNlIEpTR2xvYmFsT2JqZWN0IG5lZWRzIHRvIHVzZSBh
IGZpbmFsaXplciBpbnN0ZWFkIG9mIGluaGVyaXRpbmcgZnJvbSAKKyAgICAgICAgSlNEZXN0cnVj
dGlibGVPYmplY3QuCisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOiBJbmhlcml0IGZy
b20gSlNEZXN0cnVjdGlibGVPYmplY3QuCisgICAgICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRp
bWUvQXJndW1lbnRzLmg6CisgICAgICAgIChBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpBcmd1
bWVudHM6OkFyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6
IEFkZGVkIGFuIGFzc2VydCB0byBtYWtlIHN1cmUgd2UgaGF2ZSBhIHRyaXZpYWwgZGVzdHJ1Y3Rv
ci4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6IEluZGlj
YXRlIHRoYXQgYWxsIG9mIHRoZSBFeGVjdXRhYmxlKiBjbGFzc2VzIGhhdmUgaW1tb3J0YWwgU3Ry
dWN0dXJlcy4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmNwcDogSW5oZXJpdCBmcm9tIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgIChJbnRlcm5hbEZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOiBBZGRlZCB0d28gc3RhdGljIGJv
b2xzLCBuZWVkc0Rlc3RydWN0aW9uIGFuZCBoYXNJbW1vcnRhbFN0cnVjdHVyZSwgdGhhdCBjbGFz
c2VzIGNhbiBvdmVycmlkZSAKKyAgICAgICAgdG8gaW5kaWNhdGUgYXQgY29tcGlsZSB0aW1lIHdo
aWNoIHBhcnQgb2YgdGhlIGhlYXAgdGhleSBzaG91bGQgYmUgYWxsb2NhdGVkIGluLgorICAgICAg
ICAoSlNDOjphbGxvY2F0ZUNlbGwpOiBVc2UgdGhlIGFwcHJvcHJpYXRlIGFsbG9jYXRvciBkZXBl
bmRpbmcgb24gdGhlIGRlc3RydWN0b3IgdHlwZS4KKyAgICAgICAgKiBydW50aW1lL0pTRGVzdHJ1
Y3RpYmxlT2JqZWN0Lmg6IEFkZGVkLiBOZXcgY2xhc3MgdGhhdCBzdG9yZXMgdGhlIENsYXNzSW5m
byBvZiBhbnkgc3ViY2xhc3Mgc28gdGhhdCBpdCBjYW4gYmUgCisgICAgICAgIGFjY2Vzc2VkIHNh
ZmVseSB3aGVuIHRoZSBvYmplY3QgaXMgYmVpbmcgZGVzdHJveWVkLgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3Q6OmNsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0OjpKU0Rlc3RydWN0aWJsZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Y2xhc3NJ
bmZvKTogQ2hlY2tzIHRoZSBjdXJyZW50IE1hcmtlZEJsb2NrIHRvIHNlZSB3aGVyZSBpdCBzaG91
bGQgZ2V0IHRoZSBDbGFzc0luZm8gZnJvbSBzbyB0aGF0IGl0J3MgYWx3YXlzIHNhZmUuCisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6IEpTR2xvYmFsT2JqZWN0IG5vdyB1c2Vz
IGEgZmluYWxpemVyIGluc3RlYWQgb2YgYSBkZXN0cnVjdG9yIHNvIHRoYXQgaXQgY2FuIGF2b2lk
IGZvcmNpbmcgYWxsIAorICAgICAgICBvZiBpdHMgcmVsYXRpdmVzIGluIHRoZSBpbmhlcml0YW5j
ZSBoaWVyYXJjaHkgKGUuZy4gSlNTY29wZSkgdG8gdXNlIGRlc3RydWN0b3JzIGFzIHdlbGwuCisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXNldCk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6IFNpbmNlIHdlIGFsd2F5
cyBjcmVhdGUgYSBmaW5hbGl6ZXIgbm93LCB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IGFk
ZGluZyBvbmUgCisgICAgICAgIGZvciB0aGUgbV9yYXJlRGF0YSBmaWVsZCB3aGVuIGl0J3MgY3Jl
YXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChK
U0MpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxUaGlzLmg6IEluaGVyaXQgZnJvbSBKU0Rl
c3RydWN0aWJsZU9iamVjdC4KKyAgICAgICAgKEpTR2xvYmFsVGhpcyk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsVGhpczo6SlNHbG9iYWxUaGlzKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaDogSGFzIGFuIGltbW9ydGFsIFN0cnVjdHVyZS4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICogcnVudGltZS9KU1N0cmluZy5oOiBIYXMgYW4gaW1tb3J0YWwgU3RydWN0dXJlLgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVjdC5oOiBJbmhlcml0
IGZyb20gSlNEZXN0cnVjdGlibGVPYmplY3QuCisgICAgICAgIChKU1dyYXBwZXJPYmplY3QpOgor
ICAgICAgICAoSlNDOjpKU1dyYXBwZXJPYmplY3Q6OkpTV3JhcHBlck9iamVjdCk6CisgICAgICAg
ICogcnVudGltZS9NYXRoT2JqZWN0LmNwcDogQ2xlYW5pbmcgdXAgc29tZSBvZiB0aGUgaW5oZXJp
dGFuY2Ugc3R1ZmYuCisgICAgICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRpbWUvTmFtZUluc3Rh
bmNlLmg6IEluaGVyaXQgZnJvbSBKU0Rlc3RydWN0aWJsZU9iamVjdC4KKyAgICAgICAgKE5hbWVJ
bnN0YW5jZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDogSGFzIGltbW9ydGFsIFN0cnVj
dHVyZS4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3QuY3Bw
OiBJbmhlcml0YW5jZSBjbGVhbnVwLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1l
L1NwYXJzZUFycmF5VmFsdWVNYXAuaDogSGFzIGltbW9ydGFsIFN0cnVjdHVyZS4KKyAgICAgICAg
KEpTQyk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDogSGFzIGltbW9ydGFsIFN0cnVj
dHVyZS4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5o
OiBEaXR0by4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5o
OiBEaXR0by4KKyAgICAgICAgKFNoYXJlZFN5bWJvbFRhYmxlKToKKyAgICAgICAgKEpTQyk6CisK
IDIwMTItMDktMjggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBB
U1NFUlRJT04gaW4gbV9ncmFwaFt0YWlsTm9kZUluZGV4XS5vcCgpID09IEZsdXNoIHx8IG1fZ3Jh
cGhbdGFpbE5vZGVJbmRleF0ub3AoKSA9PSBTZXRMb2NhbCBvbiBwbHVzLmdvb2dsZS5jb20KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAx
Mjk5OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29y
a2luZyBjb3B5KQpAQCAtNTM1LDYgKzUzNSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KU0NUeXBlZEFycmF5U3R1YnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJz
LmgJKHJldmlzaW9uIDEyOTk5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KU0NUeXBlZEFy
cmF5U3R1YnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBKU0NU
eXBlZEFycmF5U3R1YnNfaAogI2RlZmluZSBKU0NUeXBlZEFycmF5U3R1YnNfaAogCi0jaW5jbHVk
ZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1
ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KICNp
bmNsdWRlIDx3dGYvRmxvYXQ2NEFycmF5Lmg+CkBAIC00Miw5ICs0Miw5IEBACiBuYW1lc3BhY2Ug
SlNDIHsKICAgICAKICNkZWZpbmUgVFlQRURfQVJSQVkobmFtZSwgdHlwZSkgXAotY2xhc3MgSlMj
I25hbWUjI0FycmF5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeyBcCitjbGFzcyBKUyMjbmFt
ZSMjQXJyYXkgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeyBcCiBwdWJsaWM6IFwKLSAg
ICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsgXAorICAgIHR5cGVkZWYgSlNEZXN0cnVj
dGlibGVPYmplY3QgQmFzZTsgXAogICAgIHN0YXRpYyBKUyMjbmFtZSMjQXJyYXkqIGNyZWF0ZShK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
YXNzUmVmUHRyPG5hbWUjI0FycmF5PiBpbXBsKSBcCiAgICAgeyBcCiAgICAgICAgIEpTIyNuYW1l
IyNBcnJheSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKUyMjbmFtZSMj
QXJyYXk+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhlYXApKSBKUyMjbmFtZSMjQXJyYXko
c3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGltcGwpOyBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAkocmV2aXNpb24gMTI5OTk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3NywxMCArMTc3LDEzIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IEdsb2JhbE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2xvYmFs
T2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0
dXJlKTsKICAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBhcmd1bWVu
dHMpOworICAgICAgICBnbG9iYWxEYXRhLmhlYXAuYWRkRmluYWxpemVyKG9iamVjdCwgZGVzdHJv
eSk7CiAgICAgICAgIG9iamVjdC0+c2V0R2xvYmFsVGhpcyhnbG9iYWxEYXRhLCBKU1Byb3h5Ojpj
cmVhdGUoZ2xvYmFsRGF0YSwgSlNQcm94eTo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbERhdGEsIG9i
amVjdCwgb2JqZWN0LT5wcm90b3R5cGUoKSksIG9iamVjdCkpOwogICAgICAgICByZXR1cm4gb2Jq
ZWN0OwogICAgIH0KIAorICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBm
YWxzZTsKKwogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogICAgIHN0YXRpYyBj
b25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlOwog
CkBAIC0yNDUsNiArMjQ4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBwdXREaXJlY3QoZ2xvYmFs
RGF0YSwgaWRlbnRpZmllciwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywg
YXJndW1lbnRzLCBpZGVudGlmaWVyLnN0cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGZ1
bmN0aW9uKSk7CiAgICAgfQogfTsKKwogQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9iYWxP
YmplY3Q+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9HbG9iYWxPYmplY3RfZmFsc2UpOwogQVNTRVJU
X0NMQVNTX0ZJVFNfSU5fQ0VMTChHbG9iYWxPYmplY3QpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RSZWdFeHAuY3BwCShyZXZpc2lvbiAxMjk5OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdFJlZ0V4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSwxMSArMTE1LDE1IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBHbG9iYWxPYmplY3QqIGNyZWF0ZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEdsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgR2xvYmFsT2JqZWN0KGdsb2JhbERh
dGEsIHN0cnVjdHVyZSwgYXJndW1lbnRzKTsKKyAgICAgICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmplY3Q+KGdsb2JhbERh
dGEuaGVhcCkpIEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGFyZ3VtZW50cyk7
CisgICAgICAgIGdsb2JhbERhdGEuaGVhcC5hZGRGaW5hbGl6ZXIoZ2xvYmFsT2JqZWN0LCBkZXN0
cm95KTsKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdDsKICAgICB9CiAKICAgICBzdGF0aWMg
Y29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAorICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVz
dHJ1Y3RvciA9IGZhbHNlOworCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgMCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhHbG9iYWxPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVj
dG9yLmNwcAkocmV2aXNpb24gMTI5OTk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCArMzYsMTAg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIkNhbGxiYWNrQ29uc3RydWN0b3IiLCAmSlNOb25GaW5hbE9iamVj
dDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cikgfTsKK2NvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkNhbGxiYWNrQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcikgfTsKIAogSlNDYWxsYmFja0NvbnN0cnVjdG9y
OjpKU0NhbGxiYWNrQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYganNDbGFzcywgSlNPYmplY3RDYWxsQXNDb25z
dHJ1Y3RvckNhbGxiYWNrIGNhbGxiYWNrKQotICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxP
YmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQorICAgIDogSlNEZXN0cnVjdGlibGVPYmpl
Y3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKICAgICAsIG1fY2xhc3Mo
anNDbGFzcykKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgJKHJldmlzaW9u
IDEyOTk5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVj
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNywxMyBAQAogI2RlZmluZSBKU0NhbGxi
YWNrQ29uc3RydWN0b3JfaAogCiAjaW5jbHVkZSAiSlNPYmplY3RSZWYuaCIKLSNpbmNsdWRlIDxy
dW50aW1lL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSAicnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVj
dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgSlNDYWxsYmFja0NvbnN0cnVjdG9yIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgeworY2xhc3MgSlNDYWxsYmFja0NvbnN0cnVjdG9yIDog
cHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTTm9u
RmluYWxPYmplY3QgQmFzZTsKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7
CiAKICAgICBzdGF0aWMgSlNDYWxsYmFja0NvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNDbGFzc1JlZiBjbGFzc1JlZiwgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrIGNh
bGxiYWNrKSAKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5jcHAJKHJldmlzaW9uIDEyOTk5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE1ICsz
MiwyNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChK
U0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+KTsKK0FTU0VSVF9DTEFTU19GSVRTX0lO
X0NFTEwoSlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4pOwogQVNTRVJUX0NM
QVNTX0ZJVFNfSU5fQ0VMTChKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pik7CiAKIC8v
IERlZmluZSB0aGUgdHdvIHR5cGVzIG9mIEpTQ2FsbGJhY2tPYmplY3RzIHdlIHN1cHBvcnQuCi10
ZW1wbGF0ZSA8PiBjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2Jq
ZWN0Pjo6c19pbmZvID0geyAiQ2FsbGJhY2tPYmplY3QiLCAmSlNOb25GaW5hbE9iamVjdDo6c19p
bmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ2FsbGJhY2tPYmplY3QpIH07Ci10ZW1w
bGF0ZSA8PiBjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46
OnNfaW5mbyA9IHsgIkNhbGxiYWNrR2xvYmFsT2JqZWN0IiwgJkpTR2xvYmFsT2JqZWN0OjpzX2lu
Zm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNDYWxsYmFja09iamVjdCkgfTsKK3RlbXBs
YXRlIDw+IGNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0Pjo6c19pbmZvID0geyAiQ2FsbGJhY2tPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTQ2FsbGJhY2tPYmplY3QpIH07Cit0ZW1wbGF0ZSA8PiBjb25z
dCBDbGFzc0luZm8gSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OnNfaW5mbyA9IHsg
IkNhbGxiYWNrR2xvYmFsT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU0NhbGxiYWNrT2JqZWN0KSB9OworCit0ZW1wbGF0ZTw+IGNvbnN0IGJvb2wgSlND
YWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46Om5lZWRzRGVzdHJ1Y3Rpb24gPSB0
cnVlOwordGVtcGxhdGU8PiBjb25zdCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmpl
Y3Q+OjpuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CisKK3RlbXBsYXRlPD4KK0pTQ2FsbGJhY2tP
YmplY3Q8SlNHbG9iYWxPYmplY3Q+KiBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pjo6
Y3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDbGFzc1JlZiBjbGFzc1JlZiwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVj
dD4qIGNhbGxiYWNrT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNDYWxsYmFj
a09iamVjdDxKU0dsb2JhbE9iamVjdD4gPihnbG9iYWxEYXRhLmhlYXApKSBKU0NhbGxiYWNrT2Jq
ZWN0KGdsb2JhbERhdGEsIGNsYXNzUmVmLCBzdHJ1Y3R1cmUpOworICAgIGNhbGxiYWNrT2JqZWN0
LT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKKyAgICBnbG9iYWxEYXRhLmhlYXAuYWRkRmlu
YWxpemVyKGNhbGxiYWNrT2JqZWN0LCBkZXN0cm95KTsKKyAgICByZXR1cm4gY2FsbGJhY2tPYmpl
Y3Q7Cit9CiAKIHRlbXBsYXRlIDw+Ci1TdHJ1Y3R1cmUqIEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25G
aW5hbE9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCitTdHJ1Y3R1cmUqIEpT
Q2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvKQogeyAKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwg
Z2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCAmc19pbmZvKTsgCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3QuaAkocmV2aXNpb24gMTI5OTk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMywxMiArMTMzLDEw
IEBAIHB1YmxpYzoKICAgICAgICAgY2FsbGJhY2tPYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMp
OwogICAgICAgICByZXR1cm4gY2FsbGJhY2tPYmplY3Q7CiAgICAgfQotICAgIHN0YXRpYyBKU0Nh
bGxiYWNrT2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NsYXNzUmVm
IGNsYXNzUmVmLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIEpTQ2FsbGJh
Y2tPYmplY3QqIGNhbGxiYWNrT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlND
YWxsYmFja09iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNDYWxsYmFja09iamVjdChnbG9iYWxE
YXRhLCBjbGFzc1JlZiwgc3RydWN0dXJlKTsKLSAgICAgICAgY2FsbGJhY2tPYmplY3QtPmZpbmlz
aENyZWF0aW9uKGdsb2JhbERhdGEpOwotICAgICAgICByZXR1cm4gY2FsbGJhY2tPYmplY3Q7Ci0g
ICAgfQorICAgIHN0YXRpYyBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD4qIGNyZWF0ZShKU0dsb2Jh
bERhdGEmLCBKU0NsYXNzUmVmLCBTdHJ1Y3R1cmUqKTsKKworICAgIHN0YXRpYyBjb25zdCBib29s
IG5lZWRzRGVzdHJ1Y3Rpb247CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAog
ICAgIHZvaWQgc2V0UHJpdmF0ZSh2b2lkKiBkYXRhKTsKICAgICB2b2lkKiBnZXRQcml2YXRlKCk7
CkBAIC0xNzMsOCArMTcxLDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBzdGF0aWMgU3Ry
aW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOwogCi0gICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKLQogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogCiAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xh
c3NSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFz
c1JlZi5jcHAJKHJldmlzaW9uIDEyOTk5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDbGFzc1JlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw3ICsxOTksNyBAQCBKU09iamVj
dCogT3BhcXVlSlNDbGFzczo6cHJvdG90eXBlKEV4ZWNTCiAgICAgICAgIHJldHVybiBwcm90b3R5
cGU7CiAKICAgICAvLyBSZWN1cnNpdmUsIGJ1dCBzaG91bGQgYmUgZ29vZCBlbm91Z2ggZm9yIG91
ciBwdXJwb3NlcwotICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBKU0NhbGxiYWNrT2JqZWN0PEpT
Tm9uRmluYWxPYmplY3Q+OjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCks
IHByb3RvdHlwZUNsYXNzLCAmanNDbGFzc0RhdGEpOyAvLyBzZXQganNDbGFzc0RhdGEgYXMgdGhl
IG9iamVjdCdzIHByaXZhdGUgZGF0YSwgc28gaXQgY2FuIGNsZWFyIG91ciByZWZlcmVuY2Ugb24g
ZGVzdHJ1Y3Rpb24KKyAgICBKU09iamVjdCogcHJvdG90eXBlID0gSlNDYWxsYmFja09iamVjdDxK
U0Rlc3RydWN0aWJsZU9iamVjdD46OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1
cmUoKSwgcHJvdG90eXBlQ2xhc3MsICZqc0NsYXNzRGF0YSk7IC8vIHNldCBqc0NsYXNzRGF0YSBh
cyB0aGUgb2JqZWN0J3MgcHJpdmF0ZSBkYXRhLCBzbyBpdCBjYW4gY2xlYXIgb3VyIHJlZmVyZW5j
ZSBvbiBkZXN0cnVjdGlvbgogICAgIGlmIChwYXJlbnRDbGFzcykgewogICAgICAgICBpZiAoSlNP
YmplY3QqIHBhcmVudFByb3RvdHlwZSA9IHBhcmVudENsYXNzLT5wcm90b3R5cGUoZXhlYykpCiAg
ICAgICAgICAgICBwcm90b3R5cGUtPnNldFByb3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCksIHBh
cmVudFByb3RvdHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcAkocmV2aXNpb24gMTI5OTk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlKEpTQ29udGV4dFJlZiBjdAogICAgIGlmICghanNDbGFzcykKICAgICAg
ICAgcmV0dXJuIHRvUmVmKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpKTsKIAotICAgIEpTQ2Fs
bGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4qIG9iamVjdCA9IEpTQ2FsbGJhY2tPYmplY3Q8
SlNOb25GaW5hbE9iamVjdD46OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUo
KSwganNDbGFzcywgZGF0YSk7CisgICAgSlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9i
amVjdD4qIG9iamVjdCA9IEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Ojpj
cmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPmNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCksIGpzQ2xhc3MsIGRhdGEpOwog
ICAgIGlmIChKU09iamVjdCogcHJvdG90eXBlID0ganNDbGFzcy0+cHJvdG90eXBlKGV4ZWMpKQog
ICAgICAgICBvYmplY3QtPnNldFByb3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlw
ZSk7CiAKQEAgLTM0MSw4ICszNDEsOCBAQCB2b2lkKiBKU09iamVjdEdldFByaXZhdGUoSlNPYmpl
Y3RSZWYgb2JqCiAgICAgCiAgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09i
amVjdDxKU0dsb2JhbE9iamVjdD46OnNfaW5mbykpCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8SlND
YWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGUoKTsK
LSAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxP
YmplY3Q+OjpzX2luZm8pKQotICAgICAgICByZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8
SlNOb25GaW5hbE9iamVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGUoKTsKKyAgICBpZiAoanNP
YmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6
c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZSgpOwogICAgIAogICAgIHJldHVy
biAwOwogfQpAQCAtMzU1LDggKzM1NSw4IEBAIGJvb2wgSlNPYmplY3RTZXRQcml2YXRlKEpTT2Jq
ZWN0UmVmIG9iamUKICAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmpl
Y3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2YXRlKGRhdGEpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9Ci0gICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU05v
bkZpbmFsT2JqZWN0Pjo6c19pbmZvKSkgewotICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVj
dDxKU05vbkZpbmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJpdmF0ZShkYXRhKTsKKyAgICBp
ZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0Pjo6c19pbmZvKSkgeworICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0Rlc3Ry
dWN0aWJsZU9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGUoZGF0YSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCkBAIC0zNzIsOCArMzcyLDggQEAgSlNWYWx1ZVJl
ZiBKU09iamVjdEdldFByaXZhdGVQcm9wZXJ0eShKUwogICAgIElkZW50aWZpZXIgbmFtZShwcm9w
ZXJ0eU5hbWUtPmlkZW50aWZpZXIoJmV4ZWMtPmdsb2JhbERhdGEoKSkpOwogICAgIGlmIChqc09i
amVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpzX2luZm8p
KQogICAgICAgICByZXN1bHQgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVj
dD4qPihqc09iamVjdCktPmdldFByaXZhdGVQcm9wZXJ0eShuYW1lKTsKLSAgICBlbHNlIGlmIChq
c09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD46OnNf
aW5mbykpCi0gICAgICAgIHJlc3VsdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmlu
YWxPYmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2YXRlUHJvcGVydHkobmFtZSk7CisgICAgZWxz
ZSBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0Pjo6c19pbmZvKSkKKyAgICAgICAgcmVzdWx0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmpl
Y3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2YXRlUHJvcGVydHko
bmFtZSk7CiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHJlc3VsdCk7CiB9CiAKQEAgLTM4OCw4ICsz
ODgsOCBAQCBib29sIEpTT2JqZWN0U2V0UHJpdmF0ZVByb3BlcnR5KEpTQ29udGV4CiAgICAgICAg
IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0
UHJpdmF0ZVByb3BlcnR5KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSwganNWYWx1ZSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0Nh
bGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+OjpzX2luZm8pKSB7Ci0gICAgICAgIGpzQ2Fz
dDxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2
YXRlUHJvcGVydHkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lLCBqc1ZhbHVlKTsKKyAgICBpZiAo
anNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
Pjo6c19pbmZvKSkgeworICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0
aWJsZU9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShleGVjLT5nbG9iYWxE
YXRhKCksIG5hbWUsIGpzVmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNDA1LDggKzQwNSw4IEBAIGJvb2wgSlNPYmplY3REZWxldGVQcml2
YXRlUHJvcGVydHkoSlNDb24KICAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9i
YWxPYmplY3Q+Kj4oanNPYmplY3QpLT5kZWxldGVQcml2YXRlUHJvcGVydHkobmFtZSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0Nh
bGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+OjpzX2luZm8pKSB7Ci0gICAgICAgIGpzQ2Fz
dDxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5kZWxldGVQ
cml2YXRlUHJvcGVydHkobmFtZSk7CisgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxs
YmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OnNfaW5mbykpIHsKKyAgICAgICAganND
YXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3QpLT5k
ZWxldGVQcml2YXRlUHJvcGVydHkobmFtZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWVSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1
ZVJlZi5jcHAJKHJldmlzaW9uIDEyOTk5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNWYWx1ZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw4ICsxMzEsOCBAQCBib29sIEpT
VmFsdWVJc09iamVjdE9mQ2xhc3MoSlNDb250ZXh0UmVmCiAgICAgaWYgKEpTT2JqZWN0KiBvID0g
anNWYWx1ZS5nZXRPYmplY3QoKSkgewogICAgICAgICBpZiAoby0+aW5oZXJpdHMoJkpTQ2FsbGJh
Y2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpzX2luZm8pKQogICAgICAgICAgICAgcmV0dXJuIGpz
Q2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pio+KG8pLT5pbmhlcml0cyhqc0Ns
YXNzKTsKLSAgICAgICAgaWYgKG8tPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmlu
YWxPYmplY3Q+OjpzX2luZm8pKQotICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNr
T2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+Kj4obyktPmluaGVyaXRzKGpzQ2xhc3MpOworICAgICAg
ICBpZiAoby0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+
OjpzX2luZm8pKQorICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KG8pLT5pbmhlcml0cyhqc0NsYXNzKTsKICAgICB9CiAgICAg
cmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtP
YmplY3RNYXBSZWZQcml2YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwCShyZXZpc2lvbiAxMjk5OTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgSlNXZWFrT2JqZWN0TWFwU2V0
KEpTQ29udGV4dFJlZiBjdHgKICAgICBKU09iamVjdCogb2JqID0gdG9KUyhvYmplY3QpOwogICAg
IGlmICghb2JqKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKG9iai0+aW5oZXJpdHMoJkpT
Q2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpzX2luZm8pIHx8IG9iai0+aW5oZXJpdHMo
JkpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD46OnNfaW5mbykpOworICAgIEFTU0VS
VChvYmotPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pjo6c19pbmZv
KSB8fCBvYmotPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
Pjo6c19pbmZvKSk7CiAgICAgbWFwLT5tYXAoKS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBrZXks
IG9iaik7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxMjk5OTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtODQyLDYgKzg0MiwxMCBAQAogCQkJCT4K
IAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcSlNGdW5jdGlvbi5jcHAiCiAJCQkJPgogCQkJPC9G
aWxlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyOTk5OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MTIsNiArNzEyLDcgQEAKIAkJQzI0MDMwNTUx
NEI0MDRFNjAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3Bp
ZWRTcGFjZS5jcHAgKi87IH07CiAJCUMyNUY4QkNEMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1l
bnRhbFN3ZWVwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzI1RjhCQ0IxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAg
Ki87IH07CiAJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUY4QkND
MTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMkE3RjY4ODE2MDQzMkQ0MDBGNzZC
OTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyQTdGNjg3MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0
aWJsZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQjkxNkMxMTREQTAx
NEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMkI5MTZDNTE0REEwNDBDMDBDQkFDODYgLyogTWFy
a2VkQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyQjkxNkM0MTREQTA0MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuY3BwICov
OyB9OwogCQlDMkM4RDAyRDE0QTNDNkUwMDA1NzhFNjUgLyogQ29waWVkU3BhY2VJbmxpbmVNZXRo
b2RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkM4
RDAyQjE0QTNDNkIyMDA1NzhFNjUgLyogQ29waWVkU3BhY2VJbmxpbmVNZXRob2RzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0ODcsNiArMTQ4
OCw3IEBACiAJCUMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb3BpZWRTcGFjZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNUY4QkNCMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNy
ZW1lbnRhbFN3ZWVwZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5jcmVtZW50YWxTd2VlcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI1
RjhCQ0MxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbmNyZW1lbnRhbFN3ZWVwZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzJBN0Y2ODcxNjA0MzJENDAwRjc2Qjk4IC8qIEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQjkxNkMxMTREQTAx
NEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWFya2VkQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyQjkxNkM0MTREQTA0MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFya2VkQWxsb2NhdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJDOEQwMkIxNEEzQzZCMjAwNTc4RTY1IC8qIENvcGll
ZFNwYWNlSW5saW5lTWV0aG9kcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b3BpZWRTcGFjZUlubGluZU1ldGhvZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIxMzAsNiArMjEzMiw3IEBACiAJCQkJQkMxMTY3RDgwRTE5QkNDOTAwODA2NkREIC8qIEpTQ2Vs
bC5oICovLAogCQkJCTk3ODhGQzIyMTQ3MUFEMEMwMDY4Q0UyRCAvKiBKU0RhdGVNYXRoLmNwcCAq
LywKIAkJCQk5Nzg4RkMyMzE0NzFBRDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5oICovLAorCQkJ
CUMyQTdGNjg3MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oICovLAog
CQkJCUE3QjRBQ0FFMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oICovLAogCQkJ
CUY2OTJBODVFMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmNwcCAqLywKIAkJCQlGNjky
QTg1RjAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5oICovLApAQCAtMjU2OSw2ICsyNTcy
LDcgQEAKIAkJCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUMyRUFEMkZDMTRGMDI0OTgwMEE0QjE1OSAvKiBDb3BpZWRBbGxv
Y2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBN
YXJrZWRBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyQTdGNjg4MTYwNDMyRDQwMEY3
NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUyMENF
OUUxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCUMy
MTEyMkUyMTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMyMTYwRkU3MTVGN0U5NUUwMDk0MkRGQyAvKiBTbG90VmlzaXRvcklubGluZU1l
dGhvZHMuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTI5OTk5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTg5
LDEyICsyMTg5LDE0IEBAIHB1YmxpYzoKICAgIAogICAgIC8vIEl0IGlzIE5PVCBva2F5IGZvciB0
aGUgc3RydWN0dXJlIGFuZCB0aGUgc2NyYXRjaCByZWdpc3RlciB0byBiZSB0aGUgc2FtZSB0aGlu
ZyBiZWNhdXNlIGlmIHRoZXkgYXJlIHRoZW4gdGhlIFN0cnVjdHVyZSB3aWxsIAogICAgIC8vIGdl
dCBjbG9iYmVyZWQuIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIGJvb2wgZGVz
dHJ1Y3RvciwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENsYXNzVHlwZSwgTWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBlIGRlc3RydWN0b3JUeXBlLCB0
eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiAKICAgICB2b2lkIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmpl
Y3QoU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzY3Jh
dGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNsb3dQYXRoKQogICAgIHsKICAgICAg
ICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAwOwotICAgICAgICBpZiAoZGVzdHJ1Y3Rv
cikKLSAgICAgICAgICAgIGFsbG9jYXRvciA9ICZtX2ppdC5nbG9iYWxEYXRhKCktPmhlYXAuYWxs
b2NhdG9yRm9yT2JqZWN0V2l0aERlc3RydWN0b3Ioc2l6ZW9mKENsYXNzVHlwZSkpOworICAgICAg
ICBpZiAoZGVzdHJ1Y3RvclR5cGUgPT0gTWFya2VkQmxvY2s6Ok5vcm1hbCkKKyAgICAgICAgICAg
IGFsbG9jYXRvciA9ICZtX2ppdC5nbG9iYWxEYXRhKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0
V2l0aE5vcm1hbERlc3RydWN0b3Ioc2l6ZW9mKENsYXNzVHlwZSkpOworICAgICAgICBlbHNlIGlm
IChkZXN0cnVjdG9yVHlwZSA9PSBNYXJrZWRCbG9jazo6SW1tb3J0YWxTdHJ1Y3R1cmUpCisgICAg
ICAgICAgICBhbGxvY2F0b3IgPSAmbV9qaXQuZ2xvYmFsRGF0YSgpLT5oZWFwLmFsbG9jYXRvckZv
ck9iamVjdFdpdGhJbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3Ioc2l6ZW9mKENsYXNzVHlwZSkp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhbGxvY2F0b3IgPSAmbV9qaXQuZ2xvYmFsRGF0
YSgpLT5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKHNpemVvZihDbGFz
c1R5cGUpKTsKIApAQCAtMjIxNiw3ICsyMjE4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiAgICAgdm9pZCBlbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KFQgc3RydWN0dXJl
LCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1
bXBMaXN0JiBzbG93UGF0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBlbWl0QWxsb2NhdGVCYXNp
Y0pTT2JqZWN0PEpTRmluYWxPYmplY3QsIGZhbHNlPihzdHJ1Y3R1cmUsIHJlc3VsdEdQUiwgc2Ny
YXRjaEdQUiwgc2xvd1BhdGgpOworICAgICAgICByZXR1cm4gZW1pdEFsbG9jYXRlQmFzaWNKU09i
amVjdDxKU0ZpbmFsT2JqZWN0LCBNYXJrZWRCbG9jazo6Tm9uZT4oc3RydWN0dXJlLCByZXN1bHRH
UFIsIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKICAgICB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KSAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMjk5OTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTQyLDExICs5NDIsNiBAQCB2b2lkIEhlYXA6OmFkZENvbXBpbGVkQ29kZShFeGVjdXRhYmxlQmFz
CiAgICAgbV9jb21waWxlZENvZGUuYXBwZW5kKGV4ZWN1dGFibGUpOwogfQogCi1ib29sIEhlYXA6
OmlzU2FmZVRvU3dlZXBTdHJ1Y3R1cmVzKCkKLXsKLSAgICByZXR1cm4gIW1fc3dlZXBlciB8fCBt
X3N3ZWVwZXItPnN0cnVjdHVyZXNDYW5CZVN3ZXB0KCk7Ci19Ci0KIHZvaWQgSGVhcDo6ZGlkU3Rh
cnRWTVNodXRkb3duKCkKIHsKICAgICBtX2FjdGl2aXR5Q2FsbGJhY2stPmRpZFN0YXJ0Vk1TaHV0
ZG93bigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTI5OTk5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTIsNyArMTEyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBNYXJr
ZWRBbGxvY2F0b3ImIGZpcnN0QWxsb2NhdG9yV2l0aG91dERlc3RydWN0b3JzKCkgeyByZXR1cm4g
bV9vYmplY3RTcGFjZS5maXJzdEFsbG9jYXRvcigpOyB9CiAgICAgICAgIE1hcmtlZEFsbG9jYXRv
ciYgYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKSB7IHJl
dHVybiBtX29iamVjdFNwYWNlLmFsbG9jYXRvckZvcihieXRlcyk7IH0KLSAgICAgICAgTWFya2Vk
QWxsb2NhdG9yJiBhbGxvY2F0b3JGb3JPYmplY3RXaXRoRGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMp
IHsgcmV0dXJuIG1fb2JqZWN0U3BhY2UuZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihieXRlcyk7IH0K
KyAgICAgICAgTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3JGb3JPYmplY3RXaXRoTm9ybWFsRGVz
dHJ1Y3RvcihzaXplX3QgYnl0ZXMpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uubm9ybWFsRGVzdHJ1
Y3RvckFsbG9jYXRvckZvcihieXRlcyk7IH0KKyAgICAgICAgTWFya2VkQWxsb2NhdG9yJiBhbGxv
Y2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemVfdCBieXRl
cykgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxv
Y2F0b3JGb3IoYnl0ZXMpOyB9CiAgICAgICAgIENvcGllZEFsbG9jYXRvciYgc3RvcmFnZUFsbG9j
YXRvcigpIHsgcmV0dXJuIG1fc3RvcmFnZVNwYWNlLmFsbG9jYXRvcigpOyB9CiAgICAgICAgIENo
ZWNrZWRCb29sZWFuIHRyeUFsbG9jYXRlU3RvcmFnZShzaXplX3QsIHZvaWQqKik7CiAgICAgICAg
IENoZWNrZWRCb29sZWFuIHRyeVJlYWxsb2NhdGVTdG9yYWdlKHZvaWQqKiwgc2l6ZV90LCBzaXpl
X3QpOwpAQCAtMTY5LDcgKzE3MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGRp
ZEFiYW5kb24oc2l6ZV90KTsKIAogICAgICAgICBib29sIGlzUGFnZWRPdXQoZG91YmxlIGRlYWRs
aW5lKTsKLSAgICAgICAgYm9vbCBpc1NhZmVUb1N3ZWVwU3RydWN0dXJlcygpOwogICAgICAgICB2
b2lkIGRpZFN0YXJ0Vk1TaHV0ZG93bigpOwogCiAgICAgcHJpdmF0ZToKQEAgLTE4NSw5ICsxODUs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5k
IHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYsIHNpemVfdCk7CiAKLSAgICAgICAgdm9p
ZCogYWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihzaXplX3QpOwotICAgICAgICB2b2lkKiBhbGxvY2F0
ZVdpdGhvdXREZXN0cnVjdG9yKHNpemVfdCk7Ci0gICAgICAgIHZvaWQqIGFsbG9jYXRlU3RydWN0
dXJlKHNpemVfdCk7CisgICAgICAgIHZvaWQqIGFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJl
RGVzdHJ1Y3RvcihzaXplX3QpOyAvLyBGb3IgdXNlIHdpdGggc3BlY2lhbCBvYmplY3RzIHdob3Nl
IFN0cnVjdHVyZXMgbmV2ZXIgZGllLgorICAgICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhOb3JtYWxE
ZXN0cnVjdG9yKHNpemVfdCk7IC8vIEZvciB1c2Ugd2l0aCBvYmplY3RzIHRoYXQgaW5oZXJpdCBk
aXJlY3RseSBvciBpbmRpcmVjdGx5IGZyb20gSlNEZXN0cnVjdGlibGVPYmplY3QuCisgICAgICAg
IHZvaWQqIGFsbG9jYXRlV2l0aG91dERlc3RydWN0b3Ioc2l6ZV90KTsgLy8gRm9yIHVzZSB3aXRo
IG9iamVjdHMgd2l0aG91dCBkZXN0cnVjdG9ycy4KIAogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IG1pbkV4dHJhQ29zdCA9IDI1NjsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhF
eHRyYUNvc3QgPSAxMDI0ICogMTAyNDsKQEAgLTM2MywxMCArMzYzLDE2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICByZXR1cm4gZm9yRWFjaFByb3RlY3RlZENlbGwoZnVuY3Rvcik7CiAgICAg
fQogCi0gICAgaW5saW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6ZV90
IGJ5dGVzKQorICAgIGlubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVj
dG9yKHNpemVfdCBieXRlcykKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkQWxsb2NhdGlv
bihieXRlcykpOwotICAgICAgICByZXR1cm4gbV9vYmplY3RTcGFjZS5hbGxvY2F0ZVdpdGhEZXN0
cnVjdG9yKGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuYWxsb2NhdGVXaXRo
Tm9ybWFsRGVzdHJ1Y3RvcihieXRlcyk7CisgICAgfQorICAgIAorICAgIGlubGluZSB2b2lkKiBI
ZWFwOjphbGxvY2F0ZVdpdGhJbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3Ioc2l6ZV90IGJ5dGVz
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWRBbGxvY2F0aW9uKGJ5dGVzKSk7CisgICAg
ICAgIHJldHVybiBtX29iamVjdFNwYWNlLmFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVz
dHJ1Y3RvcihieXRlcyk7CiAgICAgfQogICAgIAogICAgIGlubGluZSB2b2lkKiBIZWFwOjphbGxv
Y2F0ZVdpdGhvdXREZXN0cnVjdG9yKHNpemVfdCBieXRlcykKQEAgLTM3NSwxMSArMzgxLDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBtX29iamVjdFNwYWNlLmFsbG9jYXRlV2l0
aG91dERlc3RydWN0b3IoYnl0ZXMpOwogICAgIH0KICAgIAotICAgIGlubGluZSB2b2lkKiBIZWFw
OjphbGxvY2F0ZVN0cnVjdHVyZShzaXplX3QgYnl0ZXMpCi0gICAgewotICAgICAgICByZXR1cm4g
bV9vYmplY3RTcGFjZS5hbGxvY2F0ZVN0cnVjdHVyZShieXRlcyk7Ci0gICAgfQotIAogICAgIGlu
bGluZSBDaGVja2VkQm9vbGVhbiBIZWFwOjp0cnlBbGxvY2F0ZVN0b3JhZ2Uoc2l6ZV90IGJ5dGVz
LCB2b2lkKiogb3V0UHRyKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc3RvcmFnZVNwYWNlLnRy
eUFsbG9jYXRlKGJ5dGVzLCBvdXRQdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCShyZXZpc2lvbiAxMjk5OTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw2IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgc3dlZXBUaW1lTXVs
dGlwbGllciAKIEluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqIGhl
YXAsIENGUnVuTG9vcFJlZiBydW5Mb29wKQogICAgIDogSGVhcFRpbWVyKGhlYXAtPmdsb2JhbERh
dGEoKSwgcnVuTG9vcCkKICAgICAsIG1fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4KDApCi0gICAg
LCBtX3N0cnVjdHVyZXNDYW5CZVN3ZXB0KGZhbHNlKQogewogfQogCkBAIC03Miw3ICs3MSw2IEBA
IHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpjYW5jZWxUaW1lcigpCiBJbmNyZW1lbnRhbFN3ZWVw
ZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFwKiBoZWFwKQogICAgIDogSGVhcFRpbWVyKGhlYXAt
Pmdsb2JhbERhdGEoKSkKICAgICAsIG1fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4KDApCi0gICAg
LCBtX3N0cnVjdHVyZXNDYW5CZVN3ZXB0KGZhbHNlKQogewogfQogCkBAIC0xMTksMTAgKzExNyw2
IEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRCbG9jaygKIHsKICAgICB3aGls
ZSAobV9jdXJyZW50QmxvY2tUb1N3ZWVwSW5kZXggPCBtX2Jsb2Nrc1RvU3dlZXAuc2l6ZSgpKSB7
CiAgICAgICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IG1fYmxvY2tzVG9Td2VlcFttX2N1cnJlbnRC
bG9ja1RvU3dlZXBJbmRleCsrXTsKLSAgICAgICAgaWYgKGJsb2NrLT5vbmx5Q29udGFpbnNTdHJ1
Y3R1cmVzKCkpCi0gICAgICAgICAgICBtX3N0cnVjdHVyZXNDYW5CZVN3ZXB0ID0gdHJ1ZTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgQVNTRVJUKCFtX3N0cnVjdHVyZXNDYW5CZVN3ZXB0KTsK
IAogICAgICAgICBpZiAoIWJsb2NrLT5uZWVkc1N3ZWVwaW5nKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKQEAgLTEzOSwxNCArMTMzLDEyIEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpzdGFy
dFN3ZWVwaW5nKGMKICAgICBDb3B5RnVuY3RvciBmdW5jdG9yKG1fYmxvY2tzVG9Td2VlcCk7CiAg
ICAgbV9nbG9iYWxEYXRhLT5oZWFwLm9iamVjdFNwYWNlKCkuZm9yRWFjaEJsb2NrKGZ1bmN0b3Ip
OwogICAgIG1fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4ID0gMDsKLSAgICBtX3N0cnVjdHVyZXND
YW5CZVN3ZXB0ID0gZmFsc2U7CiAgICAgc2NoZWR1bGVUaW1lcigpOwogfQogCiB2b2lkIEluY3Jl
bWVudGFsU3dlZXBlcjo6d2lsbEZpbmlzaFN3ZWVwaW5nKCkKIHsKICAgICBtX2N1cnJlbnRCbG9j
a1RvU3dlZXBJbmRleCA9IDA7Ci0gICAgbV9zdHJ1Y3R1cmVzQ2FuQmVTd2VwdCA9IHRydWU7CiAg
ICAgbV9ibG9ja3NUb1N3ZWVwLmNsZWFyKCk7CiAgICAgaWYgKG1fZ2xvYmFsRGF0YSkKICAgICAg
ICAgY2FuY2VsVGltZXIoKTsKQEAgLTE1Niw3ICsxNDgsNiBAQCB2b2lkIEluY3JlbWVudGFsU3dl
ZXBlcjo6d2lsbEZpbmlzaFN3ZWVwCiAKIEluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxT
d2VlcGVyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKICAgICA6IEhlYXBUaW1lcihnbG9iYWxE
YXRhKQotICAgICwgbV9zdHJ1Y3R1cmVzQ2FuQmVTd2VwdChmYWxzZSkKIHsKIH0KIApAQCAtMTcx
LDEyICsxNjIsMTAgQEAgSW5jcmVtZW50YWxTd2VlcGVyKiBJbmNyZW1lbnRhbFN3ZWVwZXI6Ogog
CiB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGluZyhjb25zdCBIYXNoU2V0PE1h
cmtlZEJsb2NrKj4mKQogewotICAgIG1fc3RydWN0dXJlc0NhbkJlU3dlcHQgPSBmYWxzZTsKIH0K
IAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OndpbGxGaW5pc2hTd2VlcGluZygpCiB7Ci0gICAg
bV9zdHJ1Y3R1cmVzQ2FuQmVTd2VwdCA9IHRydWU7CiB9CiAKIHZvaWQgSW5jcmVtZW50YWxTd2Vl
cGVyOjpzd2VlcE5leHRCbG9jaygpCkBAIC0xODUsOSArMTc0LDQgQEAgdm9pZCBJbmNyZW1lbnRh
bFN3ZWVwZXI6OnN3ZWVwTmV4dEJsb2NrKAogCiAjZW5kaWYKIAotYm9vbCBJbmNyZW1lbnRhbFN3
ZWVwZXI6OnN0cnVjdHVyZXNDYW5CZVN3ZXB0KCkKLXsKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmVz
Q2FuQmVTd2VwdDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAkocmV2aXNpb24gMTI5OTk5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDYgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRTd2Vl
cGluZyhjb25zdCBIYXNoU2V0PE1hcmtlZEJsb2NrKj4mIGJsb2NrU25hcHNob3QpOwogICAgIHZp
cnR1YWwgdm9pZCBkb1dvcmsoKTsKICAgICB2b2lkIHN3ZWVwTmV4dEJsb2NrKCk7Ci0gICAgYm9v
bCBzdHJ1Y3R1cmVzQ2FuQmVTd2VwdCgpOwogICAgIHZvaWQgd2lsbEZpbmlzaFN3ZWVwaW5nKCk7
CiAKIHByaXZhdGU6CkBAIC03OCw3ICs3Nyw2IEBAIHByaXZhdGU6CiAgICAgSW5jcmVtZW50YWxT
d2VlcGVyKEpTR2xvYmFsRGF0YSopOwogICAgIAogI2VuZGlmCi0gICAgYm9vbCBtX3N0cnVjdHVy
ZXNDYW5CZVN3ZXB0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDEyOTk5
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDE3ICszMCw2IEBAIGJvb2wgTWFya2VkQWxsb2NhdG9yOjppc1Bh
Z2VkT3V0KGRvdWJsZSAKIGlubGluZSB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRl
SGVscGVyKHNpemVfdCBieXRlcykKIHsKICAgICBpZiAoIW1fZnJlZUxpc3QuaGVhZCkgewotICAg
ICAgICBpZiAobV9vbmx5Q29udGFpbnNTdHJ1Y3R1cmVzICYmICFtX2hlYXAtPmlzU2FmZVRvU3dl
ZXBTdHJ1Y3R1cmVzKCkpIHsKLSAgICAgICAgICAgIGlmIChtX2N1cnJlbnRCbG9jaykgewotICAg
ICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5kaWRDb25zdW1lRnJlZUxpc3QoKTsKLSAgICAg
ICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAvLyBXZSBzd2VlcCBhbm90aGVyIHJhbmRvbSBibG9jayBoZXJlIHNvIHRoYXQgd2UgY2FuIG1h
a2UgcHJvZ3Jlc3MKLSAgICAgICAgICAgIC8vIHRvd2FyZCBiZWluZyBhYmxlIHRvIHN3ZWVwIFN0
cnVjdHVyZXMuCi0gICAgICAgICAgICBtX2hlYXAtPnN3ZWVwZXIoKS0+c3dlZXBOZXh0QmxvY2so
KTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0KICAgICAgICAgZm9yIChNYXJr
ZWRCbG9jayomIGJsb2NrID0gbV9ibG9ja3NUb1N3ZWVwOyBibG9jazsgYmxvY2sgPSBibG9jay0+
bmV4dCgpKSB7CiAgICAgICAgICAgICBNYXJrZWRCbG9jazo6RnJlZUxpc3QgZnJlZUxpc3QgPSBi
bG9jay0+c3dlZXAoTWFya2VkQmxvY2s6OlN3ZWVwVG9GcmVlTGlzdCk7CiAgICAgICAgICAgICBp
ZiAoIWZyZWVMaXN0LmhlYWQpIHsKQEAgLTEyNCwxMyArMTEzLDEzIEBAIE1hcmtlZEJsb2NrKiBN
YXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRlQmwKIAogICAgIGlmIChibG9ja1NpemUgPT0gTWFya2Vk
QmxvY2s6OmJsb2NrU2l6ZSkgewogICAgICAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQgYWxsb2Nh
dGlvbiA9IG1faGVhcC0+YmxvY2tBbGxvY2F0b3IoKS5hbGxvY2F0ZSgpOwotICAgICAgICByZXR1
cm4gTWFya2VkQmxvY2s6OmNyZWF0ZShhbGxvY2F0aW9uLCBtX2hlYXAsIGNlbGxTaXplLCBtX2Nl
bGxzTmVlZERlc3RydWN0aW9uLCBtX29ubHlDb250YWluc1N0cnVjdHVyZXMpOworICAgICAgICBy
ZXR1cm4gTWFya2VkQmxvY2s6OmNyZWF0ZShhbGxvY2F0aW9uLCB0aGlzLCBjZWxsU2l6ZSwgbV9k
ZXN0cnVjdG9yVHlwZSk7CiAgICAgfQogCiAgICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkIGFsbG9j
YXRpb24gPSBQYWdlQWxsb2NhdGlvbkFsaWduZWQ6OmFsbG9jYXRlKGJsb2NrU2l6ZSwgTWFya2Vk
QmxvY2s6OmJsb2NrU2l6ZSwgT1NBbGxvY2F0b3I6OkpTR0NIZWFwUGFnZXMpOwogICAgIGlmICgh
c3RhdGljX2Nhc3Q8Ym9vbD4oYWxsb2NhdGlvbikpCiAgICAgICAgIENSQVNIKCk7Ci0gICAgcmV0
dXJuIE1hcmtlZEJsb2NrOjpjcmVhdGUoYWxsb2NhdGlvbiwgbV9oZWFwLCBjZWxsU2l6ZSwgbV9j
ZWxsc05lZWREZXN0cnVjdGlvbiwgbV9vbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKTsKKyAgICByZXR1
cm4gTWFya2VkQmxvY2s6OmNyZWF0ZShhbGxvY2F0aW9uLCB0aGlzLCBjZWxsU2l6ZSwgbV9kZXN0
cnVjdG9yVHlwZSk7CiB9CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9yOjphZGRCbG9jayhNYXJrZWRC
bG9jayogYmxvY2spCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxv
Y2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRB
bGxvY2F0b3IuaAkocmV2aXNpb24gMTI5OTk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzZXQoKTsKICAgICB2b2lkIGNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVz
c0RhdGEoKTsKICAgICBzaXplX3QgY2VsbFNpemUoKSB7IHJldHVybiBtX2NlbGxTaXplOyB9Ci0g
ICAgYm9vbCBjZWxsc05lZWREZXN0cnVjdGlvbigpIHsgcmV0dXJuIG1fY2VsbHNOZWVkRGVzdHJ1
Y3Rpb247IH0KLSAgICBib29sIG9ubHlDb250YWluc1N0cnVjdHVyZXMoKSB7IHJldHVybiBtX29u
bHlDb250YWluc1N0cnVjdHVyZXM7IH0KKyAgICBNYXJrZWRCbG9jazo6RGVzdHJ1Y3RvclR5cGUg
ZGVzdHJ1Y3RvclR5cGUoKSB7IHJldHVybiBtX2Rlc3RydWN0b3JUeXBlOyB9CiAgICAgdm9pZCog
YWxsb2NhdGUoc2l6ZV90KTsKICAgICBIZWFwKiBoZWFwKCkgeyByZXR1cm4gbV9oZWFwOyB9CiAg
ICAgCkBAIC0zMiw3ICszMSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGFkZEJsb2NrKE1h
cmtlZEJsb2NrKik7CiAgICAgdm9pZCByZW1vdmVCbG9jayhNYXJrZWRCbG9jayopOwotICAgIHZv
aWQgaW5pdChIZWFwKiwgTWFya2VkU3BhY2UqLCBzaXplX3QgY2VsbFNpemUsIGJvb2wgY2VsbHNO
ZWVkRGVzdHJ1Y3Rpb24sIGJvb2wgb25seUNvbnRhaW5zU3RydWN0dXJlcyk7CisgICAgdm9pZCBp
bml0KEhlYXAqLCBNYXJrZWRTcGFjZSosIHNpemVfdCBjZWxsU2l6ZSwgTWFya2VkQmxvY2s6OkRl
c3RydWN0b3JUeXBlKTsKIAogICAgIGJvb2wgaXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpOwog
ICAgCkBAIC00OSw4ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgTWFya2VkQmxvY2sqIG1fYmxvY2tz
VG9Td2VlcDsKICAgICBEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJsb2NrPiBtX2Jsb2NrTGlzdDsK
ICAgICBzaXplX3QgbV9jZWxsU2l6ZTsKLSAgICBib29sIG1fY2VsbHNOZWVkRGVzdHJ1Y3Rpb247
Ci0gICAgYm9vbCBtX29ubHlDb250YWluc1N0cnVjdHVyZXM7CisgICAgTWFya2VkQmxvY2s6OkRl
c3RydWN0b3JUeXBlIG1fZGVzdHJ1Y3RvclR5cGU7CiAgICAgSGVhcCogbV9oZWFwOwogICAgIE1h
cmtlZFNwYWNlKiBtX21hcmtlZFNwYWNlOwogfTsKQEAgLTU5LDIwICs1NywxOCBAQCBpbmxpbmUg
TWFya2VkQWxsb2NhdG9yOjpNYXJrZWRBbGxvY2F0b3IoCiAgICAgOiBtX2N1cnJlbnRCbG9jaygw
KQogICAgICwgbV9ibG9ja3NUb1N3ZWVwKDApCiAgICAgLCBtX2NlbGxTaXplKDApCi0gICAgLCBt
X2NlbGxzTmVlZERlc3RydWN0aW9uKHRydWUpCi0gICAgLCBtX29ubHlDb250YWluc1N0cnVjdHVy
ZXMoZmFsc2UpCisgICAgLCBtX2Rlc3RydWN0b3JUeXBlKE1hcmtlZEJsb2NrOjpOb25lKQogICAg
ICwgbV9oZWFwKDApCiAgICAgLCBtX21hcmtlZFNwYWNlKDApCiB7CiB9CiAKLWlubGluZSB2b2lk
IE1hcmtlZEFsbG9jYXRvcjo6aW5pdChIZWFwKiBoZWFwLCBNYXJrZWRTcGFjZSogbWFya2VkU3Bh
Y2UsIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBjZWxsc05lZWREZXN0cnVjdGlvbiwgYm9vbCBvbmx5
Q29udGFpbnNTdHJ1Y3R1cmVzKQoraW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjppbml0KEhl
YXAqIGhlYXAsIE1hcmtlZFNwYWNlKiBtYXJrZWRTcGFjZSwgc2l6ZV90IGNlbGxTaXplLCBNYXJr
ZWRCbG9jazo6RGVzdHJ1Y3RvclR5cGUgZGVzdHJ1Y3RvclR5cGUpCiB7CiAgICAgbV9oZWFwID0g
aGVhcDsKICAgICBtX21hcmtlZFNwYWNlID0gbWFya2VkU3BhY2U7CiAgICAgbV9jZWxsU2l6ZSA9
IGNlbGxTaXplOwotICAgIG1fY2VsbHNOZWVkRGVzdHJ1Y3Rpb24gPSBjZWxsc05lZWREZXN0cnVj
dGlvbjsKLSAgICBtX29ubHlDb250YWluc1N0cnVjdHVyZXMgPSBvbmx5Q29udGFpbnNTdHJ1Y3R1
cmVzOworICAgIG1fZGVzdHJ1Y3RvclR5cGUgPSBkZXN0cnVjdG9yVHlwZTsKIH0KIAogaW5saW5l
IHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMTI5OTk5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCwyNiArMjgsMjYgQEAKIAogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBl
ci5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKIAogCiBuYW1lc3BhY2UgSlNDIHsKIAotTWFya2Vk
QmxvY2sqIE1hcmtlZEJsb2NrOjpjcmVhdGUoY29uc3QgUGFnZUFsbG9jYXRpb25BbGlnbmVkJiBh
bGxvY2F0aW9uLCBIZWFwKiBoZWFwLCBzaXplX3QgY2VsbFNpemUsIGJvb2wgY2VsbHNOZWVkRGVz
dHJ1Y3Rpb24sIGJvb2wgb25seUNvbnRhaW5zU3RydWN0dXJlcykKK01hcmtlZEJsb2NrKiBNYXJr
ZWRCbG9jazo6Y3JlYXRlKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYgYWxsb2NhdGlvbiwg
TWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjZWxsU2l6ZSwgRGVzdHJ1Y3RvclR5
cGUgZGVzdHJ1Y3RvclR5cGUpCiB7Ci0gICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgYWxsb2NhdGlv
bi5iYXNlKCkpIE1hcmtlZEJsb2NrKGFsbG9jYXRpb24sIGhlYXAsIGNlbGxTaXplLCBjZWxsc05l
ZWREZXN0cnVjdGlvbiwgb25seUNvbnRhaW5zU3RydWN0dXJlcyk7CisgICAgcmV0dXJuIG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGlvbi5iYXNlKCkpIE1hcmtlZEJsb2NrKGFsbG9jYXRpb24sIGFsbG9j
YXRvciwgY2VsbFNpemUsIGRlc3RydWN0b3JUeXBlKTsKIH0KIAotTWFya2VkQmxvY2s6Ok1hcmtl
ZEJsb2NrKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYgYWxsb2NhdGlvbiwgSGVhcCogaGVh
cCwgc2l6ZV90IGNlbGxTaXplLCBib29sIGNlbGxzTmVlZERlc3RydWN0aW9uLCBib29sIG9ubHlD
b250YWluc1N0cnVjdHVyZXMpCitNYXJrZWRCbG9jazo6TWFya2VkQmxvY2soY29uc3QgUGFnZUFs
bG9jYXRpb25BbGlnbmVkJiBhbGxvY2F0aW9uLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwg
c2l6ZV90IGNlbGxTaXplLCBEZXN0cnVjdG9yVHlwZSBkZXN0cnVjdG9yVHlwZSkKICAgICA6IEhl
YXBCbG9jazxNYXJrZWRCbG9jaz4oYWxsb2NhdGlvbikKICAgICAsIG1fYXRvbXNQZXJDZWxsKChj
ZWxsU2l6ZSArIGF0b21TaXplIC0gMSkgLyBhdG9tU2l6ZSkKICAgICAsIG1fZW5kQXRvbShhdG9t
c1BlckJsb2NrIC0gbV9hdG9tc1BlckNlbGwgKyAxKQotICAgICwgbV9jZWxsc05lZWREZXN0cnVj
dGlvbihjZWxsc05lZWREZXN0cnVjdGlvbikKLSAgICAsIG1fb25seUNvbnRhaW5zU3RydWN0dXJl
cyhvbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKQorICAgICwgbV9kZXN0cnVjdG9yVHlwZShkZXN0cnVj
dG9yVHlwZSkKKyAgICAsIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKICAgICAsIG1fc3RhdGUoTmV3
KSAvLyBBbGwgY2VsbHMgc3RhcnQgb3V0IHVubWFya2VkLgotICAgICwgbV93ZWFrU2V0KGhlYXAt
Pmdsb2JhbERhdGEoKSkKKyAgICAsIG1fd2Vha1NldChhbGxvY2F0b3ItPmhlYXAoKS0+Z2xvYmFs
RGF0YSgpKQogewotICAgIEFTU0VSVChoZWFwKTsKKyAgICBBU1NFUlQoYWxsb2NhdG9yKTsKICAg
ICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwogfQogCkBAIC02NSwxMSAr
NjUsMTEgQEAgaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmNhbGxEZXN0cnVjdG9yKAogICAgIGNl
bGwtPnphcCgpOwogfQogCi10ZW1wbGF0ZTxNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSBibG9ja1N0
YXRlLCBNYXJrZWRCbG9jazo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgYm9vbCBkZXN0cnVjdG9yQ2Fs
bE5lZWRlZD4KK3RlbXBsYXRlPE1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlIGJsb2NrU3RhdGUsIE1h
cmtlZEJsb2NrOjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBNYXJrZWRCbG9jazo6RGVzdHJ1Y3RvclR5
cGUgZHRvclR5cGU+CiBNYXJrZWRCbG9jazo6RnJlZUxpc3QgTWFya2VkQmxvY2s6OnNwZWNpYWxp
emVkU3dlZXAoKQogewogICAgIEFTU0VSVChibG9ja1N0YXRlICE9IEFsbG9jYXRlZCAmJiBibG9j
a1N0YXRlICE9IEZyZWVMaXN0ZWQpOwotICAgIEFTU0VSVChkZXN0cnVjdG9yQ2FsbE5lZWRlZCB8
fCBzd2VlcE1vZGUgIT0gU3dlZXBPbmx5KTsKKyAgICBBU1NFUlQoIShkdG9yVHlwZSA9PSBNYXJr
ZWRCbG9jazo6Tm9uZSAmJiBzd2VlcE1vZGUgPT0gU3dlZXBPbmx5KSk7CiAKICAgICAvLyBUaGlz
IHByb2R1Y2VzIGEgZnJlZSBsaXN0IHRoYXQgaXMgb3JkZXJlZCBpbiByZXZlcnNlIHRocm91Z2gg
dGhlIGJsb2NrLgogICAgIC8vIFRoaXMgaXMgZmluZSwgc2luY2UgdGhlIGFsbG9jYXRpb24gY29k
ZSBtYWtlcyBubyBhc3N1bXB0aW9ucyBhYm91dCB0aGUKQEAgLTgyLDcgKzgyLDcgQEAgTWFya2Vk
QmxvY2s6OkZyZWVMaXN0IE1hcmtlZEJsb2NrOjpzcGVjaQogCiAgICAgICAgIEpTQ2VsbCogY2Vs
bCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKIAotICAgICAg
ICBpZiAoZGVzdHJ1Y3RvckNhbGxOZWVkZWQgJiYgYmxvY2tTdGF0ZSAhPSBOZXcpCisgICAgICAg
IGlmIChkdG9yVHlwZSAhPSBNYXJrZWRCbG9jazo6Tm9uZSAmJiBibG9ja1N0YXRlICE9IE5ldykK
ICAgICAgICAgICAgIGNhbGxEZXN0cnVjdG9yKGNlbGwpOwogCiAgICAgICAgIGlmIChzd2VlcE1v
ZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KSB7CkBAIC0xMDMsMjEgKzEwMywyMyBAQCBNYXJrZWRCbG9j
azo6RnJlZUxpc3QgTWFya2VkQmxvY2s6OnN3ZWVwCiAKICAgICBtX3dlYWtTZXQuc3dlZXAoKTsK
IAotICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBPbmx5ICYmICFtX2NlbGxzTmVlZERlc3RydWN0
aW9uKQorICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBPbmx5ICYmIG1fZGVzdHJ1Y3RvclR5cGUg
PT0gTWFya2VkQmxvY2s6Ok5vbmUpCiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwogCi0gICAg
aWYgKG1fY2VsbHNOZWVkRGVzdHJ1Y3Rpb24pCi0gICAgICAgIHJldHVybiBzd2VlcEhlbHBlcjx0
cnVlPihzd2VlcE1vZGUpOwotICAgIHJldHVybiBzd2VlcEhlbHBlcjxmYWxzZT4oc3dlZXBNb2Rl
KTsKKyAgICBpZiAobV9kZXN0cnVjdG9yVHlwZSA9PSBNYXJrZWRCbG9jazo6SW1tb3J0YWxTdHJ1
Y3R1cmUpCisgICAgICAgIHJldHVybiBzd2VlcEhlbHBlcjxNYXJrZWRCbG9jazo6SW1tb3J0YWxT
dHJ1Y3R1cmU+KHN3ZWVwTW9kZSk7CisgICAgaWYgKG1fZGVzdHJ1Y3RvclR5cGUgPT0gTWFya2Vk
QmxvY2s6Ok5vcm1hbCkKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyPE1hcmtlZEJsb2NrOjpO
b3JtYWw+KHN3ZWVwTW9kZSk7CisgICAgcmV0dXJuIHN3ZWVwSGVscGVyPE1hcmtlZEJsb2NrOjpO
b25lPihzd2VlcE1vZGUpOwogfQogCi10ZW1wbGF0ZTxib29sIGRlc3RydWN0b3JDYWxsTmVlZGVk
PgordGVtcGxhdGU8TWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBlIGR0b3JUeXBlPgogTWFya2Vk
QmxvY2s6OkZyZWVMaXN0IE1hcmtlZEJsb2NrOjpzd2VlcEhlbHBlcihTd2VlcE1vZGUgc3dlZXBN
b2RlKQogewogICAgIHN3aXRjaCAobV9zdGF0ZSkgewogICAgIGNhc2UgTmV3OgogICAgICAgICBB
U1NFUlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAgIHJldHVybiBzcGVj
aWFsaXplZFN3ZWVwPE5ldywgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdG9yQ2FsbE5lZWRlZD4o
KTsKKyAgICAgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8TmV3LCBTd2VlcFRvRnJlZUxpc3Qs
IGR0b3JUeXBlPigpOwogICAgIGNhc2UgRnJlZUxpc3RlZDoKICAgICAgICAgLy8gSGFwcGVucyB3
aGVuIGEgYmxvY2sgdHJhbnNpdGlvbnMgdG8gZnVsbHkgYWxsb2NhdGVkLgogICAgICAgICBBU1NF
UlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7CkBAIC0xMjYsMTAgKzEyOCw5IEBAIE1h
cmtlZEJsb2NrOjpGcmVlTGlzdCBNYXJrZWRCbG9jazo6c3dlZXAKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwogICAgIGNhc2UgTWFya2Vk
OgotICAgICAgICBBU1NFUlQoIW1fb25seUNvbnRhaW5zU3RydWN0dXJlcyB8fCBoZWFwKCktPmlz
U2FmZVRvU3dlZXBTdHJ1Y3R1cmVzKCkpOwogICAgICAgICByZXR1cm4gc3dlZXBNb2RlID09IFN3
ZWVwVG9GcmVlTGlzdAotICAgICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dl
ZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdG9yQ2FsbE5lZWRlZD4oKQotICAgICAgICAgICAgOiBzcGVj
aWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBPbmx5LCBkZXN0cnVjdG9yQ2FsbE5lZWRlZD4oKTsK
KyAgICAgICAgICAgID8gc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdCwg
ZHRvclR5cGU+KCkKKyAgICAgICAgICAgIDogc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVw
T25seSwgZHRvclR5cGU+KCk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJldmlzaW9uIDEy
OTk5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xh
c3MgSGVhcDsKICAgICBjbGFzcyBKU0NlbGw7CisgICAgY2xhc3MgTWFya2VkQWxsb2NhdG9yOwog
CiAgICAgdHlwZWRlZiB1aW50cHRyX3QgQml0czsKIApAQCAtMTEyLDcgKzExMyw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgUmV0dXJuVHlwZSBtX2NvdW50OwogICAgICAgICB9Owog
Ci0gICAgICAgIHN0YXRpYyBNYXJrZWRCbG9jayogY3JlYXRlKGNvbnN0IFBhZ2VBbGxvY2F0aW9u
QWxpZ25lZCYsIEhlYXAqLCBzaXplX3QgY2VsbFNpemUsIGJvb2wgY2VsbHNOZWVkRGVzdHJ1Y3Rp
b24sIGJvb2wgb25seUNvbnRhaW5zU3RydWN0dXJlcyk7CisgICAgICAgIGVudW0gRGVzdHJ1Y3Rv
clR5cGUgeyBOb25lLCBJbW1vcnRhbFN0cnVjdHVyZSwgTm9ybWFsIH07CisgICAgICAgIHN0YXRp
YyBNYXJrZWRCbG9jayogY3JlYXRlKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYsIE1hcmtl
ZEFsbG9jYXRvciosIHNpemVfdCBjZWxsU2l6ZSwgRGVzdHJ1Y3RvclR5cGUpOwogCiAgICAgICAg
IHN0YXRpYyBib29sIGlzQXRvbUFsaWduZWQoY29uc3Qgdm9pZCopOwogICAgICAgICBzdGF0aWMg
TWFya2VkQmxvY2sqIGJsb2NrRm9yKGNvbnN0IHZvaWQqKTsKQEAgLTEyMCw2ICsxMjIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIHZvaWQgbGFzdENoYW5jZVRvRmluYWxp
emUoKTsKIAorICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvcigpIGNvbnN0OwogICAg
ICAgICBIZWFwKiBoZWFwKCkgY29uc3Q7CiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSgpIGNvbnN0OwogICAgICAgICBXZWFrU2V0JiB3ZWFrU2V0KCk7CkBAIC0xNDMsOCArMTQ2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNFbXB0eSgpOwogCiAgICAgICAgIHNp
emVfdCBjZWxsU2l6ZSgpOwotICAgICAgICBib29sIGNlbGxzTmVlZERlc3RydWN0aW9uKCk7Ci0g
ICAgICAgIGJvb2wgb25seUNvbnRhaW5zU3RydWN0dXJlcygpOworICAgICAgICBEZXN0cnVjdG9y
VHlwZSBkZXN0cnVjdG9yVHlwZSgpOwogCiAgICAgICAgIHNpemVfdCBzaXplKCk7CiAgICAgICAg
IHNpemVfdCBjYXBhY2l0eSgpOwpAQCAtMTk0LDE1ICsxOTYsMTUgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1hc2sgPSBhdG9tU2l6
ZSAtIDE7IC8vIGF0b21TaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28uCiAKICAgICAgICAgZW51
bSBCbG9ja1N0YXRlIHsgTmV3LCBGcmVlTGlzdGVkLCBBbGxvY2F0ZWQsIE1hcmtlZCB9OwotICAg
ICAgICB0ZW1wbGF0ZTxib29sIGRlc3RydWN0b3JDYWxsTmVlZGVkPiBGcmVlTGlzdCBzd2VlcEhl
bHBlcihTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdG9y
VHlwZT4gRnJlZUxpc3Qgc3dlZXBIZWxwZXIoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKIAogICAg
ICAgICB0eXBlZGVmIGNoYXIgQXRvbVthdG9tU2l6ZV07CiAKLSAgICAgICAgTWFya2VkQmxvY2so
Y29uc3QgUGFnZUFsbG9jYXRpb25BbGlnbmVkJiwgSGVhcCosIHNpemVfdCBjZWxsU2l6ZSwgYm9v
bCBjZWxsc05lZWREZXN0cnVjdGlvbiwgYm9vbCBvbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKTsKKyAg
ICAgICAgTWFya2VkQmxvY2soY29uc3QgUGFnZUFsbG9jYXRpb25BbGlnbmVkJiwgTWFya2VkQWxs
b2NhdG9yKiwgc2l6ZV90IGNlbGxTaXplLCBEZXN0cnVjdG9yVHlwZSk7CiAgICAgICAgIEF0b20q
IGF0b21zKCk7CiAgICAgICAgIHNpemVfdCBhdG9tTnVtYmVyKGNvbnN0IHZvaWQqKTsKICAgICAg
ICAgdm9pZCBjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqKTsKLSAgICAgICAgdGVtcGxhdGU8QmxvY2tT
dGF0ZSwgU3dlZXBNb2RlLCBib29sIGRlc3RydWN0b3JDYWxsTmVlZGVkPiBGcmVlTGlzdCBzcGVj
aWFsaXplZFN3ZWVwKCk7CisgICAgICAgIHRlbXBsYXRlPEJsb2NrU3RhdGUsIFN3ZWVwTW9kZSwg
RGVzdHJ1Y3RvclR5cGU+IEZyZWVMaXN0IHNwZWNpYWxpemVkU3dlZXAoKTsKICAgICAgICAgCiAj
aWYgRU5BQkxFKEdHQykKICAgICAgICAgQ2FyZFNldDxieXRlc1BlckNhcmQsIGJsb2NrU2l6ZT4g
bV9jYXJkczsKQEAgLTIxNSw4ICsyMTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbHNlCiAgICAg
ICAgIFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2ssIFdURjo6Qml0bWFwTm90QXRvbWljPiBtX21h
cmtzOwogI2VuZGlmCi0gICAgICAgIGJvb2wgbV9jZWxsc05lZWREZXN0cnVjdGlvbjsKLSAgICAg
ICAgYm9vbCBtX29ubHlDb250YWluc1N0cnVjdHVyZXM7CisgICAgICAgIERlc3RydWN0b3JUeXBl
IG1fZGVzdHJ1Y3RvclR5cGU7CisgICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3I7
CiAgICAgICAgIEJsb2NrU3RhdGUgbV9zdGF0ZTsKICAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7
CiAgICAgfTsKQEAgLTI2MSw2ICsyNjMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN3
ZWVwKCk7CiAgICAgfQogCisgICAgaW5saW5lIE1hcmtlZEFsbG9jYXRvciogTWFya2VkQmxvY2s6
OmFsbG9jYXRvcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hbGxvY2F0b3I7Cisg
ICAgfQorCiAgICAgaW5saW5lIEhlYXAqIE1hcmtlZEJsb2NrOjpoZWFwKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBtX3dlYWtTZXQuaGVhcCgpOwpAQCAtMzI2LDE0ICszMzMsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIG1fYXRvbXNQZXJDZWxsICogYXRvbVNpemU7
CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmNlbGxzTmVlZERlc3RydWN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2NlbGxzTmVlZERlc3RydWN0aW9uOyAKLSAg
ICB9Ci0KLSAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6b25seUNvbnRhaW5zU3RydWN0dXJl
cygpCisgICAgaW5saW5lIE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlwZSBNYXJrZWRCbG9jazo6
ZGVzdHJ1Y3RvclR5cGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb25seUNvbnRhaW5zU3Ry
dWN0dXJlczsKKyAgICAgICAgcmV0dXJuIG1fZGVzdHJ1Y3RvclR5cGU7IAogICAgIH0KIAogICAg
IGlubGluZSBzaXplX3QgTWFya2VkQmxvY2s6OnNpemUoKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkocmV2aXNpb24gMTI5OTk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
MSwxNyArODEsMjAgQEAgTWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCiAgICAg
OiBtX2hlYXAoaGVhcCkKIHsKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VTdGVw
OyBjZWxsU2l6ZSA8PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVjaXNlU3RlcCkgewot
ICAgICAgICBhbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhpcywgY2VsbFNpemUs
IGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgIGRlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUp
LmluaXQoaGVhcCwgdGhpcywgY2VsbFNpemUsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgYWxsb2Nh
dG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAsIHRoaXMsIGNlbGxTaXplLCBNYXJrZWRCbG9jazo6
Tm9uZSk7CisgICAgICAgIG5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmlu
aXQoaGVhcCwgdGhpcywgY2VsbFNpemUsIE1hcmtlZEJsb2NrOjpOb3JtYWwpOworICAgICAgICBp
bW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVh
cCwgdGhpcywgY2VsbFNpemUsIE1hcmtlZEJsb2NrOjpJbW1vcnRhbFN0cnVjdHVyZSk7CiAgICAg
fQogCiAgICAgZm9yIChzaXplX3QgY2VsbFNpemUgPSBpbXByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8
PSBpbXByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IGltcHJlY2lzZVN0ZXApIHsKLSAgICAgICAg
YWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAsIHRoaXMsIGNlbGxTaXplLCBmYWxzZSwg
ZmFsc2UpOwotICAgICAgICBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pbml0KGhl
YXAsIHRoaXMsIGNlbGxTaXplLCB0cnVlLCBmYWxzZSk7CisgICAgICAgIGFsbG9jYXRvckZvcihj
ZWxsU2l6ZSkuaW5pdChoZWFwLCB0aGlzLCBjZWxsU2l6ZSwgTWFya2VkQmxvY2s6Ok5vbmUpOwor
ICAgICAgICBub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAs
IHRoaXMsIGNlbGxTaXplLCBNYXJrZWRCbG9jazo6Tm9ybWFsKTsKKyAgICAgICAgaW1tb3J0YWxT
dHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAsIHRoaXMs
IGNlbGxTaXplLCBNYXJrZWRCbG9jazo6SW1tb3J0YWxTdHJ1Y3R1cmUpOwogICAgIH0KIAotICAg
IG1fbGFyZ2VBbGxvY2F0b3IuaW5pdChoZWFwLCB0aGlzLCAwLCB0cnVlLCBmYWxzZSk7Ci0gICAg
bV9zdHJ1Y3R1cmVBbGxvY2F0b3IuaW5pdChoZWFwLCB0aGlzLCBXVEY6OnJvdW5kVXBUb011bHRp
cGxlT2YoMzIsIHNpemVvZihTdHJ1Y3R1cmUpKSwgdHJ1ZSwgdHJ1ZSk7CisgICAgbV9ub3JtYWxT
cGFjZS5sYXJnZUFsbG9jYXRvci5pbml0KGhlYXAsIHRoaXMsIDAsIE1hcmtlZEJsb2NrOjpOb25l
KTsKKyAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvci5pbml0KGhlYXAs
IHRoaXMsIDAsIE1hcmtlZEJsb2NrOjpOb3JtYWwpOworICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVE
ZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3IuaW5pdChoZWFwLCB0aGlzLCAwLCBNYXJrZWRC
bG9jazo6SW1tb3J0YWxTdHJ1Y3R1cmUpOwogfQogCiBNYXJrZWRTcGFjZTo6fk1hcmtlZFNwYWNl
KCkKQEAgLTEyMCwxNiArMTIzLDE5IEBAIHZvaWQgTWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9y
cygpCiB7CiAgICAgZm9yIChzaXplX3QgY2VsbFNpemUgPSBwcmVjaXNlU3RlcDsgY2VsbFNpemUg
PD0gcHJlY2lzZUN1dG9mZjsgY2VsbFNpemUgKz0gcHJlY2lzZVN0ZXApIHsKICAgICAgICAgYWxs
b2NhdG9yRm9yKGNlbGxTaXplKS5yZXNldCgpOwotICAgICAgICBkZXN0cnVjdG9yQWxsb2NhdG9y
Rm9yKGNlbGxTaXplKS5yZXNldCgpOworICAgICAgICBub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9y
Rm9yKGNlbGxTaXplKS5yZXNldCgpOworICAgICAgICBpbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0
b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLnJlc2V0KCk7CiAgICAgfQogCiAgICAgZm9yIChzaXpl
X3QgY2VsbFNpemUgPSBpbXByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8PSBpbXByZWNpc2VDdXRvZmY7
IGNlbGxTaXplICs9IGltcHJlY2lzZVN0ZXApIHsKICAgICAgICAgYWxsb2NhdG9yRm9yKGNlbGxT
aXplKS5yZXNldCgpOwotICAgICAgICBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5y
ZXNldCgpOworICAgICAgICBub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5y
ZXNldCgpOworICAgICAgICBpbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3Io
Y2VsbFNpemUpLnJlc2V0KCk7CiAgICAgfQogCi0gICAgbV9sYXJnZUFsbG9jYXRvci5yZXNldCgp
OwotICAgIG1fc3RydWN0dXJlQWxsb2NhdG9yLnJlc2V0KCk7CisgICAgbV9ub3JtYWxTcGFjZS5s
YXJnZUFsbG9jYXRvci5yZXNldCgpOworICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLmxhcmdl
QWxsb2NhdG9yLnJlc2V0KCk7CisgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFj
ZS5sYXJnZUFsbG9jYXRvci5yZXNldCgpOwogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjp2aXNpdFdl
YWtTZXRzKEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKQpAQCAtMTQ3LDM0ICsxNTMs
NDAgQEAgdm9pZCBNYXJrZWRTcGFjZTo6Y2Fub25pY2FsaXplQ2VsbExpdmVuZQogewogICAgIGZv
ciAoc2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IHByZWNpc2VDdXRv
ZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKSB7CiAgICAgICAgIGFsbG9jYXRvckZvcihjZWxs
U2l6ZSkuY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOwotICAgICAgICBkZXN0cnVjdG9y
QWxsb2NhdG9yRm9yKGNlbGxTaXplKS5jYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7Cisg
ICAgICAgIG5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmNhbm9uaWNhbGl6
ZUNlbGxMaXZlbmVzc0RhdGEoKTsKKyAgICAgICAgaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9y
QWxsb2NhdG9yRm9yKGNlbGxTaXplKS5jYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7CiAg
ICAgfQogCiAgICAgZm9yIChzaXplX3QgY2VsbFNpemUgPSBpbXByZWNpc2VTdGVwOyBjZWxsU2l6
ZSA8PSBpbXByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IGltcHJlY2lzZVN0ZXApIHsKICAgICAg
ICAgYWxsb2NhdG9yRm9yKGNlbGxTaXplKS5jYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7
Ci0gICAgICAgIGRlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmNhbm9uaWNhbGl6ZUNl
bGxMaXZlbmVzc0RhdGEoKTsKKyAgICAgICAgbm9ybWFsRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihj
ZWxsU2l6ZSkuY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOworICAgICAgICBpbW1vcnRh
bFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmNhbm9uaWNhbGl6ZUNl
bGxMaXZlbmVzc0RhdGEoKTsKICAgICB9CiAKLSAgICBtX2xhcmdlQWxsb2NhdG9yLmNhbm9uaWNh
bGl6ZUNlbGxMaXZlbmVzc0RhdGEoKTsKLSAgICBtX3N0cnVjdHVyZUFsbG9jYXRvci5jYW5vbmlj
YWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7CisgICAgbV9ub3JtYWxTcGFjZS5sYXJnZUFsbG9jYXRv
ci5jYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7CisgICAgbV9ub3JtYWxEZXN0cnVjdG9y
U3BhY2UubGFyZ2VBbGxvY2F0b3IuY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOworICAg
IG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3IuY2Fub25p
Y2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOwogfQogCiBib29sIE1hcmtlZFNwYWNlOjppc1BhZ2Vk
T3V0KGRvdWJsZSBkZWFkbGluZSkKIHsKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNp
c2VTdGVwOyBjZWxsU2l6ZSA8PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVjaXNlU3Rl
cCkgewotICAgICAgICBpZiAoYWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0KGRlYWRs
aW5lKSB8fCBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0KGRlYWRs
aW5lKSkKKyAgICAgICAgaWYgKGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQYWdlZE91dChkZWFk
bGluZSkgCisgICAgICAgICAgICB8fCBub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxT
aXplKS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSAKKyAgICAgICAgICAgIHx8IGltbW9ydGFsU3RydWN0
dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQYWdlZE91dChkZWFkbGluZSkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBjZWxs
U2l6ZSA9IGltcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IGltcHJlY2lzZUN1dG9mZjsgY2VsbFNp
emUgKz0gaW1wcmVjaXNlU3RlcCkgewotICAgICAgICBpZiAoYWxsb2NhdG9yRm9yKGNlbGxTaXpl
KS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSB8fCBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXpl
KS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSkKKyAgICAgICAgaWYgKGFsbG9jYXRvckZvcihjZWxsU2l6
ZSkuaXNQYWdlZE91dChkZWFkbGluZSkgCisgICAgICAgICAgICB8fCBub3JtYWxEZXN0cnVjdG9y
QWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSAKKyAgICAgICAgICAg
IHx8IGltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQ
YWdlZE91dChkZWFkbGluZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICBpZiAobV9sYXJnZUFsbG9jYXRvci5pc1BhZ2VkT3V0KGRlYWRsaW5lKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICBpZiAobV9zdHJ1Y3R1cmVBbGxvY2F0b3IuaXNQYWdlZE91dChkZWFk
bGluZSkpCisgICAgaWYgKG1fbm9ybWFsU3BhY2UubGFyZ2VBbGxvY2F0b3IuaXNQYWdlZE91dChk
ZWFkbGluZSkKKyAgICAgICAgfHwgbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0
b3IuaXNQYWdlZE91dChkZWFkbGluZSkKKyAgICAgICAgfHwgbV9pbW1vcnRhbFN0cnVjdHVyZURl
c3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvci5pc1BhZ2VkT3V0KGRlYWRsaW5lKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODIsNyArMTk0LDcgQEAg
Ym9vbCBNYXJrZWRTcGFjZTo6aXNQYWdlZE91dChkb3VibGUgZGVhZAogCiB2b2lkIE1hcmtlZFNw
YWNlOjpmcmVlQmxvY2soTWFya2VkQmxvY2sqIGJsb2NrKQogewotICAgIGFsbG9jYXRvckZvcihi
bG9jaykucmVtb3ZlQmxvY2soYmxvY2spOworICAgIGJsb2NrLT5hbGxvY2F0b3IoKS0+cmVtb3Zl
QmxvY2soYmxvY2spOwogICAgIG1fYmxvY2tzLnJlbW92ZShibG9jayk7CiAgICAgaWYgKGJsb2Nr
LT5jYXBhY2l0eSgpID09IE1hcmtlZEJsb2NrOjpibG9ja1NpemUpIHsKICAgICAgICAgbV9oZWFw
LT5ibG9ja0FsbG9jYXRvcigpLmRlYWxsb2NhdGUoTWFya2VkQmxvY2s6OmRlc3Ryb3koYmxvY2sp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNp
b24gMTI5OTk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNzYsMTEgKzc2LDExIEBAIHB1YmxpYzoKIAogICAgIE1hcmtlZEFs
bG9jYXRvciYgZmlyc3RBbGxvY2F0b3IoKTsKICAgICBNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRv
ckZvcihzaXplX3QpOwotICAgIE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yRm9yKE1hcmtlZEJs
b2NrKik7Ci0gICAgTWFya2VkQWxsb2NhdG9yJiBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKHNpemVf
dCk7Ci0gICAgdm9pZCogYWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihzaXplX3QpOworICAgIE1hcmtl
ZEFsbG9jYXRvciYgaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKHNpemVf
dCk7CisgICAgTWFya2VkQWxsb2NhdG9yJiBub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKHNp
emVfdCk7CisgICAgdm9pZCogYWxsb2NhdGVXaXRoTm9ybWFsRGVzdHJ1Y3RvcihzaXplX3QpOwor
ICAgIHZvaWQqIGFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvcihzaXplX3Qp
OwogICAgIHZvaWQqIGFsbG9jYXRlV2l0aG91dERlc3RydWN0b3Ioc2l6ZV90KTsKLSAgICB2b2lk
KiBhbGxvY2F0ZVN0cnVjdHVyZShzaXplX3QpOwogIAogICAgIHZvaWQgcmVzZXRBbGxvY2F0b3Jz
KCk7CiAKQEAgLTEzMSwxMiArMTMxLDEyIEBAIHByaXZhdGU6CiAgICAgc3RydWN0IFN1YnNwYWNl
IHsKICAgICAgICAgRml4ZWRBcnJheTxNYXJrZWRBbGxvY2F0b3IsIHByZWNpc2VDb3VudD4gcHJl
Y2lzZUFsbG9jYXRvcnM7CiAgICAgICAgIEZpeGVkQXJyYXk8TWFya2VkQWxsb2NhdG9yLCBpbXBy
ZWNpc2VDb3VudD4gaW1wcmVjaXNlQWxsb2NhdG9yczsKKyAgICAgICAgTWFya2VkQWxsb2NhdG9y
IGxhcmdlQWxsb2NhdG9yOwogICAgIH07CiAKLSAgICBTdWJzcGFjZSBtX2Rlc3RydWN0b3JTcGFj
ZTsKKyAgICBTdWJzcGFjZSBtX25vcm1hbERlc3RydWN0b3JTcGFjZTsKKyAgICBTdWJzcGFjZSBt
X2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlOwogICAgIFN1YnNwYWNlIG1fbm9ybWFs
U3BhY2U7Ci0gICAgTWFya2VkQWxsb2NhdG9yIG1fbGFyZ2VBbGxvY2F0b3I7Ci0gICAgTWFya2Vk
QWxsb2NhdG9yIG1fc3RydWN0dXJlQWxsb2NhdG9yOwogCiAgICAgSGVhcCogbV9oZWFwOwogICAg
IE1hcmtlZEJsb2NrU2V0IG1fYmxvY2tzOwpAQCAtMTg2LDI4ICsxODYsMjcgQEAgaW5saW5lIE1h
cmtlZEFsbG9jYXRvciYgTWFya2VkU3BhY2U6OmFsbAogICAgICAgICByZXR1cm4gbV9ub3JtYWxT
cGFjZS5wcmVjaXNlQWxsb2NhdG9yc1soYnl0ZXMgLSAxKSAvIHByZWNpc2VTdGVwXTsKICAgICBp
ZiAoYnl0ZXMgPD0gaW1wcmVjaXNlQ3V0b2ZmKQogICAgICAgICByZXR1cm4gbV9ub3JtYWxTcGFj
ZS5pbXByZWNpc2VBbGxvY2F0b3JzWyhieXRlcyAtIDEpIC8gaW1wcmVjaXNlU3RlcF07Ci0gICAg
cmV0dXJuIG1fbGFyZ2VBbGxvY2F0b3I7CisgICAgcmV0dXJuIG1fbm9ybWFsU3BhY2UubGFyZ2VB
bGxvY2F0b3I7CiB9CiAKLWlubGluZSBNYXJrZWRBbGxvY2F0b3ImIE1hcmtlZFNwYWNlOjphbGxv
Y2F0b3JGb3IoTWFya2VkQmxvY2sqIGJsb2NrKQoraW5saW5lIE1hcmtlZEFsbG9jYXRvciYgTWFy
a2VkU3BhY2U6OmltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihzaXplX3Qg
Ynl0ZXMpCiB7Ci0gICAgaWYgKGJsb2NrLT5vbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKCkpCi0gICAg
ICAgIHJldHVybiBtX3N0cnVjdHVyZUFsbG9jYXRvcjsKLQotICAgIGlmIChibG9jay0+Y2VsbHNO
ZWVkRGVzdHJ1Y3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGRlc3RydWN0b3JBbGxvY2F0b3JGb3Io
YmxvY2stPmNlbGxTaXplKCkpOwotCi0gICAgcmV0dXJuIGFsbG9jYXRvckZvcihibG9jay0+Y2Vs
bFNpemUoKSk7CisgICAgQVNTRVJUKGJ5dGVzKTsKKyAgICBpZiAoYnl0ZXMgPD0gcHJlY2lzZUN1
dG9mZikKKyAgICAgICAgcmV0dXJuIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2Uu
cHJlY2lzZUFsbG9jYXRvcnNbKGJ5dGVzIC0gMSkgLyBwcmVjaXNlU3RlcF07CisgICAgaWYgKGJ5
dGVzIDw9IGltcHJlY2lzZUN1dG9mZikKKyAgICAgICAgcmV0dXJuIG1faW1tb3J0YWxTdHJ1Y3R1
cmVEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1soYnl0ZXMgLSAxKSAvIGltcHJl
Y2lzZVN0ZXBdOworICAgIHJldHVybiBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNl
LmxhcmdlQWxsb2NhdG9yOwogfQogCi1pbmxpbmUgTWFya2VkQWxsb2NhdG9yJiBNYXJrZWRTcGFj
ZTo6ZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihzaXplX3QgYnl0ZXMpCitpbmxpbmUgTWFya2VkQWxs
b2NhdG9yJiBNYXJrZWRTcGFjZTo6bm9ybWFsRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihzaXplX3Qg
Ynl0ZXMpCiB7CiAgICAgQVNTRVJUKGJ5dGVzKTsKICAgICBpZiAoYnl0ZXMgPD0gcHJlY2lzZUN1
dG9mZikKLSAgICAgICAgcmV0dXJuIG1fZGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0b3Jz
WyhieXRlcyAtIDEpIC8gcHJlY2lzZVN0ZXBdOworICAgICAgICByZXR1cm4gbV9ub3JtYWxEZXN0
cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbKGJ5dGVzIC0gMSkgLyBwcmVjaXNlU3RlcF07
CiAgICAgaWYgKGJ5dGVzIDw9IGltcHJlY2lzZUN1dG9mZikKLSAgICAgICAgcmV0dXJuIG1fbm9y
bWFsU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1soYnl0ZXMgLSAxKSAvIGltcHJlY2lzZVN0ZXBd
OwotICAgIHJldHVybiBtX2xhcmdlQWxsb2NhdG9yOworICAgICAgICByZXR1cm4gbV9ub3JtYWxE
ZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1soYnl0ZXMgLSAxKSAvIGltcHJlY2lz
ZVN0ZXBdOworICAgIHJldHVybiBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRv
cjsKIH0KIAogaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZVdpdGhvdXREZXN0cnVj
dG9yKHNpemVfdCBieXRlcykKQEAgLTIxNSwzMCArMjE0LDMzIEBAIGlubGluZSB2b2lkKiBNYXJr
ZWRTcGFjZTo6YWxsb2NhdGVXaXRob3UKICAgICByZXR1cm4gYWxsb2NhdG9yRm9yKGJ5dGVzKS5h
bGxvY2F0ZShieXRlcyk7CiB9CiAKLWlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGVX
aXRoRGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpCitpbmxpbmUgdm9pZCogTWFya2VkU3BhY2U6OmFs
bG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpCiB7Ci0g
ICAgcmV0dXJuIGRlc3RydWN0b3JBbGxvY2F0b3JGb3IoYnl0ZXMpLmFsbG9jYXRlKGJ5dGVzKTsK
KyAgICByZXR1cm4gaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGJ5dGVz
KS5hbGxvY2F0ZShieXRlcyk7CiB9CiAKLWlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2Nh
dGVTdHJ1Y3R1cmUoc2l6ZV90IGJ5dGVzKQoraW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxv
Y2F0ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKHNpemVfdCBieXRlcykKIHsKLSAgICByZXR1cm4gbV9z
dHJ1Y3R1cmVBbGxvY2F0b3IuYWxsb2NhdGUoYnl0ZXMpOworICAgIHJldHVybiBub3JtYWxEZXN0
cnVjdG9yQWxsb2NhdG9yRm9yKGJ5dGVzKS5hbGxvY2F0ZShieXRlcyk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBN
YXJrZWRTcGFjZTo6Zm9yRWFjaEJsb2NrKEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7ICsraSkgewogICAgICAgICBtX25vcm1hbFNw
YWNlLnByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICAgICAg
bV9kZXN0cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0
b3IpOworICAgICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tp
XS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisgICAgICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0
cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwog
ICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkg
ewogICAgICAgICBtX25vcm1hbFNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJs
b2NrKGZ1bmN0b3IpOwotICAgICAgICBtX2Rlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0
b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKyAgICAgICAgbV9ub3JtYWxEZXN0cnVjdG9y
U3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisgICAg
ICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9y
c1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAgICAgfQogCi0gICAgbV9sYXJnZUFsbG9jYXRv
ci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgbV9zdHJ1Y3R1cmVBbGxvY2F0b3IuZm9yRWFj
aEJsb2NrKGZ1bmN0b3IpOworICAgIG1fbm9ybWFsU3BhY2UubGFyZ2VBbGxvY2F0b3IuZm9yRWFj
aEJsb2NrKGZ1bmN0b3IpOworICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2Nh
dG9yLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKyAgICBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1
Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKIAogICAgIHJl
dHVybiBmdW5jdG9yLnJldHVyblZhbHVlKCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TbG90VmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCShyZXZpc2lvbiAxMjk5OTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUsNiAr
NSw3IEBACiAjaW5jbHVkZSAiQ29waWVkU3BhY2UuaCIKICNpbmNsdWRlICJDb3BpZWRTcGFjZUlu
bGluZU1ldGhvZHMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNEZXN0cnVj
dGlibGVPYmplY3QuaCIKICNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHJldmlzaW9uIDEyOTk5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQzNCw3ICs0MzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKFJlZ2lzdGVySUQgb3duZXIsIFJlZ2lzdGVySUQgdmFs
dWVUYWcsIFJlZ2lzdGVySUQgc2NyYXRjaCwgUmVnaXN0ZXJJRCBzY3JhdGNoMiwgV3JpdGVCYXJy
aWVyTW9kZSwgV3JpdGVCYXJyaWVyVXNlS2luZCk7CiAgICAgICAgIHZvaWQgZW1pdFdyaXRlQmFy
cmllcihKU0NlbGwqIG93bmVyLCBSZWdpc3RlcklEIHZhbHVlLCBSZWdpc3RlcklEIHNjcmF0Y2gs
IFdyaXRlQmFycmllck1vZGUsIFdyaXRlQmFycmllclVzZUtpbmQpOwogCi0gICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENsYXNzVHlwZSwgYm9vbCBkZXN0cnVjdG9yLCB0eXBlbmFtZSBTdHJ1Y3R1
cmVUeXBlPiB2b2lkIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QoU3RydWN0dXJlVHlwZSwgUmVn
aXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CisgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENsYXNzVHlwZSwgTWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBlLCB0eXBlbmFt
ZSBTdHJ1Y3R1cmVUeXBlPiB2b2lkIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QoU3RydWN0dXJl
VHlwZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CiAgICAgICAg
IHZvaWQgZW1pdEFsbG9jYXRlQmFzaWNTdG9yYWdlKHNpemVfdCwgcHRyZGlmZl90IG9mZnNldEZy
b21CYXNlLCBSZWdpc3RlcklEIHJlc3VsdCk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHZvaWQgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChUIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBy
ZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CiAgICAgICAgIHZvaWQgZW1pdEFsbG9jYXRl
SlNBcnJheSh1bnNpZ25lZCB2YWx1ZXNSZWdpc3RlciwgdW5zaWduZWQgbGVuZ3RoLCBSZWdpc3Rl
cklEIGNlbGxSZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9y
YWdlUHRyLCBSZWdpc3RlcklEIHNjcmF0Y2gpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHJldmlzaW9uIDEyOTk5OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MDUsMTEgKzQwNSwxMyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSklUOjppc09wZXJhbmRDb25zdGFu
CiAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChzcmMpICYm
IGdldENvbnN0YW50T3BlcmFuZChzcmMpLmlzU3RyaW5nKCkgJiYgYXNTdHJpbmcoZ2V0Q29uc3Rh
bnRPcGVyYW5kKHNyYykuYXNDZWxsKCkpLT5sZW5ndGgoKSA9PSAxOwogfQogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2xhc3NUeXBlLCBib29sIGRlc3RydWN0b3IsIHR5cGVuYW1lIFN0cnVjdHVyZVR5
cGU+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdChTdHJ1Y3R1cmVU
eXBlIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cikK
K3RlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlw
ZSBkZXN0cnVjdG9yVHlwZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gaW5saW5lIHZvaWQgSklU
OjplbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBSZWdp
c3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRyKQogewogICAgIE1hcmtlZEFsbG9j
YXRvciogYWxsb2NhdG9yID0gMDsKLSAgICBpZiAoZGVzdHJ1Y3RvcikKLSAgICAgICAgYWxsb2Nh
dG9yID0gJm1fZ2xvYmFsRGF0YS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoRGVzdHJ1Y3Rv
cihzaXplb2YoQ2xhc3NUeXBlKSk7CisgICAgaWYgKGRlc3RydWN0b3JUeXBlID09IE1hcmtlZEJs
b2NrOjpOb3JtYWwpCisgICAgICAgIGFsbG9jYXRvciA9ICZtX2dsb2JhbERhdGEtPmhlYXAuYWxs
b2NhdG9yRm9yT2JqZWN0V2l0aE5vcm1hbERlc3RydWN0b3Ioc2l6ZW9mKENsYXNzVHlwZSkpOwor
ICAgIGVsc2UgaWYgKGRlc3RydWN0b3JUeXBlID09IE1hcmtlZEJsb2NrOjpJbW1vcnRhbFN0cnVj
dHVyZSkKKyAgICAgICAgYWxsb2NhdG9yID0gJm1fZ2xvYmFsRGF0YS0+aGVhcC5hbGxvY2F0b3JG
b3JPYmplY3RXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemVvZihDbGFzc1R5cGUp
KTsKICAgICBlbHNlCiAgICAgICAgIGFsbG9jYXRvciA9ICZtX2dsb2JhbERhdGEtPmhlYXAuYWxs
b2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3Ioc2l6ZW9mKENsYXNzVHlwZSkpOwogICAg
IGxvYWRQdHIoJmFsbG9jYXRvci0+bV9mcmVlTGlzdC5oZWFkLCByZXN1bHQpOwpAQCAtNDI4LDcg
KzQzMCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIGJvb2wgZGVzdHIKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlSlNGaW5hbE9i
amVjdChUIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc2NyYXRjaCkK
IHsKLSAgICBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0PEpTRmluYWxPYmplY3QsIGZhbHNlLCBU
PihzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaCk7CisgICAgZW1pdEFsbG9jYXRlQmFzaWNKU09i
amVjdDxKU0ZpbmFsT2JqZWN0LCBNYXJrZWRCbG9jazo6Tm9uZSwgVD4oc3RydWN0dXJlLCByZXN1
bHQsIHNjcmF0Y2gpOwogfQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxvY2F0ZUJhc2ljU3Rv
cmFnZShzaXplX3Qgc2l6ZSwgcHRyZGlmZl90IG9mZnNldEZyb21CYXNlLCBSZWdpc3RlcklEIHJl
c3VsdCkKQEAgLTQ1NCw3ICs0NTYsNyBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxvY2F0ZUpT
QXJyYXkodW5zCiAKICAgICAvLyBBbGxvY2F0ZSB0aGUgY2VsbCBmb3IgdGhlIGFycmF5LgogICAg
IGxvYWRQdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5hZGRyZXNzT2ZBcnJheVN0cnVj
dHVyZSgpLCBzY3JhdGNoKTsKLSAgICBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0PEpTQXJyYXks
IGZhbHNlPihzY3JhdGNoLCBjZWxsUmVzdWx0LCBzdG9yYWdlUHRyKTsKKyAgICBlbWl0QWxsb2Nh
dGVCYXNpY0pTT2JqZWN0PEpTQXJyYXksIE1hcmtlZEJsb2NrOjpOb25lPihzY3JhdGNoLCBjZWxs
UmVzdWx0LCBzdG9yYWdlUHRyKTsKIAogICAgIC8vIFN0b3JlIGFsbCB0aGUgbmVjZXNzYXJ5IGlu
Zm8gaW4gdGhlIEFycmF5U3RvcmFnZS4KICAgICBzdG9yZTMyKEltbTMyKGxlbmd0aCksIEFkZHJl
c3Moc3RvcmFnZVJlc3VsdCwgQXJyYXlTdG9yYWdlOjpsZW5ndGhPZmZzZXQoKSkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCShyZXZpc2lvbiAx
Mjk5OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRf
Q0xBU1NfRklUU19JTl9DRUxMKEFyZ3VtZW50cyk7CiAKLWNvbnN0IENsYXNzSW5mbyBBcmd1bWVu
dHM6OnNfaW5mbyA9IHsgIkFyZ3VtZW50cyIsICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoQXJndW1lbnRzKSB9OworY29uc3QgQ2xhc3NJbmZvIEFy
Z3VtZW50czo6c19pbmZvID0geyAiQXJndW1lbnRzIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShBcmd1bWVudHMpIH07CiAKIHZvaWQgQXJndW1lbnRzOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkocmV2aXNpb24gMTI5OTk5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRl
ICJKU0FjdGl2YXRpb24uaCIKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCkBAIC0zMywxMSArMzQsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLSAgICBjbGFzcyBBcmd1bWVudHMgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAg
Y2xhc3MgQXJndW1lbnRzIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVK
SVQ7CiAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsK
KyAgICAgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwogCiAgICAgICAgIHN0
YXRpYyBBcmd1bWVudHMqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogICAgICAgICB7CkBAIC0xNDcsMTIgKzE0OCwxMiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICB9CiAKICAgICBpbmxpbmUgQXJndW1lbnRzOjpBcmd1bWVudHMoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCi0gICAgICAgIDogSlNOb25GaW5hbE9iamVjdChjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKSwgY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFyZ3VtZW50c1N0cnVj
dHVyZSgpKQorICAgICAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFs
RGF0YSgpLCBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJndW1lbnRzU3RydWN0
dXJlKCkpCiAgICAgewogICAgIH0KIAogICAgIGlubGluZSBBcmd1bWVudHM6OkFyZ3VtZW50cyhD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgTm9QYXJhbWV0ZXJzVHlwZSkKLSAgICAgICAgOiBKU05vbkZp
bmFsT2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjYWxsRnJhbWUtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+YXJndW1lbnRzU3RydWN0dXJlKCkpCisgICAgICAgIDogSlNEZXN0cnVjdGli
bGVPYmplY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNhbGxGcmFtZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5hcmd1bWVudHNTdHJ1Y3R1cmUoKSkKICAgICB7CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAxMjk5OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclBy
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEVycm9yUHJvdG90eXBlKTsKK0FTU0VS
VF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEVycm9yUHJvdG90eXBlKTsKIAogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUq
KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAko
cmV2aXNpb24gMTI5OTk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCiAjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CisgICAgICAgIHN0YXRp
YyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKICAgICAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMTI5
OTk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIEFT
U0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSW50ZXJuYWxGdW5jdGlvbik7CiBBU1NFUlRfSEFTX1RS
SVZJQUxfREVTVFJVQ1RPUihJbnRlcm5hbEZ1bmN0aW9uKTsKIAotY29uc3QgQ2xhc3NJbmZvIElu
dGVybmFsRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkpTTm9uRmluYWxPYmplY3Q6
OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRlcm5hbEZ1bmN0aW9uKSB9Owor
Y29uc3QgQ2xhc3NJbmZvIEludGVybmFsRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwg
JkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRlcm5hbEZ1bmN0aW9u
KSB9OwogCiBJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIDogSlNOb25GaW5hbE9i
amVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQorICAgIDogSlNEZXN0
cnVjdGlibGVPYmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKIHsK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaAkocmV2aXNpb24gMTI5OTk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNiArMjQsMTYg
QEAKICNpZm5kZWYgSW50ZXJuYWxGdW5jdGlvbl9oCiAjZGVmaW5lIEludGVybmFsRnVuY3Rpb25f
aAogCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCisjaW5j
bHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBGdW5jdGlvblByb3RvdHlwZTsKIAotICAgIGNsYXNzIEludGVybmFsRnVuY3Rpb24gOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbiA6IHB1
YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVm
IEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICAgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9i
amVjdCBCYXNlOwogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5m
byBzX2luZm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShy
ZXZpc2lvbiAxMjk5OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAor
ICAgIGNsYXNzIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0OwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0
OwogICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eURl
c2NyaXB0b3I7CkBAIC03MCw2ICs3MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoK
ICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gMDsKIAorICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CisgICAgICAg
IHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gZmFsc2U7CisKICAgICAg
ICAgZW51bSBDcmVhdGluZ0Vhcmx5Q2VsbFRhZyB7IENyZWF0aW5nRWFybHlDZWxsIH07CiAgICAg
ICAgIEpTQ2VsbChDcmVhdGluZ0Vhcmx5Q2VsbFRhZyk7CiAKQEAgLTMwOSw0NiArMzEzLDI5IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+dG9P
YmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0KSA6IHRvT2JqZWN0U2xvd0Nhc2UoZXhlYywgZ2xvYmFs
T2JqZWN0KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIHN0cnVjdCBOZWVk
c0Rlc3RydWN0b3IgewotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9ICFXVEY6Okhh
c1RyaXZpYWxEZXN0cnVjdG9yPFQ+Ojp2YWx1ZTsKLSAgICB9OwotCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLSAgICB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCkKKyAgICB2b2lkKiBh
bGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCwgc2l6ZV90IHNpemUpCiAgICAgeworICAgICAgICBBU1NF
UlQoc2l6ZSA+PSBzaXplb2YoVCkpOwogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQogICAgICAg
ICBBU1NFUlQoIWhlYXAuZ2xvYmFsRGF0YSgpLT5pc0luaXRpYWxpemluZ09iamVjdCgpKTsKICAg
ICAgICAgaGVhcC5nbG9iYWxEYXRhKCktPnNldEluaXRpYWxpemluZ09iamVjdENsYXNzKCZUOjpz
X2luZm8pOwogI2VuZGlmCiAgICAgICAgIEpTQ2VsbCogcmVzdWx0ID0gMDsKLSAgICAgICAgaWYg
KE5lZWRzRGVzdHJ1Y3RvcjxUPjo6dmFsdWUpCi0gICAgICAgICAgICByZXN1bHQgPSBzdGF0aWNf
Y2FzdDxKU0NlbGwqPihoZWFwLmFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6ZW9mKFQpKSk7Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgQVNTRVJUKFQ6OnNfaW5mby5tZXRob2RUYWJsZS5k
ZXN0cm95ID09IEpTQ2VsbDo6ZGVzdHJveSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGF0aWNf
Y2FzdDxKU0NlbGwqPihoZWFwLmFsbG9jYXRlV2l0aG91dERlc3RydWN0b3Ioc2l6ZW9mKFQpKSk7
Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKFQ6Om5lZWRzRGVzdHJ1Y3Rpb24gJiYgVDo6aGFzSW1t
b3J0YWxTdHJ1Y3R1cmUpCisgICAgICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxKU0NlbGwq
PihoZWFwLmFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvcihzaXplKSk7Cisg
ICAgICAgIGVsc2UgaWYgKFQ6Om5lZWRzRGVzdHJ1Y3Rpb24gJiYgIVQ6Omhhc0ltbW9ydGFsU3Ry
dWN0dXJlKQorICAgICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oaGVhcC5h
bGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKHNpemUpKTsKKyAgICAgICAgZWxzZSAKKyAgICAg
ICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGhlYXAuYWxsb2NhdGVXaXRob3V0
RGVzdHJ1Y3RvcihzaXplKSk7CiAgICAgICAgIHJlc3VsdC0+Y2xlYXJTdHJ1Y3R1cmUoKTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLSAgICB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCwgc2l6ZV90IHNpemUpCisgICAg
dm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmIGhlYXApCiAgICAgewotICAgICAgICBBU1NFUlQoc2l6
ZSA+PSBzaXplb2YoVCkpOwotI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQotICAgICAgICBBU1NF
UlQoIWhlYXAuZ2xvYmFsRGF0YSgpLT5pc0luaXRpYWxpemluZ09iamVjdCgpKTsKLSAgICAgICAg
aGVhcC5nbG9iYWxEYXRhKCktPnNldEluaXRpYWxpemluZ09iamVjdENsYXNzKCZUOjpzX2luZm8p
OwotI2VuZGlmCi0gICAgICAgIEpTQ2VsbCogcmVzdWx0ID0gMDsKLSAgICAgICAgaWYgKE5lZWRz
RGVzdHJ1Y3RvcjxUPjo6dmFsdWUpCi0gICAgICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxK
U0NlbGwqPihoZWFwLmFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6ZSkpOwotICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIEFTU0VSVChUOjpzX2luZm8ubWV0aG9kVGFibGUuZGVzdHJveSA9PSBK
U0NlbGw6OmRlc3Ryb3kpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8SlNDZWxs
Kj4oaGVhcC5hbGxvY2F0ZVdpdGhvdXREZXN0cnVjdG9yKHNpemUpKTsKLSAgICAgICAgfQotICAg
ICAgICByZXN1bHQtPmNsZWFyU3RydWN0dXJlKCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgIHJldHVybiBhbGxvY2F0ZUNlbGw8VD4oaGVhcCwgc2l6ZW9mKFQpKTsKICAgICB9CiAg
ICAgCiAgICAgaW5saW5lIGJvb2wgaXNaYXBwZWQoY29uc3QgSlNDZWxsKiBjZWxsKQpAQCAtMzYy
LDcgKzM0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBU1NFUlQoIWZyb20gfHwgZnJv
bS0+SlNDZWxsOjppbmhlcml0cygmV1RGOjpSZW1vdmVQb2ludGVyPFRvPjo6VHlwZTo6c19pbmZv
KSk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUbz4oZnJvbSk7CiAgICAgfQotCisgICAg
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVG8+CiAgICAgaW5saW5lIFRvIGpzQ2FzdChKU1ZhbHVl
IGZyb20pCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0
cnVjdGlibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0MyBAQAorI2lmbmRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdF9oCisjZGVmaW5lIEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0X2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitzdHJ1Y3QgQ2xhc3NJbmZvOworCitjbGFzcyBKU0Rlc3RydWN0aWJsZU9iamVj
dCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9u
RmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rp
b24gPSB0cnVlOworCisgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJl
dHVybiBtX2NsYXNzSW5mbzsgfQorCitwcm90ZWN0ZWQ6CisgICAgSlNEZXN0cnVjdGlibGVPYmpl
Y3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVy
Zmx5KiBidXR0ZXJmbHkgPSAwKQorICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpCisgICAgICAgICwgbV9jbGFzc0luZm8oc3RydWN0dXJl
LT5jbGFzc0luZm8oKSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2NsYXNzSW5mbyk7CisgICAg
fQorCitwcml2YXRlOgorICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87Cit9OworCitp
bmxpbmUgY29uc3QgQ2xhc3NJbmZvKiBKU0NlbGw6OmNsYXNzSW5mbygpIGNvbnN0Cit7CisgICAg
aWYgKE1hcmtlZEJsb2NrOjpibG9ja0Zvcih0aGlzKS0+ZGVzdHJ1Y3RvclR5cGUoKSA9PSBNYXJr
ZWRCbG9jazo6Tm9ybWFsKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNEZXN0
cnVjdGlibGVPYmplY3QqPih0aGlzKS0+Y2xhc3NJbmZvKCk7CisjaWYgRU5BQkxFKEdDX1ZBTElE
QVRJT04pCisgICAgcmV0dXJuIG1fc3RydWN0dXJlLnVudmFsaWRhdGVkR2V0KCktPmNsYXNzSW5m
bygpOworI2Vsc2UKKyAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPmNsYXNzSW5mbygpOworI2VuZGlm
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDEyOTk5
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJl
c2V0KEpTVmFsdWUgcHJvdG8KICAgICBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgSlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1
cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7
CiAgICAgbV9hcmd1bWVudHNTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
QXJndW1lbnRzOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX29i
amVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVy
ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0NhbGxiYWNrQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBl
LmdldCgpKSk7Ci0gICAgbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzLCBKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+OjpjcmVhdGVT
dHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQo
KSkpOworICAgIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywgSlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OmNyZWF0ZVN0
cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KSk7CiAKICAgICBtX2FycmF5UHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IEFycmF5UHJvdG90eXBlOjpjcmVhdGUoZXhlYywgdGhpcywgQXJyYXlQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpKSkpOwogICAgIG1fYXJyYXlTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywgSlNBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9h
cnJheVByb3RvdHlwZS5nZXQoKSwgQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9u
IDEyOTk5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
IHsKICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QgQmFzZTsKICAgICAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxPcGFxdWVKU1dlYWtPYmpl
Y3RNYXA+ID4gV2Vha01hcFNldDsKIAogICAgICAgICBzdHJ1Y3QgSlNHbG9iYWxPYmplY3RSYXJl
RGF0YSB7CkBAIC0xNzAsMTQgKzE2OSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IGlmIChtX3JhcmVEYXRhKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1f
cmFyZURhdGEgPSBhZG9wdFB0cihuZXcgSlNHbG9iYWxPYmplY3RSYXJlRGF0YSk7Ci0gICAgICAg
ICAgICBIZWFwOjpoZWFwKHRoaXMpLT5hZGRGaW5hbGl6ZXIodGhpcywgY2xlYXJSYXJlRGF0YSk7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QgQmFzZTsKKwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxPYmpl
Y3QqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgICAgICB7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVh
cCkpIEpTR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBn
bG9iYWxPYmplY3QtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOworICAgICAgICAgICAgZ2xv
YmFsRGF0YS5oZWFwLmFkZEZpbmFsaXplcihnbG9iYWxPYmplY3QsIGRlc3Ryb3kpOwogICAgICAg
ICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdDsKICAgICAgICAgfQogCkBAIC0yMDUsNiArMjA2LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSB+SlNHbG9iYWxPYmplY3QoKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIGRlc3RydWN0
b3IgYmVjYXVzZSB3ZSB1c2UgYSBmaW5hbGl6ZXIgaW5zdGVhZC4KKyAgICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOwogCiAgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaAkocmV2aXNpb24gMTI5OTk5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw2ICs0OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKIAorICAgICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0cnVlOwogICAgICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAgIAogICAgICAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgJKHJldmlzaW9uIDEyOTk5OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTMg
KzI2LDEzIEBACiAjaWZuZGVmIEpTUHJveHlfaAogI2RlZmluZSBKU1Byb3h5X2gKIAotI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEpTUHJveHkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CitjbGFzcyBKU1Byb3h5IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoK
LSAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICB0eXBlZGVmIEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0IEJhc2U7CiAKICAgICBzdGF0aWMgSlNQcm94eSogY3JlYXRlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXQp
CiAgICAgewpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBKU1By
b3h5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAg
ICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCisgICAgICAgIDog
SlNEZXN0cnVjdGlibGVPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgIHsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCShyZXZp
c2lvbiAxMjk5OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFT
U0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNTY29wZSk7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVT
VFJVQ1RPUihKU1Njb3BlKTsKIAogdm9pZCBKU1Njb3BlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDEyOTk5OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKIAorICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKKyAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0cnVlOwogICAgICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCShyZXZpc2lv
biAxMjk5OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTUgKzIyLDE1IEBACiAjaWZuZGVmIEpTV3JhcHBl
ck9iamVjdF9oCiAjZGVmaW5lIEpTV3JhcHBlck9iamVjdF9oCiAKLSNpbmNsdWRlICJKU09iamVj
dC5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgLy8gVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgYmFzZSBmb3IgY2xhc3NlcyBzdWNo
IGFzIFN0cmluZywKICAgICAvLyBOdW1iZXIsIEJvb2xlYW4gYW5kIERhdGUgd2hpY2ggYXJlIHdy
YXBwZXJzIGZvciBwcmltaXRpdmUgdHlwZXMuCi0gICAgY2xhc3MgSlNXcmFwcGVyT2JqZWN0IDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgeworICAgIGNsYXNzIEpTV3JhcHBlck9iamVjdCA6IHB1
YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVm
IEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICAgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9i
amVjdCBCYXNlOwogCiAgICAgICAgIEpTVmFsdWUgaW50ZXJuYWxWYWx1ZSgpIGNvbnN0OwogICAg
ICAgICB2b2lkIHNldEludGVybmFsVmFsdWUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSk7CkBAIC00
Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBl
eHBsaWNpdCBKU1dyYXBwZXJPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4gfCBKU05vbkZpbmFsT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
biB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIApAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB9OwogCiAgICAgaW5saW5lIEpTV3JhcHBlck9iamVjdDo6SlNXcmFwcGVy
T2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0g
ICAgICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCisgICAgICAg
IDogSlNEZXN0cnVjdGlibGVPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgIHsKICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3Qu
Y3BwCShyZXZpc2lvbiAxMjk5OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXRoT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTWF0aE9iamVjdCk7CitBU1NFUlRf
SEFTX1RSSVZJQUxfREVTVFJVQ1RPUihNYXRoT2JqZWN0KTsKIAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FicyhFeGVjU3RhdGUqKTsKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBQ29zKEV4ZWNTdGF0ZSop
OwpAQCAtNTksOSArNjAsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoCiAKIG5hbWVzcGFjZSBKU0MgewogCi1BU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihN
YXRoT2JqZWN0KTsKLQotY29uc3QgQ2xhc3NJbmZvIE1hdGhPYmplY3Q6OnNfaW5mbyA9IHsgIk1h
dGgiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCBFeGVjU3RhdGU6Om1hdGhUYWJsZSwg
Q1JFQVRFX01FVEhPRF9UQUJMRShNYXRoT2JqZWN0KSB9OworY29uc3QgQ2xhc3NJbmZvIE1hdGhP
YmplY3Q6OnNfaW5mbyA9IHsgIk1hdGgiLCAmQmFzZTo6c19pbmZvLCAwLCBFeGVjU3RhdGU6Om1h
dGhUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShNYXRoT2JqZWN0KSB9OwogCiAvKiBTb3VyY2Ug
Zm9yIE1hdGhPYmplY3QubHV0LmgKIEBiZWdpbiBtYXRoVGFibGUKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hbWVJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hbWVJbnN0YW5jZS5oCShyZXZpc2lvbiAxMjk5OTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYW1lSW5zdGFuY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsMTQgKzI2LDE0IEBACiAjaWZuZGVmIE5hbWVJbnN0YW5jZV9oCiAjZGVmaW5l
IE5hbWVJbnN0YW5jZV9oCiAKLSNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiUHJpdmF0ZU5hbWUuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLWNsYXNzIE5hbWVJbnN0YW5jZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
K2NsYXNzIE5hbWVJbnN0YW5jZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJs
aWM6Ci0gICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgdHlwZWRlZiBKU0Rl
c3RydWN0aWJsZU9iamVjdCBCYXNlOwogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2lu
Zm87CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCShyZXZpc2lv
biAxMjk5OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkod29y
a2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlw
ZWRlZiBKU0NlbGwgQmFzZTsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVn
RXhwKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBSZWdFeHBG
bGFncyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVl
OworICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7
CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgYm9vbCBn
bG9iYWwoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ0dsb2JhbDsgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCShyZXZpc2lv
biAxMjk5OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw5IEBAIHN0YXRpYyBKU1ZhbHVlIHJlZ0V4
cE9iamVjdFNvdXJjZShFeGVjU3QKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklU
U19JTl9DRUxMKFJlZ0V4cE9iamVjdCk7CitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihS
ZWdFeHBPYmplY3QpOwogCi1jb25zdCBDbGFzc0luZm8gUmVnRXhwT2JqZWN0OjpzX2luZm8gPSB7
ICJSZWdFeHAiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCBFeGVjU3RhdGU6OnJlZ0V4
cFRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJlZ0V4cE9iamVjdCkgfTsKK2NvbnN0IENsYXNz
SW5mbyBSZWdFeHBPYmplY3Q6OnNfaW5mbyA9IHsgIlJlZ0V4cCIsICZCYXNlOjpzX2luZm8sIDAs
IEV4ZWNTdGF0ZTo6cmVnRXhwVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoUmVnRXhwT2JqZWN0
KSB9OwogCiAvKiBTb3VyY2UgZm9yIFJlZ0V4cE9iamVjdC5sdXQuaAogQGJlZ2luIHJlZ0V4cFRh
YmxlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVl
TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNl
QXJyYXlWYWx1ZU1hcC5oCShyZXZpc2lvbiAxMjk5OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYg
KzgxLDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIFNwYXJzZUFycmF5VmFsdWVNYXAqIGNyZWF0
ZShKU0dsb2JhbERhdGEmKTsKICAgICAKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3Ry
dWN0aW9uID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVy
ZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAKICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTI5OTk5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw2ICsxMjgs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBTdHJ1Y3R1cmUqIGZsYXR0ZW5EaWN0aW9u
YXJ5U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTT2JqZWN0Kik7CiAKKyAgICAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CisgICAgICAgIHN0YXRpYyBjb25z
dCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKICAgICAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRo
IGNhdXRpb24uICAKQEAgLTQ3MywxNyArNDc1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHVuc2lnbmVkIG1fc3RhdGljRnVuY3Rpb25SZWlmaWVkOwogICAgIH07CiAKLSAgICB0ZW1wbGF0
ZSA8PiBpbmxpbmUgdm9pZCogYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4oSGVhcCYgaGVhcCkKLSAg
ICB7Ci0jaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCi0gICAgICAgIEFTU0VSVCghaGVhcC5nbG9i
YWxEYXRhKCktPmlzSW5pdGlhbGl6aW5nT2JqZWN0KCkpOwotICAgICAgICBoZWFwLmdsb2JhbERh
dGEoKS0+c2V0SW5pdGlhbGl6aW5nT2JqZWN0Q2xhc3MoJlN0cnVjdHVyZTo6c19pbmZvKTsKLSNl
bmRpZgotICAgICAgICBKU0NlbGwqIHJlc3VsdCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGhlYXAu
YWxsb2NhdGVTdHJ1Y3R1cmUoc2l6ZW9mKFN0cnVjdHVyZSkpKTsKLSAgICAgICAgcmVzdWx0LT5j
bGVhclN0cnVjdHVyZSgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQogICAgIGlu
bGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0
IFR5cGVJbmZvJiB0eXBlSW5mbywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIEluZGV4aW5n
VHlwZSBpbmRleGluZ1R5cGUpCiAgICAgewogICAgICAgICBBU1NFUlQoZ2xvYmFsRGF0YS5zdHJ1
Y3R1cmVTdHJ1Y3R1cmUpOwpAQCAtNjI4LDE1ICs2MTksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgQVNTRVJUKG1fc3RydWN0dXJlIHx8ICFnbG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVy
ZSk7CiAgICAgfQogCi0gICAgaW5saW5lIGNvbnN0IENsYXNzSW5mbyogSlNDZWxsOjpjbGFzc0lu
Zm8oKSBjb25zdAotICAgIHsKLSNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKLSAgICAgICAgcmV0
dXJuIG1fc3RydWN0dXJlLnVudmFsaWRhdGVkR2V0KCktPmNsYXNzSW5mbygpOwotI2Vsc2UKLSAg
ICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLT5jbGFzc0luZm8oKTsKLSNlbmRpZgotICAgIH0KLQog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBTdHJ1Y3R1cmVfaApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAx
Mjk5OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgCiAgICAgICAgIHN0YXRpYyBDbGFzc0luZm8gc19pbmZvOwogCisgICAgICAgIHN0YXRpYyBj
b25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOworICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7CisgICAgICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIGhlYWQpCiAgICAgICAg
IHsKQEAgLTc4LDcgKzgyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmVDaGFp
bihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
PiBtX3ZlY3RvcjsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDEyOTk5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0NCwxMiArMzQ0
LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU2hhcmVkU3ltYm9sVGFibGUgOiBw
dWJsaWMgSlNDZWxsLCBwdWJsaWMgU3ltYm9sVGFibGUgewogICAgIHB1YmxpYzoKKyAgICAgICAg
dHlwZWRlZiBKU0NlbGwgQmFzZTsKKwogICAgICAgICBzdGF0aWMgU2hhcmVkU3ltYm9sVGFibGUq
IGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAg
IFNoYXJlZFN5bWJvbFRhYmxlKiBzaGFyZWRTeW1ib2xUYWJsZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFNoYXJlZFN5bWJvbFRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBTaGFyZWRTeW1i
b2xUYWJsZShnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIHNoYXJlZFN5bWJvbFRhYmxlLT5maW5p
c2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIHJldHVybiBzaGFyZWRTeW1ib2xU
YWJsZTsKICAgICAgICAgfQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0
aW9uID0gdHJ1ZTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1
cmUgPSB0cnVlOwogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAg
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpA
QCAtMzk2LDYgKzQwMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93bkFycmF5UHRy
PFNsb3dBcmd1bWVudD4gbV9zbG93QXJndW1lbnRzOwogICAgIH07CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwogCiAjZW5kaWYgLy8gU3ltYm9sVGFibGVfaApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MTI5OTk5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNDMgQEAKKzIwMTItMDktMTYgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFw
cGxlLmNvbT4KKworICAgICAgICBEZWxheWVkIHN0cnVjdHVyZSBzd2VlcCBjYW4gbGVhayBzdHJ1
Y3R1cmVzIHdpdGhvdXQgYm91bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk2NTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBnZXRzIHJpZCBvZiB0aGUgc2VwYXJhdGUgU3RydWN0dXJl
IGFsbG9jYXRvciBpbiB0aGUgTWFya2VkU3BhY2UgYW5kIGFkZHMgdHdvIG5ldyBkZXN0cnVjdG9y
LW9ubHkKKyAgICAgICAgYWxsb2NhdG9ycy4gV2Ugbm93IGhhdmUgc2VwYXJhdGUgYWxsb2NhdG9y
cyBmb3Igb3VyIHRocmVlIHR5cGVzIG9mIG9iamVjdHM6IHRob3NlIG9iamVjdHMgd2l0aCBubyBk
ZXN0cnVjdG9ycywKKyAgICAgICAgdGhvc2Ugb2JqZWN0cyB3aXRoIGRlc3RydWN0b3JzIGFuZCB3
aXRoIGltbW9ydGFsIHN0cnVjdHVyZXMsIGFuZCB0aG9zZSBvYmplY3RzIHdpdGggZGVzdHJ1Y3Rv
cnMgdGhhdCBkb24ndCBoYXZlIAorICAgICAgICBpbW1vcnRhbCBzdHJ1Y3R1cmVzLiBBbGwgb2Yg
dGhlIG9iamVjdHMgb2YgdGhlIHRoaXJkIHR5cGUgKGRlc3RydWN0b3JzIHdpdGhvdXQgaW1tb3J0
YWwgc3RydWN0dXJlcykgbm93IAorICAgICAgICBpbmhlcml0IGZyb20gYSBuZXcgY2xhc3MgbmFt
ZWQgSlNEZXN0cnVjdGlibGVPYmplY3QgKHdoaWNoIGluIHR1cm4gaXMgYSBzdWJjbGFzcyBvZiBK
U05vbkZpbmFsT2JqZWN0KSwgd2hpY2ggc3RvcmVzIAorICAgICAgICB0aGUgQ2xhc3NJbmZvIGZv
ciB0aGVzZSBjbGFzc2VzIGF0IGEgZml4ZWQgb2Zmc2V0IGZvciBzYWZlIHJldHJpZXZhbCBkdXJp
bmcgc3dlZXBpbmcvZGVzdHJ1Y3Rpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAg
ICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU0Rlc3RydWN0YWJsZU9iamVjdC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaDogSW5oZXJpdHMgZnJv
bSBKU0Rlc3RydWN0aWJsZU9iamVjdC4KKyAgICAgICAgKEpTRE9NV3JhcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdyYXBwZXI6OkpTRE9NV3JhcHBlcik6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06IEFkZCBmaW5hbGl6ZXJzIHRvIGFueXRoaW5n
IHRoYXQgaW5oZXJpdHMgZnJvbSBKU0dsb2JhbE9iamVjdCwKKyAgICAgICAgZS5nLiBKU0RPTVdp
bmRvdyBhbmQgSlNXb3JrZXJDb250ZXh0cy4gRm9yIHRob3NlIGNsYXNzZXMgd2UgYWxzbyBuZWVk
IHRvIGRlZmluZSBuZWVkc0Rlc3RydWN0aW9uIGFzIHRydWUuCisgICAgICAgIChHZW5lcmF0ZUhl
YWRlcik6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmg6IEluaGVyaXQgZnJv
bSBKU0Rlc3RydWN0aWJsZU9iamVjdC4KKyAgICAgICAgKE9iamNGYWxsYmFja09iamVjdEltcCk6
CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoQmluZGlu
Z3MpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpPYmpj
RmFsbGJhY2tPYmplY3RJbXApOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5LmNwcDog
VXNlIGEgZmluYWxpemVyIHNvIHRoYXQgSlNBcnJheSBpc24ndCBmb3JjZWQgdG8gaW5oZXJpdCBm
cm9tIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6
UnVudGltZUFycmF5OjpkZXN0cm95KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5o
OgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmNyZWF0ZSk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6IEluaGVyaXQgZnJvbSBKU0Rlc3Ry
dWN0aWJsZU9iamVjdC4KKyAgICAgICAgKEJpbmRpbmdzKToKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6OlJ1bnRpbWVPYmplY3Q6OlJ1bnRpbWVPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9ydW50
aW1lX29iamVjdC5oOgorICAgICAgICAoUnVudGltZU9iamVjdCk6CisKIDIwMTItMDktMzAgIEFu
ZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIDQ0NGtCIGJlbG93IENT
U1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkR3JhZGllbnQoKSBvbiBNZW1idXN0ZXIzLgpJbmRleDog
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0pTRGVzdHJ1Y3Rp
YmxlT2JqZWN0X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSlNEZXN0cnVjdGlibGVPYmplY3RfaAor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmg+CisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCShyZXZpc2lv
biAxMjk5OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjMsMjAgKzIzLDIyIEBACiAjZGVmaW5lIEpTRE9NV3JhcHBlcl9o
CiAKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNP
YmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotY2xh
c3MgSlNET01XcmFwcGVyIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitjbGFzcyBK
U0RPTVdyYXBwZXIgOiBwdWJsaWMgSlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6
CisgICAgdHlwZWRlZiBKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKICAgICBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gSlNDOjpqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihKU0M6OkpTTm9uRmluYWxPYmplY3Q6Omdsb2JhbE9iamVjdCgp
KTsgfQogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3QoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OyB9CiAKIHByb3RlY3RlZDoKICAgICBKU0RPTVdyYXBwZXIoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSAKLSAgICAgICAgOiBKU05v
bkZpbmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCisgICAg
ICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHN0
cnVjdHVyZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxMjk5OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtNzQy
LDYgKzc0Miw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAk
Y2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05h
bWU+KGdsb2JhbERhdGEuaGVhcCkpICR7Y2xhc3NOYW1lfShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUs
IGltcGwsIHdpbmRvd1NoZWxsKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIHdpbmRvd1NoZWxsKTtcbiIp
OworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBnbG9iYWxEYXRhLmhlYXAu
YWRkRmluYWxpemVyKHB0ciwgZGVzdHJveSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIHB0cjtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIH1cblxuIik7CiAgICAgfSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0pIHsKQEAgLTc0OSw2ICs3NTAsNyBAQCBzdWIgR2Vu
ZXJhdGVIZWFkZXIKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxEYXRhLmhlYXAp
KSAke2NsYXNzTmFtZX0oZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBpbXBsKTtcbiIpOwogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2Jh
bERhdGEpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIGdsb2Jh
bERhdGEuaGVhcC5hZGRGaW5hbGl6ZXIocHRyLCBkZXN0cm95KTtcbiIpOwogICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKICAgICB9IGVsc2lmICgkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIn0pIHsKQEAgLTc3MCw2
ICs3NzIsMTAgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgfVxuXG4iKTsKICAgICB9CiAKKyAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRP
TVdpbmRvdyIgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250
ZXh0In0pIHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7XG5cbiIpOworICAgIH0KKwogICAgICMgUHJv
dG90eXBlCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU09iamVj
dCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
O1xuIikgdW5sZXNzICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeHRlbmRzRE9N
R2xvYmFsT2JqZWN0In0pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJy
YXkuY3BwCShyZXZpc2lvbiAxMjk5OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9hcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gUnVudGlt
ZUFycmF5OjpzX2luZm8gPSB7ICJSdW50aW1lQXJyYXkiLCAmSlNBcnJheTo6c19pbmZvLCAwLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJ1bnRpbWVBcnJheSkgfTsKK2NvbnN0IENsYXNzSW5mbyBS
dW50aW1lQXJyYXk6OnNfaW5mbyA9IHsgIlJ1bnRpbWVBcnJheSIsICZCYXNlOjpzX2luZm8sIDAs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUnVudGltZUFycmF5KSB9OwogCiBSdW50aW1lQXJyYXk6
OlJ1bnRpbWVBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
IDogSlNBcnJheShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSwgMCkKQEAgLTU3LDcgKzU3
LDcgQEAgUnVudGltZUFycmF5Ojp+UnVudGltZUFycmF5KCkKIAogdm9pZCBSdW50aW1lQXJyYXk6
OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogewotICAgIHN0YXRpY19jYXN0PFJ1bnRpbWVBcnJheSo+
KGNlbGwpLT5SdW50aW1lQXJyYXk6On5SdW50aW1lQXJyYXkoKTsKKyAgICBqc0Nhc3Q8UnVudGlt
ZUFycmF5Kj4oY2VsbCktPlJ1bnRpbWVBcnJheTo6flJ1bnRpbWVBcnJheSgpOwogfQogCiBKU1Zh
bHVlIFJ1bnRpbWVBcnJheTo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJh
c2UsIFByb3BlcnR5TmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2Fy
cmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXku
aAkocmV2aXNpb24gMTI5OTk5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJy
YXkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTIgKzQzLDE0IEBAIHB1YmxpYzoKICAgICAgICAg
U3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0
dXJlPFJ1bnRpbWVBcnJheT4oZXhlYyk7CiAgICAgICAgIFJ1bnRpbWVBcnJheSogcnVudGltZUFy
cmF5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UnVudGltZUFycmF5PigqZXhlYy0+aGVh
cCgpKSkgUnVudGltZUFycmF5KGV4ZWMsIGRvbVN0cnVjdHVyZSk7CiAgICAgICAgIHJ1bnRpbWVB
cnJheS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBhcnJheSk7CisgICAgICAg
IGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLmFkZEZpbmFsaXplcihydW50aW1lQXJyYXksIGRlc3Ry
b3kpOwogICAgICAgICByZXR1cm4gcnVudGltZUFycmF5OwogICAgIH0KIAogICAgIHR5cGVkZWYg
QmluZGluZ3M6OkFycmF5IEJpbmRpbmdzQXJyYXk7CiAgICAgflJ1bnRpbWVBcnJheSgpOwogICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVl
ZHNEZXN0cnVjdGlvbiA9IGZhbHNlOwogCiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTg4LDcgKzkwLDcgQEAg
cHJpdmF0ZToKIAogICAgIEJpbmRpbmdzQXJyYXkqIG1fYXJyYXk7CiB9OwotICAgIAorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFJVTlRJTUVfQVJSQVlfSF8KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAkocmV2aXNpb24gMTI5OTk5KQorKysg
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsMTAgKzM1LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIEpT
QyB7CiBuYW1lc3BhY2UgQmluZGluZ3MgewogCi1jb25zdCBDbGFzc0luZm8gUnVudGltZU9iamVj
dDo6c19pbmZvID0geyAiUnVudGltZU9iamVjdCIsICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8s
IDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUnVudGltZU9iamVjdCkgfTsKK2NvbnN0IENsYXNz
SW5mbyBSdW50aW1lT2JqZWN0OjpzX2luZm8gPSB7ICJSdW50aW1lT2JqZWN0IiwgJkJhc2U6OnNf
aW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShSdW50aW1lT2JqZWN0KSB9OwogCiBSdW50
aW1lT2JqZWN0OjpSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPEluc3RhbmNlPiBpbnN0
YW5jZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCks
IHN0cnVjdHVyZSkKKyAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KGdsb2JhbE9iamVjdC0+Z2xv
YmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2luc3RhbmNlKGluc3RhbmNlKQogewogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHJldmlzaW9uIDEyOTk5
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw5ICszMiw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBCaW5kaW5n
cyB7CiAKLWNsYXNzIFJ1bnRpbWVPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Citj
bGFzcyBSdW50aW1lT2JqZWN0IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1Ymxp
YzoKLSAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICB0eXBlZGVmIEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAKICAgICBzdGF0aWMgUnVudGltZU9iamVjdCogY3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlKQogICAgIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCShyZXZpc2lvbiAxMjk5
OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTAsOSArOTAsOSBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxPYmplY3RT
dHJ1Y3RQdHI+IF9hcnJheTsKIH07CiAKLWNsYXNzIE9iamNGYWxsYmFja09iamVjdEltcCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK2NsYXNzIE9iamNGYWxsYmFja09iamVjdEltcCA6IHB1
YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU05vbkZp
bmFsT2JqZWN0IEJhc2U7CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwog
CiAgICAgc3RhdGljIE9iamNGYWxsYmFja09iamVjdEltcCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgT2JqY0luc3RhbmNlKiBpbnN0YW5jZSwg
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkocmV2aXNpb24gMTI5OTk5KQorKysgU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODgsMTAgKzE4OCwxMCBAQCB1bnNpZ25lZCBpbnQgT2JqY0FycmF5OjpnZXRMZW5ndGgoKSBjb25z
CiAgICAgcmV0dXJuIFtfYXJyYXkuZ2V0KCkgY291bnRdOwogfQogCi1jb25zdCBDbGFzc0luZm8g
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpzX2luZm8gPSB7ICJPYmpjRmFsbGJhY2tPYmplY3QiLCAm
SlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE9iamNG
YWxsYmFja09iamVjdEltcCkgfTsKK2NvbnN0IENsYXNzSW5mbyBPYmpjRmFsbGJhY2tPYmplY3RJ
bXA6OnNfaW5mbyA9IHsgIk9iamNGYWxsYmFja09iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKSB9OwogCiBPYmpjRmFs
bGJhY2tPYmplY3RJbXA6Ok9iamNGYWxsYmFja09iamVjdEltcChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgT2JqY0luc3RhbmNlKiBpLCBjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKKyAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KGds
b2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiAgICAgLCBfaW5zdGFuY2UoaSkK
ICAgICAsIG1faXRlbShwcm9wZXJ0eU5hbWUpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCShy
ZXZpc2lvbiAxMjk5OTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvSlNOUE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDEwICs1NCwxMCBAQCBz
dGF0aWMgTlBJZGVudGlmaWVyIG5wSWRlbnRpZmllckZyb21JZGVuCiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PE5QSWRlbnRpZmllcj4oSWRlbnRpZmllclJlcDo6Z2V0KG5hbWUudXRmOCgpLmRhdGEo
KSkpOwogfQogCi1jb25zdCBDbGFzc0luZm8gSlNOUE9iamVjdDo6c19pbmZvID0geyAiTlBPYmpl
Y3QiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTTlBPYmplY3QpIH07Citjb25zdCBDbGFzc0luZm8gSlNOUE9iamVjdDo6c19pbmZvID0geyAi
TlBPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTTlBP
YmplY3QpIH07CiAKIEpTTlBPYmplY3Q6OkpTTlBPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE5QUnVudGltZU9iamVjdE1hcCogb2JqZWN0
TWFwLCBOUE9iamVjdCogbnBPYmplY3QpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbE9i
amVjdC0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCisgICAgOiBKU0Rlc3RydWN0aWJsZU9iamVj
dChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogICAgICwgbV9vYmplY3RN
YXAob2JqZWN0TWFwKQogICAgICwgbV9ucE9iamVjdChucE9iamVjdCkKIHsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBP
YmplY3QuaAkocmV2aXNpb24gMTI5OTk5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEs
OSBAQCBjbGFzcyBOUFJ1bnRpbWVPYmplY3RNYXA7CiAgICAgCiAvLyBKU05QT2JqZWN0IGlzIGEg
SlNPYmplY3QgdGhhdCB3cmFwcyBhbiBOUE9iamVjdC4KIAotY2xhc3MgSlNOUE9iamVjdCA6IHB1
YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworY2xhc3MgSlNOUE9iamVjdCA6IHB1YmxpYyBK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQzo6SlNO
b25GaW5hbE9iamVjdCBCYXNlOworICAgIHR5cGVkZWYgSlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCBCYXNlOwogCiAgICAgc3RhdGljIEpTTlBPYmplY3QqIGNyZWF0ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIE5QUnVudGltZU9iamVjdE1hcCogb2JqZWN0TWFwLCBOUE9iamVj
dCogbnBPYmplY3QpCiAgICAgewo=
</data>
<flag name="review"
          id="178716"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>