<?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>97570</bug_id>
          
          <creation_ts>2012-09-25 09:28:39 -0700</creation_ts>
          <short_desc>IndexedDB: Allow multiple transactions to interleave request execution</short_desc>
          <delta_ts>2012-12-05 17:31:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>523.x (Safari 3)</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>97501</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>alecflett</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>peter+ews</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>727713</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-25 09:28:39 -0700</bug_when>
    <thetext>Per spec http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#transaction-concept transactions within a database can run in parallel:

* a version change transaction precludes all other transactions
* &quot;readonly&quot; transactions can run at the same time even if their scopes are overlapping
* multiple &quot;readwrite&quot; transactions can&apos;t run at the same time if their scopes are overlapping

More details in the spec about letting readonly and readwrite transactions run in parallel - basically, transactions should read from a data snapshot so that their view of data is consistent.

Following webkit.org/b/97501 WebKit runs transactions serially within a database. Allowing read-only transactions to run in parallel will be a nice performance boost. We can do this incrementally:

(1) Allow transactions with non-overlapping scopes to run in parallel
(2) Allow read-only transactions with overlapping scopes to run in parallel
(3) Give each transaction a &quot;snapshot&quot; of the database, and only serialize read-write transactions with overlapping scopes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727718</commentid>
    <comment_count>1</comment_count>
      <attachid>165628</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-25 09:30:36 -0700</bug_when>
    <thetext>Created attachment 165628
Sample C++ code for scope comparison

The attachment contains some C++ code that implements the overlapping scope semantics. It was not developed against the current IDB implementation so it is not just a patch, just capturing implementation ideas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783083</commentid>
    <comment_count>2</comment_count>
      <attachid>177599</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-04 16:26:56 -0800</bug_when>
    <thetext>Created attachment 177599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783086</commentid>
    <comment_count>3</comment_count>
      <attachid>177600</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-04 16:31:11 -0800</bug_when>
    <thetext>Created attachment 177600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783088</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-04 16:31:38 -0800</bug_when>
    <thetext>Blurgh, introduced WebIDBTransaction::Mode enum, will mean some Chromium hijinx to land this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783094</commentid>
    <comment_count>5</comment_count>
      <attachid>177602</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-04 16:38:41 -0800</bug_when>
    <thetext>Created attachment 177602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783095</commentid>
    <comment_count>6</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-04 16:39:17 -0800</bug_when>
    <thetext>Leaving mode as just an unsigned short in the chromium public WebKit API for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783107</commentid>
    <comment_count>7</comment_count>
      <attachid>177602</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-04 16:48:42 -0800</bug_when>
    <thetext>Comment on attachment 177602
Patch

Passes in content_shell and various other Chromium tests locally. 

dgrogan@, alecflett@ - please take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783273</commentid>
    <comment_count>8</comment_count>
      <attachid>177602</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-12-04 19:46:33 -0800</bug_when>
    <thetext>Comment on attachment 177602
Patch

Attachment 177602 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15158095</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783309</commentid>
    <comment_count>9</comment_count>
      <attachid>177602</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-04 20:24:51 -0800</bug_when>
    <thetext>Comment on attachment 177602
Patch

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

I&apos;m assuming you&apos;re going to add a test that RW transactions block other transactions, etc.

It&apos;s impressive that all the prep work allowed this patch to be so small.

&gt; Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.cpp:104
&gt; +    ListHashSet&lt;IDBTransactionBackendImpl*&gt;::const_iterator it = m_startedTransactions.begin();

You&apos;ll have to add some stuff here to take care of the A blocks A,B which should block B,C situation?

&gt; Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.cpp:109
&gt; +            m_startedTransactions.remove(transaction);

I feel like &quot;started&quot; is used as &quot;queued.&quot;

&gt; Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.cpp:112
&gt; +        }

I can&apos;t convince myself either way of a starvation problem. If there is one I think you could use else { return; } here as a sledgehammer that would also fix the A-&gt;A,B-&gt;B,C problem.

&gt; LayoutTests/storage/indexeddb/database-close-expected.txt:-42
&gt; -awaiting_transaction_count -= 1

What was happening here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783425</commentid>
    <comment_count>10</comment_count>
      <attachid>177602</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 23:08:09 -0800</bug_when>
    <thetext>Comment on attachment 177602
Patch

Attachment 177602 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15136005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783789</commentid>
    <comment_count>11</comment_count>
      <attachid>177763</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-05 08:42:31 -0800</bug_when>
    <thetext>Created attachment 177763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783893</commentid>
    <comment_count>12</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-05 10:43:54 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.cpp:104
&gt; &gt; +    ListHashSet&lt;IDBTransactionBackendImpl*&gt;::const_iterator it = m_startedTransactions.begin();
&gt; 
&gt; You&apos;ll have to add some stuff here to take care of the A blocks A,B which should block B,C situation?

Yes. Probably build up a union of all prior scopes, and look closely at the spec re: being blocked on started vs. running transactions.
 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.cpp:109
&gt; &gt; +            m_startedTransactions.remove(transaction);
&gt; 
&gt; I feel like &quot;started&quot; is used as &quot;queued.&quot;

Yeah, it&apos;s confusing. I think it matches the spec terminology but I&apos;ll revisit.

&gt; &gt; Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.cpp:112
&gt; &gt; +        }
&gt; 
&gt; I can&apos;t convince myself either way of a starvation problem. If there is one I think you could use else { return; } here as a sledgehammer that would also fix the A-&gt;A,B-&gt;B,C problem.
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/database-close-expected.txt:-42
&gt; &gt; -awaiting_transaction_count -= 1
&gt; 
&gt; What was happening here?

Surprisingly only two tests had output affected by the change. This one fired off two transactions and then waiting for them both to finish. Prior to this patch the first would log completion before the second started. With the patch they&apos;d both run then complete at the &quot;same time&quot; so the placement of this line in the output would differ. Since the test was not about transaction sequencing I made the output &quot;agnostic&quot; rather than reliant on the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784118</commentid>
    <comment_count>13</comment_count>
      <attachid>177830</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-05 14:30:11 -0800</bug_when>
    <thetext>Created attachment 177830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784125</commentid>
    <comment_count>14</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-05 14:35:20 -0800</bug_when>
    <thetext>&gt; &gt; You&apos;ll have to add some stuff here to take care of the A blocks A,B which should block B,C situation?
&gt; 
&gt; Yes. Probably build up a union of all prior scopes, and look closely at the spec re: being blocked on started vs. running transactions.

Easier than I thought - just need to loop over both started and queued transactions. Anything earlier that overlaps blocks a transaction.

&gt; &gt; I feel like &quot;started&quot; is used as &quot;queued.&quot;
&gt; 
&gt; Yeah, it&apos;s confusing. I think it matches the spec terminology but I&apos;ll revisit.

Renamed started-&gt;queued, running-&gt;started which matches spec.
 
&gt; &gt; I can&apos;t convince myself either way of a starvation problem. If there is one I think you could use else { return; } here as a sledgehammer that would also fix the A-&gt;A,B-&gt;B,C problem.

Added a test for the [A], [A,B], [B,C] case.

The spec says &quot;If multiple &quot;readwrite&quot; transactions are attempting to access the same object store (i.e. if they have overlapping scope), the transaction that was created first must be the transaction which gets access to the object store first. Due to the requirements in the previous paragraph, this also means that it is the only transaction which has access to the object store until the transaction is finished.&quot;

If I&apos;m reading it right, that prevents a transaction filed later from ever blocking a transaction filed earlier.

dgrogan@, another look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784162</commentid>
    <comment_count>15</comment_count>
      <attachid>177830</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-05 15:08:15 -0800</bug_when>
    <thetext>Comment on attachment 177830
Patch

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

Could you add a test that tries to starve a readwrite transaction? The part of the spec I&apos;m worried about is:

User agents must ensure a reasonable level of fairness across transactions to prevent starvation. For example, if multiple &quot;readonly&quot; transactions are started one after another the implementation must not indefinitely prevent a pending &quot;readwrite&quot; transaction from starting.

Something like
(function {
  db.transaction(A).store(A).get(adsf).onsuccess = this;
})();

db.transaction(A, rw).objectStore(A).get(adsfa).onsuccess = finishJSTest;

(Sorry, that was just fun to write. Write the test however you want :)

Though if you want to commit this before worrying about starvation, I&apos;m fine with that: LGTM

&gt; Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.cpp:118
&gt; +    for (HashSet&lt;int64_t &gt;::const_iterator it = scope1.begin(); it != scope1.end(); ++it) {

extra space before &gt;

&gt; Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.cpp:144
&gt; +            if ((*it)-&gt;mode() == IDBTransaction::READ_WRITE &amp;&amp; doScopesOverlap(transaction-&gt;scope(), (*it)-&gt;scope()))

Isn&apos;t transaction still in m_queuedTransactions and needs to be skipped?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784194</commentid>
    <comment_count>16</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-05 15:34:54 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 177830 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177830&amp;action=review
&gt; 
&gt; Could you add a test that tries to starve a readwrite transaction? 

Will do. 
 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.cpp:118
&gt; &gt; +    for (HashSet&lt;int64_t &gt;::const_iterator it = scope1.begin(); it != scope1.end(); ++it) {
&gt; 
&gt; extra space before &gt;

Fixed.
 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.cpp:144
&gt; &gt; +            if ((*it)-&gt;mode() == IDBTransaction::READ_WRITE &amp;&amp; doScopesOverlap(transaction-&gt;scope(), (*it)-&gt;scope()))
&gt; 
&gt; Isn&apos;t transaction still in m_queuedTransactions and needs to be skipped?

Not just skipped - it&apos;s actually the loop termination condition (so the check is in there but not on its own line), because the transaction in question shouldn&apos;t block on any subsequent queued transactions. This is covered by the existing test since otherwise in [A], [A,B], [B,C] the second would block on the third.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784208</commentid>
    <comment_count>17</comment_count>
      <attachid>177830</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-05 15:46:05 -0800</bug_when>
    <thetext>Comment on attachment 177830
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/indexeddb/IDBTransactionCoordinator.cpp:144
&gt;&gt;&gt; +            if ((*it)-&gt;mode() == IDBTransaction::READ_WRITE &amp;&amp; doScopesOverlap(transaction-&gt;scope(), (*it)-&gt;scope()))
&gt;&gt; 
&gt;&gt; Isn&apos;t transaction still in m_queuedTransactions and needs to be skipped?
&gt; 
&gt; Not just skipped - it&apos;s actually the loop termination condition (so the check is in there but not on its own line), because the transaction in question shouldn&apos;t block on any subsequent queued transactions. This is covered by the existing test since otherwise in [A], [A,B], [B,C] the second would block on the third.

Ah, missed that termination condition. Good algorithm.

I suspect something similar will be necessary in &quot;case READ_ONLY:&quot; above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784210</commentid>
    <comment_count>18</comment_count>
      <attachid>177852</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-05 15:48:44 -0800</bug_when>
    <thetext>Created attachment 177852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784212</commentid>
    <comment_count>19</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-05 15:51:42 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt;
&gt; I suspect something similar will be necessary in &quot;case READ_ONLY:&quot; above.

As we talked about offline, it appears from the spec that readonly transactions are never blocked nor do they ever block other transactions, so no additional tests are necessary here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784215</commentid>
    <comment_count>20</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-05 15:52:22 -0800</bug_when>
    <thetext>tony@ - r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784226</commentid>
    <comment_count>21</comment_count>
      <attachid>177852</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-05 16:08:06 -0800</bug_when>
    <thetext>Comment on attachment 177852
Patch

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

&gt; LayoutTests/storage/indexeddb/resources/transaction-starvation.js:38
&gt; +    transaction.oncomplete = function() {

I think that this should be in a request.onsuccess handler, not the complete handler. As it stands here, I don&apos;t think it would detect a starvation problem if there were one: when the readwrite transaction is started both m_queuedTransactions and m_startedTransactions are empty, so the readwrite transaction would proceed merrily. We want to test the scenario wherein a readwrite transaction is started when there&apos;s &gt;0 readonly transactions in m_startedTransactions.

Or am I missing something?

&gt; LayoutTests/storage/indexeddb/resources/transaction-starvation.js:57
&gt; +        shouldBeTrue(&quot;readOnlyTransactionRunning&quot;);

Ah, and this tests that a readonly transaction is not blocked on a readwrite. I like it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784229</commentid>
    <comment_count>22</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-05 16:09:40 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 177852 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177852&amp;action=review
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/resources/transaction-starvation.js:38
&gt; &gt; +    transaction.oncomplete = function() {
&gt; 
&gt; I think that this should be in a request.onsuccess handler, not the complete handler. 

You&apos;re right, it could slip in. I&apos;ll fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784235</commentid>
    <comment_count>23</comment_count>
      <attachid>177856</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-05 16:23:29 -0800</bug_when>
    <thetext>Created attachment 177856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784236</commentid>
    <comment_count>24</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-05 16:25:20 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; Created an attachment (id=177856) [details]
&gt; Patch

Slight tweak per discussion - the starvation test now &quot;merely&quot; verifies that a &quot;readonly&quot; transaction doesn&apos;t block a &quot;readwrite&quot; transaction. It doesn&apos;t generate a chain of &quot;readonly&quot; transactions as that could permit a bug (e.g. a bogus anti-starvation algorithm) to allow the new &quot;readonly&quot; to get delayed until after the &quot;readwrite&quot;

tony@ - r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784286</commentid>
    <comment_count>25</comment_count>
      <attachid>177856</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-12-05 16:54:19 -0800</bug_when>
    <thetext>Comment on attachment 177856
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        IndexedDB: Allow multiple transactions to run in parallel

Thanks for explaining this to me in person. I think saying that the transactions are interleaved is more accurate than saying they run in parallel since they still take turns hitting the database.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784288</commentid>
    <comment_count>26</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-05 16:57:47 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; I think saying that the transactions are interleaved is more accurate than saying they run in parallel since they still take turns hitting the database.

I&apos;ll twiddle the bug title/changelogs a bit, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784295</commentid>
    <comment_count>27</comment_count>
      <attachid>177872</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-05 17:04:54 -0800</bug_when>
    <thetext>Created attachment 177872
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784333</commentid>
    <comment_count>28</comment_count>
      <attachid>177872</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 17:31:30 -0800</bug_when>
    <thetext>Comment on attachment 177872
Patch for landing

Clearing flags on attachment: 177872

Committed r136782: &lt;http://trac.webkit.org/changeset/136782&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784334</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 17:31:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>165628</attachid>
            <date>2012-09-25 09:30:36 -0700</date>
            <delta_ts>2012-09-25 09:30:36 -0700</delta_ts>
            <desc>Sample C++ code for scope comparison</desc>
            <filename>scope</filename>
            <type>text/plain</type>
            <size>3329</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">dm9pZCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjp0cmFuc2FjdGlvbkNyZWF0ZWQoUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmQ+IHBycFRyYW5zYWN0aW9uKSB7CiAgQVNTRVJUKHBy
cFRyYW5zYWN0aW9uKTsKICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kPiB0cmFuc2FjdGlv
biA9IHBycFRyYW5zYWN0aW9uOwogIEFTU0VSVChtX2RiID09IHRyYW5zYWN0aW9uLT5kYigpKTsK
ICBBU1NFUlQoIW1fcGVuZGluZ1RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpOwog
IEFTU0VSVCghbV9zdGFydGVkVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSk7CiAg
CiAgaWYgKGNhblN0YXJ0KHRyYW5zYWN0aW9uLmdldCgpKSkgewogICAgbV9zdGFydGVkVHJhbnNh
Y3Rpb25zLmFwcGVuZCh0cmFuc2FjdGlvbik7CiAgICB0cmFuc2FjdGlvbi0+c3RhcnQoKTsKICB9
IGVsc2UgewogICAgbV9wZW5kaW5nVHJhbnNhY3Rpb25zLmFwcGVuZCh0cmFuc2FjdGlvbik7CiAg
fQp9Cgp2b2lkIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OnRyYW5zYWN0aW9uRmluaXNoZWQo
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmQ+IHBycFRyYW5zYWN0aW9uKSB7CiAgQVNT
RVJUKHBycFRyYW5zYWN0aW9uKTsKICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kPiB0cmFu
c2FjdGlvbiA9IHBycFRyYW5zYWN0aW9uOwogIEFTU0VSVChtX2RiID09IHRyYW5zYWN0aW9uLT5k
YigpKTsKICAKICBpZiAobV9wZW5kaW5nVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9u
KSkgewogICAgLy8gYWJvcnRlZCBiZWZvcmUgaXQgc3RhcnRlZAogICAgbV9wZW5kaW5nVHJhbnNh
Y3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbik7CiAgICByZXR1cm47CiAgfQogIAogIEFTU0VSVCht
X3N0YXJ0ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKICBtX3N0YXJ0ZWRU
cmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uKTsKICAKICBWZWN0b3I8UmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZD4gPiBwZW5kaW5nOwogIG1fcGVuZGluZ1RyYW5zYWN0aW9ucy5zd2Fw
KHBlbmRpbmcpOwogIGZvciAoVmVjdG9yPFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmQ+ID46
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGVuZGluZy5iZWdpbigpOyBpdCAhPSBwZW5kaW5nLmVuZCgp
OyArK2l0KSB7CiAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kPiB0cmFuc2FjdGlvbiA9
ICppdDsKICAgIGlmIChjYW5TdGFydCh0cmFuc2FjdGlvbi5nZXQoKSkpIHsKICAgICAgbV9zdGFy
dGVkVHJhbnNhY3Rpb25zLmFwcGVuZCh0cmFuc2FjdGlvbik7CiAgICAgIHRyYW5zYWN0aW9uLT5z
dGFydCgpOwogICAgfSBlbHNlIHsKICAgICAgbV9wZW5kaW5nVHJhbnNhY3Rpb25zLmFwcGVuZCh0
cmFuc2FjdGlvbik7CiAgICB9CiAgfQp9Cgpib29sIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6
OmNhblN0YXJ0KElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24pIGNvbnN0IHsKICBB
U1NFUlQodHJhbnNhY3Rpb24pOwogIEFTU0VSVCh0cmFuc2FjdGlvbi0+ZGIoKSA9PSBtX2RiKTsK
ICAKICAvLyBBIFZFUlNJT05fQ0hBTkdFIGNhbm5vdCBydW4gY29uY3VycmVudGx5IHdpdGggb3Ro
ZXIgdHJhbnNhY3Rpb25zCiAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rp
b246OlZFUlNJT05fQ0hBTkdFICYmICFtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuc2l6ZSgpKSB7CiAg
ICAvLyBUT0RPOiBidXQgb25seSBpZiB0aGVyZSBhcmUgbm8gb3RoZXIgY29ubmVjdGlvbnMgb3Bl
biB0byB0aGUgZGF0YWJhc2UKICAgIHJldHVybiAobV9kYi0+Y29ubmVjdGlvbkNvdW50KCkgPT0g
MSk7CiAgfQogIGlmIChtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuc2l6ZSgpICYmIG1fc3RhcnRlZFRy
YW5zYWN0aW9uc1swXS0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSkK
ICAgIHJldHVybiBmYWxzZTsKICAKICAvLyBBcyBsb25nIGFzIHRoZSB2ZXJzaW9uIGNoYW5nZSB0
cmFuc2FjdGlvbiBpcyBwZW5kaW5nLCB0aGUgaW1wbGVtZW50YXRpb24gTVVTVCB3YWl0IGJlZm9y
ZSBzdGFydGluZyBhbnkgb3RoZXIgdHJhbnNhY3Rpb25zLi4uCiAgZm9yIChWZWN0b3I8UmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZD4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdU
cmFuc2FjdGlvbnMuYmVnaW4oKTsgaXQgIT0gbV9wZW5kaW5nVHJhbnNhY3Rpb25zLmVuZCgpOyAr
K2l0KSB7CiAgICBpZiAoKCppdCktPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9D
SEFOR0UpCiAgICAgIHJldHVybiBmYWxzZTsKICB9ICAgCgogCiAgLy8gSWYgbXVsdGlwbGUgUkVB
RF9XUklURSB0cmFuc2FjdGlvbnMgYXJlIGF0dGVtcHRpbmcgdG8gYWNjZXNzIHRoZSBzYW1lIG9i
amVjdCBzdG9yZSAoaS5lLiBpZiB0aGV5IGhhdmUgb3ZlcmxhcHBpbmcgc2NvcGUpLCB0aGUgdHJh
bnNhY3Rpb24gdGhhdCB3YXMgY3JlYXRlZCBmaXJzdCBtdXN0IGJlIHRoZSB0cmFuc2FjdGlvbiB3
aGljaCBnZXRzIGFjY2VzcyB0byB0aGUgb2JqZWN0IHN0b3JlIGZpcnN0LgogIGlmICh0cmFuc2Fj
dGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX1dSSVRFKSB7CiAgICBmb3IgKFZl
Y3RvcjxSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9
IG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpOyBpdCAhPSBtX3N0YXJ0ZWRUcmFuc2FjdGlv
bnMuZW5kKCk7ICsraXQpIHsKICAgICAgaWYgKCgqaXQpLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rp
b246OlJFQURfV1JJVEUgJiYgc2NvcGVzT3ZlcmxhcCh0cmFuc2FjdGlvbiwgaXQtPmdldCgpKSkK
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9ICAgCiAgfQogIAogIHJldHVybiB0cnVlOwp9Cgpi
b29sIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OnNjb3Blc092ZXJsYXAoSURCVHJhbnNhY3Rp
b25CYWNrZW5kKiBmaXJzdCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kKiBzZWNvbmQpIHsKICBBU1NF
UlQoZmlyc3QpOwogIEFTU0VSVChzZWNvbmQpOwogIEFTU0VSVChmaXJzdC0+ZGIoKSA9PSBzZWNv
bmQtPmRiKCkpOwogIAogIGZvciAoU2V0PFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZmly
c3QtPnNjb3BlKCkuYmVnaW4oKTsgaXQgIT0gZmlyc3QtPnNjb3BlKCkuZW5kKCk7ICsraXQpIHsK
ICAgIGlmIChzZWNvbmQtPnNjb3BlKCkuY29udGFpbnMoKml0KSkKICAgICAgcmV0dXJuIHRydWU7
CiAgfQogIHJldHVybiBmYWxzZTsKfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177599</attachid>
            <date>2012-12-04 16:26:56 -0800</date>
            <delta_ts>2012-12-04 16:31:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97570-20121204162422.patch</filename>
            <type>text/plain</type>
            <size>32606</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU4ZTBjZWU3NTBjNGNl
NzEyNWQ4OTNjZmRlMGEyYjM5MGQyNzYxNC4uOWIwYjUwYzg1N2E2ZDliMzEzNjA2ZDg4ZTM1NzQ5
ZTFlNzgwNTg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTEyLTA0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBBbGxv
dyBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgdG8gcnVuIGluIHBhcmFsbGVsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU3MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBzcGVjIGxvZ2ljIGZv
ciBhbGxvd2luZyByZWFkLW9ubHkgdHJhbnNhY3Rpb25zLCBhbmQgcmVhZC13cml0ZSB0cmFuc2Fj
dGlvbnMKKyAgICAgICAgd2l0aCBub24tb3ZlcmxhcHBpbmcgc2NvcGVzLCB0byBydW4gaW4gcGFy
YWxsZWwuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29v
cmRpbmF0aW9uLWFjcm9zcy1kYXRhYmFzZXMuaHRtbAorICAgICAgICAgICAgICBzdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmh0bWwKKyAg
ICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZHdyaXRlLWV4Y2x1
c2l2ZS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcDogVXNlIElEQlRyYW5zYWN0aW9uOjpNb2RlIGVudW0KKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6IERpdHRvLgorICAg
ICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6IERpdHRvLgorICAgICAgICAoSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDogQ29udmVydCBzY29wZSBhcyBhIEhhc2hTZXQgZm9y
CisgICAgICAgIGZhc3QgaW50ZXJzZWN0aW5nLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaDoKKyAgICAgICAgKElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6bW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjpzY29wZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5jcHA6IFNwZWMgbG9naWMgZ29lcyBoZXJlLgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6cHJvY2Vzc1N0YXJ0ZWRUcmFuc2FjdGlv
bnMpOiBFeHRlbmQgdGhpcworICAgICAgICBtZXRob2QgdG8gdGVzdCBhbGwgcGxhdXNpYmx5IHJ1
bm5hYmxlIHRyYW5zYWN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6Y2FuUnVuVHJhbnNhY3Rpb24pOiBUZXN0IHRv
IHNlZSBpZiBvbmUKKyAgICAgICAgcGFydGljdWxhciB0cmFuc2FjdGlvbiBjYW4gYmUgcnVuLgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6ZG9TY29wZXNPdmVy
bGFwKTogRG8gYSBxdWljayBpbnRlcnNlY3Rpb24KKyAgICAgICAgdGVzdCBiZXR3ZWVuIHRyYW5z
YWN0aW9uIHNjb3Blcy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmg6CisgICAgICAgIChJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKToKKwog
MjAxMi0xMi0wNCAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IEFkZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzb3duT3BlbmVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDgyZWFmNTk1OWNlODM3ODc5YzcyNmViZGJjODJiYTJkNWVhZDQ3M2YuLjQy
ZTUzZTI4NjRiYjgyMmIwMmVkNjJiZTUzNTE5ODBjNzRmYjMyODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMTItMDQgIEpvc2h1YSBCZWxsICA8anNi
ZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEFsbG93IG11bHRpcGxlIHRy
YW5zYWN0aW9ucyB0byBydW4gaW4gcGFyYWxsZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIFdlYklEQlRyYW5zYWN0aW9uOjpNb2RlIGVudW0gdG8g
cmVwbGFjZSByYXcgdW5zaWduZWQgc2hvcnQuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCRGF0
YWJhc2UuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFi
YXNlOjpjcmVhdGVUcmFuc2FjdGlvbik6CisgICAgICAgICogcHVibGljL1dlYklEQlRyYW5zYWN0
aW9uLmg6CisgICAgICAgICogc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOgorICAgICAgICAq
IHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkRh
dGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGVUcmFuc2FjdGlvbik6CisgICAgICAgICogc3JjL0lE
QkRhdGFiYXNlQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRQcm94
eSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIHNy
Yy9XZWJJREJEYXRhYmFzZUltcGwuaDoKKyAgICAgICAgKFdlYklEQkRhdGFiYXNlSW1wbCk6CisK
IDIwMTItMTItMDQgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBBZGQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERpc293bk9wZW5lcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmNwcAppbmRleCA0NjM4ODc3NjRiNTdkZTM2ZDVkOWQxN2JkYzNkZjk0OGY0YWM1OTVkLi4xNzA3
NDgxNTE5NTFjNzYxNGNiOWIwOTc1ZWNlYzllZDFkYzBiMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmNwcApAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJv
Y2Vzc1BlbmRpbmdDYWxscygpCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlVHJhbnNhY3Rp
b24oaW50NjRfdCB0cmFuc2FjdGlvbklkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0
b3JlSWRzLCB1bnNpZ25lZCBzaG9ydCBtb2RlKQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZVRyYW5zYWN0aW9u
KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9y
ZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSkKIHsKICAgICBSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
OjpjcmVhdGUodHJhbnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJZHMsIG1vZGUsIHRoaXMpOwogICAg
IG1fdHJhbnNhY3Rpb25zLmFkZCh0cmFuc2FjdGlvbi5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgK
aW5kZXggZGYwYmEyZGFiNDM0OGFkYzc2NzhkNGQ3MDNiYWIwOTBlOGE2YjZjMi4uYTY1NDJjNmRi
YjAyYWZkNjkyZjNiYjBmYjBlMzBkZmEyNTdjMjg3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAt
NjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJREJEYXRhYmFzZU1ldGFkYXRhIG1l
dGFkYXRhKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBpZCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0
IG1vZGUpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVj
dG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUpOwogICAg
IHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAK
ICAgICBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlKGlu
dDY0X3QgaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCA4NTAwNjJjMjkxODcz
MmJhMzRhOTI3YzdiMDdlOTk1ZWE5MDM2NGRmLi5lM2U4ZGYxYjFiM2NkMjgyZDY4ZDRiOGM4ZmJh
M2FhZGM5NWRiZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMjYsNiArMjYs
NyBAQAogI2lmbmRlZiBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2VfaAogI2RlZmluZSBJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2VfaAogCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIK
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTU1LDcgKzU2LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZT4gY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJ
REJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmpl
Y3RTdG9yZShpbnQ2NF90LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRp
b25Db2RlJikgPSAwOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQgbW9kZSkg
PSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVjdG9y
PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pID0g
MDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKaW5kZXggYzU0MmZkZDc5MDg5OWVl
YWJhMTQ0MTI0ZThlMzJlOTM0M2U3MDRlMC4uMjZlOTY0NjVhZjg1MTZlOTg1ZWFjZDQyZDgxYzhl
ODg3NzliYmUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTM5LDEyICszOSwx
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKGludDY0X3QgaWQs
IGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1v
ZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlKQorUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsPiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUoaW50
NjRfdCBpZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNh
Y3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGlkLCBvYmpl
Y3RTdG9yZUlkcywgbW9kZSwgZGF0YWJhc2UpKTsKKyAgICBIYXNoU2V0PGludDY0X3Q+IG9iamVj
dFN0b3JlSGFzaFNldDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFN0b3JlSWRz
LnNpemUoKTsgKytpKQorICAgICAgICBvYmplY3RTdG9yZUhhc2hTZXQuYWRkKG9iamVjdFN0b3Jl
SWRzW2ldKTsKKworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbChpZCwgb2JqZWN0U3RvcmVIYXNoU2V0LCBtb2RlLCBkYXRhYmFzZSkpOwogfQogCi1JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGludDY0X3Qg
aWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0
IG1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlKQorSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBjb25zdCBI
YXNoU2V0PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9k
ZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UpCiAgICAgOiBtX2lkKGlkKQogICAg
ICwgbV9vYmplY3RTdG9yZUlkcyhvYmplY3RTdG9yZUlkcykKICAgICAsIG1fbW9kZShtb2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbC5oCmluZGV4IGQyYTk1ODUwNjA4ZGE4OWY5ZDE3NDUzNWYzYmIx
YTI4YzhjYjMyYTkuLjY0ZDQzMjZjNjY5YTJjZGUzYjlkZDQyMzZmZDBjOTgwMGJiY2ZhN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIklE
QkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtNDQsNyArNDUsNyBAQCBjbGFzcyBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOwogCiBjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsIDogcHVi
bGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gY3JlYXRlKGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiwgdW5zaWduZWQgc2hvcnQgbW9kZSwg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw+IGNyZWF0ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGNvbnN0IFZl
Y3RvcjxpbnQ2NF90PiYsIElEQlRyYW5zYWN0aW9uOjpNb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsKik7CiAgICAgc3RhdGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIGZyb20oSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiBpbnRlcmZhY2UpCiAgICAgewogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+KGludGVyZmFjZSk7CkBA
IC01OCw3ICs1OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWJvcnQoUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUVycm9yPik7CiAgICAgdm9pZCBydW4oKTsKLSAgICB1bnNpZ25lZCBzaG9ydCBtb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CisgICAgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQorICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4m
IHNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RTdG9yZUlkczsgfQogICAgIGJvb2wgaXNG
aW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gRmluaXNoZWQ7IH0KICAgICBib29s
IHNjaGVkdWxlVGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRh
c2ssIFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gYWJvcnRUYXNrID0g
bnVsbHB0cikgeyByZXR1cm4gc2NoZWR1bGVUYXNrKE5vcm1hbFRhc2ssIHRhc2ssIGFib3J0VGFz
ayk7IH0KICAgICBib29sIHNjaGVkdWxlVGFzayhUYXNrVHlwZSwgUGFzc093blB0cjxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPiwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPiBhYm9ydFRhc2sgPSBudWxscHRyKTsKQEAgLTcwLDcgKzcyLDcgQEAgcHVibGljOgog
ICAgIGludDY0X3QgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAKIHByaXZhdGU6Ci0gICAg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8aW50NjRf
dD4mIG9iamVjdFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsKik7CisgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBjb25z
dCBIYXNoU2V0PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUs
IElEQkRhdGFiYXNlQmFja2VuZEltcGwqKTsKIAogICAgIGVudW0gU3RhdGUgewogICAgICAgICBV
bnVzZWQsIC8vIENyZWF0ZWQsIGJ1dCBubyB0YXNrcyB5ZXQuCkBAIC04OSw4ICs5MSw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjbG9zZU9wZW5DdXJzb3JzKCk7CiAKICAgICBjb25zdCBpbnQ2NF90
IG1faWQ7Ci0gICAgY29uc3QgVmVjdG9yPGludDY0X3Q+IG1fb2JqZWN0U3RvcmVJZHM7Ci0gICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgbV9tb2RlOworICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4g
bV9vYmplY3RTdG9yZUlkczsKKyAgICBjb25zdCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtX21vZGU7
CiAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIGJvb2wgbV9jb21taXRQZW5kaW5nOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yLmNwcAppbmRleCA2ZGIwZDcwYmYyNThjNmNlZGRlOGQ5MmRkOWM5YjYw
NTlhNDE0NmY5Li41NmRkNzQzZjE3OTMwYjdkY2UxZjhjMzllYzM2OTczMTUwZDUxNGFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAi
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2Vu
ZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKIApAQCAtOTUsMTcgKzk2LDUzIEBAIGJvb2wgSURCVHJhbnNhY3Rpb25Db29yZGluYXRv
cjo6aXNBY3RpdmUoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiAKIHZv
aWQgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6cHJvY2Vzc1N0YXJ0ZWRUcmFuc2FjdGlvbnMo
KQogewotICAgIC8vIEZJWE1FOiBGb3Igbm93LCB3ZSBvbmx5IGFsbG93IG9uZSB0cmFuc2FjdGlv
biB0byBydW4gYXQgYSB0aW1lLgotICAgIGlmICghbV9ydW5uaW5nVHJhbnNhY3Rpb25zLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwqIHRyYW5zYWN0aW9uID0gKm1fc3RhcnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpOwotICAgIG1f
c3RhcnRlZFRyYW5zYWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24pOwotICAgIG1fcnVubmluZ1Ry
YW5zYWN0aW9ucy5hZGQodHJhbnNhY3Rpb24pOwotICAgIHRyYW5zYWN0aW9uLT5ydW4oKTsKKyAg
ICBBU1NFUlQobV9ydW5uaW5nVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSB8fCAoKm1fcnVubmluZ1Ry
YW5zYWN0aW9ucy5iZWdpbigpKS0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NI
QU5HRSk7CisKKyAgICBMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKj46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV9zdGFydGVkVHJhbnNhY3Rpb25zLmJlZ2luKCk7CisgICAgd2hp
bGUgKGl0ICE9IG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5lbmQoKSkgeworICAgICAgICBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9ICppdDsKKyAgICAgICAgKytpdDsKKyAg
ICAgICAgaWYgKGNhblJ1blRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKSkgeworICAgICAgICAgICAg
bV9zdGFydGVkVHJhbnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbik7CisgICAgICAgICAgICBt
X3J1bm5pbmdUcmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9uKTsKKyAgICAgICAgICAgIHRyYW5z
YWN0aW9uLT5ydW4oKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIGJvb2wgZG9TY29w
ZXNPdmVybGFwKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uMSwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24yKQoreworICAgIGNvbnN0IEhhc2hTZXQ8
aW50NjRfdD4mIHNjb3BlMSA9IHRyYW5zYWN0aW9uMS0+c2NvcGUoKTsKKyAgICBjb25zdCBIYXNo
U2V0PGludDY0X3Q+JiBzY29wZTIgPSB0cmFuc2FjdGlvbjItPnNjb3BlKCk7CisKKyAgICBmb3Ig
KEhhc2hTZXQ8aW50NjRfdCA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNjb3BlMS5iZWdpbigpOyBp
dCAhPSBzY29wZTEuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKHNjb3BlMi5jb250YWlucygq
aXQpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjYW5SdW5UcmFuc2FjdGlvbihJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKK3sKKyAgICBzd2l0Y2ggKHRy
YW5zYWN0aW9uLT5tb2RlKCkpIHsKKyAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NI
QU5HRToKKyAgICAgICAgQVNTRVJUKG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5zaXplKCkgPT0gMSk7
CisgICAgICAgIEFTU0VSVChtX3J1bm5pbmdUcmFuc2FjdGlvbnMuaXNFbXB0eSgpKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFk6Cisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgY2FzZSBJREJUcmFuc2FjdGlvbjo6UkVBRF9XUklU
RToKKyAgICAgICAgZm9yIChIYXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX3J1bm5pbmdUcmFuc2FjdGlvbnMuYmVnaW4oKTsgaXQgIT0gbV9y
dW5uaW5nVHJhbnNhY3Rpb25zLmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICBpZiAoKCppdCkt
Pm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6UkVBRF9XUklURSAmJiBkb1Njb3Blc092ZXJsYXAo
dHJhbnNhY3Rpb24sICppdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KIH0KIAogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRp
bmF0b3IuaAppbmRleCA4Mjk5ODUzMjIwY2NhYTY0NTRjZjY0MmU4MDU5ODQwODI2MzM0YmYzLi5i
ZDdkMWUxOGNkYTNkNzUwZGViZWM5ZGFmNTVlNzA4Mzg3ZTYxZjE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvci5oCkBAIC01OCw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvcigpOwogCiAgICAgdm9pZCBwcm9jZXNzU3RhcnRlZFRyYW5zYWN0aW9ucygpOwor
ICAgIGJvb2wgY2FuUnVuVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCopOwog
CiAgICAgLy8gVGhpcyBpcyBqdXN0IGFuIGVmZmljaWVudCB3YXkgdG8ga2VlcCByZWZlcmVuY2Vz
IHRvIGFsbCB0cmFuc2FjdGlvbnMuCiAgICAgSGFzaE1hcDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsKiwgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+ID4gbV90cmFuc2FjdGlvbnM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFz
ZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAppbmRl
eCA5NWJhZjY2YjY1MThjOThhMGZhNTc4YmIyNjRmM2ZjMTllY2Q1ZGY0Li4zNWMxYjBhNjA2ZGQ0
NjY2NzJhNTNhMmU4OTNhNDczOWIzOGUxYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJX
ZWJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiV2ViRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIldlYklEQk1ldGFkYXRhLmgiCisjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb24uaCIKICNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0z
OCw3ICszOSw2IEBAIGNsYXNzIFdlYklEQkNhbGxiYWNrczsKIGNsYXNzIFdlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzOwogY2xhc3MgV2ViSURCS2V5UGF0aDsKIGNsYXNzIFdlYklEQk9iamVjdFN0b3Jl
OwotY2xhc3MgV2ViSURCVHJhbnNhY3Rpb247CiAKIC8vIFNlZSBjb21tZW50IGluIFdlYklEQkZh
Y3RvcnkgZm9yIGEgaGlnaCBsZXZlbCBvdmVydmlldyBvZiB0aGVzZSBjbGFzc2VzLgogY2xhc3Mg
V2ViSURCRGF0YWJhc2UgewpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUobG9uZyBsb25n
IG9iamVjdFN0b3JlSWQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2Vi
RXhjZXB0aW9uQ29kZSYgZWMpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAg
dmlydHVhbCBXZWJJREJUcmFuc2FjdGlvbiogY3JlYXRlVHJhbnNhY3Rpb24obG9uZyBsb25nIGlk
LCBjb25zdCBXZWJWZWN0b3I8bG9uZyBsb25nPiYsIHVuc2lnbmVkIHNob3J0IG1vZGUpIHsgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgV2ViSURC
VHJhbnNhY3Rpb24qIGNyZWF0ZVRyYW5zYWN0aW9uKGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViVmVj
dG9yPGxvbmcgbG9uZz4mLCBXZWJJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlKSB7IFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xvc2Uo
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBmb3Jj
ZUNsb3NlKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0aW9uLmgKaW5kZXggMjIxYmY2
MDU2NWJhYWVjNjFmNGNmNTFhOThmY2FjZjFmYzliNDdjOS4uMjVkNWYwZDgyM2M4N2I0ODJhOTJl
ZWU4ZGI3YTc0YjdmOGFjYTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oCkBAIC00MSw2ICs0MSwxMiBAQCBjbGFzcyBXZWJJREJU
cmFuc2FjdGlvbiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViSURCVHJhbnNhY3Rpb24oKSB7
IH0KIAorICAgIGVudW0gTW9kZSB7CisgICAgICAgIFJlYWRPbmx5ID0gMCwKKyAgICAgICAgUmVh
ZFdyaXRlLAorICAgICAgICBWZXJzaW9uQ2hhbmdlCisgICAgfTsKKwogICAgIGVudW0gVGFza1R5
cGUgewogICAgICAgICBOb3JtYWxUYXNrID0gMCwKICAgICAgICAgUHJlZW1wdGl2ZVRhc2sKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAK
aW5kZXggNGQ3YjhiY2MwYjI1NDM0ZTk1MDczNzFjNzE0YWU0NzAxMjVkMTIxNi4uY2NiZTZhZWUw
YmUyNWMxYTI2MjVjZmU0MWVlNmE2YThiNTYxYTBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTU5LDYgKzU5LDcgQEAK
ICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAi
SURCTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIklE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkljb25VUkwuaCIKICNp
bmNsdWRlICJNZWRpYVBsYXllci5oIgpAQCAtNTAwLDYgKzUwMSwxMCBAQCBDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKFdlYklEQkN1cnNvcjo6TmV4dE5vRHVwbGljYXRlLCBJREJDdXJzb3I6
Ok5FWFRfTk9fRAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJDdXJzb3I6OlBy
ZXYsIElEQkN1cnNvcjo6UFJFVik7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklE
QkN1cnNvcjo6UHJldk5vRHVwbGljYXRlLCBJREJDdXJzb3I6OlBSRVZfTk9fRFVQTElDQVRFKTsK
IAorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJUcmFuc2FjdGlvbjo6UmVhZE9u
bHksIElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShXZWJJREJUcmFuc2FjdGlvbjo6UmVhZFdyaXRlLCBJREJUcmFuc2FjdGlvbjo6UkVBRF9X
UklURSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQlRyYW5zYWN0aW9uOjpW
ZXJzaW9uQ2hhbmdlLCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworCiBDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQlRyYW5zYWN0aW9uOjpQcmVlbXB0aXZlVGFzaywg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOjpQcmVlbXB0aXZlVGFzayk7CiBDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQlRyYW5zYWN0aW9uOjpOb3JtYWxUYXNrLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRhc2spOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5j
cHAKaW5kZXggZTljODBkMGNmNjI5ZWMyNDc3YWRhMTNiODhmNDQ3ZmE5NTkyZGE0OC4uY2E3ZTNm
ZjFhZjkwMWNlNmVkMmMzODYwNDdiNDI5ZGM5NTljNDY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcApAQCAtNDEs
NyArNDEsNiBAQAogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oIgogI2lu
Y2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJXZWJJREJPYmplY3RTdG9y
ZS5oIgotI2luY2x1ZGUgIldlYklEQlRyYW5zYWN0aW9uLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC04NSw5ICs4NCw5IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6
OmRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgSURCVHJhbnNhCiAgICAg
bV93ZWJJREJEYXRhYmFzZS0+ZGVsZXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZCwgKnRyYW5z
YWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCksIGVjKTsKIH0KIAotUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZFByb3h5
OjpjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9i
amVjdFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9ydCBtb2RlKQorUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGVUcmFu
c2FjdGlvbihpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRz
LCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlKQogewotICAgIE93blB0cjxXZWJJREJUcmFuc2Fj
dGlvbj4gdHJhbnNhY3Rpb24gPSBhZG9wdFB0cihtX3dlYklEQkRhdGFiYXNlLT5jcmVhdGVUcmFu
c2FjdGlvbihpZCwgb2JqZWN0U3RvcmVJZHMsIG1vZGUpKTsKKyAgICBPd25QdHI8V2ViSURCVHJh
bnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gYWRvcHRQdHIobV93ZWJJREJEYXRhYmFzZS0+Y3JlYXRl
VHJhbnNhY3Rpb24oaWQsIG9iamVjdFN0b3JlSWRzLCBzdGF0aWNfY2FzdDxXZWJJREJUcmFuc2Fj
dGlvbjo6TW9kZT4obW9kZSkpKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1
cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNl
QmFja2VuZFByb3h5LmgKaW5kZXggMDNkMDVkOTJiMTZlNDhjMjllOTMzN2JhZmUzZjkwMDM2MmJk
OTYwOS4uMTcxNGE1NDY5ZWZlYzI1YWVjOGYyYmRiNzQ0YWRmMzdjOWMzMWE3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5o
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGlu
dDY0X3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYsIGJv
b2wgYXV0b0luY3JlbWVudCwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmpl
Y3RTdG9yZShpbnQ2NF90LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gY3JlYXRlVHJhbnNhY3Rpb24oaW50
NjRfdCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiwgdW5zaWduZWQgc2hvcnQgbW9kZSk7CisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZT4gY3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiwgV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb246Ok1vZGUpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRl
eCA0MDNhMzBiZWU1MTA3NjMwNzZhZDE2ZjZhOWQzODQyYmJhOWZiZDQwLi5kNDhjZjAwMjY5ZGIw
MDQ1YmUwY2E1ZjU5ZjRmNDFjMjU2YjU4N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTc1LDEyICs3NSwxMiBAQCB2b2lk
IFdlYklEQkRhdGFiYXNlSW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmUobG9uZyBsb25nIG9iamVjdFN0
b3JlSWQsIGNvbnN0IFdlYklEQgogICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVPYmplY3RT
dG9yZShvYmplY3RTdG9yZUlkLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UoKSwgZWMpOwogfQogCi1XZWJJREJUcmFuc2FjdGlvbiogV2ViSURCRGF0YWJhc2VJ
bXBsOjpjcmVhdGVUcmFuc2FjdGlvbihsb25nIGxvbmcgaWQsIGNvbnN0IFdlYlZlY3Rvcjxsb25n
IGxvbmc+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQgbW9kZSkKK1dlYklEQlRyYW5z
YWN0aW9uKiBXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKGxvbmcgbG9uZyBp
ZCwgY29uc3QgV2ViVmVjdG9yPGxvbmcgbG9uZz4mIG9iamVjdFN0b3JlSWRzLCBXZWJJREJUcmFu
c2FjdGlvbjo6TW9kZSBtb2RlKQogewogICAgIFZlY3RvcjxpbnQ2NF90PiBvYmplY3RTdG9yZUlk
TGlzdChvYmplY3RTdG9yZUlkcy5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
b2JqZWN0U3RvcmVJZHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG9iamVjdFN0b3JlSWRMaXN0W2ld
ID0gb2JqZWN0U3RvcmVJZHNbaV07Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4gdHJhbnNhY3Rpb24gPSBtX2RhdGFiYXNlQmFja2VuZC0+Y3JlYXRlVHJhbnNhY3Rp
b24oaWQsIG9iamVjdFN0b3JlSWRMaXN0LCBtb2RlKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbiA9IG1fZGF0YWJhc2VCYWNrZW5kLT5jcmVh
dGVUcmFuc2FjdGlvbihpZCwgb2JqZWN0U3RvcmVJZExpc3QsIHN0YXRpY19jYXN0PElEQlRyYW5z
YWN0aW9uOjpNb2RlPihtb2RlKSk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgcmV0dXJuIG5ldyBXZWJJREJUcmFuc2FjdGlvbkltcGwodHJhbnNhY3Rpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaApp
bmRleCA2NmFhODRkYmE4YTgzYzk4MThhZGM5NjJlM2NiNzIwMjU3ZGE3MmFmLi5iODA1OTk1ZGM3
MDI2MDJhNGMzNWEzODg3YTRkMjk0ZjVlZWZhNGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShsb25n
IGxvbmcsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wg
YXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGxvbmcgbG9uZyBvYmplY3RT
dG9yZUlkLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICB2aXJ0dWFsIFdlYklEQlRyYW5zYWN0aW9uKiBjcmVhdGVUcmFuc2FjdGlvbihsb25nIGxvbmcg
aWQsIGNvbnN0IFdlYlZlY3Rvcjxsb25nIGxvbmc+JiwgdW5zaWduZWQgc2hvcnQgbW9kZSk7Cisg
ICAgdmlydHVhbCBXZWJJREJUcmFuc2FjdGlvbiogY3JlYXRlVHJhbnNhY3Rpb24obG9uZyBsb25n
IGlkLCBjb25zdCBXZWJWZWN0b3I8bG9uZyBsb25nPiYsIFdlYklEQlRyYW5zYWN0aW9uOjpNb2Rl
KTsKICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VDbG9zZSgpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9z
ZSgpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZjRhNWQwOGQ3MzNjNzZiZmQ4MDZkNTgwNjEyZmIxNzk5NTQyZGY5OC4u
ZjZiMDY1OWQ0OGVmYzcxMjdjZTI4ZTc3ZjA0OTc4Y2MyYzcxOTVmMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI3IEBACisyMDEyLTEyLTA0ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgSW5kZXhlZERCOiBBbGxvdyBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgdG8gcnVuIGlu
IHBhcmFsbGVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NzU3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5ldyB0ZXN0IGZvciBwYXJhbGxlbCB0cmFuc2FjdGlvbnMsIHVwZGF0ZSBleGlzdGluZyB0ZXN0
cyB0aGF0IHJlbGllZCBvbiBzZXF1ZW50aWFsIGV4ZWN1dGlvbi4KKworICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL2RhdGFiYXNlLWNsb3NlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jbGVhci5qczogU3BsaXQgdXAgdHJhbnNh
Y3Rpb24gc3RlcHMuCisgICAgICAgIChjbGVhcik6CisgICAgICAgIChjbGVhcmVkKToKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YWJhc2UtY2xvc2UuanM6IERvbid0
IGxvZyBvbiBpbmRpdmlkdWFsIHRyYW5zYWN0aW9uIGNvbXBsZXRpb24uCisgICAgICAgICh0ZXN0
Q2xvc2UudHJhbnNhY3Rpb25Db21wbGV0ZWQpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZSk6CisgICAgICAgIChydW5QYXJhbGxlbFRy
YW5zYWN0aW9ucy5kb1RyYW5zYWN0aW9uMUdldC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAg
IChydW5QYXJhbGxlbFRyYW5zYWN0aW9ucy5kb1RyYW5zYWN0aW9uMkdldC5yZXF1ZXN0Lm9uc3Vj
Y2Vzcyk6CisgICAgICAgIChvblRyYW5zYWN0aW9uQ29tcGxldGUpOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEyLTA0
ICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
IGNocm9taXVtIGV4cGVjdGF0aW9ucyB1cGRhdGUsIG1hcmsgdW5za2lwcGVkIHN2ZyB0ZXN0cyBh
cyBzbG93LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJh
c2UtY2xvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0
YWJhc2UtY2xvc2UtZXhwZWN0ZWQudHh0CmluZGV4IGEzMDc5ZmEyZTA1ZTEzMzBjZjBlODI2OTgw
NzgxNTAzZGFjYTllMDYuLjYwMjgxZWRiOWVlYjIzNDJjMWQ2MzFkNTA2YTE2MjA3YTE3NjI3Mjcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWNsb3Nl
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFz
ZS1jbG9zZS1leHBlY3RlZC50eHQKQEAgLTM5LDExICszOSw5IEBAIGluZGV4ZWREQi5kZWxldGVE
YXRhYmFzZShkYm5hbWUpCiAKIHRyYW5zYWN0aW9uICMxIHJlcXVlc3Qgc3VjY2Vzc2Z1bAogUEFT
UyBldmVudC50YXJnZXQucmVzdWx0IGlzICJ2YWx1ZTEiCi1hd2FpdGluZ190cmFuc2FjdGlvbl9j
b3VudCAtPSAxCiAKIHRyYW5zYWN0aW9uICMyIHJlcXVlc3Qgc3VjY2Vzc2Z1bAogUEFTUyBldmVu
dC50YXJnZXQucmVzdWx0IGlzICJ2YWx1ZTIiCi1hd2FpdGluZ190cmFuc2FjdGlvbl9jb3VudCAt
PSAxCiAKIEFsbCB0cmFuc2FjdGlvbnMgY29tcGxldGVkIC0gZGF0YWJhc2UgZGVsZXRlcyBzaG91
bGQgbm93IGJlIHVuYmxvY2tlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9jbGVhci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLWV4cGVjdGVkLnR4dAppbmRleCBlZmEwZTFhNWQzM2Ix
MzkxMDc1NDk2N2ZkOGNkZGNhMTNiY2RlMjIxLi41MDVmZTc1M2E0MTU5YWJkYzQwMjljZDhjZTEx
ZTJmOTQ2ZjNjZDc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2NsZWFyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2NsZWFyLWV4cGVjdGVkLnR4dApAQCAtMTQsNyArMTQsOCBAQCBFeHBlY3Rp
bmcgZXhjZXB0aW9uIGZyb20gZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0b3JlKCdmb28n
KS5jbGVhcigpOwogUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KIFBBU1MgY29kZSBpcyAwCiBQ
QVNTIGVuYW1lIGlzICdSZWFkT25seUVycm9yJwotZGIudHJhbnNhY3Rpb24oJ2ZvbycsICdyZWFk
d3JpdGUnKS5vYmplY3RTdG9yZSgnZm9vJykuY2xlYXIoKTsKK2RiLnRyYW5zYWN0aW9uKCdmb28n
LCAncmVhZHdyaXRlJykKK3RyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdmb28nKS5jbGVhcigpOwog
cmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJykub3BlbkN1
cnNvcigpOwogY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQ7CiBQQVNTIGN1cnNvciBpcyBudWxsCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNl
cy9jbGVhci5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3Vy
Y2VzL2NsZWFyLmpzCmluZGV4IGM4MmZhZjI2MTBlNGZkNGNiMTI4NjZmOTZmZTQ2Y2MxZTY1YTY3
NDYuLjc5ZjNiNzhlNDI2YTNlMzUwYjEyZjIyZWRiZWI0ODgyZWI0NjNjMWUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2NsZWFyLmpz
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2Ns
ZWFyLmpzCkBAIC0yNCw3ICsyNCwxNCBAQCBmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQogZnVu
Y3Rpb24gY2xlYXIoKQogewogICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0
aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJykuY2xlYXIoKTsiLCAiMCIsICInUmVhZE9ubHlF
cnJvciciKTsKLSAgICBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbignZm9vJywgJ3JlYWR3cml0
ZScpLm9iamVjdFN0b3JlKCdmb28nKS5jbGVhcigpOyIpOworICAgIHRyYW5zYWN0aW9uID0gZXZh
bEFuZExvZygiZGIudHJhbnNhY3Rpb24oJ2ZvbycsICdyZWFkd3JpdGUnKSIpOworICAgIGV2YWxB
bmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdmb28nKS5jbGVhcigpOyIpOworICAgIHRy
YW5zYWN0aW9uLm9uY29tcGxldGUgPSBjbGVhcmVkOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYXJlZCgpCit7CiAg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50cmFuc2FjdGlvbignZm9vJyku
b2JqZWN0U3RvcmUoJ2ZvbycpLm9wZW5DdXJzb3IoKTsiKTsKICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGFyZVdlQ2xlYXJZZXQ7CiAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvZGF0YWJhc2UtY2xvc2UuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvZGF0YWJhc2UtY2xvc2UuanMKaW5kZXggNjkxZTU1YmNmMWYxYjc4M2Q1ZGM4YTU3
YzZlYTY0M2YxODNkYjM1Ni4uNDZkYmEzMGY1YmRjYmU0MTIxYmYxZThiZjIyZmVkMGQwZTQ1OTJh
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2Rh
dGFiYXNlLWNsb3NlLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9kYXRhYmFzZS1jbG9zZS5qcwpAQCAtMzUsNyArMzUsNyBAQCBmdW5jdGlvbiB0ZXN0Q2xv
c2UoKQogICAgIGRlYnVnKCJTdGVwIDI6IFdhaXQgZm9yIGFsbCB0cmFuc2FjdGlvbnMgY3JlYXRl
ZCB1c2luZyBjb25uZWN0aW9uIHRvIGNvbXBsZXRlLiBPbmNlIHRoZXkgYXJlIGNvbXBsZXRlLCBj
b25uZWN0aW9uIGlzIGNsb3NlZC4iKTsKICAgICBldmFsQW5kTG9nKCJhd2FpdGluZ190cmFuc2Fj
dGlvbl9jb3VudCA9IDIiKTsKICAgICBmdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlZCgpIHsK
LSAgICAgICAgZXZhbEFuZExvZygiYXdhaXRpbmdfdHJhbnNhY3Rpb25fY291bnQgLT0gMSIpOwor
ICAgICAgICBhd2FpdGluZ190cmFuc2FjdGlvbl9jb3VudCAtPSAxOwogCiAgICAgICAgIGlmIChh
d2FpdGluZ190cmFuc2FjdGlvbl9jb3VudCA9PSAwKSB7CiAgICAgICAgICAgICBkZWJ1ZygiIik7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJh
bnNhY3Rpb24tY29vcmRpbmF0aW9uLXdpdGhpbi1kYXRhYmFzZS5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGlu
LWRhdGFiYXNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2ZjAzNTkyYWQ0YmFjYzNjOGQ3MTNlMWMyZTZlODMy
ZmRmZjhhMmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLXdpdGhpbi1kYXRhYmFzZS5qcwpA
QCAtMCwwICsxLDc3IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIkNoZWNrIHRoYXQg
cmVhZC1vbmx5IHRyYW5zYWN0aW9ucyB3aXRoaW4gYSBkYXRhYmFzZSBjYW4gcnVuIGluIHBhcmFs
bGVsLiIpOworCitpbmRleGVkREJUZXN0KHByZXBhcmVEYXRhYmFzZSwgcnVuUGFyYWxsZWxUcmFu
c2FjdGlvbnMpOworCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoZXZ0KQoreworICAgIHByZWFt
YmxlKGV2dCk7CisgICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Cisg
ICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOwor
ICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgndmFsdWUnLCAna2V5JykiKTsKK30KKworZnVuY3Rp
b24gcnVuUGFyYWxsZWxUcmFuc2FjdGlvbnMoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7Cisg
ICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZGVidWcoIiIp
OworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMSA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScs
ICdyZWFkb25seScpIik7CisgICAgdHJhbnNhY3Rpb24xLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbjEub25jb21wbGV0ZSA9IG9uVHJhbnNhY3Rpb25D
b21wbGV0ZTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjIgPSBkYi50cmFuc2FjdGlvbign
c3RvcmUnLCAncmVhZG9ubHknKSIpOworICAgIHRyYW5zYWN0aW9uMS5vbmFib3J0ID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24yLm9uY29tcGxldGUgPSBvblRyYW5z
YWN0aW9uQ29tcGxldGU7CisKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjFHZXRTdWNjZXNz
ID0gZmFsc2UiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjJHZXRTdWNjZXNzID0gZmFs
c2UiKTsKKworICAgIGRlYnVnKCJLZWVwIGJvdGggdHJhbnNhY3Rpb25zIGFsaXZlIHVudGlsIGVh
Y2ggaGFzIHJlcG9ydGVkIGF0IGxlYXN0IG9uZSBzdWNjZXNzZnVsIG9wZXJhdGlvbiIpOworCisg
ICAgZnVuY3Rpb24gZG9UcmFuc2FjdGlvbjFHZXQoKSB7CisgICAgICAgIC8vIE5PVEU6IE5vIGxv
Z2dpbmcgc2luY2UgZXhlY3V0aW9uIG9yZGVyIGlzIG5vdCBkZXRlcm1pbmlzdGljLgorICAgICAg
ICByZXF1ZXN0ID0gdHJhbnNhY3Rpb24xLm9iamVjdFN0b3JlKCdzdG9yZScpLmdldCgna2V5Jyk7
CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
ICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdHJhbnNh
Y3Rpb24xR2V0U3VjY2VzcyA9IHRydWU7CisgICAgICAgICAgICBpZiAoIXRyYW5zYWN0aW9uMkdl
dFN1Y2Nlc3MpCisgICAgICAgICAgICAgICAgZG9UcmFuc2FjdGlvbjFHZXQoKTsKKyAgICAgICAg
fTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkb1RyYW5zYWN0aW9uMkdldCgpIHsKKyAgICAgICAg
Ly8gTk9URTogTm8gbG9nZ2luZyBzaW5jZSBleGVjdXRpb24gb3JkZXIgaXMgbm90IGRldGVybWlu
aXN0aWMuCisgICAgICAgIHJlcXVlc3QgPSB0cmFuc2FjdGlvbjIub2JqZWN0U3RvcmUoJ3N0b3Jl
JykuZ2V0KCdrZXknKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICB0cmFuc2FjdGlvbjJHZXRTdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICgh
dHJhbnNhY3Rpb24xR2V0U3VjY2VzcykKKyAgICAgICAgICAgICAgICBkb1RyYW5zYWN0aW9uMkdl
dCgpOworICAgICAgICB9OworICAgIH0KKworICAgIGRvVHJhbnNhY3Rpb24xR2V0KCk7CisgICAg
ZG9UcmFuc2FjdGlvbjJHZXQoKTsKK30KKwordHJhbnNhY3Rpb25Db21wbGV0aW9uQ291bnQgPSAw
OworZnVuY3Rpb24gb25UcmFuc2FjdGlvbkNvbXBsZXRlKGV2dCkKK3sKKyAgICBwcmVhbWJsZShl
dnQpOworCisgICAgKyt0cmFuc2FjdGlvbkNvbXBsZXRpb25Db3VudDsKKyAgICBpZiAodHJhbnNh
Y3Rpb25Db21wbGV0aW9uQ291bnQgPCAyKSB7CisgICAgICAgIGRlYnVnKCJmaXJzdCB0cmFuc2Fj
dGlvbiBjb21wbGV0ZSwgc3RpbGwgd2FpdGluZy4uLiIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgc2hvdWxkQmVUcnVlKCJ0cmFuc2FjdGlvbjFHZXRTdWNjZXNzIik7CisgICAgc2hv
dWxkQmVUcnVlKCJ0cmFuc2FjdGlvbjJHZXRTdWNjZXNzIik7CisKKyAgICBldmFsQW5kTG9nKCJk
Yi5jbG9zZSgpIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRh
dGFiYXNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5z
YWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJmZjNmZmM5ODA3YmY4MGNlN2I5YzVhMGI5OWE5OWM4MjZmNDEyYjMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGlu
YXRpb24td2l0aGluLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM2IEBACitDaGVj
ayB0aGF0IHJlYWQtb25seSB0cmFuc2FjdGlvbnMgd2l0aGluIGEgZGF0YWJhc2UgY2FuIHJ1biBp
biBwYXJhbGxlbC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9
IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhl
ZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitkYm5hbWUgPSAi
dHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLXdpdGhpbi1kYXRhYmFzZS5odG1sIgoraW5kZXhlZERC
LmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKK2luZGV4ZWREQi5vcGVuKGRibmFtZSkKKworcHJlcGFy
ZURhdGFiYXNlKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK3N0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlJykKK3N0b3JlLnB1dCgndmFsdWUnLCAna2V5JykKKworcnVuUGFy
YWxsZWxUcmFuc2FjdGlvbnMoKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorCit0cmFuc2Fj
dGlvbjEgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZG9ubHknKQordHJhbnNhY3Rpb24y
ID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWRvbmx5JykKK3RyYW5zYWN0aW9uMUdldFN1
Y2Nlc3MgPSBmYWxzZQordHJhbnNhY3Rpb24yR2V0U3VjY2VzcyA9IGZhbHNlCitLZWVwIGJvdGgg
dHJhbnNhY3Rpb25zIGFsaXZlIHVudGlsIGVhY2ggaGFzIHJlcG9ydGVkIGF0IGxlYXN0IG9uZSBz
dWNjZXNzZnVsIG9wZXJhdGlvbgorCitvblRyYW5zYWN0aW9uQ29tcGxldGUoKToKK2ZpcnN0IHRy
YW5zYWN0aW9uIGNvbXBsZXRlLCBzdGlsbCB3YWl0aW5nLi4uCisKK29uVHJhbnNhY3Rpb25Db21w
bGV0ZSgpOgorUEFTUyB0cmFuc2FjdGlvbjFHZXRTdWNjZXNzIGlzIHRydWUKK1BBU1MgdHJhbnNh
Y3Rpb24yR2V0U3VjY2VzcyBpcyB0cnVlCitkYi5jbG9zZSgpCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLXdpdGhpbi1kYXRhYmFz
ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRp
bmF0aW9uLXdpdGhpbi1kYXRhYmFzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmMGM1YjdkNDU5MTBhNDUy
MTMwOWMzM2ZmNDllNGU2YzUyYjdiZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNl
Lmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1jb29yZGluYXRp
b24td2l0aGluLWRhdGFiYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177600</attachid>
            <date>2012-12-04 16:31:11 -0800</date>
            <delta_ts>2012-12-04 16:38:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97570-20121204162837.patch</filename>
            <type>text/plain</type>
            <size>33790</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU4ZTBjZWU3NTBjNGNl
NzEyNWQ4OTNjZmRlMGEyYjM5MGQyNzYxNC4uOWIwYjUwYzg1N2E2ZDliMzEzNjA2ZDg4ZTM1NzQ5
ZTFlNzgwNTg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTEyLTA0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBBbGxv
dyBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgdG8gcnVuIGluIHBhcmFsbGVsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU3MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBzcGVjIGxvZ2ljIGZv
ciBhbGxvd2luZyByZWFkLW9ubHkgdHJhbnNhY3Rpb25zLCBhbmQgcmVhZC13cml0ZSB0cmFuc2Fj
dGlvbnMKKyAgICAgICAgd2l0aCBub24tb3ZlcmxhcHBpbmcgc2NvcGVzLCB0byBydW4gaW4gcGFy
YWxsZWwuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29v
cmRpbmF0aW9uLWFjcm9zcy1kYXRhYmFzZXMuaHRtbAorICAgICAgICAgICAgICBzdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmh0bWwKKyAg
ICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZHdyaXRlLWV4Y2x1
c2l2ZS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcDogVXNlIElEQlRyYW5zYWN0aW9uOjpNb2RlIGVudW0KKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6IERpdHRvLgorICAg
ICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6IERpdHRvLgorICAgICAgICAoSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDogQ29udmVydCBzY29wZSBhcyBhIEhhc2hTZXQgZm9y
CisgICAgICAgIGZhc3QgaW50ZXJzZWN0aW5nLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaDoKKyAgICAgICAgKElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6bW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjpzY29wZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5jcHA6IFNwZWMgbG9naWMgZ29lcyBoZXJlLgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6cHJvY2Vzc1N0YXJ0ZWRUcmFuc2FjdGlv
bnMpOiBFeHRlbmQgdGhpcworICAgICAgICBtZXRob2QgdG8gdGVzdCBhbGwgcGxhdXNpYmx5IHJ1
bm5hYmxlIHRyYW5zYWN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6Y2FuUnVuVHJhbnNhY3Rpb24pOiBUZXN0IHRv
IHNlZSBpZiBvbmUKKyAgICAgICAgcGFydGljdWxhciB0cmFuc2FjdGlvbiBjYW4gYmUgcnVuLgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6ZG9TY29wZXNPdmVy
bGFwKTogRG8gYSBxdWljayBpbnRlcnNlY3Rpb24KKyAgICAgICAgdGVzdCBiZXR3ZWVuIHRyYW5z
YWN0aW9uIHNjb3Blcy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmg6CisgICAgICAgIChJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKToKKwog
MjAxMi0xMi0wNCAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IEFkZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzb3duT3BlbmVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDgyZWFmNTk1OWNlODM3ODc5YzcyNmViZGJjODJiYTJkNWVhZDQ3M2YuLjRj
NTJmNThjZWZjZWI0MDM1NWZhNTE2ZjE0MDBkYzA1YWVlYzE2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMTItMDQgIEpvc2h1YSBCZWxsICA8anNi
ZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEFsbG93IG11bHRpcGxlIHRy
YW5zYWN0aW9ucyB0byBydW4gaW4gcGFyYWxsZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIFdlYklEQlRyYW5zYWN0aW9uOjpNb2RlIGVudW0gdG8g
cmVwbGFjZSByYXcgdW5zaWduZWQgc2hvcnQuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCRGF0
YWJhc2UuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFi
YXNlOjpjcmVhdGVUcmFuc2FjdGlvbik6CisgICAgICAgICogcHVibGljL1dlYklEQlRyYW5zYWN0
aW9uLmg6CisgICAgICAgICogc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOgorICAgICAgICAq
IHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkRh
dGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGVUcmFuc2FjdGlvbik6CisgICAgICAgICogc3JjL0lE
QkRhdGFiYXNlQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRQcm94
eSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIHNy
Yy9XZWJJREJEYXRhYmFzZUltcGwuaDoKKyAgICAgICAgKFdlYklEQkRhdGFiYXNlSW1wbCk6Cisg
ICAgICAgICogdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHA6CisKIDIwMTItMTItMDQg
IENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgRnJhbWVM
b2FkZXJDbGllbnQ6OmRpZERpc293bk9wZW5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCA0
NjM4ODc3NjRiNTdkZTM2ZDVkOWQxN2JkYzNkZjk0OGY0YWM1OTVkLi4xNzA3NDgxNTE5NTFjNzYx
NGNiOWIwOTc1ZWNlYzllZDFkYzBiMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMzgw
LDcgKzM4MCw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdD
YWxscygpCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCB0
cmFuc2FjdGlvbklkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCB1bnNp
Z25lZCBzaG9ydCBtb2RlKQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJh
bnNhY3Rpb246Ok1vZGUgbW9kZSkKIHsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUodHJh
bnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJZHMsIG1vZGUsIHRoaXMpOwogICAgIG1fdHJhbnNhY3Rp
b25zLmFkZCh0cmFuc2FjdGlvbi5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggZGYwYmEy
ZGFiNDM0OGFkYzc2NzhkNGQ3MDNiYWIwOTBlOGE2YjZjMi4uYTY1NDJjNmRiYjAyYWZkNjkyZjNi
YjBmYjBlMzBkZmEyNTdjMjg3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtNjMsNyArNjMsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZT4gY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVj
dFN0b3JlKGludDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGNvbnN0IFZl
Y3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpOworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0
ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+
JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUpOwogICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAKICAgICBQYXNzUmVm
UHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlKGludDY0X3QgaWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCA4NTAwNjJjMjkxODczMmJhMzRhOTI3Yzdi
MDdlOTk1ZWE5MDM2NGRmLi5lM2U4ZGYxYjFiM2NkMjgyZDY4ZDRiOGM4ZmJhM2FhZGM5NWRiZTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRl
ZiBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2VfaAogI2RlZmluZSBJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2VfaAogCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2Jq
ZWN0U3RvcmUoaW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwg
Ym9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNl
cHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbnQ2
NF90LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAw
OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGlu
dDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQgbW9kZSkgPSAwOworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRy
YW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBv
YmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pID0gMDsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKaW5kZXggYzU0MmZkZDc5MDg5OWVlYWJhMTQ0MTI0ZThl
MzJlOTM0M2U3MDRlMC4uMjZlOTY0NjVhZjg1MTZlOTg1ZWFjZDQyZDgxYzhlODg3NzliYmUwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTM5LDEyICszOSwxNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4g
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKGludDY0X3QgaWQsIGNvbnN0IFZlY3Rv
cjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIElEQkRhdGFi
YXNlQmFja2VuZEltcGwqIGRhdGFiYXNlKQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsPiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUoaW50NjRfdCBpZCwgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUg
bW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGlkLCBvYmplY3RTdG9yZUlkcywg
bW9kZSwgZGF0YWJhc2UpKTsKKyAgICBIYXNoU2V0PGludDY0X3Q+IG9iamVjdFN0b3JlSGFzaFNl
dDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFN0b3JlSWRzLnNpemUoKTsgKytp
KQorICAgICAgICBvYmplY3RTdG9yZUhhc2hTZXQuYWRkKG9iamVjdFN0b3JlSWRzW2ldKTsKKwor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpZCwgb2Jq
ZWN0U3RvcmVIYXNoU2V0LCBtb2RlLCBkYXRhYmFzZSkpOwogfQogCi1JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGludDY0X3QgaWQsIGNvbnN0IFZl
Y3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIElEQkRh
dGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlKQorSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBjb25zdCBIYXNoU2V0PGludDY0
X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbCogZGF0YWJhc2UpCiAgICAgOiBtX2lkKGlkKQogICAgICwgbV9vYmplY3RT
dG9yZUlkcyhvYmplY3RTdG9yZUlkcykKICAgICAsIG1fbW9kZShtb2RlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbC5oCmluZGV4IGQyYTk1ODUwNjA4ZGE4OWY5ZDE3NDUzNWYzYmIxYTI4YzhjYjMyYTku
LjY0ZDQzMjZjNjY5YTJjZGUzYjlkZDQyMzZmZDBjOTgwMGJiY2ZhN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9y
ZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRlICJJREJUcmFuc2Fj
dGlvbi5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgpAQCAtNDQsNyArNDUsNyBAQCBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOwogCiBjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsIDogcHVibGljIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gY3JlYXRlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwg
Y29uc3QgVmVjdG9yPGludDY0X3Q+JiwgdW5zaWduZWQgc2hvcnQgbW9kZSwgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw+IGNyZWF0ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90
PiYsIElEQlRyYW5zYWN0aW9uOjpNb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKik7CiAgICAg
c3RhdGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIGZyb20oSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiBpbnRlcmZhY2UpCiAgICAgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+KGludGVyZmFjZSk7CkBAIC01OCw3ICs1OSw4
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWJvcnQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9y
Pik7CiAgICAgdm9pZCBydW4oKTsKLSAgICB1bnNpZ25lZCBzaG9ydCBtb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9tb2RlOyB9CisgICAgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kZTsgfQorICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlKCkgY29u
c3QgeyByZXR1cm4gbV9vYmplY3RTdG9yZUlkczsgfQogICAgIGJvb2wgaXNGaW5pc2hlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gRmluaXNoZWQ7IH0KICAgICBib29sIHNjaGVkdWxlVGFz
ayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIFBhc3NPd25Q
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gYWJvcnRUYXNrID0gbnVsbHB0cikgeyBy
ZXR1cm4gc2NoZWR1bGVUYXNrKE5vcm1hbFRhc2ssIHRhc2ssIGFib3J0VGFzayk7IH0KICAgICBi
b29sIHNjaGVkdWxlVGFzayhUYXNrVHlwZSwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBhYm9y
dFRhc2sgPSBudWxscHRyKTsKQEAgLTcwLDcgKzcyLDcgQEAgcHVibGljOgogICAgIGludDY0X3Qg
aWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAKIHByaXZhdGU6Ci0gICAgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0
b3JlSWRzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKik7Cisg
ICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBjb25zdCBIYXNoU2V0PGlu
dDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUsIElEQkRhdGFiYXNl
QmFja2VuZEltcGwqKTsKIAogICAgIGVudW0gU3RhdGUgewogICAgICAgICBVbnVzZWQsIC8vIENy
ZWF0ZWQsIGJ1dCBubyB0YXNrcyB5ZXQuCkBAIC04OSw4ICs5MSw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjbG9zZU9wZW5DdXJzb3JzKCk7CiAKICAgICBjb25zdCBpbnQ2NF90IG1faWQ7Ci0gICAg
Y29uc3QgVmVjdG9yPGludDY0X3Q+IG1fb2JqZWN0U3RvcmVJZHM7Ci0gICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgbV9tb2RlOworICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4gbV9vYmplY3RTdG9y
ZUlkczsKKyAgICBjb25zdCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtX21vZGU7CiAKICAgICBTdGF0
ZSBtX3N0YXRlOwogICAgIGJvb2wgbV9jb21taXRQZW5kaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yLmNwcAppbmRleCA2ZGIwZDcwYmYyNThjNmNlZGRlOGQ5MmRkOWM5YjYwNTlhNDE0NmY5Li41
NmRkNzQzZjE3OTMwYjdkY2UxZjhjMzllYzM2OTczMTUwZDUxNGFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5o
IgorI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIApAQCAt
OTUsMTcgKzk2LDUzIEBAIGJvb2wgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6aXNBY3RpdmUo
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiAKIHZvaWQgSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvcjo6cHJvY2Vzc1N0YXJ0ZWRUcmFuc2FjdGlvbnMoKQogewotICAgIC8v
IEZJWE1FOiBGb3Igbm93LCB3ZSBvbmx5IGFsbG93IG9uZSB0cmFuc2FjdGlvbiB0byBydW4gYXQg
YSB0aW1lLgotICAgIGlmICghbV9ydW5uaW5nVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuOwotCiAgICAgaWYgKG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0
aW9uID0gKm1fc3RhcnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpOwotICAgIG1fc3RhcnRlZFRyYW5z
YWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24pOwotICAgIG1fcnVubmluZ1RyYW5zYWN0aW9ucy5h
ZGQodHJhbnNhY3Rpb24pOwotICAgIHRyYW5zYWN0aW9uLT5ydW4oKTsKKyAgICBBU1NFUlQobV9y
dW5uaW5nVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSB8fCAoKm1fcnVubmluZ1RyYW5zYWN0aW9ucy5i
ZWdpbigpKS0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7CisKKyAg
ICBMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKj46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbV9zdGFydGVkVHJhbnNhY3Rpb25zLmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICE9IG1f
c3RhcnRlZFRyYW5zYWN0aW9ucy5lbmQoKSkgeworICAgICAgICBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsKiB0cmFuc2FjdGlvbiA9ICppdDsKKyAgICAgICAgKytpdDsKKyAgICAgICAgaWYgKGNh
blJ1blRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKSkgeworICAgICAgICAgICAgbV9zdGFydGVkVHJh
bnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbik7CisgICAgICAgICAgICBtX3J1bm5pbmdUcmFu
c2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9uKTsKKyAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5ydW4o
KTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIGJvb2wgZG9TY29wZXNPdmVybGFwKElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uMSwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbCogdHJhbnNhY3Rpb24yKQoreworICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNj
b3BlMSA9IHRyYW5zYWN0aW9uMS0+c2NvcGUoKTsKKyAgICBjb25zdCBIYXNoU2V0PGludDY0X3Q+
JiBzY29wZTIgPSB0cmFuc2FjdGlvbjItPnNjb3BlKCk7CisKKyAgICBmb3IgKEhhc2hTZXQ8aW50
NjRfdCA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNjb3BlMS5iZWdpbigpOyBpdCAhPSBzY29wZTEu
ZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKHNjb3BlMi5jb250YWlucygqaXQpKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjYW5SdW5UcmFuc2FjdGlvbihJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKK3sKKyAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uLT5t
b2RlKCkpIHsKKyAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRToKKyAgICAg
ICAgQVNTRVJUKG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5zaXplKCkgPT0gMSk7CisgICAgICAgIEFT
U0VSVChtX3J1bm5pbmdUcmFuc2FjdGlvbnMuaXNFbXB0eSgpKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFk6CisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgY2FzZSBJREJUcmFuc2FjdGlvbjo6UkVBRF9XUklURToKKyAgICAgICAg
Zm9yIChIYXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqPjo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtX3J1bm5pbmdUcmFuc2FjdGlvbnMuYmVnaW4oKTsgaXQgIT0gbV9ydW5uaW5nVHJhbnNh
Y3Rpb25zLmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICBpZiAoKCppdCktPm1vZGUoKSA9PSBJ
REJUcmFuc2FjdGlvbjo6UkVBRF9XUklURSAmJiBkb1Njb3Blc092ZXJsYXAodHJhbnNhY3Rpb24s
ICppdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KIH0KIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaAppbmRl
eCA4Mjk5ODUzMjIwY2NhYTY0NTRjZjY0MmU4MDU5ODQwODI2MzM0YmYzLi5iZDdkMWUxOGNkYTNk
NzUwZGViZWM5ZGFmNTVlNzA4Mzg3ZTYxZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oCkBA
IC01OCw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcigp
OwogCiAgICAgdm9pZCBwcm9jZXNzU3RhcnRlZFRyYW5zYWN0aW9ucygpOworICAgIGJvb2wgY2Fu
UnVuVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCopOwogCiAgICAgLy8gVGhp
cyBpcyBqdXN0IGFuIGVmZmljaWVudCB3YXkgdG8ga2VlcCByZWZlcmVuY2VzIHRvIGFsbCB0cmFu
c2FjdGlvbnMuCiAgICAgSGFzaE1hcDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiwgUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+ID4gbV90cmFuc2FjdGlvbnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAppbmRleCA5NWJhZjY2YjY1
MThjOThhMGZhNTc4YmIyNjRmM2ZjMTllY2Q1ZGY0Li4zNWMxYjBhNjA2ZGQ0NjY2NzJhNTNhMmU4
OTNhNDczOWIzOGUxYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQkRhdGFiYXNlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJXZWJET01TdHJpbmdM
aXN0LmgiCiAjaW5jbHVkZSAiV2ViRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIldlYklEQk1l
dGFkYXRhLmgiCisjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJDb21tb24uaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zOCw3ICszOSw2IEBA
IGNsYXNzIFdlYklEQkNhbGxiYWNrczsKIGNsYXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzOwog
Y2xhc3MgV2ViSURCS2V5UGF0aDsKIGNsYXNzIFdlYklEQk9iamVjdFN0b3JlOwotY2xhc3MgV2Vi
SURCVHJhbnNhY3Rpb247CiAKIC8vIFNlZSBjb21tZW50IGluIFdlYklEQkZhY3RvcnkgZm9yIGEg
aGlnaCBsZXZlbCBvdmVydmlldyBvZiB0aGVzZSBjbGFzc2VzLgogY2xhc3MgV2ViSURCRGF0YWJh
c2UgewpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUobG9uZyBsb25nIG9iamVjdFN0b3Jl
SWQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29k
ZSYgZWMpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCBXZWJJ
REJUcmFuc2FjdGlvbiogY3JlYXRlVHJhbnNhY3Rpb24obG9uZyBsb25nIGlkLCBjb25zdCBXZWJW
ZWN0b3I8bG9uZyBsb25nPiYsIHVuc2lnbmVkIHNob3J0IG1vZGUpIHsgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgV2ViSURCVHJhbnNhY3Rpb24q
IGNyZWF0ZVRyYW5zYWN0aW9uKGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViVmVjdG9yPGxvbmcgbG9u
Zz4mLCBXZWJJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSB7IFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBmb3JjZUNsb3NlKCkgeyBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0aW9uLmgKaW5kZXggMjIxYmY2MDU2NWJhYWVjNjFm
NGNmNTFhOThmY2FjZjFmYzliNDdjOS4uMjVkNWYwZDgyM2M4N2I0ODJhOTJlZWU4ZGI3YTc0Yjdm
OGFjYTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURC
VHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJU
cmFuc2FjdGlvbi5oCkBAIC00MSw2ICs0MSwxMiBAQCBjbGFzcyBXZWJJREJUcmFuc2FjdGlvbiB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViSURCVHJhbnNhY3Rpb24oKSB7IH0KIAorICAgIGVu
dW0gTW9kZSB7CisgICAgICAgIFJlYWRPbmx5ID0gMCwKKyAgICAgICAgUmVhZFdyaXRlLAorICAg
ICAgICBWZXJzaW9uQ2hhbmdlCisgICAgfTsKKwogICAgIGVudW0gVGFza1R5cGUgewogICAgICAg
ICBOb3JtYWxUYXNrID0gMCwKICAgICAgICAgUHJlZW1wdGl2ZVRhc2sKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggNGQ3Yjhi
Y2MwYjI1NDM0ZTk1MDczNzFjNzE0YWU0NzAxMjVkMTIxNi4uY2NiZTZhZWUwYmUyNWMxYTI2MjVj
ZmU0MWVlNmE2YThiNTYxYTBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJJ
REJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCTWV0YWRhdGEu
aCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJNZWRp
YVBsYXllci5oIgpAQCAtNTAwLDYgKzUwMSwxMCBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYklEQkN1cnNvcjo6TmV4dE5vRHVwbGljYXRlLCBJREJDdXJzb3I6Ok5FWFRfTk9fRAog
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJDdXJzb3I6OlByZXYsIElEQkN1cnNv
cjo6UFJFVik7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkN1cnNvcjo6UHJl
dk5vRHVwbGljYXRlLCBJREJDdXJzb3I6OlBSRVZfTk9fRFVQTElDQVRFKTsKIAorQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJUcmFuc2FjdGlvbjo6UmVhZE9ubHksIElEQlRyYW5z
YWN0aW9uOjpSRUFEX09OTFkpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJU
cmFuc2FjdGlvbjo6UmVhZFdyaXRlLCBJREJUcmFuc2FjdGlvbjo6UkVBRF9XUklURSk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQlRyYW5zYWN0aW9uOjpWZXJzaW9uQ2hhbmdl
LCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworCiBDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKFdlYklEQlRyYW5zYWN0aW9uOjpQcmVlbXB0aXZlVGFzaywgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlOjpQcmVlbXB0aXZlVGFzayk7CiBDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKFdlYklEQlRyYW5zYWN0aW9uOjpOb3JtYWxUYXNrLCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRhc2spOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggZTlj
ODBkMGNmNjI5ZWMyNDc3YWRhMTNiODhmNDQ3ZmE5NTkyZGE0OC4uY2E3ZTNmZjFhZjkwMWNlNmVk
MmMzODYwNDdiNDI5ZGM5NTljNDY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcApAQCAtNDEsNyArNDEsNiBAQAog
I2luY2x1ZGUgIldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oIgogI2luY2x1ZGUgIldlYklE
QkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJXZWJJREJPYmplY3RTdG9yZS5oIgotI2luY2x1
ZGUgIldlYklEQlRyYW5zYWN0aW9uLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBA
IC04NSw5ICs4NCw5IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmRlbGV0ZU9iamVj
dFN0b3JlKGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgSURCVHJhbnNhCiAgICAgbV93ZWJJREJEYXRh
YmFzZS0+ZGVsZXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZCwgKnRyYW5zYWN0aW9uUHJveHkt
PmdldFdlYklEQlRyYW5zYWN0aW9uKCksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGVUcmFu
c2FjdGlvbihpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRz
LCB1bnNpZ25lZCBzaG9ydCBtb2RlKQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGVUcmFuc2FjdGlvbihpbnQ2
NF90IGlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2Fj
dGlvbjo6TW9kZSBtb2RlKQogewotICAgIE93blB0cjxXZWJJREJUcmFuc2FjdGlvbj4gdHJhbnNh
Y3Rpb24gPSBhZG9wdFB0cihtX3dlYklEQkRhdGFiYXNlLT5jcmVhdGVUcmFuc2FjdGlvbihpZCwg
b2JqZWN0U3RvcmVJZHMsIG1vZGUpKTsKKyAgICBPd25QdHI8V2ViSURCVHJhbnNhY3Rpb24+IHRy
YW5zYWN0aW9uID0gYWRvcHRQdHIobV93ZWJJREJEYXRhYmFzZS0+Y3JlYXRlVHJhbnNhY3Rpb24o
aWQsIG9iamVjdFN0b3JlSWRzLCBzdGF0aWNfY2FzdDxXZWJJREJUcmFuc2FjdGlvbjo6TW9kZT4o
bW9kZSkpKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm4gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
LmgKaW5kZXggMDNkMDVkOTJiMTZlNDhjMjllOTMzN2JhZmUzZjkwMDM2MmJkOTYwOS4uMTcxNGE1
NDY5ZWZlYzI1YWVjOGYyYmRiNzQ0YWRmMzdjOWMzMWE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCkBAIC00Niw3ICs0
Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3Jl
bWVudCwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbnQ2
NF90LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gY3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCwgY29uc3Qg
VmVjdG9yPGludDY0X3Q+JiwgdW5zaWduZWQgc2hvcnQgbW9kZSk7CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gY3JlYXRlVHJh
bnNhY3Rpb24oaW50NjRfdCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiwgV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246Ok1vZGUpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCA0MDNhMzBiZWU1
MTA3NjMwNzZhZDE2ZjZhOWQzODQyYmJhOWZiZDQwLi5kNDhjZjAwMjY5ZGIwMDQ1YmUwY2E1ZjU5
ZjRmNDFjMjU2YjU4N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTc1LDEyICs3NSwxMiBAQCB2b2lkIFdlYklEQkRhdGFi
YXNlSW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmUobG9uZyBsb25nIG9iamVjdFN0b3JlSWQsIGNvbnN0
IFdlYklEQgogICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVPYmplY3RTdG9yZShvYmplY3RT
dG9yZUlkLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwg
ZWMpOwogfQogCi1XZWJJREJUcmFuc2FjdGlvbiogV2ViSURCRGF0YWJhc2VJbXBsOjpjcmVhdGVU
cmFuc2FjdGlvbihsb25nIGxvbmcgaWQsIGNvbnN0IFdlYlZlY3Rvcjxsb25nIGxvbmc+JiBvYmpl
Y3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQgbW9kZSkKK1dlYklEQlRyYW5zYWN0aW9uKiBXZWJJ
REJEYXRhYmFzZUltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKGxvbmcgbG9uZyBpZCwgY29uc3QgV2Vi
VmVjdG9yPGxvbmcgbG9uZz4mIG9iamVjdFN0b3JlSWRzLCBXZWJJREJUcmFuc2FjdGlvbjo6TW9k
ZSBtb2RlKQogewogICAgIFZlY3RvcjxpbnQ2NF90PiBvYmplY3RTdG9yZUlkTGlzdChvYmplY3RT
dG9yZUlkcy5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U3RvcmVJ
ZHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG9iamVjdFN0b3JlSWRMaXN0W2ldID0gb2JqZWN0U3Rv
cmVJZHNbaV07Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJh
bnNhY3Rpb24gPSBtX2RhdGFiYXNlQmFja2VuZC0+Y3JlYXRlVHJhbnNhY3Rpb24oaWQsIG9iamVj
dFN0b3JlSWRMaXN0LCBtb2RlKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiB0cmFuc2FjdGlvbiA9IG1fZGF0YWJhc2VCYWNrZW5kLT5jcmVhdGVUcmFuc2FjdGlv
bihpZCwgb2JqZWN0U3RvcmVJZExpc3QsIHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uOjpNb2Rl
Pihtb2RlKSk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
cmV0dXJuIG5ldyBXZWJJREJUcmFuc2FjdGlvbkltcGwodHJhbnNhY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAppbmRleCA2NmFhODRk
YmE4YTgzYzk4MThhZGM5NjJlM2NiNzIwMjU3ZGE3MmFmLi5iODA1OTk1ZGM3MDI2MDJhNGMzNWEz
ODg3YTRkMjk0ZjVlZWZhNGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJEYXRhYmFzZUltcGwuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShsb25nIGxvbmcsIGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVu
dCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkLCBjb25z
dCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIFdl
YklEQlRyYW5zYWN0aW9uKiBjcmVhdGVUcmFuc2FjdGlvbihsb25nIGxvbmcgaWQsIGNvbnN0IFdl
YlZlY3Rvcjxsb25nIGxvbmc+JiwgdW5zaWduZWQgc2hvcnQgbW9kZSk7CisgICAgdmlydHVhbCBX
ZWJJREJUcmFuc2FjdGlvbiogY3JlYXRlVHJhbnNhY3Rpb24obG9uZyBsb25nIGlkLCBjb25zdCBX
ZWJWZWN0b3I8bG9uZyBsb25nPiYsIFdlYklEQlRyYW5zYWN0aW9uOjpNb2RlKTsKICAgICB2aXJ0
dWFsIHZvaWQgZm9yY2VDbG9zZSgpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRU
ZXN0LmNwcAppbmRleCAwZDI2MjI0NjY1MzgxNGE0N2RjOThmYThiM2M5ZmEwYjlhMjEyYmEzLi5i
NDVmZmIzZTU3NjY2ZjU4OTc4YzIxN2Q5YzgyZWEzODliZjA5YmI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAK
QEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgeyByZXR1cm4g
MDsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpIHsgfQotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9u
KGludDY0X3QsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIHVuc2lnbmVkIHNob3J0IG1vZGUpIHsg
cmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPiBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90LCBjb25zdCBWZWN0b3I8aW50NjRf
dD4mLCBJREJUcmFuc2FjdGlvbjo6TW9kZSkgeyByZXR1cm4gMDsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KQogICAgIHsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBmNGE1ZDA4ZDczM2M3NmJmZDgwNmQ1ODA2MTJmYjE3OTk1NDJkZjk4Li5mNmIwNjU5ZDQ4ZWZj
NzEyN2NlMjhlNzdmMDQ5NzhjYzJjNzE5NWYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTIt
MTItMDQgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRl
eGVkREI6IEFsbG93IG11bHRpcGxlIHRyYW5zYWN0aW9ucyB0byBydW4gaW4gcGFyYWxsZWwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NTcwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IHRlc3QgZm9y
IHBhcmFsbGVsIHRyYW5zYWN0aW9ucywgdXBkYXRlIGV4aXN0aW5nIHRlc3RzIHRoYXQgcmVsaWVk
IG9uIHNlcXVlbnRpYWwgZXhlY3V0aW9uLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
ZGF0YWJhc2UtY2xvc2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvY2xlYXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvcmVzb3VyY2VzL2NsZWFyLmpzOiBTcGxpdCB1cCB0cmFuc2FjdGlvbiBzdGVwcy4K
KyAgICAgICAgKGNsZWFyKToKKyAgICAgICAgKGNsZWFyZWQpOgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1jbG9zZS5qczogRG9uJ3QgbG9nIG9uIGluZGl2
aWR1YWwgdHJhbnNhY3Rpb24gY29tcGxldGlvbi4KKyAgICAgICAgKHRlc3RDbG9zZS50cmFuc2Fj
dGlvbkNvbXBsZXRlZCk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3Ry
YW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuanM6IEFkZGVkLgorICAgICAg
ICAocHJlcGFyZURhdGFiYXNlKToKKyAgICAgICAgKHJ1blBhcmFsbGVsVHJhbnNhY3Rpb25zLmRv
VHJhbnNhY3Rpb24xR2V0LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHJ1blBhcmFsbGVs
VHJhbnNhY3Rpb25zLmRvVHJhbnNhY3Rpb24yR2V0LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAg
ICAgKG9uVHJhbnNhY3Rpb25Db21wbGV0ZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
dHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLXdpdGhpbi1kYXRhYmFzZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlv
bi13aXRoaW4tZGF0YWJhc2UuaHRtbDogQWRkZWQuCisKIDIwMTItMTItMDQgIEVtaWwgQSBFa2x1
bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgY2hyb21pdW0gZXhw
ZWN0YXRpb25zIHVwZGF0ZSwgbWFyayB1bnNraXBwZWQgc3ZnIHRlc3RzIGFzIHNsb3cuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1jbG9zZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1jbG9zZS1l
eHBlY3RlZC50eHQKaW5kZXggYTMwNzlmYTJlMDVlMTMzMGNmMGU4MjY5ODA3ODE1MDNkYWNhOWUw
Ni4uNjAyODFlZGI5ZWViMjM0MmMxZDYzMWQ1MDZhMTYyMDdhMTc2MjcyNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtY2xvc2UtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWNsb3NlLWV4cGVj
dGVkLnR4dApAQCAtMzksMTEgKzM5LDkgQEAgaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFt
ZSkKIAogdHJhbnNhY3Rpb24gIzEgcmVxdWVzdCBzdWNjZXNzZnVsCiBQQVNTIGV2ZW50LnRhcmdl
dC5yZXN1bHQgaXMgInZhbHVlMSIKLWF3YWl0aW5nX3RyYW5zYWN0aW9uX2NvdW50IC09IDEKIAog
dHJhbnNhY3Rpb24gIzIgcmVxdWVzdCBzdWNjZXNzZnVsCiBQQVNTIGV2ZW50LnRhcmdldC5yZXN1
bHQgaXMgInZhbHVlMiIKLWF3YWl0aW5nX3RyYW5zYWN0aW9uX2NvdW50IC09IDEKIAogQWxsIHRy
YW5zYWN0aW9ucyBjb21wbGV0ZWQgLSBkYXRhYmFzZSBkZWxldGVzIHNob3VsZCBub3cgYmUgdW5i
bG9ja2VkLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2NsZWFyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvY2xlYXItZXhwZWN0ZWQudHh0CmluZGV4IGVmYTBlMWE1ZDMzYjEzOTEwNzU0OTY3ZmQ4
Y2RkY2ExM2JjZGUyMjEuLjUwNWZlNzUzYTQxNTlhYmRjNDAyOWNkOGNlMTFlMmY5NDZmM2NkNzkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXIt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
Y2xlYXItZXhwZWN0ZWQudHh0CkBAIC0xNCw3ICsxNCw4IEBAIEV4cGVjdGluZyBleGNlcHRpb24g
ZnJvbSBkYi50cmFuc2FjdGlvbignZm9vJykub2JqZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7CiBQ
QVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgogUEFTUyBjb2RlIGlzIDAKIFBBU1MgZW5hbWUgaXMg
J1JlYWRPbmx5RXJyb3InCi1kYi50cmFuc2FjdGlvbignZm9vJywgJ3JlYWR3cml0ZScpLm9iamVj
dFN0b3JlKCdmb28nKS5jbGVhcigpOworZGIudHJhbnNhY3Rpb24oJ2ZvbycsICdyZWFkd3JpdGUn
KQordHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7CiByZXF1ZXN0ID0gZGIu
dHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0b3JlKCdmb28nKS5vcGVuQ3Vyc29yKCk7CiBjdXJz
b3IgPSByZXF1ZXN0LnJlc3VsdDsKIFBBU1MgY3Vyc29yIGlzIG51bGwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2NsZWFyLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY2xlYXIuanMK
aW5kZXggYzgyZmFmMjYxMGU0ZmQ0Y2IxMjg2NmY5NmZlNDZjYzFlNjVhNjc0Ni4uNzlmM2I3OGU0
MjZhM2UzNTBiMTJmMjJlZGJlYjQ4ODJlYjQ2M2MxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY2xlYXIuanMKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY2xlYXIuanMKQEAgLTI0
LDcgKzI0LDE0IEBAIGZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCiBmdW5jdGlvbiBjbGVhcigp
CiB7CiAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9i
amVjdFN0b3JlKCdmb28nKS5jbGVhcigpOyIsICIwIiwgIidSZWFkT25seUVycm9yJyIpOwotICAg
IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKCdmb28nLCAncmVhZHdyaXRlJykub2JqZWN0U3Rv
cmUoJ2ZvbycpLmNsZWFyKCk7Iik7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50
cmFuc2FjdGlvbignZm9vJywgJ3JlYWR3cml0ZScpIik7CisgICAgZXZhbEFuZExvZygidHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7Iik7CisgICAgdHJhbnNhY3Rpb24ub25j
b21wbGV0ZSA9IGNsZWFyZWQ7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRB
Ym9ydENhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhcmVkKCkKK3sKICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKCdmb28nKS5vYmplY3RTdG9yZSgn
Zm9vJykub3BlbkN1cnNvcigpOyIpOwogICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXJlV2VDbGVh
cllldDsKICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFz
ZS1jbG9zZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRh
YmFzZS1jbG9zZS5qcwppbmRleCA2OTFlNTViY2YxZjFiNzgzZDVkYzhhNTdjNmVhNjQzZjE4M2Ri
MzU2Li40NmRiYTMwZjViZGNiZTQxMjFiZjFlOGJmMjJmZWQwZDBlNDU5MmE2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YWJhc2UtY2xvc2Uu
anMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNl
LWNsb3NlLmpzCkBAIC0zNSw3ICszNSw3IEBAIGZ1bmN0aW9uIHRlc3RDbG9zZSgpCiAgICAgZGVi
dWcoIlN0ZXAgMjogV2FpdCBmb3IgYWxsIHRyYW5zYWN0aW9ucyBjcmVhdGVkIHVzaW5nIGNvbm5l
Y3Rpb24gdG8gY29tcGxldGUuIE9uY2UgdGhleSBhcmUgY29tcGxldGUsIGNvbm5lY3Rpb24gaXMg
Y2xvc2VkLiIpOwogICAgIGV2YWxBbmRMb2coImF3YWl0aW5nX3RyYW5zYWN0aW9uX2NvdW50ID0g
MiIpOwogICAgIGZ1bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxldGVkKCkgewotICAgICAgICBldmFs
QW5kTG9nKCJhd2FpdGluZ190cmFuc2FjdGlvbl9jb3VudCAtPSAxIik7CisgICAgICAgIGF3YWl0
aW5nX3RyYW5zYWN0aW9uX2NvdW50IC09IDE7CiAKICAgICAgICAgaWYgKGF3YWl0aW5nX3RyYW5z
YWN0aW9uX2NvdW50ID09IDApIHsKICAgICAgICAgICAgIGRlYnVnKCIiKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jb29y
ZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDZmMDM1OTJhZDRiYWNjM2M4ZDcxM2UxYzJlNmU4MzJmZGZmOGEyYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90
cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmpzCkBAIC0wLDAgKzEsNzcg
QEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
J3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiQ2hlY2sgdGhhdCByZWFkLW9ubHkgdHJh
bnNhY3Rpb25zIHdpdGhpbiBhIGRhdGFiYXNlIGNhbiBydW4gaW4gcGFyYWxsZWwuIik7CisKK2lu
ZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCBydW5QYXJhbGxlbFRyYW5zYWN0aW9ucyk7CisK
K2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZShldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKyAg
ICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBldmFsQW5kTG9n
KCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExv
Zygic3RvcmUucHV0KCd2YWx1ZScsICdrZXknKSIpOworfQorCitmdW5jdGlvbiBydW5QYXJhbGxl
bFRyYW5zYWN0aW9ucyhldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZXZhbEFu
ZExvZygidHJhbnNhY3Rpb24xID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWRvbmx5Jyki
KTsKKyAgICB0cmFuc2FjdGlvbjEub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgIHRyYW5zYWN0aW9uMS5vbmNvbXBsZXRlID0gb25UcmFuc2FjdGlvbkNvbXBsZXRlOworICAg
IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFk
b25seScpIik7CisgICAgdHJhbnNhY3Rpb24xLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxs
YmFjazsKKyAgICB0cmFuc2FjdGlvbjIub25jb21wbGV0ZSA9IG9uVHJhbnNhY3Rpb25Db21wbGV0
ZTsKKworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMUdldFN1Y2Nlc3MgPSBmYWxzZSIpOwor
ICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMkdldFN1Y2Nlc3MgPSBmYWxzZSIpOworCisgICAg
ZGVidWcoIktlZXAgYm90aCB0cmFuc2FjdGlvbnMgYWxpdmUgdW50aWwgZWFjaCBoYXMgcmVwb3J0
ZWQgYXQgbGVhc3Qgb25lIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uIik7CisKKyAgICBmdW5jdGlvbiBk
b1RyYW5zYWN0aW9uMUdldCgpIHsKKyAgICAgICAgLy8gTk9URTogTm8gbG9nZ2luZyBzaW5jZSBl
eGVjdXRpb24gb3JkZXIgaXMgbm90IGRldGVybWluaXN0aWMuCisgICAgICAgIHJlcXVlc3QgPSB0
cmFuc2FjdGlvbjEub2JqZWN0U3RvcmUoJ3N0b3JlJykuZ2V0KCdrZXknKTsKKyAgICAgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0cmFuc2FjdGlvbjFHZXRTdWNj
ZXNzID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghdHJhbnNhY3Rpb24yR2V0U3VjY2VzcykKKyAg
ICAgICAgICAgICAgICBkb1RyYW5zYWN0aW9uMUdldCgpOworICAgICAgICB9OworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIGRvVHJhbnNhY3Rpb24yR2V0KCkgeworICAgICAgICAvLyBOT1RFOiBObyBs
b2dnaW5nIHNpbmNlIGV4ZWN1dGlvbiBvcmRlciBpcyBub3QgZGV0ZXJtaW5pc3RpYy4KKyAgICAg
ICAgcmVxdWVzdCA9IHRyYW5zYWN0aW9uMi5vYmplY3RTdG9yZSgnc3RvcmUnKS5nZXQoJ2tleScp
OworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRyYW5z
YWN0aW9uMkdldFN1Y2Nlc3MgPSB0cnVlOworICAgICAgICAgICAgaWYgKCF0cmFuc2FjdGlvbjFH
ZXRTdWNjZXNzKQorICAgICAgICAgICAgICAgIGRvVHJhbnNhY3Rpb24yR2V0KCk7CisgICAgICAg
IH07CisgICAgfQorCisgICAgZG9UcmFuc2FjdGlvbjFHZXQoKTsKKyAgICBkb1RyYW5zYWN0aW9u
MkdldCgpOworfQorCit0cmFuc2FjdGlvbkNvbXBsZXRpb25Db3VudCA9IDA7CitmdW5jdGlvbiBv
blRyYW5zYWN0aW9uQ29tcGxldGUoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7CisKKyAgICAr
K3RyYW5zYWN0aW9uQ29tcGxldGlvbkNvdW50OworICAgIGlmICh0cmFuc2FjdGlvbkNvbXBsZXRp
b25Db3VudCA8IDIpIHsKKyAgICAgICAgZGVidWcoImZpcnN0IHRyYW5zYWN0aW9uIGNvbXBsZXRl
LCBzdGlsbCB3YWl0aW5nLi4uIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91
bGRCZVRydWUoInRyYW5zYWN0aW9uMUdldFN1Y2Nlc3MiKTsKKyAgICBzaG91bGRCZVRydWUoInRy
YW5zYWN0aW9uMkdldFN1Y2Nlc3MiKTsKKworICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRp
bmF0aW9uLXdpdGhpbi1kYXRhYmFzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZmM2ZmYzk4
MDdiZjgwY2U3YjljNWEwYjk5YTk5YzgyNmY0MTJiMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4t
ZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzYgQEAKK0NoZWNrIHRoYXQgcmVhZC1v
bmx5IHRyYW5zYWN0aW9ucyB3aXRoaW4gYSBkYXRhYmFzZSBjYW4gcnVuIGluIHBhcmFsbGVsLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVk
REIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5t
c0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2RibmFtZSA9ICJ0cmFuc2FjdGlvbi1j
b29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmh0bWwiCitpbmRleGVkREIuZGVsZXRlRGF0YWJh
c2UoZGJuYW1lKQoraW5kZXhlZERCLm9wZW4oZGJuYW1lKQorCitwcmVwYXJlRGF0YWJhc2UoKToK
K2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
c3RvcmUnKQorc3RvcmUucHV0KCd2YWx1ZScsICdrZXknKQorCitydW5QYXJhbGxlbFRyYW5zYWN0
aW9ucygpOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CisKK3RyYW5zYWN0aW9uMSA9IGRiLnRy
YW5zYWN0aW9uKCdzdG9yZScsICdyZWFkb25seScpCit0cmFuc2FjdGlvbjIgPSBkYi50cmFuc2Fj
dGlvbignc3RvcmUnLCAncmVhZG9ubHknKQordHJhbnNhY3Rpb24xR2V0U3VjY2VzcyA9IGZhbHNl
Cit0cmFuc2FjdGlvbjJHZXRTdWNjZXNzID0gZmFsc2UKK0tlZXAgYm90aCB0cmFuc2FjdGlvbnMg
YWxpdmUgdW50aWwgZWFjaCBoYXMgcmVwb3J0ZWQgYXQgbGVhc3Qgb25lIHN1Y2Nlc3NmdWwgb3Bl
cmF0aW9uCisKK29uVHJhbnNhY3Rpb25Db21wbGV0ZSgpOgorZmlyc3QgdHJhbnNhY3Rpb24gY29t
cGxldGUsIHN0aWxsIHdhaXRpbmcuLi4KKworb25UcmFuc2FjdGlvbkNvbXBsZXRlKCk6CitQQVNT
IHRyYW5zYWN0aW9uMUdldFN1Y2Nlc3MgaXMgdHJ1ZQorUEFTUyB0cmFuc2FjdGlvbjJHZXRTdWNj
ZXNzIGlzIHRydWUKK2RiLmNsb3NlKCkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGlu
LWRhdGFiYXNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYwYzViN2Q0NTkxMGE0NTIxMzA5YzMzZmY0OWU0
ZTZjNTJiN2JmMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuaHRtbApAQCAtMCww
ICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0
YWJhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177602</attachid>
            <date>2012-12-04 16:38:41 -0800</date>
            <delta_ts>2012-12-05 08:42:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97570-20121204163606.patch</filename>
            <type>text/plain</type>
            <size>28537</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU4ZTBjZWU3NTBjNGNl
NzEyNWQ4OTNjZmRlMGEyYjM5MGQyNzYxNC4uOWIwYjUwYzg1N2E2ZDliMzEzNjA2ZDg4ZTM1NzQ5
ZTFlNzgwNTg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTEyLTA0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBBbGxv
dyBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgdG8gcnVuIGluIHBhcmFsbGVsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU3MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBzcGVjIGxvZ2ljIGZv
ciBhbGxvd2luZyByZWFkLW9ubHkgdHJhbnNhY3Rpb25zLCBhbmQgcmVhZC13cml0ZSB0cmFuc2Fj
dGlvbnMKKyAgICAgICAgd2l0aCBub24tb3ZlcmxhcHBpbmcgc2NvcGVzLCB0byBydW4gaW4gcGFy
YWxsZWwuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29v
cmRpbmF0aW9uLWFjcm9zcy1kYXRhYmFzZXMuaHRtbAorICAgICAgICAgICAgICBzdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmh0bWwKKyAg
ICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZHdyaXRlLWV4Y2x1
c2l2ZS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcDogVXNlIElEQlRyYW5zYWN0aW9uOjpNb2RlIGVudW0KKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6IERpdHRvLgorICAg
ICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6IERpdHRvLgorICAgICAgICAoSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDogQ29udmVydCBzY29wZSBhcyBhIEhhc2hTZXQgZm9y
CisgICAgICAgIGZhc3QgaW50ZXJzZWN0aW5nLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaDoKKyAgICAgICAgKElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6bW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjpzY29wZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5jcHA6IFNwZWMgbG9naWMgZ29lcyBoZXJlLgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6cHJvY2Vzc1N0YXJ0ZWRUcmFuc2FjdGlv
bnMpOiBFeHRlbmQgdGhpcworICAgICAgICBtZXRob2QgdG8gdGVzdCBhbGwgcGxhdXNpYmx5IHJ1
bm5hYmxlIHRyYW5zYWN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6Y2FuUnVuVHJhbnNhY3Rpb24pOiBUZXN0IHRv
IHNlZSBpZiBvbmUKKyAgICAgICAgcGFydGljdWxhciB0cmFuc2FjdGlvbiBjYW4gYmUgcnVuLgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6ZG9TY29wZXNPdmVy
bGFwKTogRG8gYSBxdWljayBpbnRlcnNlY3Rpb24KKyAgICAgICAgdGVzdCBiZXR3ZWVuIHRyYW5z
YWN0aW9uIHNjb3Blcy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmg6CisgICAgICAgIChJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKToKKwog
MjAxMi0xMi0wNCAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IEFkZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzb3duT3BlbmVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDgyZWFmNTk1OWNlODM3ODc5YzcyNmViZGJjODJiYTJkNWVhZDQ3M2YuLjdj
NzYwY2ZhODFjODE5ZmUwM2FlMzZlM2FmYzFjMzc5MDA2NDIzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMTItMDQgIEpvc2h1YSBCZWxsICA8anNi
ZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEFsbG93IG11bHRpcGxlIHRy
YW5zYWN0aW9ucyB0byBydW4gaW4gcGFyYWxsZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTWFwIHRvIElEQlRyYW5zYWN0aW9uOjpNb2RlIGVudW0gYXMg
YXBwcm9wcmlhdGUuCisKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlVHJhbnNh
Y3Rpb24pOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oOgorICAgICAg
ICAoSURCRGF0YWJhc2VCYWNrZW5kUHJveHkpOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFz
ZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZVRy
YW5zYWN0aW9uKToKKyAgICAgICAgICogdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHA6
CisKIDIwMTItMTItMDQgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBBZGQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERpc293bk9wZW5lcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcAppbmRleCA0NjM4ODc3NjRiNTdkZTM2ZDVkOWQxN2JkYzNkZjk0OGY0YWM1OTVkLi4x
NzA3NDgxNTE5NTFjNzYxNGNiOWIwOTc1ZWNlYzllZDFkYzBiMDM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcApAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
cHJvY2Vzc1BlbmRpbmdDYWxscygpCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlVHJhbnNh
Y3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVj
dFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9ydCBtb2RlKQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZVRyYW5zYWN0
aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RT
dG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSkKIHsKICAgICBSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsOjpjcmVhdGUodHJhbnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJZHMsIG1vZGUsIHRoaXMpOwog
ICAgIG1fdHJhbnNhY3Rpb25zLmFkZCh0cmFuc2FjdGlvbi5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmgKaW5kZXggZGYwYmEyZGFiNDM0OGFkYzc2NzhkNGQ3MDNiYWIwOTBlOGE2YjZjMi4uYTY1NDJj
NmRiYjAyYWZkNjkyZjNiYjBmYjBlMzBkZmEyNTdjMjg3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApA
QCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJREJEYXRhYmFzZU1ldGFkYXRh
IG1ldGFkYXRhKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBpZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0
aW9uSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNo
b3J0IG1vZGUpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3Qg
VmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUpOwog
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7
CiAKICAgICBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3Jl
KGludDY0X3QgaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCA4NTAwNjJjMjkx
ODczMmJhMzRhOTI3YzdiMDdlOTk1ZWE5MDM2NGRmLi5lM2U4ZGYxYjFiM2NkMjgyZDY4ZDRiOGM4
ZmJhM2FhZGM5NWRiZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMjYsNiAr
MjYsNyBAQAogI2lmbmRlZiBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2VfaAogI2RlZmluZSBJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2VfaAogCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24u
aCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTU1LDcgKzU2LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVP
YmplY3RTdG9yZShpbnQ2NF90LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNl
cHRpb25Db2RlJikgPSAwOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwg
Y29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQgbW9k
ZSkgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVj
dG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4p
ID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKaW5kZXggYzU0MmZkZDc5MDg5
OWVlYWJhMTQ0MTI0ZThlMzJlOTM0M2U3MDRlMC4uMjZlOTY0NjVhZjg1MTZlOTg1ZWFjZDQyZDgx
YzhlODg3NzliYmUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTM5LDEyICsz
OSwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbD4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKGludDY0X3Qg
aWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0
IG1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlKQorUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUo
aW50NjRfdCBpZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJh
bnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGlkLCBv
YmplY3RTdG9yZUlkcywgbW9kZSwgZGF0YWJhc2UpKTsKKyAgICBIYXNoU2V0PGludDY0X3Q+IG9i
amVjdFN0b3JlSGFzaFNldDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFN0b3Jl
SWRzLnNpemUoKTsgKytpKQorICAgICAgICBvYmplY3RTdG9yZUhhc2hTZXQuYWRkKG9iamVjdFN0
b3JlSWRzW2ldKTsKKworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbChpZCwgb2JqZWN0U3RvcmVIYXNoU2V0LCBtb2RlLCBkYXRhYmFzZSkpOwogfQogCi1J
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGludDY0
X3QgaWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNo
b3J0IG1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlKQorSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBjb25z
dCBIYXNoU2V0PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUg
bW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UpCiAgICAgOiBtX2lkKGlkKQog
ICAgICwgbV9vYmplY3RTdG9yZUlkcyhvYmplY3RTdG9yZUlkcykKICAgICAsIG1fbW9kZShtb2Rl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCmluZGV4IGQyYTk1ODUwNjA4ZGE4OWY5ZDE3NDUzNWYz
YmIxYTI4YzhjYjMyYTkuLjY0ZDQzMjZjNjY5YTJjZGUzYjlkZDQyMzZmZDBjOTgwMGJiY2ZhN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUg
IklEQkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNs
dWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtNDQsNyArNDUsNyBAQCBjbGFzcyBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOwogCiBjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsIDog
cHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gY3JlYXRlKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiwgdW5zaWduZWQgc2hvcnQgbW9k
ZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw+IGNyZWF0ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYsIElEQlRyYW5zYWN0aW9uOjpNb2RlLCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsKik7CiAgICAgc3RhdGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIGZyb20oSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiBpbnRlcmZhY2UpCiAgICAgewogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+KGludGVyZmFjZSk7
CkBAIC01OCw3ICs1OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWJvcnQoUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUVycm9yPik7CiAgICAgdm9pZCBydW4oKTsKLSAgICB1bnNpZ25lZCBzaG9ydCBt
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CisgICAgSURCVHJhbnNhY3Rpb246Ok1vZGUg
bW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQorICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRf
dD4mIHNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RTdG9yZUlkczsgfQogICAgIGJvb2wg
aXNGaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gRmluaXNoZWQ7IH0KICAgICBi
b29sIHNjaGVkdWxlVGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
IHRhc2ssIFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gYWJvcnRUYXNr
ID0gbnVsbHB0cikgeyByZXR1cm4gc2NoZWR1bGVUYXNrKE5vcm1hbFRhc2ssIHRhc2ssIGFib3J0
VGFzayk7IH0KICAgICBib29sIHNjaGVkdWxlVGFzayhUYXNrVHlwZSwgUGFzc093blB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiBhYm9ydFRhc2sgPSBudWxscHRyKTsKQEAgLTcwLDcgKzcyLDcgQEAgcHVibGlj
OgogICAgIGludDY0X3QgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAKIHByaXZhdGU6Ci0g
ICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8aW50
NjRfdD4mIG9iamVjdFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsKik7CisgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBj
b25zdCBIYXNoU2V0PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1v
ZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqKTsKIAogICAgIGVudW0gU3RhdGUgewogICAgICAg
ICBVbnVzZWQsIC8vIENyZWF0ZWQsIGJ1dCBubyB0YXNrcyB5ZXQuCkBAIC04OSw4ICs5MSw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjbG9zZU9wZW5DdXJzb3JzKCk7CiAKICAgICBjb25zdCBpbnQ2
NF90IG1faWQ7Ci0gICAgY29uc3QgVmVjdG9yPGludDY0X3Q+IG1fb2JqZWN0U3RvcmVJZHM7Ci0g
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgbV9tb2RlOworICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRf
dD4gbV9vYmplY3RTdG9yZUlkczsKKyAgICBjb25zdCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtX21v
ZGU7CiAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIGJvb2wgbV9jb21taXRQZW5kaW5nOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yLmNwcAppbmRleCA2ZGIwZDcwYmYyNThjNmNlZGRlOGQ5MmRkOWM5
YjYwNTlhNDE0NmY5Li41NmRkNzQzZjE3OTMwYjdkY2UxZjhjMzllYzM2OTczMTUwZDUxNGFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVk
ZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAi
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKIApAQCAtOTUsMTcgKzk2LDUzIEBAIGJvb2wgSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvcjo6aXNBY3RpdmUoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiAK
IHZvaWQgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6cHJvY2Vzc1N0YXJ0ZWRUcmFuc2FjdGlv
bnMoKQogewotICAgIC8vIEZJWE1FOiBGb3Igbm93LCB3ZSBvbmx5IGFsbG93IG9uZSB0cmFuc2Fj
dGlvbiB0byBydW4gYXQgYSB0aW1lLgotICAgIGlmICghbV9ydW5uaW5nVHJhbnNhY3Rpb25zLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKG1fc3RhcnRlZFRyYW5zYWN0aW9u
cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGwqIHRyYW5zYWN0aW9uID0gKm1fc3RhcnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpOwotICAg
IG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24pOwotICAgIG1fcnVubmlu
Z1RyYW5zYWN0aW9ucy5hZGQodHJhbnNhY3Rpb24pOwotICAgIHRyYW5zYWN0aW9uLT5ydW4oKTsK
KyAgICBBU1NFUlQobV9ydW5uaW5nVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSB8fCAoKm1fcnVubmlu
Z1RyYW5zYWN0aW9ucy5iZWdpbigpKS0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9O
X0NIQU5HRSk7CisKKyAgICBMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKj46
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdGFydGVkVHJhbnNhY3Rpb25zLmJlZ2luKCk7CisgICAg
d2hpbGUgKGl0ICE9IG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5lbmQoKSkgeworICAgICAgICBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9ICppdDsKKyAgICAgICAgKytpdDsK
KyAgICAgICAgaWYgKGNhblJ1blRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKSkgeworICAgICAgICAg
ICAgbV9zdGFydGVkVHJhbnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbik7CisgICAgICAgICAg
ICBtX3J1bm5pbmdUcmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9uKTsKKyAgICAgICAgICAgIHRy
YW5zYWN0aW9uLT5ydW4oKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIGJvb2wgZG9T
Y29wZXNPdmVybGFwKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uMSwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24yKQoreworICAgIGNvbnN0IEhhc2hT
ZXQ8aW50NjRfdD4mIHNjb3BlMSA9IHRyYW5zYWN0aW9uMS0+c2NvcGUoKTsKKyAgICBjb25zdCBI
YXNoU2V0PGludDY0X3Q+JiBzY29wZTIgPSB0cmFuc2FjdGlvbjItPnNjb3BlKCk7CisKKyAgICBm
b3IgKEhhc2hTZXQ8aW50NjRfdCA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNjb3BlMS5iZWdpbigp
OyBpdCAhPSBzY29wZTEuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKHNjb3BlMi5jb250YWlu
cygqaXQpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjYW5SdW5UcmFuc2FjdGlv
bihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKK3sKKyAgICBzd2l0Y2gg
KHRyYW5zYWN0aW9uLT5tb2RlKCkpIHsKKyAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9O
X0NIQU5HRToKKyAgICAgICAgQVNTRVJUKG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5zaXplKCkgPT0g
MSk7CisgICAgICAgIEFTU0VSVChtX3J1bm5pbmdUcmFuc2FjdGlvbnMuaXNFbXB0eSgpKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFk6
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgY2FzZSBJREJUcmFuc2FjdGlvbjo6UkVBRF9X
UklURToKKyAgICAgICAgZm9yIChIYXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqPjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3J1bm5pbmdUcmFuc2FjdGlvbnMuYmVnaW4oKTsgaXQgIT0g
bV9ydW5uaW5nVHJhbnNhY3Rpb25zLmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICBpZiAoKCpp
dCktPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6UkVBRF9XUklURSAmJiBkb1Njb3Blc092ZXJs
YXAodHJhbnNhY3Rpb24sICppdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KIH0KIAogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3IuaAppbmRleCA4Mjk5ODUzMjIwY2NhYTY0NTRjZjY0MmU4MDU5ODQwODI2MzM0YmYz
Li5iZDdkMWUxOGNkYTNkNzUwZGViZWM5ZGFmNTVlNzA4Mzg3ZTYxZjE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvci5oCkBAIC01OCw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgSURCVHJhbnNhY3Rp
b25Db29yZGluYXRvcigpOwogCiAgICAgdm9pZCBwcm9jZXNzU3RhcnRlZFRyYW5zYWN0aW9ucygp
OworICAgIGJvb2wgY2FuUnVuVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCop
OwogCiAgICAgLy8gVGhpcyBpcyBqdXN0IGFuIGVmZmljaWVudCB3YXkgdG8ga2VlcCByZWZlcmVu
Y2VzIHRvIGFsbCB0cmFuc2FjdGlvbnMuCiAgICAgSGFzaE1hcDxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsKiwgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+ID4gbV90cmFuc2FjdGlv
bnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5jcHAKaW5kZXggZTljODBkMGNmNjI5ZWMyNDc3YWRhMTNiODhmNDQ3ZmE5NTky
ZGE0OC4uOTI1NDAxNmZjZjI0ODMxNmY4M2E5MDU3NTJmOTEyMTJiODY4ZmRiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
LmNwcApAQCAtODUsNyArODUsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpkZWxl
dGVPYmplY3RTdG9yZShpbnQ2NF90IG9iamVjdFN0b3JlSWQsIElEQlRyYW5zYQogICAgIG1fd2Vi
SURCRGF0YWJhc2UtPmRlbGV0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlSWQsICp0cmFuc2FjdGlv
blByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3Jl
YXRlVHJhbnNhY3Rpb24oaW50NjRfdCBpZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RT
dG9yZUlkcywgdW5zaWduZWQgc2hvcnQgbW9kZSkKK1Bhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlVHJhbnNhY3Rp
b24oaW50NjRfdCBpZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURC
VHJhbnNhY3Rpb246Ok1vZGUgbW9kZSkKIHsKICAgICBPd25QdHI8V2ViSURCVHJhbnNhY3Rpb24+
IHRyYW5zYWN0aW9uID0gYWRvcHRQdHIobV93ZWJJREJEYXRhYmFzZS0+Y3JlYXRlVHJhbnNhY3Rp
b24oaWQsIG9iamVjdFN0b3JlSWRzLCBtb2RlKSk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94
eS5oCmluZGV4IDAzZDA1ZDkyYjE2ZTQ4YzI5ZTkzMzdiYWZlM2Y5MDAzNjJiZDk2MDkuLjE3MTRh
NTQ2OWVmZWMyNWFlYzhmMmJkYjc0NGFkZjM3YzljMzFhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaApAQCAtNDYsNyAr
NDYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90LCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9JbmNy
ZW1lbnQsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50
NjRfdCwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QsIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYsIHVuc2lnbmVkIHNob3J0IG1vZGUpOworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRy
YW5zYWN0aW9uKGludDY0X3QsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjpNb2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggNDAzYTMwYmVl
NTEwNzYzMDc2YWQxNmY2YTlkMzg0MmJiYTlmYmQ0MC4uMzBjZWJiNTljZWYzOTQzMDc0ODY5YjVl
N2UyNzEyMDY3NDUzOGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCRGF0YWJhc2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJEYXRhYmFzZUltcGwuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFdlYklEQlRyYW5zYWN0aW9u
KiBXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKGxvbmcgbG9uZyBpZCwgY29u
c3QgV2ViCiAgICAgVmVjdG9yPGludDY0X3Q+IG9iamVjdFN0b3JlSWRMaXN0KG9iamVjdFN0b3Jl
SWRzLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTdG9yZUlkcy5z
aXplKCk7ICsraSkKICAgICAgICAgb2JqZWN0U3RvcmVJZExpc3RbaV0gPSBvYmplY3RTdG9yZUlk
c1tpXTsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2Fj
dGlvbiA9IG1fZGF0YWJhc2VCYWNrZW5kLT5jcmVhdGVUcmFuc2FjdGlvbihpZCwgb2JqZWN0U3Rv
cmVJZExpc3QsIG1vZGUpOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IHRyYW5zYWN0aW9uID0gbV9kYXRhYmFzZUJhY2tlbmQtPmNyZWF0ZVRyYW5zYWN0aW9uKGlk
LCBvYmplY3RTdG9yZUlkTGlzdCwgc3RhdGljX2Nhc3Q8SURCVHJhbnNhY3Rpb246Ok1vZGU+KG1v
ZGUpKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1
cm4gbmV3IFdlYklEQlRyYW5zYWN0aW9uSW1wbCh0cmFuc2FjdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcApp
bmRleCAwZDI2MjI0NjY1MzgxNGE0N2RjOThmYThiM2M5ZmEwYjlhMjEyYmEzLi5iNDVmZmIzZTU3
NjY2ZjU4OTc4YzIxN2Q5YzgyZWEzODliZjA5YmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKQEAgLTE1Miw3
ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgeyByZXR1cm4gMDsgfQogICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpIHsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3Qs
IGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIHVuc2lnbmVkIHNob3J0IG1vZGUpIHsgcmV0dXJuIDA7
IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
PiBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBJREJU
cmFuc2FjdGlvbjo6TW9kZSkgeyByZXR1cm4gMDsgfQogCiAgICAgdmlydHVhbCB2b2lkIGNsb3Nl
KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KQogICAgIHsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmNGE1ZDA4
ZDczM2M3NmJmZDgwNmQ1ODA2MTJmYjE3OTk1NDJkZjk4Li5mNmIwNjU5ZDQ4ZWZjNzEyN2NlMjhl
NzdmMDQ5NzhjYzJjNzE5NWYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMTItMDQgIEpv
c2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEFs
bG93IG11bHRpcGxlIHRyYW5zYWN0aW9ucyB0byBydW4gaW4gcGFyYWxsZWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NTcwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IHRlc3QgZm9yIHBhcmFsbGVs
IHRyYW5zYWN0aW9ucywgdXBkYXRlIGV4aXN0aW5nIHRlc3RzIHRoYXQgcmVsaWVkIG9uIHNlcXVl
bnRpYWwgZXhlY3V0aW9uLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2Ut
Y2xvc2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
Y2xlYXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
cmVzb3VyY2VzL2NsZWFyLmpzOiBTcGxpdCB1cCB0cmFuc2FjdGlvbiBzdGVwcy4KKyAgICAgICAg
KGNsZWFyKToKKyAgICAgICAgKGNsZWFyZWQpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9kYXRhYmFzZS1jbG9zZS5qczogRG9uJ3QgbG9nIG9uIGluZGl2aWR1YWwgdHJh
bnNhY3Rpb24gY29tcGxldGlvbi4KKyAgICAgICAgKHRlc3RDbG9zZS50cmFuc2FjdGlvbkNvbXBs
ZXRlZCk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9u
LWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuanM6IEFkZGVkLgorICAgICAgICAocHJlcGFy
ZURhdGFiYXNlKToKKyAgICAgICAgKHJ1blBhcmFsbGVsVHJhbnNhY3Rpb25zLmRvVHJhbnNhY3Rp
b24xR2V0LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHJ1blBhcmFsbGVsVHJhbnNhY3Rp
b25zLmRvVHJhbnNhY3Rpb24yR2V0LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKG9uVHJh
bnNhY3Rpb25Db21wbGV0ZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tY29vcmRpbmF0aW9uLXdpdGhpbi1kYXRhYmFzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4t
ZGF0YWJhc2UuaHRtbDogQWRkZWQuCisKIDIwMTItMTItMDQgIEVtaWwgQSBFa2x1bmQgIDxlYWVA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgY2hyb21pdW0gZXhwZWN0YXRpb25z
IHVwZGF0ZSwgbWFyayB1bnNraXBwZWQgc3ZnIHRlc3RzIGFzIHNsb3cuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1jbG9zZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1jbG9zZS1leHBlY3RlZC50
eHQKaW5kZXggYTMwNzlmYTJlMDVlMTMzMGNmMGU4MjY5ODA3ODE1MDNkYWNhOWUwNi4uNjAyODFl
ZGI5ZWViMjM0MmMxZDYzMWQ1MDZhMTYyMDdhMTc2MjcyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtY2xvc2UtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWNsb3NlLWV4cGVjdGVkLnR4dApA
QCAtMzksMTEgKzM5LDkgQEAgaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKIAogdHJh
bnNhY3Rpb24gIzEgcmVxdWVzdCBzdWNjZXNzZnVsCiBQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQg
aXMgInZhbHVlMSIKLWF3YWl0aW5nX3RyYW5zYWN0aW9uX2NvdW50IC09IDEKIAogdHJhbnNhY3Rp
b24gIzIgcmVxdWVzdCBzdWNjZXNzZnVsCiBQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgInZh
bHVlMiIKLWF3YWl0aW5nX3RyYW5zYWN0aW9uX2NvdW50IC09IDEKIAogQWxsIHRyYW5zYWN0aW9u
cyBjb21wbGV0ZWQgLSBkYXRhYmFzZSBkZWxldGVzIHNob3VsZCBub3cgYmUgdW5ibG9ja2VkLgog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xl
YXItZXhwZWN0ZWQudHh0CmluZGV4IGVmYTBlMWE1ZDMzYjEzOTEwNzU0OTY3ZmQ4Y2RkY2ExM2Jj
ZGUyMjEuLjUwNWZlNzUzYTQxNTlhYmRjNDAyOWNkOGNlMTFlMmY5NDZmM2NkNzkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXItZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXItZXhw
ZWN0ZWQudHh0CkBAIC0xNCw3ICsxNCw4IEBAIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi50
cmFuc2FjdGlvbignZm9vJykub2JqZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7CiBQQVNTIEV4Y2Vw
dGlvbiB3YXMgdGhyb3duLgogUEFTUyBjb2RlIGlzIDAKIFBBU1MgZW5hbWUgaXMgJ1JlYWRPbmx5
RXJyb3InCi1kYi50cmFuc2FjdGlvbignZm9vJywgJ3JlYWR3cml0ZScpLm9iamVjdFN0b3JlKCdm
b28nKS5jbGVhcigpOworZGIudHJhbnNhY3Rpb24oJ2ZvbycsICdyZWFkd3JpdGUnKQordHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7CiByZXF1ZXN0ID0gZGIudHJhbnNhY3Rp
b24oJ2ZvbycpLm9iamVjdFN0b3JlKCdmb28nKS5vcGVuQ3Vyc29yKCk7CiBjdXJzb3IgPSByZXF1
ZXN0LnJlc3VsdDsKIFBBU1MgY3Vyc29yIGlzIG51bGwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2NsZWFyLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY2xlYXIuanMKaW5kZXggYzgy
ZmFmMjYxMGU0ZmQ0Y2IxMjg2NmY5NmZlNDZjYzFlNjVhNjc0Ni4uNzlmM2I3OGU0MjZhM2UzNTBi
MTJmMjJlZGJlYjQ4ODJlYjQ2M2MxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY2xlYXIuanMKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY2xlYXIuanMKQEAgLTI0LDcgKzI0LDE0
IEBAIGZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCiBmdW5jdGlvbiBjbGVhcigpCiB7CiAgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0b3Jl
KCdmb28nKS5jbGVhcigpOyIsICIwIiwgIidSZWFkT25seUVycm9yJyIpOwotICAgIGV2YWxBbmRM
b2coImRiLnRyYW5zYWN0aW9uKCdmb28nLCAncmVhZHdyaXRlJykub2JqZWN0U3RvcmUoJ2Zvbycp
LmNsZWFyKCk7Iik7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlv
bignZm9vJywgJ3JlYWR3cml0ZScpIik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7Iik7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IGNsZWFyZWQ7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworfQorCitmdW5jdGlvbiBjbGVhcmVkKCkKK3sKICAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJykub3Bl
bkN1cnNvcigpOyIpOwogICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXJlV2VDbGVhcllldDsKICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1jbG9zZS5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1jbG9z
ZS5qcwppbmRleCA2OTFlNTViY2YxZjFiNzgzZDVkYzhhNTdjNmVhNjQzZjE4M2RiMzU2Li40NmRi
YTMwZjViZGNiZTQxMjFiZjFlOGJmMjJmZWQwZDBlNDU5MmE2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YWJhc2UtY2xvc2UuanMKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLWNsb3NlLmpz
CkBAIC0zNSw3ICszNSw3IEBAIGZ1bmN0aW9uIHRlc3RDbG9zZSgpCiAgICAgZGVidWcoIlN0ZXAg
MjogV2FpdCBmb3IgYWxsIHRyYW5zYWN0aW9ucyBjcmVhdGVkIHVzaW5nIGNvbm5lY3Rpb24gdG8g
Y29tcGxldGUuIE9uY2UgdGhleSBhcmUgY29tcGxldGUsIGNvbm5lY3Rpb24gaXMgY2xvc2VkLiIp
OwogICAgIGV2YWxBbmRMb2coImF3YWl0aW5nX3RyYW5zYWN0aW9uX2NvdW50ID0gMiIpOwogICAg
IGZ1bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxldGVkKCkgewotICAgICAgICBldmFsQW5kTG9nKCJh
d2FpdGluZ190cmFuc2FjdGlvbl9jb3VudCAtPSAxIik7CisgICAgICAgIGF3YWl0aW5nX3RyYW5z
YWN0aW9uX2NvdW50IC09IDE7CiAKICAgICAgICAgaWYgKGF3YWl0aW5nX3RyYW5zYWN0aW9uX2Nv
dW50ID09IDApIHsKICAgICAgICAgICAgIGRlYnVnKCIiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jb29yZGluYXRpb24t
d2l0aGluLWRhdGFiYXNlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDZmMDM1OTJhZDRiYWNjM2M4ZDcxM2UxYzJlNmU4MzJmZGZmOGEyYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlv
bi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmpzCkBAIC0wLDAgKzEsNzcgQEAKK2lmICh0
aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5q
cycpOworfQorCitkZXNjcmlwdGlvbigiQ2hlY2sgdGhhdCByZWFkLW9ubHkgdHJhbnNhY3Rpb25z
IHdpdGhpbiBhIGRhdGFiYXNlIGNhbiBydW4gaW4gcGFyYWxsZWwuIik7CisKK2luZGV4ZWREQlRl
c3QocHJlcGFyZURhdGFiYXNlLCBydW5QYXJhbGxlbFRyYW5zYWN0aW9ucyk7CisKK2Z1bmN0aW9u
IHByZXBhcmVEYXRhYmFzZShldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUu
cHV0KCd2YWx1ZScsICdrZXknKSIpOworfQorCitmdW5jdGlvbiBydW5QYXJhbGxlbFRyYW5zYWN0
aW9ucyhldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZXZhbEFuZExvZygidHJh
bnNhY3Rpb24xID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWRvbmx5JykiKTsKKyAgICB0
cmFuc2FjdGlvbjEub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5z
YWN0aW9uMS5vbmNvbXBsZXRlID0gb25UcmFuc2FjdGlvbkNvbXBsZXRlOworICAgIGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uMiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkb25seScpIik7
CisgICAgdHJhbnNhY3Rpb24xLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAg
ICB0cmFuc2FjdGlvbjIub25jb21wbGV0ZSA9IG9uVHJhbnNhY3Rpb25Db21wbGV0ZTsKKworICAg
IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMUdldFN1Y2Nlc3MgPSBmYWxzZSIpOworICAgIGV2YWxB
bmRMb2coInRyYW5zYWN0aW9uMkdldFN1Y2Nlc3MgPSBmYWxzZSIpOworCisgICAgZGVidWcoIktl
ZXAgYm90aCB0cmFuc2FjdGlvbnMgYWxpdmUgdW50aWwgZWFjaCBoYXMgcmVwb3J0ZWQgYXQgbGVh
c3Qgb25lIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uIik7CisKKyAgICBmdW5jdGlvbiBkb1RyYW5zYWN0
aW9uMUdldCgpIHsKKyAgICAgICAgLy8gTk9URTogTm8gbG9nZ2luZyBzaW5jZSBleGVjdXRpb24g
b3JkZXIgaXMgbm90IGRldGVybWluaXN0aWMuCisgICAgICAgIHJlcXVlc3QgPSB0cmFuc2FjdGlv
bjEub2JqZWN0U3RvcmUoJ3N0b3JlJykuZ2V0KCdrZXknKTsKKyAgICAgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0cmFuc2FjdGlvbjFHZXRTdWNjZXNzID0gdHJ1
ZTsKKyAgICAgICAgICAgIGlmICghdHJhbnNhY3Rpb24yR2V0U3VjY2VzcykKKyAgICAgICAgICAg
ICAgICBkb1RyYW5zYWN0aW9uMUdldCgpOworICAgICAgICB9OworICAgIH0KKworICAgIGZ1bmN0
aW9uIGRvVHJhbnNhY3Rpb24yR2V0KCkgeworICAgICAgICAvLyBOT1RFOiBObyBsb2dnaW5nIHNp
bmNlIGV4ZWN1dGlvbiBvcmRlciBpcyBub3QgZGV0ZXJtaW5pc3RpYy4KKyAgICAgICAgcmVxdWVz
dCA9IHRyYW5zYWN0aW9uMi5vYmplY3RTdG9yZSgnc3RvcmUnKS5nZXQoJ2tleScpOworICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRyYW5zYWN0aW9uMkdl
dFN1Y2Nlc3MgPSB0cnVlOworICAgICAgICAgICAgaWYgKCF0cmFuc2FjdGlvbjFHZXRTdWNjZXNz
KQorICAgICAgICAgICAgICAgIGRvVHJhbnNhY3Rpb24yR2V0KCk7CisgICAgICAgIH07CisgICAg
fQorCisgICAgZG9UcmFuc2FjdGlvbjFHZXQoKTsKKyAgICBkb1RyYW5zYWN0aW9uMkdldCgpOwor
fQorCit0cmFuc2FjdGlvbkNvbXBsZXRpb25Db3VudCA9IDA7CitmdW5jdGlvbiBvblRyYW5zYWN0
aW9uQ29tcGxldGUoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7CisKKyAgICArK3RyYW5zYWN0
aW9uQ29tcGxldGlvbkNvdW50OworICAgIGlmICh0cmFuc2FjdGlvbkNvbXBsZXRpb25Db3VudCA8
IDIpIHsKKyAgICAgICAgZGVidWcoImZpcnN0IHRyYW5zYWN0aW9uIGNvbXBsZXRlLCBzdGlsbCB3
YWl0aW5nLi4uIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZVRydWUo
InRyYW5zYWN0aW9uMUdldFN1Y2Nlc3MiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zYWN0aW9u
MkdldFN1Y2Nlc3MiKTsKKworICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLXdp
dGhpbi1kYXRhYmFzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZmM2ZmYzk4MDdiZjgwY2U3
YjljNWEwYjk5YTk5YzgyNmY0MTJiMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2Ut
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzYgQEAKK0NoZWNrIHRoYXQgcmVhZC1vbmx5IHRyYW5z
YWN0aW9ucyB3aXRoaW4gYSBkYXRhYmFzZSBjYW4gcnVuIGluIHBhcmFsbGVsLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2Vs
Zi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWRE
QiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2RibmFtZSA9ICJ0cmFuc2FjdGlvbi1jb29yZGluYXRp
b24td2l0aGluLWRhdGFiYXNlLmh0bWwiCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1l
KQoraW5kZXhlZERCLm9wZW4oZGJuYW1lKQorCitwcmVwYXJlRGF0YWJhc2UoKToKK2RiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdAorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKQor
c3RvcmUucHV0KCd2YWx1ZScsICdrZXknKQorCitydW5QYXJhbGxlbFRyYW5zYWN0aW9ucygpOgor
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0CisKK3RyYW5zYWN0aW9uMSA9IGRiLnRyYW5zYWN0aW9u
KCdzdG9yZScsICdyZWFkb25seScpCit0cmFuc2FjdGlvbjIgPSBkYi50cmFuc2FjdGlvbignc3Rv
cmUnLCAncmVhZG9ubHknKQordHJhbnNhY3Rpb24xR2V0U3VjY2VzcyA9IGZhbHNlCit0cmFuc2Fj
dGlvbjJHZXRTdWNjZXNzID0gZmFsc2UKK0tlZXAgYm90aCB0cmFuc2FjdGlvbnMgYWxpdmUgdW50
aWwgZWFjaCBoYXMgcmVwb3J0ZWQgYXQgbGVhc3Qgb25lIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uCisK
K29uVHJhbnNhY3Rpb25Db21wbGV0ZSgpOgorZmlyc3QgdHJhbnNhY3Rpb24gY29tcGxldGUsIHN0
aWxsIHdhaXRpbmcuLi4KKworb25UcmFuc2FjdGlvbkNvbXBsZXRlKCk6CitQQVNTIHRyYW5zYWN0
aW9uMUdldFN1Y2Nlc3MgaXMgdHJ1ZQorUEFTUyB0cmFuc2FjdGlvbjJHZXRTdWNjZXNzIGlzIHRy
dWUKK2RiLmNsb3NlKCkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFu
c2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGYwYzViN2Q0NTkxMGE0NTIxMzA5YzMzZmY0OWU0ZTZjNTJiN2Jm
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5z
YWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuaHRtbApAQCAtMCwwICsxLDExIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177763</attachid>
            <date>2012-12-05 08:42:31 -0800</date>
            <delta_ts>2012-12-05 14:30:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97570-20121205083956.patch</filename>
            <type>text/plain</type>
            <size>28551</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFmZDQ5ZjNjODBhNDgz
N2I4MmI0MzVjZGE5MWY1ZDM0OWJkZWUyMy4uYjA2MWFjZjhiMTU1YjMxYWQ0NDQxNTVmYjJkZDg2
ZjBlMTY0ZTRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTEyLTA0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBBbGxv
dyBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgdG8gcnVuIGluIHBhcmFsbGVsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU3MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBzcGVjIGxvZ2ljIGZv
ciBhbGxvd2luZyByZWFkLW9ubHkgdHJhbnNhY3Rpb25zLCBhbmQgcmVhZC13cml0ZSB0cmFuc2Fj
dGlvbnMKKyAgICAgICAgd2l0aCBub24tb3ZlcmxhcHBpbmcgc2NvcGVzLCB0byBydW4gaW4gcGFy
YWxsZWwuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29v
cmRpbmF0aW9uLWFjcm9zcy1kYXRhYmFzZXMuaHRtbAorICAgICAgICAgICAgICBzdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmh0bWwKKyAg
ICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZHdyaXRlLWV4Y2x1
c2l2ZS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcDogVXNlIElEQlRyYW5zYWN0aW9uOjpNb2RlIGVudW0KKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6IERpdHRvLgorICAg
ICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6IERpdHRvLgorICAgICAgICAoSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDogQ29udmVydCBzY29wZSBhcyBhIEhhc2hTZXQgZm9y
CisgICAgICAgIGZhc3QgaW50ZXJzZWN0aW5nLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaDoKKyAgICAgICAgKElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6bW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjpzY29wZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5jcHA6IFNwZWMgbG9naWMgZ29lcyBoZXJlLgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6cHJvY2Vzc1N0YXJ0ZWRUcmFuc2FjdGlv
bnMpOiBFeHRlbmQgdGhpcworICAgICAgICBtZXRob2QgdG8gdGVzdCBhbGwgcGxhdXNpYmx5IHJ1
bm5hYmxlIHRyYW5zYWN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6Y2FuUnVuVHJhbnNhY3Rpb24pOiBUZXN0IHRv
IHNlZSBpZiBvbmUKKyAgICAgICAgcGFydGljdWxhciB0cmFuc2FjdGlvbiBjYW4gYmUgcnVuLgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6ZG9TY29wZXNPdmVy
bGFwKTogRG8gYSBxdWljayBpbnRlcnNlY3Rpb24KKyAgICAgICAgdGVzdCBiZXR3ZWVuIHRyYW5z
YWN0aW9uIHNjb3Blcy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmg6CisgICAgICAgIChJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKToKKwog
MjAxMi0xMi0wNSAgTWljaGFlbCBQcnVldHQgIDxtaWNoYWVsQDY4ay5vcmc+CiAKICAgICAgICAg
SW5kZXhlZERCOiBJbXBsZW1lbnQgSW5kZXhlZERCIGJpbmRpbmdzIGZvciBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggNjM0NDUwZDRhZDJlYzU4N2I1NDNiNDU4ZTI0ZTFhMTRkMjIy
NDdlOC4uM2MxMTdhNWNjOWUzMTcyYjEyNTE4MzhmY2E5MzZmYTk3ZTdiMjAxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0xMi0wNCAgSm9zaHVhIEJl
bGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogQWxsb3cgbXVs
dGlwbGUgdHJhbnNhY3Rpb25zIHRvIHJ1biBpbiBwYXJhbGxlbAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc1NzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXAgdG8gSURCVHJhbnNhY3Rpb246Ok1vZGUg
ZW51bSBhcyBhcHByb3ByaWF0ZS4KKworICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVh
dGVUcmFuc2FjdGlvbik6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5Lmg6
CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL1dlYklE
QkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6
Y3JlYXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAgKiB0ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRU
ZXN0LmNwcDoKKwogMjAxMi0xMi0wNSAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVkIERFUFMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuY3BwCmluZGV4IDQ2Mzg4Nzc2NGI1N2RlMzZkNWQ5ZDE3YmRjM2RmOTQ4ZjRhYzU5NWQu
LjE3MDc0ODE1MTk1MWM3NjE0Y2I5YjA5NzVlY2VjOWVkMWRjMGIwMzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuY3BwCkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
Ojpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVUcmFu
c2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2Jq
ZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpCitQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlVHJhbnNh
Y3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVj
dFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlKQogewogICAgIFJlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6OmNyZWF0ZSh0cmFuc2FjdGlvbklkLCBvYmplY3RTdG9yZUlkcywgbW9kZSwgdGhpcyk7
CiAgICAgbV90cmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9uLmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuaAppbmRleCBkZjBiYTJkYWI0MzQ4YWRjNzY3OGQ0ZDcwM2JhYjA5MGU4YTZiNmMyLi5hNjU0
MmM2ZGJiMDJhZmQ2OTJmM2JiMGZiMGUzMGRmYTI1N2MyODc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5o
CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElEQkRhdGFiYXNlTWV0YWRh
dGEgbWV0YWRhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGlkLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQg
c2hvcnQgbW9kZSk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4gY3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklkLCBjb25z
dCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6TW9kZSk7
CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
KTsKIAogICAgIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3Rv
cmUoaW50NjRfdCBpZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDg1MDA2MmMy
OTE4NzMyYmEzNGE5MjdjN2IwN2U5OTVlYTkwMzY0ZGYuLmUzZThkZjFiMWIzY2QyODJkNjhkNGI4
YzhmYmEzYWFkYzk1ZGJlMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCkBAIC0yNiw2
ICsyNiw3IEBACiAjaWZuZGVmIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZV9oCiAjZGVmaW5l
IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZV9oCiAKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlv
bi5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNTUsNyArNTYsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50
ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZU9iamVjdFN0b3JlKGludDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4
Y2VwdGlvbkNvZGUmKSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4gY3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklk
LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9ydCBt
b2RlKSA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4gY3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklkLCBjb25zdCBW
ZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6TW9kZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tz
PikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAppbmRleCBjNTQyZmRkNzkw
ODk5ZWVhYmExNDQxMjRlOGUzMmU5MzQzZTcwNGUwLi4yNmU5NjQ2NWFmODUxNmU5ODVlYWNkNDJk
ODFjOGU4ODc3OWJiZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcApAQCAtMzksMTIg
KzM5LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsPiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUoaW50NjRf
dCBpZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hv
cnQgbW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UpCitQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0
ZShpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJREJU
cmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwoaWQs
IG9iamVjdFN0b3JlSWRzLCBtb2RlLCBkYXRhYmFzZSkpOworICAgIEhhc2hTZXQ8aW50NjRfdD4g
b2JqZWN0U3RvcmVIYXNoU2V0OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U3Rv
cmVJZHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG9iamVjdFN0b3JlSGFzaFNldC5hZGQob2JqZWN0
U3RvcmVJZHNbaV0pOworCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsKGlkLCBvYmplY3RTdG9yZUhhc2hTZXQsIG1vZGUsIGRhdGFiYXNlKSk7CiB9CiAK
LUlEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwoaW50
NjRfdCBpZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQg
c2hvcnQgbW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UpCitJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGludDY0X3QgaWQsIGNv
bnN0IEhhc2hTZXQ8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6TW9k
ZSBtb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSkKICAgICA6IG1faWQoaWQp
CiAgICAgLCBtX29iamVjdFN0b3JlSWRzKG9iamVjdFN0b3JlSWRzKQogICAgICwgbV9tb2RlKG1v
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKaW5kZXggZDJhOTU4NTA2MDhkYTg5ZjlkMTc0NTM1
ZjNiYjFhMjhjOGNiMzJhOS4uNjRkNDMyNmM2NjlhMmNkZTNiOWRkNDIzNmZkMGM5ODAwYmJjZmE3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVk
ZSAiSURCQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJvci5oIgorI2lu
Y2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCkBAIC00NCw3ICs0NSw3IEBAIGNsYXNzIElE
QkRhdGFiYXNlQmFja2VuZEltcGw7CiAKIGNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwg
OiBwdWJsaWMgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBjcmVhdGUoaW50NjRf
dCB0cmFuc2FjdGlvbklkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCB1bnNpZ25lZCBzaG9ydCBt
b2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gY3JlYXRlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiwgSURCVHJhbnNhY3Rpb246Ok1vZGUsIElEQkRhdGFiYXNlQmFj
a2VuZEltcGwqKTsKICAgICBzdGF0aWMgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogZnJvbShJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIGludGVyZmFjZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKj4oaW50ZXJmYWNl
KTsKQEAgLTU4LDcgKzU5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhYm9ydChQYXNzUmVmUHRy
PElEQkRhdGFiYXNlRXJyb3I+KTsKICAgICB2b2lkIHJ1bigpOwotICAgIHVuc2lnbmVkIHNob3J0
IG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KKyAgICBJREJUcmFuc2FjdGlvbjo6TW9k
ZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CisgICAgY29uc3QgSGFzaFNldDxpbnQ2
NF90PiYgc2NvcGUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFN0b3JlSWRzOyB9CiAgICAgYm9v
bCBpc0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBGaW5pc2hlZDsgfQogICAg
IGJvb2wgc2NoZWR1bGVUYXNrKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4gdGFzaywgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBhYm9ydFRh
c2sgPSBudWxscHRyKSB7IHJldHVybiBzY2hlZHVsZVRhc2soTm9ybWFsVGFzaywgdGFzaywgYWJv
cnRUYXNrKTsgfQogICAgIGJvb2wgc2NoZWR1bGVUYXNrKFRhc2tUeXBlLCBQYXNzT3duUHRyPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+IGFib3J0VGFzayA9IG51bGxwdHIpOwpAQCAtNzAsNyArNzIsNyBAQCBwdWJs
aWM6CiAgICAgaW50NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KIAogcHJpdmF0ZToK
LSAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGludDY0X3QgaWQsIGNvbnN0IFZlY3Rvcjxp
bnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIElEQkRhdGFiYXNl
QmFja2VuZEltcGwqKTsKKyAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGludDY0X3QgaWQs
IGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6
TW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCopOwogCiAgICAgZW51bSBTdGF0ZSB7CiAgICAg
ICAgIFVudXNlZCwgLy8gQ3JlYXRlZCwgYnV0IG5vIHRhc2tzIHlldC4KQEAgLTg5LDggKzkxLDgg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNsb3NlT3BlbkN1cnNvcnMoKTsKIAogICAgIGNvbnN0IGlu
dDY0X3QgbV9pZDsKLSAgICBjb25zdCBWZWN0b3I8aW50NjRfdD4gbV9vYmplY3RTdG9yZUlkczsK
LSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBtX21vZGU7CisgICAgY29uc3QgSGFzaFNldDxpbnQ2
NF90PiBtX29iamVjdFN0b3JlSWRzOworICAgIGNvbnN0IElEQlRyYW5zYWN0aW9uOjpNb2RlIG1f
bW9kZTsKIAogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgYm9vbCBtX2NvbW1pdFBlbmRpbmc7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCmluZGV4IDZkYjBkNzBiZjI1OGM2Y2VkZGU4ZDkyZGQ5
YzliNjA1OWE0MTQ2ZjkuLjIxYmFhMjA5ZGM0ZTdhNThiMWQ1NTQ2YTY5MGMzMmU4NGIwZDAzYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNs
dWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgogCkBAIC05NSwxNyArOTYsNTUgQEAgYm9vbCBJREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yOjppc0FjdGl2ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikK
IAogdm9pZCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpwcm9jZXNzU3RhcnRlZFRyYW5zYWN0
aW9ucygpCiB7Ci0gICAgLy8gRklYTUU6IEZvciBub3csIHdlIG9ubHkgYWxsb3cgb25lIHRyYW5z
YWN0aW9uIHRvIHJ1biBhdCBhIHRpbWUuCi0gICAgaWYgKCFtX3J1bm5pbmdUcmFuc2FjdGlvbnMu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAobV9zdGFydGVkVHJhbnNhY3Rp
b25zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbCogdHJhbnNhY3Rpb24gPSAqbV9zdGFydGVkVHJhbnNhY3Rpb25zLmJlZ2luKCk7Ci0g
ICAgbV9zdGFydGVkVHJhbnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbik7Ci0gICAgbV9ydW5u
aW5nVHJhbnNhY3Rpb25zLmFkZCh0cmFuc2FjdGlvbik7Ci0gICAgdHJhbnNhY3Rpb24tPnJ1bigp
OworICAgIEFTU0VSVChtX3J1bm5pbmdUcmFuc2FjdGlvbnMuaXNFbXB0eSgpIHx8ICgqbV9ydW5u
aW5nVHJhbnNhY3Rpb25zLmJlZ2luKCkpLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlZFUlNJ
T05fQ0hBTkdFKTsKKworICAgIExpc3RIYXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwq
Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKTsKKyAg
ICB3aGlsZSAoaXQgIT0gbV9zdGFydGVkVHJhbnNhY3Rpb25zLmVuZCgpKSB7CisgICAgICAgIElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gKml0OworICAgICAgICArK2l0
OworICAgICAgICBpZiAoY2FuUnVuVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pKSB7CisgICAgICAg
ICAgICBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uKTsKKyAgICAgICAg
ICAgIG1fcnVubmluZ1RyYW5zYWN0aW9ucy5hZGQodHJhbnNhY3Rpb24pOworICAgICAgICAgICAg
dHJhbnNhY3Rpb24tPnJ1bigpOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBk
b1Njb3Blc092ZXJsYXAoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24xLCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbjIpCit7CisgICAgY29uc3QgSGFz
aFNldDxpbnQ2NF90PiYgc2NvcGUxID0gdHJhbnNhY3Rpb24xLT5zY29wZSgpOworICAgIGNvbnN0
IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlMiA9IHRyYW5zYWN0aW9uMi0+c2NvcGUoKTsKKworICAg
IGZvciAoSGFzaFNldDxpbnQ2NF90ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2NvcGUxLmJlZ2lu
KCk7IGl0ICE9IHNjb3BlMS5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoc2NvcGUyLmNvbnRh
aW5zKCppdCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmNhblJ1blRyYW5zYWN0
aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQoreworICAgIHN3aXRj
aCAodHJhbnNhY3Rpb24tPm1vZGUoKSkgeworICAgIGNhc2UgSURCVHJhbnNhY3Rpb246OlZFUlNJ
T05fQ0hBTkdFOgorICAgICAgICBBU1NFUlQobV9zdGFydGVkVHJhbnNhY3Rpb25zLnNpemUoKSA9
PSAxKTsKKyAgICAgICAgQVNTRVJUKG1fcnVubmluZ1RyYW5zYWN0aW9ucy5pc0VtcHR5KCkpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgSURCVHJhbnNhY3Rpb246OlJFQURfT05M
WToKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpSRUFE
X1dSSVRFOgorICAgICAgICBmb3IgKEhhc2hTZXQ8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+
Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcnVubmluZ1RyYW5zYWN0aW9ucy5iZWdpbigpOyBpdCAh
PSBtX3J1bm5pbmdUcmFuc2FjdGlvbnMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIGlmICgo
Kml0KS0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX1dSSVRFICYmIGRvU2NvcGVzT3Zl
cmxhcCh0cmFuc2FjdGlvbiwgKml0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
aAppbmRleCA4Mjk5ODUzMjIwY2NhYTY0NTRjZjY0MmU4MDU5ODQwODI2MzM0YmYzLi5iZDdkMWUx
OGNkYTNkNzUwZGViZWM5ZGFmNTVlNzA4Mzg3ZTYxZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRv
ci5oCkBAIC01OCw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvcigpOwogCiAgICAgdm9pZCBwcm9jZXNzU3RhcnRlZFRyYW5zYWN0aW9ucygpOworICAgIGJv
b2wgY2FuUnVuVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCopOwogCiAgICAg
Ly8gVGhpcyBpcyBqdXN0IGFuIGVmZmljaWVudCB3YXkgdG8ga2VlcCByZWZlcmVuY2VzIHRvIGFs
bCB0cmFuc2FjdGlvbnMuCiAgICAgSGFzaE1hcDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiwg
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+ID4gbV90cmFuc2FjdGlvbnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94
eS5jcHAKaW5kZXggZTljODBkMGNmNjI5ZWMyNDc3YWRhMTNiODhmNDQ3ZmE5NTkyZGE0OC4uOTI1
NDAxNmZjZjI0ODMxNmY4M2E5MDU3NTJmOTEyMTJiODY4ZmRiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcApAQCAt
ODUsNyArODUsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpkZWxldGVPYmplY3RT
dG9yZShpbnQ2NF90IG9iamVjdFN0b3JlSWQsIElEQlRyYW5zYQogICAgIG1fd2ViSURCRGF0YWJh
c2UtPmRlbGV0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlSWQsICp0cmFuc2FjdGlvblByb3h5LT5n
ZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlVHJhbnNh
Y3Rpb24oaW50NjRfdCBpZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywg
dW5zaWduZWQgc2hvcnQgbW9kZSkKK1Bhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlVHJhbnNhY3Rpb24oaW50NjRf
dCBpZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rp
b246Ok1vZGUgbW9kZSkKIHsKICAgICBPd25QdHI8V2ViSURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0
aW9uID0gYWRvcHRQdHIobV93ZWJJREJEYXRhYmFzZS0+Y3JlYXRlVHJhbnNhY3Rpb24oaWQsIG9i
amVjdFN0b3JlSWRzLCBtb2RlKSk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCmluZGV4
IDAzZDA1ZDkyYjE2ZTQ4YzI5ZTkzMzdiYWZlM2Y5MDAzNjJiZDk2MDkuLjE3MTRhNTQ2OWVmZWMy
NWFlYzhmMmJkYjc0NGFkZjM3YzljMzFhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaApAQCAtNDYsNyArNDYsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90LCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSYpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QsIGNvbnN0IFZlY3Rvcjxp
bnQ2NF90PiYsIHVuc2lnbmVkIHNob3J0IG1vZGUpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9u
KGludDY0X3QsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpNb2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJE
YXRhYmFzZUNhbGxiYWNrcz4pOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggNDAzYTMwYmVlNTEwNzYzMDc2
YWQxNmY2YTlkMzg0MmJiYTlmYmQ0MC4uMzBjZWJiNTljZWYzOTQzMDc0ODY5YjVlN2UyNzEyMDY3
NDUzOGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0
YWJhc2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRh
YmFzZUltcGwuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFdlYklEQlRyYW5zYWN0aW9uKiBXZWJJREJE
YXRhYmFzZUltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViCiAg
ICAgVmVjdG9yPGludDY0X3Q+IG9iamVjdFN0b3JlSWRMaXN0KG9iamVjdFN0b3JlSWRzLnNpemUo
KSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTdG9yZUlkcy5zaXplKCk7ICsr
aSkKICAgICAgICAgb2JqZWN0U3RvcmVJZExpc3RbaV0gPSBvYmplY3RTdG9yZUlkc1tpXTsKLSAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbiA9IG1f
ZGF0YWJhc2VCYWNrZW5kLT5jcmVhdGVUcmFuc2FjdGlvbihpZCwgb2JqZWN0U3RvcmVJZExpc3Qs
IG1vZGUpOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5z
YWN0aW9uID0gbV9kYXRhYmFzZUJhY2tlbmQtPmNyZWF0ZVRyYW5zYWN0aW9uKGlkLCBvYmplY3RT
dG9yZUlkTGlzdCwgc3RhdGljX2Nhc3Q8SURCVHJhbnNhY3Rpb246Ok1vZGU+KG1vZGUpKTsKICAg
ICBpZiAoIXRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbmV3IFdl
YklEQlRyYW5zYWN0aW9uSW1wbCh0cmFuc2FjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcAppbmRleCAwZDI2
MjI0NjY1MzgxNGE0N2RjOThmYThiM2M5ZmEwYjlhMjEyYmEzLi5iNDVmZmIzZTU3NjY2ZjU4OTc4
YzIxN2Q5YzgyZWEzODliZjA5YmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgRXhjZXB0aW9uQ29kZSYpIHsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QsIGNvbnN0IFZl
Y3RvcjxpbnQ2NF90PiYsIHVuc2lnbmVkIHNob3J0IG1vZGUpIHsgcmV0dXJuIDA7IH0KKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVU
cmFuc2FjdGlvbihpbnQ2NF90LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBJREJUcmFuc2FjdGlv
bjo6TW9kZSkgeyByZXR1cm4gMDsgfQogCiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KQogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5OGIzZWViOWFiMjVhNDAx
Y2YyYTYxMmY1OGJiOGZjYzY4N2FhYjQ0Li5hMWRjZjVhZWY3MTcwZGQ3YTYwODRiOTE4MzA0NDNl
ZjU0NTA2NjljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMTItMDQgIEpvc2h1YSBCZWxs
ICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEFsbG93IG11bHRp
cGxlIHRyYW5zYWN0aW9ucyB0byBydW4gaW4gcGFyYWxsZWwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IHRlc3QgZm9yIHBhcmFsbGVsIHRyYW5zYWN0
aW9ucywgdXBkYXRlIGV4aXN0aW5nIHRlc3RzIHRoYXQgcmVsaWVkIG9uIHNlcXVlbnRpYWwgZXhl
Y3V0aW9uLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtY2xvc2UtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXItZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2Vz
L2NsZWFyLmpzOiBTcGxpdCB1cCB0cmFuc2FjdGlvbiBzdGVwcy4KKyAgICAgICAgKGNsZWFyKToK
KyAgICAgICAgKGNsZWFyZWQpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9kYXRhYmFzZS1jbG9zZS5qczogRG9uJ3QgbG9nIG9uIGluZGl2aWR1YWwgdHJhbnNhY3Rpb24g
Y29tcGxldGlvbi4KKyAgICAgICAgKHRlc3RDbG9zZS50cmFuc2FjdGlvbkNvbXBsZXRlZCk6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNvb3JkaW5h
dGlvbi13aXRoaW4tZGF0YWJhc2UuanM6IEFkZGVkLgorICAgICAgICAocHJlcGFyZURhdGFiYXNl
KToKKyAgICAgICAgKHJ1blBhcmFsbGVsVHJhbnNhY3Rpb25zLmRvVHJhbnNhY3Rpb24xR2V0LnJl
cXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHJ1blBhcmFsbGVsVHJhbnNhY3Rpb25zLmRvVHJh
bnNhY3Rpb24yR2V0LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKG9uVHJhbnNhY3Rpb25D
b21wbGV0ZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRp
bmF0aW9uLXdpdGhpbi1kYXRhYmFzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2Uu
aHRtbDogQWRkZWQuCisKIDIwMTItMTItMDUgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBVbnJldmlld2VkIGdhcmRlbmluZy4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWNsb3Nl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWNs
b3NlLWV4cGVjdGVkLnR4dAppbmRleCBhMzA3OWZhMmUwNWUxMzMwY2YwZTgyNjk4MDc4MTUwM2Rh
Y2E5ZTA2Li42MDI4MWVkYjllZWIyMzQyYzFkNjMxZDUwNmExNjIwN2ExNzYyNzI3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1jbG9zZS1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtY2xvc2Ut
ZXhwZWN0ZWQudHh0CkBAIC0zOSwxMSArMzksOSBAQCBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2Uo
ZGJuYW1lKQogCiB0cmFuc2FjdGlvbiAjMSByZXF1ZXN0IHN1Y2Nlc3NmdWwKIFBBU1MgZXZlbnQu
dGFyZ2V0LnJlc3VsdCBpcyAidmFsdWUxIgotYXdhaXRpbmdfdHJhbnNhY3Rpb25fY291bnQgLT0g
MQogCiB0cmFuc2FjdGlvbiAjMiByZXF1ZXN0IHN1Y2Nlc3NmdWwKIFBBU1MgZXZlbnQudGFyZ2V0
LnJlc3VsdCBpcyAidmFsdWUyIgotYXdhaXRpbmdfdHJhbnNhY3Rpb25fY291bnQgLT0gMQogCiBB
bGwgdHJhbnNhY3Rpb25zIGNvbXBsZXRlZCAtIGRhdGFiYXNlIGRlbGV0ZXMgc2hvdWxkIG5vdyBi
ZSB1bmJsb2NrZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvY2xlYXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9jbGVhci1leHBlY3RlZC50eHQKaW5kZXggZWZhMGUxYTVkMzNiMTM5MTA3NTQ5
NjdmZDhjZGRjYTEzYmNkZTIyMS4uNTA1ZmU3NTNhNDE1OWFiZGM0MDI5Y2Q4Y2UxMWUyZjk0NmYz
Y2Q3OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9j
bGVhci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9jbGVhci1leHBlY3RlZC50eHQKQEAgLTE0LDcgKzE0LDggQEAgRXhwZWN0aW5nIGV4Y2Vw
dGlvbiBmcm9tIGRiLnRyYW5zYWN0aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJykuY2xlYXIo
KTsKIFBBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCiBQQVNTIGNvZGUgaXMgMAogUEFTUyBlbmFt
ZSBpcyAnUmVhZE9ubHlFcnJvcicKLWRiLnRyYW5zYWN0aW9uKCdmb28nLCAncmVhZHdyaXRlJyku
b2JqZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7CitkYi50cmFuc2FjdGlvbignZm9vJywgJ3JlYWR3
cml0ZScpCit0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnZm9vJykuY2xlYXIoKTsKIHJlcXVlc3Qg
PSBkYi50cmFuc2FjdGlvbignZm9vJykub2JqZWN0U3RvcmUoJ2ZvbycpLm9wZW5DdXJzb3IoKTsK
IGN1cnNvciA9IHJlcXVlc3QucmVzdWx0OwogUEFTUyBjdXJzb3IgaXMgbnVsbApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY2xlYXIu
anMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jbGVh
ci5qcwppbmRleCBjODJmYWYyNjEwZTRmZDRjYjEyODY2Zjk2ZmU0NmNjMWU2NWE2NzQ2Li43OWYz
Yjc4ZTQyNmEzZTM1MGIxMmYyMmVkYmViNDg4MmViNDYzYzFlIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jbGVhci5qcworKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jbGVhci5qcwpA
QCAtMjQsNyArMjQsMTQgQEAgZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKIGZ1bmN0aW9uIGNs
ZWFyKCkKIHsKICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbignZm9v
Jykub2JqZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7IiwgIjAiLCAiJ1JlYWRPbmx5RXJyb3InIik7
Ci0gICAgZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oJ2ZvbycsICdyZWFkd3JpdGUnKS5vYmpl
Y3RTdG9yZSgnZm9vJykuY2xlYXIoKTsiKTsKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2co
ImRiLnRyYW5zYWN0aW9uKCdmb28nLCAncmVhZHdyaXRlJykiKTsKKyAgICBldmFsQW5kTG9nKCJ0
cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnZm9vJykuY2xlYXIoKTsiKTsKKyAgICB0cmFuc2FjdGlv
bi5vbmNvbXBsZXRlID0gY2xlYXJlZDsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFyZWQoKQorewogICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0
b3JlKCdmb28nKS5vcGVuQ3Vyc29yKCk7Iik7CiAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhcmVX
ZUNsZWFyWWV0OwogICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2Rh
dGFiYXNlLWNsb3NlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2RhdGFiYXNlLWNsb3NlLmpzCmluZGV4IDY5MWU1NWJjZjFmMWI3ODNkNWRjOGE1N2M2ZWE2NDNm
MTgzZGIzNTYuLjQ2ZGJhMzBmNWJkY2JlNDEyMWJmMWU4YmYyMmZlZDBkMGU0NTkyYTYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1j
bG9zZS5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0
YWJhc2UtY2xvc2UuanMKQEAgLTM1LDcgKzM1LDcgQEAgZnVuY3Rpb24gdGVzdENsb3NlKCkKICAg
ICBkZWJ1ZygiU3RlcCAyOiBXYWl0IGZvciBhbGwgdHJhbnNhY3Rpb25zIGNyZWF0ZWQgdXNpbmcg
Y29ubmVjdGlvbiB0byBjb21wbGV0ZS4gT25jZSB0aGV5IGFyZSBjb21wbGV0ZSwgY29ubmVjdGlv
biBpcyBjbG9zZWQuIik7CiAgICAgZXZhbEFuZExvZygiYXdhaXRpbmdfdHJhbnNhY3Rpb25fY291
bnQgPSAyIik7CiAgICAgZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZWQoKSB7Ci0gICAgICAg
IGV2YWxBbmRMb2coImF3YWl0aW5nX3RyYW5zYWN0aW9uX2NvdW50IC09IDEiKTsKKyAgICAgICAg
YXdhaXRpbmdfdHJhbnNhY3Rpb25fY291bnQgLT0gMTsKIAogICAgICAgICBpZiAoYXdhaXRpbmdf
dHJhbnNhY3Rpb25fY291bnQgPT0gMCkgewogICAgICAgICAgICAgZGVidWcoIiIpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9u
LWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLXdpdGhpbi1kYXRhYmFz
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kNmYwMzU5MmFkNGJhY2MzYzhkNzEzZTFjMmU2ZTgzMmZkZmY4YTJh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuanMKQEAgLTAsMCAr
MSw3NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2Ny
aXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJDaGVjayB0aGF0IHJlYWQtb25s
eSB0cmFuc2FjdGlvbnMgd2l0aGluIGEgZGF0YWJhc2UgY2FuIHJ1biBpbiBwYXJhbGxlbC4iKTsK
KworaW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJhc2UsIHJ1blBhcmFsbGVsVHJhbnNhY3Rpb25z
KTsKKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQp
OworICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGV2YWxB
bmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBldmFs
QW5kTG9nKCJzdG9yZS5wdXQoJ3ZhbHVlJywgJ2tleScpIik7Cit9CisKK2Z1bmN0aW9uIHJ1blBh
cmFsbGVsVHJhbnNhY3Rpb25zKGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQpOworICAgIGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGRlYnVnKCIiKTsKKyAgICBl
dmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjEgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZG9u
bHknKSIpOworICAgIHRyYW5zYWN0aW9uMS5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7CisgICAgdHJhbnNhY3Rpb24xLm9uY29tcGxldGUgPSBvblRyYW5zYWN0aW9uQ29tcGxldGU7
CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24yID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywg
J3JlYWRvbmx5JykiKTsKKyAgICB0cmFuc2FjdGlvbjEub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uMi5vbmNvbXBsZXRlID0gb25UcmFuc2FjdGlvbkNv
bXBsZXRlOworCisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24xR2V0U3VjY2VzcyA9IGZhbHNl
Iik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24yR2V0U3VjY2VzcyA9IGZhbHNlIik7CisK
KyAgICBkZWJ1ZygiS2VlcCBib3RoIHRyYW5zYWN0aW9ucyBhbGl2ZSB1bnRpbCBlYWNoIGhhcyBy
ZXBvcnRlZCBhdCBsZWFzdCBvbmUgc3VjY2Vzc2Z1bCBvcGVyYXRpb24iKTsKKworICAgIGZ1bmN0
aW9uIGRvVHJhbnNhY3Rpb24xR2V0KCkgeworICAgICAgICAvLyBOT1RFOiBObyBsb2dnaW5nIHNp
bmNlIGV4ZWN1dGlvbiBvcmRlciBpcyBub3QgZGV0ZXJtaW5pc3RpYy4KKyAgICAgICAgcmVxdWVz
dCA9IHRyYW5zYWN0aW9uMS5vYmplY3RTdG9yZSgnc3RvcmUnKS5nZXQoJ2tleScpOworICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRyYW5zYWN0aW9uMUdl
dFN1Y2Nlc3MgPSB0cnVlOworICAgICAgICAgICAgaWYgKCF0cmFuc2FjdGlvbjJHZXRTdWNjZXNz
KQorICAgICAgICAgICAgICAgIGRvVHJhbnNhY3Rpb24xR2V0KCk7CisgICAgICAgIH07CisgICAg
fQorCisgICAgZnVuY3Rpb24gZG9UcmFuc2FjdGlvbjJHZXQoKSB7CisgICAgICAgIC8vIE5PVEU6
IE5vIGxvZ2dpbmcgc2luY2UgZXhlY3V0aW9uIG9yZGVyIGlzIG5vdCBkZXRlcm1pbmlzdGljLgor
ICAgICAgICByZXF1ZXN0ID0gdHJhbnNhY3Rpb24yLm9iamVjdFN0b3JlKCdzdG9yZScpLmdldCgn
a2V5Jyk7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
dHJhbnNhY3Rpb24yR2V0U3VjY2VzcyA9IHRydWU7CisgICAgICAgICAgICBpZiAoIXRyYW5zYWN0
aW9uMUdldFN1Y2Nlc3MpCisgICAgICAgICAgICAgICAgZG9UcmFuc2FjdGlvbjJHZXQoKTsKKyAg
ICAgICAgfTsKKyAgICB9CisKKyAgICBkb1RyYW5zYWN0aW9uMUdldCgpOworICAgIGRvVHJhbnNh
Y3Rpb24yR2V0KCk7Cit9CisKK3RyYW5zYWN0aW9uQ29tcGxldGlvbkNvdW50ID0gMDsKK2Z1bmN0
aW9uIG9uVHJhbnNhY3Rpb25Db21wbGV0ZShldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKwor
ICAgICsrdHJhbnNhY3Rpb25Db21wbGV0aW9uQ291bnQ7CisgICAgaWYgKHRyYW5zYWN0aW9uQ29t
cGxldGlvbkNvdW50IDwgMikgeworICAgICAgICBkZWJ1ZygiZmlyc3QgdHJhbnNhY3Rpb24gY29t
cGxldGUsIHN0aWxsIHdhaXRpbmcuLi4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHNob3VsZEJlVHJ1ZSgidHJhbnNhY3Rpb24xR2V0U3VjY2VzcyIpOworICAgIHNob3VsZEJlVHJ1
ZSgidHJhbnNhY3Rpb24yR2V0U3VjY2VzcyIpOworCisgICAgZXZhbEFuZExvZygiZGIuY2xvc2Uo
KSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLXdpdGhpbi1kYXRhYmFzZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1j
b29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZmYz
ZmZjOTgwN2JmODBjZTdiOWM1YTBiOTlhOTljODI2ZjQxMmIzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLXdp
dGhpbi1kYXRhYmFzZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNiBAQAorQ2hlY2sgdGhhdCBy
ZWFkLW9ubHkgdHJhbnNhY3Rpb25zIHdpdGhpbiBhIGRhdGFiYXNlIGNhbiBydW4gaW4gcGFyYWxs
ZWwuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmlu
ZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBz
ZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworZGJuYW1lID0gInRyYW5zYWN0
aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuaHRtbCIKK2luZGV4ZWREQi5kZWxldGVE
YXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3BlbihkYm5hbWUpCisKK3ByZXBhcmVEYXRhYmFz
ZSgpOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdzdG9yZScpCitzdG9yZS5wdXQoJ3ZhbHVlJywgJ2tleScpCisKK3J1blBhcmFsbGVsVHJh
bnNhY3Rpb25zKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKKwordHJhbnNhY3Rpb24xID0g
ZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWRvbmx5JykKK3RyYW5zYWN0aW9uMiA9IGRiLnRy
YW5zYWN0aW9uKCdzdG9yZScsICdyZWFkb25seScpCit0cmFuc2FjdGlvbjFHZXRTdWNjZXNzID0g
ZmFsc2UKK3RyYW5zYWN0aW9uMkdldFN1Y2Nlc3MgPSBmYWxzZQorS2VlcCBib3RoIHRyYW5zYWN0
aW9ucyBhbGl2ZSB1bnRpbCBlYWNoIGhhcyByZXBvcnRlZCBhdCBsZWFzdCBvbmUgc3VjY2Vzc2Z1
bCBvcGVyYXRpb24KKworb25UcmFuc2FjdGlvbkNvbXBsZXRlKCk6CitmaXJzdCB0cmFuc2FjdGlv
biBjb21wbGV0ZSwgc3RpbGwgd2FpdGluZy4uLgorCitvblRyYW5zYWN0aW9uQ29tcGxldGUoKToK
K1BBU1MgdHJhbnNhY3Rpb24xR2V0U3VjY2VzcyBpcyB0cnVlCitQQVNTIHRyYW5zYWN0aW9uMkdl
dFN1Y2Nlc3MgaXMgdHJ1ZQorZGIuY2xvc2UoKQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13
aXRoaW4tZGF0YWJhc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjBjNWI3ZDQ1OTEwYTQ1MjEzMDljMzNm
ZjQ5ZTRlNmM1MmI3YmYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLXdpdGhpbi1kYXRhYmFzZS5odG1sCkBA
IC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLXdpdGhp
bi1kYXRhYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177830</attachid>
            <date>2012-12-05 14:30:11 -0800</date>
            <delta_ts>2012-12-05 15:48:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97570-20121205142736.patch</filename>
            <type>text/plain</type>
            <size>36894</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFmZDQ5ZjNjODBhNDgz
N2I4MmI0MzVjZGE5MWY1ZDM0OWJkZWUyMy4uZjVlMzlkYmM5YmI1MGQ2MTYyM2Q0OTkzNWExY2E4
NjZjMjc3NzQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEyLTA0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBBbGxv
dyBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgdG8gcnVuIGluIHBhcmFsbGVsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU3MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBzcGVjIGxvZ2ljIGZv
ciBhbGxvd2luZyByZWFkLW9ubHkgdHJhbnNhY3Rpb25zLCBhbmQgcmVhZC13cml0ZSB0cmFuc2Fj
dGlvbnMKKyAgICAgICAgd2l0aCBub24tb3ZlcmxhcHBpbmcgc2NvcGVzLCB0byBydW4gaW4gcGFy
YWxsZWwuCisKKyAgICAgICAgV2l0aGluIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IsIHJlbmFt
ZSBzdGFydGVkLT5xdWV1ZWQsIHJ1bm5pbmctPnN0YXJ0ZWQgdG8gbWF0Y2gKKyAgICAgICAgc3Bl
YyB0ZXJtaW5vbG9neSBhbmQgY2xlYXIgdXAgY29uZnVzaW9uLgorCisgICAgICAgIFRlc3Q6IHN0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi1hY3Jvc3MtZGF0YWJhc2Vz
Lmh0bWwKKyAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRp
bmF0aW9uLXdpdGhpbi1kYXRhYmFzZS5odG1sCisgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLXJlYWR3cml0ZS1leGNsdXNpdmUuaHRtbAorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6IFVzZSBJREJUcmFuc2Fj
dGlvbjo6TW9kZSBlbnVtCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpjcmVhdGVUcmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5oOiBEaXR0by4KKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZElt
cGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZS5oOiBEaXR0by4KKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHA6
IENvbnZlcnQgc2NvcGUgYXMgYSBIYXNoU2V0IGZvcgorICAgICAgICBmYXN0IGludGVyc2VjdGlu
Zy4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Om1vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c2NvcGUpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwOiBTcGVj
IGxvZ2ljIGdvZXMgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRp
bmF0b3I6OnByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25zKTogRXh0ZW5kIHRoaXMKKyAgICAgICAg
bWV0aG9kIHRvIHRlc3QgYWxsIHBsYXVzaWJseSBydW5uYWJsZSB0cmFuc2FjdGlvbnMuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3I6OmNhblJ1blRyYW5zYWN0aW9uKTogVGVzdCB0byBzZWUgaWYgb25lCisgICAgICAgIHBhcnRp
Y3VsYXIgdHJhbnNhY3Rpb24gY2FuIGJlIHJ1bi4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3I6OmRvU2NvcGVzT3ZlcmxhcCk6IERvIGEgcXVpY2sgaW50ZXJzZWN0
aW9uCisgICAgICAgIHRlc3QgYmV0d2VlbiB0cmFuc2FjdGlvbiBzY29wZXMuCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oOgorICAgICAgICAo
SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcik6CisKIDIwMTItMTItMDUgIE1pY2hhZWwgUHJ1ZXR0
ICA8bWljaGFlbEA2OGsub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogSW1wbGVtZW50IEluZGV4
ZWREQiBiaW5kaW5ncyBmb3IgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDYzNDQ1
MGQ0YWQyZWM1ODdiNTQzYjQ1OGUyNGUxYTE0ZDIyMjQ3ZTguLjNjMTE3YTVjYzllMzE3MmIxMjUx
ODM4ZmNhOTM2ZmE5N2U3YjIwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTItMTItMDQgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4K
KworICAgICAgICBJbmRleGVkREI6IEFsbG93IG11bHRpcGxlIHRyYW5zYWN0aW9ucyB0byBydW4g
aW4gcGFyYWxsZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk3NTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWFwIHRvIElEQlRyYW5zYWN0aW9uOjpNb2RlIGVudW0gYXMgYXBwcm9wcmlhdGUuCisKKyAg
ICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAq
IHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNr
ZW5kUHJveHkpOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAg
ICAgICogdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHA6CisKIDIwMTItMTItMDUgIFN0
ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCA0NjM4ODc3NjRi
NTdkZTM2ZDVkOWQxN2JkYzNkZjk0OGY0YWM1OTVkLi4xNzA3NDgxNTE5NTFjNzYxNGNiOWIwOTc1
ZWNlYzllZDFkYzBiMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMzgwLDcgKzM4MCw3
IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiAg
ICAgfQogfQogCi1QYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9y
dCBtb2RlKQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25J
ZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246
Ok1vZGUgbW9kZSkKIHsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJh
bnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUodHJhbnNhY3Rpb25J
ZCwgb2JqZWN0U3RvcmVJZHMsIG1vZGUsIHRoaXMpOwogICAgIG1fdHJhbnNhY3Rpb25zLmFkZCh0
cmFuc2FjdGlvbi5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggZGYwYmEyZGFiNDM0OGFk
Yzc2NzhkNGQ3MDNiYWIwOTBlOGE2YjZjMi4uYTY1NDJjNmRiYjAyYWZkNjkyZjNiYjBmYjBlMzBk
ZmEyNTdjMjg3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRl
T2JqZWN0U3RvcmUoaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGlu
dDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBj
cmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpOworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0
aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RT
dG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAKICAgICBQYXNzUmVmUHRyPElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlKGludDY0X3QgaWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UuaAppbmRleCA4NTAwNjJjMjkxODczMmJhMzRhOTI3YzdiMDdlOTk1ZWE5
MDM2NGRmLi5lM2U4ZGYxYjFiM2NkMjgyZDY4ZDRiOGM4ZmJhM2FhZGM5NWRiZTFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2VfaAogI2RlZmluZSBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2VfaAogCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUo
aW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRv
SW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2Rl
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90LCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRy
YW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBv
YmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQgbW9kZSkgPSAwOworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9u
KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9y
ZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2Uo
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pID0gMDsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbC5jcHAKaW5kZXggYzU0MmZkZDc5MDg5OWVlYWJhMTQ0MTI0ZThlMzJlOTM0M2U3
MDRlMC4uMjZlOTY0NjVhZjg1MTZlOTg1ZWFjZDQyZDgxYzhlODg3NzliYmUwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTM5LDEyICszOSwxNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKGludDY0X3QgaWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90
PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGwqIGRhdGFiYXNlKQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUoaW50NjRfdCBpZCwgY29uc3QgVmVjdG9y
PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGlkLCBvYmplY3RTdG9yZUlkcywgbW9kZSwgZGF0
YWJhc2UpKTsKKyAgICBIYXNoU2V0PGludDY0X3Q+IG9iamVjdFN0b3JlSGFzaFNldDsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFN0b3JlSWRzLnNpemUoKTsgKytpKQorICAgICAg
ICBvYmplY3RTdG9yZUhhc2hTZXQuYWRkKG9iamVjdFN0b3JlSWRzW2ldKTsKKworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpZCwgb2JqZWN0U3RvcmVI
YXNoU2V0LCBtb2RlLCBkYXRhYmFzZSkpOwogfQogCi1JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGludDY0X3QgaWQsIGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIElEQkRhdGFiYXNlQmFj
a2VuZEltcGwqIGRhdGFiYXNlKQorSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBvYmpl
Y3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbCogZGF0YWJhc2UpCiAgICAgOiBtX2lkKGlkKQogICAgICwgbV9vYmplY3RTdG9yZUlkcyhv
YmplY3RTdG9yZUlkcykKICAgICAsIG1fbW9kZShtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5o
CmluZGV4IGQyYTk1ODUwNjA4ZGE4OWY5ZDE3NDUzNWYzYmIxYTI4YzhjYjMyYTkuLjY0ZDQzMjZj
NjY5YTJjZGUzYjlkZDQyMzZmZDBjOTgwMGJiY2ZhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgogI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgog
I2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklE
QlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgpAQCAtNDQsNyArNDUsNyBAQCBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOwogCiBj
bGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbD4gY3JlYXRlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVj
dG9yPGludDY0X3Q+JiwgdW5zaWduZWQgc2hvcnQgbW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IGNy
ZWF0ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIElEQlRy
YW5zYWN0aW9uOjpNb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKik7CiAgICAgc3RhdGljIElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIGZyb20oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiBpbnRlcmZhY2UpCiAgICAgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbCo+KGludGVyZmFjZSk7CkBAIC01OCw3ICs1OSw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgYWJvcnQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik7CiAgICAg
dm9pZCBydW4oKTsKLSAgICB1bnNpZ25lZCBzaG9ydCBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9t
b2RlOyB9CisgICAgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kZTsgfQorICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlKCkgY29uc3QgeyByZXR1
cm4gbV9vYmplY3RTdG9yZUlkczsgfQogICAgIGJvb2wgaXNGaW5pc2hlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUgPT0gRmluaXNoZWQ7IH0KICAgICBib29sIHNjaGVkdWxlVGFzayhQYXNzT3du
UHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIFBhc3NPd25QdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gYWJvcnRUYXNrID0gbnVsbHB0cikgeyByZXR1cm4gc2No
ZWR1bGVUYXNrKE5vcm1hbFRhc2ssIHRhc2ssIGFib3J0VGFzayk7IH0KICAgICBib29sIHNjaGVk
dWxlVGFzayhUYXNrVHlwZSwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PiwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBhYm9ydFRhc2sgPSBu
dWxscHRyKTsKQEAgLTcwLDcgKzcyLDcgQEAgcHVibGljOgogICAgIGludDY0X3QgaWQoKSBjb25z
dCB7IHJldHVybiBtX2lkOyB9CiAKIHByaXZhdGU6Ci0gICAgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbChpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCB1
bnNpZ25lZCBzaG9ydCBtb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKik7CisgICAgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBv
YmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUsIElEQkRhdGFiYXNlQmFja2VuZElt
cGwqKTsKIAogICAgIGVudW0gU3RhdGUgewogICAgICAgICBVbnVzZWQsIC8vIENyZWF0ZWQsIGJ1
dCBubyB0YXNrcyB5ZXQuCkBAIC04OSw4ICs5MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbG9z
ZU9wZW5DdXJzb3JzKCk7CiAKICAgICBjb25zdCBpbnQ2NF90IG1faWQ7Ci0gICAgY29uc3QgVmVj
dG9yPGludDY0X3Q+IG1fb2JqZWN0U3RvcmVJZHM7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
bV9tb2RlOworICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4gbV9vYmplY3RTdG9yZUlkczsKKyAg
ICBjb25zdCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtX21vZGU7CiAKICAgICBTdGF0ZSBtX3N0YXRl
OwogICAgIGJvb2wgbV9jb21taXRQZW5kaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcApp
bmRleCA2ZGIwZDcwYmYyNThjNmNlZGRlOGQ5MmRkOWM5YjYwNTlhNDE0NmY5Li43ZGJjY2U3ZGZk
OTRlZTE4YTg4NmQwZGE4Mjg3Yjk1NWM2MmZmZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1
ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIApAQCAtNTgsNyArNTks
NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmRpZFN0YXJ0VHJhbnNhY3Rpb24o
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdAogewogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9u
cy5jb250YWlucyh0cmFuc2FjdGlvbikpOwogCi0gICAgbV9zdGFydGVkVHJhbnNhY3Rpb25zLmFk
ZCh0cmFuc2FjdGlvbik7CisgICAgbV9xdWV1ZWRUcmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9u
KTsKICAgICBwcm9jZXNzU3RhcnRlZFRyYW5zYWN0aW9ucygpOwogfQogCkBAIC02NiwxMSArNjcs
MTEgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpkaWRGaW5pc2hUcmFuc2FjdGlv
bihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKgogewogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9u
cy5jb250YWlucyh0cmFuc2FjdGlvbikpOwogCi0gICAgaWYgKG1fc3RhcnRlZFRyYW5zYWN0aW9u
cy5jb250YWlucyh0cmFuc2FjdGlvbikpIHsKLSAgICAgICAgQVNTRVJUKCFtX3J1bm5pbmdUcmFu
c2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKKyAgICBpZiAobV9xdWV1ZWRUcmFuc2Fj
dGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKSB7CisgICAgICAgIEFTU0VSVCghbV9zdGFydGVk
VHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSk7CisgICAgICAgIG1fcXVldWVkVHJh
bnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbik7CisgICAgfSBlbHNlIGlmIChtX3N0YXJ0ZWRU
cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKQogICAgICAgICBtX3N0YXJ0ZWRUcmFu
c2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uKTsKLSAgICB9IGVsc2UgaWYgKG1fcnVubmluZ1Ry
YW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpCi0gICAgICAgIG1fcnVubmluZ1RyYW5z
YWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24pOwogCiAgICAgbV90cmFuc2FjdGlvbnMucmVtb3Zl
KHRyYW5zYWN0aW9uKTsKIApAQCAtODIsOSArODMsOSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3I6OmRpZEZpbmlzaFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwq
CiBib29sIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmlzQWN0aXZlKElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogewogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAg
ICBpZiAobV9zdGFydGVkVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSkKKyAgICBp
ZiAobV9xdWV1ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKQogICAgICAgICBm
b3VuZCA9IHRydWU7Ci0gICAgaWYgKG1fcnVubmluZ1RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFu
c2FjdGlvbikpIHsKKyAgICBpZiAobV9zdGFydGVkVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5z
YWN0aW9uKSkgewogICAgICAgICBBU1NFUlQoIWZvdW5kKTsKICAgICAgICAgZm91bmQgPSB0cnVl
OwogICAgIH0KQEAgLTk1LDE3ICs5Niw1OCBAQCBib29sIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3I6OmlzQWN0aXZlKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogCiB2
b2lkIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OnByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25z
KCkKIHsKLSAgICAvLyBGSVhNRTogRm9yIG5vdywgd2Ugb25seSBhbGxvdyBvbmUgdHJhbnNhY3Rp
b24gdG8gcnVuIGF0IGEgdGltZS4KLSAgICBpZiAoIW1fcnVubmluZ1RyYW5zYWN0aW9ucy5pc0Vt
cHR5KCkpCisgICAgaWYgKG1fcXVldWVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9zdGFydGVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSB8
fCAoKm1fc3RhcnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpKS0+bW9kZSgpICE9IElEQlRyYW5zYWN0
aW9uOjpWRVJTSU9OX0NIQU5HRSk7CisKKyAgICBMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuYmVn
aW4oKTsKKyAgICB3aGlsZSAoaXQgIT0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuZW5kKCkpIHsKKyAg
ICAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSAqaXQ7CisgICAg
ICAgICsraXQ7CisgICAgICAgIGlmIChjYW5SdW5UcmFuc2FjdGlvbih0cmFuc2FjdGlvbikpIHsK
KyAgICAgICAgICAgIG1fcXVldWVkVHJhbnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbik7Cisg
ICAgICAgICAgICBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9uKTsKKyAgICAg
ICAgICAgIHRyYW5zYWN0aW9uLT5ydW4oKTsKKyAgICAgICAgfQorICAgIH0KK30KIAotICAgIElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gKm1fc3RhcnRlZFRyYW5zYWN0
aW9ucy5iZWdpbigpOwotICAgIG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rp
b24pOwotICAgIG1fcnVubmluZ1RyYW5zYWN0aW9ucy5hZGQodHJhbnNhY3Rpb24pOwotICAgIHRy
YW5zYWN0aW9uLT5ydW4oKTsKK3N0YXRpYyBib29sIGRvU2NvcGVzT3ZlcmxhcChjb25zdCBIYXNo
U2V0PGludDY0X3Q+JiBzY29wZTEsIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlMikKK3sK
KyAgICBmb3IgKEhhc2hTZXQ8aW50NjRfdCA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNjb3BlMS5i
ZWdpbigpOyBpdCAhPSBzY29wZTEuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKHNjb3BlMi5j
b250YWlucygqaXQpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjYW5SdW5UcmFu
c2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKK3sKKyAgICBB
U1NFUlQobV9xdWV1ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKKyAgICBz
d2l0Y2ggKHRyYW5zYWN0aW9uLT5tb2RlKCkpIHsKKyAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpW
RVJTSU9OX0NIQU5HRToKKyAgICAgICAgQVNTRVJUKG1fcXVldWVkVHJhbnNhY3Rpb25zLnNpemUo
KSA9PSAxKTsKKyAgICAgICAgQVNTRVJUKG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgSURCVHJhbnNhY3Rpb246OlJFQURf
T05MWToKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpS
RUFEX1dSSVRFOgorICAgICAgICBmb3IgKEhhc2hTZXQ8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpOyBp
dCAhPSBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIGlm
ICgoKml0KS0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX1dSSVRFICYmIGRvU2NvcGVz
T3ZlcmxhcCh0cmFuc2FjdGlvbi0+c2NvcGUoKSwgKCppdCktPnNjb3BlKCkpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKExpc3RIYXNoU2V0
PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3F1ZXVl
ZFRyYW5zYWN0aW9ucy5iZWdpbigpOyAqaXQgIT0gdHJhbnNhY3Rpb247ICsraXQpIHsKKyAgICAg
ICAgICAgIEFTU0VSVChpdCAhPSBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5lbmQoKSk7CisgICAgICAg
ICAgICBpZiAoKCppdCktPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6UkVBRF9XUklURSAmJiBk
b1Njb3Blc092ZXJsYXAodHJhbnNhY3Rpb24tPnNjb3BlKCksICgqaXQpLT5zY29wZSgpKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsK
IH0KIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaAppbmRleCA4Mjk5ODUzMjIwY2NhYTY0NTRj
ZjY0MmU4MDU5ODQwODI2MzM0YmYzLi44OTliNTE2YjZhNjQ2ZmE3OWQ4YTUzODM5OTY4Y2YwNTcx
YTE0MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oCkBAIC01OCwxMiArNTgsMTMgQEAgcHJp
dmF0ZToKICAgICBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKCk7CiAKICAgICB2b2lkIHByb2Nl
c3NTdGFydGVkVHJhbnNhY3Rpb25zKCk7CisgICAgYm9vbCBjYW5SdW5UcmFuc2FjdGlvbihJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKik7CiAKICAgICAvLyBUaGlzIGlzIGp1c3QgYW4gZWZmaWNp
ZW50IHdheSB0byBrZWVwIHJlZmVyZW5jZXMgdG8gYWxsIHRyYW5zYWN0aW9ucy4KICAgICBIYXNo
TWFwPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqLCBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbD4gPiBtX3RyYW5zYWN0aW9uczsKICAgICAvLyBUcmFuc2FjdGlvbnMgaW4gZGlmZmVy
ZW50IHN0YXRlcyBhcmUgZ3JvdXBlZCBiZWxvdy4KLSAgICBMaXN0SGFzaFNldDxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsKj4gbV9zdGFydGVkVHJhbnNhY3Rpb25zOwotICAgIEhhc2hTZXQ8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+IG1fcnVubmluZ1RyYW5zYWN0aW9uczsKKyAgICBMaXN0
SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKj4gbV9xdWV1ZWRUcmFuc2FjdGlvbnM7
CisgICAgSGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKj4gbV9zdGFydGVkVHJhbnNh
Y3Rpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCmluZGV4IGU5
YzgwZDBjZjYyOWVjMjQ3N2FkYTEzYjg4ZjQ0N2ZhOTU5MmRhNDguLjkyNTQwMTZmY2YyNDgzMTZm
ODNhOTA1NzUyZjkxMjEyYjg2OGZkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6ZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBJREJUcmFuc2EKICAgICBtX3dlYklEQkRhdGFiYXNlLT5kZWxldGVPYmpl
Y3RTdG9yZShvYmplY3RTdG9yZUlkLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNh
Y3Rpb24oKSwgZWMpOwogfQogCi1QYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3Qg
aWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0
IG1vZGUpCitQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURCRGF0
YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgaWQsIGNvbnN0IFZl
Y3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUp
CiB7CiAgICAgT3duUHRyPFdlYklEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IGFkb3B0UHRy
KG1fd2ViSURCRGF0YWJhc2UtPmNyZWF0ZVRyYW5zYWN0aW9uKGlkLCBvYmplY3RTdG9yZUlkcywg
bW9kZSkpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaAppbmRleCAwM2QwNWQ5MmIxNmU0
OGMyOWU5MzM3YmFmZTNmOTAwMzYyYmQ5NjA5Li4xNzE0YTU0NjllZmVjMjVhZWM4ZjJiZGI3NDRh
ZGYzN2M5YzMxYTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJE
YXRhYmFzZUJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkRhdGFiYXNlQmFja2VuZFByb3h5LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZT4gY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBX
ZWJDb3JlOjpJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QsIFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
PiBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCB1bnNp
Z25lZCBzaG9ydCBtb2RlKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90LCBjb25z
dCBWZWN0b3I8aW50NjRfdD4mLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6TW9kZSk7CiAgICAg
dmlydHVhbCB2b2lkIGNsb3NlKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFj
a3M+KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJEYXRhYmFzZUltcGwuY3BwCmluZGV4IDQwM2EzMGJlZTUxMDc2MzA3NmFkMTZmNmE5ZDM4NDJi
YmE5ZmJkNDAuLjMwY2ViYjU5Y2VmMzk0MzA3NDg2OWI1ZTdlMjcxMjA2NzQ1MzhiMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcApA
QCAtODAsNyArODAsNyBAQCBXZWJJREJUcmFuc2FjdGlvbiogV2ViSURCRGF0YWJhc2VJbXBsOjpj
cmVhdGVUcmFuc2FjdGlvbihsb25nIGxvbmcgaWQsIGNvbnN0IFdlYgogICAgIFZlY3RvcjxpbnQ2
NF90PiBvYmplY3RTdG9yZUlkTGlzdChvYmplY3RTdG9yZUlkcy5zaXplKCkpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U3RvcmVJZHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG9i
amVjdFN0b3JlSWRMaXN0W2ldID0gb2JqZWN0U3RvcmVJZHNbaV07Ci0gICAgUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24gPSBtX2RhdGFiYXNlQmFja2Vu
ZC0+Y3JlYXRlVHJhbnNhY3Rpb24oaWQsIG9iamVjdFN0b3JlSWRMaXN0LCBtb2RlKTsKKyAgICBS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbiA9IG1fZGF0
YWJhc2VCYWNrZW5kLT5jcmVhdGVUcmFuc2FjdGlvbihpZCwgb2JqZWN0U3RvcmVJZExpc3QsIHN0
YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uOjpNb2RlPihtb2RlKSk7CiAgICAgaWYgKCF0cmFuc2Fj
dGlvbikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIG5ldyBXZWJJREJUcmFuc2FjdGlv
bkltcGwodHJhbnNhY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKaW5kZXggMGQyNjIyNDY2NTM4MTRhNDdk
Yzk4ZmE4YjNjOWZhMGI5YTIxMmJhMy4uYjQ1ZmZiM2U1NzY2NmY1ODk3OGMyMTdkOWM4MmVhMzg5
YmYwOWJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRh
YmFzZUJhY2tlbmRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lE
QkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0
ZU9iamVjdFN0b3JlKGludDY0X3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0
aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwg
RXhjZXB0aW9uQ29kZSYpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqLCBFeGNlcHRpb25Db2RlJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0
b3JlKGludDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNv
ZGUmKSB7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90LCBjb25zdCBWZWN0b3I8aW50NjRfdD4m
LCB1bnNpZ25lZCBzaG9ydCBtb2RlKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gY3JlYXRlVHJhbnNhY3Rpb24oaW50
NjRfdCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiwgSURCVHJhbnNhY3Rpb246Ok1vZGUpIHsgcmV0
dXJuIDA7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPikKICAgICB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOThiM2VlYjlhYjI1YTQwMWNmMmE2MTJmNThiYjhm
Y2M2ODdhYWI0NC4uMDAwYWVlMDAwMzBkNmVkNjNhMWIwOGE5NGNhODkwYmUzNDM5YTdlYyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTEyLTA0ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBBbGxvdyBtdWx0aXBsZSB0cmFuc2FjdGlv
bnMgdG8gcnVuIGluIHBhcmFsbGVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NzU3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5ldyB0ZXN0cyBmb3IgcGFyYWxsZWwgdHJhbnNhY3Rpb25zLCB1cGRhdGUg
ZXhpc3RpbmcgdGVzdHMgdGhhdCByZWxpZWQgb24gc2VxdWVudGlhbCBleGVjdXRpb24uCisKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1jbG9zZS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jbGVhci1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY2xlYXIuanM6IFNw
bGl0IHVwIHRyYW5zYWN0aW9uIHN0ZXBzLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9kYXRhYmFzZS1jbG9zZS5qczogRG9uJ3QgbG9nIG9uIGluZGl2aWR1YWwgdHJhbnNh
Y3Rpb24gY29tcGxldGlvbi4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
dHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLXdpdGhpbi1kYXRhYmFzZS5qczogQWRkZWQuCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVl
bmNpbmcuanM6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRh
dGFiYXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLXNjb3BlLXNlcXVlbmNpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zY29wZS1zZXF1ZW5jaW5nLmh0bWw6IEFkZGVkLgor
CiAyMDEyLTEyLTA1ICBTdGVwaGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1jbG9zZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1jbG9zZS1leHBlY3RlZC50
eHQKaW5kZXggYTMwNzlmYTJlMDVlMTMzMGNmMGU4MjY5ODA3ODE1MDNkYWNhOWUwNi4uNjAyODFl
ZGI5ZWViMjM0MmMxZDYzMWQ1MDZhMTYyMDdhMTc2MjcyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtY2xvc2UtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWNsb3NlLWV4cGVjdGVkLnR4dApA
QCAtMzksMTEgKzM5LDkgQEAgaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKIAogdHJh
bnNhY3Rpb24gIzEgcmVxdWVzdCBzdWNjZXNzZnVsCiBQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQg
aXMgInZhbHVlMSIKLWF3YWl0aW5nX3RyYW5zYWN0aW9uX2NvdW50IC09IDEKIAogdHJhbnNhY3Rp
b24gIzIgcmVxdWVzdCBzdWNjZXNzZnVsCiBQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgInZh
bHVlMiIKLWF3YWl0aW5nX3RyYW5zYWN0aW9uX2NvdW50IC09IDEKIAogQWxsIHRyYW5zYWN0aW9u
cyBjb21wbGV0ZWQgLSBkYXRhYmFzZSBkZWxldGVzIHNob3VsZCBub3cgYmUgdW5ibG9ja2VkLgog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xl
YXItZXhwZWN0ZWQudHh0CmluZGV4IGVmYTBlMWE1ZDMzYjEzOTEwNzU0OTY3ZmQ4Y2RkY2ExM2Jj
ZGUyMjEuLjUwNWZlNzUzYTQxNTlhYmRjNDAyOWNkOGNlMTFlMmY5NDZmM2NkNzkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXItZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXItZXhw
ZWN0ZWQudHh0CkBAIC0xNCw3ICsxNCw4IEBAIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi50
cmFuc2FjdGlvbignZm9vJykub2JqZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7CiBQQVNTIEV4Y2Vw
dGlvbiB3YXMgdGhyb3duLgogUEFTUyBjb2RlIGlzIDAKIFBBU1MgZW5hbWUgaXMgJ1JlYWRPbmx5
RXJyb3InCi1kYi50cmFuc2FjdGlvbignZm9vJywgJ3JlYWR3cml0ZScpLm9iamVjdFN0b3JlKCdm
b28nKS5jbGVhcigpOworZGIudHJhbnNhY3Rpb24oJ2ZvbycsICdyZWFkd3JpdGUnKQordHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7CiByZXF1ZXN0ID0gZGIudHJhbnNhY3Rp
b24oJ2ZvbycpLm9iamVjdFN0b3JlKCdmb28nKS5vcGVuQ3Vyc29yKCk7CiBjdXJzb3IgPSByZXF1
ZXN0LnJlc3VsdDsKIFBBU1MgY3Vyc29yIGlzIG51bGwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2NsZWFyLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY2xlYXIuanMKaW5kZXggYzgy
ZmFmMjYxMGU0ZmQ0Y2IxMjg2NmY5NmZlNDZjYzFlNjVhNjc0Ni4uNzlmM2I3OGU0MjZhM2UzNTBi
MTJmMjJlZGJlYjQ4ODJlYjQ2M2MxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY2xlYXIuanMKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY2xlYXIuanMKQEAgLTI0LDcgKzI0LDE0
IEBAIGZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCiBmdW5jdGlvbiBjbGVhcigpCiB7CiAgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0b3Jl
KCdmb28nKS5jbGVhcigpOyIsICIwIiwgIidSZWFkT25seUVycm9yJyIpOwotICAgIGV2YWxBbmRM
b2coImRiLnRyYW5zYWN0aW9uKCdmb28nLCAncmVhZHdyaXRlJykub2JqZWN0U3RvcmUoJ2Zvbycp
LmNsZWFyKCk7Iik7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlv
bignZm9vJywgJ3JlYWR3cml0ZScpIik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7Iik7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IGNsZWFyZWQ7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworfQorCitmdW5jdGlvbiBjbGVhcmVkKCkKK3sKICAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJykub3Bl
bkN1cnNvcigpOyIpOwogICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXJlV2VDbGVhcllldDsKICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1jbG9zZS5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1jbG9z
ZS5qcwppbmRleCA2OTFlNTViY2YxZjFiNzgzZDVkYzhhNTdjNmVhNjQzZjE4M2RiMzU2Li40NmRi
YTMwZjViZGNiZTQxMjFiZjFlOGJmMjJmZWQwZDBlNDU5MmE2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YWJhc2UtY2xvc2UuanMKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLWNsb3NlLmpz
CkBAIC0zNSw3ICszNSw3IEBAIGZ1bmN0aW9uIHRlc3RDbG9zZSgpCiAgICAgZGVidWcoIlN0ZXAg
MjogV2FpdCBmb3IgYWxsIHRyYW5zYWN0aW9ucyBjcmVhdGVkIHVzaW5nIGNvbm5lY3Rpb24gdG8g
Y29tcGxldGUuIE9uY2UgdGhleSBhcmUgY29tcGxldGUsIGNvbm5lY3Rpb24gaXMgY2xvc2VkLiIp
OwogICAgIGV2YWxBbmRMb2coImF3YWl0aW5nX3RyYW5zYWN0aW9uX2NvdW50ID0gMiIpOwogICAg
IGZ1bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxldGVkKCkgewotICAgICAgICBldmFsQW5kTG9nKCJh
d2FpdGluZ190cmFuc2FjdGlvbl9jb3VudCAtPSAxIik7CisgICAgICAgIGF3YWl0aW5nX3RyYW5z
YWN0aW9uX2NvdW50IC09IDE7CiAKICAgICAgICAgaWYgKGF3YWl0aW5nX3RyYW5zYWN0aW9uX2Nv
dW50ID09IDApIHsKICAgICAgICAgICAgIGRlYnVnKCIiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jb29yZGluYXRpb24t
d2l0aGluLWRhdGFiYXNlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDZmMDM1OTJhZDRiYWNjM2M4ZDcxM2UxYzJlNmU4MzJmZGZmOGEyYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlv
bi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmpzCkBAIC0wLDAgKzEsNzcgQEAKK2lmICh0
aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5q
cycpOworfQorCitkZXNjcmlwdGlvbigiQ2hlY2sgdGhhdCByZWFkLW9ubHkgdHJhbnNhY3Rpb25z
IHdpdGhpbiBhIGRhdGFiYXNlIGNhbiBydW4gaW4gcGFyYWxsZWwuIik7CisKK2luZGV4ZWREQlRl
c3QocHJlcGFyZURhdGFiYXNlLCBydW5QYXJhbGxlbFRyYW5zYWN0aW9ucyk7CisKK2Z1bmN0aW9u
IHByZXBhcmVEYXRhYmFzZShldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUu
cHV0KCd2YWx1ZScsICdrZXknKSIpOworfQorCitmdW5jdGlvbiBydW5QYXJhbGxlbFRyYW5zYWN0
aW9ucyhldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZXZhbEFuZExvZygidHJh
bnNhY3Rpb24xID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWRvbmx5JykiKTsKKyAgICB0
cmFuc2FjdGlvbjEub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5z
YWN0aW9uMS5vbmNvbXBsZXRlID0gb25UcmFuc2FjdGlvbkNvbXBsZXRlOworICAgIGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uMiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkb25seScpIik7
CisgICAgdHJhbnNhY3Rpb24xLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAg
ICB0cmFuc2FjdGlvbjIub25jb21wbGV0ZSA9IG9uVHJhbnNhY3Rpb25Db21wbGV0ZTsKKworICAg
IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMUdldFN1Y2Nlc3MgPSBmYWxzZSIpOworICAgIGV2YWxB
bmRMb2coInRyYW5zYWN0aW9uMkdldFN1Y2Nlc3MgPSBmYWxzZSIpOworCisgICAgZGVidWcoIktl
ZXAgYm90aCB0cmFuc2FjdGlvbnMgYWxpdmUgdW50aWwgZWFjaCBoYXMgcmVwb3J0ZWQgYXQgbGVh
c3Qgb25lIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uIik7CisKKyAgICBmdW5jdGlvbiBkb1RyYW5zYWN0
aW9uMUdldCgpIHsKKyAgICAgICAgLy8gTk9URTogTm8gbG9nZ2luZyBzaW5jZSBleGVjdXRpb24g
b3JkZXIgaXMgbm90IGRldGVybWluaXN0aWMuCisgICAgICAgIHJlcXVlc3QgPSB0cmFuc2FjdGlv
bjEub2JqZWN0U3RvcmUoJ3N0b3JlJykuZ2V0KCdrZXknKTsKKyAgICAgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0cmFuc2FjdGlvbjFHZXRTdWNjZXNzID0gdHJ1
ZTsKKyAgICAgICAgICAgIGlmICghdHJhbnNhY3Rpb24yR2V0U3VjY2VzcykKKyAgICAgICAgICAg
ICAgICBkb1RyYW5zYWN0aW9uMUdldCgpOworICAgICAgICB9OworICAgIH0KKworICAgIGZ1bmN0
aW9uIGRvVHJhbnNhY3Rpb24yR2V0KCkgeworICAgICAgICAvLyBOT1RFOiBObyBsb2dnaW5nIHNp
bmNlIGV4ZWN1dGlvbiBvcmRlciBpcyBub3QgZGV0ZXJtaW5pc3RpYy4KKyAgICAgICAgcmVxdWVz
dCA9IHRyYW5zYWN0aW9uMi5vYmplY3RTdG9yZSgnc3RvcmUnKS5nZXQoJ2tleScpOworICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRyYW5zYWN0aW9uMkdl
dFN1Y2Nlc3MgPSB0cnVlOworICAgICAgICAgICAgaWYgKCF0cmFuc2FjdGlvbjFHZXRTdWNjZXNz
KQorICAgICAgICAgICAgICAgIGRvVHJhbnNhY3Rpb24yR2V0KCk7CisgICAgICAgIH07CisgICAg
fQorCisgICAgZG9UcmFuc2FjdGlvbjFHZXQoKTsKKyAgICBkb1RyYW5zYWN0aW9uMkdldCgpOwor
fQorCit0cmFuc2FjdGlvbkNvbXBsZXRpb25Db3VudCA9IDA7CitmdW5jdGlvbiBvblRyYW5zYWN0
aW9uQ29tcGxldGUoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7CisKKyAgICArK3RyYW5zYWN0
aW9uQ29tcGxldGlvbkNvdW50OworICAgIGlmICh0cmFuc2FjdGlvbkNvbXBsZXRpb25Db3VudCA8
IDIpIHsKKyAgICAgICAgZGVidWcoImZpcnN0IHRyYW5zYWN0aW9uIGNvbXBsZXRlLCBzdGlsbCB3
YWl0aW5nLi4uIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZVRydWUo
InRyYW5zYWN0aW9uMUdldFN1Y2Nlc3MiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zYWN0aW9u
MkdldFN1Y2Nlc3MiKTsKKworICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy90cmFuc2FjdGlvbi1zY29wZS1zZXF1ZW5jaW5nLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNpbmcu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzJmOGEwOWE5ZTgzMDgwMDJlNWYxNGU5ZGRjOGFiYmIwZjc2YTU4Mwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy90cmFuc2FjdGlvbi1zY29wZS1zZXF1ZW5jaW5nLmpzCkBAIC0wLDAgKzEsODEgQEAKK2lmICh0
aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5q
cycpOworfQorCitkZXNjcmlwdGlvbigiQ2hlY2sgdGhhdCBzY29wZSByZXN0cmljdGlvbnMgb24g
cmVhZC13cml0ZSB0cmFuc2FjdGlvbnMgYXJlIGVuZm9yY2VkLiIpOworCitpbmRleGVkREJUZXN0
KHByZXBhcmVEYXRhYmFzZSwgcnVuVHJhbnNhY3Rpb25zKTsKKworZnVuY3Rpb24gcHJlcGFyZURh
dGFiYXNlKGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQpOworICAgIGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdhJykiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYicpIik7
CisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2MnKSIpOworfQorCitmdW5j
dGlvbiBydW5UcmFuc2FjdGlvbnMoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7CisgICAgZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZGVidWcoIiIpOworCisg
ICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24xID0gZGIudHJhbnNhY3Rpb24oWydhJ10sICdyZWFk
d3JpdGUnKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMVN0YXJ0ZWQgPSBmYWxzZSIp
OworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMUNvbXBsZXRlID0gZmFsc2UiKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24xLm9iamVjdFN0b3JlKCdhJykuZ2V0KDAp
Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoIiIpOworICAg
ICAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjFTdGFydGVkID0gdHJ1ZSIpOworICAgIH07Cisg
ICAgdHJhbnNhY3Rpb24xLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0
cmFuc2FjdGlvbjEub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1ZygiIik7
CisgICAgICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMUNvbXBsZXRlID0gdHJ1ZSIpOworICAg
ICAgICBzaG91bGRCZUZhbHNlKCJ0cmFuc2FjdGlvbjJTdGFydGVkIik7CisgICAgICAgIHNob3Vs
ZEJlRmFsc2UoInRyYW5zYWN0aW9uM1N0YXJ0ZWQiKTsKKyAgICB9OworCisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJ0cmFuc2FjdGlvbjIgb3ZlcmxhcHMgd2l0aCB0cmFuc2FjdGlvbjEsIHNv
IG11c3Qgd2FpdCB1bnRpbCB0cmFuc2FjdGlvbjEgY29tcGxldGVzIik7CisgICAgZXZhbEFuZExv
ZygidHJhbnNhY3Rpb24yID0gZGIudHJhbnNhY3Rpb24oWydhJywgJ2InXSwgJ3JlYWR3cml0ZScp
Iik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24yU3RhcnRlZCA9IGZhbHNlIik7CisgICAg
ZXZhbEFuZExvZygidHJhbnNhY3Rpb24yQ29tcGxldGUgPSBmYWxzZSIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjIub2JqZWN0U3RvcmUoJ2EnKS5nZXQoMCkiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIHNo
b3VsZEJlVHJ1ZSgidHJhbnNhY3Rpb24xQ29tcGxldGUiKTsKKyAgICAgICAgZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24yU3RhcnRlZCA9IHRydWUiKTsKKyAgICB9OworICAgIHRyYW5zYWN0aW9uMi5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24yLm9uY29t
cGxldGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBldmFsQW5k
TG9nKCJ0cmFuc2FjdGlvbjJDb21wbGV0ZSA9IHRydWUiKTsKKyAgICAgICAgc2hvdWxkQmVGYWxz
ZSgidHJhbnNhY3Rpb24zU3RhcnRlZCIpOworICAgIH07CisKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoInRyYW5zYWN0aW9uMyBvdmVybGFwcyB3aXRoIHRyYW5zYWN0aW9uMiwgc28gbXVzdCB3
YWl0IHVudGlsIHRyYW5zYWN0aW9uMiBjb21wbGV0ZXMiKTsKKyAgICBkZWJ1ZygiZXZlbiB0aG91
Z2ggaXQgZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIHRyYW5zYWN0aW9uMSIpOworICAgIGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uMyA9IGRiLnRyYW5zYWN0aW9uKFsnYicsICdjJ10sICdyZWFkd3JpdGUn
KSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uM1N0YXJ0ZWQgPSBmYWxzZSIpOworICAg
IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uM0NvbXBsZXRlID0gZmFsc2UiKTsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24zLm9iamVjdFN0b3JlKCdiJykuZ2V0KDApIik7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBz
aG91bGRCZVRydWUoInRyYW5zYWN0aW9uMUNvbXBsZXRlIik7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgidHJhbnNhY3Rpb24yQ29tcGxldGUiKTsKKyAgICAgICAgZXZhbEFuZExvZygidHJhbnNhY3Rp
b24zU3RhcnRlZCA9IHRydWUiKTsKKyAgICB9OworICAgIHRyYW5zYWN0aW9uMy5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24zLm9uY29tcGxldGUgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBldmFsQW5kTG9nKCJ0cmFu
c2FjdGlvbjNDb21wbGV0ZSA9IHRydWUiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
fTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLXdpdGhpbi1kYXRh
YmFzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZmM2ZmYzk4MDdiZjgwY2U3YjljNWEwYjk5
YTk5YzgyNmY0MTJiMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMzYgQEAKK0NoZWNrIHRoYXQgcmVhZC1vbmx5IHRyYW5zYWN0aW9ucyB3
aXRoaW4gYSBkYXRhYmFzZSBjYW4gcnVuIGluIHBhcmFsbGVsLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJ
bmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxm
Lk9JbmRleGVkREI7CisKK2RibmFtZSA9ICJ0cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGlu
LWRhdGFiYXNlLmh0bWwiCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQoraW5kZXhl
ZERCLm9wZW4oZGJuYW1lKQorCitwcmVwYXJlRGF0YWJhc2UoKToKK2RiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdAorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKQorc3RvcmUucHV0
KCd2YWx1ZScsICdrZXknKQorCitydW5QYXJhbGxlbFRyYW5zYWN0aW9ucygpOgorZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0CisKK3RyYW5zYWN0aW9uMSA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScs
ICdyZWFkb25seScpCit0cmFuc2FjdGlvbjIgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVh
ZG9ubHknKQordHJhbnNhY3Rpb24xR2V0U3VjY2VzcyA9IGZhbHNlCit0cmFuc2FjdGlvbjJHZXRT
dWNjZXNzID0gZmFsc2UKK0tlZXAgYm90aCB0cmFuc2FjdGlvbnMgYWxpdmUgdW50aWwgZWFjaCBo
YXMgcmVwb3J0ZWQgYXQgbGVhc3Qgb25lIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uCisKK29uVHJhbnNh
Y3Rpb25Db21wbGV0ZSgpOgorZmlyc3QgdHJhbnNhY3Rpb24gY29tcGxldGUsIHN0aWxsIHdhaXRp
bmcuLi4KKworb25UcmFuc2FjdGlvbkNvbXBsZXRlKCk6CitQQVNTIHRyYW5zYWN0aW9uMUdldFN1
Y2Nlc3MgaXMgdHJ1ZQorUEFTUyB0cmFuc2FjdGlvbjJHZXRTdWNjZXNzIGlzIHRydWUKK2RiLmNs
b3NlKCkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1j
b29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGYwYzViN2Q0NTkxMGE0NTIxMzA5YzMzZmY0OWU0ZTZjNTJiN2JmMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNv
b3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuaHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zY29wZS1zZXF1ZW5jaW5nLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNp
bmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3NWFhODAxNzQyNGM1NDkwNjJkNmJiN2UyMWE3
Nzk4MzI4N2U2OTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1zY29wZS1zZXF1ZW5jaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDU5IEBACitDaGVjayB0aGF0IHNjb3BlIHJlc3RyaWN0aW9ucyBvbiByZWFkLXdyaXRlIHRyYW5z
YWN0aW9ucyBhcmUgZW5mb3JjZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitp
bmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxm
Lm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKwor
ZGJuYW1lID0gInRyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNpbmcuaHRtbCIKK2luZGV4ZWREQi5k
ZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3BlbihkYm5hbWUpCisKK3ByZXBhcmVE
YXRhYmFzZSgpOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnYScpCitkYi5jcmVhdGVPYmplY3RTdG9yZSgnYicpCitkYi5jcmVhdGVPYmplY3RTdG9yZSgn
YycpCisKK3J1blRyYW5zYWN0aW9ucygpOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CisKK3Ry
YW5zYWN0aW9uMSA9IGRiLnRyYW5zYWN0aW9uKFsnYSddLCAncmVhZHdyaXRlJykKK3RyYW5zYWN0
aW9uMVN0YXJ0ZWQgPSBmYWxzZQordHJhbnNhY3Rpb24xQ29tcGxldGUgPSBmYWxzZQordHJhbnNh
Y3Rpb24xLm9iamVjdFN0b3JlKCdhJykuZ2V0KDApCisKK3RyYW5zYWN0aW9uMiBvdmVybGFwcyB3
aXRoIHRyYW5zYWN0aW9uMSwgc28gbXVzdCB3YWl0IHVudGlsIHRyYW5zYWN0aW9uMSBjb21wbGV0
ZXMKK3RyYW5zYWN0aW9uMiA9IGRiLnRyYW5zYWN0aW9uKFsnYScsICdiJ10sICdyZWFkd3JpdGUn
KQordHJhbnNhY3Rpb24yU3RhcnRlZCA9IGZhbHNlCit0cmFuc2FjdGlvbjJDb21wbGV0ZSA9IGZh
bHNlCit0cmFuc2FjdGlvbjIub2JqZWN0U3RvcmUoJ2EnKS5nZXQoMCkKKwordHJhbnNhY3Rpb24z
IG92ZXJsYXBzIHdpdGggdHJhbnNhY3Rpb24yLCBzbyBtdXN0IHdhaXQgdW50aWwgdHJhbnNhY3Rp
b24yIGNvbXBsZXRlcworZXZlbiB0aG91Z2ggaXQgZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIHRyYW5z
YWN0aW9uMQordHJhbnNhY3Rpb24zID0gZGIudHJhbnNhY3Rpb24oWydiJywgJ2MnXSwgJ3JlYWR3
cml0ZScpCit0cmFuc2FjdGlvbjNTdGFydGVkID0gZmFsc2UKK3RyYW5zYWN0aW9uM0NvbXBsZXRl
ID0gZmFsc2UKK3RyYW5zYWN0aW9uMy5vYmplY3RTdG9yZSgnYicpLmdldCgwKQorCit0cmFuc2Fj
dGlvbjFTdGFydGVkID0gdHJ1ZQorCit0cmFuc2FjdGlvbjFDb21wbGV0ZSA9IHRydWUKK1BBU1Mg
dHJhbnNhY3Rpb24yU3RhcnRlZCBpcyBmYWxzZQorUEFTUyB0cmFuc2FjdGlvbjNTdGFydGVkIGlz
IGZhbHNlCisKK1BBU1MgdHJhbnNhY3Rpb24xQ29tcGxldGUgaXMgdHJ1ZQordHJhbnNhY3Rpb24y
U3RhcnRlZCA9IHRydWUKKwordHJhbnNhY3Rpb24yQ29tcGxldGUgPSB0cnVlCitQQVNTIHRyYW5z
YWN0aW9uM1N0YXJ0ZWQgaXMgZmFsc2UKKworUEFTUyB0cmFuc2FjdGlvbjFDb21wbGV0ZSBpcyB0
cnVlCitQQVNTIHRyYW5zYWN0aW9uMkNvbXBsZXRlIGlzIHRydWUKK3RyYW5zYWN0aW9uM1N0YXJ0
ZWQgPSB0cnVlCisKK3RyYW5zYWN0aW9uM0NvbXBsZXRlID0gdHJ1ZQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNpbmcuaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNp
bmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44M2VlZGMyN2I3NjgwMzBlY2Y3NGFjOWMwMGIzM2FlZWI2ZDQx
NTg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tc2NvcGUtc2VxdWVuY2luZy5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvdHJhbnNhY3Rpb24tc2NvcGUtc2VxdWVuY2luZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177852</attachid>
            <date>2012-12-05 15:48:44 -0800</date>
            <delta_ts>2012-12-05 16:23:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97570-20121205154609.patch</filename>
            <type>text/plain</type>
            <size>41178</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFmZDQ5ZjNjODBhNDgz
N2I4MmI0MzVjZGE5MWY1ZDM0OWJkZWUyMy4uZjVlMzlkYmM5YmI1MGQ2MTYyM2Q0OTkzNWExY2E4
NjZjMjc3NzQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEyLTA0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBBbGxv
dyBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgdG8gcnVuIGluIHBhcmFsbGVsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU3MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBzcGVjIGxvZ2ljIGZv
ciBhbGxvd2luZyByZWFkLW9ubHkgdHJhbnNhY3Rpb25zLCBhbmQgcmVhZC13cml0ZSB0cmFuc2Fj
dGlvbnMKKyAgICAgICAgd2l0aCBub24tb3ZlcmxhcHBpbmcgc2NvcGVzLCB0byBydW4gaW4gcGFy
YWxsZWwuCisKKyAgICAgICAgV2l0aGluIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IsIHJlbmFt
ZSBzdGFydGVkLT5xdWV1ZWQsIHJ1bm5pbmctPnN0YXJ0ZWQgdG8gbWF0Y2gKKyAgICAgICAgc3Bl
YyB0ZXJtaW5vbG9neSBhbmQgY2xlYXIgdXAgY29uZnVzaW9uLgorCisgICAgICAgIFRlc3Q6IHN0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi1hY3Jvc3MtZGF0YWJhc2Vz
Lmh0bWwKKyAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRp
bmF0aW9uLXdpdGhpbi1kYXRhYmFzZS5odG1sCisgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLXJlYWR3cml0ZS1leGNsdXNpdmUuaHRtbAorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6IFVzZSBJREJUcmFuc2Fj
dGlvbjo6TW9kZSBlbnVtCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpjcmVhdGVUcmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5oOiBEaXR0by4KKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZElt
cGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZS5oOiBEaXR0by4KKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHA6
IENvbnZlcnQgc2NvcGUgYXMgYSBIYXNoU2V0IGZvcgorICAgICAgICBmYXN0IGludGVyc2VjdGlu
Zy4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Om1vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c2NvcGUpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwOiBTcGVj
IGxvZ2ljIGdvZXMgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRp
bmF0b3I6OnByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25zKTogRXh0ZW5kIHRoaXMKKyAgICAgICAg
bWV0aG9kIHRvIHRlc3QgYWxsIHBsYXVzaWJseSBydW5uYWJsZSB0cmFuc2FjdGlvbnMuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3I6OmNhblJ1blRyYW5zYWN0aW9uKTogVGVzdCB0byBzZWUgaWYgb25lCisgICAgICAgIHBhcnRp
Y3VsYXIgdHJhbnNhY3Rpb24gY2FuIGJlIHJ1bi4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3I6OmRvU2NvcGVzT3ZlcmxhcCk6IERvIGEgcXVpY2sgaW50ZXJzZWN0
aW9uCisgICAgICAgIHRlc3QgYmV0d2VlbiB0cmFuc2FjdGlvbiBzY29wZXMuCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oOgorICAgICAgICAo
SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcik6CisKIDIwMTItMTItMDUgIE1pY2hhZWwgUHJ1ZXR0
ICA8bWljaGFlbEA2OGsub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogSW1wbGVtZW50IEluZGV4
ZWREQiBiaW5kaW5ncyBmb3IgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDYzNDQ1
MGQ0YWQyZWM1ODdiNTQzYjQ1OGUyNGUxYTE0ZDIyMjQ3ZTguLjNjMTE3YTVjYzllMzE3MmIxMjUx
ODM4ZmNhOTM2ZmE5N2U3YjIwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTItMTItMDQgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4K
KworICAgICAgICBJbmRleGVkREI6IEFsbG93IG11bHRpcGxlIHRyYW5zYWN0aW9ucyB0byBydW4g
aW4gcGFyYWxsZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk3NTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWFwIHRvIElEQlRyYW5zYWN0aW9uOjpNb2RlIGVudW0gYXMgYXBwcm9wcmlhdGUuCisKKyAg
ICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAq
IHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNr
ZW5kUHJveHkpOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAg
ICAgICogdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHA6CisKIDIwMTItMTItMDUgIFN0
ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCA0NjM4ODc3NjRi
NTdkZTM2ZDVkOWQxN2JkYzNkZjk0OGY0YWM1OTVkLi4xNzA3NDgxNTE5NTFjNzYxNGNiOWIwOTc1
ZWNlYzllZDFkYzBiMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMzgwLDcgKzM4MCw3
IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiAg
ICAgfQogfQogCi1QYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9y
dCBtb2RlKQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25J
ZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246
Ok1vZGUgbW9kZSkKIHsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJh
bnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUodHJhbnNhY3Rpb25J
ZCwgb2JqZWN0U3RvcmVJZHMsIG1vZGUsIHRoaXMpOwogICAgIG1fdHJhbnNhY3Rpb25zLmFkZCh0
cmFuc2FjdGlvbi5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggZGYwYmEyZGFiNDM0OGFk
Yzc2NzhkNGQ3MDNiYWIwOTBlOGE2YjZjMi4uYTY1NDJjNmRiYjAyYWZkNjkyZjNiYjBmYjBlMzBk
ZmEyNTdjMjg3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRl
T2JqZWN0U3RvcmUoaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGlu
dDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBj
cmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpOworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0
aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RT
dG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAKICAgICBQYXNzUmVmUHRyPElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlKGludDY0X3QgaWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UuaAppbmRleCA4NTAwNjJjMjkxODczMmJhMzRhOTI3YzdiMDdlOTk1ZWE5
MDM2NGRmLi5lM2U4ZGYxYjFiM2NkMjgyZDY4ZDRiOGM4ZmJhM2FhZGM5NWRiZTFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2VfaAogI2RlZmluZSBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2VfaAogCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUo
aW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRv
SW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2Rl
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90LCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRy
YW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBv
YmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQgbW9kZSkgPSAwOworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9u
KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9y
ZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2Uo
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pID0gMDsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbC5jcHAKaW5kZXggYzU0MmZkZDc5MDg5OWVlYWJhMTQ0MTI0ZThlMzJlOTM0M2U3
MDRlMC4uMjZlOTY0NjVhZjg1MTZlOTg1ZWFjZDQyZDgxYzhlODg3NzliYmUwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTM5LDEyICszOSwxNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKGludDY0X3QgaWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90
PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGwqIGRhdGFiYXNlKQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUoaW50NjRfdCBpZCwgY29uc3QgVmVjdG9y
PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGlkLCBvYmplY3RTdG9yZUlkcywgbW9kZSwgZGF0
YWJhc2UpKTsKKyAgICBIYXNoU2V0PGludDY0X3Q+IG9iamVjdFN0b3JlSGFzaFNldDsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFN0b3JlSWRzLnNpemUoKTsgKytpKQorICAgICAg
ICBvYmplY3RTdG9yZUhhc2hTZXQuYWRkKG9iamVjdFN0b3JlSWRzW2ldKTsKKworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpZCwgb2JqZWN0U3RvcmVI
YXNoU2V0LCBtb2RlLCBkYXRhYmFzZSkpOwogfQogCi1JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGludDY0X3QgaWQsIGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIElEQkRhdGFiYXNlQmFj
a2VuZEltcGwqIGRhdGFiYXNlKQorSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBvYmpl
Y3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbCogZGF0YWJhc2UpCiAgICAgOiBtX2lkKGlkKQogICAgICwgbV9vYmplY3RTdG9yZUlkcyhv
YmplY3RTdG9yZUlkcykKICAgICAsIG1fbW9kZShtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5o
CmluZGV4IGQyYTk1ODUwNjA4ZGE4OWY5ZDE3NDUzNWYzYmIxYTI4YzhjYjMyYTkuLjY0ZDQzMjZj
NjY5YTJjZGUzYjlkZDQyMzZmZDBjOTgwMGJiY2ZhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgogI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgog
I2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklE
QlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgpAQCAtNDQsNyArNDUsNyBAQCBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOwogCiBj
bGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbD4gY3JlYXRlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVj
dG9yPGludDY0X3Q+JiwgdW5zaWduZWQgc2hvcnQgbW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IGNy
ZWF0ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIElEQlRy
YW5zYWN0aW9uOjpNb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKik7CiAgICAgc3RhdGljIElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIGZyb20oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiBpbnRlcmZhY2UpCiAgICAgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbCo+KGludGVyZmFjZSk7CkBAIC01OCw3ICs1OSw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgYWJvcnQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik7CiAgICAg
dm9pZCBydW4oKTsKLSAgICB1bnNpZ25lZCBzaG9ydCBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9t
b2RlOyB9CisgICAgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kZTsgfQorICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlKCkgY29uc3QgeyByZXR1
cm4gbV9vYmplY3RTdG9yZUlkczsgfQogICAgIGJvb2wgaXNGaW5pc2hlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUgPT0gRmluaXNoZWQ7IH0KICAgICBib29sIHNjaGVkdWxlVGFzayhQYXNzT3du
UHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIFBhc3NPd25QdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gYWJvcnRUYXNrID0gbnVsbHB0cikgeyByZXR1cm4gc2No
ZWR1bGVUYXNrKE5vcm1hbFRhc2ssIHRhc2ssIGFib3J0VGFzayk7IH0KICAgICBib29sIHNjaGVk
dWxlVGFzayhUYXNrVHlwZSwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PiwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBhYm9ydFRhc2sgPSBu
dWxscHRyKTsKQEAgLTcwLDcgKzcyLDcgQEAgcHVibGljOgogICAgIGludDY0X3QgaWQoKSBjb25z
dCB7IHJldHVybiBtX2lkOyB9CiAKIHByaXZhdGU6Ci0gICAgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbChpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCB1
bnNpZ25lZCBzaG9ydCBtb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKik7CisgICAgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBv
YmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUsIElEQkRhdGFiYXNlQmFja2VuZElt
cGwqKTsKIAogICAgIGVudW0gU3RhdGUgewogICAgICAgICBVbnVzZWQsIC8vIENyZWF0ZWQsIGJ1
dCBubyB0YXNrcyB5ZXQuCkBAIC04OSw4ICs5MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbG9z
ZU9wZW5DdXJzb3JzKCk7CiAKICAgICBjb25zdCBpbnQ2NF90IG1faWQ7Ci0gICAgY29uc3QgVmVj
dG9yPGludDY0X3Q+IG1fb2JqZWN0U3RvcmVJZHM7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
bV9tb2RlOworICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4gbV9vYmplY3RTdG9yZUlkczsKKyAg
ICBjb25zdCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtX21vZGU7CiAKICAgICBTdGF0ZSBtX3N0YXRl
OwogICAgIGJvb2wgbV9jb21taXRQZW5kaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcApp
bmRleCA2ZGIwZDcwYmYyNThjNmNlZGRlOGQ5MmRkOWM5YjYwNTlhNDE0NmY5Li40Mjk4NDUwNDI2
NmY4YjVhOTZmMzYzM2VmODk5ODc4MDZmMDMyZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1
ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIApAQCAtNTgsNyArNTks
NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmRpZFN0YXJ0VHJhbnNhY3Rpb24o
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdAogewogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9u
cy5jb250YWlucyh0cmFuc2FjdGlvbikpOwogCi0gICAgbV9zdGFydGVkVHJhbnNhY3Rpb25zLmFk
ZCh0cmFuc2FjdGlvbik7CisgICAgbV9xdWV1ZWRUcmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9u
KTsKICAgICBwcm9jZXNzU3RhcnRlZFRyYW5zYWN0aW9ucygpOwogfQogCkBAIC02NiwxMSArNjcs
MTEgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpkaWRGaW5pc2hUcmFuc2FjdGlv
bihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKgogewogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9u
cy5jb250YWlucyh0cmFuc2FjdGlvbikpOwogCi0gICAgaWYgKG1fc3RhcnRlZFRyYW5zYWN0aW9u
cy5jb250YWlucyh0cmFuc2FjdGlvbikpIHsKLSAgICAgICAgQVNTRVJUKCFtX3J1bm5pbmdUcmFu
c2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKKyAgICBpZiAobV9xdWV1ZWRUcmFuc2Fj
dGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKSB7CisgICAgICAgIEFTU0VSVCghbV9zdGFydGVk
VHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSk7CisgICAgICAgIG1fcXVldWVkVHJh
bnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbik7CisgICAgfSBlbHNlIGlmIChtX3N0YXJ0ZWRU
cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKQogICAgICAgICBtX3N0YXJ0ZWRUcmFu
c2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uKTsKLSAgICB9IGVsc2UgaWYgKG1fcnVubmluZ1Ry
YW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpCi0gICAgICAgIG1fcnVubmluZ1RyYW5z
YWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24pOwogCiAgICAgbV90cmFuc2FjdGlvbnMucmVtb3Zl
KHRyYW5zYWN0aW9uKTsKIApAQCAtODIsOSArODMsOSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3I6OmRpZEZpbmlzaFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwq
CiBib29sIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmlzQWN0aXZlKElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogewogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAg
ICBpZiAobV9zdGFydGVkVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSkKKyAgICBp
ZiAobV9xdWV1ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKQogICAgICAgICBm
b3VuZCA9IHRydWU7Ci0gICAgaWYgKG1fcnVubmluZ1RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFu
c2FjdGlvbikpIHsKKyAgICBpZiAobV9zdGFydGVkVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5z
YWN0aW9uKSkgewogICAgICAgICBBU1NFUlQoIWZvdW5kKTsKICAgICAgICAgZm91bmQgPSB0cnVl
OwogICAgIH0KQEAgLTk1LDE3ICs5Niw1OCBAQCBib29sIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3I6OmlzQWN0aXZlKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogCiB2
b2lkIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OnByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25z
KCkKIHsKLSAgICAvLyBGSVhNRTogRm9yIG5vdywgd2Ugb25seSBhbGxvdyBvbmUgdHJhbnNhY3Rp
b24gdG8gcnVuIGF0IGEgdGltZS4KLSAgICBpZiAoIW1fcnVubmluZ1RyYW5zYWN0aW9ucy5pc0Vt
cHR5KCkpCisgICAgaWYgKG1fcXVldWVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9zdGFydGVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSB8
fCAoKm1fc3RhcnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpKS0+bW9kZSgpICE9IElEQlRyYW5zYWN0
aW9uOjpWRVJTSU9OX0NIQU5HRSk7CisKKyAgICBMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuYmVn
aW4oKTsKKyAgICB3aGlsZSAoaXQgIT0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuZW5kKCkpIHsKKyAg
ICAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSAqaXQ7CisgICAg
ICAgICsraXQ7CisgICAgICAgIGlmIChjYW5SdW5UcmFuc2FjdGlvbih0cmFuc2FjdGlvbikpIHsK
KyAgICAgICAgICAgIG1fcXVldWVkVHJhbnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbik7Cisg
ICAgICAgICAgICBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9uKTsKKyAgICAg
ICAgICAgIHRyYW5zYWN0aW9uLT5ydW4oKTsKKyAgICAgICAgfQorICAgIH0KK30KIAotICAgIElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gKm1fc3RhcnRlZFRyYW5zYWN0
aW9ucy5iZWdpbigpOwotICAgIG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rp
b24pOwotICAgIG1fcnVubmluZ1RyYW5zYWN0aW9ucy5hZGQodHJhbnNhY3Rpb24pOwotICAgIHRy
YW5zYWN0aW9uLT5ydW4oKTsKK3N0YXRpYyBib29sIGRvU2NvcGVzT3ZlcmxhcChjb25zdCBIYXNo
U2V0PGludDY0X3Q+JiBzY29wZTEsIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlMikKK3sK
KyAgICBmb3IgKEhhc2hTZXQ8aW50NjRfdD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2NvcGUxLmJl
Z2luKCk7IGl0ICE9IHNjb3BlMS5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoc2NvcGUyLmNv
bnRhaW5zKCppdCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmNhblJ1blRyYW5z
YWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQoreworICAgIEFT
U0VSVChtX3F1ZXVlZFRyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpOworICAgIHN3
aXRjaCAodHJhbnNhY3Rpb24tPm1vZGUoKSkgeworICAgIGNhc2UgSURCVHJhbnNhY3Rpb246OlZF
UlNJT05fQ0hBTkdFOgorICAgICAgICBBU1NFUlQobV9xdWV1ZWRUcmFuc2FjdGlvbnMuc2l6ZSgp
ID09IDEpOworICAgICAgICBBU1NFUlQobV9zdGFydGVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSk7
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgY2FzZSBJREJUcmFuc2FjdGlvbjo6UkVBRF9P
TkxZOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgSURCVHJhbnNhY3Rpb246OlJF
QURfV1JJVEU6CisgICAgICAgIGZvciAoSGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdGFydGVkVHJhbnNhY3Rpb25zLmJlZ2luKCk7IGl0
ICE9IG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgaWYg
KCgqaXQpLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlJFQURfV1JJVEUgJiYgZG9TY29wZXNP
dmVybGFwKHRyYW5zYWN0aW9uLT5zY29wZSgpLCAoKml0KS0+c2NvcGUoKSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGZvciAoTGlzdEhhc2hTZXQ8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcXVldWVk
VHJhbnNhY3Rpb25zLmJlZ2luKCk7ICppdCAhPSB0cmFuc2FjdGlvbjsgKytpdCkgeworICAgICAg
ICAgICAgQVNTRVJUKGl0ICE9IG1fcXVldWVkVHJhbnNhY3Rpb25zLmVuZCgpKTsKKyAgICAgICAg
ICAgIGlmICgoKml0KS0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX1dSSVRFICYmIGRv
U2NvcGVzT3ZlcmxhcCh0cmFuc2FjdGlvbi0+c2NvcGUoKSwgKCppdCktPnNjb3BlKCkpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwog
fQogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oCmluZGV4IDgyOTk4NTMyMjBjY2FhNjQ1NGNm
NjQyZTgwNTk4NDA4MjYzMzRiZjMuLjg5OWI1MTZiNmE2NDZmYTc5ZDhhNTM4Mzk5NjhjZjA1NzFh
MTQxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgKQEAgLTU4LDEyICs1OCwxMyBAQCBwcml2
YXRlOgogICAgIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKTsKIAogICAgIHZvaWQgcHJvY2Vz
c1N0YXJ0ZWRUcmFuc2FjdGlvbnMoKTsKKyAgICBib29sIGNhblJ1blRyYW5zYWN0aW9uKElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGwqKTsKIAogICAgIC8vIFRoaXMgaXMganVzdCBhbiBlZmZpY2ll
bnQgd2F5IHRvIGtlZXAgcmVmZXJlbmNlcyB0byBhbGwgdHJhbnNhY3Rpb25zLgogICAgIEhhc2hN
YXA8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCosIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsPiA+IG1fdHJhbnNhY3Rpb25zOwogICAgIC8vIFRyYW5zYWN0aW9ucyBpbiBkaWZmZXJl
bnQgc3RhdGVzIGFyZSBncm91cGVkIGJlbG93LgotICAgIExpc3RIYXNoU2V0PElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwqPiBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnM7Ci0gICAgSGFzaFNldDxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKj4gbV9ydW5uaW5nVHJhbnNhY3Rpb25zOworICAgIExpc3RI
YXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqPiBtX3F1ZXVlZFRyYW5zYWN0aW9uczsK
KyAgICBIYXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqPiBtX3N0YXJ0ZWRUcmFuc2Fj
dGlvbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggZTlj
ODBkMGNmNjI5ZWMyNDc3YWRhMTNiODhmNDQ3ZmE5NTkyZGE0OC4uOTI1NDAxNmZjZjI0ODMxNmY4
M2E5MDU3NTJmOTEyMTJiODY4ZmRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcApAQCAtODUsNyArODUsNyBAQCB2
b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIElEQlRyYW5zYQogICAgIG1fd2ViSURCRGF0YWJhc2UtPmRlbGV0ZU9iamVj
dFN0b3JlKG9iamVjdFN0b3JlSWQsICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2Fj
dGlvbigpLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlPiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCBp
ZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQg
bW9kZSkKK1Bhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRh
YmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCBpZCwgY29uc3QgVmVj
dG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSkK
IHsKICAgICBPd25QdHI8V2ViSURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gYWRvcHRQdHIo
bV93ZWJJREJEYXRhYmFzZS0+Y3JlYXRlVHJhbnNhY3Rpb24oaWQsIG9iamVjdFN0b3JlSWRzLCBt
b2RlKSk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCmluZGV4IDAzZDA1ZDkyYjE2ZTQ4
YzI5ZTkzMzdiYWZlM2Y5MDAzNjJiZDk2MDkuLjE3MTRhNTQ2OWVmZWMyNWFlYzhmMmJkYjc0NGFk
ZjM3YzljMzFhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRh
dGFiYXNlQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
PiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIHVuc2ln
bmVkIHNob3J0IG1vZGUpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QsIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpNb2RlKTsKICAgICB2
aXJ0dWFsIHZvaWQgY2xvc2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNr
cz4pOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCRGF0YWJhc2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggNDAzYTMwYmVlNTEwNzYzMDc2YWQxNmY2YTlkMzg0MmJi
YTlmYmQ0MC4uMzBjZWJiNTljZWYzOTQzMDc0ODY5YjVlN2UyNzEyMDY3NDUzOGIyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCkBA
IC04MCw3ICs4MCw3IEBAIFdlYklEQlRyYW5zYWN0aW9uKiBXZWJJREJEYXRhYmFzZUltcGw6OmNy
ZWF0ZVRyYW5zYWN0aW9uKGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViCiAgICAgVmVjdG9yPGludDY0
X3Q+IG9iamVjdFN0b3JlSWRMaXN0KG9iamVjdFN0b3JlSWRzLnNpemUoKSk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBvYmplY3RTdG9yZUlkcy5zaXplKCk7ICsraSkKICAgICAgICAgb2Jq
ZWN0U3RvcmVJZExpc3RbaV0gPSBvYmplY3RTdG9yZUlkc1tpXTsKLSAgICBSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbiA9IG1fZGF0YWJhc2VCYWNrZW5k
LT5jcmVhdGVUcmFuc2FjdGlvbihpZCwgb2JqZWN0U3RvcmVJZExpc3QsIG1vZGUpOworICAgIFJl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uID0gbV9kYXRh
YmFzZUJhY2tlbmQtPmNyZWF0ZVRyYW5zYWN0aW9uKGlkLCBvYmplY3RTdG9yZUlkTGlzdCwgc3Rh
dGljX2Nhc3Q8SURCVHJhbnNhY3Rpb246Ok1vZGU+KG1vZGUpKTsKICAgICBpZiAoIXRyYW5zYWN0
aW9uKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbmV3IFdlYklEQlRyYW5zYWN0aW9u
SW1wbCh0cmFuc2FjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcAppbmRleCAwZDI2MjI0NjY1MzgxNGE0N2Rj
OThmYThiM2M5ZmEwYjlhMjEyYmEzLi5iNDVmZmIzZTU3NjY2ZjU4OTc4YzIxN2Q5YzgyZWEzODli
ZjA5YmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFi
YXNlQmFja2VuZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURC
RGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRl
T2JqZWN0U3RvcmUoaW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRo
JiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJikgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmpl
Y3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSosIEV4Y2VwdGlvbkNvZGUmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3Rv
cmUoaW50NjRfdCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29k
ZSYpIHsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYs
IHVuc2lnbmVkIHNob3J0IG1vZGUpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2
NF90LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBJREJUcmFuc2FjdGlvbjo6TW9kZSkgeyByZXR1
cm4gMDsgfQogCiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+KQogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5OGIzZWViOWFiMjVhNDAxY2YyYTYxMmY1OGJiOGZj
YzY4N2FhYjQ0Li5jZjEzZGQ0M2U1MmNiNzI1MWRiMTY2MTRhMGYyNTc3ZTc3YzI4NmZlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMTItMDQgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEFsbG93IG11bHRpcGxlIHRyYW5zYWN0aW9u
cyB0byBydW4gaW4gcGFyYWxsZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk3NTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTmV3IHRlc3RzIGZvciBwYXJhbGxlbCB0cmFuc2FjdGlvbnMsIHVwZGF0ZSBl
eGlzdGluZyB0ZXN0cyB0aGF0IHJlbGllZCBvbiBzZXF1ZW50aWFsIGV4ZWN1dGlvbi4KKworICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWNsb3NlLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jbGVhci5qczogU3Bs
aXQgdXAgdHJhbnNhY3Rpb24gc3RlcHMuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2RhdGFiYXNlLWNsb3NlLmpzOiBEb24ndCBsb2cgb24gaW5kaXZpZHVhbCB0cmFuc2Fj
dGlvbiBjb21wbGV0aW9uLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90
cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc2NvcGUtc2VxdWVu
Y2luZy5qczogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3Ry
YW5zYWN0aW9uLXN0YXJ2YXRpb24uanM6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGlu
YXRpb24td2l0aGluLWRhdGFiYXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zY29wZS1zZXF1ZW5jaW5n
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXN0
YXJ2YXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1zdGFydmF0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEyLTA1ICBTdGVw
aGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1
bV0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9kYXRhYmFzZS1jbG9zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1jbG9zZS1leHBlY3RlZC50eHQKaW5kZXggYTMwNzlmYTJl
MDVlMTMzMGNmMGU4MjY5ODA3ODE1MDNkYWNhOWUwNi4uNjAyODFlZGI5ZWViMjM0MmMxZDYzMWQ1
MDZhMTYyMDdhMTc2MjcyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvZGF0YWJhc2UtY2xvc2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2RhdGFiYXNlLWNsb3NlLWV4cGVjdGVkLnR4dApAQCAtMzksMTEgKzM5LDkgQEAg
aW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKIAogdHJhbnNhY3Rpb24gIzEgcmVxdWVz
dCBzdWNjZXNzZnVsCiBQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgInZhbHVlMSIKLWF3YWl0
aW5nX3RyYW5zYWN0aW9uX2NvdW50IC09IDEKIAogdHJhbnNhY3Rpb24gIzIgcmVxdWVzdCBzdWNj
ZXNzZnVsCiBQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgInZhbHVlMiIKLWF3YWl0aW5nX3Ry
YW5zYWN0aW9uX2NvdW50IC09IDEKIAogQWxsIHRyYW5zYWN0aW9ucyBjb21wbGV0ZWQgLSBkYXRh
YmFzZSBkZWxldGVzIHNob3VsZCBub3cgYmUgdW5ibG9ja2VkLgogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXItZXhwZWN0ZWQudHh0Cmlu
ZGV4IGVmYTBlMWE1ZDMzYjEzOTEwNzU0OTY3ZmQ4Y2RkY2ExM2JjZGUyMjEuLjUwNWZlNzUzYTQx
NTlhYmRjNDAyOWNkOGNlMTFlMmY5NDZmM2NkNzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXItZXhwZWN0ZWQudHh0CkBAIC0xNCw3
ICsxNCw4IEBAIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi50cmFuc2FjdGlvbignZm9vJyku
b2JqZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7CiBQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgog
UEFTUyBjb2RlIGlzIDAKIFBBU1MgZW5hbWUgaXMgJ1JlYWRPbmx5RXJyb3InCi1kYi50cmFuc2Fj
dGlvbignZm9vJywgJ3JlYWR3cml0ZScpLm9iamVjdFN0b3JlKCdmb28nKS5jbGVhcigpOworZGIu
dHJhbnNhY3Rpb24oJ2ZvbycsICdyZWFkd3JpdGUnKQordHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
J2ZvbycpLmNsZWFyKCk7CiByZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0
b3JlKCdmb28nKS5vcGVuQ3Vyc29yKCk7CiBjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsKIFBBU1Mg
Y3Vyc29yIGlzIG51bGwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvcmVzb3VyY2VzL2NsZWFyLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9yZXNvdXJjZXMvY2xlYXIuanMKaW5kZXggYzgyZmFmMjYxMGU0ZmQ0Y2IxMjg2
NmY5NmZlNDZjYzFlNjVhNjc0Ni4uNzlmM2I3OGU0MjZhM2UzNTBiMTJmMjJlZGJlYjQ4ODJlYjQ2
M2MxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9y
ZXNvdXJjZXMvY2xlYXIuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZXNvdXJjZXMvY2xlYXIuanMKQEAgLTI0LDcgKzI0LDE0IEBAIGZ1bmN0aW9uIHByZXBh
cmVEYXRhYmFzZSgpCiBmdW5jdGlvbiBjbGVhcigpCiB7CiAgICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigiZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0b3JlKCdmb28nKS5jbGVhcigpOyIs
ICIwIiwgIidSZWFkT25seUVycm9yJyIpOwotICAgIGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9u
KCdmb28nLCAncmVhZHdyaXRlJykub2JqZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7Iik7CisgICAg
dHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbignZm9vJywgJ3JlYWR3cml0
ZScpIik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ2ZvbycpLmNs
ZWFyKCk7Iik7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGNsZWFyZWQ7CisgICAgdHJh
bnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworfQorCitmdW5jdGlv
biBjbGVhcmVkKCkKK3sKICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRy
YW5zYWN0aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJykub3BlbkN1cnNvcigpOyIpOwogICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gYXJlV2VDbGVhcllldDsKICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1jbG9zZS5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1jbG9zZS5qcwppbmRleCA2OTFlNTVi
Y2YxZjFiNzgzZDVkYzhhNTdjNmVhNjQzZjE4M2RiMzU2Li40NmRiYTMwZjViZGNiZTQxMjFiZjFl
OGJmMjJmZWQwZDBlNDU5MmE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvZGF0YWJhc2UtY2xvc2UuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLWNsb3NlLmpzCkBAIC0zNSw3ICszNSw3IEBA
IGZ1bmN0aW9uIHRlc3RDbG9zZSgpCiAgICAgZGVidWcoIlN0ZXAgMjogV2FpdCBmb3IgYWxsIHRy
YW5zYWN0aW9ucyBjcmVhdGVkIHVzaW5nIGNvbm5lY3Rpb24gdG8gY29tcGxldGUuIE9uY2UgdGhl
eSBhcmUgY29tcGxldGUsIGNvbm5lY3Rpb24gaXMgY2xvc2VkLiIpOwogICAgIGV2YWxBbmRMb2co
ImF3YWl0aW5nX3RyYW5zYWN0aW9uX2NvdW50ID0gMiIpOwogICAgIGZ1bmN0aW9uIHRyYW5zYWN0
aW9uQ29tcGxldGVkKCkgewotICAgICAgICBldmFsQW5kTG9nKCJhd2FpdGluZ190cmFuc2FjdGlv
bl9jb3VudCAtPSAxIik7CisgICAgICAgIGF3YWl0aW5nX3RyYW5zYWN0aW9uX2NvdW50IC09IDE7
CiAKICAgICAgICAgaWYgKGF3YWl0aW5nX3RyYW5zYWN0aW9uX2NvdW50ID09IDApIHsKICAgICAg
ICAgICAgIGRlYnVnKCIiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNv
b3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZmMDM1OTJhZDRiYWNj
M2M4ZDcxM2UxYzJlNmU4MzJmZGZmOGEyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0
aGluLWRhdGFiYXNlLmpzCkBAIC0wLDAgKzEsNzcgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiQ2hlY2sgdGhhdCByZWFkLW9ubHkgdHJhbnNhY3Rpb25zIHdpdGhpbiBhIGRhdGFiYXNl
IGNhbiBydW4gaW4gcGFyYWxsZWwuIik7CisKK2luZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNl
LCBydW5QYXJhbGxlbFRyYW5zYWN0aW9ucyk7CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZShl
dnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCd2YWx1ZScsICdrZXkn
KSIpOworfQorCitmdW5jdGlvbiBydW5QYXJhbGxlbFRyYW5zYWN0aW9ucyhldnQpCit7CisgICAg
cHJlYW1ibGUoZXZ0KTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKyAgICBkZWJ1ZygiIik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24xID0gZGIudHJh
bnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWRvbmx5JykiKTsKKyAgICB0cmFuc2FjdGlvbjEub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uMS5vbmNvbXBsZXRl
ID0gb25UcmFuc2FjdGlvbkNvbXBsZXRlOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMiA9
IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkb25seScpIik7CisgICAgdHJhbnNhY3Rpb24x
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbjIub25j
b21wbGV0ZSA9IG9uVHJhbnNhY3Rpb25Db21wbGV0ZTsKKworICAgIGV2YWxBbmRMb2coInRyYW5z
YWN0aW9uMUdldFN1Y2Nlc3MgPSBmYWxzZSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9u
MkdldFN1Y2Nlc3MgPSBmYWxzZSIpOworCisgICAgZGVidWcoIktlZXAgYm90aCB0cmFuc2FjdGlv
bnMgYWxpdmUgdW50aWwgZWFjaCBoYXMgcmVwb3J0ZWQgYXQgbGVhc3Qgb25lIHN1Y2Nlc3NmdWwg
b3BlcmF0aW9uIik7CisKKyAgICBmdW5jdGlvbiBkb1RyYW5zYWN0aW9uMUdldCgpIHsKKyAgICAg
ICAgLy8gTk9URTogTm8gbG9nZ2luZyBzaW5jZSBleGVjdXRpb24gb3JkZXIgaXMgbm90IGRldGVy
bWluaXN0aWMuCisgICAgICAgIHJlcXVlc3QgPSB0cmFuc2FjdGlvbjEub2JqZWN0U3RvcmUoJ3N0
b3JlJykuZ2V0KCdrZXknKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICB0cmFuc2FjdGlvbjFHZXRTdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgICAgIGlm
ICghdHJhbnNhY3Rpb24yR2V0U3VjY2VzcykKKyAgICAgICAgICAgICAgICBkb1RyYW5zYWN0aW9u
MUdldCgpOworICAgICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIGRvVHJhbnNhY3Rpb24y
R2V0KCkgeworICAgICAgICAvLyBOT1RFOiBObyBsb2dnaW5nIHNpbmNlIGV4ZWN1dGlvbiBvcmRl
ciBpcyBub3QgZGV0ZXJtaW5pc3RpYy4KKyAgICAgICAgcmVxdWVzdCA9IHRyYW5zYWN0aW9uMi5v
YmplY3RTdG9yZSgnc3RvcmUnKS5nZXQoJ2tleScpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRyYW5zYWN0aW9uMkdldFN1Y2Nlc3MgPSB0cnVlOwor
ICAgICAgICAgICAgaWYgKCF0cmFuc2FjdGlvbjFHZXRTdWNjZXNzKQorICAgICAgICAgICAgICAg
IGRvVHJhbnNhY3Rpb24yR2V0KCk7CisgICAgICAgIH07CisgICAgfQorCisgICAgZG9UcmFuc2Fj
dGlvbjFHZXQoKTsKKyAgICBkb1RyYW5zYWN0aW9uMkdldCgpOworfQorCit0cmFuc2FjdGlvbkNv
bXBsZXRpb25Db3VudCA9IDA7CitmdW5jdGlvbiBvblRyYW5zYWN0aW9uQ29tcGxldGUoZXZ0KQor
eworICAgIHByZWFtYmxlKGV2dCk7CisKKyAgICArK3RyYW5zYWN0aW9uQ29tcGxldGlvbkNvdW50
OworICAgIGlmICh0cmFuc2FjdGlvbkNvbXBsZXRpb25Db3VudCA8IDIpIHsKKyAgICAgICAgZGVi
dWcoImZpcnN0IHRyYW5zYWN0aW9uIGNvbXBsZXRlLCBzdGlsbCB3YWl0aW5nLi4uIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZVRydWUoInRyYW5zYWN0aW9uMUdldFN1
Y2Nlc3MiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zYWN0aW9uMkdldFN1Y2Nlc3MiKTsKKwor
ICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2Fj
dGlvbi1zY29wZS1zZXF1ZW5jaW5nLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNpbmcuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzJm
OGEwOWE5ZTgzMDgwMDJlNWYxNGU5ZGRjOGFiYmIwZjc2YTU4MwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1zY29w
ZS1zZXF1ZW5jaW5nLmpzCkBAIC0wLDAgKzEsODEgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiQ2hlY2sgdGhhdCBzY29wZSByZXN0cmljdGlvbnMgb24gcmVhZC13cml0ZSB0cmFuc2Fj
dGlvbnMgYXJlIGVuZm9yY2VkLiIpOworCitpbmRleGVkREJUZXN0KHByZXBhcmVEYXRhYmFzZSwg
cnVuVHJhbnNhY3Rpb25zKTsKKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKGV2dCkKK3sKKyAg
ICBwcmVhbWJsZShldnQpOworICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhJykiKTsKKyAgICBl
dmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYicpIik7CisgICAgZXZhbEFuZExvZygi
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2MnKSIpOworfQorCitmdW5jdGlvbiBydW5UcmFuc2FjdGlv
bnMoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7CisgICAgZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgZGVidWcoIiIpOworCisgICAgZXZhbEFuZExvZygidHJh
bnNhY3Rpb24xID0gZGIudHJhbnNhY3Rpb24oWydhJ10sICdyZWFkd3JpdGUnKSIpOworICAgIGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uMVN0YXJ0ZWQgPSBmYWxzZSIpOworICAgIGV2YWxBbmRMb2co
InRyYW5zYWN0aW9uMUNvbXBsZXRlID0gZmFsc2UiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygidHJhbnNhY3Rpb24xLm9iamVjdFN0b3JlKCdhJykuZ2V0KDApIik7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBldmFsQW5kTG9nKCJ0
cmFuc2FjdGlvbjFTdGFydGVkID0gdHJ1ZSIpOworICAgIH07CisgICAgdHJhbnNhY3Rpb24xLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbjEub25jb21w
bGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uMUNvbXBsZXRlID0gdHJ1ZSIpOworICAgICAgICBzaG91bGRCZUZhbHNl
KCJ0cmFuc2FjdGlvbjJTdGFydGVkIik7CisgICAgICAgIHNob3VsZEJlRmFsc2UoInRyYW5zYWN0
aW9uM1N0YXJ0ZWQiKTsKKyAgICB9OworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0cmFu
c2FjdGlvbjIgb3ZlcmxhcHMgd2l0aCB0cmFuc2FjdGlvbjEsIHNvIG11c3Qgd2FpdCB1bnRpbCB0
cmFuc2FjdGlvbjEgY29tcGxldGVzIik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24yID0g
ZGIudHJhbnNhY3Rpb24oWydhJywgJ2InXSwgJ3JlYWR3cml0ZScpIik7CisgICAgZXZhbEFuZExv
ZygidHJhbnNhY3Rpb24yU3RhcnRlZCA9IGZhbHNlIik7CisgICAgZXZhbEFuZExvZygidHJhbnNh
Y3Rpb24yQ29tcGxldGUgPSBmYWxzZSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFu
c2FjdGlvbjIub2JqZWN0U3RvcmUoJ2EnKS5nZXQoMCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKCkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidHJhbnNh
Y3Rpb24xQ29tcGxldGUiKTsKKyAgICAgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24yU3RhcnRl
ZCA9IHRydWUiKTsKKyAgICB9OworICAgIHRyYW5zYWN0aW9uMi5vbmFib3J0ID0gdW5leHBlY3Rl
ZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24yLm9uY29tcGxldGUgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjJD
b21wbGV0ZSA9IHRydWUiKTsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgidHJhbnNhY3Rpb24zU3Rh
cnRlZCIpOworICAgIH07CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRyYW5zYWN0aW9u
MyBvdmVybGFwcyB3aXRoIHRyYW5zYWN0aW9uMiwgc28gbXVzdCB3YWl0IHVudGlsIHRyYW5zYWN0
aW9uMiBjb21wbGV0ZXMiKTsKKyAgICBkZWJ1ZygiZXZlbiB0aG91Z2ggaXQgZG9lcyBub3Qgb3Zl
cmxhcCB3aXRoIHRyYW5zYWN0aW9uMSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMyA9
IGRiLnRyYW5zYWN0aW9uKFsnYicsICdjJ10sICdyZWFkd3JpdGUnKSIpOworICAgIGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uM1N0YXJ0ZWQgPSBmYWxzZSIpOworICAgIGV2YWxBbmRMb2coInRyYW5z
YWN0aW9uM0NvbXBsZXRlID0gZmFsc2UiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJh
bnNhY3Rpb24zLm9iamVjdFN0b3JlKCdiJykuZ2V0KDApIik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBzaG91bGRCZVRydWUoInRyYW5z
YWN0aW9uMUNvbXBsZXRlIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidHJhbnNhY3Rpb24yQ29t
cGxldGUiKTsKKyAgICAgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24zU3RhcnRlZCA9IHRydWUi
KTsKKyAgICB9OworICAgIHRyYW5zYWN0aW9uMy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7CisgICAgdHJhbnNhY3Rpb24zLm9uY29tcGxldGUgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgZGVidWcoIiIpOworICAgICAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjNDb21wbGV0ZSA9
IHRydWUiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1zdGFy
dmF0aW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5z
YWN0aW9uLXN0YXJ2YXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYxMmJjYjk3MjVmN2IzMzQyZTc4MWZi
MmYzZWFhMzg4MTliMDg1MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1zdGFydmF0aW9uLmpzCkBAIC0wLDAgKzEs
NjAgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiQ2hlY2sgdGhhdCByZWFkLW9ubHkg
dHJhbnNhY3Rpb25zIGRvbid0IHN0YXJ2ZSByZWFkLXdyaXRlIHRyYW5zYWN0aW9ucy4iKTsKKwor
aW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJhc2UsIHJ1blRyYW5zYWN0aW9ucyk7CisKK2Z1bmN0
aW9uIHByZXBhcmVEYXRhYmFzZShldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworfQorCitmdW5jdGlvbiBydW5UcmFuc2FjdGlv
bnMoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7CisgICAgZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgZGVidWcoIiIpOworCisgICAgZXZhbEFuZExvZygicmVh
ZE9ubHlUcmFuc2FjdGlvblJ1bm5pbmcgPSBmYWxzZSIpOworICAgIGV2YWxBbmRMb2coInJlYWRX
cml0ZVRyYW5zYWN0aW9uQ29tcGxldGUgPSBmYWxzZSIpOworICAgIGRlYnVnKCJLaWNrIG9mZiBh
biBlbmRsZXNzIHNlcmllcyBvZiByZWFkLW9ubHkgdHJhbnNhY3Rpb25zIik7CisKKyAgICBmaXJz
dFJlYWRPbmx5VHJhbnNhY3Rpb24gPSB0cnVlOworICAgIHN0YXJ0UmVhZE9ubHlUcmFuc2FjdGlv
bigpOworfQorCisKK2Z1bmN0aW9uIHN0YXJ0UmVhZE9ubHlUcmFuc2FjdGlvbigpCit7CisgICAg
Ly8gTm8gbG9nZ2luZyBzaW5jZSBleGVjdXRpb24gb3JkZXIgaXMgaW5kZXRlcm1pbmF0ZS4KKyAg
ICB2YXIgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZG9ubHknKTsK
KyAgICByZWFkT25seVRyYW5zYWN0aW9uUnVubmluZyA9IHRydWU7CisgICAgdHJhbnNhY3Rpb24u
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29t
cGxldGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmVhZE9ubHlUcmFuc2FjdGlvblJ1bm5pbmcg
PSBmYWxzZTsKKyAgICAgICAgaWYgKGZpcnN0UmVhZE9ubHlUcmFuc2FjdGlvbikgeworICAgICAg
ICAgICAgZmlyc3RSZWFkT25seVRyYW5zYWN0aW9uID0gZmFsc2U7CisgICAgICAgICAgICBzdGFy
dFJlYWRXcml0ZVRyYW5zYWN0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFyZWFkV3Jp
dGVUcmFuc2FjdGlvbkNvbXBsZXRlKQorICAgICAgICAgICAgc3RhcnRSZWFkT25seVRyYW5zYWN0
aW9uKCk7CisgICAgfTsKK30KKworZnVuY3Rpb24gc3RhcnRSZWFkV3JpdGVUcmFuc2FjdGlvbigp
Cit7CisgICAgcHJlYW1ibGUoKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRy
YW5zYWN0aW9uKCdzdG9yZScsICdyZWFkd3JpdGUnKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRl
ID0gZnVuY3Rpb24gcmVhZFdyaXRlVHJhbnNhY3Rpb25Db21wbGV0ZSgpIHsKKyAgICAgICAgcHJl
YW1ibGUoKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVhZFdyaXRlVHJhbnNhY3Rpb25Db21wbGV0
ZSA9IHRydWUiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJyZWFkT25seVRyYW5zYWN0aW9uUnVu
bmluZyIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9OworfQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLXdp
dGhpbi1kYXRhYmFzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZmM2ZmYzk4MDdiZjgwY2U3
YjljNWEwYjk5YTk5YzgyNmY0MTJiMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2Ut
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzYgQEAKK0NoZWNrIHRoYXQgcmVhZC1vbmx5IHRyYW5z
YWN0aW9ucyB3aXRoaW4gYSBkYXRhYmFzZSBjYW4gcnVuIGluIHBhcmFsbGVsLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2Vs
Zi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWRE
QiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2RibmFtZSA9ICJ0cmFuc2FjdGlvbi1jb29yZGluYXRp
b24td2l0aGluLWRhdGFiYXNlLmh0bWwiCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1l
KQoraW5kZXhlZERCLm9wZW4oZGJuYW1lKQorCitwcmVwYXJlRGF0YWJhc2UoKToKK2RiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdAorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKQor
c3RvcmUucHV0KCd2YWx1ZScsICdrZXknKQorCitydW5QYXJhbGxlbFRyYW5zYWN0aW9ucygpOgor
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0CisKK3RyYW5zYWN0aW9uMSA9IGRiLnRyYW5zYWN0aW9u
KCdzdG9yZScsICdyZWFkb25seScpCit0cmFuc2FjdGlvbjIgPSBkYi50cmFuc2FjdGlvbignc3Rv
cmUnLCAncmVhZG9ubHknKQordHJhbnNhY3Rpb24xR2V0U3VjY2VzcyA9IGZhbHNlCit0cmFuc2Fj
dGlvbjJHZXRTdWNjZXNzID0gZmFsc2UKK0tlZXAgYm90aCB0cmFuc2FjdGlvbnMgYWxpdmUgdW50
aWwgZWFjaCBoYXMgcmVwb3J0ZWQgYXQgbGVhc3Qgb25lIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uCisK
K29uVHJhbnNhY3Rpb25Db21wbGV0ZSgpOgorZmlyc3QgdHJhbnNhY3Rpb24gY29tcGxldGUsIHN0
aWxsIHdhaXRpbmcuLi4KKworb25UcmFuc2FjdGlvbkNvbXBsZXRlKCk6CitQQVNTIHRyYW5zYWN0
aW9uMUdldFN1Y2Nlc3MgaXMgdHJ1ZQorUEFTUyB0cmFuc2FjdGlvbjJHZXRTdWNjZXNzIGlzIHRy
dWUKK2RiLmNsb3NlKCkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFu
c2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGYwYzViN2Q0NTkxMGE0NTIxMzA5YzMzZmY0OWU0ZTZjNTJiN2Jm
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5z
YWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuaHRtbApAQCAtMCwwICsxLDExIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zY29wZS1zZXF1ZW5jaW5nLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXNjb3Bl
LXNlcXVlbmNpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3NWFhODAxNzQyNGM1NDkwNjJk
NmJiN2UyMWE3Nzk4MzI4N2U2OTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zY29wZS1zZXF1ZW5jaW5nLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDU5IEBACitDaGVjayB0aGF0IHNjb3BlIHJlc3RyaWN0aW9ucyBvbiByZWFkLXdy
aXRlIHRyYW5zYWN0aW9ucyBhcmUgZW5mb3JjZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWRE
QiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4
ZWREQjsKKworZGJuYW1lID0gInRyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNpbmcuaHRtbCIKK2lu
ZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3BlbihkYm5hbWUpCisK
K3ByZXBhcmVEYXRhYmFzZSgpOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitkYi5jcmVhdGVP
YmplY3RTdG9yZSgnYScpCitkYi5jcmVhdGVPYmplY3RTdG9yZSgnYicpCitkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnYycpCisKK3J1blRyYW5zYWN0aW9ucygpOgorZGIgPSBldmVudC50YXJnZXQucmVz
dWx0CisKK3RyYW5zYWN0aW9uMSA9IGRiLnRyYW5zYWN0aW9uKFsnYSddLCAncmVhZHdyaXRlJykK
K3RyYW5zYWN0aW9uMVN0YXJ0ZWQgPSBmYWxzZQordHJhbnNhY3Rpb24xQ29tcGxldGUgPSBmYWxz
ZQordHJhbnNhY3Rpb24xLm9iamVjdFN0b3JlKCdhJykuZ2V0KDApCisKK3RyYW5zYWN0aW9uMiBv
dmVybGFwcyB3aXRoIHRyYW5zYWN0aW9uMSwgc28gbXVzdCB3YWl0IHVudGlsIHRyYW5zYWN0aW9u
MSBjb21wbGV0ZXMKK3RyYW5zYWN0aW9uMiA9IGRiLnRyYW5zYWN0aW9uKFsnYScsICdiJ10sICdy
ZWFkd3JpdGUnKQordHJhbnNhY3Rpb24yU3RhcnRlZCA9IGZhbHNlCit0cmFuc2FjdGlvbjJDb21w
bGV0ZSA9IGZhbHNlCit0cmFuc2FjdGlvbjIub2JqZWN0U3RvcmUoJ2EnKS5nZXQoMCkKKwordHJh
bnNhY3Rpb24zIG92ZXJsYXBzIHdpdGggdHJhbnNhY3Rpb24yLCBzbyBtdXN0IHdhaXQgdW50aWwg
dHJhbnNhY3Rpb24yIGNvbXBsZXRlcworZXZlbiB0aG91Z2ggaXQgZG9lcyBub3Qgb3ZlcmxhcCB3
aXRoIHRyYW5zYWN0aW9uMQordHJhbnNhY3Rpb24zID0gZGIudHJhbnNhY3Rpb24oWydiJywgJ2Mn
XSwgJ3JlYWR3cml0ZScpCit0cmFuc2FjdGlvbjNTdGFydGVkID0gZmFsc2UKK3RyYW5zYWN0aW9u
M0NvbXBsZXRlID0gZmFsc2UKK3RyYW5zYWN0aW9uMy5vYmplY3RTdG9yZSgnYicpLmdldCgwKQor
Cit0cmFuc2FjdGlvbjFTdGFydGVkID0gdHJ1ZQorCit0cmFuc2FjdGlvbjFDb21wbGV0ZSA9IHRy
dWUKK1BBU1MgdHJhbnNhY3Rpb24yU3RhcnRlZCBpcyBmYWxzZQorUEFTUyB0cmFuc2FjdGlvbjNT
dGFydGVkIGlzIGZhbHNlCisKK1BBU1MgdHJhbnNhY3Rpb24xQ29tcGxldGUgaXMgdHJ1ZQordHJh
bnNhY3Rpb24yU3RhcnRlZCA9IHRydWUKKwordHJhbnNhY3Rpb24yQ29tcGxldGUgPSB0cnVlCitQ
QVNTIHRyYW5zYWN0aW9uM1N0YXJ0ZWQgaXMgZmFsc2UKKworUEFTUyB0cmFuc2FjdGlvbjFDb21w
bGV0ZSBpcyB0cnVlCitQQVNTIHRyYW5zYWN0aW9uMkNvbXBsZXRlIGlzIHRydWUKK3RyYW5zYWN0
aW9uM1N0YXJ0ZWQgPSB0cnVlCisKK3RyYW5zYWN0aW9uM0NvbXBsZXRlID0gdHJ1ZQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNp
bmcuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXNjb3Bl
LXNlcXVlbmNpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44M2VlZGMyN2I3NjgwMzBlY2Y3NGFjOWMwMGIz
M2FlZWI2ZDQxNTg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tc2NvcGUtc2VxdWVuY2luZy5odG1sCkBAIC0wLDAgKzEsMTEgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tc2NvcGUtc2VxdWVuY2luZy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLXN0YXJ2YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RhcnZhdGlvbi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjMxNDk4NzQ4NzUxMTlhYzZjZTJiYTE5NDE1YTNmYzMwOGE5ZTYyMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LXN0YXJ2YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzIgQEAKK0NoZWNrIHRoYXQgcmVh
ZC1vbmx5IHRyYW5zYWN0aW9ucyBkb24ndCBzdGFydmUgcmVhZC13cml0ZSB0cmFuc2FjdGlvbnMu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4
ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxm
Lm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworZGJuYW1lID0gInRyYW5zYWN0aW9u
LXN0YXJ2YXRpb24uaHRtbCIKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRl
eGVkREIub3BlbihkYm5hbWUpCisKK3ByZXBhcmVEYXRhYmFzZSgpOgorZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0CitkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKQorCitydW5UcmFuc2FjdGlv
bnMoKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorCityZWFkT25seVRyYW5zYWN0aW9uUnVu
bmluZyA9IGZhbHNlCityZWFkV3JpdGVUcmFuc2FjdGlvbkNvbXBsZXRlID0gZmFsc2UKK0tpY2sg
b2ZmIGFuIGVuZGxlc3Mgc2VyaWVzIG9mIHJlYWQtb25seSB0cmFuc2FjdGlvbnMKKworc3RhcnRS
ZWFkV3JpdGVUcmFuc2FjdGlvbigpOgordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3Rv
cmUnLCAncmVhZHdyaXRlJykKKworcmVhZFdyaXRlVHJhbnNhY3Rpb25Db21wbGV0ZSgpOgorcmVh
ZFdyaXRlVHJhbnNhY3Rpb25Db21wbGV0ZSA9IHRydWUKK1BBU1MgcmVhZE9ubHlUcmFuc2FjdGlv
blJ1bm5pbmcgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Ry
YW5zYWN0aW9uLXN0YXJ2YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLXN0YXJ2YXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjhmMGNlYzdjMmE1Mjhl
ODJmZjEzM2Y4MjUyYTI5ODg1OTk4YTNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RhcnZhdGlvbi5odG1sCkBAIC0wLDAgKzEs
MTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tc3RhcnZhdGlvbi5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177856</attachid>
            <date>2012-12-05 16:23:29 -0800</date>
            <delta_ts>2012-12-05 17:04:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97570-20121205162054.patch</filename>
            <type>text/plain</type>
            <size>41327</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFmZDQ5ZjNjODBhNDgz
N2I4MmI0MzVjZGE5MWY1ZDM0OWJkZWUyMy4uZjVlMzlkYmM5YmI1MGQ2MTYyM2Q0OTkzNWExY2E4
NjZjMjc3NzQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEyLTA0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBBbGxv
dyBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgdG8gcnVuIGluIHBhcmFsbGVsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU3MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBzcGVjIGxvZ2ljIGZv
ciBhbGxvd2luZyByZWFkLW9ubHkgdHJhbnNhY3Rpb25zLCBhbmQgcmVhZC13cml0ZSB0cmFuc2Fj
dGlvbnMKKyAgICAgICAgd2l0aCBub24tb3ZlcmxhcHBpbmcgc2NvcGVzLCB0byBydW4gaW4gcGFy
YWxsZWwuCisKKyAgICAgICAgV2l0aGluIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IsIHJlbmFt
ZSBzdGFydGVkLT5xdWV1ZWQsIHJ1bm5pbmctPnN0YXJ0ZWQgdG8gbWF0Y2gKKyAgICAgICAgc3Bl
YyB0ZXJtaW5vbG9neSBhbmQgY2xlYXIgdXAgY29uZnVzaW9uLgorCisgICAgICAgIFRlc3Q6IHN0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi1hY3Jvc3MtZGF0YWJhc2Vz
Lmh0bWwKKyAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRp
bmF0aW9uLXdpdGhpbi1kYXRhYmFzZS5odG1sCisgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLXJlYWR3cml0ZS1leGNsdXNpdmUuaHRtbAorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6IFVzZSBJREJUcmFuc2Fj
dGlvbjo6TW9kZSBlbnVtCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpjcmVhdGVUcmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5oOiBEaXR0by4KKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZElt
cGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZS5oOiBEaXR0by4KKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHA6
IENvbnZlcnQgc2NvcGUgYXMgYSBIYXNoU2V0IGZvcgorICAgICAgICBmYXN0IGludGVyc2VjdGlu
Zy4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Om1vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c2NvcGUpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwOiBTcGVj
IGxvZ2ljIGdvZXMgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRp
bmF0b3I6OnByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25zKTogRXh0ZW5kIHRoaXMKKyAgICAgICAg
bWV0aG9kIHRvIHRlc3QgYWxsIHBsYXVzaWJseSBydW5uYWJsZSB0cmFuc2FjdGlvbnMuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3I6OmNhblJ1blRyYW5zYWN0aW9uKTogVGVzdCB0byBzZWUgaWYgb25lCisgICAgICAgIHBhcnRp
Y3VsYXIgdHJhbnNhY3Rpb24gY2FuIGJlIHJ1bi4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3I6OmRvU2NvcGVzT3ZlcmxhcCk6IERvIGEgcXVpY2sgaW50ZXJzZWN0
aW9uCisgICAgICAgIHRlc3QgYmV0d2VlbiB0cmFuc2FjdGlvbiBzY29wZXMuCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oOgorICAgICAgICAo
SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcik6CisKIDIwMTItMTItMDUgIE1pY2hhZWwgUHJ1ZXR0
ICA8bWljaGFlbEA2OGsub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogSW1wbGVtZW50IEluZGV4
ZWREQiBiaW5kaW5ncyBmb3IgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDYzNDQ1
MGQ0YWQyZWM1ODdiNTQzYjQ1OGUyNGUxYTE0ZDIyMjQ3ZTguLjNjMTE3YTVjYzllMzE3MmIxMjUx
ODM4ZmNhOTM2ZmE5N2U3YjIwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTItMTItMDQgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4K
KworICAgICAgICBJbmRleGVkREI6IEFsbG93IG11bHRpcGxlIHRyYW5zYWN0aW9ucyB0byBydW4g
aW4gcGFyYWxsZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk3NTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWFwIHRvIElEQlRyYW5zYWN0aW9uOjpNb2RlIGVudW0gYXMgYXBwcm9wcmlhdGUuCisKKyAg
ICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAq
IHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNr
ZW5kUHJveHkpOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAg
ICAgICogdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHA6CisKIDIwMTItMTItMDUgIFN0
ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCA0NjM4ODc3NjRi
NTdkZTM2ZDVkOWQxN2JkYzNkZjk0OGY0YWM1OTVkLi4xNzA3NDgxNTE5NTFjNzYxNGNiOWIwOTc1
ZWNlYzllZDFkYzBiMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMzgwLDcgKzM4MCw3
IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiAg
ICAgfQogfQogCi1QYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9y
dCBtb2RlKQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25J
ZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246
Ok1vZGUgbW9kZSkKIHsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJh
bnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUodHJhbnNhY3Rpb25J
ZCwgb2JqZWN0U3RvcmVJZHMsIG1vZGUsIHRoaXMpOwogICAgIG1fdHJhbnNhY3Rpb25zLmFkZCh0
cmFuc2FjdGlvbi5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggZGYwYmEyZGFiNDM0OGFk
Yzc2NzhkNGQ3MDNiYWIwOTBlOGE2YjZjMi4uYTY1NDJjNmRiYjAyYWZkNjkyZjNiYjBmYjBlMzBk
ZmEyNTdjMjg3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRl
T2JqZWN0U3RvcmUoaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGlu
dDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBj
cmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpOworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0
aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RT
dG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAKICAgICBQYXNzUmVmUHRyPElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlKGludDY0X3QgaWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UuaAppbmRleCA4NTAwNjJjMjkxODczMmJhMzRhOTI3YzdiMDdlOTk1ZWE5
MDM2NGRmLi5lM2U4ZGYxYjFiM2NkMjgyZDY4ZDRiOGM4ZmJhM2FhZGM5NWRiZTFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2VfaAogI2RlZmluZSBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2VfaAogCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUo
aW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRv
SW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2Rl
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90LCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRy
YW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBv
YmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQgbW9kZSkgPSAwOworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9u
KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9y
ZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2Uo
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pID0gMDsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbC5jcHAKaW5kZXggYzU0MmZkZDc5MDg5OWVlYWJhMTQ0MTI0ZThlMzJlOTM0M2U3
MDRlMC4uMjZlOTY0NjVhZjg1MTZlOTg1ZWFjZDQyZDgxYzhlODg3NzliYmUwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTM5LDEyICszOSwxNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKGludDY0X3QgaWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90
PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGwqIGRhdGFiYXNlKQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUoaW50NjRfdCBpZCwgY29uc3QgVmVjdG9y
PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGlkLCBvYmplY3RTdG9yZUlkcywgbW9kZSwgZGF0
YWJhc2UpKTsKKyAgICBIYXNoU2V0PGludDY0X3Q+IG9iamVjdFN0b3JlSGFzaFNldDsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFN0b3JlSWRzLnNpemUoKTsgKytpKQorICAgICAg
ICBvYmplY3RTdG9yZUhhc2hTZXQuYWRkKG9iamVjdFN0b3JlSWRzW2ldKTsKKworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChpZCwgb2JqZWN0U3RvcmVI
YXNoU2V0LCBtb2RlLCBkYXRhYmFzZSkpOwogfQogCi1JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGludDY0X3QgaWQsIGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIElEQkRhdGFiYXNlQmFj
a2VuZEltcGwqIGRhdGFiYXNlKQorSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBvYmpl
Y3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbCogZGF0YWJhc2UpCiAgICAgOiBtX2lkKGlkKQogICAgICwgbV9vYmplY3RTdG9yZUlkcyhv
YmplY3RTdG9yZUlkcykKICAgICAsIG1fbW9kZShtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5o
CmluZGV4IGQyYTk1ODUwNjA4ZGE4OWY5ZDE3NDUzNWYzYmIxYTI4YzhjYjMyYTkuLjY0ZDQzMjZj
NjY5YTJjZGUzYjlkZDQyMzZmZDBjOTgwMGJiY2ZhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgogI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgog
I2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklE
QlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgpAQCAtNDQsNyArNDUsNyBAQCBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOwogCiBj
bGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbD4gY3JlYXRlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVj
dG9yPGludDY0X3Q+JiwgdW5zaWduZWQgc2hvcnQgbW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IGNy
ZWF0ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIElEQlRy
YW5zYWN0aW9uOjpNb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKik7CiAgICAgc3RhdGljIElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIGZyb20oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiBpbnRlcmZhY2UpCiAgICAgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbCo+KGludGVyZmFjZSk7CkBAIC01OCw3ICs1OSw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgYWJvcnQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik7CiAgICAg
dm9pZCBydW4oKTsKLSAgICB1bnNpZ25lZCBzaG9ydCBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9t
b2RlOyB9CisgICAgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kZTsgfQorICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlKCkgY29uc3QgeyByZXR1
cm4gbV9vYmplY3RTdG9yZUlkczsgfQogICAgIGJvb2wgaXNGaW5pc2hlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUgPT0gRmluaXNoZWQ7IH0KICAgICBib29sIHNjaGVkdWxlVGFzayhQYXNzT3du
UHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIFBhc3NPd25QdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gYWJvcnRUYXNrID0gbnVsbHB0cikgeyByZXR1cm4gc2No
ZWR1bGVUYXNrKE5vcm1hbFRhc2ssIHRhc2ssIGFib3J0VGFzayk7IH0KICAgICBib29sIHNjaGVk
dWxlVGFzayhUYXNrVHlwZSwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PiwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBhYm9ydFRhc2sgPSBu
dWxscHRyKTsKQEAgLTcwLDcgKzcyLDcgQEAgcHVibGljOgogICAgIGludDY0X3QgaWQoKSBjb25z
dCB7IHJldHVybiBtX2lkOyB9CiAKIHByaXZhdGU6Ci0gICAgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbChpbnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCB1
bnNpZ25lZCBzaG9ydCBtb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKik7CisgICAgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbChpbnQ2NF90IGlkLCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBv
YmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUsIElEQkRhdGFiYXNlQmFja2VuZElt
cGwqKTsKIAogICAgIGVudW0gU3RhdGUgewogICAgICAgICBVbnVzZWQsIC8vIENyZWF0ZWQsIGJ1
dCBubyB0YXNrcyB5ZXQuCkBAIC04OSw4ICs5MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbG9z
ZU9wZW5DdXJzb3JzKCk7CiAKICAgICBjb25zdCBpbnQ2NF90IG1faWQ7Ci0gICAgY29uc3QgVmVj
dG9yPGludDY0X3Q+IG1fb2JqZWN0U3RvcmVJZHM7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
bV9tb2RlOworICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4gbV9vYmplY3RTdG9yZUlkczsKKyAg
ICBjb25zdCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtX21vZGU7CiAKICAgICBTdGF0ZSBtX3N0YXRl
OwogICAgIGJvb2wgbV9jb21taXRQZW5kaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcApp
bmRleCA2ZGIwZDcwYmYyNThjNmNlZGRlOGQ5MmRkOWM5YjYwNTlhNDE0NmY5Li40Mjk4NDUwNDI2
NmY4YjVhOTZmMzYzM2VmODk5ODc4MDZmMDMyZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1
ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIApAQCAtNTgsNyArNTks
NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmRpZFN0YXJ0VHJhbnNhY3Rpb24o
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdAogewogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9u
cy5jb250YWlucyh0cmFuc2FjdGlvbikpOwogCi0gICAgbV9zdGFydGVkVHJhbnNhY3Rpb25zLmFk
ZCh0cmFuc2FjdGlvbik7CisgICAgbV9xdWV1ZWRUcmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9u
KTsKICAgICBwcm9jZXNzU3RhcnRlZFRyYW5zYWN0aW9ucygpOwogfQogCkBAIC02NiwxMSArNjcs
MTEgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpkaWRGaW5pc2hUcmFuc2FjdGlv
bihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKgogewogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9u
cy5jb250YWlucyh0cmFuc2FjdGlvbikpOwogCi0gICAgaWYgKG1fc3RhcnRlZFRyYW5zYWN0aW9u
cy5jb250YWlucyh0cmFuc2FjdGlvbikpIHsKLSAgICAgICAgQVNTRVJUKCFtX3J1bm5pbmdUcmFu
c2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKKyAgICBpZiAobV9xdWV1ZWRUcmFuc2Fj
dGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKSB7CisgICAgICAgIEFTU0VSVCghbV9zdGFydGVk
VHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSk7CisgICAgICAgIG1fcXVldWVkVHJh
bnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbik7CisgICAgfSBlbHNlIGlmIChtX3N0YXJ0ZWRU
cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKQogICAgICAgICBtX3N0YXJ0ZWRUcmFu
c2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uKTsKLSAgICB9IGVsc2UgaWYgKG1fcnVubmluZ1Ry
YW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpCi0gICAgICAgIG1fcnVubmluZ1RyYW5z
YWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24pOwogCiAgICAgbV90cmFuc2FjdGlvbnMucmVtb3Zl
KHRyYW5zYWN0aW9uKTsKIApAQCAtODIsOSArODMsOSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3I6OmRpZEZpbmlzaFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwq
CiBib29sIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmlzQWN0aXZlKElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogewogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAg
ICBpZiAobV9zdGFydGVkVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSkKKyAgICBp
ZiAobV9xdWV1ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKQogICAgICAgICBm
b3VuZCA9IHRydWU7Ci0gICAgaWYgKG1fcnVubmluZ1RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFu
c2FjdGlvbikpIHsKKyAgICBpZiAobV9zdGFydGVkVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5z
YWN0aW9uKSkgewogICAgICAgICBBU1NFUlQoIWZvdW5kKTsKICAgICAgICAgZm91bmQgPSB0cnVl
OwogICAgIH0KQEAgLTk1LDE3ICs5Niw1OCBAQCBib29sIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3I6OmlzQWN0aXZlKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogCiB2
b2lkIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OnByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25z
KCkKIHsKLSAgICAvLyBGSVhNRTogRm9yIG5vdywgd2Ugb25seSBhbGxvdyBvbmUgdHJhbnNhY3Rp
b24gdG8gcnVuIGF0IGEgdGltZS4KLSAgICBpZiAoIW1fcnVubmluZ1RyYW5zYWN0aW9ucy5pc0Vt
cHR5KCkpCisgICAgaWYgKG1fcXVldWVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9zdGFydGVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSB8
fCAoKm1fc3RhcnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpKS0+bW9kZSgpICE9IElEQlRyYW5zYWN0
aW9uOjpWRVJTSU9OX0NIQU5HRSk7CisKKyAgICBMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuYmVn
aW4oKTsKKyAgICB3aGlsZSAoaXQgIT0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuZW5kKCkpIHsKKyAg
ICAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSAqaXQ7CisgICAg
ICAgICsraXQ7CisgICAgICAgIGlmIChjYW5SdW5UcmFuc2FjdGlvbih0cmFuc2FjdGlvbikpIHsK
KyAgICAgICAgICAgIG1fcXVldWVkVHJhbnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbik7Cisg
ICAgICAgICAgICBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9uKTsKKyAgICAg
ICAgICAgIHRyYW5zYWN0aW9uLT5ydW4oKTsKKyAgICAgICAgfQorICAgIH0KK30KIAotICAgIElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gKm1fc3RhcnRlZFRyYW5zYWN0
aW9ucy5iZWdpbigpOwotICAgIG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rp
b24pOwotICAgIG1fcnVubmluZ1RyYW5zYWN0aW9ucy5hZGQodHJhbnNhY3Rpb24pOwotICAgIHRy
YW5zYWN0aW9uLT5ydW4oKTsKK3N0YXRpYyBib29sIGRvU2NvcGVzT3ZlcmxhcChjb25zdCBIYXNo
U2V0PGludDY0X3Q+JiBzY29wZTEsIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlMikKK3sK
KyAgICBmb3IgKEhhc2hTZXQ8aW50NjRfdD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2NvcGUxLmJl
Z2luKCk7IGl0ICE9IHNjb3BlMS5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoc2NvcGUyLmNv
bnRhaW5zKCppdCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmNhblJ1blRyYW5z
YWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQoreworICAgIEFT
U0VSVChtX3F1ZXVlZFRyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpOworICAgIHN3
aXRjaCAodHJhbnNhY3Rpb24tPm1vZGUoKSkgeworICAgIGNhc2UgSURCVHJhbnNhY3Rpb246OlZF
UlNJT05fQ0hBTkdFOgorICAgICAgICBBU1NFUlQobV9xdWV1ZWRUcmFuc2FjdGlvbnMuc2l6ZSgp
ID09IDEpOworICAgICAgICBBU1NFUlQobV9zdGFydGVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSk7
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgY2FzZSBJREJUcmFuc2FjdGlvbjo6UkVBRF9P
TkxZOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgSURCVHJhbnNhY3Rpb246OlJF
QURfV1JJVEU6CisgICAgICAgIGZvciAoSGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdGFydGVkVHJhbnNhY3Rpb25zLmJlZ2luKCk7IGl0
ICE9IG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgaWYg
KCgqaXQpLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlJFQURfV1JJVEUgJiYgZG9TY29wZXNP
dmVybGFwKHRyYW5zYWN0aW9uLT5zY29wZSgpLCAoKml0KS0+c2NvcGUoKSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGZvciAoTGlzdEhhc2hTZXQ8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcXVldWVk
VHJhbnNhY3Rpb25zLmJlZ2luKCk7ICppdCAhPSB0cmFuc2FjdGlvbjsgKytpdCkgeworICAgICAg
ICAgICAgQVNTRVJUKGl0ICE9IG1fcXVldWVkVHJhbnNhY3Rpb25zLmVuZCgpKTsKKyAgICAgICAg
ICAgIGlmICgoKml0KS0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX1dSSVRFICYmIGRv
U2NvcGVzT3ZlcmxhcCh0cmFuc2FjdGlvbi0+c2NvcGUoKSwgKCppdCktPnNjb3BlKCkpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwog
fQogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oCmluZGV4IDgyOTk4NTMyMjBjY2FhNjQ1NGNm
NjQyZTgwNTk4NDA4MjYzMzRiZjMuLjg5OWI1MTZiNmE2NDZmYTc5ZDhhNTM4Mzk5NjhjZjA1NzFh
MTQxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgKQEAgLTU4LDEyICs1OCwxMyBAQCBwcml2
YXRlOgogICAgIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKTsKIAogICAgIHZvaWQgcHJvY2Vz
c1N0YXJ0ZWRUcmFuc2FjdGlvbnMoKTsKKyAgICBib29sIGNhblJ1blRyYW5zYWN0aW9uKElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGwqKTsKIAogICAgIC8vIFRoaXMgaXMganVzdCBhbiBlZmZpY2ll
bnQgd2F5IHRvIGtlZXAgcmVmZXJlbmNlcyB0byBhbGwgdHJhbnNhY3Rpb25zLgogICAgIEhhc2hN
YXA8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCosIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsPiA+IG1fdHJhbnNhY3Rpb25zOwogICAgIC8vIFRyYW5zYWN0aW9ucyBpbiBkaWZmZXJl
bnQgc3RhdGVzIGFyZSBncm91cGVkIGJlbG93LgotICAgIExpc3RIYXNoU2V0PElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwqPiBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnM7Ci0gICAgSGFzaFNldDxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKj4gbV9ydW5uaW5nVHJhbnNhY3Rpb25zOworICAgIExpc3RI
YXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqPiBtX3F1ZXVlZFRyYW5zYWN0aW9uczsK
KyAgICBIYXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqPiBtX3N0YXJ0ZWRUcmFuc2Fj
dGlvbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggZTlj
ODBkMGNmNjI5ZWMyNDc3YWRhMTNiODhmNDQ3ZmE5NTkyZGE0OC4uOTI1NDAxNmZjZjI0ODMxNmY4
M2E5MDU3NTJmOTEyMTJiODY4ZmRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcApAQCAtODUsNyArODUsNyBAQCB2
b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIElEQlRyYW5zYQogICAgIG1fd2ViSURCRGF0YWJhc2UtPmRlbGV0ZU9iamVj
dFN0b3JlKG9iamVjdFN0b3JlSWQsICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2Fj
dGlvbigpLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlPiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCBp
ZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQg
bW9kZSkKK1Bhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRh
YmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCBpZCwgY29uc3QgVmVj
dG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSkK
IHsKICAgICBPd25QdHI8V2ViSURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gYWRvcHRQdHIo
bV93ZWJJREJEYXRhYmFzZS0+Y3JlYXRlVHJhbnNhY3Rpb24oaWQsIG9iamVjdFN0b3JlSWRzLCBt
b2RlKSk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCmluZGV4IDAzZDA1ZDkyYjE2ZTQ4
YzI5ZTkzMzdiYWZlM2Y5MDAzNjJiZDk2MDkuLjE3MTRhNTQ2OWVmZWMyNWFlYzhmMmJkYjc0NGFk
ZjM3YzljMzFhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRh
dGFiYXNlQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
PiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIHVuc2ln
bmVkIHNob3J0IG1vZGUpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QsIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpNb2RlKTsKICAgICB2
aXJ0dWFsIHZvaWQgY2xvc2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNr
cz4pOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCRGF0YWJhc2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggNDAzYTMwYmVlNTEwNzYzMDc2YWQxNmY2YTlkMzg0MmJi
YTlmYmQ0MC4uMzBjZWJiNTljZWYzOTQzMDc0ODY5YjVlN2UyNzEyMDY3NDUzOGIyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCkBA
IC04MCw3ICs4MCw3IEBAIFdlYklEQlRyYW5zYWN0aW9uKiBXZWJJREJEYXRhYmFzZUltcGw6OmNy
ZWF0ZVRyYW5zYWN0aW9uKGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViCiAgICAgVmVjdG9yPGludDY0
X3Q+IG9iamVjdFN0b3JlSWRMaXN0KG9iamVjdFN0b3JlSWRzLnNpemUoKSk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBvYmplY3RTdG9yZUlkcy5zaXplKCk7ICsraSkKICAgICAgICAgb2Jq
ZWN0U3RvcmVJZExpc3RbaV0gPSBvYmplY3RTdG9yZUlkc1tpXTsKLSAgICBSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbiA9IG1fZGF0YWJhc2VCYWNrZW5k
LT5jcmVhdGVUcmFuc2FjdGlvbihpZCwgb2JqZWN0U3RvcmVJZExpc3QsIG1vZGUpOworICAgIFJl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uID0gbV9kYXRh
YmFzZUJhY2tlbmQtPmNyZWF0ZVRyYW5zYWN0aW9uKGlkLCBvYmplY3RTdG9yZUlkTGlzdCwgc3Rh
dGljX2Nhc3Q8SURCVHJhbnNhY3Rpb246Ok1vZGU+KG1vZGUpKTsKICAgICBpZiAoIXRyYW5zYWN0
aW9uKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbmV3IFdlYklEQlRyYW5zYWN0aW9u
SW1wbCh0cmFuc2FjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcAppbmRleCAwZDI2MjI0NjY1MzgxNGE0N2Rj
OThmYThiM2M5ZmEwYjlhMjEyYmEzLi5iNDVmZmIzZTU3NjY2ZjU4OTc4YzIxN2Q5YzgyZWEzODli
ZjA5YmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFi
YXNlQmFja2VuZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURC
RGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRl
T2JqZWN0U3RvcmUoaW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRo
JiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJikgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmpl
Y3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSosIEV4Y2VwdGlvbkNvZGUmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3Rv
cmUoaW50NjRfdCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29k
ZSYpIHsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYs
IHVuc2lnbmVkIHNob3J0IG1vZGUpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2
NF90LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBJREJUcmFuc2FjdGlvbjo6TW9kZSkgeyByZXR1
cm4gMDsgfQogCiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+KQogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5OGIzZWViOWFiMjVhNDAxY2YyYTYxMmY1OGJiOGZj
YzY4N2FhYjQ0Li5jZjEzZGQ0M2U1MmNiNzI1MWRiMTY2MTRhMGYyNTc3ZTc3YzI4NmZlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMTItMDQgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEFsbG93IG11bHRpcGxlIHRyYW5zYWN0aW9u
cyB0byBydW4gaW4gcGFyYWxsZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk3NTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTmV3IHRlc3RzIGZvciBwYXJhbGxlbCB0cmFuc2FjdGlvbnMsIHVwZGF0ZSBl
eGlzdGluZyB0ZXN0cyB0aGF0IHJlbGllZCBvbiBzZXF1ZW50aWFsIGV4ZWN1dGlvbi4KKworICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWNsb3NlLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jbGVhci5qczogU3Bs
aXQgdXAgdHJhbnNhY3Rpb24gc3RlcHMuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2RhdGFiYXNlLWNsb3NlLmpzOiBEb24ndCBsb2cgb24gaW5kaXZpZHVhbCB0cmFuc2Fj
dGlvbiBjb21wbGV0aW9uLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90
cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc2NvcGUtc2VxdWVu
Y2luZy5qczogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3Ry
YW5zYWN0aW9uLXN0YXJ2YXRpb24uanM6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGlu
YXRpb24td2l0aGluLWRhdGFiYXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zY29wZS1zZXF1ZW5jaW5n
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXN0
YXJ2YXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1zdGFydmF0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEyLTA1ICBTdGVw
aGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1
bV0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9kYXRhYmFzZS1jbG9zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1jbG9zZS1leHBlY3RlZC50eHQKaW5kZXggYTMwNzlmYTJl
MDVlMTMzMGNmMGU4MjY5ODA3ODE1MDNkYWNhOWUwNi4uNjAyODFlZGI5ZWViMjM0MmMxZDYzMWQ1
MDZhMTYyMDdhMTc2MjcyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvZGF0YWJhc2UtY2xvc2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2RhdGFiYXNlLWNsb3NlLWV4cGVjdGVkLnR4dApAQCAtMzksMTEgKzM5LDkgQEAg
aW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKIAogdHJhbnNhY3Rpb24gIzEgcmVxdWVz
dCBzdWNjZXNzZnVsCiBQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgInZhbHVlMSIKLWF3YWl0
aW5nX3RyYW5zYWN0aW9uX2NvdW50IC09IDEKIAogdHJhbnNhY3Rpb24gIzIgcmVxdWVzdCBzdWNj
ZXNzZnVsCiBQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgInZhbHVlMiIKLWF3YWl0aW5nX3Ry
YW5zYWN0aW9uX2NvdW50IC09IDEKIAogQWxsIHRyYW5zYWN0aW9ucyBjb21wbGV0ZWQgLSBkYXRh
YmFzZSBkZWxldGVzIHNob3VsZCBub3cgYmUgdW5ibG9ja2VkLgogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXItZXhwZWN0ZWQudHh0Cmlu
ZGV4IGVmYTBlMWE1ZDMzYjEzOTEwNzU0OTY3ZmQ4Y2RkY2ExM2JjZGUyMjEuLjUwNWZlNzUzYTQx
NTlhYmRjNDAyOWNkOGNlMTFlMmY5NDZmM2NkNzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXItZXhwZWN0ZWQudHh0CkBAIC0xNCw3
ICsxNCw4IEBAIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi50cmFuc2FjdGlvbignZm9vJyku
b2JqZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7CiBQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgog
UEFTUyBjb2RlIGlzIDAKIFBBU1MgZW5hbWUgaXMgJ1JlYWRPbmx5RXJyb3InCi1kYi50cmFuc2Fj
dGlvbignZm9vJywgJ3JlYWR3cml0ZScpLm9iamVjdFN0b3JlKCdmb28nKS5jbGVhcigpOworZGIu
dHJhbnNhY3Rpb24oJ2ZvbycsICdyZWFkd3JpdGUnKQordHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
J2ZvbycpLmNsZWFyKCk7CiByZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0
b3JlKCdmb28nKS5vcGVuQ3Vyc29yKCk7CiBjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsKIFBBU1Mg
Y3Vyc29yIGlzIG51bGwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvcmVzb3VyY2VzL2NsZWFyLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9yZXNvdXJjZXMvY2xlYXIuanMKaW5kZXggYzgyZmFmMjYxMGU0ZmQ0Y2IxMjg2
NmY5NmZlNDZjYzFlNjVhNjc0Ni4uNzlmM2I3OGU0MjZhM2UzNTBiMTJmMjJlZGJlYjQ4ODJlYjQ2
M2MxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9y
ZXNvdXJjZXMvY2xlYXIuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZXNvdXJjZXMvY2xlYXIuanMKQEAgLTI0LDcgKzI0LDE0IEBAIGZ1bmN0aW9uIHByZXBh
cmVEYXRhYmFzZSgpCiBmdW5jdGlvbiBjbGVhcigpCiB7CiAgICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigiZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0b3JlKCdmb28nKS5jbGVhcigpOyIs
ICIwIiwgIidSZWFkT25seUVycm9yJyIpOwotICAgIGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9u
KCdmb28nLCAncmVhZHdyaXRlJykub2JqZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7Iik7CisgICAg
dHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbignZm9vJywgJ3JlYWR3cml0
ZScpIik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ2ZvbycpLmNs
ZWFyKCk7Iik7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGNsZWFyZWQ7CisgICAgdHJh
bnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworfQorCitmdW5jdGlv
biBjbGVhcmVkKCkKK3sKICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRy
YW5zYWN0aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJykub3BlbkN1cnNvcigpOyIpOwogICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gYXJlV2VDbGVhcllldDsKICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1jbG9zZS5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1jbG9zZS5qcwppbmRleCA2OTFlNTVi
Y2YxZjFiNzgzZDVkYzhhNTdjNmVhNjQzZjE4M2RiMzU2Li40NmRiYTMwZjViZGNiZTQxMjFiZjFl
OGJmMjJmZWQwZDBlNDU5MmE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvZGF0YWJhc2UtY2xvc2UuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLWNsb3NlLmpzCkBAIC0zNSw3ICszNSw3IEBA
IGZ1bmN0aW9uIHRlc3RDbG9zZSgpCiAgICAgZGVidWcoIlN0ZXAgMjogV2FpdCBmb3IgYWxsIHRy
YW5zYWN0aW9ucyBjcmVhdGVkIHVzaW5nIGNvbm5lY3Rpb24gdG8gY29tcGxldGUuIE9uY2UgdGhl
eSBhcmUgY29tcGxldGUsIGNvbm5lY3Rpb24gaXMgY2xvc2VkLiIpOwogICAgIGV2YWxBbmRMb2co
ImF3YWl0aW5nX3RyYW5zYWN0aW9uX2NvdW50ID0gMiIpOwogICAgIGZ1bmN0aW9uIHRyYW5zYWN0
aW9uQ29tcGxldGVkKCkgewotICAgICAgICBldmFsQW5kTG9nKCJhd2FpdGluZ190cmFuc2FjdGlv
bl9jb3VudCAtPSAxIik7CisgICAgICAgIGF3YWl0aW5nX3RyYW5zYWN0aW9uX2NvdW50IC09IDE7
CiAKICAgICAgICAgaWYgKGF3YWl0aW5nX3RyYW5zYWN0aW9uX2NvdW50ID09IDApIHsKICAgICAg
ICAgICAgIGRlYnVnKCIiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNv
b3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZmMDM1OTJhZDRiYWNj
M2M4ZDcxM2UxYzJlNmU4MzJmZGZmOGEyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0
aGluLWRhdGFiYXNlLmpzCkBAIC0wLDAgKzEsNzcgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiQ2hlY2sgdGhhdCByZWFkLW9ubHkgdHJhbnNhY3Rpb25zIHdpdGhpbiBhIGRhdGFiYXNl
IGNhbiBydW4gaW4gcGFyYWxsZWwuIik7CisKK2luZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNl
LCBydW5QYXJhbGxlbFRyYW5zYWN0aW9ucyk7CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZShl
dnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCd2YWx1ZScsICdrZXkn
KSIpOworfQorCitmdW5jdGlvbiBydW5QYXJhbGxlbFRyYW5zYWN0aW9ucyhldnQpCit7CisgICAg
cHJlYW1ibGUoZXZ0KTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKyAgICBkZWJ1ZygiIik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24xID0gZGIudHJh
bnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWRvbmx5JykiKTsKKyAgICB0cmFuc2FjdGlvbjEub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uMS5vbmNvbXBsZXRl
ID0gb25UcmFuc2FjdGlvbkNvbXBsZXRlOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMiA9
IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkb25seScpIik7CisgICAgdHJhbnNhY3Rpb24x
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbjIub25j
b21wbGV0ZSA9IG9uVHJhbnNhY3Rpb25Db21wbGV0ZTsKKworICAgIGV2YWxBbmRMb2coInRyYW5z
YWN0aW9uMUdldFN1Y2Nlc3MgPSBmYWxzZSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9u
MkdldFN1Y2Nlc3MgPSBmYWxzZSIpOworCisgICAgZGVidWcoIktlZXAgYm90aCB0cmFuc2FjdGlv
bnMgYWxpdmUgdW50aWwgZWFjaCBoYXMgcmVwb3J0ZWQgYXQgbGVhc3Qgb25lIHN1Y2Nlc3NmdWwg
b3BlcmF0aW9uIik7CisKKyAgICBmdW5jdGlvbiBkb1RyYW5zYWN0aW9uMUdldCgpIHsKKyAgICAg
ICAgLy8gTk9URTogTm8gbG9nZ2luZyBzaW5jZSBleGVjdXRpb24gb3JkZXIgaXMgbm90IGRldGVy
bWluaXN0aWMuCisgICAgICAgIHJlcXVlc3QgPSB0cmFuc2FjdGlvbjEub2JqZWN0U3RvcmUoJ3N0
b3JlJykuZ2V0KCdrZXknKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICB0cmFuc2FjdGlvbjFHZXRTdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgICAgIGlm
ICghdHJhbnNhY3Rpb24yR2V0U3VjY2VzcykKKyAgICAgICAgICAgICAgICBkb1RyYW5zYWN0aW9u
MUdldCgpOworICAgICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIGRvVHJhbnNhY3Rpb24y
R2V0KCkgeworICAgICAgICAvLyBOT1RFOiBObyBsb2dnaW5nIHNpbmNlIGV4ZWN1dGlvbiBvcmRl
ciBpcyBub3QgZGV0ZXJtaW5pc3RpYy4KKyAgICAgICAgcmVxdWVzdCA9IHRyYW5zYWN0aW9uMi5v
YmplY3RTdG9yZSgnc3RvcmUnKS5nZXQoJ2tleScpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRyYW5zYWN0aW9uMkdldFN1Y2Nlc3MgPSB0cnVlOwor
ICAgICAgICAgICAgaWYgKCF0cmFuc2FjdGlvbjFHZXRTdWNjZXNzKQorICAgICAgICAgICAgICAg
IGRvVHJhbnNhY3Rpb24yR2V0KCk7CisgICAgICAgIH07CisgICAgfQorCisgICAgZG9UcmFuc2Fj
dGlvbjFHZXQoKTsKKyAgICBkb1RyYW5zYWN0aW9uMkdldCgpOworfQorCit0cmFuc2FjdGlvbkNv
bXBsZXRpb25Db3VudCA9IDA7CitmdW5jdGlvbiBvblRyYW5zYWN0aW9uQ29tcGxldGUoZXZ0KQor
eworICAgIHByZWFtYmxlKGV2dCk7CisKKyAgICArK3RyYW5zYWN0aW9uQ29tcGxldGlvbkNvdW50
OworICAgIGlmICh0cmFuc2FjdGlvbkNvbXBsZXRpb25Db3VudCA8IDIpIHsKKyAgICAgICAgZGVi
dWcoImZpcnN0IHRyYW5zYWN0aW9uIGNvbXBsZXRlLCBzdGlsbCB3YWl0aW5nLi4uIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZVRydWUoInRyYW5zYWN0aW9uMUdldFN1
Y2Nlc3MiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zYWN0aW9uMkdldFN1Y2Nlc3MiKTsKKwor
ICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2Fj
dGlvbi1zY29wZS1zZXF1ZW5jaW5nLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNpbmcuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzJm
OGEwOWE5ZTgzMDgwMDJlNWYxNGU5ZGRjOGFiYmIwZjc2YTU4MwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1zY29w
ZS1zZXF1ZW5jaW5nLmpzCkBAIC0wLDAgKzEsODEgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiQ2hlY2sgdGhhdCBzY29wZSByZXN0cmljdGlvbnMgb24gcmVhZC13cml0ZSB0cmFuc2Fj
dGlvbnMgYXJlIGVuZm9yY2VkLiIpOworCitpbmRleGVkREJUZXN0KHByZXBhcmVEYXRhYmFzZSwg
cnVuVHJhbnNhY3Rpb25zKTsKKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKGV2dCkKK3sKKyAg
ICBwcmVhbWJsZShldnQpOworICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhJykiKTsKKyAgICBl
dmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYicpIik7CisgICAgZXZhbEFuZExvZygi
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2MnKSIpOworfQorCitmdW5jdGlvbiBydW5UcmFuc2FjdGlv
bnMoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7CisgICAgZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgZGVidWcoIiIpOworCisgICAgZXZhbEFuZExvZygidHJh
bnNhY3Rpb24xID0gZGIudHJhbnNhY3Rpb24oWydhJ10sICdyZWFkd3JpdGUnKSIpOworICAgIGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uMVN0YXJ0ZWQgPSBmYWxzZSIpOworICAgIGV2YWxBbmRMb2co
InRyYW5zYWN0aW9uMUNvbXBsZXRlID0gZmFsc2UiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygidHJhbnNhY3Rpb24xLm9iamVjdFN0b3JlKCdhJykuZ2V0KDApIik7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBldmFsQW5kTG9nKCJ0
cmFuc2FjdGlvbjFTdGFydGVkID0gdHJ1ZSIpOworICAgIH07CisgICAgdHJhbnNhY3Rpb24xLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbjEub25jb21w
bGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uMUNvbXBsZXRlID0gdHJ1ZSIpOworICAgICAgICBzaG91bGRCZUZhbHNl
KCJ0cmFuc2FjdGlvbjJTdGFydGVkIik7CisgICAgICAgIHNob3VsZEJlRmFsc2UoInRyYW5zYWN0
aW9uM1N0YXJ0ZWQiKTsKKyAgICB9OworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0cmFu
c2FjdGlvbjIgb3ZlcmxhcHMgd2l0aCB0cmFuc2FjdGlvbjEsIHNvIG11c3Qgd2FpdCB1bnRpbCB0
cmFuc2FjdGlvbjEgY29tcGxldGVzIik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24yID0g
ZGIudHJhbnNhY3Rpb24oWydhJywgJ2InXSwgJ3JlYWR3cml0ZScpIik7CisgICAgZXZhbEFuZExv
ZygidHJhbnNhY3Rpb24yU3RhcnRlZCA9IGZhbHNlIik7CisgICAgZXZhbEFuZExvZygidHJhbnNh
Y3Rpb24yQ29tcGxldGUgPSBmYWxzZSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFu
c2FjdGlvbjIub2JqZWN0U3RvcmUoJ2EnKS5nZXQoMCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKCkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidHJhbnNh
Y3Rpb24xQ29tcGxldGUiKTsKKyAgICAgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24yU3RhcnRl
ZCA9IHRydWUiKTsKKyAgICB9OworICAgIHRyYW5zYWN0aW9uMi5vbmFib3J0ID0gdW5leHBlY3Rl
ZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24yLm9uY29tcGxldGUgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjJD
b21wbGV0ZSA9IHRydWUiKTsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgidHJhbnNhY3Rpb24zU3Rh
cnRlZCIpOworICAgIH07CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRyYW5zYWN0aW9u
MyBvdmVybGFwcyB3aXRoIHRyYW5zYWN0aW9uMiwgc28gbXVzdCB3YWl0IHVudGlsIHRyYW5zYWN0
aW9uMiBjb21wbGV0ZXMiKTsKKyAgICBkZWJ1ZygiZXZlbiB0aG91Z2ggaXQgZG9lcyBub3Qgb3Zl
cmxhcCB3aXRoIHRyYW5zYWN0aW9uMSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMyA9
IGRiLnRyYW5zYWN0aW9uKFsnYicsICdjJ10sICdyZWFkd3JpdGUnKSIpOworICAgIGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uM1N0YXJ0ZWQgPSBmYWxzZSIpOworICAgIGV2YWxBbmRMb2coInRyYW5z
YWN0aW9uM0NvbXBsZXRlID0gZmFsc2UiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJh
bnNhY3Rpb24zLm9iamVjdFN0b3JlKCdiJykuZ2V0KDApIik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBzaG91bGRCZVRydWUoInRyYW5z
YWN0aW9uMUNvbXBsZXRlIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidHJhbnNhY3Rpb24yQ29t
cGxldGUiKTsKKyAgICAgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24zU3RhcnRlZCA9IHRydWUi
KTsKKyAgICB9OworICAgIHRyYW5zYWN0aW9uMy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7CisgICAgdHJhbnNhY3Rpb24zLm9uY29tcGxldGUgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgZGVidWcoIiIpOworICAgICAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjNDb21wbGV0ZSA9
IHRydWUiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1zdGFy
dmF0aW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5z
YWN0aW9uLXN0YXJ2YXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGIyZjk3ZWY5MGQwNzljMjA0MmI5ZDU2
ZGFmOWFiOWZiYmQxNTZmNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1zdGFydmF0aW9uLmpzCkBAIC0wLDAgKzEs
NjMgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiQ2hlY2sgdGhhdCByZWFkLW9ubHkg
dHJhbnNhY3Rpb25zIGRvbid0IHN0YXJ2ZSByZWFkLXdyaXRlIHRyYW5zYWN0aW9ucy4iKTsKKwor
aW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJhc2UsIHJ1blRyYW5zYWN0aW9ucyk7CisKK2Z1bmN0
aW9uIHByZXBhcmVEYXRhYmFzZShldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworfQorCitmdW5jdGlvbiBydW5UcmFuc2FjdGlv
bnMoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7CisgICAgZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgZGVidWcoIiIpOworCisgICAgZXZhbEFuZExvZygicmVh
ZFdyaXRlVHJhbnNhY3Rpb25TdGFydGVkID0gZmFsc2UiKTsKKyAgICBldmFsQW5kTG9nKCJyZWFk
V3JpdGVUcmFuc2FjdGlvbkNvbXBsZXRlID0gZmFsc2UiKTsKKworICAgIHN0YXJ0UmVhZE9ubHlU
cmFuc2FjdGlvbigpOworfQorCisKK2Z1bmN0aW9uIHN0YXJ0UmVhZE9ubHlUcmFuc2FjdGlvbigp
Cit7CisgICAgcHJlYW1ibGUoKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRy
YW5zYWN0aW9uKCdzdG9yZScsICdyZWFkb25seScpIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBkZWJ1ZygiS2VlcCB0aGUgdHJh
bnNhY3Rpb24gYWxpdmUgd2l0aCBhbiBlbmRsZXNzIHNlcmllcyBvZiBnZXRzIik7CisKKyAgICBm
dW5jdGlvbiBkb0dldCgpIHsKKyAgICAgICAgcmVxdWVzdCA9IHN0b3JlLmdldCgwKTsKKyAgICAg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICghcmVh
ZFdyaXRlVHJhbnNhY3Rpb25TdGFydGVkKQorICAgICAgICAgICAgICAgIHN0YXJ0UmVhZFdyaXRl
VHJhbnNhY3Rpb24oKTsKKworICAgICAgICAgICAgaWYgKCFyZWFkV3JpdGVUcmFuc2FjdGlvbkNv
bXBsZXRlKQorICAgICAgICAgICAgICAgIGRvR2V0KCk7CisgICAgICAgIH07CisgICAgfQorICAg
IGRvR2V0KCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0UmVhZFdyaXRlVHJhbnNhY3Rpb24oKQorewor
ICAgIHByZWFtYmxlKCk7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2Fj
dGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgZXZhbEFuZExvZygicmVhZFdyaXRlVHJhbnNh
Y3Rpb25TdGFydGVkID0gdHJ1ZSIpOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5j
dGlvbiByZWFkV3JpdGVUcmFuc2FjdGlvbkNvbXBsZXRlKCkgeworICAgICAgICBwcmVhbWJsZSgp
OworICAgICAgICB0ZXN0UGFzc2VkKCJUcmFuc2FjdGlvbiB3YXNuJ3Qgc3RhcnZlZCIpOworICAg
ICAgICBldmFsQW5kTG9nKCJyZWFkV3JpdGVUcmFuc2FjdGlvbkNvbXBsZXRlID0gdHJ1ZSIpOwor
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLXdpdGhpbi1kYXRh
YmFzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZmM2ZmYzk4MDdiZjgwY2U3YjljNWEwYjk5
YTk5YzgyNmY0MTJiMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMzYgQEAKK0NoZWNrIHRoYXQgcmVhZC1vbmx5IHRyYW5zYWN0aW9ucyB3
aXRoaW4gYSBkYXRhYmFzZSBjYW4gcnVuIGluIHBhcmFsbGVsLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJ
bmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxm
Lk9JbmRleGVkREI7CisKK2RibmFtZSA9ICJ0cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGlu
LWRhdGFiYXNlLmh0bWwiCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQoraW5kZXhl
ZERCLm9wZW4oZGJuYW1lKQorCitwcmVwYXJlRGF0YWJhc2UoKToKK2RiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdAorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKQorc3RvcmUucHV0
KCd2YWx1ZScsICdrZXknKQorCitydW5QYXJhbGxlbFRyYW5zYWN0aW9ucygpOgorZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0CisKK3RyYW5zYWN0aW9uMSA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScs
ICdyZWFkb25seScpCit0cmFuc2FjdGlvbjIgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVh
ZG9ubHknKQordHJhbnNhY3Rpb24xR2V0U3VjY2VzcyA9IGZhbHNlCit0cmFuc2FjdGlvbjJHZXRT
dWNjZXNzID0gZmFsc2UKK0tlZXAgYm90aCB0cmFuc2FjdGlvbnMgYWxpdmUgdW50aWwgZWFjaCBo
YXMgcmVwb3J0ZWQgYXQgbGVhc3Qgb25lIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uCisKK29uVHJhbnNh
Y3Rpb25Db21wbGV0ZSgpOgorZmlyc3QgdHJhbnNhY3Rpb24gY29tcGxldGUsIHN0aWxsIHdhaXRp
bmcuLi4KKworb25UcmFuc2FjdGlvbkNvbXBsZXRlKCk6CitQQVNTIHRyYW5zYWN0aW9uMUdldFN1
Y2Nlc3MgaXMgdHJ1ZQorUEFTUyB0cmFuc2FjdGlvbjJHZXRTdWNjZXNzIGlzIHRydWUKK2RiLmNs
b3NlKCkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1j
b29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGYwYzViN2Q0NTkxMGE0NTIxMzA5YzMzZmY0OWU0ZTZjNTJiN2JmMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNv
b3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuaHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zY29wZS1zZXF1ZW5jaW5nLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNp
bmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3NWFhODAxNzQyNGM1NDkwNjJkNmJiN2UyMWE3
Nzk4MzI4N2U2OTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1zY29wZS1zZXF1ZW5jaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDU5IEBACitDaGVjayB0aGF0IHNjb3BlIHJlc3RyaWN0aW9ucyBvbiByZWFkLXdyaXRlIHRyYW5z
YWN0aW9ucyBhcmUgZW5mb3JjZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitp
bmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxm
Lm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKwor
ZGJuYW1lID0gInRyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNpbmcuaHRtbCIKK2luZGV4ZWREQi5k
ZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3BlbihkYm5hbWUpCisKK3ByZXBhcmVE
YXRhYmFzZSgpOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnYScpCitkYi5jcmVhdGVPYmplY3RTdG9yZSgnYicpCitkYi5jcmVhdGVPYmplY3RTdG9yZSgn
YycpCisKK3J1blRyYW5zYWN0aW9ucygpOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CisKK3Ry
YW5zYWN0aW9uMSA9IGRiLnRyYW5zYWN0aW9uKFsnYSddLCAncmVhZHdyaXRlJykKK3RyYW5zYWN0
aW9uMVN0YXJ0ZWQgPSBmYWxzZQordHJhbnNhY3Rpb24xQ29tcGxldGUgPSBmYWxzZQordHJhbnNh
Y3Rpb24xLm9iamVjdFN0b3JlKCdhJykuZ2V0KDApCisKK3RyYW5zYWN0aW9uMiBvdmVybGFwcyB3
aXRoIHRyYW5zYWN0aW9uMSwgc28gbXVzdCB3YWl0IHVudGlsIHRyYW5zYWN0aW9uMSBjb21wbGV0
ZXMKK3RyYW5zYWN0aW9uMiA9IGRiLnRyYW5zYWN0aW9uKFsnYScsICdiJ10sICdyZWFkd3JpdGUn
KQordHJhbnNhY3Rpb24yU3RhcnRlZCA9IGZhbHNlCit0cmFuc2FjdGlvbjJDb21wbGV0ZSA9IGZh
bHNlCit0cmFuc2FjdGlvbjIub2JqZWN0U3RvcmUoJ2EnKS5nZXQoMCkKKwordHJhbnNhY3Rpb24z
IG92ZXJsYXBzIHdpdGggdHJhbnNhY3Rpb24yLCBzbyBtdXN0IHdhaXQgdW50aWwgdHJhbnNhY3Rp
b24yIGNvbXBsZXRlcworZXZlbiB0aG91Z2ggaXQgZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIHRyYW5z
YWN0aW9uMQordHJhbnNhY3Rpb24zID0gZGIudHJhbnNhY3Rpb24oWydiJywgJ2MnXSwgJ3JlYWR3
cml0ZScpCit0cmFuc2FjdGlvbjNTdGFydGVkID0gZmFsc2UKK3RyYW5zYWN0aW9uM0NvbXBsZXRl
ID0gZmFsc2UKK3RyYW5zYWN0aW9uMy5vYmplY3RTdG9yZSgnYicpLmdldCgwKQorCit0cmFuc2Fj
dGlvbjFTdGFydGVkID0gdHJ1ZQorCit0cmFuc2FjdGlvbjFDb21wbGV0ZSA9IHRydWUKK1BBU1Mg
dHJhbnNhY3Rpb24yU3RhcnRlZCBpcyBmYWxzZQorUEFTUyB0cmFuc2FjdGlvbjNTdGFydGVkIGlz
IGZhbHNlCisKK1BBU1MgdHJhbnNhY3Rpb24xQ29tcGxldGUgaXMgdHJ1ZQordHJhbnNhY3Rpb24y
U3RhcnRlZCA9IHRydWUKKwordHJhbnNhY3Rpb24yQ29tcGxldGUgPSB0cnVlCitQQVNTIHRyYW5z
YWN0aW9uM1N0YXJ0ZWQgaXMgZmFsc2UKKworUEFTUyB0cmFuc2FjdGlvbjFDb21wbGV0ZSBpcyB0
cnVlCitQQVNTIHRyYW5zYWN0aW9uMkNvbXBsZXRlIGlzIHRydWUKK3RyYW5zYWN0aW9uM1N0YXJ0
ZWQgPSB0cnVlCisKK3RyYW5zYWN0aW9uM0NvbXBsZXRlID0gdHJ1ZQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNpbmcuaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNp
bmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44M2VlZGMyN2I3NjgwMzBlY2Y3NGFjOWMwMGIzM2FlZWI2ZDQx
NTg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tc2NvcGUtc2VxdWVuY2luZy5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvdHJhbnNhY3Rpb24tc2NvcGUtc2VxdWVuY2luZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLXN0YXJ2YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RhcnZhdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDU4Mzg0ZDFjZjczOWI5MzlmY2FmYzZkNzE5Yjg5OWViNTU3YjU5NgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXN0YXJ2YXRp
b24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzcgQEAKK0NoZWNrIHRoYXQgcmVhZC1vbmx5IHRy
YW5zYWN0aW9ucyBkb24ndCBzdGFydmUgcmVhZC13cml0ZSB0cmFuc2FjdGlvbnMuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBz
ZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhl
ZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworZGJuYW1lID0gInRyYW5zYWN0aW9uLXN0YXJ2YXRp
b24uaHRtbCIKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3Bl
bihkYm5hbWUpCisKK3ByZXBhcmVEYXRhYmFzZSgpOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0
CitkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKQorCitydW5UcmFuc2FjdGlvbnMoKToKK2Ri
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorCityZWFkV3JpdGVUcmFuc2FjdGlvblN0YXJ0ZWQgPSBm
YWxzZQorcmVhZFdyaXRlVHJhbnNhY3Rpb25Db21wbGV0ZSA9IGZhbHNlCisKK3N0YXJ0UmVhZE9u
bHlUcmFuc2FjdGlvbigpOgordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAn
cmVhZG9ubHknKQorc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKQorS2Vl
cCB0aGUgdHJhbnNhY3Rpb24gYWxpdmUgd2l0aCBhbiBlbmRsZXNzIHNlcmllcyBvZiBnZXRzCisK
K3N0YXJ0UmVhZFdyaXRlVHJhbnNhY3Rpb24oKToKK3RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rp
b24oJ3N0b3JlJywgJ3JlYWR3cml0ZScpCityZWFkV3JpdGVUcmFuc2FjdGlvblN0YXJ0ZWQgPSB0
cnVlCisKK3JlYWRXcml0ZVRyYW5zYWN0aW9uQ29tcGxldGUoKToKK1BBU1MgVHJhbnNhY3Rpb24g
d2Fzbid0IHN0YXJ2ZWQKK3JlYWRXcml0ZVRyYW5zYWN0aW9uQ29tcGxldGUgPSB0cnVlCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RhcnZhdGlvbi5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RhcnZhdGlv
bi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmZiOGYwY2VjN2MyYTUyOGU4MmZmMTMzZjgyNTJhMjk4ODU5OThh
M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFu
c2FjdGlvbi1zdGFydmF0aW9uLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFu
c2FjdGlvbi1zdGFydmF0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177872</attachid>
            <date>2012-12-05 17:04:54 -0800</date>
            <delta_ts>2012-12-05 17:31:30 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-97570-20121205170219.patch</filename>
            <type>text/plain</type>
            <size>42265</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2Nzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQ5MjI4YzU5NDc2YTYz
MWM0ZWMxODc3MzI2NDQwZmJlMjlmOTk2Yy4uMzExZTFiMDBhZWNiYzUyNjNlYmYwMmRjY2FiNThj
NDhkM2QyNTE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEyLTA0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBBbGxv
dyBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgdG8gaW50ZXJsZWF2ZSByZXF1ZXN0IGV4ZWN1dGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc1NzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgIEltcGxlbWVudCBzcGVj
IGxvZ2ljIGZvciBhbGxvd2luZyByZWFkLW9ubHkgdHJhbnNhY3Rpb25zLCBhbmQgcmVhZC13cml0
ZSB0cmFuc2FjdGlvbnMKKyAgICAgICAgd2l0aCBub24tb3ZlcmxhcHBpbmcgc2NvcGVzLCB0byBy
dW4gY29uY3VycmVudGx5LiBUcmFuc2FjdGlvbnMgYWxsIHN0aWxsIHJ1biBpbiB0aGUKKyAgICAg
ICAgc2FtZSB0aHJlYWQgd2l0aCB0YXNrcyB0cmlnZ2VyZWQgdmlhIHRpbWVycywgc28gdGFza3Mg
YW5kIHRoZSB1bmRlcmx5aW5nIGRhdGFiYXNlCisgICAgICAgIG9wZXJhdGlvbnMgYXJlIGludGVy
bGVhdmVkIHJhdGhlciB0aGFuIHRydWx5IHBhcmFsbGVsaXplZC4KKworICAgICAgICBXaXRoaW4g
SURCVHJhbnNhY3Rpb25Db29yZGluYXRvciwgcmVuYW1lIHN0YXJ0ZWQtPnF1ZXVlZCwgcnVubmlu
Zy0+c3RhcnRlZCB0byBtYXRjaAorICAgICAgICBzcGVjIHRlcm1pbm9sb2d5IGFuZCBjbGVhciB1
cCBjb25mdXNpb24uCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tY29vcmRpbmF0aW9uLWFjcm9zcy1kYXRhYmFzZXMuaHRtbAorICAgICAgICAgICAgICBzdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmh0
bWwKKyAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZHdyaXRl
LWV4Y2x1c2l2ZS5odG1sCisgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLXNjb3BlLXNlcXVlbmNpbmcuaHRtbAorICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1zdGFydmF0aW9uLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOiBVc2UgSURCVHJhbnNhY3Rpb246Ok1vZGUg
ZW51bQorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlVHJh
bnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuaDogRGl0dG8uCisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaDogRGl0
dG8uCisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwOiBDb252ZXJ0IHNj
b3BlIGFzIGEgSGFzaFNldCBmb3IKKyAgICAgICAgZmFzdCBpbnRlcnNlY3RpbmcuCisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbC5oOgorICAgICAgICAoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjptb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjb3BlKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcDogU3BlYyBsb2dpYyBnb2Vz
IGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpwcm9j
ZXNzU3RhcnRlZFRyYW5zYWN0aW9ucyk6IEV4dGVuZCB0aGlzCisgICAgICAgIG1ldGhvZCB0byB0
ZXN0IGFsbCBwbGF1c2libHkgcnVubmFibGUgdHJhbnNhY3Rpb25zLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjYW5SdW5U
cmFuc2FjdGlvbik6IFRlc3QgdG8gc2VlIGlmIG9uZQorICAgICAgICBwYXJ0aWN1bGFyIHRyYW5z
YWN0aW9uIGNhbiBiZSBydW4uCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yOjpkb1Njb3Blc092ZXJsYXApOiBEbyBhIHF1aWNrIGludGVyc2VjdGlvbgorICAgICAg
ICB0ZXN0IGJldHdlZW4gdHJhbnNhY3Rpb24gc2NvcGVzLgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKElEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IpOgorCiAyMDEyLTEyLTA1ICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IEFib3J0IHRyYW5zYWN0aW9ucyBiZWNh
dXNlIG9mIGxldmVsZGIgZXJyb3JzIHBhcnQgMwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCAxZTAzOGQ5ZWNmZjQ1NjgxNTFhN2IzYjI4NGQxMzE3MzU0NGFiNTVlLi4wMDYxZjRkNWE1M2Vl
NGVhYTU1YWE5OGE1MmFhOWQzZWE1YzYyOTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIwIEBACisyMDEyLTEyLTA0ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBBbGxvdyBtdWx0aXBsZSB0cmFuc2FjdGlvbnMg
dG8gaW50ZXJsZWF2ZSByZXF1ZXN0IGV4ZWN1dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc1NzAKKworICAgICAgICBSZXZpZXdlZCBieSBUb255
IENoYW5nLgorCisgICAgICAgIE1hcCB0byBJREJUcmFuc2FjdGlvbjo6TW9kZSBlbnVtIGFzIGFw
cHJvcHJpYXRlLgorCisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZVRyYW5zYWN0
aW9uKToKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaDoKKyAgICAgICAg
KElEQkRhdGFiYXNlQmFja2VuZFByb3h5KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjpjcmVhdGVUcmFu
c2FjdGlvbik6CisgICAgICAgICAqIHRlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwOgor
CiAyMDEyLTEyLTA1ICBFYmVyaGFyZCBHcmFldGhlciAgPGVncmFldGhlckBnb29nbGUuY29tPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIFdlYkxheWVyVHJlZVZpZXcgQVBJIHRvIHNldCBm
b250IGF0bGFzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDdhYjYxOGJhOTg0Y2I4MmIzNTBk
NWI5NGRkZmNiODUzZGRjNDllODAuLmFlN2FmMGViNDhlNzMwOTYxZDhhNWZhZTFkMDVhMjc2YmU0
NjZiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC00MzMsNyArNDMzLDcgQEAgdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKIH0KIAogLy8gRklY
TUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAzOTIzLgotUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgdW5zaWdu
ZWQgc2hvcnQgbW9kZSkKK1Bhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
PiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5z
YWN0aW9uSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIElEQlRyYW5z
YWN0aW9uOjpNb2RlIG1vZGUpCiB7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKHRyYW5z
YWN0aW9uSWQsIG9iamVjdFN0b3JlSWRzLCBtb2RlLCB0aGlzKTsKICAgICBtX3RyYW5zYWN0aW9u
cy5hZGQodHJhbnNhY3Rpb24uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDI5ZTRlNTM2
ZTIwYTAxNjBmYTZkNTI2ZGU3ZmJlZWFiMDY0NjE4NGUuLjYzMmFhNmE0ZjE0NjkyOGJmOWU4MDZi
MDViZTdlMGE5NDA0ZTNmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTY0LDcgKzY0LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRl
cmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVP
YmplY3RTdG9yZShpbnQ2NF90LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNl
cHRpb25Db2RlJik7CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBpbiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTIzLgotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9u
KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9y
ZUlkcywgdW5zaWduZWQgc2hvcnQgbW9kZSk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gY3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJREJUcmFu
c2FjdGlvbjo6TW9kZSk7CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpOwog
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggYTZhMmFmN2YxZTM0MGRjNzVmMjI4
YzQ5M2Y2OTI5YTdjM2YyOTY3YS4uMTE2YzQzODJmNjUyMGNiZDQzYjU4MGZjZTNiNTYwZGU2NWIz
YjM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNp
Zm5kZWYgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlX2gKICNkZWZpbmUgSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlX2gKIAorI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNTYsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRl
T2JqZWN0U3RvcmUoaW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRo
JiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShp
bnQ2NF90LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikg
PSAwOwogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtZXRob2QgaW4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzkyMy4KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVu
c2lnbmVkIHNob3J0IG1vZGUpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0
aW9uSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIElEQlRyYW5zYWN0
aW9uOjpNb2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4pID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAppbmRleCBmMmY3MWM0ZjU3NmU2
Nzk2ZWFlNjg0ZjM1Zjk2OTlhNGI5YjA3OWQxLi4yYmFkNTkwNmQ0YWRmZDA1OTlhOTQxOTRiNmI3
NGRmYjQ0MDNkMzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcApAQCAtMzgsMTIgKzM4
LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsPiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUoaW50NjRfdCBp
ZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQg
bW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UpCitQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw+IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZShp
bnQ2NF90IGlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJREJUcmFu
c2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwoaWQsIG9i
amVjdFN0b3JlSWRzLCBtb2RlLCBkYXRhYmFzZSkpOworICAgIEhhc2hTZXQ8aW50NjRfdD4gb2Jq
ZWN0U3RvcmVIYXNoU2V0OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U3RvcmVJ
ZHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG9iamVjdFN0b3JlSGFzaFNldC5hZGQob2JqZWN0U3Rv
cmVJZHNbaV0pOworCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsKGlkLCBvYmplY3RTdG9yZUhhc2hTZXQsIG1vZGUsIGRhdGFiYXNlKSk7CiB9CiAKLUlE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwoaW50NjRf
dCBpZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hv
cnQgbW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UpCitJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGludDY0X3QgaWQsIGNvbnN0
IEhhc2hTZXQ8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBt
b2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSkKICAgICA6IG1faWQoaWQpCiAg
ICAgLCBtX29iamVjdFN0b3JlSWRzKG9iamVjdFN0b3JlSWRzKQogICAgICwgbV9tb2RlKG1vZGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKaW5kZXggNTEyNDc4ZDVhZWY3MDg1OWUyNTg1ODM0ZDE0
NjljMmZlMWYyM2VlOS4uNDM5Yzc1YmVjNjA3NWNjYmZjNmE3OWIxM2Y0YzE1MGZhODkyNDdkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAi
SURCQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJvci5oIgorI2luY2x1
ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCIKICNpbmNsdWRl
ICJUaW1lci5oIgpAQCAtNDMsNyArNDQsNyBAQCBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OwogCiBjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsIDogcHVibGljIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gY3JlYXRlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiwgdW5zaWduZWQgc2hvcnQgbW9kZSwgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw+IGNyZWF0ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYs
IElEQlRyYW5zYWN0aW9uOjpNb2RlLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKik7CiAgICAgc3Rh
dGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIGZyb20oSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiBpbnRlcmZhY2UpCiAgICAgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+KGludGVyZmFjZSk7CkBAIC02Myw3ICs2NCw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgYWJvcnQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik7
CiAgICAgdm9pZCBydW4oKTsKLSAgICB1bnNpZ25lZCBzaG9ydCBtb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9tb2RlOyB9CisgICAgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbW9kZTsgfQorICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlKCkgY29uc3Qg
eyByZXR1cm4gbV9vYmplY3RTdG9yZUlkczsgfQogICAgIGJvb2wgaXNGaW5pc2hlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUgPT0gRmluaXNoZWQ7IH0KICAgICBib29sIHNjaGVkdWxlVGFzayhQ
YXNzT3duUHRyPE9wZXJhdGlvbj4gdGFzaywgUGFzc093blB0cjxPcGVyYXRpb24+IGFib3J0VGFz
ayA9IG51bGxwdHIpIHsgcmV0dXJuIHNjaGVkdWxlVGFzayhOb3JtYWxUYXNrLCB0YXNrLCBhYm9y
dFRhc2spOyB9CiAgICAgYm9vbCBzY2hlZHVsZVRhc2soVGFza1R5cGUsIFBhc3NPd25QdHI8T3Bl
cmF0aW9uPiwgUGFzc093blB0cjxPcGVyYXRpb24+IGFib3J0VGFzayA9IG51bGxwdHIpOwpAQCAt
NzUsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgaW50NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aWQ7IH0KIAogcHJpdmF0ZToKLSAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGludDY0X3Qg
aWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0
IG1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqKTsKKyAgICBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsKGludDY0X3QgaWQsIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRz
LCBJREJUcmFuc2FjdGlvbjo6TW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCopOwogCiAgICAg
ZW51bSBTdGF0ZSB7CiAgICAgICAgIFVudXNlZCwgLy8gQ3JlYXRlZCwgYnV0IG5vIHRhc2tzIHll
dC4KQEAgLTk0LDggKzk2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsb3NlT3BlbkN1cnNvcnMo
KTsKIAogICAgIGNvbnN0IGludDY0X3QgbV9pZDsKLSAgICBjb25zdCBWZWN0b3I8aW50NjRfdD4g
bV9vYmplY3RTdG9yZUlkczsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBtX21vZGU7CisgICAg
Y29uc3QgSGFzaFNldDxpbnQ2NF90PiBtX29iamVjdFN0b3JlSWRzOworICAgIGNvbnN0IElEQlRy
YW5zYWN0aW9uOjpNb2RlIG1fbW9kZTsKIAogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgYm9vbCBt
X2NvbW1pdFBlbmRpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCmluZGV4IGNmZDNkMTZk
YjQwYmQ4YTc1MmE2ZGVkYWUyODU0NGFiNGNkNjU2MTMuLjI0ZWE4MDI5MWY5MGMzMWE3NTkzNGMw
MjFhZjBiOTNmMWNmODc2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVk
ZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCVHJhbnNh
Y3Rpb24uaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTU3LDcgKzU4LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yOjpkaWRTdGFydFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHQK
IHsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKIAot
ICAgIG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5hZGQodHJhbnNhY3Rpb24pOworICAgIG1fcXVldWVk
VHJhbnNhY3Rpb25zLmFkZCh0cmFuc2FjdGlvbik7CiAgICAgcHJvY2Vzc1N0YXJ0ZWRUcmFuc2Fj
dGlvbnMoKTsKIH0KIApAQCAtNjUsMTEgKzY2LDExIEBAIHZvaWQgSURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvcjo6ZGlkRmluaXNoVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCoK
IHsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKIAot
ICAgIGlmIChtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKSB7Ci0g
ICAgICAgIEFTU0VSVCghbV9ydW5uaW5nVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9u
KSk7CisgICAgaWYgKG1fcXVldWVkVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSkg
eworICAgICAgICBBU1NFUlQoIW1fc3RhcnRlZFRyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2Fj
dGlvbikpOworICAgICAgICBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24p
OworICAgIH0gZWxzZSBpZiAobV9zdGFydGVkVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0
aW9uKSkKICAgICAgICAgbV9zdGFydGVkVHJhbnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbik7
Ci0gICAgfSBlbHNlIGlmIChtX3J1bm5pbmdUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rp
b24pKQotICAgICAgICBtX3J1bm5pbmdUcmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uKTsK
IAogICAgIG1fdHJhbnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbik7CiAKQEAgLTgxLDkgKzgy
LDkgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpkaWRGaW5pc2hUcmFuc2FjdGlv
bihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKgogYm9vbCBJREJUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yOjppc0FjdGl2ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKIHsK
ICAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgaWYgKG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5j
b250YWlucyh0cmFuc2FjdGlvbikpCisgICAgaWYgKG1fcXVldWVkVHJhbnNhY3Rpb25zLmNvbnRh
aW5zKHRyYW5zYWN0aW9uKSkKICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgIGlmIChtX3J1bm5p
bmdUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKSB7CisgICAgaWYgKG1fc3RhcnRl
ZFRyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpIHsKICAgICAgICAgQVNTRVJUKCFm
b3VuZCk7CiAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICB9CkBAIC05NCwxNyArOTUsNTggQEAg
Ym9vbCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjppc0FjdGl2ZShJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKIAogdm9pZCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
Ojpwcm9jZXNzU3RhcnRlZFRyYW5zYWN0aW9ucygpCiB7Ci0gICAgLy8gRklYTUU6IEZvciBub3cs
IHdlIG9ubHkgYWxsb3cgb25lIHRyYW5zYWN0aW9uIHRvIHJ1biBhdCBhIHRpbWUuCi0gICAgaWYg
KCFtX3J1bm5pbmdUcmFuc2FjdGlvbnMuaXNFbXB0eSgpKQorICAgIGlmIChtX3F1ZXVlZFRyYW5z
YWN0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3N0YXJ0ZWRU
cmFuc2FjdGlvbnMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKG1fc3Rh
cnRlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkgfHwgKCptX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuYmVn
aW4oKSktPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworCisgICAg
TGlzdEhhc2hTZXQ8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IG1fcXVldWVkVHJhbnNhY3Rpb25zLmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICE9IG1fcXVl
dWVkVHJhbnNhY3Rpb25zLmVuZCgpKSB7CisgICAgICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwqIHRyYW5zYWN0aW9uID0gKml0OworICAgICAgICArK2l0OworICAgICAgICBpZiAoY2FuUnVu
VHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pKSB7CisgICAgICAgICAgICBtX3F1ZXVlZFRyYW5zYWN0
aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24pOworICAgICAgICAgICAgbV9zdGFydGVkVHJhbnNhY3Rp
b25zLmFkZCh0cmFuc2FjdGlvbik7CisgICAgICAgICAgICB0cmFuc2FjdGlvbi0+cnVuKCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CiAKLSAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFu
c2FjdGlvbiA9ICptX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKTsKLSAgICBtX3N0YXJ0ZWRU
cmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uKTsKLSAgICBtX3J1bm5pbmdUcmFuc2FjdGlv
bnMuYWRkKHRyYW5zYWN0aW9uKTsKLSAgICB0cmFuc2FjdGlvbi0+cnVuKCk7CitzdGF0aWMgYm9v
bCBkb1Njb3Blc092ZXJsYXAoY29uc3QgSGFzaFNldDxpbnQ2NF90PiYgc2NvcGUxLCBjb25zdCBI
YXNoU2V0PGludDY0X3Q+JiBzY29wZTIpCit7CisgICAgZm9yIChIYXNoU2V0PGludDY0X3Q+Ojpj
b25zdF9pdGVyYXRvciBpdCA9IHNjb3BlMS5iZWdpbigpOyBpdCAhPSBzY29wZTEuZW5kKCk7ICsr
aXQpIHsKKyAgICAgICAgaWYgKHNjb3BlMi5jb250YWlucygqaXQpKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBJREJUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yOjpjYW5SdW5UcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsKiB0cmFuc2FjdGlvbikKK3sKKyAgICBBU1NFUlQobV9xdWV1ZWRUcmFuc2FjdGlvbnMuY29u
dGFpbnModHJhbnNhY3Rpb24pKTsKKyAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uLT5tb2RlKCkpIHsK
KyAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRToKKyAgICAgICAgQVNTRVJU
KG1fcXVldWVkVHJhbnNhY3Rpb25zLnNpemUoKSA9PSAxKTsKKyAgICAgICAgQVNTRVJUKG1fc3Rh
cnRlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IGNhc2UgSURCVHJhbnNhY3Rpb246OlJFQURfT05MWToKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICBjYXNlIElEQlRyYW5zYWN0aW9uOjpSRUFEX1dSSVRFOgorICAgICAgICBmb3IgKEhhc2hT
ZXQ8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3Rh
cnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpOyBpdCAhPSBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuZW5k
KCk7ICsraXQpIHsKKyAgICAgICAgICAgIGlmICgoKml0KS0+bW9kZSgpID09IElEQlRyYW5zYWN0
aW9uOjpSRUFEX1dSSVRFICYmIGRvU2NvcGVzT3ZlcmxhcCh0cmFuc2FjdGlvbi0+c2NvcGUoKSwg
KCppdCktPnNjb3BlKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgICAgICBmb3IgKExpc3RIYXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqPjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5iZWdpbigpOyAqaXQgIT0g
dHJhbnNhY3Rpb247ICsraXQpIHsKKyAgICAgICAgICAgIEFTU0VSVChpdCAhPSBtX3F1ZXVlZFRy
YW5zYWN0aW9ucy5lbmQoKSk7CisgICAgICAgICAgICBpZiAoKCppdCktPm1vZGUoKSA9PSBJREJU
cmFuc2FjdGlvbjo6UkVBRF9XUklURSAmJiBkb1Njb3Blc092ZXJsYXAodHJhbnNhY3Rpb24tPnNj
b3BlKCksICgqaXQpLT5zY29wZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
aAppbmRleCA2MDkwNmZlMzVmNGE1N2Q2YWM0ZjBhNzEzNzM0NDcxYTAwYzg2MTcwLi45MWRjMGUw
ZDkwMzhlNGZhNDQ0Y2E2OWYyNjk1MmNiZWU5ZDE4ZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRv
ci5oCkBAIC01NywxMiArNTcsMTMgQEAgcHJpdmF0ZToKICAgICBJREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yKCk7CiAKICAgICB2b2lkIHByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25zKCk7CisgICAg
Ym9vbCBjYW5SdW5UcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKik7CiAKICAg
ICAvLyBUaGlzIGlzIGp1c3QgYW4gZWZmaWNpZW50IHdheSB0byBrZWVwIHJlZmVyZW5jZXMgdG8g
YWxsIHRyYW5zYWN0aW9ucy4KICAgICBIYXNoTWFwPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwq
LCBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gPiBtX3RyYW5zYWN0aW9uczsKICAg
ICAvLyBUcmFuc2FjdGlvbnMgaW4gZGlmZmVyZW50IHN0YXRlcyBhcmUgZ3JvdXBlZCBiZWxvdy4K
LSAgICBMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKj4gbV9zdGFydGVkVHJh
bnNhY3Rpb25zOwotICAgIEhhc2hTZXQ8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCo+IG1fcnVu
bmluZ1RyYW5zYWN0aW9uczsKKyAgICBMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsKj4gbV9xdWV1ZWRUcmFuc2FjdGlvbnM7CisgICAgSGFzaFNldDxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsKj4gbV9zdGFydGVkVHJhbnNhY3Rpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkuY3BwCmluZGV4IGEwZGMyNGU3YjY0ZDRmOTU0MWNjNGQ3MzA5OTNjYTg1
OWEyYWY1YjIuLjQ1MDQwYjY5ODk5MDE2NDRlYmZkZjJjNmFlNjUxZWU5YjFlYjQzMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQ
cm94eS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6
ZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCBvYmplY3RTdG9yZUlkLCBJREJUcmFuc2EKICAgICBt
X3dlYklEQkRhdGFiYXNlLT5kZWxldGVPYmplY3RTdG9yZShvYmplY3RTdG9yZUlkLCAqdHJhbnNh
Y3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpOwogfQogCi1QYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6
OmNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgaWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2Jq
ZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpCitQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZVRyYW5z
YWN0aW9uKGludDY0X3QgaWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMs
IElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUpCiB7CiAgICAgT3duUHRyPFdlYklEQlRyYW5zYWN0
aW9uPiB0cmFuc2FjdGlvbiA9IGFkb3B0UHRyKG1fd2ViSURCRGF0YWJhc2UtPmNyZWF0ZVRyYW5z
YWN0aW9uKGlkLCBvYmplY3RTdG9yZUlkcywgbW9kZSkpOwogICAgIGlmICghdHJhbnNhY3Rpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tl
bmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5k
UHJveHkuaAppbmRleCBiOTg4ZDM1M2FmZTE5MzgxOWI4YTdlNWNiYzRjZWI1NTJhYzk2YzI1Li44
OGI5Y2NkMjc5MDA4ZGZhZTIzNzEwZmQ2ODE3OGYyZjdlM2Y1YTU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJP
YmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShp
bnQ2NF90LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlJik7CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBpbiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTIzLgotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNy
ZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIHVuc2lnbmVk
IHNob3J0IG1vZGUpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QsIGNvbnN0IFZl
Y3RvcjxpbnQ2NF90PiYsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpNb2RlKTsKICAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIHVuc2lnbmVkIHNo
b3J0IG1vZGUpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IDg2ODQ2NDgzMzQ4NWM0OGUxMjhiMWIwYzg4
NWJjOWQ2MzU2ZmVmODkuLjNhMGE5NDQ2YmMyYzNjYjgwZGM0ZGY1ZGE2Njk3M2IxNTExN2U4NzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBs
LmNwcApAQCAtODEsNyArODEsNyBAQCBXZWJJREJUcmFuc2FjdGlvbiogV2ViSURCRGF0YWJhc2VJ
bXBsOjpjcmVhdGVUcmFuc2FjdGlvbihsb25nIGxvbmcgaWQsIGNvbnN0IFdlYgogICAgIFZlY3Rv
cjxpbnQ2NF90PiBvYmplY3RTdG9yZUlkTGlzdChvYmplY3RTdG9yZUlkcy5zaXplKCkpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U3RvcmVJZHMuc2l6ZSgpOyArK2kpCiAgICAg
ICAgIG9iamVjdFN0b3JlSWRMaXN0W2ldID0gb2JqZWN0U3RvcmVJZHNbaV07Ci0gICAgUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24gPSBtX2RhdGFiYXNl
QmFja2VuZC0+Y3JlYXRlVHJhbnNhY3Rpb24oaWQsIG9iamVjdFN0b3JlSWRMaXN0LCBtb2RlKTsK
KyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbiA9
IG1fZGF0YWJhc2VCYWNrZW5kLT5jcmVhdGVUcmFuc2FjdGlvbihpZCwgb2JqZWN0U3RvcmVJZExp
c3QsIHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uOjpNb2RlPihtb2RlKSk7CiAgICAgaWYgKCF0
cmFuc2FjdGlvbikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIG5ldyBXZWJJREJUcmFu
c2FjdGlvbkltcGwodHJhbnNhY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKaW5kZXggNTViODVkYTAwMzli
M2ExMTBkMTdhMDJmNGY3MmI2NTRjMDdiZTEzYS4uYzJlZmMxOTgxOTQzZjdjYjIxMWI1YTZlZTBl
NjQ1OWIwNzFiZjVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9J
REJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUs
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpIHsgfQogICAgIC8vIEZJWE1FOiBSZW1v
dmUgdGhpcyBtZXRob2QgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMzkyMy4KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90LCBjb25zdCBWZWN0b3I8aW50NjRfdD4m
LCB1bnNpZ25lZCBzaG9ydCBtb2RlKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gY3JlYXRlVHJhbnNhY3Rpb24oaW50
NjRfdCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiwgSURCVHJhbnNhY3Rpb246Ok1vZGUpIHsgcmV0
dXJuIDA7IH0KICAgICB2b2lkIGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCB1bnNpZ25lZCBz
aG9ydCBtb2RlKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZWJmOTAyMzQxZDA3MjYyZTYxNjU0YmMxN2MxODk0
NzgzYzY1ZWUwLi5jZDBjYzJmMDUwNWUwNzBhYTE2YWU5Y2NmYTcxNGQ3MGNlMDVhMzlhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMTItMDQgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEFsbG93IG11bHRpcGxlIHRyYW5zYWN0aW9u
cyB0byBpbnRlcmxlYXZlIHJlcXVlc3QgZXhlY3V0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU3MAorCisgICAgICAgIFJldmlld2VkIGJ5IFRv
bnkgQ2hhbmcuCisKKyAgICAgICAgTmV3IHRlc3RzIGZvciBwYXJhbGxlbCB0cmFuc2FjdGlvbnMs
IHVwZGF0ZSBleGlzdGluZyB0ZXN0cyB0aGF0IHJlbGllZCBvbiBzZXF1ZW50aWFsIGV4ZWN1dGlv
bi4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWNsb3NlLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jbGVh
ci5qczogU3BsaXQgdXAgdHJhbnNhY3Rpb24gc3RlcHMuCisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLWNsb3NlLmpzOiBEb24ndCBsb2cgb24gaW5kaXZpZHVh
bCB0cmFuc2FjdGlvbiBjb21wbGV0aW9uLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc2Nv
cGUtc2VxdWVuY2luZy5qczogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL3RyYW5zYWN0aW9uLXN0YXJ2YXRpb24uanM6IEFkZGVkLgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNpbmctZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zY29wZS1z
ZXF1ZW5jaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5z
YWN0aW9uLXN0YXJ2YXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdGFydmF0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEy
LTA1ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgVGV4dCBkZWNv
cmF0aW9ucyBhcmUgcm90YXRlZCB3aGVuIHRleHQtY29tYmluZSB0YWtlcyBlZmZlY3QKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWNsb3NlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWNsb3NlLWV4
cGVjdGVkLnR4dAppbmRleCBhMzA3OWZhMmUwNWUxMzMwY2YwZTgyNjk4MDc4MTUwM2RhY2E5ZTA2
Li42MDI4MWVkYjllZWIyMzQyYzFkNjMxZDUwNmExNjIwN2ExNzYyNzI3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1jbG9zZS1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtY2xvc2UtZXhwZWN0
ZWQudHh0CkBAIC0zOSwxMSArMzksOSBAQCBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1l
KQogCiB0cmFuc2FjdGlvbiAjMSByZXF1ZXN0IHN1Y2Nlc3NmdWwKIFBBU1MgZXZlbnQudGFyZ2V0
LnJlc3VsdCBpcyAidmFsdWUxIgotYXdhaXRpbmdfdHJhbnNhY3Rpb25fY291bnQgLT0gMQogCiB0
cmFuc2FjdGlvbiAjMiByZXF1ZXN0IHN1Y2Nlc3NmdWwKIFBBU1MgZXZlbnQudGFyZ2V0LnJlc3Vs
dCBpcyAidmFsdWUyIgotYXdhaXRpbmdfdHJhbnNhY3Rpb25fY291bnQgLT0gMQogCiBBbGwgdHJh
bnNhY3Rpb25zIGNvbXBsZXRlZCAtIGRhdGFiYXNlIGRlbGV0ZXMgc2hvdWxkIG5vdyBiZSB1bmJs
b2NrZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvY2xlYXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9jbGVhci1leHBlY3RlZC50eHQKaW5kZXggZWZhMGUxYTVkMzNiMTM5MTA3NTQ5NjdmZDhj
ZGRjYTEzYmNkZTIyMS4uNTA1ZmU3NTNhNDE1OWFiZGM0MDI5Y2Q4Y2UxMWUyZjk0NmYzY2Q3OSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jbGVhci1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9j
bGVhci1leHBlY3RlZC50eHQKQEAgLTE0LDcgKzE0LDggQEAgRXhwZWN0aW5nIGV4Y2VwdGlvbiBm
cm9tIGRiLnRyYW5zYWN0aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJykuY2xlYXIoKTsKIFBB
U1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCiBQQVNTIGNvZGUgaXMgMAogUEFTUyBlbmFtZSBpcyAn
UmVhZE9ubHlFcnJvcicKLWRiLnRyYW5zYWN0aW9uKCdmb28nLCAncmVhZHdyaXRlJykub2JqZWN0
U3RvcmUoJ2ZvbycpLmNsZWFyKCk7CitkYi50cmFuc2FjdGlvbignZm9vJywgJ3JlYWR3cml0ZScp
Cit0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnZm9vJykuY2xlYXIoKTsKIHJlcXVlc3QgPSBkYi50
cmFuc2FjdGlvbignZm9vJykub2JqZWN0U3RvcmUoJ2ZvbycpLm9wZW5DdXJzb3IoKTsKIGN1cnNv
ciA9IHJlcXVlc3QucmVzdWx0OwogUEFTUyBjdXJzb3IgaXMgbnVsbApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY2xlYXIuanMgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jbGVhci5qcwpp
bmRleCBjODJmYWYyNjEwZTRmZDRjYjEyODY2Zjk2ZmU0NmNjMWU2NWE2NzQ2Li43OWYzYjc4ZTQy
NmEzZTM1MGIxMmYyMmVkYmViNDg4MmViNDYzYzFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jbGVhci5qcworKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jbGVhci5qcwpAQCAtMjQs
NyArMjQsMTQgQEAgZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKIGZ1bmN0aW9uIGNsZWFyKCkK
IHsKICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbignZm9vJykub2Jq
ZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7IiwgIjAiLCAiJ1JlYWRPbmx5RXJyb3InIik7Ci0gICAg
ZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oJ2ZvbycsICdyZWFkd3JpdGUnKS5vYmplY3RTdG9y
ZSgnZm9vJykuY2xlYXIoKTsiKTsKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRy
YW5zYWN0aW9uKCdmb28nLCAncmVhZHdyaXRlJykiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnZm9vJykuY2xlYXIoKTsiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmNv
bXBsZXRlID0gY2xlYXJlZDsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFyZWQoKQorewogICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0b3JlKCdm
b28nKS5vcGVuQ3Vyc29yKCk7Iik7CiAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhcmVXZUNsZWFy
WWV0OwogICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNl
LWNsb3NlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFi
YXNlLWNsb3NlLmpzCmluZGV4IDY5MWU1NWJjZjFmMWI3ODNkNWRjOGE1N2M2ZWE2NDNmMTgzZGIz
NTYuLjQ2ZGJhMzBmNWJkY2JlNDEyMWJmMWU4YmYyMmZlZDBkMGU0NTkyYTYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1jbG9zZS5q
cworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YWJhc2Ut
Y2xvc2UuanMKQEAgLTM1LDcgKzM1LDcgQEAgZnVuY3Rpb24gdGVzdENsb3NlKCkKICAgICBkZWJ1
ZygiU3RlcCAyOiBXYWl0IGZvciBhbGwgdHJhbnNhY3Rpb25zIGNyZWF0ZWQgdXNpbmcgY29ubmVj
dGlvbiB0byBjb21wbGV0ZS4gT25jZSB0aGV5IGFyZSBjb21wbGV0ZSwgY29ubmVjdGlvbiBpcyBj
bG9zZWQuIik7CiAgICAgZXZhbEFuZExvZygiYXdhaXRpbmdfdHJhbnNhY3Rpb25fY291bnQgPSAy
Iik7CiAgICAgZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZWQoKSB7Ci0gICAgICAgIGV2YWxB
bmRMb2coImF3YWl0aW5nX3RyYW5zYWN0aW9uX2NvdW50IC09IDEiKTsKKyAgICAgICAgYXdhaXRp
bmdfdHJhbnNhY3Rpb25fY291bnQgLT0gMTsKIAogICAgICAgICBpZiAoYXdhaXRpbmdfdHJhbnNh
Y3Rpb25fY291bnQgPT0gMCkgewogICAgICAgICAgICAgZGVidWcoIiIpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNvb3Jk
aW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLXdpdGhpbi1kYXRhYmFzZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kNmYwMzU5MmFkNGJhY2MzYzhkNzEzZTFjMmU2ZTgzMmZkZmY4YTJhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3Ry
YW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuanMKQEAgLTAsMCArMSw3NyBA
QAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygn
c2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJDaGVjayB0aGF0IHJlYWQtb25seSB0cmFu
c2FjdGlvbnMgd2l0aGluIGEgZGF0YWJhc2UgY2FuIHJ1biBpbiBwYXJhbGxlbC4iKTsKKworaW5k
ZXhlZERCVGVzdChwcmVwYXJlRGF0YWJhc2UsIHJ1blBhcmFsbGVsVHJhbnNhY3Rpb25zKTsKKwor
ZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQpOworICAg
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGV2YWxBbmRMb2co
InN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9n
KCJzdG9yZS5wdXQoJ3ZhbHVlJywgJ2tleScpIik7Cit9CisKK2Z1bmN0aW9uIHJ1blBhcmFsbGVs
VHJhbnNhY3Rpb25zKGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQpOworICAgIGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5k
TG9nKCJ0cmFuc2FjdGlvbjEgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZG9ubHknKSIp
OworICAgIHRyYW5zYWN0aW9uMS5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Cisg
ICAgdHJhbnNhY3Rpb24xLm9uY29tcGxldGUgPSBvblRyYW5zYWN0aW9uQ29tcGxldGU7CisgICAg
ZXZhbEFuZExvZygidHJhbnNhY3Rpb24yID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWRv
bmx5JykiKTsKKyAgICB0cmFuc2FjdGlvbjEub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworICAgIHRyYW5zYWN0aW9uMi5vbmNvbXBsZXRlID0gb25UcmFuc2FjdGlvbkNvbXBsZXRl
OworCisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24xR2V0U3VjY2VzcyA9IGZhbHNlIik7Cisg
ICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24yR2V0U3VjY2VzcyA9IGZhbHNlIik7CisKKyAgICBk
ZWJ1ZygiS2VlcCBib3RoIHRyYW5zYWN0aW9ucyBhbGl2ZSB1bnRpbCBlYWNoIGhhcyByZXBvcnRl
ZCBhdCBsZWFzdCBvbmUgc3VjY2Vzc2Z1bCBvcGVyYXRpb24iKTsKKworICAgIGZ1bmN0aW9uIGRv
VHJhbnNhY3Rpb24xR2V0KCkgeworICAgICAgICAvLyBOT1RFOiBObyBsb2dnaW5nIHNpbmNlIGV4
ZWN1dGlvbiBvcmRlciBpcyBub3QgZGV0ZXJtaW5pc3RpYy4KKyAgICAgICAgcmVxdWVzdCA9IHRy
YW5zYWN0aW9uMS5vYmplY3RTdG9yZSgnc3RvcmUnKS5nZXQoJ2tleScpOworICAgICAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRyYW5zYWN0aW9uMUdldFN1Y2Nl
c3MgPSB0cnVlOworICAgICAgICAgICAgaWYgKCF0cmFuc2FjdGlvbjJHZXRTdWNjZXNzKQorICAg
ICAgICAgICAgICAgIGRvVHJhbnNhY3Rpb24xR2V0KCk7CisgICAgICAgIH07CisgICAgfQorCisg
ICAgZnVuY3Rpb24gZG9UcmFuc2FjdGlvbjJHZXQoKSB7CisgICAgICAgIC8vIE5PVEU6IE5vIGxv
Z2dpbmcgc2luY2UgZXhlY3V0aW9uIG9yZGVyIGlzIG5vdCBkZXRlcm1pbmlzdGljLgorICAgICAg
ICByZXF1ZXN0ID0gdHJhbnNhY3Rpb24yLm9iamVjdFN0b3JlKCdzdG9yZScpLmdldCgna2V5Jyk7
CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
ICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdHJhbnNh
Y3Rpb24yR2V0U3VjY2VzcyA9IHRydWU7CisgICAgICAgICAgICBpZiAoIXRyYW5zYWN0aW9uMUdl
dFN1Y2Nlc3MpCisgICAgICAgICAgICAgICAgZG9UcmFuc2FjdGlvbjJHZXQoKTsKKyAgICAgICAg
fTsKKyAgICB9CisKKyAgICBkb1RyYW5zYWN0aW9uMUdldCgpOworICAgIGRvVHJhbnNhY3Rpb24y
R2V0KCk7Cit9CisKK3RyYW5zYWN0aW9uQ29tcGxldGlvbkNvdW50ID0gMDsKK2Z1bmN0aW9uIG9u
VHJhbnNhY3Rpb25Db21wbGV0ZShldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKworICAgICsr
dHJhbnNhY3Rpb25Db21wbGV0aW9uQ291bnQ7CisgICAgaWYgKHRyYW5zYWN0aW9uQ29tcGxldGlv
bkNvdW50IDwgMikgeworICAgICAgICBkZWJ1ZygiZmlyc3QgdHJhbnNhY3Rpb24gY29tcGxldGUs
IHN0aWxsIHdhaXRpbmcuLi4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNob3Vs
ZEJlVHJ1ZSgidHJhbnNhY3Rpb24xR2V0U3VjY2VzcyIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJh
bnNhY3Rpb24yR2V0U3VjY2VzcyIpOworCisgICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOwor
ICAgIGZpbmlzaEpTVGVzdCgpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNpbmcuanMgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc2NvcGUtc2Vx
dWVuY2luZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MmY4YTA5YTllODMwODAwMmU1ZjE0ZTlkZGM4YWJiYjBm
NzZhNTgzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNpbmcuanMKQEAgLTAsMCArMSw4MSBA
QAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygn
c2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJDaGVjayB0aGF0IHNjb3BlIHJlc3RyaWN0
aW9ucyBvbiByZWFkLXdyaXRlIHRyYW5zYWN0aW9ucyBhcmUgZW5mb3JjZWQuIik7CisKK2luZGV4
ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCBydW5UcmFuc2FjdGlvbnMpOworCitmdW5jdGlvbiBw
cmVwYXJlRGF0YWJhc2UoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7CisgICAgZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ2EnKSIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdiJykiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYycpIik7Cit9
CisKK2Z1bmN0aW9uIHJ1blRyYW5zYWN0aW9ucyhldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsK
KyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBkZWJ1Zygi
Iik7CisKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjEgPSBkYi50cmFuc2FjdGlvbihbJ2En
XSwgJ3JlYWR3cml0ZScpIik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24xU3RhcnRlZCA9
IGZhbHNlIik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24xQ29tcGxldGUgPSBmYWxzZSIp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjEub2JqZWN0U3RvcmUoJ2En
KS5nZXQoMCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1Zygi
Iik7CisgICAgICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMVN0YXJ0ZWQgPSB0cnVlIik7Cisg
ICAgfTsKKyAgICB0cmFuc2FjdGlvbjEub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OworICAgIHRyYW5zYWN0aW9uMS5vbmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRl
YnVnKCIiKTsKKyAgICAgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24xQ29tcGxldGUgPSB0cnVl
Iik7CisgICAgICAgIHNob3VsZEJlRmFsc2UoInRyYW5zYWN0aW9uMlN0YXJ0ZWQiKTsKKyAgICAg
ICAgc2hvdWxkQmVGYWxzZSgidHJhbnNhY3Rpb24zU3RhcnRlZCIpOworICAgIH07CisKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoInRyYW5zYWN0aW9uMiBvdmVybGFwcyB3aXRoIHRyYW5zYWN0
aW9uMSwgc28gbXVzdCB3YWl0IHVudGlsIHRyYW5zYWN0aW9uMSBjb21wbGV0ZXMiKTsKKyAgICBl
dmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjIgPSBkYi50cmFuc2FjdGlvbihbJ2EnLCAnYiddLCAncmVh
ZHdyaXRlJykiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjJTdGFydGVkID0gZmFsc2Ui
KTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjJDb21wbGV0ZSA9IGZhbHNlIik7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMi5vYmplY3RTdG9yZSgnYScpLmdldCgw
KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAg
ICAgICAgc2hvdWxkQmVUcnVlKCJ0cmFuc2FjdGlvbjFDb21wbGV0ZSIpOworICAgICAgICBldmFs
QW5kTG9nKCJ0cmFuc2FjdGlvbjJTdGFydGVkID0gdHJ1ZSIpOworICAgIH07CisgICAgdHJhbnNh
Y3Rpb24yLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlv
bjIub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAg
IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uMkNvbXBsZXRlID0gdHJ1ZSIpOworICAgICAgICBzaG91
bGRCZUZhbHNlKCJ0cmFuc2FjdGlvbjNTdGFydGVkIik7CisgICAgfTsKKworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygidHJhbnNhY3Rpb24zIG92ZXJsYXBzIHdpdGggdHJhbnNhY3Rpb24yLCBz
byBtdXN0IHdhaXQgdW50aWwgdHJhbnNhY3Rpb24yIGNvbXBsZXRlcyIpOworICAgIGRlYnVnKCJl
dmVuIHRob3VnaCBpdCBkb2VzIG5vdCBvdmVybGFwIHdpdGggdHJhbnNhY3Rpb24xIik7CisgICAg
ZXZhbEFuZExvZygidHJhbnNhY3Rpb24zID0gZGIudHJhbnNhY3Rpb24oWydiJywgJ2MnXSwgJ3Jl
YWR3cml0ZScpIik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24zU3RhcnRlZCA9IGZhbHNl
Iik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24zQ29tcGxldGUgPSBmYWxzZSIpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbjMub2JqZWN0U3RvcmUoJ2InKS5nZXQo
MCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1ZygiIik7Cisg
ICAgICAgIHNob3VsZEJlVHJ1ZSgidHJhbnNhY3Rpb24xQ29tcGxldGUiKTsKKyAgICAgICAgc2hv
dWxkQmVUcnVlKCJ0cmFuc2FjdGlvbjJDb21wbGV0ZSIpOworICAgICAgICBldmFsQW5kTG9nKCJ0
cmFuc2FjdGlvbjNTdGFydGVkID0gdHJ1ZSIpOworICAgIH07CisgICAgdHJhbnNhY3Rpb24zLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbjMub25jb21w
bGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uM0NvbXBsZXRlID0gdHJ1ZSIpOworICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3RyYW5zYWN0aW9uLXN0YXJ2YXRpb24uanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc3RhcnZhdGlvbi5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44YjJmOTdlZjkwZDA3OWMyMDQyYjlkNTZkYWY5YWI5ZmJiZDE1NmY2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9u
LXN0YXJ2YXRpb24uanMKQEAgLTAsMCArMSw2MyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJDaGVjayB0aGF0IHJlYWQtb25seSB0cmFuc2FjdGlvbnMgZG9uJ3Qgc3RhcnZlIHJlYWQt
d3JpdGUgdHJhbnNhY3Rpb25zLiIpOworCitpbmRleGVkREJUZXN0KHByZXBhcmVEYXRhYmFzZSwg
cnVuVHJhbnNhY3Rpb25zKTsKKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKGV2dCkKK3sKKyAg
ICBwcmVhbWJsZShldnQpOworICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Cit9
CisKK2Z1bmN0aW9uIHJ1blRyYW5zYWN0aW9ucyhldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsK
KyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBkZWJ1Zygi
Iik7CisKKyAgICBldmFsQW5kTG9nKCJyZWFkV3JpdGVUcmFuc2FjdGlvblN0YXJ0ZWQgPSBmYWxz
ZSIpOworICAgIGV2YWxBbmRMb2coInJlYWRXcml0ZVRyYW5zYWN0aW9uQ29tcGxldGUgPSBmYWxz
ZSIpOworCisgICAgc3RhcnRSZWFkT25seVRyYW5zYWN0aW9uKCk7Cit9CisKKworZnVuY3Rpb24g
c3RhcnRSZWFkT25seVRyYW5zYWN0aW9uKCkKK3sKKyAgICBwcmVhbWJsZSgpOworICAgIGV2YWxB
bmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWRvbmx5Jyki
KTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Cisg
ICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKSIp
OworICAgIGRlYnVnKCJLZWVwIHRoZSB0cmFuc2FjdGlvbiBhbGl2ZSB3aXRoIGFuIGVuZGxlc3Mg
c2VyaWVzIG9mIGdldHMiKTsKKworICAgIGZ1bmN0aW9uIGRvR2V0KCkgeworICAgICAgICByZXF1
ZXN0ID0gc3RvcmUuZ2V0KDApOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgaWYgKCFyZWFkV3JpdGVUcmFuc2FjdGlvblN0YXJ0ZWQpCisgICAg
ICAgICAgICAgICAgc3RhcnRSZWFkV3JpdGVUcmFuc2FjdGlvbigpOworCisgICAgICAgICAgICBp
ZiAoIXJlYWRXcml0ZVRyYW5zYWN0aW9uQ29tcGxldGUpCisgICAgICAgICAgICAgICAgZG9HZXQo
KTsKKyAgICAgICAgfTsKKyAgICB9CisgICAgZG9HZXQoKTsKK30KKworZnVuY3Rpb24gc3RhcnRS
ZWFkV3JpdGVUcmFuc2FjdGlvbigpCit7CisgICAgcHJlYW1ibGUoKTsKKyAgICBldmFsQW5kTG9n
KCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkd3JpdGUnKSIpOwor
ICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBl
dmFsQW5kTG9nKCJyZWFkV3JpdGVUcmFuc2FjdGlvblN0YXJ0ZWQgPSB0cnVlIik7CisgICAgdHJh
bnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uIHJlYWRXcml0ZVRyYW5zYWN0aW9uQ29tcGxl
dGUoKSB7CisgICAgICAgIHByZWFtYmxlKCk7CisgICAgICAgIHRlc3RQYXNzZWQoIlRyYW5zYWN0
aW9uIHdhc24ndCBzdGFydmVkIik7CisgICAgICAgIGV2YWxBbmRMb2coInJlYWRXcml0ZVRyYW5z
YWN0aW9uQ29tcGxldGUgPSB0cnVlIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH07
Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLXdpdGhpbi1kYXRhYmFz
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
ZmYzZmZjOTgwN2JmODBjZTdiOWM1YTBiOTlhOTljODI2ZjQxMmIzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9u
LXdpdGhpbi1kYXRhYmFzZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNiBAQAorQ2hlY2sgdGhh
dCByZWFkLW9ubHkgdHJhbnNhY3Rpb25zIHdpdGhpbiBhIGRhdGFiYXNlIGNhbiBydW4gaW4gcGFy
YWxsZWwuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxm
LmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8
fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworZGJuYW1lID0gInRyYW5z
YWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuaHRtbCIKK2luZGV4ZWREQi5kZWxl
dGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3BlbihkYm5hbWUpCisKK3ByZXBhcmVEYXRh
YmFzZSgpOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitzdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZScpCitzdG9yZS5wdXQoJ3ZhbHVlJywgJ2tleScpCisKK3J1blBhcmFsbGVs
VHJhbnNhY3Rpb25zKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKKwordHJhbnNhY3Rpb24x
ID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWRvbmx5JykKK3RyYW5zYWN0aW9uMiA9IGRi
LnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkb25seScpCit0cmFuc2FjdGlvbjFHZXRTdWNjZXNz
ID0gZmFsc2UKK3RyYW5zYWN0aW9uMkdldFN1Y2Nlc3MgPSBmYWxzZQorS2VlcCBib3RoIHRyYW5z
YWN0aW9ucyBhbGl2ZSB1bnRpbCBlYWNoIGhhcyByZXBvcnRlZCBhdCBsZWFzdCBvbmUgc3VjY2Vz
c2Z1bCBvcGVyYXRpb24KKworb25UcmFuc2FjdGlvbkNvbXBsZXRlKCk6CitmaXJzdCB0cmFuc2Fj
dGlvbiBjb21wbGV0ZSwgc3RpbGwgd2FpdGluZy4uLgorCitvblRyYW5zYWN0aW9uQ29tcGxldGUo
KToKK1BBU1MgdHJhbnNhY3Rpb24xR2V0U3VjY2VzcyBpcyB0cnVlCitQQVNTIHRyYW5zYWN0aW9u
MkdldFN1Y2Nlc3MgaXMgdHJ1ZQorZGIuY2xvc2UoKQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlv
bi13aXRoaW4tZGF0YWJhc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjBjNWI3ZDQ1OTEwYTQ1MjEzMDlj
MzNmZjQ5ZTRlNmM1MmI3YmYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLXdpdGhpbi1kYXRhYmFzZS5odG1s
CkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLXdp
dGhpbi1kYXRhYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXNjb3Bl
LXNlcXVlbmNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
dHJhbnNhY3Rpb24tc2NvcGUtc2VxdWVuY2luZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTc1
YWE4MDE3NDI0YzU0OTA2MmQ2YmI3ZTIxYTc3OTgzMjg3ZTY5OAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNp
bmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTkgQEAKK0NoZWNrIHRoYXQgc2NvcGUgcmVzdHJp
Y3Rpb25zIG9uIHJlYWQtd3JpdGUgdHJhbnNhY3Rpb25zIGFyZSBlbmZvcmNlZC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNl
bGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVk
REIgfHwgc2VsZi5PSW5kZXhlZERCOworCitkYm5hbWUgPSAidHJhbnNhY3Rpb24tc2NvcGUtc2Vx
dWVuY2luZy5odG1sIgoraW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKK2luZGV4ZWRE
Qi5vcGVuKGRibmFtZSkKKworcHJlcGFyZURhdGFiYXNlKCk6CitkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQKK2RiLmNyZWF0ZU9iamVjdFN0b3JlKCdhJykKK2RiLmNyZWF0ZU9iamVjdFN0b3JlKCdi
JykKK2RiLmNyZWF0ZU9iamVjdFN0b3JlKCdjJykKKworcnVuVHJhbnNhY3Rpb25zKCk6CitkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQKKwordHJhbnNhY3Rpb24xID0gZGIudHJhbnNhY3Rpb24oWydh
J10sICdyZWFkd3JpdGUnKQordHJhbnNhY3Rpb24xU3RhcnRlZCA9IGZhbHNlCit0cmFuc2FjdGlv
bjFDb21wbGV0ZSA9IGZhbHNlCit0cmFuc2FjdGlvbjEub2JqZWN0U3RvcmUoJ2EnKS5nZXQoMCkK
KwordHJhbnNhY3Rpb24yIG92ZXJsYXBzIHdpdGggdHJhbnNhY3Rpb24xLCBzbyBtdXN0IHdhaXQg
dW50aWwgdHJhbnNhY3Rpb24xIGNvbXBsZXRlcwordHJhbnNhY3Rpb24yID0gZGIudHJhbnNhY3Rp
b24oWydhJywgJ2InXSwgJ3JlYWR3cml0ZScpCit0cmFuc2FjdGlvbjJTdGFydGVkID0gZmFsc2UK
K3RyYW5zYWN0aW9uMkNvbXBsZXRlID0gZmFsc2UKK3RyYW5zYWN0aW9uMi5vYmplY3RTdG9yZSgn
YScpLmdldCgwKQorCit0cmFuc2FjdGlvbjMgb3ZlcmxhcHMgd2l0aCB0cmFuc2FjdGlvbjIsIHNv
IG11c3Qgd2FpdCB1bnRpbCB0cmFuc2FjdGlvbjIgY29tcGxldGVzCitldmVuIHRob3VnaCBpdCBk
b2VzIG5vdCBvdmVybGFwIHdpdGggdHJhbnNhY3Rpb24xCit0cmFuc2FjdGlvbjMgPSBkYi50cmFu
c2FjdGlvbihbJ2InLCAnYyddLCAncmVhZHdyaXRlJykKK3RyYW5zYWN0aW9uM1N0YXJ0ZWQgPSBm
YWxzZQordHJhbnNhY3Rpb24zQ29tcGxldGUgPSBmYWxzZQordHJhbnNhY3Rpb24zLm9iamVjdFN0
b3JlKCdiJykuZ2V0KDApCisKK3RyYW5zYWN0aW9uMVN0YXJ0ZWQgPSB0cnVlCisKK3RyYW5zYWN0
aW9uMUNvbXBsZXRlID0gdHJ1ZQorUEFTUyB0cmFuc2FjdGlvbjJTdGFydGVkIGlzIGZhbHNlCitQ
QVNTIHRyYW5zYWN0aW9uM1N0YXJ0ZWQgaXMgZmFsc2UKKworUEFTUyB0cmFuc2FjdGlvbjFDb21w
bGV0ZSBpcyB0cnVlCit0cmFuc2FjdGlvbjJTdGFydGVkID0gdHJ1ZQorCit0cmFuc2FjdGlvbjJD
b21wbGV0ZSA9IHRydWUKK1BBU1MgdHJhbnNhY3Rpb24zU3RhcnRlZCBpcyBmYWxzZQorCitQQVNT
IHRyYW5zYWN0aW9uMUNvbXBsZXRlIGlzIHRydWUKK1BBU1MgdHJhbnNhY3Rpb24yQ29tcGxldGUg
aXMgdHJ1ZQordHJhbnNhY3Rpb24zU3RhcnRlZCA9IHRydWUKKwordHJhbnNhY3Rpb24zQ29tcGxl
dGUgPSB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tc2NvcGUtc2VxdWVuY2luZy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
dHJhbnNhY3Rpb24tc2NvcGUtc2VxdWVuY2luZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzZWVkYzI3Yjc2
ODAzMGVjZjc0YWM5YzAwYjMzYWVlYjZkNDE1ODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zY29wZS1zZXF1ZW5jaW5nLmh0bWwK
QEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1zY29wZS1zZXF1ZW5jaW5n
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RhcnZhdGlvbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdGFydmF0
aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTgzODRkMWNmNzM5YjkzOWZjYWZjNmQ3MTli
ODk5ZWI1NTdiNTk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tc3RhcnZhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNyBA
QAorQ2hlY2sgdGhhdCByZWFkLW9ubHkgdHJhbnNhY3Rpb25zIGRvbid0IHN0YXJ2ZSByZWFkLXdy
aXRlIHRyYW5zYWN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4
ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96
SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitkYm5h
bWUgPSAidHJhbnNhY3Rpb24tc3RhcnZhdGlvbi5odG1sIgoraW5kZXhlZERCLmRlbGV0ZURhdGFi
YXNlKGRibmFtZSkKK2luZGV4ZWREQi5vcGVuKGRibmFtZSkKKworcHJlcGFyZURhdGFiYXNlKCk6
CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK2RiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScp
CisKK3J1blRyYW5zYWN0aW9ucygpOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CisKK3JlYWRX
cml0ZVRyYW5zYWN0aW9uU3RhcnRlZCA9IGZhbHNlCityZWFkV3JpdGVUcmFuc2FjdGlvbkNvbXBs
ZXRlID0gZmFsc2UKKworc3RhcnRSZWFkT25seVRyYW5zYWN0aW9uKCk6Cit0cmFuc2FjdGlvbiA9
IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkb25seScpCitzdG9yZSA9IHRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCdzdG9yZScpCitLZWVwIHRoZSB0cmFuc2FjdGlvbiBhbGl2ZSB3aXRoIGFu
IGVuZGxlc3Mgc2VyaWVzIG9mIGdldHMKKworc3RhcnRSZWFkV3JpdGVUcmFuc2FjdGlvbigpOgor
dHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykKK3JlYWRX
cml0ZVRyYW5zYWN0aW9uU3RhcnRlZCA9IHRydWUKKworcmVhZFdyaXRlVHJhbnNhY3Rpb25Db21w
bGV0ZSgpOgorUEFTUyBUcmFuc2FjdGlvbiB3YXNuJ3Qgc3RhcnZlZAorcmVhZFdyaXRlVHJhbnNh
Y3Rpb25Db21wbGV0ZSA9IHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1zdGFydmF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1zdGFydmF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI4ZjBjZWM3YzJh
NTI4ZTgyZmYxMzNmODI1MmEyOTg4NTk5OGEzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXN0YXJ2YXRpb24uaHRtbApAQCAtMCww
ICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RyYW5zYWN0aW9uLXN0YXJ2YXRpb24uanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>