<?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>207816</bug_id>
          
          <creation_ts>2020-02-15 15:37:05 -0800</creation_ts>
          <short_desc>Follow up element iterator work by reducing includes and using is&lt;&gt; in a few more places</short_desc>
          <delta_ts>2020-02-23 13:42:16 -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>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>208092</dependson>
    
    <dependson>208097</dependson>
    
    <dependson>208098</dependson>
    
    <dependson>208099</dependson>
    
    <dependson>208100</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>annulen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jbedard</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1619440</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-15 15:37:05 -0800</bug_when>
    <thetext>Revise DOM iterators implementation and usage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619446</commentid>
    <comment_count>1</comment_count>
      <attachid>390872</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-15 16:59:42 -0800</bug_when>
    <thetext>Created attachment 390872
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619451</commentid>
    <comment_count>2</comment_count>
      <attachid>390874</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-15 17:23:43 -0800</bug_when>
    <thetext>Created attachment 390874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619452</commentid>
    <comment_count>3</comment_count>
      <attachid>390875</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-15 17:29:49 -0800</bug_when>
    <thetext>Created attachment 390875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619473</commentid>
    <comment_count>4</comment_count>
      <attachid>390882</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-15 20:25:48 -0800</bug_when>
    <thetext>Created attachment 390882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619486</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-02-16 02:56:14 -0800</bug_when>
    <thetext>It would also be nice to get rid of the clunky OfType suffix, though children&lt;&gt; might be too generic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619498</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-16 08:53:17 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #5)
&gt; It would also be nice to get rid of the clunky OfType suffix, though
&gt; children&lt;&gt; might be too generic.

I love that idea; I will explore it a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619504</commentid>
    <comment_count>7</comment_count>
      <attachid>390890</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-16 12:00:46 -0800</bug_when>
    <thetext>Created attachment 390890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619580</commentid>
    <comment_count>8</comment_count>
      <attachid>390902</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-16 21:55:10 -0800</bug_when>
    <thetext>Created attachment 390902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620496</commentid>
    <comment_count>9</comment_count>
      <attachid>391132</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-18 20:15:18 -0800</bug_when>
    <thetext>Created attachment 391132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621053</commentid>
    <comment_count>10</comment_count>
      <attachid>391250</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-19 20:34:20 -0800</bug_when>
    <thetext>Created attachment 391250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621062</commentid>
    <comment_count>11</comment_count>
      <attachid>391253</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-19 20:56:09 -0800</bug_when>
    <thetext>Created attachment 391253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621540</commentid>
    <comment_count>12</comment_count>
      <attachid>391374</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-20 19:35:53 -0800</bug_when>
    <thetext>Created attachment 391374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621646</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-21 08:00:48 -0800</bug_when>
    <thetext>OK, all tests pass now so I’m ready to have someone review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621690</commentid>
    <comment_count>14</comment_count>
      <attachid>391374</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-02-21 10:15:17 -0800</bug_when>
    <thetext>Comment on attachment 391374
Patch

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

&gt; Source/WebCore/ChangeLog:97
&gt; +        another even if the root element is not the same. Deleted ElementConstIterator.

Why? We&apos;ll lose a significant amount compile time checking against serious programming errors (allowing mutations of elements that are not supposed to be mutated in the context).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621697</commentid>
    <comment_count>15</comment_count>
      <attachid>391374</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-02-21 10:24:49 -0800</bug_when>
    <thetext>Comment on attachment 391374
Patch

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

While this patch has lot of good I don&apos;t think we want to regress in const correctness in WebKit. I know I&apos;m not the only one who feels it is a valuable tool that we should be using more, not less.

&gt; Source/WebCore/dom/TypedElementDescendantIterator.h:65
&gt; -    const ElementType* first() const;
&gt; -    const ElementType* last() const;
&gt; +    ElementType* first() const;
&gt; +    ElementType* last() const;

Gross.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621757</commentid>
    <comment_count>16</comment_count>
      <attachid>391374</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-21 12:44:05 -0800</bug_when>
    <thetext>Comment on attachment 391374
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:97
&gt;&gt; +        another even if the root element is not the same. Deleted ElementConstIterator.
&gt; 
&gt; Why? We&apos;ll lose a significant amount compile time checking against serious programming errors (allowing mutations of elements that are not supposed to be mutated in the context).

Everything is still const-correct. We just don’t need a separate template to do it. We use ElementIterator&lt;const HTMLElement&gt;. The ElementType itself has const in it.

&gt;&gt; Source/WebCore/dom/TypedElementDescendantIterator.h:65
&gt;&gt; +    ElementType* last() const;
&gt; 
&gt; Gross.

We are not regressing in const-correctness! This diff is giving you the wrong impression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621758</commentid>
    <comment_count>17</comment_count>
      <attachid>391374</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-21 12:45:50 -0800</bug_when>
    <thetext>Comment on attachment 391374
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/TypedElementDescendantIterator.h:65
&gt;&gt;&gt; +    ElementType* last() const;
&gt;&gt; 
&gt;&gt; Gross.
&gt; 
&gt; We are not regressing in const-correctness! This diff is giving you the wrong impression.

There is a const version of Range, Range&lt;HTMLElement&gt; that gives you iterators with const pointers, and a non-const version of Range, Range&lt;const HTMLElement&gt; that gives you iterators with non-const pointers. In both of those, the begin/end/first/last functions are const because they don’t modify the *Range*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621759</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-21 12:46:50 -0800</bug_when>
    <thetext>Antti, I hope you have a chance to take another look. I did not get rid of const-correctness. I got rid of unneeded duplicate copies of many class templates while keeping all the const-correctness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621761</commentid>
    <comment_count>19</comment_count>
      <attachid>391374</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-21 12:50:51 -0800</bug_when>
    <thetext>Comment on attachment 391374
Patch

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

I’m going to change this back to review?, since the only reason you gave for review- is a misunderstanding. I hope you will take another look.

&gt; Source/WebCore/dom/ElementAncestorIterator.h:114
&gt; +        return ElementAncestorRange&lt;const ElementType&gt;(&amp;downcast&lt;ElementType&gt;(first));

Here’s where we make a code change for lineageOfType so we retain the const correctness. Note here that because the argument is const, the template argument for the range (and indirectly for the iterator) is a const type. This is what makes the const correctness work.

&gt; Source/WebCore/dom/ElementAncestorIterator.h:127
&gt; +    return ElementAncestorRange&lt;const ElementType&gt;(findElementAncestorOfType&lt;const ElementType&gt;(descendant));

And here is where we do it for ancestorsOfType.

&gt; Source/WebCore/dom/ElementChildIterator.h:129
&gt; +    return ElementChildRange&lt;const ElementType&gt;(parent);

Here is where we do it for childrenOfType.

&gt; Source/WebCore/dom/TypedElementDescendantIterator.h:256
&gt; +    return ElementDescendantRange&lt;const ElementType&gt;(root);

Here’s where we make a code change so we retain the const correctness. Note here that because the argument is const, the template argument for the range (and indirectly for the iterator) is a const type. This is what makes the const correctness work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621864</commentid>
    <comment_count>20</comment_count>
      <attachid>391374</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-02-22 00:58:54 -0800</bug_when>
    <thetext>Comment on attachment 391374
Patch

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

&gt; Source/WebCore/ChangeLog:84
&gt; +        * dom/ElementAncestorIterator.h: Moved the declarations of the functions
&gt; +        to the top of the file, since the classes are really implementation details.
&gt; +        Removed the separate &quot;Const&quot; versions of everything since we can just use
&gt; +        const in the template argument type instead. Use the term &quot;Range&quot; instead
&gt; +        of the term &quot;IteratorAdapter&quot; for the class templates for use in range-based
&gt; +        for loops since that&apos;s closer to modern C++ terminology. Use nullptr as a
&gt; +        sentinel for end, which works well with range-based for loops. Made many function
&gt; +        members const where appropriate. Specialized lineageOfType and ancestorsOfType
&gt; +        for Element to slightly optimize that case. Use downcast instead of static_cast.
&gt; +        Deleted elementLineage and elementAncestors.
&gt; +
&gt; +        * dom/ElementAndTextDescendantIterator.h: Renamed IteratorAdapter to Range.
&gt; +        Made more function members const.
&gt; +
&gt; +        * dom/ElementChildIterator.h: Moved the declarations of the functions
&gt; +        to the top of the file, since the classes are really implementation details.
&gt; +        Removed the separate &quot;Const&quot; versions of everything since we can just use
&gt; +        const in the template argument type instead. Use the term &quot;Range&quot; instead
&gt; +        of the term &quot;IteratorAdapter&quot; for the class templates for use in range-based
&gt; +        for loops since that&apos;s closer to modern C++ terminology. Use nullptr as a
&gt; +        sentinel for end, which works well with range-based for loops. Made many
&gt; +        function members const where appropriate. Deleted elementChildren.

Can you reorganize the ChangeLog so that interesting design issues (like how const correctness is maintained without separate const iterators) are on the top section instead of being mixed (repeatedly!) with the minutiae? 

In general I don&apos;t think is is helpful to describe mechanical code changes obviously falling out from design changes.

&gt; Source/WebCore/ChangeLog:254
&gt; +        * html/HTMLOptionsCollection.idl: Specify [RequiresExistingAtomString] on

The patch is pretty large. Could for example some of these collection changes be done separately?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621872</commentid>
    <comment_count>21</comment_count>
      <attachid>391374</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-22 08:07:36 -0800</bug_when>
    <thetext>Comment on attachment 391374
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:84
&gt;&gt; +        function members const where appropriate. Deleted elementChildren.
&gt; 
&gt; Can you reorganize the ChangeLog so that interesting design issues (like how const correctness is maintained without separate const iterators) are on the top section instead of being mixed (repeatedly!) with the minutiae? 
&gt; 
&gt; In general I don&apos;t think is is helpful to describe mechanical code changes obviously falling out from design changes.

Sure, happy to.

&gt;&gt; Source/WebCore/ChangeLog:254
&gt;&gt; +        * html/HTMLOptionsCollection.idl: Specify [RequiresExistingAtomString] on
&gt; 
&gt; The patch is pretty large. Could for example some of these collection changes be done separately?

Yes. This could be broken in smaller pieces. It’s hard for me to decide how many to break it into. It’s a lot of work but I would be happy to do it.

For example the “RequiresExistingAtomString” changes are completely separable. I just need some guidance how much to break this down; how many different pieces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621873</commentid>
    <comment_count>22</comment_count>
      <attachid>391374</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-22 08:07:37 -0800</bug_when>
    <thetext>Comment on attachment 391374
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:84
&gt;&gt; +        function members const where appropriate. Deleted elementChildren.
&gt; 
&gt; Can you reorganize the ChangeLog so that interesting design issues (like how const correctness is maintained without separate const iterators) are on the top section instead of being mixed (repeatedly!) with the minutiae? 
&gt; 
&gt; In general I don&apos;t think is is helpful to describe mechanical code changes obviously falling out from design changes.

Sure, happy to.

&gt;&gt; Source/WebCore/ChangeLog:254
&gt;&gt; +        * html/HTMLOptionsCollection.idl: Specify [RequiresExistingAtomString] on
&gt; 
&gt; The patch is pretty large. Could for example some of these collection changes be done separately?

Yes. This could be broken in smaller pieces. It’s hard for me to decide how many to break it into. It’s a lot of work but I would be happy to do it.

For example the “RequiresExistingAtomString” changes are completely separable. I just need some guidance how much to break this down; how many different pieces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621874</commentid>
    <comment_count>23</comment_count>
      <attachid>391374</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-22 08:07:38 -0800</bug_when>
    <thetext>Comment on attachment 391374
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:84
&gt;&gt; +        function members const where appropriate. Deleted elementChildren.
&gt; 
&gt; Can you reorganize the ChangeLog so that interesting design issues (like how const correctness is maintained without separate const iterators) are on the top section instead of being mixed (repeatedly!) with the minutiae? 
&gt; 
&gt; In general I don&apos;t think is is helpful to describe mechanical code changes obviously falling out from design changes.

Sure, happy to.

&gt;&gt; Source/WebCore/ChangeLog:254
&gt;&gt; +        * html/HTMLOptionsCollection.idl: Specify [RequiresExistingAtomString] on
&gt; 
&gt; The patch is pretty large. Could for example some of these collection changes be done separately?

Yes. This could be broken in smaller pieces. It’s hard for me to decide how many to break it into. It’s a lot of work but I would be happy to do it.

For example the “RequiresExistingAtomString” changes are completely separable. I just need some guidance how much to break this down; how many different pieces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621877</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-22 08:50:14 -0800</bug_when>
    <thetext>I broke out a piece as bug 208092. Also planning to write better change log as per Antti’s suggestion. Not sure how many pieces to break this into. Would appreciate other specific suggestions for things to land separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621879</commentid>
    <comment_count>25</comment_count>
      <attachid>391461</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-22 09:11:40 -0800</bug_when>
    <thetext>Created attachment 391461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621880</commentid>
    <comment_count>26</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-22 09:14:11 -0800</bug_when>
    <thetext>OK, uploaded a new patch with a WebCore change log that puts the interesting stuff on the top.

I didn&apos;t yet go down to the rest of the per-file comments and cut them all down. Not sure how much to shorten them. I suppose I could just not mention the specific changes at all since they&apos;re all at the top now. Seems like a lot of work. Just leaving it alone for now.

Open to suggestions about splitting more parts of the patch separately.

I am happy to do whatever it takes to make this better and get it landed so I can move on to something else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621881</commentid>
    <comment_count>27</comment_count>
      <attachid>391461</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-02-22 09:38:55 -0800</bug_when>
    <thetext>Comment on attachment 391461
Patch

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

I like red patches.

&gt; Source/WebCore/ChangeLog:39
&gt; +        - Removed the duplicate descendant iterator, keeping the one that matches
&gt; +          the style of the ancestor and child iterators.
&gt; +        - Removed the non-template elementAncestors, elementChildren, elementDescendants,
&gt; +          and elementLineage functions and changed callers to use xxxOfType&lt;Element&gt; instead.
&gt; +        - Renamed &quot;IteratorAdapter&quot; templates to &quot;Range&quot;, choosing that term to match the
&gt; +          upcoming C++20 Ranges library and range-based for loops.
&gt; +        - Changed the iterators to use an actual &quot;nullptr&quot; for end, following the &quot;sentinel&quot;
&gt; +          design pattern from the Ranges library. Still kept a tiny bit of using an iterator
&gt; +          for end around, only so we can use iterator library functions like std::distance
&gt; +          while waiting for std::ranges::distance, which is compatible with sentinels.
&gt; +        - Implemented const correctness by using const types instead of separate &quot;Const&quot;
&gt; +          class templates. This cut down on source code size a lot. These element iterators
&gt; +          don&apos;t need whole separate templates to implement the const correctness the way
&gt; +          collection classes like HashMap do.
&gt; +        - Improved some other details, like using more const and constexpr on members.
&gt; +          All the functions on a range are const, because the range itself doesn&apos;t ever
&gt; +          get modified, and all functions on an iterator are also const, because only
&gt; +          operations like ++ and -- actually modify the iterator.
&gt; +        - For now at least, removed extra code we don&apos;t need in practice. We never need to
&gt; +          compare iterators to each other except when iterating a range, for example, so
&gt; +          kept the != used for range iteration but not ==.
&gt; +        - Simplified the HTMLCollection implementations by taking advantage of the null-
&gt; +          based and sentinel designs. There are various places where we can write
&gt; +          simpler code and pass around fewer arguments.
&gt; +        - Added a new descendantsOfType template that takes a predicate and filters to only
&gt; +          the elements that match that predicate. Similar concept to how we implement HTML
&gt; +          collections, and possibly could be used even more eventually.
&gt; +        - Use std::iterator in ElementIterator so we don&apos;t need to do that in derived
&gt; +          classes. Also made more of ElementIterator protected to make it more explicit
&gt; +          that it&apos;s an abstract class template and not something to be used directly.

This is informative!

&gt; Source/WebCore/dom/CollectionIndexCache.h:45
&gt; -    explicit CollectionIndexCache(const Collection&amp;);
&gt; +    CollectionIndexCache();
&gt;  
&gt;      typedef typename std::iterator_traits&lt;Iterator&gt;::value_type NodeType;
&gt;  
&gt;      unsigned nodeCount(const Collection&amp;);
&gt;      NodeType* nodeAt(const Collection&amp;, unsigned index);
&gt;  
&gt; -    bool hasValidCache(const Collection&amp; collection) const { return m_current != collection.collectionEnd() || m_nodeCountValid || m_listValid; }
&gt; -    void invalidate(const Collection&amp;);
&gt; +    bool hasValidCache() const { return m_current || m_nodeCountValid || m_listValid; }
&gt; +    void invalidate();

This sort of work that builds on top of the refactoring would be better done as an incremental step (making the patch less unwieldy).

&gt; Source/WebCore/dom/ElementAncestorIterator.h:54
&gt; +    static constexpr std::nullptr_t end() { return nullptr; }

This is a nice C++17 feature.

&gt; Source/WebCore/html/HTMLTableElement.h:98
&gt; -    RefPtr&lt;StyleProperties&gt; m_sharedCellStyle;
&gt; +    mutable RefPtr&lt;StyleProperties&gt; m_sharedCellStyle;

Could probably be mutable RefPtr&lt;const StyleProperties&gt;

&gt; Source/WebCore/xml/parser/XMLDocumentParser.cpp:296
&gt; +    if (contextElement) {
&gt; +        bool stopLookingForDefaultNamespaceURI = false;
&gt; +
&gt; +        for (auto&amp; element : lineageOfType&lt;Element&gt;(*contextElement)) {
&gt; +            if (is&lt;SVGForeignObjectElement&gt;(element))
&gt; +                stopLookingForDefaultNamespaceURI = true;
&gt; +            else if (!stopLookingForDefaultNamespaceURI)
&gt; +                defaultNamespaceURI = element.namespaceURI();
&gt; +
&gt; +            if (!element.hasAttributes())
&gt; +                continue;
&gt; +
&gt; +            for (const Attribute&amp; attribute : element.attributesIterator()) {
&gt; +                if (attribute.prefix() == xmlnsAtom())
&gt; +                    prefixToNamespaceMap.set(attribute.localName(), attribute.value());
&gt; +                else if (!stopLookingForDefaultNamespaceURI &amp;&amp; attribute.prefix() == xmlnsAtom())
&gt; +                    defaultNamespaceURI = attribute.value();
&gt; +            }
&gt;          }
&gt;      }

This looks likea good candidate for a lambda.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621882</commentid>
    <comment_count>28</comment_count>
      <attachid>391461</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-02-22 09:53:15 -0800</bug_when>
    <thetext>Comment on attachment 391461
Patch

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

&gt; Source/WebCore/dom/TypedElementDescendantIterator.h:42
&gt; +// Range that skips elements where the filter returns false.
&gt; +template&lt;typename ElementType, bool filter(const ElementType&amp;)&gt; FilteredElementDescendantRange&lt;const ElementType, filter&gt; descendantsOfType(const ContainerNode&amp;);

filteredDescendants(OfType)?

The filter template would have been another separable feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621908</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-22 16:17:48 -0800</bug_when>
    <thetext>I’ll follow up on all those comments. A few specific things:

- I’ll keep breaking up the patch more and land in smaller pieces. For example, I think the next one will be more adoption of the element iterators but no changes to the iterator implementation. Given they are all excerpts of this one, I might not wait for separate review of all pieces, just claim Antti reviewed. Judgement call depending on if they seem obvious or complex.

- I will use the name filteredDescendants instead of descendantsOfType.

- I plan to follow up afterwards and rename descendantsOfType to just descendants, same for lineageOfType and ancestryOfType, but I&apos;ll use the do-webcore-rename script to do it. I’ll wait on childrenOfType for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621949</commentid>
    <comment_count>30</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-22 21:23:21 -0800</bug_when>
    <thetext>Landed another piece as bug 208097, covering more adoption of the element iterators.

Separated out a third piece as bug 208098, covering a small change in behavior, where a piece of the datalist element implementation was outside ENABLE(DATALIST_ELEMENT), and I had to move it in so I could use the element iterator in its implementation.

More separate pieces to come.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621955</commentid>
    <comment_count>31</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-22 21:48:11 -0800</bug_when>
    <thetext>Broke out a fourth pieces as bug 208099, covering the changes outside WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621959</commentid>
    <comment_count>32</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-22 22:23:24 -0800</bug_when>
    <thetext>Broke out a fifth piece as bug 208100; this has the new revised versions of the implementations of the iterators. That pretty much covers what the title of this bug takes about, but still leaves some non-trivial parts of the patch attached here once these are all landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621992</commentid>
    <comment_count>33</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-23 08:00:07 -0800</bug_when>
    <thetext>Now that most of this has landed, using this bug for the last bit, and retitling accordingly. These bits are not identical to when Antti reviewed, but I still think I can probably land it without another round of review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621993</commentid>
    <comment_count>34</comment_count>
      <attachid>391490</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-23 08:01:04 -0800</bug_when>
    <thetext>Created attachment 391490
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621995</commentid>
    <comment_count>35</comment_count>
      <attachid>391491</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-23 08:10:42 -0800</bug_when>
    <thetext>Created attachment 391491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622020</commentid>
    <comment_count>36</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-23 13:41:48 -0800</bug_when>
    <thetext>Committed r257196: &lt;https://trac.webkit.org/changeset/257196&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622021</commentid>
    <comment_count>37</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-23 13:42:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/59709547&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390872</attachid>
            <date>2020-02-15 16:59:42 -0800</date>
            <delta_ts>2020-02-15 17:23:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207816-20200215165941.patch</filename>
            <type>text/plain</type>
            <size>200592</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA3ZDVjMDg3NTUyMmNm
ZGU0MjQwZTU1YTcwZTQ3ZGVmNjE0YTNhNy4uMDM4OTk1OWVhMDFlYzcyZGM2ZGVkNmUzNmQxYjli
NGNmZGUyMDYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5MSBAQAorMjAyMC0wMi0xNSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRv
cnMgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZpbmVkIGVsZW1lbnQgaXRlcmF0b3IgaW1wbGVtZW50YXRp
b24gb24gdGhlIGZvbGxvd2luZyB3YXlzOgorCisgICAgICAgIDEpIFJlbW92ZWQgdGhlIGR1cGxp
Y2F0ZSBkZXNjZW5kYW50IGl0ZXJhdG9yLCBrZWVwaW5nIHRoZSBvbmUgdGhhdCBtYXRjaGVzCisg
ICAgICAgICAgIHRoZSBzdHlsZSBvZiB0aGUgYW5jZXN0b3IgYW5kIGNoaWxkIGl0ZXJhdG9ycy4K
KyAgICAgICAgMikgUmVtb3ZlZCB0aGUgbm9uLXRlbXBsYXRlIGVsZW1lbnRBbmNlc3RvcnMsIGVs
ZW1lbnRDaGlsZHJlbiwgZWxlbWVudERlc2NlbmRhbnRzLAorICAgICAgICAgICBhbmQgZWxlbWVu
dExpbmVhZ2UgZnVuY3Rpb25zIGFuZCBjaGFuZ2VkIGNhbGxlcnMgdG8gdXNlIHh4eE9mVHlwZTxF
bGVtZW50PiBpbnN0ZWFkLgorCisgICAgICAgIEFsc28gcmVwbGFjZWQgdXNlIG9mIEhUTUxDb2xs
ZWN0aW9uIGNsYXNzZXMgaW4gV2ViS2l0IGNvZGUgZm9yIGl0ZXJhdGlvbi4KKyAgICAgICAgVGhl
eSBhcmUgZmluZSBmb3IgdXNlIGZyb20gSmF2YVNjcmlwdCwgYnV0IGludGVybmFsbHkgd2UgaGF2
ZSBtb3JlIGVmZmljaWVudAorICAgICAgICBpdGVyYXRpb24gaWRpb21zLgorCisgICAgICAgICog
SGVhZGVycy5jbWFrZTogUmVtb3ZlZCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmguCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Om1vdXNlQnV0dG9uTGlzdGVuZXIgY29u
c3QpOiBVc2UKKyAgICAgICAgbGluZWFnZU9mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnRMaW5lYWdl
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2li
aWxpdHlJbWFnZU1hcEhpdFRlc3QgY29uc3QpOgorICAgICAgICBVc2UgYW5jZXN0b3JzT2ZUeXBl
IGluc3RlYWQgb2YgYSBoYW5kd3JpdHRlbiBsb29wLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUg
b2YKKyAgICAgICAgSFRNTENvbGxlY3Rpb24uaC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHA6IERpdHRvLgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmNwcDogVXBkYXRlZCBpbmNsdWRlcy4KKyAgICAgICAgKiBkb20vQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5LmNwcDogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50OjpnZXRFbGVtZW50QnlJ
ZCBjb25zdCk6IFVzZQorICAgICAgICBkZXNjZW5kYW50c09mVHlwZSBpbnN0ZWFkb2YgZWxlbWVu
dERlc2NlbmRhbnRzLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlIGNvbnN0KTogVXNlIGxpbmVh
Z2VPZlR5cGUKKyAgICAgICAgaW5zdGVhZCBvZiBhIGhhbmRyd2l0dGVuIGxvb3AuCisKKyAgICAg
ICAgKiBkb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaDogTW92ZWQgdGhlIGRlY2xhcmF0aW9u
cyBvZiB0aGUgZnVuY3Rpb25zCisgICAgICAgIHRvIHRoZSB0b3Agb2YgdGhlIGZpbGUsIHNpbmNl
IHRoZSBjbGFzc2VzIGFyZSByZWFsbHkgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KKyAgICAgICAg
UmVtb3ZlZCB0aGUgc2VwYXJhdGUgIkNvbnN0IiB2ZXJzaW9ucyBvZiBldmVyeXRoaW5nIHNpbmNl
IHdlIGNhbiBqdXN0IHVzZQorICAgICAgICBjb25zdCBpbiB0aGUgdGVtcGxhdGUgYXJndW1lbnQg
dHlwZSBpbnN0ZWFkLiBVc2UgdGhlIHRlcm0gIlJhbmdlIiBpbnN0ZWFkCisgICAgICAgIG9mIHRo
ZSB0ZXJtICJJdGVyYXRvckFkYXB0ZXIiIGZvciB0aGUgY2xhc3MgdGVtcGxhdGVzIGZvciB1c2Ug
aW4gcmFuZ2UtYmFzZWQKKyAgICAgICAgZm9yIGxvb3BzIHNpbmNlIHRoYXQncyBjbG9zZXIgdG8g
bW9kZXJuIEMrKyB0ZXJtaW5vbG9neS4gTWFkZSBtYW55IGZ1bmN0aW9uCisgICAgICAgIG1lbWJl
cnMgY29uc3Qgd2hlcmUgYXBwcm9wcmlhdGUuIFNwZWNpYWxpemVkIGxpbmVhZ2VPZlR5cGUgYW5k
IGFuY2VzdG9yc09mVHlwZQorICAgICAgICBmb3IgRWxlbWVudCB0byBzbGlnaHRseSBvcHRpbWl6
ZSB0aGF0IGNhc2UuIFVzZSBkb3duY2FzdCBpbnN0ZWFkIG9mIHN0YXRpY19jYXN0LgorICAgICAg
ICBEZWxldGVkIGVsZW1lbnRMaW5lYWdlIGFuZCBlbGVtZW50QW5jZXN0b3JzLgorCisgICAgICAg
ICogZG9tL0VsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmg6IFJlbmFtZWQgSXRlcmF0
b3JBZGFwdGVyIHRvIFJhbmdlLgorICAgICAgICBNYWRlIG1vcmUgZnVuY3Rpb24gbWVtYmVycyBj
b25zdC4KKworICAgICAgICAqIGRvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oOiBNb3ZlZCB0aGUg
ZGVjbGFyYXRpb25zIG9mIHRoZSBmdW5jdGlvbnMKKyAgICAgICAgdG8gdGhlIHRvcCBvZiB0aGUg
ZmlsZSwgc2luY2UgdGhlIGNsYXNzZXMgYXJlIHJlYWxseSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxz
LgorICAgICAgICBSZW1vdmVkIHRoZSBzZXBhcmF0ZSAiQ29uc3QiIHZlcnNpb25zIG9mIGV2ZXJ5
dGhpbmcgc2luY2Ugd2UgY2FuIGp1c3QgdXNlCisgICAgICAgIGNvbnN0IGluIHRoZSB0ZW1wbGF0
ZSBhcmd1bWVudCB0eXBlIGluc3RlYWQuIFVzZSB0aGUgdGVybSAiUmFuZ2UiIGluc3RlYWQKKyAg
ICAgICAgb2YgdGhlIHRlcm0gIkl0ZXJhdG9yQWRhcHRlciIgZm9yIHRoZSBjbGFzcyB0ZW1wbGF0
ZXMgZm9yIHVzZSBpbiByYW5nZS1iYXNlZAorICAgICAgICBmb3IgbG9vcHMgc2luY2UgdGhhdCdz
IGNsb3NlciB0byBtb2Rlcm4gQysrIHRlcm1pbm9sb2d5LiBNYWRlIG1hbnkgZnVuY3Rpb24KKyAg
ICAgICAgbWVtYmVycyBjb25zdCB3aGVyZSBhcHByb3ByaWF0ZS4gRGVsZXRlZCBlbGVtZW50Q2hp
bGRyZW4uCisKKyAgICAgICAgKiBkb20vRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oOiBSZW1v
dmVkLgorCisgICAgICAgICogZG9tL0VsZW1lbnRJdGVyYXRvci5oOiBDaGFuZ2VkIEVsZW1lbnRJ
dGVyYXRvciB0byBkZXJpdmUgZnJvbSBzdGQ6Oml0ZXJhdG9yCisgICAgICAgIHRvIG1ha2UgaXRl
cmF0b3IgdHJhaXRzIHdvcmsgZm9yIGFsbCBjbGFzc2VzIGRlcml2ZWQgZnJvbSBpdC4gTWFkZSBj
b25zdHJ1Y3RvcnMKKyAgICAgICAgb2YgRWxlbWVudEl0ZXJhdG9yIHByaXZhdGUgdG8gbWFrZSBp
dCBjbGVhciBpdCdzIGludGVuZGVkIHRvIGJlIHVzZWQgYXMgYSBiYXNlCisgICAgICAgIGNsYXNz
IGFuZCBub3QgaW5zdGFudGlhdGVkLiBBZGRlZCBhIHByb3RlY3RlZCBhdEVuZCBmdW5jdGlvbiB0
aGF0J3MgdXNlZnVsIGluIHRoZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBzb21lIGZ1bmN0
aW9ucyB0aGF0IHdhbnQgdG8gY2hlY2sgdGhlIGVuZCBvZiBpdGVyYXRpb24gd2l0aG91dAorICAg
ICAgICBhbGxvY2F0aW5nIGFuICJlbmQiIGl0ZXJhdG9yLiBEZWxldGVkIEVsZW1lbnRDb25zdEl0
ZXJhdG9yLgorCisgICAgICAgICogZG9tL0xpdmVOb2RlTGlzdC5jcHA6IFJlbW92ZWQgc29tZSB1
bm5lZWRlZCBpbmNsdWRlcywgaW5jbHVkaW5nIEhUTUxDb2xsZWN0aW9uLmguCisKKyAgICAgICAg
KiBkb20vTGl2ZU5vZGVMaXN0Lmg6IFVwZGF0ZWQgc2luY2UgQ29sbGVjdGlvblRyYXZlcnNhbCBu
b3cgdXNlcyB0aGUKKyAgICAgICAgbW9yZSBtb2Rlcm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ciwgbm90IHRoZSBvbGRlciBvbmUgdGhhdCB1c2VkIGEgdmVjdG9yIG9mCisgICAgICAgIGFuY2Vz
dG9ycyB0byBkbyB0aGUgaXRlcmF0aW9uLgorCisgICAgICAgICogZG9tL05vZGUuY3BwOiBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgSFRNTENvbGxlY3Rpb24uaC4KKworICAgICAgICAqIGRv
bS9TZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6
OmNsb3Nlc3QgY29uc3QpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlIGluc3RlYWQgb2YgYW4KKyAgICAg
ICAgZXhwbGljaXQgbG9vcC4KKyAgICAgICAgKFdlYkNvcmU6OmVsZW1lbnRzRm9yTG9jYWxOYW1l
KTogVXNlIGRlc2NlbmRhbnRzT2ZUeXBlIGluc3RlYWQgb2YgZWxlbWVudERlc2NlbmRhbnRzLgor
ICAgICAgICAoV2ViQ29yZTo6YW55RWxlbWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZVRhZ05hbWVTZWxlY3RvckRhdGEgY29uc3Qp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5n
bGVDbGFzc05hbWVTZWxlY3RvckRhdGEgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVTZWxlY3RvckRhdGEgY29uc3QpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVNdWx0
aVNlbGVjdG9yRGF0YSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JE
YXRhTGlzdDo6ZXhlY3V0ZUNvbXBpbGVkU2ltcGxlU2VsZWN0b3JDaGVja2VyIGNvbnN0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29tcGlsZWRT
ZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0IGNvbnN0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29tcGlsZWRTaW5nbGVNdWx0aVNl
bGVjdG9yRGF0YSBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogZG9tL1Nsb3RBc3NpZ25tZW50
LmNwcDogVXBkYXRlZCBpbmNsdWRlcy4KKworICAgICAgICAqIGRvbS9UeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IuaDogTW92ZWQgdGhlIGRlY2xhcmF0aW9ucyBvZiB0aGUgZnVuY3Rpb25z
CisgICAgICAgIHRvIHRoZSB0b3Agb2YgdGhlIGZpbGUsIHNpbmNlIHRoZSBjbGFzc2VzIGFyZSBy
ZWFsbHkgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KKyAgICAgICAgUmVuYW1lZCB0aGUgY2xhc3Nl
cyB0byB0YWtlIG91dCB0aGUgd29yZCAidHlwZWQiIHNpbmNlIHRoZXNlIGl0ZXJhdG9ycyBhcmUg
dGhlCisgICAgICAgIHNhbWUgYXMgdGhlIGFuY2VzdG9yIGFuZCBjaGlsZHJlbiBpdGVyYXRvcnM7
IHRoaXMgZ2l2ZXMgdGhlc2UgdGhlIHNhbWUgbmFtZSBhcworICAgICAgICB0aGUgY2xhc3NlcyBp
biB0aGUgZGVsZXRlZCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggZmlsZSwgYW5kIHdlIGNh
biBmb2xsb3cKKyAgICAgICAgdXAgYnkgcmVuYW1pbmcgdGhpcyBmaWxlIHRvIHRha2UgIlR5cGVk
IiBvdXQgb2YgdGhlIG5hbWUgb2YgdGhlIGZpbGUsIHRvby4KKyAgICAgICAgUmVtb3ZlZCB0aGUg
c2VwYXJhdGUgIkNvbnN0IiB2ZXJzaW9ucyBvZiBldmVyeXRoaW5nIHNpbmNlIHdlIGNhbiBqdXN0
IHVzZQorICAgICAgICBjb25zdCBpbiB0aGUgdGVtcGxhdGUgYXJndW1lbnQgdHlwZSBpbnN0ZWFk
LiBVc2UgdGhlIHRlcm0gIlJhbmdlIiBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSB0ZXJtICJJdGVy
YXRvckFkYXB0ZXIiIGZvciB0aGUgY2xhc3MgdGVtcGxhdGVzIGZvciB1c2UgaW4gcmFuZ2UtYmFz
ZWQKKyAgICAgICAgZm9yIGxvb3BzIHNpbmNlIHRoYXQncyBjbG9zZXIgdG8gbW9kZXJuIEMrKyB0
ZXJtaW5vbG9neS4gTWFkZSBtYW55IGZ1bmN0aW9uCisgICAgICAgIG1lbWJlcnMgY29uc3Qgd2hl
cmUgYXBwcm9wcmlhdGUuIEFkZGVkIGEgbmV3IHNwZWNpYWxpemF0aW9uIHRoYXQgbWFrZXMgYQor
ICAgICAgICBkZXNjZW5kYW50IGl0ZXJhdG9yIHRoYXQgaXMgZmlsdGVyZWQgYmFzZWQgb24gYSBm
dW5jdGlvbiwgZm9yIHVzZSBpbiBpdGVyYXRpbmcKKyAgICAgICAgZGF0YSBsaXN0IHN1Z2dlc3Rp
b25zLgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjphcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQgY29uc3QpOiBVc2UgdGhlIGZ1
bmN0aW9uCisgICAgICAgIGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxCb2R5RWxlbWVudD4gaW5zdGVh
ZCBvZiBnZXRFbGVtZW50QnlUYWdOYW1lKGJvZHlUYWcpLgorICAgICAgICBBbHNvIG1lcmdlZCBh
cHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudCBpbiBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjphcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudCBjb25zdCk6IERlbGV0ZWQuCisKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5oOiBEZWxldGVkIGFwcGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50
LgorCisgICAgICAgICogZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25SdWxlTWF0Y2hlcjo6aXNFeGNsdWRlZCk6IFVzZSBs
aW5lYWdlT2ZUeXBlIGluc3RlYWQgb2YKKyAgICAgICAgZWxlbWVudExpbmVhZ2UuCisKKyAgICAg
ICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbTogVXBkYXRlZCBpbmNs
dWRlcy4KKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6IERpdHRvLgorICAgICAgICAqIGh0
bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0NvbGxl
Y3Rpb25UcmF2ZXJzYWwuaDogVXBkYXRlZCB0byB1c2UgdGhlIG1ldy90eXBlZCB2ZXJzaW9uIG9m
CisgICAgICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuIEFsc28gdXBkYXRlZCB0byB1c2Ug
c2hvcnRlciB0eXBlIG5hbWVzLgorCisgICAgICAgICogaHRtbC9Db2xvcklucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6c3VnZ2VzdGVkQ29sb3JzIGNvbnN0
KTogVXNlIHRoZSBuZXcKKyAgICAgICAgSFRNTERhdGFMaXN0RWxlbWVudDo6c3VnZ2VzdGlvbnMg
aW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIGh0bWwvR2VuZXJpY0NhY2hl
ZEhUTUxDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDYWNoZWRIVE1M
Q29sbGVjdGlvbjx0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1hdGNoZXMgY29uc3QpOgorICAgICAg
ICBVcGRhdGVkIHRvIHVzZSBIVE1MRGF0YUxpc3RFbGVtZW50Ojppc1N1Z2dlc3Rpb24gYW5kIGFk
ZGVkIGEgY29tbWVudCBleHBsYWluaW5nCisgICAgICAgIHdoeSB0aGF0IG1pZ2h0IG5vdCBiZSBu
ZWNlc3NhcnkgaWYgd2UgY29ycmVjdCB0aGUgaW1wbGVtZW50YXRpb24gdG8gbWF0Y2ggdGhlCisg
ICAgICAgIEhUTUwgc3BlY2lmaWNhdGlvbi4KKworICAgICAgICAqIGh0bWwvSFRNTEFsbENvbGxl
Y3Rpb24uaWRsOiBTcGVjaWZ5IFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gb24gdGhlCisg
ICAgICAgIGFyZ3VtZW50IHRvIG5hbWVkSXRlbSwgYW5kIFtBdG9tU3RyaW5nXSBmb3IgdGhlIGFy
Z3VtZW50IHRvIGl0ZW0uCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5pZGw6IERpdHRv
LgorCisgICAgICAgICogaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxEYXRhTGlzdEVsZW1lbnQ6OmlzU3VnZ2VzdGlvbik6IEFkZGVkLgorICAgICAg
ICAqIGh0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5oOiBBZGRlZCBpc1N1Z2dlc3Rpb24gYW5kIHN1
Z2dlc3Rpb25zIGZ1bmN0aW9ucyBzbworICAgICAgICBsb2dpYyBhYm91dCB3aGljaCBkYXRhIGxp
c3Qgb3B0aW9ucyBhcmUgc3VnZ2VzdGlvbnMgaXMgc2hhcmVkLgorCisgICAgICAgICogaHRtbC9I
VE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbGVtZW50QWZmZWN0c0RpcmVjdGlv
bmFsaXR5KTogUmVmYWN0b3JlZCBzbyB3ZSBnZXQgYSBtb3JlIGVmZmljaWVudAorICAgICAgICBp
bXBsZW1lbnRhdGlvbiB3aGVuIHRoZSB0eXBlIG9mIHRoZSBlbGVtZW50IGlzIGtub3duLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRB
ZnRlckNoaWxkQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIFVzZSBsaW5lYWdlT2ZUeXBlIGlu
c3RlYWQgb2YgZWxlbWVudExpbmVhZ2UuCisKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6
IFJlbW92ZWQgc29tZSB1bmVlZWRlZCBmb3J3YXJkIGRlY2xhcmF0aW9ucy4KKworICAgICAgICAq
IGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kV2lkZ2V0
UmVuZGVyZXIpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlIGluc3RlYWQgb2YgYSBsb29wLgorCisgICAg
ICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbXB1dGVXaWxsVmFsaWRhdGUgY29uc3QpOiBVc2UK
KyAgICAgICAgYW5jZXN0b3JzT2ZUeXBlIGluc3RlYWQgb2YgYSBsb29wLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZW5jbG9zaW5nRm9ybUNvbnRyb2xFbGVtZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDogRGVs
ZXRlZCB1bnVzZWQgZW5jbG9zaW5nRm9ybUNvbnRyb2xFbGVtZW50LgorCisgICAgICAgICogaHRt
bC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGw6IFNwZWNpZnkgW1JlcXVpcmVzRXhpc3Rp
bmdBdG9tU3RyaW5nXSBvbgorICAgICAgICB0aGUgYXJndW1lbnQgdG8gbmFtZWRJdGVtLgorCisg
ICAgICAgICogaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBp
bmNsdWRlIG9mIEhUTUxDb2xsZWN0aW9uLmguCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0dXBEYXRl
VGltZUNob29zZXJQYXJhbWV0ZXJzKTogVXNlIHRoZSBuZXcKKyAgICAgICAgSFRNTERhdGFMaXN0
RWxlbWVudDo6c3VnZ2VzdGlvbnMgaW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAg
ICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
T3B0R3JvdXBFbGVtZW50Ojpvd25lclNlbGVjdEVsZW1lbnQgY29uc3QpOiBVc2UgYW5jZXN0b3Jz
T2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2YgYSBoYW5kLXdyaXR0ZW4gbG9vcC4KKworICAgICAg
ICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9w
dGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogVXNlIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFk
IG9mCisgICAgICAgIGNhbGxpbmcgb3duZXJEYXRhTGlzdEVsZW1lbnQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6b3duZXJEYXRhTGlzdEVsZW1lbnQgY29uc3Qp
OiBEZWxldGVkLiBTaW5jZSB0aGUKKyAgICAgICAgc2FtZSBvcHRpb24gY2FuIGJlIHVzZWQgYnkg
bmVzdGVkIGRhdGEgbGlzdCBlbGVtZW50cywgdGhlIGNvbmNlcHQgb2YgYSBzaW5nbGUKKyAgICAg
ICAgIm93bmVyIiBkYXRhIGxpc3QgZWxlbWVudCBpc24ndCBmdWxseSBjb3JyZWN0LgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6Om93bmVyU2VsZWN0RWxlbWVudCBjb25zdCk6
IFVzZSBhbmNlc3RvcnNPZlR5cGUKKyAgICAgICAgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBs
b29wLgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaDogRGVsZXRlZCBvd25lckRh
dGFMaXN0RWxlbWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlk
bDogU3BlY2lmeSBbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIG9uCisgICAgICAgIHRoZSBh
cmd1bWVudCB0byBuYW1lZEl0ZW0uCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwOiBVcGRhdGVkIGluY2x1ZGVzLgorCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0
RWxlbWVudC5pZGw6IFNwZWNpZnkgW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBvbgorICAg
ICAgICB0aGUgYXJndW1lbnQgdG8gbmFtZWRJdGVtLgorCisgICAgICAgICogaHRtbC9IVE1MVGFi
bGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVu
dDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlIGNvbnN0KToKKyAgICAgICAg
VXNlIGF1dG8gc2luY2UgZmluZFBhcmVudFRhYmxlIG5vdyByZXR1cm5zIGEgY29uc3QgdGFibGUg
cG9pbnRlci4KKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRhYmxlQ29sRWxlbWVudDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0
dHJpYnV0ZVN0eWxlIGNvbnN0KToKKyAgICAgICAgRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hU
TUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6
Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKTogTWFkZSBjb25zdC4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxDZWxsU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxHcm91cFN0eWxlKTogRGl0dG8uCisg
ICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50Lmg6IE1hZGUgdGhlIGZ1bmN0aW9ucyBjb25z
dCwgYW5kIG1fc2hhcmVkQ2VsbFN0eWxlCisgICAgICAgIG11dGFibGUuCisKKyAgICAgICAgKiBo
dG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJs
ZVBhcnRFbGVtZW50OjpmaW5kUGFyZW50VGFibGUgY29uc3QpOiBVc2UgYW5jZXN0b3JzT2ZUeXBl
CisgICAgICAgIGluc3RlYWQgb2YgYSBoYW5kLXdyaXR0ZW4gbG9vcC4gQWxzbyByZXZpc2VkIHJl
dHVybiB0eXBlIHRvIGJlIGNvbnN0LWNvbnNpc3RlbnQuCisgICAgICAgICogaHRtbC9IVE1MVGFi
bGVQYXJ0RWxlbWVudC5oOiBVcGRhdGVkIHJldHVybiB0eXBlLgorCisgICAgICAgICogaHRtbC9I
VE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVj
dGlvbi5oLgorCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRIVE1MRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlyZWN0aW9uRm9yRm9ybURh
dGEgY29uc3QpOiBVc2UKKyAgICAgICAgbGluZWFnZU9mVHlwZSByYXRoZXIgdGhhbiBhIGhhbmQt
d3JpdHRlbiBsb29wLiBBbHNvIGdvdCByaWQgb2YgdGhlIG11bHRpcGxlCisgICAgICAgIHN0cmlu
Z3MgaW4gcmV0dXJuIHBhdGhzIHNpbmNlIHRoZSBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBvbmUg
b2YgdHdvIHN0cmluZ3MuCisKKyAgICAgICAgKiBodG1sL01lZGlhRG9jdW1lbnQuY3BwOiBVcGRh
dGVkIGluY2x1ZGVzLgorCisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9ucyk6IFVzZSBI
VE1MRGF0YUxpc3RFbGVtZW50OjpzdWdnZXN0aW9ucworICAgICAgICBpbnN0ZWFkIG9mIEhUTUxD
b2xsZWN0aW9uLiBBbHNvIGFkZGVkIGEgRklYTUUgYmVjYXVzZSB0aGUgY3VycmVudCBsb2dpYyBp
cworICAgICAgICBub3QgcmlnaHQgYWNyb3NzIGxhbmd1YWdlcyBhbmQgd2l0aCBub24tQVNDSUkg
Y2hhcmFjdGVycy4KKworICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcDogUmVt
b3ZlZCBpbmNsdWRlIG9mIEhUTUxDb2xsZWN0aW9uLmguCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0RWxlbWVudHNCeUNvbXB1dGVk
Um9sZSk6CisgICAgICAgIFVzZSBkZXNjZW5kYW50c09mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnRE
ZXNjZW5kYW50cy4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRT
dHlsZXNGb3JOb2RlKTogVXNlIGFuY2VzdG9yc09mVHlwZQorICAgICAgICBpbnN0ZWFkIG9mIGEg
aGFuZC13cml0dGVuIGxvb3AuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjppbnNw
ZWN0KTogVXNlIGlzRWxlbWVudE5vZGUgYW5kIGlzRG9jdW1lbnROb2RlCisgICAgICAgIGluc3Rl
YWQgb2YgdGhlIG11Y2ggc2xvd2VyIG5vZGVUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE1vdXNlZE92ZXJOb2RlKTogVXNlIGlzVGV4dE5vZGUgaW5z
dGVhZCBvZgorICAgICAgICB0aGUgbXVjaCBzbG93ZXIgbm9kZVR5cGUuCisKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOiBEaXR0by4KKworICAgICAgICAqIHBhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbmluZ0xpbmtFbGVt
ZW50KTogQWRkZWQuIFVzZXMgbGluZWFnZU9mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnRMaW5lYWdl
LgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyk6IFVwZGF0
ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxT
bmFwT2Zmc2V0cy5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlvbi5oLgorCisg
ICAgICAgICogcGxhdGZvcm0vRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oOiBSZWR1Y2VkIGlu
Y2x1ZGVzLCB1c2UgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50U2xp
ZGVyVGlja3MpOiBVc2UgSFRNTERhdGFMaXN0RWxlbWVudDo6c3VnZ2VzdGlvbnMKKyAgICAgICAg
aW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojp1
cGRhdGVNYXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyk6CisgICAgICAgIFVzZSBh
bmNlc3RvcnNPZlR5cGUgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorCisgICAgICAg
ICogc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
SW52YWxpZGF0b3I6OmludmFsaWRhdGVTdHlsZVdpdGhNYXRjaEVsZW1lbnQpOiBSZW1vdmUgYW4g
dW5uZWVkZWQKKyAgICAgICAgbG9jYWwgdmFyaWFibGUgYW5kIHVubmVlZGVkIGJyYWNlcy4KKwor
ICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OmlzQXRTaGFkb3dCb3VuZGFyeSk6IFVzZSB0aGUgaXM8U2hhZG93Um9vdD4gZnVuY3Rpb24u
CisKKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6IFVzZSB0aGUgaXM8U1ZHRWxlbWVudD4g
ZnVuY3Rpb24uCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRWxlbWVudDo6dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24pOiBEaXR0by4K
KworICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6IE1hZGUgY29tcHV0ZWRTdHlsZSBwdWJsaWMu
IEF0IGxlYXN0IG9uZSBjYWxsIHNpdGUgbm93IGtub3dzIHRoZQorICAgICAgICBzcGVjaWZpYyB0
eXBlIFNWR0VsZW1lbnQsIGFuZCBzbyBjYW4gY2FsbCBpdCBldmVuIG1vcmUgZWZmaWNpZW50bHkg
dGhhbiBiZWZvcmUuIElmCisgICAgICAgIHdlIGxlZnQgaXQgcHJpdmF0ZSB3ZSdkIGhhdmUgdG8g
Y2FzdCB0byB0aGUgYmFzZSBjbGFzcyB0byBjYWxsIGl0LCBhbmQgdGhlbiB3b3VsZCBuZWVkCisg
ICAgICAgIHZpcnR1YWwgZnVuY3Rpb24gZGlzcGF0Y2guCisKKyAgICAgICAgKiB4bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFy
c2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQpOiBVc2UgbGluZWFnZU9mVHlwZSBpbnN0ZWFkIG9m
CisgICAgICAgIGVsZW1lbnRMaW5lYWdlLiBBbHNvIGFkZCBhIG51bGwgY2hlY2sgdGhhdCBzZWVt
cyB0byBoYXZlIGJlZW4gbmVlZGVkIGJlZm9yZSB0b28uCisKIDIwMjAtMDItMTUgIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVy
XSBCdWlsZCBmYWlsdXJlIHdpdGggQ2xhbmcvbGliYysrIGR1ZSB0byBtaXNzaW5nIFdhbGxUaW1l
4oaSZmxvYXQgZm9yIHN0ZDo6aXNuYW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyZDM5MTBlYzFkY2JmYjJhNGQw
M2EyYmVkYzZkYTE3YmE2YTIzNDk3Li4yM2RjYzQwN2Y1MjZlZjE5MTQyNmE1ZWVhOTI4OThkZmEz
Mjg4YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTAyLTE1ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpc2UgRE9NIGl0ZXJhdG9ycyBpbXBs
ZW1lbnRhdGlvbiBhbmQgdXNhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNzgxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb250YWluZXJFbGVtZW50Rm9yRWxlbWVudCk6
IFVlcyBhbmNlc3RvcnNPZlR5cGUgaW5zdGVhZCBvZiBvd25lckRhdGFMaXN0RWxlbWVudC4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHA6
IFVwZGF0ZWQgaW5jbHVkZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6
Y3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKTogUGFzcyByZWZlcmVuY2VzLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNr
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6Oldl
YkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik6IFRha2UgcmVmZXJlbmNlcworICAgICAgICBpbnN0
ZWFkIG9mIHBvaW50ZXJzLCBzaW5jZSB0aGV5IG11c3QgYm90aCBiZSBub24tbnVsbC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpoYW5kbGVLZXlkb3duV2l0
aElkZW50aWZpZXIpOiBVcGRhdGVkCisgICAgICAgIHRvIHVzZSByZWZlcmVuY2UuCisgICAgICAg
IChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlkU2VsZWN0T3B0aW9uKTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlk
Q2xvc2VTdWdnZXN0aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXI6OmNsb3NlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlzcGxheVdpdGhBY3RpdmF0aW9uVHlwZSk6IERpdHRvLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rp
b25QaWNrZXIuaDogTWFya2VkIHRoZSBjbGFzcworICAgICAgICBmaW5hbCwgbWFkZSBtb3JlIGZ1
bmN0aW9ucyBwcml2YXRlLCB1c2UgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzLAorICAg
ICAgICByZW5hbWVkIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCB0byBtX2NsaWVudCBzaW5j
ZSB0aGVyZSBpcyBvbmx5IG9uZQorICAgICAgICBjbGllbnQgd2UgYXJlIGRlYWxpbmcgd2l0aCBp
biB0aGlzIGNsYXNzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9ybUVsZW1lbnRzIGNv
bnN0KTogVXNlIGNoaWxkcmVuT2ZUeXBlIGluc3RlYWQKKyAgICAgICAgb2YgYSBoYW5kLXdyaXR0
ZW4gbG9vcC4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9ybUNvbnRy
b2xzIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEFjdGl2ZURhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlcik6IFRha2UgcmVmZXJlbmNlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udGFpbmlu
Z0xpbmtBbmNob3JFbGVtZW50KTogVXNlIGxpbmVhZ2VPZlR5cGUgaW5zdGVhZCBvZiBlbGVtZW50
TGluZWFnZS4KKyAgICAgICAgQWxzbyByZW5hbWVkIHRvIGVtcGhhc2l6ZSB0aGF0IHRoaXMgZnVu
Y3Rpb24gb25seSByZXR1cm5zIEhUTUxBbmNob3JFbGVtZW50IGxpbmtzLgorICAgICAgICAoV2Vi
S2l0OjplbGVtZW50UG9zaXRpb25JbmZvcm1hdGlvbik6IFVwZGF0ZWQgZm9yIG5hbWUgYW5kIHR5
cGUgY2hhbmdlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVt
ZW50KTogRGl0dG8uCisKIDIwMjAtMDItMTUgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFu
QGdtYWlsLmNvbT4KIAogICAgICAgICBbR2VvY2x1ZV0gQXZvaWQgdXNhZ2Ugb2YgcHJvdmlkZXIg
aW4gY2FsbGJhY2tzIGFmdGVyIGl0IGhhcyBiZWVuIGRlc3Ryb3llZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IGNhYzA4NzBkYjUwNjNhYzg5OTQ0NjgzYjY2Y2QwMzBhOTg5NWFiY2Eu
LmY4YjUwMmIxNGYzYThjODcyNjBlMGEyMmNmNjMwM2M4ZGMyNzYxOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMi0xNSAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRvcnMgaW1wbGVt
ZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIERPTS9ET01Eb2N1bWVudC5tbTogQ3V0IGRvd24gb24gaW5jbHVkZXMgYW5k
IHJlLXNvcnRlZCB0aGVtLgorICAgICAgICAqIERPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tOiBE
aXR0by4KKyAgICAgICAgKiBET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbTogRGl0dG8uCisK
IDIwMjAtMDItMTQgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIE1hc2sg
V2ViR0wgc3RyaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZGMzOGQ2YmRmMWUzZTNiNzA4ZmFi
YjYyNGMzYWNkYmY5MWFkNmQ4ZS4uMWMxNDNiM2MwZjBlYWYzMzE3MGQ3NmQ3YjRhMTgyMDZmMmYx
MzY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0zOTAsNyArMzkwLDYgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5o
CiAgICAgZG9tL0VsZW1lbnRDb250ZXh0LmgKICAgICBkb20vRWxlbWVudERhdGEuaAotICAgIGRv
bS9FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKICAgICBkb20vRWxlbWVudElkZW50aWZpZXIu
aAogICAgIGRvbS9FbGVtZW50SXRlcmF0b3IuaAogICAgIGRvbS9FbGVtZW50SXRlcmF0b3JBc3Nl
cnRpb25zLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2MTEwMmE0NTZhMzFkNTIxZjA2MmMxZDA4MWI3ZmJlMzdjZTAwNDlmLi43
YmZhZTM1ODg1ZTdlOWFiZGZiNTQyMjdiZjIxZjVhYWViNTZlYzA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjkxLDcgKzI2
OTEsNiBAQAogCQk5M0QxOTYzMzFENkNBQjgyMDBGQzdFNDcgLyogRXhjZXB0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0QxOTYzMjFENkNBQjgy
MDBGQzdFNDcgLyogRXhjZXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTNENDM3OUYxRDU3QjE1MzAwQUI4NUVBIC8qIEpTRXhlY1N0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RjkzNEQ4
MzExODlGMUVFMDA1MDhENUQgLyogSlNFeGVjU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q0MzdBMDFENTdCMTlBMDBBQjg1RUEgLyog
Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCNTZDOUE4MUM4OTMxMjgwMEM0NTZERiAvKiBDdXN0b21FbGVt
ZW50UmVhY3Rpb25RdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTkzRDQzN0ExMUQ1N0IzRjQwMEFCODVFQSAvKiBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBREUxMUY0QTE4RDgzMTFCMDA3ODk4M0IgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDQz
N0EyMUQ1N0IzRkUwMEFCODVFQSAvKiBVUkxVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2QjlEQ0ExODlERTEwMDAwQkI4NDJDIC8qIFVSTFV0
aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTNENDM3QTMxRDU3QjdFMjAwQUI4NUVBIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDcyNkZFNzE2RDlGMjA0MDAz
QTRFNkQgLyogSlNNZWRpYUxpc3RDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q5RDUzQzBEQTI3RTE4MDA3NzIxNkMgLyogUmFuZ2VC
b3VuZGFyeVBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0Q5RDUzQjBEQTI3RTE4MDA3NzIxNkMgLyogUmFuZ2VCb3VuZGFyeVBvaW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyMjU2LDcg
KzEyMjU1LDYgQEAKIAkJQUREQTk0QkYxOTY4NkY4MDAwNDUzMDI5IC8qIEpTRG9jdW1lbnRDdXN0
b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEb2N1bWVudEN1c3RvbS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRERGMUFENDEyNTdDRDlBMDAwM0E3NTkg
LyogUmVuZGVyU1ZHUGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW5kZXJTVkdQYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURERjFB
RDUxMjU3Q0Q5QTAwMDNBNzU5IC8qIFJlbmRlclNWR1BhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHUGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlBREUxMUY0QTE4RDgzMTFCMDA3ODk4M0IgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFERTE2NzM2MTgxMDUwQzMw
MDQ2M0EyRSAvKiBSZW5kZXJQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVuZGVyUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFERUM3OEY3MThFRTUz
MDgwMDEzMTVDMiAvKiBKU0VsZW1lbnRDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNFbGVtZW50Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUFERkUyQjU0MUJENUY0MTIwMERBQjQ1NyAvKiBSZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VVc2FnZU92
ZXJsYXlDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MDk1LDcgKzI4
MDkzLDYgQEAKIAkJCQkzMTNCQ0UxQjIzNUUzQkRCMDBGQzM5RTUgLyogRWxlbWVudENvbnRleHQu
aCAqLywKIAkJCQlCNUI3QTE2RjE3QzEwODA2MDBFNEFBMEEgLyogRWxlbWVudERhdGEuY3BwICov
LAogCQkJCUI1QjdBMTZFMTdDMTA0ODAwMEU0QUEwQSAvKiBFbGVtZW50RGF0YS5oICovLAotCQkJ
CUFERTExRjRBMThEODMxMUIwMDc4OTgzQiAvKiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgg
Ki8sCiAJCQkJMkQyQkVCMkYyMjM0QTMzNDAwNTU0NENBIC8qIEVsZW1lbnRJZGVudGlmaWVyLmgg
Ki8sCiAJCQkJRTRBRTdDMTUxN0QxQkI5NTAwMDlGQjMxIC8qIEVsZW1lbnRJdGVyYXRvci5oICov
LAogCQkJCUU0MDFDMjc0MTdDRTUzRUMwMEM0MUEzNSAvKiBFbGVtZW50SXRlcmF0b3JBc3NlcnRp
b25zLmggKi8sCkBAIC0yOTc1OSw3ICsyOTc1Niw2IEBACiAJCQkJRTQ2QTJCMUUxN0NBNzZCMTAw
MERCQ0Q4IC8qIEVsZW1lbnRDaGlsZEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTNC
Q0UxQzIzNUUzQkU1MDBGQzM5RTUgLyogRWxlbWVudENvbnRleHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUI1QjdBMTcxMTdDMTBBQzAwMEU0QUEwQSAvKiBFbGVtZW50RGF0YS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJOTNENDM3QTExRDU3QjNGNDAwQUI4NUVBIC8qIEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMkJFQjMxMjIzNEEzMzUwMDU1NDRDQSAvKiBF
bGVtZW50SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBRTdDMTYxN0QxQkI5NTAw
MDlGQjMxIC8qIEVsZW1lbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQwMUMyNzUx
N0NFNTNFQzAwQzQxQTM1IC8qIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCAyMDllYjhlNjU4ZTBiNzM0MThlYzJjZDAwY2Q4MGE0
MTZmYTI5MzNhLi40NThhNDA1N2UyY2ZmZDJmNmY4NWNlODAxY2FmOWQ2MWQyODAyOWY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcApAQCAtMTA0NCw3ICsxMDQ0LDcgQEAgRWxlbWVudCogQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6Om1vdXNlQnV0dG9uTGlzdGVuZXIoTW91c2VCdXR0b25MaXN0ZW5lclJlc3Vs
dEYKIAogICAgIC8vIGNoZWNrIGlmIG91ciBwYXJlbnQgaXMgYSBtb3VzZSBidXR0b24gbGlzdGVu
ZXIKICAgICAvLyBGSVhNRTogRG8gdGhlIGNvbnRpbnVhdGlvbiBzZWFyY2ggbGlrZSBhbmNob3JF
bGVtZW50IGRvZXMKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50TGluZWFnZShpczxF
bGVtZW50Pigqbm9kZSkgPyBkb3duY2FzdDxFbGVtZW50Pihub2RlKSA6IG5vZGUtPnBhcmVudEVs
ZW1lbnQoKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEVsZW1l
bnQ+KGlzPEVsZW1lbnQ+KCpub2RlKSA/IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKSA6ICpub2Rl
LT5wYXJlbnRFbGVtZW50KCkpKSB7CiAgICAgICAgIC8vIElmIHdlJ3ZlIHJlYWNoZWQgdGhlIGJv
ZHkgYW5kIHRoaXMgaXMgbm90IGEgY29udHJvbCBlbGVtZW50LCBkbyBub3QgZXhwb3NlIHByZXNz
IGFjdGlvbiBmb3IgdGhpcyBlbGVtZW50IHVubGVzcyBmaWx0ZXIgaXMgSW5jbHVkZUJvZHlFbGVt
ZW50LgogICAgICAgICAvLyBJdCBjYW4gY2F1c2UgZmFsc2UgcG9zaXRpdmVzLCB3aGVyZSBldmVy
eSBwaWVjZSBvZiB0ZXh0IGlzIGxhYmVsZWQgYXMgYWNjZXB0aW5nIHByZXNzIGFjdGlvbnMuCiAg
ICAgICAgIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUoYm9keVRhZykgJiYgaXNTdGF0aWNUZXh0KCkg
JiYgZmlsdGVyID09IEV4Y2x1ZGVCb2R5RWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4
IDk2ZjMzY2I3MzRhNzA4MzY5YjRmM2JhM2Q1NDg0ODhlNTA0OTU3NzAuLjhhODMwMGQwOTdlMTBm
YzRmMzMwMzczMzQxYzExNGExNzE5YTMwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0qIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMzc1LDIx
ICsyMzc1LDE5IEBAIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNj
ZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdChIVE1MQXJlYUVsCiAgICAgaWYgKCFhcmVhKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9
IG51bGxwdHI7Ci0gICAgZm9yIChFbGVtZW50KiBtYXBQYXJlbnQgPSBhcmVhLT5wYXJlbnRFbGVt
ZW50KCk7IG1hcFBhcmVudDsgbWFwUGFyZW50ID0gbWFwUGFyZW50LT5wYXJlbnRFbGVtZW50KCkp
IHsKLSAgICAgICAgaWYgKGlzPEhUTUxNYXBFbGVtZW50PigqbWFwUGFyZW50KSkgewotICAgICAg
ICAgICAgcGFyZW50ID0gYWNjZXNzaWJpbGl0eVBhcmVudEZvckltYWdlTWFwKGRvd25jYXN0PEhU
TUxNYXBFbGVtZW50PihtYXBQYXJlbnQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfQorICAgIGF1dG8qIG1hcFBhcmVudCA9IGFuY2VzdG9yc09mVHlwZTxIVE1MTWFwRWxl
bWVudD4oKmFyZWEpLmZpcnN0KCk7CisgICAgaWYgKCFtYXBQYXJlbnQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgYXV0byogcGFyZW50ID0gYWNjZXNzaWJpbGl0eVBhcmVudEZvcklt
YWdlTWFwKG1hcFBhcmVudCk7CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIAorCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IHBhcmVudC0+Y2hpbGRy
ZW4oKSkgewogICAgICAgICBpZiAoY2hpbGQtPmVsZW1lbnRSZWN0KCkuY29udGFpbnMocG9pbnQp
KQogICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwogICAgIH0KLSAgICAKKwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKaW5kZXggZmRjNjdmOGFjMTU2YTVh
ZGJiYWE2MTM1NzZiODY4MmFlNjI3MTVhMS4uZmY0NzhmZDIzNjE3OGJhMzliYzIyZGMxOTVhMTQ4
YTU3OTJlMjdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcApAQCAtMzEsNyArMzEsNiBAQAogCiAjaW5j
bHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwu
aCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAy
MDUwNmY4ZWNmYWM2NTNlNTVhZDA0ODFkZGE1NjBmNWZkNzJhNTRkLi40ZTAwOWZlZDZiZDBlMzEx
NTdjNjY0MDljN2IzNWZjYzdlZmYyMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAi
RE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93V2ViRGF0YWJh
c2UuaCIKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAj
aW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKQEAgLTM4LDcgKzM3LDYgQEAKICNpbmNsdWRl
ICJKU0V2ZW50LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSlNI
VE1MQXVkaW9FbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1
ZGUgIkpTSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0lEQkZhY3RvcnkuaCIKICNp
bmNsdWRlICJKU1JlbW90ZURPTVdpbmRvdy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKaW5kZXggMmFmMjc2MTg3NzU3ZTg4Mjg4MzA1NWM5MDRl
NmU4NzMzNGNkNGQyMy4uZTU2YjhmZTIxYWM1NjhmMjIwODU1ZDhhNGUzNWRhMDE0NDg1ODNhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCkBA
IC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5oIgogCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxl
bWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUg
IlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNs
dWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCmlu
ZGV4IDk0NTgyZWY0M2Y2ZjNkNzQyYjcwMDg3Mjk2OWUzZjkzOTVjZGQyNjcuLjViMDk1YWNiZjFj
ZDU0MTMwOGUxYTBmYmYwMzUwMTU5MTkxMDY1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
dXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCkBAIC0yOSwxNCArMjksMTIgQEAKICNpbmNsdWRlICJD
dXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkVsZW1l
bnRUcmF2ZXJzYWwuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJK
U0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJl
ZC5oIgogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50RnJhZ21lbnQuY3BwCmluZGV4IDhmMjFiMjc5MzUwMzc2MTllYjEwM2I5NGNjMjBj
NzJjYmI3MTFhMTguLjJhMjVhYjJlNWFhNzY3OTY1MDgzNzBhZWZhMjkxZTcyYzdjMWM2NzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAK
ICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgot
I2luY2x1ZGUgIkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKQEAgLTEwMyw3ICsxMDMsNyBA
QCBFbGVtZW50KiBEb2N1bWVudEZyYWdtZW50OjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9tU3Ry
aW5nJiBpZCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRyZWVTY29wZSgpLmdldEVsZW1lbnRCeUlk
KGlkKTsKIAogICAgIC8vIE90aGVyd2lzZSwgZmFsbCBiYWNrIHRvIGl0ZXJhdGluZyBhbGwgb2Yg
dGhlIGVsZW1lbnQgZGVzY2VuZGFudHMuCi0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVu
dERlc2NlbmRhbnRzKCp0aGlzKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRh
bnRzT2ZUeXBlPEVsZW1lbnQ+KCp0aGlzKSkgewogICAgICAgICBpZiAoZWxlbWVudC5nZXRJZEF0
dHJpYnV0ZSgpID09IGlkKQogICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RWxlbWVudCo+
KCZlbGVtZW50KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggODcxOGU2ZDg2YWQ3
ZmU1MDhiMTM4NzA2YTY1ZDI5NWFkZDQzOWM1Mi4uMDExN2EzNjZiYzcyNTc5NWE1NmZlYjk5YWUx
ZmUxNjI3ODM4ZWViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNCw3ICs0LDcgQEAKICAq
ICAgICAgICAgICAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogICAgICAg
ICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQogICogICAgICAgICAg
IChDKSAyMDA3IERhdmlkIFNtaXRoIChjYXRmaXNoLm1hbkBnbWFpbC5jb20pCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAg
ICAgICAgICAgKEMpIDIwMDcgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9yZykKICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCkBAIC02MCw3ICs2MCw2IEBACiAjaW5jbHVkZSAiR2V0QW5pbWF0aW9uc09wdGlvbnMuaCIK
ICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVu
dC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEh0bWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTExhYmVsRWxl
bWVudC5oIgpAQCAtMzQwMCwyNiArMzM5OSwxNCBAQCB1bnNpZ25lZCBFbGVtZW50OjpyYXJlRGF0
YUNoaWxkSW5kZXgoKSBjb25zdAogCiBBdG9tU3RyaW5nIEVsZW1lbnQ6OmNvbXB1dGVJbmhlcml0
ZWRMYW5ndWFnZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGNvbnN0IEVsZW1lbnREYXRhKiBlbGVtZW50
RGF0YSA9IHRoaXMtPmVsZW1lbnREYXRhKCkpIHsKLSAgICAgICAgaWYgKGNvbnN0IEF0dHJpYnV0
ZSogYXR0cmlidXRlID0gZWxlbWVudERhdGEtPmZpbmRMYW5ndWFnZUF0dHJpYnV0ZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFsdWUoKTsKLSAgICB9Ci0KICAgICAvLyBUaGUg
bGFuZ3VhZ2UgcHJvcGVydHkgaXMgaW5oZXJpdGVkLCBzbyB3ZSBpdGVyYXRlIG92ZXIgdGhlIHBh
cmVudHMgdG8gZmluZCB0aGUgZmlyc3QgbGFuZ3VhZ2UuCi0gICAgY29uc3QgTm9kZSogY3VycmVu
dE5vZGUgPSB0aGlzOwotICAgIHdoaWxlICgoY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS0+cGFy
ZW50Tm9kZSgpKSkgewotICAgICAgICBpZiAoaXM8RWxlbWVudD4oKmN1cnJlbnROb2RlKSkgewot
ICAgICAgICAgICAgaWYgKGNvbnN0IEVsZW1lbnREYXRhKiBlbGVtZW50RGF0YSA9IGRvd25jYXN0
PEVsZW1lbnQ+KCpjdXJyZW50Tm9kZSkuZWxlbWVudERhdGEoKSkgewotICAgICAgICAgICAgICAg
IGlmIChjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnREYXRhLT5maW5kTGFuZ3Vh
Z2VBdHRyaWJ1dGUoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFs
dWUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChpczxEb2N1bWVudD4oKmN1
cnJlbnROb2RlKSkgewotICAgICAgICAgICAgLy8gY2hlY2tpbmcgdGhlIE1JTUUgY29udGVudC1s
YW5ndWFnZQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50PigqY3VycmVudE5v
ZGUpLmNvbnRlbnRMYW5ndWFnZSgpOworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVhZ2VP
ZlR5cGU8RWxlbWVudD4oKnRoaXMpKSB7CisgICAgICAgIGlmIChhdXRvKiBlbGVtZW50RGF0YSA9
IGVsZW1lbnQuZWxlbWVudERhdGEoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGF0dHJpYnV0
ZSA9IGVsZW1lbnREYXRhLT5maW5kTGFuZ3VhZ2VBdHRyaWJ1dGUoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gYXR0cmlidXRlLT52YWx1ZSgpOwogICAgICAgICB9CiAgICAgfQotCi0gICAgcmV0
dXJuIG51bGxBdG9tKCk7CisgICAgcmV0dXJuIGRvY3VtZW50KCkuY29udGVudExhbmd1YWdlKCk7
CiB9CiAKIExvY2FsZSYgRWxlbWVudDo6bG9jYWxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgKaW5kZXggNGI2MmQzOGIzOGZkMzg0OWM3Mzdh
Y2E4N2VmODQ1MjdmODM3NTVmMC4uODA1MTQzNjc0ZDYwODFjNDc0MjA2MTg5MjQ4NGVmYzkxMWUz
ZDQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjksNiArMjksMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0ZW1wbGF0ZTx0eXBlbmFt
ZT4gY2xhc3MgRWxlbWVudEFuY2VzdG9yUmFuZ2U7CisKKy8vIFJhbmdlIGZvciBpdGVyYXRpbmcg
YW4gZWxlbWVudCBhbmQgaXRzIGFuY2VzdG9ycy4KK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPiBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShFbGVt
ZW50JiBmaXJzdCk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudEFuY2Vz
dG9yUmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoY29uc3QgRWxlbWVudCYg
Zmlyc3QpOworCisvLyBSYW5nZSBmb3IgaXRlcmF0aW5nIGEgbm9kZSdzIGVsZW1lbnQgYW5jZXN0
b3JzLgordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdl
PEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNPZlR5cGUoTm9kZSYgZGVzY2VuZGFudCk7Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29uc3QgRWxlbWVu
dFR5cGU+IGFuY2VzdG9yc09mVHlwZShjb25zdCBOb2RlJiBkZXNjZW5kYW50KTsKKwogdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogY2xhc3MgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3Ig
OiBwdWJsaWMgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiB7CiBwdWJsaWM6CkBAIC0zOCw0
NiArNDgsMTcgQEAgcHVibGljOgogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotY2xhc3MgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50Q29u
c3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gewotcHVibGljOgotICAgIEVsZW1lbnRBbmNlc3RvckNv
bnN0SXRlcmF0b3IoKTsKLSAgICBleHBsaWNpdCBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9y
KGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKLSAgICBFbGVtZW50QW5jZXN0b3JDb25zdEl0
ZXJhdG9yJiBvcGVyYXRvcisrKCk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+Ci1jbGFzcyBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXIgeworY2xhc3MgRWxlbWVu
dEFuY2VzdG9yUmFuZ2UgewogcHVibGljOgotICAgIGV4cGxpY2l0IEVsZW1lbnRBbmNlc3Rvckl0
ZXJhdG9yQWRhcHRlcihFbGVtZW50VHlwZSogZmlyc3QpOwotICAgIEVsZW1lbnRBbmNlc3Rvckl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpOwotICAgIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiBlbmQoKTsKLSAgICBFbGVtZW50VHlwZSogZmlyc3QoKSB7IHJldHVybiBt
X2ZpcnN0OyB9CisgICAgZXhwbGljaXQgRWxlbWVudEFuY2VzdG9yUmFuZ2UoRWxlbWVudFR5cGUq
IGZpcnN0KTsKKyAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4o
KSBjb25zdDsKKyAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCkg
Y29uc3Q7CisgICAgRWxlbWVudFR5cGUqIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdDsg
fQogCiBwcml2YXRlOgotICAgIEVsZW1lbnRUeXBlKiBtX2ZpcnN0OworICAgIEVsZW1lbnRUeXBl
KiBjb25zdCBtX2ZpcnN0OwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
Y2xhc3MgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXIgewotcHVibGljOgotICAg
IGV4cGxpY2l0IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IEVsZW1l
bnRUeXBlKiBmaXJzdCk7Ci0gICAgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT4gYmVnaW4oKSBjb25zdDsKLSAgICBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPiBlbmQoKSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50VHlwZSogZmlyc3QoKSBj
b25zdCB7IHJldHVybiBtX2ZpcnN0OyB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgRWxlbWVudFR5
cGUqIG1fZmlyc3Q7Ci19OwotCi1FbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dD4gZWxlbWVudExpbmVhZ2UoRWxlbWVudCogZmlyc3QpOwotRWxlbWVudEFuY2VzdG9yQ29uc3RJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudExpbmVhZ2UoY29uc3QgRWxlbWVudCogZmly
c3QpOwotRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRBbmNl
c3RvcnMoRWxlbWVudCogZGVzY2VuZGFudCk7Ci1FbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9y
QWRhcHRlcjxFbGVtZW50PiBlbGVtZW50QW5jZXN0b3JzKGNvbnN0IEVsZW1lbnQqIGRlc2NlbmRh
bnQpOwotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JJdGVy
YXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoRWxlbWVudCYgZmlyc3QpOwot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShjb25zdCBFbGVtZW50JiBmaXJz
dCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZUeXBlKE5vZGUmIGRlc2NlbmRhbnQp
OwotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JDb25zdEl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZUeXBlKGNvbnN0IE5vZGUmIGRl
c2NlbmRhbnQpOwotCiAvLyBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcgogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+CkBAIC05NSwxMTkgKzc2LDcwIEBAIGlubGluZSBFbGVtZW50QW5j
ZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yKEVsZW1l
bnRUeXBlCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudEFu
Y2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVt
ZW50VHlwZT46Om9wZXJhdG9yKysoKQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50
QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+Ojp0cmF2ZXJzZUFuY2VzdG9yKCkpOwotfQotCi0vLyBFbGVtZW50QW5jZXN0b3JDb25zdEl0
ZXJhdG9yCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudEFuY2VzdG9yQ29uc3RJ
dGVyYXRvcigpCi0gICAgOiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obnVsbHB0
cikKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1l
bnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50QW5jZXN0b3JDb25z
dEl0ZXJhdG9yKGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+KG51bGxwdHIsIGN1cnJlbnQpCi17Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT46Om9wZXJhdG9yKysoKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50QW5jZXN0
b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6dHJhdmVyc2VBbmNlc3RvcigpKTsKKyAgICBFbGVtZW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+Ojp0cmF2ZXJzZUFuY2VzdG9yKCk7CisgICAgcmV0dXJuICp0aGlzOwogfQogCi0vLyBF
bGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXIKKy8vIEVsZW1lbnRBbmNlc3RvclJhbmdlCiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0
ZXIoRWxlbWVudFR5cGUqIGZpcnN0KQoraW5saW5lIEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1l
bnRUeXBlPjo6RWxlbWVudEFuY2VzdG9yUmFuZ2UoRWxlbWVudFR5cGUqIGZpcnN0KQogICAgIDog
bV9maXJzdChmaXJzdCkKIHsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0
b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbigpCitpbmxpbmUgRWxlbWVudEFu
Y2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRU
eXBlPjo6YmVnaW4oKSBjb25zdAogewogICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JJdGVyYXRv
cjxFbGVtZW50VHlwZT4obV9maXJzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVu
dEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkKK2lubGluZSBFbGVt
ZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8RWxl
bWVudFR5cGU+OjplbmQoKSBjb25zdAogewogICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JJdGVy
YXRvcjxFbGVtZW50VHlwZT4oKTsKIH0KIAotLy8gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRv
ckFkYXB0ZXIKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1l
bnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6RWxlbWVudEFuY2Vz
dG9yQ29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgRWxlbWVudFR5cGUqIGZpcnN0KQotICAgIDog
bV9maXJzdChmaXJzdCkKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRB
bmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4oKSBjb25zdAot
ewotICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiht
X2ZpcnN0KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVs
ZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvckNv
bnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4oKTsKLX0KLQogLy8g
U3RhbmRhbG9uZSBmdW5jdGlvbnMKIAotaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRh
cHRlcjxFbGVtZW50PiBlbGVtZW50TGluZWFnZShFbGVtZW50KiBmaXJzdCkKLXsKLSAgICByZXR1
cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+KGZpcnN0KTsKLX0KLQot
aW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1l
bnRMaW5lYWdlKGNvbnN0IEVsZW1lbnQqIGZpcnN0KQotewotICAgIHJldHVybiBFbGVtZW50QW5j
ZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PihmaXJzdCk7Ci19Ci0KLWlubGluZSBF
bGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudEFuY2VzdG9ycyhF
bGVtZW50KiBkZXNjZW5kYW50KQordGVtcGxhdGU8PiBpbmxpbmUgRWxlbWVudEFuY2VzdG9yUmFu
Z2U8RWxlbWVudD4gbGluZWFnZU9mVHlwZTxFbGVtZW50PihFbGVtZW50JiBmaXJzdCkKIHsKLSAg
ICByZXR1cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+KGRlc2NlbmRh
bnQtPnBhcmVudEVsZW1lbnQoKSk7Ci19Ci0KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50QW5jZXN0b3JzKGNvbnN0IEVsZW1lbnQqIGRl
c2NlbmRhbnQpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFw
dGVyPEVsZW1lbnQ+KGRlc2NlbmRhbnQtPnBhcmVudEVsZW1lbnQoKSk7CisgICAgcmV0dXJuIEVs
ZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnQ+KCZmaXJzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8
RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoRWxlbWVudCYgZmlyc3QpCitpbmxpbmUgRWxlbWVu
dEFuY2VzdG9yUmFuZ2U8RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoRWxlbWVudCYgZmlyc3Qp
CiB7CiAgICAgaWYgKGlzPEVsZW1lbnRUeXBlPihmaXJzdCkpCi0gICAgICAgIHJldHVybiBFbGVt
ZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KHN0YXRpY19jYXN0PEVsZW1l
bnRUeXBlKj4oJmZpcnN0KSk7CisgICAgICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JSYW5nZTxF
bGVtZW50VHlwZT4oJmRvd25jYXN0PEVsZW1lbnRUeXBlPihmaXJzdCkpOwogICAgIHJldHVybiBh
bmNlc3RvcnNPZlR5cGU8RWxlbWVudFR5cGU+KGZpcnN0KTsKIH0KIAordGVtcGxhdGU8PiBpbmxp
bmUgRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29uc3QgRWxlbWVudD4gbGluZWFnZU9mVHlwZTxFbGVt
ZW50Pihjb25zdCBFbGVtZW50JiBmaXJzdCkKK3sKKyAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9y
UmFuZ2U8Y29uc3QgRWxlbWVudD4oJmZpcnN0KTsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVs
ZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKGNvbnN0IEVsZW1lbnQmIGZpcnN0KQoraW5saW5lIEVs
ZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKGNvbnN0
IEVsZW1lbnQmIGZpcnN0KQogewogICAgIGlmIChpczxFbGVtZW50VHlwZT4oZmlyc3QpKQotICAg
ICAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5
cGU+KHN0YXRpY19jYXN0PGNvbnN0IEVsZW1lbnRUeXBlKj4oJmZpcnN0KSk7CisgICAgICAgIHJl
dHVybiBFbGVtZW50QW5jZXN0b3JSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4oJmRvd25jYXN0PEVs
ZW1lbnRUeXBlPihmaXJzdCkpOwogICAgIHJldHVybiBhbmNlc3RvcnNPZlR5cGU8RWxlbWVudFR5
cGU+KGZpcnN0KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5l
IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZU
eXBlKE5vZGUmIGRlc2NlbmRhbnQpCitpbmxpbmUgRWxlbWVudEFuY2VzdG9yUmFuZ2U8RWxlbWVu
dFR5cGU+IGFuY2VzdG9yc09mVHlwZShOb2RlJiBkZXNjZW5kYW50KQogewogICAgIEVsZW1lbnRU
eXBlKiBmaXJzdCA9IGZpbmRFbGVtZW50QW5jZXN0b3JPZlR5cGU8RWxlbWVudFR5cGU+KGRlc2Nl
bmRhbnQpOwotICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dFR5cGU+KGZpcnN0KTsKKyAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8RWxlbWVudFR5
cGU+KGZpcnN0KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5l
IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBhbmNlc3Rv
cnNPZlR5cGUoY29uc3QgTm9kZSYgZGVzY2VuZGFudCkKK2lubGluZSBFbGVtZW50QW5jZXN0b3JS
YW5nZTxjb25zdCBFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZUeXBlKGNvbnN0IE5vZGUmIGRlc2Nl
bmRhbnQpCiB7CiAgICAgY29uc3QgRWxlbWVudFR5cGUqIGZpcnN0ID0gZmluZEVsZW1lbnRBbmNl
c3Rvck9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oZGVzY2VuZGFudCk7Ci0gICAgcmV0dXJuIEVs
ZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihmaXJzdCk7Cisg
ICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPihmaXJzdCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmgKaW5kZXggNDhlM2IxYTYxOGQy
ZmUwYTI4NzY3YjM3MzFmMmZhZGY5NzNlZmJjZS4uZDFkZGIwZjczNzUwMTU2NDU5N2IwYTAyMzRl
MmI0NjIwMWQ1ZGU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBbmRU
ZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRB
bmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmgKQEAgLTM2LDggKzM2LDggQEAgY2xhc3MgRWxlbWVu
dEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgewogcHVibGljOgogICAgIEVsZW1lbnRBbmRUZXh0
RGVzY2VuZGFudEl0ZXJhdG9yKCk7CiAgICAgZW51bSBGaXJzdENoaWxkVGFnIHsgRmlyc3RDaGls
ZCB9OwotICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKENvbnRhaW5lck5vZGUm
IHJvb3QsIEZpcnN0Q2hpbGRUYWcpOwotICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJh
dG9yKENvbnRhaW5lck5vZGUmIHJvb3QsIE5vZGUqIGN1cnJlbnQpOworICAgIEVsZW1lbnRBbmRU
ZXh0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QsIEZpcnN0Q2hp
bGRUYWcpOworICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRh
aW5lck5vZGUmIHJvb3QsIE5vZGUqIGN1cnJlbnQpOwogCiAgICAgRWxlbWVudEFuZFRleHREZXNj
ZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IHJldHVybiB0cmF2ZXJzZU5leHQoKTsgfQog
CkBAIC02Myw5ICs2Myw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBp
c0VsZW1lbnRPclRleHQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8RWxlbWVudD4obm9k
ZSkgfHwgaXM8VGV4dD4obm9kZSk7IH0KLSAgICBzdGF0aWMgTm9kZSogZmlyc3RDaGlsZChOb2Rl
Jik7Ci0gICAgc3RhdGljIE5vZGUqIG5leHRTaWJsaW5nKE5vZGUmKTsKLSAgICBzdGF0aWMgTm9k
ZSogcHJldmlvdXNTaWJsaW5nKE5vZGUmKTsKKyAgICBzdGF0aWMgTm9kZSogZmlyc3RDaGlsZChj
b25zdCBOb2RlJik7CisgICAgc3RhdGljIE5vZGUqIG5leHRTaWJsaW5nKGNvbnN0IE5vZGUmKTsK
KyAgICBzdGF0aWMgTm9kZSogcHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUmKTsKIAogICAgIHZv
aWQgcG9wQW5jZXN0b3JTaWJsaW5nU3RhY2soKTsKIApAQCAtODIsMTcgKzgyLDE3IEBAIHByaXZh
dGU6CiAjZW5kaWYKIH07CiAKLWNsYXNzIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9y
QWRhcHRlciB7CitjbGFzcyBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZSB7CiBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENv
bnRhaW5lck5vZGUmIHJvb3QpOwotICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9y
IGJlZ2luKCk7Ci0gICAgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgZW5kKCk7Cisg
ICAgZXhwbGljaXQgRWxlbWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVy
Tm9kZSYgcm9vdCk7CisgICAgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgYmVnaW4o
KSBjb25zdDsKKyAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBlbmQoKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICBDb250YWluZXJOb2RlJiBtX3Jvb3Q7CisgICAgY29uc3QgQ29u
dGFpbmVyTm9kZSYgbV9yb290OwogfTsKIAotRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0
b3JBZGFwdGVyIGVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudHMoQ29udGFpbmVyTm9kZSYpOworRWxl
bWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2UgZWxlbWVudEFuZFRleHREZXNjZW5kYW50cyhDb250
YWluZXJOb2RlJik7CiAKIC8vIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yCiAKQEAg
LTEwMSw3ICsxMDEsNyBAQCBpbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6
OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKCkKIHsKIH0KIAotaW5saW5lIEVsZW1l
bnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVy
YXRvcihDb250YWluZXJOb2RlJiByb290LCBGaXJzdENoaWxkVGFnKQoraW5saW5lIEVsZW1lbnRB
bmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRv
cihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBGaXJzdENoaWxkVGFnKQogICAgIDogbV9jdXJy
ZW50KGZpcnN0Q2hpbGQocm9vdCkpCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAsIG1fYXNzZXJ0
aW9ucyhtX2N1cnJlbnQpCkBAIC0xMTMsNyArMTEzLDcgQEAgaW5saW5lIEVsZW1lbnRBbmRUZXh0
RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihDb250
YWkKICAgICBtX2RlcHRoID0gMTsKIH0KIAotaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFu
dEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihDb250YWluZXJOb2Rl
JiByb290LCBOb2RlKiBjdXJyZW50KQoraW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0
ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJO
b2RlJiByb290LCBOb2RlKiBjdXJyZW50KQogICAgIDogbV9jdXJyZW50KGN1cnJlbnQpCiAjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICAsIG1fYXNzZXJ0aW9ucyhtX2N1cnJlbnQpCkBAIC0xNDgsNyAr
MTQ4LDcgQEAgaW5saW5lIHZvaWQgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OmRy
b3BBc3NlcnRpb25zKCkKICNlbmRpZgogfQogCi1pbmxpbmUgTm9kZSogRWxlbWVudEFuZFRleHRE
ZXNjZW5kYW50SXRlcmF0b3I6OmZpcnN0Q2hpbGQoTm9kZSYgY3VycmVudCkKK2lubGluZSBOb2Rl
KiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6Zmlyc3RDaGlsZChjb25zdCBOb2Rl
JiBjdXJyZW50KQogewogICAgIGF1dG8qIG5vZGUgPSBjdXJyZW50LmZpcnN0Q2hpbGQoKTsKICAg
ICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T3JUZXh0KCpub2RlKSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBpbmxpbmUgTm9kZSogRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OmZpcnN0
Q2hpbGQoTm9kZSYgY3VycmVudCkKICAgICByZXR1cm4gbm9kZTsKIH0KIAotaW5saW5lIE5vZGUq
IEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpuZXh0U2libGluZyhOb2RlJiBjdXJy
ZW50KQoraW5saW5lIE5vZGUqIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpuZXh0
U2libGluZyhjb25zdCBOb2RlJiBjdXJyZW50KQogewogICAgIGF1dG8qIG5vZGUgPSBjdXJyZW50
Lm5leHRTaWJsaW5nKCk7CiAgICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9yVGV4dCgqbm9k
ZSkpCkBAIC0xNjQsNyArMTY0LDcgQEAgaW5saW5lIE5vZGUqIEVsZW1lbnRBbmRUZXh0RGVzY2Vu
ZGFudEl0ZXJhdG9yOjpuZXh0U2libGluZyhOb2RlJiBjdXJyZW50KQogICAgIHJldHVybiBub2Rl
OwogfQogCi1pbmxpbmUgTm9kZSogRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OnBy
ZXZpb3VzU2libGluZyhOb2RlJiBjdXJyZW50KQoraW5saW5lIE5vZGUqIEVsZW1lbnRBbmRUZXh0
RGVzY2VuZGFudEl0ZXJhdG9yOjpwcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSYgY3VycmVudCkK
IHsKICAgICBhdXRvKiBub2RlID0gY3VycmVudC5wcmV2aW91c1NpYmxpbmcoKTsKICAgICB3aGls
ZSAobm9kZSAmJiAhaXNFbGVtZW50T3JUZXh0KCpub2RlKSkKQEAgLTI5NCwyOCArMjk0LDI4IEBA
IGlubGluZSBib29sIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvciE9
KGNvbnN0IEVsZW1lbnRBbmRUZXh0RGVzCiAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwog
fQogCi0vLyBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIKKy8vIEVsZW1l
bnRBbmRUZXh0RGVzY2VuZGFudFJhbmdlCiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRh
bnRJdGVyYXRvckFkYXB0ZXI6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRl
cihDb250YWluZXJOb2RlJiByb290KQoraW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudFJh
bmdlOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZShjb25zdCBDb250YWluZXJOb2RlJiBy
b290KQogICAgIDogbV9yb290KHJvb3QpCiB7CiB9CiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERl
c2NlbmRhbnRJdGVyYXRvciBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI6
OmJlZ2luKCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBFbGVtZW50
QW5kVGV4dERlc2NlbmRhbnRSYW5nZTo6YmVnaW4oKSBjb25zdAogewogICAgIHJldHVybiBFbGVt
ZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihtX3Jvb3QsIEVsZW1lbnRBbmRUZXh0RGVzY2Vu
ZGFudEl0ZXJhdG9yOjpGaXJzdENoaWxkKTsKIH0KIAotaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVz
Y2VuZGFudEl0ZXJhdG9yIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjo6
ZW5kKCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBFbGVtZW50QW5k
VGV4dERlc2NlbmRhbnRSYW5nZTo6ZW5kKCkgY29uc3QKIHsKICAgICByZXR1cm4geyB9OwogfQog
CiAvLyBTdGFuZGFsb25lIGZ1bmN0aW9ucwogCi1pbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5k
YW50SXRlcmF0b3JBZGFwdGVyIGVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudHMoQ29udGFpbmVyTm9k
ZSYgcm9vdCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZSBlbGVtZW50QW5k
VGV4dERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUmIHJvb3QpCiB7Ci0gICAgcmV0dXJuIEVsZW1l
bnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcihyb290KTsKKyAgICByZXR1cm4gRWxl
bWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2Uocm9vdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0ZXJhdG9yLmgKaW5kZXggOGUz
OGZiNTAzMmE4MjM3NzZlMmE3YmNhM2FjMjU4Y2IxNTA2YzQwMC4uMTNiOGMwMThkZDRmMThlMWY5
Nzg5M2M3NWIwYTM1ZTk0Y2JmOWJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRDaGlsZEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGls
ZEl0ZXJhdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjksMTUgKzI5LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordGVt
cGxhdGU8dHlwZW5hbWU+IGNsYXNzIEVsZW1lbnRDaGlsZFJhbmdlOworCisvLyBSYW5nZSBmb3Ig
aXRlcmF0aW5nIHRocm91Z2ggY2hpbGQgZWxlbWVudHMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+IEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShD
b250YWluZXJOb2RlJik7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRD
aGlsZFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShjb25zdCBDb250YWlu
ZXJOb2RlJik7CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGNsYXNzIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gewog
cHVibGljOgotICAgIHR5cGVkZWYgRWxlbWVudFR5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVm
IHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiBFbGVtZW50VHlwZSogcG9p
bnRlcjsKLSAgICB0eXBlZGVmIEVsZW1lbnRUeXBlJiByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBz
dGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwotCiAgICAgRWxlbWVu
dENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKICAgICBFbGVtZW50
Q2hpbGRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQsIEVsZW1lbnRUeXBlKiBj
dXJyZW50KTsKICAgICBFbGVtZW50Q2hpbGRJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwpAQCAtNDUs
NTUgKzQ1LDIxIEBAIHB1YmxpYzoKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWNsYXNzIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNvbnN0IEVsZW1l
bnRUeXBlIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBl
OwotICAgIHR5cGVkZWYgY29uc3QgRWxlbWVudFR5cGUqIHBvaW50ZXI7Ci0gICAgdHlwZWRlZiBj
b25zdCBFbGVtZW50VHlwZSYgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgc3RkOjpmb3J3YXJkX2l0
ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLQotICAgIEVsZW1lbnRDaGlsZENvbnN0SXRl
cmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKLSAgICBFbGVtZW50Q2hpbGRDb25z
dEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCwgY29uc3QgRWxlbWVudFR5cGUq
IGN1cnJlbnQpOwotICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsK
LSAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Ci19OwotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBFbGVtZW50Q2hpbGRJdGVyYXRvckFk
YXB0ZXIgewotcHVibGljOgotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcihDb250YWlu
ZXJOb2RlJiBwYXJlbnQpOwotCi0gICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+
IGJlZ2luKCk7Ci0gICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpOwot
ICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbkF0KEVsZW1lbnRUeXBl
Jik7Ci0KLSAgICBFbGVtZW50VHlwZSogZmlyc3QoKTsKLSAgICBFbGVtZW50VHlwZSogbGFzdCgp
OwotCi1wcml2YXRlOgotICAgIENvbnRhaW5lck5vZGUmIG1fcGFyZW50OwotfTsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRv
ckFkYXB0ZXIgeworY2xhc3MgRWxlbWVudENoaWxkUmFuZ2UgewogcHVibGljOgotICAgIEVsZW1l
bnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCk7
CisgICAgRWxlbWVudENoaWxkUmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKIAot
ICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7
Ci0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCkgY29uc3Q7
Ci0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW5BdChjb25z
dCBFbGVtZW50VHlwZSYpIGNvbnN0OworICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPiBiZWdpbigpIGNvbnN0OworICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBl
PiBlbmQoKSBjb25zdDsKKyAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVn
aW5BdChFbGVtZW50VHlwZSYpIGNvbnN0OwogCi0gICAgY29uc3QgRWxlbWVudFR5cGUqIGZpcnN0
KCkgY29uc3Q7Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIGxhc3QoKSBjb25zdDsKKyAgICBFbGVt
ZW50VHlwZSogZmlyc3QoKSBjb25zdDsKKyAgICBFbGVtZW50VHlwZSogbGFzdCgpIGNvbnN0Owog
CiBwcml2YXRlOgogICAgIGNvbnN0IENvbnRhaW5lck5vZGUmIG1fcGFyZW50OwogfTsKIAotdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8
RWxlbWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKENvbnRhaW5lck5vZGUmKTsKLXRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUmKTsKLQogLy8gRWxl
bWVudENoaWxkSXRlcmF0b3IKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgpAQCAt
MTExLDEzMiArNzcsNjggQEAgaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBl
Pjo6RWxlbWVudENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm8KIHRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4mIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItLSgpCiB7Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+
KEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKCkp
OworICAgIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXNTaWJs
aW5nKCk7CisgICAgcmV0dXJuICp0aGlzOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+CiBpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50
Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRl
cmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkpOworICAgIEVsZW1lbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxpbmcoKTsKKyAgICByZXR1cm4g
KnRoaXM7CiB9CiAKLS8vIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IKKy8vIEVsZW1lbnRDaGls
ZFJhbmdlCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENoaWxkQ29uc3RJdGVyYXRv
cihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpCi0gICAgOiBFbGVtZW50Q29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT4oJnBhcmVudCkKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpF
bGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCwgY29u
c3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpCi0gICAgOiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT4oJnBhcmVudCwgY3VycmVudCkKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+
JiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItLSgpCi17
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+Jj4oRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZp
b3VzU2libGluZygpKTsKLX0KLQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDaGls
ZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKLXsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVt
ZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxpbmcoKSk7Ci19
Ci0KLS8vIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPjo6RWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUmIHBhcmVudCkK
K2lubGluZSBFbGVtZW50Q2hpbGRSYW5nZTxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZFJhbmdl
KGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCkKICAgICA6IG1fcGFyZW50KHBhcmVudCkKIHsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGls
ZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dFR5cGU+OjpiZWdpbigpCitpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+
IEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPjo6YmVnaW4oKSBjb25zdAogewogICAgIHJl
dHVybiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9wYXJlbnQsIFRyYXZlcnNh
bDxFbGVtZW50VHlwZT46OmZpcnN0Q2hpbGQobV9wYXJlbnQpKTsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjplbmQoKQoraW5s
aW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRSYW5nZTxF
bGVtZW50VHlwZT46OmVuZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPihtX3BhcmVudCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWlubGluZSBFbGVtZW50VHlwZSogRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVy
PEVsZW1lbnRUeXBlPjo6Zmlyc3QoKQoraW5saW5lIEVsZW1lbnRUeXBlKiBFbGVtZW50Q2hpbGRS
YW5nZTxFbGVtZW50VHlwZT46OmZpcnN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gVHJhdmVyc2Fs
PEVsZW1lbnRUeXBlPjo6Zmlyc3RDaGlsZChtX3BhcmVudCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50VHlwZSogRWxlbWVudENoaWxkSXRlcmF0
b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6bGFzdCgpCitpbmxpbmUgRWxlbWVudFR5cGUqIEVsZW1l
bnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPjo6bGFzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFRy
YXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RDaGlsZChtX3BhcmVudCk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVt
ZW50VHlwZT4gRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW5B
dChFbGVtZW50VHlwZSYgY2hpbGQpCitpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVu
dFR5cGU+IEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPjo6YmVnaW5BdChFbGVtZW50VHlw
ZSYgY2hpbGQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGNoaWxkLnBhcmVudE5vZGUoKSA9PSAmbV9w
YXJlbnQpOwogICAgIHJldHVybiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9w
YXJlbnQsICZjaGlsZCk7CiB9CiAKLS8vIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVy
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRD
b25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZENvbnN0SXRlcmF0
b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCkKLSAgICA6IG1fcGFyZW50KHBh
cmVudCkKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVs
ZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZENvbnN0SXRl
cmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4oKSBjb25zdAotewotICAgIHJldHVybiBF
bGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3BhcmVudCwgVHJhdmVyc2Fs
PEVsZW1lbnRUeXBlPjo6Zmlyc3RDaGlsZChtX3BhcmVudCkpOwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT4gRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+Ojpl
bmQoKSBjb25zdAotewotICAgIHJldHVybiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPihtX3BhcmVudCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWlubGluZSBjb25zdCBFbGVtZW50VHlwZSogRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0
ZXI8RWxlbWVudFR5cGU+OjpmaXJzdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFRyYXZlcnNhbDxF
bGVtZW50VHlwZT46OmZpcnN0Q2hpbGQobV9wYXJlbnQpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgY29uc3QgRWxlbWVudFR5cGUqIEVsZW1lbnRDaGlsZENv
bnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6bGFzdCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RDaGlsZChtX3BhcmVudCk7Ci19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46OmJlZ2luQXQoY29uc3QgRWxlbWVudFR5cGUmIGNoaWxkKSBjb25zdAotewotICAg
IEFTU0VSVChjaGlsZC5wYXJlbnROb2RlKCkgPT0gJm1fcGFyZW50KTsKLSAgICByZXR1cm4gRWxl
bWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9wYXJlbnQsICZjaGlsZCk7Ci19
Ci0KIC8vIFN0YW5kYWxvbmUgZnVuY3Rpb25zCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGNo
aWxkcmVuT2ZUeXBlKENvbnRhaW5lck5vZGUmIHBhcmVudCkKK2lubGluZSBFbGVtZW50Q2hpbGRS
YW5nZTxFbGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoQ29udGFpbmVyTm9kZSYgcGFyZW50KQog
ewotICAgIHJldHVybiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KHBh
cmVudCk7CisgICAgcmV0dXJuIEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPihwYXJlbnQp
OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENo
aWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKGNvbnN0
IENvbnRhaW5lck5vZGUmIHBhcmVudCkKK2lubGluZSBFbGVtZW50Q2hpbGRSYW5nZTxjb25zdCBF
bGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KQog
ewotICAgIHJldHVybiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlw
ZT4ocGFyZW50KTsKKyAgICByZXR1cm4gRWxlbWVudENoaWxkUmFuZ2U8Y29uc3QgRWxlbWVudFR5
cGU+KHBhcmVudCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4ZGJkYjk5YTZkZGU5NjQ2ZGZiNDE3NDYxMjk5MThjNzM1ZWFlNDk5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNjYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnRJdGVy
YXRvckFzc2VydGlvbnMuaCIKLSNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCi0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IgewotcHVibGljOgotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IoKTsKLSAgICBleHBsaWNpdCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKEVsZW1lbnQqIGN1
cnJlbnQpOwotCi0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwot
ICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsKLQotICAgIEVsZW1l
bnQmIG9wZXJhdG9yKigpOwotICAgIEVsZW1lbnQqIG9wZXJhdG9yLT4oKTsKLQotICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG90
aGVyKSBjb25zdDsKLQotICAgIHZvaWQgZHJvcEFzc2VydGlvbnMoKTsKLQotcHJpdmF0ZToKLSAg
ICBFbGVtZW50KiBtX2N1cnJlbnQ7Ci0gICAgVmVjdG9yPEVsZW1lbnQqLCAxNj4gbV9hbmNlc3Rv
clNpYmxpbmdTdGFjazsKLQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgRWxlbWVudEl0ZXJhdG9y
QXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7Ci0jZW5kaWYKLX07Ci0KLWNsYXNzIEVsZW1lbnREZXNj
ZW5kYW50Q29uc3RJdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgRWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yKCk7Ci0gICAgZXhwbGljaXQgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
KGNvbnN0IEVsZW1lbnQqKTsKLQotICAgIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYg
b3BlcmF0b3IrKygpOwotCi0gICAgY29uc3QgRWxlbWVudCYgb3BlcmF0b3IqKCkgY29uc3Q7Ci0g
ICAgY29uc3QgRWxlbWVudCogb3BlcmF0b3ItPigpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0Owot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3Im
IG90aGVyKSBjb25zdDsKLQotICAgIHZvaWQgZHJvcEFzc2VydGlvbnMoKTsKLQotcHJpdmF0ZToK
LSAgICBjb25zdCBFbGVtZW50KiBtX2N1cnJlbnQ7Ci0gICAgVmVjdG9yPEVsZW1lbnQqLCAxNj4g
bV9hbmNlc3RvclNpYmxpbmdTdGFjazsKLQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgRWxlbWVu
dEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7Ci0jZW5kaWYKLX07Ci0KLWNsYXNzIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyIHsKLXB1YmxpYzoKLSAgICBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2RlJiByb290KTsKLSAgICBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yIGJlZ2luKCk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ciBlbmQoKTsKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGxhc3QoKTsKLQotcHJpdmF0
ZToKLSAgICBDb250YWluZXJOb2RlJiBtX3Jvb3Q7Ci19OwotCi1jbGFzcyBFbGVtZW50RGVzY2Vu
ZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyIHsKLXB1YmxpYzoKLSAgICBFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpOwotICAgIEVs
ZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciBiZWdpbigpIGNvbnN0OwotICAgIEVsZW1lbnRE
ZXNjZW5kYW50Q29uc3RJdGVyYXRvciBlbmQoKSBjb25zdDsKLSAgICBFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3IgbGFzdCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIGNvbnN0IENvbnRh
aW5lck5vZGUmIG1fcm9vdDsKLX07Ci0KLUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVy
IGVsZW1lbnREZXNjZW5kYW50cyhDb250YWluZXJOb2RlJik7Ci1FbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3JBZGFwdGVyIGVsZW1lbnREZXNjZW5kYW50cyhjb25zdCBDb250YWluZXJOb2Rl
Jik7Ci0KLS8vIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IKLQotaW5saW5lIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I6OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoKQotICAgIDogbV9jdXJy
ZW50KG51bGxwdHIpCi17Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKEVsZW1lbnQqIGN1cnJlbnQpCi0gICAgOiBtX2N1cnJl
bnQoY3VycmVudCkKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgICwgbV9hc3NlcnRpb25zKGN1cnJl
bnQpCi0jZW5kaWYKLXsKLSAgICBtX2FuY2VzdG9yU2libGluZ1N0YWNrLnVuY2hlY2tlZEFwcGVu
ZChudWxscHRyKTsKLX0KLQotaW5saW5lIHZvaWQgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6
ZHJvcEFzc2VydGlvbnMoKQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9hc3NlcnRpb25z
LmNsZWFyKCk7Ci0jZW5kaWYKLX0KLQotQUxXQVlTX0lOTElORSBFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yJiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvcisrKCkKLXsKLSAgICBB
U1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0
YXRlZCgpKTsKLQotICAgIEVsZW1lbnQqIGZpcnN0Q2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpm
aXJzdENoaWxkKCptX2N1cnJlbnQpOwotICAgIEVsZW1lbnQqIG5leHRTaWJsaW5nID0gRWxlbWVu
dFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoKm1fY3VycmVudCk7Ci0KLSAgICBpZiAoZmlyc3RDaGls
ZCkgewotICAgICAgICBpZiAobmV4dFNpYmxpbmcpCi0gICAgICAgICAgICBtX2FuY2VzdG9yU2li
bGluZ1N0YWNrLmFwcGVuZChuZXh0U2libGluZyk7Ci0gICAgICAgIG1fY3VycmVudCA9IGZpcnN0
Q2hpbGQ7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBpZiAobmV4dFNpYmxp
bmcpIHsKLSAgICAgICAgbV9jdXJyZW50ID0gbmV4dFNpYmxpbmc7Ci0gICAgICAgIHJldHVybiAq
dGhpczsKLSAgICB9Ci0KLSAgICBtX2N1cnJlbnQgPSBtX2FuY2VzdG9yU2libGluZ1N0YWNrLnRh
a2VMYXN0KCk7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlv
biB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQp
Ci0gICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2Vu
ZGlmCi0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLUFMV0FZU19JTkxJTkUgRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvciYgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6b3BlcmF0b3ItLSgpCi17
Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJl
ZUhhc011dGF0ZWQoKSk7Ci0KLSAgICBFbGVtZW50KiBwcmV2aW91c1NpYmxpbmcgPSBFbGVtZW50
VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoKm1fY3VycmVudCk7Ci0KLSAgICBpZiAoIXByZXZp
b3VzU2libGluZykgewotICAgICAgICBtX2N1cnJlbnQgPSBtX2N1cnJlbnQtPnBhcmVudEVsZW1l
bnQoKTsKLSAgICAgICAgLy8gVGhlIHN0YWNrIG9wdGltaXplcyBmb3IgZm9yd2FyZCB0cmF2ZXJz
YWwgb25seSwgdGhpcyBqdXN0IG1haW50YWlucyBjb25zaXN0ZW5jeS4KLSAgICAgICAgaWYgKG1f
Y3VycmVudC0+bmV4dFNpYmxpbmcoKSAmJiBtX2N1cnJlbnQtPm5leHRTaWJsaW5nKCkgPT0gbV9h
bmNlc3RvclNpYmxpbmdTdGFjay5sYXN0KCkpCi0gICAgICAgICAgICBtX2FuY2VzdG9yU2libGlu
Z1N0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAg
IEVsZW1lbnQqIGRlZXBlc3RTaWJsaW5nID0gcHJldmlvdXNTaWJsaW5nOwotICAgIHdoaWxlIChF
bGVtZW50KiBsYXN0Q2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQoKmRlZXBlc3RT
aWJsaW5nKSkKLSAgICAgICAgZGVlcGVzdFNpYmxpbmcgPSBsYXN0Q2hpbGQ7Ci0gICAgQVNTRVJU
KGRlZXBlc3RTaWJsaW5nKTsKLQotICAgIGlmIChkZWVwZXN0U2libGluZyAhPSBwcmV2aW91c1Np
YmxpbmcpCi0gICAgICAgIG1fYW5jZXN0b3JTaWJsaW5nU3RhY2suYXBwZW5kKG1fY3VycmVudCk7
Ci0KLSAgICBtX2N1cnJlbnQgPSBkZWVwZXN0U2libGluZzsKLQotI2lmIEFTU0VSVF9FTkFCTEVE
Ci0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhl
IGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVu
dERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQot
aW5saW5lIEVsZW1lbnQmIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6Om9wZXJhdG9yKigpCi17
Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJl
ZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuICptX2N1cnJlbnQ7Ci19Ci0KLWlubGluZSBFbGVt
ZW50KiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvci0+KCkKLXsKLSAgICBBU1NF
UlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRl
ZCgpKTsKLSAgICByZXR1cm4gbV9jdXJyZW50OwotfQotCi1pbmxpbmUgYm9vbCBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvcj09KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3ImIG90aGVyKSBjb25zdAotewotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNN
dXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQgPT0gb3RoZXIubV9jdXJyZW50OwotfQot
Ci1pbmxpbmUgYm9vbCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvciE9KGNvbnN0
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKLX0KLQotLy8gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I6OkVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvcigpCi0gICAgOiBtX2N1cnJlbnQobnVsbHB0cikKLXsKLX0KLQotaW5s
aW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6RWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yKGNvbnN0IEVsZW1lbnQqIGN1cnJlbnQpCi0gICAgOiBtX2N1cnJlbnQoY3VycmVu
dCkKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgICwgbV9hc3NlcnRpb25zKGN1cnJlbnQpCi0jZW5k
aWYKLXsKLSAgICBtX2FuY2VzdG9yU2libGluZ1N0YWNrLnVuY2hlY2tlZEFwcGVuZChudWxscHRy
KTsKLX0KLQotaW5saW5lIHZvaWQgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpkcm9w
QXNzZXJ0aW9ucygpCi17Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2Fzc2VydGlvbnMuY2xl
YXIoKTsKLSNlbmRpZgotfQotCi1BTFdBWVNfSU5MSU5FIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvciYgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpvcGVyYXRvcisrKCkKLXsK
LSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVl
SGFzTXV0YXRlZCgpKTsKLQotICAgIEVsZW1lbnQqIGZpcnN0Q2hpbGQgPSBFbGVtZW50VHJhdmVy
c2FsOjpmaXJzdENoaWxkKCptX2N1cnJlbnQpOwotICAgIEVsZW1lbnQqIG5leHRTaWJsaW5nID0g
RWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoKm1fY3VycmVudCk7Ci0KLSAgICBpZiAoZmly
c3RDaGlsZCkgewotICAgICAgICBpZiAobmV4dFNpYmxpbmcpCi0gICAgICAgICAgICBtX2FuY2Vz
dG9yU2libGluZ1N0YWNrLmFwcGVuZChuZXh0U2libGluZyk7Ci0gICAgICAgIG1fY3VycmVudCA9
IGZpcnN0Q2hpbGQ7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBpZiAobmV4
dFNpYmxpbmcpIHsKLSAgICAgICAgbV9jdXJyZW50ID0gbmV4dFNpYmxpbmc7Ci0gICAgICAgIHJl
dHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBtX2N1cnJlbnQgPSBtX2FuY2VzdG9yU2libGluZ1N0
YWNrLnRha2VMYXN0KCk7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFz
c2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1
cnJlbnQpCi0gICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigp
OwotI2VuZGlmCi0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLWlubGluZSBjb25zdCBFbGVtZW50
JiBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I6Om9wZXJhdG9yKigpIGNvbnN0Ci17Ci0g
ICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhh
c011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuICptX2N1cnJlbnQ7Ci19Ci0KLWlubGluZSBjb25zdCBF
bGVtZW50KiBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I6Om9wZXJhdG9yLT4oKSBjb25z
dAotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRv
bVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQ7Ci19Ci0KLWlubGluZSBi
b29sIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAgIEFTU0VSVCgh
bV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQg
PT0gb3RoZXIubV9jdXJyZW50OwotfQotCi1pbmxpbmUgYm9vbCBFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3I6Om9wZXJhdG9yIT0oY29uc3QgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci19Ci0K
LS8vIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyCi0KLWlubGluZSBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yQWRhcHRlcjo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIo
Q29udGFpbmVyTm9kZSYgcm9vdCkKLSAgICA6IG1fcm9vdChyb290KQotewotfQotCi1pbmxpbmUg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRl
cjo6YmVnaW4oKQotewotICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKEVsZW1l
bnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQobV9yb290KSk7Ci19Ci0KLWlubGluZSBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjplbmQoKQot
ewotICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKCk7Ci19Ci0KLWlubGluZSBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVy
OjpsYXN0KCkKLXsKLSAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihFbGVtZW50
VHJhdmVyc2FsOjpsYXN0V2l0aGluKG1fcm9vdCkpOwotfQotCi0vLyBFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3JBZGFwdGVyCi0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3JBZGFwdGVyOjpFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0
IENvbnRhaW5lck5vZGUmIHJvb3QpCi0gICAgOiBtX3Jvb3Qocm9vdCkKLXsKLX0KLQotaW5saW5l
IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3JBZGFwdGVyOjpiZWdpbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvcihFbGVtZW50VHJhdmVyc2FsOjpmaXJzdENoaWxkKG1fcm9vdCkpOwot
fQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvckFkYXB0ZXI6OmVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1l
bnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcigpOwotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRh
bnRDb25zdEl0ZXJhdG9yIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI6Omxh
c3QoKSBjb25zdAotewotICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3Io
RWxlbWVudFRyYXZlcnNhbDo6bGFzdFdpdGhpbihtX3Jvb3QpKTsKLX0KLQotLy8gU3RhbmRhbG9u
ZSBmdW5jdGlvbnMKLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyIGVs
ZW1lbnREZXNjZW5kYW50cyhDb250YWluZXJOb2RlJiByb290KQotewotICAgIHJldHVybiBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcihyb290KTsKLX0KLQotaW5saW5lIEVsZW1lbnRE
ZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIgZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0IENv
bnRhaW5lck5vZGUmIHJvb3QpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvckFkYXB0ZXIocm9vdCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFt
ZXNwYWNlIHN0ZCB7Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPFdlYkNvcmU6
OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I+IHsKLSAgICB0eXBlZGVmIFdlYkNvcmU6OkVsZW1l
bnQgdmFsdWVfdHlwZTsKLX07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPFdl
YkNvcmU6OkVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcj4gewotICAgIHR5cGVkZWYgY29u
c3QgV2ViQ29yZTo6RWxlbWVudCB2YWx1ZV90eXBlOwotfTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50SXRlcmF0b3IuaAppbmRleCAzNzRkYmE3YTRjMjQ3OGRkZDkzYWViMmE0YzQ0ZTNkYjgyZDcz
YjU2Li43NDk4ZDQwYWE0MDFkYWM2ZTU5MzU2ZmIwYTA0Yjg0ZjViNzAzNDZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRJdGVyYXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDExICszNCw4IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRJdGVy
YXRvciB7CitjbGFzcyBFbGVtZW50SXRlcmF0b3IgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6
OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBFbGVtZW50VHlwZT4gewogcHVibGljOgotICAgIEVsZW1l
bnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290KTsKLSAgICBFbGVtZW50SXRlcmF0
b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotCiAg
ICAgRWxlbWVudFR5cGUmIG9wZXJhdG9yKigpIGNvbnN0OwogICAgIEVsZW1lbnRUeXBlKiBvcGVy
YXRvci0+KCkgY29uc3Q7CiAKQEAgLTU0LDM5ICs1MSwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGRyb3BBc3NlcnRpb25zKCk7CiAKLXByaXZhdGU6Ci0gICAgY29uc3QgQ29udGFpbmVyTm9kZSog
bV9yb290OwotICAgIEVsZW1lbnRUeXBlKiBtX2N1cnJlbnQ7Citwcm90ZWN0ZWQ6CisgICAgRWxl
bWVudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QgPSBudWxscHRyLCBFbGVtZW50
VHlwZSogY3VycmVudCA9IG51bGxwdHIpOwogCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBFbGVt
ZW50SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0aW9uczsKLSNlbmRpZgotfTsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVudENvbnN0SXRlcmF0b3Igewot
cHVibGljOgotICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJv
b3QpOwotICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3Qs
IGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKLQotICAgIGNvbnN0IEVsZW1lbnRUeXBlJiBv
cGVyYXRvciooKSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50VHlwZSogb3BlcmF0b3ItPigpIGNv
bnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVsZW1lbnRDb25zdEl0ZXJhdG9yJiBv
dGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVsZW1lbnRDb25zdEl0ZXJh
dG9yJiBvdGhlcikgY29uc3Q7Ci0KLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VO
ZXh0KCk7Ci0gICAgRWxlbWVudENvbnN0SXRlcmF0b3ImIHRyYXZlcnNlUHJldmlvdXMoKTsKLSAg
ICBFbGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VOZXh0U2libGluZygpOwotICAgIEVsZW1l
bnRDb25zdEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzU2libGluZygpOwotICAgIEVsZW1lbnRD
b25zdEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7Ci0gICAgRWxlbWVu
dENvbnN0SXRlcmF0b3ImIHRyYXZlcnNlQW5jZXN0b3IoKTsKLQotICAgIHZvaWQgZHJvcEFzc2Vy
dGlvbnMoKTsKKyAgICBib29sIGF0RW5kKCkgeyByZXR1cm4gIW1fY3VycmVudDsgfQogCiBwcml2
YXRlOgogICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIG1fcm9vdDsKLSAgICBjb25zdCBFbGVtZW50
VHlwZSogbV9jdXJyZW50OworICAgIEVsZW1lbnRUeXBlKiBtX2N1cnJlbnQ7CiAKICNpZiBBU1NF
UlRfRU5BQkxFRAogICAgIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMgbV9hc3NlcnRpb25zOwpA
QCAtOTUsMTMgKzY3LDYgQEAgcHJpdmF0ZToKIAogLy8gRWxlbWVudEl0ZXJhdG9yCiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+OjpFbGVtZW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCkKLSAgICA6
IG1fcm9vdChyb290KQotICAgICwgbV9jdXJyZW50KG51bGxwdHIpCi17Ci19Ci0KIHRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+OjpFbGVtZW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwgRWxlbWVudFR5
cGUqIGN1cnJlbnQpCiAgICAgOiBtX3Jvb3Qocm9vdCkKQEAgLTI1MSwxNDggKzIxNiw2IEBAIGlu
bGluZSBib29sIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIT0oY29uc3Qg
RWxlbWVudEl0ZXJhdG9yJiBvdGhlCiAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogfQog
Ci0vLyBFbGVtZW50Q29uc3RJdGVyYXRvcgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+Ci1pbmxpbmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50Q29u
c3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290KQotICAgIDogbV9yb290KHJvb3Qp
Ci0gICAgLCBtX2N1cnJlbnQobnVsbHB0cikKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxl
bWVudENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwgY29uc3QgRWxlbWVu
dFR5cGUqIGN1cnJlbnQpCi0gICAgOiBtX3Jvb3Qocm9vdCkKLSAgICAsIG1fY3VycmVudChjdXJy
ZW50KQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLCBtX2Fzc2VydGlvbnMoY3VycmVudCkKLSNl
bmRpZgotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxl
bWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT46OnRyYXZlcnNlTmV4dCgpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAg
QVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgbV9jdXJyZW50
ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dCgqbV9jdXJyZW50LCBtX3Jvb3QpOwotI2lm
IEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJh
dG9yIHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3Nl
cnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4g
KnRoaXM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVt
ZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91cygpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0g
ICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgbV9jdXJy
ZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXMoKm1fY3VycmVudCwgbV9yb290
KTsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRo
ZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0gICAgICAg
IG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlmCi0gICAg
cmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxp
bmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxpbmcoKQotewotICAgIEFTU0VSVChtX2N1
cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwot
ICAgIG1fY3VycmVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRTaWJsaW5nKCptX2N1
cnJlbnQpOwotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdo
ZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAg
ICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYK
LSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoKQotewotICAgIEFT
U0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRh
dGVkKCkpOwotICAgIG1fY3VycmVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnByZXZpb3Vz
U2libGluZygqbV9jdXJyZW50KTsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhl
IGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFt
X2N1cnJlbnQpCi0gICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlv
bigpOwotI2VuZGlmCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBF
bGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hp
bGRyZW4oKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRp
b25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3VycmVudCA9IFRyYXZlcnNhbDxFbGVt
ZW50VHlwZT46Om5leHRTa2lwcGluZ0NoaWxkcmVuKCptX2N1cnJlbnQsIG1fcm9vdCk7Ci0jaWYg
QVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0
b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBtX2Fzc2Vy
dGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAgIHJldHVybiAq
dGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1l
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+Ojp0cmF2ZXJzZUFuY2VzdG9yKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAg
ICBBU1NFUlQobV9jdXJyZW50ICE9IG1fcm9vdCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMu
ZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgbV9jdXJyZW50ID0gZmluZEVsZW1lbnRBbmNlc3Rv
ck9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm1fY3VycmVudCk7Ci0jaWYgQVNTRVJUX0VOQUJM
RUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0
aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2
ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAgIHJldHVybiAqdGhpczsKLX0KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIHZvaWQgRWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojpkcm9wQXNzZXJ0aW9ucygpCi17Ci0jaWYgQVNTRVJUX0VO
QUJMRUQKLSAgICBtX2Fzc2VydGlvbnMuY2xlYXIoKTsKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgY29uc3QgRWxlbWVudFR5cGUmIEVsZW1lbnRD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IqKCkgY29uc3QKLXsKLSAgICBBU1NF
UlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRl
ZCgpKTsKLSAgICByZXR1cm4gKm1fY3VycmVudDsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlKiBFbGVtZW50Q29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT46Om9wZXJhdG9yLT4oKSBjb25zdAotewotICAgIEFTU0VSVChtX2N1cnJl
bnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAg
IHJldHVybiBtX2N1cnJlbnQ7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWlubGluZSBib29sIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3I9
PShjb25zdCBFbGVtZW50Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KG1fcm9vdCA9PSBvdGhlci5tX3Jvb3QpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRy
ZWVIYXNNdXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQgPT0gb3RoZXIubV9jdXJyZW50
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgYm9vbCBFbGVt
ZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIT0oY29uc3QgRWxlbWVudENv
bnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaW5jbHVkZSAiRWxlbWVudEFuY2Vz
dG9ySXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxp
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5jcHAKaW5kZXggZGQwYzk5
OTE4MDljYmY3YzcxMDYwMDUwMjE2NGU5YTE2ZmRjYzE5MS4uNDM0ZDRhNDQ5MGVjZmMyYTljNTBi
MmQ0MDY5NGUxNDM5ZGU1MDY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVO
b2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5jcHAKQEAg
LTIzLDEwICsyMyw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGl2ZU5vZGVM
aXN0LmgiCiAKLSNpbmNsdWRlICJDbGFzc0NvbGxlY3Rpb24uaCIKLSNpbmNsdWRlICJFbGVtZW50
LmgiCi0jaW5jbHVkZSAiRWxlbWVudFRyYXZlcnNhbC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCmluZGV4IGYyN2YwZWY2NzRiYmQ5ODIz
MTRjMGJiYjI1Yjg1MjQyMjM0ZGE1OGYuLmNjODU1YTI2MDY5ODQxZWRiYmVhZGVkNzBhN2NjNjEz
MzFjMjM3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKQEAgLTI2LDcgKzI2LDYgQEAK
ICNpbmNsdWRlICJDb2xsZWN0aW9uSW5kZXhDYWNoZS5oIgogI2luY2x1ZGUgIkNvbGxlY3Rpb25U
cmF2ZXJzYWwuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJOb2Rl
TGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC04MywxMiArODIsMTUgQEAgcHVi
bGljOgogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW5kZXhD
YWNoZS5ub2RlQ291bnQobm9kZUxpc3QoKSk7IH0KICAgICBFbGVtZW50KiBpdGVtKHVuc2lnbmVk
IG9mZnNldCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVBdChub2Rl
TGlzdCgpLCBvZmZzZXQpOyB9CiAKKyAgICB1c2luZyBUcmF2ZXJzYWwgPSBDb2xsZWN0aW9uVHJh
dmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz47CisgICAgdXNpbmcg
SXRlcmF0b3IgPSBUcmF2ZXJzYWw6Okl0ZXJhdG9yOworCiAgICAgLy8gRm9yIENvbGxlY3Rpb25J
bmRleENhY2hlCi0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0aW9uQmVnaW4o
KSBjb25zdCB7IHJldHVybiBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxU
eXBlOjpEZXNjZW5kYW50cz46OmJlZ2luKG5vZGVMaXN0KCksIHJvb3ROb2RlKCkpOyB9Ci0gICAg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0aW9uTGFzdCgpIGNvbnN0IHsgcmV0dXJu
IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRz
Pjo6bGFzdChub2RlTGlzdCgpLCByb290Tm9kZSgpKTsgfQotICAgIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IgY29sbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IoKTsgfQotICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRy
YXZlcnNlZENvdW50KSBjb25zdCB7IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZl
cnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VGb3J3YXJkKG5vZGVMaXN0KCksIGN1cnJl
bnQsIGNvdW50LCB0cmF2ZXJzZWRDb3VudCk7IH0KLSAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJz
ZUJhY2t3YXJkKEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNv
dW50KSBjb25zdCB7IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6
OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VCYWNrd2FyZChub2RlTGlzdCgpLCBjdXJyZW50LCBjb3Vu
dCk7IH0KKyAgICBhdXRvIGNvbGxlY3Rpb25CZWdpbigpIGNvbnN0IHsgcmV0dXJuIFRyYXZlcnNh
bDo6YmVnaW4obm9kZUxpc3QoKSwgcm9vdE5vZGUoKSk7IH0KKyAgICBhdXRvIGNvbGxlY3Rpb25M
YXN0KCkgY29uc3QgeyByZXR1cm4gVHJhdmVyc2FsOjpsYXN0KG5vZGVMaXN0KCksIHJvb3ROb2Rl
KCkpOyB9CisgICAgYXV0byBjb2xsZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gSXRlcmF0b3Io
cm9vdE5vZGUoKSk7IH0KKyAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoSXRlcmF0
b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNv
bnN0IHsgVHJhdmVyc2FsOjp0cmF2ZXJzZUZvcndhcmQobm9kZUxpc3QoKSwgY3VycmVudCwgY291
bnQsIHRyYXZlcnNlZENvdW50KTsgfQorICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlQmFja3dh
cmQoSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KSBjb25zdCB7IFRyYXZlcnNhbDo6
dHJhdmVyc2VCYWNrd2FyZChub2RlTGlzdCgpLCBjdXJyZW50LCBjb3VudCk7IH0KICAgICBib29s
IGNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJhY2t3YXJkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZvaWQgd2lsbFZhbGlkYXRlSW5kZXhDYWNoZSgpIGNvbnN0IHsgZG9jdW1lbnQoKS5yZWdp
c3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Q2FjaGVkTGl2ZU5vZGVMaXN0
PE5vZGVMaXN0VHlwZT4mPigqdGhpcykpOyB9CiAKQEAgLTEwMSw2ICsxMDMsOCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBtX2luZGV4Q2FjaGUubWVtb3J5Q29zdCgpOwogICAgIH0KIAorICAg
IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBDYWNo
ZWRMaXZlTm9kZUxpc3QoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIE5vZGVMaXN0SW52YWxpZGF0
aW9uVHlwZSk7CiAKQEAgLTEwOCw5ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIE5vZGVMaXN0VHlw
ZSYgbm9kZUxpc3QoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxOb2RlTGlzdFR5cGUmPigqdGhpcyk7
IH0KICAgICBjb25zdCBOb2RlTGlzdFR5cGUmIG5vZGVMaXN0KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpOyB9CiAKLSAgICBDb250YWluZXJO
b2RlJiByb290Tm9kZSgpIGNvbnN0OwotCi0gICAgbXV0YWJsZSBDb2xsZWN0aW9uSW5kZXhDYWNo
ZTxOb2RlTGlzdFR5cGUsIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I+IG1faW5kZXhDYWNoZTsK
KyAgICBtdXRhYmxlIENvbGxlY3Rpb25JbmRleENhY2hlPE5vZGVMaXN0VHlwZSwgSXRlcmF0b3I+
IG1faW5kZXhDYWNoZTsKIH07CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBzaG91bGRJbnZhbGlkYXRl
VHlwZU9uQXR0cmlidXRlQ2hhbmdlKE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSB0eXBlLCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA5ODIxMjQ0ZGM5
MTc0OTM0MWIzZDI2YzUzYWUyNTdmM2FjYWFhOTUxLi5mOWM1OWQwNjU3MTE1NWUxMTMxM2EwOGZk
N2E1NmZjMjJhNDYyY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEFyZWFFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTEJvZHlFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNs
dWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MU2xvdEVsZW1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
ZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApp
bmRleCBlZjA1NTI5MzQyNzdkNDNiMTE5YTQ2NzUxZmY0MjhlMGExODAzNzkwLi5hMTk1ZWQ2NjRm
MThlNzhjOTlmNWY5NjQ1ODEwOGY0MzU0OWI5MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
NCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiU2VsZWN0b3JRdWVyeS5oIgogCiAjaW5jbHVk
ZSAiQ1NTUGFyc2VyLmgiCi0jaW5jbHVkZSAiRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgor
I2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCkBA
IC0xNTAsMTUgKzE1MCwxMiBAQCBib29sIFNlbGVjdG9yRGF0YUxpc3Q6Om1hdGNoZXMoRWxlbWVu
dCYgdGFyZ2V0RWxlbWVudCkgY29uc3QKIAogRWxlbWVudCogU2VsZWN0b3JEYXRhTGlzdDo6Y2xv
c2VzdChFbGVtZW50JiB0YXJnZXRFbGVtZW50KSBjb25zdAogewotICAgIEVsZW1lbnQqIGN1cnJl
bnROb2RlID0gJnRhcmdldEVsZW1lbnQ7Ci0gICAgZG8geworICAgIGZvciAoYXV0byYgY3VycmVu
dEVsZW1lbnQgOiBhbmNlc3RvcnNPZlR5cGU8RWxlbWVudD4odGFyZ2V0RWxlbWVudCkpIHsKICAg
ICAgICAgZm9yIChhdXRvJiBzZWxlY3RvciA6IG1fc2VsZWN0b3JzKSB7Ci0gICAgICAgICAgICBF
bGVtZW50KiBjYW5kaWRhdGVFbGVtZW50ID0gc2VsZWN0b3JDbG9zZXN0KHNlbGVjdG9yLCAqY3Vy
cmVudE5vZGUsIHRhcmdldEVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZUVsZW1l
bnQpCisgICAgICAgICAgICBpZiAoYXV0byogY2FuZGlkYXRlRWxlbWVudCA9IHNlbGVjdG9yQ2xv
c2VzdChzZWxlY3RvciwgY3VycmVudEVsZW1lbnQsIHRhcmdldEVsZW1lbnQpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBjYW5kaWRhdGVFbGVtZW50OwogICAgICAgICB9Ci0gICAgICAgIGN1cnJl
bnROb2RlID0gY3VycmVudE5vZGUtPnBhcmVudEVsZW1lbnQoKTsKLSAgICB9IHdoaWxlIChjdXJy
ZW50Tm9kZSk7CisgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0yOTUsNyArMjky
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4KIHN0YXRpYyBpbmxp
bmUgdm9pZCBlbGVtZW50c0ZvckxvY2FsTmFtZShjb25zdCBDb250YWluZXJOb2RlJiByb290Tm9k
ZSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBsb3dlcmNh
c2VMb2NhbE5hbWUsIHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0
cHV0KQogewogICAgIGlmIChsb2NhbE5hbWUgPT0gbG93ZXJjYXNlTG9jYWxOYW1lKSB7Ci0gICAg
ICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9jYXN0PENv
bnRhaW5lck5vZGUmPihyb290Tm9kZSkpKSB7CisgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6
IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJv
b3ROb2RlKSkpIHsKICAgICAgICAgICAgIGlmIChlbGVtZW50LnRhZ1FOYW1lKCkubG9jYWxOYW1l
KCkgPT0gbG9jYWxOYW1lKSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0Ojph
cHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICAgICAgICAg
IGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAg
LTMwMyw3ICszMDAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZWxlbWVudHNGb3JMb2NhbE5hbWUo
Y29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0bwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxl
bWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4o
Y29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAgICAgICAgICAgaWYg
KGxvY2FsTmFtZU1hdGNoZXMoZWxlbWVudCwgbG9jYWxOYW1lLCBsb3dlcmNhc2VMb2NhbE5hbWUp
KSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRwdXRGb3JF
bGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChTZWxlY3RvclF1
ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAgLTMxNiw3ICszMTMsNyBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgZWxlbWVudHNGb3JMb2NhbE5hbWUoY29uc3QgQ29udGFpbmVy
Tm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0bwogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVl
cnlUcmFpdD4KIHN0YXRpYyBpbmxpbmUgdm9pZCBhbnlFbGVtZW50KGNvbnN0IENvbnRhaW5lck5v
ZGUmIHJvb3ROb2RlLCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5cGUmIG91
dHB1dCkKIHsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29u
c3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxl
bWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9k
ZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRw
dXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICBpZiAoU2VsZWN0b3JRdWVy
eVRyYWl0OjpzaG91bGRPbmx5TWF0Y2hGaXJzdEVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0zNDUsNyArMzQyLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6
OmV4ZWN1dGVTaW5nbGVUYWdOYW1lU2VsZWN0b3JEYXRhKGNvbnN0IENvbnQKICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZhbGxiYWNrOiBOYW1lc3BhY2VVUkkgaXMgc2V0LCBz
ZWxlY3RvckxvY2FsTmFtZSBtYXkgYmUgc3RhckF0b20oKS4KLSAgICAgICAgZm9yIChhdXRvJiBl
bGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJv
b3ROb2RlKSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5
cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQubmFtZXNwYWNlVVJJKCkgPT0gc2VsZWN0b3JOYW1lc3BhY2VV
UkkgJiYgbG9jYWxOYW1lTWF0Y2hlcyhlbGVtZW50LCBzZWxlY3RvckxvY2FsTmFtZSwgc2VsZWN0
b3JMb3dlcmNhc2VMb2NhbE5hbWUpKSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRy
YWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICAg
ICAgICAgIGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVu
dCkKQEAgLTM2Miw3ICszNTksNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlz
dDo6ZXhlY3V0ZVNpbmdsZUNsYXNzTmFtZVNlbGVjdG9yRGF0YShjb25zdCBDbwogICAgIEFTU0VS
VChpc1NpbmdsZUNsYXNzTmFtZVNlbGVjdG9yKCpzZWxlY3RvckRhdGEuc2VsZWN0b3IpKTsKIAog
ICAgIGNvbnN0IEF0b21TdHJpbmcmIGNsYXNzTmFtZSA9IHNlbGVjdG9yRGF0YS5zZWxlY3Rvci0+
dmFsdWUoKTsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29u
c3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxl
bWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9k
ZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAgaWYgKGVsZW1lbnQuaGFzQ2xhc3MoKSAmJiBlbGVt
ZW50LmNsYXNzTmFtZXMoKS5jb250YWlucyhjbGFzc05hbWUpKSB7CiAgICAgICAgICAgICBTZWxl
Y3RvclF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1lbnQob3V0cHV0LCAmZWxlbWVudCk7
CiAgICAgICAgICAgICBpZiAoU2VsZWN0b3JRdWVyeVRyYWl0OjpzaG91bGRPbmx5TWF0Y2hGaXJz
dEVsZW1lbnQpCkBAIC0zNzYsNyArMzczLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9y
RGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVTZWxlY3RvckRhdGEoY29uc3QgQ29udGFpbmVyTm8KIHsK
ICAgICBBU1NFUlQobV9zZWxlY3RvcnMuc2l6ZSgpID09IDEpOwogCi0gICAgZm9yIChhdXRvJiBl
bGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNl
YXJjaFJvb3ROb2RlKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09m
VHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihzZWFyY2hSb290Tm9kZSkp
KSB7CiAgICAgICAgIGlmIChzZWxlY3Rvck1hdGNoZXMoc2VsZWN0b3JEYXRhLCBlbGVtZW50LCBy
b290Tm9kZSkpIHsKICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBwZW5kT3V0cHV0
Rm9yRWxlbWVudChvdXRwdXQsICZlbGVtZW50KTsKICAgICAgICAgICAgIGlmIChTZWxlY3RvclF1
ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAgLTM4OCw3ICszODUsNyBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZVNlbGVj
dG9yRGF0YShjb25zdCBDb250YWluZXJObwogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVl
cnlUcmFpdD4KIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2lu
Z2xlTXVsdGlTZWxlY3RvckRhdGEoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIHR5cGVu
YW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0cHV0KSBjb25zdAogewotICAg
IGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9jYXN0PENvbnRh
aW5lck5vZGUmPihyb290Tm9kZSkpKSB7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2Vu
ZGFudHNPZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUp
KSkgewogICAgICAgICBmb3IgKGF1dG8mIHNlbGVjdG9yIDogbV9zZWxlY3RvcnMpIHsKICAgICAg
ICAgICAgIGlmIChzZWxlY3Rvck1hdGNoZXMoc2VsZWN0b3IsIGVsZW1lbnQsIHJvb3ROb2RlKSkg
ewogICAgICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBwZW5kT3V0cHV0Rm9yRWxl
bWVudChvdXRwdXQsICZlbGVtZW50KTsKQEAgLTQwNCw3ICs0MDEsNyBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZU11bHRpU2VsZWN0b3JEYXRhKGNv
bnN0IENvbnRhaQogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4KIEFMV0FZ
U19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29tcGlsZWRTaW1wbGVTZWxl
Y3RvckNoZWNrZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgc2VhcmNoUm9vdE5vZGUsIFNlbGVjdG9y
Q29tcGlsZXI6OlF1ZXJ5U2VsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXIgc2VsZWN0b3JDaGVj
a2VyLCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5cGUmIG91dHB1dCwgY29u
c3QgU2VsZWN0b3JEYXRhJiBzZWxlY3RvckRhdGEpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvJiBl
bGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNl
YXJjaFJvb3ROb2RlKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09m
VHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihzZWFyY2hSb290Tm9kZSkp
KSB7CiAgICAgICAgIHNlbGVjdG9yRGF0YS5jb21waWxlZFNlbGVjdG9yLndhc1VzZWQoKTsKIAog
ICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2VyKCZlbGVtZW50KSkgewpAQCAtNDIxLDcgKzQxOCw3
IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29tcGlsZWRT
ZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDCiAgICAgU2VsZWN0b3JDaGVja2VyOjpDaGVja2lu
Z0NvbnRleHQgY2hlY2tpbmdDb250ZXh0KFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6UXVlcnlpbmdS
dWxlcyk7CiAgICAgY2hlY2tpbmdDb250ZXh0LnNjb3BlID0gcm9vdE5vZGUuaXNEb2N1bWVudE5v
ZGUoKSA/IG51bGxwdHIgOiAmcm9vdE5vZGU7CiAKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBl
bGVtZW50RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4oc2VhcmNoUm9vdE5v
ZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1l
bnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNlYXJjaFJvb3ROb2RlKSkpIHsKICAgICAg
ICAgc2VsZWN0b3JEYXRhLmNvbXBpbGVkU2VsZWN0b3Iud2FzVXNlZCgpOwogCiAgICAgICAgIGlm
IChzZWxlY3RvckNoZWNrZXIoJmVsZW1lbnQsICZjaGVja2luZ0NvbnRleHQpKSB7CkBAIC00Mzcs
NyArNDM0LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVD
b21waWxlZFNpbmdsZU11bHRpU2VsZWN0b3JEYXRhKGNvbnMKIHsKICAgICBTZWxlY3RvckNoZWNr
ZXI6OkNoZWNraW5nQ29udGV4dCBjaGVja2luZ0NvbnRleHQoU2VsZWN0b3JDaGVja2VyOjpNb2Rl
OjpRdWVyeWluZ1J1bGVzKTsKICAgICBjaGVja2luZ0NvbnRleHQuc2NvcGUgPSByb290Tm9kZS5p
c0RvY3VtZW50Tm9kZSgpID8gbnVsbHB0ciA6ICZyb290Tm9kZTsKLSAgICBmb3IgKGF1dG8mIGVs
ZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9v
dE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVs
ZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAg
Zm9yIChhdXRvJiBzZWxlY3RvciA6IG1fc2VsZWN0b3JzKSB7CiAgICAgICAgICAgICBzZWxlY3Rv
ci5jb21waWxlZFNlbGVjdG9yLndhc1VzZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdu
bWVudC5jcHAKaW5kZXggNGQzZTYxOTQ3ZDNiZjhhNWFhYzRiY2U2NzdmYzcxYTMzYjg1YzZiOC4u
ZDJkMTNjYjA5MzUwZDA3YmM2MjA1N2VjOTNjZjM0ODVhNDYwZGRkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2xvdEFzc2lnbm1lbnQuY3BwCkBAIC0yNiwxMCArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlNsb3RBc3NpZ25tZW50LmgiCiAKLQorI2luY2x1ZGUgIkVsZW1lbnRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKLSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKaW5kZXggOWYzNTkzNWQ5NmM3OWU3NWI2OGQzMGMy
OGNiZTNjNWEwNDNmMDMzMy4uZmY2MWQ4Zjk0MGFhNmIxNjlkZmNmZDEzZjg3NDFjY2YwNzMxMjQ4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI5LDI5NCArMjksMjgyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZVR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBEb3VibGVFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIERvdWJsZUVs
ZW1lbnREZXNjZW5kYW50UmFuZ2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRWxlbWVudERl
c2NlbmRhbnRSYW5nZTsKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sKGNvbnN0
IEVsZW1lbnRUeXBlJik+IGNsYXNzIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZTsKIAot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gewotcHVi
bGljOgotICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJO
b2RlJiByb290KTsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29u
dGFpbmVyTm9kZSYgcm9vdCwgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotICAgIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotfTsKKy8vIFJhbmdlIGZvciBpdGVy
YXRpbmcgdGhyb3VnaCBkZXNjZW5kYW50IGVsZW1lbnRzLgordGVtcGxhdGU8dHlwZW5hbWUgRWxl
bWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRz
T2ZUeXBlKENvbnRhaW5lck5vZGUmKTsKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBF
bGVtZW50RGVzY2VuZGFudFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlw
ZShjb25zdCBDb250YWluZXJOb2RlJik7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWNsYXNzIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIDogcHVibGljIEVs
ZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiAgewotcHVibGljOgotICAgIFR5cGVkRWxl
bWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpOwot
ICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5v
ZGUmIHJvb3QsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKLSAgICBUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50Q29uc3RJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotfTsKKy8vIFJhbmdlIHRoYXQg
c2tpcHMgZWxlbWVudHMgd2hlcmUgdGhlIGZpbHRlciByZXR1cm5zIGZhbHNlLgordGVtcGxhdGU8
dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmlsdGVyKGNvbnN0IEVsZW1lbnRUeXBlJik+IEZp
bHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZTxjb25zdCBFbGVtZW50VHlwZSwgZmlsdGVyPiBk
ZXNjZW5kYW50c09mVHlwZShjb25zdCBDb250YWluZXJOb2RlJik7CisKKy8vIFJhbmdlIGZvciB1
c2Ugd2hlbiBib3RoIHNldHMgb2YgZGVzY2VuZGFudHMgYXJlIGtub3duIHRvIGJlIHRoZSBzYW1l
IGxlbmd0aC4KKy8vIElmIHRoZXkgYXJlIGRpZmZlcmVudCBsZW5ndGhzLCB0aGlzIHdpbGwgc3Rv
cCB3aGVuIHRoZSBzaG9ydGVyIG9uZSByZWFjaGVzIHRoZSBlbmQsIGJ1dCBhbHNvIGFuIGFzc2Vy
dGlvbiB3aWxsIGZhaWwuCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRG91YmxlRWxl
bWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFp
bmVyTm9kZSYgZmlyc3RSb290LCBDb250YWluZXJOb2RlJiBzZWNvbmRSb290KTsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yQWRhcHRlciB7CitjbGFzcyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIDogcHVibGlj
IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gewogcHVibGljOgotICAgIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpOwotICAgIFR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCk7Ci0gICAgVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbkF0KEVsZW1lbnRU
eXBlJik7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBm
cm9tKEVsZW1lbnQmKTsKLQotICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpOwotICAgIEVsZW1lbnRU
eXBlKiBsYXN0KCk7Ci0KLXByaXZhdGU6Ci0gICAgQ29udGFpbmVyTm9kZSYgbV9yb290OworICAg
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7Cisg
ICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBF
bGVtZW50VHlwZSogY3VycmVudCk7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3Bl
cmF0b3IrKygpOworICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsK
IH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlciB7CitjbGFzcyBFbGVtZW50RGVzY2VuZGFu
dFJhbmdlIHsKIHB1YmxpYzoKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
ckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgVHlwZWRFbGVtZW50RGVz
Y2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7Ci0gICAgVHlw
ZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpIGNvbnN0
OwotICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBi
ZWdpbkF0KGNvbnN0IEVsZW1lbnRUeXBlJikgY29uc3Q7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGZyb20oY29uc3QgRWxlbWVudCYpIGNvbnN0
OworICAgIEVsZW1lbnREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7
CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKSBjb25z
dDsKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKSBjb25z
dDsKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbkF0KEVs
ZW1lbnRUeXBlJikgY29uc3Q7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50
VHlwZT4gZnJvbShFbGVtZW50JikgY29uc3Q7CiAKLSAgICBjb25zdCBFbGVtZW50VHlwZSogZmly
c3QoKSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50VHlwZSogbGFzdCgpIGNvbnN0OworICAgIEVs
ZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0OworICAgIEVsZW1lbnRUeXBlKiBsYXN0KCkgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgY29uc3QgQ29udGFpbmVyTm9kZSYgbV9yb290OwogfTsKIAotdGVt
cGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZVR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvckFkYXB0ZXIgewordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNs
YXNzIERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UgewogcHVibGljOgotICAgIHR5cGVkZWYg
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gU2luZ2xl
QWRhcHRlcjsKLSAgICB0eXBlZGVmIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
cjxFbGVtZW50VHlwZT4gSXRlcmF0b3I7CisgICAgdHlwZWRlZiBFbGVtZW50RGVzY2VuZGFudFJh
bmdlPEVsZW1lbnRUeXBlPiBTaW5nbGVBZGFwdGVyOworICAgIHR5cGVkZWYgRG91YmxlRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gSXRlcmF0b3I7CiAKLSAgICBEb3VibGVU
eXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKFNpbmdsZUFkYXB0ZXImJiwgU2lu
Z2xlQWRhcHRlciYmKTsKLSAgICBJdGVyYXRvciBiZWdpbigpOwotICAgIEl0ZXJhdG9yIGVuZCgp
OworICAgIERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UoU2luZ2xlQWRhcHRlciYmLCBTaW5n
bGVBZGFwdGVyJiYpOworICAgIEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CisgICAgSXRlcmF0b3Ig
ZW5kKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgc3RkOjpwYWlyPFNpbmdsZUFkYXB0ZXIsIFNp
bmdsZUFkYXB0ZXI+IG1fcGFpcjsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PiBjbGFzcyBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgewordGVtcGxhdGU8
dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IgewogcHVibGljOgotICAgIHR5cGVkZWYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiBTaW5nbGVJdGVyYXRvcjsKKyAgICB0eXBlZGVmIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IFNpbmdsZUl0ZXJhdG9yOwogICAgIHR5cGVkZWYgc3Rk
OjpwYWlyPEVsZW1lbnRUeXBlJiwgRWxlbWVudFR5cGUmPiBSZWZlcmVuY2VQcm94eTsKIAotICAg
IERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihTaW5nbGVJdGVyYXRvciYmLCBT
aW5nbGVJdGVyYXRvciYmKTsKKyAgICBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKFNp
bmdsZUl0ZXJhdG9yJiYsIFNpbmdsZUl0ZXJhdG9yJiYpOwogICAgIFJlZmVyZW5jZVByb3h5IG9w
ZXJhdG9yKigpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEb3VibGVUeXBlZEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJikgY29uc3Q7Ci0gICAgRG91
YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImKSBjb25z
dDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRG91YmxlRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvciYpIGNvbnN0OworICAgIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJh
dG9yKysoKTsKIAogcHJpdmF0ZToKICAgICBzdGQ6OnBhaXI8U2luZ2xlSXRlcmF0b3IsIFNpbmds
ZUl0ZXJhdG9yPiBtX3BhaXI7CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2Nl
bmRhbnRzT2ZUeXBlKENvbnRhaW5lck5vZGUmKTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPiBkZXNjZW5kYW50c09mVHlwZShjb25zdCBDb250YWluZXJOb2RlJik7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBFbGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gY2xh
c3MgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT4geworcHVibGljOgorICAgIEZpbHRlcmVkRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiwgRWxlbWVudFR5cGUqID0gbnVsbHB0cik7
CisgICAgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Cit9
OwogCi0vLyBUaGlzIG11c3Qgb25seSBiZSB1c2VkIHdoZW4gYm90aCBzZXRzIG9mIGRlc2NlbmRh
bnRzIGFyZSBrbm93biB0byBiZSB0aGUgc2FtZSBsZW5ndGguCi0vLyBJZiB0aGV5IGFyZSBkaWZm
ZXJlbnQgbGVuZ3RocywgdGhpcyB3aWxsIHN0b3Agd2hlbiB0aGUgc2hvcnRlciBvbmUgcmVhY2hl
cyB0aGUgZW5kLCBidXQgYWxzbyBhbiBhc3NlcnRpb24gd2lsbCBmYWlsLgotdGVtcGxhdGU8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+IERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFk
YXB0ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKENvbnRhaW5lck5vZGUmIGZpcnN0
Um9vdCwgQ29udGFpbmVyTm9kZSYgc2Vjb25kUm9vdCk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVt
ZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gY2xhc3MgRmlsdGVyZWRF
bGVtZW50RGVzY2VuZGFudFJhbmdlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBJdGVyYXRvciA9IEZp
bHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZSwgZmlsdGVyPjsKIAot
Ly8gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yCisgICAgRmlsdGVyZWRFbGVtZW50RGVz
Y2VuZGFudFJhbmdlKGNvbnN0IENvbnRhaW5lck5vZGUmKTsKKyAgICBJdGVyYXRvciBiZWdpbigp
IGNvbnN0OworICAgIEl0ZXJhdG9yIGVuZCgpIGNvbnN0OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5v
ZGUmIHJvb3QpCi0gICAgOiBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZyb290KQotewot
fQorICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5v
ZGUmIHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVudEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPigmcm9vdCwgY3VycmVudCkKLXsKLX0KK3ByaXZhdGU6CisgICAgY29uc3QgQ29u
dGFpbmVyTm9kZSYgbV9yb290OworfTsKKworLy8gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcgog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCitpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29u
dGFpbmVyTm9kZSYgcm9vdCkKKyAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnJv
b3QpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJz
ZU5leHQoKSk7CiB9CiAKLS8vIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yCi0K
IHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNj
ZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRD
b25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCi0gICAgOiBFbGVtZW50Q29u
c3RJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnJvb3QpCi0KK2lubGluZSBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBD
b250YWluZXJOb2RlJiByb290LCBFbGVtZW50VHlwZSogY3VycmVudCkKKyAgICA6IEVsZW1lbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT4oJnJvb3QsIGN1cnJlbnQpCiB7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
KGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KQot
ICAgIDogRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZyb290LCBjdXJyZW50KQor
aW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCiB7CisgICAgRWxlbWVu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0KCk7CisgICAgcmV0dXJuICp0aGlz
OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBUeXBlZEVsZW1lbnREZXNj
ZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQoraW5saW5lIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItLSgpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVs
ZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0KCkpOworICAgIEVs
ZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXMoKTsKKyAgICByZXR1
cm4gKnRoaXM7CiB9CiAKLS8vIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIK
Ky8vIEVsZW1lbnREZXNjZW5kYW50UmFuZ2UKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dFR5cGU+OjpUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5v
ZGUmIHJvb3QpCitpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZT46OkVs
ZW1lbnREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKICAgICA6IG1f
cm9vdChyb290KQogewogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxp
bmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4oKQoraW5saW5l
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50
UmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBUcmF2ZXJzYWw8RWxl
bWVudFR5cGU+OjpmaXJzdFdpdGhpbihtX3Jvb3QpKTsKKyAgICByZXR1cm4gRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+
OjpmaXJzdFdpdGhpbihtX3Jvb3QpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4g
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgp
CitpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudERl
c2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290KTsKKyAgICBy
ZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290KTsKIH0K
ICAgICAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBkZXNjZW5k
YW50KQoraW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1l
bnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBkZXNj
ZW5kYW50KSBjb25zdAogewogICAgIEFTU0VSVChkZXNjZW5kYW50LmlzRGVzY2VuZGFudE9mKG1f
cm9vdCkpOwotICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+KG1fcm9vdCwgJmRlc2NlbmRhbnQpOworICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsICZkZXNjZW5kYW50KTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRl
cjxFbGVtZW50VHlwZT46OmZyb20oRWxlbWVudCYgZGVzY2VuZGFudCkKK2lubGluZSBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVs
ZW1lbnRUeXBlPjo6ZnJvbShFbGVtZW50JiBkZXNjZW5kYW50KSBjb25zdAogewogICAgIEFTU0VS
VChkZXNjZW5kYW50LmlzRGVzY2VuZGFudE9mKG1fcm9vdCkpOwogICAgIGlmIChpczxFbGVtZW50
VHlwZT4oZGVzY2VuZGFudCkpCi0gICAgICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgZG93bmNhc3Q8RWxlbWVudFR5cGU+KCZkZXNj
ZW5kYW50KSk7CisgICAgICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPihtX3Jvb3QsIGRvd25jYXN0PEVsZW1lbnRUeXBlPigmZGVzY2VuZGFudCkpOwogICAg
IEVsZW1lbnRUeXBlKiBuZXh0ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dChkZXNjZW5k
YW50LCAmbV9yb290KTsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPihtX3Jvb3QsIG5leHQpOworICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIG5leHQpOwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudFR5cGUqIFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpmaXJzdCgpCitpbmxpbmUgRWxlbWVu
dFR5cGUqIEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpmaXJzdCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0aGluKG1fcm9v
dCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
VHlwZSogVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46
Omxhc3QoKQoraW5saW5lIEVsZW1lbnRUeXBlKiBFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1l
bnRUeXBlPjo6bGFzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlw
ZT46Omxhc3RXaXRoaW4obV9yb290KTsKIH0KIAotLy8gVHlwZWRFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3JBZGFwdGVyCisvLyBEb3VibGVFbGVtZW50RGVzY2VuZGFudFJhbmdlCiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpUeXBlZEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKLSAgICA6
IG1fcm9vdChyb290KQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBEb3Vi
bGVFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPjo6RG91YmxlRWxlbWVudERlc2Nl
bmRhbnRSYW5nZShTaW5nbGVBZGFwdGVyJiYgZmlyc3QsIFNpbmdsZUFkYXB0ZXImJiBzZWNvbmQp
CisgICAgOiBtX3BhaXIoV1RGTW92ZShmaXJzdCksIFdURk1vdmUoc2Vjb25kKSkKIHsKIH0KIAot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29u
c3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGF1dG8gRG91YmxlRWxlbWVudERlc2NlbmRhbnRS
YW5nZTxFbGVtZW50VHlwZT46OmJlZ2luKCkgY29uc3QgLT4gSXRlcmF0b3IKIHsKLSAgICByZXR1
cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9v
dCwgVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RXaXRoaW4obV9yb290KSk7CisgICAgcmV0
dXJuIEl0ZXJhdG9yKG1fcGFpci5maXJzdC5iZWdpbigpLCBtX3BhaXIuc2Vjb25kLmJlZ2luKCkp
OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGF1dG8gRG91YmxlRWxlbWVudERlc2Nl
bmRhbnRSYW5nZTxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0IC0+IEl0ZXJhdG9yCiB7Ci0gICAg
cmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiht
X3Jvb3QpOworICAgIHJldHVybiBJdGVyYXRvcihtX3BhaXIuZmlyc3QuZW5kKCksIG1fcGFpci5z
ZWNvbmQuZW5kKCkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxp
bmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVk
RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2lu
QXQoY29uc3QgRWxlbWVudFR5cGUmIGRlc2NlbmRhbnQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGRl
c2NlbmRhbnQuaXNEZXNjZW5kYW50T2YobV9yb290KSk7Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsICZkZXNjZW5kYW50
KTsKLX0KKy8vIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IKIAotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFk
YXB0ZXI8RWxlbWVudFR5cGU+Ojpmcm9tKGNvbnN0IEVsZW1lbnQmIGRlc2NlbmRhbnQpIGNvbnN0
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIERvdWJsZUVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yKFNpbmdsZUl0ZXJhdG9yJiYgZmlyc3QsIFNpbmdsZUl0ZXJhdG9yJiYgc2Vjb25kKQorICAg
IDogbV9wYWlyKFdURk1vdmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29uZCkpCiB7Ci0gICAgQVNTRVJU
KGRlc2NlbmRhbnQuaXNEZXNjZW5kYW50T2YobV9yb290KSk7Ci0gICAgaWYgKGlzPEVsZW1lbnRU
eXBlPihkZXNjZW5kYW50KSkKLSAgICAgICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIGRvd25jYXN0PEVsZW1lbnRUeXBlPigm
ZGVzY2VuZGFudCkpOwotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBuZXh0ID0gVHJhdmVyc2FsPEVs
ZW1lbnRUeXBlPjo6bmV4dChkZXNjZW5kYW50LCAmbV9yb290KTsKLSAgICByZXR1cm4gVHlwZWRF
bGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgbmV4dCk7
CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBjb25zdCBFbGVt
ZW50VHlwZSogVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1l
bnRUeXBlPjo6Zmlyc3QoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlu
bGluZSBhdXRvIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojpv
cGVyYXRvciooKSBjb25zdCAtPiBSZWZlcmVuY2VQcm94eQogewotICAgIHJldHVybiBUcmF2ZXJz
YWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpbihtX3Jvb3QpOworICAgIHJldHVybiB7ICptX3Bh
aXIuZmlyc3QsICptX3BhaXIuc2Vjb25kIH07CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWlubGluZSBjb25zdCBFbGVtZW50VHlwZSogVHlwZWRFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6bGFzdCgpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGJvb2wgRG91YmxlRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yPT0oY29uc3QgRG91YmxlRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFRyYXZlcnNhbDxF
bGVtZW50VHlwZT46Omxhc3RXaXRoaW4obV9yb290KTsKKyAgICBBU1NFUlQoKG1fcGFpci5maXJz
dCA9PSBvdGhlci5tX3BhaXIuZmlyc3QpID09IChtX3BhaXIuc2Vjb25kID09IG90aGVyLm1fcGFp
ci5zZWNvbmQpKTsKKyAgICByZXR1cm4gbV9wYWlyLmZpcnN0ID09IG90aGVyLm1fcGFpci5maXJz
dCB8fCBtX3BhaXIuc2Vjb25kID09IG90aGVyLm1fcGFpci5zZWNvbmQ7CiB9CiAKLS8vIERvdWJs
ZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIKLQotdGVtcGxhdGU8dHlwZW5h
bWUgRWxlbWVudFR5cGU+IGlubGluZSBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6RG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yQWRhcHRlcihTaW5nbGVBZGFwdGVyJiYgZmlyc3QsIFNpbmdsZUFkYXB0ZXImJiBzZWNvbmQp
Ci0gICAgOiBtX3BhaXIoV1RGTW92ZShmaXJzdCksIFdURk1vdmUoc2Vjb25kKSkKK3RlbXBsYXRl
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgYm9vbCBEb3VibGVFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBEb3VibGVFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKIHsKKyAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgYXV0byBE
b3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6
YmVnaW4oKSAtPiBJdGVyYXRvcgordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGlu
ZSBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRG91YmxlRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewotICAg
IHJldHVybiBJdGVyYXRvcihtX3BhaXIuZmlyc3QuYmVnaW4oKSwgbV9wYWlyLnNlY29uZC5iZWdp
bigpKTsKKyAgICArK21fcGFpci5maXJzdDsKKyAgICArK21fcGFpci5zZWNvbmQ7CisgICAgcmV0
dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGF1
dG8gRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlw
ZT46OmVuZCgpIC0+IEl0ZXJhdG9yCisvLyBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IKKwordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmlsdGVyKGNvbnN0IEVs
ZW1lbnRUeXBlJik+IEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZSwgZmlsdGVyPjo6RmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRh
aW5lck5vZGUmIHJvb3QsIEVsZW1lbnRUeXBlKiBlbGVtZW50KQorICAgIDogRWxlbWVudEl0ZXJh
dG9yPGNvbnN0IEVsZW1lbnRUeXBlPiB7ICZyb290LCBlbGVtZW50IH0KIHsKLSAgICByZXR1cm4g
SXRlcmF0b3IobV9wYWlyLmZpcnN0LmVuZCgpLCBtX3BhaXIuc2Vjb25kLmVuZCgpKTsKIH0KIAot
Ly8gRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yCi0KLXRlbXBsYXRlPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6RG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKFNp
bmdsZUl0ZXJhdG9yJiYgZmlyc3QsIFNpbmdsZUl0ZXJhdG9yJiYgc2Vjb25kKQotICAgIDogbV9w
YWlyKFdURk1vdmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29uZCkpCit0ZW1wbGF0ZTx0eXBlbmFtZSBF
bGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gRmlsdGVyZWRFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlLCBmaWx0ZXI+JiBGaWx0ZXJlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGUsIGZpbHRlcj46Om9wZXJhdG9yKysoKQog
eworICAgIGRvIHsKKyAgICAgICAgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVy
c2VOZXh0KCk7CisgICAgfSB3aGlsZSAoIUVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OmF0
RW5kKCkgJiYgIWZpbHRlcigqKnRoaXMpKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgYXV0byBEb3VibGVUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvciooKSBjb25zdCAtPiBSZWZl
cmVuY2VQcm94eQorLy8gRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlCisKK3RlbXBsYXRl
PHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBG
aWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGUsIGZpbHRlcj46OkZpbHRl
cmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZShjb25zdCBDb250YWluZXJOb2RlJiByb290KQorICAg
IDogbV9yb290IHsgcm9vdCB9CiB7Ci0gICAgcmV0dXJuIHsgKm1fcGFpci5maXJzdCwgKm1fcGFp
ci5zZWNvbmQgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBi
b29sIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9w
ZXJhdG9yPT0oY29uc3QgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhl
cikgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25z
dCBFbGVtZW50VHlwZSYpPiBhdXRvIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVt
ZW50VHlwZSwgZmlsdGVyPjo6YmVnaW4oKSBjb25zdCAtPiBJdGVyYXRvcgogewotICAgIEFTU0VS
VCgobV9wYWlyLmZpcnN0ID09IG90aGVyLm1fcGFpci5maXJzdCkgPT0gKG1fcGFpci5zZWNvbmQg
PT0gb3RoZXIubV9wYWlyLnNlY29uZCkpOwotICAgIHJldHVybiBtX3BhaXIuZmlyc3QgPT0gb3Ro
ZXIubV9wYWlyLmZpcnN0IHx8IG1fcGFpci5zZWNvbmQgPT0gb3RoZXIubV9wYWlyLnNlY29uZDsK
KyAgICByZXR1cm4geyBtX3Jvb3QsIGZpcnN0KCkgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
RWxlbWVudFR5cGU+IGlubGluZSBib29sIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIT0oY29uc3QgRG91YmxlVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRU
eXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBhdXRvIEZpbHRlcmVkRWxlbWVu
dERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZSwgZmlsdGVyPjo6ZW5kKCkgY29uc3QgLT4gSXRl
cmF0b3IKIHsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgcmV0dXJuIHsgbV9y
b290IH07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgRG91Ymxl
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRG91YmxlVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUm
KT4gRWxlbWVudFR5cGUqIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlw
ZSwgZmlsdGVyPjo6Zmlyc3QoKSBjb25zdAogewotICAgICsrbV9wYWlyLmZpcnN0OwotICAgICsr
bV9wYWlyLnNlY29uZDsKLSAgICByZXR1cm4gKnRoaXM7CisgICAgZm9yIChhdXRvKiBlbGVtZW50
ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RXaXRoaW4obV9yb290KTsgZWxlbWVudDsg
ZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHQoKmVsZW1lbnQsICZtX3Jvb3Qp
KSB7CisgICAgICAgIGlmIChmaWx0ZXIoKmVsZW1lbnQpKQorICAgICAgICAgICAgcmV0dXJuIGVs
ZW1lbnQ7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOwogfQogCiAvLyBTdGFuZGFsb25lIGZ1
bmN0aW9ucwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNP
ZlR5cGUoQ29udGFpbmVyTm9kZSYgcm9vdCkKK2lubGluZSBFbGVtZW50RGVzY2VuZGFudFJhbmdl
PEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWluZXJOb2RlJiByb290KQogewot
ICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPihyb290KTsKKyAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlw
ZT4ocm9vdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBU
eXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRl
c2NlbmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCitpbmxpbmUgRWxlbWVu
dERlc2NlbmRhbnRSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoY29u
c3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKIHsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihyb290KTsKKyAgICByZXR1cm4g
RWxlbWVudERlc2NlbmRhbnRSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4ocm9vdCk7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgRG91YmxlVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29u
dGFpbmVyTm9kZSYgZmlyc3RSb290LCBDb250YWluZXJOb2RlJiBzZWNvbmRSb290KQordGVtcGxh
dGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBEb3VibGVFbGVtZW50RGVzY2VuZGFudFJh
bmdlPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWluZXJOb2RlJiBmaXJzdFJv
b3QsIENvbnRhaW5lck5vZGUmIHNlY29uZFJvb3QpCiB7CiAgICAgcmV0dXJuIHsgZGVzY2VuZGFu
dHNPZlR5cGU8RWxlbWVudFR5cGU+KGZpcnN0Um9vdCksIGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1l
bnRUeXBlPihzZWNvbmRSb290KSB9OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlw
ZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gRmlsdGVyZWRFbGVtZW50RGVzY2Vu
ZGFudFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlLCBmaWx0ZXI+IGRlc2NlbmRhbnRzT2ZUeXBlKGNv
bnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCit7CisgICAgcmV0dXJuIHsgcm9vdCB9OworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMjkx
YmE2YzBjMDRjNGI2Njk4NDY2ZTEwNzUzNDg1OGU4NTlkYWEwMS4uZGIyMGIzMDEzMjA5NjQxNmMz
ZTEwOTQ2ZWQyMDEwZTU0ZmM5ZjkwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAt
NDksNiArNDksNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJF
bGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgpAQCAtNjEsNyArNjIsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxCUkVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5o
IgorI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJv
bEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MSW1hZ2VFbGVtZW50LmgiCkBAIC0zNDI2LDIzICszNDI3LDE4IEBAIHZvaWQgRWRpdG9y
Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShFbGVtZW50KiBlKQogCiB2b2lkIEVkaXRvcjo6YXBw
bHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGNvbGxlY3Rp
b24gPSBkb2N1bWVudCgpLmdldEVsZW1lbnRzQnlUYWdOYW1lKEhUTUxOYW1lczo6Ym9keVRhZy0+
bG9jYWxOYW1lKCkpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNvbGxlY3Rpb24tPmxlbmd0aCgp
OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgYXBw
bHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQoY29sbGVjdGlvbi0+aXRlbShpKSk7Ci19Ci0KLXZvaWQg
RWRpdG9yOjphcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudChFbGVtZW50KiBlbGVtZW50KSBjb25z
dAotewotICAgIEFTU0VSVCghZWxlbWVudCB8fCBpczxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkp
OwotICAgIGlmICghaXM8U3R5bGVkRWxlbWVudD4oZWxlbWVudCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00gd3JhcHBlciBzbyB3ZSBnZXQgdGhlIHNh
bWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCi0gICAgYXV0byYgc3R5bGUgPSBkb3duY2Fz
dDxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkuY3Nzb21TdHlsZSgpOwotICAgIHN0eWxlLnNldFBy
b3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkV3JhcCwgImJyZWFrLXdvcmQiLCBmYWxzZSk7
Ci0gICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2Rl
LCAic3BhY2UiLCBmYWxzZSk7Ci0gICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9w
ZXJ0eUxpbmVCcmVhaywgImFmdGVyLXdoaXRlLXNwYWNlIiwgZmFsc2UpOworICAgIC8vIEZJWE1F
OiBOb3QgY2xlYXIgaXQncyB2YWx1YWJsZSB0byBkbyB0aGlzIHRvIGFsbCBib2R5IGVsZW1lbnRz
IHJhdGhlciB0aGFuIGp1c3QgZG9pbmcgaXQgb24gdGhlIHNpbmdsZSBvbmUgcmV0dXJuZWQgYnkg
RG9jdW1lbnQ6OmJvZHkuCisgICAgVmVjdG9yPFJlZjxIVE1MQm9keUVsZW1lbnQ+PiBib2RpZXM7
CisgICAgZm9yIChhdXRvJiBib2R5IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTEJvZHlFbGVtZW50
Pihkb2N1bWVudCgpKSkKKyAgICAgICAgYm9kaWVzLmFwcGVuZChib2R5KTsKKworICAgIGZvciAo
YXV0byYgYm9keSA6IGJvZGllcykgeworICAgICAgICAvLyBNdXRhdGUgdXNpbmcgdGhlIENTU09N
IHdyYXBwZXIgc28gd2UgZ2V0IHRoZSBzYW1lIGV2ZW50IGJlaGF2aW9yIGFzIGEgc2NyaXB0Lgor
ICAgICAgICBhdXRvJiBzdHlsZSA9IGJvZHktPmNzc29tU3R5bGUoKTsKKyAgICAgICAgc3R5bGUu
c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdvcmRXcmFwLCAiYnJlYWstd29yZCIsIGZh
bHNlKTsKKyAgICAgICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dE5ic3BNb2RlLCAic3BhY2UiLCBmYWxzZSk7CisgICAgICAgIHN0eWxlLnNldFByb3BlcnR5SW50
ZXJuYWwoQ1NTUHJvcGVydHlMaW5lQnJlYWssICJhZnRlci13aGl0ZS1zcGFjZSIsIGZhbHNlKTsK
KyAgICB9CiB9CiAKIGJvb2wgRWRpdG9yOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0
LCBGaW5kT3B0aW9ucyBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggNmVhODky
MmZiMDc2MmRmZTAzMmYxMGY2ZGExYWZiZDZlMzE0ZWY4Yy4uNzA5ODFkNzQ3YTE4N2U4ZTc1ODEx
NWI2NjZkNzhjYTIzZDBkYTVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC00MzEsNyAr
NDMxLDYgQEAgcHVibGljOgogICAgIHZvaWQgY29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKEVkaXRp
bmdTdHlsZSYgLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6VW5zcGVjaWZpZWQpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKFN0eWxlUHJvcGVydGll
cyYgLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6VW5zcGVjaWZpZWQpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCkgY29uc3Q7Ci0gICAg
dm9pZCBhcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudChFbGVtZW50KikgY29uc3Q7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBJbnRSZWN0IGZpcnN0UmVjdEZvclJhbmdlKFJhbmdlKikgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlci5jcHAKaW5kZXggY2RlOWE3OGM4ZmU3ZGExMzFlMTFmNDRmNGJiMDkxYzVmZTZmMDJmMy4u
MWU3NjBkZTcyMzE2MDlkMDU5Mjk4MjhmN2UxM2YzZDIyYmEyNTJmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAg
LTcxLDcgKzcxLDcgQEAgcHVibGljOgogCiAgICAgICAgIFR5cGUgdHlwZSA9IFR5cGU6OkluY2x1
ZGU7CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBtYXRjaGluZ0VsZW1lbnQ7Ci0gICAgICAgIGZv
ciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnRMaW5lYWdlKHN0YXJ0aW5nRWxlbWVudC5nZXQoKSkp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbGluZWFnZU9mVHlwZTxFbGVtZW50Pigq
c3RhcnRpbmdFbGVtZW50KSkgewogICAgICAgICAgICAgaWYgKGF1dG8gdHlwZU9yTnVsbG9wdCA9
IHR5cGVGb3JFbGVtZW50KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgdHlwZSA9ICp0eXBl
T3JOdWxsb3B0OwogICAgICAgICAgICAgICAgIG1hdGNoaW5nRWxlbWVudCA9ICZlbGVtZW50OwpA
QCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAg
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50TGluZWFnZShzdGFydGluZ0VsZW1lbnQu
Z2V0KCkpKSB7CisgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxl
bWVudD4oKnN0YXJ0aW5nRWxlbWVudCkpIHsKICAgICAgICAgICAgIG1fY2FjaGUuc2V0KGVsZW1l
bnQsIHR5cGUpOwogICAgICAgICAgICAgaWYgKCZlbGVtZW50ID09IG1hdGNoaW5nRWxlbWVudCkK
ICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMzk0OTZiNjk4ODY2YzRhZWMz
Zjc3ZDRlNjYwYmU2ZDUwNzk5ZDlkZS4uZjdkYTBiZGI1OGE4ZGUwYmYzNjRlYmYzNDk0NDNiMmRl
YzgyNDhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIkRvY3VtZW50
TG9hZGVyLmgiCiAjaW1wb3J0ICJFZGl0b3IuaCIKICNpbXBvcnQgIkVkaXRvckNsaWVudC5oIgor
I2ltcG9ydCAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW1wb3J0ICJGaWxlLmgiCiAjaW1wb3J0ICJG
cmFtZS5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXIuaCIKQEAgLTU4LDcgKzU5LDYgQEAKICNpbXBv
cnQgIlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIgogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNp
bXBvcnQgIlNvY2tldFByb3ZpZGVyLmgiCi0jaW1wb3J0ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2
ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZVJl
c291cmNlV2ViUmVzb3VyY2VIYW5kbGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5k
ZXggMTU5NTAzNTFkOTA0NzRjN2M3ODhjMzNlNjdlN2RhODU4ODdmNmQ0Yy4uN2UyMmM1MjJhZGM4
ZTIyN2I2MzliY2VlNmRiNDZkMGEzOTI5M2Q1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cApAQCAtNzUsNyArNzUsNiBAQAogI2luY2x1ZGUgIlNvY2tldFByb3ZpZGVyLmgiCiAjaW5jbHVk
ZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCi0jaW5jbHVk
ZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNl
bGVjdGlvbi5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENv
bGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaApp
bmRleCA3OWY0NzdkNzRmMjI0ZTcxYjQ2YWJhNDc3ZjZjZGIwZGE4OWRmNDg1Li5jODkxYmUzZDdl
Zjk3OWJkMTU4Nzg4ZTQyYzhjNDA4YWI1YmJhZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9D
YWNoZWRIVE1MQ29sbGVjdGlvbi5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSAiQ29sbGVjdGlvblRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UcmF2ZXJzYWwu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oCmluZGV4IDY2ODI5
MzM4ZDBiMWQxYjBjYWI1MTE3N2YwMzg3MjBjMTkyZjcxOTYuLmYxMWU4ODFjYzM5ZDcxNGIwY2Qz
NDU2M2Y4Yzg2OGEzZmU2MjYxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29s
bGVjdGlvblRyYXZlcnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRy
YXZlcnNhbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI2LDggKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29sbGVj
dGlvblR5cGUuaCIKLSNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgotI2luY2x1ZGUg
IkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3Iu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNiwyNyArMzUsMjcgQEAgc3RydWN0IENv
bGxlY3Rpb25UcmF2ZXJzYWwgeyB9OwogCiB0ZW1wbGF0ZSA8Pgogc3RydWN0IENvbGxlY3Rpb25U
cmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPiB7Ci0gICAgdXNp
bmcgSXRlcmF0b3IgPSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOworICAgIHVzaW5nIEl0ZXJh
dG9yID0gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50PjsKIAotICAgIHN0YXRpYyBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGVuZChDb250YWluZXJOb2RlJikgeyByZXR1cm4gRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcigpOyB9CisgICAgc3RhdGljIEl0ZXJhdG9yIGVuZChDb250
YWluZXJOb2RlJiByb290Tm9kZSkgeyByZXR1cm4geyByb290Tm9kZSB9OyB9CiAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotICAgIHN0YXRpYyBFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yIGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlKTsKKyAgICBzdGF0aWMgSXRlcmF0b3IgYmVnaW4oY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENvbGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBs
YXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKKyAg
ICBzdGF0aWMgSXRlcmF0b3IgbGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJO
b2RlJiByb290Tm9kZSk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgotICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3Mm
LCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5z
aWduZWQmIHRyYXZlcnNlZENvdW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQo
Y29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50
LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENv
bGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENv
bGxlY3Rpb25DbGFzcyYsIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2ln
bmVkIGNvdW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxl
Y3Rpb25DbGFzcyYsIEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCk7CiB9OwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5lIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6
RGVzY2VuZGFudHM+OjpiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENv
bnRhaW5lck5vZGUmIHJvb3ROb2RlKQoraW5saW5lIGF1dG8gQ29sbGVjdGlvblRyYXZlcnNhbDxD
b2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+OjpiZWdpbihjb25zdCBDb2xsZWN0
aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSAtPiBJdGVyYXRv
cgogewotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBlbGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUp
OworICAgIGF1dG8gZGVzY2VuZGFudHMgPSBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihyb290
Tm9kZSk7CiAgICAgYXV0byBlbmQgPSBkZXNjZW5kYW50cy5lbmQoKTsKICAgICBmb3IgKGF1dG8g
aXQgPSBkZXNjZW5kYW50cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYg
KGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkgewpAQCAtNjksMTEgKzY4LDEwIEBAIGlu
bGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVj
dGlvblRyYXZlcnNhbFR5cGU6OkRlCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9u
Q2xhc3M+Ci1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDb2xsZWN0aW9uVHJhdmVy
c2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46Omxhc3QoY29uc3QgQ29s
bGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK2lubGlu
ZSBhdXRvIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2Nl
bmRhbnRzPjo6bGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5l
ck5vZGUmIHJvb3ROb2RlKSAtPiBJdGVyYXRvcgogewotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBl
bGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IgaW52YWxpZDsKLSAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5sYXN0KCk7IGl0ICE9
IGludmFsaWQ7IC0taXQpIHsKKyAgICBJdGVyYXRvciBpbnZhbGlkIHsgcm9vdE5vZGUgfTsKKyAg
ICBmb3IgKEl0ZXJhdG9yIGl0IHsgcm9vdE5vZGUsIEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RXaXRo
aW4ocm9vdE5vZGUpIH07IGl0ICE9IGludmFsaWQ7IC0taXQpIHsKICAgICAgICAgaWYgKGNvbGxl
Y3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkgewogICAgICAgICAgICAgLy8gRHJvcCBpdGVyYXRv
ciBhc3NlcnRpb25zIGJlY2F1c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmlu
ZS1ncmFpbmVkIGludmFsaWRhdGlvbiBzY2hlbWUuCiAgICAgICAgICAgICBpdC5kcm9wQXNzZXJ0
aW9ucygpOwpAQCAtODQsMTAgKzgyLDEwIEBAIGlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlCiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci1pbmxpbmUgdm9pZCBDb2xsZWN0
aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZl
cnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVy
c2VkQ291bnQpCitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2
ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9u
Q2xhc3MmIGNvbGxlY3Rpb24sIEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5z
aWduZWQmIHRyYXZlcnNlZENvdW50KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRN
YXRjaGVzKCpjdXJyZW50KSk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBpbnZhbGlk
OworICAgIEl0ZXJhdG9yIGludmFsaWQgeyBjb2xsZWN0aW9uLnJvb3ROb2RlKCkgfTsKICAgICBm
b3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2ZXJz
ZWRDb3VudCkgewogICAgICAgICBkbyB7CiAgICAgICAgICAgICArK2N1cnJlbnQ7CkBAIC05OCwx
MCArOTYsMTAgQEAgaW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJh
dmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUYKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29s
bGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VCYWNrd2FyZChjb25z
dCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Im
IGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KQoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNh
bDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUJhY2t3YXJk
KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVu
c2lnbmVkIGNvdW50KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpj
dXJyZW50KSk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBpbnZhbGlkOworICAgIEl0
ZXJhdG9yIGludmFsaWQgeyBjb2xsZWN0aW9uLnJvb3ROb2RlKCkgfTsKICAgICBmb3IgKDsgY291
bnQ7IC0tY291bnQpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgLS1jdXJyZW50OwpAQCAt
MTE1LDIzICsxMTMsMjMgQEAgdGVtcGxhdGUgPD4KIHN0cnVjdCBDb2xsZWN0aW9uVHJhdmVyc2Fs
PENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+IHsKICAgICB1c2luZyBJdGVy
YXRvciA9IEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+OwogCi0gICAgc3RhdGljIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGVuZChDb250YWluZXJOb2RlJiByb290Tm9kZSkgeyBy
ZXR1cm4gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4ocm9vdE5vZGUpOyB9CisgICAgc3Rh
dGljIEl0ZXJhdG9yIGVuZChDb250YWluZXJOb2RlJiByb290Tm9kZSkgeyByZXR1cm4gSXRlcmF0
b3Iocm9vdE5vZGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgotICAgIHN0YXRpYyBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBiZWdpbihjb25zdCBD
b2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CisgICAgc3RhdGljIEl0
ZXJhdG9yIGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlKTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3Rh
dGljIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGxhc3QoY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOworICAgIHN0YXRpYyBJdGVyYXRvciBsYXN0
KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKIAogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIHZvaWQgdHJh
dmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnRDaGlsZEl0ZXJhdG9y
PEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENv
dW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVy
c2VkQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLSAg
ICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVs
ZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCk7Cisg
ICAgc3RhdGljIHZvaWQgdHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBJ
dGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpOwogfTsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50
PiBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9u
bHk+OjpiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5v
ZGUmIHJvb3ROb2RlKQoraW5saW5lIGF1dG8gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9u
VHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6YmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNz
JiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkgLT4gSXRlcmF0b3IKIHsKICAg
ICBhdXRvIGNoaWxkcmVuID0gY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpOwogICAg
IGF1dG8gZW5kID0gY2hpbGRyZW4uZW5kKCk7CkBAIC0xNDYsMTEgKzE0NCwxMSBAQCBpbmxpbmUg
RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0
aW9uVHJhdmVyc2FsVHlwZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IENvbGxlY3Rpb25UcmF2ZXJz
YWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46Omxhc3QoY29uc3QgQ29s
bGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK2lubGlu
ZSBhdXRvIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxk
cmVuT25seT46Omxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWlu
ZXJOb2RlJiByb290Tm9kZSkgLT4gSXRlcmF0b3IKIHsKICAgICBhdXRvIGNoaWxkcmVuID0gY2hp
bGRyZW5PZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpOwotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9y
PEVsZW1lbnQ+IGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKLSAgICBFbGVtZW50Q2hp
bGRJdGVyYXRvcjxFbGVtZW50PiBsYXN0KHJvb3ROb2RlLCBjaGlsZHJlbi5sYXN0KCkpOworICAg
IEl0ZXJhdG9yIGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKKyAgICBJdGVyYXRvciBs
YXN0KHJvb3ROb2RlLCBjaGlsZHJlbi5sYXN0KCkpOwogICAgIGZvciAoYXV0byBpdCA9IGxhc3Q7
IGl0ICE9IGludmFsaWQ7IC0taXQpIHsKICAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVudE1h
dGNoZXMoKml0KSkgewogICAgICAgICAgICAgLy8gRHJvcCBpdGVyYXRvciBhc3NlcnRpb25zIGJl
Y2F1c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1ncmFpbmVkIGludmFs
aWRhdGlvbiBzY2hlbWUuCkBAIC0xNjIsMTAgKzE2MCwxMCBAQCBpbmxpbmUgRWxlbWVudENoaWxk
SXRlcmF0b3I8RWxlbWVudD4gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2Fs
VHlwZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5lIHZv
aWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5P
bmx5Pjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwg
RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1
bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpCitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2Fs
PENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2ZXJzZUZvcndhcmQo
Y29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBJdGVyYXRvciYgY3VycmVudCwgdW5z
aWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkKIHsKICAgICBBU1NFUlQoY29s
bGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwotICAgIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yPEVsZW1lbnQ+IGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKKyAgICBJdGVyYXRv
ciBpbnZhbGlkKGNvbGxlY3Rpb24ucm9vdE5vZGUoKSk7CiAgICAgZm9yICh0cmF2ZXJzZWRDb3Vu
dCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKICAgICAg
ICAgZG8gewogICAgICAgICAgICAgKytjdXJyZW50OwpAQCAtMTc2LDEwICsxNzQsMTAgQEAgaW5s
aW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hp
bGRyZW5Pbmx5Pjo6dHJhdmVyc2UKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25D
bGFzcz4KLWlubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNh
bFR5cGU6OkNoaWxkcmVuT25seT46OnRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiBjb2xsZWN0aW9uLCBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiYgY3VycmVudCwg
dW5zaWduZWQgY291bnQpCitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rp
b25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENv
bGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNv
dW50KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7
Ci0gICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gaW52YWxpZChjb2xsZWN0aW9uLnJv
b3ROb2RlKCkpOworICAgIEl0ZXJhdG9yIGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsK
ICAgICBmb3IgKDsgY291bnQ7IC0tY291bnQpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAg
LS1jdXJyZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCBiOTQ5
YTY5MWY2MGZkYzk5YzJkN2Y2N2ZkZjhiNzc1Mzg1OGUzOTI4Li43ZmYzMmU1OTk3ZTcwNmQ1Nzli
OTliMGMzZjI3ZmQ1ZWZiYmQyMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Nv
bG9ySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBl
LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgi
CiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJFbGVt
ZW50Q2hpbGRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiSFRNTERh
dGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCkBAIC0yODcsMTMg
KzI4Niw5IEBAIFZlY3RvcjxDb2xvcj4gQ29sb3JJbnB1dFR5cGU6OnN1Z2dlc3RlZENvbG9ycygp
IGNvbnN0CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgQVNTRVJUKGVsZW1lbnQo
KSk7CiAgICAgaWYgKGF1dG8gZGF0YUxpc3QgPSBlbGVtZW50KCktPmRhdGFMaXN0KCkpIHsKLSAg
ICAgICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBvcHRpb25zID0gZGF0YUxpc3QtPm9wdGlvbnMoKTsK
LSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gb3B0aW9ucy0+bGVuZ3RoKCk7Ci0gICAgICAgIHN1
Z2dlc3Rpb25zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSAhPSBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgYXV0byB2YWx1
ZSA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50Pigqb3B0aW9ucy0+aXRlbShpKSkudmFsdWUo
KTsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkU2ltcGxlQ29sb3IodmFsdWUpKQotICAgICAgICAg
ICAgICAgIHN1Z2dlc3Rpb25zLnVuY2hlY2tlZEFwcGVuZChDb2xvcih2YWx1ZSkpOworICAgICAg
ICBmb3IgKGF1dG8mIG9wdGlvbiA6IGRhdGFMaXN0LT5zdWdnZXN0aW9ucygpKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byBjb2xvciA9IHBhcnNlU2ltcGxlQ29sb3JWYWx1ZShvcHRpb24udmFsdWUo
KSkpCisgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMudW5jaGVja2VkQXBwZW5kKCpjb2xvcik7
CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcAppbmRleCAzODM4ZjFiZDdlNGU2N2Y1NTcw
NWUxMDBiM2Q2OTczZDAzODkzZTUwLi41MGM2ZDU4M2VmM2RlNjMxNzZiNDYzZTg2NzZhYjYwZTNj
ZjcxZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1M
Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb24uaCIKIAogI2luY2x1ZGUgIkhUTUxBcHBsZXRFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSFRNTERhdGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5o
IgpAQCAtNjQsMTIgKzY1LDggQEAgYm9vbCBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248dHJh
dmVyc2FsVHlwZT46OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIGVsZW1lbnQKICAgICBjYXNlIFNl
bGVjdGVkT3B0aW9uczoKICAgICAgICAgcmV0dXJuIGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVt
ZW50KSAmJiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkuc2VsZWN0ZWQoKTsK
ICAgICBjYXNlIERhdGFMaXN0T3B0aW9uczoKLSAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVt
ZW50PihlbGVtZW50KSkgewotICAgICAgICAgICAgSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbiA9
IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KTsKLSAgICAgICAgICAgIGlmICgh
b3B0aW9uLmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmICFvcHRpb24udmFsdWUoKS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAvLyBGSVhNRTogSFRNTCBzcGVjaWZpZXMgdGhpcyBjb2xsZWN0
aW9uIHNob3VsZCBpbmNsdWRlIGFsbCBvcHRpb24gZWxlbWVudCBkZXNjZW5kYW50cywgYW5kIG5v
dCBmaWx0ZXIgb3V0IG5vbi1zdWdnZXN0aW9uIG9uZXMuCisgICAgICAgIHJldHVybiBpczxIVE1M
T3B0aW9uRWxlbWVudD4oZWxlbWVudCkgJiYgSFRNTERhdGFMaXN0RWxlbWVudDo6aXNTdWdnZXN0
aW9uKGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSk7CiAgICAgY2FzZSBNYXBB
cmVhczoKICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShhcmVhVGFnKTsKICAgICBj
YXNlIERvY0FwcGxldHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxD
b2xsZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaWRs
CmluZGV4IDhmY2I2OGM2ODAwMDgzNzIzYTU4NThmMGNlNmRiYWFiNDc1MzljM2MuLmU1YjExOTJl
NDkyODg3MTNmMzMyMWJjYTBhN2MyOGE2NzgxYWFhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFsbENvbGxlY3Rpb24uaWRsCkBAIC0zMSw2ICszMSw2IEBACiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogCiAgICAgZ2V0dGVyIEVsZW1lbnQ/ICh1bnNp
Z25lZCBsb25nIGluZGV4KTsKLSAgICBbSW1wbGVtZW50ZWRBcz1uYW1lZEl0ZW1Pckl0ZW1zXSBn
ZXR0ZXIgKEhUTUxDb2xsZWN0aW9uIG9yIEVsZW1lbnQpPyBuYW1lZEl0ZW0oRE9NU3RyaW5nIG5h
bWUpOwotICAgIFtJbXBsZW1lbnRlZEFzPW5hbWVkT3JJbmRleGVkSXRlbU9ySXRlbXNdIGxlZ2Fj
eWNhbGxlciAoSFRNTENvbGxlY3Rpb24gb3IgRWxlbWVudCk/IGl0ZW0ob3B0aW9uYWwgRE9NU3Ry
aW5nIG5hbWVPckluZGV4KTsKKyAgICBbSW1wbGVtZW50ZWRBcz1uYW1lZEl0ZW1Pckl0ZW1zXSBn
ZXR0ZXIgKEhUTUxDb2xsZWN0aW9uIG9yIEVsZW1lbnQpPyBuYW1lZEl0ZW0oW1JlcXVpcmVzRXhp
c3RpbmdBdG9tU3RyaW5nXSBET01TdHJpbmcgbmFtZSk7CisgICAgW0ltcGxlbWVudGVkQXM9bmFt
ZWRPckluZGV4ZWRJdGVtT3JJdGVtc10gbGVnYWN5Y2FsbGVyIChIVE1MQ29sbGVjdGlvbiBvciBF
bGVtZW50KT8gaXRlbShvcHRpb25hbCBbQXRvbVN0cmluZ10gRE9NU3RyaW5nIG5hbWVPckluZGV4
KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaWRsCmluZGV4IDZkZmFlOGJk
ODk0YWNkYzJkMjYwNTU2NjI2YjRjNzNiZGIxYzlhNWIuLmM0NTJkODllYzliYjBlMDdlYjNlNDIz
MTIzYmYzMjE3MjA5NTY0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaWRs
CkBAIC0yNyw1ICsyNyw1IEBACiBdIGludGVyZmFjZSBIVE1MQ29sbGVjdGlvbiB7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIGdldHRlciBFbGVtZW50
PyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIGdldHRlciBFbGVtZW50PyBuYW1lZEl0
ZW0oRE9NU3RyaW5nIG5hbWUpOworICAgIGdldHRlciBFbGVtZW50PyBuYW1lZEl0ZW0oW1JlcXVp
cmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBET01TdHJpbmcgbmFtZSk7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAKaW5kZXggYmVjODdiMzZkMzgxNDBlMmMy
Y2VjMTJkNGEwYmRiZjM4NTQ4OGExOS4uODI2YzJjNTQ5MzUyZTU1N2E1YmI4OTU0Zjc2YTYxZjA1
MmY5NzUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3Bw
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTM3LDYgKzM3LDcgQEAKIAogI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlv
bi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50
LmgiCiAjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTm9k
ZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTY1LDYg
KzY2LDExIEBAIHZvaWQgSFRNTERhdGFMaXN0RWxlbWVudDo6b3B0aW9uRWxlbWVudENoaWxkcmVu
Q2hhbmdlZCgpCiAgICAgdHJlZVNjb3BlKCkuaWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KCkubm90
aWZ5T2JzZXJ2ZXJzKGdldElkQXR0cmlidXRlKCkpOwogfQogCitib29sIEhUTUxEYXRhTGlzdEVs
ZW1lbnQ6OmlzU3VnZ2VzdGlvbihjb25zdCBIVE1MT3B0aW9uRWxlbWVudCYgZGVzY2VuZGFudCkK
K3sKKyAgICByZXR1cm4gIWRlc2NlbmRhbnQuaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgIWRl
c2NlbmRhbnQudmFsdWUoKS5pc0VtcHR5KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEYXRhTGlzdEVsZW1lbnQuaAppbmRleCA4ZjcxZmE1YzkxMWM5YjUwYjJiODEwZDg1N2Y3
YWMzY2YyY2NlYzAxLi43Y2Y1NzFlMjlhNjcwY2RmMGNkNmRlNTUzNzUzYjdlYTk1MmQ4NjQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuaApAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzMsMTEgKzMz
LDEzIEBACiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKIAotI2luY2x1ZGUgIkhUTUxD
b2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRN
TEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBIVE1MQ29sbGVjdGlv
bjsKKwogY2xhc3MgSFRNTERhdGFMaXN0RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVu
dCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChIVE1MRGF0YUxpc3RFbGVtZW50KTsKIHB1
YmxpYzoKQEAgLTQ3LDYgKzQ5LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBvcHRpb25FbGVtZW50
Q2hpbGRyZW5DaGFuZ2VkKCk7CiAKKyAgICBzdGF0aWMgYm9vbCBpc1N1Z2dlc3Rpb24oY29uc3Qg
SFRNTE9wdGlvbkVsZW1lbnQmIGRlc2NlbmRhbnQpOworICAgIGF1dG8gc3VnZ2VzdGlvbnMoKSBj
b25zdCB7IHJldHVybiBkZXNjZW5kYW50c09mVHlwZTxIVE1MT3B0aW9uRWxlbWVudCwgaXNTdWdn
ZXN0aW9uPigqdGhpcyk7IH0KKwogcHJpdmF0ZToKICAgICBIVE1MRGF0YUxpc3RFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAKaW5kZXggNjhjZjU1M2FiNDkwYWU0ZGYwN2M3ZGZiNjJiN2RkZDA2NjkwNjBlYS4u
NzBmMWY3ZTA2N2U0MDIyMjNhZDk3YTRlNzdhMzAxMjFkZjI0OWNhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAx
OTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50
dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9y
Y2htb2JpbGUuY29tLykKICAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eS4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiSFRN
TEJESUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQlJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TEJ1dHRvbkVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50RmFjdG9yeS5oIgogI2luY2x1
ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKQEAgLTc2NywxNCArNzY2LDE2IEBAIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCogSFRNTEVsZW1lbnQ6OmFzRm9ybUFzc29jaWF0ZWRFbGVtZW50KCkKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGVsZW1lbnRBZmZlY3Rz
RGlyZWN0aW9uYWxpdHkoY29uc3QgTm9kZSYgbm9kZSkKK3N0YXRpYyBib29sIGVsZW1lbnRBZmZl
Y3RzRGlyZWN0aW9uYWxpdHkoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgaWYg
KCFpczxIVE1MRWxlbWVudD4obm9kZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjb25z
dCBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKTsKICAg
ICByZXR1cm4gaXM8SFRNTEJESUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGVsZW1lbnQuaGFzQXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkaXJBdHRyKTsKIH0KIAorc3RhdGljIGJvb2wgZWxl
bWVudEFmZmVjdHNEaXJlY3Rpb25hbGl0eShjb25zdCBOb2RlJiBub2RlKQoreworICAgIHJldHVy
biBpczxIVE1MRWxlbWVudD4obm9kZSkgJiYgZWxlbWVudEFmZmVjdHNEaXJlY3Rpb25hbGl0eShk
b3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSkpOworfQorCiBzdGF0aWMgdm9pZCBzZXRIYXNEaXJB
dXRvRmxhZ1JlY3Vyc2l2ZWx5KE5vZGUqIGZpcnN0Tm9kZSwgYm9vbCBmbGFnLCBOb2RlKiBsYXN0
Tm9kZSA9IG51bGxwdHIpCiB7CiAgICAgZmlyc3ROb2RlLT5zZXRTZWxmT3JBbmNlc3Rvckhhc0Rp
ckF1dG9BdHRyaWJ1dGUoZmxhZyk7CkBAIC04ODUsMTAgKzg4NiwxMCBAQCB2b2lkIEhUTUxFbGVt
ZW50OjphZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5n
ZWQoRWxlbWVudAogICAgIHNldEhhc0RpckF1dG9GbGFnUmVjdXJzaXZlbHkoY2hpbGQsIGZhbHNl
KTsKICAgICBpZiAoIXJlbmRlcmVyKCkgfHwgcmVuZGVyZXIoKS0+c3R5bGUoKS5kaXJlY3Rpb24o
KSA9PSB0ZXh0RGlyZWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgZm9yIChhdXRvJiBlbGVt
ZW50VG9BZGp1c3QgOiBlbGVtZW50TGluZWFnZSh0aGlzKSkgewotICAgICAgICBpZiAoZWxlbWVu
dEFmZmVjdHNEaXJlY3Rpb25hbGl0eShlbGVtZW50VG9BZGp1c3QpKSB7Ci0gICAgICAgICAgICBl
bGVtZW50VG9BZGp1c3QuaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwotICAgICAgICAgICAg
cmV0dXJuOworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8SFRNTEVsZW1l
bnQ+KCp0aGlzKSkgeworICAgICAgICBpZiAoZWxlbWVudEFmZmVjdHNEaXJlY3Rpb25hbGl0eShl
bGVtZW50KSkgeworICAgICAgICAgICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVl
KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuaAppbmRleCAzOTVkYjFlNjJlZWRkMWQ5MDBlOWU3YzNlYzg4OGNiMDBjYjJh
NGEzLi43ZTA3NGViNjEyODk3NjI4OTBlMTFlODFhZmNkNmEwOTNlN2ZkZDhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5oCkBAIC0yMiwxOSArMjIsMTcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJJbnB1dE1vZGUuaCIKKyNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCisKICNp
ZiBFTkFCTEUoQVVUT0NBUElUQUxJWkUpCiAjaW5jbHVkZSAiQXV0b2NhcGl0YWxpemUuaCIKICNl
bmRpZgogCi0jaW5jbHVkZSAiSW5wdXRNb2RlLmgiCi0jaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5o
IgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFz
cyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ7CiBjbGFzcyBGb3JtTmFtZWRJdGVtOwotY2xhc3MgSFRN
TENvbGxlY3Rpb247CiBjbGFzcyBIVE1MRm9ybUVsZW1lbnQ7CiAKIGVudW0gY2xhc3MgRW50ZXJL
ZXlIaW50IDogdWludDhfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVt
YmVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
CmluZGV4IDkxNzAxZTE0NDRlZjI4NjA4NWY3MjEyNDBiZWYwYWI2YzI3NjE2MTIuLjIxY2I5ZDkz
YzlhMzQwYTNmYjNjYjE2NjIwMGNkNjgxMDQwZTVhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5
OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRp
IEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIFN0ZWZh
biBTY2hpbWFuc2tpICgxU3RlaW5AZ214LmRlKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC02NiwxNSArNjYsMTAgQEAgUmVmPEhUTUxF
bWJlZEVsZW1lbnQ+IEhUTUxFbWJlZEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQp
CiAKIHN0YXRpYyBpbmxpbmUgUmVuZGVyV2lkZ2V0KiBmaW5kV2lkZ2V0UmVuZGVyZXIoY29uc3Qg
Tm9kZSogbm9kZSkKIHsKLSAgICBpZiAoIW5vZGUtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgZG8g
ewotICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgfSB3aGls
ZSAobm9kZSAmJiAhaXM8SFRNTE9iamVjdEVsZW1lbnQ+KCpub2RlKSk7Ci0gICAgfQotCisgICAg
aWYgKCFub2RlLT5yZW5kZXJlcigpKQorICAgICAgICBub2RlID0gYW5jZXN0b3JzT2ZUeXBlPEhU
TUxPYmplY3RFbGVtZW50Pigqbm9kZSkuZmlyc3QoKTsKICAgICBpZiAobm9kZSAmJiBpczxSZW5k
ZXJXaWRnZXQ+KG5vZGUtPnJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVu
ZGVyV2lkZ2V0Pihub2RlLT5yZW5kZXJlcigpKTsKLQogICAgIHJldHVybiBudWxscHRyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRl
eCBkNjExYmMxYjIyNTFmZjhmMDg4NDRmNjhkNDI0ZmI5ZGM5NjY4MmY0Li41MmUwZmM4MzQ5M2Ri
NDY0ZGI2ZDc5MjIwMTI1ZDk5YWNjMDA5NmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQg
KEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5
OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAw
MSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNC0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykg
MjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhUTUxEYXRhTGlzdEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1F
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgpAQCAtNDEyLDE0ICs0MTMs
OCBAQCBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6Om1hdGNoZXNJbnZhbGlkUHNldWRvQ2xh
c3MoKSBjb25zdAogYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpjb21wdXRlV2lsbFZhbGlk
YXRlKCkgY29uc3QKIHsKICAgICBpZiAobV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUgPT0gVW5rbm93
bikgewotICAgICAgICBmb3IgKENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gcGFyZW50Tm9kZSgp
OyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAg
ICAgICBpZiAoYW5jZXN0b3ItPmhhc1RhZ05hbWUoZGF0YWxpc3RUYWcpKSB7Ci0gICAgICAgICAg
ICAgICAgbV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUgPSBJbnNpZGVEYXRhTGlzdDsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAobV9k
YXRhTGlzdEFuY2VzdG9yU3RhdGUgPT0gVW5rbm93bikKLSAgICAgICAgICAgIG1fZGF0YUxpc3RB
bmNlc3RvclN0YXRlID0gTm90SW5zaWRlRGF0YUxpc3Q7CisgICAgICAgIG1fZGF0YUxpc3RBbmNl
c3RvclN0YXRlID0gYW5jZXN0b3JzT2ZUeXBlPEhUTUxEYXRhTGlzdEVsZW1lbnQ+KCp0aGlzKS5m
aXJzdCgpCisgICAgICAgICAgICA/IEluc2lkZURhdGFMaXN0IDogTm90SW5zaWRlRGF0YUxpc3Q7
CiAgICAgfQogICAgIHJldHVybiBtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9PSBOb3RJbnNpZGVE
YXRhTGlzdCAmJiAhaXNEaXNhYmxlZE9yUmVhZE9ubHkoKTsKIH0KQEAgLTY0NSwxNSArNjQwLDYg
QEAgQXV0b2NhcGl0YWxpemVUeXBlIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF1dG9jYXBpdGFs
aXplVHlwZSgpIGNvbnN0CiAKICNlbmRpZgogCi1IVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50OjplbmNsb3NpbmdGb3JtQ29udHJvbEVsZW1lbnQoTm9kZSogbm9k
ZSkKLXsKLSAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgewotICAg
ICAgICBpZiAoaXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oKm5vZGUpKQotICAgICAgICAgICAg
cmV0dXJuIGRvd25jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KG5vZGUpOwotICAgIH0KLSAg
ICByZXR1cm4gbnVsbHB0cjsKLX0KLQogU3RyaW5nIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF1
dG9jb21wbGV0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGF1dG9maWxsRGF0YSgpLmlkbEV4cG9z
ZWRWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgK
aW5kZXggNjEzNDBiZmE3M2EzYTk2NmJhNjM3YWQ0NGY1NmNiZDhmY2ZjOTZmMC4uM2FkYjMxMWM3
YTYxZDc4ZDgwYjk5MGExNTY5ZTY4MWQwZjY1MzAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTExNiw4ICsxMTYsNiBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBoYXNBdXRvZm9jdXNlZCgpIHsgcmV0dXJuIG1faGFzQXV0b2ZvY3VzZWQ7IH0KICAg
ICB2b2lkIHNldEF1dG9mb2N1c2VkKCkgeyBtX2hhc0F1dG9mb2N1c2VkID0gdHJ1ZTsgfQogCi0g
ICAgc3RhdGljIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGVuY2xvc2luZ0Zvcm1Db250cm9sRWxl
bWVudChOb2RlKik7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgYXV0b2NvbXBsZXRlKCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBdXRvY29tcGxldGUoY29uc3QgU3Ry
aW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5pZGwKaW5kZXggNDNjODM1OTk4YjQwMDU5ZTMzMjdjZTZkNTllMGY4MmU2ZmRkMTgy
My4uNGQ4MWZmZDAzNDU3NDc3Y2JhMjRkMmQzM2RiYjkzMWI0OGIzNWVlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwKQEAgLTIy
LDUgKzIyLDUgQEAKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxPd25lck5vZGVSb290LAog
XSBpbnRlcmZhY2UgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24gOiBIVE1MQ29sbGVjdGlvbiB7
CiAgICAgZ2V0dGVyIEhUTUxFbGVtZW50PyAodW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW0lt
cGxlbWVudGVkQXM9bmFtZWRJdGVtT3JJdGVtc10gZ2V0dGVyIChSYWRpb05vZGVMaXN0IG9yIEVs
ZW1lbnQpPyBuYW1lZEl0ZW0oRE9NU3RyaW5nIG5hbWUpOyAvLyBzaGFkb3dzIGluaGVyaXRlZCBu
YW1lZEl0ZW0oKQorICAgIFtJbXBsZW1lbnRlZEFzPW5hbWVkSXRlbU9ySXRlbXNdIGdldHRlciAo
UmFkaW9Ob2RlTGlzdCBvciBFbGVtZW50KT8gbmFtZWRJdGVtKFtSZXF1aXJlc0V4aXN0aW5nQXRv
bVN0cmluZ10gRE9NU3RyaW5nIG5hbWUpOyAvLyBzaGFkb3dzIGluaGVyaXRlZCBuYW1lZEl0ZW0o
KQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCmluZGV4
IDgzYWM2ODBkOTA0ODc1NzE1MGI1YjZlYjM2YjY0ZDc4OGYwZWJjNzAuLmU2YWU2ZjY4ZDg3OTg1
YWY5ZmY1NGViNWQ2NzUzM2E1YjVhYjFmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJIVE1MQm9k
eUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxG
cmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJMZW5ndGgu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGRmZTE5MGE1
OWRkZDFlNmFkMTUzMGM1ZjIxOTRiMDg1N2FjN2I1ZTYuLmIzZGU4YTdkOGE0ZDYwYmFhMzA2NGQ4
Y2Q5OGE0N2VhZTZkZjA2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChr
bm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2
aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxl
ckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFr
b3YgKGFwQG55cG9wLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIChz
YW1Ad2Via2l0Lm9yZykKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgpAQCAtMjEwNCw2ICsyMTA0LDcgQEAgUmVuZGVyU3R5bGUgSFRNTElucHV0
RWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQog
fQogCiAjaWYgRU5BQkxFKERBVEVfQU5EX1RJTUVfSU5QVVRfVFlQRVMpCisKIGJvb2wgSFRNTElu
cHV0RWxlbWVudDo6c2V0dXBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzKERhdGVUaW1lQ2hvb3Nl
clBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgaWYgKCFkb2N1bWVudCgpLnZpZXcoKSkK
QEAgLTIxMzYsMjAgKzIxMzcsMjQgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzZXR1cERhdGVU
aW1lQ2hvb3NlclBhcmFtZXRlcnMoRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyYKICAgICAgICAg
cGFyYW1ldGVycy5hbmNob3JSZWN0SW5Sb290VmlldyA9IEludFJlY3QoKTsKICAgICBwYXJhbWV0
ZXJzLmN1cnJlbnRWYWx1ZSA9IHZhbHVlKCk7CiAgICAgcGFyYW1ldGVycy5pc0FuY2hvckVsZW1l
bnRSVEwgPSBjb21wdXRlZFN0eWxlKCktPmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJU
TDsKKwogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIGlmIChhdXRvIGRhdGFMaXN0
ID0gdGhpcy0+ZGF0YUxpc3QoKSkgewotICAgICAgICBSZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlv
bnMgPSBkYXRhTGlzdC0+b3B0aW9ucygpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBS
ZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IG9wdGlvbiA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVt
ZW50PihvcHRpb25zLT5pdGVtKGkpKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIWlzVmFsaWRW
YWx1ZShvcHRpb24tPnZhbHVlKCkpKQorICAgICAgICBmb3IgKGF1dG8mIG9wdGlvbiA6IGRhdGFM
aXN0LT5zdWdnZXN0aW9ucygpKSB7CisgICAgICAgICAgICBhdXRvIGxhYmVsID0gb3B0aW9uLmxh
YmVsKCk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gb3B0aW9uLnZhbHVlKCk7CisgICAgICAg
ICAgICBpZiAoIWlzVmFsaWRWYWx1ZSh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICBwYXJhbWV0ZXJzLnN1Z2dlc3Rpb25WYWx1ZXMuYXBwZW5kKHNhbml0aXpl
VmFsdWUob3B0aW9uLT52YWx1ZSgpKSk7Ci0gICAgICAgICAgICBwYXJhbWV0ZXJzLmxvY2FsaXpl
ZFN1Z2dlc3Rpb25WYWx1ZXMuYXBwZW5kKGxvY2FsaXplVmFsdWUob3B0aW9uLT52YWx1ZSgpKSk7
Ci0gICAgICAgICAgICBwYXJhbWV0ZXJzLnN1Z2dlc3Rpb25MYWJlbHMuYXBwZW5kKG9wdGlvbi0+
dmFsdWUoKSA9PSBvcHRpb24tPmxhYmVsKCkgPyBTdHJpbmcoKSA6IG9wdGlvbi0+bGFiZWwoKSk7
CisgICAgICAgICAgICBwYXJhbWV0ZXJzLnN1Z2dlc3Rpb25WYWx1ZXMuYXBwZW5kKHNhbml0aXpl
VmFsdWUodmFsdWUpKTsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMubG9jYWxpemVkU3VnZ2VzdGlv
blZhbHVlcy5hcHBlbmQobG9jYWxpemVWYWx1ZSh2YWx1ZSkpOworICAgICAgICAgICAgcGFyYW1l
dGVycy5zdWdnZXN0aW9uTGFiZWxzLmFwcGVuZCh2YWx1ZSA9PSBsYWJlbCA/IFN0cmluZygpIDog
bGFiZWwpOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCisKICAgICByZXR1cm4gdHJ1ZTsKIH0K
KwogI2VuZGlmCiAKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6Y2Fwc0xvY2tTdGF0ZU1heUhhdmVD
aGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCmlu
ZGV4IDllOGNmZmRiOTFhNTEwOTA0Mjg0NTllZmZlODY1YTQ4ZTA3ZjQ4MDguLjY3NjhmZTEyYTFl
NWU3MjIwYzUzNjkwZmU2Zjk3MzU3Y2FlN2NkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0R3JvdXBFbGVtZW50LmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykg
MTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFu
dHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERp
cmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA2
IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xMDks
MTQgKzEwOSw3IEBAIFN0cmluZyBIVE1MT3B0R3JvdXBFbGVtZW50Ojpncm91cExhYmVsVGV4dCgp
IGNvbnN0CiAgICAgCiBIVE1MU2VsZWN0RWxlbWVudCogSFRNTE9wdEdyb3VwRWxlbWVudDo6b3du
ZXJTZWxlY3RFbGVtZW50KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gc2Vs
ZWN0ID0gcGFyZW50Tm9kZSgpOwotICAgIHdoaWxlIChzZWxlY3QgJiYgIWlzPEhUTUxTZWxlY3RF
bGVtZW50Pigqc2VsZWN0KSkKLSAgICAgICAgc2VsZWN0ID0gc2VsZWN0LT5wYXJlbnROb2RlKCk7
Ci0gICAgCi0gICAgaWYgKCFzZWxlY3QpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAot
ICAgIHJldHVybiBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oc2VsZWN0LmdldCgpKTsKKyAg
ICByZXR1cm4gY29uc3RfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KGFuY2VzdG9yc09mVHlwZTxI
VE1MU2VsZWN0RWxlbWVudD4oKnRoaXMpLmZpcnN0KCkpOwogfQogCiB2b2lkIEhUTUxPcHRHcm91
cEVsZW1lbnQ6OmFjY2Vzc0tleUFjdGlvbihib29sKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25FbGVtZW50LmNwcAppbmRleCBjM2RkMzBkNWRjNjJiZjgzMTcwOWU1NzAwNDY4OGQ0YTg4
YjNlMmE2Li4zYzAxZTY5NWFkMTAyNjc3YWFmZjAyZGIwZjIxMWRiODhmNjkyODQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcApAQCAtMyw3ICszLDcgQEAKICAq
ICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAq
ICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKICAqICAg
ICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCkBAIC0xNjYsOCArMTY2LDggQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0
cmkKIHsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICBpZiAobmFtZSA9PSB2YWx1
ZUF0dHIpIHsKLSAgICAgICAgaWYgKFJlZlB0cjxIVE1MRGF0YUxpc3RFbGVtZW50PiBkYXRhTGlz
dCA9IG93bmVyRGF0YUxpc3RFbGVtZW50KCkpCi0gICAgICAgICAgICBkYXRhTGlzdC0+b3B0aW9u
RWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOworICAgICAgICBmb3IgKGF1dG8mIGRhdGFMaXN0IDog
YW5jZXN0b3JzT2ZUeXBlPEhUTUxEYXRhTGlzdEVsZW1lbnQ+KCp0aGlzKSkKKyAgICAgICAgICAg
IGRhdGFMaXN0Lm9wdGlvbkVsZW1lbnRDaGlsZHJlbkNoYW5nZWQoKTsKICAgICB9IGVsc2UKICNl
bmRpZgogICAgIGlmIChuYW1lID09IGRpc2FibGVkQXR0cikgewpAQCAtMjM4LDM5ICsyMzgsMTcg
QEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6c2V0U2VsZWN0ZWRTdGF0ZShib29sIHNlbGVjdGVk
KQogdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hh
bmdlJiBjaGFuZ2UpCiB7CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAgaWYgKFJl
ZlB0cjxIVE1MRGF0YUxpc3RFbGVtZW50PiBkYXRhTGlzdCA9IG93bmVyRGF0YUxpc3RFbGVtZW50
KCkpCi0gICAgICAgIGRhdGFMaXN0LT5vcHRpb25FbGVtZW50Q2hpbGRyZW5DaGFuZ2VkKCk7Ci0g
ICAgZWxzZQorICAgIGZvciAoYXV0byYgZGF0YUxpc3QgOiBhbmNlc3RvcnNPZlR5cGU8SFRNTERh
dGFMaXN0RWxlbWVudD4oKnRoaXMpKQorICAgICAgICBkYXRhTGlzdC5vcHRpb25FbGVtZW50Q2hp
bGRyZW5DaGFuZ2VkKCk7CiAjZW5kaWYKICAgICBpZiAoUmVmUHRyPEhUTUxTZWxlY3RFbGVtZW50
PiBzZWxlY3QgPSBvd25lclNlbGVjdEVsZW1lbnQoKSkKICAgICAgICAgc2VsZWN0LT5vcHRpb25F
bGVtZW50Q2hpbGRyZW5DaGFuZ2VkKCk7CiAgICAgSFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZChjaGFuZ2UpOwogfQogCi0jaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi1IVE1MRGF0YUxp
c3RFbGVtZW50KiBIVE1MT3B0aW9uRWxlbWVudDo6b3duZXJEYXRhTGlzdEVsZW1lbnQoKSBjb25z
dAotewotICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBkYXRhbGlzdCA9IHBhcmVudE5vZGUoKTsK
LSAgICB3aGlsZSAoZGF0YWxpc3QgJiYgIWlzPEhUTUxEYXRhTGlzdEVsZW1lbnQ+KCpkYXRhbGlz
dCkpCi0gICAgICAgIGRhdGFsaXN0ID0gZGF0YWxpc3QtPnBhcmVudE5vZGUoKTsKLQotICAgIGlm
ICghZGF0YWxpc3QpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGRvd25j
YXN0PEhUTUxEYXRhTGlzdEVsZW1lbnQ+KGRhdGFsaXN0LmdldCgpKTsKLX0KLSNlbmRpZgotCiBI
VE1MU2VsZWN0RWxlbWVudCogSFRNTE9wdGlvbkVsZW1lbnQ6Om93bmVyU2VsZWN0RWxlbWVudCgp
IGNvbnN0CiB7Ci0gICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHNlbGVjdCA9IHBhcmVudE5vZGUo
KTsKLSAgICB3aGlsZSAoc2VsZWN0ICYmICFpczxIVE1MU2VsZWN0RWxlbWVudD4oKnNlbGVjdCkp
Ci0gICAgICAgIHNlbGVjdCA9IHNlbGVjdC0+cGFyZW50Tm9kZSgpOwotCi0gICAgaWYgKCFzZWxl
Y3QpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxT
ZWxlY3RFbGVtZW50PihzZWxlY3QuZ2V0KCkpOworICAgIHJldHVybiBjb25zdF9jYXN0PEhUTUxT
ZWxlY3RFbGVtZW50Kj4oYW5jZXN0b3JzT2ZUeXBlPEhUTUxTZWxlY3RFbGVtZW50PigqdGhpcyku
Zmlyc3QoKSk7CiB9CiAKIFN0cmluZyBIVE1MT3B0aW9uRWxlbWVudDo6bGFiZWwoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCmluZGV4IGYwZDk0YzhhNmI1ZjMw
ODMzNGVhYTExZGE5ZTQwMjFiNWMwZTU3ZTYuLjkxYzVhYmM3ZTAxN2MxMWZhMTMyZmQzMWYwMWJl
MWUzMjRlMjZiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKQEAg
LTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2Rl
Lm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2Rl
Lm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9y
ZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAxMCwgMjAxMSwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yOCw3ICsy
OCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTERhdGFMaXN0RWxlbWVu
dDsKIGNsYXNzIEhUTUxTZWxlY3RFbGVtZW50OwogCiBjbGFzcyBIVE1MT3B0aW9uRWxlbWVudCBm
aW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CkBAIC00OSw5ICs0OCw2IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIHNlbGVjdGVkKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRTZWxlY3RlZChib29sKTsKIAotI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotICAg
IFdFQkNPUkVfRVhQT1JUIEhUTUxEYXRhTGlzdEVsZW1lbnQqIG93bmVyRGF0YUxpc3RFbGVtZW50
KCkgY29uc3Q7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBIVE1MU2VsZWN0RWxlbWVudCog
b3duZXJTZWxlY3RFbGVtZW50KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
bGFiZWwoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLmlkbAppbmRleCA2ZTlmYTRkMGUxNjE2MGRhMmI3Y2FiODBkMDJhOTdhYmQ4MDYzYjA1Li5m
MWM0NzdlNDg2OGUwZmU0MDU5ZmRmYzYwNTFiZWMzYTFmMmM1Y2VjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsCkBAIC0zMiw1ICszMiw1IEBACiAK
ICAgICAvLyBGSVhNRTogQ2FuIHRoZXNlIGp1c3QgYmUgaW5oZXJpdGVkIGZyb20gSFRNTENvbGxl
Y3Rpb24gbGlrZSBpbiB0aGUgc3BlYz8KICAgICBnZXR0ZXIgSFRNTE9wdGlvbkVsZW1lbnQ/IGl0
ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgZ2V0dGVyIEhUTUxPcHRpb25FbGVtZW50PyBu
YW1lZEl0ZW0oRE9NU3RyaW5nIG5hbWUpOworICAgIGdldHRlciBIVE1MT3B0aW9uRWxlbWVudD8g
bmFtZWRJdGVtKFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gRE9NU3RyaW5nIG5hbWUpOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmlu
ZGV4IDU2MjMxYTUwYjJhNDYwZTRhZDBiODdmMGQ4YjRhODA5NTY0NDZjYTIuLjBmYTNjNjlkNGU5
MjZiNzI5YmU3ZTVmNjMwMmJiMDIxNDc2NDliMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUg
IkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbW1vblZNLmgiCiAjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5LmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXJDbGllbnQuaCIKQEAgLTUwLDcgKzUxLDYgQEAKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAj
aW5jbHVkZSAiU3R5bGVUcmVlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdWJmcmFtZUxvYWRlci5o
IgotI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUg
IlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ2F0Y2hT
Y29wZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0SW5saW5lcy5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbAppbmRleCA2MWVlNTk0
ZTYwMzc3OTBlYWRmYzhhZmQxYzE1ZWNjNDZmMzhjNmM5Li5kM2FlZGE5MDM1NTM4ZDk2ZjIyYmUx
YTU0MGU3MzYxMDM5ZWVlYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmlkbApAQCAtMzYsNyArMzYsNyBAQAogICAgIC8qIFtTYW1lT2JqZWN0XSAqLyByZWFkb25s
eSBhdHRyaWJ1dGUgSFRNTE9wdGlvbnNDb2xsZWN0aW9uIG9wdGlvbnM7CiAgICAgW0NFUmVhY3Rp
b25zXSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgZ2V0dGVyIEhUTUxPcHRp
b25FbGVtZW50PyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOyAvLyBGSVhNRTogVGhlIHNwZWMg
aGFzIHRoaXMgcmV0dXJuaW5nIEVsZW1lbnQ/LgotICAgIEhUTUxPcHRpb25FbGVtZW50PyBuYW1l
ZEl0ZW0oRE9NU3RyaW5nIG5hbWUpOworICAgIEhUTUxPcHRpb25FbGVtZW50PyBuYW1lZEl0ZW0o
W1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBET01TdHJpbmcgbmFtZSk7CiAgICAgW0NFUmVh
Y3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBhZGQoKEhUTUxPcHRpb25FbGVtZW50IG9y
IEhUTUxPcHRHcm91cEVsZW1lbnQpIGVsZW1lbnQsIG9wdGlvbmFsIChIVE1MRWxlbWVudCBvciBs
b25nKT8gYmVmb3JlID0gbnVsbCk7CiAgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCByZW1vdmUoKTsgLy8gQ2hpbGROb2RlIG92ZXJsb2FkCiAgICAgW0NFUmVhY3Rpb25z
XSB2b2lkIHJlbW92ZShsb25nIGluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVDZWxsRWxlbWVudC5jcHAKaW5kZXggZmJmOGY3MzNlNDgwMDA0OTFlYWQ4NjE2NzNiODYzMTky
M2Y5OTE4Ni4uYTYwMDM4ZmU5NGYyOThiMDhlYTRhYjZlZGFjZDdkMTU1N2FhODc1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKQEAgLTEzMSw5ICsx
MzEsOSBAQCB2b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tUwogCiBjb25zdCBTdHlsZVByb3BlcnRpZXMq
IEhUTUxUYWJsZUNlbGxFbGVtZW50OjphZGRpdGlvbmFsUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5
bGUoKSBjb25zdAogewotICAgIGlmIChSZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gdGFibGUgPSBm
aW5kUGFyZW50VGFibGUoKSkKKyAgICBpZiAoYXV0byB0YWJsZSA9IGZpbmRQYXJlbnRUYWJsZSgp
KQogICAgICAgICByZXR1cm4gdGFibGUtPmFkZGl0aW9uYWxDZWxsU3R5bGUoKTsKLSAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogYm9vbCBIVE1MVGFibGVDZWxsRWxlbWVu
dDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcAppbmRleCA3MjhiNWYzZDJi
NTUyM2IwNGIzOTlmMmNjNGI1NWFhNGY4YjFmYzc0Li5mNGQ0NDc1ODExZThhNDBjYTMyYTY3YmNm
NmIyMTZjMjUzYTdlN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUNvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxl
bWVudC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBIVE1MVGFi
bGVDb2xFbGVtZW50OjphZGRpdGlvbmFsUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUKIHsKICAg
ICBpZiAoIWhhc1RhZ05hbWUoY29sZ3JvdXBUYWcpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBpZiAoUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IHRhYmxlID0gZmluZFBhcmVudFRhYmxl
KCkpCisgICAgaWYgKGF1dG8gdGFibGUgPSBmaW5kUGFyZW50VGFibGUoKSkKICAgICAgICAgcmV0
dXJuIHRhYmxlLT5hZGRpdGlvbmFsR3JvdXBTdHlsZShmYWxzZSk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAppbmRleCA3Njdh
M2UzOGFmNDgyZGQ5MmIxNDljOGYwZWU4Yjg2NmU3ZDRiN2JmLi5hNWY4MGZlMGM5MWY4OGQ5NjBh
YjdmZTdhZjA2OGE0OGI4OTY0NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxl
bWVudC5jcHAKQEAgLTQ3Myw3ICs0NzMsNyBAQCBIVE1MVGFibGVFbGVtZW50OjpDZWxsQm9yZGVy
cyBIVE1MVGFibGVFbGVtZW50OjpjZWxsQm9yZGVycygpIGNvbnN0CiAgICAgcmV0dXJuIE5vQm9y
ZGVyczsKIH0KIAotUmVmPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRl
U2hhcmVkQ2VsbFN0eWxlKCkKK1JlZjxTdHlsZVByb3BlcnRpZXM+IEhUTUxUYWJsZUVsZW1lbnQ6
OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpIGNvbnN0CiB7CiAgICAgYXV0byBzdHlsZSA9IE11dGFi
bGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogCkBAIC01MTQsNyArNTE0LDcgQEAgUmVmPFN0
eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCkK
ICAgICByZXR1cm4gc3R5bGU7CiB9CiAKLWNvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxl
RWxlbWVudDo6YWRkaXRpb25hbENlbGxTdHlsZSgpCitjb25zdCBTdHlsZVByb3BlcnRpZXMqIEhU
TUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxDZWxsU3R5bGUoKSBjb25zdAogewogICAgIGlmICgh
bV9zaGFyZWRDZWxsU3R5bGUpCiAgICAgICAgIG1fc2hhcmVkQ2VsbFN0eWxlID0gY3JlYXRlU2hh
cmVkQ2VsbFN0eWxlKCk7CkBAIC01MzgsMTEgKzUzOCwxMCBAQCBzdGF0aWMgU3R5bGVQcm9wZXJ0
aWVzKiBsZWFrR3JvdXBCb3JkZXJTdHlsZShpbnQgcm93cykKICAgICByZXR1cm4gJnN0eWxlLmxl
YWtSZWYoKTsKIH0KIAotY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBIVE1MVGFibGVFbGVtZW50Ojph
ZGRpdGlvbmFsR3JvdXBTdHlsZShib29sIHJvd3MpCitjb25zdCBTdHlsZVByb3BlcnRpZXMqIEhU
TUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxHcm91cFN0eWxlKGJvb2wgcm93cykgY29uc3QKIHsK
ICAgICBpZiAobV9ydWxlc0F0dHIgIT0gR3JvdXBzUnVsZXMpCi0gICAgICAgIHJldHVybiAwOwot
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChyb3dzKSB7CiAgICAgICAgIHN0YXRp
YyBTdHlsZVByb3BlcnRpZXMqIHJvd0JvcmRlclN0eWxlID0gbGVha0dyb3VwQm9yZGVyU3R5bGUo
dHJ1ZSk7CiAgICAgICAgIHJldHVybiByb3dCb3JkZXJTdHlsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVFbGVtZW50LmgKaW5kZXggYjM2NTQyMDliZGE4NTc4ODVjNjkzMWM4MWI0ZWUzZjk4
NmYzODQxNi4uMzc1NmRjNjEwNzVjNGJmNzk1N2Y5MDczYjc4NzVhNTJmMmU1NmIxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmgKQEAgLTY1LDggKzY1LDggQEAgcHVibGlj
OgogICAgIGNvbnN0IEF0b21TdHJpbmcmIHJ1bGVzKCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbVN0
cmluZyYgc3VtbWFyeSgpIGNvbnN0OwogCi0gICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRp
dGlvbmFsQ2VsbFN0eWxlKCk7Ci0gICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRpdGlvbmFs
R3JvdXBTdHlsZShib29sIHJvd3MpOworICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogYWRkaXRp
b25hbENlbGxTdHlsZSgpIGNvbnN0OworICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogYWRkaXRp
b25hbEdyb3VwU3R5bGUoYm9vbCByb3dzKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBIVE1MVGFi
bGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtODYsNyArODYs
NyBAQCBwcml2YXRlOgogCiAgICAgQ2VsbEJvcmRlcnMgY2VsbEJvcmRlcnMoKSBjb25zdDsKIAot
ICAgIFJlZjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOworICAgIFJl
ZjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpIGNvbnN0OwogCiAgICAg
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqIGxhc3RCb2R5KCkgY29uc3Q7CiAKQEAgLTk1LDcgKzk1
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZnJhbWVBdHRyIHsgZmFsc2UgfTsgLy8gSW1wbGll
cyBhIHRoaW4gYm9yZGVyIHdpZHRoIGlmIG5vIGJvcmRlciBpcyBzZXQgYW5kIHRoZW4gYSBjZXJ0
YWluIHNldCBvZiBzb2xpZC9oaWRkZW4gYm9yZGVycyBiYXNlZCBvZmYgdGhlIHZhbHVlLgogICAg
IFRhYmxlUnVsZXMgbV9ydWxlc0F0dHIgeyBVbnNldFJ1bGVzIH07IC8vIEltcGxpZXMgYSB0aGlu
IGJvcmRlciB3aWR0aCwgYSBjb2xsYXBzaW5nIGJvcmRlciBtb2RlbCwgYW5kIGFsbCBib3JkZXJz
IG9uIHRoZSB0YWJsZSBiZWNvbWluZyBzZXQgdG8gaGlkZGVuIChpZiBmcmFtZS9ib3JkZXIgYXJl
IHByZXNlbnQsIHRvIG5vbmUgb3RoZXJ3aXNlKS4KICAgICB1bnNpZ25lZCBzaG9ydCBtX3BhZGRp
bmcgeyAxIH07Ci0gICAgUmVmUHRyPFN0eWxlUHJvcGVydGllcz4gbV9zaGFyZWRDZWxsU3R5bGU7
CisgICAgbXV0YWJsZSBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBtX3NoYXJlZENlbGxTdHlsZTsK
IH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlUGFydEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0
RWxlbWVudC5jcHAKaW5kZXggMzU4NzgwMTYyMTBmY2FhZmY2MDkwZTY5NTM5NDE1NWM0NTVhZWE3
Yy4uMzQ5YjAzNTEyYThlYzU0MDUyNDFiYmE2ZmMzZDRhOWZmNzQzNmVmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAKQEAgLTQsNyArNCw3IEBACiAg
KiAgICAgICAgICAgKEMpIDE5OTggV2FsZG8gQmFzdGlhbiAoYmFzdGlhbkBrZGUub3JnKQogICog
ICAgICAgICAgIChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAg
ICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChD
KSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC04NSwxMiArODUsOSBAQCB2b2lkIEhUTUxUYWJsZVBhcnRFbGVtZW50Ojpjb2xs
ZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTgogICAgICAg
ICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKG5hbWUs
IHZhbHVlLCBzdHlsZSk7CiB9CiAKLVJlZlB0cjxIVE1MVGFibGVFbGVtZW50PiBIVE1MVGFibGVQ
YXJ0RWxlbWVudDo6ZmluZFBhcmVudFRhYmxlKCkgY29uc3QKK1JlZlB0cjxjb25zdCBIVE1MVGFi
bGVFbGVtZW50PiBIVE1MVGFibGVQYXJ0RWxlbWVudDo6ZmluZFBhcmVudFRhYmxlKCkgY29uc3QK
IHsKLSAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFyZW50ID0gcGFyZW50Tm9kZSgpOwotICAg
IHdoaWxlIChwYXJlbnQgJiYgIWlzPEhUTUxUYWJsZUVsZW1lbnQ+KCpwYXJlbnQpKQotICAgICAg
ICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE5vZGUoKTsKLSAgICByZXR1cm4gZG93bmNhc3Q8SFRN
TFRhYmxlRWxlbWVudD4ocGFyZW50LmdldCgpKTsKKyAgICByZXR1cm4gYW5jZXN0b3JzT2ZUeXBl
PEhUTUxUYWJsZUVsZW1lbnQ+KCp0aGlzKS5maXJzdCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmgKaW5kZXggZDNiY2Y1MGJhZTIxYzM1OGNkZTIz
ZjMzNjNlNWM2OTJkNTZmMTFlNi4uMDRmOTQ3MWJhYmEyODc3Zjc1NDU0MGM5YjFhNTgwOTcyN2Jl
YjU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuaApAQCAt
NCw3ICs0LDcgQEAKICAqICAgICAgICAgICAoQykgMTk5OCBXYWxkbyBCYXN0aWFuIChiYXN0aWFu
QGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9y
ZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQyLDcg
KzQyLDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgY29sbGVjdFN0eWxl
Rm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
U3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwogCi0gICAgUmVmUHRy
PEhUTUxUYWJsZUVsZW1lbnQ+IGZpbmRQYXJlbnRUYWJsZSgpIGNvbnN0OworICAgIFJlZlB0cjxj
b25zdCBIVE1MVGFibGVFbGVtZW50PiBmaW5kUGFyZW50VGFibGUoKSBjb25zdDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVT
ZWN0aW9uRWxlbWVudC5jcHAKaW5kZXggZTUxNmE4MTg0ZDFmMGY4MzczY2QyMWE0YTdhNDA5M2Nm
OWJjZjJmMS4uNzc5ZDk2NGU5Mzg2MmQwNDc5ZGZmNDA4YjRmMDUzOTI0YTcyNTAwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKQEAgLTI2
LDcgKzI2LDYgQEAKICNpbmNsdWRlICJIVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oIgogCiAjaW5j
bHVkZSAiR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiSFRNTENvbGxl
Y3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVSb3dF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCAzYzliMzM4
ZmQyNjI2ZDc0ZDZkZTA4Y2VmZTQ1ZTUzNmIzNGExNjAzLi5lMjdhZmJjMDBkNGU4NDU2YjA0MGE0
YWM2NDNlN2FiYWFmN2FmYTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAo
QykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5
IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAx
IERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAy
MDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC03
NjEsMzQgKzc2MSwyNCBAQCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCogZW5jbG9zaW5nVGV4
dEZvcm1Db250cm9sKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKICAgICByZXR1cm4gYW5jZXN0
b3IgJiYgYW5jZXN0b3ItPmlzVGV4dEZpZWxkKCkgPyBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudD4oYW5jZXN0b3IuZ2V0KCkpIDogbnVsbHB0cjsKIH0KIAotc3RhdGljIGNvbnN0
IEVsZW1lbnQqIHBhcmVudEhUTUxFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0g
ICAgd2hpbGUgKGVsZW1lbnQpIHsKLSAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVs
ZW1lbnQoKTsKLSAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNIVE1MRWxlbWVudCgp
KQotICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQot
CiBTdHJpbmcgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpcmVjdGlvbkZvckZvcm1EYXRh
KCkgY29uc3QKIHsKLSAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlzOyBlbGVt
ZW50OyBlbGVtZW50ID0gcGFyZW50SFRNTEVsZW1lbnQoZWxlbWVudCkpIHsKLSAgICAgICAgY29u
c3QgQXRvbVN0cmluZyYgZGlyQXR0cmlidXRlVmFsdWUgPSBlbGVtZW50LT5hdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKGRpckF0dHIpOwotICAgICAgICBpZiAoZGlyQXR0cmlidXRlVmFs
dWUuaXNOdWxsKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyQXR0cmlidXRlVmFsdWUsICJydGwiKSB8fCBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwgImx0ciIpKQotICAg
ICAgICAgICAgcmV0dXJuIGRpckF0dHJpYnV0ZVZhbHVlOwotCi0gICAgICAgIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwgImF1dG8iKSkgewotICAg
ICAgICAgICAgYm9vbCBpc0F1dG87Ci0gICAgICAgICAgICBUZXh0RGlyZWN0aW9uIHRleHREaXJl
Y3Rpb24gPSBzdGF0aWNfY2FzdDxjb25zdCBIVE1MRWxlbWVudCo+KGVsZW1lbnQpLT5kaXJlY3Rp
b25hbGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShpc0F1dG8pOwotICAgICAgICAgICAgcmV0dXJu
IHRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6UlRMID8gInJ0bCIgOiAibHRyIjsKKyAg
ICBhdXRvIGRpcmVjdGlvbiA9IFt0aGlzXSB7CisgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6
IGxpbmVhZ2VPZlR5cGU8SFRNTEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICAgICAgYXV0byYg
dmFsdWUgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGlyQXR0cik7
CisgICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJy
dGwiKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gVGV4dERpcmVjdGlvbjo6UlRMOworICAgICAg
ICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAibHRyIikpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKKyAgICAgICAgICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImF1dG8iKSkgeworICAgICAg
ICAgICAgICAgIGJvb2wgaXNBdXRvOworICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmRp
cmVjdGlvbmFsaXR5SWZoYXNEaXJBdXRvQXR0cmlidXRlKGlzQXV0byk7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KLSAgICB9CisgICAgICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpMVFI7Cisg
ICAgfSgpOwogCi0gICAgcmV0dXJuICJsdHIiOworICAgIHJldHVybiBkaXJlY3Rpb24gPT0gVGV4
dERpcmVjdGlvbjo6TFRSID8gImx0ciJfcyA6ICJydGwiX3M7CiB9CiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRNYXhMZW5ndGgoaW50IG1heExlbmd0
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCmluZGV4IDA0ZGU3NTEzY2FjNDgy
YmY3NjBiNGU0YzZmZmEwMmVjMmU1YjY3ZjcuLjI0ZTQwYzJjNmQzMzExNDkzYjYxN2M2NWNkZjJm
NThhODUxMjIyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkN1c3RvbUhl
YWRlckZpZWxkcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiRWxl
bWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTUxLDcgKzUyLDYgQEAKICNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IGZkYjhlMzBmZmVjOWJiMDlhY2U2YjI5ZWM2YTMwMWEz
OTBlZWQ1ODEuLjAyZWZmNDhmMzg4ZjE4MGRiYTk0YTExODBjZTUxYzIyNGEyMWNjYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC04NjcsNiAr
ODY3LDggQEAgSW50UmVjdCBUZXh0RmllbGRJbnB1dFR5cGU6OmVsZW1lbnRSZWN0SW5Sb290Vmll
d0Nvb3JkaW5hdGVzKCkgY29uc3QKIAogVmVjdG9yPFN0cmluZz4gVGV4dEZpZWxkSW5wdXRUeXBl
OjpzdWdnZXN0aW9ucygpCiB7CisgICAgLy8gRklYTUU6IFN1Z2dlc3Rpb25zIGFyZSAidHlwaW5n
IGNvbXBsZXRpb25zIiBhbmQgc28gc2hvdWxkIHByb2JhYmx5IHVzZSB0aGUgZmluZFBsYWluVGV4
dCBhbGdvcml0aG0gcmF0aGVyIHRoYW4gdGhlIHNpbXBsaXN0aWMgImlnbm9yaW5nIEFTQ0lJIGNh
c2UiIHJ1bGVzLgorCiAgICAgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvbnM7CiAgICAgVmVjdG9y
PFN0cmluZz4gbWF0Y2hlc0NvbnRhaW5pbmdWYWx1ZTsKIApAQCAtODc2LDEyICs4NzgsMTEgQEAg
VmVjdG9yPFN0cmluZz4gVGV4dEZpZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9ucygpCiAgICAgICAg
IHJldHVybiBtX2NhY2hlZFN1Z2dlc3Rpb25zLnNlY29uZDsKIAogICAgIGlmIChhdXRvIGRhdGFM
aXN0ID0gZWxlbWVudCgpLT5kYXRhTGlzdCgpKSB7Ci0gICAgICAgIFJlZjxIVE1MQ29sbGVjdGlv
bj4gb3B0aW9ucyA9IGRhdGFMaXN0LT5vcHRpb25zKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGF1dG8qIG9wdGlvbiA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihvcHRpb25z
LT5pdGVtKGkpKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIWVsZW1lbnQoKS0+aXNWYWxpZFZh
bHVlKG9wdGlvbi0+dmFsdWUoKSkpCisgICAgICAgIGZvciAoYXV0byYgb3B0aW9uIDogZGF0YUxp
c3QtPnN1Z2dlc3Rpb25zKCkpIHsKKyAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IG9wdGlvbi52
YWx1ZSgpOworICAgICAgICAgICAgaWYgKCFlbGVtZW50KCktPmlzVmFsaWRWYWx1ZSh2YWx1ZSkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9
IHNhbml0aXplVmFsdWUob3B0aW9uLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIHZhbHVlID0gc2Fu
aXRpemVWYWx1ZSh2YWx1ZSk7CiAgICAgICAgICAgICBpZiAoZWxlbWVudFZhbHVlLmlzRW1wdHko
KSkKICAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucy5hcHBlbmQodmFsdWUpOwogICAgICAgICAg
ICAgZWxzZSBpZiAodmFsdWUuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGVsZW1lbnRWYWx1
ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXggZTVk
ZjNjM2I3ODY2ZWE5ZmQ0M2RhY2NmNGE0NjIyYmRiNjQ4OTQyMi4uZmNlNTkyNmFiNWVmYTVkYTVj
ZDQ0NzRkMTZlZWMyZDg5MjcwZWIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlLmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29y
ZHMuaCIKICNpbmNsdWRlICJET01SZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRl
ICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKaW5kZXggZTFlMjNhNzZhNGQ5NDZmOWVhMjdmNjI2YTIyYjJjYzc3OGE5
NGQzMS4uNDQ4M2RmNzAwM2ZiMWVkNTQ5NmRjYWJiMjMwM2VhYTU1MGM3ZGZlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTMyLDEwICszMiw4IEBACiAjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eU9iamVjdEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlNwYWNl
U3BsaXRTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CkBAIC03MCw3ICs2OCw3IEBAIEV4Y2VwdGlvbk9yPFZlY3RvcjxSZWY8
Tm9kZT4+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldEVsZW1lbnRzQnlD
CiAKICAgICBWZWN0b3I8UmVmPE5vZGU+PiBub2RlczsKIAotICAgIGZvciAoRWxlbWVudCYgZWxl
bWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhpczxDb250YWluZXJOb2RlPihjb250YWluZXIpID8g
ZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4oKmNvbnRhaW5lcikgOiBkb2N1bWVudCkpIHsKKyAgICBm
b3IgKEVsZW1lbnQmIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PihpczxDb250
YWluZXJOb2RlPihjb250YWluZXIpID8gZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4oKmNvbnRhaW5l
cikgOiBkb2N1bWVudCkpIHsKICAgICAgICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBh
Y2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBpZiAoYXhP
YmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygpID09IHJvbGUpCiAgICAgICAgICAgICAgICAgbm9k
ZXMuYXBwZW5kKGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCAyOTMwYjQ1ZjhmMjA3NTFlODU2Y2Rh
M2UwNTE4OWFhNDQ0ZTE4NTUxLi5hY2U1ZjlhYzUzY2JlMjZmZDNjNGQ5ZDRmMjI0OTRmZDgwNjVh
NTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNTU0FnZW50LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTA5LDIwICs1MDksMTggQEAgdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBp
bnQgbm8KICAgICAgICAgLy8gSW5oZXJpdGVkIHN0eWxlcy4KICAgICAgICAgaWYgKCFpbmNsdWRl
SW5oZXJpdGVkIHx8ICppbmNsdWRlSW5oZXJpdGVkKSB7CiAgICAgICAgICAgICBhdXRvIGVudHJp
ZXMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5
bGVFbnRyeT46OmNyZWF0ZSgpOwotICAgICAgICAgICAgRWxlbWVudCogcGFyZW50RWxlbWVudCA9
IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKLSAgICAgICAgICAgIHdoaWxlIChwYXJlbnRFbGVt
ZW50KSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgcGFyZW50U3R5bGVSZXNvbHZlciA9IHBhcmVu
dEVsZW1lbnQtPnN0eWxlUmVzb2x2ZXIoKTsKLSAgICAgICAgICAgICAgICBhdXRvIHBhcmVudE1h
dGNoZWRSdWxlcyA9IHBhcmVudFN0eWxlUmVzb2x2ZXIuc3R5bGVSdWxlc0ZvckVsZW1lbnQocGFy
ZW50RWxlbWVudCwgU3R5bGU6OlJlc29sdmVyOjpBbGxDU1NSdWxlcyk7CisgICAgICAgICAgICBm
b3IgKGF1dG8mIGFuY2VzdG9yIDogYW5jZXN0b3JzT2ZUeXBlPEVsZW1lbnQ+KCplbGVtZW50KSkg
eworICAgICAgICAgICAgICAgIGF1dG8mIHBhcmVudFN0eWxlUmVzb2x2ZXIgPSBhbmNlc3Rvci5z
dHlsZVJlc29sdmVyKCk7CisgICAgICAgICAgICAgICAgYXV0byBwYXJlbnRNYXRjaGVkUnVsZXMg
PSBwYXJlbnRTdHlsZVJlc29sdmVyLnN0eWxlUnVsZXNGb3JFbGVtZW50KCZhbmNlc3RvciwgU3R5
bGU6OlJlc29sdmVyOjpBbGxDU1NSdWxlcyk7CiAgICAgICAgICAgICAgICAgYXV0byBlbnRyeSA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeTo6Y3JlYXRlKCkK
LSAgICAgICAgICAgICAgICAgICAgLnNldE1hdGNoZWRDU1NSdWxlcyhidWlsZEFycmF5Rm9yTWF0
Y2hlZFJ1bGVMaXN0KHBhcmVudE1hdGNoZWRSdWxlcywgc3R5bGVSZXNvbHZlciwgKnBhcmVudEVs
ZW1lbnQsIFBzZXVkb0lkOjpOb25lKSkKKyAgICAgICAgICAgICAgICAgICAgLnNldE1hdGNoZWRD
U1NSdWxlcyhidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KHBhcmVudE1hdGNoZWRSdWxlcywg
c3R5bGVSZXNvbHZlciwgYW5jZXN0b3IsIFBzZXVkb0lkOjpOb25lKSkKICAgICAgICAgICAgICAg
ICAgICAgLnJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICBpZiAoaXM8U3R5bGVkRWxlbWVudD4o
KnBhcmVudEVsZW1lbnQpICYmIGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KCpwYXJlbnRFbGVtZW50
KS5jc3NvbVN0eWxlKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byYgc3R5
bGVTaGVldCA9IGFzSW5zcGVjdG9yU3R5bGVTaGVldChkb3duY2FzdDxTdHlsZWRFbGVtZW50Pigq
cGFyZW50RWxlbWVudCkpOworICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZWRFbGVtZW50Pihh
bmNlc3RvcikgJiYgZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oYW5jZXN0b3IpLmNzc29tU3R5bGUo
KS5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvJiBzdHlsZVNoZWV0ID0gYXNJ
bnNwZWN0b3JTdHlsZVNoZWV0KGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KGFuY2VzdG9yKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zZXRJbmxpbmVTdHlsZShzdHlsZVNoZWV0LmJ1aWxk
T2JqZWN0Rm9yU3R5bGUoc3R5bGVTaGVldC5zdHlsZUZvcklkKEluc3BlY3RvckNTU0lkKHN0eWxl
U2hlZXQuaWQoKSwgMCkpKSk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
ZW50cmllcy0+YWRkSXRlbShXVEZNb3ZlKGVudHJ5KSk7Ci0gICAgICAgICAgICAgICAgcGFyZW50
RWxlbWVudCA9IHBhcmVudEVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaW5oZXJpdGVkRW50cmllcyA9IFdURk1vdmUoZW50cmllcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCmluZGV4IDBmNDZhMzAzM2FlZjQwMDdmNmViODM3YTYxMDVmMDVhMGM1OTA2N2YuLmQyY2E1
YmJlMTA5YWFhZDE4MmJhZTE4NWM0ZDUyZDhhYWVjZGE4NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEpvc2VwaCBQZWNvcmFybwog
ICoKQEAgLTExMTQsNyArMTExNCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Omluc3BlY3Qo
Tm9kZSogaW5zcGVjdGVkTm9kZSkKICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IGluc3BlY3RlZE5v
ZGU7CiAgICAgc2V0U2VhcmNoaW5nRm9yTm9kZShpZ25vcmVkLCBmYWxzZSwgbnVsbHB0ciwgZmFs
c2UpOwogCi0gICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6RUxFTUVOVF9OT0RFICYm
IG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6RE9DVU1FTlRfTk9ERSkKKyAgICBpZiAoIW5vZGUt
PmlzRWxlbWVudE5vZGUoKSAmJiAhbm9kZS0+aXNEb2N1bWVudE5vZGUoKSkKICAgICAgICAgbm9k
ZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKICAgICBtX25vZGVUb0ZvY3VzID0gbm9kZTsKIApAQCAt
MTE1OSw3ICsxMTU5LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6bW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCB1bnMKIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OmhpZ2hsaWdodE1vdXNlZE92ZXJOb2RlKCkKIHsKICAgICBOb2RlKiBub2RlID0g
bV9tb3VzZWRPdmVyTm9kZS5nZXQoKTsKLSAgICB3aGlsZSAobm9kZSAmJiBub2RlLT5ub2RlVHlw
ZSgpID09IE5vZGU6OlRFWFRfTk9ERSkKKyAgICBpZiAobm9kZSAmJiBub2RlLT5pc1RleHROb2Rl
KCkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgaWYgKG5vZGUgJiYg
bV9pbnNwZWN0TW9kZUhpZ2hsaWdodENvbmZpZykKICAgICAgICAgbV9vdmVybGF5LT5oaWdobGln
aHROb2RlKG5vZGUsICptX2luc3BlY3RNb2RlSGlnaGxpZ2h0Q29uZmlnKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCAzZjQ2OTljZjgzMjk4ZjA0ZTI3
NGFlMDBlZjk1YTU1NDc1YTY1ZjNkLi4wNmY0NmQ0YTU2OWQwZmEwZGMxN2JkNjU5YjY1ODgxNTU3
MTZhNmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBA
IC0zMCwxMiArMzAsMTIgQEAKICNpbmNsdWRlICJDYWNoZWRGb250Q2xpZW50LmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUxvYWRlci5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNpbmNs
dWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgotI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIldPRkZGaWxlRm9ybWF0LmgiCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHAKaW5kZXggMDEyZDJmMzFmZTFjZTk5YTc3ZTg1NWZjNmVjZWZiODZmMDc2ZGViNi4u
YzhmOWJhNTMwMDVmOGQ3YmM5MzBkMDk2ZDVmMjEzYzkzODI1YTllZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtMjksNiArMjksNyBAQAog
CiAjaWYgRU5BQkxFKFNWR19GT05UUykKIAorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEu
aCIKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgpAQCAtMzcsNyArMzgsNiBAQAogI2luY2x1ZGUg
IlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKLSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJTVkdUb09URkZvbnRDb252ZXJzaW9uLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAK
aW5kZXggZGFkMDAyYjE5NjhhZDBiNDI2ZmIxMmI3YTY1YTBmMzczODZiZThiYi4uMDU5ZjQ1ZDYy
OWY1ODg2NWI0MDdjY2JlMWE3MmFkMmVkZjUzZDZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMjYwLDYgKzEyNjAsMTUgQEAgdm9pZCBEcmFnQ29udHJvbGxl
cjo6YmVnaW5EcmFnKERyYWdJdGVtIGRyYWdJdGVtLCBGcmFtZSYgZnJhbWUsIGNvbnN0IEludFBv
aW50JgogICAgIGNsaWVudCgpLmJlZ2luRHJhZyhXVEZNb3ZlKGRyYWdJdGVtKSwgZnJhbWUsIG1v
dXNlRG93blBvaW50SW5Sb290Vmlld0Nvb3JkaW5hdGVzLCBtb3VzZURyYWdnZWRQb2ludEluUm9v
dFZpZXdDb29yZGluYXRlcywgZGF0YVRyYW5zZmVyLCBkcmFnU291cmNlQWN0aW9uKTsKIH0KIAor
c3RhdGljIFJlZlB0cjxFbGVtZW50PiBjb250YWluaW5nTGlua0VsZW1lbnQoRWxlbWVudCYgZWxl
bWVudCkKK3sKKyAgICBmb3IgKGF1dG8mIGN1cnJlbnRFbGVtZW50IDogbGluZWFnZU9mVHlwZTxF
bGVtZW50PihlbGVtZW50KSkgeworICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuaXNMaW5rKCkp
CisgICAgICAgICAgICByZXR1cm4gJmN1cnJlbnRFbGVtZW50OworICAgIH0KKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogdm9pZCBEcmFnQ29udHJvbGxlcjo6ZG9TeXN0ZW1EcmFnKERyYWdJbWFn
ZSBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdMb2MsIGNvbnN0IEludFBvaW50JiBldmVudFBv
cywgRnJhbWUmIGZyYW1lLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBQcm9taXNlZEF0dGFjaG1l
bnRJbmZvJiYgcHJvbWlzZWRBdHRhY2htZW50SW5mbykKIHsKICAgICBtX2RpZEluaXRpYXRlRHJh
ZyA9IHRydWU7CkBAIC0xMjk2LDE4ICsxMzA1LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZG9T
eXN0ZW1EcmFnKERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdMb2MsIGNvbnMK
ICAgICAgICAgICAgIGl0ZW0uZHJhZ1ByZXZpZXdGcmFtZUluUm9vdFZpZXdDb29yZGluYXRlcyA9
IGVsZW1lbnQtPmJvdW5kc0luUm9vdFZpZXdTcGFjZSgpOwogICAgICAgICB9CiAKLSAgICAgICAg
UmVmUHRyPEVsZW1lbnQ+IGxpbms7Ci0gICAgICAgIGlmIChlbGVtZW50LT5pc0xpbmsoKSkKLSAg
ICAgICAgICAgIGxpbmsgPSBlbGVtZW50OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZv
ciAoYXV0byYgY3VycmVudEVsZW1lbnQgOiBlbGVtZW50TGluZWFnZShlbGVtZW50LmdldCgpKSkg
ewotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5pc0xpbmsoKSkgewotICAgICAg
ICAgICAgICAgICAgICBsaW5rID0gJmN1cnJlbnRFbGVtZW50OwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKGxpbmspIHsKKyAgICAgICAgaWYgKGF1dG8gbGluayA9IGNvbnRhaW5pbmdMaW5r
RWxlbWVudCgqZWxlbWVudCkpIHsKICAgICAgICAgICAgIGF1dG8gdGl0bGVBdHRyaWJ1dGUgPSBs
aW5rLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6dGl0bGVBdHRy
KTsKICAgICAgICAgICAgIGl0ZW0udGl0bGUgPSB0aXRsZUF0dHJpYnV0ZS5pc0VtcHR5KCkgPyBs
aW5rLT5pbm5lclRleHQoKSA6IHRpdGxlQXR0cmlidXRlLnN0cmluZygpOwogICAgICAgICAgICAg
aXRlbS51cmwgPSBmcmFtZS5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXMobGluay0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xs
U25hcE9mZnNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9s
bFNuYXBPZmZzZXRzLmNwcAppbmRleCBkMjZjZWZlNGYyMDIzNmM3YzQzYWM1ZTI1ZWU3MTZlZGQ1
NDBlMTBmLi5mODBhMTg1NDg5OGNjODRmNWQwZTBmNjcwYmZhZjI1MzA2MGFmMTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zm
c2V0cy5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJBeGlzU2Nyb2xsU25hcE9mZnNl
dHMuaCIKIAogI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSFRN
TENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkxlbmd0
aC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQuaAppbmRleCA3YjMyYjMzZDMxNWFiOTVkMmEw
YmU5OGQzZTJmMGE1MGJhMGI5ZWQzLi41ZWQ4MDI1YmU3OTAyOTI3ZjVkNjUzYjk3NjllMTEzZjJj
YWVjOGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dl
c3Rpb25zQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YUxpc3RTdWdn
ZXN0aW9uc0NsaWVudC5oCkBAIC0yNywxMSArMjcsMTIgQEAKIAogI2lmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKQogCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIEludFJlY3Q7CisKIGNsYXNzIERhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQgewogcHVibGlj
OgogICAgIHZpcnR1YWwgfkRhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQoKSA9IGRlZmF1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCA2MDk3YjRjNmEzZTll
YmQzMTkyOTI2ZmUzOTM5YjhiYjVkN2ZlZWM1Li4yNjc0MzM1MmU0NTcxYzFlNzQwYmZkYjYzZjBj
YjY0MGJjN2Y0YzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE0IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNTQsNyArNTQsNiBAQAog
I2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSNpbmNsdWRlICJIVE1MQ29s
bGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEYXRhTGlzdEVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKQEAgLTEx
MTcsMTIgKzExMTYsOSBAQCB2b2lkIFJlbmRlclRoZW1lOjpwYWludFNsaWRlclRpY2tzKGNvbnN0
IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludAogICAgICAgICB0aWNrUmVn
aW9uU2lkZU1hcmdpbiA9IHRyYWNrQm91bmRzLnkoKSArICh0aHVtYlNpemUud2lkdGgoKSAtIHRp
Y2tTaXplLndpZHRoKCkgKiB6b29tRmFjdG9yKSAvIDIuMDsKICAgICAgICAgdGlja1JlZ2lvbldp
ZHRoID0gdHJhY2tCb3VuZHMuaGVpZ2h0KCkgLSB0aHVtYlNpemUud2lkdGgoKTsKICAgICB9Ci0g
ICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBvcHRpb25zID0gZGF0YUxpc3Qub3B0aW9ucygpOwogICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgp
KTsKICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihvLnN0eWxlKCkudmlzaXRl
ZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpKTsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBOb2RlKiBub2RlID0gb3B0aW9ucy0+aXRlbShpKTsgaSsrKSB7
Ci0gICAgICAgIEFTU0VSVChpczxIVE1MT3B0aW9uRWxlbWVudD4oKm5vZGUpKTsKLSAgICAgICAg
SFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbkVsZW1lbnQgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxl
bWVudD4oKm5vZGUpOworICAgIGZvciAoYXV0byYgb3B0aW9uRWxlbWVudCA6IGRhdGFMaXN0LnN1
Z2dlc3Rpb25zKCkpIHsKICAgICAgICAgU3RyaW5nIHZhbHVlID0gb3B0aW9uRWxlbWVudC52YWx1
ZSgpOwogICAgICAgICBpZiAoIWlucHV0LmlzVmFsaWRWYWx1ZSh2YWx1ZSkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
clN1cHBvcnQuY3BwCmluZGV4IDg4Y2EzZTUwMzczNzMwMTVjNTIwMzBmMDU0OGMwZmIzMzJlMTA3
NmQuLmZjYWYwMGM1MGJiZjYwM2VmM2EzYTlmZDgzNGQzYzk5ZTMzM2I5NTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcApAQCAtNiw2
ICs2LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0
Lm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0y
MDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE4IEFkb2JlIFN5
c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtMjYsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR1Jl
bmRlclN1cHBvcnQuaCIKIAorI2luY2x1ZGUgIkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQ2hpbGRJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKQEAgLTQ4MSw2ICs0ODMsNyBAQCB2b2lk
IFNWR1JlbmRlclN1cHBvcnQ6OnN0eWxlQ2hhbmdlZChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
Y29uc3QgUmVuZGVyU3R5bGUqCiB9CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQorCiBi
b29sIFNWR1JlbmRlclN1cHBvcnQ6Omlzb2xhdGVzQmxlbmRpbmcoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlKQogewogICAgIHJldHVybiBzdHlsZS5zdmdTdHlsZSgpLmlzb2xhdGVzQmxlbmRpbmco
KSB8fCBzdHlsZS5oYXNGaWx0ZXIoKSB8fCBzdHlsZS5oYXNCbGVuZE1vZGUoKSB8fCBzdHlsZS5v
cGFjaXR5KCkgPCAxLjBmOwpAQCAtNDkxLDIwICs0OTQsMTYgQEAgdm9pZCBTVkdSZW5kZXJTdXBw
b3J0Ojp1cGRhdGVNYXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyhjb25zdCBSZW5k
ZXJFbGUKICAgICBBU1NFUlQocmVuZGVyZXIuZWxlbWVudCgpKTsKICAgICBBU1NFUlQocmVuZGVy
ZXIuZWxlbWVudCgpLT5pc1NWR0VsZW1lbnQoKSk7CiAKLSAgICBib29sIG1hc2tlZEFuY2VzdG9y
U2hvdWxkSXNvbGF0ZUJsZW5kaW5nID0gcmVuZGVyZXIuc3R5bGUoKS5oYXNCbGVuZE1vZGUoKTsK
LSAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gcmVuZGVyZXIuZWxlbWVudCgpLT5wYXJlbnRFbGVt
ZW50KCk7IGFuY2VzdG9yICYmIGFuY2VzdG9yLT5pc1NWR0VsZW1lbnQoKTsgYW5jZXN0b3IgPSBh
bmNlc3Rvci0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIGlmICghZG93bmNhc3Q8U1ZHRWxl
bWVudD4oKmFuY2VzdG9yKS5pc1NWR0dyYXBoaWNzRWxlbWVudCgpKQotICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgY29uc3QgYXV0byogc3R5bGUgPSBhbmNlc3Rvci0+Y29tcHV0ZWRT
dHlsZSgpOworICAgIGZvciAoYXV0byYgYW5jZXN0b3IgOiBhbmNlc3RvcnNPZlR5cGU8U1ZHR3Jh
cGhpY3NFbGVtZW50PigqcmVuZGVyZXIuZWxlbWVudCgpKSkgeworICAgICAgICBhdXRvKiBzdHls
ZSA9IGFuY2VzdG9yLmNvbXB1dGVkU3R5bGUoKTsKICAgICAgICAgaWYgKCFzdHlsZSB8fCAhaXNv
bGF0ZXNCbGVuZGluZygqc3R5bGUpKQogICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
aWYgKGFuY2VzdG9yLT5jb21wdXRlZFN0eWxlKCktPnN2Z1N0eWxlKCkuaGFzTWFza2VyKCkpCi0g
ICAgICAgICAgICBkb3duY2FzdDxTVkdHcmFwaGljc0VsZW1lbnQ+KCphbmNlc3Rvcikuc2V0U2hv
dWxkSXNvbGF0ZUJsZW5kaW5nKG1hc2tlZEFuY2VzdG9yU2hvdWxkSXNvbGF0ZUJsZW5kaW5nKTsK
LQorICAgICAgICBpZiAoc3R5bGUtPnN2Z1N0eWxlKCkuaGFzTWFza2VyKCkpCisgICAgICAgICAg
ICBhbmNlc3Rvci5zZXRTaG91bGRJc29sYXRlQmxlbmRpbmcocmVuZGVyZXIuc3R5bGUoKS5oYXNC
bGVuZE1vZGUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CisKICNlbmRpZgorCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwCmluZGV4IDVlOTlmYmJkMmZl
MDM4NGI3OTBjMDAzMGMxNTZhZjZjZjU3ODQzODIuLjIyMzRmYjVhYmZhZDZkYWY5Y2QzNDQzNzk0
NjcwMGQ4OWU0ZjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52
YWxpZGF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3Iu
Y3BwCkBAIC0yNzUsMTIgKzI3NSwxMCBAQCB2b2lkIEludmFsaWRhdG9yOjppbnZhbGlkYXRlU3R5
bGVXaXRoTWF0Y2hFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE1hdGNoRWxlbWVudAogICAgICAg
ICBmb3IgKGF1dG8qIHNpYmxpbmcgPSBlbGVtZW50Lm5leHRFbGVtZW50U2libGluZygpOyBzaWJs
aW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpCiAgICAgICAgICAg
ICBpbnZhbGlkYXRlSWZOZWVkZWQoKnNpYmxpbmcsIG51bGxwdHIpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIE1hdGNoRWxlbWVudDo6QW55U2libGluZzogewotICAgICAgICBhdXRvIHBhcmVu
dENoaWxkcmVuID0gY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4oKmVsZW1lbnQucGFyZW50Tm9kZSgp
KTsKLSAgICAgICAgZm9yIChhdXRvJiBwYXJlbnRDaGlsZCA6IHBhcmVudENoaWxkcmVuKQorICAg
IGNhc2UgTWF0Y2hFbGVtZW50OjpBbnlTaWJsaW5nOgorICAgICAgICBmb3IgKGF1dG8mIHBhcmVu
dENoaWxkIDogY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4oKmVsZW1lbnQucGFyZW50Tm9kZSgpKSkK
ICAgICAgICAgICAgIGludmFsaWRhdGVJZk5lZWRlZChwYXJlbnRDaGlsZCwgbnVsbHB0cik7CiAg
ICAgICAgIGJyZWFrOwotICAgIH0KICAgICBjYXNlIE1hdGNoRWxlbWVudDo6UGFyZW50U2libGlu
ZzoKICAgICAgICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudC5uZXh0RWxlbWVudFNpYmxp
bmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKSB7
CiAgICAgICAgICAgICBhdXRvIHNpYmxpbmdDaGlsZHJlbiA9IGNoaWxkcmVuT2ZUeXBlPEVsZW1l
bnQ+KCpzaWJsaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVz
b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXgg
ZjNmMzYyMTgzZDUwNjE3NGE0NjY2NDYxYzcxN2JlNzliM2U2MWYxNC4uNjUxZjhmMWUyZDc4OTIx
OTkwNjU2YWZhNGZkOWU2OWVkY2FjM2MyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNv
bHZlci5jcHAKQEAgLTE4Myw4ICsxODMsNyBAQCBpbmxpbmUgdm9pZCBSZXNvbHZlcjo6U3RhdGU6
OnNldFBhcmVudFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcGFyZW50UwogCiBz
dGF0aWMgaW5saW5lIGJvb2wgaXNBdFNoYWRvd0JvdW5kYXJ5KGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQpCiB7Ci0gICAgYXV0byogcGFyZW50Tm9kZSA9IGVsZW1lbnQucGFyZW50Tm9kZSgpOwotICAg
IHJldHVybiBwYXJlbnROb2RlICYmIHBhcmVudE5vZGUtPmlzU2hhZG93Um9vdCgpOworICAgIHJl
dHVybiBpczxTaGFkb3dSb290PihlbGVtZW50LnBhcmVudE5vZGUoKSk7CiB9CiAKIEJ1aWxkZXJD
b250ZXh0IFJlc29sdmVyOjpidWlsZGVyQ29udGV4dChjb25zdCBTdGF0ZSYgc3RhdGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FFbGVtZW50LmNwcAppbmRleCA5OWRiMzU5YjIwNDYxODQwZmNjYTE1ODhlZTEw
ZjUxZWVmMTU1Zjg2Li42YjRiNjI1NjkyZDdhY2E2MmYxNzlhOWExNDMxYjliNzJmZWViZWQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKQEAgLTEwMiw5ICsxMDIsOCBAQCB2b2lkIFNW
R0FFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQUVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KQogewotICAgIGlmIChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc1NWR0VsZW1lbnQo
KSAmJiBkb3duY2FzdDxTVkdFbGVtZW50PigqcGFyZW50Tm9kZSgpKS5pc1RleHRDb250ZW50KCkp
CisgICAgaWYgKGlzPFNWR0VsZW1lbnQ+KHBhcmVudE5vZGUoKSkgJiYgZG93bmNhc3Q8U1ZHRWxl
bWVudD4oKnBhcmVudE5vZGUoKSkuaXNUZXh0Q29udGVudCgpKQogICAgICAgICByZXR1cm4gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyU1ZHSW5saW5lPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwotCiAg
ICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI+
KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApp
bmRleCAyZmZjYmFjNTIxMWM4YTA1YWU0NjBkMzBjYTA0MjZlNDY3Y2VhMTgzLi4yMjI0MWRhZDQx
N2ZjN2UyNjhiZDYwN2VhNTMwN2JiMmE5MmI0NTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5j
b20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ2FtZXJvbiBNY0Nvcm1hY2sgPGNhbUBtY2MuaWQu
YXU+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KQEAgLTkxNiwxOCArOTE2LDEwIEBAIHZvaWQgU1ZHRWxlbWVudDo6dXBkYXRl
UmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oYm9vbCBoYXNSZWxhdGl2ZUxlbmd0aHMsIFNWR0Vs
CiAgICAgICAgIG1fZWxlbWVudHNXaXRoUmVsYXRpdmVMZW5ndGhzLnJlbW92ZShlbGVtZW50KTsK
ICAgICB9CiAKLSAgICBpZiAoIWVsZW1lbnQtPmlzU1ZHR3JhcGhpY3NFbGVtZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIC8vIEZpbmQgZmlyc3Qgc3R5bGVkIHBhcmVudCBub2RlLCBhbmQg
bm90aWZ5IGl0IHRoYXQgd2UndmUgY2hhbmdlZCBvdXIgcmVsYXRpdmUgbGVuZ3RoIHN0YXRlLgot
ICAgIGF1dG8gbm9kZSA9IG1ha2VSZWZQdHIocGFyZW50Tm9kZSgpKTsKLSAgICB3aGlsZSAobm9k
ZSkgewotICAgICAgICBpZiAoIW5vZGUtPmlzU1ZHRWxlbWVudCgpKQotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgLy8gUmVnaXN0ZXIgdXMgaW4gdGhlIHBhcmVudCBlbGVtZW50IG1hcC4K
LSAgICAgICAgZG93bmNhc3Q8U1ZHRWxlbWVudD4oKm5vZGUpLnVwZGF0ZVJlbGF0aXZlTGVuZ3Ro
c0luZm9ybWF0aW9uKGhhc1JlbGF0aXZlTGVuZ3RocywgdGhpcyk7Ci0gICAgICAgIGJyZWFrOwor
ICAgIGlmIChlbGVtZW50LT5pc1NWR0dyYXBoaWNzRWxlbWVudCgpKSB7CisgICAgICAgIGF1dG8g
cGFyZW50ID0gbWFrZVJlZlB0cihwYXJlbnROb2RlKCkpOworICAgICAgICBpZiAoaXM8U1ZHRWxl
bWVudD4ocGFyZW50KSkKKyAgICAgICAgICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpwYXJlbnQp
LnVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKGhhc1JlbGF0aXZlTGVuZ3RocywgdGhp
cyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCA5OGZjZmZiY2E0ZDcx
MjY3ZTc0NWZlZGI5YjMwZTgwZDBjOWI2MmNmLi42MzkxOGFhODhiZjE5NGEyOWU2NDMwYWIxZTk5
NjBiODhjYmVkZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTE0NSw2ICsxNDUsOCBA
QCBwdWJsaWM6CiAgICAgU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NO
YW1lLT5jdXJyZW50VmFsdWUoKTsgfQogICAgIFNWR0FuaW1hdGVkU3RyaW5nJiBjbGFzc05hbWVB
bmltYXRlZCgpIHsgcmV0dXJuIG1fY2xhc3NOYW1lOyB9CiAKKyAgICBjb25zdCBSZW5kZXJTdHls
ZSogY29tcHV0ZWRTdHlsZShQc2V1ZG9JZCA9IFBzZXVkb0lkOjpOb25lKSBmaW5hbDsKKwogcHJv
dGVjdGVkOgogICAgIFNWR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CiAgICAgdmlydHVhbCB+U1ZHRWxlbWVudCgpOwpAQCAtMTczLDggKzE3NSw2IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHdpbGxSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKLSAgICBjb25zdCBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZShQc2V1ZG9JZCA9
IFBzZXVkb0lkOjpOb25lKSBmaW5hbDsKLQogICAgIHZpcnR1YWwgdm9pZCBjbGVhclRhcmdldCgp
IHsgfQogCiAgICAgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZXNJZk5lZWRlZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA3N2Q5
NGFmZTg1ZWJhMTY0MjZhNDE5N2Q3ZjkwNTY4YzNjMzZkMGFkLi4zZjcyMzEzMWEyMjYyMjNhYzBk
ZjZiNTBjMmQ5NmEwMmUyYTc3NzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjc0LDIyICsyNzQsMjQgQEAgYm9vbCBYTUxEb2N1
bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYgY2h1bmssIERv
Y3VtZW50RnJhZ20KIAogICAgIEhhc2hNYXA8QXRvbVN0cmluZywgQXRvbVN0cmluZz4gcHJlZml4
VG9OYW1lc3BhY2VNYXA7CiAgICAgQXRvbVN0cmluZyBkZWZhdWx0TmFtZXNwYWNlVVJJOwotICAg
IGJvb2wgc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFtZXNwYWNlVVJJID0gZmFsc2U7Ci0gICAgCi0g
ICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudExpbmVhZ2UoY29udGV4dEVsZW1lbnQpKSB7
Ci0gICAgICAgIGlmIChpczxTVkdGb3JlaWduT2JqZWN0RWxlbWVudD4oZWxlbWVudCkpCi0gICAg
ICAgICAgICBzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkgPSB0cnVlOwotICAgICAg
ICBlbHNlIGlmICghc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFtZXNwYWNlVVJJKQotICAgICAgICAg
ICAgZGVmYXVsdE5hbWVzcGFjZVVSSSA9IGVsZW1lbnQubmFtZXNwYWNlVVJJKCk7Ci0KLSAgICAg
ICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZXMoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUgOiBlbGVtZW50LmF0dHJp
YnV0ZXNJdGVyYXRvcigpKSB7Ci0gICAgICAgICAgICBpZiAoYXR0cmlidXRlLnByZWZpeCgpID09
IHhtbG5zQXRvbSgpKQotICAgICAgICAgICAgICAgIHByZWZpeFRvTmFtZXNwYWNlTWFwLnNldChh
dHRyaWJ1dGUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZS52YWx1ZSgpKTsKLSAgICAgICAgICAgIGVs
c2UgaWYgKCFzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkgJiYgYXR0cmlidXRlLnBy
ZWZpeCgpID09IHhtbG5zQXRvbSgpKQotICAgICAgICAgICAgICAgIGRlZmF1bHROYW1lc3BhY2VV
UkkgPSBhdHRyaWJ1dGUudmFsdWUoKTsKKyAgICBpZiAoY29udGV4dEVsZW1lbnQpIHsKKyAgICAg
ICAgYm9vbCBzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkgPSBmYWxzZTsKKworICAg
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEVsZW1lbnQ+KCpjb250ZXh0
RWxlbWVudCkpIHsKKyAgICAgICAgICAgIGlmIChpczxTVkdGb3JlaWduT2JqZWN0RWxlbWVudD4o
ZWxlbWVudCkpCisgICAgICAgICAgICAgICAgc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFtZXNwYWNl
VVJJID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCFzdG9wTG9va2luZ0ZvckRlZmF1bHRO
YW1lc3BhY2VVUkkpCisgICAgICAgICAgICAgICAgZGVmYXVsdE5hbWVzcGFjZVVSSSA9IGVsZW1l
bnQubmFtZXNwYWNlVVJJKCk7CisKKyAgICAgICAgICAgIGlmICghZWxlbWVudC5oYXNBdHRyaWJ1
dGVzKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGZvciAoY29u
c3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUgOiBlbGVtZW50LmF0dHJpYnV0ZXNJdGVyYXRvcigpKSB7
CisgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZS5wcmVmaXgoKSA9PSB4bWxuc0F0b20oKSkK
KyAgICAgICAgICAgICAgICAgICAgcHJlZml4VG9OYW1lc3BhY2VNYXAuc2V0KGF0dHJpYnV0ZS5s
b2NhbE5hbWUoKSwgYXR0cmlidXRlLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYg
KCFzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkgJiYgYXR0cmlidXRlLnByZWZpeCgp
ID09IHhtbG5zQXRvbSgpKQorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TmFtZXNwYWNlVVJJ
ID0gYXR0cmlidXRlLnZhbHVlKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXggM2Y1YjYxODFlMDZlMGE4NDY4
OGJkYTkxNmYxMGQ4N2E2MWQxNGJlNy4uNmIyNzczZWM5NzM1MThhMDFlMTQ1NTQwNTI3MjVlNTU5
NDA2YmMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTU1OSwxMiAr
NTU5LDExIEBAIHN0YXRpYyBXZWJDb3JlOjpFbGVtZW50KiBjb250YWluZXJFbGVtZW50Rm9yRWxl
bWVudChXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50KQogICAgIC8vIMKnMTMuIEVsZW1lbnQgU3Rh
dGUuCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmRyaXZlci93ZWJkcml2ZXItc3Bl
Yy5odG1sI2Rmbi1jb250YWluZXIuCiAgICAgaWYgKGlzPFdlYkNvcmU6OkhUTUxPcHRpb25FbGVt
ZW50PihlbGVtZW50KSkgewotICAgICAgICBhdXRvJiBvcHRpb25FbGVtZW50ID0gZG93bmNhc3Q8
V2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpOwogI2lmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKQotICAgICAgICBpZiAoYXV0byogcGFyZW50RWxlbWVudCA9IG9wdGlvbkVsZW1l
bnQub3duZXJEYXRhTGlzdEVsZW1lbnQoKSkKKyAgICAgICAgaWYgKGF1dG8qIHBhcmVudEVsZW1l
bnQgPSBXZWJDb3JlOjphbmNlc3RvcnNPZlR5cGU8V2ViQ29yZTo6SFRNTERhdGFMaXN0RWxlbWVu
dD4oZWxlbWVudCkuZmlyc3QoKSkKICAgICAgICAgICAgIHJldHVybiBwYXJlbnRFbGVtZW50Owog
I2VuZGlmCi0gICAgICAgIGlmIChhdXRvKiBwYXJlbnRFbGVtZW50ID0gb3B0aW9uRWxlbWVudC5v
d25lclNlbGVjdEVsZW1lbnQoKSkKKyAgICAgICAgaWYgKGF1dG8qIHBhcmVudEVsZW1lbnQgPSBk
b3duY2FzdDxXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkub3duZXJTZWxlY3RF
bGVtZW50KCkpCiAgICAgICAgICAgICByZXR1cm4gcGFyZW50RWxlbWVudDsKIAogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GdWxs
U2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcAppbmRleCBmNTE5NDFlNmI0ZWMx
MjE5ZDJiYmRhMGZhOTk1N2RjNTM4MjdjNzhiLi5kMGNmZTlkMTczYWQ5NzhiNTg2NmRlNWY2YmYz
NDU0Mjk3ODI2ZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRnVsbFNj
cmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCkBAIC0zNCw3ICszNCw3IEBA
CiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL0VsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnRJdGVyYXRvci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRnVsbHNjcmVlbk1hbmFnZXIuaD4KQEAgLTQ1LDcgKzQ1LDYgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVu
ZGVyVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oPgogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKICNpbmNsdWRlICJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCmluZGV4IDhlNGM5Mzc1ZDdiOGNjMTBmZmEwMDgwM2Q0ODIxNzNiZTVhMzU1OGEuLjUz
ZGUxOTE1YjQ3M2FmMzNmYWRiMDU1MDk5MDdlYWIwYzM1ZjAyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCkBAIC03OTUsNyArNzk1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENvbG9yQ2hvb3Nlcj4g
V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2wKIAogc3Rk
Ojp1bmlxdWVfcHRyPERhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4gV2ViQ2hyb21lQ2xpZW50Ojpj
cmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCYg
Y2xpZW50KQogewotICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBp
Y2tlcj4oJm1fcGFnZSwgJmNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViRGF0YUxp
c3RTdWdnZXN0aW9uUGlja2VyPihtX3BhZ2UsIGNsaWVudCk7CiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0
U3VnZ2VzdGlvblBpY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcAppbmRleCBhZWI4NzM3YWRkNDcz
YzAzYWI2ZTExNzUyZmYwYzIyNGM4ZGUwODE4Li5iMjBiMGFjZjg4YTQ5ZmY1MGUzNTQxNTZmNDIx
Yjg2YTA2MTFlZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2Vy
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNSw0NyArMzUsNDUgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFMaXN0U3VnZ2VzdGlv
bnNDbGllbnQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAotV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXIoV2ViUGFnZSogcGFnZSwgRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCogY2xpZW50KQot
ICAgIDogbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50KGNsaWVudCkKK1dlYkRhdGFMaXN0U3Vn
Z2VzdGlvblBpY2tlcjo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKFdlYlBhZ2UmIHBhZ2Us
IFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fY2xp
ZW50KGNsaWVudCkKICAgICAsIG1fcGFnZShwYWdlKQogewogfQogCi1XZWJEYXRhTGlzdFN1Z2dl
c3Rpb25QaWNrZXI6On5XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoKSB7IH0KLQotdm9pZCBX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmhhbmRsZUtleWRvd25XaXRoSWRlbnRpZmllcihj
b25zdCBXVEY6OlN0cmluZyYga2V5KQordm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6
OmhhbmRsZUtleWRvd25XaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGtleSkKIHsKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUtleWRvd25JbkRhdGFMaXN0KGtleSksIG1fcGFn
ZS0+aWRlbnRpZmllcigpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUtleWRv
d25JbkRhdGFMaXN0KGtleSksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwogfQogCi12b2lkIFdlYkRh
dGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFdURjo6U3RyaW5n
JiBzZWxlY3RlZE9wdGlvbikKK3ZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpkaWRT
ZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKIHsKLSAgICBtX2RhdGFM
aXN0U3VnZ2VzdGlvbnNDbGllbnQtPmRpZFNlbGVjdERhdGFMaXN0T3B0aW9uKHNlbGVjdGVkT3B0
aW9uKTsKKyAgICBtX2NsaWVudC5kaWRTZWxlY3REYXRhTGlzdE9wdGlvbihzZWxlY3RlZE9wdGlv
bik7CiB9CiAKIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpkaWRDbG9zZVN1Z2dl
c3Rpb25zKCkKIHsKLSAgICBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQtPmRpZENsb3NlU3Vn
Z2VzdGlvbnMoKTsKKyAgICBtX2NsaWVudC5kaWRDbG9zZVN1Z2dlc3Rpb25zKCk7CiB9CiAKIHZv
aWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpjbG9zZSgpCiB7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpFbmREYXRhTGlzdFN1Z2dlc3Rpb25zKCksIG1fcGFnZS0+aWRlbnRpZmll
cigpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVuZERhdGFMaXN0U3VnZ2VzdGlvbnMo
KSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7CiB9CiAKLXZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9u
UGlja2VyOjpkaXNwbGF5V2l0aEFjdGl2YXRpb25UeXBlKERhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2
YXRpb25UeXBlIHR5cGUpCit2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlzcGxh
eVdpdGhBY3RpdmF0aW9uVHlwZShXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9u
VHlwZSB0eXBlKQogewotICAgIGlmICghbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LT5zdWdn
ZXN0aW9ucygpLnNpemUoKSkgeworICAgIGF1dG8gc3VnZ2VzdGlvbnMgPSBtX2NsaWVudC5zdWdn
ZXN0aW9ucygpOworICAgIGlmIChzdWdnZXN0aW9ucy5pc0VtcHR5KCkpIHsKICAgICAgICAgY2xv
c2UoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcGFnZS0+c2V0QWN0aXZlRGF0
YUxpc3RTdWdnZXN0aW9uUGlja2VyKHRoaXMpOworICAgIG1fcGFnZS5zZXRBY3RpdmVEYXRhTGlz
dFN1Z2dlc3Rpb25QaWNrZXIoKnRoaXMpOwogCi0gICAgRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3Jt
YXRpb24gaW5mbyA9IHsgdHlwZSwgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LT5zdWdnZXN0
aW9ucygpLCBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQtPmVsZW1lbnRSZWN0SW5Sb290Vmll
d0Nvb3JkaW5hdGVzKCkgfTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dEYXRhTGlz
dFN1Z2dlc3Rpb25zKGluZm8pLCBtX3BhZ2UtPmlkZW50aWZpZXIoKSk7CisgICAgV2ViQ29yZTo6
RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24gaW5mbyB7IHR5cGUsIFdURk1vdmUoc3VnZ2Vz
dGlvbnMpLCBtX2NsaWVudC5lbGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpIH07Cisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93RGF0YUxpc3RTdWdnZXN0aW9ucyhpbmZvKSwg
bV9wYWdlLmlkZW50aWZpZXIoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0
U3VnZ2VzdGlvblBpY2tlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oCmluZGV4IDk3MDUzNTk4OTBiNzY2MWFm
NmNhODA3MTcwYjM1M2I1OThjNTBmNzkuLjEzNTEwNzM1MjE0MjllZjg3ZGVkMTQyYzQ5NjE0MTkw
Y2Q4NjMwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgs
NyArMjgsNiBAQAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogCiAjaW5jbHVkZSA8V2Vi
Q29yZS9EYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRGF0YUxpc3RTdWdnZXN0aW9u
c0NsaWVudDsKQEAgLTM4LDE5ICszNywyMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
V2ViUGFnZTsKIAotY2xhc3MgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyIDogcHVibGljIFdl
YkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlciB7CitjbGFzcyBXZWJEYXRhTGlzdFN1Z2dl
c3Rpb25QaWNrZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyIHsKIHB1YmxpYzoKLSAgICBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2ViUGFnZSos
IFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQqKTsKLSAgICB2aXJ0dWFsIH5XZWJE
YXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoKTsKKyAgICBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNr
ZXIoV2ViUGFnZSYsIFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQmKTsKIAotICAg
IHZvaWQgaGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlk
Q2xvc2VTdWdnZXN0aW9ucygpOwotICAgIHZvaWQgY2xvc2UoKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRpc3BsYXlXaXRoQWN0aXZhdGlvblR5cGUoV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uQWN0
aXZhdGlvblR5cGUpIG92ZXJyaWRlOworCiBwcml2YXRlOgotICAgIFdlYkNvcmU6OkRhdGFMaXN0
U3VnZ2VzdGlvbnNDbGllbnQqIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudDsKLSAgICBXZWJQ
YWdlKiBtX3BhZ2U7CisgICAgdm9pZCBoYW5kbGVLZXlkb3duV2l0aElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBkaXNwbGF5V2l0aEFjdGl2YXRpb25UeXBlKFdlYkNv
cmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBlKSBmaW5hbDsKKyAgICB2b2lkIGNs
b3NlKCkgZmluYWw7CisKKyAgICBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50JiBt
X2NsaWVudDsKKyAgICBXZWJQYWdlJiBtX3BhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRl
eCBmNmM5ODRlMzA1ZWM3ZjdkYWVkOTdmNjg2ZTg5YTI3ZmI5MGJiNDdlLi5hZWIwYzYyOGNkNzBk
NDg5Y2Y4N2JkNTBhM2M0MDFjNGU0MGYxMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvQ2hyb21lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50Q2hpbGRJ
dGVyYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GaWxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgpAQCAtNzEsNyArNzIs
NiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSlNFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9K
U0ZpbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTUmFuZ2UuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L05vZGVUcmF2ZXJzYWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BsdWdpbkRvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJUcmVlQXNU
ZXh0Lmg+CkBAIC02NjIsMTcgKzY2Miw4IEBAIGJvb2wgV2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9y
bUVsZW1lbnRzKCkgY29uc3QKICAgICBpZiAoIW1fY29yZUZyYW1lKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9jb3JlRnJhbWUtPmRvY3Vt
ZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
Zm9yIChOb2RlKiBub2RlID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOyBub2RlOyBub2Rl
ID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSkpIHsKLSAgICAgICAgaWYgKCFpczxFbGVtZW50
Pigqbm9kZSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKGlzPEhUTUxGb3Jt
RWxlbWVudD4oKm5vZGUpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJl
dHVybiBmYWxzZTsKKyAgICBhdXRvKiBkb2N1bWVudCA9IG1fY29yZUZyYW1lLT5kb2N1bWVudCgp
OworICAgIHJldHVybiBkb2N1bWVudCAmJiBjaGlsZHJlbk9mVHlwZTxIVE1MRm9ybUVsZW1lbnQ+
KCpkb2N1bWVudCkuZmlyc3QoKTsKIH0KIAogYm9vbCBXZWJGcmFtZTo6Y29udGFpbnNBbnlGb3Jt
Q29udHJvbHMoKSBjb25zdApAQCAtNjgwLDE0ICs2NzEsMTIgQEAgYm9vbCBXZWJGcmFtZTo6Y29u
dGFpbnNBbnlGb3JtQ29udHJvbHMoKSBjb25zdAogICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2NvcmVG
cmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBhdXRvKiBkb2N1bWVudCA9IG1fY29yZUZyYW1lLT5kb2N1
bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGZvciAoTm9kZSogbm9kZSA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsgbm9kZTsgbm9k
ZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUpKSB7Ci0gICAgICAgIGlmICghaXM8RWxlbWVu
dD4oKm5vZGUpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChpczxIVE1MSW5w
dXRFbGVtZW50Pigqbm9kZSkgfHwgaXM8SFRNTFNlbGVjdEVsZW1lbnQ+KCpub2RlKSB8fCBpczxI
VE1MVGV4dEFyZWFFbGVtZW50Pigqbm9kZSkpCisgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxk
cmVuT2ZUeXBlPEVsZW1lbnQ+KCpkb2N1bWVudCkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50PihjaGlsZCkgfHwgaXM8SFRNTFNlbGVjdEVsZW1lbnQ+KGNoaWxk
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGFhOTll
OWRjMGIwMGQ2NTI1OGYzY2U0ODRkYWI1YTkwNDYzMGRiN2MuLmYzMTljMDNmNDdkNjFlMTYyYWRl
MDRlMjlhMTU2MWM3NTVmOTg1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC00MTA1LDkgKzQxMDUsOSBAQCB2b2lkIFdlYlBhZ2U6OmRpZENo
b29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKIAogI2lmIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQogCi12b2lkIFdlYlBhZ2U6OnNldEFjdGl2ZURhdGFMaXN0U3VnZ2VzdGlv
blBpY2tlcihXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIqIGRhdGFMaXN0U3VnZ2VzdGlvblBp
Y2tlcikKK3ZvaWQgV2ViUGFnZTo6c2V0QWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKFdl
YkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlciYgZGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKQogewot
ICAgIG1fYWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyID0gbWFrZVdlYWtQdHIoZGF0YUxp
c3RTdWdnZXN0aW9uUGlja2VyKTsKKyAgICBtX2FjdGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
ciA9IG1ha2VXZWFrUHRyKCZkYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIpOwogfQogCiB2b2lkIFdl
YlBhZ2U6OmRpZFNlbGVjdERhdGFMaXN0T3B0aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRPcHRp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNzZk
MDRhMDRkMWY0YTBiMjQyM2E3ODJhZDViNjgzZWZhMDE4ZTNhNi4uNmQ1Y2QzOGM4YmI1ODI1OTdl
MjQ0NDIxOGU4Y2Y4MWFlYTEwNWFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaApAQCAtNDE2LDcgKzQxNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYg
RU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAgdm9pZCBzZXRBY3RpdmVEYXRhTGlzdFN1Z2dl
c3Rpb25QaWNrZXIoV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKik7CisgICAgdm9pZCBzZXRB
Y3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2Vy
Jik7CiAgICAgdm9pZCBkaWRTZWxlY3REYXRhTGlzdE9wdGlvbihjb25zdCBTdHJpbmcmKTsKICAg
ICB2b2lkIGRpZENsb3NlU3VnZ2VzdGlvbnMoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA0NzM4MzU3NmNm
MDM5M2Q3YTRlZDNmNTg3NzNjMzk5Mzg5ZWVmYWU2Li4wMWEwMjljY2RkMjZkNjBhZjM5MmYzODc0
ODRhNzIwNjNkYTZlNTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjQ5OCwxMSArMjQ5OCwxMiBAQCB2b2lkIFdlYlBh
Z2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoKQogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0KGF1dG9jb3JyZWN0aW9uQ29u
dGV4dCgpKSk7CiB9CiAKLXN0YXRpYyBIVE1MQW5jaG9yRWxlbWVudCogY29udGFpbmluZ0xpbmtF
bGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCitzdGF0aWMgSFRNTEFuY2hvckVsZW1lbnQqIGNvbnRh
aW5pbmdMaW5rQW5jaG9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogewotICAgIGZvciAoYXV0
byYgY3VycmVudEVsZW1lbnQgOiBlbGVtZW50TGluZWFnZShlbGVtZW50KSkgewotICAgICAgICBp
ZiAoY3VycmVudEVsZW1lbnQuaXNMaW5rKCkgJiYgaXM8SFRNTEFuY2hvckVsZW1lbnQ+KGN1cnJl
bnRFbGVtZW50KSkKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVu
dD4oJmN1cnJlbnRFbGVtZW50KTsKKyAgICAvLyBGSVhNRTogVGhlcmUgaXMgY29kZSBpbiB0aGUg
ZHJhZyBjb250cm9sbGVyIHRoYXQgc3VwcG9ydHMgYW55IGxpbmssIGV2ZW4gaWYgaXQncyBub3Qg
YW4gSFRNTEFuY2hvckVsZW1lbnQuIFdoeSBpcyB0aGlzIGRpZmZlcmVudD8KKyAgICBmb3IgKGF1
dG8mIGN1cnJlbnRFbGVtZW50IDogbGluZWFnZU9mVHlwZTxIVE1MQW5jaG9yRWxlbWVudD4oZWxl
bWVudCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmlzTGluaygpKQorICAgICAgICAg
ICAgcmV0dXJuICZjdXJyZW50RWxlbWVudDsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CkBAIC0yNjcyLDcgKzI2NzMsNyBAQCBzdGF0aWMgdm9pZCBlbGVtZW50UG9zaXRpb25JbmZvcm1h
dGlvbihXZWJQYWdlJiBwYWdlLCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbgogewogICAgIEVs
ZW1lbnQqIGxpbmtFbGVtZW50ID0gbnVsbHB0cjsKICAgICBpZiAoZWxlbWVudC5yZW5kZXJlcigp
ICYmIGVsZW1lbnQucmVuZGVyZXIoKS0+aXNSZW5kZXJJbWFnZSgpKQotICAgICAgICBsaW5rRWxl
bWVudCA9IGNvbnRhaW5pbmdMaW5rRWxlbWVudCgmZWxlbWVudCk7CisgICAgICAgIGxpbmtFbGVt
ZW50ID0gY29udGFpbmluZ0xpbmtBbmNob3JFbGVtZW50KGVsZW1lbnQpOwogICAgIGVsc2UgaWYg
KGVsZW1lbnQuaXNMaW5rKCkpCiAgICAgICAgIGxpbmtFbGVtZW50ID0gJmVsZW1lbnQ7CiAKQEAg
LTI5MzgsNyArMjkzOSw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1
aW50MzJfdCBhY3Rpb24pCiAgICAgICAgIGlmIChpczxSZW5kZXJJbWFnZT4oKmVsZW1lbnQucmVu
ZGVyZXIoKSkpIHsKICAgICAgICAgICAgIFVSTCB1cmw7CiAgICAgICAgICAgICBTdHJpbmcgdGl0
bGU7Ci0gICAgICAgICAgICBpZiAoYXV0byogbGlua0VsZW1lbnQgPSBjb250YWluaW5nTGlua0Vs
ZW1lbnQoJmVsZW1lbnQpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogbGlua0VsZW1lbnQgPSBj
b250YWluaW5nTGlua0FuY2hvckVsZW1lbnQoZWxlbWVudCkpIHsKICAgICAgICAgICAgICAgICB1
cmwgPSBsaW5rRWxlbWVudC0+aHJlZigpOwogICAgICAgICAgICAgICAgIHRpdGxlID0gbGlua0Vs
ZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp0aXRsZUF0
dHIpOwogICAgICAgICAgICAgICAgIGlmICghdGl0bGUubGVuZ3RoKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KaW5kZXggNWMxM2Q2MzdlMWY3ZmY2ZjgyZDky
OTQyOGRmYjgyNTA1YjM4Y2FjOS4uYWRjZDAxN2QzMDY1ZTIzMmE2N2NhNDI1NTZmMzVjNWNkZTZl
Y2YwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQpAQCAt
MjUsMTMgKzI1LDYgQEAKIAogI2ltcG9ydCAiRE9NRG9jdW1lbnRJbnRlcm5hbC5oIgogCi0jaW1w
b3J0IDxXZWJDb3JlL0F0dHIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQ0RBVEFTZWN0aW9uLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL0NTU1J1bGVMaXN0Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0NTU1N0eWxl
RGVjbGFyYXRpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUvQ29tbWVudC5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9Eb2N1bWVudEZ1bGxzY3JlZW4uaD4KLSNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW4uaD4KICNpbXBvcnQgIkRPTUFic3RyYWN0Vmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJET01B
dHRySW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUNEQVRBU2VjdGlvbkludGVybmFsLmgiCkBAIC01
NywxNSArNTAsMjIgQEAKICNpbXBvcnQgIkRPTVN0eWxlU2hlZXRMaXN0SW50ZXJuYWwuaCIKICNp
bXBvcnQgIkRPTVRleHRJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NVHJlZVdhbGtlckludGVybmFs
LmgiCi0jaW1wb3J0IDxXZWJDb3JlL0RPTVdpbmRvdy5oPgogI2ltcG9ydCAiRE9NWFBhdGhFeHBy
ZXNzaW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVhQYXRoUmVzdWx0SW50ZXJuYWwuaCIKKyNp
bXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCisjaW1wb3J0ICJPYmpDTm9kZUZpbHRlckNvbmRp
dGlvbi5oIgorI2ltcG9ydCA8V2ViQ29yZS9BdHRyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NEQVRB
U2VjdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9DU1NSdWxlTGlzdC5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9DU1NTdHlsZURlY2xhcmF0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NvbW1lbnQuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvRE9NV2luZG93Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50RnJhZ21lbnQuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvRG9jdW1lbnRGdWxsc2NyZWVuLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50VHlwZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50Lmg+
Ci0jaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MQ29s
bGVjdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MRWxlbWVudC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MSGVhZEVsZW1lbnQuaD4KQEAgLTczLDEyICs3MywxMSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OYW1lTm9kZUxpc3QuaD4KICNp
bXBvcnQgPFdlYkNvcmUvTmF0aXZlTm9kZUZpbHRlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9Ob2Rl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVJdGVyYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9O
b2RlTGlzdC5oPgotI2ltcG9ydCAiT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCIKICNpbXBvcnQg
PFdlYkNvcmUvUHJvY2Vzc2luZ0luc3RydWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jhbmdl
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1N0eWxlUHJvcGVydGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVNoZWV0TGlzdC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UZXh0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NRG9jdW1lbnRGcmFnbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tCmluZGV4IDA3MjkzMGUzOTU4ZTIwYTEyZTNjZTNj
NTdlMTk5NGZlM2RkYzE2NWUuLmNmMWEzYzFmODQzN2JkNWJlOTIwZDg4NGUzNWFjMDUzZjg5Zjg0
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudEZy
YWdtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudEZy
YWdtZW50Lm1tCkBAIC0zMiw3ICszMiw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50RnJh
Z21lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWxlbWVudC5oPgogI2ltcG9ydCAiRXhjZXB0aW9u
SGFuZGxlcnMuaCIKLSNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbGxlY3Rpb24uaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTmFtZU5vZGVMaXN0Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MRmllbGRTZXRFbGVtZW50Lm1tCmluZGV4IGE0YzFiNjA4YzE2
ZDIxZTU4NzcxMDE1MjY3NzliYTY0NTUwNjkwYzMuLmZkOTk0YWI1YmUxNGVjYzNiMjE0Zjk0NTIx
YzhkMzAzYTk2YjkyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MRmllbGRTZXRFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MRmllbGRTZXRFbGVtZW50Lm1tCkBAIC0yNSwyMSArMjUsMTAgQEAKIAogI2ltcG9y
dCAiRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogCi0jaW1wb3J0ICJET01IVE1MQ29sbGVjdGlv
bkludGVybmFsLmgiCiAjaW1wb3J0ICJET01IVE1MRm9ybUVsZW1lbnRJbnRlcm5hbC5oIgotI2lt
cG9ydCAiRE9NSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgotI2ltcG9y
dCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKLSNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbGxlY3Rpb24u
aD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTEZpZWxkU2V0RWxlbWVudC5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MRm9ybUVsZW1lbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1RocmVhZENo
ZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1ZhbGlkaXR5U3RhdGUuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgotI2lt
cG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRN
TEZpZWxkU2V0RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRl
cm5hbCkpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390874</attachid>
            <date>2020-02-15 17:23:43 -0800</date>
            <delta_ts>2020-02-15 17:29:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207816-20200215172342.patch</filename>
            <type>text/plain</type>
            <size>200605</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA3ZDVjMDg3NTUyMmNm
ZGU0MjQwZTU1YTcwZTQ3ZGVmNjE0YTNhNy4uMDM4OTk1OWVhMDFlYzcyZGM2ZGVkNmUzNmQxYjli
NGNmZGUyMDYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5MSBAQAorMjAyMC0wMi0xNSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRv
cnMgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZpbmVkIGVsZW1lbnQgaXRlcmF0b3IgaW1wbGVtZW50YXRp
b24gb24gdGhlIGZvbGxvd2luZyB3YXlzOgorCisgICAgICAgIDEpIFJlbW92ZWQgdGhlIGR1cGxp
Y2F0ZSBkZXNjZW5kYW50IGl0ZXJhdG9yLCBrZWVwaW5nIHRoZSBvbmUgdGhhdCBtYXRjaGVzCisg
ICAgICAgICAgIHRoZSBzdHlsZSBvZiB0aGUgYW5jZXN0b3IgYW5kIGNoaWxkIGl0ZXJhdG9ycy4K
KyAgICAgICAgMikgUmVtb3ZlZCB0aGUgbm9uLXRlbXBsYXRlIGVsZW1lbnRBbmNlc3RvcnMsIGVs
ZW1lbnRDaGlsZHJlbiwgZWxlbWVudERlc2NlbmRhbnRzLAorICAgICAgICAgICBhbmQgZWxlbWVu
dExpbmVhZ2UgZnVuY3Rpb25zIGFuZCBjaGFuZ2VkIGNhbGxlcnMgdG8gdXNlIHh4eE9mVHlwZTxF
bGVtZW50PiBpbnN0ZWFkLgorCisgICAgICAgIEFsc28gcmVwbGFjZWQgdXNlIG9mIEhUTUxDb2xs
ZWN0aW9uIGNsYXNzZXMgaW4gV2ViS2l0IGNvZGUgZm9yIGl0ZXJhdGlvbi4KKyAgICAgICAgVGhl
eSBhcmUgZmluZSBmb3IgdXNlIGZyb20gSmF2YVNjcmlwdCwgYnV0IGludGVybmFsbHkgd2UgaGF2
ZSBtb3JlIGVmZmljaWVudAorICAgICAgICBpdGVyYXRpb24gaWRpb21zLgorCisgICAgICAgICog
SGVhZGVycy5jbWFrZTogUmVtb3ZlZCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmguCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Om1vdXNlQnV0dG9uTGlzdGVuZXIgY29u
c3QpOiBVc2UKKyAgICAgICAgbGluZWFnZU9mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnRMaW5lYWdl
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2li
aWxpdHlJbWFnZU1hcEhpdFRlc3QgY29uc3QpOgorICAgICAgICBVc2UgYW5jZXN0b3JzT2ZUeXBl
IGluc3RlYWQgb2YgYSBoYW5kd3JpdHRlbiBsb29wLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUg
b2YKKyAgICAgICAgSFRNTENvbGxlY3Rpb24uaC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHA6IERpdHRvLgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmNwcDogVXBkYXRlZCBpbmNsdWRlcy4KKyAgICAgICAgKiBkb20vQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5LmNwcDogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50OjpnZXRFbGVtZW50QnlJ
ZCBjb25zdCk6IFVzZQorICAgICAgICBkZXNjZW5kYW50c09mVHlwZSBpbnN0ZWFkb2YgZWxlbWVu
dERlc2NlbmRhbnRzLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlIGNvbnN0KTogVXNlIGxpbmVh
Z2VPZlR5cGUKKyAgICAgICAgaW5zdGVhZCBvZiBhIGhhbmRyd2l0dGVuIGxvb3AuCisKKyAgICAg
ICAgKiBkb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaDogTW92ZWQgdGhlIGRlY2xhcmF0aW9u
cyBvZiB0aGUgZnVuY3Rpb25zCisgICAgICAgIHRvIHRoZSB0b3Agb2YgdGhlIGZpbGUsIHNpbmNl
IHRoZSBjbGFzc2VzIGFyZSByZWFsbHkgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KKyAgICAgICAg
UmVtb3ZlZCB0aGUgc2VwYXJhdGUgIkNvbnN0IiB2ZXJzaW9ucyBvZiBldmVyeXRoaW5nIHNpbmNl
IHdlIGNhbiBqdXN0IHVzZQorICAgICAgICBjb25zdCBpbiB0aGUgdGVtcGxhdGUgYXJndW1lbnQg
dHlwZSBpbnN0ZWFkLiBVc2UgdGhlIHRlcm0gIlJhbmdlIiBpbnN0ZWFkCisgICAgICAgIG9mIHRo
ZSB0ZXJtICJJdGVyYXRvckFkYXB0ZXIiIGZvciB0aGUgY2xhc3MgdGVtcGxhdGVzIGZvciB1c2Ug
aW4gcmFuZ2UtYmFzZWQKKyAgICAgICAgZm9yIGxvb3BzIHNpbmNlIHRoYXQncyBjbG9zZXIgdG8g
bW9kZXJuIEMrKyB0ZXJtaW5vbG9neS4gTWFkZSBtYW55IGZ1bmN0aW9uCisgICAgICAgIG1lbWJl
cnMgY29uc3Qgd2hlcmUgYXBwcm9wcmlhdGUuIFNwZWNpYWxpemVkIGxpbmVhZ2VPZlR5cGUgYW5k
IGFuY2VzdG9yc09mVHlwZQorICAgICAgICBmb3IgRWxlbWVudCB0byBzbGlnaHRseSBvcHRpbWl6
ZSB0aGF0IGNhc2UuIFVzZSBkb3duY2FzdCBpbnN0ZWFkIG9mIHN0YXRpY19jYXN0LgorICAgICAg
ICBEZWxldGVkIGVsZW1lbnRMaW5lYWdlIGFuZCBlbGVtZW50QW5jZXN0b3JzLgorCisgICAgICAg
ICogZG9tL0VsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmg6IFJlbmFtZWQgSXRlcmF0
b3JBZGFwdGVyIHRvIFJhbmdlLgorICAgICAgICBNYWRlIG1vcmUgZnVuY3Rpb24gbWVtYmVycyBj
b25zdC4KKworICAgICAgICAqIGRvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oOiBNb3ZlZCB0aGUg
ZGVjbGFyYXRpb25zIG9mIHRoZSBmdW5jdGlvbnMKKyAgICAgICAgdG8gdGhlIHRvcCBvZiB0aGUg
ZmlsZSwgc2luY2UgdGhlIGNsYXNzZXMgYXJlIHJlYWxseSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxz
LgorICAgICAgICBSZW1vdmVkIHRoZSBzZXBhcmF0ZSAiQ29uc3QiIHZlcnNpb25zIG9mIGV2ZXJ5
dGhpbmcgc2luY2Ugd2UgY2FuIGp1c3QgdXNlCisgICAgICAgIGNvbnN0IGluIHRoZSB0ZW1wbGF0
ZSBhcmd1bWVudCB0eXBlIGluc3RlYWQuIFVzZSB0aGUgdGVybSAiUmFuZ2UiIGluc3RlYWQKKyAg
ICAgICAgb2YgdGhlIHRlcm0gIkl0ZXJhdG9yQWRhcHRlciIgZm9yIHRoZSBjbGFzcyB0ZW1wbGF0
ZXMgZm9yIHVzZSBpbiByYW5nZS1iYXNlZAorICAgICAgICBmb3IgbG9vcHMgc2luY2UgdGhhdCdz
IGNsb3NlciB0byBtb2Rlcm4gQysrIHRlcm1pbm9sb2d5LiBNYWRlIG1hbnkgZnVuY3Rpb24KKyAg
ICAgICAgbWVtYmVycyBjb25zdCB3aGVyZSBhcHByb3ByaWF0ZS4gRGVsZXRlZCBlbGVtZW50Q2hp
bGRyZW4uCisKKyAgICAgICAgKiBkb20vRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oOiBSZW1v
dmVkLgorCisgICAgICAgICogZG9tL0VsZW1lbnRJdGVyYXRvci5oOiBDaGFuZ2VkIEVsZW1lbnRJ
dGVyYXRvciB0byBkZXJpdmUgZnJvbSBzdGQ6Oml0ZXJhdG9yCisgICAgICAgIHRvIG1ha2UgaXRl
cmF0b3IgdHJhaXRzIHdvcmsgZm9yIGFsbCBjbGFzc2VzIGRlcml2ZWQgZnJvbSBpdC4gTWFkZSBj
b25zdHJ1Y3RvcnMKKyAgICAgICAgb2YgRWxlbWVudEl0ZXJhdG9yIHByaXZhdGUgdG8gbWFrZSBp
dCBjbGVhciBpdCdzIGludGVuZGVkIHRvIGJlIHVzZWQgYXMgYSBiYXNlCisgICAgICAgIGNsYXNz
IGFuZCBub3QgaW5zdGFudGlhdGVkLiBBZGRlZCBhIHByb3RlY3RlZCBhdEVuZCBmdW5jdGlvbiB0
aGF0J3MgdXNlZnVsIGluIHRoZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBzb21lIGZ1bmN0
aW9ucyB0aGF0IHdhbnQgdG8gY2hlY2sgdGhlIGVuZCBvZiBpdGVyYXRpb24gd2l0aG91dAorICAg
ICAgICBhbGxvY2F0aW5nIGFuICJlbmQiIGl0ZXJhdG9yLiBEZWxldGVkIEVsZW1lbnRDb25zdEl0
ZXJhdG9yLgorCisgICAgICAgICogZG9tL0xpdmVOb2RlTGlzdC5jcHA6IFJlbW92ZWQgc29tZSB1
bm5lZWRlZCBpbmNsdWRlcywgaW5jbHVkaW5nIEhUTUxDb2xsZWN0aW9uLmguCisKKyAgICAgICAg
KiBkb20vTGl2ZU5vZGVMaXN0Lmg6IFVwZGF0ZWQgc2luY2UgQ29sbGVjdGlvblRyYXZlcnNhbCBu
b3cgdXNlcyB0aGUKKyAgICAgICAgbW9yZSBtb2Rlcm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ciwgbm90IHRoZSBvbGRlciBvbmUgdGhhdCB1c2VkIGEgdmVjdG9yIG9mCisgICAgICAgIGFuY2Vz
dG9ycyB0byBkbyB0aGUgaXRlcmF0aW9uLgorCisgICAgICAgICogZG9tL05vZGUuY3BwOiBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgSFRNTENvbGxlY3Rpb24uaC4KKworICAgICAgICAqIGRv
bS9TZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6
OmNsb3Nlc3QgY29uc3QpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlIGluc3RlYWQgb2YgYW4KKyAgICAg
ICAgZXhwbGljaXQgbG9vcC4KKyAgICAgICAgKFdlYkNvcmU6OmVsZW1lbnRzRm9yTG9jYWxOYW1l
KTogVXNlIGRlc2NlbmRhbnRzT2ZUeXBlIGluc3RlYWQgb2YgZWxlbWVudERlc2NlbmRhbnRzLgor
ICAgICAgICAoV2ViQ29yZTo6YW55RWxlbWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZVRhZ05hbWVTZWxlY3RvckRhdGEgY29uc3Qp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5n
bGVDbGFzc05hbWVTZWxlY3RvckRhdGEgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVTZWxlY3RvckRhdGEgY29uc3QpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVNdWx0
aVNlbGVjdG9yRGF0YSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JE
YXRhTGlzdDo6ZXhlY3V0ZUNvbXBpbGVkU2ltcGxlU2VsZWN0b3JDaGVja2VyIGNvbnN0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29tcGlsZWRT
ZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0IGNvbnN0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29tcGlsZWRTaW5nbGVNdWx0aVNl
bGVjdG9yRGF0YSBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogZG9tL1Nsb3RBc3NpZ25tZW50
LmNwcDogVXBkYXRlZCBpbmNsdWRlcy4KKworICAgICAgICAqIGRvbS9UeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IuaDogTW92ZWQgdGhlIGRlY2xhcmF0aW9ucyBvZiB0aGUgZnVuY3Rpb25z
CisgICAgICAgIHRvIHRoZSB0b3Agb2YgdGhlIGZpbGUsIHNpbmNlIHRoZSBjbGFzc2VzIGFyZSBy
ZWFsbHkgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KKyAgICAgICAgUmVuYW1lZCB0aGUgY2xhc3Nl
cyB0byB0YWtlIG91dCB0aGUgd29yZCAidHlwZWQiIHNpbmNlIHRoZXNlIGl0ZXJhdG9ycyBhcmUg
dGhlCisgICAgICAgIHNhbWUgYXMgdGhlIGFuY2VzdG9yIGFuZCBjaGlsZHJlbiBpdGVyYXRvcnM7
IHRoaXMgZ2l2ZXMgdGhlc2UgdGhlIHNhbWUgbmFtZSBhcworICAgICAgICB0aGUgY2xhc3NlcyBp
biB0aGUgZGVsZXRlZCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggZmlsZSwgYW5kIHdlIGNh
biBmb2xsb3cKKyAgICAgICAgdXAgYnkgcmVuYW1pbmcgdGhpcyBmaWxlIHRvIHRha2UgIlR5cGVk
IiBvdXQgb2YgdGhlIG5hbWUgb2YgdGhlIGZpbGUsIHRvby4KKyAgICAgICAgUmVtb3ZlZCB0aGUg
c2VwYXJhdGUgIkNvbnN0IiB2ZXJzaW9ucyBvZiBldmVyeXRoaW5nIHNpbmNlIHdlIGNhbiBqdXN0
IHVzZQorICAgICAgICBjb25zdCBpbiB0aGUgdGVtcGxhdGUgYXJndW1lbnQgdHlwZSBpbnN0ZWFk
LiBVc2UgdGhlIHRlcm0gIlJhbmdlIiBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSB0ZXJtICJJdGVy
YXRvckFkYXB0ZXIiIGZvciB0aGUgY2xhc3MgdGVtcGxhdGVzIGZvciB1c2UgaW4gcmFuZ2UtYmFz
ZWQKKyAgICAgICAgZm9yIGxvb3BzIHNpbmNlIHRoYXQncyBjbG9zZXIgdG8gbW9kZXJuIEMrKyB0
ZXJtaW5vbG9neS4gTWFkZSBtYW55IGZ1bmN0aW9uCisgICAgICAgIG1lbWJlcnMgY29uc3Qgd2hl
cmUgYXBwcm9wcmlhdGUuIEFkZGVkIGEgbmV3IHNwZWNpYWxpemF0aW9uIHRoYXQgbWFrZXMgYQor
ICAgICAgICBkZXNjZW5kYW50IGl0ZXJhdG9yIHRoYXQgaXMgZmlsdGVyZWQgYmFzZWQgb24gYSBm
dW5jdGlvbiwgZm9yIHVzZSBpbiBpdGVyYXRpbmcKKyAgICAgICAgZGF0YSBsaXN0IHN1Z2dlc3Rp
b25zLgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjphcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQgY29uc3QpOiBVc2UgdGhlIGZ1
bmN0aW9uCisgICAgICAgIGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxCb2R5RWxlbWVudD4gaW5zdGVh
ZCBvZiBnZXRFbGVtZW50QnlUYWdOYW1lKGJvZHlUYWcpLgorICAgICAgICBBbHNvIG1lcmdlZCBh
cHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudCBpbiBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjphcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudCBjb25zdCk6IERlbGV0ZWQuCisKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5oOiBEZWxldGVkIGFwcGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50
LgorCisgICAgICAgICogZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25SdWxlTWF0Y2hlcjo6aXNFeGNsdWRlZCk6IFVzZSBs
aW5lYWdlT2ZUeXBlIGluc3RlYWQgb2YKKyAgICAgICAgZWxlbWVudExpbmVhZ2UuCisKKyAgICAg
ICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbTogVXBkYXRlZCBpbmNs
dWRlcy4KKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6IERpdHRvLgorICAgICAgICAqIGh0
bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0NvbGxl
Y3Rpb25UcmF2ZXJzYWwuaDogVXBkYXRlZCB0byB1c2UgdGhlIG1ldy90eXBlZCB2ZXJzaW9uIG9m
CisgICAgICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuIEFsc28gdXBkYXRlZCB0byB1c2Ug
c2hvcnRlciB0eXBlIG5hbWVzLgorCisgICAgICAgICogaHRtbC9Db2xvcklucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6c3VnZ2VzdGVkQ29sb3JzIGNvbnN0
KTogVXNlIHRoZSBuZXcKKyAgICAgICAgSFRNTERhdGFMaXN0RWxlbWVudDo6c3VnZ2VzdGlvbnMg
aW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIGh0bWwvR2VuZXJpY0NhY2hl
ZEhUTUxDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDYWNoZWRIVE1M
Q29sbGVjdGlvbjx0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1hdGNoZXMgY29uc3QpOgorICAgICAg
ICBVcGRhdGVkIHRvIHVzZSBIVE1MRGF0YUxpc3RFbGVtZW50Ojppc1N1Z2dlc3Rpb24gYW5kIGFk
ZGVkIGEgY29tbWVudCBleHBsYWluaW5nCisgICAgICAgIHdoeSB0aGF0IG1pZ2h0IG5vdCBiZSBu
ZWNlc3NhcnkgaWYgd2UgY29ycmVjdCB0aGUgaW1wbGVtZW50YXRpb24gdG8gbWF0Y2ggdGhlCisg
ICAgICAgIEhUTUwgc3BlY2lmaWNhdGlvbi4KKworICAgICAgICAqIGh0bWwvSFRNTEFsbENvbGxl
Y3Rpb24uaWRsOiBTcGVjaWZ5IFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gb24gdGhlCisg
ICAgICAgIGFyZ3VtZW50IHRvIG5hbWVkSXRlbSwgYW5kIFtBdG9tU3RyaW5nXSBmb3IgdGhlIGFy
Z3VtZW50IHRvIGl0ZW0uCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5pZGw6IERpdHRv
LgorCisgICAgICAgICogaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxEYXRhTGlzdEVsZW1lbnQ6OmlzU3VnZ2VzdGlvbik6IEFkZGVkLgorICAgICAg
ICAqIGh0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5oOiBBZGRlZCBpc1N1Z2dlc3Rpb24gYW5kIHN1
Z2dlc3Rpb25zIGZ1bmN0aW9ucyBzbworICAgICAgICBsb2dpYyBhYm91dCB3aGljaCBkYXRhIGxp
c3Qgb3B0aW9ucyBhcmUgc3VnZ2VzdGlvbnMgaXMgc2hhcmVkLgorCisgICAgICAgICogaHRtbC9I
VE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbGVtZW50QWZmZWN0c0RpcmVjdGlv
bmFsaXR5KTogUmVmYWN0b3JlZCBzbyB3ZSBnZXQgYSBtb3JlIGVmZmljaWVudAorICAgICAgICBp
bXBsZW1lbnRhdGlvbiB3aGVuIHRoZSB0eXBlIG9mIHRoZSBlbGVtZW50IGlzIGtub3duLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRB
ZnRlckNoaWxkQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIFVzZSBsaW5lYWdlT2ZUeXBlIGlu
c3RlYWQgb2YgZWxlbWVudExpbmVhZ2UuCisKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6
IFJlbW92ZWQgc29tZSB1bmVlZWRlZCBmb3J3YXJkIGRlY2xhcmF0aW9ucy4KKworICAgICAgICAq
IGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kV2lkZ2V0
UmVuZGVyZXIpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlIGluc3RlYWQgb2YgYSBsb29wLgorCisgICAg
ICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbXB1dGVXaWxsVmFsaWRhdGUgY29uc3QpOiBVc2UK
KyAgICAgICAgYW5jZXN0b3JzT2ZUeXBlIGluc3RlYWQgb2YgYSBsb29wLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZW5jbG9zaW5nRm9ybUNvbnRyb2xFbGVtZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDogRGVs
ZXRlZCB1bnVzZWQgZW5jbG9zaW5nRm9ybUNvbnRyb2xFbGVtZW50LgorCisgICAgICAgICogaHRt
bC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGw6IFNwZWNpZnkgW1JlcXVpcmVzRXhpc3Rp
bmdBdG9tU3RyaW5nXSBvbgorICAgICAgICB0aGUgYXJndW1lbnQgdG8gbmFtZWRJdGVtLgorCisg
ICAgICAgICogaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBp
bmNsdWRlIG9mIEhUTUxDb2xsZWN0aW9uLmguCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0dXBEYXRl
VGltZUNob29zZXJQYXJhbWV0ZXJzKTogVXNlIHRoZSBuZXcKKyAgICAgICAgSFRNTERhdGFMaXN0
RWxlbWVudDo6c3VnZ2VzdGlvbnMgaW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAg
ICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
T3B0R3JvdXBFbGVtZW50Ojpvd25lclNlbGVjdEVsZW1lbnQgY29uc3QpOiBVc2UgYW5jZXN0b3Jz
T2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2YgYSBoYW5kLXdyaXR0ZW4gbG9vcC4KKworICAgICAg
ICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9w
dGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogVXNlIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFk
IG9mCisgICAgICAgIGNhbGxpbmcgb3duZXJEYXRhTGlzdEVsZW1lbnQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6b3duZXJEYXRhTGlzdEVsZW1lbnQgY29uc3Qp
OiBEZWxldGVkLiBTaW5jZSB0aGUKKyAgICAgICAgc2FtZSBvcHRpb24gY2FuIGJlIHVzZWQgYnkg
bmVzdGVkIGRhdGEgbGlzdCBlbGVtZW50cywgdGhlIGNvbmNlcHQgb2YgYSBzaW5nbGUKKyAgICAg
ICAgIm93bmVyIiBkYXRhIGxpc3QgZWxlbWVudCBpc24ndCBmdWxseSBjb3JyZWN0LgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6Om93bmVyU2VsZWN0RWxlbWVudCBjb25zdCk6
IFVzZSBhbmNlc3RvcnNPZlR5cGUKKyAgICAgICAgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBs
b29wLgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaDogRGVsZXRlZCBvd25lckRh
dGFMaXN0RWxlbWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlk
bDogU3BlY2lmeSBbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIG9uCisgICAgICAgIHRoZSBh
cmd1bWVudCB0byBuYW1lZEl0ZW0uCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwOiBVcGRhdGVkIGluY2x1ZGVzLgorCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0
RWxlbWVudC5pZGw6IFNwZWNpZnkgW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBvbgorICAg
ICAgICB0aGUgYXJndW1lbnQgdG8gbmFtZWRJdGVtLgorCisgICAgICAgICogaHRtbC9IVE1MVGFi
bGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVu
dDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlIGNvbnN0KToKKyAgICAgICAg
VXNlIGF1dG8gc2luY2UgZmluZFBhcmVudFRhYmxlIG5vdyByZXR1cm5zIGEgY29uc3QgdGFibGUg
cG9pbnRlci4KKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRhYmxlQ29sRWxlbWVudDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0
dHJpYnV0ZVN0eWxlIGNvbnN0KToKKyAgICAgICAgRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hU
TUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6
Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKTogTWFkZSBjb25zdC4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxDZWxsU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxHcm91cFN0eWxlKTogRGl0dG8uCisg
ICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50Lmg6IE1hZGUgdGhlIGZ1bmN0aW9ucyBjb25z
dCwgYW5kIG1fc2hhcmVkQ2VsbFN0eWxlCisgICAgICAgIG11dGFibGUuCisKKyAgICAgICAgKiBo
dG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJs
ZVBhcnRFbGVtZW50OjpmaW5kUGFyZW50VGFibGUgY29uc3QpOiBVc2UgYW5jZXN0b3JzT2ZUeXBl
CisgICAgICAgIGluc3RlYWQgb2YgYSBoYW5kLXdyaXR0ZW4gbG9vcC4gQWxzbyByZXZpc2VkIHJl
dHVybiB0eXBlIHRvIGJlIGNvbnN0LWNvbnNpc3RlbnQuCisgICAgICAgICogaHRtbC9IVE1MVGFi
bGVQYXJ0RWxlbWVudC5oOiBVcGRhdGVkIHJldHVybiB0eXBlLgorCisgICAgICAgICogaHRtbC9I
VE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVj
dGlvbi5oLgorCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRIVE1MRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlyZWN0aW9uRm9yRm9ybURh
dGEgY29uc3QpOiBVc2UKKyAgICAgICAgbGluZWFnZU9mVHlwZSByYXRoZXIgdGhhbiBhIGhhbmQt
d3JpdHRlbiBsb29wLiBBbHNvIGdvdCByaWQgb2YgdGhlIG11bHRpcGxlCisgICAgICAgIHN0cmlu
Z3MgaW4gcmV0dXJuIHBhdGhzIHNpbmNlIHRoZSBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBvbmUg
b2YgdHdvIHN0cmluZ3MuCisKKyAgICAgICAgKiBodG1sL01lZGlhRG9jdW1lbnQuY3BwOiBVcGRh
dGVkIGluY2x1ZGVzLgorCisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9ucyk6IFVzZSBI
VE1MRGF0YUxpc3RFbGVtZW50OjpzdWdnZXN0aW9ucworICAgICAgICBpbnN0ZWFkIG9mIEhUTUxD
b2xsZWN0aW9uLiBBbHNvIGFkZGVkIGEgRklYTUUgYmVjYXVzZSB0aGUgY3VycmVudCBsb2dpYyBp
cworICAgICAgICBub3QgcmlnaHQgYWNyb3NzIGxhbmd1YWdlcyBhbmQgd2l0aCBub24tQVNDSUkg
Y2hhcmFjdGVycy4KKworICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcDogUmVt
b3ZlZCBpbmNsdWRlIG9mIEhUTUxDb2xsZWN0aW9uLmguCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0RWxlbWVudHNCeUNvbXB1dGVk
Um9sZSk6CisgICAgICAgIFVzZSBkZXNjZW5kYW50c09mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnRE
ZXNjZW5kYW50cy4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRT
dHlsZXNGb3JOb2RlKTogVXNlIGFuY2VzdG9yc09mVHlwZQorICAgICAgICBpbnN0ZWFkIG9mIGEg
aGFuZC13cml0dGVuIGxvb3AuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjppbnNw
ZWN0KTogVXNlIGlzRWxlbWVudE5vZGUgYW5kIGlzRG9jdW1lbnROb2RlCisgICAgICAgIGluc3Rl
YWQgb2YgdGhlIG11Y2ggc2xvd2VyIG5vZGVUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE1vdXNlZE92ZXJOb2RlKTogVXNlIGlzVGV4dE5vZGUgaW5z
dGVhZCBvZgorICAgICAgICB0aGUgbXVjaCBzbG93ZXIgbm9kZVR5cGUuCisKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOiBEaXR0by4KKworICAgICAgICAqIHBhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbmluZ0xpbmtFbGVt
ZW50KTogQWRkZWQuIFVzZXMgbGluZWFnZU9mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnRMaW5lYWdl
LgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyk6IFVwZGF0
ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxT
bmFwT2Zmc2V0cy5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlvbi5oLgorCisg
ICAgICAgICogcGxhdGZvcm0vRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oOiBSZWR1Y2VkIGlu
Y2x1ZGVzLCB1c2UgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50U2xp
ZGVyVGlja3MpOiBVc2UgSFRNTERhdGFMaXN0RWxlbWVudDo6c3VnZ2VzdGlvbnMKKyAgICAgICAg
aW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojp1
cGRhdGVNYXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyk6CisgICAgICAgIFVzZSBh
bmNlc3RvcnNPZlR5cGUgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorCisgICAgICAg
ICogc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
SW52YWxpZGF0b3I6OmludmFsaWRhdGVTdHlsZVdpdGhNYXRjaEVsZW1lbnQpOiBSZW1vdmUgYW4g
dW5uZWVkZWQKKyAgICAgICAgbG9jYWwgdmFyaWFibGUgYW5kIHVubmVlZGVkIGJyYWNlcy4KKwor
ICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OmlzQXRTaGFkb3dCb3VuZGFyeSk6IFVzZSB0aGUgaXM8U2hhZG93Um9vdD4gZnVuY3Rpb24u
CisKKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6IFVzZSB0aGUgaXM8U1ZHRWxlbWVudD4g
ZnVuY3Rpb24uCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRWxlbWVudDo6dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24pOiBEaXR0by4K
KworICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6IE1hZGUgY29tcHV0ZWRTdHlsZSBwdWJsaWMu
IEF0IGxlYXN0IG9uZSBjYWxsIHNpdGUgbm93IGtub3dzIHRoZQorICAgICAgICBzcGVjaWZpYyB0
eXBlIFNWR0VsZW1lbnQsIGFuZCBzbyBjYW4gY2FsbCBpdCBldmVuIG1vcmUgZWZmaWNpZW50bHkg
dGhhbiBiZWZvcmUuIElmCisgICAgICAgIHdlIGxlZnQgaXQgcHJpdmF0ZSB3ZSdkIGhhdmUgdG8g
Y2FzdCB0byB0aGUgYmFzZSBjbGFzcyB0byBjYWxsIGl0LCBhbmQgdGhlbiB3b3VsZCBuZWVkCisg
ICAgICAgIHZpcnR1YWwgZnVuY3Rpb24gZGlzcGF0Y2guCisKKyAgICAgICAgKiB4bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFy
c2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQpOiBVc2UgbGluZWFnZU9mVHlwZSBpbnN0ZWFkIG9m
CisgICAgICAgIGVsZW1lbnRMaW5lYWdlLiBBbHNvIGFkZCBhIG51bGwgY2hlY2sgdGhhdCBzZWVt
cyB0byBoYXZlIGJlZW4gbmVlZGVkIGJlZm9yZSB0b28uCisKIDIwMjAtMDItMTUgIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVy
XSBCdWlsZCBmYWlsdXJlIHdpdGggQ2xhbmcvbGliYysrIGR1ZSB0byBtaXNzaW5nIFdhbGxUaW1l
4oaSZmxvYXQgZm9yIHN0ZDo6aXNuYW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyZDM5MTBlYzFkY2JmYjJhNGQw
M2EyYmVkYzZkYTE3YmE2YTIzNDk3Li4yM2RjYzQwN2Y1MjZlZjE5MTQyNmE1ZWVhOTI4OThkZmEz
Mjg4YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTAyLTE1ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpc2UgRE9NIGl0ZXJhdG9ycyBpbXBs
ZW1lbnRhdGlvbiBhbmQgdXNhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNzgxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb250YWluZXJFbGVtZW50Rm9yRWxlbWVudCk6
IFVlcyBhbmNlc3RvcnNPZlR5cGUgaW5zdGVhZCBvZiBvd25lckRhdGFMaXN0RWxlbWVudC4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHA6
IFVwZGF0ZWQgaW5jbHVkZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6
Y3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKTogUGFzcyByZWZlcmVuY2VzLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNr
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6Oldl
YkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik6IFRha2UgcmVmZXJlbmNlcworICAgICAgICBpbnN0
ZWFkIG9mIHBvaW50ZXJzLCBzaW5jZSB0aGV5IG11c3QgYm90aCBiZSBub24tbnVsbC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpoYW5kbGVLZXlkb3duV2l0
aElkZW50aWZpZXIpOiBVcGRhdGVkCisgICAgICAgIHRvIHVzZSByZWZlcmVuY2UuCisgICAgICAg
IChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlkU2VsZWN0T3B0aW9uKTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlk
Q2xvc2VTdWdnZXN0aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXI6OmNsb3NlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlzcGxheVdpdGhBY3RpdmF0aW9uVHlwZSk6IERpdHRvLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rp
b25QaWNrZXIuaDogTWFya2VkIHRoZSBjbGFzcworICAgICAgICBmaW5hbCwgbWFkZSBtb3JlIGZ1
bmN0aW9ucyBwcml2YXRlLCB1c2UgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzLAorICAg
ICAgICByZW5hbWVkIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCB0byBtX2NsaWVudCBzaW5j
ZSB0aGVyZSBpcyBvbmx5IG9uZQorICAgICAgICBjbGllbnQgd2UgYXJlIGRlYWxpbmcgd2l0aCBp
biB0aGlzIGNsYXNzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9ybUVsZW1lbnRzIGNv
bnN0KTogVXNlIGNoaWxkcmVuT2ZUeXBlIGluc3RlYWQKKyAgICAgICAgb2YgYSBoYW5kLXdyaXR0
ZW4gbG9vcC4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9ybUNvbnRy
b2xzIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEFjdGl2ZURhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlcik6IFRha2UgcmVmZXJlbmNlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udGFpbmlu
Z0xpbmtBbmNob3JFbGVtZW50KTogVXNlIGxpbmVhZ2VPZlR5cGUgaW5zdGVhZCBvZiBlbGVtZW50
TGluZWFnZS4KKyAgICAgICAgQWxzbyByZW5hbWVkIHRvIGVtcGhhc2l6ZSB0aGF0IHRoaXMgZnVu
Y3Rpb24gb25seSByZXR1cm5zIEhUTUxBbmNob3JFbGVtZW50IGxpbmtzLgorICAgICAgICAoV2Vi
S2l0OjplbGVtZW50UG9zaXRpb25JbmZvcm1hdGlvbik6IFVwZGF0ZWQgZm9yIG5hbWUgYW5kIHR5
cGUgY2hhbmdlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVt
ZW50KTogRGl0dG8uCisKIDIwMjAtMDItMTUgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFu
QGdtYWlsLmNvbT4KIAogICAgICAgICBbR2VvY2x1ZV0gQXZvaWQgdXNhZ2Ugb2YgcHJvdmlkZXIg
aW4gY2FsbGJhY2tzIGFmdGVyIGl0IGhhcyBiZWVuIGRlc3Ryb3llZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IGNhYzA4NzBkYjUwNjNhYzg5OTQ0NjgzYjY2Y2QwMzBhOTg5NWFiY2Eu
LmY4YjUwMmIxNGYzYThjODcyNjBlMGEyMmNmNjMwM2M4ZGMyNzYxOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMi0xNSAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRvcnMgaW1wbGVt
ZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIERPTS9ET01Eb2N1bWVudC5tbTogQ3V0IGRvd24gb24gaW5jbHVkZXMgYW5k
IHJlLXNvcnRlZCB0aGVtLgorICAgICAgICAqIERPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tOiBE
aXR0by4KKyAgICAgICAgKiBET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbTogRGl0dG8uCisK
IDIwMjAtMDItMTQgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIE1hc2sg
V2ViR0wgc3RyaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZGMzOGQ2YmRmMWUzZTNiNzA4ZmFi
YjYyNGMzYWNkYmY5MWFkNmQ4ZS4uMWMxNDNiM2MwZjBlYWYzMzE3MGQ3NmQ3YjRhMTgyMDZmMmYx
MzY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0zOTAsNyArMzkwLDYgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5o
CiAgICAgZG9tL0VsZW1lbnRDb250ZXh0LmgKICAgICBkb20vRWxlbWVudERhdGEuaAotICAgIGRv
bS9FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKICAgICBkb20vRWxlbWVudElkZW50aWZpZXIu
aAogICAgIGRvbS9FbGVtZW50SXRlcmF0b3IuaAogICAgIGRvbS9FbGVtZW50SXRlcmF0b3JBc3Nl
cnRpb25zLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2MTEwMmE0NTZhMzFkNTIxZjA2MmMxZDA4MWI3ZmJlMzdjZTAwNDlmLi43
YmZhZTM1ODg1ZTdlOWFiZGZiNTQyMjdiZjIxZjVhYWViNTZlYzA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjkxLDcgKzI2
OTEsNiBAQAogCQk5M0QxOTYzMzFENkNBQjgyMDBGQzdFNDcgLyogRXhjZXB0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0QxOTYzMjFENkNBQjgy
MDBGQzdFNDcgLyogRXhjZXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTNENDM3OUYxRDU3QjE1MzAwQUI4NUVBIC8qIEpTRXhlY1N0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RjkzNEQ4
MzExODlGMUVFMDA1MDhENUQgLyogSlNFeGVjU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q0MzdBMDFENTdCMTlBMDBBQjg1RUEgLyog
Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCNTZDOUE4MUM4OTMxMjgwMEM0NTZERiAvKiBDdXN0b21FbGVt
ZW50UmVhY3Rpb25RdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTkzRDQzN0ExMUQ1N0IzRjQwMEFCODVFQSAvKiBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBREUxMUY0QTE4RDgzMTFCMDA3ODk4M0IgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDQz
N0EyMUQ1N0IzRkUwMEFCODVFQSAvKiBVUkxVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2QjlEQ0ExODlERTEwMDAwQkI4NDJDIC8qIFVSTFV0
aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTNENDM3QTMxRDU3QjdFMjAwQUI4NUVBIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDcyNkZFNzE2RDlGMjA0MDAz
QTRFNkQgLyogSlNNZWRpYUxpc3RDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q5RDUzQzBEQTI3RTE4MDA3NzIxNkMgLyogUmFuZ2VC
b3VuZGFyeVBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0Q5RDUzQjBEQTI3RTE4MDA3NzIxNkMgLyogUmFuZ2VCb3VuZGFyeVBvaW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyMjU2LDcg
KzEyMjU1LDYgQEAKIAkJQUREQTk0QkYxOTY4NkY4MDAwNDUzMDI5IC8qIEpTRG9jdW1lbnRDdXN0
b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEb2N1bWVudEN1c3RvbS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRERGMUFENDEyNTdDRDlBMDAwM0E3NTkg
LyogUmVuZGVyU1ZHUGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW5kZXJTVkdQYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURERjFB
RDUxMjU3Q0Q5QTAwMDNBNzU5IC8qIFJlbmRlclNWR1BhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHUGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlBREUxMUY0QTE4RDgzMTFCMDA3ODk4M0IgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFERTE2NzM2MTgxMDUwQzMw
MDQ2M0EyRSAvKiBSZW5kZXJQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVuZGVyUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFERUM3OEY3MThFRTUz
MDgwMDEzMTVDMiAvKiBKU0VsZW1lbnRDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNFbGVtZW50Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUFERkUyQjU0MUJENUY0MTIwMERBQjQ1NyAvKiBSZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VVc2FnZU92
ZXJsYXlDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MDk1LDcgKzI4
MDkzLDYgQEAKIAkJCQkzMTNCQ0UxQjIzNUUzQkRCMDBGQzM5RTUgLyogRWxlbWVudENvbnRleHQu
aCAqLywKIAkJCQlCNUI3QTE2RjE3QzEwODA2MDBFNEFBMEEgLyogRWxlbWVudERhdGEuY3BwICov
LAogCQkJCUI1QjdBMTZFMTdDMTA0ODAwMEU0QUEwQSAvKiBFbGVtZW50RGF0YS5oICovLAotCQkJ
CUFERTExRjRBMThEODMxMUIwMDc4OTgzQiAvKiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgg
Ki8sCiAJCQkJMkQyQkVCMkYyMjM0QTMzNDAwNTU0NENBIC8qIEVsZW1lbnRJZGVudGlmaWVyLmgg
Ki8sCiAJCQkJRTRBRTdDMTUxN0QxQkI5NTAwMDlGQjMxIC8qIEVsZW1lbnRJdGVyYXRvci5oICov
LAogCQkJCUU0MDFDMjc0MTdDRTUzRUMwMEM0MUEzNSAvKiBFbGVtZW50SXRlcmF0b3JBc3NlcnRp
b25zLmggKi8sCkBAIC0yOTc1OSw3ICsyOTc1Niw2IEBACiAJCQkJRTQ2QTJCMUUxN0NBNzZCMTAw
MERCQ0Q4IC8qIEVsZW1lbnRDaGlsZEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTNC
Q0UxQzIzNUUzQkU1MDBGQzM5RTUgLyogRWxlbWVudENvbnRleHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUI1QjdBMTcxMTdDMTBBQzAwMEU0QUEwQSAvKiBFbGVtZW50RGF0YS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJOTNENDM3QTExRDU3QjNGNDAwQUI4NUVBIC8qIEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMkJFQjMxMjIzNEEzMzUwMDU1NDRDQSAvKiBF
bGVtZW50SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBRTdDMTYxN0QxQkI5NTAw
MDlGQjMxIC8qIEVsZW1lbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQwMUMyNzUx
N0NFNTNFQzAwQzQxQTM1IC8qIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCAyMDllYjhlNjU4ZTBiNzM0MThlYzJjZDAwY2Q4MGE0
MTZmYTI5MzNhLi40NThhNDA1N2UyY2ZmZDJmNmY4NWNlODAxY2FmOWQ2MWQyODAyOWY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcApAQCAtMTA0NCw3ICsxMDQ0LDcgQEAgRWxlbWVudCogQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6Om1vdXNlQnV0dG9uTGlzdGVuZXIoTW91c2VCdXR0b25MaXN0ZW5lclJlc3Vs
dEYKIAogICAgIC8vIGNoZWNrIGlmIG91ciBwYXJlbnQgaXMgYSBtb3VzZSBidXR0b24gbGlzdGVu
ZXIKICAgICAvLyBGSVhNRTogRG8gdGhlIGNvbnRpbnVhdGlvbiBzZWFyY2ggbGlrZSBhbmNob3JF
bGVtZW50IGRvZXMKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50TGluZWFnZShpczxF
bGVtZW50Pigqbm9kZSkgPyBkb3duY2FzdDxFbGVtZW50Pihub2RlKSA6IG5vZGUtPnBhcmVudEVs
ZW1lbnQoKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEVsZW1l
bnQ+KGlzPEVsZW1lbnQ+KCpub2RlKSA/IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKSA6ICpub2Rl
LT5wYXJlbnRFbGVtZW50KCkpKSB7CiAgICAgICAgIC8vIElmIHdlJ3ZlIHJlYWNoZWQgdGhlIGJv
ZHkgYW5kIHRoaXMgaXMgbm90IGEgY29udHJvbCBlbGVtZW50LCBkbyBub3QgZXhwb3NlIHByZXNz
IGFjdGlvbiBmb3IgdGhpcyBlbGVtZW50IHVubGVzcyBmaWx0ZXIgaXMgSW5jbHVkZUJvZHlFbGVt
ZW50LgogICAgICAgICAvLyBJdCBjYW4gY2F1c2UgZmFsc2UgcG9zaXRpdmVzLCB3aGVyZSBldmVy
eSBwaWVjZSBvZiB0ZXh0IGlzIGxhYmVsZWQgYXMgYWNjZXB0aW5nIHByZXNzIGFjdGlvbnMuCiAg
ICAgICAgIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUoYm9keVRhZykgJiYgaXNTdGF0aWNUZXh0KCkg
JiYgZmlsdGVyID09IEV4Y2x1ZGVCb2R5RWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4
IDk2ZjMzY2I3MzRhNzA4MzY5YjRmM2JhM2Q1NDg0ODhlNTA0OTU3NzAuLjhhODMwMGQwOTdlMTBm
YzRmMzMwMzczMzQxYzExNGExNzE5YTMwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0qIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMzc1LDIx
ICsyMzc1LDE5IEBAIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNj
ZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdChIVE1MQXJlYUVsCiAgICAgaWYgKCFhcmVhKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9
IG51bGxwdHI7Ci0gICAgZm9yIChFbGVtZW50KiBtYXBQYXJlbnQgPSBhcmVhLT5wYXJlbnRFbGVt
ZW50KCk7IG1hcFBhcmVudDsgbWFwUGFyZW50ID0gbWFwUGFyZW50LT5wYXJlbnRFbGVtZW50KCkp
IHsKLSAgICAgICAgaWYgKGlzPEhUTUxNYXBFbGVtZW50PigqbWFwUGFyZW50KSkgewotICAgICAg
ICAgICAgcGFyZW50ID0gYWNjZXNzaWJpbGl0eVBhcmVudEZvckltYWdlTWFwKGRvd25jYXN0PEhU
TUxNYXBFbGVtZW50PihtYXBQYXJlbnQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfQorICAgIGF1dG8qIG1hcFBhcmVudCA9IGFuY2VzdG9yc09mVHlwZTxIVE1MTWFwRWxl
bWVudD4oKmFyZWEpLmZpcnN0KCk7CisgICAgaWYgKCFtYXBQYXJlbnQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgYXV0byogcGFyZW50ID0gYWNjZXNzaWJpbGl0eVBhcmVudEZvcklt
YWdlTWFwKG1hcFBhcmVudCk7CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIAorCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IHBhcmVudC0+Y2hpbGRy
ZW4oKSkgewogICAgICAgICBpZiAoY2hpbGQtPmVsZW1lbnRSZWN0KCkuY29udGFpbnMocG9pbnQp
KQogICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwogICAgIH0KLSAgICAKKwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKaW5kZXggZmRjNjdmOGFjMTU2YTVh
ZGJiYWE2MTM1NzZiODY4MmFlNjI3MTVhMS4uZmY0NzhmZDIzNjE3OGJhMzliYzIyZGMxOTVhMTQ4
YTU3OTJlMjdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcApAQCAtMzEsNyArMzEsNiBAQAogCiAjaW5j
bHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwu
aCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAy
MDUwNmY4ZWNmYWM2NTNlNTVhZDA0ODFkZGE1NjBmNWZkNzJhNTRkLi40ZTAwOWZlZDZiZDBlMzEx
NTdjNjY0MDljN2IzNWZjYzdlZmYyMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAi
RE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93V2ViRGF0YWJh
c2UuaCIKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAj
aW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKQEAgLTM4LDcgKzM3LDYgQEAKICNpbmNsdWRl
ICJKU0V2ZW50LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSlNI
VE1MQXVkaW9FbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1
ZGUgIkpTSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0lEQkZhY3RvcnkuaCIKICNp
bmNsdWRlICJKU1JlbW90ZURPTVdpbmRvdy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKaW5kZXggMmFmMjc2MTg3NzU3ZTg4Mjg4MzA1NWM5MDRl
NmU4NzMzNGNkNGQyMy4uZTU2YjhmZTIxYWM1NjhmMjIwODU1ZDhhNGUzNWRhMDE0NDg1ODNhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCkBA
IC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5oIgogCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxl
bWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUg
IlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNs
dWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCmlu
ZGV4IDk0NTgyZWY0M2Y2ZjNkNzQyYjcwMDg3Mjk2OWUzZjkzOTVjZGQyNjcuLjViMDk1YWNiZjFj
ZDU0MTMwOGUxYTBmYmYwMzUwMTU5MTkxMDY1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
dXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCkBAIC0yOSwxNCArMjksMTIgQEAKICNpbmNsdWRlICJD
dXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkVsZW1l
bnRUcmF2ZXJzYWwuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJK
U0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJl
ZC5oIgogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50RnJhZ21lbnQuY3BwCmluZGV4IDhmMjFiMjc5MzUwMzc2MTllYjEwM2I5NGNjMjBj
NzJjYmI3MTFhMTguLjJhMjVhYjJlNWFhNzY3OTY1MDgzNzBhZWZhMjkxZTcyYzdjMWM2NzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAK
ICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgot
I2luY2x1ZGUgIkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKQEAgLTEwMyw3ICsxMDMsNyBA
QCBFbGVtZW50KiBEb2N1bWVudEZyYWdtZW50OjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9tU3Ry
aW5nJiBpZCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRyZWVTY29wZSgpLmdldEVsZW1lbnRCeUlk
KGlkKTsKIAogICAgIC8vIE90aGVyd2lzZSwgZmFsbCBiYWNrIHRvIGl0ZXJhdGluZyBhbGwgb2Yg
dGhlIGVsZW1lbnQgZGVzY2VuZGFudHMuCi0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVu
dERlc2NlbmRhbnRzKCp0aGlzKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRh
bnRzT2ZUeXBlPEVsZW1lbnQ+KCp0aGlzKSkgewogICAgICAgICBpZiAoZWxlbWVudC5nZXRJZEF0
dHJpYnV0ZSgpID09IGlkKQogICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RWxlbWVudCo+
KCZlbGVtZW50KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggODcxOGU2ZDg2YWQ3
ZmU1MDhiMTM4NzA2YTY1ZDI5NWFkZDQzOWM1Mi4uMDExN2EzNjZiYzcyNTc5NWE1NmZlYjk5YWUx
ZmUxNjI3ODM4ZWViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNCw3ICs0LDcgQEAKICAq
ICAgICAgICAgICAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogICAgICAg
ICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQogICogICAgICAgICAg
IChDKSAyMDA3IERhdmlkIFNtaXRoIChjYXRmaXNoLm1hbkBnbWFpbC5jb20pCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAg
ICAgICAgICAgKEMpIDIwMDcgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9yZykKICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCkBAIC02MCw3ICs2MCw2IEBACiAjaW5jbHVkZSAiR2V0QW5pbWF0aW9uc09wdGlvbnMuaCIK
ICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVu
dC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEh0bWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTExhYmVsRWxl
bWVudC5oIgpAQCAtMzQwMCwyNiArMzM5OSwxNCBAQCB1bnNpZ25lZCBFbGVtZW50OjpyYXJlRGF0
YUNoaWxkSW5kZXgoKSBjb25zdAogCiBBdG9tU3RyaW5nIEVsZW1lbnQ6OmNvbXB1dGVJbmhlcml0
ZWRMYW5ndWFnZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGNvbnN0IEVsZW1lbnREYXRhKiBlbGVtZW50
RGF0YSA9IHRoaXMtPmVsZW1lbnREYXRhKCkpIHsKLSAgICAgICAgaWYgKGNvbnN0IEF0dHJpYnV0
ZSogYXR0cmlidXRlID0gZWxlbWVudERhdGEtPmZpbmRMYW5ndWFnZUF0dHJpYnV0ZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFsdWUoKTsKLSAgICB9Ci0KICAgICAvLyBUaGUg
bGFuZ3VhZ2UgcHJvcGVydHkgaXMgaW5oZXJpdGVkLCBzbyB3ZSBpdGVyYXRlIG92ZXIgdGhlIHBh
cmVudHMgdG8gZmluZCB0aGUgZmlyc3QgbGFuZ3VhZ2UuCi0gICAgY29uc3QgTm9kZSogY3VycmVu
dE5vZGUgPSB0aGlzOwotICAgIHdoaWxlICgoY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS0+cGFy
ZW50Tm9kZSgpKSkgewotICAgICAgICBpZiAoaXM8RWxlbWVudD4oKmN1cnJlbnROb2RlKSkgewot
ICAgICAgICAgICAgaWYgKGNvbnN0IEVsZW1lbnREYXRhKiBlbGVtZW50RGF0YSA9IGRvd25jYXN0
PEVsZW1lbnQ+KCpjdXJyZW50Tm9kZSkuZWxlbWVudERhdGEoKSkgewotICAgICAgICAgICAgICAg
IGlmIChjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnREYXRhLT5maW5kTGFuZ3Vh
Z2VBdHRyaWJ1dGUoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFs
dWUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChpczxEb2N1bWVudD4oKmN1
cnJlbnROb2RlKSkgewotICAgICAgICAgICAgLy8gY2hlY2tpbmcgdGhlIE1JTUUgY29udGVudC1s
YW5ndWFnZQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50PigqY3VycmVudE5v
ZGUpLmNvbnRlbnRMYW5ndWFnZSgpOworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVhZ2VP
ZlR5cGU8RWxlbWVudD4oKnRoaXMpKSB7CisgICAgICAgIGlmIChhdXRvKiBlbGVtZW50RGF0YSA9
IGVsZW1lbnQuZWxlbWVudERhdGEoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGF0dHJpYnV0
ZSA9IGVsZW1lbnREYXRhLT5maW5kTGFuZ3VhZ2VBdHRyaWJ1dGUoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gYXR0cmlidXRlLT52YWx1ZSgpOwogICAgICAgICB9CiAgICAgfQotCi0gICAgcmV0
dXJuIG51bGxBdG9tKCk7CisgICAgcmV0dXJuIGRvY3VtZW50KCkuY29udGVudExhbmd1YWdlKCk7
CiB9CiAKIExvY2FsZSYgRWxlbWVudDo6bG9jYWxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgKaW5kZXggNGI2MmQzOGIzOGZkMzg0OWM3Mzdh
Y2E4N2VmODQ1MjdmODM3NTVmMC4uODA1MTQzNjc0ZDYwODFjNDc0MjA2MTg5MjQ4NGVmYzkxMWUz
ZDQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjksNiArMjksMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0ZW1wbGF0ZTx0eXBlbmFt
ZT4gY2xhc3MgRWxlbWVudEFuY2VzdG9yUmFuZ2U7CisKKy8vIFJhbmdlIGZvciBpdGVyYXRpbmcg
YW4gZWxlbWVudCBhbmQgaXRzIGFuY2VzdG9ycy4KK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPiBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShFbGVt
ZW50JiBmaXJzdCk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudEFuY2Vz
dG9yUmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoY29uc3QgRWxlbWVudCYg
Zmlyc3QpOworCisvLyBSYW5nZSBmb3IgaXRlcmF0aW5nIGEgbm9kZSdzIGVsZW1lbnQgYW5jZXN0
b3JzLgordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdl
PEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNPZlR5cGUoTm9kZSYgZGVzY2VuZGFudCk7Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29uc3QgRWxlbWVu
dFR5cGU+IGFuY2VzdG9yc09mVHlwZShjb25zdCBOb2RlJiBkZXNjZW5kYW50KTsKKwogdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogY2xhc3MgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3Ig
OiBwdWJsaWMgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiB7CiBwdWJsaWM6CkBAIC0zOCw0
NiArNDgsMTcgQEAgcHVibGljOgogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotY2xhc3MgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50Q29u
c3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gewotcHVibGljOgotICAgIEVsZW1lbnRBbmNlc3RvckNv
bnN0SXRlcmF0b3IoKTsKLSAgICBleHBsaWNpdCBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9y
KGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKLSAgICBFbGVtZW50QW5jZXN0b3JDb25zdEl0
ZXJhdG9yJiBvcGVyYXRvcisrKCk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+Ci1jbGFzcyBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXIgeworY2xhc3MgRWxlbWVu
dEFuY2VzdG9yUmFuZ2UgewogcHVibGljOgotICAgIGV4cGxpY2l0IEVsZW1lbnRBbmNlc3Rvckl0
ZXJhdG9yQWRhcHRlcihFbGVtZW50VHlwZSogZmlyc3QpOwotICAgIEVsZW1lbnRBbmNlc3Rvckl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpOwotICAgIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiBlbmQoKTsKLSAgICBFbGVtZW50VHlwZSogZmlyc3QoKSB7IHJldHVybiBt
X2ZpcnN0OyB9CisgICAgZXhwbGljaXQgRWxlbWVudEFuY2VzdG9yUmFuZ2UoRWxlbWVudFR5cGUq
IGZpcnN0KTsKKyAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4o
KSBjb25zdDsKKyAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCkg
Y29uc3Q7CisgICAgRWxlbWVudFR5cGUqIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdDsg
fQogCiBwcml2YXRlOgotICAgIEVsZW1lbnRUeXBlKiBtX2ZpcnN0OworICAgIEVsZW1lbnRUeXBl
KiBjb25zdCBtX2ZpcnN0OwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
Y2xhc3MgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXIgewotcHVibGljOgotICAg
IGV4cGxpY2l0IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IEVsZW1l
bnRUeXBlKiBmaXJzdCk7Ci0gICAgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT4gYmVnaW4oKSBjb25zdDsKLSAgICBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPiBlbmQoKSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50VHlwZSogZmlyc3QoKSBj
b25zdCB7IHJldHVybiBtX2ZpcnN0OyB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgRWxlbWVudFR5
cGUqIG1fZmlyc3Q7Ci19OwotCi1FbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dD4gZWxlbWVudExpbmVhZ2UoRWxlbWVudCogZmlyc3QpOwotRWxlbWVudEFuY2VzdG9yQ29uc3RJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudExpbmVhZ2UoY29uc3QgRWxlbWVudCogZmly
c3QpOwotRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRBbmNl
c3RvcnMoRWxlbWVudCogZGVzY2VuZGFudCk7Ci1FbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9y
QWRhcHRlcjxFbGVtZW50PiBlbGVtZW50QW5jZXN0b3JzKGNvbnN0IEVsZW1lbnQqIGRlc2NlbmRh
bnQpOwotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JJdGVy
YXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoRWxlbWVudCYgZmlyc3QpOwot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShjb25zdCBFbGVtZW50JiBmaXJz
dCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZUeXBlKE5vZGUmIGRlc2NlbmRhbnQp
OwotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JDb25zdEl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZUeXBlKGNvbnN0IE5vZGUmIGRl
c2NlbmRhbnQpOwotCiAvLyBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcgogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+CkBAIC05NSwxMTkgKzc2LDcwIEBAIGlubGluZSBFbGVtZW50QW5j
ZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yKEVsZW1l
bnRUeXBlCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudEFu
Y2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVt
ZW50VHlwZT46Om9wZXJhdG9yKysoKQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50
QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+Ojp0cmF2ZXJzZUFuY2VzdG9yKCkpOwotfQotCi0vLyBFbGVtZW50QW5jZXN0b3JDb25zdEl0
ZXJhdG9yCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudEFuY2VzdG9yQ29uc3RJ
dGVyYXRvcigpCi0gICAgOiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obnVsbHB0
cikKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1l
bnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50QW5jZXN0b3JDb25z
dEl0ZXJhdG9yKGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+KG51bGxwdHIsIGN1cnJlbnQpCi17Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT46Om9wZXJhdG9yKysoKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50QW5jZXN0
b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6dHJhdmVyc2VBbmNlc3RvcigpKTsKKyAgICBFbGVtZW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+Ojp0cmF2ZXJzZUFuY2VzdG9yKCk7CisgICAgcmV0dXJuICp0aGlzOwogfQogCi0vLyBF
bGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXIKKy8vIEVsZW1lbnRBbmNlc3RvclJhbmdlCiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0
ZXIoRWxlbWVudFR5cGUqIGZpcnN0KQoraW5saW5lIEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1l
bnRUeXBlPjo6RWxlbWVudEFuY2VzdG9yUmFuZ2UoRWxlbWVudFR5cGUqIGZpcnN0KQogICAgIDog
bV9maXJzdChmaXJzdCkKIHsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0
b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbigpCitpbmxpbmUgRWxlbWVudEFu
Y2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRU
eXBlPjo6YmVnaW4oKSBjb25zdAogewogICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JJdGVyYXRv
cjxFbGVtZW50VHlwZT4obV9maXJzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVu
dEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkKK2lubGluZSBFbGVt
ZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8RWxl
bWVudFR5cGU+OjplbmQoKSBjb25zdAogewogICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JJdGVy
YXRvcjxFbGVtZW50VHlwZT4oKTsKIH0KIAotLy8gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRv
ckFkYXB0ZXIKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1l
bnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6RWxlbWVudEFuY2Vz
dG9yQ29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgRWxlbWVudFR5cGUqIGZpcnN0KQotICAgIDog
bV9maXJzdChmaXJzdCkKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRB
bmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4oKSBjb25zdAot
ewotICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiht
X2ZpcnN0KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVs
ZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvckNv
bnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4oKTsKLX0KLQogLy8g
U3RhbmRhbG9uZSBmdW5jdGlvbnMKIAotaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRh
cHRlcjxFbGVtZW50PiBlbGVtZW50TGluZWFnZShFbGVtZW50KiBmaXJzdCkKLXsKLSAgICByZXR1
cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+KGZpcnN0KTsKLX0KLQot
aW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1l
bnRMaW5lYWdlKGNvbnN0IEVsZW1lbnQqIGZpcnN0KQotewotICAgIHJldHVybiBFbGVtZW50QW5j
ZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PihmaXJzdCk7Ci19Ci0KLWlubGluZSBF
bGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudEFuY2VzdG9ycyhF
bGVtZW50KiBkZXNjZW5kYW50KQordGVtcGxhdGU8PiBpbmxpbmUgRWxlbWVudEFuY2VzdG9yUmFu
Z2U8RWxlbWVudD4gbGluZWFnZU9mVHlwZTxFbGVtZW50PihFbGVtZW50JiBmaXJzdCkKIHsKLSAg
ICByZXR1cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+KGRlc2NlbmRh
bnQtPnBhcmVudEVsZW1lbnQoKSk7Ci19Ci0KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50QW5jZXN0b3JzKGNvbnN0IEVsZW1lbnQqIGRl
c2NlbmRhbnQpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFw
dGVyPEVsZW1lbnQ+KGRlc2NlbmRhbnQtPnBhcmVudEVsZW1lbnQoKSk7CisgICAgcmV0dXJuIEVs
ZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnQ+KCZmaXJzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8
RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoRWxlbWVudCYgZmlyc3QpCitpbmxpbmUgRWxlbWVu
dEFuY2VzdG9yUmFuZ2U8RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoRWxlbWVudCYgZmlyc3Qp
CiB7CiAgICAgaWYgKGlzPEVsZW1lbnRUeXBlPihmaXJzdCkpCi0gICAgICAgIHJldHVybiBFbGVt
ZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KHN0YXRpY19jYXN0PEVsZW1l
bnRUeXBlKj4oJmZpcnN0KSk7CisgICAgICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JSYW5nZTxF
bGVtZW50VHlwZT4oJmRvd25jYXN0PEVsZW1lbnRUeXBlPihmaXJzdCkpOwogICAgIHJldHVybiBh
bmNlc3RvcnNPZlR5cGU8RWxlbWVudFR5cGU+KGZpcnN0KTsKIH0KIAordGVtcGxhdGU8PiBpbmxp
bmUgRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29uc3QgRWxlbWVudD4gbGluZWFnZU9mVHlwZTxFbGVt
ZW50Pihjb25zdCBFbGVtZW50JiBmaXJzdCkKK3sKKyAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9y
UmFuZ2U8Y29uc3QgRWxlbWVudD4oJmZpcnN0KTsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVs
ZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKGNvbnN0IEVsZW1lbnQmIGZpcnN0KQoraW5saW5lIEVs
ZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKGNvbnN0
IEVsZW1lbnQmIGZpcnN0KQogewogICAgIGlmIChpczxFbGVtZW50VHlwZT4oZmlyc3QpKQotICAg
ICAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5
cGU+KHN0YXRpY19jYXN0PGNvbnN0IEVsZW1lbnRUeXBlKj4oJmZpcnN0KSk7CisgICAgICAgIHJl
dHVybiBFbGVtZW50QW5jZXN0b3JSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4oJmRvd25jYXN0PEVs
ZW1lbnRUeXBlPihmaXJzdCkpOwogICAgIHJldHVybiBhbmNlc3RvcnNPZlR5cGU8RWxlbWVudFR5
cGU+KGZpcnN0KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5l
IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZU
eXBlKE5vZGUmIGRlc2NlbmRhbnQpCitpbmxpbmUgRWxlbWVudEFuY2VzdG9yUmFuZ2U8RWxlbWVu
dFR5cGU+IGFuY2VzdG9yc09mVHlwZShOb2RlJiBkZXNjZW5kYW50KQogewogICAgIEVsZW1lbnRU
eXBlKiBmaXJzdCA9IGZpbmRFbGVtZW50QW5jZXN0b3JPZlR5cGU8RWxlbWVudFR5cGU+KGRlc2Nl
bmRhbnQpOwotICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dFR5cGU+KGZpcnN0KTsKKyAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8RWxlbWVudFR5
cGU+KGZpcnN0KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5l
IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBhbmNlc3Rv
cnNPZlR5cGUoY29uc3QgTm9kZSYgZGVzY2VuZGFudCkKK2lubGluZSBFbGVtZW50QW5jZXN0b3JS
YW5nZTxjb25zdCBFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZUeXBlKGNvbnN0IE5vZGUmIGRlc2Nl
bmRhbnQpCiB7CiAgICAgY29uc3QgRWxlbWVudFR5cGUqIGZpcnN0ID0gZmluZEVsZW1lbnRBbmNl
c3Rvck9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oZGVzY2VuZGFudCk7Ci0gICAgcmV0dXJuIEVs
ZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihmaXJzdCk7Cisg
ICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPihmaXJzdCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmgKaW5kZXggNDhlM2IxYTYxOGQy
ZmUwYTI4NzY3YjM3MzFmMmZhZGY5NzNlZmJjZS4uZDFkZGIwZjczNzUwMTU2NDU5N2IwYTAyMzRl
MmI0NjIwMWQ1ZGU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBbmRU
ZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRB
bmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmgKQEAgLTM2LDggKzM2LDggQEAgY2xhc3MgRWxlbWVu
dEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgewogcHVibGljOgogICAgIEVsZW1lbnRBbmRUZXh0
RGVzY2VuZGFudEl0ZXJhdG9yKCk7CiAgICAgZW51bSBGaXJzdENoaWxkVGFnIHsgRmlyc3RDaGls
ZCB9OwotICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKENvbnRhaW5lck5vZGUm
IHJvb3QsIEZpcnN0Q2hpbGRUYWcpOwotICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJh
dG9yKENvbnRhaW5lck5vZGUmIHJvb3QsIE5vZGUqIGN1cnJlbnQpOworICAgIEVsZW1lbnRBbmRU
ZXh0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QsIEZpcnN0Q2hp
bGRUYWcpOworICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRh
aW5lck5vZGUmIHJvb3QsIE5vZGUqIGN1cnJlbnQpOwogCiAgICAgRWxlbWVudEFuZFRleHREZXNj
ZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IHJldHVybiB0cmF2ZXJzZU5leHQoKTsgfQog
CkBAIC02Myw5ICs2Myw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBp
c0VsZW1lbnRPclRleHQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8RWxlbWVudD4obm9k
ZSkgfHwgaXM8VGV4dD4obm9kZSk7IH0KLSAgICBzdGF0aWMgTm9kZSogZmlyc3RDaGlsZChOb2Rl
Jik7Ci0gICAgc3RhdGljIE5vZGUqIG5leHRTaWJsaW5nKE5vZGUmKTsKLSAgICBzdGF0aWMgTm9k
ZSogcHJldmlvdXNTaWJsaW5nKE5vZGUmKTsKKyAgICBzdGF0aWMgTm9kZSogZmlyc3RDaGlsZChj
b25zdCBOb2RlJik7CisgICAgc3RhdGljIE5vZGUqIG5leHRTaWJsaW5nKGNvbnN0IE5vZGUmKTsK
KyAgICBzdGF0aWMgTm9kZSogcHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUmKTsKIAogICAgIHZv
aWQgcG9wQW5jZXN0b3JTaWJsaW5nU3RhY2soKTsKIApAQCAtODIsMTcgKzgyLDE3IEBAIHByaXZh
dGU6CiAjZW5kaWYKIH07CiAKLWNsYXNzIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9y
QWRhcHRlciB7CitjbGFzcyBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZSB7CiBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENv
bnRhaW5lck5vZGUmIHJvb3QpOwotICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9y
IGJlZ2luKCk7Ci0gICAgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgZW5kKCk7Cisg
ICAgZXhwbGljaXQgRWxlbWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVy
Tm9kZSYgcm9vdCk7CisgICAgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgYmVnaW4o
KSBjb25zdDsKKyAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBlbmQoKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICBDb250YWluZXJOb2RlJiBtX3Jvb3Q7CisgICAgY29uc3QgQ29u
dGFpbmVyTm9kZSYgbV9yb290OwogfTsKIAotRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0
b3JBZGFwdGVyIGVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudHMoQ29udGFpbmVyTm9kZSYpOworRWxl
bWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2UgZWxlbWVudEFuZFRleHREZXNjZW5kYW50cyhDb250
YWluZXJOb2RlJik7CiAKIC8vIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yCiAKQEAg
LTEwMSw3ICsxMDEsNyBAQCBpbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6
OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKCkKIHsKIH0KIAotaW5saW5lIEVsZW1l
bnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVy
YXRvcihDb250YWluZXJOb2RlJiByb290LCBGaXJzdENoaWxkVGFnKQoraW5saW5lIEVsZW1lbnRB
bmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRv
cihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBGaXJzdENoaWxkVGFnKQogICAgIDogbV9jdXJy
ZW50KGZpcnN0Q2hpbGQocm9vdCkpCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAsIG1fYXNzZXJ0
aW9ucyhtX2N1cnJlbnQpCkBAIC0xMTMsNyArMTEzLDcgQEAgaW5saW5lIEVsZW1lbnRBbmRUZXh0
RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihDb250
YWkKICAgICBtX2RlcHRoID0gMTsKIH0KIAotaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFu
dEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihDb250YWluZXJOb2Rl
JiByb290LCBOb2RlKiBjdXJyZW50KQoraW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0
ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJO
b2RlJiByb290LCBOb2RlKiBjdXJyZW50KQogICAgIDogbV9jdXJyZW50KGN1cnJlbnQpCiAjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICAsIG1fYXNzZXJ0aW9ucyhtX2N1cnJlbnQpCkBAIC0xNDgsNyAr
MTQ4LDcgQEAgaW5saW5lIHZvaWQgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OmRy
b3BBc3NlcnRpb25zKCkKICNlbmRpZgogfQogCi1pbmxpbmUgTm9kZSogRWxlbWVudEFuZFRleHRE
ZXNjZW5kYW50SXRlcmF0b3I6OmZpcnN0Q2hpbGQoTm9kZSYgY3VycmVudCkKK2lubGluZSBOb2Rl
KiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6Zmlyc3RDaGlsZChjb25zdCBOb2Rl
JiBjdXJyZW50KQogewogICAgIGF1dG8qIG5vZGUgPSBjdXJyZW50LmZpcnN0Q2hpbGQoKTsKICAg
ICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T3JUZXh0KCpub2RlKSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBpbmxpbmUgTm9kZSogRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OmZpcnN0
Q2hpbGQoTm9kZSYgY3VycmVudCkKICAgICByZXR1cm4gbm9kZTsKIH0KIAotaW5saW5lIE5vZGUq
IEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpuZXh0U2libGluZyhOb2RlJiBjdXJy
ZW50KQoraW5saW5lIE5vZGUqIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpuZXh0
U2libGluZyhjb25zdCBOb2RlJiBjdXJyZW50KQogewogICAgIGF1dG8qIG5vZGUgPSBjdXJyZW50
Lm5leHRTaWJsaW5nKCk7CiAgICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9yVGV4dCgqbm9k
ZSkpCkBAIC0xNjQsNyArMTY0LDcgQEAgaW5saW5lIE5vZGUqIEVsZW1lbnRBbmRUZXh0RGVzY2Vu
ZGFudEl0ZXJhdG9yOjpuZXh0U2libGluZyhOb2RlJiBjdXJyZW50KQogICAgIHJldHVybiBub2Rl
OwogfQogCi1pbmxpbmUgTm9kZSogRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OnBy
ZXZpb3VzU2libGluZyhOb2RlJiBjdXJyZW50KQoraW5saW5lIE5vZGUqIEVsZW1lbnRBbmRUZXh0
RGVzY2VuZGFudEl0ZXJhdG9yOjpwcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSYgY3VycmVudCkK
IHsKICAgICBhdXRvKiBub2RlID0gY3VycmVudC5wcmV2aW91c1NpYmxpbmcoKTsKICAgICB3aGls
ZSAobm9kZSAmJiAhaXNFbGVtZW50T3JUZXh0KCpub2RlKSkKQEAgLTI5NCwyOCArMjk0LDI4IEBA
IGlubGluZSBib29sIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvciE9
KGNvbnN0IEVsZW1lbnRBbmRUZXh0RGVzCiAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwog
fQogCi0vLyBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIKKy8vIEVsZW1l
bnRBbmRUZXh0RGVzY2VuZGFudFJhbmdlCiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRh
bnRJdGVyYXRvckFkYXB0ZXI6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRl
cihDb250YWluZXJOb2RlJiByb290KQoraW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudFJh
bmdlOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZShjb25zdCBDb250YWluZXJOb2RlJiBy
b290KQogICAgIDogbV9yb290KHJvb3QpCiB7CiB9CiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERl
c2NlbmRhbnRJdGVyYXRvciBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI6
OmJlZ2luKCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBFbGVtZW50
QW5kVGV4dERlc2NlbmRhbnRSYW5nZTo6YmVnaW4oKSBjb25zdAogewogICAgIHJldHVybiBFbGVt
ZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihtX3Jvb3QsIEVsZW1lbnRBbmRUZXh0RGVzY2Vu
ZGFudEl0ZXJhdG9yOjpGaXJzdENoaWxkKTsKIH0KIAotaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVz
Y2VuZGFudEl0ZXJhdG9yIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjo6
ZW5kKCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBFbGVtZW50QW5k
VGV4dERlc2NlbmRhbnRSYW5nZTo6ZW5kKCkgY29uc3QKIHsKICAgICByZXR1cm4geyB9OwogfQog
CiAvLyBTdGFuZGFsb25lIGZ1bmN0aW9ucwogCi1pbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5k
YW50SXRlcmF0b3JBZGFwdGVyIGVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudHMoQ29udGFpbmVyTm9k
ZSYgcm9vdCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZSBlbGVtZW50QW5k
VGV4dERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUmIHJvb3QpCiB7Ci0gICAgcmV0dXJuIEVsZW1l
bnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcihyb290KTsKKyAgICByZXR1cm4gRWxl
bWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2Uocm9vdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0ZXJhdG9yLmgKaW5kZXggOGUz
OGZiNTAzMmE4MjM3NzZlMmE3YmNhM2FjMjU4Y2IxNTA2YzQwMC4uMTNiOGMwMThkZDRmMThlMWY5
Nzg5M2M3NWIwYTM1ZTk0Y2JmOWJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRDaGlsZEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGls
ZEl0ZXJhdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjksMTUgKzI5LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordGVt
cGxhdGU8dHlwZW5hbWU+IGNsYXNzIEVsZW1lbnRDaGlsZFJhbmdlOworCisvLyBSYW5nZSBmb3Ig
aXRlcmF0aW5nIHRocm91Z2ggY2hpbGQgZWxlbWVudHMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+IEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShD
b250YWluZXJOb2RlJik7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRD
aGlsZFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShjb25zdCBDb250YWlu
ZXJOb2RlJik7CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGNsYXNzIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gewog
cHVibGljOgotICAgIHR5cGVkZWYgRWxlbWVudFR5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVm
IHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiBFbGVtZW50VHlwZSogcG9p
bnRlcjsKLSAgICB0eXBlZGVmIEVsZW1lbnRUeXBlJiByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBz
dGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwotCiAgICAgRWxlbWVu
dENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKICAgICBFbGVtZW50
Q2hpbGRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQsIEVsZW1lbnRUeXBlKiBj
dXJyZW50KTsKICAgICBFbGVtZW50Q2hpbGRJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwpAQCAtNDUs
NTUgKzQ1LDIxIEBAIHB1YmxpYzoKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWNsYXNzIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNvbnN0IEVsZW1l
bnRUeXBlIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBl
OwotICAgIHR5cGVkZWYgY29uc3QgRWxlbWVudFR5cGUqIHBvaW50ZXI7Ci0gICAgdHlwZWRlZiBj
b25zdCBFbGVtZW50VHlwZSYgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgc3RkOjpmb3J3YXJkX2l0
ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLQotICAgIEVsZW1lbnRDaGlsZENvbnN0SXRl
cmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKLSAgICBFbGVtZW50Q2hpbGRDb25z
dEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCwgY29uc3QgRWxlbWVudFR5cGUq
IGN1cnJlbnQpOwotICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsK
LSAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Ci19OwotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBFbGVtZW50Q2hpbGRJdGVyYXRvckFk
YXB0ZXIgewotcHVibGljOgotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcihDb250YWlu
ZXJOb2RlJiBwYXJlbnQpOwotCi0gICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+
IGJlZ2luKCk7Ci0gICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpOwot
ICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbkF0KEVsZW1lbnRUeXBl
Jik7Ci0KLSAgICBFbGVtZW50VHlwZSogZmlyc3QoKTsKLSAgICBFbGVtZW50VHlwZSogbGFzdCgp
OwotCi1wcml2YXRlOgotICAgIENvbnRhaW5lck5vZGUmIG1fcGFyZW50OwotfTsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRv
ckFkYXB0ZXIgeworY2xhc3MgRWxlbWVudENoaWxkUmFuZ2UgewogcHVibGljOgotICAgIEVsZW1l
bnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCk7
CisgICAgRWxlbWVudENoaWxkUmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKIAot
ICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7
Ci0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCkgY29uc3Q7
Ci0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW5BdChjb25z
dCBFbGVtZW50VHlwZSYpIGNvbnN0OworICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPiBiZWdpbigpIGNvbnN0OworICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBl
PiBlbmQoKSBjb25zdDsKKyAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVn
aW5BdChFbGVtZW50VHlwZSYpIGNvbnN0OwogCi0gICAgY29uc3QgRWxlbWVudFR5cGUqIGZpcnN0
KCkgY29uc3Q7Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIGxhc3QoKSBjb25zdDsKKyAgICBFbGVt
ZW50VHlwZSogZmlyc3QoKSBjb25zdDsKKyAgICBFbGVtZW50VHlwZSogbGFzdCgpIGNvbnN0Owog
CiBwcml2YXRlOgogICAgIGNvbnN0IENvbnRhaW5lck5vZGUmIG1fcGFyZW50OwogfTsKIAotdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8
RWxlbWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKENvbnRhaW5lck5vZGUmKTsKLXRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUmKTsKLQogLy8gRWxl
bWVudENoaWxkSXRlcmF0b3IKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgpAQCAt
MTExLDEzMiArNzcsNjggQEAgaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBl
Pjo6RWxlbWVudENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm8KIHRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4mIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItLSgpCiB7Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+
KEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKCkp
OworICAgIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXNTaWJs
aW5nKCk7CisgICAgcmV0dXJuICp0aGlzOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+CiBpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50
Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRl
cmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkpOworICAgIEVsZW1lbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxpbmcoKTsKKyAgICByZXR1cm4g
KnRoaXM7CiB9CiAKLS8vIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IKKy8vIEVsZW1lbnRDaGls
ZFJhbmdlCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENoaWxkQ29uc3RJdGVyYXRv
cihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpCi0gICAgOiBFbGVtZW50Q29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT4oJnBhcmVudCkKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpF
bGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCwgY29u
c3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpCi0gICAgOiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT4oJnBhcmVudCwgY3VycmVudCkKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+
JiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItLSgpCi17
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+Jj4oRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZp
b3VzU2libGluZygpKTsKLX0KLQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDaGls
ZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKLXsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVt
ZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxpbmcoKSk7Ci19
Ci0KLS8vIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPjo6RWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUmIHBhcmVudCkK
K2lubGluZSBFbGVtZW50Q2hpbGRSYW5nZTxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZFJhbmdl
KGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCkKICAgICA6IG1fcGFyZW50KHBhcmVudCkKIHsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGls
ZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dFR5cGU+OjpiZWdpbigpCitpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+
IEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPjo6YmVnaW4oKSBjb25zdAogewogICAgIHJl
dHVybiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9wYXJlbnQsIFRyYXZlcnNh
bDxFbGVtZW50VHlwZT46OmZpcnN0Q2hpbGQobV9wYXJlbnQpKTsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjplbmQoKQoraW5s
aW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRSYW5nZTxF
bGVtZW50VHlwZT46OmVuZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPihtX3BhcmVudCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWlubGluZSBFbGVtZW50VHlwZSogRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVy
PEVsZW1lbnRUeXBlPjo6Zmlyc3QoKQoraW5saW5lIEVsZW1lbnRUeXBlKiBFbGVtZW50Q2hpbGRS
YW5nZTxFbGVtZW50VHlwZT46OmZpcnN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gVHJhdmVyc2Fs
PEVsZW1lbnRUeXBlPjo6Zmlyc3RDaGlsZChtX3BhcmVudCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50VHlwZSogRWxlbWVudENoaWxkSXRlcmF0
b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6bGFzdCgpCitpbmxpbmUgRWxlbWVudFR5cGUqIEVsZW1l
bnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPjo6bGFzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFRy
YXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RDaGlsZChtX3BhcmVudCk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVt
ZW50VHlwZT4gRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW5B
dChFbGVtZW50VHlwZSYgY2hpbGQpCitpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVu
dFR5cGU+IEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPjo6YmVnaW5BdChFbGVtZW50VHlw
ZSYgY2hpbGQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGNoaWxkLnBhcmVudE5vZGUoKSA9PSAmbV9w
YXJlbnQpOwogICAgIHJldHVybiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9w
YXJlbnQsICZjaGlsZCk7CiB9CiAKLS8vIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVy
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRD
b25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZENvbnN0SXRlcmF0
b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCkKLSAgICA6IG1fcGFyZW50KHBh
cmVudCkKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVs
ZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZENvbnN0SXRl
cmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4oKSBjb25zdAotewotICAgIHJldHVybiBF
bGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3BhcmVudCwgVHJhdmVyc2Fs
PEVsZW1lbnRUeXBlPjo6Zmlyc3RDaGlsZChtX3BhcmVudCkpOwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT4gRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+Ojpl
bmQoKSBjb25zdAotewotICAgIHJldHVybiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPihtX3BhcmVudCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWlubGluZSBjb25zdCBFbGVtZW50VHlwZSogRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0
ZXI8RWxlbWVudFR5cGU+OjpmaXJzdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFRyYXZlcnNhbDxF
bGVtZW50VHlwZT46OmZpcnN0Q2hpbGQobV9wYXJlbnQpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgY29uc3QgRWxlbWVudFR5cGUqIEVsZW1lbnRDaGlsZENv
bnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6bGFzdCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RDaGlsZChtX3BhcmVudCk7Ci19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46OmJlZ2luQXQoY29uc3QgRWxlbWVudFR5cGUmIGNoaWxkKSBjb25zdAotewotICAg
IEFTU0VSVChjaGlsZC5wYXJlbnROb2RlKCkgPT0gJm1fcGFyZW50KTsKLSAgICByZXR1cm4gRWxl
bWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9wYXJlbnQsICZjaGlsZCk7Ci19
Ci0KIC8vIFN0YW5kYWxvbmUgZnVuY3Rpb25zCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGNo
aWxkcmVuT2ZUeXBlKENvbnRhaW5lck5vZGUmIHBhcmVudCkKK2lubGluZSBFbGVtZW50Q2hpbGRS
YW5nZTxFbGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoQ29udGFpbmVyTm9kZSYgcGFyZW50KQog
ewotICAgIHJldHVybiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KHBh
cmVudCk7CisgICAgcmV0dXJuIEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPihwYXJlbnQp
OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENo
aWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKGNvbnN0
IENvbnRhaW5lck5vZGUmIHBhcmVudCkKK2lubGluZSBFbGVtZW50Q2hpbGRSYW5nZTxjb25zdCBF
bGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KQog
ewotICAgIHJldHVybiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlw
ZT4ocGFyZW50KTsKKyAgICByZXR1cm4gRWxlbWVudENoaWxkUmFuZ2U8Y29uc3QgRWxlbWVudFR5
cGU+KHBhcmVudCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4ZGJkYjk5YTZkZGU5NjQ2ZGZiNDE3NDYxMjk5MThjNzM1ZWFlNDk5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNjYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnRJdGVy
YXRvckFzc2VydGlvbnMuaCIKLSNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCi0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IgewotcHVibGljOgotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IoKTsKLSAgICBleHBsaWNpdCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKEVsZW1lbnQqIGN1
cnJlbnQpOwotCi0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwot
ICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsKLQotICAgIEVsZW1l
bnQmIG9wZXJhdG9yKigpOwotICAgIEVsZW1lbnQqIG9wZXJhdG9yLT4oKTsKLQotICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG90
aGVyKSBjb25zdDsKLQotICAgIHZvaWQgZHJvcEFzc2VydGlvbnMoKTsKLQotcHJpdmF0ZToKLSAg
ICBFbGVtZW50KiBtX2N1cnJlbnQ7Ci0gICAgVmVjdG9yPEVsZW1lbnQqLCAxNj4gbV9hbmNlc3Rv
clNpYmxpbmdTdGFjazsKLQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgRWxlbWVudEl0ZXJhdG9y
QXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7Ci0jZW5kaWYKLX07Ci0KLWNsYXNzIEVsZW1lbnREZXNj
ZW5kYW50Q29uc3RJdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgRWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yKCk7Ci0gICAgZXhwbGljaXQgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
KGNvbnN0IEVsZW1lbnQqKTsKLQotICAgIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYg
b3BlcmF0b3IrKygpOwotCi0gICAgY29uc3QgRWxlbWVudCYgb3BlcmF0b3IqKCkgY29uc3Q7Ci0g
ICAgY29uc3QgRWxlbWVudCogb3BlcmF0b3ItPigpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0Owot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3Im
IG90aGVyKSBjb25zdDsKLQotICAgIHZvaWQgZHJvcEFzc2VydGlvbnMoKTsKLQotcHJpdmF0ZToK
LSAgICBjb25zdCBFbGVtZW50KiBtX2N1cnJlbnQ7Ci0gICAgVmVjdG9yPEVsZW1lbnQqLCAxNj4g
bV9hbmNlc3RvclNpYmxpbmdTdGFjazsKLQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgRWxlbWVu
dEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7Ci0jZW5kaWYKLX07Ci0KLWNsYXNzIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyIHsKLXB1YmxpYzoKLSAgICBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2RlJiByb290KTsKLSAgICBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yIGJlZ2luKCk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ciBlbmQoKTsKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGxhc3QoKTsKLQotcHJpdmF0
ZToKLSAgICBDb250YWluZXJOb2RlJiBtX3Jvb3Q7Ci19OwotCi1jbGFzcyBFbGVtZW50RGVzY2Vu
ZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyIHsKLXB1YmxpYzoKLSAgICBFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpOwotICAgIEVs
ZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciBiZWdpbigpIGNvbnN0OwotICAgIEVsZW1lbnRE
ZXNjZW5kYW50Q29uc3RJdGVyYXRvciBlbmQoKSBjb25zdDsKLSAgICBFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3IgbGFzdCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIGNvbnN0IENvbnRh
aW5lck5vZGUmIG1fcm9vdDsKLX07Ci0KLUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVy
IGVsZW1lbnREZXNjZW5kYW50cyhDb250YWluZXJOb2RlJik7Ci1FbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3JBZGFwdGVyIGVsZW1lbnREZXNjZW5kYW50cyhjb25zdCBDb250YWluZXJOb2Rl
Jik7Ci0KLS8vIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IKLQotaW5saW5lIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I6OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoKQotICAgIDogbV9jdXJy
ZW50KG51bGxwdHIpCi17Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKEVsZW1lbnQqIGN1cnJlbnQpCi0gICAgOiBtX2N1cnJl
bnQoY3VycmVudCkKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgICwgbV9hc3NlcnRpb25zKGN1cnJl
bnQpCi0jZW5kaWYKLXsKLSAgICBtX2FuY2VzdG9yU2libGluZ1N0YWNrLnVuY2hlY2tlZEFwcGVu
ZChudWxscHRyKTsKLX0KLQotaW5saW5lIHZvaWQgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6
ZHJvcEFzc2VydGlvbnMoKQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9hc3NlcnRpb25z
LmNsZWFyKCk7Ci0jZW5kaWYKLX0KLQotQUxXQVlTX0lOTElORSBFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yJiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvcisrKCkKLXsKLSAgICBB
U1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0
YXRlZCgpKTsKLQotICAgIEVsZW1lbnQqIGZpcnN0Q2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpm
aXJzdENoaWxkKCptX2N1cnJlbnQpOwotICAgIEVsZW1lbnQqIG5leHRTaWJsaW5nID0gRWxlbWVu
dFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoKm1fY3VycmVudCk7Ci0KLSAgICBpZiAoZmlyc3RDaGls
ZCkgewotICAgICAgICBpZiAobmV4dFNpYmxpbmcpCi0gICAgICAgICAgICBtX2FuY2VzdG9yU2li
bGluZ1N0YWNrLmFwcGVuZChuZXh0U2libGluZyk7Ci0gICAgICAgIG1fY3VycmVudCA9IGZpcnN0
Q2hpbGQ7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBpZiAobmV4dFNpYmxp
bmcpIHsKLSAgICAgICAgbV9jdXJyZW50ID0gbmV4dFNpYmxpbmc7Ci0gICAgICAgIHJldHVybiAq
dGhpczsKLSAgICB9Ci0KLSAgICBtX2N1cnJlbnQgPSBtX2FuY2VzdG9yU2libGluZ1N0YWNrLnRh
a2VMYXN0KCk7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlv
biB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQp
Ci0gICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2Vu
ZGlmCi0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLUFMV0FZU19JTkxJTkUgRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvciYgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6b3BlcmF0b3ItLSgpCi17
Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJl
ZUhhc011dGF0ZWQoKSk7Ci0KLSAgICBFbGVtZW50KiBwcmV2aW91c1NpYmxpbmcgPSBFbGVtZW50
VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoKm1fY3VycmVudCk7Ci0KLSAgICBpZiAoIXByZXZp
b3VzU2libGluZykgewotICAgICAgICBtX2N1cnJlbnQgPSBtX2N1cnJlbnQtPnBhcmVudEVsZW1l
bnQoKTsKLSAgICAgICAgLy8gVGhlIHN0YWNrIG9wdGltaXplcyBmb3IgZm9yd2FyZCB0cmF2ZXJz
YWwgb25seSwgdGhpcyBqdXN0IG1haW50YWlucyBjb25zaXN0ZW5jeS4KLSAgICAgICAgaWYgKG1f
Y3VycmVudC0+bmV4dFNpYmxpbmcoKSAmJiBtX2N1cnJlbnQtPm5leHRTaWJsaW5nKCkgPT0gbV9h
bmNlc3RvclNpYmxpbmdTdGFjay5sYXN0KCkpCi0gICAgICAgICAgICBtX2FuY2VzdG9yU2libGlu
Z1N0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAg
IEVsZW1lbnQqIGRlZXBlc3RTaWJsaW5nID0gcHJldmlvdXNTaWJsaW5nOwotICAgIHdoaWxlIChF
bGVtZW50KiBsYXN0Q2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQoKmRlZXBlc3RT
aWJsaW5nKSkKLSAgICAgICAgZGVlcGVzdFNpYmxpbmcgPSBsYXN0Q2hpbGQ7Ci0gICAgQVNTRVJU
KGRlZXBlc3RTaWJsaW5nKTsKLQotICAgIGlmIChkZWVwZXN0U2libGluZyAhPSBwcmV2aW91c1Np
YmxpbmcpCi0gICAgICAgIG1fYW5jZXN0b3JTaWJsaW5nU3RhY2suYXBwZW5kKG1fY3VycmVudCk7
Ci0KLSAgICBtX2N1cnJlbnQgPSBkZWVwZXN0U2libGluZzsKLQotI2lmIEFTU0VSVF9FTkFCTEVE
Ci0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhl
IGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVu
dERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQot
aW5saW5lIEVsZW1lbnQmIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6Om9wZXJhdG9yKigpCi17
Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJl
ZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuICptX2N1cnJlbnQ7Ci19Ci0KLWlubGluZSBFbGVt
ZW50KiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvci0+KCkKLXsKLSAgICBBU1NF
UlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRl
ZCgpKTsKLSAgICByZXR1cm4gbV9jdXJyZW50OwotfQotCi1pbmxpbmUgYm9vbCBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvcj09KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3ImIG90aGVyKSBjb25zdAotewotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNN
dXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQgPT0gb3RoZXIubV9jdXJyZW50OwotfQot
Ci1pbmxpbmUgYm9vbCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvciE9KGNvbnN0
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKLX0KLQotLy8gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I6OkVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvcigpCi0gICAgOiBtX2N1cnJlbnQobnVsbHB0cikKLXsKLX0KLQotaW5s
aW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6RWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yKGNvbnN0IEVsZW1lbnQqIGN1cnJlbnQpCi0gICAgOiBtX2N1cnJlbnQoY3VycmVu
dCkKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgICwgbV9hc3NlcnRpb25zKGN1cnJlbnQpCi0jZW5k
aWYKLXsKLSAgICBtX2FuY2VzdG9yU2libGluZ1N0YWNrLnVuY2hlY2tlZEFwcGVuZChudWxscHRy
KTsKLX0KLQotaW5saW5lIHZvaWQgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpkcm9w
QXNzZXJ0aW9ucygpCi17Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2Fzc2VydGlvbnMuY2xl
YXIoKTsKLSNlbmRpZgotfQotCi1BTFdBWVNfSU5MSU5FIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvciYgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpvcGVyYXRvcisrKCkKLXsK
LSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVl
SGFzTXV0YXRlZCgpKTsKLQotICAgIEVsZW1lbnQqIGZpcnN0Q2hpbGQgPSBFbGVtZW50VHJhdmVy
c2FsOjpmaXJzdENoaWxkKCptX2N1cnJlbnQpOwotICAgIEVsZW1lbnQqIG5leHRTaWJsaW5nID0g
RWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoKm1fY3VycmVudCk7Ci0KLSAgICBpZiAoZmly
c3RDaGlsZCkgewotICAgICAgICBpZiAobmV4dFNpYmxpbmcpCi0gICAgICAgICAgICBtX2FuY2Vz
dG9yU2libGluZ1N0YWNrLmFwcGVuZChuZXh0U2libGluZyk7Ci0gICAgICAgIG1fY3VycmVudCA9
IGZpcnN0Q2hpbGQ7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBpZiAobmV4
dFNpYmxpbmcpIHsKLSAgICAgICAgbV9jdXJyZW50ID0gbmV4dFNpYmxpbmc7Ci0gICAgICAgIHJl
dHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBtX2N1cnJlbnQgPSBtX2FuY2VzdG9yU2libGluZ1N0
YWNrLnRha2VMYXN0KCk7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFz
c2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1
cnJlbnQpCi0gICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigp
OwotI2VuZGlmCi0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLWlubGluZSBjb25zdCBFbGVtZW50
JiBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I6Om9wZXJhdG9yKigpIGNvbnN0Ci17Ci0g
ICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhh
c011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuICptX2N1cnJlbnQ7Ci19Ci0KLWlubGluZSBjb25zdCBF
bGVtZW50KiBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I6Om9wZXJhdG9yLT4oKSBjb25z
dAotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRv
bVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQ7Ci19Ci0KLWlubGluZSBi
b29sIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAgIEFTU0VSVCgh
bV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQg
PT0gb3RoZXIubV9jdXJyZW50OwotfQotCi1pbmxpbmUgYm9vbCBFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3I6Om9wZXJhdG9yIT0oY29uc3QgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci19Ci0K
LS8vIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyCi0KLWlubGluZSBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yQWRhcHRlcjo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIo
Q29udGFpbmVyTm9kZSYgcm9vdCkKLSAgICA6IG1fcm9vdChyb290KQotewotfQotCi1pbmxpbmUg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRl
cjo6YmVnaW4oKQotewotICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKEVsZW1l
bnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQobV9yb290KSk7Ci19Ci0KLWlubGluZSBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjplbmQoKQot
ewotICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKCk7Ci19Ci0KLWlubGluZSBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVy
OjpsYXN0KCkKLXsKLSAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihFbGVtZW50
VHJhdmVyc2FsOjpsYXN0V2l0aGluKG1fcm9vdCkpOwotfQotCi0vLyBFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3JBZGFwdGVyCi0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3JBZGFwdGVyOjpFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0
IENvbnRhaW5lck5vZGUmIHJvb3QpCi0gICAgOiBtX3Jvb3Qocm9vdCkKLXsKLX0KLQotaW5saW5l
IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3JBZGFwdGVyOjpiZWdpbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvcihFbGVtZW50VHJhdmVyc2FsOjpmaXJzdENoaWxkKG1fcm9vdCkpOwot
fQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvckFkYXB0ZXI6OmVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1l
bnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcigpOwotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRh
bnRDb25zdEl0ZXJhdG9yIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI6Omxh
c3QoKSBjb25zdAotewotICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3Io
RWxlbWVudFRyYXZlcnNhbDo6bGFzdFdpdGhpbihtX3Jvb3QpKTsKLX0KLQotLy8gU3RhbmRhbG9u
ZSBmdW5jdGlvbnMKLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyIGVs
ZW1lbnREZXNjZW5kYW50cyhDb250YWluZXJOb2RlJiByb290KQotewotICAgIHJldHVybiBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcihyb290KTsKLX0KLQotaW5saW5lIEVsZW1lbnRE
ZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIgZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0IENv
bnRhaW5lck5vZGUmIHJvb3QpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvckFkYXB0ZXIocm9vdCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFt
ZXNwYWNlIHN0ZCB7Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPFdlYkNvcmU6
OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I+IHsKLSAgICB0eXBlZGVmIFdlYkNvcmU6OkVsZW1l
bnQgdmFsdWVfdHlwZTsKLX07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPFdl
YkNvcmU6OkVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcj4gewotICAgIHR5cGVkZWYgY29u
c3QgV2ViQ29yZTo6RWxlbWVudCB2YWx1ZV90eXBlOwotfTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50SXRlcmF0b3IuaAppbmRleCAzNzRkYmE3YTRjMjQ3OGRkZDkzYWViMmE0YzQ0ZTNkYjgyZDcz
YjU2Li43NDk4ZDQwYWE0MDFkYWM2ZTU5MzU2ZmIwYTA0Yjg0ZjViNzAzNDZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRJdGVyYXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDExICszNCw4IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRJdGVy
YXRvciB7CitjbGFzcyBFbGVtZW50SXRlcmF0b3IgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6
OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBFbGVtZW50VHlwZT4gewogcHVibGljOgotICAgIEVsZW1l
bnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290KTsKLSAgICBFbGVtZW50SXRlcmF0
b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotCiAg
ICAgRWxlbWVudFR5cGUmIG9wZXJhdG9yKigpIGNvbnN0OwogICAgIEVsZW1lbnRUeXBlKiBvcGVy
YXRvci0+KCkgY29uc3Q7CiAKQEAgLTU0LDM5ICs1MSwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGRyb3BBc3NlcnRpb25zKCk7CiAKLXByaXZhdGU6Ci0gICAgY29uc3QgQ29udGFpbmVyTm9kZSog
bV9yb290OwotICAgIEVsZW1lbnRUeXBlKiBtX2N1cnJlbnQ7Citwcm90ZWN0ZWQ6CisgICAgRWxl
bWVudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QgPSBudWxscHRyLCBFbGVtZW50
VHlwZSogY3VycmVudCA9IG51bGxwdHIpOwogCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBFbGVt
ZW50SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0aW9uczsKLSNlbmRpZgotfTsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVudENvbnN0SXRlcmF0b3Igewot
cHVibGljOgotICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJv
b3QpOwotICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3Qs
IGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKLQotICAgIGNvbnN0IEVsZW1lbnRUeXBlJiBv
cGVyYXRvciooKSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50VHlwZSogb3BlcmF0b3ItPigpIGNv
bnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVsZW1lbnRDb25zdEl0ZXJhdG9yJiBv
dGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVsZW1lbnRDb25zdEl0ZXJh
dG9yJiBvdGhlcikgY29uc3Q7Ci0KLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VO
ZXh0KCk7Ci0gICAgRWxlbWVudENvbnN0SXRlcmF0b3ImIHRyYXZlcnNlUHJldmlvdXMoKTsKLSAg
ICBFbGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VOZXh0U2libGluZygpOwotICAgIEVsZW1l
bnRDb25zdEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzU2libGluZygpOwotICAgIEVsZW1lbnRD
b25zdEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7Ci0gICAgRWxlbWVu
dENvbnN0SXRlcmF0b3ImIHRyYXZlcnNlQW5jZXN0b3IoKTsKLQotICAgIHZvaWQgZHJvcEFzc2Vy
dGlvbnMoKTsKKyAgICBib29sIGF0RW5kKCkgeyByZXR1cm4gIW1fY3VycmVudDsgfQogCiBwcml2
YXRlOgogICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIG1fcm9vdDsKLSAgICBjb25zdCBFbGVtZW50
VHlwZSogbV9jdXJyZW50OworICAgIEVsZW1lbnRUeXBlKiBtX2N1cnJlbnQ7CiAKICNpZiBBU1NF
UlRfRU5BQkxFRAogICAgIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMgbV9hc3NlcnRpb25zOwpA
QCAtOTUsMTMgKzY3LDYgQEAgcHJpdmF0ZToKIAogLy8gRWxlbWVudEl0ZXJhdG9yCiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+OjpFbGVtZW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCkKLSAgICA6
IG1fcm9vdChyb290KQotICAgICwgbV9jdXJyZW50KG51bGxwdHIpCi17Ci19Ci0KIHRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+OjpFbGVtZW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwgRWxlbWVudFR5
cGUqIGN1cnJlbnQpCiAgICAgOiBtX3Jvb3Qocm9vdCkKQEAgLTI1MSwxNDggKzIxNiw2IEBAIGlu
bGluZSBib29sIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIT0oY29uc3Qg
RWxlbWVudEl0ZXJhdG9yJiBvdGhlCiAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogfQog
Ci0vLyBFbGVtZW50Q29uc3RJdGVyYXRvcgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+Ci1pbmxpbmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50Q29u
c3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290KQotICAgIDogbV9yb290KHJvb3Qp
Ci0gICAgLCBtX2N1cnJlbnQobnVsbHB0cikKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxl
bWVudENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwgY29uc3QgRWxlbWVu
dFR5cGUqIGN1cnJlbnQpCi0gICAgOiBtX3Jvb3Qocm9vdCkKLSAgICAsIG1fY3VycmVudChjdXJy
ZW50KQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLCBtX2Fzc2VydGlvbnMoY3VycmVudCkKLSNl
bmRpZgotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxl
bWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT46OnRyYXZlcnNlTmV4dCgpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAg
QVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgbV9jdXJyZW50
ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dCgqbV9jdXJyZW50LCBtX3Jvb3QpOwotI2lm
IEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJh
dG9yIHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3Nl
cnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4g
KnRoaXM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVt
ZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91cygpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0g
ICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgbV9jdXJy
ZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXMoKm1fY3VycmVudCwgbV9yb290
KTsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRo
ZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0gICAgICAg
IG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlmCi0gICAg
cmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxp
bmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxpbmcoKQotewotICAgIEFTU0VSVChtX2N1
cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwot
ICAgIG1fY3VycmVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRTaWJsaW5nKCptX2N1
cnJlbnQpOwotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdo
ZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAg
ICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYK
LSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoKQotewotICAgIEFT
U0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRh
dGVkKCkpOwotICAgIG1fY3VycmVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnByZXZpb3Vz
U2libGluZygqbV9jdXJyZW50KTsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhl
IGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFt
X2N1cnJlbnQpCi0gICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlv
bigpOwotI2VuZGlmCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBF
bGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hp
bGRyZW4oKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRp
b25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3VycmVudCA9IFRyYXZlcnNhbDxFbGVt
ZW50VHlwZT46Om5leHRTa2lwcGluZ0NoaWxkcmVuKCptX2N1cnJlbnQsIG1fcm9vdCk7Ci0jaWYg
QVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0
b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBtX2Fzc2Vy
dGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAgIHJldHVybiAq
dGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1l
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+Ojp0cmF2ZXJzZUFuY2VzdG9yKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAg
ICBBU1NFUlQobV9jdXJyZW50ICE9IG1fcm9vdCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMu
ZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgbV9jdXJyZW50ID0gZmluZEVsZW1lbnRBbmNlc3Rv
ck9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm1fY3VycmVudCk7Ci0jaWYgQVNTRVJUX0VOQUJM
RUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0
aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2
ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAgIHJldHVybiAqdGhpczsKLX0KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIHZvaWQgRWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojpkcm9wQXNzZXJ0aW9ucygpCi17Ci0jaWYgQVNTRVJUX0VO
QUJMRUQKLSAgICBtX2Fzc2VydGlvbnMuY2xlYXIoKTsKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgY29uc3QgRWxlbWVudFR5cGUmIEVsZW1lbnRD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IqKCkgY29uc3QKLXsKLSAgICBBU1NF
UlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRl
ZCgpKTsKLSAgICByZXR1cm4gKm1fY3VycmVudDsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlKiBFbGVtZW50Q29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT46Om9wZXJhdG9yLT4oKSBjb25zdAotewotICAgIEFTU0VSVChtX2N1cnJl
bnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAg
IHJldHVybiBtX2N1cnJlbnQ7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWlubGluZSBib29sIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3I9
PShjb25zdCBFbGVtZW50Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KG1fcm9vdCA9PSBvdGhlci5tX3Jvb3QpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRy
ZWVIYXNNdXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQgPT0gb3RoZXIubV9jdXJyZW50
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgYm9vbCBFbGVt
ZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIT0oY29uc3QgRWxlbWVudENv
bnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaW5jbHVkZSAiRWxlbWVudEFuY2Vz
dG9ySXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxp
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5jcHAKaW5kZXggZGQwYzk5
OTE4MDljYmY3YzcxMDYwMDUwMjE2NGU5YTE2ZmRjYzE5MS4uNDM0ZDRhNDQ5MGVjZmMyYTljNTBi
MmQ0MDY5NGUxNDM5ZGU1MDY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVO
b2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5jcHAKQEAg
LTIzLDEwICsyMyw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGl2ZU5vZGVM
aXN0LmgiCiAKLSNpbmNsdWRlICJDbGFzc0NvbGxlY3Rpb24uaCIKLSNpbmNsdWRlICJFbGVtZW50
LmgiCi0jaW5jbHVkZSAiRWxlbWVudFRyYXZlcnNhbC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCmluZGV4IGYyN2YwZWY2NzRiYmQ5ODIz
MTRjMGJiYjI1Yjg1MjQyMjM0ZGE1OGYuLmNjODU1YTI2MDY5ODQxZWRiYmVhZGVkNzBhN2NjNjEz
MzFjMjM3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKQEAgLTI2LDcgKzI2LDYgQEAK
ICNpbmNsdWRlICJDb2xsZWN0aW9uSW5kZXhDYWNoZS5oIgogI2luY2x1ZGUgIkNvbGxlY3Rpb25U
cmF2ZXJzYWwuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJOb2Rl
TGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC04MywxMiArODIsMTUgQEAgcHVi
bGljOgogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW5kZXhD
YWNoZS5ub2RlQ291bnQobm9kZUxpc3QoKSk7IH0KICAgICBFbGVtZW50KiBpdGVtKHVuc2lnbmVk
IG9mZnNldCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVBdChub2Rl
TGlzdCgpLCBvZmZzZXQpOyB9CiAKKyAgICB1c2luZyBUcmF2ZXJzYWwgPSBDb2xsZWN0aW9uVHJh
dmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz47CisgICAgdXNpbmcg
SXRlcmF0b3IgPSBUcmF2ZXJzYWw6Okl0ZXJhdG9yOworCiAgICAgLy8gRm9yIENvbGxlY3Rpb25J
bmRleENhY2hlCi0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0aW9uQmVnaW4o
KSBjb25zdCB7IHJldHVybiBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxU
eXBlOjpEZXNjZW5kYW50cz46OmJlZ2luKG5vZGVMaXN0KCksIHJvb3ROb2RlKCkpOyB9Ci0gICAg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0aW9uTGFzdCgpIGNvbnN0IHsgcmV0dXJu
IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRz
Pjo6bGFzdChub2RlTGlzdCgpLCByb290Tm9kZSgpKTsgfQotICAgIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IgY29sbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IoKTsgfQotICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRy
YXZlcnNlZENvdW50KSBjb25zdCB7IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZl
cnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VGb3J3YXJkKG5vZGVMaXN0KCksIGN1cnJl
bnQsIGNvdW50LCB0cmF2ZXJzZWRDb3VudCk7IH0KLSAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJz
ZUJhY2t3YXJkKEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNv
dW50KSBjb25zdCB7IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6
OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VCYWNrd2FyZChub2RlTGlzdCgpLCBjdXJyZW50LCBjb3Vu
dCk7IH0KKyAgICBhdXRvIGNvbGxlY3Rpb25CZWdpbigpIGNvbnN0IHsgcmV0dXJuIFRyYXZlcnNh
bDo6YmVnaW4obm9kZUxpc3QoKSwgcm9vdE5vZGUoKSk7IH0KKyAgICBhdXRvIGNvbGxlY3Rpb25M
YXN0KCkgY29uc3QgeyByZXR1cm4gVHJhdmVyc2FsOjpsYXN0KG5vZGVMaXN0KCksIHJvb3ROb2Rl
KCkpOyB9CisgICAgYXV0byBjb2xsZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gSXRlcmF0b3Io
cm9vdE5vZGUoKSk7IH0KKyAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoSXRlcmF0
b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNv
bnN0IHsgVHJhdmVyc2FsOjp0cmF2ZXJzZUZvcndhcmQobm9kZUxpc3QoKSwgY3VycmVudCwgY291
bnQsIHRyYXZlcnNlZENvdW50KTsgfQorICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlQmFja3dh
cmQoSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KSBjb25zdCB7IFRyYXZlcnNhbDo6
dHJhdmVyc2VCYWNrd2FyZChub2RlTGlzdCgpLCBjdXJyZW50LCBjb3VudCk7IH0KICAgICBib29s
IGNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJhY2t3YXJkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZvaWQgd2lsbFZhbGlkYXRlSW5kZXhDYWNoZSgpIGNvbnN0IHsgZG9jdW1lbnQoKS5yZWdp
c3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Q2FjaGVkTGl2ZU5vZGVMaXN0
PE5vZGVMaXN0VHlwZT4mPigqdGhpcykpOyB9CiAKQEAgLTEwMSw2ICsxMDMsOCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBtX2luZGV4Q2FjaGUubWVtb3J5Q29zdCgpOwogICAgIH0KIAorICAg
IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBDYWNo
ZWRMaXZlTm9kZUxpc3QoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIE5vZGVMaXN0SW52YWxpZGF0
aW9uVHlwZSk7CiAKQEAgLTEwOCw5ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIE5vZGVMaXN0VHlw
ZSYgbm9kZUxpc3QoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxOb2RlTGlzdFR5cGUmPigqdGhpcyk7
IH0KICAgICBjb25zdCBOb2RlTGlzdFR5cGUmIG5vZGVMaXN0KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpOyB9CiAKLSAgICBDb250YWluZXJO
b2RlJiByb290Tm9kZSgpIGNvbnN0OwotCi0gICAgbXV0YWJsZSBDb2xsZWN0aW9uSW5kZXhDYWNo
ZTxOb2RlTGlzdFR5cGUsIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I+IG1faW5kZXhDYWNoZTsK
KyAgICBtdXRhYmxlIENvbGxlY3Rpb25JbmRleENhY2hlPE5vZGVMaXN0VHlwZSwgSXRlcmF0b3I+
IG1faW5kZXhDYWNoZTsKIH07CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBzaG91bGRJbnZhbGlkYXRl
VHlwZU9uQXR0cmlidXRlQ2hhbmdlKE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSB0eXBlLCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA5ODIxMjQ0ZGM5
MTc0OTM0MWIzZDI2YzUzYWUyNTdmM2FjYWFhOTUxLi5mOWM1OWQwNjU3MTE1NWUxMTMxM2EwOGZk
N2E1NmZjMjJhNDYyY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEFyZWFFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTEJvZHlFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNs
dWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MU2xvdEVsZW1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
ZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApp
bmRleCBlZjA1NTI5MzQyNzdkNDNiMTE5YTQ2NzUxZmY0MjhlMGExODAzNzkwLi5hMTk1ZWQ2NjRm
MThlNzhjOTlmNWY5NjQ1ODEwOGY0MzU0OWI5MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
NCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiU2VsZWN0b3JRdWVyeS5oIgogCiAjaW5jbHVk
ZSAiQ1NTUGFyc2VyLmgiCi0jaW5jbHVkZSAiRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgor
I2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCkBA
IC0xNTAsMTUgKzE1MCwxMiBAQCBib29sIFNlbGVjdG9yRGF0YUxpc3Q6Om1hdGNoZXMoRWxlbWVu
dCYgdGFyZ2V0RWxlbWVudCkgY29uc3QKIAogRWxlbWVudCogU2VsZWN0b3JEYXRhTGlzdDo6Y2xv
c2VzdChFbGVtZW50JiB0YXJnZXRFbGVtZW50KSBjb25zdAogewotICAgIEVsZW1lbnQqIGN1cnJl
bnROb2RlID0gJnRhcmdldEVsZW1lbnQ7Ci0gICAgZG8geworICAgIGZvciAoYXV0byYgY3VycmVu
dEVsZW1lbnQgOiBhbmNlc3RvcnNPZlR5cGU8RWxlbWVudD4odGFyZ2V0RWxlbWVudCkpIHsKICAg
ICAgICAgZm9yIChhdXRvJiBzZWxlY3RvciA6IG1fc2VsZWN0b3JzKSB7Ci0gICAgICAgICAgICBF
bGVtZW50KiBjYW5kaWRhdGVFbGVtZW50ID0gc2VsZWN0b3JDbG9zZXN0KHNlbGVjdG9yLCAqY3Vy
cmVudE5vZGUsIHRhcmdldEVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZUVsZW1l
bnQpCisgICAgICAgICAgICBpZiAoYXV0byogY2FuZGlkYXRlRWxlbWVudCA9IHNlbGVjdG9yQ2xv
c2VzdChzZWxlY3RvciwgY3VycmVudEVsZW1lbnQsIHRhcmdldEVsZW1lbnQpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBjYW5kaWRhdGVFbGVtZW50OwogICAgICAgICB9Ci0gICAgICAgIGN1cnJl
bnROb2RlID0gY3VycmVudE5vZGUtPnBhcmVudEVsZW1lbnQoKTsKLSAgICB9IHdoaWxlIChjdXJy
ZW50Tm9kZSk7CisgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0yOTUsNyArMjky
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4KIHN0YXRpYyBpbmxp
bmUgdm9pZCBlbGVtZW50c0ZvckxvY2FsTmFtZShjb25zdCBDb250YWluZXJOb2RlJiByb290Tm9k
ZSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBsb3dlcmNh
c2VMb2NhbE5hbWUsIHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0
cHV0KQogewogICAgIGlmIChsb2NhbE5hbWUgPT0gbG93ZXJjYXNlTG9jYWxOYW1lKSB7Ci0gICAg
ICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9jYXN0PENv
bnRhaW5lck5vZGUmPihyb290Tm9kZSkpKSB7CisgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6
IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJv
b3ROb2RlKSkpIHsKICAgICAgICAgICAgIGlmIChlbGVtZW50LnRhZ1FOYW1lKCkubG9jYWxOYW1l
KCkgPT0gbG9jYWxOYW1lKSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0Ojph
cHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICAgICAgICAg
IGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAg
LTMwMyw3ICszMDAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZWxlbWVudHNGb3JMb2NhbE5hbWUo
Y29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0bwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxl
bWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4o
Y29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAgICAgICAgICAgaWYg
KGxvY2FsTmFtZU1hdGNoZXMoZWxlbWVudCwgbG9jYWxOYW1lLCBsb3dlcmNhc2VMb2NhbE5hbWUp
KSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRwdXRGb3JF
bGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChTZWxlY3RvclF1
ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAgLTMxNiw3ICszMTMsNyBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgZWxlbWVudHNGb3JMb2NhbE5hbWUoY29uc3QgQ29udGFpbmVy
Tm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0bwogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVl
cnlUcmFpdD4KIHN0YXRpYyBpbmxpbmUgdm9pZCBhbnlFbGVtZW50KGNvbnN0IENvbnRhaW5lck5v
ZGUmIHJvb3ROb2RlLCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5cGUmIG91
dHB1dCkKIHsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29u
c3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxl
bWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9k
ZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRw
dXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICBpZiAoU2VsZWN0b3JRdWVy
eVRyYWl0OjpzaG91bGRPbmx5TWF0Y2hGaXJzdEVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0zNDUsNyArMzQyLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6
OmV4ZWN1dGVTaW5nbGVUYWdOYW1lU2VsZWN0b3JEYXRhKGNvbnN0IENvbnQKICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZhbGxiYWNrOiBOYW1lc3BhY2VVUkkgaXMgc2V0LCBz
ZWxlY3RvckxvY2FsTmFtZSBtYXkgYmUgc3RhckF0b20oKS4KLSAgICAgICAgZm9yIChhdXRvJiBl
bGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJv
b3ROb2RlKSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5
cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQubmFtZXNwYWNlVVJJKCkgPT0gc2VsZWN0b3JOYW1lc3BhY2VV
UkkgJiYgbG9jYWxOYW1lTWF0Y2hlcyhlbGVtZW50LCBzZWxlY3RvckxvY2FsTmFtZSwgc2VsZWN0
b3JMb3dlcmNhc2VMb2NhbE5hbWUpKSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRy
YWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICAg
ICAgICAgIGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVu
dCkKQEAgLTM2Miw3ICszNTksNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlz
dDo6ZXhlY3V0ZVNpbmdsZUNsYXNzTmFtZVNlbGVjdG9yRGF0YShjb25zdCBDbwogICAgIEFTU0VS
VChpc1NpbmdsZUNsYXNzTmFtZVNlbGVjdG9yKCpzZWxlY3RvckRhdGEuc2VsZWN0b3IpKTsKIAog
ICAgIGNvbnN0IEF0b21TdHJpbmcmIGNsYXNzTmFtZSA9IHNlbGVjdG9yRGF0YS5zZWxlY3Rvci0+
dmFsdWUoKTsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29u
c3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxl
bWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9k
ZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAgaWYgKGVsZW1lbnQuaGFzQ2xhc3MoKSAmJiBlbGVt
ZW50LmNsYXNzTmFtZXMoKS5jb250YWlucyhjbGFzc05hbWUpKSB7CiAgICAgICAgICAgICBTZWxl
Y3RvclF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1lbnQob3V0cHV0LCAmZWxlbWVudCk7
CiAgICAgICAgICAgICBpZiAoU2VsZWN0b3JRdWVyeVRyYWl0OjpzaG91bGRPbmx5TWF0Y2hGaXJz
dEVsZW1lbnQpCkBAIC0zNzYsNyArMzczLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9y
RGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVTZWxlY3RvckRhdGEoY29uc3QgQ29udGFpbmVyTm8KIHsK
ICAgICBBU1NFUlQobV9zZWxlY3RvcnMuc2l6ZSgpID09IDEpOwogCi0gICAgZm9yIChhdXRvJiBl
bGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNl
YXJjaFJvb3ROb2RlKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09m
VHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihzZWFyY2hSb290Tm9kZSkp
KSB7CiAgICAgICAgIGlmIChzZWxlY3Rvck1hdGNoZXMoc2VsZWN0b3JEYXRhLCBlbGVtZW50LCBy
b290Tm9kZSkpIHsKICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBwZW5kT3V0cHV0
Rm9yRWxlbWVudChvdXRwdXQsICZlbGVtZW50KTsKICAgICAgICAgICAgIGlmIChTZWxlY3RvclF1
ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAgLTM4OCw3ICszODUsNyBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZVNlbGVj
dG9yRGF0YShjb25zdCBDb250YWluZXJObwogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVl
cnlUcmFpdD4KIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2lu
Z2xlTXVsdGlTZWxlY3RvckRhdGEoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIHR5cGVu
YW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0cHV0KSBjb25zdAogewotICAg
IGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9jYXN0PENvbnRh
aW5lck5vZGUmPihyb290Tm9kZSkpKSB7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2Vu
ZGFudHNPZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUp
KSkgewogICAgICAgICBmb3IgKGF1dG8mIHNlbGVjdG9yIDogbV9zZWxlY3RvcnMpIHsKICAgICAg
ICAgICAgIGlmIChzZWxlY3Rvck1hdGNoZXMoc2VsZWN0b3IsIGVsZW1lbnQsIHJvb3ROb2RlKSkg
ewogICAgICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBwZW5kT3V0cHV0Rm9yRWxl
bWVudChvdXRwdXQsICZlbGVtZW50KTsKQEAgLTQwNCw3ICs0MDEsNyBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZU11bHRpU2VsZWN0b3JEYXRhKGNv
bnN0IENvbnRhaQogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4KIEFMV0FZ
U19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29tcGlsZWRTaW1wbGVTZWxl
Y3RvckNoZWNrZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgc2VhcmNoUm9vdE5vZGUsIFNlbGVjdG9y
Q29tcGlsZXI6OlF1ZXJ5U2VsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXIgc2VsZWN0b3JDaGVj
a2VyLCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5cGUmIG91dHB1dCwgY29u
c3QgU2VsZWN0b3JEYXRhJiBzZWxlY3RvckRhdGEpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvJiBl
bGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNl
YXJjaFJvb3ROb2RlKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09m
VHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihzZWFyY2hSb290Tm9kZSkp
KSB7CiAgICAgICAgIHNlbGVjdG9yRGF0YS5jb21waWxlZFNlbGVjdG9yLndhc1VzZWQoKTsKIAog
ICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2VyKCZlbGVtZW50KSkgewpAQCAtNDIxLDcgKzQxOCw3
IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29tcGlsZWRT
ZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDCiAgICAgU2VsZWN0b3JDaGVja2VyOjpDaGVja2lu
Z0NvbnRleHQgY2hlY2tpbmdDb250ZXh0KFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6UXVlcnlpbmdS
dWxlcyk7CiAgICAgY2hlY2tpbmdDb250ZXh0LnNjb3BlID0gcm9vdE5vZGUuaXNEb2N1bWVudE5v
ZGUoKSA/IG51bGxwdHIgOiAmcm9vdE5vZGU7CiAKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBl
bGVtZW50RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4oc2VhcmNoUm9vdE5v
ZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1l
bnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNlYXJjaFJvb3ROb2RlKSkpIHsKICAgICAg
ICAgc2VsZWN0b3JEYXRhLmNvbXBpbGVkU2VsZWN0b3Iud2FzVXNlZCgpOwogCiAgICAgICAgIGlm
IChzZWxlY3RvckNoZWNrZXIoJmVsZW1lbnQsICZjaGVja2luZ0NvbnRleHQpKSB7CkBAIC00Mzcs
NyArNDM0LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVD
b21waWxlZFNpbmdsZU11bHRpU2VsZWN0b3JEYXRhKGNvbnMKIHsKICAgICBTZWxlY3RvckNoZWNr
ZXI6OkNoZWNraW5nQ29udGV4dCBjaGVja2luZ0NvbnRleHQoU2VsZWN0b3JDaGVja2VyOjpNb2Rl
OjpRdWVyeWluZ1J1bGVzKTsKICAgICBjaGVja2luZ0NvbnRleHQuc2NvcGUgPSByb290Tm9kZS5p
c0RvY3VtZW50Tm9kZSgpID8gbnVsbHB0ciA6ICZyb290Tm9kZTsKLSAgICBmb3IgKGF1dG8mIGVs
ZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9v
dE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVs
ZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAg
Zm9yIChhdXRvJiBzZWxlY3RvciA6IG1fc2VsZWN0b3JzKSB7CiAgICAgICAgICAgICBzZWxlY3Rv
ci5jb21waWxlZFNlbGVjdG9yLndhc1VzZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdu
bWVudC5jcHAKaW5kZXggNGQzZTYxOTQ3ZDNiZjhhNWFhYzRiY2U2NzdmYzcxYTMzYjg1YzZiOC4u
ZDJkMTNjYjA5MzUwZDA3YmM2MjA1N2VjOTNjZjM0ODVhNDYwZGRkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2xvdEFzc2lnbm1lbnQuY3BwCkBAIC0yNiwxMCArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlNsb3RBc3NpZ25tZW50LmgiCiAKLQorI2luY2x1ZGUgIkVsZW1lbnRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKLSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKaW5kZXggOWYzNTkzNWQ5NmM3OWU3NWI2OGQzMGMy
OGNiZTNjNWEwNDNmMDMzMy4uZmY2MWQ4Zjk0MGFhNmIxNjlkZmNmZDEzZjg3NDFjY2YwNzMxMjQ4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI5LDI5NCArMjksMjgyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZVR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBEb3VibGVFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIERvdWJsZUVs
ZW1lbnREZXNjZW5kYW50UmFuZ2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRWxlbWVudERl
c2NlbmRhbnRSYW5nZTsKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sKGNvbnN0
IEVsZW1lbnRUeXBlJik+IGNsYXNzIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZTsKIAot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gewotcHVi
bGljOgotICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJO
b2RlJiByb290KTsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29u
dGFpbmVyTm9kZSYgcm9vdCwgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotICAgIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotfTsKKy8vIFJhbmdlIGZvciBpdGVy
YXRpbmcgdGhyb3VnaCBkZXNjZW5kYW50IGVsZW1lbnRzLgordGVtcGxhdGU8dHlwZW5hbWUgRWxl
bWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRz
T2ZUeXBlKENvbnRhaW5lck5vZGUmKTsKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBF
bGVtZW50RGVzY2VuZGFudFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlw
ZShjb25zdCBDb250YWluZXJOb2RlJik7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWNsYXNzIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIDogcHVibGljIEVs
ZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiAgewotcHVibGljOgotICAgIFR5cGVkRWxl
bWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpOwot
ICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5v
ZGUmIHJvb3QsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKLSAgICBUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50Q29uc3RJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotfTsKKy8vIFJhbmdlIHRoYXQg
c2tpcHMgZWxlbWVudHMgd2hlcmUgdGhlIGZpbHRlciByZXR1cm5zIGZhbHNlLgordGVtcGxhdGU8
dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmlsdGVyKGNvbnN0IEVsZW1lbnRUeXBlJik+IEZp
bHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZTxjb25zdCBFbGVtZW50VHlwZSwgZmlsdGVyPiBk
ZXNjZW5kYW50c09mVHlwZShjb25zdCBDb250YWluZXJOb2RlJik7CisKKy8vIFJhbmdlIGZvciB1
c2Ugd2hlbiBib3RoIHNldHMgb2YgZGVzY2VuZGFudHMgYXJlIGtub3duIHRvIGJlIHRoZSBzYW1l
IGxlbmd0aC4KKy8vIElmIHRoZXkgYXJlIGRpZmZlcmVudCBsZW5ndGhzLCB0aGlzIHdpbGwgc3Rv
cCB3aGVuIHRoZSBzaG9ydGVyIG9uZSByZWFjaGVzIHRoZSBlbmQsIGJ1dCBhbHNvIGFuIGFzc2Vy
dGlvbiB3aWxsIGZhaWwuCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRG91YmxlRWxl
bWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFp
bmVyTm9kZSYgZmlyc3RSb290LCBDb250YWluZXJOb2RlJiBzZWNvbmRSb290KTsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yQWRhcHRlciB7CitjbGFzcyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIDogcHVibGlj
IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gewogcHVibGljOgotICAgIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpOwotICAgIFR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCk7Ci0gICAgVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbkF0KEVsZW1lbnRU
eXBlJik7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBm
cm9tKEVsZW1lbnQmKTsKLQotICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpOwotICAgIEVsZW1lbnRU
eXBlKiBsYXN0KCk7Ci0KLXByaXZhdGU6Ci0gICAgQ29udGFpbmVyTm9kZSYgbV9yb290OworICAg
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7Cisg
ICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBF
bGVtZW50VHlwZSogY3VycmVudCk7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3Bl
cmF0b3IrKygpOworICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsK
IH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlciB7CitjbGFzcyBFbGVtZW50RGVzY2VuZGFu
dFJhbmdlIHsKIHB1YmxpYzoKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
ckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgVHlwZWRFbGVtZW50RGVz
Y2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7Ci0gICAgVHlw
ZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpIGNvbnN0
OwotICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBi
ZWdpbkF0KGNvbnN0IEVsZW1lbnRUeXBlJikgY29uc3Q7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGZyb20oY29uc3QgRWxlbWVudCYpIGNvbnN0
OworICAgIEVsZW1lbnREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7
CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKSBjb25z
dDsKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKSBjb25z
dDsKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbkF0KEVs
ZW1lbnRUeXBlJikgY29uc3Q7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50
VHlwZT4gZnJvbShFbGVtZW50JikgY29uc3Q7CiAKLSAgICBjb25zdCBFbGVtZW50VHlwZSogZmly
c3QoKSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50VHlwZSogbGFzdCgpIGNvbnN0OworICAgIEVs
ZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0OworICAgIEVsZW1lbnRUeXBlKiBsYXN0KCkgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgY29uc3QgQ29udGFpbmVyTm9kZSYgbV9yb290OwogfTsKIAotdGVt
cGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZVR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvckFkYXB0ZXIgewordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNs
YXNzIERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UgewogcHVibGljOgotICAgIHR5cGVkZWYg
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gU2luZ2xl
QWRhcHRlcjsKLSAgICB0eXBlZGVmIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
cjxFbGVtZW50VHlwZT4gSXRlcmF0b3I7CisgICAgdHlwZWRlZiBFbGVtZW50RGVzY2VuZGFudFJh
bmdlPEVsZW1lbnRUeXBlPiBTaW5nbGVBZGFwdGVyOworICAgIHR5cGVkZWYgRG91YmxlRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gSXRlcmF0b3I7CiAKLSAgICBEb3VibGVU
eXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKFNpbmdsZUFkYXB0ZXImJiwgU2lu
Z2xlQWRhcHRlciYmKTsKLSAgICBJdGVyYXRvciBiZWdpbigpOwotICAgIEl0ZXJhdG9yIGVuZCgp
OworICAgIERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UoU2luZ2xlQWRhcHRlciYmLCBTaW5n
bGVBZGFwdGVyJiYpOworICAgIEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CisgICAgSXRlcmF0b3Ig
ZW5kKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgc3RkOjpwYWlyPFNpbmdsZUFkYXB0ZXIsIFNp
bmdsZUFkYXB0ZXI+IG1fcGFpcjsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PiBjbGFzcyBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgewordGVtcGxhdGU8
dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IgewogcHVibGljOgotICAgIHR5cGVkZWYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiBTaW5nbGVJdGVyYXRvcjsKKyAgICB0eXBlZGVmIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IFNpbmdsZUl0ZXJhdG9yOwogICAgIHR5cGVkZWYgc3Rk
OjpwYWlyPEVsZW1lbnRUeXBlJiwgRWxlbWVudFR5cGUmPiBSZWZlcmVuY2VQcm94eTsKIAotICAg
IERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihTaW5nbGVJdGVyYXRvciYmLCBT
aW5nbGVJdGVyYXRvciYmKTsKKyAgICBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKFNp
bmdsZUl0ZXJhdG9yJiYsIFNpbmdsZUl0ZXJhdG9yJiYpOwogICAgIFJlZmVyZW5jZVByb3h5IG9w
ZXJhdG9yKigpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEb3VibGVUeXBlZEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJikgY29uc3Q7Ci0gICAgRG91
YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImKSBjb25z
dDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRG91YmxlRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvciYpIGNvbnN0OworICAgIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJh
dG9yKysoKTsKIAogcHJpdmF0ZToKICAgICBzdGQ6OnBhaXI8U2luZ2xlSXRlcmF0b3IsIFNpbmds
ZUl0ZXJhdG9yPiBtX3BhaXI7CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2Nl
bmRhbnRzT2ZUeXBlKENvbnRhaW5lck5vZGUmKTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPiBkZXNjZW5kYW50c09mVHlwZShjb25zdCBDb250YWluZXJOb2RlJik7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBFbGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gY2xh
c3MgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT4geworcHVibGljOgorICAgIEZpbHRlcmVkRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiwgRWxlbWVudFR5cGUqID0gbnVsbHB0cik7
CisgICAgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Cit9
OwogCi0vLyBUaGlzIG11c3Qgb25seSBiZSB1c2VkIHdoZW4gYm90aCBzZXRzIG9mIGRlc2NlbmRh
bnRzIGFyZSBrbm93biB0byBiZSB0aGUgc2FtZSBsZW5ndGguCi0vLyBJZiB0aGV5IGFyZSBkaWZm
ZXJlbnQgbGVuZ3RocywgdGhpcyB3aWxsIHN0b3Agd2hlbiB0aGUgc2hvcnRlciBvbmUgcmVhY2hl
cyB0aGUgZW5kLCBidXQgYWxzbyBhbiBhc3NlcnRpb24gd2lsbCBmYWlsLgotdGVtcGxhdGU8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+IERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFk
YXB0ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKENvbnRhaW5lck5vZGUmIGZpcnN0
Um9vdCwgQ29udGFpbmVyTm9kZSYgc2Vjb25kUm9vdCk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVt
ZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gY2xhc3MgRmlsdGVyZWRF
bGVtZW50RGVzY2VuZGFudFJhbmdlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBJdGVyYXRvciA9IEZp
bHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZSwgZmlsdGVyPjsKIAot
Ly8gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yCisgICAgRmlsdGVyZWRFbGVtZW50RGVz
Y2VuZGFudFJhbmdlKGNvbnN0IENvbnRhaW5lck5vZGUmKTsKKyAgICBJdGVyYXRvciBiZWdpbigp
IGNvbnN0OworICAgIEl0ZXJhdG9yIGVuZCgpIGNvbnN0OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5v
ZGUmIHJvb3QpCi0gICAgOiBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZyb290KQotewot
fQorICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5v
ZGUmIHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVudEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPigmcm9vdCwgY3VycmVudCkKLXsKLX0KK3ByaXZhdGU6CisgICAgY29uc3QgQ29u
dGFpbmVyTm9kZSYgbV9yb290OworfTsKKworLy8gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcgog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCitpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29u
dGFpbmVyTm9kZSYgcm9vdCkKKyAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnJv
b3QpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJz
ZU5leHQoKSk7CiB9CiAKLS8vIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yCi0K
IHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNj
ZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRD
b25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCi0gICAgOiBFbGVtZW50Q29u
c3RJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnJvb3QpCi0KK2lubGluZSBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBD
b250YWluZXJOb2RlJiByb290LCBFbGVtZW50VHlwZSogY3VycmVudCkKKyAgICA6IEVsZW1lbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT4oJnJvb3QsIGN1cnJlbnQpCiB7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
KGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KQot
ICAgIDogRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZyb290LCBjdXJyZW50KQor
aW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCiB7CisgICAgRWxlbWVu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0KCk7CisgICAgcmV0dXJuICp0aGlz
OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBUeXBlZEVsZW1lbnREZXNj
ZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQoraW5saW5lIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItLSgpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVs
ZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0KCkpOworICAgIEVs
ZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXMoKTsKKyAgICByZXR1
cm4gKnRoaXM7CiB9CiAKLS8vIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIK
Ky8vIEVsZW1lbnREZXNjZW5kYW50UmFuZ2UKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dFR5cGU+OjpUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5v
ZGUmIHJvb3QpCitpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZT46OkVs
ZW1lbnREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKICAgICA6IG1f
cm9vdChyb290KQogewogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxp
bmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4oKQoraW5saW5l
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50
UmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBUcmF2ZXJzYWw8RWxl
bWVudFR5cGU+OjpmaXJzdFdpdGhpbihtX3Jvb3QpKTsKKyAgICByZXR1cm4gRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+
OjpmaXJzdFdpdGhpbihtX3Jvb3QpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4g
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgp
CitpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudERl
c2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290KTsKKyAgICBy
ZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290KTsKIH0K
ICAgICAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBkZXNjZW5k
YW50KQoraW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1l
bnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBkZXNj
ZW5kYW50KSBjb25zdAogewogICAgIEFTU0VSVChkZXNjZW5kYW50LmlzRGVzY2VuZGFudE9mKG1f
cm9vdCkpOwotICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+KG1fcm9vdCwgJmRlc2NlbmRhbnQpOworICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsICZkZXNjZW5kYW50KTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRl
cjxFbGVtZW50VHlwZT46OmZyb20oRWxlbWVudCYgZGVzY2VuZGFudCkKK2lubGluZSBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVs
ZW1lbnRUeXBlPjo6ZnJvbShFbGVtZW50JiBkZXNjZW5kYW50KSBjb25zdAogewogICAgIEFTU0VS
VChkZXNjZW5kYW50LmlzRGVzY2VuZGFudE9mKG1fcm9vdCkpOwogICAgIGlmIChpczxFbGVtZW50
VHlwZT4oZGVzY2VuZGFudCkpCi0gICAgICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgZG93bmNhc3Q8RWxlbWVudFR5cGU+KCZkZXNj
ZW5kYW50KSk7CisgICAgICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPihtX3Jvb3QsIGRvd25jYXN0PEVsZW1lbnRUeXBlPigmZGVzY2VuZGFudCkpOwogICAg
IEVsZW1lbnRUeXBlKiBuZXh0ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dChkZXNjZW5k
YW50LCAmbV9yb290KTsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPihtX3Jvb3QsIG5leHQpOworICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIG5leHQpOwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudFR5cGUqIFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpmaXJzdCgpCitpbmxpbmUgRWxlbWVu
dFR5cGUqIEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpmaXJzdCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0aGluKG1fcm9v
dCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
VHlwZSogVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46
Omxhc3QoKQoraW5saW5lIEVsZW1lbnRUeXBlKiBFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1l
bnRUeXBlPjo6bGFzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlw
ZT46Omxhc3RXaXRoaW4obV9yb290KTsKIH0KIAotLy8gVHlwZWRFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3JBZGFwdGVyCisvLyBEb3VibGVFbGVtZW50RGVzY2VuZGFudFJhbmdlCiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpUeXBlZEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKLSAgICA6
IG1fcm9vdChyb290KQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBEb3Vi
bGVFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPjo6RG91YmxlRWxlbWVudERlc2Nl
bmRhbnRSYW5nZShTaW5nbGVBZGFwdGVyJiYgZmlyc3QsIFNpbmdsZUFkYXB0ZXImJiBzZWNvbmQp
CisgICAgOiBtX3BhaXIoV1RGTW92ZShmaXJzdCksIFdURk1vdmUoc2Vjb25kKSkKIHsKIH0KIAot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29u
c3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGF1dG8gRG91YmxlRWxlbWVudERlc2NlbmRhbnRS
YW5nZTxFbGVtZW50VHlwZT46OmJlZ2luKCkgY29uc3QgLT4gSXRlcmF0b3IKIHsKLSAgICByZXR1
cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9v
dCwgVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RXaXRoaW4obV9yb290KSk7CisgICAgcmV0
dXJuIEl0ZXJhdG9yKG1fcGFpci5maXJzdC5iZWdpbigpLCBtX3BhaXIuc2Vjb25kLmJlZ2luKCkp
OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGF1dG8gRG91YmxlRWxlbWVudERlc2Nl
bmRhbnRSYW5nZTxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0IC0+IEl0ZXJhdG9yCiB7Ci0gICAg
cmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiht
X3Jvb3QpOworICAgIHJldHVybiBJdGVyYXRvcihtX3BhaXIuZmlyc3QuZW5kKCksIG1fcGFpci5z
ZWNvbmQuZW5kKCkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxp
bmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVk
RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2lu
QXQoY29uc3QgRWxlbWVudFR5cGUmIGRlc2NlbmRhbnQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGRl
c2NlbmRhbnQuaXNEZXNjZW5kYW50T2YobV9yb290KSk7Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsICZkZXNjZW5kYW50
KTsKLX0KKy8vIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IKIAotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFk
YXB0ZXI8RWxlbWVudFR5cGU+Ojpmcm9tKGNvbnN0IEVsZW1lbnQmIGRlc2NlbmRhbnQpIGNvbnN0
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIERvdWJsZUVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yKFNpbmdsZUl0ZXJhdG9yJiYgZmlyc3QsIFNpbmdsZUl0ZXJhdG9yJiYgc2Vjb25kKQorICAg
IDogbV9wYWlyKFdURk1vdmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29uZCkpCiB7Ci0gICAgQVNTRVJU
KGRlc2NlbmRhbnQuaXNEZXNjZW5kYW50T2YobV9yb290KSk7Ci0gICAgaWYgKGlzPEVsZW1lbnRU
eXBlPihkZXNjZW5kYW50KSkKLSAgICAgICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIGRvd25jYXN0PEVsZW1lbnRUeXBlPigm
ZGVzY2VuZGFudCkpOwotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBuZXh0ID0gVHJhdmVyc2FsPEVs
ZW1lbnRUeXBlPjo6bmV4dChkZXNjZW5kYW50LCAmbV9yb290KTsKLSAgICByZXR1cm4gVHlwZWRF
bGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgbmV4dCk7
CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBjb25zdCBFbGVt
ZW50VHlwZSogVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1l
bnRUeXBlPjo6Zmlyc3QoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlu
bGluZSBhdXRvIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojpv
cGVyYXRvciooKSBjb25zdCAtPiBSZWZlcmVuY2VQcm94eQogewotICAgIHJldHVybiBUcmF2ZXJz
YWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpbihtX3Jvb3QpOworICAgIHJldHVybiB7ICptX3Bh
aXIuZmlyc3QsICptX3BhaXIuc2Vjb25kIH07CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWlubGluZSBjb25zdCBFbGVtZW50VHlwZSogVHlwZWRFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6bGFzdCgpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGJvb2wgRG91YmxlRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yPT0oY29uc3QgRG91YmxlRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFRyYXZlcnNhbDxF
bGVtZW50VHlwZT46Omxhc3RXaXRoaW4obV9yb290KTsKKyAgICBBU1NFUlQoKG1fcGFpci5maXJz
dCA9PSBvdGhlci5tX3BhaXIuZmlyc3QpID09IChtX3BhaXIuc2Vjb25kID09IG90aGVyLm1fcGFp
ci5zZWNvbmQpKTsKKyAgICByZXR1cm4gbV9wYWlyLmZpcnN0ID09IG90aGVyLm1fcGFpci5maXJz
dCB8fCBtX3BhaXIuc2Vjb25kID09IG90aGVyLm1fcGFpci5zZWNvbmQ7CiB9CiAKLS8vIERvdWJs
ZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIKLQotdGVtcGxhdGU8dHlwZW5h
bWUgRWxlbWVudFR5cGU+IGlubGluZSBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6RG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yQWRhcHRlcihTaW5nbGVBZGFwdGVyJiYgZmlyc3QsIFNpbmdsZUFkYXB0ZXImJiBzZWNvbmQp
Ci0gICAgOiBtX3BhaXIoV1RGTW92ZShmaXJzdCksIFdURk1vdmUoc2Vjb25kKSkKK3RlbXBsYXRl
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgYm9vbCBEb3VibGVFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBEb3VibGVFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKIHsKKyAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgYXV0byBE
b3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6
YmVnaW4oKSAtPiBJdGVyYXRvcgordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGlu
ZSBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRG91YmxlRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewotICAg
IHJldHVybiBJdGVyYXRvcihtX3BhaXIuZmlyc3QuYmVnaW4oKSwgbV9wYWlyLnNlY29uZC5iZWdp
bigpKTsKKyAgICArK21fcGFpci5maXJzdDsKKyAgICArK21fcGFpci5zZWNvbmQ7CisgICAgcmV0
dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGF1
dG8gRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlw
ZT46OmVuZCgpIC0+IEl0ZXJhdG9yCisvLyBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IKKwordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmlsdGVyKGNvbnN0IEVs
ZW1lbnRUeXBlJik+IEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZSwgZmlsdGVyPjo6RmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRh
aW5lck5vZGUmIHJvb3QsIEVsZW1lbnRUeXBlKiBlbGVtZW50KQorICAgIDogRWxlbWVudEl0ZXJh
dG9yPGNvbnN0IEVsZW1lbnRUeXBlPiB7ICZyb290LCBlbGVtZW50IH0KIHsKLSAgICByZXR1cm4g
SXRlcmF0b3IobV9wYWlyLmZpcnN0LmVuZCgpLCBtX3BhaXIuc2Vjb25kLmVuZCgpKTsKIH0KIAot
Ly8gRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yCi0KLXRlbXBsYXRlPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6RG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKFNp
bmdsZUl0ZXJhdG9yJiYgZmlyc3QsIFNpbmdsZUl0ZXJhdG9yJiYgc2Vjb25kKQotICAgIDogbV9w
YWlyKFdURk1vdmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29uZCkpCit0ZW1wbGF0ZTx0eXBlbmFtZSBF
bGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gRmlsdGVyZWRFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlLCBmaWx0ZXI+JiBGaWx0ZXJlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGUsIGZpbHRlcj46Om9wZXJhdG9yKysoKQog
eworICAgIGRvIHsKKyAgICAgICAgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVy
c2VOZXh0KCk7CisgICAgfSB3aGlsZSAoIUVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OmF0
RW5kKCkgJiYgIWZpbHRlcigqKnRoaXMpKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgYXV0byBEb3VibGVUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvciooKSBjb25zdCAtPiBSZWZl
cmVuY2VQcm94eQorLy8gRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlCisKK3RlbXBsYXRl
PHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBG
aWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGUsIGZpbHRlcj46OkZpbHRl
cmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZShjb25zdCBDb250YWluZXJOb2RlJiByb290KQorICAg
IDogbV9yb290IHsgcm9vdCB9CiB7Ci0gICAgcmV0dXJuIHsgKm1fcGFpci5maXJzdCwgKm1fcGFp
ci5zZWNvbmQgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBi
b29sIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9w
ZXJhdG9yPT0oY29uc3QgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhl
cikgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25z
dCBFbGVtZW50VHlwZSYpPiBhdXRvIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVt
ZW50VHlwZSwgZmlsdGVyPjo6YmVnaW4oKSBjb25zdCAtPiBJdGVyYXRvcgogewotICAgIEFTU0VS
VCgobV9wYWlyLmZpcnN0ID09IG90aGVyLm1fcGFpci5maXJzdCkgPT0gKG1fcGFpci5zZWNvbmQg
PT0gb3RoZXIubV9wYWlyLnNlY29uZCkpOwotICAgIHJldHVybiBtX3BhaXIuZmlyc3QgPT0gb3Ro
ZXIubV9wYWlyLmZpcnN0IHx8IG1fcGFpci5zZWNvbmQgPT0gb3RoZXIubV9wYWlyLnNlY29uZDsK
KyAgICByZXR1cm4geyBtX3Jvb3QsIGZpcnN0KCkgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
RWxlbWVudFR5cGU+IGlubGluZSBib29sIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIT0oY29uc3QgRG91YmxlVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRU
eXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBhdXRvIEZpbHRlcmVkRWxlbWVu
dERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZSwgZmlsdGVyPjo6ZW5kKCkgY29uc3QgLT4gSXRl
cmF0b3IKIHsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgcmV0dXJuIHsgbV9y
b290IH07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgRG91Ymxl
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRG91YmxlVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUm
KT4gRWxlbWVudFR5cGUqIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlw
ZSwgZmlsdGVyPjo6Zmlyc3QoKSBjb25zdAogewotICAgICsrbV9wYWlyLmZpcnN0OwotICAgICsr
bV9wYWlyLnNlY29uZDsKLSAgICByZXR1cm4gKnRoaXM7CisgICAgZm9yIChhdXRvKiBlbGVtZW50
ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RXaXRoaW4obV9yb290KTsgZWxlbWVudDsg
ZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHQoKmVsZW1lbnQsICZtX3Jvb3Qp
KSB7CisgICAgICAgIGlmIChmaWx0ZXIoKmVsZW1lbnQpKQorICAgICAgICAgICAgcmV0dXJuIGVs
ZW1lbnQ7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOwogfQogCiAvLyBTdGFuZGFsb25lIGZ1
bmN0aW9ucwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNP
ZlR5cGUoQ29udGFpbmVyTm9kZSYgcm9vdCkKK2lubGluZSBFbGVtZW50RGVzY2VuZGFudFJhbmdl
PEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWluZXJOb2RlJiByb290KQogewot
ICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPihyb290KTsKKyAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlw
ZT4ocm9vdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBU
eXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRl
c2NlbmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCitpbmxpbmUgRWxlbWVu
dERlc2NlbmRhbnRSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoY29u
c3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKIHsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihyb290KTsKKyAgICByZXR1cm4g
RWxlbWVudERlc2NlbmRhbnRSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4ocm9vdCk7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgRG91YmxlVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29u
dGFpbmVyTm9kZSYgZmlyc3RSb290LCBDb250YWluZXJOb2RlJiBzZWNvbmRSb290KQordGVtcGxh
dGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBEb3VibGVFbGVtZW50RGVzY2VuZGFudFJh
bmdlPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWluZXJOb2RlJiBmaXJzdFJv
b3QsIENvbnRhaW5lck5vZGUmIHNlY29uZFJvb3QpCiB7CiAgICAgcmV0dXJuIHsgZGVzY2VuZGFu
dHNPZlR5cGU8RWxlbWVudFR5cGU+KGZpcnN0Um9vdCksIGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1l
bnRUeXBlPihzZWNvbmRSb290KSB9OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlw
ZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gRmlsdGVyZWRFbGVtZW50RGVzY2Vu
ZGFudFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlLCBmaWx0ZXI+IGRlc2NlbmRhbnRzT2ZUeXBlKGNv
bnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCit7CisgICAgcmV0dXJuIHsgcm9vdCB9OworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMjkx
YmE2YzBjMDRjNGI2Njk4NDY2ZTEwNzUzNDg1OGU4NTlkYWEwMS4uZGIyMGIzMDEzMjA5NjQxNmMz
ZTEwOTQ2ZWQyMDEwZTU0ZmM5ZjkwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAt
NDksNiArNDksNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJF
bGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgpAQCAtNjEsNyArNjIsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxCUkVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5o
IgorI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJv
bEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MSW1hZ2VFbGVtZW50LmgiCkBAIC0zNDI2LDIzICszNDI3LDE4IEBAIHZvaWQgRWRpdG9y
Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShFbGVtZW50KiBlKQogCiB2b2lkIEVkaXRvcjo6YXBw
bHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGNvbGxlY3Rp
b24gPSBkb2N1bWVudCgpLmdldEVsZW1lbnRzQnlUYWdOYW1lKEhUTUxOYW1lczo6Ym9keVRhZy0+
bG9jYWxOYW1lKCkpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNvbGxlY3Rpb24tPmxlbmd0aCgp
OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgYXBw
bHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQoY29sbGVjdGlvbi0+aXRlbShpKSk7Ci19Ci0KLXZvaWQg
RWRpdG9yOjphcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudChFbGVtZW50KiBlbGVtZW50KSBjb25z
dAotewotICAgIEFTU0VSVCghZWxlbWVudCB8fCBpczxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkp
OwotICAgIGlmICghaXM8U3R5bGVkRWxlbWVudD4oZWxlbWVudCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00gd3JhcHBlciBzbyB3ZSBnZXQgdGhlIHNh
bWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCi0gICAgYXV0byYgc3R5bGUgPSBkb3duY2Fz
dDxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkuY3Nzb21TdHlsZSgpOwotICAgIHN0eWxlLnNldFBy
b3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkV3JhcCwgImJyZWFrLXdvcmQiLCBmYWxzZSk7
Ci0gICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2Rl
LCAic3BhY2UiLCBmYWxzZSk7Ci0gICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9w
ZXJ0eUxpbmVCcmVhaywgImFmdGVyLXdoaXRlLXNwYWNlIiwgZmFsc2UpOworICAgIC8vIEZJWE1F
OiBOb3QgY2xlYXIgaXQncyB2YWx1YWJsZSB0byBkbyB0aGlzIHRvIGFsbCBib2R5IGVsZW1lbnRz
IHJhdGhlciB0aGFuIGp1c3QgZG9pbmcgaXQgb24gdGhlIHNpbmdsZSBvbmUgcmV0dXJuZWQgYnkg
RG9jdW1lbnQ6OmJvZHkuCisgICAgVmVjdG9yPFJlZjxIVE1MQm9keUVsZW1lbnQ+PiBib2RpZXM7
CisgICAgZm9yIChhdXRvJiBib2R5IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTEJvZHlFbGVtZW50
Pihkb2N1bWVudCgpKSkKKyAgICAgICAgYm9kaWVzLmFwcGVuZChib2R5KTsKKworICAgIGZvciAo
YXV0byYgYm9keSA6IGJvZGllcykgeworICAgICAgICAvLyBNdXRhdGUgdXNpbmcgdGhlIENTU09N
IHdyYXBwZXIgc28gd2UgZ2V0IHRoZSBzYW1lIGV2ZW50IGJlaGF2aW9yIGFzIGEgc2NyaXB0Lgor
ICAgICAgICBhdXRvJiBzdHlsZSA9IGJvZHktPmNzc29tU3R5bGUoKTsKKyAgICAgICAgc3R5bGUu
c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdvcmRXcmFwLCAiYnJlYWstd29yZCIsIGZh
bHNlKTsKKyAgICAgICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dE5ic3BNb2RlLCAic3BhY2UiLCBmYWxzZSk7CisgICAgICAgIHN0eWxlLnNldFByb3BlcnR5SW50
ZXJuYWwoQ1NTUHJvcGVydHlMaW5lQnJlYWssICJhZnRlci13aGl0ZS1zcGFjZSIsIGZhbHNlKTsK
KyAgICB9CiB9CiAKIGJvb2wgRWRpdG9yOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0
LCBGaW5kT3B0aW9ucyBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggNmVhODky
MmZiMDc2MmRmZTAzMmYxMGY2ZGExYWZiZDZlMzE0ZWY4Yy4uNzA5ODFkNzQ3YTE4N2U4ZTc1ODEx
NWI2NjZkNzhjYTIzZDBkYTVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC00MzEsNyAr
NDMxLDYgQEAgcHVibGljOgogICAgIHZvaWQgY29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKEVkaXRp
bmdTdHlsZSYgLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6VW5zcGVjaWZpZWQpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKFN0eWxlUHJvcGVydGll
cyYgLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6VW5zcGVjaWZpZWQpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCkgY29uc3Q7Ci0gICAg
dm9pZCBhcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudChFbGVtZW50KikgY29uc3Q7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBJbnRSZWN0IGZpcnN0UmVjdEZvclJhbmdlKFJhbmdlKikgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlci5jcHAKaW5kZXggY2RlOWE3OGM4ZmU3ZGExMzFlMTFmNDRmNGJiMDkxYzVmZTZmMDJmMy4u
MWU3NjBkZTcyMzE2MDlkMDU5Mjk4MjhmN2UxM2YzZDIyYmEyNTJmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAg
LTcxLDcgKzcxLDcgQEAgcHVibGljOgogCiAgICAgICAgIFR5cGUgdHlwZSA9IFR5cGU6OkluY2x1
ZGU7CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBtYXRjaGluZ0VsZW1lbnQ7Ci0gICAgICAgIGZv
ciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnRMaW5lYWdlKHN0YXJ0aW5nRWxlbWVudC5nZXQoKSkp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbGluZWFnZU9mVHlwZTxFbGVtZW50Pigq
c3RhcnRpbmdFbGVtZW50KSkgewogICAgICAgICAgICAgaWYgKGF1dG8gdHlwZU9yTnVsbG9wdCA9
IHR5cGVGb3JFbGVtZW50KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgdHlwZSA9ICp0eXBl
T3JOdWxsb3B0OwogICAgICAgICAgICAgICAgIG1hdGNoaW5nRWxlbWVudCA9ICZlbGVtZW50OwpA
QCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAg
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50TGluZWFnZShzdGFydGluZ0VsZW1lbnQu
Z2V0KCkpKSB7CisgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxl
bWVudD4oKnN0YXJ0aW5nRWxlbWVudCkpIHsKICAgICAgICAgICAgIG1fY2FjaGUuc2V0KGVsZW1l
bnQsIHR5cGUpOwogICAgICAgICAgICAgaWYgKCZlbGVtZW50ID09IG1hdGNoaW5nRWxlbWVudCkK
ICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMzk0OTZiNjk4ODY2YzRhZWMz
Zjc3ZDRlNjYwYmU2ZDUwNzk5ZDlkZS4uZjdkYTBiZGI1OGE4ZGUwYmYzNjRlYmYzNDk0NDNiMmRl
YzgyNDhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIkRvY3VtZW50
TG9hZGVyLmgiCiAjaW1wb3J0ICJFZGl0b3IuaCIKICNpbXBvcnQgIkVkaXRvckNsaWVudC5oIgor
I2ltcG9ydCAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW1wb3J0ICJGaWxlLmgiCiAjaW1wb3J0ICJG
cmFtZS5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXIuaCIKQEAgLTU4LDcgKzU5LDYgQEAKICNpbXBv
cnQgIlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIgogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNp
bXBvcnQgIlNvY2tldFByb3ZpZGVyLmgiCi0jaW1wb3J0ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2
ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZVJl
c291cmNlV2ViUmVzb3VyY2VIYW5kbGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5k
ZXggMTU5NTAzNTFkOTA0NzRjN2M3ODhjMzNlNjdlN2RhODU4ODdmNmQ0Yy4uN2UyMmM1MjJhZGM4
ZTIyN2I2MzliY2VlNmRiNDZkMGEzOTI5M2Q1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cApAQCAtNzUsNyArNzUsNiBAQAogI2luY2x1ZGUgIlNvY2tldFByb3ZpZGVyLmgiCiAjaW5jbHVk
ZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCi0jaW5jbHVk
ZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNl
bGVjdGlvbi5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENv
bGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaApp
bmRleCA3OWY0NzdkNzRmMjI0ZTcxYjQ2YWJhNDc3ZjZjZGIwZGE4OWRmNDg1Li5jODkxYmUzZDdl
Zjk3OWJkMTU4Nzg4ZTQyYzhjNDA4YWI1YmJhZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9D
YWNoZWRIVE1MQ29sbGVjdGlvbi5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSAiQ29sbGVjdGlvblRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UcmF2ZXJzYWwu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oCmluZGV4IDY2ODI5
MzM4ZDBiMWQxYjBjYWI1MTE3N2YwMzg3MjBjMTkyZjcxOTYuLmYxMWU4ODFjYzM5ZDcxNGIwY2Qz
NDU2M2Y4Yzg2OGEzZmU2MjYxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29s
bGVjdGlvblRyYXZlcnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRy
YXZlcnNhbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI2LDggKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29sbGVj
dGlvblR5cGUuaCIKLSNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgotI2luY2x1ZGUg
IkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3Iu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNiwyNyArMzUsMjcgQEAgc3RydWN0IENv
bGxlY3Rpb25UcmF2ZXJzYWwgeyB9OwogCiB0ZW1wbGF0ZSA8Pgogc3RydWN0IENvbGxlY3Rpb25U
cmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPiB7Ci0gICAgdXNp
bmcgSXRlcmF0b3IgPSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOworICAgIHVzaW5nIEl0ZXJh
dG9yID0gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50PjsKIAotICAgIHN0YXRpYyBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGVuZChDb250YWluZXJOb2RlJikgeyByZXR1cm4gRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcigpOyB9CisgICAgc3RhdGljIEl0ZXJhdG9yIGVuZChDb250
YWluZXJOb2RlJiByb290Tm9kZSkgeyByZXR1cm4geyByb290Tm9kZSB9OyB9CiAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotICAgIHN0YXRpYyBFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yIGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlKTsKKyAgICBzdGF0aWMgSXRlcmF0b3IgYmVnaW4oY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENvbGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBs
YXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKKyAg
ICBzdGF0aWMgSXRlcmF0b3IgbGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJO
b2RlJiByb290Tm9kZSk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgotICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3Mm
LCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5z
aWduZWQmIHRyYXZlcnNlZENvdW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQo
Y29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50
LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENv
bGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENv
bGxlY3Rpb25DbGFzcyYsIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2ln
bmVkIGNvdW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxl
Y3Rpb25DbGFzcyYsIEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCk7CiB9OwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5lIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6
RGVzY2VuZGFudHM+OjpiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENv
bnRhaW5lck5vZGUmIHJvb3ROb2RlKQoraW5saW5lIGF1dG8gQ29sbGVjdGlvblRyYXZlcnNhbDxD
b2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+OjpiZWdpbihjb25zdCBDb2xsZWN0
aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSAtPiBJdGVyYXRv
cgogewotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBlbGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUp
OworICAgIGF1dG8gZGVzY2VuZGFudHMgPSBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihyb290
Tm9kZSk7CiAgICAgYXV0byBlbmQgPSBkZXNjZW5kYW50cy5lbmQoKTsKICAgICBmb3IgKGF1dG8g
aXQgPSBkZXNjZW5kYW50cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYg
KGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkgewpAQCAtNjksMTEgKzY4LDEwIEBAIGlu
bGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVj
dGlvblRyYXZlcnNhbFR5cGU6OkRlCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9u
Q2xhc3M+Ci1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDb2xsZWN0aW9uVHJhdmVy
c2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46Omxhc3QoY29uc3QgQ29s
bGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK2lubGlu
ZSBhdXRvIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2Nl
bmRhbnRzPjo6bGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5l
ck5vZGUmIHJvb3ROb2RlKSAtPiBJdGVyYXRvcgogewotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBl
bGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IgaW52YWxpZDsKLSAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5sYXN0KCk7IGl0ICE9
IGludmFsaWQ7IC0taXQpIHsKKyAgICBJdGVyYXRvciBpbnZhbGlkIHsgcm9vdE5vZGUgfTsKKyAg
ICBmb3IgKEl0ZXJhdG9yIGl0IHsgcm9vdE5vZGUsIEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RXaXRo
aW4ocm9vdE5vZGUpIH07IGl0ICE9IGludmFsaWQ7IC0taXQpIHsKICAgICAgICAgaWYgKGNvbGxl
Y3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkgewogICAgICAgICAgICAgLy8gRHJvcCBpdGVyYXRv
ciBhc3NlcnRpb25zIGJlY2F1c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmlu
ZS1ncmFpbmVkIGludmFsaWRhdGlvbiBzY2hlbWUuCiAgICAgICAgICAgICBpdC5kcm9wQXNzZXJ0
aW9ucygpOwpAQCAtODQsMTAgKzgyLDEwIEBAIGlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlCiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci1pbmxpbmUgdm9pZCBDb2xsZWN0
aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZl
cnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVy
c2VkQ291bnQpCitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2
ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9u
Q2xhc3MmIGNvbGxlY3Rpb24sIEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5z
aWduZWQmIHRyYXZlcnNlZENvdW50KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRN
YXRjaGVzKCpjdXJyZW50KSk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBpbnZhbGlk
OworICAgIEl0ZXJhdG9yIGludmFsaWQgeyBjb2xsZWN0aW9uLnJvb3ROb2RlKCkgfTsKICAgICBm
b3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2ZXJz
ZWRDb3VudCkgewogICAgICAgICBkbyB7CiAgICAgICAgICAgICArK2N1cnJlbnQ7CkBAIC05OCwx
MCArOTYsMTAgQEAgaW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJh
dmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUYKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29s
bGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VCYWNrd2FyZChjb25z
dCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Im
IGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KQoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNh
bDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUJhY2t3YXJk
KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVu
c2lnbmVkIGNvdW50KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpj
dXJyZW50KSk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBpbnZhbGlkOworICAgIEl0
ZXJhdG9yIGludmFsaWQgeyBjb2xsZWN0aW9uLnJvb3ROb2RlKCkgfTsKICAgICBmb3IgKDsgY291
bnQ7IC0tY291bnQpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgLS1jdXJyZW50OwpAQCAt
MTE1LDIzICsxMTMsMjMgQEAgdGVtcGxhdGUgPD4KIHN0cnVjdCBDb2xsZWN0aW9uVHJhdmVyc2Fs
PENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+IHsKICAgICB1c2luZyBJdGVy
YXRvciA9IEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+OwogCi0gICAgc3RhdGljIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGVuZChDb250YWluZXJOb2RlJiByb290Tm9kZSkgeyBy
ZXR1cm4gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4ocm9vdE5vZGUpOyB9CisgICAgc3Rh
dGljIEl0ZXJhdG9yIGVuZChDb250YWluZXJOb2RlJiByb290Tm9kZSkgeyByZXR1cm4gSXRlcmF0
b3Iocm9vdE5vZGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgotICAgIHN0YXRpYyBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBiZWdpbihjb25zdCBD
b2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CisgICAgc3RhdGljIEl0
ZXJhdG9yIGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlKTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3Rh
dGljIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGxhc3QoY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOworICAgIHN0YXRpYyBJdGVyYXRvciBsYXN0
KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKIAogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIHZvaWQgdHJh
dmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnRDaGlsZEl0ZXJhdG9y
PEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENv
dW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVy
c2VkQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLSAg
ICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVs
ZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCk7Cisg
ICAgc3RhdGljIHZvaWQgdHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBJ
dGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpOwogfTsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50
PiBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9u
bHk+OjpiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5v
ZGUmIHJvb3ROb2RlKQoraW5saW5lIGF1dG8gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9u
VHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6YmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNz
JiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkgLT4gSXRlcmF0b3IKIHsKICAg
ICBhdXRvIGNoaWxkcmVuID0gY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpOwogICAg
IGF1dG8gZW5kID0gY2hpbGRyZW4uZW5kKCk7CkBAIC0xNDYsMTEgKzE0NCwxMSBAQCBpbmxpbmUg
RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0
aW9uVHJhdmVyc2FsVHlwZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IENvbGxlY3Rpb25UcmF2ZXJz
YWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46Omxhc3QoY29uc3QgQ29s
bGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK2lubGlu
ZSBhdXRvIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxk
cmVuT25seT46Omxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWlu
ZXJOb2RlJiByb290Tm9kZSkgLT4gSXRlcmF0b3IKIHsKICAgICBhdXRvIGNoaWxkcmVuID0gY2hp
bGRyZW5PZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpOwotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9y
PEVsZW1lbnQ+IGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKLSAgICBFbGVtZW50Q2hp
bGRJdGVyYXRvcjxFbGVtZW50PiBsYXN0KHJvb3ROb2RlLCBjaGlsZHJlbi5sYXN0KCkpOworICAg
IEl0ZXJhdG9yIGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKKyAgICBJdGVyYXRvciBs
YXN0KHJvb3ROb2RlLCBjaGlsZHJlbi5sYXN0KCkpOwogICAgIGZvciAoYXV0byBpdCA9IGxhc3Q7
IGl0ICE9IGludmFsaWQ7IC0taXQpIHsKICAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVudE1h
dGNoZXMoKml0KSkgewogICAgICAgICAgICAgLy8gRHJvcCBpdGVyYXRvciBhc3NlcnRpb25zIGJl
Y2F1c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1ncmFpbmVkIGludmFs
aWRhdGlvbiBzY2hlbWUuCkBAIC0xNjIsMTAgKzE2MCwxMCBAQCBpbmxpbmUgRWxlbWVudENoaWxk
SXRlcmF0b3I8RWxlbWVudD4gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2Fs
VHlwZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5lIHZv
aWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5P
bmx5Pjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwg
RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1
bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpCitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2Fs
PENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2ZXJzZUZvcndhcmQo
Y29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBJdGVyYXRvciYgY3VycmVudCwgdW5z
aWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkKIHsKICAgICBBU1NFUlQoY29s
bGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwotICAgIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yPEVsZW1lbnQ+IGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKKyAgICBJdGVyYXRv
ciBpbnZhbGlkKGNvbGxlY3Rpb24ucm9vdE5vZGUoKSk7CiAgICAgZm9yICh0cmF2ZXJzZWRDb3Vu
dCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKICAgICAg
ICAgZG8gewogICAgICAgICAgICAgKytjdXJyZW50OwpAQCAtMTc2LDEwICsxNzQsMTAgQEAgaW5s
aW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hp
bGRyZW5Pbmx5Pjo6dHJhdmVyc2UKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25D
bGFzcz4KLWlubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNh
bFR5cGU6OkNoaWxkcmVuT25seT46OnRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiBjb2xsZWN0aW9uLCBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiYgY3VycmVudCwg
dW5zaWduZWQgY291bnQpCitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rp
b25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENv
bGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNv
dW50KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7
Ci0gICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gaW52YWxpZChjb2xsZWN0aW9uLnJv
b3ROb2RlKCkpOworICAgIEl0ZXJhdG9yIGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsK
ICAgICBmb3IgKDsgY291bnQ7IC0tY291bnQpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAg
LS1jdXJyZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCBiOTQ5
YTY5MWY2MGZkYzk5YzJkN2Y2N2ZkZjhiNzc1Mzg1OGUzOTI4Li43ZmYzMmU1OTk3ZTcwNmQ1Nzli
OTliMGMzZjI3ZmQ1ZWZiYmQyMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Nv
bG9ySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBl
LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgi
CiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJFbGVt
ZW50Q2hpbGRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiSFRNTERh
dGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCkBAIC0yODcsMTMg
KzI4Niw5IEBAIFZlY3RvcjxDb2xvcj4gQ29sb3JJbnB1dFR5cGU6OnN1Z2dlc3RlZENvbG9ycygp
IGNvbnN0CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgQVNTRVJUKGVsZW1lbnQo
KSk7CiAgICAgaWYgKGF1dG8gZGF0YUxpc3QgPSBlbGVtZW50KCktPmRhdGFMaXN0KCkpIHsKLSAg
ICAgICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBvcHRpb25zID0gZGF0YUxpc3QtPm9wdGlvbnMoKTsK
LSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gb3B0aW9ucy0+bGVuZ3RoKCk7Ci0gICAgICAgIHN1
Z2dlc3Rpb25zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSAhPSBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgYXV0byB2YWx1
ZSA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50Pigqb3B0aW9ucy0+aXRlbShpKSkudmFsdWUo
KTsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkU2ltcGxlQ29sb3IodmFsdWUpKQotICAgICAgICAg
ICAgICAgIHN1Z2dlc3Rpb25zLnVuY2hlY2tlZEFwcGVuZChDb2xvcih2YWx1ZSkpOworICAgICAg
ICBmb3IgKGF1dG8mIG9wdGlvbiA6IGRhdGFMaXN0LT5zdWdnZXN0aW9ucygpKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byBjb2xvciA9IHBhcnNlU2ltcGxlQ29sb3JWYWx1ZShvcHRpb24udmFsdWUo
KSkpCisgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMudW5jaGVja2VkQXBwZW5kKCpjb2xvcik7
CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcAppbmRleCAzODM4ZjFiZDdlNGU2N2Y1NTcw
NWUxMDBiM2Q2OTczZDAzODkzZTUwLi45Y2IzYTY3MDIzNzJjZDRiZDJiZmQ5ZWUzYmE4OWZiY2E3
YzhmZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1M
Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb24uaCIKIAogI2luY2x1ZGUgIkhUTUxBcHBsZXRFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSFRNTERhdGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5o
IgpAQCAtNjQsMTIgKzY1LDcgQEAgYm9vbCBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248dHJh
dmVyc2FsVHlwZT46OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIGVsZW1lbnQKICAgICBjYXNlIFNl
bGVjdGVkT3B0aW9uczoKICAgICAgICAgcmV0dXJuIGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVt
ZW50KSAmJiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkuc2VsZWN0ZWQoKTsK
ICAgICBjYXNlIERhdGFMaXN0T3B0aW9uczoKLSAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVt
ZW50PihlbGVtZW50KSkgewotICAgICAgICAgICAgSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbiA9
IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KTsKLSAgICAgICAgICAgIGlmICgh
b3B0aW9uLmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmICFvcHRpb24udmFsdWUoKS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQp
OwogICAgIGNhc2UgTWFwQXJlYXM6CiAgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUo
YXJlYVRhZyk7CiAgICAgY2FzZSBEb2NBcHBsZXRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
bGxDb2xsZWN0aW9uLmlkbAppbmRleCA4ZmNiNjhjNjgwMDA4MzcyM2E1ODU4ZjBjZTZkYmFhYjQ3
NTM5YzNjLi5lNWIxMTkyZTQ5Mjg4NzEzZjMzMjFiY2EwYTdjMjhhNjc4MWFhYTk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmlkbApAQCAtMzEsNiArMzEsNiBAQAog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKIAogICAgIGdldHRl
ciBFbGVtZW50PyAodW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW0ltcGxlbWVudGVkQXM9bmFt
ZWRJdGVtT3JJdGVtc10gZ2V0dGVyIChIVE1MQ29sbGVjdGlvbiBvciBFbGVtZW50KT8gbmFtZWRJ
dGVtKERPTVN0cmluZyBuYW1lKTsKLSAgICBbSW1wbGVtZW50ZWRBcz1uYW1lZE9ySW5kZXhlZEl0
ZW1Pckl0ZW1zXSBsZWdhY3ljYWxsZXIgKEhUTUxDb2xsZWN0aW9uIG9yIEVsZW1lbnQpPyBpdGVt
KG9wdGlvbmFsIERPTVN0cmluZyBuYW1lT3JJbmRleCk7CisgICAgW0ltcGxlbWVudGVkQXM9bmFt
ZWRJdGVtT3JJdGVtc10gZ2V0dGVyIChIVE1MQ29sbGVjdGlvbiBvciBFbGVtZW50KT8gbmFtZWRJ
dGVtKFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gRE9NU3RyaW5nIG5hbWUpOworICAgIFtJ
bXBsZW1lbnRlZEFzPW5hbWVkT3JJbmRleGVkSXRlbU9ySXRlbXNdIGxlZ2FjeWNhbGxlciAoSFRN
TENvbGxlY3Rpb24gb3IgRWxlbWVudCk/IGl0ZW0ob3B0aW9uYWwgW0F0b21TdHJpbmddIERPTVN0
cmluZyBuYW1lT3JJbmRleCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ29sbGVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmlk
bAppbmRleCA2ZGZhZThiZDg5NGFjZGMyZDI2MDU1NjYyNmI0YzczYmRiMWM5YTViLi5jNDUyZDg5
ZWM5YmIwZTA3ZWIzZTQyMzEyM2JmMzIxNzIwOTU2NDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDb2xsZWN0aW9uLmlkbApAQCAtMjcsNSArMjcsNSBAQAogXSBpbnRlcmZhY2UgSFRNTENvbGxl
Y3Rpb24gewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAg
ICBnZXR0ZXIgRWxlbWVudD8gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBnZXR0ZXIg
RWxlbWVudD8gbmFtZWRJdGVtKERPTVN0cmluZyBuYW1lKTsKKyAgICBnZXR0ZXIgRWxlbWVudD8g
bmFtZWRJdGVtKFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gRE9NU3RyaW5nIG5hbWUpOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwCmluZGV4IGJl
Yzg3YjM2ZDM4MTQwZTJjMmNlYzEyZDRhMGJkYmYzODU0ODhhMTkuLjgyNmMyYzU0OTM1MmU1NTdh
NWJiODk1NGY3NmE2MWYwNTJmOTc1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERhdGFMaXN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0
YUxpc3RFbGVtZW50LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCkBAIC0zNyw2ICszNyw3IEBACiAKICNpbmNsdWRlICJHZW5lcmljQ2Fj
aGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJI
VE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5o
IgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxp
bmVzLmg+CkBAIC02NSw2ICs2NiwxMSBAQCB2b2lkIEhUTUxEYXRhTGlzdEVsZW1lbnQ6Om9wdGlv
bkVsZW1lbnRDaGlsZHJlbkNoYW5nZWQoKQogICAgIHRyZWVTY29wZSgpLmlkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeSgpLm5vdGlmeU9ic2VydmVycyhnZXRJZEF0dHJpYnV0ZSgpKTsKIH0KIAorYm9v
bCBIVE1MRGF0YUxpc3RFbGVtZW50Ojppc1N1Z2dlc3Rpb24oY29uc3QgSFRNTE9wdGlvbkVsZW1l
bnQmIGRlc2NlbmRhbnQpCit7CisgICAgcmV0dXJuICFkZXNjZW5kYW50LmlzRGlzYWJsZWRGb3Jt
Q29udHJvbCgpICYmICFkZXNjZW5kYW50LnZhbHVlKCkuaXNFbXB0eSgpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmgKaW5kZXggOGY3MWZhNWM5MTFj
OWI1MGIyYjgxMGQ4NTdmN2FjM2NmMmNjZWMwMS4uN2NmNTcxZTI5YTY3MGNkZjBjZDZkZTU1Mzc1
M2I3ZWE5NTJkODY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxp
c3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50
LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKQEAgLTMzLDExICszMywxMyBAQAogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAK
LSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgSFRNTENvbGxlY3Rpb247CisKIGNsYXNzIEhUTUxEYXRhTGlzdEVsZW1lbnQgZmluYWwgOiBw
dWJsaWMgSFRNTEVsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTERhdGFM
aXN0RWxlbWVudCk7CiBwdWJsaWM6CkBAIC00Nyw2ICs0OSw5IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgb3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOwogCisgICAgc3RhdGljIGJvb2wgaXNT
dWdnZXN0aW9uKGNvbnN0IEhUTUxPcHRpb25FbGVtZW50JiBkZXNjZW5kYW50KTsKKyAgICBhdXRv
IHN1Z2dlc3Rpb25zKCkgY29uc3QgeyByZXR1cm4gZGVzY2VuZGFudHNPZlR5cGU8SFRNTE9wdGlv
bkVsZW1lbnQsIGlzU3VnZ2VzdGlvbj4oKnRoaXMpOyB9CisKIHByaXZhdGU6CiAgICAgSFRNTERh
dGFMaXN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDY4Y2Y1NTNhYjQ5MGFlNGRmMDdjN2RmYjYy
YjdkZGQwNjY5MDYwZWEuLjMyZWQ0YWQzMWJkMzBlY2Y0Y2NjNDhmYjE0MjQ0YTMyMzI0ZTA0Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAg
ICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJp
Z2h0IChDKSAyMDA0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
IChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90
b3JvbGEgTW9iaWxpdHkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDQsNyArNDQsNiBA
QAogI2luY2x1ZGUgIkhUTUxCRElFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJSRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxCdXR0b25FbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rp
b24uaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudEZh
Y3RvcnkuaCIKICNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCkBAIC02MCw2ICs1OSw3
IEBACiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQu
aCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RGlzYWxs
b3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlNpbXVsYXRl
ZENsaWNrLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCkBAIC03NjcsMTQgKzc2Nywx
NiBAQCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIEhUTUxFbGVtZW50Ojphc0Zvcm1Bc3NvY2lhdGVk
RWxlbWVudCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBl
bGVtZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5KGNvbnN0IE5vZGUmIG5vZGUpCitzdGF0aWMgYm9v
bCBlbGVtZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50
KQogewotICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KG5vZGUpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVu
dD4obm9kZSk7CiAgICAgcmV0dXJuIGlzPEhUTUxCRElFbGVtZW50PihlbGVtZW50KSB8fCBlbGVt
ZW50Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGlyQXR0cik7CiB9CiAKK3N0
YXRpYyBib29sIGVsZW1lbnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkoY29uc3QgTm9kZSYgbm9kZSkK
K3sKKyAgICByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGVsZW1lbnRBZmZlY3RzRGly
ZWN0aW9uYWxpdHkoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG5vZGUpKTsKK30KKwogc3RhdGljIHZv
aWQgc2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVseShOb2RlKiBmaXJzdE5vZGUsIGJvb2wgZmxh
ZywgTm9kZSogbGFzdE5vZGUgPSBudWxscHRyKQogewogICAgIGZpcnN0Tm9kZS0+c2V0U2VsZk9y
QW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKGZsYWcpOwpAQCAtODg1LDEwICs4ODcsMTAgQEAg
dm9pZCBIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hpbGRB
dHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnQKICAgICBzZXRIYXNEaXJBdXRvRmxhZ1JlY3Vyc2l2ZWx5
KGNoaWxkLCBmYWxzZSk7CiAgICAgaWYgKCFyZW5kZXJlcigpIHx8IHJlbmRlcmVyKCktPnN0eWxl
KCkuZGlyZWN0aW9uKCkgPT0gdGV4dERpcmVjdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIGZv
ciAoYXV0byYgZWxlbWVudFRvQWRqdXN0IDogZWxlbWVudExpbmVhZ2UodGhpcykpIHsKLSAgICAg
ICAgaWYgKGVsZW1lbnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkoZWxlbWVudFRvQWRqdXN0KSkgewot
ICAgICAgICAgICAgZWxlbWVudFRvQWRqdXN0LmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsK
LSAgICAgICAgICAgIHJldHVybjsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZU
eXBlPEhUTUxFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKGVsZW1lbnRBZmZlY3RzRGly
ZWN0aW9uYWxpdHkoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGVsZW1lbnQuaW52YWxpZGF0ZVN0
eWxlRm9yU3VidHJlZSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggMzk1ZGIxZTYyZWVkZDFkOTAwZTllN2Mz
ZWM4ODhjYjAwY2IyYTRhMy4uN2UwNzRlYjYxMjg5NzYyODkwZTExZTgxYWZjZDZhMDkzZTdmZGQ4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtMjIsMTkgKzIyLDE3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiSW5wdXRNb2RlLmgiCisjaW5jbHVkZSAiU3R5bGVkRWxl
bWVudC5oIgorCiAjaWYgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKQogI2luY2x1ZGUgIkF1dG9jYXBp
dGFsaXplLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgIklucHV0TW9kZS5oIgotI2luY2x1ZGUgIlN0
eWxlZEVsZW1lbnQuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEb2N1bWVudEZy
YWdtZW50OwogY2xhc3MgRm9ybUFzc29jaWF0ZWRFbGVtZW50OwogY2xhc3MgRm9ybU5hbWVkSXRl
bTsKLWNsYXNzIEhUTUxDb2xsZWN0aW9uOwogY2xhc3MgSFRNTEZvcm1FbGVtZW50OwogCiBlbnVt
IGNsYXNzIEVudGVyS2V5SGludCA6IHVpbnQ4X3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmNwcAppbmRleCA5MTcwMWUxNDQ0ZWYyODYwODVmNzIxMjQwYmVmMGFiNmMyNzYx
NjEyLi4yMWNiOWQ5M2M5YTM0MGEzZmIzY2IxNjYyMDBjZDY4MTA0MGU1YTcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5
cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAo
QykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAo
QykgMjAwMCBTdGVmYW4gU2NoaW1hbnNraSAoMVN0ZWluQGdteC5kZSkKLSAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNjYsMTUgKzY2LDEw
IEBAIFJlZjxIVE1MRW1iZWRFbGVtZW50PiBIVE1MRW1iZWRFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQmIGRvY3VtZW50KQogCiBzdGF0aWMgaW5saW5lIFJlbmRlcldpZGdldCogZmluZFdpZGdldFJl
bmRlcmVyKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKSB7
Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7Ci0g
ICAgICAgIH0gd2hpbGUgKG5vZGUgJiYgIWlzPEhUTUxPYmplY3RFbGVtZW50Pigqbm9kZSkpOwot
ICAgIH0KLQorICAgIGlmICghbm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgbm9kZSA9IGFuY2Vz
dG9yc09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oKm5vZGUpLmZpcnN0KCk7CiAgICAgaWYgKG5v
ZGUgJiYgaXM8UmVuZGVyV2lkZ2V0Pihub2RlLT5yZW5kZXJlcigpKSkKICAgICAgICAgcmV0dXJu
IGRvd25jYXN0PFJlbmRlcldpZGdldD4obm9kZS0+cmVuZGVyZXIoKSk7Ci0KICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5jcHAKaW5kZXggZDYxMWJjMWIyMjUxZmY4ZjA4ODQ0ZjY4ZDQyNGZiOWRjOTY2ODJmNC4u
NTJlMGZjODM0OTNkYjQ2NGRiNmQ3OTIyMDEyNWQ5OWFjYzAwOTZmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0yLDcgKzIsNyBAQAog
ICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAg
ICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAg
ICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAg
ICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1MRGF0
YUxpc3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKQEAg
LTQxMiwxNCArNDEzLDggQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjptYXRjaGVzSW52
YWxpZFBzZXVkb0NsYXNzKCkgY29uc3QKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y29t
cHV0ZVdpbGxWYWxpZGF0ZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZGF0YUxpc3RBbmNlc3RvclN0
YXRlID09IFVua25vd24pIHsKLSAgICAgICAgZm9yIChDb250YWluZXJOb2RlKiBhbmNlc3RvciA9
IHBhcmVudE5vZGUoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudE5vZGUo
KSkgewotICAgICAgICAgICAgaWYgKGFuY2VzdG9yLT5oYXNUYWdOYW1lKGRhdGFsaXN0VGFnKSkg
ewotICAgICAgICAgICAgICAgIG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlID0gSW5zaWRlRGF0YUxp
c3Q7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlID09IFVua25vd24pCi0gICAgICAgICAg
ICBtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9IE5vdEluc2lkZURhdGFMaXN0OworICAgICAgICBt
X2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9IGFuY2VzdG9yc09mVHlwZTxIVE1MRGF0YUxpc3RFbGVt
ZW50PigqdGhpcykuZmlyc3QoKQorICAgICAgICAgICAgPyBJbnNpZGVEYXRhTGlzdCA6IE5vdElu
c2lkZURhdGFMaXN0OwogICAgIH0KICAgICByZXR1cm4gbV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUg
PT0gTm90SW5zaWRlRGF0YUxpc3QgJiYgIWlzRGlzYWJsZWRPclJlYWRPbmx5KCk7CiB9CkBAIC02
NDUsMTUgKzY0MCw2IEBAIEF1dG9jYXBpdGFsaXplVHlwZSBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
OjphdXRvY2FwaXRhbGl6ZVR5cGUoKSBjb25zdAogCiAjZW5kaWYKIAotSFRNTEZvcm1Db250cm9s
RWxlbWVudCogSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZW5jbG9zaW5nRm9ybUNvbnRyb2xFbGVt
ZW50KE5vZGUqIG5vZGUpCi17Ci0gICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRO
b2RlKCkpIHsKLSAgICAgICAgaWYgKGlzPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KCpub2RlKSkK
LSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Pihub2Rl
KTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIFN0cmluZyBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjphdXRvY29tcGxldGUoKSBjb25zdAogewogICAgIHJldHVybiBhdXRvZmlsbERh
dGEoKS5pZGxFeHBvc2VkVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5oCmluZGV4IDYxMzQwYmZhNzNhM2E5NjZiYTYzN2FkNDRmNTZjYmQ4ZmNmYzk2
ZjAuLjNhZGIzMTFjN2E2MWQ3OGQ4MGI5OTBhMTU2OWU2ODFkMGY2NTMwMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0xMTYsOCArMTE2LDYg
QEAgcHVibGljOgogICAgIGJvb2wgaGFzQXV0b2ZvY3VzZWQoKSB7IHJldHVybiBtX2hhc0F1dG9m
b2N1c2VkOyB9CiAgICAgdm9pZCBzZXRBdXRvZm9jdXNlZCgpIHsgbV9oYXNBdXRvZm9jdXNlZCA9
IHRydWU7IH0KIAotICAgIHN0YXRpYyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlbmNsb3NpbmdG
b3JtQ29udHJvbEVsZW1lbnQoTm9kZSopOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGF1
dG9jb21wbGV0ZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXV0b2NvbXBs
ZXRlKGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uaWRsCmluZGV4IDQzYzgzNTk5OGI0MDA1OWUzMzI3Y2U2ZDU5
ZTBmODJlNmZkZDE4MjMuLjRkODFmZmQwMzQ1NzQ3N2NiYTI0ZDJkMzNkYmI5MzFiNDhiMzVlZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uaWRsCkBAIC0yMiw1ICsyMiw1IEBACiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsT3du
ZXJOb2RlUm9vdCwKIF0gaW50ZXJmYWNlIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uIDogSFRN
TENvbGxlY3Rpb24gewogICAgIGdldHRlciBIVE1MRWxlbWVudD8gKHVuc2lnbmVkIGxvbmcgaW5k
ZXgpOwotICAgIFtJbXBsZW1lbnRlZEFzPW5hbWVkSXRlbU9ySXRlbXNdIGdldHRlciAoUmFkaW9O
b2RlTGlzdCBvciBFbGVtZW50KT8gbmFtZWRJdGVtKERPTVN0cmluZyBuYW1lKTsgLy8gc2hhZG93
cyBpbmhlcml0ZWQgbmFtZWRJdGVtKCkKKyAgICBbSW1wbGVtZW50ZWRBcz1uYW1lZEl0ZW1Pckl0
ZW1zXSBnZXR0ZXIgKFJhZGlvTm9kZUxpc3Qgb3IgRWxlbWVudCk/IG5hbWVkSXRlbShbUmVxdWly
ZXNFeGlzdGluZ0F0b21TdHJpbmddIERPTVN0cmluZyBuYW1lKTsgLy8gc2hhZG93cyBpbmhlcml0
ZWQgbmFtZWRJdGVtKCkKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZVNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVt
ZW50LmNwcAppbmRleCA4M2FjNjgwZDkwNDg3NTcxNTBiNWI2ZWIzNmI2NGQ3ODhmMGViYzcwLi5l
NmFlNmY2OGQ4Nzk4NWFmOWZmNTRlYjVkNjc1MzNhNWI1YWIxZjI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNs
dWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNp
bmNsdWRlICJIVE1MRnJhbWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5j
bHVkZSAiTGVuZ3RoLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApp
bmRleCBkZmUxOTBhNTlkZGQxZTZhZDE1MzBjNWYyMTk0YjA4NTdhYzdiNWU2Li5iM2RlOGE3ZDhh
NGQ2MGJhYTMwNjRkOGNkOThhNDdlYWU2ZGYwNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkg
TGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBL
b2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11
ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4
ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgU2Ft
dWVsIFdlaW5pZyAoc2FtQHdlYmtpdC5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTIxMDQsNiArMjEwNCw3IEBAIFJlbmRlclN0
eWxlIEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSkKIH0KIAogI2lmIEVOQUJMRShEQVRFX0FORF9USU1FX0lOUFVUX1RZUEVTKQor
CiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnNldHVwRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyhE
YXRlVGltZUNob29zZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGlmICghZG9jdW1l
bnQoKS52aWV3KCkpCkBAIC0yMTM2LDIwICsyMTM3LDI0IEBAIGJvb2wgSFRNTElucHV0RWxlbWVu
dDo6c2V0dXBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzKERhdGVUaW1lQ2hvb3NlclBhcmFtZXRl
cnMmCiAgICAgICAgIHBhcmFtZXRlcnMuYW5jaG9yUmVjdEluUm9vdFZpZXcgPSBJbnRSZWN0KCk7
CiAgICAgcGFyYW1ldGVycy5jdXJyZW50VmFsdWUgPSB2YWx1ZSgpOwogICAgIHBhcmFtZXRlcnMu
aXNBbmNob3JFbGVtZW50UlRMID0gY29tcHV0ZWRTdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBUZXh0
RGlyZWN0aW9uOjpSVEw7CisKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICBpZiAo
YXV0byBkYXRhTGlzdCA9IHRoaXMtPmRhdGFMaXN0KCkpIHsKLSAgICAgICAgUmVmPEhUTUxDb2xs
ZWN0aW9uPiBvcHRpb25zID0gZGF0YUxpc3QtPm9wdGlvbnMoKTsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBvcHRpb24gPSBkb3duY2FzdDxI
VE1MT3B0aW9uRWxlbWVudD4ob3B0aW9ucy0+aXRlbShpKSk7ICsraSkgewotICAgICAgICAgICAg
aWYgKCFpc1ZhbGlkVmFsdWUob3B0aW9uLT52YWx1ZSgpKSkKKyAgICAgICAgZm9yIChhdXRvJiBv
cHRpb24gOiBkYXRhTGlzdC0+c3VnZ2VzdGlvbnMoKSkgeworICAgICAgICAgICAgYXV0byBsYWJl
bCA9IG9wdGlvbi5sYWJlbCgpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IG9wdGlvbi52YWx1
ZSgpOworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkVmFsdWUodmFsdWUpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcGFyYW1ldGVycy5zdWdnZXN0aW9uVmFsdWVzLmFw
cGVuZChzYW5pdGl6ZVZhbHVlKG9wdGlvbi0+dmFsdWUoKSkpOwotICAgICAgICAgICAgcGFyYW1l
dGVycy5sb2NhbGl6ZWRTdWdnZXN0aW9uVmFsdWVzLmFwcGVuZChsb2NhbGl6ZVZhbHVlKG9wdGlv
bi0+dmFsdWUoKSkpOwotICAgICAgICAgICAgcGFyYW1ldGVycy5zdWdnZXN0aW9uTGFiZWxzLmFw
cGVuZChvcHRpb24tPnZhbHVlKCkgPT0gb3B0aW9uLT5sYWJlbCgpID8gU3RyaW5nKCkgOiBvcHRp
b24tPmxhYmVsKCkpOworICAgICAgICAgICAgcGFyYW1ldGVycy5zdWdnZXN0aW9uVmFsdWVzLmFw
cGVuZChzYW5pdGl6ZVZhbHVlKHZhbHVlKSk7CisgICAgICAgICAgICBwYXJhbWV0ZXJzLmxvY2Fs
aXplZFN1Z2dlc3Rpb25WYWx1ZXMuYXBwZW5kKGxvY2FsaXplVmFsdWUodmFsdWUpKTsKKyAgICAg
ICAgICAgIHBhcmFtZXRlcnMuc3VnZ2VzdGlvbkxhYmVscy5hcHBlbmQodmFsdWUgPT0gbGFiZWwg
PyBTdHJpbmcoKSA6IGxhYmVsKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgorCiAgICAgcmV0
dXJuIHRydWU7CiB9CisKICNlbmRpZgogCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmNhcHNMb2Nr
U3RhdGVNYXlIYXZlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPcHRHcm91cEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBF
bGVtZW50LmNwcAppbmRleCA5ZThjZmZkYjkxYTUxMDkwNDI4NDU5ZWZmZTg2NWE0OGUwN2Y0ODA4
Li42NzY4ZmUxMmExZTVlNzIyMGM1MzY5MGZlNmY5NzM1N2NhZTdjZGIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBD
b3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAg
ICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAg
ICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAo
QykgMjAwNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAg
ICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgpAQCAtMTA5LDE0ICsxMDksNyBAQCBTdHJpbmcgSFRNTE9wdEdyb3VwRWxlbWVudDo6Z3Jv
dXBMYWJlbFRleHQoKSBjb25zdAogICAgIAogSFRNTFNlbGVjdEVsZW1lbnQqIEhUTUxPcHRHcm91
cEVsZW1lbnQ6Om93bmVyU2VsZWN0RWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPENvbnRh
aW5lck5vZGU+IHNlbGVjdCA9IHBhcmVudE5vZGUoKTsKLSAgICB3aGlsZSAoc2VsZWN0ICYmICFp
czxIVE1MU2VsZWN0RWxlbWVudD4oKnNlbGVjdCkpCi0gICAgICAgIHNlbGVjdCA9IHNlbGVjdC0+
cGFyZW50Tm9kZSgpOwotICAgIAotICAgIGlmICghc2VsZWN0KQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAKLSAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFNlbGVjdEVsZW1lbnQ+KHNlbGVj
dC5nZXQoKSk7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPihhbmNl
c3RvcnNPZlR5cGU8SFRNTFNlbGVjdEVsZW1lbnQ+KCp0aGlzKS5maXJzdCgpKTsKIH0KIAogdm9p
ZCBIVE1MT3B0R3JvdXBFbGVtZW50OjphY2Nlc3NLZXlBY3Rpb24oYm9vbCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggYzNkZDMwZDVkYzYyYmY4MzE3MDll
NTcwMDQ2ODhkNGE4OGIzZTJhNi4uM2MwMWU2OTVhZDEwMjY3N2FhZmYwMmRiMGYyMTFkYjg4ZjY5
Mjg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTMs
NyArMyw3IEBACiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3Rv
QGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlw
b3AuY29tKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMTY2LDggKzE2Niw4IEBAIHZvaWQgSFRN
TE9wdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21TdHJpCiB7CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgaWYg
KG5hbWUgPT0gdmFsdWVBdHRyKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8SFRNTERhdGFMaXN0RWxl
bWVudD4gZGF0YUxpc3QgPSBvd25lckRhdGFMaXN0RWxlbWVudCgpKQotICAgICAgICAgICAgZGF0
YUxpc3QtPm9wdGlvbkVsZW1lbnRDaGlsZHJlbkNoYW5nZWQoKTsKKyAgICAgICAgZm9yIChhdXRv
JiBkYXRhTGlzdCA6IGFuY2VzdG9yc09mVHlwZTxIVE1MRGF0YUxpc3RFbGVtZW50PigqdGhpcykp
CisgICAgICAgICAgICBkYXRhTGlzdC5vcHRpb25FbGVtZW50Q2hpbGRyZW5DaGFuZ2VkKCk7CiAg
ICAgfSBlbHNlCiAjZW5kaWYKICAgICBpZiAobmFtZSA9PSBkaXNhYmxlZEF0dHIpIHsKQEAgLTIz
OCwzOSArMjM4LDE3IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnNldFNlbGVjdGVkU3RhdGUo
Ym9vbCBzZWxlY3RlZCkKIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChj
b25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogewogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5U
KQotICAgIGlmIChSZWZQdHI8SFRNTERhdGFMaXN0RWxlbWVudD4gZGF0YUxpc3QgPSBvd25lckRh
dGFMaXN0RWxlbWVudCgpKQotICAgICAgICBkYXRhTGlzdC0+b3B0aW9uRWxlbWVudENoaWxkcmVu
Q2hhbmdlZCgpOwotICAgIGVsc2UKKyAgICBmb3IgKGF1dG8mIGRhdGFMaXN0IDogYW5jZXN0b3Jz
T2ZUeXBlPEhUTUxEYXRhTGlzdEVsZW1lbnQ+KCp0aGlzKSkKKyAgICAgICAgZGF0YUxpc3Qub3B0
aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOwogI2VuZGlmCiAgICAgaWYgKFJlZlB0cjxIVE1M
U2VsZWN0RWxlbWVudD4gc2VsZWN0ID0gb3duZXJTZWxlY3RFbGVtZW50KCkpCiAgICAgICAgIHNl
bGVjdC0+b3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOwogICAgIEhUTUxFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIH0KIAotI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5U
KQotSFRNTERhdGFMaXN0RWxlbWVudCogSFRNTE9wdGlvbkVsZW1lbnQ6Om93bmVyRGF0YUxpc3RF
bGVtZW50KCkgY29uc3QKLXsKLSAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gZGF0YWxpc3QgPSBw
YXJlbnROb2RlKCk7Ci0gICAgd2hpbGUgKGRhdGFsaXN0ICYmICFpczxIVE1MRGF0YUxpc3RFbGVt
ZW50PigqZGF0YWxpc3QpKQotICAgICAgICBkYXRhbGlzdCA9IGRhdGFsaXN0LT5wYXJlbnROb2Rl
KCk7Ci0KLSAgICBpZiAoIWRhdGFsaXN0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IHJldHVybiBkb3duY2FzdDxIVE1MRGF0YUxpc3RFbGVtZW50PihkYXRhbGlzdC5nZXQoKSk7Ci19
Ci0jZW5kaWYKLQogSFRNTFNlbGVjdEVsZW1lbnQqIEhUTUxPcHRpb25FbGVtZW50Ojpvd25lclNl
bGVjdEVsZW1lbnQoKSBjb25zdAogewotICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBzZWxlY3Qg
PSBwYXJlbnROb2RlKCk7Ci0gICAgd2hpbGUgKHNlbGVjdCAmJiAhaXM8SFRNTFNlbGVjdEVsZW1l
bnQ+KCpzZWxlY3QpKQotICAgICAgICBzZWxlY3QgPSBzZWxlY3QtPnBhcmVudE5vZGUoKTsKLQot
ICAgIGlmICghc2VsZWN0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBk
b3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oc2VsZWN0LmdldCgpKTsKKyAgICByZXR1cm4gY29u
c3RfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KGFuY2VzdG9yc09mVHlwZTxIVE1MU2VsZWN0RWxl
bWVudD4oKnRoaXMpLmZpcnN0KCkpOwogfQogCiBTdHJpbmcgSFRNTE9wdGlvbkVsZW1lbnQ6Omxh
YmVsKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAppbmRleCBm
MGQ5NGM4YTZiNWYzMDgzMzRlYWExMWRhOWU0MDIxYjVjMGU1N2U2Li45MWM1YWJjN2UwMTdjMTFm
YTEzMmZkMzFmMDFiZTFlMzI0ZTI2YjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
RWxlbWVudC5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25v
bGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8g
KGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyICht
dWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMTAs
IDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgpAQCAtMjgsNyArMjgsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxE
YXRhTGlzdEVsZW1lbnQ7CiBjbGFzcyBIVE1MU2VsZWN0RWxlbWVudDsKIAogY2xhc3MgSFRNTE9w
dGlvbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewpAQCAtNDksOSArNDgsNiBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZWxlY3RlZCgpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCk7CiAKLSNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKLSAgICBXRUJDT1JFX0VYUE9SVCBIVE1MRGF0YUxpc3RFbGVtZW50KiBvd25lckRh
dGFMaXN0RWxlbWVudCgpIGNvbnN0OwotI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgSFRNTFNl
bGVjdEVsZW1lbnQqIG93bmVyU2VsZWN0RWxlbWVudCgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25zQ29sbGVjdGlvbi5pZGwKaW5kZXggNmU5ZmE0ZDBlMTYxNjBkYTJiN2NhYjgwZDAyYTk3
YWJkODA2M2IwNS4uZjFjNDc3ZTQ4NjhlMGZlNDA1OWZkZmM2MDUxYmVjM2ExZjJjNWNlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbApAQCAtMzIs
NSArMzIsNSBAQAogCiAgICAgLy8gRklYTUU6IENhbiB0aGVzZSBqdXN0IGJlIGluaGVyaXRlZCBm
cm9tIEhUTUxDb2xsZWN0aW9uIGxpa2UgaW4gdGhlIHNwZWM/CiAgICAgZ2V0dGVyIEhUTUxPcHRp
b25FbGVtZW50PyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIGdldHRlciBIVE1MT3B0
aW9uRWxlbWVudD8gbmFtZWRJdGVtKERPTVN0cmluZyBuYW1lKTsKKyAgICBnZXR0ZXIgSFRNTE9w
dGlvbkVsZW1lbnQ/IG5hbWVkSXRlbShbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIERPTVN0
cmluZyBuYW1lKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmNwcAppbmRleCA1NjIzMWE1MGIyYTQ2MGU0YWQwYjg3ZjBkOGI0YTgwOTU2NDQ2Y2Ey
Li4wZmEzYzY5ZDRlOTI2YjcyOWJlN2U1ZjYzMDJiYjAyMTQ3NjQ5YjIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTI1LDYgKzI1LDcg
QEAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC01MCw3ICs1MSw2IEBACiAjaW5jbHVkZSAiU2hh
ZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlVHJlZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiU3Vi
ZnJhbWVMb2FkZXIuaCIKLSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0NhdGNoU2NvcGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9i
amVjdElubGluZXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwK
aW5kZXggNjFlZTU5NGU2MDM3NzkwZWFkZmM4YWZkMWMxNWVjYzQ2ZjM4YzZjOS4uZDNhZWRhOTAz
NTUzOGQ5NmYyMmJlMWE1NDBlNzM2MTAzOWVlZWMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5pZGwKQEAgLTM2LDcgKzM2LDcgQEAKICAgICAvKiBbU2FtZU9iamVj
dF0gKi8gcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBvcHRpb25zOwog
ICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIGdl
dHRlciBIVE1MT3B0aW9uRWxlbWVudD8gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsgLy8gRklY
TUU6IFRoZSBzcGVjIGhhcyB0aGlzIHJldHVybmluZyBFbGVtZW50Py4KLSAgICBIVE1MT3B0aW9u
RWxlbWVudD8gbmFtZWRJdGVtKERPTVN0cmluZyBuYW1lKTsKKyAgICBIVE1MT3B0aW9uRWxlbWVu
dD8gbmFtZWRJdGVtKFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gRE9NU3RyaW5nIG5hbWUp
OwogICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYWRkKChIVE1MT3B0
aW9uRWxlbWVudCBvciBIVE1MT3B0R3JvdXBFbGVtZW50KSBlbGVtZW50LCBvcHRpb25hbCAoSFRN
TEVsZW1lbnQgb3IgbG9uZyk/IGJlZm9yZSA9IG51bGwpOwogICAgIFtDRVJlYWN0aW9ucywgTWF5
VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVtb3ZlKCk7IC8vIENoaWxkTm9kZSBvdmVybG9hZAogICAg
IFtDRVJlYWN0aW9uc10gdm9pZCByZW1vdmUobG9uZyBpbmRleCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCmluZGV4IGZiZjhmNzMzZTQ4MDAwNDkxZWFk
ODYxNjczYjg2MzE5MjNmOTkxODYuLmE2MDAzOGZlOTRmMjk4YjA4ZWE0YWI2ZWRhY2Q3ZDE1NTdh
YTg3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3Bw
CkBAIC0xMzEsOSArMTMxLDkgQEAgdm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVMKIAogY29uc3QgU3R5
bGVQcm9wZXJ0aWVzKiBIVE1MVGFibGVDZWxsRWxlbWVudDo6YWRkaXRpb25hbFByZXNlbnRhdGlv
bkF0dHJpYnV0ZVN0eWxlKCkgY29uc3QKIHsKLSAgICBpZiAoUmVmUHRyPEhUTUxUYWJsZUVsZW1l
bnQ+IHRhYmxlID0gZmluZFBhcmVudFRhYmxlKCkpCisgICAgaWYgKGF1dG8gdGFibGUgPSBmaW5k
UGFyZW50VGFibGUoKSkKICAgICAgICAgcmV0dXJuIHRhYmxlLT5hZGRpdGlvbmFsQ2VsbFN0eWxl
KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGJvb2wgSFRNTFRh
YmxlQ2VsbEVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRl
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKaW5k
ZXggNzI4YjVmM2QyYjU1MjNiMDRiMzk5ZjJjYzRiNTVhYTRmOGIxZmM3NC4uZjRkNDQ3NTgxMWU4
YTQwY2EzMmE2N2JjZjZiMjE2YzI1M2E3ZTdhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUNvbEVsZW1lbnQuY3BwCkBAIC05Miw3ICs5Miw3IEBAIGNvbnN0IFN0eWxlUHJvcGVy
dGllcyogSFRNTFRhYmxlQ29sRWxlbWVudDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0dHJpYnV0
ZVN0eWxlCiB7CiAgICAgaWYgKCFoYXNUYWdOYW1lKGNvbGdyb3VwVGFnKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgaWYgKFJlZlB0cjxIVE1MVGFibGVFbGVtZW50PiB0YWJsZSA9IGZp
bmRQYXJlbnRUYWJsZSgpKQorICAgIGlmIChhdXRvIHRhYmxlID0gZmluZFBhcmVudFRhYmxlKCkp
CiAgICAgICAgIHJldHVybiB0YWJsZS0+YWRkaXRpb25hbEdyb3VwU3R5bGUoZmFsc2UpOwogICAg
IHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5j
cHAKaW5kZXggNzY3YTNlMzhhZjQ4MmRkOTJiMTQ5YzhmMGVlOGI4NjZlN2Q0YjdiZi4uYTVmODBm
ZTBjOTFmODhkOTYwYWI3ZmU3YWYwNjhhNDhiODk2NDVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUVsZW1lbnQuY3BwCkBAIC00NzMsNyArNDczLDcgQEAgSFRNTFRhYmxlRWxlbWVu
dDo6Q2VsbEJvcmRlcnMgSFRNTFRhYmxlRWxlbWVudDo6Y2VsbEJvcmRlcnMoKSBjb25zdAogICAg
IHJldHVybiBOb0JvcmRlcnM7CiB9CiAKLVJlZjxTdHlsZVByb3BlcnRpZXM+IEhUTUxUYWJsZUVs
ZW1lbnQ6OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpCitSZWY8U3R5bGVQcm9wZXJ0aWVzPiBIVE1M
VGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKSBjb25zdAogewogICAgIGF1dG8g
c3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKIApAQCAtNTE0LDcgKzUx
NCw3IEBAIFJlZjxTdHlsZVByb3BlcnRpZXM+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVNoYXJl
ZENlbGxTdHlsZSgpCiAgICAgcmV0dXJuIHN0eWxlOwogfQogCi1jb25zdCBTdHlsZVByb3BlcnRp
ZXMqIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxDZWxsU3R5bGUoKQorY29uc3QgU3R5bGVQ
cm9wZXJ0aWVzKiBIVE1MVGFibGVFbGVtZW50OjphZGRpdGlvbmFsQ2VsbFN0eWxlKCkgY29uc3QK
IHsKICAgICBpZiAoIW1fc2hhcmVkQ2VsbFN0eWxlKQogICAgICAgICBtX3NoYXJlZENlbGxTdHls
ZSA9IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOwpAQCAtNTM4LDExICs1MzgsMTAgQEAgc3RhdGlj
IFN0eWxlUHJvcGVydGllcyogbGVha0dyb3VwQm9yZGVyU3R5bGUoaW50IHJvd3MpCiAgICAgcmV0
dXJuICZzdHlsZS5sZWFrUmVmKCk7CiB9CiAKLWNvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRh
YmxlRWxlbWVudDo6YWRkaXRpb25hbEdyb3VwU3R5bGUoYm9vbCByb3dzKQorY29uc3QgU3R5bGVQ
cm9wZXJ0aWVzKiBIVE1MVGFibGVFbGVtZW50OjphZGRpdGlvbmFsR3JvdXBTdHlsZShib29sIHJv
d3MpIGNvbnN0CiB7CiAgICAgaWYgKG1fcnVsZXNBdHRyICE9IEdyb3Vwc1J1bGVzKQotICAgICAg
ICByZXR1cm4gMDsKLQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAocm93cykgewog
ICAgICAgICBzdGF0aWMgU3R5bGVQcm9wZXJ0aWVzKiByb3dCb3JkZXJTdHlsZSA9IGxlYWtHcm91
cEJvcmRlclN0eWxlKHRydWUpOwogICAgICAgICByZXR1cm4gcm93Qm9yZGVyU3R5bGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCmluZGV4IGIzNjU0MjA5YmRhODU3ODg1YzY5
MzFjODFiNGVlM2Y5ODZmMzg0MTYuLjM3NTZkYzYxMDc1YzRiZjc5NTdmOTA3M2I3ODc1YTUyZjJl
NTZiMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCkBAIC02NSw4ICs2
NSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBBdG9tU3RyaW5nJiBydWxlcygpIGNvbnN0OwogICAg
IGNvbnN0IEF0b21TdHJpbmcmIHN1bW1hcnkoKSBjb25zdDsKIAotICAgIGNvbnN0IFN0eWxlUHJv
cGVydGllcyogYWRkaXRpb25hbENlbGxTdHlsZSgpOwotICAgIGNvbnN0IFN0eWxlUHJvcGVydGll
cyogYWRkaXRpb25hbEdyb3VwU3R5bGUoYm9vbCByb3dzKTsKKyAgICBjb25zdCBTdHlsZVByb3Bl
cnRpZXMqIGFkZGl0aW9uYWxDZWxsU3R5bGUoKSBjb25zdDsKKyAgICBjb25zdCBTdHlsZVByb3Bl
cnRpZXMqIGFkZGl0aW9uYWxHcm91cFN0eWxlKGJvb2wgcm93cykgY29uc3Q7CiAKIHByaXZhdGU6
CiAgICAgSFRNTFRhYmxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
QEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKIAogICAgIENlbGxCb3JkZXJzIGNlbGxCb3JkZXJz
KCkgY29uc3Q7CiAKLSAgICBSZWY8U3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGVTaGFyZWRDZWxsU3R5
bGUoKTsKKyAgICBSZWY8U3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKSBj
b25zdDsKIAogICAgIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KiBsYXN0Qm9keSgpIGNvbnN0Owog
CkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2ZyYW1lQXR0ciB7IGZhbHNl
IH07IC8vIEltcGxpZXMgYSB0aGluIGJvcmRlciB3aWR0aCBpZiBubyBib3JkZXIgaXMgc2V0IGFu
ZCB0aGVuIGEgY2VydGFpbiBzZXQgb2Ygc29saWQvaGlkZGVuIGJvcmRlcnMgYmFzZWQgb2ZmIHRo
ZSB2YWx1ZS4KICAgICBUYWJsZVJ1bGVzIG1fcnVsZXNBdHRyIHsgVW5zZXRSdWxlcyB9OyAvLyBJ
bXBsaWVzIGEgdGhpbiBib3JkZXIgd2lkdGgsIGEgY29sbGFwc2luZyBib3JkZXIgbW9kZWwsIGFu
ZCBhbGwgYm9yZGVycyBvbiB0aGUgdGFibGUgYmVjb21pbmcgc2V0IHRvIGhpZGRlbiAoaWYgZnJh
bWUvYm9yZGVyIGFyZSBwcmVzZW50LCB0byBub25lIG90aGVyd2lzZSkuCiAgICAgdW5zaWduZWQg
c2hvcnQgbV9wYWRkaW5nIHsgMSB9OwotICAgIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IG1fc2hh
cmVkQ2VsbFN0eWxlOworICAgIG11dGFibGUgUmVmUHRyPFN0eWxlUHJvcGVydGllcz4gbV9zaGFy
ZWRDZWxsU3R5bGU7CiB9OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwCmluZGV4IDM1ODc4MDE2MjEwZmNhYWZmNjA5MGU2OTUz
OTQxNTVjNDU1YWVhN2MuLjM0OWIwMzUxMmE4ZWM1NDA1MjQxYmJhNmZjM2Q0YTlmZjc0MzZlZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwCkBAIC00
LDcgKzQsNyBAQAogICogICAgICAgICAgIChDKSAxOTk4IFdhbGRvIEJhc3RpYW4gKGJhc3RpYW5A
a2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3Jn
KQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3Jn
KQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIEluYy4KKyAq
IENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODUsMTIgKzg1LDkgQEAgdm9pZCBIVE1MVGFibGVQYXJ0
RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE4KICAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0
dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwogfQogCi1SZWZQdHI8SFRNTFRhYmxlRWxlbWVu
dD4gSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmZpbmRQYXJlbnRUYWJsZSgpIGNvbnN0CitSZWZQdHI8
Y29uc3QgSFRNTFRhYmxlRWxlbWVudD4gSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmZpbmRQYXJlbnRU
YWJsZSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHBhcmVudCA9IHBhcmVu
dE5vZGUoKTsKLSAgICB3aGlsZSAocGFyZW50ICYmICFpczxIVE1MVGFibGVFbGVtZW50PigqcGFy
ZW50KSkKLSAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnROb2RlKCk7Ci0gICAgcmV0dXJu
IGRvd25jYXN0PEhUTUxUYWJsZUVsZW1lbnQ+KHBhcmVudC5nZXQoKSk7CisgICAgcmV0dXJuIGFu
Y2VzdG9yc09mVHlwZTxIVE1MVGFibGVFbGVtZW50PigqdGhpcykuZmlyc3QoKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5oCmluZGV4IGQzYmNmNTBi
YWUyMWMzNThjZGUyM2YzMzYzZTVjNjkyZDU2ZjExZTYuLjA0Zjk0NzFiYWJhMjg3N2Y3NTQ1NDBj
OWIxYTU4MDk3MjdiZWI1NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlUGFydEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRF
bGVtZW50LmgKQEAgLTQsNyArNCw3IEBACiAgKiAgICAgICAgICAgKEMpIDE5OTggV2FsZG8gQmFz
dGlhbiAoYmFzdGlhbkBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IExhcnMgS25vbGwg
KGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtv
aXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC00Miw3ICs0Miw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGlzUHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lk
IGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbVN0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsK
IAotICAgIFJlZlB0cjxIVE1MVGFibGVFbGVtZW50PiBmaW5kUGFyZW50VGFibGUoKSBjb25zdDsK
KyAgICBSZWZQdHI8Y29uc3QgSFRNTFRhYmxlRWxlbWVudD4gZmluZFBhcmVudFRhYmxlKCkgY29u
c3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwCmluZGV4IGU1MTZhODE4NGQxZjBmODM3M2Nk
MjFhNGE3YTQwOTNjZjliY2YyZjEuLjc3OWQ5NjRlOTM4NjJkMDQ3OWRmZjQwOGI0ZjA1MzkyNGE3
MjUwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1l
bnQuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiSFRNTFRhYmxlU2VjdGlvbkVsZW1l
bnQuaCIKIAogI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgotI2luY2x1
ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
SFRNTFRhYmxlUm93RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAK
aW5kZXggM2M5YjMzOGZkMjYyNmQ3NGQ2ZGUwOGNlZmU0NWU1MzZiMzRhMTYwMy4uZTI3YWZiYzAw
ZDRlODQ1NmIwNDBhNGFjNjQzZTdhYmFhZjdhZmExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAg
KiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAg
ICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAg
ICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdo
dCAoQykgMjAwNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAg
ICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgpAQCAtNzYxLDM0ICs3NjEsMjQgQEAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQq
IGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiAgICAg
cmV0dXJuIGFuY2VzdG9yICYmIGFuY2VzdG9yLT5pc1RleHRGaWVsZCgpID8gZG93bmNhc3Q8SFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGFuY2VzdG9yLmdldCgpKSA6IG51bGxwdHI7CiB9CiAK
LXN0YXRpYyBjb25zdCBFbGVtZW50KiBwYXJlbnRIVE1MRWxlbWVudChjb25zdCBFbGVtZW50KiBl
bGVtZW50KQotewotICAgIHdoaWxlIChlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50LT5wYXJlbnRFbGVtZW50KCk7Ci0gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmlz
SFRNTEVsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwotICAgIH0KLSAgICBy
ZXR1cm4gMDsKLX0KLQogU3RyaW5nIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaXJlY3Rp
b25Gb3JGb3JtRGF0YSgpIGNvbnN0CiB7Ci0gICAgZm9yIChjb25zdCBFbGVtZW50KiBlbGVtZW50
ID0gdGhpczsgZWxlbWVudDsgZWxlbWVudCA9IHBhcmVudEhUTUxFbGVtZW50KGVsZW1lbnQpKSB7
Ci0gICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIGRpckF0dHJpYnV0ZVZhbHVlID0gZWxlbWVudC0+
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkaXJBdHRyKTsKLSAgICAgICAgaWYgKGRp
ckF0dHJpYnV0ZVZhbHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAi
cnRsIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyQXR0cmlidXRlVmFsdWUs
ICJsdHIiKSkKLSAgICAgICAgICAgIHJldHVybiBkaXJBdHRyaWJ1dGVWYWx1ZTsKLQotICAgICAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyQXR0cmlidXRlVmFsdWUsICJh
dXRvIikpIHsKLSAgICAgICAgICAgIGJvb2wgaXNBdXRvOwotICAgICAgICAgICAgVGV4dERpcmVj
dGlvbiB0ZXh0RGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTEVsZW1lbnQqPihlbGVt
ZW50KS0+ZGlyZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUoaXNBdXRvKTsKLSAgICAg
ICAgICAgIHJldHVybiB0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJUTCA/ICJydGwi
IDogImx0ciI7CisgICAgYXV0byBkaXJlY3Rpb24gPSBbdGhpc10geworICAgICAgICBmb3IgKGF1
dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEhUTUxFbGVtZW50PigqdGhpcykpIHsKKyAgICAg
ICAgICAgIGF1dG8mIHZhbHVlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKGRpckF0dHIpOworICAgICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHZhbHVlLCAicnRsIikpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246
OlJUTDsKKyAgICAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1
ZSwgImx0ciIpKQorICAgICAgICAgICAgICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpMVFI7Cisg
ICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJhdXRv
IikpIHsKKyAgICAgICAgICAgICAgICBib29sIGlzQXV0bzsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZWxlbWVudC5kaXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShpc0F1dG8pOwor
ICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQorICAgICAgICByZXR1cm4gVGV4dERpcmVj
dGlvbjo6TFRSOworICAgIH0oKTsKIAotICAgIHJldHVybiAibHRyIjsKKyAgICByZXR1cm4gZGly
ZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/ICJsdHIiX3MgOiAicnRsIl9zOwogfQogCiBF
eGNlcHRpb25Pcjx2b2lkPiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0TWF4TGVuZ3Ro
KGludCBtYXhMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcAppbmRleCAw
NGRlNzUxM2NhYzQ4MmJmNzYwYjRlNGM2ZmZhMDJlYzJlNWI2N2Y3Li4yNGU0MGMyYzZkMzMxMTQ5
M2I2MTdjNjVjZGYyZjU4YTg1MTIyMmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVu
dC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNs
dWRlICJDdXN0b21IZWFkZXJGaWVsZHMuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgor
I2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkBAIC01MSw3ICs1Miw2
IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCBmZGI4ZTMwZmZlYzliYjA5YWNl
NmIyOWVjNmEzMDFhMzkwZWVkNTgxLi4wMmVmZjQ4ZjM4OGYxODBkYmE5NGExMTgwY2U1MWMyMjRh
MjFjY2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQpAQCAtODY3LDYgKzg2Nyw4IEBAIEludFJlY3QgVGV4dEZpZWxkSW5wdXRUeXBlOjplbGVtZW50
UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpIGNvbnN0CiAKIFZlY3RvcjxTdHJpbmc+IFRleHRG
aWVsZElucHV0VHlwZTo6c3VnZ2VzdGlvbnMoKQogeworICAgIC8vIEZJWE1FOiBTdWdnZXN0aW9u
cyBhcmUgInR5cGluZyBjb21wbGV0aW9ucyIgYW5kIHNvIHNob3VsZCBwcm9iYWJseSB1c2UgdGhl
IGZpbmRQbGFpblRleHQgYWxnb3JpdGhtIHJhdGhlciB0aGFuIHRoZSBzaW1wbGlzdGljICJpZ25v
cmluZyBBU0NJSSBjYXNlIiBydWxlcy4KKwogICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25z
OwogICAgIFZlY3RvcjxTdHJpbmc+IG1hdGNoZXNDb250YWluaW5nVmFsdWU7CiAKQEAgLTg3Niwx
MiArODc4LDExIEBAIFZlY3RvcjxTdHJpbmc+IFRleHRGaWVsZElucHV0VHlwZTo6c3VnZ2VzdGlv
bnMoKQogICAgICAgICByZXR1cm4gbV9jYWNoZWRTdWdnZXN0aW9ucy5zZWNvbmQ7CiAKICAgICBp
ZiAoYXV0byBkYXRhTGlzdCA9IGVsZW1lbnQoKS0+ZGF0YUxpc3QoKSkgewotICAgICAgICBSZWY8
SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9ucygpOwotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBhdXRvKiBvcHRpb24gPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxl
bWVudD4ob3B0aW9ucy0+aXRlbShpKSk7ICsraSkgewotICAgICAgICAgICAgaWYgKCFlbGVtZW50
KCktPmlzVmFsaWRWYWx1ZShvcHRpb24tPnZhbHVlKCkpKQorICAgICAgICBmb3IgKGF1dG8mIG9w
dGlvbiA6IGRhdGFMaXN0LT5zdWdnZXN0aW9ucygpKSB7CisgICAgICAgICAgICBTdHJpbmcgdmFs
dWUgPSBvcHRpb24udmFsdWUoKTsKKyAgICAgICAgICAgIGlmICghZWxlbWVudCgpLT5pc1ZhbGlk
VmFsdWUodmFsdWUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBT
dHJpbmcgdmFsdWUgPSBzYW5pdGl6ZVZhbHVlKG9wdGlvbi0+dmFsdWUoKSk7CisgICAgICAgICAg
ICB2YWx1ZSA9IHNhbml0aXplVmFsdWUodmFsdWUpOwogICAgICAgICAgICAgaWYgKGVsZW1lbnRW
YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMuYXBwZW5kKHZhbHVl
KTsKICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZShlbGVtZW50VmFsdWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUu
Y3BwCmluZGV4IGU1ZGYzYzNiNzg2NmVhOWZkNDNkYWNjZjRhNDYyMmJkYjY0ODk0MjIuLmZjZTU5
MjZhYjVlZmE1ZGE1Y2Q0NDc0ZDE2ZWVjMmQ4OTI3MGViMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJD
U1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRE9NUmVjdC5oIgogI2luY2x1ZGUgIkV2ZW50
LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
dWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGUxZTIzYTc2YTRkOTQ2ZjllYTI3ZjYy
NmEyMmIyY2M3NzhhOTRkMzEuLjQ0ODNkZjcwMDNmYjFlZDU0OTZkY2FiYjIzMDNlYWE1NTBjN2Rm
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0zMiwxMCArMzIsOCBAQAogI2lu
Y2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJDb250YWlu
ZXJOb2RlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCi0j
aW5jbHVkZSAiRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkVsZW1lbnRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIk5vZGUuaCIKICNp
bmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzAsNyArNjgsNyBAQCBFeGNlcHRpb25P
cjxWZWN0b3I8UmVmPE5vZGU+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpn
ZXRFbGVtZW50c0J5QwogCiAgICAgVmVjdG9yPFJlZjxOb2RlPj4gbm9kZXM7CiAKLSAgICBmb3Ig
KEVsZW1lbnQmIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoaXM8Q29udGFpbmVyTm9kZT4o
Y29udGFpbmVyKSA/IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCpjb250YWluZXIpIDogZG9jdW1l
bnQpKSB7CisgICAgZm9yIChFbGVtZW50JiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxl
bWVudD4oaXM8Q29udGFpbmVyTm9kZT4oY29udGFpbmVyKSA/IGRvd25jYXN0PENvbnRhaW5lck5v
ZGU+KCpjb250YWluZXIpIDogZG9jdW1lbnQpKSB7CiAgICAgICAgIGlmIChBWENvcmVPYmplY3Qq
IGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShlbGVtZW50KSkgewogICAgICAg
ICAgICAgaWYgKGF4T2JqZWN0LT5jb21wdXRlZFJvbGVTdHJpbmcoKSA9PSByb2xlKQogICAgICAg
ICAgICAgICAgIG5vZGVzLmFwcGVuZChlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggMjkzMGI0NWY4
ZjIwNzUxZTg1NmNkYTNlMDUxODlhYTQ0NGUxODU1MS4uYWNlNWY5YWM1M2NiZTI2ZmQzYzRkOWQ0
ZjIyNDk0ZmQ4MDY1YTU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwOSwyMCArNTA5LDE4IEBAIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgaW50IG5vCiAgICAgICAgIC8vIEluaGVyaXRlZCBzdHlsZXMuCiAgICAgICAg
IGlmICghaW5jbHVkZUluaGVyaXRlZCB8fCAqaW5jbHVkZUluaGVyaXRlZCkgewogICAgICAgICAg
ICAgYXV0byBlbnRyaWVzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkluaGVyaXRlZFN0eWxlRW50cnk+OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIEVsZW1lbnQqIHBh
cmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7Ci0gICAgICAgICAgICB3aGls
ZSAocGFyZW50RWxlbWVudCkgewotICAgICAgICAgICAgICAgIGF1dG8mIHBhcmVudFN0eWxlUmVz
b2x2ZXIgPSBwYXJlbnRFbGVtZW50LT5zdHlsZVJlc29sdmVyKCk7Ci0gICAgICAgICAgICAgICAg
YXV0byBwYXJlbnRNYXRjaGVkUnVsZXMgPSBwYXJlbnRTdHlsZVJlc29sdmVyLnN0eWxlUnVsZXNG
b3JFbGVtZW50KHBhcmVudEVsZW1lbnQsIFN0eWxlOjpSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOwor
ICAgICAgICAgICAgZm9yIChhdXRvJiBhbmNlc3RvciA6IGFuY2VzdG9yc09mVHlwZTxFbGVtZW50
PigqZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBwYXJlbnRTdHlsZVJlc29sdmVy
ID0gYW5jZXN0b3Iuc3R5bGVSZXNvbHZlcigpOworICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50
TWF0Y2hlZFJ1bGVzID0gcGFyZW50U3R5bGVSZXNvbHZlci5zdHlsZVJ1bGVzRm9yRWxlbWVudCgm
YW5jZXN0b3IsIFN0eWxlOjpSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOwogICAgICAgICAgICAgICAg
IGF1dG8gZW50cnkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50
cnk6OmNyZWF0ZSgpCi0gICAgICAgICAgICAgICAgICAgIC5zZXRNYXRjaGVkQ1NTUnVsZXMoYnVp
bGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChwYXJlbnRNYXRjaGVkUnVsZXMsIHN0eWxlUmVzb2x2
ZXIsICpwYXJlbnRFbGVtZW50LCBQc2V1ZG9JZDo6Tm9uZSkpCisgICAgICAgICAgICAgICAgICAg
IC5zZXRNYXRjaGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChwYXJlbnRN
YXRjaGVkUnVsZXMsIHN0eWxlUmVzb2x2ZXIsIGFuY2VzdG9yLCBQc2V1ZG9JZDo6Tm9uZSkpCiAg
ICAgICAgICAgICAgICAgICAgIC5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGlzPFN0
eWxlZEVsZW1lbnQ+KCpwYXJlbnRFbGVtZW50KSAmJiBkb3duY2FzdDxTdHlsZWRFbGVtZW50Pigq
cGFyZW50RWxlbWVudCkuY3Nzb21TdHlsZSgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGF1dG8mIHN0eWxlU2hlZXQgPSBhc0luc3BlY3RvclN0eWxlU2hlZXQoZG93bmNhc3Q8U3R5
bGVkRWxlbWVudD4oKnBhcmVudEVsZW1lbnQpKTsKKyAgICAgICAgICAgICAgICBpZiAoaXM8U3R5
bGVkRWxlbWVudD4oYW5jZXN0b3IpICYmIGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KGFuY2VzdG9y
KS5jc3NvbVN0eWxlKCkubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byYgc3R5
bGVTaGVldCA9IGFzSW5zcGVjdG9yU3R5bGVTaGVldChkb3duY2FzdDxTdHlsZWRFbGVtZW50Pihh
bmNlc3RvcikpOwogICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c2V0SW5saW5lU3R5bGUoc3R5
bGVTaGVldC5idWlsZE9iamVjdEZvclN0eWxlKHN0eWxlU2hlZXQuc3R5bGVGb3JJZChJbnNwZWN0
b3JDU1NJZChzdHlsZVNoZWV0LmlkKCksIDApKSkpOwogICAgICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgICAgIGVudHJpZXMtPmFkZEl0ZW0oV1RGTW92ZShlbnRyeSkpOwotICAgICAgICAg
ICAgICAgIHBhcmVudEVsZW1lbnQgPSBwYXJlbnRFbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGluaGVyaXRlZEVudHJpZXMgPSBXVEZNb3ZlKGVu
dHJpZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAppbmRleCAwZjQ2YTMwMzNhZWY0MDA3ZjZlYjgzN2E2MTA1ZjA1YTBj
NTkwNjdmLi5kMmNhNWJiZTEwOWFhYWQxODJiYWUxODVjNGQ1MmQ4YWFlY2RhODRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBKb3Nl
cGggUGVjb3Jhcm8KICAqCkBAIC0xMTE0LDcgKzExMTQsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjppbnNwZWN0KE5vZGUqIGluc3BlY3RlZE5vZGUpCiAgICAgUmVmUHRyPE5vZGU+IG5vZGUg
PSBpbnNwZWN0ZWROb2RlOwogICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoaWdub3JlZCwgZmFsc2Us
IG51bGxwdHIsIGZhbHNlKTsKIAotICAgIGlmIChub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkVM
RU1FTlRfTk9ERSAmJiBub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5UX05PREUpCisg
ICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgIW5vZGUtPmlzRG9jdW1lbnROb2RlKCkp
CiAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgbV9ub2RlVG9Gb2N1cyA9
IG5vZGU7CiAKQEAgLTExNTksNyArMTE1OSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Om1v
dXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zCiB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRNb3VzZWRPdmVyTm9kZSgpCiB7CiAgICAg
Tm9kZSogbm9kZSA9IG1fbW91c2VkT3Zlck5vZGUuZ2V0KCk7Ci0gICAgd2hpbGUgKG5vZGUgJiYg
bm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpURVhUX05PREUpCisgICAgaWYgKG5vZGUgJiYgbm9k
ZS0+aXNUZXh0Tm9kZSgpKQogICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAg
IGlmIChub2RlICYmIG1faW5zcGVjdE1vZGVIaWdobGlnaHRDb25maWcpCiAgICAgICAgIG1fb3Zl
cmxheS0+aGlnaGxpZ2h0Tm9kZShub2RlLCAqbV9pbnNwZWN0TW9kZUhpZ2hsaWdodENvbmZpZyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggM2Y0Njk5
Y2Y4MzI5OGYwNGUyNzRhZTAwZWY5NWE1NTQ3NWE2NWYzZC4uMDZmNDZkNGE1NjlkMGZhMGRjMTdi
ZDY1OWI2NTg4MTU1NzE2YTZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAjaW5jbHVkZSAiQ2FjaGVkRm9udENsaWVu
dC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0
aW9uLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKLSNpbmNsdWRlICJUeXBl
ZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJXT0ZGRmlsZUZvcm1hdC5o
IgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IDAxMmQyZjMxZmUxY2U5OWE3N2U4NTVmYzZlY2Vm
Yjg2ZjA3NmRlYjYuLmM4ZjliYTUzMDA1ZjhkN2JjOTMwZDA5NmQ1ZjIxM2M5MzgyNWE5ZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2lmIEVOQUJMRShTVkdfRk9OVFMpCiAKKyNpbmNsdWRlICJFbGVtZW50
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJGb250
UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKQEAgLTM3LDcgKzM4LDYg
QEAKICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCi0jaW5jbHVkZSAiVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiU1ZHVG9PVEZGb250Q29u
dmVyc2lvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCmluZGV4IGRhZDAwMmIxOTY4YWQwYjQyNmZiMTJiN2E2NWEwZjM3Mzg2YmU4
YmIuLjA1OWY0NWQ2MjlmNTg4NjViNDA3Y2NiZTFhNzJhZDJlZGY1M2Q2YjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTI2MCw2ICsxMjYwLDE1IEBAIHZvaWQg
RHJhZ0NvbnRyb2xsZXI6OmJlZ2luRHJhZyhEcmFnSXRlbSBkcmFnSXRlbSwgRnJhbWUmIGZyYW1l
LCBjb25zdCBJbnRQb2ludCYKICAgICBjbGllbnQoKS5iZWdpbkRyYWcoV1RGTW92ZShkcmFnSXRl
bSksIGZyYW1lLCBtb3VzZURvd25Qb2ludEluUm9vdFZpZXdDb29yZGluYXRlcywgbW91c2VEcmFn
Z2VkUG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMsIGRhdGFUcmFuc2ZlciwgZHJhZ1NvdXJjZUFj
dGlvbik7CiB9CiAKK3N0YXRpYyBSZWZQdHI8RWxlbWVudD4gY29udGFpbmluZ0xpbmtFbGVtZW50
KEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgZm9yIChhdXRvJiBjdXJyZW50RWxlbWVudCA6IGxp
bmVhZ2VPZlR5cGU8RWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRFbGVt
ZW50LmlzTGluaygpKQorICAgICAgICAgICAgcmV0dXJuICZjdXJyZW50RWxlbWVudDsKKyAgICB9
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRvU3lzdGVt
RHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBkcmFnTG9jLCBjb25zdCBJbnRQ
b2ludCYgZXZlbnRQb3MsIEZyYW1lJiBmcmFtZSwgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgUHJv
bWlzZWRBdHRhY2htZW50SW5mbyYmIHByb21pc2VkQXR0YWNobWVudEluZm8pCiB7CiAgICAgbV9k
aWRJbml0aWF0ZURyYWcgPSB0cnVlOwpAQCAtMTI5NiwxOCArMTMwNSw3IEBAIHZvaWQgRHJhZ0Nv
bnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBk
cmFnTG9jLCBjb25zCiAgICAgICAgICAgICBpdGVtLmRyYWdQcmV2aWV3RnJhbWVJblJvb3RWaWV3
Q29vcmRpbmF0ZXMgPSBlbGVtZW50LT5ib3VuZHNJblJvb3RWaWV3U3BhY2UoKTsKICAgICAgICAg
fQogCi0gICAgICAgIFJlZlB0cjxFbGVtZW50PiBsaW5rOwotICAgICAgICBpZiAoZWxlbWVudC0+
aXNMaW5rKCkpCi0gICAgICAgICAgICBsaW5rID0gZWxlbWVudDsKLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICBmb3IgKGF1dG8mIGN1cnJlbnRFbGVtZW50IDogZWxlbWVudExpbmVhZ2UoZWxl
bWVudC5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuaXNMaW5r
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbGluayA9ICZjdXJyZW50RWxlbWVudDsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIGlmIChsaW5rKSB7CisgICAgICAgIGlmIChhdXRvIGxpbmsgPSBj
b250YWluaW5nTGlua0VsZW1lbnQoKmVsZW1lbnQpKSB7CiAgICAgICAgICAgICBhdXRvIHRpdGxl
QXR0cmlidXRlID0gbGluay0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFt
ZXM6OnRpdGxlQXR0cik7CiAgICAgICAgICAgICBpdGVtLnRpdGxlID0gdGl0bGVBdHRyaWJ1dGUu
aXNFbXB0eSgpID8gbGluay0+aW5uZXJUZXh0KCkgOiB0aXRsZUF0dHJpYnV0ZS5zdHJpbmcoKTsK
ICAgICAgICAgICAgIGl0ZW0udXJsID0gZnJhbWUuZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGxpbmstPmdldEF0dHJpYnV0ZShIVE1MTmFt
ZXM6OmhyZWZBdHRyKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKaW5kZXggZDI2Y2VmZTRmMjAyMzZjN2M0M2Fj
NWUyNWVlNzE2ZWRkNTQwZTEwZi4uZjgwYTE4NTQ4OThjYzg0ZjVkMGUwZjY3MGJmYWYyNTMwNjBh
ZjE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9s
bFNuYXBPZmZzZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlz
U2Nyb2xsU25hcE9mZnNldHMuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiQXhpc1Nj
cm9sbFNuYXBPZmZzZXRzLmgiCiAKICNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgot
I2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNp
bmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LmgKaW5kZXggN2IzMmIz
M2QzMTVhYjk1ZDJhMGJlOThkM2UyZjBhNTBiYTBiOWVkMy4uNWVkODAyNWJlNzkwMjkyN2Y1ZDY1
M2I5NzY5ZTExM2YyY2FlYzhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQuaApAQCAtMjcsMTEgKzI3LDEyIEBACiAKICNpZiBF
TkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKIAotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBJbnRSZWN0OworCiBjbGFzcyBEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xp
ZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50KCkg
PSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXgg
NjA5N2I0YzZhM2U5ZWJkMzE5MjkyNmZlMzkzOWI4YmI1ZDdmZWVjNS4uMjY3NDMzNTJlNDU3MWMx
ZTc0MGJmZGI2M2YwY2I2NDBiYzdmNGM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTU0
LDcgKzU0LDYgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0jaW5j
bHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRGF0YUxpc3RFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRp
b21zLmgiCkBAIC0xMTE3LDEyICsxMTE2LDkgQEAgdm9pZCBSZW5kZXJUaGVtZTo6cGFpbnRTbGlk
ZXJUaWNrcyhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnQKICAg
ICAgICAgdGlja1JlZ2lvblNpZGVNYXJnaW4gPSB0cmFja0JvdW5kcy55KCkgKyAodGh1bWJTaXpl
LndpZHRoKCkgLSB0aWNrU2l6ZS53aWR0aCgpICogem9vbUZhY3RvcikgLyAyLjA7CiAgICAgICAg
IHRpY2tSZWdpb25XaWR0aCA9IHRyYWNrQm91bmRzLmhlaWdodCgpIC0gdGh1bWJTaXplLndpZHRo
KCk7CiAgICAgfQotICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gb3B0aW9ucyA9IGRhdGFMaXN0Lm9w
dGlvbnMoKTsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJ
bmZvLmNvbnRleHQoKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Ioby5z
dHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUNv
bG9yKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgTm9kZSogbm9kZSA9IG9wdGlvbnMtPml0
ZW0oaSk7IGkrKykgewotICAgICAgICBBU1NFUlQoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KCpub2Rl
KSk7Ci0gICAgICAgIEhUTUxPcHRpb25FbGVtZW50JiBvcHRpb25FbGVtZW50ID0gZG93bmNhc3Q8
SFRNTE9wdGlvbkVsZW1lbnQ+KCpub2RlKTsKKyAgICBmb3IgKGF1dG8mIG9wdGlvbkVsZW1lbnQg
OiBkYXRhTGlzdC5zdWdnZXN0aW9ucygpKSB7CiAgICAgICAgIFN0cmluZyB2YWx1ZSA9IG9wdGlv
bkVsZW1lbnQudmFsdWUoKTsKICAgICAgICAgaWYgKCFpbnB1dC5pc1ZhbGlkVmFsdWUodmFsdWUp
KQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAppbmRleCA4OGNhM2U1MDM3MzczMDE1YzUyMDMwZjA1
NDhjMGZiMzMyZTEwNzZkLi5mY2FmMDBjNTBiYmY2MDNlZjNhM2E5ZmQ4MzRkM2M5OWUzMzNiOTU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBv
cnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9y
dC5jcHAKQEAgLTYsNiArNiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHpl
IDxrcml0QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxOCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTI2LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTVkdSZW5kZXJTdXBwb3J0LmgiCiAKKyNpbmNsdWRlICJFbGVtZW50QW5jZXN0b3JJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRl
ckNoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCkBAIC00ODEsNiAr
NDgzLDcgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0OjpzdHlsZUNoYW5nZWQoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlKgogfQogCiAjaWYgRU5BQkxFKENTU19DT01Q
T1NJVElORykKKwogYm9vbCBTVkdSZW5kZXJTdXBwb3J0Ojppc29sYXRlc0JsZW5kaW5nKGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICByZXR1cm4gc3R5bGUuc3ZnU3R5bGUoKS5pc29s
YXRlc0JsZW5kaW5nKCkgfHwgc3R5bGUuaGFzRmlsdGVyKCkgfHwgc3R5bGUuaGFzQmxlbmRNb2Rl
KCkgfHwgc3R5bGUub3BhY2l0eSgpIDwgMS4wZjsKQEAgLTQ5MSwyMCArNDk0LDE2IEBAIHZvaWQg
U1ZHUmVuZGVyU3VwcG9ydDo6dXBkYXRlTWFza2VkQW5jZXN0b3JTaG91bGRJc29sYXRlQmxlbmRp
bmcoY29uc3QgUmVuZGVyRWxlCiAgICAgQVNTRVJUKHJlbmRlcmVyLmVsZW1lbnQoKSk7CiAgICAg
QVNTRVJUKHJlbmRlcmVyLmVsZW1lbnQoKS0+aXNTVkdFbGVtZW50KCkpOwogCi0gICAgYm9vbCBt
YXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyA9IHJlbmRlcmVyLnN0eWxlKCkuaGFz
QmxlbmRNb2RlKCk7Ci0gICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IHJlbmRlcmVyLmVsZW1lbnQo
KS0+cGFyZW50RWxlbWVudCgpOyBhbmNlc3RvciAmJiBhbmNlc3Rvci0+aXNTVkdFbGVtZW50KCk7
IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICBpZiAoIWRv
d25jYXN0PFNWR0VsZW1lbnQ+KCphbmNlc3RvcikuaXNTVkdHcmFwaGljc0VsZW1lbnQoKSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGNvbnN0IGF1dG8qIHN0eWxlID0gYW5jZXN0
b3ItPmNvbXB1dGVkU3R5bGUoKTsKKyAgICBmb3IgKGF1dG8mIGFuY2VzdG9yIDogYW5jZXN0b3Jz
T2ZUeXBlPFNWR0dyYXBoaWNzRWxlbWVudD4oKnJlbmRlcmVyLmVsZW1lbnQoKSkpIHsKKyAgICAg
ICAgYXV0byogc3R5bGUgPSBhbmNlc3Rvci5jb21wdXRlZFN0eWxlKCk7CiAgICAgICAgIGlmICgh
c3R5bGUgfHwgIWlzb2xhdGVzQmxlbmRpbmcoKnN0eWxlKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgIGlmIChhbmNlc3Rvci0+Y29tcHV0ZWRTdHlsZSgpLT5zdmdTdHlsZSgpLmhh
c01hc2tlcigpKQotICAgICAgICAgICAgZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50PigqYW5j
ZXN0b3IpLnNldFNob3VsZElzb2xhdGVCbGVuZGluZyhtYXNrZWRBbmNlc3RvclNob3VsZElzb2xh
dGVCbGVuZGluZyk7Ci0KKyAgICAgICAgaWYgKHN0eWxlLT5zdmdTdHlsZSgpLmhhc01hc2tlcigp
KQorICAgICAgICAgICAgYW5jZXN0b3Iuc2V0U2hvdWxkSXNvbGF0ZUJsZW5kaW5nKHJlbmRlcmVy
LnN0eWxlKCkuaGFzQmxlbmRNb2RlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQorCiAj
ZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlk
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcAppbmRl
eCA1ZTk5ZmJiZDJmZTAzODRiNzkwYzAwMzBjMTU2YWY2Y2Y1Nzg0MzgyLi4yMjM0ZmI1YWJmYWQ2
ZGFmOWNkMzQ0Mzc5NDY3MDBkODllNGYzMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZUludmFsaWRhdG9yLmNwcApAQCAtMjc1LDEyICsyNzUsMTAgQEAgdm9pZCBJbnZhbGlkYXRvcjo6
aW52YWxpZGF0ZVN0eWxlV2l0aE1hdGNoRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBNYXRjaEVs
ZW1lbnQKICAgICAgICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudC5uZXh0RWxlbWVudFNp
YmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygp
KQogICAgICAgICAgICAgaW52YWxpZGF0ZUlmTmVlZGVkKCpzaWJsaW5nLCBudWxscHRyKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNYXRjaEVsZW1lbnQ6OkFueVNpYmxpbmc6IHsKLSAgICAg
ICAgYXV0byBwYXJlbnRDaGlsZHJlbiA9IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KCplbGVtZW50
LnBhcmVudE5vZGUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYgcGFyZW50Q2hpbGQgOiBwYXJlbnRD
aGlsZHJlbikKKyAgICBjYXNlIE1hdGNoRWxlbWVudDo6QW55U2libGluZzoKKyAgICAgICAgZm9y
IChhdXRvJiBwYXJlbnRDaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KCplbGVtZW50LnBh
cmVudE5vZGUoKSkpCiAgICAgICAgICAgICBpbnZhbGlkYXRlSWZOZWVkZWQocGFyZW50Q2hpbGQs
IG51bGxwdHIpOwogICAgICAgICBicmVhazsKLSAgICB9CiAgICAgY2FzZSBNYXRjaEVsZW1lbnQ6
OlBhcmVudFNpYmxpbmc6CiAgICAgICAgIGZvciAoYXV0byogc2libGluZyA9IGVsZW1lbnQubmV4
dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVu
dFNpYmxpbmcoKSkgewogICAgICAgICAgICAgYXV0byBzaWJsaW5nQ2hpbGRyZW4gPSBjaGlsZHJl
bk9mVHlwZTxFbGVtZW50Pigqc2libGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2
ZXIuY3BwCmluZGV4IGYzZjM2MjE4M2Q1MDYxNzRhNDY2NjQ2MWM3MTdiZTc5YjNlNjFmMTQuLjY1
MWY4ZjFlMmQ3ODkyMTk5MDY1NmFmYTRmZDllNjllZGNhYzNjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xODMsOCArMTgzLDcgQEAgaW5saW5lIHZvaWQgUmVz
b2x2ZXI6OlN0YXRlOjpzZXRQYXJlbnRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHBhcmVudFMKIAogc3RhdGljIGlubGluZSBib29sIGlzQXRTaGFkb3dCb3VuZGFyeShjb25zdCBF
bGVtZW50JiBlbGVtZW50KQogewotICAgIGF1dG8qIHBhcmVudE5vZGUgPSBlbGVtZW50LnBhcmVu
dE5vZGUoKTsKLSAgICByZXR1cm4gcGFyZW50Tm9kZSAmJiBwYXJlbnROb2RlLT5pc1NoYWRvd1Jv
b3QoKTsKKyAgICByZXR1cm4gaXM8U2hhZG93Um9vdD4oZWxlbWVudC5wYXJlbnROb2RlKCkpOwog
fQogCiBCdWlsZGVyQ29udGV4dCBSZXNvbHZlcjo6YnVpbGRlckNvbnRleHQoY29uc3QgU3RhdGUm
IHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKaW5kZXggOTlkYjM1OWIyMDQ2MTg0
MGZjY2ExNTg4ZWUxMGY1MWVlZjE1NWY4Ni4uNmI0YjYyNTY5MmQ3YWNhNjJmMTc5YTlhMTQzMWI5
YjcyZmVlYmVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCkBAIC0xMDIsOSArMTAy
LDggQEAgdm9pZCBTVkdBRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0FFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikKIHsKLSAgICBpZiAocGFyZW50Tm9kZSgpICYmIHBhcmVudE5vZGUoKS0+
aXNTVkdFbGVtZW50KCkgJiYgZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnBhcmVudE5vZGUoKSkuaXNU
ZXh0Q29udGVudCgpKQorICAgIGlmIChpczxTVkdFbGVtZW50PihwYXJlbnROb2RlKCkpICYmIGRv
d25jYXN0PFNWR0VsZW1lbnQ+KCpwYXJlbnROb2RlKCkpLmlzVGV4dENvbnRlbnQoKSkKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0lubGluZT4oKnRoaXMsIFdURk1vdmUo
c3R5bGUpKTsKLQogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdUcmFuc2Zvcm1h
YmxlQ29udGFpbmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAKaW5kZXggMmZmY2JhYzUyMTFjOGEwNWFlNDYwZDMwY2EwNDI2ZTQ2N2NlYTE4
My4uMjIyNDFkYWQ0MTdmYzdlMjY4YmQ2MDdlYTUzMDdiYjJhOTJiNDUyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggUm9iIEJ1
aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBBbHAgVG9rZXIg
PGFscEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA5IENhbWVyb24gTWNDb3JtYWNr
IDxjYW1AbWNjLmlkLmF1PgogICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25p
Y3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC05MTYsMTggKzkxNiwxMCBAQCB2b2lkIFNWR0Vs
ZW1lbnQ6OnVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKGJvb2wgaGFzUmVsYXRpdmVM
ZW5ndGhzLCBTVkdFbAogICAgICAgICBtX2VsZW1lbnRzV2l0aFJlbGF0aXZlTGVuZ3Rocy5yZW1v
dmUoZWxlbWVudCk7CiAgICAgfQogCi0gICAgaWYgKCFlbGVtZW50LT5pc1NWR0dyYXBoaWNzRWxl
bWVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGaW5kIGZpcnN0IHN0eWxlZCBwYXJl
bnQgbm9kZSwgYW5kIG5vdGlmeSBpdCB0aGF0IHdlJ3ZlIGNoYW5nZWQgb3VyIHJlbGF0aXZlIGxl
bmd0aCBzdGF0ZS4KLSAgICBhdXRvIG5vZGUgPSBtYWtlUmVmUHRyKHBhcmVudE5vZGUoKSk7Ci0g
ICAgd2hpbGUgKG5vZGUpIHsKLSAgICAgICAgaWYgKCFub2RlLT5pc1NWR0VsZW1lbnQoKSkKLSAg
ICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIC8vIFJlZ2lzdGVyIHVzIGluIHRoZSBwYXJlbnQg
ZWxlbWVudCBtYXAuCi0gICAgICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpub2RlKS51cGRhdGVS
ZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihoYXNSZWxhdGl2ZUxlbmd0aHMsIHRoaXMpOwotICAg
ICAgICBicmVhazsKKyAgICBpZiAoZWxlbWVudC0+aXNTVkdHcmFwaGljc0VsZW1lbnQoKSkgewor
ICAgICAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50Tm9kZSgpKTsKKyAgICAgICAg
aWYgKGlzPFNWR0VsZW1lbnQ+KHBhcmVudCkpCisgICAgICAgICAgICBkb3duY2FzdDxTVkdFbGVt
ZW50PigqcGFyZW50KS51cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihoYXNSZWxhdGl2
ZUxlbmd0aHMsIHRoaXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXgg
OThmY2ZmYmNhNGQ3MTI2N2U3NDVmZWRiOWIzMGU4MGQwYzliNjJjZi4uNjM5MThhYTg4YmYxOTRh
MjllNjQzMGFiMWU5OTYwYjg4Y2JlZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0x
NDUsNiArMTQ1LDggQEAgcHVibGljOgogICAgIFN0cmluZyBjbGFzc05hbWUoKSBjb25zdCB7IHJl
dHVybiBtX2NsYXNzTmFtZS0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBTVkdBbmltYXRlZFN0cmlu
ZyYgY2xhc3NOYW1lQW5pbWF0ZWQoKSB7IHJldHVybiBtX2NsYXNzTmFtZTsgfQogCisgICAgY29u
c3QgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBQc2V1ZG9JZDo6Tm9uZSkg
ZmluYWw7CisKIHByb3RlY3RlZDoKICAgICBTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgflNWR0VsZW1lbnQoKTsKQEAgLTE3Myw4ICsxNzUs
NiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB3aWxsUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSkg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5
bGUoUHNldWRvSWQgPSBQc2V1ZG9JZDo6Tm9uZSkgZmluYWw7Ci0KICAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJUYXJnZXQoKSB7IH0KIAogICAgIHZvaWQgYnVpbGRQZW5kaW5nUmVzb3VyY2VzSWZOZWVk
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5j
cHAKaW5kZXggNzdkOTRhZmU4NWViYTE2NDI2YTQxOTdkN2Y5MDU2OGMzYzM2ZDBhZC4uM2Y3MjMx
MzFhMjI2MjIzYWMwZGY2YjUwYzJkOTZhMDJlMmE3NzcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTI3NCwyMiArMjc0LDI0IEBA
IGJvb2wgWE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJp
bmcmIGNodW5rLCBEb2N1bWVudEZyYWdtCiAKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIEF0b21T
dHJpbmc+IHByZWZpeFRvTmFtZXNwYWNlTWFwOwogICAgIEF0b21TdHJpbmcgZGVmYXVsdE5hbWVz
cGFjZVVSSTsKLSAgICBib29sIHN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVSSSA9IGZh
bHNlOwotICAgIAotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnRMaW5lYWdlKGNvbnRl
eHRFbGVtZW50KSkgewotICAgICAgICBpZiAoaXM8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ+KGVs
ZW1lbnQpKQotICAgICAgICAgICAgc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFtZXNwYWNlVVJJID0g
dHJ1ZTsKLSAgICAgICAgZWxzZSBpZiAoIXN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVS
SSkKLSAgICAgICAgICAgIGRlZmF1bHROYW1lc3BhY2VVUkkgPSBlbGVtZW50Lm5hbWVzcGFjZVVS
SSgpOwotCi0gICAgICAgIGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGVzKCkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLQotICAgICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDog
ZWxlbWVudC5hdHRyaWJ1dGVzSXRlcmF0b3IoKSkgewotICAgICAgICAgICAgaWYgKGF0dHJpYnV0
ZS5wcmVmaXgoKSA9PSB4bWxuc0F0b20oKSkKLSAgICAgICAgICAgICAgICBwcmVmaXhUb05hbWVz
cGFjZU1hcC5zZXQoYXR0cmlidXRlLmxvY2FsTmFtZSgpLCBhdHRyaWJ1dGUudmFsdWUoKSk7Ci0g
ICAgICAgICAgICBlbHNlIGlmICghc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFtZXNwYWNlVVJJICYm
IGF0dHJpYnV0ZS5wcmVmaXgoKSA9PSB4bWxuc0F0b20oKSkKLSAgICAgICAgICAgICAgICBkZWZh
dWx0TmFtZXNwYWNlVVJJID0gYXR0cmlidXRlLnZhbHVlKCk7CisgICAgaWYgKGNvbnRleHRFbGVt
ZW50KSB7CisgICAgICAgIGJvb2wgc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFtZXNwYWNlVVJJID0g
ZmFsc2U7CisKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbGluZWFnZU9mVHlwZTxFbGVt
ZW50PigqY29udGV4dEVsZW1lbnQpKSB7CisgICAgICAgICAgICBpZiAoaXM8U1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICAgICAgICAgIHN0b3BMb29raW5nRm9yRGVm
YXVsdE5hbWVzcGFjZVVSSSA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmICghc3RvcExvb2tp
bmdGb3JEZWZhdWx0TmFtZXNwYWNlVVJJKQorICAgICAgICAgICAgICAgIGRlZmF1bHROYW1lc3Bh
Y2VVUkkgPSBlbGVtZW50Lm5hbWVzcGFjZVVSSSgpOworCisgICAgICAgICAgICBpZiAoIWVsZW1l
bnQuaGFzQXR0cmlidXRlcygpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogZWxlbWVudC5hdHRyaWJ1dGVz
SXRlcmF0b3IoKSkgeworICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUucHJlZml4KCkgPT0g
eG1sbnNBdG9tKCkpCisgICAgICAgICAgICAgICAgICAgIHByZWZpeFRvTmFtZXNwYWNlTWFwLnNl
dChhdHRyaWJ1dGUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZS52YWx1ZSgpKTsKKyAgICAgICAgICAg
ICAgICBlbHNlIGlmICghc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFtZXNwYWNlVVJJICYmIGF0dHJp
YnV0ZS5wcmVmaXgoKSA9PSB4bWxuc0F0b20oKSkKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dE5hbWVzcGFjZVVSSSA9IGF0dHJpYnV0ZS52YWx1ZSgpOworICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IDNmNWI2
MTgxZTA2ZTBhODQ2ODhiZGE5MTZmMTBkODdhNjFkMTRiZTcuLjZiMjc3M2VjOTczNTE4YTAxZTE0
NTU0MDUyNzI1ZTU1OTQwNmJjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3Bw
CkBAIC01NTksMTIgKzU1OSwxMSBAQCBzdGF0aWMgV2ViQ29yZTo6RWxlbWVudCogY29udGFpbmVy
RWxlbWVudEZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkKICAgICAvLyDCpzEz
LiBFbGVtZW50IFN0YXRlLgogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJkcml2ZXIv
d2ViZHJpdmVyLXNwZWMuaHRtbCNkZm4tY29udGFpbmVyLgogICAgIGlmIChpczxXZWJDb3JlOjpI
VE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkpIHsKLSAgICAgICAgYXV0byYgb3B0aW9uRWxlbWVu
dCA9IGRvd25jYXN0PFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KTsKICNpZiBF
TkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICAgICAgaWYgKGF1dG8qIHBhcmVudEVsZW1lbnQg
PSBvcHRpb25FbGVtZW50Lm93bmVyRGF0YUxpc3RFbGVtZW50KCkpCisgICAgICAgIGlmIChhdXRv
KiBwYXJlbnRFbGVtZW50ID0gV2ViQ29yZTo6YW5jZXN0b3JzT2ZUeXBlPFdlYkNvcmU6OkhUTUxE
YXRhTGlzdEVsZW1lbnQ+KGVsZW1lbnQpLmZpcnN0KCkpCiAgICAgICAgICAgICByZXR1cm4gcGFy
ZW50RWxlbWVudDsKICNlbmRpZgotICAgICAgICBpZiAoYXV0byogcGFyZW50RWxlbWVudCA9IG9w
dGlvbkVsZW1lbnQub3duZXJTZWxlY3RFbGVtZW50KCkpCisgICAgICAgIGlmIChhdXRvKiBwYXJl
bnRFbGVtZW50ID0gZG93bmNhc3Q8V2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQp
Lm93bmVyU2VsZWN0RWxlbWVudCgpKQogICAgICAgICAgICAgcmV0dXJuIHBhcmVudEVsZW1lbnQ7
CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAKaW5kZXgg
ZjUxOTQxZTZiNGVjMTIxOWQyYmJkYTBmYTk5NTdkYzUzODI3Yzc4Yi4uZDBjZmU5ZDE3M2FkOTc4
YjU4NjZkZTVmNmJmMzQ1NDI5NzgyNmQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcApAQCAt
MzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50SXRl
cmF0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZVZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Z1bGxzY3JlZW5NYW5hZ2VyLmg+CkBAIC00
NSw3ICs0NSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9UeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaD4KIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19Q
UkVTRU5UQVRJT05fTU9ERSkpCiAjaW5jbHVkZSAiUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA4ZTRjOTM3NWQ3YjhjYzEwZmZhMDA4MDNkNDgyMTcz
YmU1YTM1NThhLi41M2RlMTkxNWI0NzNhZjMzZmFkYjA1NTA5OTA3ZWFiMGMzNWYwMjY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzk1LDcgKzc5NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxD
b2xvckNob29zZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hv
b3NlckNsCiAKIHN0ZDo6dW5pcXVlX3B0cjxEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+IFdlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKERhdGFMaXN0U3VnZ2Vz
dGlvbnNDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJEYXRhTGlz
dFN1Z2dlc3Rpb25QaWNrZXI+KCZtX3BhZ2UsICZjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4obV9wYWdlLCBjbGllbnQpOwogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5jcHAKaW5kZXgg
YWViODczN2FkZDQ3M2MwM2FiNmUxMTc1MmZmMGMyMjRjOGRlMDgxOC4uYjIwYjBhY2Y4OGE0OWZm
NTBlMzU0MTU2ZjQyMWI4NmEwNjExZWYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3Vn
Z2VzdGlvblBpY2tlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzUsNDcgKzM1LDQ1IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRh
TGlzdFN1Z2dlc3Rpb25zQ2xpZW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLVdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6V2ViRGF0YUxp
c3RTdWdnZXN0aW9uUGlja2VyKFdlYlBhZ2UqIHBhZ2UsIERhdGFMaXN0U3VnZ2VzdGlvbnNDbGll
bnQqIGNsaWVudCkKLSAgICA6IG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudChjbGllbnQpCitX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihX
ZWJQYWdlJiBwYWdlLCBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50JiBjbGllbnQp
CisgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3BhZ2UocGFnZSkKIHsKIH0KIAotV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjp+V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKCkg
eyB9Ci0KLXZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpoYW5kbGVLZXlkb3duV2l0
aElkZW50aWZpZXIoY29uc3QgV1RGOjpTdHJpbmcmIGtleSkKK3ZvaWQgV2ViRGF0YUxpc3RTdWdn
ZXN0aW9uUGlja2VyOjpoYW5kbGVLZXlkb3duV2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBr
ZXkpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVLZXlkb3duSW5EYXRhTGlz
dChrZXkpLCBtX3BhZ2UtPmlkZW50aWZpZXIoKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpIYW5kbGVLZXlkb3duSW5EYXRhTGlzdChrZXkpLCBtX3BhZ2UuaWRlbnRpZmllcigpKTsKIH0K
IAotdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpZFNlbGVjdE9wdGlvbihjb25z
dCBXVEY6OlN0cmluZyYgc2VsZWN0ZWRPcHRpb24pCit2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlv
blBpY2tlcjo6ZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRPcHRpb24pCiB7
Ci0gICAgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LT5kaWRTZWxlY3REYXRhTGlzdE9wdGlv
bihzZWxlY3RlZE9wdGlvbik7CisgICAgbV9jbGllbnQuZGlkU2VsZWN0RGF0YUxpc3RPcHRpb24o
c2VsZWN0ZWRPcHRpb24pOwogfQogCiB2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6
ZGlkQ2xvc2VTdWdnZXN0aW9ucygpCiB7Ci0gICAgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50
LT5kaWRDbG9zZVN1Z2dlc3Rpb25zKCk7CisgICAgbV9jbGllbnQuZGlkQ2xvc2VTdWdnZXN0aW9u
cygpOwogfQogCiB2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6Y2xvc2UoKQogewot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kRGF0YUxpc3RTdWdnZXN0aW9ucygpLCBtX3Bh
Z2UtPmlkZW50aWZpZXIoKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFbmREYXRhTGlz
dFN1Z2dlc3Rpb25zKCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwogfQogCi12b2lkIFdlYkRhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlzcGxheVdpdGhBY3RpdmF0aW9uVHlwZShEYXRhTGlzdFN1
Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSB0eXBlKQordm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXI6OmRpc3BsYXlXaXRoQWN0aXZhdGlvblR5cGUoV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0
aW9uQWN0aXZhdGlvblR5cGUgdHlwZSkKIHsKLSAgICBpZiAoIW1fZGF0YUxpc3RTdWdnZXN0aW9u
c0NsaWVudC0+c3VnZ2VzdGlvbnMoKS5zaXplKCkpIHsKKyAgICBhdXRvIHN1Z2dlc3Rpb25zID0g
bV9jbGllbnQuc3VnZ2VzdGlvbnMoKTsKKyAgICBpZiAoc3VnZ2VzdGlvbnMuaXNFbXB0eSgpKSB7
CiAgICAgICAgIGNsb3NlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3BhZ2Ut
PnNldEFjdGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcih0aGlzKTsKKyAgICBtX3BhZ2Uuc2V0
QWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKCp0aGlzKTsKIAotICAgIERhdGFMaXN0U3Vn
Z2VzdGlvbkluZm9ybWF0aW9uIGluZm8gPSB7IHR5cGUsIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0Ns
aWVudC0+c3VnZ2VzdGlvbnMoKSwgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LT5lbGVtZW50
UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTaG93RGF0YUxpc3RTdWdnZXN0aW9ucyhpbmZvKSwgbV9wYWdlLT5pZGVudGlmaWVyKCkpOwor
ICAgIFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uIGluZm8geyB0eXBlLCBX
VEZNb3ZlKHN1Z2dlc3Rpb25zKSwgbV9jbGllbnQuZWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRp
bmF0ZXMoKSB9OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0RhdGFMaXN0U3VnZ2Vz
dGlvbnMoaW5mbyksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaAppbmRleCA5NzA1
MzU5ODkwYjc2NjFhZjZjYTgwNzE3MGIzNTNiNTk4YzUwZjc5Li4xMzUxMDczNTIxNDI5ZWY4N2Rl
ZDE0MmM0OTYxNDE5MGNkODYzMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlv
blBpY2tlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKIAog
I2luY2x1ZGUgPFdlYkNvcmUvRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERhdGFM
aXN0U3VnZ2VzdGlvbnNDbGllbnQ7CkBAIC0zOCwxOSArMzcsMjAgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIFdlYlBhZ2U7CiAKLWNsYXNzIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
ciA6IHB1YmxpYyBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIgeworY2xhc3MgV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkRhdGFMaXN0
U3VnZ2VzdGlvblBpY2tlciB7CiBwdWJsaWM6Ci0gICAgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyKFdlYlBhZ2UqLCBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50Kik7Ci0gICAg
dmlydHVhbCB+V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKCk7CisgICAgV2ViRGF0YUxpc3RT
dWdnZXN0aW9uUGlja2VyKFdlYlBhZ2UmLCBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xp
ZW50Jik7CiAKLSAgICB2b2lkIGhhbmRsZUtleWRvd25XaXRoSWRlbnRpZmllcihjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFNlbGVjdE9wdGlvbihjb25zdCBTdHJpbmcmKTsK
ICAgICB2b2lkIGRpZENsb3NlU3VnZ2VzdGlvbnMoKTsKLSAgICB2b2lkIGNsb3NlKCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkaXNwbGF5V2l0aEFjdGl2YXRpb25UeXBlKFdlYkNvcmU6OkRhdGFMaXN0
U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBlKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKLSAgICBXZWJD
b3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50KiBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGll
bnQ7Ci0gICAgV2ViUGFnZSogbV9wYWdlOworICAgIHZvaWQgaGFuZGxlS2V5ZG93bldpdGhJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgZGlzcGxheVdpdGhBY3RpdmF0
aW9uVHlwZShXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSkgZmluYWw7
CisgICAgdm9pZCBjbG9zZSgpIGZpbmFsOworCisgICAgV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0
aW9uc0NsaWVudCYgbV9jbGllbnQ7CisgICAgV2ViUGFnZSYgbV9wYWdlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKaW5kZXggZjZjOTg0ZTMwNWVjN2Y3ZGFlZDk3ZjY4NmU4OWEyN2ZiOTBiYjQ3ZS4u
YWViMGM2MjhjZDcwZDQ4OWNmODdiZDUwYTNjNDAxYzRlNDBmMTExMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDYgKzU1LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRM
b2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
RWxlbWVudENoaWxkSXRlcmF0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50SGFuZGxlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4K
QEAgLTcxLDcgKzcyLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0pTRWxlbWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSlNGaWxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU1JhbmdlLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9Ob2RlVHJhdmVyc2FsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVuZGVyVHJlZUFzVGV4dC5oPgpAQCAtNjYyLDE3ICs2NjIsOCBAQCBib29sIFdlYkZyYW1lOjpj
b250YWluc0FueUZvcm1FbGVtZW50cygpIGNvbnN0CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fY29y
ZUZyYW1lLT5kb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGZvciAoTm9kZSogbm9kZSA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQo
KTsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUpKSB7Ci0gICAgICAgIGlm
ICghaXM8RWxlbWVudD4oKm5vZGUpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlm
IChpczxIVE1MRm9ybUVsZW1lbnQ+KCpub2RlKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byogZG9jdW1lbnQgPSBtX2NvcmVGcmFt
ZS0+ZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQgJiYgY2hpbGRyZW5PZlR5cGU8SFRN
TEZvcm1FbGVtZW50PigqZG9jdW1lbnQpLmZpcnN0KCk7CiB9CiAKIGJvb2wgV2ViRnJhbWU6OmNv
bnRhaW5zQW55Rm9ybUNvbnRyb2xzKCkgY29uc3QKQEAgLTY4MCwxNCArNjcxLDEyIEBAIGJvb2wg
V2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9ybUNvbnRyb2xzKCkgY29uc3QKICAgICBpZiAoIW1fY29y
ZUZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gbV9jb3JlRnJhbWUtPmRvY3VtZW50KCk7CisgICAgYXV0byogZG9jdW1lbnQgPSBtX2Nv
cmVGcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50
KCk7IG5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlKSkgewotICAgICAgICBp
ZiAoIWlzPEVsZW1lbnQ+KCpub2RlKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBp
ZiAoaXM8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpIHx8IGlzPEhUTUxTZWxlY3RFbGVtZW50Pigq
bm9kZSkgfHwgaXM8SFRNTFRleHRBcmVhRWxlbWVudD4oKm5vZGUpKQorICAgIGZvciAoYXV0byYg
Y2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxFbGVtZW50PigqZG9jdW1lbnQpKSB7CisgICAgICAgIGlm
IChpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oY2hpbGQpIHx8IGlzPEhUTUxTZWxlY3RF
bGVtZW50PihjaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCBhYTk5ZTlkYzBiMDBkNjUyNThmM2NlNDg0ZGFiNWE5MDQ2MzBkYjdjLi5mMzE5YzAz
ZjQ3ZDYxZTE2MmFkZTA0ZTI5YTE1NjFjNzU1Zjk4NTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDEwNSw5ICs0MTA1LDkgQEAgdm9pZCBX
ZWJQYWdlOjpkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCiAKICNp
ZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKIAotdm9pZCBXZWJQYWdlOjpzZXRBY3RpdmVEYXRh
TGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKiBkYXRhTGlz
dFN1Z2dlc3Rpb25QaWNrZXIpCit2b2lkIFdlYlBhZ2U6OnNldEFjdGl2ZURhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlcihXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXImIGRhdGFMaXN0U3VnZ2VzdGlv
blBpY2tlcikKIHsKLSAgICBtX2FjdGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlciA9IG1ha2VX
ZWFrUHRyKGRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik7CisgICAgbV9hY3RpdmVEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXIgPSBtYWtlV2Vha1B0cigmZGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKTsK
IH0KIAogdm9pZCBXZWJQYWdlOjpkaWRTZWxlY3REYXRhTGlzdE9wdGlvbihjb25zdCBTdHJpbmcm
IHNlbGVjdGVkT3B0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IDc2ZDA0YTA0ZDFmNGEwYjI0MjNhNzgyYWQ1YjY4M2VmYTAxOGUzYTYuLjZkNWNk
MzhjOGJiNTgyNTk3ZTI0NDQyMThlOGNmODFhZWExMDVhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQxNiw3ICs0MTYsNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotICAgIHZvaWQgc2V0QWN0aXZl
RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlciopOwor
ICAgIHZvaWQgc2V0QWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKFdlYkRhdGFMaXN0U3Vn
Z2VzdGlvblBpY2tlciYpOwogICAgIHZvaWQgZGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCBkaWRDbG9zZVN1Z2dlc3Rpb25zKCk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5k
ZXggNDczODM1NzZjZjAzOTNkN2E0ZWQzZjU4NzczYzM5OTM4OWVlZmFlNi4uMDFhMDI5Y2NkZDI2
ZDYwYWYzOTJmMzg3NDg0YTcyMDYzZGE2ZTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI0OTgsMTEgKzI0OTgsMTIg
QEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCkKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dChhdXRv
Y29ycmVjdGlvbkNvbnRleHQoKSkpOwogfQogCi1zdGF0aWMgSFRNTEFuY2hvckVsZW1lbnQqIGNv
bnRhaW5pbmdMaW5rRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQorc3RhdGljIEhUTUxBbmNob3JF
bGVtZW50KiBjb250YWluaW5nTGlua0FuY2hvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIHsK
LSAgICBmb3IgKGF1dG8mIGN1cnJlbnRFbGVtZW50IDogZWxlbWVudExpbmVhZ2UoZWxlbWVudCkp
IHsKLSAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmlzTGluaygpICYmIGlzPEhUTUxBbmNob3JF
bGVtZW50PihjdXJyZW50RWxlbWVudCkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRN
TEFuY2hvckVsZW1lbnQ+KCZjdXJyZW50RWxlbWVudCk7CisgICAgLy8gRklYTUU6IFRoZXJlIGlz
IGNvZGUgaW4gdGhlIGRyYWcgY29udHJvbGxlciB0aGF0IHN1cHBvcnRzIGFueSBsaW5rLCBldmVu
IGlmIGl0J3Mgbm90IGFuIEhUTUxBbmNob3JFbGVtZW50LiBXaHkgaXMgdGhpcyBkaWZmZXJlbnQ/
CisgICAgZm9yIChhdXRvJiBjdXJyZW50RWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8SFRNTEFuY2hv
ckVsZW1lbnQ+KGVsZW1lbnQpKSB7CisgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5pc0xpbmso
KSkKKyAgICAgICAgICAgIHJldHVybiAmY3VycmVudEVsZW1lbnQ7CiAgICAgfQogICAgIHJldHVy
biBudWxscHRyOwogfQpAQCAtMjY3Miw3ICsyNjczLDcgQEAgc3RhdGljIHZvaWQgZWxlbWVudFBv
c2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
SW4KIHsKICAgICBFbGVtZW50KiBsaW5rRWxlbWVudCA9IG51bGxwdHI7CiAgICAgaWYgKGVsZW1l
bnQucmVuZGVyZXIoKSAmJiBlbGVtZW50LnJlbmRlcmVyKCktPmlzUmVuZGVySW1hZ2UoKSkKLSAg
ICAgICAgbGlua0VsZW1lbnQgPSBjb250YWluaW5nTGlua0VsZW1lbnQoJmVsZW1lbnQpOworICAg
ICAgICBsaW5rRWxlbWVudCA9IGNvbnRhaW5pbmdMaW5rQW5jaG9yRWxlbWVudChlbGVtZW50KTsK
ICAgICBlbHNlIGlmIChlbGVtZW50LmlzTGluaygpKQogICAgICAgICBsaW5rRWxlbWVudCA9ICZl
bGVtZW50OwogCkBAIC0yOTM4LDcgKzI5MzksNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rp
b25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogICAgICAgICBpZiAoaXM8UmVuZGVySW1hZ2U+
KCplbGVtZW50LnJlbmRlcmVyKCkpKSB7CiAgICAgICAgICAgICBVUkwgdXJsOwogICAgICAgICAg
ICAgU3RyaW5nIHRpdGxlOwotICAgICAgICAgICAgaWYgKGF1dG8qIGxpbmtFbGVtZW50ID0gY29u
dGFpbmluZ0xpbmtFbGVtZW50KCZlbGVtZW50KSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGxp
bmtFbGVtZW50ID0gY29udGFpbmluZ0xpbmtBbmNob3JFbGVtZW50KGVsZW1lbnQpKSB7CiAgICAg
ICAgICAgICAgICAgdXJsID0gbGlua0VsZW1lbnQtPmhyZWYoKTsKICAgICAgICAgICAgICAgICB0
aXRsZSA9IGxpbmtFbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxO
YW1lczo6dGl0bGVBdHRyKTsKICAgICAgICAgICAgICAgICBpZiAoIXRpdGxlLmxlbmd0aCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCmluZGV4IDVjMTNkNjM3
ZTFmN2ZmNmY4MmQ5Mjk0MjhkZmI4MjUwNWIzOGNhYzkuLmFkY2QwMTdkMzA2NWUyMzJhNjdjYTQy
NTU2ZjM1YzVjZGU2ZWNmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9j
dW1lbnQubW0KQEAgLTI1LDEzICsyNSw2IEBACiAKICNpbXBvcnQgIkRPTURvY3VtZW50SW50ZXJu
YWwuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9BdHRyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0NEQVRB
U2VjdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9DU1NSdWxlTGlzdC5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9DU1NTdHlsZURlY2xhcmF0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0NvbW1lbnQuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRGdWxsc2NyZWVuLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luLmg+CiAjaW1wb3J0ICJET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oIgog
I2ltcG9ydCAiRE9NQXR0ckludGVybmFsLmgiCiAjaW1wb3J0ICJET01DREFUQVNlY3Rpb25JbnRl
cm5hbC5oIgpAQCAtNTcsMTUgKzUwLDIyIEBACiAjaW1wb3J0ICJET01TdHlsZVNoZWV0TGlzdElu
dGVybmFsLmgiCiAjaW1wb3J0ICJET01UZXh0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVRyZWVX
YWxrZXJJbnRlcm5hbC5oIgotI2ltcG9ydCA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNpbXBvcnQg
IkRPTVhQYXRoRXhwcmVzc2lvbkludGVybmFsLmgiCiAjaW1wb3J0ICJET01YUGF0aFJlc3VsdElu
dGVybmFsLmgiCisjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgorI2ltcG9ydCAiT2JqQ05v
ZGVGaWx0ZXJDb25kaXRpb24uaCIKKyNpbXBvcnQgPFdlYkNvcmUvQXR0ci5oPgorI2ltcG9ydCA8
V2ViQ29yZS9DREFUQVNlY3Rpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ1NTUnVsZUxpc3QuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9Db21tZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTVdpbmRvdy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Eb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50RnVsbHNjcmVlbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9E
b2N1bWVudFR5cGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWxlbWVudC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9FdmVudC5oPgotI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdl
YkNvcmUvSFRNTENvbGxlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTEVsZW1lbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSFRNTEhlYWRFbGVtZW50Lmg+CkBAIC03MywxMiArNzMsMTEgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTmFtZU5v
ZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05hdGl2ZU5vZGVGaWx0ZXIuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlSXRlcmF0b3IuaD4KICNpbXBv
cnQgPFdlYkNvcmUvTm9kZUxpc3QuaD4KLSNpbXBvcnQgIk9iakNOb2RlRmlsdGVyQ29uZGl0aW9u
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oPgogI2ltcG9ydCA8
V2ViQ29yZS9SYW5nZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVT
aGVldExpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dC5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnRGcmFnbWVudC5tbQppbmRleCAwNzI5MzBlMzk1
OGUyMGExMmUzY2UzYzU3ZTE5OTRmZTNkZGMxNjVlLi5jZjFhM2MxZjg0MzdiZDViZTkyMGQ4ODRl
MzVhYzA1M2Y4OWY4NDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NRG9jdW1lbnRGcmFnbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NRG9jdW1lbnRGcmFnbWVudC5tbQpAQCAtMzIsNyArMzIsNiBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9Eb2N1bWVudEZyYWdtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VsZW1lbnQuaD4KICNpbXBv
cnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0hUTUxDb2xsZWN0aW9u
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05h
bWVOb2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQppbmRl
eCBhNGMxYjYwOGMxNmQyMWU1ODc3MTAxNTI2Nzc5YmE2NDU1MDY5MGMzLi5mZDk5NGFiNWJlMTRl
Y2MzYjIxNGY5NDUyMWM4ZDMwM2E5NmI5MmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQpAQCAtMjUsMjEgKzI1LDEw
IEBACiAKICNpbXBvcnQgIkRPTUhUTUxGaWVsZFNldEVsZW1lbnQuaCIKIAotI2ltcG9ydCAiRE9N
SFRNTENvbGxlY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NSFRNTEZvcm1FbGVtZW50SW50
ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0jaW1wb3J0ICJET01Ob2RlSW50ZXJu
YWwuaCIKLSNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0hU
TUxDb2xsZWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxGaWVsZFNldEVsZW1lbnQuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvSFRNTEZvcm1FbGVtZW50Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0hU
TUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9WYWxpZGl0eVN0YXRlLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KLSNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6
Ok5vZGUqPihfaW50ZXJuYWwpKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390875</attachid>
            <date>2020-02-15 17:29:49 -0800</date>
            <delta_ts>2020-02-15 20:25:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207816-20200215172949.patch</filename>
            <type>text/plain</type>
            <size>200705</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA3ZDVjMDg3NTUyMmNm
ZGU0MjQwZTU1YTcwZTQ3ZGVmNjE0YTNhNy4uMDM4OTk1OWVhMDFlYzcyZGM2ZGVkNmUzNmQxYjli
NGNmZGUyMDYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5MSBAQAorMjAyMC0wMi0xNSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRv
cnMgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZpbmVkIGVsZW1lbnQgaXRlcmF0b3IgaW1wbGVtZW50YXRp
b24gb24gdGhlIGZvbGxvd2luZyB3YXlzOgorCisgICAgICAgIDEpIFJlbW92ZWQgdGhlIGR1cGxp
Y2F0ZSBkZXNjZW5kYW50IGl0ZXJhdG9yLCBrZWVwaW5nIHRoZSBvbmUgdGhhdCBtYXRjaGVzCisg
ICAgICAgICAgIHRoZSBzdHlsZSBvZiB0aGUgYW5jZXN0b3IgYW5kIGNoaWxkIGl0ZXJhdG9ycy4K
KyAgICAgICAgMikgUmVtb3ZlZCB0aGUgbm9uLXRlbXBsYXRlIGVsZW1lbnRBbmNlc3RvcnMsIGVs
ZW1lbnRDaGlsZHJlbiwgZWxlbWVudERlc2NlbmRhbnRzLAorICAgICAgICAgICBhbmQgZWxlbWVu
dExpbmVhZ2UgZnVuY3Rpb25zIGFuZCBjaGFuZ2VkIGNhbGxlcnMgdG8gdXNlIHh4eE9mVHlwZTxF
bGVtZW50PiBpbnN0ZWFkLgorCisgICAgICAgIEFsc28gcmVwbGFjZWQgdXNlIG9mIEhUTUxDb2xs
ZWN0aW9uIGNsYXNzZXMgaW4gV2ViS2l0IGNvZGUgZm9yIGl0ZXJhdGlvbi4KKyAgICAgICAgVGhl
eSBhcmUgZmluZSBmb3IgdXNlIGZyb20gSmF2YVNjcmlwdCwgYnV0IGludGVybmFsbHkgd2UgaGF2
ZSBtb3JlIGVmZmljaWVudAorICAgICAgICBpdGVyYXRpb24gaWRpb21zLgorCisgICAgICAgICog
SGVhZGVycy5jbWFrZTogUmVtb3ZlZCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmguCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Om1vdXNlQnV0dG9uTGlzdGVuZXIgY29u
c3QpOiBVc2UKKyAgICAgICAgbGluZWFnZU9mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnRMaW5lYWdl
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2li
aWxpdHlJbWFnZU1hcEhpdFRlc3QgY29uc3QpOgorICAgICAgICBVc2UgYW5jZXN0b3JzT2ZUeXBl
IGluc3RlYWQgb2YgYSBoYW5kd3JpdHRlbiBsb29wLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUg
b2YKKyAgICAgICAgSFRNTENvbGxlY3Rpb24uaC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHA6IERpdHRvLgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmNwcDogVXBkYXRlZCBpbmNsdWRlcy4KKyAgICAgICAgKiBkb20vQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5LmNwcDogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50OjpnZXRFbGVtZW50QnlJ
ZCBjb25zdCk6IFVzZQorICAgICAgICBkZXNjZW5kYW50c09mVHlwZSBpbnN0ZWFkb2YgZWxlbWVu
dERlc2NlbmRhbnRzLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlIGNvbnN0KTogVXNlIGxpbmVh
Z2VPZlR5cGUKKyAgICAgICAgaW5zdGVhZCBvZiBhIGhhbmRyd2l0dGVuIGxvb3AuCisKKyAgICAg
ICAgKiBkb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaDogTW92ZWQgdGhlIGRlY2xhcmF0aW9u
cyBvZiB0aGUgZnVuY3Rpb25zCisgICAgICAgIHRvIHRoZSB0b3Agb2YgdGhlIGZpbGUsIHNpbmNl
IHRoZSBjbGFzc2VzIGFyZSByZWFsbHkgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KKyAgICAgICAg
UmVtb3ZlZCB0aGUgc2VwYXJhdGUgIkNvbnN0IiB2ZXJzaW9ucyBvZiBldmVyeXRoaW5nIHNpbmNl
IHdlIGNhbiBqdXN0IHVzZQorICAgICAgICBjb25zdCBpbiB0aGUgdGVtcGxhdGUgYXJndW1lbnQg
dHlwZSBpbnN0ZWFkLiBVc2UgdGhlIHRlcm0gIlJhbmdlIiBpbnN0ZWFkCisgICAgICAgIG9mIHRo
ZSB0ZXJtICJJdGVyYXRvckFkYXB0ZXIiIGZvciB0aGUgY2xhc3MgdGVtcGxhdGVzIGZvciB1c2Ug
aW4gcmFuZ2UtYmFzZWQKKyAgICAgICAgZm9yIGxvb3BzIHNpbmNlIHRoYXQncyBjbG9zZXIgdG8g
bW9kZXJuIEMrKyB0ZXJtaW5vbG9neS4gTWFkZSBtYW55IGZ1bmN0aW9uCisgICAgICAgIG1lbWJl
cnMgY29uc3Qgd2hlcmUgYXBwcm9wcmlhdGUuIFNwZWNpYWxpemVkIGxpbmVhZ2VPZlR5cGUgYW5k
IGFuY2VzdG9yc09mVHlwZQorICAgICAgICBmb3IgRWxlbWVudCB0byBzbGlnaHRseSBvcHRpbWl6
ZSB0aGF0IGNhc2UuIFVzZSBkb3duY2FzdCBpbnN0ZWFkIG9mIHN0YXRpY19jYXN0LgorICAgICAg
ICBEZWxldGVkIGVsZW1lbnRMaW5lYWdlIGFuZCBlbGVtZW50QW5jZXN0b3JzLgorCisgICAgICAg
ICogZG9tL0VsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmg6IFJlbmFtZWQgSXRlcmF0
b3JBZGFwdGVyIHRvIFJhbmdlLgorICAgICAgICBNYWRlIG1vcmUgZnVuY3Rpb24gbWVtYmVycyBj
b25zdC4KKworICAgICAgICAqIGRvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oOiBNb3ZlZCB0aGUg
ZGVjbGFyYXRpb25zIG9mIHRoZSBmdW5jdGlvbnMKKyAgICAgICAgdG8gdGhlIHRvcCBvZiB0aGUg
ZmlsZSwgc2luY2UgdGhlIGNsYXNzZXMgYXJlIHJlYWxseSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxz
LgorICAgICAgICBSZW1vdmVkIHRoZSBzZXBhcmF0ZSAiQ29uc3QiIHZlcnNpb25zIG9mIGV2ZXJ5
dGhpbmcgc2luY2Ugd2UgY2FuIGp1c3QgdXNlCisgICAgICAgIGNvbnN0IGluIHRoZSB0ZW1wbGF0
ZSBhcmd1bWVudCB0eXBlIGluc3RlYWQuIFVzZSB0aGUgdGVybSAiUmFuZ2UiIGluc3RlYWQKKyAg
ICAgICAgb2YgdGhlIHRlcm0gIkl0ZXJhdG9yQWRhcHRlciIgZm9yIHRoZSBjbGFzcyB0ZW1wbGF0
ZXMgZm9yIHVzZSBpbiByYW5nZS1iYXNlZAorICAgICAgICBmb3IgbG9vcHMgc2luY2UgdGhhdCdz
IGNsb3NlciB0byBtb2Rlcm4gQysrIHRlcm1pbm9sb2d5LiBNYWRlIG1hbnkgZnVuY3Rpb24KKyAg
ICAgICAgbWVtYmVycyBjb25zdCB3aGVyZSBhcHByb3ByaWF0ZS4gRGVsZXRlZCBlbGVtZW50Q2hp
bGRyZW4uCisKKyAgICAgICAgKiBkb20vRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oOiBSZW1v
dmVkLgorCisgICAgICAgICogZG9tL0VsZW1lbnRJdGVyYXRvci5oOiBDaGFuZ2VkIEVsZW1lbnRJ
dGVyYXRvciB0byBkZXJpdmUgZnJvbSBzdGQ6Oml0ZXJhdG9yCisgICAgICAgIHRvIG1ha2UgaXRl
cmF0b3IgdHJhaXRzIHdvcmsgZm9yIGFsbCBjbGFzc2VzIGRlcml2ZWQgZnJvbSBpdC4gTWFkZSBj
b25zdHJ1Y3RvcnMKKyAgICAgICAgb2YgRWxlbWVudEl0ZXJhdG9yIHByaXZhdGUgdG8gbWFrZSBp
dCBjbGVhciBpdCdzIGludGVuZGVkIHRvIGJlIHVzZWQgYXMgYSBiYXNlCisgICAgICAgIGNsYXNz
IGFuZCBub3QgaW5zdGFudGlhdGVkLiBBZGRlZCBhIHByb3RlY3RlZCBhdEVuZCBmdW5jdGlvbiB0
aGF0J3MgdXNlZnVsIGluIHRoZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBzb21lIGZ1bmN0
aW9ucyB0aGF0IHdhbnQgdG8gY2hlY2sgdGhlIGVuZCBvZiBpdGVyYXRpb24gd2l0aG91dAorICAg
ICAgICBhbGxvY2F0aW5nIGFuICJlbmQiIGl0ZXJhdG9yLiBEZWxldGVkIEVsZW1lbnRDb25zdEl0
ZXJhdG9yLgorCisgICAgICAgICogZG9tL0xpdmVOb2RlTGlzdC5jcHA6IFJlbW92ZWQgc29tZSB1
bm5lZWRlZCBpbmNsdWRlcywgaW5jbHVkaW5nIEhUTUxDb2xsZWN0aW9uLmguCisKKyAgICAgICAg
KiBkb20vTGl2ZU5vZGVMaXN0Lmg6IFVwZGF0ZWQgc2luY2UgQ29sbGVjdGlvblRyYXZlcnNhbCBu
b3cgdXNlcyB0aGUKKyAgICAgICAgbW9yZSBtb2Rlcm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ciwgbm90IHRoZSBvbGRlciBvbmUgdGhhdCB1c2VkIGEgdmVjdG9yIG9mCisgICAgICAgIGFuY2Vz
dG9ycyB0byBkbyB0aGUgaXRlcmF0aW9uLgorCisgICAgICAgICogZG9tL05vZGUuY3BwOiBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgSFRNTENvbGxlY3Rpb24uaC4KKworICAgICAgICAqIGRv
bS9TZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6
OmNsb3Nlc3QgY29uc3QpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlIGluc3RlYWQgb2YgYW4KKyAgICAg
ICAgZXhwbGljaXQgbG9vcC4KKyAgICAgICAgKFdlYkNvcmU6OmVsZW1lbnRzRm9yTG9jYWxOYW1l
KTogVXNlIGRlc2NlbmRhbnRzT2ZUeXBlIGluc3RlYWQgb2YgZWxlbWVudERlc2NlbmRhbnRzLgor
ICAgICAgICAoV2ViQ29yZTo6YW55RWxlbWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZVRhZ05hbWVTZWxlY3RvckRhdGEgY29uc3Qp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5n
bGVDbGFzc05hbWVTZWxlY3RvckRhdGEgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVTZWxlY3RvckRhdGEgY29uc3QpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVNdWx0
aVNlbGVjdG9yRGF0YSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JE
YXRhTGlzdDo6ZXhlY3V0ZUNvbXBpbGVkU2ltcGxlU2VsZWN0b3JDaGVja2VyIGNvbnN0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29tcGlsZWRT
ZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0IGNvbnN0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29tcGlsZWRTaW5nbGVNdWx0aVNl
bGVjdG9yRGF0YSBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogZG9tL1Nsb3RBc3NpZ25tZW50
LmNwcDogVXBkYXRlZCBpbmNsdWRlcy4KKworICAgICAgICAqIGRvbS9UeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IuaDogTW92ZWQgdGhlIGRlY2xhcmF0aW9ucyBvZiB0aGUgZnVuY3Rpb25z
CisgICAgICAgIHRvIHRoZSB0b3Agb2YgdGhlIGZpbGUsIHNpbmNlIHRoZSBjbGFzc2VzIGFyZSBy
ZWFsbHkgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KKyAgICAgICAgUmVuYW1lZCB0aGUgY2xhc3Nl
cyB0byB0YWtlIG91dCB0aGUgd29yZCAidHlwZWQiIHNpbmNlIHRoZXNlIGl0ZXJhdG9ycyBhcmUg
dGhlCisgICAgICAgIHNhbWUgYXMgdGhlIGFuY2VzdG9yIGFuZCBjaGlsZHJlbiBpdGVyYXRvcnM7
IHRoaXMgZ2l2ZXMgdGhlc2UgdGhlIHNhbWUgbmFtZSBhcworICAgICAgICB0aGUgY2xhc3NlcyBp
biB0aGUgZGVsZXRlZCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggZmlsZSwgYW5kIHdlIGNh
biBmb2xsb3cKKyAgICAgICAgdXAgYnkgcmVuYW1pbmcgdGhpcyBmaWxlIHRvIHRha2UgIlR5cGVk
IiBvdXQgb2YgdGhlIG5hbWUgb2YgdGhlIGZpbGUsIHRvby4KKyAgICAgICAgUmVtb3ZlZCB0aGUg
c2VwYXJhdGUgIkNvbnN0IiB2ZXJzaW9ucyBvZiBldmVyeXRoaW5nIHNpbmNlIHdlIGNhbiBqdXN0
IHVzZQorICAgICAgICBjb25zdCBpbiB0aGUgdGVtcGxhdGUgYXJndW1lbnQgdHlwZSBpbnN0ZWFk
LiBVc2UgdGhlIHRlcm0gIlJhbmdlIiBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSB0ZXJtICJJdGVy
YXRvckFkYXB0ZXIiIGZvciB0aGUgY2xhc3MgdGVtcGxhdGVzIGZvciB1c2UgaW4gcmFuZ2UtYmFz
ZWQKKyAgICAgICAgZm9yIGxvb3BzIHNpbmNlIHRoYXQncyBjbG9zZXIgdG8gbW9kZXJuIEMrKyB0
ZXJtaW5vbG9neS4gTWFkZSBtYW55IGZ1bmN0aW9uCisgICAgICAgIG1lbWJlcnMgY29uc3Qgd2hl
cmUgYXBwcm9wcmlhdGUuIEFkZGVkIGEgbmV3IHNwZWNpYWxpemF0aW9uIHRoYXQgbWFrZXMgYQor
ICAgICAgICBkZXNjZW5kYW50IGl0ZXJhdG9yIHRoYXQgaXMgZmlsdGVyZWQgYmFzZWQgb24gYSBm
dW5jdGlvbiwgZm9yIHVzZSBpbiBpdGVyYXRpbmcKKyAgICAgICAgZGF0YSBsaXN0IHN1Z2dlc3Rp
b25zLgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjphcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQgY29uc3QpOiBVc2UgdGhlIGZ1
bmN0aW9uCisgICAgICAgIGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxCb2R5RWxlbWVudD4gaW5zdGVh
ZCBvZiBnZXRFbGVtZW50QnlUYWdOYW1lKGJvZHlUYWcpLgorICAgICAgICBBbHNvIG1lcmdlZCBh
cHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudCBpbiBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjphcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudCBjb25zdCk6IERlbGV0ZWQuCisKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5oOiBEZWxldGVkIGFwcGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50
LgorCisgICAgICAgICogZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25SdWxlTWF0Y2hlcjo6aXNFeGNsdWRlZCk6IFVzZSBs
aW5lYWdlT2ZUeXBlIGluc3RlYWQgb2YKKyAgICAgICAgZWxlbWVudExpbmVhZ2UuCisKKyAgICAg
ICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbTogVXBkYXRlZCBpbmNs
dWRlcy4KKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6IERpdHRvLgorICAgICAgICAqIGh0
bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0NvbGxl
Y3Rpb25UcmF2ZXJzYWwuaDogVXBkYXRlZCB0byB1c2UgdGhlIG1ldy90eXBlZCB2ZXJzaW9uIG9m
CisgICAgICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuIEFsc28gdXBkYXRlZCB0byB1c2Ug
c2hvcnRlciB0eXBlIG5hbWVzLgorCisgICAgICAgICogaHRtbC9Db2xvcklucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6c3VnZ2VzdGVkQ29sb3JzIGNvbnN0
KTogVXNlIHRoZSBuZXcKKyAgICAgICAgSFRNTERhdGFMaXN0RWxlbWVudDo6c3VnZ2VzdGlvbnMg
aW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIGh0bWwvR2VuZXJpY0NhY2hl
ZEhUTUxDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDYWNoZWRIVE1M
Q29sbGVjdGlvbjx0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1hdGNoZXMgY29uc3QpOgorICAgICAg
ICBVcGRhdGVkIHRvIHVzZSBIVE1MRGF0YUxpc3RFbGVtZW50Ojppc1N1Z2dlc3Rpb24gYW5kIGFk
ZGVkIGEgY29tbWVudCBleHBsYWluaW5nCisgICAgICAgIHdoeSB0aGF0IG1pZ2h0IG5vdCBiZSBu
ZWNlc3NhcnkgaWYgd2UgY29ycmVjdCB0aGUgaW1wbGVtZW50YXRpb24gdG8gbWF0Y2ggdGhlCisg
ICAgICAgIEhUTUwgc3BlY2lmaWNhdGlvbi4KKworICAgICAgICAqIGh0bWwvSFRNTEFsbENvbGxl
Y3Rpb24uaWRsOiBTcGVjaWZ5IFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gb24gdGhlCisg
ICAgICAgIGFyZ3VtZW50IHRvIG5hbWVkSXRlbSwgYW5kIFtBdG9tU3RyaW5nXSBmb3IgdGhlIGFy
Z3VtZW50IHRvIGl0ZW0uCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5pZGw6IERpdHRv
LgorCisgICAgICAgICogaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxEYXRhTGlzdEVsZW1lbnQ6OmlzU3VnZ2VzdGlvbik6IEFkZGVkLgorICAgICAg
ICAqIGh0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5oOiBBZGRlZCBpc1N1Z2dlc3Rpb24gYW5kIHN1
Z2dlc3Rpb25zIGZ1bmN0aW9ucyBzbworICAgICAgICBsb2dpYyBhYm91dCB3aGljaCBkYXRhIGxp
c3Qgb3B0aW9ucyBhcmUgc3VnZ2VzdGlvbnMgaXMgc2hhcmVkLgorCisgICAgICAgICogaHRtbC9I
VE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbGVtZW50QWZmZWN0c0RpcmVjdGlv
bmFsaXR5KTogUmVmYWN0b3JlZCBzbyB3ZSBnZXQgYSBtb3JlIGVmZmljaWVudAorICAgICAgICBp
bXBsZW1lbnRhdGlvbiB3aGVuIHRoZSB0eXBlIG9mIHRoZSBlbGVtZW50IGlzIGtub3duLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRB
ZnRlckNoaWxkQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIFVzZSBsaW5lYWdlT2ZUeXBlIGlu
c3RlYWQgb2YgZWxlbWVudExpbmVhZ2UuCisKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6
IFJlbW92ZWQgc29tZSB1bmVlZWRlZCBmb3J3YXJkIGRlY2xhcmF0aW9ucy4KKworICAgICAgICAq
IGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kV2lkZ2V0
UmVuZGVyZXIpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlIGluc3RlYWQgb2YgYSBsb29wLgorCisgICAg
ICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbXB1dGVXaWxsVmFsaWRhdGUgY29uc3QpOiBVc2UK
KyAgICAgICAgYW5jZXN0b3JzT2ZUeXBlIGluc3RlYWQgb2YgYSBsb29wLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZW5jbG9zaW5nRm9ybUNvbnRyb2xFbGVtZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDogRGVs
ZXRlZCB1bnVzZWQgZW5jbG9zaW5nRm9ybUNvbnRyb2xFbGVtZW50LgorCisgICAgICAgICogaHRt
bC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGw6IFNwZWNpZnkgW1JlcXVpcmVzRXhpc3Rp
bmdBdG9tU3RyaW5nXSBvbgorICAgICAgICB0aGUgYXJndW1lbnQgdG8gbmFtZWRJdGVtLgorCisg
ICAgICAgICogaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBp
bmNsdWRlIG9mIEhUTUxDb2xsZWN0aW9uLmguCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0dXBEYXRl
VGltZUNob29zZXJQYXJhbWV0ZXJzKTogVXNlIHRoZSBuZXcKKyAgICAgICAgSFRNTERhdGFMaXN0
RWxlbWVudDo6c3VnZ2VzdGlvbnMgaW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAg
ICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
T3B0R3JvdXBFbGVtZW50Ojpvd25lclNlbGVjdEVsZW1lbnQgY29uc3QpOiBVc2UgYW5jZXN0b3Jz
T2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2YgYSBoYW5kLXdyaXR0ZW4gbG9vcC4KKworICAgICAg
ICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9w
dGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogVXNlIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFk
IG9mCisgICAgICAgIGNhbGxpbmcgb3duZXJEYXRhTGlzdEVsZW1lbnQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6b3duZXJEYXRhTGlzdEVsZW1lbnQgY29uc3Qp
OiBEZWxldGVkLiBTaW5jZSB0aGUKKyAgICAgICAgc2FtZSBvcHRpb24gY2FuIGJlIHVzZWQgYnkg
bmVzdGVkIGRhdGEgbGlzdCBlbGVtZW50cywgdGhlIGNvbmNlcHQgb2YgYSBzaW5nbGUKKyAgICAg
ICAgIm93bmVyIiBkYXRhIGxpc3QgZWxlbWVudCBpc24ndCBmdWxseSBjb3JyZWN0LgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6Om93bmVyU2VsZWN0RWxlbWVudCBjb25zdCk6
IFVzZSBhbmNlc3RvcnNPZlR5cGUKKyAgICAgICAgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBs
b29wLgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaDogRGVsZXRlZCBvd25lckRh
dGFMaXN0RWxlbWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlk
bDogU3BlY2lmeSBbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIG9uCisgICAgICAgIHRoZSBh
cmd1bWVudCB0byBuYW1lZEl0ZW0uCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwOiBVcGRhdGVkIGluY2x1ZGVzLgorCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0
RWxlbWVudC5pZGw6IFNwZWNpZnkgW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBvbgorICAg
ICAgICB0aGUgYXJndW1lbnQgdG8gbmFtZWRJdGVtLgorCisgICAgICAgICogaHRtbC9IVE1MVGFi
bGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVu
dDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlIGNvbnN0KToKKyAgICAgICAg
VXNlIGF1dG8gc2luY2UgZmluZFBhcmVudFRhYmxlIG5vdyByZXR1cm5zIGEgY29uc3QgdGFibGUg
cG9pbnRlci4KKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRhYmxlQ29sRWxlbWVudDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0
dHJpYnV0ZVN0eWxlIGNvbnN0KToKKyAgICAgICAgRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hU
TUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6
Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKTogTWFkZSBjb25zdC4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxDZWxsU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxHcm91cFN0eWxlKTogRGl0dG8uCisg
ICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50Lmg6IE1hZGUgdGhlIGZ1bmN0aW9ucyBjb25z
dCwgYW5kIG1fc2hhcmVkQ2VsbFN0eWxlCisgICAgICAgIG11dGFibGUuCisKKyAgICAgICAgKiBo
dG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJs
ZVBhcnRFbGVtZW50OjpmaW5kUGFyZW50VGFibGUgY29uc3QpOiBVc2UgYW5jZXN0b3JzT2ZUeXBl
CisgICAgICAgIGluc3RlYWQgb2YgYSBoYW5kLXdyaXR0ZW4gbG9vcC4gQWxzbyByZXZpc2VkIHJl
dHVybiB0eXBlIHRvIGJlIGNvbnN0LWNvbnNpc3RlbnQuCisgICAgICAgICogaHRtbC9IVE1MVGFi
bGVQYXJ0RWxlbWVudC5oOiBVcGRhdGVkIHJldHVybiB0eXBlLgorCisgICAgICAgICogaHRtbC9I
VE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVj
dGlvbi5oLgorCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRIVE1MRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlyZWN0aW9uRm9yRm9ybURh
dGEgY29uc3QpOiBVc2UKKyAgICAgICAgbGluZWFnZU9mVHlwZSByYXRoZXIgdGhhbiBhIGhhbmQt
d3JpdHRlbiBsb29wLiBBbHNvIGdvdCByaWQgb2YgdGhlIG11bHRpcGxlCisgICAgICAgIHN0cmlu
Z3MgaW4gcmV0dXJuIHBhdGhzIHNpbmNlIHRoZSBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBvbmUg
b2YgdHdvIHN0cmluZ3MuCisKKyAgICAgICAgKiBodG1sL01lZGlhRG9jdW1lbnQuY3BwOiBVcGRh
dGVkIGluY2x1ZGVzLgorCisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9ucyk6IFVzZSBI
VE1MRGF0YUxpc3RFbGVtZW50OjpzdWdnZXN0aW9ucworICAgICAgICBpbnN0ZWFkIG9mIEhUTUxD
b2xsZWN0aW9uLiBBbHNvIGFkZGVkIGEgRklYTUUgYmVjYXVzZSB0aGUgY3VycmVudCBsb2dpYyBp
cworICAgICAgICBub3QgcmlnaHQgYWNyb3NzIGxhbmd1YWdlcyBhbmQgd2l0aCBub24tQVNDSUkg
Y2hhcmFjdGVycy4KKworICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcDogUmVt
b3ZlZCBpbmNsdWRlIG9mIEhUTUxDb2xsZWN0aW9uLmguCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0RWxlbWVudHNCeUNvbXB1dGVk
Um9sZSk6CisgICAgICAgIFVzZSBkZXNjZW5kYW50c09mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnRE
ZXNjZW5kYW50cy4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRT
dHlsZXNGb3JOb2RlKTogVXNlIGFuY2VzdG9yc09mVHlwZQorICAgICAgICBpbnN0ZWFkIG9mIGEg
aGFuZC13cml0dGVuIGxvb3AuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjppbnNw
ZWN0KTogVXNlIGlzRWxlbWVudE5vZGUgYW5kIGlzRG9jdW1lbnROb2RlCisgICAgICAgIGluc3Rl
YWQgb2YgdGhlIG11Y2ggc2xvd2VyIG5vZGVUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE1vdXNlZE92ZXJOb2RlKTogVXNlIGlzVGV4dE5vZGUgaW5z
dGVhZCBvZgorICAgICAgICB0aGUgbXVjaCBzbG93ZXIgbm9kZVR5cGUuCisKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOiBEaXR0by4KKworICAgICAgICAqIHBhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbmluZ0xpbmtFbGVt
ZW50KTogQWRkZWQuIFVzZXMgbGluZWFnZU9mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnRMaW5lYWdl
LgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyk6IFVwZGF0
ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxT
bmFwT2Zmc2V0cy5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlvbi5oLgorCisg
ICAgICAgICogcGxhdGZvcm0vRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oOiBSZWR1Y2VkIGlu
Y2x1ZGVzLCB1c2UgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50U2xp
ZGVyVGlja3MpOiBVc2UgSFRNTERhdGFMaXN0RWxlbWVudDo6c3VnZ2VzdGlvbnMKKyAgICAgICAg
aW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojp1
cGRhdGVNYXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyk6CisgICAgICAgIFVzZSBh
bmNlc3RvcnNPZlR5cGUgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorCisgICAgICAg
ICogc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
SW52YWxpZGF0b3I6OmludmFsaWRhdGVTdHlsZVdpdGhNYXRjaEVsZW1lbnQpOiBSZW1vdmUgYW4g
dW5uZWVkZWQKKyAgICAgICAgbG9jYWwgdmFyaWFibGUgYW5kIHVubmVlZGVkIGJyYWNlcy4KKwor
ICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OmlzQXRTaGFkb3dCb3VuZGFyeSk6IFVzZSB0aGUgaXM8U2hhZG93Um9vdD4gZnVuY3Rpb24u
CisKKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6IFVzZSB0aGUgaXM8U1ZHRWxlbWVudD4g
ZnVuY3Rpb24uCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRWxlbWVudDo6dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24pOiBEaXR0by4K
KworICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6IE1hZGUgY29tcHV0ZWRTdHlsZSBwdWJsaWMu
IEF0IGxlYXN0IG9uZSBjYWxsIHNpdGUgbm93IGtub3dzIHRoZQorICAgICAgICBzcGVjaWZpYyB0
eXBlIFNWR0VsZW1lbnQsIGFuZCBzbyBjYW4gY2FsbCBpdCBldmVuIG1vcmUgZWZmaWNpZW50bHkg
dGhhbiBiZWZvcmUuIElmCisgICAgICAgIHdlIGxlZnQgaXQgcHJpdmF0ZSB3ZSdkIGhhdmUgdG8g
Y2FzdCB0byB0aGUgYmFzZSBjbGFzcyB0byBjYWxsIGl0LCBhbmQgdGhlbiB3b3VsZCBuZWVkCisg
ICAgICAgIHZpcnR1YWwgZnVuY3Rpb24gZGlzcGF0Y2guCisKKyAgICAgICAgKiB4bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFy
c2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQpOiBVc2UgbGluZWFnZU9mVHlwZSBpbnN0ZWFkIG9m
CisgICAgICAgIGVsZW1lbnRMaW5lYWdlLiBBbHNvIGFkZCBhIG51bGwgY2hlY2sgdGhhdCBzZWVt
cyB0byBoYXZlIGJlZW4gbmVlZGVkIGJlZm9yZSB0b28uCisKIDIwMjAtMDItMTUgIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVy
XSBCdWlsZCBmYWlsdXJlIHdpdGggQ2xhbmcvbGliYysrIGR1ZSB0byBtaXNzaW5nIFdhbGxUaW1l
4oaSZmxvYXQgZm9yIHN0ZDo6aXNuYW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyZDM5MTBlYzFkY2JmYjJhNGQw
M2EyYmVkYzZkYTE3YmE2YTIzNDk3Li4yM2RjYzQwN2Y1MjZlZjE5MTQyNmE1ZWVhOTI4OThkZmEz
Mjg4YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTAyLTE1ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpc2UgRE9NIGl0ZXJhdG9ycyBpbXBs
ZW1lbnRhdGlvbiBhbmQgdXNhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNzgxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb250YWluZXJFbGVtZW50Rm9yRWxlbWVudCk6
IFVlcyBhbmNlc3RvcnNPZlR5cGUgaW5zdGVhZCBvZiBvd25lckRhdGFMaXN0RWxlbWVudC4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHA6
IFVwZGF0ZWQgaW5jbHVkZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6
Y3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKTogUGFzcyByZWZlcmVuY2VzLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNr
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6Oldl
YkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik6IFRha2UgcmVmZXJlbmNlcworICAgICAgICBpbnN0
ZWFkIG9mIHBvaW50ZXJzLCBzaW5jZSB0aGV5IG11c3QgYm90aCBiZSBub24tbnVsbC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpoYW5kbGVLZXlkb3duV2l0
aElkZW50aWZpZXIpOiBVcGRhdGVkCisgICAgICAgIHRvIHVzZSByZWZlcmVuY2UuCisgICAgICAg
IChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlkU2VsZWN0T3B0aW9uKTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlk
Q2xvc2VTdWdnZXN0aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXI6OmNsb3NlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlzcGxheVdpdGhBY3RpdmF0aW9uVHlwZSk6IERpdHRvLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rp
b25QaWNrZXIuaDogTWFya2VkIHRoZSBjbGFzcworICAgICAgICBmaW5hbCwgbWFkZSBtb3JlIGZ1
bmN0aW9ucyBwcml2YXRlLCB1c2UgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzLAorICAg
ICAgICByZW5hbWVkIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCB0byBtX2NsaWVudCBzaW5j
ZSB0aGVyZSBpcyBvbmx5IG9uZQorICAgICAgICBjbGllbnQgd2UgYXJlIGRlYWxpbmcgd2l0aCBp
biB0aGlzIGNsYXNzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9ybUVsZW1lbnRzIGNv
bnN0KTogVXNlIGNoaWxkcmVuT2ZUeXBlIGluc3RlYWQKKyAgICAgICAgb2YgYSBoYW5kLXdyaXR0
ZW4gbG9vcC4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9ybUNvbnRy
b2xzIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEFjdGl2ZURhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlcik6IFRha2UgcmVmZXJlbmNlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udGFpbmlu
Z0xpbmtBbmNob3JFbGVtZW50KTogVXNlIGxpbmVhZ2VPZlR5cGUgaW5zdGVhZCBvZiBlbGVtZW50
TGluZWFnZS4KKyAgICAgICAgQWxzbyByZW5hbWVkIHRvIGVtcGhhc2l6ZSB0aGF0IHRoaXMgZnVu
Y3Rpb24gb25seSByZXR1cm5zIEhUTUxBbmNob3JFbGVtZW50IGxpbmtzLgorICAgICAgICAoV2Vi
S2l0OjplbGVtZW50UG9zaXRpb25JbmZvcm1hdGlvbik6IFVwZGF0ZWQgZm9yIG5hbWUgYW5kIHR5
cGUgY2hhbmdlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVt
ZW50KTogRGl0dG8uCisKIDIwMjAtMDItMTUgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFu
QGdtYWlsLmNvbT4KIAogICAgICAgICBbR2VvY2x1ZV0gQXZvaWQgdXNhZ2Ugb2YgcHJvdmlkZXIg
aW4gY2FsbGJhY2tzIGFmdGVyIGl0IGhhcyBiZWVuIGRlc3Ryb3llZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IGNhYzA4NzBkYjUwNjNhYzg5OTQ0NjgzYjY2Y2QwMzBhOTg5NWFiY2Eu
LmY4YjUwMmIxNGYzYThjODcyNjBlMGEyMmNmNjMwM2M4ZGMyNzYxOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMi0xNSAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRvcnMgaW1wbGVt
ZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIERPTS9ET01Eb2N1bWVudC5tbTogQ3V0IGRvd24gb24gaW5jbHVkZXMgYW5k
IHJlLXNvcnRlZCB0aGVtLgorICAgICAgICAqIERPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tOiBE
aXR0by4KKyAgICAgICAgKiBET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbTogRGl0dG8uCisK
IDIwMjAtMDItMTQgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIE1hc2sg
V2ViR0wgc3RyaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZGMzOGQ2YmRmMWUzZTNiNzA4ZmFi
YjYyNGMzYWNkYmY5MWFkNmQ4ZS4uMWMxNDNiM2MwZjBlYWYzMzE3MGQ3NmQ3YjRhMTgyMDZmMmYx
MzY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0zOTAsNyArMzkwLDYgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5o
CiAgICAgZG9tL0VsZW1lbnRDb250ZXh0LmgKICAgICBkb20vRWxlbWVudERhdGEuaAotICAgIGRv
bS9FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKICAgICBkb20vRWxlbWVudElkZW50aWZpZXIu
aAogICAgIGRvbS9FbGVtZW50SXRlcmF0b3IuaAogICAgIGRvbS9FbGVtZW50SXRlcmF0b3JBc3Nl
cnRpb25zLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2MTEwMmE0NTZhMzFkNTIxZjA2MmMxZDA4MWI3ZmJlMzdjZTAwNDlmLi43
YmZhZTM1ODg1ZTdlOWFiZGZiNTQyMjdiZjIxZjVhYWViNTZlYzA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjkxLDcgKzI2
OTEsNiBAQAogCQk5M0QxOTYzMzFENkNBQjgyMDBGQzdFNDcgLyogRXhjZXB0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0QxOTYzMjFENkNBQjgy
MDBGQzdFNDcgLyogRXhjZXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTNENDM3OUYxRDU3QjE1MzAwQUI4NUVBIC8qIEpTRXhlY1N0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RjkzNEQ4
MzExODlGMUVFMDA1MDhENUQgLyogSlNFeGVjU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q0MzdBMDFENTdCMTlBMDBBQjg1RUEgLyog
Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCNTZDOUE4MUM4OTMxMjgwMEM0NTZERiAvKiBDdXN0b21FbGVt
ZW50UmVhY3Rpb25RdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTkzRDQzN0ExMUQ1N0IzRjQwMEFCODVFQSAvKiBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBREUxMUY0QTE4RDgzMTFCMDA3ODk4M0IgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDQz
N0EyMUQ1N0IzRkUwMEFCODVFQSAvKiBVUkxVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2QjlEQ0ExODlERTEwMDAwQkI4NDJDIC8qIFVSTFV0
aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTNENDM3QTMxRDU3QjdFMjAwQUI4NUVBIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDcyNkZFNzE2RDlGMjA0MDAz
QTRFNkQgLyogSlNNZWRpYUxpc3RDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q5RDUzQzBEQTI3RTE4MDA3NzIxNkMgLyogUmFuZ2VC
b3VuZGFyeVBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0Q5RDUzQjBEQTI3RTE4MDA3NzIxNkMgLyogUmFuZ2VCb3VuZGFyeVBvaW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyMjU2LDcg
KzEyMjU1LDYgQEAKIAkJQUREQTk0QkYxOTY4NkY4MDAwNDUzMDI5IC8qIEpTRG9jdW1lbnRDdXN0
b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEb2N1bWVudEN1c3RvbS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRERGMUFENDEyNTdDRDlBMDAwM0E3NTkg
LyogUmVuZGVyU1ZHUGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW5kZXJTVkdQYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURERjFB
RDUxMjU3Q0Q5QTAwMDNBNzU5IC8qIFJlbmRlclNWR1BhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHUGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlBREUxMUY0QTE4RDgzMTFCMDA3ODk4M0IgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFERTE2NzM2MTgxMDUwQzMw
MDQ2M0EyRSAvKiBSZW5kZXJQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVuZGVyUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFERUM3OEY3MThFRTUz
MDgwMDEzMTVDMiAvKiBKU0VsZW1lbnRDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNFbGVtZW50Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUFERkUyQjU0MUJENUY0MTIwMERBQjQ1NyAvKiBSZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VVc2FnZU92
ZXJsYXlDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MDk1LDcgKzI4
MDkzLDYgQEAKIAkJCQkzMTNCQ0UxQjIzNUUzQkRCMDBGQzM5RTUgLyogRWxlbWVudENvbnRleHQu
aCAqLywKIAkJCQlCNUI3QTE2RjE3QzEwODA2MDBFNEFBMEEgLyogRWxlbWVudERhdGEuY3BwICov
LAogCQkJCUI1QjdBMTZFMTdDMTA0ODAwMEU0QUEwQSAvKiBFbGVtZW50RGF0YS5oICovLAotCQkJ
CUFERTExRjRBMThEODMxMUIwMDc4OTgzQiAvKiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgg
Ki8sCiAJCQkJMkQyQkVCMkYyMjM0QTMzNDAwNTU0NENBIC8qIEVsZW1lbnRJZGVudGlmaWVyLmgg
Ki8sCiAJCQkJRTRBRTdDMTUxN0QxQkI5NTAwMDlGQjMxIC8qIEVsZW1lbnRJdGVyYXRvci5oICov
LAogCQkJCUU0MDFDMjc0MTdDRTUzRUMwMEM0MUEzNSAvKiBFbGVtZW50SXRlcmF0b3JBc3NlcnRp
b25zLmggKi8sCkBAIC0yOTc1OSw3ICsyOTc1Niw2IEBACiAJCQkJRTQ2QTJCMUUxN0NBNzZCMTAw
MERCQ0Q4IC8qIEVsZW1lbnRDaGlsZEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTNC
Q0UxQzIzNUUzQkU1MDBGQzM5RTUgLyogRWxlbWVudENvbnRleHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUI1QjdBMTcxMTdDMTBBQzAwMEU0QUEwQSAvKiBFbGVtZW50RGF0YS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJOTNENDM3QTExRDU3QjNGNDAwQUI4NUVBIC8qIEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMkJFQjMxMjIzNEEzMzUwMDU1NDRDQSAvKiBF
bGVtZW50SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBRTdDMTYxN0QxQkI5NTAw
MDlGQjMxIC8qIEVsZW1lbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQwMUMyNzUx
N0NFNTNFQzAwQzQxQTM1IC8qIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCAyMDllYjhlNjU4ZTBiNzM0MThlYzJjZDAwY2Q4MGE0
MTZmYTI5MzNhLi40NThhNDA1N2UyY2ZmZDJmNmY4NWNlODAxY2FmOWQ2MWQyODAyOWY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcApAQCAtMTA0NCw3ICsxMDQ0LDcgQEAgRWxlbWVudCogQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6Om1vdXNlQnV0dG9uTGlzdGVuZXIoTW91c2VCdXR0b25MaXN0ZW5lclJlc3Vs
dEYKIAogICAgIC8vIGNoZWNrIGlmIG91ciBwYXJlbnQgaXMgYSBtb3VzZSBidXR0b24gbGlzdGVu
ZXIKICAgICAvLyBGSVhNRTogRG8gdGhlIGNvbnRpbnVhdGlvbiBzZWFyY2ggbGlrZSBhbmNob3JF
bGVtZW50IGRvZXMKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50TGluZWFnZShpczxF
bGVtZW50Pigqbm9kZSkgPyBkb3duY2FzdDxFbGVtZW50Pihub2RlKSA6IG5vZGUtPnBhcmVudEVs
ZW1lbnQoKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEVsZW1l
bnQ+KGlzPEVsZW1lbnQ+KCpub2RlKSA/IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKSA6ICpub2Rl
LT5wYXJlbnRFbGVtZW50KCkpKSB7CiAgICAgICAgIC8vIElmIHdlJ3ZlIHJlYWNoZWQgdGhlIGJv
ZHkgYW5kIHRoaXMgaXMgbm90IGEgY29udHJvbCBlbGVtZW50LCBkbyBub3QgZXhwb3NlIHByZXNz
IGFjdGlvbiBmb3IgdGhpcyBlbGVtZW50IHVubGVzcyBmaWx0ZXIgaXMgSW5jbHVkZUJvZHlFbGVt
ZW50LgogICAgICAgICAvLyBJdCBjYW4gY2F1c2UgZmFsc2UgcG9zaXRpdmVzLCB3aGVyZSBldmVy
eSBwaWVjZSBvZiB0ZXh0IGlzIGxhYmVsZWQgYXMgYWNjZXB0aW5nIHByZXNzIGFjdGlvbnMuCiAg
ICAgICAgIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUoYm9keVRhZykgJiYgaXNTdGF0aWNUZXh0KCkg
JiYgZmlsdGVyID09IEV4Y2x1ZGVCb2R5RWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4
IDk2ZjMzY2I3MzRhNzA4MzY5YjRmM2JhM2Q1NDg0ODhlNTA0OTU3NzAuLjhhODMwMGQwOTdlMTBm
YzRmMzMwMzczMzQxYzExNGExNzE5YTMwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0qIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMzc1LDIx
ICsyMzc1LDE5IEBAIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNj
ZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdChIVE1MQXJlYUVsCiAgICAgaWYgKCFhcmVhKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9
IG51bGxwdHI7Ci0gICAgZm9yIChFbGVtZW50KiBtYXBQYXJlbnQgPSBhcmVhLT5wYXJlbnRFbGVt
ZW50KCk7IG1hcFBhcmVudDsgbWFwUGFyZW50ID0gbWFwUGFyZW50LT5wYXJlbnRFbGVtZW50KCkp
IHsKLSAgICAgICAgaWYgKGlzPEhUTUxNYXBFbGVtZW50PigqbWFwUGFyZW50KSkgewotICAgICAg
ICAgICAgcGFyZW50ID0gYWNjZXNzaWJpbGl0eVBhcmVudEZvckltYWdlTWFwKGRvd25jYXN0PEhU
TUxNYXBFbGVtZW50PihtYXBQYXJlbnQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfQorICAgIGF1dG8qIG1hcFBhcmVudCA9IGFuY2VzdG9yc09mVHlwZTxIVE1MTWFwRWxl
bWVudD4oKmFyZWEpLmZpcnN0KCk7CisgICAgaWYgKCFtYXBQYXJlbnQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgYXV0byogcGFyZW50ID0gYWNjZXNzaWJpbGl0eVBhcmVudEZvcklt
YWdlTWFwKG1hcFBhcmVudCk7CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIAorCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IHBhcmVudC0+Y2hpbGRy
ZW4oKSkgewogICAgICAgICBpZiAoY2hpbGQtPmVsZW1lbnRSZWN0KCkuY29udGFpbnMocG9pbnQp
KQogICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwogICAgIH0KLSAgICAKKwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKaW5kZXggZmRjNjdmOGFjMTU2YTVh
ZGJiYWE2MTM1NzZiODY4MmFlNjI3MTVhMS4uZmY0NzhmZDIzNjE3OGJhMzliYzIyZGMxOTVhMTQ4
YTU3OTJlMjdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcApAQCAtMzEsNyArMzEsNiBAQAogCiAjaW5j
bHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwu
aCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAy
MDUwNmY4ZWNmYWM2NTNlNTVhZDA0ODFkZGE1NjBmNWZkNzJhNTRkLi40ZTAwOWZlZDZiZDBlMzEx
NTdjNjY0MDljN2IzNWZjYzdlZmYyMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAi
RE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93V2ViRGF0YWJh
c2UuaCIKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAj
aW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKQEAgLTM4LDcgKzM3LDYgQEAKICNpbmNsdWRl
ICJKU0V2ZW50LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSlNI
VE1MQXVkaW9FbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1
ZGUgIkpTSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0lEQkZhY3RvcnkuaCIKICNp
bmNsdWRlICJKU1JlbW90ZURPTVdpbmRvdy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKaW5kZXggMmFmMjc2MTg3NzU3ZTg4Mjg4MzA1NWM5MDRl
NmU4NzMzNGNkNGQyMy4uZTU2YjhmZTIxYWM1NjhmMjIwODU1ZDhhNGUzNWRhMDE0NDg1ODNhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCkBA
IC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5oIgogCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxl
bWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUg
IlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNs
dWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCmlu
ZGV4IDk0NTgyZWY0M2Y2ZjNkNzQyYjcwMDg3Mjk2OWUzZjkzOTVjZGQyNjcuLjViMDk1YWNiZjFj
ZDU0MTMwOGUxYTBmYmYwMzUwMTU5MTkxMDY1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
dXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCkBAIC0yOSwxNCArMjksMTIgQEAKICNpbmNsdWRlICJD
dXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkVsZW1l
bnRUcmF2ZXJzYWwuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJK
U0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJl
ZC5oIgogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50RnJhZ21lbnQuY3BwCmluZGV4IDhmMjFiMjc5MzUwMzc2MTllYjEwM2I5NGNjMjBj
NzJjYmI3MTFhMTguLjJhMjVhYjJlNWFhNzY3OTY1MDgzNzBhZWZhMjkxZTcyYzdjMWM2NzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAK
ICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgot
I2luY2x1ZGUgIkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKQEAgLTEwMyw3ICsxMDMsNyBA
QCBFbGVtZW50KiBEb2N1bWVudEZyYWdtZW50OjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9tU3Ry
aW5nJiBpZCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRyZWVTY29wZSgpLmdldEVsZW1lbnRCeUlk
KGlkKTsKIAogICAgIC8vIE90aGVyd2lzZSwgZmFsbCBiYWNrIHRvIGl0ZXJhdGluZyBhbGwgb2Yg
dGhlIGVsZW1lbnQgZGVzY2VuZGFudHMuCi0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVu
dERlc2NlbmRhbnRzKCp0aGlzKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRh
bnRzT2ZUeXBlPEVsZW1lbnQ+KCp0aGlzKSkgewogICAgICAgICBpZiAoZWxlbWVudC5nZXRJZEF0
dHJpYnV0ZSgpID09IGlkKQogICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RWxlbWVudCo+
KCZlbGVtZW50KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggODcxOGU2ZDg2YWQ3
ZmU1MDhiMTM4NzA2YTY1ZDI5NWFkZDQzOWM1Mi4uMDExN2EzNjZiYzcyNTc5NWE1NmZlYjk5YWUx
ZmUxNjI3ODM4ZWViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNCw3ICs0LDcgQEAKICAq
ICAgICAgICAgICAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogICAgICAg
ICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQogICogICAgICAgICAg
IChDKSAyMDA3IERhdmlkIFNtaXRoIChjYXRmaXNoLm1hbkBnbWFpbC5jb20pCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAg
ICAgICAgICAgKEMpIDIwMDcgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9yZykKICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCkBAIC02MCw3ICs2MCw2IEBACiAjaW5jbHVkZSAiR2V0QW5pbWF0aW9uc09wdGlvbnMuaCIK
ICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVu
dC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEh0bWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTExhYmVsRWxl
bWVudC5oIgpAQCAtMzQwMCwyNiArMzM5OSwxNCBAQCB1bnNpZ25lZCBFbGVtZW50OjpyYXJlRGF0
YUNoaWxkSW5kZXgoKSBjb25zdAogCiBBdG9tU3RyaW5nIEVsZW1lbnQ6OmNvbXB1dGVJbmhlcml0
ZWRMYW5ndWFnZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGNvbnN0IEVsZW1lbnREYXRhKiBlbGVtZW50
RGF0YSA9IHRoaXMtPmVsZW1lbnREYXRhKCkpIHsKLSAgICAgICAgaWYgKGNvbnN0IEF0dHJpYnV0
ZSogYXR0cmlidXRlID0gZWxlbWVudERhdGEtPmZpbmRMYW5ndWFnZUF0dHJpYnV0ZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFsdWUoKTsKLSAgICB9Ci0KICAgICAvLyBUaGUg
bGFuZ3VhZ2UgcHJvcGVydHkgaXMgaW5oZXJpdGVkLCBzbyB3ZSBpdGVyYXRlIG92ZXIgdGhlIHBh
cmVudHMgdG8gZmluZCB0aGUgZmlyc3QgbGFuZ3VhZ2UuCi0gICAgY29uc3QgTm9kZSogY3VycmVu
dE5vZGUgPSB0aGlzOwotICAgIHdoaWxlICgoY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS0+cGFy
ZW50Tm9kZSgpKSkgewotICAgICAgICBpZiAoaXM8RWxlbWVudD4oKmN1cnJlbnROb2RlKSkgewot
ICAgICAgICAgICAgaWYgKGNvbnN0IEVsZW1lbnREYXRhKiBlbGVtZW50RGF0YSA9IGRvd25jYXN0
PEVsZW1lbnQ+KCpjdXJyZW50Tm9kZSkuZWxlbWVudERhdGEoKSkgewotICAgICAgICAgICAgICAg
IGlmIChjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnREYXRhLT5maW5kTGFuZ3Vh
Z2VBdHRyaWJ1dGUoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFs
dWUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChpczxEb2N1bWVudD4oKmN1
cnJlbnROb2RlKSkgewotICAgICAgICAgICAgLy8gY2hlY2tpbmcgdGhlIE1JTUUgY29udGVudC1s
YW5ndWFnZQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50PigqY3VycmVudE5v
ZGUpLmNvbnRlbnRMYW5ndWFnZSgpOworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVhZ2VP
ZlR5cGU8RWxlbWVudD4oKnRoaXMpKSB7CisgICAgICAgIGlmIChhdXRvKiBlbGVtZW50RGF0YSA9
IGVsZW1lbnQuZWxlbWVudERhdGEoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGF0dHJpYnV0
ZSA9IGVsZW1lbnREYXRhLT5maW5kTGFuZ3VhZ2VBdHRyaWJ1dGUoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gYXR0cmlidXRlLT52YWx1ZSgpOwogICAgICAgICB9CiAgICAgfQotCi0gICAgcmV0
dXJuIG51bGxBdG9tKCk7CisgICAgcmV0dXJuIGRvY3VtZW50KCkuY29udGVudExhbmd1YWdlKCk7
CiB9CiAKIExvY2FsZSYgRWxlbWVudDo6bG9jYWxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgKaW5kZXggNGI2MmQzOGIzOGZkMzg0OWM3Mzdh
Y2E4N2VmODQ1MjdmODM3NTVmMC4uODA1MTQzNjc0ZDYwODFjNDc0MjA2MTg5MjQ4NGVmYzkxMWUz
ZDQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjksNiArMjksMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0ZW1wbGF0ZTx0eXBlbmFt
ZT4gY2xhc3MgRWxlbWVudEFuY2VzdG9yUmFuZ2U7CisKKy8vIFJhbmdlIGZvciBpdGVyYXRpbmcg
YW4gZWxlbWVudCBhbmQgaXRzIGFuY2VzdG9ycy4KK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPiBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShFbGVt
ZW50JiBmaXJzdCk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudEFuY2Vz
dG9yUmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoY29uc3QgRWxlbWVudCYg
Zmlyc3QpOworCisvLyBSYW5nZSBmb3IgaXRlcmF0aW5nIGEgbm9kZSdzIGVsZW1lbnQgYW5jZXN0
b3JzLgordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdl
PEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNPZlR5cGUoTm9kZSYgZGVzY2VuZGFudCk7Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29uc3QgRWxlbWVu
dFR5cGU+IGFuY2VzdG9yc09mVHlwZShjb25zdCBOb2RlJiBkZXNjZW5kYW50KTsKKwogdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogY2xhc3MgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3Ig
OiBwdWJsaWMgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiB7CiBwdWJsaWM6CkBAIC0zOCw0
NiArNDgsMTcgQEAgcHVibGljOgogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotY2xhc3MgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50Q29u
c3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gewotcHVibGljOgotICAgIEVsZW1lbnRBbmNlc3RvckNv
bnN0SXRlcmF0b3IoKTsKLSAgICBleHBsaWNpdCBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9y
KGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKLSAgICBFbGVtZW50QW5jZXN0b3JDb25zdEl0
ZXJhdG9yJiBvcGVyYXRvcisrKCk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+Ci1jbGFzcyBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXIgeworY2xhc3MgRWxlbWVu
dEFuY2VzdG9yUmFuZ2UgewogcHVibGljOgotICAgIGV4cGxpY2l0IEVsZW1lbnRBbmNlc3Rvckl0
ZXJhdG9yQWRhcHRlcihFbGVtZW50VHlwZSogZmlyc3QpOwotICAgIEVsZW1lbnRBbmNlc3Rvckl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpOwotICAgIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiBlbmQoKTsKLSAgICBFbGVtZW50VHlwZSogZmlyc3QoKSB7IHJldHVybiBt
X2ZpcnN0OyB9CisgICAgZXhwbGljaXQgRWxlbWVudEFuY2VzdG9yUmFuZ2UoRWxlbWVudFR5cGUq
IGZpcnN0KTsKKyAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4o
KSBjb25zdDsKKyAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCkg
Y29uc3Q7CisgICAgRWxlbWVudFR5cGUqIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdDsg
fQogCiBwcml2YXRlOgotICAgIEVsZW1lbnRUeXBlKiBtX2ZpcnN0OworICAgIEVsZW1lbnRUeXBl
KiBjb25zdCBtX2ZpcnN0OwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
Y2xhc3MgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXIgewotcHVibGljOgotICAg
IGV4cGxpY2l0IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IEVsZW1l
bnRUeXBlKiBmaXJzdCk7Ci0gICAgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT4gYmVnaW4oKSBjb25zdDsKLSAgICBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPiBlbmQoKSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50VHlwZSogZmlyc3QoKSBj
b25zdCB7IHJldHVybiBtX2ZpcnN0OyB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgRWxlbWVudFR5
cGUqIG1fZmlyc3Q7Ci19OwotCi1FbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dD4gZWxlbWVudExpbmVhZ2UoRWxlbWVudCogZmlyc3QpOwotRWxlbWVudEFuY2VzdG9yQ29uc3RJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudExpbmVhZ2UoY29uc3QgRWxlbWVudCogZmly
c3QpOwotRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRBbmNl
c3RvcnMoRWxlbWVudCogZGVzY2VuZGFudCk7Ci1FbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9y
QWRhcHRlcjxFbGVtZW50PiBlbGVtZW50QW5jZXN0b3JzKGNvbnN0IEVsZW1lbnQqIGRlc2NlbmRh
bnQpOwotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JJdGVy
YXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoRWxlbWVudCYgZmlyc3QpOwot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShjb25zdCBFbGVtZW50JiBmaXJz
dCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZUeXBlKE5vZGUmIGRlc2NlbmRhbnQp
OwotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JDb25zdEl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZUeXBlKGNvbnN0IE5vZGUmIGRl
c2NlbmRhbnQpOwotCiAvLyBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcgogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+CkBAIC05NSwxMTkgKzc2LDcwIEBAIGlubGluZSBFbGVtZW50QW5j
ZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yKEVsZW1l
bnRUeXBlCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudEFu
Y2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVt
ZW50VHlwZT46Om9wZXJhdG9yKysoKQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50
QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+Ojp0cmF2ZXJzZUFuY2VzdG9yKCkpOwotfQotCi0vLyBFbGVtZW50QW5jZXN0b3JDb25zdEl0
ZXJhdG9yCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudEFuY2VzdG9yQ29uc3RJ
dGVyYXRvcigpCi0gICAgOiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obnVsbHB0
cikKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1l
bnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50QW5jZXN0b3JDb25z
dEl0ZXJhdG9yKGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+KG51bGxwdHIsIGN1cnJlbnQpCi17Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT46Om9wZXJhdG9yKysoKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50QW5jZXN0
b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6dHJhdmVyc2VBbmNlc3RvcigpKTsKKyAgICBFbGVtZW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+Ojp0cmF2ZXJzZUFuY2VzdG9yKCk7CisgICAgcmV0dXJuICp0aGlzOwogfQogCi0vLyBF
bGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXIKKy8vIEVsZW1lbnRBbmNlc3RvclJhbmdlCiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0
ZXIoRWxlbWVudFR5cGUqIGZpcnN0KQoraW5saW5lIEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1l
bnRUeXBlPjo6RWxlbWVudEFuY2VzdG9yUmFuZ2UoRWxlbWVudFR5cGUqIGZpcnN0KQogICAgIDog
bV9maXJzdChmaXJzdCkKIHsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0
b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbigpCitpbmxpbmUgRWxlbWVudEFu
Y2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRU
eXBlPjo6YmVnaW4oKSBjb25zdAogewogICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JJdGVyYXRv
cjxFbGVtZW50VHlwZT4obV9maXJzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVu
dEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkKK2lubGluZSBFbGVt
ZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8RWxl
bWVudFR5cGU+OjplbmQoKSBjb25zdAogewogICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JJdGVy
YXRvcjxFbGVtZW50VHlwZT4oKTsKIH0KIAotLy8gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRv
ckFkYXB0ZXIKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1l
bnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6RWxlbWVudEFuY2Vz
dG9yQ29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgRWxlbWVudFR5cGUqIGZpcnN0KQotICAgIDog
bV9maXJzdChmaXJzdCkKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRB
bmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4oKSBjb25zdAot
ewotICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiht
X2ZpcnN0KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVs
ZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvckNv
bnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4oKTsKLX0KLQogLy8g
U3RhbmRhbG9uZSBmdW5jdGlvbnMKIAotaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRh
cHRlcjxFbGVtZW50PiBlbGVtZW50TGluZWFnZShFbGVtZW50KiBmaXJzdCkKLXsKLSAgICByZXR1
cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+KGZpcnN0KTsKLX0KLQot
aW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1l
bnRMaW5lYWdlKGNvbnN0IEVsZW1lbnQqIGZpcnN0KQotewotICAgIHJldHVybiBFbGVtZW50QW5j
ZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PihmaXJzdCk7Ci19Ci0KLWlubGluZSBF
bGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudEFuY2VzdG9ycyhF
bGVtZW50KiBkZXNjZW5kYW50KQordGVtcGxhdGU8PiBpbmxpbmUgRWxlbWVudEFuY2VzdG9yUmFu
Z2U8RWxlbWVudD4gbGluZWFnZU9mVHlwZTxFbGVtZW50PihFbGVtZW50JiBmaXJzdCkKIHsKLSAg
ICByZXR1cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+KGRlc2NlbmRh
bnQtPnBhcmVudEVsZW1lbnQoKSk7Ci19Ci0KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50QW5jZXN0b3JzKGNvbnN0IEVsZW1lbnQqIGRl
c2NlbmRhbnQpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFw
dGVyPEVsZW1lbnQ+KGRlc2NlbmRhbnQtPnBhcmVudEVsZW1lbnQoKSk7CisgICAgcmV0dXJuIEVs
ZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnQ+KCZmaXJzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8
RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoRWxlbWVudCYgZmlyc3QpCitpbmxpbmUgRWxlbWVu
dEFuY2VzdG9yUmFuZ2U8RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoRWxlbWVudCYgZmlyc3Qp
CiB7CiAgICAgaWYgKGlzPEVsZW1lbnRUeXBlPihmaXJzdCkpCi0gICAgICAgIHJldHVybiBFbGVt
ZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KHN0YXRpY19jYXN0PEVsZW1l
bnRUeXBlKj4oJmZpcnN0KSk7CisgICAgICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JSYW5nZTxF
bGVtZW50VHlwZT4oJmRvd25jYXN0PEVsZW1lbnRUeXBlPihmaXJzdCkpOwogICAgIHJldHVybiBh
bmNlc3RvcnNPZlR5cGU8RWxlbWVudFR5cGU+KGZpcnN0KTsKIH0KIAordGVtcGxhdGU8PiBpbmxp
bmUgRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29uc3QgRWxlbWVudD4gbGluZWFnZU9mVHlwZTxFbGVt
ZW50Pihjb25zdCBFbGVtZW50JiBmaXJzdCkKK3sKKyAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9y
UmFuZ2U8Y29uc3QgRWxlbWVudD4oJmZpcnN0KTsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVs
ZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKGNvbnN0IEVsZW1lbnQmIGZpcnN0KQoraW5saW5lIEVs
ZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKGNvbnN0
IEVsZW1lbnQmIGZpcnN0KQogewogICAgIGlmIChpczxFbGVtZW50VHlwZT4oZmlyc3QpKQotICAg
ICAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5
cGU+KHN0YXRpY19jYXN0PGNvbnN0IEVsZW1lbnRUeXBlKj4oJmZpcnN0KSk7CisgICAgICAgIHJl
dHVybiBFbGVtZW50QW5jZXN0b3JSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4oJmRvd25jYXN0PEVs
ZW1lbnRUeXBlPihmaXJzdCkpOwogICAgIHJldHVybiBhbmNlc3RvcnNPZlR5cGU8RWxlbWVudFR5
cGU+KGZpcnN0KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5l
IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZU
eXBlKE5vZGUmIGRlc2NlbmRhbnQpCitpbmxpbmUgRWxlbWVudEFuY2VzdG9yUmFuZ2U8RWxlbWVu
dFR5cGU+IGFuY2VzdG9yc09mVHlwZShOb2RlJiBkZXNjZW5kYW50KQogewogICAgIEVsZW1lbnRU
eXBlKiBmaXJzdCA9IGZpbmRFbGVtZW50QW5jZXN0b3JPZlR5cGU8RWxlbWVudFR5cGU+KGRlc2Nl
bmRhbnQpOwotICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dFR5cGU+KGZpcnN0KTsKKyAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8RWxlbWVudFR5
cGU+KGZpcnN0KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5l
IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBhbmNlc3Rv
cnNPZlR5cGUoY29uc3QgTm9kZSYgZGVzY2VuZGFudCkKK2lubGluZSBFbGVtZW50QW5jZXN0b3JS
YW5nZTxjb25zdCBFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZUeXBlKGNvbnN0IE5vZGUmIGRlc2Nl
bmRhbnQpCiB7CiAgICAgY29uc3QgRWxlbWVudFR5cGUqIGZpcnN0ID0gZmluZEVsZW1lbnRBbmNl
c3Rvck9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oZGVzY2VuZGFudCk7Ci0gICAgcmV0dXJuIEVs
ZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihmaXJzdCk7Cisg
ICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPihmaXJzdCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmgKaW5kZXggNDhlM2IxYTYxOGQy
ZmUwYTI4NzY3YjM3MzFmMmZhZGY5NzNlZmJjZS4uZDFkZGIwZjczNzUwMTU2NDU5N2IwYTAyMzRl
MmI0NjIwMWQ1ZGU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBbmRU
ZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRB
bmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmgKQEAgLTM2LDggKzM2LDggQEAgY2xhc3MgRWxlbWVu
dEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgewogcHVibGljOgogICAgIEVsZW1lbnRBbmRUZXh0
RGVzY2VuZGFudEl0ZXJhdG9yKCk7CiAgICAgZW51bSBGaXJzdENoaWxkVGFnIHsgRmlyc3RDaGls
ZCB9OwotICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKENvbnRhaW5lck5vZGUm
IHJvb3QsIEZpcnN0Q2hpbGRUYWcpOwotICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJh
dG9yKENvbnRhaW5lck5vZGUmIHJvb3QsIE5vZGUqIGN1cnJlbnQpOworICAgIEVsZW1lbnRBbmRU
ZXh0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QsIEZpcnN0Q2hp
bGRUYWcpOworICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRh
aW5lck5vZGUmIHJvb3QsIE5vZGUqIGN1cnJlbnQpOwogCiAgICAgRWxlbWVudEFuZFRleHREZXNj
ZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IHJldHVybiB0cmF2ZXJzZU5leHQoKTsgfQog
CkBAIC02Myw5ICs2Myw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBp
c0VsZW1lbnRPclRleHQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8RWxlbWVudD4obm9k
ZSkgfHwgaXM8VGV4dD4obm9kZSk7IH0KLSAgICBzdGF0aWMgTm9kZSogZmlyc3RDaGlsZChOb2Rl
Jik7Ci0gICAgc3RhdGljIE5vZGUqIG5leHRTaWJsaW5nKE5vZGUmKTsKLSAgICBzdGF0aWMgTm9k
ZSogcHJldmlvdXNTaWJsaW5nKE5vZGUmKTsKKyAgICBzdGF0aWMgTm9kZSogZmlyc3RDaGlsZChj
b25zdCBOb2RlJik7CisgICAgc3RhdGljIE5vZGUqIG5leHRTaWJsaW5nKGNvbnN0IE5vZGUmKTsK
KyAgICBzdGF0aWMgTm9kZSogcHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUmKTsKIAogICAgIHZv
aWQgcG9wQW5jZXN0b3JTaWJsaW5nU3RhY2soKTsKIApAQCAtODIsMTcgKzgyLDE3IEBAIHByaXZh
dGU6CiAjZW5kaWYKIH07CiAKLWNsYXNzIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9y
QWRhcHRlciB7CitjbGFzcyBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZSB7CiBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENv
bnRhaW5lck5vZGUmIHJvb3QpOwotICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9y
IGJlZ2luKCk7Ci0gICAgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgZW5kKCk7Cisg
ICAgZXhwbGljaXQgRWxlbWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVy
Tm9kZSYgcm9vdCk7CisgICAgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgYmVnaW4o
KSBjb25zdDsKKyAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBlbmQoKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICBDb250YWluZXJOb2RlJiBtX3Jvb3Q7CisgICAgY29uc3QgQ29u
dGFpbmVyTm9kZSYgbV9yb290OwogfTsKIAotRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0
b3JBZGFwdGVyIGVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudHMoQ29udGFpbmVyTm9kZSYpOworRWxl
bWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2UgZWxlbWVudEFuZFRleHREZXNjZW5kYW50cyhDb250
YWluZXJOb2RlJik7CiAKIC8vIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yCiAKQEAg
LTEwMSw3ICsxMDEsNyBAQCBpbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6
OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKCkKIHsKIH0KIAotaW5saW5lIEVsZW1l
bnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVy
YXRvcihDb250YWluZXJOb2RlJiByb290LCBGaXJzdENoaWxkVGFnKQoraW5saW5lIEVsZW1lbnRB
bmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRv
cihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBGaXJzdENoaWxkVGFnKQogICAgIDogbV9jdXJy
ZW50KGZpcnN0Q2hpbGQocm9vdCkpCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAsIG1fYXNzZXJ0
aW9ucyhtX2N1cnJlbnQpCkBAIC0xMTMsNyArMTEzLDcgQEAgaW5saW5lIEVsZW1lbnRBbmRUZXh0
RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihDb250
YWkKICAgICBtX2RlcHRoID0gMTsKIH0KIAotaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFu
dEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihDb250YWluZXJOb2Rl
JiByb290LCBOb2RlKiBjdXJyZW50KQoraW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0
ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJO
b2RlJiByb290LCBOb2RlKiBjdXJyZW50KQogICAgIDogbV9jdXJyZW50KGN1cnJlbnQpCiAjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICAsIG1fYXNzZXJ0aW9ucyhtX2N1cnJlbnQpCkBAIC0xNDgsNyAr
MTQ4LDcgQEAgaW5saW5lIHZvaWQgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OmRy
b3BBc3NlcnRpb25zKCkKICNlbmRpZgogfQogCi1pbmxpbmUgTm9kZSogRWxlbWVudEFuZFRleHRE
ZXNjZW5kYW50SXRlcmF0b3I6OmZpcnN0Q2hpbGQoTm9kZSYgY3VycmVudCkKK2lubGluZSBOb2Rl
KiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6Zmlyc3RDaGlsZChjb25zdCBOb2Rl
JiBjdXJyZW50KQogewogICAgIGF1dG8qIG5vZGUgPSBjdXJyZW50LmZpcnN0Q2hpbGQoKTsKICAg
ICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T3JUZXh0KCpub2RlKSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBpbmxpbmUgTm9kZSogRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OmZpcnN0
Q2hpbGQoTm9kZSYgY3VycmVudCkKICAgICByZXR1cm4gbm9kZTsKIH0KIAotaW5saW5lIE5vZGUq
IEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpuZXh0U2libGluZyhOb2RlJiBjdXJy
ZW50KQoraW5saW5lIE5vZGUqIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpuZXh0
U2libGluZyhjb25zdCBOb2RlJiBjdXJyZW50KQogewogICAgIGF1dG8qIG5vZGUgPSBjdXJyZW50
Lm5leHRTaWJsaW5nKCk7CiAgICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9yVGV4dCgqbm9k
ZSkpCkBAIC0xNjQsNyArMTY0LDcgQEAgaW5saW5lIE5vZGUqIEVsZW1lbnRBbmRUZXh0RGVzY2Vu
ZGFudEl0ZXJhdG9yOjpuZXh0U2libGluZyhOb2RlJiBjdXJyZW50KQogICAgIHJldHVybiBub2Rl
OwogfQogCi1pbmxpbmUgTm9kZSogRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OnBy
ZXZpb3VzU2libGluZyhOb2RlJiBjdXJyZW50KQoraW5saW5lIE5vZGUqIEVsZW1lbnRBbmRUZXh0
RGVzY2VuZGFudEl0ZXJhdG9yOjpwcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSYgY3VycmVudCkK
IHsKICAgICBhdXRvKiBub2RlID0gY3VycmVudC5wcmV2aW91c1NpYmxpbmcoKTsKICAgICB3aGls
ZSAobm9kZSAmJiAhaXNFbGVtZW50T3JUZXh0KCpub2RlKSkKQEAgLTI5NCwyOCArMjk0LDI4IEBA
IGlubGluZSBib29sIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvciE9
KGNvbnN0IEVsZW1lbnRBbmRUZXh0RGVzCiAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwog
fQogCi0vLyBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIKKy8vIEVsZW1l
bnRBbmRUZXh0RGVzY2VuZGFudFJhbmdlCiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRh
bnRJdGVyYXRvckFkYXB0ZXI6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRl
cihDb250YWluZXJOb2RlJiByb290KQoraW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudFJh
bmdlOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZShjb25zdCBDb250YWluZXJOb2RlJiBy
b290KQogICAgIDogbV9yb290KHJvb3QpCiB7CiB9CiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERl
c2NlbmRhbnRJdGVyYXRvciBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI6
OmJlZ2luKCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBFbGVtZW50
QW5kVGV4dERlc2NlbmRhbnRSYW5nZTo6YmVnaW4oKSBjb25zdAogewogICAgIHJldHVybiBFbGVt
ZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihtX3Jvb3QsIEVsZW1lbnRBbmRUZXh0RGVzY2Vu
ZGFudEl0ZXJhdG9yOjpGaXJzdENoaWxkKTsKIH0KIAotaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVz
Y2VuZGFudEl0ZXJhdG9yIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjo6
ZW5kKCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBFbGVtZW50QW5k
VGV4dERlc2NlbmRhbnRSYW5nZTo6ZW5kKCkgY29uc3QKIHsKICAgICByZXR1cm4geyB9OwogfQog
CiAvLyBTdGFuZGFsb25lIGZ1bmN0aW9ucwogCi1pbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5k
YW50SXRlcmF0b3JBZGFwdGVyIGVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudHMoQ29udGFpbmVyTm9k
ZSYgcm9vdCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZSBlbGVtZW50QW5k
VGV4dERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUmIHJvb3QpCiB7Ci0gICAgcmV0dXJuIEVsZW1l
bnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcihyb290KTsKKyAgICByZXR1cm4gRWxl
bWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2Uocm9vdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0ZXJhdG9yLmgKaW5kZXggOGUz
OGZiNTAzMmE4MjM3NzZlMmE3YmNhM2FjMjU4Y2IxNTA2YzQwMC4uMTNiOGMwMThkZDRmMThlMWY5
Nzg5M2M3NWIwYTM1ZTk0Y2JmOWJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRDaGlsZEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGls
ZEl0ZXJhdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjksMTUgKzI5LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordGVt
cGxhdGU8dHlwZW5hbWU+IGNsYXNzIEVsZW1lbnRDaGlsZFJhbmdlOworCisvLyBSYW5nZSBmb3Ig
aXRlcmF0aW5nIHRocm91Z2ggY2hpbGQgZWxlbWVudHMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+IEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShD
b250YWluZXJOb2RlJik7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRD
aGlsZFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShjb25zdCBDb250YWlu
ZXJOb2RlJik7CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGNsYXNzIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gewog
cHVibGljOgotICAgIHR5cGVkZWYgRWxlbWVudFR5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVm
IHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiBFbGVtZW50VHlwZSogcG9p
bnRlcjsKLSAgICB0eXBlZGVmIEVsZW1lbnRUeXBlJiByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBz
dGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwotCiAgICAgRWxlbWVu
dENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKICAgICBFbGVtZW50
Q2hpbGRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQsIEVsZW1lbnRUeXBlKiBj
dXJyZW50KTsKICAgICBFbGVtZW50Q2hpbGRJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwpAQCAtNDUs
NTUgKzQ1LDIxIEBAIHB1YmxpYzoKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWNsYXNzIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNvbnN0IEVsZW1l
bnRUeXBlIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBl
OwotICAgIHR5cGVkZWYgY29uc3QgRWxlbWVudFR5cGUqIHBvaW50ZXI7Ci0gICAgdHlwZWRlZiBj
b25zdCBFbGVtZW50VHlwZSYgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgc3RkOjpmb3J3YXJkX2l0
ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLQotICAgIEVsZW1lbnRDaGlsZENvbnN0SXRl
cmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKLSAgICBFbGVtZW50Q2hpbGRDb25z
dEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCwgY29uc3QgRWxlbWVudFR5cGUq
IGN1cnJlbnQpOwotICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsK
LSAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Ci19OwotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBFbGVtZW50Q2hpbGRJdGVyYXRvckFk
YXB0ZXIgewotcHVibGljOgotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcihDb250YWlu
ZXJOb2RlJiBwYXJlbnQpOwotCi0gICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+
IGJlZ2luKCk7Ci0gICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpOwot
ICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbkF0KEVsZW1lbnRUeXBl
Jik7Ci0KLSAgICBFbGVtZW50VHlwZSogZmlyc3QoKTsKLSAgICBFbGVtZW50VHlwZSogbGFzdCgp
OwotCi1wcml2YXRlOgotICAgIENvbnRhaW5lck5vZGUmIG1fcGFyZW50OwotfTsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRv
ckFkYXB0ZXIgeworY2xhc3MgRWxlbWVudENoaWxkUmFuZ2UgewogcHVibGljOgotICAgIEVsZW1l
bnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCk7
CisgICAgRWxlbWVudENoaWxkUmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKIAot
ICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7
Ci0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCkgY29uc3Q7
Ci0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW5BdChjb25z
dCBFbGVtZW50VHlwZSYpIGNvbnN0OworICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPiBiZWdpbigpIGNvbnN0OworICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBl
PiBlbmQoKSBjb25zdDsKKyAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVn
aW5BdChFbGVtZW50VHlwZSYpIGNvbnN0OwogCi0gICAgY29uc3QgRWxlbWVudFR5cGUqIGZpcnN0
KCkgY29uc3Q7Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIGxhc3QoKSBjb25zdDsKKyAgICBFbGVt
ZW50VHlwZSogZmlyc3QoKSBjb25zdDsKKyAgICBFbGVtZW50VHlwZSogbGFzdCgpIGNvbnN0Owog
CiBwcml2YXRlOgogICAgIGNvbnN0IENvbnRhaW5lck5vZGUmIG1fcGFyZW50OwogfTsKIAotdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8
RWxlbWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKENvbnRhaW5lck5vZGUmKTsKLXRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUmKTsKLQogLy8gRWxl
bWVudENoaWxkSXRlcmF0b3IKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgpAQCAt
MTExLDEzMiArNzcsNjggQEAgaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBl
Pjo6RWxlbWVudENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm8KIHRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4mIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItLSgpCiB7Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+
KEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKCkp
OworICAgIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXNTaWJs
aW5nKCk7CisgICAgcmV0dXJuICp0aGlzOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+CiBpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50
Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRl
cmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkpOworICAgIEVsZW1lbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxpbmcoKTsKKyAgICByZXR1cm4g
KnRoaXM7CiB9CiAKLS8vIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IKKy8vIEVsZW1lbnRDaGls
ZFJhbmdlCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENoaWxkQ29uc3RJdGVyYXRv
cihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpCi0gICAgOiBFbGVtZW50Q29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT4oJnBhcmVudCkKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpF
bGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCwgY29u
c3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpCi0gICAgOiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT4oJnBhcmVudCwgY3VycmVudCkKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+
JiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItLSgpCi17
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+Jj4oRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZp
b3VzU2libGluZygpKTsKLX0KLQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDaGls
ZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKLXsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVt
ZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxpbmcoKSk7Ci19
Ci0KLS8vIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPjo6RWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUmIHBhcmVudCkK
K2lubGluZSBFbGVtZW50Q2hpbGRSYW5nZTxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZFJhbmdl
KGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCkKICAgICA6IG1fcGFyZW50KHBhcmVudCkKIHsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGls
ZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dFR5cGU+OjpiZWdpbigpCitpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+
IEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPjo6YmVnaW4oKSBjb25zdAogewogICAgIHJl
dHVybiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9wYXJlbnQsIFRyYXZlcnNh
bDxFbGVtZW50VHlwZT46OmZpcnN0Q2hpbGQobV9wYXJlbnQpKTsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjplbmQoKQoraW5s
aW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRSYW5nZTxF
bGVtZW50VHlwZT46OmVuZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPihtX3BhcmVudCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWlubGluZSBFbGVtZW50VHlwZSogRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVy
PEVsZW1lbnRUeXBlPjo6Zmlyc3QoKQoraW5saW5lIEVsZW1lbnRUeXBlKiBFbGVtZW50Q2hpbGRS
YW5nZTxFbGVtZW50VHlwZT46OmZpcnN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gVHJhdmVyc2Fs
PEVsZW1lbnRUeXBlPjo6Zmlyc3RDaGlsZChtX3BhcmVudCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50VHlwZSogRWxlbWVudENoaWxkSXRlcmF0
b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6bGFzdCgpCitpbmxpbmUgRWxlbWVudFR5cGUqIEVsZW1l
bnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPjo6bGFzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFRy
YXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RDaGlsZChtX3BhcmVudCk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVt
ZW50VHlwZT4gRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW5B
dChFbGVtZW50VHlwZSYgY2hpbGQpCitpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVu
dFR5cGU+IEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPjo6YmVnaW5BdChFbGVtZW50VHlw
ZSYgY2hpbGQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGNoaWxkLnBhcmVudE5vZGUoKSA9PSAmbV9w
YXJlbnQpOwogICAgIHJldHVybiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9w
YXJlbnQsICZjaGlsZCk7CiB9CiAKLS8vIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVy
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRD
b25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZENvbnN0SXRlcmF0
b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCkKLSAgICA6IG1fcGFyZW50KHBh
cmVudCkKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVs
ZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZENvbnN0SXRl
cmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4oKSBjb25zdAotewotICAgIHJldHVybiBF
bGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3BhcmVudCwgVHJhdmVyc2Fs
PEVsZW1lbnRUeXBlPjo6Zmlyc3RDaGlsZChtX3BhcmVudCkpOwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT4gRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+Ojpl
bmQoKSBjb25zdAotewotICAgIHJldHVybiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPihtX3BhcmVudCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWlubGluZSBjb25zdCBFbGVtZW50VHlwZSogRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0
ZXI8RWxlbWVudFR5cGU+OjpmaXJzdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFRyYXZlcnNhbDxF
bGVtZW50VHlwZT46OmZpcnN0Q2hpbGQobV9wYXJlbnQpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgY29uc3QgRWxlbWVudFR5cGUqIEVsZW1lbnRDaGlsZENv
bnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6bGFzdCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RDaGlsZChtX3BhcmVudCk7Ci19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46OmJlZ2luQXQoY29uc3QgRWxlbWVudFR5cGUmIGNoaWxkKSBjb25zdAotewotICAg
IEFTU0VSVChjaGlsZC5wYXJlbnROb2RlKCkgPT0gJm1fcGFyZW50KTsKLSAgICByZXR1cm4gRWxl
bWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9wYXJlbnQsICZjaGlsZCk7Ci19
Ci0KIC8vIFN0YW5kYWxvbmUgZnVuY3Rpb25zCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGNo
aWxkcmVuT2ZUeXBlKENvbnRhaW5lck5vZGUmIHBhcmVudCkKK2lubGluZSBFbGVtZW50Q2hpbGRS
YW5nZTxFbGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoQ29udGFpbmVyTm9kZSYgcGFyZW50KQog
ewotICAgIHJldHVybiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KHBh
cmVudCk7CisgICAgcmV0dXJuIEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPihwYXJlbnQp
OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENo
aWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKGNvbnN0
IENvbnRhaW5lck5vZGUmIHBhcmVudCkKK2lubGluZSBFbGVtZW50Q2hpbGRSYW5nZTxjb25zdCBF
bGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KQog
ewotICAgIHJldHVybiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlw
ZT4ocGFyZW50KTsKKyAgICByZXR1cm4gRWxlbWVudENoaWxkUmFuZ2U8Y29uc3QgRWxlbWVudFR5
cGU+KHBhcmVudCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4ZGJkYjk5YTZkZGU5NjQ2ZGZiNDE3NDYxMjk5MThjNzM1ZWFlNDk5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNjYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnRJdGVy
YXRvckFzc2VydGlvbnMuaCIKLSNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCi0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IgewotcHVibGljOgotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IoKTsKLSAgICBleHBsaWNpdCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKEVsZW1lbnQqIGN1
cnJlbnQpOwotCi0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwot
ICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsKLQotICAgIEVsZW1l
bnQmIG9wZXJhdG9yKigpOwotICAgIEVsZW1lbnQqIG9wZXJhdG9yLT4oKTsKLQotICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG90
aGVyKSBjb25zdDsKLQotICAgIHZvaWQgZHJvcEFzc2VydGlvbnMoKTsKLQotcHJpdmF0ZToKLSAg
ICBFbGVtZW50KiBtX2N1cnJlbnQ7Ci0gICAgVmVjdG9yPEVsZW1lbnQqLCAxNj4gbV9hbmNlc3Rv
clNpYmxpbmdTdGFjazsKLQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgRWxlbWVudEl0ZXJhdG9y
QXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7Ci0jZW5kaWYKLX07Ci0KLWNsYXNzIEVsZW1lbnREZXNj
ZW5kYW50Q29uc3RJdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgRWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yKCk7Ci0gICAgZXhwbGljaXQgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
KGNvbnN0IEVsZW1lbnQqKTsKLQotICAgIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYg
b3BlcmF0b3IrKygpOwotCi0gICAgY29uc3QgRWxlbWVudCYgb3BlcmF0b3IqKCkgY29uc3Q7Ci0g
ICAgY29uc3QgRWxlbWVudCogb3BlcmF0b3ItPigpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0Owot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3Im
IG90aGVyKSBjb25zdDsKLQotICAgIHZvaWQgZHJvcEFzc2VydGlvbnMoKTsKLQotcHJpdmF0ZToK
LSAgICBjb25zdCBFbGVtZW50KiBtX2N1cnJlbnQ7Ci0gICAgVmVjdG9yPEVsZW1lbnQqLCAxNj4g
bV9hbmNlc3RvclNpYmxpbmdTdGFjazsKLQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgRWxlbWVu
dEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7Ci0jZW5kaWYKLX07Ci0KLWNsYXNzIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyIHsKLXB1YmxpYzoKLSAgICBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2RlJiByb290KTsKLSAgICBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yIGJlZ2luKCk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ciBlbmQoKTsKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGxhc3QoKTsKLQotcHJpdmF0
ZToKLSAgICBDb250YWluZXJOb2RlJiBtX3Jvb3Q7Ci19OwotCi1jbGFzcyBFbGVtZW50RGVzY2Vu
ZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyIHsKLXB1YmxpYzoKLSAgICBFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpOwotICAgIEVs
ZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciBiZWdpbigpIGNvbnN0OwotICAgIEVsZW1lbnRE
ZXNjZW5kYW50Q29uc3RJdGVyYXRvciBlbmQoKSBjb25zdDsKLSAgICBFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3IgbGFzdCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIGNvbnN0IENvbnRh
aW5lck5vZGUmIG1fcm9vdDsKLX07Ci0KLUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVy
IGVsZW1lbnREZXNjZW5kYW50cyhDb250YWluZXJOb2RlJik7Ci1FbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3JBZGFwdGVyIGVsZW1lbnREZXNjZW5kYW50cyhjb25zdCBDb250YWluZXJOb2Rl
Jik7Ci0KLS8vIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IKLQotaW5saW5lIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I6OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoKQotICAgIDogbV9jdXJy
ZW50KG51bGxwdHIpCi17Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKEVsZW1lbnQqIGN1cnJlbnQpCi0gICAgOiBtX2N1cnJl
bnQoY3VycmVudCkKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgICwgbV9hc3NlcnRpb25zKGN1cnJl
bnQpCi0jZW5kaWYKLXsKLSAgICBtX2FuY2VzdG9yU2libGluZ1N0YWNrLnVuY2hlY2tlZEFwcGVu
ZChudWxscHRyKTsKLX0KLQotaW5saW5lIHZvaWQgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6
ZHJvcEFzc2VydGlvbnMoKQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9hc3NlcnRpb25z
LmNsZWFyKCk7Ci0jZW5kaWYKLX0KLQotQUxXQVlTX0lOTElORSBFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yJiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvcisrKCkKLXsKLSAgICBB
U1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0
YXRlZCgpKTsKLQotICAgIEVsZW1lbnQqIGZpcnN0Q2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpm
aXJzdENoaWxkKCptX2N1cnJlbnQpOwotICAgIEVsZW1lbnQqIG5leHRTaWJsaW5nID0gRWxlbWVu
dFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoKm1fY3VycmVudCk7Ci0KLSAgICBpZiAoZmlyc3RDaGls
ZCkgewotICAgICAgICBpZiAobmV4dFNpYmxpbmcpCi0gICAgICAgICAgICBtX2FuY2VzdG9yU2li
bGluZ1N0YWNrLmFwcGVuZChuZXh0U2libGluZyk7Ci0gICAgICAgIG1fY3VycmVudCA9IGZpcnN0
Q2hpbGQ7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBpZiAobmV4dFNpYmxp
bmcpIHsKLSAgICAgICAgbV9jdXJyZW50ID0gbmV4dFNpYmxpbmc7Ci0gICAgICAgIHJldHVybiAq
dGhpczsKLSAgICB9Ci0KLSAgICBtX2N1cnJlbnQgPSBtX2FuY2VzdG9yU2libGluZ1N0YWNrLnRh
a2VMYXN0KCk7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlv
biB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQp
Ci0gICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2Vu
ZGlmCi0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLUFMV0FZU19JTkxJTkUgRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvciYgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6b3BlcmF0b3ItLSgpCi17
Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJl
ZUhhc011dGF0ZWQoKSk7Ci0KLSAgICBFbGVtZW50KiBwcmV2aW91c1NpYmxpbmcgPSBFbGVtZW50
VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoKm1fY3VycmVudCk7Ci0KLSAgICBpZiAoIXByZXZp
b3VzU2libGluZykgewotICAgICAgICBtX2N1cnJlbnQgPSBtX2N1cnJlbnQtPnBhcmVudEVsZW1l
bnQoKTsKLSAgICAgICAgLy8gVGhlIHN0YWNrIG9wdGltaXplcyBmb3IgZm9yd2FyZCB0cmF2ZXJz
YWwgb25seSwgdGhpcyBqdXN0IG1haW50YWlucyBjb25zaXN0ZW5jeS4KLSAgICAgICAgaWYgKG1f
Y3VycmVudC0+bmV4dFNpYmxpbmcoKSAmJiBtX2N1cnJlbnQtPm5leHRTaWJsaW5nKCkgPT0gbV9h
bmNlc3RvclNpYmxpbmdTdGFjay5sYXN0KCkpCi0gICAgICAgICAgICBtX2FuY2VzdG9yU2libGlu
Z1N0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAg
IEVsZW1lbnQqIGRlZXBlc3RTaWJsaW5nID0gcHJldmlvdXNTaWJsaW5nOwotICAgIHdoaWxlIChF
bGVtZW50KiBsYXN0Q2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQoKmRlZXBlc3RT
aWJsaW5nKSkKLSAgICAgICAgZGVlcGVzdFNpYmxpbmcgPSBsYXN0Q2hpbGQ7Ci0gICAgQVNTRVJU
KGRlZXBlc3RTaWJsaW5nKTsKLQotICAgIGlmIChkZWVwZXN0U2libGluZyAhPSBwcmV2aW91c1Np
YmxpbmcpCi0gICAgICAgIG1fYW5jZXN0b3JTaWJsaW5nU3RhY2suYXBwZW5kKG1fY3VycmVudCk7
Ci0KLSAgICBtX2N1cnJlbnQgPSBkZWVwZXN0U2libGluZzsKLQotI2lmIEFTU0VSVF9FTkFCTEVE
Ci0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhl
IGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVu
dERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQot
aW5saW5lIEVsZW1lbnQmIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6Om9wZXJhdG9yKigpCi17
Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJl
ZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuICptX2N1cnJlbnQ7Ci19Ci0KLWlubGluZSBFbGVt
ZW50KiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvci0+KCkKLXsKLSAgICBBU1NF
UlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRl
ZCgpKTsKLSAgICByZXR1cm4gbV9jdXJyZW50OwotfQotCi1pbmxpbmUgYm9vbCBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvcj09KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3ImIG90aGVyKSBjb25zdAotewotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNN
dXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQgPT0gb3RoZXIubV9jdXJyZW50OwotfQot
Ci1pbmxpbmUgYm9vbCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvciE9KGNvbnN0
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKLX0KLQotLy8gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I6OkVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvcigpCi0gICAgOiBtX2N1cnJlbnQobnVsbHB0cikKLXsKLX0KLQotaW5s
aW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6RWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yKGNvbnN0IEVsZW1lbnQqIGN1cnJlbnQpCi0gICAgOiBtX2N1cnJlbnQoY3VycmVu
dCkKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgICwgbV9hc3NlcnRpb25zKGN1cnJlbnQpCi0jZW5k
aWYKLXsKLSAgICBtX2FuY2VzdG9yU2libGluZ1N0YWNrLnVuY2hlY2tlZEFwcGVuZChudWxscHRy
KTsKLX0KLQotaW5saW5lIHZvaWQgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpkcm9w
QXNzZXJ0aW9ucygpCi17Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2Fzc2VydGlvbnMuY2xl
YXIoKTsKLSNlbmRpZgotfQotCi1BTFdBWVNfSU5MSU5FIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvciYgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpvcGVyYXRvcisrKCkKLXsK
LSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVl
SGFzTXV0YXRlZCgpKTsKLQotICAgIEVsZW1lbnQqIGZpcnN0Q2hpbGQgPSBFbGVtZW50VHJhdmVy
c2FsOjpmaXJzdENoaWxkKCptX2N1cnJlbnQpOwotICAgIEVsZW1lbnQqIG5leHRTaWJsaW5nID0g
RWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoKm1fY3VycmVudCk7Ci0KLSAgICBpZiAoZmly
c3RDaGlsZCkgewotICAgICAgICBpZiAobmV4dFNpYmxpbmcpCi0gICAgICAgICAgICBtX2FuY2Vz
dG9yU2libGluZ1N0YWNrLmFwcGVuZChuZXh0U2libGluZyk7Ci0gICAgICAgIG1fY3VycmVudCA9
IGZpcnN0Q2hpbGQ7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBpZiAobmV4
dFNpYmxpbmcpIHsKLSAgICAgICAgbV9jdXJyZW50ID0gbmV4dFNpYmxpbmc7Ci0gICAgICAgIHJl
dHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBtX2N1cnJlbnQgPSBtX2FuY2VzdG9yU2libGluZ1N0
YWNrLnRha2VMYXN0KCk7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFz
c2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1
cnJlbnQpCi0gICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigp
OwotI2VuZGlmCi0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLWlubGluZSBjb25zdCBFbGVtZW50
JiBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I6Om9wZXJhdG9yKigpIGNvbnN0Ci17Ci0g
ICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhh
c011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuICptX2N1cnJlbnQ7Ci19Ci0KLWlubGluZSBjb25zdCBF
bGVtZW50KiBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I6Om9wZXJhdG9yLT4oKSBjb25z
dAotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRv
bVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQ7Ci19Ci0KLWlubGluZSBi
b29sIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAgIEFTU0VSVCgh
bV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQg
PT0gb3RoZXIubV9jdXJyZW50OwotfQotCi1pbmxpbmUgYm9vbCBFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3I6Om9wZXJhdG9yIT0oY29uc3QgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci19Ci0K
LS8vIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyCi0KLWlubGluZSBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yQWRhcHRlcjo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIo
Q29udGFpbmVyTm9kZSYgcm9vdCkKLSAgICA6IG1fcm9vdChyb290KQotewotfQotCi1pbmxpbmUg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRl
cjo6YmVnaW4oKQotewotICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKEVsZW1l
bnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQobV9yb290KSk7Ci19Ci0KLWlubGluZSBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjplbmQoKQot
ewotICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKCk7Ci19Ci0KLWlubGluZSBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVy
OjpsYXN0KCkKLXsKLSAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihFbGVtZW50
VHJhdmVyc2FsOjpsYXN0V2l0aGluKG1fcm9vdCkpOwotfQotCi0vLyBFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3JBZGFwdGVyCi0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3JBZGFwdGVyOjpFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0
IENvbnRhaW5lck5vZGUmIHJvb3QpCi0gICAgOiBtX3Jvb3Qocm9vdCkKLXsKLX0KLQotaW5saW5l
IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3JBZGFwdGVyOjpiZWdpbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvcihFbGVtZW50VHJhdmVyc2FsOjpmaXJzdENoaWxkKG1fcm9vdCkpOwot
fQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvckFkYXB0ZXI6OmVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1l
bnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcigpOwotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRh
bnRDb25zdEl0ZXJhdG9yIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI6Omxh
c3QoKSBjb25zdAotewotICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3Io
RWxlbWVudFRyYXZlcnNhbDo6bGFzdFdpdGhpbihtX3Jvb3QpKTsKLX0KLQotLy8gU3RhbmRhbG9u
ZSBmdW5jdGlvbnMKLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyIGVs
ZW1lbnREZXNjZW5kYW50cyhDb250YWluZXJOb2RlJiByb290KQotewotICAgIHJldHVybiBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcihyb290KTsKLX0KLQotaW5saW5lIEVsZW1lbnRE
ZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIgZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0IENv
bnRhaW5lck5vZGUmIHJvb3QpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvckFkYXB0ZXIocm9vdCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFt
ZXNwYWNlIHN0ZCB7Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPFdlYkNvcmU6
OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I+IHsKLSAgICB0eXBlZGVmIFdlYkNvcmU6OkVsZW1l
bnQgdmFsdWVfdHlwZTsKLX07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPFdl
YkNvcmU6OkVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcj4gewotICAgIHR5cGVkZWYgY29u
c3QgV2ViQ29yZTo6RWxlbWVudCB2YWx1ZV90eXBlOwotfTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50SXRlcmF0b3IuaAppbmRleCAzNzRkYmE3YTRjMjQ3OGRkZDkzYWViMmE0YzQ0ZTNkYjgyZDcz
YjU2Li43NDk4ZDQwYWE0MDFkYWM2ZTU5MzU2ZmIwYTA0Yjg0ZjViNzAzNDZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRJdGVyYXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDExICszNCw4IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRJdGVy
YXRvciB7CitjbGFzcyBFbGVtZW50SXRlcmF0b3IgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6
OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBFbGVtZW50VHlwZT4gewogcHVibGljOgotICAgIEVsZW1l
bnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290KTsKLSAgICBFbGVtZW50SXRlcmF0
b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotCiAg
ICAgRWxlbWVudFR5cGUmIG9wZXJhdG9yKigpIGNvbnN0OwogICAgIEVsZW1lbnRUeXBlKiBvcGVy
YXRvci0+KCkgY29uc3Q7CiAKQEAgLTU0LDM5ICs1MSwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGRyb3BBc3NlcnRpb25zKCk7CiAKLXByaXZhdGU6Ci0gICAgY29uc3QgQ29udGFpbmVyTm9kZSog
bV9yb290OwotICAgIEVsZW1lbnRUeXBlKiBtX2N1cnJlbnQ7Citwcm90ZWN0ZWQ6CisgICAgRWxl
bWVudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QgPSBudWxscHRyLCBFbGVtZW50
VHlwZSogY3VycmVudCA9IG51bGxwdHIpOwogCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBFbGVt
ZW50SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0aW9uczsKLSNlbmRpZgotfTsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVudENvbnN0SXRlcmF0b3Igewot
cHVibGljOgotICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJv
b3QpOwotICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3Qs
IGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKLQotICAgIGNvbnN0IEVsZW1lbnRUeXBlJiBv
cGVyYXRvciooKSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50VHlwZSogb3BlcmF0b3ItPigpIGNv
bnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVsZW1lbnRDb25zdEl0ZXJhdG9yJiBv
dGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVsZW1lbnRDb25zdEl0ZXJh
dG9yJiBvdGhlcikgY29uc3Q7Ci0KLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VO
ZXh0KCk7Ci0gICAgRWxlbWVudENvbnN0SXRlcmF0b3ImIHRyYXZlcnNlUHJldmlvdXMoKTsKLSAg
ICBFbGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VOZXh0U2libGluZygpOwotICAgIEVsZW1l
bnRDb25zdEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzU2libGluZygpOwotICAgIEVsZW1lbnRD
b25zdEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7Ci0gICAgRWxlbWVu
dENvbnN0SXRlcmF0b3ImIHRyYXZlcnNlQW5jZXN0b3IoKTsKLQotICAgIHZvaWQgZHJvcEFzc2Vy
dGlvbnMoKTsKKyAgICBib29sIGF0RW5kKCkgeyByZXR1cm4gIW1fY3VycmVudDsgfQogCiBwcml2
YXRlOgogICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIG1fcm9vdDsKLSAgICBjb25zdCBFbGVtZW50
VHlwZSogbV9jdXJyZW50OworICAgIEVsZW1lbnRUeXBlKiBtX2N1cnJlbnQ7CiAKICNpZiBBU1NF
UlRfRU5BQkxFRAogICAgIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMgbV9hc3NlcnRpb25zOwpA
QCAtOTUsMTMgKzY3LDYgQEAgcHJpdmF0ZToKIAogLy8gRWxlbWVudEl0ZXJhdG9yCiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+OjpFbGVtZW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCkKLSAgICA6
IG1fcm9vdChyb290KQotICAgICwgbV9jdXJyZW50KG51bGxwdHIpCi17Ci19Ci0KIHRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+OjpFbGVtZW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwgRWxlbWVudFR5
cGUqIGN1cnJlbnQpCiAgICAgOiBtX3Jvb3Qocm9vdCkKQEAgLTI1MSwxNDggKzIxNiw2IEBAIGlu
bGluZSBib29sIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIT0oY29uc3Qg
RWxlbWVudEl0ZXJhdG9yJiBvdGhlCiAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogfQog
Ci0vLyBFbGVtZW50Q29uc3RJdGVyYXRvcgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+Ci1pbmxpbmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50Q29u
c3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290KQotICAgIDogbV9yb290KHJvb3Qp
Ci0gICAgLCBtX2N1cnJlbnQobnVsbHB0cikKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxl
bWVudENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwgY29uc3QgRWxlbWVu
dFR5cGUqIGN1cnJlbnQpCi0gICAgOiBtX3Jvb3Qocm9vdCkKLSAgICAsIG1fY3VycmVudChjdXJy
ZW50KQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLCBtX2Fzc2VydGlvbnMoY3VycmVudCkKLSNl
bmRpZgotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxl
bWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT46OnRyYXZlcnNlTmV4dCgpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAg
QVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgbV9jdXJyZW50
ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dCgqbV9jdXJyZW50LCBtX3Jvb3QpOwotI2lm
IEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJh
dG9yIHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3Nl
cnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4g
KnRoaXM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVt
ZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91cygpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0g
ICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgbV9jdXJy
ZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXMoKm1fY3VycmVudCwgbV9yb290
KTsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRo
ZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0gICAgICAg
IG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlmCi0gICAg
cmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxp
bmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxpbmcoKQotewotICAgIEFTU0VSVChtX2N1
cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwot
ICAgIG1fY3VycmVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRTaWJsaW5nKCptX2N1
cnJlbnQpOwotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdo
ZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAg
ICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYK
LSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoKQotewotICAgIEFT
U0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRh
dGVkKCkpOwotICAgIG1fY3VycmVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnByZXZpb3Vz
U2libGluZygqbV9jdXJyZW50KTsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhl
IGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFt
X2N1cnJlbnQpCi0gICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlv
bigpOwotI2VuZGlmCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBF
bGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hp
bGRyZW4oKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRp
b25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3VycmVudCA9IFRyYXZlcnNhbDxFbGVt
ZW50VHlwZT46Om5leHRTa2lwcGluZ0NoaWxkcmVuKCptX2N1cnJlbnQsIG1fcm9vdCk7Ci0jaWYg
QVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0
b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBtX2Fzc2Vy
dGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAgIHJldHVybiAq
dGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1l
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+Ojp0cmF2ZXJzZUFuY2VzdG9yKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAg
ICBBU1NFUlQobV9jdXJyZW50ICE9IG1fcm9vdCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMu
ZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgbV9jdXJyZW50ID0gZmluZEVsZW1lbnRBbmNlc3Rv
ck9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm1fY3VycmVudCk7Ci0jaWYgQVNTRVJUX0VOQUJM
RUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0
aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2
ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAgIHJldHVybiAqdGhpczsKLX0KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIHZvaWQgRWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojpkcm9wQXNzZXJ0aW9ucygpCi17Ci0jaWYgQVNTRVJUX0VO
QUJMRUQKLSAgICBtX2Fzc2VydGlvbnMuY2xlYXIoKTsKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgY29uc3QgRWxlbWVudFR5cGUmIEVsZW1lbnRD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IqKCkgY29uc3QKLXsKLSAgICBBU1NF
UlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRl
ZCgpKTsKLSAgICByZXR1cm4gKm1fY3VycmVudDsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlKiBFbGVtZW50Q29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT46Om9wZXJhdG9yLT4oKSBjb25zdAotewotICAgIEFTU0VSVChtX2N1cnJl
bnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAg
IHJldHVybiBtX2N1cnJlbnQ7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWlubGluZSBib29sIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3I9
PShjb25zdCBFbGVtZW50Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KG1fcm9vdCA9PSBvdGhlci5tX3Jvb3QpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRy
ZWVIYXNNdXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQgPT0gb3RoZXIubV9jdXJyZW50
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgYm9vbCBFbGVt
ZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIT0oY29uc3QgRWxlbWVudENv
bnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaW5jbHVkZSAiRWxlbWVudEFuY2Vz
dG9ySXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxp
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5jcHAKaW5kZXggZGQwYzk5
OTE4MDljYmY3YzcxMDYwMDUwMjE2NGU5YTE2ZmRjYzE5MS4uNDM0ZDRhNDQ5MGVjZmMyYTljNTBi
MmQ0MDY5NGUxNDM5ZGU1MDY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVO
b2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5jcHAKQEAg
LTIzLDEwICsyMyw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGl2ZU5vZGVM
aXN0LmgiCiAKLSNpbmNsdWRlICJDbGFzc0NvbGxlY3Rpb24uaCIKLSNpbmNsdWRlICJFbGVtZW50
LmgiCi0jaW5jbHVkZSAiRWxlbWVudFRyYXZlcnNhbC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCmluZGV4IGYyN2YwZWY2NzRiYmQ5ODIz
MTRjMGJiYjI1Yjg1MjQyMjM0ZGE1OGYuLmNjODU1YTI2MDY5ODQxZWRiYmVhZGVkNzBhN2NjNjEz
MzFjMjM3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKQEAgLTI2LDcgKzI2LDYgQEAK
ICNpbmNsdWRlICJDb2xsZWN0aW9uSW5kZXhDYWNoZS5oIgogI2luY2x1ZGUgIkNvbGxlY3Rpb25U
cmF2ZXJzYWwuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJOb2Rl
TGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC04MywxMiArODIsMTUgQEAgcHVi
bGljOgogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW5kZXhD
YWNoZS5ub2RlQ291bnQobm9kZUxpc3QoKSk7IH0KICAgICBFbGVtZW50KiBpdGVtKHVuc2lnbmVk
IG9mZnNldCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVBdChub2Rl
TGlzdCgpLCBvZmZzZXQpOyB9CiAKKyAgICB1c2luZyBUcmF2ZXJzYWwgPSBDb2xsZWN0aW9uVHJh
dmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz47CisgICAgdXNpbmcg
SXRlcmF0b3IgPSBUcmF2ZXJzYWw6Okl0ZXJhdG9yOworCiAgICAgLy8gRm9yIENvbGxlY3Rpb25J
bmRleENhY2hlCi0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0aW9uQmVnaW4o
KSBjb25zdCB7IHJldHVybiBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxU
eXBlOjpEZXNjZW5kYW50cz46OmJlZ2luKG5vZGVMaXN0KCksIHJvb3ROb2RlKCkpOyB9Ci0gICAg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0aW9uTGFzdCgpIGNvbnN0IHsgcmV0dXJu
IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRz
Pjo6bGFzdChub2RlTGlzdCgpLCByb290Tm9kZSgpKTsgfQotICAgIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IgY29sbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IoKTsgfQotICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRy
YXZlcnNlZENvdW50KSBjb25zdCB7IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZl
cnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VGb3J3YXJkKG5vZGVMaXN0KCksIGN1cnJl
bnQsIGNvdW50LCB0cmF2ZXJzZWRDb3VudCk7IH0KLSAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJz
ZUJhY2t3YXJkKEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNv
dW50KSBjb25zdCB7IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6
OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VCYWNrd2FyZChub2RlTGlzdCgpLCBjdXJyZW50LCBjb3Vu
dCk7IH0KKyAgICBhdXRvIGNvbGxlY3Rpb25CZWdpbigpIGNvbnN0IHsgcmV0dXJuIFRyYXZlcnNh
bDo6YmVnaW4obm9kZUxpc3QoKSwgcm9vdE5vZGUoKSk7IH0KKyAgICBhdXRvIGNvbGxlY3Rpb25M
YXN0KCkgY29uc3QgeyByZXR1cm4gVHJhdmVyc2FsOjpsYXN0KG5vZGVMaXN0KCksIHJvb3ROb2Rl
KCkpOyB9CisgICAgYXV0byBjb2xsZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gSXRlcmF0b3Io
cm9vdE5vZGUoKSk7IH0KKyAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoSXRlcmF0
b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNv
bnN0IHsgVHJhdmVyc2FsOjp0cmF2ZXJzZUZvcndhcmQobm9kZUxpc3QoKSwgY3VycmVudCwgY291
bnQsIHRyYXZlcnNlZENvdW50KTsgfQorICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlQmFja3dh
cmQoSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KSBjb25zdCB7IFRyYXZlcnNhbDo6
dHJhdmVyc2VCYWNrd2FyZChub2RlTGlzdCgpLCBjdXJyZW50LCBjb3VudCk7IH0KICAgICBib29s
IGNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJhY2t3YXJkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZvaWQgd2lsbFZhbGlkYXRlSW5kZXhDYWNoZSgpIGNvbnN0IHsgZG9jdW1lbnQoKS5yZWdp
c3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Q2FjaGVkTGl2ZU5vZGVMaXN0
PE5vZGVMaXN0VHlwZT4mPigqdGhpcykpOyB9CiAKQEAgLTEwMSw2ICsxMDMsOCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBtX2luZGV4Q2FjaGUubWVtb3J5Q29zdCgpOwogICAgIH0KIAorICAg
IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBDYWNo
ZWRMaXZlTm9kZUxpc3QoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIE5vZGVMaXN0SW52YWxpZGF0
aW9uVHlwZSk7CiAKQEAgLTEwOCw5ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIE5vZGVMaXN0VHlw
ZSYgbm9kZUxpc3QoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxOb2RlTGlzdFR5cGUmPigqdGhpcyk7
IH0KICAgICBjb25zdCBOb2RlTGlzdFR5cGUmIG5vZGVMaXN0KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpOyB9CiAKLSAgICBDb250YWluZXJO
b2RlJiByb290Tm9kZSgpIGNvbnN0OwotCi0gICAgbXV0YWJsZSBDb2xsZWN0aW9uSW5kZXhDYWNo
ZTxOb2RlTGlzdFR5cGUsIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I+IG1faW5kZXhDYWNoZTsK
KyAgICBtdXRhYmxlIENvbGxlY3Rpb25JbmRleENhY2hlPE5vZGVMaXN0VHlwZSwgSXRlcmF0b3I+
IG1faW5kZXhDYWNoZTsKIH07CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBzaG91bGRJbnZhbGlkYXRl
VHlwZU9uQXR0cmlidXRlQ2hhbmdlKE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSB0eXBlLCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA5ODIxMjQ0ZGM5
MTc0OTM0MWIzZDI2YzUzYWUyNTdmM2FjYWFhOTUxLi5mOWM1OWQwNjU3MTE1NWUxMTMxM2EwOGZk
N2E1NmZjMjJhNDYyY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEFyZWFFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTEJvZHlFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNs
dWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MU2xvdEVsZW1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
ZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApp
bmRleCBlZjA1NTI5MzQyNzdkNDNiMTE5YTQ2NzUxZmY0MjhlMGExODAzNzkwLi5hMTk1ZWQ2NjRm
MThlNzhjOTlmNWY5NjQ1ODEwOGY0MzU0OWI5MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
NCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiU2VsZWN0b3JRdWVyeS5oIgogCiAjaW5jbHVk
ZSAiQ1NTUGFyc2VyLmgiCi0jaW5jbHVkZSAiRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgor
I2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCkBA
IC0xNTAsMTUgKzE1MCwxMiBAQCBib29sIFNlbGVjdG9yRGF0YUxpc3Q6Om1hdGNoZXMoRWxlbWVu
dCYgdGFyZ2V0RWxlbWVudCkgY29uc3QKIAogRWxlbWVudCogU2VsZWN0b3JEYXRhTGlzdDo6Y2xv
c2VzdChFbGVtZW50JiB0YXJnZXRFbGVtZW50KSBjb25zdAogewotICAgIEVsZW1lbnQqIGN1cnJl
bnROb2RlID0gJnRhcmdldEVsZW1lbnQ7Ci0gICAgZG8geworICAgIGZvciAoYXV0byYgY3VycmVu
dEVsZW1lbnQgOiBhbmNlc3RvcnNPZlR5cGU8RWxlbWVudD4odGFyZ2V0RWxlbWVudCkpIHsKICAg
ICAgICAgZm9yIChhdXRvJiBzZWxlY3RvciA6IG1fc2VsZWN0b3JzKSB7Ci0gICAgICAgICAgICBF
bGVtZW50KiBjYW5kaWRhdGVFbGVtZW50ID0gc2VsZWN0b3JDbG9zZXN0KHNlbGVjdG9yLCAqY3Vy
cmVudE5vZGUsIHRhcmdldEVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZUVsZW1l
bnQpCisgICAgICAgICAgICBpZiAoYXV0byogY2FuZGlkYXRlRWxlbWVudCA9IHNlbGVjdG9yQ2xv
c2VzdChzZWxlY3RvciwgY3VycmVudEVsZW1lbnQsIHRhcmdldEVsZW1lbnQpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBjYW5kaWRhdGVFbGVtZW50OwogICAgICAgICB9Ci0gICAgICAgIGN1cnJl
bnROb2RlID0gY3VycmVudE5vZGUtPnBhcmVudEVsZW1lbnQoKTsKLSAgICB9IHdoaWxlIChjdXJy
ZW50Tm9kZSk7CisgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0yOTUsNyArMjky
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4KIHN0YXRpYyBpbmxp
bmUgdm9pZCBlbGVtZW50c0ZvckxvY2FsTmFtZShjb25zdCBDb250YWluZXJOb2RlJiByb290Tm9k
ZSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBsb3dlcmNh
c2VMb2NhbE5hbWUsIHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0
cHV0KQogewogICAgIGlmIChsb2NhbE5hbWUgPT0gbG93ZXJjYXNlTG9jYWxOYW1lKSB7Ci0gICAg
ICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9jYXN0PENv
bnRhaW5lck5vZGUmPihyb290Tm9kZSkpKSB7CisgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6
IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJv
b3ROb2RlKSkpIHsKICAgICAgICAgICAgIGlmIChlbGVtZW50LnRhZ1FOYW1lKCkubG9jYWxOYW1l
KCkgPT0gbG9jYWxOYW1lKSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0Ojph
cHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICAgICAgICAg
IGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAg
LTMwMyw3ICszMDAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZWxlbWVudHNGb3JMb2NhbE5hbWUo
Y29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0bwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxl
bWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4o
Y29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAgICAgICAgICAgaWYg
KGxvY2FsTmFtZU1hdGNoZXMoZWxlbWVudCwgbG9jYWxOYW1lLCBsb3dlcmNhc2VMb2NhbE5hbWUp
KSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRwdXRGb3JF
bGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChTZWxlY3RvclF1
ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAgLTMxNiw3ICszMTMsNyBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgZWxlbWVudHNGb3JMb2NhbE5hbWUoY29uc3QgQ29udGFpbmVy
Tm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0bwogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVl
cnlUcmFpdD4KIHN0YXRpYyBpbmxpbmUgdm9pZCBhbnlFbGVtZW50KGNvbnN0IENvbnRhaW5lck5v
ZGUmIHJvb3ROb2RlLCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5cGUmIG91
dHB1dCkKIHsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29u
c3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxl
bWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9k
ZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRw
dXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICBpZiAoU2VsZWN0b3JRdWVy
eVRyYWl0OjpzaG91bGRPbmx5TWF0Y2hGaXJzdEVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0zNDUsNyArMzQyLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6
OmV4ZWN1dGVTaW5nbGVUYWdOYW1lU2VsZWN0b3JEYXRhKGNvbnN0IENvbnQKICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZhbGxiYWNrOiBOYW1lc3BhY2VVUkkgaXMgc2V0LCBz
ZWxlY3RvckxvY2FsTmFtZSBtYXkgYmUgc3RhckF0b20oKS4KLSAgICAgICAgZm9yIChhdXRvJiBl
bGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJv
b3ROb2RlKSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5
cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQubmFtZXNwYWNlVVJJKCkgPT0gc2VsZWN0b3JOYW1lc3BhY2VV
UkkgJiYgbG9jYWxOYW1lTWF0Y2hlcyhlbGVtZW50LCBzZWxlY3RvckxvY2FsTmFtZSwgc2VsZWN0
b3JMb3dlcmNhc2VMb2NhbE5hbWUpKSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRy
YWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICAg
ICAgICAgIGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVu
dCkKQEAgLTM2Miw3ICszNTksNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlz
dDo6ZXhlY3V0ZVNpbmdsZUNsYXNzTmFtZVNlbGVjdG9yRGF0YShjb25zdCBDbwogICAgIEFTU0VS
VChpc1NpbmdsZUNsYXNzTmFtZVNlbGVjdG9yKCpzZWxlY3RvckRhdGEuc2VsZWN0b3IpKTsKIAog
ICAgIGNvbnN0IEF0b21TdHJpbmcmIGNsYXNzTmFtZSA9IHNlbGVjdG9yRGF0YS5zZWxlY3Rvci0+
dmFsdWUoKTsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29u
c3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxl
bWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9k
ZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAgaWYgKGVsZW1lbnQuaGFzQ2xhc3MoKSAmJiBlbGVt
ZW50LmNsYXNzTmFtZXMoKS5jb250YWlucyhjbGFzc05hbWUpKSB7CiAgICAgICAgICAgICBTZWxl
Y3RvclF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1lbnQob3V0cHV0LCAmZWxlbWVudCk7
CiAgICAgICAgICAgICBpZiAoU2VsZWN0b3JRdWVyeVRyYWl0OjpzaG91bGRPbmx5TWF0Y2hGaXJz
dEVsZW1lbnQpCkBAIC0zNzYsNyArMzczLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9y
RGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVTZWxlY3RvckRhdGEoY29uc3QgQ29udGFpbmVyTm8KIHsK
ICAgICBBU1NFUlQobV9zZWxlY3RvcnMuc2l6ZSgpID09IDEpOwogCi0gICAgZm9yIChhdXRvJiBl
bGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNl
YXJjaFJvb3ROb2RlKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09m
VHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihzZWFyY2hSb290Tm9kZSkp
KSB7CiAgICAgICAgIGlmIChzZWxlY3Rvck1hdGNoZXMoc2VsZWN0b3JEYXRhLCBlbGVtZW50LCBy
b290Tm9kZSkpIHsKICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBwZW5kT3V0cHV0
Rm9yRWxlbWVudChvdXRwdXQsICZlbGVtZW50KTsKICAgICAgICAgICAgIGlmIChTZWxlY3RvclF1
ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAgLTM4OCw3ICszODUsNyBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZVNlbGVj
dG9yRGF0YShjb25zdCBDb250YWluZXJObwogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVl
cnlUcmFpdD4KIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2lu
Z2xlTXVsdGlTZWxlY3RvckRhdGEoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIHR5cGVu
YW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0cHV0KSBjb25zdAogewotICAg
IGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9jYXN0PENvbnRh
aW5lck5vZGUmPihyb290Tm9kZSkpKSB7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2Vu
ZGFudHNPZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUp
KSkgewogICAgICAgICBmb3IgKGF1dG8mIHNlbGVjdG9yIDogbV9zZWxlY3RvcnMpIHsKICAgICAg
ICAgICAgIGlmIChzZWxlY3Rvck1hdGNoZXMoc2VsZWN0b3IsIGVsZW1lbnQsIHJvb3ROb2RlKSkg
ewogICAgICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBwZW5kT3V0cHV0Rm9yRWxl
bWVudChvdXRwdXQsICZlbGVtZW50KTsKQEAgLTQwNCw3ICs0MDEsNyBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZU11bHRpU2VsZWN0b3JEYXRhKGNv
bnN0IENvbnRhaQogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4KIEFMV0FZ
U19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29tcGlsZWRTaW1wbGVTZWxl
Y3RvckNoZWNrZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgc2VhcmNoUm9vdE5vZGUsIFNlbGVjdG9y
Q29tcGlsZXI6OlF1ZXJ5U2VsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXIgc2VsZWN0b3JDaGVj
a2VyLCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5cGUmIG91dHB1dCwgY29u
c3QgU2VsZWN0b3JEYXRhJiBzZWxlY3RvckRhdGEpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvJiBl
bGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNl
YXJjaFJvb3ROb2RlKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09m
VHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihzZWFyY2hSb290Tm9kZSkp
KSB7CiAgICAgICAgIHNlbGVjdG9yRGF0YS5jb21waWxlZFNlbGVjdG9yLndhc1VzZWQoKTsKIAog
ICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2VyKCZlbGVtZW50KSkgewpAQCAtNDIxLDcgKzQxOCw3
IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29tcGlsZWRT
ZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDCiAgICAgU2VsZWN0b3JDaGVja2VyOjpDaGVja2lu
Z0NvbnRleHQgY2hlY2tpbmdDb250ZXh0KFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6UXVlcnlpbmdS
dWxlcyk7CiAgICAgY2hlY2tpbmdDb250ZXh0LnNjb3BlID0gcm9vdE5vZGUuaXNEb2N1bWVudE5v
ZGUoKSA/IG51bGxwdHIgOiAmcm9vdE5vZGU7CiAKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBl
bGVtZW50RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4oc2VhcmNoUm9vdE5v
ZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1l
bnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNlYXJjaFJvb3ROb2RlKSkpIHsKICAgICAg
ICAgc2VsZWN0b3JEYXRhLmNvbXBpbGVkU2VsZWN0b3Iud2FzVXNlZCgpOwogCiAgICAgICAgIGlm
IChzZWxlY3RvckNoZWNrZXIoJmVsZW1lbnQsICZjaGVja2luZ0NvbnRleHQpKSB7CkBAIC00Mzcs
NyArNDM0LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVD
b21waWxlZFNpbmdsZU11bHRpU2VsZWN0b3JEYXRhKGNvbnMKIHsKICAgICBTZWxlY3RvckNoZWNr
ZXI6OkNoZWNraW5nQ29udGV4dCBjaGVja2luZ0NvbnRleHQoU2VsZWN0b3JDaGVja2VyOjpNb2Rl
OjpRdWVyeWluZ1J1bGVzKTsKICAgICBjaGVja2luZ0NvbnRleHQuc2NvcGUgPSByb290Tm9kZS5p
c0RvY3VtZW50Tm9kZSgpID8gbnVsbHB0ciA6ICZyb290Tm9kZTsKLSAgICBmb3IgKGF1dG8mIGVs
ZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9v
dE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVs
ZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAg
Zm9yIChhdXRvJiBzZWxlY3RvciA6IG1fc2VsZWN0b3JzKSB7CiAgICAgICAgICAgICBzZWxlY3Rv
ci5jb21waWxlZFNlbGVjdG9yLndhc1VzZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdu
bWVudC5jcHAKaW5kZXggNGQzZTYxOTQ3ZDNiZjhhNWFhYzRiY2U2NzdmYzcxYTMzYjg1YzZiOC4u
ZDJkMTNjYjA5MzUwZDA3YmM2MjA1N2VjOTNjZjM0ODVhNDYwZGRkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2xvdEFzc2lnbm1lbnQuY3BwCkBAIC0yNiwxMCArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlNsb3RBc3NpZ25tZW50LmgiCiAKLQorI2luY2x1ZGUgIkVsZW1lbnRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKLSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKaW5kZXggOWYzNTkzNWQ5NmM3OWU3NWI2OGQzMGMy
OGNiZTNjNWEwNDNmMDMzMy4uZmY2MWQ4Zjk0MGFhNmIxNjlkZmNmZDEzZjg3NDFjY2YwNzMxMjQ4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI5LDI5NCArMjksMjgyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZVR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBEb3VibGVFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIERvdWJsZUVs
ZW1lbnREZXNjZW5kYW50UmFuZ2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRWxlbWVudERl
c2NlbmRhbnRSYW5nZTsKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sKGNvbnN0
IEVsZW1lbnRUeXBlJik+IGNsYXNzIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZTsKIAot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gewotcHVi
bGljOgotICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJO
b2RlJiByb290KTsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29u
dGFpbmVyTm9kZSYgcm9vdCwgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotICAgIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotfTsKKy8vIFJhbmdlIGZvciBpdGVy
YXRpbmcgdGhyb3VnaCBkZXNjZW5kYW50IGVsZW1lbnRzLgordGVtcGxhdGU8dHlwZW5hbWUgRWxl
bWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRz
T2ZUeXBlKENvbnRhaW5lck5vZGUmKTsKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBF
bGVtZW50RGVzY2VuZGFudFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlw
ZShjb25zdCBDb250YWluZXJOb2RlJik7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWNsYXNzIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIDogcHVibGljIEVs
ZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiAgewotcHVibGljOgotICAgIFR5cGVkRWxl
bWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpOwot
ICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5v
ZGUmIHJvb3QsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKLSAgICBUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50Q29uc3RJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotfTsKKy8vIFJhbmdlIHRoYXQg
c2tpcHMgZWxlbWVudHMgd2hlcmUgdGhlIGZpbHRlciByZXR1cm5zIGZhbHNlLgordGVtcGxhdGU8
dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmlsdGVyKGNvbnN0IEVsZW1lbnRUeXBlJik+IEZp
bHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZTxjb25zdCBFbGVtZW50VHlwZSwgZmlsdGVyPiBk
ZXNjZW5kYW50c09mVHlwZShjb25zdCBDb250YWluZXJOb2RlJik7CisKKy8vIFJhbmdlIGZvciB1
c2Ugd2hlbiBib3RoIHNldHMgb2YgZGVzY2VuZGFudHMgYXJlIGtub3duIHRvIGJlIHRoZSBzYW1l
IGxlbmd0aC4KKy8vIElmIHRoZXkgYXJlIGRpZmZlcmVudCBsZW5ndGhzLCB0aGlzIHdpbGwgc3Rv
cCB3aGVuIHRoZSBzaG9ydGVyIG9uZSByZWFjaGVzIHRoZSBlbmQsIGJ1dCBhbHNvIGFuIGFzc2Vy
dGlvbiB3aWxsIGZhaWwuCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRG91YmxlRWxl
bWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFp
bmVyTm9kZSYgZmlyc3RSb290LCBDb250YWluZXJOb2RlJiBzZWNvbmRSb290KTsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yQWRhcHRlciB7CitjbGFzcyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIDogcHVibGlj
IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gewogcHVibGljOgotICAgIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpOwotICAgIFR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCk7Ci0gICAgVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbkF0KEVsZW1lbnRU
eXBlJik7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBm
cm9tKEVsZW1lbnQmKTsKLQotICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpOwotICAgIEVsZW1lbnRU
eXBlKiBsYXN0KCk7Ci0KLXByaXZhdGU6Ci0gICAgQ29udGFpbmVyTm9kZSYgbV9yb290OworICAg
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7Cisg
ICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBF
bGVtZW50VHlwZSogY3VycmVudCk7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3Bl
cmF0b3IrKygpOworICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsK
IH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlciB7CitjbGFzcyBFbGVtZW50RGVzY2VuZGFu
dFJhbmdlIHsKIHB1YmxpYzoKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
ckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgVHlwZWRFbGVtZW50RGVz
Y2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7Ci0gICAgVHlw
ZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpIGNvbnN0
OwotICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBi
ZWdpbkF0KGNvbnN0IEVsZW1lbnRUeXBlJikgY29uc3Q7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGZyb20oY29uc3QgRWxlbWVudCYpIGNvbnN0
OworICAgIEVsZW1lbnREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7
CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKSBjb25z
dDsKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKSBjb25z
dDsKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbkF0KEVs
ZW1lbnRUeXBlJikgY29uc3Q7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50
VHlwZT4gZnJvbShFbGVtZW50JikgY29uc3Q7CiAKLSAgICBjb25zdCBFbGVtZW50VHlwZSogZmly
c3QoKSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50VHlwZSogbGFzdCgpIGNvbnN0OworICAgIEVs
ZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0OworICAgIEVsZW1lbnRUeXBlKiBsYXN0KCkgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgY29uc3QgQ29udGFpbmVyTm9kZSYgbV9yb290OwogfTsKIAotdGVt
cGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZVR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvckFkYXB0ZXIgewordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNs
YXNzIERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UgewogcHVibGljOgotICAgIHR5cGVkZWYg
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gU2luZ2xl
QWRhcHRlcjsKLSAgICB0eXBlZGVmIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
cjxFbGVtZW50VHlwZT4gSXRlcmF0b3I7CisgICAgdHlwZWRlZiBFbGVtZW50RGVzY2VuZGFudFJh
bmdlPEVsZW1lbnRUeXBlPiBTaW5nbGVBZGFwdGVyOworICAgIHR5cGVkZWYgRG91YmxlRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gSXRlcmF0b3I7CiAKLSAgICBEb3VibGVU
eXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKFNpbmdsZUFkYXB0ZXImJiwgU2lu
Z2xlQWRhcHRlciYmKTsKLSAgICBJdGVyYXRvciBiZWdpbigpOwotICAgIEl0ZXJhdG9yIGVuZCgp
OworICAgIERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UoU2luZ2xlQWRhcHRlciYmLCBTaW5n
bGVBZGFwdGVyJiYpOworICAgIEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CisgICAgSXRlcmF0b3Ig
ZW5kKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgc3RkOjpwYWlyPFNpbmdsZUFkYXB0ZXIsIFNp
bmdsZUFkYXB0ZXI+IG1fcGFpcjsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PiBjbGFzcyBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgewordGVtcGxhdGU8
dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IgewogcHVibGljOgotICAgIHR5cGVkZWYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiBTaW5nbGVJdGVyYXRvcjsKKyAgICB0eXBlZGVmIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IFNpbmdsZUl0ZXJhdG9yOwogICAgIHR5cGVkZWYgc3Rk
OjpwYWlyPEVsZW1lbnRUeXBlJiwgRWxlbWVudFR5cGUmPiBSZWZlcmVuY2VQcm94eTsKIAotICAg
IERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihTaW5nbGVJdGVyYXRvciYmLCBT
aW5nbGVJdGVyYXRvciYmKTsKKyAgICBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKFNp
bmdsZUl0ZXJhdG9yJiYsIFNpbmdsZUl0ZXJhdG9yJiYpOwogICAgIFJlZmVyZW5jZVByb3h5IG9w
ZXJhdG9yKigpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEb3VibGVUeXBlZEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJikgY29uc3Q7Ci0gICAgRG91
YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImKSBjb25z
dDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRG91YmxlRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvciYpIGNvbnN0OworICAgIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJh
dG9yKysoKTsKIAogcHJpdmF0ZToKICAgICBzdGQ6OnBhaXI8U2luZ2xlSXRlcmF0b3IsIFNpbmds
ZUl0ZXJhdG9yPiBtX3BhaXI7CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2Nl
bmRhbnRzT2ZUeXBlKENvbnRhaW5lck5vZGUmKTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPiBkZXNjZW5kYW50c09mVHlwZShjb25zdCBDb250YWluZXJOb2RlJik7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBFbGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gY2xh
c3MgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT4geworcHVibGljOgorICAgIEZpbHRlcmVkRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiwgRWxlbWVudFR5cGUqID0gbnVsbHB0cik7
CisgICAgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Cit9
OwogCi0vLyBUaGlzIG11c3Qgb25seSBiZSB1c2VkIHdoZW4gYm90aCBzZXRzIG9mIGRlc2NlbmRh
bnRzIGFyZSBrbm93biB0byBiZSB0aGUgc2FtZSBsZW5ndGguCi0vLyBJZiB0aGV5IGFyZSBkaWZm
ZXJlbnQgbGVuZ3RocywgdGhpcyB3aWxsIHN0b3Agd2hlbiB0aGUgc2hvcnRlciBvbmUgcmVhY2hl
cyB0aGUgZW5kLCBidXQgYWxzbyBhbiBhc3NlcnRpb24gd2lsbCBmYWlsLgotdGVtcGxhdGU8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+IERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFk
YXB0ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKENvbnRhaW5lck5vZGUmIGZpcnN0
Um9vdCwgQ29udGFpbmVyTm9kZSYgc2Vjb25kUm9vdCk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVt
ZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gY2xhc3MgRmlsdGVyZWRF
bGVtZW50RGVzY2VuZGFudFJhbmdlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBJdGVyYXRvciA9IEZp
bHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZSwgZmlsdGVyPjsKIAot
Ly8gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yCisgICAgRmlsdGVyZWRFbGVtZW50RGVz
Y2VuZGFudFJhbmdlKGNvbnN0IENvbnRhaW5lck5vZGUmKTsKKyAgICBJdGVyYXRvciBiZWdpbigp
IGNvbnN0OworICAgIEl0ZXJhdG9yIGVuZCgpIGNvbnN0OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5v
ZGUmIHJvb3QpCi0gICAgOiBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZyb290KQotewot
fQorICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5v
ZGUmIHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVudEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPigmcm9vdCwgY3VycmVudCkKLXsKLX0KK3ByaXZhdGU6CisgICAgY29uc3QgQ29u
dGFpbmVyTm9kZSYgbV9yb290OworfTsKKworLy8gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcgog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCitpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29u
dGFpbmVyTm9kZSYgcm9vdCkKKyAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnJv
b3QpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJz
ZU5leHQoKSk7CiB9CiAKLS8vIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yCi0K
IHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNj
ZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRD
b25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCi0gICAgOiBFbGVtZW50Q29u
c3RJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnJvb3QpCi0KK2lubGluZSBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBD
b250YWluZXJOb2RlJiByb290LCBFbGVtZW50VHlwZSogY3VycmVudCkKKyAgICA6IEVsZW1lbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT4oJnJvb3QsIGN1cnJlbnQpCiB7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
KGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KQot
ICAgIDogRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZyb290LCBjdXJyZW50KQor
aW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCiB7CisgICAgRWxlbWVu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0KCk7CisgICAgcmV0dXJuICp0aGlz
OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBUeXBlZEVsZW1lbnREZXNj
ZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQoraW5saW5lIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItLSgpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVs
ZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0KCkpOworICAgIEVs
ZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXMoKTsKKyAgICByZXR1
cm4gKnRoaXM7CiB9CiAKLS8vIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIK
Ky8vIEVsZW1lbnREZXNjZW5kYW50UmFuZ2UKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dFR5cGU+OjpUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5v
ZGUmIHJvb3QpCitpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZT46OkVs
ZW1lbnREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKICAgICA6IG1f
cm9vdChyb290KQogewogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxp
bmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4oKQoraW5saW5l
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50
UmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBUcmF2ZXJzYWw8RWxl
bWVudFR5cGU+OjpmaXJzdFdpdGhpbihtX3Jvb3QpKTsKKyAgICByZXR1cm4gRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+
OjpmaXJzdFdpdGhpbihtX3Jvb3QpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4g
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgp
CitpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudERl
c2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290KTsKKyAgICBy
ZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290KTsKIH0K
ICAgICAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBkZXNjZW5k
YW50KQoraW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1l
bnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBkZXNj
ZW5kYW50KSBjb25zdAogewogICAgIEFTU0VSVChkZXNjZW5kYW50LmlzRGVzY2VuZGFudE9mKG1f
cm9vdCkpOwotICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+KG1fcm9vdCwgJmRlc2NlbmRhbnQpOworICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsICZkZXNjZW5kYW50KTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRl
cjxFbGVtZW50VHlwZT46OmZyb20oRWxlbWVudCYgZGVzY2VuZGFudCkKK2lubGluZSBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVs
ZW1lbnRUeXBlPjo6ZnJvbShFbGVtZW50JiBkZXNjZW5kYW50KSBjb25zdAogewogICAgIEFTU0VS
VChkZXNjZW5kYW50LmlzRGVzY2VuZGFudE9mKG1fcm9vdCkpOwogICAgIGlmIChpczxFbGVtZW50
VHlwZT4oZGVzY2VuZGFudCkpCi0gICAgICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgZG93bmNhc3Q8RWxlbWVudFR5cGU+KCZkZXNj
ZW5kYW50KSk7CisgICAgICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPihtX3Jvb3QsIGRvd25jYXN0PEVsZW1lbnRUeXBlPigmZGVzY2VuZGFudCkpOwogICAg
IEVsZW1lbnRUeXBlKiBuZXh0ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dChkZXNjZW5k
YW50LCAmbV9yb290KTsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPihtX3Jvb3QsIG5leHQpOworICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIG5leHQpOwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudFR5cGUqIFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpmaXJzdCgpCitpbmxpbmUgRWxlbWVu
dFR5cGUqIEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpmaXJzdCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0aGluKG1fcm9v
dCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
VHlwZSogVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46
Omxhc3QoKQoraW5saW5lIEVsZW1lbnRUeXBlKiBFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1l
bnRUeXBlPjo6bGFzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlw
ZT46Omxhc3RXaXRoaW4obV9yb290KTsKIH0KIAotLy8gVHlwZWRFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3JBZGFwdGVyCisvLyBEb3VibGVFbGVtZW50RGVzY2VuZGFudFJhbmdlCiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpUeXBlZEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKLSAgICA6
IG1fcm9vdChyb290KQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBEb3Vi
bGVFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPjo6RG91YmxlRWxlbWVudERlc2Nl
bmRhbnRSYW5nZShTaW5nbGVBZGFwdGVyJiYgZmlyc3QsIFNpbmdsZUFkYXB0ZXImJiBzZWNvbmQp
CisgICAgOiBtX3BhaXIoV1RGTW92ZShmaXJzdCksIFdURk1vdmUoc2Vjb25kKSkKIHsKIH0KIAot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29u
c3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGF1dG8gRG91YmxlRWxlbWVudERlc2NlbmRhbnRS
YW5nZTxFbGVtZW50VHlwZT46OmJlZ2luKCkgY29uc3QgLT4gSXRlcmF0b3IKIHsKLSAgICByZXR1
cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9v
dCwgVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RXaXRoaW4obV9yb290KSk7CisgICAgcmV0
dXJuIEl0ZXJhdG9yKG1fcGFpci5maXJzdC5iZWdpbigpLCBtX3BhaXIuc2Vjb25kLmJlZ2luKCkp
OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGF1dG8gRG91YmxlRWxlbWVudERlc2Nl
bmRhbnRSYW5nZTxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0IC0+IEl0ZXJhdG9yCiB7Ci0gICAg
cmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiht
X3Jvb3QpOworICAgIHJldHVybiBJdGVyYXRvcihtX3BhaXIuZmlyc3QuZW5kKCksIG1fcGFpci5z
ZWNvbmQuZW5kKCkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxp
bmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVk
RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2lu
QXQoY29uc3QgRWxlbWVudFR5cGUmIGRlc2NlbmRhbnQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGRl
c2NlbmRhbnQuaXNEZXNjZW5kYW50T2YobV9yb290KSk7Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsICZkZXNjZW5kYW50
KTsKLX0KKy8vIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IKIAotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFk
YXB0ZXI8RWxlbWVudFR5cGU+Ojpmcm9tKGNvbnN0IEVsZW1lbnQmIGRlc2NlbmRhbnQpIGNvbnN0
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIERvdWJsZUVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yKFNpbmdsZUl0ZXJhdG9yJiYgZmlyc3QsIFNpbmdsZUl0ZXJhdG9yJiYgc2Vjb25kKQorICAg
IDogbV9wYWlyKFdURk1vdmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29uZCkpCiB7Ci0gICAgQVNTRVJU
KGRlc2NlbmRhbnQuaXNEZXNjZW5kYW50T2YobV9yb290KSk7Ci0gICAgaWYgKGlzPEVsZW1lbnRU
eXBlPihkZXNjZW5kYW50KSkKLSAgICAgICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIGRvd25jYXN0PEVsZW1lbnRUeXBlPigm
ZGVzY2VuZGFudCkpOwotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBuZXh0ID0gVHJhdmVyc2FsPEVs
ZW1lbnRUeXBlPjo6bmV4dChkZXNjZW5kYW50LCAmbV9yb290KTsKLSAgICByZXR1cm4gVHlwZWRF
bGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgbmV4dCk7
CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBjb25zdCBFbGVt
ZW50VHlwZSogVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1l
bnRUeXBlPjo6Zmlyc3QoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlu
bGluZSBhdXRvIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojpv
cGVyYXRvciooKSBjb25zdCAtPiBSZWZlcmVuY2VQcm94eQogewotICAgIHJldHVybiBUcmF2ZXJz
YWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpbihtX3Jvb3QpOworICAgIHJldHVybiB7ICptX3Bh
aXIuZmlyc3QsICptX3BhaXIuc2Vjb25kIH07CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWlubGluZSBjb25zdCBFbGVtZW50VHlwZSogVHlwZWRFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6bGFzdCgpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGJvb2wgRG91YmxlRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yPT0oY29uc3QgRG91YmxlRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFRyYXZlcnNhbDxF
bGVtZW50VHlwZT46Omxhc3RXaXRoaW4obV9yb290KTsKKyAgICBBU1NFUlQoKG1fcGFpci5maXJz
dCA9PSBvdGhlci5tX3BhaXIuZmlyc3QpID09IChtX3BhaXIuc2Vjb25kID09IG90aGVyLm1fcGFp
ci5zZWNvbmQpKTsKKyAgICByZXR1cm4gbV9wYWlyLmZpcnN0ID09IG90aGVyLm1fcGFpci5maXJz
dCB8fCBtX3BhaXIuc2Vjb25kID09IG90aGVyLm1fcGFpci5zZWNvbmQ7CiB9CiAKLS8vIERvdWJs
ZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIKLQotdGVtcGxhdGU8dHlwZW5h
bWUgRWxlbWVudFR5cGU+IGlubGluZSBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6RG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yQWRhcHRlcihTaW5nbGVBZGFwdGVyJiYgZmlyc3QsIFNpbmdsZUFkYXB0ZXImJiBzZWNvbmQp
Ci0gICAgOiBtX3BhaXIoV1RGTW92ZShmaXJzdCksIFdURk1vdmUoc2Vjb25kKSkKK3RlbXBsYXRl
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgYm9vbCBEb3VibGVFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBEb3VibGVFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKIHsKKyAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgYXV0byBE
b3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6
YmVnaW4oKSAtPiBJdGVyYXRvcgordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGlu
ZSBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRG91YmxlRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewotICAg
IHJldHVybiBJdGVyYXRvcihtX3BhaXIuZmlyc3QuYmVnaW4oKSwgbV9wYWlyLnNlY29uZC5iZWdp
bigpKTsKKyAgICArK21fcGFpci5maXJzdDsKKyAgICArK21fcGFpci5zZWNvbmQ7CisgICAgcmV0
dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGF1
dG8gRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlw
ZT46OmVuZCgpIC0+IEl0ZXJhdG9yCisvLyBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IKKwordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmlsdGVyKGNvbnN0IEVs
ZW1lbnRUeXBlJik+IEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZSwgZmlsdGVyPjo6RmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRh
aW5lck5vZGUmIHJvb3QsIEVsZW1lbnRUeXBlKiBlbGVtZW50KQorICAgIDogRWxlbWVudEl0ZXJh
dG9yPGNvbnN0IEVsZW1lbnRUeXBlPiB7ICZyb290LCBlbGVtZW50IH0KIHsKLSAgICByZXR1cm4g
SXRlcmF0b3IobV9wYWlyLmZpcnN0LmVuZCgpLCBtX3BhaXIuc2Vjb25kLmVuZCgpKTsKIH0KIAot
Ly8gRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yCi0KLXRlbXBsYXRlPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6RG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKFNp
bmdsZUl0ZXJhdG9yJiYgZmlyc3QsIFNpbmdsZUl0ZXJhdG9yJiYgc2Vjb25kKQotICAgIDogbV9w
YWlyKFdURk1vdmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29uZCkpCit0ZW1wbGF0ZTx0eXBlbmFtZSBF
bGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gRmlsdGVyZWRFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlLCBmaWx0ZXI+JiBGaWx0ZXJlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGUsIGZpbHRlcj46Om9wZXJhdG9yKysoKQog
eworICAgIGRvIHsKKyAgICAgICAgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVy
c2VOZXh0KCk7CisgICAgfSB3aGlsZSAoIUVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OmF0
RW5kKCkgJiYgIWZpbHRlcigqKnRoaXMpKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgYXV0byBEb3VibGVUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvciooKSBjb25zdCAtPiBSZWZl
cmVuY2VQcm94eQorLy8gRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlCisKK3RlbXBsYXRl
PHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBG
aWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGUsIGZpbHRlcj46OkZpbHRl
cmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZShjb25zdCBDb250YWluZXJOb2RlJiByb290KQorICAg
IDogbV9yb290IHsgcm9vdCB9CiB7Ci0gICAgcmV0dXJuIHsgKm1fcGFpci5maXJzdCwgKm1fcGFp
ci5zZWNvbmQgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBi
b29sIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9w
ZXJhdG9yPT0oY29uc3QgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhl
cikgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25z
dCBFbGVtZW50VHlwZSYpPiBhdXRvIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVt
ZW50VHlwZSwgZmlsdGVyPjo6YmVnaW4oKSBjb25zdCAtPiBJdGVyYXRvcgogewotICAgIEFTU0VS
VCgobV9wYWlyLmZpcnN0ID09IG90aGVyLm1fcGFpci5maXJzdCkgPT0gKG1fcGFpci5zZWNvbmQg
PT0gb3RoZXIubV9wYWlyLnNlY29uZCkpOwotICAgIHJldHVybiBtX3BhaXIuZmlyc3QgPT0gb3Ro
ZXIubV9wYWlyLmZpcnN0IHx8IG1fcGFpci5zZWNvbmQgPT0gb3RoZXIubV9wYWlyLnNlY29uZDsK
KyAgICByZXR1cm4geyBtX3Jvb3QsIGZpcnN0KCkgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
RWxlbWVudFR5cGU+IGlubGluZSBib29sIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIT0oY29uc3QgRG91YmxlVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRU
eXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBhdXRvIEZpbHRlcmVkRWxlbWVu
dERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZSwgZmlsdGVyPjo6ZW5kKCkgY29uc3QgLT4gSXRl
cmF0b3IKIHsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgcmV0dXJuIHsgbV9y
b290IH07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgRG91Ymxl
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRG91YmxlVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUm
KT4gRWxlbWVudFR5cGUqIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlw
ZSwgZmlsdGVyPjo6Zmlyc3QoKSBjb25zdAogewotICAgICsrbV9wYWlyLmZpcnN0OwotICAgICsr
bV9wYWlyLnNlY29uZDsKLSAgICByZXR1cm4gKnRoaXM7CisgICAgZm9yIChhdXRvKiBlbGVtZW50
ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RXaXRoaW4obV9yb290KTsgZWxlbWVudDsg
ZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHQoKmVsZW1lbnQsICZtX3Jvb3Qp
KSB7CisgICAgICAgIGlmIChmaWx0ZXIoKmVsZW1lbnQpKQorICAgICAgICAgICAgcmV0dXJuIGVs
ZW1lbnQ7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOwogfQogCiAvLyBTdGFuZGFsb25lIGZ1
bmN0aW9ucwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNP
ZlR5cGUoQ29udGFpbmVyTm9kZSYgcm9vdCkKK2lubGluZSBFbGVtZW50RGVzY2VuZGFudFJhbmdl
PEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWluZXJOb2RlJiByb290KQogewot
ICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPihyb290KTsKKyAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlw
ZT4ocm9vdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBU
eXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRl
c2NlbmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCitpbmxpbmUgRWxlbWVu
dERlc2NlbmRhbnRSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoY29u
c3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKIHsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihyb290KTsKKyAgICByZXR1cm4g
RWxlbWVudERlc2NlbmRhbnRSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4ocm9vdCk7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgRG91YmxlVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29u
dGFpbmVyTm9kZSYgZmlyc3RSb290LCBDb250YWluZXJOb2RlJiBzZWNvbmRSb290KQordGVtcGxh
dGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBEb3VibGVFbGVtZW50RGVzY2VuZGFudFJh
bmdlPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWluZXJOb2RlJiBmaXJzdFJv
b3QsIENvbnRhaW5lck5vZGUmIHNlY29uZFJvb3QpCiB7CiAgICAgcmV0dXJuIHsgZGVzY2VuZGFu
dHNPZlR5cGU8RWxlbWVudFR5cGU+KGZpcnN0Um9vdCksIGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1l
bnRUeXBlPihzZWNvbmRSb290KSB9OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlw
ZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gRmlsdGVyZWRFbGVtZW50RGVzY2Vu
ZGFudFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlLCBmaWx0ZXI+IGRlc2NlbmRhbnRzT2ZUeXBlKGNv
bnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCit7CisgICAgcmV0dXJuIHsgcm9vdCB9OworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMjkx
YmE2YzBjMDRjNGI2Njk4NDY2ZTEwNzUzNDg1OGU4NTlkYWEwMS4uZGIyMGIzMDEzMjA5NjQxNmMz
ZTEwOTQ2ZWQyMDEwZTU0ZmM5ZjkwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAt
NDksNiArNDksNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJF
bGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgpAQCAtNjEsNyArNjIsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxCUkVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5o
IgorI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJv
bEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MSW1hZ2VFbGVtZW50LmgiCkBAIC0zNDI2LDIzICszNDI3LDE4IEBAIHZvaWQgRWRpdG9y
Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShFbGVtZW50KiBlKQogCiB2b2lkIEVkaXRvcjo6YXBw
bHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGNvbGxlY3Rp
b24gPSBkb2N1bWVudCgpLmdldEVsZW1lbnRzQnlUYWdOYW1lKEhUTUxOYW1lczo6Ym9keVRhZy0+
bG9jYWxOYW1lKCkpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNvbGxlY3Rpb24tPmxlbmd0aCgp
OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgYXBw
bHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQoY29sbGVjdGlvbi0+aXRlbShpKSk7Ci19Ci0KLXZvaWQg
RWRpdG9yOjphcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudChFbGVtZW50KiBlbGVtZW50KSBjb25z
dAotewotICAgIEFTU0VSVCghZWxlbWVudCB8fCBpczxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkp
OwotICAgIGlmICghaXM8U3R5bGVkRWxlbWVudD4oZWxlbWVudCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00gd3JhcHBlciBzbyB3ZSBnZXQgdGhlIHNh
bWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCi0gICAgYXV0byYgc3R5bGUgPSBkb3duY2Fz
dDxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkuY3Nzb21TdHlsZSgpOwotICAgIHN0eWxlLnNldFBy
b3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkV3JhcCwgImJyZWFrLXdvcmQiLCBmYWxzZSk7
Ci0gICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2Rl
LCAic3BhY2UiLCBmYWxzZSk7Ci0gICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9w
ZXJ0eUxpbmVCcmVhaywgImFmdGVyLXdoaXRlLXNwYWNlIiwgZmFsc2UpOworICAgIC8vIEZJWE1F
OiBOb3QgY2xlYXIgaXQncyB2YWx1YWJsZSB0byBkbyB0aGlzIHRvIGFsbCBib2R5IGVsZW1lbnRz
IHJhdGhlciB0aGFuIGp1c3QgZG9pbmcgaXQgb24gdGhlIHNpbmdsZSBvbmUgcmV0dXJuZWQgYnkg
RG9jdW1lbnQ6OmJvZHkuCisgICAgVmVjdG9yPFJlZjxIVE1MQm9keUVsZW1lbnQ+PiBib2RpZXM7
CisgICAgZm9yIChhdXRvJiBib2R5IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTEJvZHlFbGVtZW50
Pihkb2N1bWVudCgpKSkKKyAgICAgICAgYm9kaWVzLmFwcGVuZChib2R5KTsKKworICAgIGZvciAo
YXV0byYgYm9keSA6IGJvZGllcykgeworICAgICAgICAvLyBNdXRhdGUgdXNpbmcgdGhlIENTU09N
IHdyYXBwZXIgc28gd2UgZ2V0IHRoZSBzYW1lIGV2ZW50IGJlaGF2aW9yIGFzIGEgc2NyaXB0Lgor
ICAgICAgICBhdXRvJiBzdHlsZSA9IGJvZHktPmNzc29tU3R5bGUoKTsKKyAgICAgICAgc3R5bGUu
c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdvcmRXcmFwLCAiYnJlYWstd29yZCIsIGZh
bHNlKTsKKyAgICAgICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dE5ic3BNb2RlLCAic3BhY2UiLCBmYWxzZSk7CisgICAgICAgIHN0eWxlLnNldFByb3BlcnR5SW50
ZXJuYWwoQ1NTUHJvcGVydHlMaW5lQnJlYWssICJhZnRlci13aGl0ZS1zcGFjZSIsIGZhbHNlKTsK
KyAgICB9CiB9CiAKIGJvb2wgRWRpdG9yOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0
LCBGaW5kT3B0aW9ucyBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggNmVhODky
MmZiMDc2MmRmZTAzMmYxMGY2ZGExYWZiZDZlMzE0ZWY4Yy4uNzA5ODFkNzQ3YTE4N2U4ZTc1ODEx
NWI2NjZkNzhjYTIzZDBkYTVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC00MzEsNyAr
NDMxLDYgQEAgcHVibGljOgogICAgIHZvaWQgY29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKEVkaXRp
bmdTdHlsZSYgLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6VW5zcGVjaWZpZWQpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKFN0eWxlUHJvcGVydGll
cyYgLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6VW5zcGVjaWZpZWQpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCkgY29uc3Q7Ci0gICAg
dm9pZCBhcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudChFbGVtZW50KikgY29uc3Q7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBJbnRSZWN0IGZpcnN0UmVjdEZvclJhbmdlKFJhbmdlKikgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlci5jcHAKaW5kZXggY2RlOWE3OGM4ZmU3ZGExMzFlMTFmNDRmNGJiMDkxYzVmZTZmMDJmMy4u
MWU3NjBkZTcyMzE2MDlkMDU5Mjk4MjhmN2UxM2YzZDIyYmEyNTJmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAg
LTcxLDcgKzcxLDcgQEAgcHVibGljOgogCiAgICAgICAgIFR5cGUgdHlwZSA9IFR5cGU6OkluY2x1
ZGU7CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBtYXRjaGluZ0VsZW1lbnQ7Ci0gICAgICAgIGZv
ciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnRMaW5lYWdlKHN0YXJ0aW5nRWxlbWVudC5nZXQoKSkp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbGluZWFnZU9mVHlwZTxFbGVtZW50Pigq
c3RhcnRpbmdFbGVtZW50KSkgewogICAgICAgICAgICAgaWYgKGF1dG8gdHlwZU9yTnVsbG9wdCA9
IHR5cGVGb3JFbGVtZW50KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgdHlwZSA9ICp0eXBl
T3JOdWxsb3B0OwogICAgICAgICAgICAgICAgIG1hdGNoaW5nRWxlbWVudCA9ICZlbGVtZW50OwpA
QCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAg
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50TGluZWFnZShzdGFydGluZ0VsZW1lbnQu
Z2V0KCkpKSB7CisgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxl
bWVudD4oKnN0YXJ0aW5nRWxlbWVudCkpIHsKICAgICAgICAgICAgIG1fY2FjaGUuc2V0KGVsZW1l
bnQsIHR5cGUpOwogICAgICAgICAgICAgaWYgKCZlbGVtZW50ID09IG1hdGNoaW5nRWxlbWVudCkK
ICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMzk0OTZiNjk4ODY2YzRhZWMz
Zjc3ZDRlNjYwYmU2ZDUwNzk5ZDlkZS4uZjdkYTBiZGI1OGE4ZGUwYmYzNjRlYmYzNDk0NDNiMmRl
YzgyNDhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIkRvY3VtZW50
TG9hZGVyLmgiCiAjaW1wb3J0ICJFZGl0b3IuaCIKICNpbXBvcnQgIkVkaXRvckNsaWVudC5oIgor
I2ltcG9ydCAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW1wb3J0ICJGaWxlLmgiCiAjaW1wb3J0ICJG
cmFtZS5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXIuaCIKQEAgLTU4LDcgKzU5LDYgQEAKICNpbXBv
cnQgIlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIgogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNp
bXBvcnQgIlNvY2tldFByb3ZpZGVyLmgiCi0jaW1wb3J0ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2
ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZVJl
c291cmNlV2ViUmVzb3VyY2VIYW5kbGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5k
ZXggMTU5NTAzNTFkOTA0NzRjN2M3ODhjMzNlNjdlN2RhODU4ODdmNmQ0Yy4uN2UyMmM1MjJhZGM4
ZTIyN2I2MzliY2VlNmRiNDZkMGEzOTI5M2Q1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cApAQCAtNzUsNyArNzUsNiBAQAogI2luY2x1ZGUgIlNvY2tldFByb3ZpZGVyLmgiCiAjaW5jbHVk
ZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCi0jaW5jbHVk
ZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNl
bGVjdGlvbi5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENv
bGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaApp
bmRleCA3OWY0NzdkNzRmMjI0ZTcxYjQ2YWJhNDc3ZjZjZGIwZGE4OWRmNDg1Li5jODkxYmUzZDdl
Zjk3OWJkMTU4Nzg4ZTQyYzhjNDA4YWI1YmJhZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9D
YWNoZWRIVE1MQ29sbGVjdGlvbi5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSAiQ29sbGVjdGlvblRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UcmF2ZXJzYWwu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oCmluZGV4IDY2ODI5
MzM4ZDBiMWQxYjBjYWI1MTE3N2YwMzg3MjBjMTkyZjcxOTYuLmYxMWU4ODFjYzM5ZDcxNGIwY2Qz
NDU2M2Y4Yzg2OGEzZmU2MjYxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29s
bGVjdGlvblRyYXZlcnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRy
YXZlcnNhbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI2LDggKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29sbGVj
dGlvblR5cGUuaCIKLSNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgotI2luY2x1ZGUg
IkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3Iu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNiwyNyArMzUsMjcgQEAgc3RydWN0IENv
bGxlY3Rpb25UcmF2ZXJzYWwgeyB9OwogCiB0ZW1wbGF0ZSA8Pgogc3RydWN0IENvbGxlY3Rpb25U
cmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPiB7Ci0gICAgdXNp
bmcgSXRlcmF0b3IgPSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOworICAgIHVzaW5nIEl0ZXJh
dG9yID0gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50PjsKIAotICAgIHN0YXRpYyBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGVuZChDb250YWluZXJOb2RlJikgeyByZXR1cm4gRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcigpOyB9CisgICAgc3RhdGljIEl0ZXJhdG9yIGVuZChDb250
YWluZXJOb2RlJiByb290Tm9kZSkgeyByZXR1cm4geyByb290Tm9kZSB9OyB9CiAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotICAgIHN0YXRpYyBFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yIGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlKTsKKyAgICBzdGF0aWMgSXRlcmF0b3IgYmVnaW4oY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENvbGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBs
YXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKKyAg
ICBzdGF0aWMgSXRlcmF0b3IgbGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJO
b2RlJiByb290Tm9kZSk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgotICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3Mm
LCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5z
aWduZWQmIHRyYXZlcnNlZENvdW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQo
Y29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50
LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENv
bGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENv
bGxlY3Rpb25DbGFzcyYsIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2ln
bmVkIGNvdW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxl
Y3Rpb25DbGFzcyYsIEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCk7CiB9OwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5lIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6
RGVzY2VuZGFudHM+OjpiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENv
bnRhaW5lck5vZGUmIHJvb3ROb2RlKQoraW5saW5lIGF1dG8gQ29sbGVjdGlvblRyYXZlcnNhbDxD
b2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+OjpiZWdpbihjb25zdCBDb2xsZWN0
aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSAtPiBJdGVyYXRv
cgogewotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBlbGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUp
OworICAgIGF1dG8gZGVzY2VuZGFudHMgPSBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihyb290
Tm9kZSk7CiAgICAgYXV0byBlbmQgPSBkZXNjZW5kYW50cy5lbmQoKTsKICAgICBmb3IgKGF1dG8g
aXQgPSBkZXNjZW5kYW50cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYg
KGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkgewpAQCAtNjksMTEgKzY4LDEwIEBAIGlu
bGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVj
dGlvblRyYXZlcnNhbFR5cGU6OkRlCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9u
Q2xhc3M+Ci1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDb2xsZWN0aW9uVHJhdmVy
c2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46Omxhc3QoY29uc3QgQ29s
bGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK2lubGlu
ZSBhdXRvIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2Nl
bmRhbnRzPjo6bGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5l
ck5vZGUmIHJvb3ROb2RlKSAtPiBJdGVyYXRvcgogewotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBl
bGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IgaW52YWxpZDsKLSAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5sYXN0KCk7IGl0ICE9
IGludmFsaWQ7IC0taXQpIHsKKyAgICBJdGVyYXRvciBpbnZhbGlkIHsgcm9vdE5vZGUgfTsKKyAg
ICBmb3IgKEl0ZXJhdG9yIGl0IHsgcm9vdE5vZGUsIEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RXaXRo
aW4ocm9vdE5vZGUpIH07IGl0ICE9IGludmFsaWQ7IC0taXQpIHsKICAgICAgICAgaWYgKGNvbGxl
Y3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkgewogICAgICAgICAgICAgLy8gRHJvcCBpdGVyYXRv
ciBhc3NlcnRpb25zIGJlY2F1c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmlu
ZS1ncmFpbmVkIGludmFsaWRhdGlvbiBzY2hlbWUuCiAgICAgICAgICAgICBpdC5kcm9wQXNzZXJ0
aW9ucygpOwpAQCAtODQsMTAgKzgyLDEwIEBAIGlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlCiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci1pbmxpbmUgdm9pZCBDb2xsZWN0
aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZl
cnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVy
c2VkQ291bnQpCitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2
ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9u
Q2xhc3MmIGNvbGxlY3Rpb24sIEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5z
aWduZWQmIHRyYXZlcnNlZENvdW50KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRN
YXRjaGVzKCpjdXJyZW50KSk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBpbnZhbGlk
OworICAgIEl0ZXJhdG9yIGludmFsaWQgeyBjb2xsZWN0aW9uLnJvb3ROb2RlKCkgfTsKICAgICBm
b3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2ZXJz
ZWRDb3VudCkgewogICAgICAgICBkbyB7CiAgICAgICAgICAgICArK2N1cnJlbnQ7CkBAIC05OCwx
MCArOTYsMTAgQEAgaW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJh
dmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUYKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29s
bGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VCYWNrd2FyZChjb25z
dCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Im
IGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KQoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNh
bDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUJhY2t3YXJk
KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVu
c2lnbmVkIGNvdW50KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpj
dXJyZW50KSk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBpbnZhbGlkOworICAgIEl0
ZXJhdG9yIGludmFsaWQgeyBjb2xsZWN0aW9uLnJvb3ROb2RlKCkgfTsKICAgICBmb3IgKDsgY291
bnQ7IC0tY291bnQpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgLS1jdXJyZW50OwpAQCAt
MTE1LDIzICsxMTMsMjMgQEAgdGVtcGxhdGUgPD4KIHN0cnVjdCBDb2xsZWN0aW9uVHJhdmVyc2Fs
PENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+IHsKICAgICB1c2luZyBJdGVy
YXRvciA9IEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+OwogCi0gICAgc3RhdGljIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGVuZChDb250YWluZXJOb2RlJiByb290Tm9kZSkgeyBy
ZXR1cm4gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4ocm9vdE5vZGUpOyB9CisgICAgc3Rh
dGljIEl0ZXJhdG9yIGVuZChDb250YWluZXJOb2RlJiByb290Tm9kZSkgeyByZXR1cm4gSXRlcmF0
b3Iocm9vdE5vZGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgotICAgIHN0YXRpYyBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBiZWdpbihjb25zdCBD
b2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CisgICAgc3RhdGljIEl0
ZXJhdG9yIGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlKTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3Rh
dGljIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGxhc3QoY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOworICAgIHN0YXRpYyBJdGVyYXRvciBsYXN0
KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKIAogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIHZvaWQgdHJh
dmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnRDaGlsZEl0ZXJhdG9y
PEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENv
dW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVy
c2VkQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLSAg
ICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVs
ZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCk7Cisg
ICAgc3RhdGljIHZvaWQgdHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBJ
dGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpOwogfTsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50
PiBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9u
bHk+OjpiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5v
ZGUmIHJvb3ROb2RlKQoraW5saW5lIGF1dG8gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9u
VHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6YmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNz
JiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkgLT4gSXRlcmF0b3IKIHsKICAg
ICBhdXRvIGNoaWxkcmVuID0gY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpOwogICAg
IGF1dG8gZW5kID0gY2hpbGRyZW4uZW5kKCk7CkBAIC0xNDYsMTEgKzE0NCwxMSBAQCBpbmxpbmUg
RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0
aW9uVHJhdmVyc2FsVHlwZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IENvbGxlY3Rpb25UcmF2ZXJz
YWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46Omxhc3QoY29uc3QgQ29s
bGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK2lubGlu
ZSBhdXRvIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxk
cmVuT25seT46Omxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWlu
ZXJOb2RlJiByb290Tm9kZSkgLT4gSXRlcmF0b3IKIHsKICAgICBhdXRvIGNoaWxkcmVuID0gY2hp
bGRyZW5PZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpOwotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9y
PEVsZW1lbnQ+IGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKLSAgICBFbGVtZW50Q2hp
bGRJdGVyYXRvcjxFbGVtZW50PiBsYXN0KHJvb3ROb2RlLCBjaGlsZHJlbi5sYXN0KCkpOworICAg
IEl0ZXJhdG9yIGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKKyAgICBJdGVyYXRvciBs
YXN0KHJvb3ROb2RlLCBjaGlsZHJlbi5sYXN0KCkpOwogICAgIGZvciAoYXV0byBpdCA9IGxhc3Q7
IGl0ICE9IGludmFsaWQ7IC0taXQpIHsKICAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVudE1h
dGNoZXMoKml0KSkgewogICAgICAgICAgICAgLy8gRHJvcCBpdGVyYXRvciBhc3NlcnRpb25zIGJl
Y2F1c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1ncmFpbmVkIGludmFs
aWRhdGlvbiBzY2hlbWUuCkBAIC0xNjIsMTAgKzE2MCwxMCBAQCBpbmxpbmUgRWxlbWVudENoaWxk
SXRlcmF0b3I8RWxlbWVudD4gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2Fs
VHlwZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5lIHZv
aWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5P
bmx5Pjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwg
RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1
bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpCitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2Fs
PENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2ZXJzZUZvcndhcmQo
Y29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBJdGVyYXRvciYgY3VycmVudCwgdW5z
aWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkKIHsKICAgICBBU1NFUlQoY29s
bGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwotICAgIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yPEVsZW1lbnQ+IGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKKyAgICBJdGVyYXRv
ciBpbnZhbGlkKGNvbGxlY3Rpb24ucm9vdE5vZGUoKSk7CiAgICAgZm9yICh0cmF2ZXJzZWRDb3Vu
dCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKICAgICAg
ICAgZG8gewogICAgICAgICAgICAgKytjdXJyZW50OwpAQCAtMTc2LDEwICsxNzQsMTAgQEAgaW5s
aW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hp
bGRyZW5Pbmx5Pjo6dHJhdmVyc2UKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25D
bGFzcz4KLWlubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNh
bFR5cGU6OkNoaWxkcmVuT25seT46OnRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiBjb2xsZWN0aW9uLCBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiYgY3VycmVudCwg
dW5zaWduZWQgY291bnQpCitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rp
b25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENv
bGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNv
dW50KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7
Ci0gICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gaW52YWxpZChjb2xsZWN0aW9uLnJv
b3ROb2RlKCkpOworICAgIEl0ZXJhdG9yIGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsK
ICAgICBmb3IgKDsgY291bnQ7IC0tY291bnQpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAg
LS1jdXJyZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCBiOTQ5
YTY5MWY2MGZkYzk5YzJkN2Y2N2ZkZjhiNzc1Mzg1OGUzOTI4Li43ZmYzMmU1OTk3ZTcwNmQ1Nzli
OTliMGMzZjI3ZmQ1ZWZiYmQyMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Nv
bG9ySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBl
LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgi
CiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJFbGVt
ZW50Q2hpbGRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiSFRNTERh
dGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCkBAIC0yODcsMTMg
KzI4Niw5IEBAIFZlY3RvcjxDb2xvcj4gQ29sb3JJbnB1dFR5cGU6OnN1Z2dlc3RlZENvbG9ycygp
IGNvbnN0CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgQVNTRVJUKGVsZW1lbnQo
KSk7CiAgICAgaWYgKGF1dG8gZGF0YUxpc3QgPSBlbGVtZW50KCktPmRhdGFMaXN0KCkpIHsKLSAg
ICAgICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBvcHRpb25zID0gZGF0YUxpc3QtPm9wdGlvbnMoKTsK
LSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gb3B0aW9ucy0+bGVuZ3RoKCk7Ci0gICAgICAgIHN1
Z2dlc3Rpb25zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSAhPSBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgYXV0byB2YWx1
ZSA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50Pigqb3B0aW9ucy0+aXRlbShpKSkudmFsdWUo
KTsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkU2ltcGxlQ29sb3IodmFsdWUpKQotICAgICAgICAg
ICAgICAgIHN1Z2dlc3Rpb25zLnVuY2hlY2tlZEFwcGVuZChDb2xvcih2YWx1ZSkpOworICAgICAg
ICBmb3IgKGF1dG8mIG9wdGlvbiA6IGRhdGFMaXN0LT5zdWdnZXN0aW9ucygpKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byBjb2xvciA9IHBhcnNlU2ltcGxlQ29sb3JWYWx1ZShvcHRpb24udmFsdWUo
KSkpCisgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMudW5jaGVja2VkQXBwZW5kKCpjb2xvcik7
CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcAppbmRleCAzODM4ZjFiZDdlNGU2N2Y1NTcw
NWUxMDBiM2Q2OTczZDAzODkzZTUwLi45Y2IzYTY3MDIzNzJjZDRiZDJiZmQ5ZWUzYmE4OWZiY2E3
YzhmZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1M
Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb24uaCIKIAogI2luY2x1ZGUgIkhUTUxBcHBsZXRFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSFRNTERhdGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5o
IgpAQCAtNjQsMTIgKzY1LDcgQEAgYm9vbCBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248dHJh
dmVyc2FsVHlwZT46OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIGVsZW1lbnQKICAgICBjYXNlIFNl
bGVjdGVkT3B0aW9uczoKICAgICAgICAgcmV0dXJuIGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVt
ZW50KSAmJiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkuc2VsZWN0ZWQoKTsK
ICAgICBjYXNlIERhdGFMaXN0T3B0aW9uczoKLSAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVt
ZW50PihlbGVtZW50KSkgewotICAgICAgICAgICAgSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbiA9
IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KTsKLSAgICAgICAgICAgIGlmICgh
b3B0aW9uLmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmICFvcHRpb24udmFsdWUoKS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQp
OwogICAgIGNhc2UgTWFwQXJlYXM6CiAgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUo
YXJlYVRhZyk7CiAgICAgY2FzZSBEb2NBcHBsZXRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
bGxDb2xsZWN0aW9uLmlkbAppbmRleCA4ZmNiNjhjNjgwMDA4MzcyM2E1ODU4ZjBjZTZkYmFhYjQ3
NTM5YzNjLi5lNWIxMTkyZTQ5Mjg4NzEzZjMzMjFiY2EwYTdjMjhhNjc4MWFhYTk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmlkbApAQCAtMzEsNiArMzEsNiBAQAog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKIAogICAgIGdldHRl
ciBFbGVtZW50PyAodW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW0ltcGxlbWVudGVkQXM9bmFt
ZWRJdGVtT3JJdGVtc10gZ2V0dGVyIChIVE1MQ29sbGVjdGlvbiBvciBFbGVtZW50KT8gbmFtZWRJ
dGVtKERPTVN0cmluZyBuYW1lKTsKLSAgICBbSW1wbGVtZW50ZWRBcz1uYW1lZE9ySW5kZXhlZEl0
ZW1Pckl0ZW1zXSBsZWdhY3ljYWxsZXIgKEhUTUxDb2xsZWN0aW9uIG9yIEVsZW1lbnQpPyBpdGVt
KG9wdGlvbmFsIERPTVN0cmluZyBuYW1lT3JJbmRleCk7CisgICAgW0ltcGxlbWVudGVkQXM9bmFt
ZWRJdGVtT3JJdGVtc10gZ2V0dGVyIChIVE1MQ29sbGVjdGlvbiBvciBFbGVtZW50KT8gbmFtZWRJ
dGVtKFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gRE9NU3RyaW5nIG5hbWUpOworICAgIFtJ
bXBsZW1lbnRlZEFzPW5hbWVkT3JJbmRleGVkSXRlbU9ySXRlbXNdIGxlZ2FjeWNhbGxlciAoSFRN
TENvbGxlY3Rpb24gb3IgRWxlbWVudCk/IGl0ZW0ob3B0aW9uYWwgW0F0b21TdHJpbmddIERPTVN0
cmluZyBuYW1lT3JJbmRleCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ29sbGVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmlk
bAppbmRleCA2ZGZhZThiZDg5NGFjZGMyZDI2MDU1NjYyNmI0YzczYmRiMWM5YTViLi5jNDUyZDg5
ZWM5YmIwZTA3ZWIzZTQyMzEyM2JmMzIxNzIwOTU2NDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDb2xsZWN0aW9uLmlkbApAQCAtMjcsNSArMjcsNSBAQAogXSBpbnRlcmZhY2UgSFRNTENvbGxl
Y3Rpb24gewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAg
ICBnZXR0ZXIgRWxlbWVudD8gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBnZXR0ZXIg
RWxlbWVudD8gbmFtZWRJdGVtKERPTVN0cmluZyBuYW1lKTsKKyAgICBnZXR0ZXIgRWxlbWVudD8g
bmFtZWRJdGVtKFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gRE9NU3RyaW5nIG5hbWUpOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwCmluZGV4IGJl
Yzg3YjM2ZDM4MTQwZTJjMmNlYzEyZDRhMGJkYmYzODU0ODhhMTkuLjgyNmMyYzU0OTM1MmU1NTdh
NWJiODk1NGY3NmE2MWYwNTJmOTc1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERhdGFMaXN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0
YUxpc3RFbGVtZW50LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCkBAIC0zNyw2ICszNyw3IEBACiAKICNpbmNsdWRlICJHZW5lcmljQ2Fj
aGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJI
VE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5o
IgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxp
bmVzLmg+CkBAIC02NSw2ICs2NiwxMSBAQCB2b2lkIEhUTUxEYXRhTGlzdEVsZW1lbnQ6Om9wdGlv
bkVsZW1lbnRDaGlsZHJlbkNoYW5nZWQoKQogICAgIHRyZWVTY29wZSgpLmlkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeSgpLm5vdGlmeU9ic2VydmVycyhnZXRJZEF0dHJpYnV0ZSgpKTsKIH0KIAorYm9v
bCBIVE1MRGF0YUxpc3RFbGVtZW50Ojppc1N1Z2dlc3Rpb24oY29uc3QgSFRNTE9wdGlvbkVsZW1l
bnQmIGRlc2NlbmRhbnQpCit7CisgICAgcmV0dXJuICFkZXNjZW5kYW50LmlzRGlzYWJsZWRGb3Jt
Q29udHJvbCgpICYmICFkZXNjZW5kYW50LnZhbHVlKCkuaXNFbXB0eSgpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmgKaW5kZXggOGY3MWZhNWM5MTFj
OWI1MGIyYjgxMGQ4NTdmN2FjM2NmMmNjZWMwMS4uN2NmNTcxZTI5YTY3MGNkZjBjZDZkZTU1Mzc1
M2I3ZWE5NTJkODY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxp
c3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50
LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKQEAgLTMzLDExICszMywxMyBAQAogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAK
LSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgSFRNTENvbGxlY3Rpb247CisKIGNsYXNzIEhUTUxEYXRhTGlzdEVsZW1lbnQgZmluYWwgOiBw
dWJsaWMgSFRNTEVsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTERhdGFM
aXN0RWxlbWVudCk7CiBwdWJsaWM6CkBAIC00Nyw2ICs0OSw5IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgb3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOwogCisgICAgc3RhdGljIGJvb2wgaXNT
dWdnZXN0aW9uKGNvbnN0IEhUTUxPcHRpb25FbGVtZW50JiBkZXNjZW5kYW50KTsKKyAgICBhdXRv
IHN1Z2dlc3Rpb25zKCkgY29uc3QgeyByZXR1cm4gZGVzY2VuZGFudHNPZlR5cGU8SFRNTE9wdGlv
bkVsZW1lbnQsIGlzU3VnZ2VzdGlvbj4oKnRoaXMpOyB9CisKIHByaXZhdGU6CiAgICAgSFRNTERh
dGFMaXN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDY4Y2Y1NTNhYjQ5MGFlNGRmMDdjN2RmYjYy
YjdkZGQwNjY5MDYwZWEuLjMyZWQ0YWQzMWJkMzBlY2Y0Y2NjNDhmYjE0MjQ0YTMyMzI0ZTA0Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAg
ICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJp
Z2h0IChDKSAyMDA0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
IChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90
b3JvbGEgTW9iaWxpdHkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDQsNyArNDQsNiBA
QAogI2luY2x1ZGUgIkhUTUxCRElFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJSRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxCdXR0b25FbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rp
b24uaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudEZh
Y3RvcnkuaCIKICNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCkBAIC02MCw2ICs1OSw3
IEBACiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQu
aCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RGlzYWxs
b3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlNpbXVsYXRl
ZENsaWNrLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCkBAIC03NjcsMTQgKzc2Nywx
NiBAQCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIEhUTUxFbGVtZW50Ojphc0Zvcm1Bc3NvY2lhdGVk
RWxlbWVudCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBl
bGVtZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5KGNvbnN0IE5vZGUmIG5vZGUpCitzdGF0aWMgYm9v
bCBlbGVtZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50
KQogewotICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KG5vZGUpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVu
dD4obm9kZSk7CiAgICAgcmV0dXJuIGlzPEhUTUxCRElFbGVtZW50PihlbGVtZW50KSB8fCBlbGVt
ZW50Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGlyQXR0cik7CiB9CiAKK3N0
YXRpYyBib29sIGVsZW1lbnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkoY29uc3QgTm9kZSYgbm9kZSkK
K3sKKyAgICByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGVsZW1lbnRBZmZlY3RzRGly
ZWN0aW9uYWxpdHkoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG5vZGUpKTsKK30KKwogc3RhdGljIHZv
aWQgc2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVseShOb2RlKiBmaXJzdE5vZGUsIGJvb2wgZmxh
ZywgTm9kZSogbGFzdE5vZGUgPSBudWxscHRyKQogewogICAgIGZpcnN0Tm9kZS0+c2V0U2VsZk9y
QW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKGZsYWcpOwpAQCAtODg1LDEwICs4ODcsMTAgQEAg
dm9pZCBIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hpbGRB
dHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnQKICAgICBzZXRIYXNEaXJBdXRvRmxhZ1JlY3Vyc2l2ZWx5
KGNoaWxkLCBmYWxzZSk7CiAgICAgaWYgKCFyZW5kZXJlcigpIHx8IHJlbmRlcmVyKCktPnN0eWxl
KCkuZGlyZWN0aW9uKCkgPT0gdGV4dERpcmVjdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIGZv
ciAoYXV0byYgZWxlbWVudFRvQWRqdXN0IDogZWxlbWVudExpbmVhZ2UodGhpcykpIHsKLSAgICAg
ICAgaWYgKGVsZW1lbnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkoZWxlbWVudFRvQWRqdXN0KSkgewot
ICAgICAgICAgICAgZWxlbWVudFRvQWRqdXN0LmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsK
LSAgICAgICAgICAgIHJldHVybjsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZU
eXBlPEhUTUxFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKGVsZW1lbnRBZmZlY3RzRGly
ZWN0aW9uYWxpdHkoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGVsZW1lbnQuaW52YWxpZGF0ZVN0
eWxlRm9yU3VidHJlZSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggMzk1ZGIxZTYyZWVkZDFkOTAwZTllN2Mz
ZWM4ODhjYjAwY2IyYTRhMy4uN2UwNzRlYjYxMjg5NzYyODkwZTExZTgxYWZjZDZhMDkzZTdmZGQ4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtMjIsMTkgKzIyLDE3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiSW5wdXRNb2RlLmgiCisjaW5jbHVkZSAiU3R5bGVkRWxl
bWVudC5oIgorCiAjaWYgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKQogI2luY2x1ZGUgIkF1dG9jYXBp
dGFsaXplLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgIklucHV0TW9kZS5oIgotI2luY2x1ZGUgIlN0
eWxlZEVsZW1lbnQuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEb2N1bWVudEZy
YWdtZW50OwogY2xhc3MgRm9ybUFzc29jaWF0ZWRFbGVtZW50OwogY2xhc3MgRm9ybU5hbWVkSXRl
bTsKLWNsYXNzIEhUTUxDb2xsZWN0aW9uOwogY2xhc3MgSFRNTEZvcm1FbGVtZW50OwogCiBlbnVt
IGNsYXNzIEVudGVyS2V5SGludCA6IHVpbnQ4X3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmNwcAppbmRleCA5MTcwMWUxNDQ0ZWYyODYwODVmNzIxMjQwYmVmMGFiNmMyNzYx
NjEyLi4yMWNiOWQ5M2M5YTM0MGEzZmIzY2IxNjYyMDBjZDY4MTA0MGU1YTcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5
cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAo
QykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAo
QykgMjAwMCBTdGVmYW4gU2NoaW1hbnNraSAoMVN0ZWluQGdteC5kZSkKLSAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNjYsMTUgKzY2LDEw
IEBAIFJlZjxIVE1MRW1iZWRFbGVtZW50PiBIVE1MRW1iZWRFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQmIGRvY3VtZW50KQogCiBzdGF0aWMgaW5saW5lIFJlbmRlcldpZGdldCogZmluZFdpZGdldFJl
bmRlcmVyKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKSB7
Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7Ci0g
ICAgICAgIH0gd2hpbGUgKG5vZGUgJiYgIWlzPEhUTUxPYmplY3RFbGVtZW50Pigqbm9kZSkpOwot
ICAgIH0KLQorICAgIGlmICghbm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgbm9kZSA9IGFuY2Vz
dG9yc09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oKm5vZGUpLmZpcnN0KCk7CiAgICAgaWYgKG5v
ZGUgJiYgaXM8UmVuZGVyV2lkZ2V0Pihub2RlLT5yZW5kZXJlcigpKSkKICAgICAgICAgcmV0dXJu
IGRvd25jYXN0PFJlbmRlcldpZGdldD4obm9kZS0+cmVuZGVyZXIoKSk7Ci0KICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5jcHAKaW5kZXggZDYxMWJjMWIyMjUxZmY4ZjA4ODQ0ZjY4ZDQyNGZiOWRjOTY2ODJmNC4u
ZmQ3N2Q3YmEwNDNlOWE3Y2Q3MmZmOTZlODU2OGZiOWVjOTgzZjdjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0yLDcgKzIsNyBAQAog
ICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAg
ICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAg
ICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAg
ICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1MRGF0
YUxpc3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKQEAg
LTQxMiwxNCArNDEzLDEyIEBAIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6bWF0Y2hlc0lu
dmFsaWRQc2V1ZG9DbGFzcygpIGNvbnN0CiBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNv
bXB1dGVXaWxsVmFsaWRhdGUoKSBjb25zdAogewogICAgIGlmIChtX2RhdGFMaXN0QW5jZXN0b3JT
dGF0ZSA9PSBVbmtub3duKSB7Ci0gICAgICAgIGZvciAoQ29udGFpbmVyTm9kZSogYW5jZXN0b3Ig
PSBwYXJlbnROb2RlKCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnROb2Rl
KCkpIHsKLSAgICAgICAgICAgIGlmIChhbmNlc3Rvci0+aGFzVGFnTmFtZShkYXRhbGlzdFRhZykp
IHsKLSAgICAgICAgICAgICAgICBtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9IEluc2lkZURhdGFM
aXN0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGlmIChtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9PSBVbmtub3duKQotICAgICAgICAg
ICAgbV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUgPSBOb3RJbnNpZGVEYXRhTGlzdDsKKyNpZiBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICAgICAgbV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUgPSBh
bmNlc3RvcnNPZlR5cGU8SFRNTERhdGFMaXN0RWxlbWVudD4oKnRoaXMpLmZpcnN0KCkKKyAgICAg
ICAgICAgID8gSW5zaWRlRGF0YUxpc3QgOiBOb3RJbnNpZGVEYXRhTGlzdDsKKyNlbHNlCisgICAg
ICAgIG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlID0gTm90SW5zaWRlRGF0YUxpc3Q7CisjZW5kaWYK
ICAgICB9CiAgICAgcmV0dXJuIG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlID09IE5vdEluc2lkZURh
dGFMaXN0ICYmICFpc0Rpc2FibGVkT3JSZWFkT25seSgpOwogfQpAQCAtNjQ1LDE1ICs2NDQsNiBA
QCBBdXRvY2FwaXRhbGl6ZVR5cGUgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXV0b2NhcGl0YWxp
emVUeXBlKCkgY29uc3QKIAogI2VuZGlmCiAKLUhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OmVuY2xvc2luZ0Zvcm1Db250cm9sRWxlbWVudChOb2RlKiBub2Rl
KQotewotICAgIGZvciAoOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAg
ICAgIGlmIChpczxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Pigqbm9kZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudD4obm9kZSk7Ci0gICAgfQotICAg
IHJldHVybiBudWxscHRyOwotfQotCiBTdHJpbmcgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXV0
b2NvbXBsZXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gYXV0b2ZpbGxEYXRhKCkuaWRsRXhwb3Nl
ZFZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApp
bmRleCA2MTM0MGJmYTczYTNhOTY2YmE2MzdhZDQ0ZjU2Y2JkOGZjZmM5NmYwLi4zYWRiMzExYzdh
NjFkNzhkODBiOTkwYTE1NjllNjgxZDBmNjUzMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMTE2LDggKzExNiw2IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc0F1dG9mb2N1c2VkKCkgeyByZXR1cm4gbV9oYXNBdXRvZm9jdXNlZDsgfQogICAg
IHZvaWQgc2V0QXV0b2ZvY3VzZWQoKSB7IG1faGFzQXV0b2ZvY3VzZWQgPSB0cnVlOyB9CiAKLSAg
ICBzdGF0aWMgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZW5jbG9zaW5nRm9ybUNvbnRyb2xFbGVt
ZW50KE5vZGUqKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdXRvY29tcGxldGUoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1dG9jb21wbGV0ZShjb25zdCBTdHJp
bmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmlkbAppbmRleCA0M2M4MzU5OThiNDAwNTllMzMyN2NlNmQ1OWUwZjgyZTZmZGQxODIz
Li40ZDgxZmZkMDM0NTc0NzdjYmEyNGQyZDMzZGJiOTMxYjQ4YjM1ZWU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbApAQCAtMjIs
NSArMjIsNSBAQAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbE93bmVyTm9kZVJvb3QsCiBd
IGludGVyZmFjZSBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiA6IEhUTUxDb2xsZWN0aW9uIHsK
ICAgICBnZXR0ZXIgSFRNTEVsZW1lbnQ/ICh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbSW1w
bGVtZW50ZWRBcz1uYW1lZEl0ZW1Pckl0ZW1zXSBnZXR0ZXIgKFJhZGlvTm9kZUxpc3Qgb3IgRWxl
bWVudCk/IG5hbWVkSXRlbShET01TdHJpbmcgbmFtZSk7IC8vIHNoYWRvd3MgaW5oZXJpdGVkIG5h
bWVkSXRlbSgpCisgICAgW0ltcGxlbWVudGVkQXM9bmFtZWRJdGVtT3JJdGVtc10gZ2V0dGVyIChS
YWRpb05vZGVMaXN0IG9yIEVsZW1lbnQpPyBuYW1lZEl0ZW0oW1JlcXVpcmVzRXhpc3RpbmdBdG9t
U3RyaW5nXSBET01TdHJpbmcgbmFtZSk7IC8vIHNoYWRvd3MgaW5oZXJpdGVkIG5hbWVkSXRlbSgp
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKaW5kZXgg
ODNhYzY4MGQ5MDQ4NzU3MTUwYjViNmViMzZiNjRkNzg4ZjBlYmM3MC4uZTZhZTZmNjhkODc5ODVh
ZjlmZjU0ZWI1ZDY3NTMzYTViNWFiMWYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZVNldEVsZW1lbnQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkhUTUxCb2R5
RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEZy
YW1lRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkxlbmd0aC5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggZGZlMTkwYTU5
ZGRkMWU2YWQxNTMwYzVmMjE5NGIwODU3YWM3YjVlNi4uYjNkZThhN2Q4YTRkNjBiYWEzMDY0ZDhj
ZDk4YTQ3ZWFlNmRmMDY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZp
c3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVy
QGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtv
diAoYXBAbnlwb3AuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBXZWluaWcgKHNh
bUB3ZWJraXQub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCkBAIC0yMTA0LDYgKzIxMDQsNyBAQCBSZW5kZXJTdHlsZSBIVE1MSW5wdXRF
bGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB9
CiAKICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKKwogYm9vbCBIVE1MSW5w
dXRFbGVtZW50OjpzZXR1cERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMoRGF0ZVRpbWVDaG9vc2Vy
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBpZiAoIWRvY3VtZW50KCkudmlldygpKQpA
QCAtMjEzNiwyMCArMjEzNywyNCBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnNldHVwRGF0ZVRp
bWVDaG9vc2VyUGFyYW1ldGVycyhEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzJgogICAgICAgICBw
YXJhbWV0ZXJzLmFuY2hvclJlY3RJblJvb3RWaWV3ID0gSW50UmVjdCgpOwogICAgIHBhcmFtZXRl
cnMuY3VycmVudFZhbHVlID0gdmFsdWUoKTsKICAgICBwYXJhbWV0ZXJzLmlzQW5jaG9yRWxlbWVu
dFJUTCA9IGNvbXB1dGVkU3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRM
OworCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgaWYgKGF1dG8gZGF0YUxpc3Qg
PSB0aGlzLT5kYXRhTGlzdCgpKSB7Ci0gICAgICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gb3B0aW9u
cyA9IGRhdGFMaXN0LT5vcHRpb25zKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IFJl
ZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1l
bnQ+KG9wdGlvbnMtPml0ZW0oaSkpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghaXNWYWxpZFZh
bHVlKG9wdGlvbi0+dmFsdWUoKSkpCisgICAgICAgIGZvciAoYXV0byYgb3B0aW9uIDogZGF0YUxp
c3QtPnN1Z2dlc3Rpb25zKCkpIHsKKyAgICAgICAgICAgIGF1dG8gbGFiZWwgPSBvcHRpb24ubGFi
ZWwoKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBvcHRpb24udmFsdWUoKTsKKyAgICAgICAg
ICAgIGlmICghaXNWYWxpZFZhbHVlKHZhbHVlKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIHBhcmFtZXRlcnMuc3VnZ2VzdGlvblZhbHVlcy5hcHBlbmQoc2FuaXRpemVW
YWx1ZShvcHRpb24tPnZhbHVlKCkpKTsKLSAgICAgICAgICAgIHBhcmFtZXRlcnMubG9jYWxpemVk
U3VnZ2VzdGlvblZhbHVlcy5hcHBlbmQobG9jYWxpemVWYWx1ZShvcHRpb24tPnZhbHVlKCkpKTsK
LSAgICAgICAgICAgIHBhcmFtZXRlcnMuc3VnZ2VzdGlvbkxhYmVscy5hcHBlbmQob3B0aW9uLT52
YWx1ZSgpID09IG9wdGlvbi0+bGFiZWwoKSA/IFN0cmluZygpIDogb3B0aW9uLT5sYWJlbCgpKTsK
KyAgICAgICAgICAgIHBhcmFtZXRlcnMuc3VnZ2VzdGlvblZhbHVlcy5hcHBlbmQoc2FuaXRpemVW
YWx1ZSh2YWx1ZSkpOworICAgICAgICAgICAgcGFyYW1ldGVycy5sb2NhbGl6ZWRTdWdnZXN0aW9u
VmFsdWVzLmFwcGVuZChsb2NhbGl6ZVZhbHVlKHZhbHVlKSk7CisgICAgICAgICAgICBwYXJhbWV0
ZXJzLnN1Z2dlc3Rpb25MYWJlbHMuYXBwZW5kKHZhbHVlID09IGxhYmVsID8gU3RyaW5nKCkgOiBs
YWJlbCk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKKwogICAgIHJldHVybiB0cnVlOwogfQor
CiAjZW5kaWYKIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpjYXBzTG9ja1N0YXRlTWF5SGF2ZUNo
YW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKaW5k
ZXggOWU4Y2ZmZGI5MWE1MTA5MDQyODQ1OWVmZmU4NjVhNDhlMDdmNDgwOC4uNjc2OGZlMTJhMWU1
ZTcyMjBjNTM2OTBmZTZmOTczNTdjYWU3Y2RiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPcHRHcm91cEVsZW1lbnQuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAx
OTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50
dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGly
ayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYg
QWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTEwOSwx
NCArMTA5LDcgQEAgU3RyaW5nIEhUTUxPcHRHcm91cEVsZW1lbnQ6Omdyb3VwTGFiZWxUZXh0KCkg
Y29uc3QKICAgICAKIEhUTUxTZWxlY3RFbGVtZW50KiBIVE1MT3B0R3JvdXBFbGVtZW50Ojpvd25l
clNlbGVjdEVsZW1lbnQoKSBjb25zdAogewotICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBzZWxl
Y3QgPSBwYXJlbnROb2RlKCk7Ci0gICAgd2hpbGUgKHNlbGVjdCAmJiAhaXM8SFRNTFNlbGVjdEVs
ZW1lbnQ+KCpzZWxlY3QpKQotICAgICAgICBzZWxlY3QgPSBzZWxlY3QtPnBhcmVudE5vZGUoKTsK
LSAgICAKLSAgICBpZiAoIXNlbGVjdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0g
ICAgcmV0dXJuIGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50PihzZWxlY3QuZ2V0KCkpOworICAg
IHJldHVybiBjb25zdF9jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4oYW5jZXN0b3JzT2ZUeXBlPEhU
TUxTZWxlY3RFbGVtZW50PigqdGhpcykuZmlyc3QoKSk7CiB9CiAKIHZvaWQgSFRNTE9wdEdyb3Vw
RWxlbWVudDo6YWNjZXNzS2V5QWN0aW9uKGJvb2wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dGlvbkVsZW1lbnQuY3BwCmluZGV4IGMzZGQzMGQ1ZGM2MmJmODMxNzA5ZTU3MDA0Njg4ZDRhODhi
M2UyYTYuLjNjMDFlNjk1YWQxMDI2NzdhYWZmMDJkYjBmMjExZGI4OGY2OTI4NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCkBAIC0zLDcgKzMsNyBAQAogICog
ICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICog
ICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQogICogICAg
ICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKLSAqIENv
cHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKQEAgLTE2Niw4ICsxNjYsOCBAQCB2b2lkIEhUTUxPcHRpb25FbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3Ry
aQogewogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIGlmIChuYW1lID09IHZhbHVl
QXR0cikgewotICAgICAgICBpZiAoUmVmUHRyPEhUTUxEYXRhTGlzdEVsZW1lbnQ+IGRhdGFMaXN0
ID0gb3duZXJEYXRhTGlzdEVsZW1lbnQoKSkKLSAgICAgICAgICAgIGRhdGFMaXN0LT5vcHRpb25F
bGVtZW50Q2hpbGRyZW5DaGFuZ2VkKCk7CisgICAgICAgIGZvciAoYXV0byYgZGF0YUxpc3QgOiBh
bmNlc3RvcnNPZlR5cGU8SFRNTERhdGFMaXN0RWxlbWVudD4oKnRoaXMpKQorICAgICAgICAgICAg
ZGF0YUxpc3Qub3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOwogICAgIH0gZWxzZQogI2Vu
ZGlmCiAgICAgaWYgKG5hbWUgPT0gZGlzYWJsZWRBdHRyKSB7CkBAIC0yMzgsMzkgKzIzOCwxNyBA
QCB2b2lkIEhUTUxPcHRpb25FbGVtZW50OjpzZXRTZWxlY3RlZFN0YXRlKGJvb2wgc2VsZWN0ZWQp
CiB2b2lkIEhUTUxPcHRpb25FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFu
Z2UmIGNoYW5nZSkKIHsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICBpZiAoUmVm
UHRyPEhUTUxEYXRhTGlzdEVsZW1lbnQ+IGRhdGFMaXN0ID0gb3duZXJEYXRhTGlzdEVsZW1lbnQo
KSkKLSAgICAgICAgZGF0YUxpc3QtPm9wdGlvbkVsZW1lbnRDaGlsZHJlbkNoYW5nZWQoKTsKLSAg
ICBlbHNlCisgICAgZm9yIChhdXRvJiBkYXRhTGlzdCA6IGFuY2VzdG9yc09mVHlwZTxIVE1MRGF0
YUxpc3RFbGVtZW50PigqdGhpcykpCisgICAgICAgIGRhdGFMaXN0Lm9wdGlvbkVsZW1lbnRDaGls
ZHJlbkNoYW5nZWQoKTsKICNlbmRpZgogICAgIGlmIChSZWZQdHI8SFRNTFNlbGVjdEVsZW1lbnQ+
IHNlbGVjdCA9IG93bmVyU2VsZWN0RWxlbWVudCgpKQogICAgICAgICBzZWxlY3QtPm9wdGlvbkVs
ZW1lbnRDaGlsZHJlbkNoYW5nZWQoKTsKICAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGNoYW5nZSk7CiB9CiAKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLUhUTUxEYXRhTGlz
dEVsZW1lbnQqIEhUTUxPcHRpb25FbGVtZW50Ojpvd25lckRhdGFMaXN0RWxlbWVudCgpIGNvbnN0
Ci17Ci0gICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IGRhdGFsaXN0ID0gcGFyZW50Tm9kZSgpOwot
ICAgIHdoaWxlIChkYXRhbGlzdCAmJiAhaXM8SFRNTERhdGFMaXN0RWxlbWVudD4oKmRhdGFsaXN0
KSkKLSAgICAgICAgZGF0YWxpc3QgPSBkYXRhbGlzdC0+cGFyZW50Tm9kZSgpOwotCi0gICAgaWYg
KCFkYXRhbGlzdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZG93bmNh
c3Q8SFRNTERhdGFMaXN0RWxlbWVudD4oZGF0YWxpc3QuZ2V0KCkpOwotfQotI2VuZGlmCi0KIEhU
TUxTZWxlY3RFbGVtZW50KiBIVE1MT3B0aW9uRWxlbWVudDo6b3duZXJTZWxlY3RFbGVtZW50KCkg
Y29uc3QKIHsKLSAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gc2VsZWN0ID0gcGFyZW50Tm9kZSgp
OwotICAgIHdoaWxlIChzZWxlY3QgJiYgIWlzPEhUTUxTZWxlY3RFbGVtZW50Pigqc2VsZWN0KSkK
LSAgICAgICAgc2VsZWN0ID0gc2VsZWN0LT5wYXJlbnROb2RlKCk7Ci0KLSAgICBpZiAoIXNlbGVj
dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFNl
bGVjdEVsZW1lbnQ+KHNlbGVjdC5nZXQoKSk7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SFRNTFNl
bGVjdEVsZW1lbnQqPihhbmNlc3RvcnNPZlR5cGU8SFRNTFNlbGVjdEVsZW1lbnQ+KCp0aGlzKS5m
aXJzdCgpKTsKIH0KIAogU3RyaW5nIEhUTUxPcHRpb25FbGVtZW50OjpsYWJlbCgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKaW5kZXggZjBkOTRjOGE2YjVmMzA4
MzM0ZWFhMTFkYTllNDAyMWI1YzBlNTdlNi4uOTFjNWFiYzdlMDE3YzExZmExMzJmZDMxZjAxYmUx
ZTMyNGUyNmIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaApAQCAt
Miw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUu
b3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUu
b3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3Jn
KQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDEwLCAyMDExLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI4LDcgKzI4
LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MRGF0YUxpc3RFbGVtZW50
OwogY2xhc3MgSFRNTFNlbGVjdEVsZW1lbnQ7CiAKIGNsYXNzIEhUTUxPcHRpb25FbGVtZW50IGZp
bmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKQEAgLTQ5LDkgKzQ4LDYgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgc2VsZWN0ZWQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFNlbGVjdGVkKGJvb2wpOwogCi0jaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAg
V0VCQ09SRV9FWFBPUlQgSFRNTERhdGFMaXN0RWxlbWVudCogb3duZXJEYXRhTGlzdEVsZW1lbnQo
KSBjb25zdDsKLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIEhUTUxTZWxlY3RFbGVtZW50KiBv
d25lclNlbGVjdEVsZW1lbnQoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBs
YWJlbCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
c0NvbGxlY3Rpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rp
b24uaWRsCmluZGV4IDZlOWZhNGQwZTE2MTYwZGEyYjdjYWI4MGQwMmE5N2FiZDgwNjNiMDUuLmYx
YzQ3N2U0ODY4ZTBmZTQwNTlmZGZjNjA1MWJlYzNhMWYyYzVjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGwKQEAgLTMyLDUgKzMyLDUgQEAKIAog
ICAgIC8vIEZJWE1FOiBDYW4gdGhlc2UganVzdCBiZSBpbmhlcml0ZWQgZnJvbSBIVE1MQ29sbGVj
dGlvbiBsaWtlIGluIHRoZSBzcGVjPwogICAgIGdldHRlciBIVE1MT3B0aW9uRWxlbWVudD8gaXRl
bSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBnZXR0ZXIgSFRNTE9wdGlvbkVsZW1lbnQ/IG5h
bWVkSXRlbShET01TdHJpbmcgbmFtZSk7CisgICAgZ2V0dGVyIEhUTUxPcHRpb25FbGVtZW50PyBu
YW1lZEl0ZW0oW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBET01TdHJpbmcgbmFtZSk7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5k
ZXggNTYyMzFhNTBiMmE0NjBlNGFkMGI4N2YwZDhiNGE4MDk1NjQ0NmNhMi4uMGZhM2M2OWQ0ZTky
NmI3MjliZTdlNWY2MzAyYmIwMjE0NzY0OWIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAi
Q2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKICNpbmNsdWRlICJDb250ZW50
U2VjdXJpdHlQb2xpY3kuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
ckNsaWVudC5oIgpAQCAtNTAsNyArNTEsNiBAQAogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNp
bmNsdWRlICJTdHlsZVRyZWVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN1YmZyYW1lTG9hZGVyLmgi
Ci0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
VXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYXRjaFNj
b3BlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCmluZGV4IDYxZWU1OTRl
NjAzNzc5MGVhZGZjOGFmZDFjMTVlY2M0NmYzOGM2YzkuLmQzYWVkYTkwMzU1MzhkOTZmMjJiZTFh
NTQwZTczNjEwMzllZWVjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuaWRsCkBAIC0zNiw3ICszNiw3IEBACiAgICAgLyogW1NhbWVPYmplY3RdICovIHJlYWRvbmx5
IGF0dHJpYnV0ZSBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gb3B0aW9uczsKICAgICBbQ0VSZWFjdGlv
bnNdIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBnZXR0ZXIgSFRNTE9wdGlv
bkVsZW1lbnQ/IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7IC8vIEZJWE1FOiBUaGUgc3BlYyBo
YXMgdGhpcyByZXR1cm5pbmcgRWxlbWVudD8uCi0gICAgSFRNTE9wdGlvbkVsZW1lbnQ/IG5hbWVk
SXRlbShET01TdHJpbmcgbmFtZSk7CisgICAgSFRNTE9wdGlvbkVsZW1lbnQ/IG5hbWVkSXRlbShb
UmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIERPTVN0cmluZyBuYW1lKTsKICAgICBbQ0VSZWFj
dGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGFkZCgoSFRNTE9wdGlvbkVsZW1lbnQgb3Ig
SFRNTE9wdEdyb3VwRWxlbWVudCkgZWxlbWVudCwgb3B0aW9uYWwgKEhUTUxFbGVtZW50IG9yIGxv
bmcpPyBiZWZvcmUgPSBudWxsKTsKICAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9u
XSB2b2lkIHJlbW92ZSgpOyAvLyBDaGlsZE5vZGUgb3ZlcmxvYWQKICAgICBbQ0VSZWFjdGlvbnNd
IHZvaWQgcmVtb3ZlKGxvbmcgaW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUNlbGxFbGVtZW50LmNwcAppbmRleCBmYmY4ZjczM2U0ODAwMDQ5MWVhZDg2MTY3M2I4NjMxOTIz
Zjk5MTg2Li5hNjAwMzhmZTk0ZjI5OGIwOGVhNGFiNmVkYWNkN2QxNTU3YWE4NzU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcApAQCAtMTMxLDkgKzEz
MSw5IEBAIHZvaWQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TCiAKIGNvbnN0IFN0eWxlUHJvcGVydGllcyog
SFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmFkZGl0aW9uYWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHls
ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKFJlZlB0cjxIVE1MVGFibGVFbGVtZW50PiB0YWJsZSA9IGZp
bmRQYXJlbnRUYWJsZSgpKQorICAgIGlmIChhdXRvIHRhYmxlID0gZmluZFBhcmVudFRhYmxlKCkp
CiAgICAgICAgIHJldHVybiB0YWJsZS0+YWRkaXRpb25hbENlbGxTdHlsZSgpOwotICAgIHJldHVy
biAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBib29sIEhUTUxUYWJsZUNlbGxFbGVtZW50
Ojppc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCmluZGV4IDcyOGI1ZjNkMmI1
NTIzYjA0YjM5OWYyY2M0YjU1YWE0ZjhiMWZjNzQuLmY0ZDQ0NzU4MTFlOGE0MGNhMzJhNjdiY2Y2
YjIxNmMyNTNhN2U3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Q29sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVt
ZW50LmNwcApAQCAtOTIsNyArOTIsNyBAQCBjb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJs
ZUNvbEVsZW1lbnQ6OmFkZGl0aW9uYWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZQogewogICAg
IGlmICghaGFzVGFnTmFtZShjb2xncm91cFRhZykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGlmIChSZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gdGFibGUgPSBmaW5kUGFyZW50VGFibGUo
KSkKKyAgICBpZiAoYXV0byB0YWJsZSA9IGZpbmRQYXJlbnRUYWJsZSgpKQogICAgICAgICByZXR1
cm4gdGFibGUtPmFkZGl0aW9uYWxHcm91cFN0eWxlKGZhbHNlKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IDc2N2Ez
ZTM4YWY0ODJkZDkyYjE0OWM4ZjBlZThiODY2ZTdkNGI3YmYuLmE1ZjgwZmUwYzkxZjg4ZDk2MGFi
N2ZlN2FmMDY4YTQ4Yjg5NjQ1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVt
ZW50LmNwcApAQCAtNDczLDcgKzQ3Myw3IEBAIEhUTUxUYWJsZUVsZW1lbnQ6OkNlbGxCb3JkZXJz
IEhUTUxUYWJsZUVsZW1lbnQ6OmNlbGxCb3JkZXJzKCkgY29uc3QKICAgICByZXR1cm4gTm9Cb3Jk
ZXJzOwogfQogCi1SZWY8U3R5bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVT
aGFyZWRDZWxsU3R5bGUoKQorUmVmPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6
Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCkgY29uc3QKIHsKICAgICBhdXRvIHN0eWxlID0gTXV0YWJs
ZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAKQEAgLTUxNCw3ICs1MTQsNyBAQCBSZWY8U3R5
bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQog
ICAgIHJldHVybiBzdHlsZTsKIH0KIAotY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBIVE1MVGFibGVF
bGVtZW50OjphZGRpdGlvbmFsQ2VsbFN0eWxlKCkKK2NvbnN0IFN0eWxlUHJvcGVydGllcyogSFRN
TFRhYmxlRWxlbWVudDo6YWRkaXRpb25hbENlbGxTdHlsZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X3NoYXJlZENlbGxTdHlsZSkKICAgICAgICAgbV9zaGFyZWRDZWxsU3R5bGUgPSBjcmVhdGVTaGFy
ZWRDZWxsU3R5bGUoKTsKQEAgLTUzOCwxMSArNTM4LDEwIEBAIHN0YXRpYyBTdHlsZVByb3BlcnRp
ZXMqIGxlYWtHcm91cEJvcmRlclN0eWxlKGludCByb3dzKQogICAgIHJldHVybiAmc3R5bGUubGVh
a1JlZigpOwogfQogCi1jb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6OmFk
ZGl0aW9uYWxHcm91cFN0eWxlKGJvb2wgcm93cykKK2NvbnN0IFN0eWxlUHJvcGVydGllcyogSFRN
TFRhYmxlRWxlbWVudDo6YWRkaXRpb25hbEdyb3VwU3R5bGUoYm9vbCByb3dzKSBjb25zdAogewog
ICAgIGlmIChtX3J1bGVzQXR0ciAhPSBHcm91cHNSdWxlcykKLSAgICAgICAgcmV0dXJuIDA7Ci0K
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKHJvd3MpIHsKICAgICAgICAgc3RhdGlj
IFN0eWxlUHJvcGVydGllcyogcm93Qm9yZGVyU3R5bGUgPSBsZWFrR3JvdXBCb3JkZXJTdHlsZSh0
cnVlKTsKICAgICAgICAgcmV0dXJuIHJvd0JvcmRlclN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUVsZW1lbnQuaAppbmRleCBiMzY1NDIwOWJkYTg1Nzg4NWM2OTMxYzgxYjRlZTNmOTg2
ZjM4NDE2Li4zNzU2ZGM2MTA3NWM0YmY3OTU3ZjkwNzNiNzg3NWE1MmYyZTU2YjFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaApAQCAtNjUsOCArNjUsOCBAQCBwdWJsaWM6
CiAgICAgY29uc3QgQXRvbVN0cmluZyYgcnVsZXMoKSBjb25zdDsKICAgICBjb25zdCBBdG9tU3Ry
aW5nJiBzdW1tYXJ5KCkgY29uc3Q7CiAKLSAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0
aW9uYWxDZWxsU3R5bGUoKTsKLSAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0aW9uYWxH
cm91cFN0eWxlKGJvb2wgcm93cyk7CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRpdGlv
bmFsQ2VsbFN0eWxlKCkgY29uc3Q7CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRpdGlv
bmFsR3JvdXBTdHlsZShib29sIHJvd3MpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIEhUTUxUYWJs
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CkBAIC04Niw3ICs4Niw3
IEBAIHByaXZhdGU6CiAKICAgICBDZWxsQm9yZGVycyBjZWxsQm9yZGVycygpIGNvbnN0OwogCi0g
ICAgUmVmPFN0eWxlUHJvcGVydGllcz4gY3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCk7CisgICAgUmVm
PFN0eWxlUHJvcGVydGllcz4gY3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCkgY29uc3Q7CiAKICAgICBI
VE1MVGFibGVTZWN0aW9uRWxlbWVudCogbGFzdEJvZHkoKSBjb25zdDsKIApAQCAtOTUsNyArOTUs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9mcmFtZUF0dHIgeyBmYWxzZSB9OyAvLyBJbXBsaWVz
IGEgdGhpbiBib3JkZXIgd2lkdGggaWYgbm8gYm9yZGVyIGlzIHNldCBhbmQgdGhlbiBhIGNlcnRh
aW4gc2V0IG9mIHNvbGlkL2hpZGRlbiBib3JkZXJzIGJhc2VkIG9mZiB0aGUgdmFsdWUuCiAgICAg
VGFibGVSdWxlcyBtX3J1bGVzQXR0ciB7IFVuc2V0UnVsZXMgfTsgLy8gSW1wbGllcyBhIHRoaW4g
Ym9yZGVyIHdpZHRoLCBhIGNvbGxhcHNpbmcgYm9yZGVyIG1vZGVsLCBhbmQgYWxsIGJvcmRlcnMg
b24gdGhlIHRhYmxlIGJlY29taW5nIHNldCB0byBoaWRkZW4gKGlmIGZyYW1lL2JvcmRlciBhcmUg
cHJlc2VudCwgdG8gbm9uZSBvdGhlcndpc2UpLgogICAgIHVuc2lnbmVkIHNob3J0IG1fcGFkZGlu
ZyB7IDEgfTsKLSAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBtX3NoYXJlZENlbGxTdHlsZTsK
KyAgICBtdXRhYmxlIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IG1fc2hhcmVkQ2VsbFN0eWxlOwog
fTsKIAogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVQYXJ0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRF
bGVtZW50LmNwcAppbmRleCAzNTg3ODAxNjIxMGZjYWFmZjYwOTBlNjk1Mzk0MTU1YzQ1NWFlYTdj
Li4zNDliMDM1MTJhOGVjNTQwNTI0MWJiYTZmYzNkNGE5ZmY3NDM2ZWYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcApAQCAtNCw3ICs0LDcgQEAKICAq
ICAgICAgICAgICAoQykgMTk5OCBXYWxkbyBCYXN0aWFuIChiYXN0aWFuQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAg
ICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTg1LDEyICs4NSw5IEBAIHZvaWQgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmNvbGxl
Y3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROCiAgICAgICAg
IEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSwg
dmFsdWUsIHN0eWxlKTsKIH0KIAotUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IEhUTUxUYWJsZVBh
cnRFbGVtZW50OjpmaW5kUGFyZW50VGFibGUoKSBjb25zdAorUmVmUHRyPGNvbnN0IEhUTUxUYWJs
ZUVsZW1lbnQ+IEhUTUxUYWJsZVBhcnRFbGVtZW50OjpmaW5kUGFyZW50VGFibGUoKSBjb25zdAog
ewotICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBwYXJlbnQgPSBwYXJlbnROb2RlKCk7Ci0gICAg
d2hpbGUgKHBhcmVudCAmJiAhaXM8SFRNTFRhYmxlRWxlbWVudD4oKnBhcmVudCkpCi0gICAgICAg
IHBhcmVudCA9IHBhcmVudC0+cGFyZW50Tm9kZSgpOwotICAgIHJldHVybiBkb3duY2FzdDxIVE1M
VGFibGVFbGVtZW50PihwYXJlbnQuZ2V0KCkpOworICAgIHJldHVybiBhbmNlc3RvcnNPZlR5cGU8
SFRNTFRhYmxlRWxlbWVudD4oKnRoaXMpLmZpcnN0KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuaAppbmRleCBkM2JjZjUwYmFlMjFjMzU4Y2RlMjNm
MzM2M2U1YzY5MmQ1NmYxMWU2Li4wNGY5NDcxYmFiYTI4NzdmNzU0NTQwYzliMWE1ODA5NzI3YmVi
NTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5oCkBAIC00
LDcgKzQsNyBAQAogICogICAgICAgICAgIChDKSAxOTk4IFdhbGRvIEJhc3RpYW4gKGJhc3RpYW5A
a2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3Jn
KQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3Jn
KQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDIsNyAr
NDIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb2xsZWN0U3R5bGVG
b3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21T
dHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8
SFRNTFRhYmxlRWxlbWVudD4gZmluZFBhcmVudFRhYmxlKCkgY29uc3Q7CisgICAgUmVmUHRyPGNv
bnN0IEhUTUxUYWJsZUVsZW1lbnQ+IGZpbmRQYXJlbnRUYWJsZSgpIGNvbnN0OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVTZWN0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50LmNwcAppbmRleCBlNTE2YTgxODRkMWYwZjgzNzNjZDIxYTRhN2E0MDkzY2Y5
YmNmMmYxLi43NzlkOTY0ZTkzODYyZDA0NzlkZmY0MDhiNGYwNTM5MjRhNzI1MDA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcApAQCAtMjYs
NyArMjYsNiBAQAogI2luY2x1ZGUgIkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCiAKICNpbmNs
dWRlICJHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVj
dGlvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVJvd0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDNjOWIzMzhm
ZDI2MjZkNzRkNmRlMDhjZWZlNDVlNTM2YjM0YTE2MDMuLmUyN2FmYmMwMGQ0ZTg0NTZiMDQwYTRh
YzY0M2U3YWJhYWY3YWZhMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChD
KSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkg
QW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEg
RGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIw
MDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTc2
MSwzNCArNzYxLDI0IEBAIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KiBlbmNsb3NpbmdUZXh0
Rm9ybUNvbnRyb2woY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQogICAgIHJldHVybiBhbmNlc3Rv
ciAmJiBhbmNlc3Rvci0+aXNUZXh0RmllbGQoKSA/IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50PihhbmNlc3Rvci5nZXQoKSkgOiBudWxscHRyOwogfQogCi1zdGF0aWMgY29uc3Qg
RWxlbWVudCogcGFyZW50SFRNTEVsZW1lbnQoY29uc3QgRWxlbWVudCogZWxlbWVudCkKLXsKLSAg
ICB3aGlsZSAoZWxlbWVudCkgewotICAgICAgICBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxl
bWVudCgpOwotICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkp
Ci0gICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0K
IFN0cmluZyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlyZWN0aW9uRm9yRm9ybURhdGEo
KSBjb25zdAogewotICAgIGZvciAoY29uc3QgRWxlbWVudCogZWxlbWVudCA9IHRoaXM7IGVsZW1l
bnQ7IGVsZW1lbnQgPSBwYXJlbnRIVE1MRWxlbWVudChlbGVtZW50KSkgewotICAgICAgICBjb25z
dCBBdG9tU3RyaW5nJiBkaXJBdHRyaWJ1dGVWYWx1ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oZGlyQXR0cik7Ci0gICAgICAgIGlmIChkaXJBdHRyaWJ1dGVWYWx1
ZS5pc051bGwoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwgInJ0bCIpIHx8IGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAibHRyIikpCi0gICAg
ICAgICAgICByZXR1cm4gZGlyQXR0cmlidXRlVmFsdWU7Ci0KLSAgICAgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAiYXV0byIpKSB7Ci0gICAg
ICAgICAgICBib29sIGlzQXV0bzsKLSAgICAgICAgICAgIFRleHREaXJlY3Rpb24gdGV4dERpcmVj
dGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxFbGVtZW50Kj4oZWxlbWVudCktPmRpcmVjdGlv
bmFsaXR5SWZoYXNEaXJBdXRvQXR0cmlidXRlKGlzQXV0byk7Ci0gICAgICAgICAgICByZXR1cm4g
dGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgPyAicnRsIiA6ICJsdHIiOworICAg
IGF1dG8gZGlyZWN0aW9uID0gW3RoaXNdIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDog
bGluZWFnZU9mVHlwZTxIVE1MRWxlbWVudD4oKnRoaXMpKSB7CisgICAgICAgICAgICBhdXRvJiB2
YWx1ZSA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkaXJBdHRyKTsK
KyAgICAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgInJ0
bCIpKQorICAgICAgICAgICAgICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpSVEw7CisgICAgICAg
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJsdHIiKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gVGV4dERpcmVjdGlvbjo6TFRSOworICAgICAgICAgICAgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAiYXV0byIpKSB7CisgICAgICAg
ICAgICAgICAgYm9vbCBpc0F1dG87CisgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZGly
ZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUoaXNBdXRvKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQotICAgIH0KKyAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKKyAg
ICB9KCk7CiAKLSAgICByZXR1cm4gImx0ciI7CisgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfczsKIH0KIAogRXhjZXB0aW9uT3I8dm9p
ZD4gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldE1heExlbmd0aChpbnQgbWF4TGVuZ3Ro
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKaW5kZXggMDRkZTc1MTNjYWM0ODJi
Zjc2MGI0ZTRjNmZmYTAyZWMyZTViNjdmNy4uMjRlNDBjMmM2ZDMzMTE0OTNiNjE3YzY1Y2RmMmY1
OGE4NTEyMjJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ3VzdG9tSGVh
ZGVyRmllbGRzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJFbGVt
ZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgpAQCAtNTEsNyArNTIsNiBAQAogI2luY2x1ZGUg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRG
aWVsZElucHV0VHlwZS5jcHAKaW5kZXggZmRiOGUzMGZmZWM5YmIwOWFjZTZiMjllYzZhMzAxYTM5
MGVlZDU4MS4uMDJlZmY0OGYzODhmMTgwZGJhOTRhMTE4MGNlNTFjMjI0YTIxY2NhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTg2Nyw2ICs4
NjcsOCBAQCBJbnRSZWN0IFRleHRGaWVsZElucHV0VHlwZTo6ZWxlbWVudFJlY3RJblJvb3RWaWV3
Q29vcmRpbmF0ZXMoKSBjb25zdAogCiBWZWN0b3I8U3RyaW5nPiBUZXh0RmllbGRJbnB1dFR5cGU6
OnN1Z2dlc3Rpb25zKCkKIHsKKyAgICAvLyBGSVhNRTogU3VnZ2VzdGlvbnMgYXJlICJ0eXBpbmcg
Y29tcGxldGlvbnMiIGFuZCBzbyBzaG91bGQgcHJvYmFibHkgdXNlIHRoZSBmaW5kUGxhaW5UZXh0
IGFsZ29yaXRobSByYXRoZXIgdGhhbiB0aGUgc2ltcGxpc3RpYyAiaWdub3JpbmcgQVNDSUkgY2Fz
ZSIgcnVsZXMuCisKICAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uczsKICAgICBWZWN0b3I8
U3RyaW5nPiBtYXRjaGVzQ29udGFpbmluZ1ZhbHVlOwogCkBAIC04NzYsMTIgKzg3OCwxMSBAQCBW
ZWN0b3I8U3RyaW5nPiBUZXh0RmllbGRJbnB1dFR5cGU6OnN1Z2dlc3Rpb25zKCkKICAgICAgICAg
cmV0dXJuIG1fY2FjaGVkU3VnZ2VzdGlvbnMuc2Vjb25kOwogCiAgICAgaWYgKGF1dG8gZGF0YUxp
c3QgPSBlbGVtZW50KCktPmRhdGFMaXN0KCkpIHsKLSAgICAgICAgUmVmPEhUTUxDb2xsZWN0aW9u
PiBvcHRpb25zID0gZGF0YUxpc3QtPm9wdGlvbnMoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgYXV0byogb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KG9wdGlvbnMt
Pml0ZW0oaSkpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghZWxlbWVudCgpLT5pc1ZhbGlkVmFs
dWUob3B0aW9uLT52YWx1ZSgpKSkKKyAgICAgICAgZm9yIChhdXRvJiBvcHRpb24gOiBkYXRhTGlz
dC0+c3VnZ2VzdGlvbnMoKSkgeworICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gb3B0aW9uLnZh
bHVlKCk7CisgICAgICAgICAgICBpZiAoIWVsZW1lbnQoKS0+aXNWYWxpZFZhbHVlKHZhbHVlKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0g
c2FuaXRpemVWYWx1ZShvcHRpb24tPnZhbHVlKCkpOworICAgICAgICAgICAgdmFsdWUgPSBzYW5p
dGl6ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgICAgIGlmIChlbGVtZW50VmFsdWUuaXNFbXB0eSgp
KQogICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zLmFwcGVuZCh2YWx1ZSk7CiAgICAgICAgICAg
ICBlbHNlIGlmICh2YWx1ZS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoZWxlbWVudFZhbHVl
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCBlNWRm
M2MzYjc4NjZlYTlmZDQzZGFjY2Y0YTQ2MjJiZGI2NDg5NDIyLi5mY2U1OTI2YWI1ZWZhNWRhNWNk
NDQ3NGQxNmVlYzJkODkyNzBlYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jk
cy5oIgogI2luY2x1ZGUgIkRPTVJlY3QuaCIKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUg
IkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcAppbmRleCBlMWUyM2E3NmE0ZDk0NmY5ZWEyN2Y2MjZhMjJiMmNjNzc4YTk0
ZDMxLi40NDgzZGY3MDAzZmIxZWQ1NDk2ZGNhYmIyMzAzZWFhNTUwYzdkZmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMzIsMTAgKzMyLDggQEAKICNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU3BhY2VT
cGxpdFN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTcwLDcgKzY4LDcgQEAgRXhjZXB0aW9uT3I8VmVjdG9yPFJlZjxO
b2RlPj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0RWxlbWVudHNCeUMK
IAogICAgIFZlY3RvcjxSZWY8Tm9kZT4+IG5vZGVzOwogCi0gICAgZm9yIChFbGVtZW50JiBlbGVt
ZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGlzPENvbnRhaW5lck5vZGU+KGNvbnRhaW5lcikgPyBk
b3duY2FzdDxDb250YWluZXJOb2RlPigqY29udGFpbmVyKSA6IGRvY3VtZW50KSkgeworICAgIGZv
ciAoRWxlbWVudCYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGlzPENvbnRh
aW5lck5vZGU+KGNvbnRhaW5lcikgPyBkb3duY2FzdDxDb250YWluZXJOb2RlPigqY29udGFpbmVy
KSA6IGRvY3VtZW50KSkgewogICAgICAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFj
Y2Vzc2libGl0eU9iamVjdEZvck5vZGUoZWxlbWVudCkpIHsKICAgICAgICAgICAgIGlmIChheE9i
amVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCkgPT0gcm9sZSkKICAgICAgICAgICAgICAgICBub2Rl
cy5hcHBlbmQoZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDI5MzBiNDVmOGYyMDc1MWU4NTZjZGEz
ZTA1MTg5YWE0NDRlMTg1NTEuLmFjZTVmOWFjNTNjYmUyNmZkM2M0ZDlkNGYyMjQ5NGZkODA2NWE1
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC01MDksMjAgKzUwOSwxOCBAQCB2b2lkIEluc3BlY3RvckNTU0Fn
ZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGlu
dCBubwogICAgICAgICAvLyBJbmhlcml0ZWQgc3R5bGVzLgogICAgICAgICBpZiAoIWluY2x1ZGVJ
bmhlcml0ZWQgfHwgKmluY2x1ZGVJbmhlcml0ZWQpIHsKICAgICAgICAgICAgIGF1dG8gZW50cmll
cyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHls
ZUVudHJ5Pjo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0g
ZWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwotICAgICAgICAgICAgd2hpbGUgKHBhcmVudEVsZW1l
bnQpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBwYXJlbnRTdHlsZVJlc29sdmVyID0gcGFyZW50
RWxlbWVudC0+c3R5bGVSZXNvbHZlcigpOwotICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50TWF0
Y2hlZFJ1bGVzID0gcGFyZW50U3R5bGVSZXNvbHZlci5zdHlsZVJ1bGVzRm9yRWxlbWVudChwYXJl
bnRFbGVtZW50LCBTdHlsZTo6UmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKKyAgICAgICAgICAgIGZv
ciAoYXV0byYgYW5jZXN0b3IgOiBhbmNlc3RvcnNPZlR5cGU8RWxlbWVudD4oKmVsZW1lbnQpKSB7
CisgICAgICAgICAgICAgICAgYXV0byYgcGFyZW50U3R5bGVSZXNvbHZlciA9IGFuY2VzdG9yLnN0
eWxlUmVzb2x2ZXIoKTsKKyAgICAgICAgICAgICAgICBhdXRvIHBhcmVudE1hdGNoZWRSdWxlcyA9
IHBhcmVudFN0eWxlUmVzb2x2ZXIuc3R5bGVSdWxlc0ZvckVsZW1lbnQoJmFuY2VzdG9yLCBTdHls
ZTo6UmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKICAgICAgICAgICAgICAgICBhdXRvIGVudHJ5ID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5OjpjcmVhdGUoKQot
ICAgICAgICAgICAgICAgICAgICAuc2V0TWF0Y2hlZENTU1J1bGVzKGJ1aWxkQXJyYXlGb3JNYXRj
aGVkUnVsZUxpc3QocGFyZW50TWF0Y2hlZFJ1bGVzLCBzdHlsZVJlc29sdmVyLCAqcGFyZW50RWxl
bWVudCwgUHNldWRvSWQ6Ok5vbmUpKQorICAgICAgICAgICAgICAgICAgICAuc2V0TWF0Y2hlZENT
U1J1bGVzKGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QocGFyZW50TWF0Y2hlZFJ1bGVzLCBz
dHlsZVJlc29sdmVyLCBhbmNlc3RvciwgUHNldWRvSWQ6Ok5vbmUpKQogICAgICAgICAgICAgICAg
ICAgICAucmVsZWFzZSgpOwotICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZWRFbGVtZW50Pigq
cGFyZW50RWxlbWVudCkgJiYgZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKnBhcmVudEVsZW1lbnQp
LmNzc29tU3R5bGUoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvJiBzdHls
ZVNoZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KCpw
YXJlbnRFbGVtZW50KSk7CisgICAgICAgICAgICAgICAgaWYgKGlzPFN0eWxlZEVsZW1lbnQ+KGFu
Y2VzdG9yKSAmJiBkb3duY2FzdDxTdHlsZWRFbGVtZW50PihhbmNlc3RvcikuY3Nzb21TdHlsZSgp
Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlU2hlZXQgPSBhc0lu
c3BlY3RvclN0eWxlU2hlZXQoZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oYW5jZXN0b3IpKTsKICAg
ICAgICAgICAgICAgICAgICAgZW50cnktPnNldElubGluZVN0eWxlKHN0eWxlU2hlZXQuYnVpbGRP
YmplY3RGb3JTdHlsZShzdHlsZVNoZWV0LnN0eWxlRm9ySWQoSW5zcGVjdG9yQ1NTSWQoc3R5bGVT
aGVldC5pZCgpLCAwKSkpKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBl
bnRyaWVzLT5hZGRJdGVtKFdURk1vdmUoZW50cnkpKTsKLSAgICAgICAgICAgICAgICBwYXJlbnRF
bGVtZW50ID0gcGFyZW50RWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpbmhlcml0ZWRFbnRyaWVzID0gV1RGTW92ZShlbnRyaWVzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5j
cHAKaW5kZXggMGY0NmEzMDMzYWVmNDAwN2Y2ZWI4MzdhNjEwNWYwNWEwYzU5MDY3Zi4uZDJjYTVi
YmUxMDlhYWFkMTgyYmFlMTg1YzRkNTJkOGFhZWNkYTg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9zZXBoIFBlY29yYXJvCiAg
KgpAQCAtMTExNCw3ICsxMTE0LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aW5zcGVjdChO
b2RlKiBpbnNwZWN0ZWROb2RlKQogICAgIFJlZlB0cjxOb2RlPiBub2RlID0gaW5zcGVjdGVkTm9k
ZTsKICAgICBzZXRTZWFyY2hpbmdGb3JOb2RlKGlnbm9yZWQsIGZhbHNlLCBudWxscHRyLCBmYWxz
ZSk7CiAKLSAgICBpZiAobm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpFTEVNRU5UX05PREUgJiYg
bm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9OT0RFKQorICAgIGlmICghbm9kZS0+
aXNFbGVtZW50Tm9kZSgpICYmICFub2RlLT5pc0RvY3VtZW50Tm9kZSgpKQogICAgICAgICBub2Rl
ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIG1fbm9kZVRvRm9jdXMgPSBub2RlOwogCkBAIC0x
MTU5LDcgKzExNTksNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVPdmVy
RWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVucwogdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6aGlnaGxpZ2h0TW91c2VkT3Zlck5vZGUoKQogewogICAgIE5vZGUqIG5vZGUgPSBt
X21vdXNlZE92ZXJOb2RlLmdldCgpOwotICAgIHdoaWxlIChub2RlICYmIG5vZGUtPm5vZGVUeXBl
KCkgPT0gTm9kZTo6VEVYVF9OT0RFKQorICAgIGlmIChub2RlICYmIG5vZGUtPmlzVGV4dE5vZGUo
KSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKICAgICBpZiAobm9kZSAmJiBt
X2luc3BlY3RNb2RlSGlnaGxpZ2h0Q29uZmlnKQogICAgICAgICBtX292ZXJsYXktPmhpZ2hsaWdo
dE5vZGUobm9kZSwgKm1faW5zcGVjdE1vZGVIaWdobGlnaHRDb25maWcpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDNmNDY5OWNmODMyOThmMDRlMjc0
YWUwMGVmOTVhNTU0NzVhNjVmM2QuLjA2ZjQ2ZDRhNTY5ZDBmYTBkYzE3YmQ2NTliNjU4ODE1NTcx
NmE2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAg
LTMwLDEyICszMCwxMiBAQAogI2luY2x1ZGUgIkNhY2hlZEZvbnRDbGllbnQuaCIKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
TG9hZGVyLmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogI2luY2x1
ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiV09GRkZpbGVGb3JtYXQuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdG
b250LmNwcAppbmRleCAwMTJkMmYzMWZlMWNlOTlhNzdlODU1ZmM2ZWNlZmI4NmYwNzZkZWI2Li5j
OGY5YmE1MzAwNWY4ZDdiYzkzMGQwOTZkNWYyMTNjOTM4MjVhOWVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAK
ICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5o
IgogI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCkBAIC0zNyw3ICszOCw2IEBACiAjaW5jbHVkZSAi
U2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgotI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlNWR1RvT1RGRm9udENvbnZlcnNpb24uaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApp
bmRleCBkYWQwMDJiMTk2OGFkMGI0MjZmYjEyYjdhNjVhMGYzNzM4NmJlOGJiLi4wNTlmNDVkNjI5
ZjU4ODY1YjQwN2NjYmUxYTcyYWQyZWRmNTNkNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTEyNjAsNiArMTI2MCwxNSBAQCB2b2lkIERyYWdDb250cm9sbGVy
OjpiZWdpbkRyYWcoRHJhZ0l0ZW0gZHJhZ0l0ZW0sIEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UG9p
bnQmCiAgICAgY2xpZW50KCkuYmVnaW5EcmFnKFdURk1vdmUoZHJhZ0l0ZW0pLCBmcmFtZSwgbW91
c2VEb3duUG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMsIG1vdXNlRHJhZ2dlZFBvaW50SW5Sb290
Vmlld0Nvb3JkaW5hdGVzLCBkYXRhVHJhbnNmZXIsIGRyYWdTb3VyY2VBY3Rpb24pOwogfQogCitz
dGF0aWMgUmVmUHRyPEVsZW1lbnQ+IGNvbnRhaW5pbmdMaW5rRWxlbWVudChFbGVtZW50JiBlbGVt
ZW50KQoreworICAgIGZvciAoYXV0byYgY3VycmVudEVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEVs
ZW1lbnQ+KGVsZW1lbnQpKSB7CisgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5pc0xpbmsoKSkK
KyAgICAgICAgICAgIHJldHVybiAmY3VycmVudEVsZW1lbnQ7CisgICAgfQorICAgIHJldHVybiBu
dWxscHRyOworfQorCiB2b2lkIERyYWdDb250cm9sbGVyOjpkb1N5c3RlbURyYWcoRHJhZ0ltYWdl
IGltYWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0xvYywgY29uc3QgSW50UG9pbnQmIGV2ZW50UG9z
LCBGcmFtZSYgZnJhbWUsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIFByb21pc2VkQXR0YWNobWVu
dEluZm8mJiBwcm9taXNlZEF0dGFjaG1lbnRJbmZvKQogewogICAgIG1fZGlkSW5pdGlhdGVEcmFn
ID0gdHJ1ZTsKQEAgLTEyOTYsMTggKzEzMDUsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpkb1N5
c3RlbURyYWcoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0xvYywgY29ucwog
ICAgICAgICAgICAgaXRlbS5kcmFnUHJldmlld0ZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzID0g
ZWxlbWVudC0+Ym91bmRzSW5Sb290Vmlld1NwYWNlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBS
ZWZQdHI8RWxlbWVudD4gbGluazsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmlzTGluaygpKQotICAg
ICAgICAgICAgbGluayA9IGVsZW1lbnQ7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZm9y
IChhdXRvJiBjdXJyZW50RWxlbWVudCA6IGVsZW1lbnRMaW5lYWdlKGVsZW1lbnQuZ2V0KCkpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmlzTGluaygpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGxpbmsgPSAmY3VycmVudEVsZW1lbnQ7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBpZiAobGluaykgeworICAgICAgICBpZiAoYXV0byBsaW5rID0gY29udGFpbmluZ0xpbmtF
bGVtZW50KCplbGVtZW50KSkgewogICAgICAgICAgICAgYXV0byB0aXRsZUF0dHJpYnV0ZSA9IGxp
bmstPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp0aXRsZUF0dHIp
OwogICAgICAgICAgICAgaXRlbS50aXRsZSA9IHRpdGxlQXR0cmlidXRlLmlzRW1wdHkoKSA/IGxp
bmstPmlubmVyVGV4dCgpIDogdGl0bGVBdHRyaWJ1dGUuc3RyaW5nKCk7CiAgICAgICAgICAgICBp
dGVtLnVybCA9IGZyYW1lLmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRy
YWlsaW5nSFRNTFNwYWNlcyhsaW5rLT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0cikp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxT
bmFwT2Zmc2V0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xs
U25hcE9mZnNldHMuY3BwCmluZGV4IGQyNmNlZmU0ZjIwMjM2YzdjNDNhYzVlMjVlZTcxNmVkZDU0
MGUxMGYuLmY4MGExODU0ODk4Y2M4NGY1ZDBlMGY2NzBiZmFmMjUzMDYwYWYxODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZz
ZXRzLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkF4aXNTY3JvbGxTbmFwT2Zmc2V0
cy5oIgogCiAjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJIVE1M
Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGVuZ3Ro
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oCmluZGV4IDdiMzJiMzNkMzE1YWI5NWQyYTBi
ZTk4ZDNlMmYwYTUwYmEwYjllZDMuLjVlZDgwMjViZTc5MDI5MjdmNWQ2NTNiOTc2OWUxMTNmMmNh
ZWM4Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFMaXN0U3VnZ2Vz
dGlvbnNDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dl
c3Rpb25zQ2xpZW50LmgKQEAgLTI3LDExICsyNywxMiBAQAogCiAjaWYgRU5BQkxFKERBVEFMSVNU
X0VMRU1FTlQpCiAKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgSW50UmVjdDsKKwogY2xhc3MgRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCgpID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDYwOTdiNGM2YTNlOWVi
ZDMxOTI5MjZmZTM5MzliOGJiNWQ3ZmVlYzUuLjI2NzQzMzUyZTQ1NzFjMWU3NDBiZmRiNjNmMGNi
NjQwYmM3ZjRjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC01NCw3ICs1NCw2IEBACiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotI2luY2x1ZGUgIkhUTUxDb2xs
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERhdGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgpAQCAtMTEx
NywxMiArMTExNiw5IEBAIHZvaWQgUmVuZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MoY29uc3Qg
UmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAgICAgIHRpY2tSZWdp
b25TaWRlTWFyZ2luID0gdHJhY2tCb3VuZHMueSgpICsgKHRodW1iU2l6ZS53aWR0aCgpIC0gdGlj
a1NpemUud2lkdGgoKSAqIHpvb21GYWN0b3IpIC8gMi4wOwogICAgICAgICB0aWNrUmVnaW9uV2lk
dGggPSB0cmFja0JvdW5kcy5oZWlnaHQoKSAtIHRodW1iU2l6ZS53aWR0aCgpOwogICAgIH0KLSAg
ICBSZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC5vcHRpb25zKCk7CiAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkp
OwogICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKG8uc3R5bGUoKS52aXNpdGVk
RGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvcikpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IE5vZGUqIG5vZGUgPSBvcHRpb25zLT5pdGVtKGkpOyBpKyspIHsK
LSAgICAgICAgQVNTRVJUKGlzPEhUTUxPcHRpb25FbGVtZW50Pigqbm9kZSkpOwotICAgICAgICBI
VE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uRWxlbWVudCA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVt
ZW50Pigqbm9kZSk7CisgICAgZm9yIChhdXRvJiBvcHRpb25FbGVtZW50IDogZGF0YUxpc3Quc3Vn
Z2VzdGlvbnMoKSkgewogICAgICAgICBTdHJpbmcgdmFsdWUgPSBvcHRpb25FbGVtZW50LnZhbHVl
KCk7CiAgICAgICAgIGlmICghaW5wdXQuaXNWYWxpZFZhbHVlKHZhbHVlKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
U3VwcG9ydC5jcHAKaW5kZXggODhjYTNlNTAzNzM3MzAxNWM1MjAzMGYwNTQ4YzBmYjMzMmUxMDc2
ZC4uZmNhZjAwYzUwYmJmNjAzZWYzYTNhOWZkODM0ZDNjOTllMzMzYjk1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCkBAIC02LDYg
KzYsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQu
b3JnPgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIw
MTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggQWRvYmUgU3lz
dGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0yNiw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHUmVu
ZGVyU3VwcG9ydC5oIgogCisjaW5jbHVkZSAiRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCIKICNp
bmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgpAQCAtNDgxLDYgKzQ4Myw3IEBAIHZvaWQg
U1ZHUmVuZGVyU3VwcG9ydDo6c3R5bGVDaGFuZ2VkKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBj
b25zdCBSZW5kZXJTdHlsZSoKIH0KIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCisKIGJv
b2wgU1ZHUmVuZGVyU3VwcG9ydDo6aXNvbGF0ZXNCbGVuZGluZyhjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUpCiB7CiAgICAgcmV0dXJuIHN0eWxlLnN2Z1N0eWxlKCkuaXNvbGF0ZXNCbGVuZGluZygp
IHx8IHN0eWxlLmhhc0ZpbHRlcigpIHx8IHN0eWxlLmhhc0JsZW5kTW9kZSgpIHx8IHN0eWxlLm9w
YWNpdHkoKSA8IDEuMGY7CkBAIC00OTEsMjAgKzQ5NCwxNiBAQCB2b2lkIFNWR1JlbmRlclN1cHBv
cnQ6OnVwZGF0ZU1hc2tlZEFuY2VzdG9yU2hvdWxkSXNvbGF0ZUJsZW5kaW5nKGNvbnN0IFJlbmRl
ckVsZQogICAgIEFTU0VSVChyZW5kZXJlci5lbGVtZW50KCkpOwogICAgIEFTU0VSVChyZW5kZXJl
ci5lbGVtZW50KCktPmlzU1ZHRWxlbWVudCgpKTsKIAotICAgIGJvb2wgbWFza2VkQW5jZXN0b3JT
aG91bGRJc29sYXRlQmxlbmRpbmcgPSByZW5kZXJlci5zdHlsZSgpLmhhc0JsZW5kTW9kZSgpOwot
ICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSByZW5kZXJlci5lbGVtZW50KCktPnBhcmVudEVsZW1l
bnQoKTsgYW5jZXN0b3IgJiYgYW5jZXN0b3ItPmlzU1ZHRWxlbWVudCgpOyBhbmNlc3RvciA9IGFu
Y2VzdG9yLT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKCFkb3duY2FzdDxTVkdFbGVt
ZW50PigqYW5jZXN0b3IpLmlzU1ZHR3JhcGhpY3NFbGVtZW50KCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICBjb25zdCBhdXRvKiBzdHlsZSA9IGFuY2VzdG9yLT5jb21wdXRlZFN0
eWxlKCk7CisgICAgZm9yIChhdXRvJiBhbmNlc3RvciA6IGFuY2VzdG9yc09mVHlwZTxTVkdHcmFw
aGljc0VsZW1lbnQ+KCpyZW5kZXJlci5lbGVtZW50KCkpKSB7CisgICAgICAgIGF1dG8qIHN0eWxl
ID0gYW5jZXN0b3IuY29tcHV0ZWRTdHlsZSgpOwogICAgICAgICBpZiAoIXN0eWxlIHx8ICFpc29s
YXRlc0JsZW5kaW5nKCpzdHlsZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBp
ZiAoYW5jZXN0b3ItPmNvbXB1dGVkU3R5bGUoKS0+c3ZnU3R5bGUoKS5oYXNNYXNrZXIoKSkKLSAg
ICAgICAgICAgIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4oKmFuY2VzdG9yKS5zZXRTaG91
bGRJc29sYXRlQmxlbmRpbmcobWFza2VkQW5jZXN0b3JTaG91bGRJc29sYXRlQmxlbmRpbmcpOwot
CisgICAgICAgIGlmIChzdHlsZS0+c3ZnU3R5bGUoKS5oYXNNYXNrZXIoKSkKKyAgICAgICAgICAg
IGFuY2VzdG9yLnNldFNob3VsZElzb2xhdGVCbGVuZGluZyhyZW5kZXJlci5zdHlsZSgpLmhhc0Js
ZW5kTW9kZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KKwogI2VuZGlmCisKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKaW5kZXggNWU5OWZiYmQyZmUw
Mzg0Yjc5MGMwMDMwYzE1NmFmNmNmNTc4NDM4Mi4uMjIzNGZiNWFiZmFkNmRhZjljZDM0NDM3OTQ2
NzAwZDg5ZTRmMzM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZh
bGlkYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5j
cHAKQEAgLTI3NSwxMiArMjc1LDEwIEBAIHZvaWQgSW52YWxpZGF0b3I6OmludmFsaWRhdGVTdHls
ZVdpdGhNYXRjaEVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTWF0Y2hFbGVtZW50CiAgICAgICAg
IGZvciAoYXV0byogc2libGluZyA9IGVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxp
bmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkKICAgICAgICAgICAg
IGludmFsaWRhdGVJZk5lZWRlZCgqc2libGluZywgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgTWF0Y2hFbGVtZW50OjpBbnlTaWJsaW5nOiB7Ci0gICAgICAgIGF1dG8gcGFyZW50
Q2hpbGRyZW4gPSBjaGlsZHJlbk9mVHlwZTxFbGVtZW50PigqZWxlbWVudC5wYXJlbnROb2RlKCkp
OwotICAgICAgICBmb3IgKGF1dG8mIHBhcmVudENoaWxkIDogcGFyZW50Q2hpbGRyZW4pCisgICAg
Y2FzZSBNYXRjaEVsZW1lbnQ6OkFueVNpYmxpbmc6CisgICAgICAgIGZvciAoYXV0byYgcGFyZW50
Q2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxFbGVtZW50PigqZWxlbWVudC5wYXJlbnROb2RlKCkpKQog
ICAgICAgICAgICAgaW52YWxpZGF0ZUlmTmVlZGVkKHBhcmVudENoaWxkLCBudWxscHRyKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgfQogICAgIGNhc2UgTWF0Y2hFbGVtZW50OjpQYXJlbnRTaWJsaW5n
OgogICAgICAgICBmb3IgKGF1dG8qIHNpYmxpbmcgPSBlbGVtZW50Lm5leHRFbGVtZW50U2libGlu
ZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsK
ICAgICAgICAgICAgIGF1dG8gc2libGluZ0NoaWxkcmVuID0gY2hpbGRyZW5PZlR5cGU8RWxlbWVu
dD4oKnNpYmxpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBm
M2YzNjIxODNkNTA2MTc0YTQ2NjY0NjFjNzE3YmU3OWIzZTYxZjE0Li42NTFmOGYxZTJkNzg5MjE5
OTA2NTZhZmE0ZmQ5ZTY5ZWRjYWMzYzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29s
dmVyLmNwcApAQCAtMTgzLDggKzE4Myw3IEBAIGlubGluZSB2b2lkIFJlc29sdmVyOjpTdGF0ZTo6
c2V0UGFyZW50U3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBwYXJlbnRTCiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCBpc0F0U2hhZG93Qm91bmRhcnkoY29uc3QgRWxlbWVudCYgZWxlbWVu
dCkKIHsKLSAgICBhdXRvKiBwYXJlbnROb2RlID0gZWxlbWVudC5wYXJlbnROb2RlKCk7Ci0gICAg
cmV0dXJuIHBhcmVudE5vZGUgJiYgcGFyZW50Tm9kZS0+aXNTaGFkb3dSb290KCk7CisgICAgcmV0
dXJuIGlzPFNoYWRvd1Jvb3Q+KGVsZW1lbnQucGFyZW50Tm9kZSgpKTsKIH0KIAogQnVpbGRlckNv
bnRleHQgUmVzb2x2ZXI6OmJ1aWxkZXJDb250ZXh0KGNvbnN0IFN0YXRlJiBzdGF0ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCmluZGV4IDk5ZGIzNTliMjA0NjE4NDBmY2NhMTU4OGVlMTBm
NTFlZWYxNTVmODYuLjZiNGI2MjU2OTJkN2FjYTYyZjE3OWE5YTE0MzFiOWI3MmZlZWJlZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcApAQCAtMTAyLDkgKzEwMiw4IEBAIHZvaWQgU1ZH
QUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdBRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
CiB7Ci0gICAgaWYgKHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgp
ICYmIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpwYXJlbnROb2RlKCkpLmlzVGV4dENvbnRlbnQoKSkK
KyAgICBpZiAoaXM8U1ZHRWxlbWVudD4ocGFyZW50Tm9kZSgpKSAmJiBkb3duY2FzdDxTVkdFbGVt
ZW50PigqcGFyZW50Tm9kZSgpKS5pc1RleHRDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJTVkdJbmxpbmU+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7Ci0KICAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcj4o
KnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmlu
ZGV4IDJmZmNiYWM1MjExYzhhMDVhZTQ2MGQzMGNhMDQyNmU0NjdjZWExODMuLjIyMjQxZGFkNDE3
ZmM3ZTI2OGJkNjA3ZWE1MzA3YmIyYTkyYjQ1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5j
cHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQWxwIFRva2VyIDxhbHBAYXRva2VyLmNv
bT4KICAqIENvcHlyaWdodCAoQykgMjAwOSBDYW1lcm9uIE1jQ29ybWFjayA8Y2FtQG1jYy5pZC5h
dT4KICAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgpAQCAtOTE2LDE4ICs5MTYsMTAgQEAgdm9pZCBTVkdFbGVtZW50Ojp1cGRhdGVS
ZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihib29sIGhhc1JlbGF0aXZlTGVuZ3RocywgU1ZHRWwK
ICAgICAgICAgbV9lbGVtZW50c1dpdGhSZWxhdGl2ZUxlbmd0aHMucmVtb3ZlKGVsZW1lbnQpOwog
ICAgIH0KIAotICAgIGlmICghZWxlbWVudC0+aXNTVkdHcmFwaGljc0VsZW1lbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgLy8gRmluZCBmaXJzdCBzdHlsZWQgcGFyZW50IG5vZGUsIGFuZCBu
b3RpZnkgaXQgdGhhdCB3ZSd2ZSBjaGFuZ2VkIG91ciByZWxhdGl2ZSBsZW5ndGggc3RhdGUuCi0g
ICAgYXV0byBub2RlID0gbWFrZVJlZlB0cihwYXJlbnROb2RlKCkpOwotICAgIHdoaWxlIChub2Rl
KSB7Ci0gICAgICAgIGlmICghbm9kZS0+aXNTVkdFbGVtZW50KCkpCi0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICAvLyBSZWdpc3RlciB1cyBpbiB0aGUgcGFyZW50IGVsZW1lbnQgbWFwLgot
ICAgICAgICBkb3duY2FzdDxTVkdFbGVtZW50Pigqbm9kZSkudXBkYXRlUmVsYXRpdmVMZW5ndGhz
SW5mb3JtYXRpb24oaGFzUmVsYXRpdmVMZW5ndGhzLCB0aGlzKTsKLSAgICAgICAgYnJlYWs7Cisg
ICAgaWYgKGVsZW1lbnQtPmlzU1ZHR3JhcGhpY3NFbGVtZW50KCkpIHsKKyAgICAgICAgYXV0byBw
YXJlbnQgPSBtYWtlUmVmUHRyKHBhcmVudE5vZGUoKSk7CisgICAgICAgIGlmIChpczxTVkdFbGVt
ZW50PihwYXJlbnQpKQorICAgICAgICAgICAgZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnBhcmVudCku
dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oaGFzUmVsYXRpdmVMZW5ndGhzLCB0aGlz
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IDk4ZmNmZmJjYTRkNzEy
NjdlNzQ1ZmVkYjliMzBlODBkMGM5YjYyY2YuLjYzOTE4YWE4OGJmMTk0YTI5ZTY0MzBhYjFlOTk2
MGI4OGNiZWRlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtMTQ1LDYgKzE0NSw4IEBA
IHB1YmxpYzoKICAgICBTdHJpbmcgY2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc05h
bWUtPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmcmIGNsYXNzTmFtZUFu
aW1hdGVkKCkgeyByZXR1cm4gbV9jbGFzc05hbWU7IH0KIAorICAgIGNvbnN0IFJlbmRlclN0eWxl
KiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmUpIGZpbmFsOworCiBwcm90
ZWN0ZWQ6CiAgICAgU1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
ICAgICB2aXJ0dWFsIH5TVkdFbGVtZW50KCk7CkBAIC0xNzMsOCArMTc1LDYgQEAgcHJvdGVjdGVk
OgogICAgIHZvaWQgd2lsbFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgotICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0g
UHNldWRvSWQ6Ok5vbmUpIGZpbmFsOwotCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVGFyZ2V0KCkg
eyB9CiAKICAgICB2b2lkIGJ1aWxkUGVuZGluZ1Jlc291cmNlc0lmTmVlZGVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDc3ZDk0
YWZlODVlYmExNjQyNmE0MTk3ZDdmOTA1NjhjM2MzNmQwYWQuLjNmNzIzMTMxYTIyNjIyM2FjMGRm
NmI1MGMyZDk2YTAyZTJhNzc3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yNzQsMjIgKzI3NCwyNCBAQCBib29sIFhNTERvY3Vt
ZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBjaHVuaywgRG9j
dW1lbnRGcmFnbQogCiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiBwcmVmaXhU
b05hbWVzcGFjZU1hcDsKICAgICBBdG9tU3RyaW5nIGRlZmF1bHROYW1lc3BhY2VVUkk7Ci0gICAg
Ym9vbCBzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkgPSBmYWxzZTsKLSAgICAKLSAg
ICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50TGluZWFnZShjb250ZXh0RWxlbWVudCkpIHsK
LSAgICAgICAgaWYgKGlzPFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50PihlbGVtZW50KSkKLSAgICAg
ICAgICAgIHN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVSSSA9IHRydWU7Ci0gICAgICAg
IGVsc2UgaWYgKCFzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkpCi0gICAgICAgICAg
ICBkZWZhdWx0TmFtZXNwYWNlVVJJID0gZWxlbWVudC5uYW1lc3BhY2VVUkkoKTsKLQotICAgICAg
ICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlcygpKQotICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgZm9yIChjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA6IGVsZW1lbnQuYXR0cmli
dXRlc0l0ZXJhdG9yKCkpIHsKLSAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUucHJlZml4KCkgPT0g
eG1sbnNBdG9tKCkpCi0gICAgICAgICAgICAgICAgcHJlZml4VG9OYW1lc3BhY2VNYXAuc2V0KGF0
dHJpYnV0ZS5sb2NhbE5hbWUoKSwgYXR0cmlidXRlLnZhbHVlKCkpOwotICAgICAgICAgICAgZWxz
ZSBpZiAoIXN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVSSSAmJiBhdHRyaWJ1dGUucHJl
Zml4KCkgPT0geG1sbnNBdG9tKCkpCi0gICAgICAgICAgICAgICAgZGVmYXVsdE5hbWVzcGFjZVVS
SSA9IGF0dHJpYnV0ZS52YWx1ZSgpOworICAgIGlmIChjb250ZXh0RWxlbWVudCkgeworICAgICAg
ICBib29sIHN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVSSSA9IGZhbHNlOworCisgICAg
ICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4oKmNvbnRleHRF
bGVtZW50KSkgeworICAgICAgICAgICAgaWYgKGlzPFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Pihl
bGVtZW50KSkKKyAgICAgICAgICAgICAgICBzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VV
UkkgPSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAoIXN0b3BMb29raW5nRm9yRGVmYXVsdE5h
bWVzcGFjZVVSSSkKKyAgICAgICAgICAgICAgICBkZWZhdWx0TmFtZXNwYWNlVVJJID0gZWxlbWVu
dC5uYW1lc3BhY2VVUkkoKTsKKworICAgICAgICAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0
ZXMoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgZm9yIChjb25z
dCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA6IGVsZW1lbnQuYXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlLnByZWZpeCgpID09IHhtbG5zQXRvbSgpKQor
ICAgICAgICAgICAgICAgICAgICBwcmVmaXhUb05hbWVzcGFjZU1hcC5zZXQoYXR0cmlidXRlLmxv
Y2FsTmFtZSgpLCBhdHRyaWJ1dGUudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAo
IXN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVSSSAmJiBhdHRyaWJ1dGUucHJlZml4KCkg
PT0geG1sbnNBdG9tKCkpCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHROYW1lc3BhY2VVUkkg
PSBhdHRyaWJ1dGUudmFsdWUoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAppbmRleCAzZjViNjE4MWUwNmUwYTg0Njg4
YmRhOTE2ZjEwZDg3YTYxZDE0YmU3Li42YjI3NzNlYzk3MzUxOGEwMWUxNDU1NDA1MjcyNWU1NTk0
MDZiYzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtNTU5LDEyICs1
NTksMTEgQEAgc3RhdGljIFdlYkNvcmU6OkVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnRGb3JFbGVt
ZW50KFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQpCiAgICAgLy8gwqcxMy4gRWxlbWVudCBTdGF0
ZS4KICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2ViZHJpdmVyL3dlYmRyaXZlci1zcGVj
Lmh0bWwjZGZuLWNvbnRhaW5lci4KICAgICBpZiAoaXM8V2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1l
bnQ+KGVsZW1lbnQpKSB7Ci0gICAgICAgIGF1dG8mIG9wdGlvbkVsZW1lbnQgPSBkb3duY2FzdDxX
ZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCk7CiAjaWYgRU5BQkxFKERBVEFMSVNU
X0VMRU1FTlQpCi0gICAgICAgIGlmIChhdXRvKiBwYXJlbnRFbGVtZW50ID0gb3B0aW9uRWxlbWVu
dC5vd25lckRhdGFMaXN0RWxlbWVudCgpKQorICAgICAgICBpZiAoYXV0byogcGFyZW50RWxlbWVu
dCA9IFdlYkNvcmU6OmFuY2VzdG9yc09mVHlwZTxXZWJDb3JlOjpIVE1MRGF0YUxpc3RFbGVtZW50
PihlbGVtZW50KS5maXJzdCgpKQogICAgICAgICAgICAgcmV0dXJuIHBhcmVudEVsZW1lbnQ7CiAj
ZW5kaWYKLSAgICAgICAgaWYgKGF1dG8qIHBhcmVudEVsZW1lbnQgPSBvcHRpb25FbGVtZW50Lm93
bmVyU2VsZWN0RWxlbWVudCgpKQorICAgICAgICBpZiAoYXV0byogcGFyZW50RWxlbWVudCA9IGRv
d25jYXN0PFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KS5vd25lclNlbGVjdEVs
ZW1lbnQoKSkKICAgICAgICAgICAgIHJldHVybiBwYXJlbnRFbGVtZW50OwogCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Z1bGxT
Y3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCmluZGV4IGY1MTk0MWU2YjRlYzEy
MTlkMmJiZGEwZmE5OTU3ZGM1MzgyN2M3OGIuLmQwY2ZlOWQxNzNhZDk3OGI1ODY2ZGU1ZjZiZjM0
NTQyOTc4MjZkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GdWxsU2Ny
ZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAK
ICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvRWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRWxlbWVudEl0ZXJhdG9yLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GdWxsc2NyZWVuTWFuYWdlci5oPgpAQCAtNDUsNyArNDUsNiBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyT2JqZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5k
ZXJWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmg+CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01P
REUpKQogI2luY2x1ZGUgIlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKaW5kZXggOGU0YzkzNzVkN2I4Y2MxMGZmYTAwODAzZDQ4MjE3M2JlNWEzNTU4YS4uNTNk
ZTE5MTViNDczYWYzM2ZhZGIwNTUwOTkwN2VhYjBjMzVmMDI2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKQEAgLTc5NSw3ICs3OTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBX
ZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbAogCiBzdGQ6
OnVuaXF1ZV9wdHI8RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50JiBj
bGllbnQpCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyPigmbV9wYWdlLCAmY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJEYXRhTGlz
dFN1Z2dlc3Rpb25QaWNrZXI+KG1fcGFnZSwgY2xpZW50KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RT
dWdnZXN0aW9uUGlja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwCmluZGV4IGFlYjg3MzdhZGQ0NzNj
MDNhYjZlMTE3NTJmZjBjMjI0YzhkZTA4MTguLmIyMGIwYWNmODhhNDlmZjUwZTM1NDE1NmY0MjFi
ODZhMDYxMWVmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM1LDQ3ICszNSw0NSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YUxpc3RTdWdnZXN0aW9u
c0NsaWVudC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi1XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBp
Y2tlcihXZWJQYWdlKiBwYWdlLCBEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50KiBjbGllbnQpCi0g
ICAgOiBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQoY2xpZW50KQorV2ViRGF0YUxpc3RTdWdn
ZXN0aW9uUGlja2VyOjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2ViUGFnZSYgcGFnZSwg
V2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCYgY2xpZW50KQorICAgIDogbV9jbGll
bnQoY2xpZW50KQogICAgICwgbV9wYWdlKHBhZ2UpCiB7CiB9CiAKLVdlYkRhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlcjo6fldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcigpIHsgfQotCi12b2lkIFdl
YkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6aGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKGNv
bnN0IFdURjo6U3RyaW5nJiBrZXkpCit2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6
aGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlS2V5ZG93bkluRGF0YUxpc3Qoa2V5KSwgbV9wYWdl
LT5pZGVudGlmaWVyKCkpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlS2V5ZG93
bkluRGF0YUxpc3Qoa2V5KSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7CiB9CiAKLXZvaWQgV2ViRGF0
YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpkaWRTZWxlY3RPcHRpb24oY29uc3QgV1RGOjpTdHJpbmcm
IHNlbGVjdGVkT3B0aW9uKQordm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpZFNl
bGVjdE9wdGlvbihjb25zdCBTdHJpbmcmIHNlbGVjdGVkT3B0aW9uKQogewotICAgIG1fZGF0YUxp
c3RTdWdnZXN0aW9uc0NsaWVudC0+ZGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oc2VsZWN0ZWRPcHRp
b24pOworICAgIG1fY2xpZW50LmRpZFNlbGVjdERhdGFMaXN0T3B0aW9uKHNlbGVjdGVkT3B0aW9u
KTsKIH0KIAogdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpZENsb3NlU3VnZ2Vz
dGlvbnMoKQogewotICAgIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC0+ZGlkQ2xvc2VTdWdn
ZXN0aW9ucygpOworICAgIG1fY2xpZW50LmRpZENsb3NlU3VnZ2VzdGlvbnMoKTsKIH0KIAogdm9p
ZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmNsb3NlKCkKIHsKLSAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkVuZERhdGFMaXN0U3VnZ2VzdGlvbnMoKSwgbV9wYWdlLT5pZGVudGlmaWVy
KCkpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kRGF0YUxpc3RTdWdnZXN0aW9ucygp
LCBtX3BhZ2UuaWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXI6OmRpc3BsYXlXaXRoQWN0aXZhdGlvblR5cGUoRGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZh
dGlvblR5cGUgdHlwZSkKK3ZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpkaXNwbGF5
V2l0aEFjdGl2YXRpb25UeXBlKFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25U
eXBlIHR5cGUpCiB7Ci0gICAgaWYgKCFtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQtPnN1Z2dl
c3Rpb25zKCkuc2l6ZSgpKSB7CisgICAgYXV0byBzdWdnZXN0aW9ucyA9IG1fY2xpZW50LnN1Z2dl
c3Rpb25zKCk7CisgICAgaWYgKHN1Z2dlc3Rpb25zLmlzRW1wdHkoKSkgewogICAgICAgICBjbG9z
ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wYWdlLT5zZXRBY3RpdmVEYXRh
TGlzdFN1Z2dlc3Rpb25QaWNrZXIodGhpcyk7CisgICAgbV9wYWdlLnNldEFjdGl2ZURhdGFMaXN0
U3VnZ2VzdGlvblBpY2tlcigqdGhpcyk7CiAKLSAgICBEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1h
dGlvbiBpbmZvID0geyB0eXBlLCBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQtPnN1Z2dlc3Rp
b25zKCksIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC0+ZWxlbWVudFJlY3RJblJvb3RWaWV3
Q29vcmRpbmF0ZXMoKSB9OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0RhdGFMaXN0
U3VnZ2VzdGlvbnMoaW5mbyksIG1fcGFnZS0+aWRlbnRpZmllcigpKTsKKyAgICBXZWJDb3JlOjpE
YXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiBpbmZvIHsgdHlwZSwgV1RGTW92ZShzdWdnZXN0
aW9ucyksIG1fY2xpZW50LmVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgfTsKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dEYXRhTGlzdFN1Z2dlc3Rpb25zKGluZm8pLCBt
X3BhZ2UuaWRlbnRpZmllcigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RT
dWdnZXN0aW9uUGlja2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmgKaW5kZXggOTcwNTM1OTg5MGI3NjYxYWY2
Y2E4MDcxNzBiMzUzYjU5OGM1MGY3OS4uMTM1MTA3MzUyMTQyOWVmODdkZWQxNDJjNDk2MTQxOTBj
ZDg2MzA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw3
ICsyOCw2IEBACiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAKICNpbmNsdWRlIDxXZWJD
b3JlL0RhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEYXRhTGlzdFN1Z2dlc3Rpb25z
Q2xpZW50OwpAQCAtMzgsMTkgKzM3LDIwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBX
ZWJQYWdlOwogCi1jbGFzcyBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIgOiBwdWJsaWMgV2Vi
Q29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyIHsKK2NsYXNzIFdlYkRhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25QaWNr
ZXIgewogcHVibGljOgotICAgIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihXZWJQYWdlKiwg
V2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCopOwotICAgIHZpcnR1YWwgfldlYkRh
dGFMaXN0U3VnZ2VzdGlvblBpY2tlcigpOworICAgIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
cihXZWJQYWdlJiwgV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCYpOwogCi0gICAg
dm9pZCBoYW5kbGVLZXlkb3duV2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRTZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRD
bG9zZVN1Z2dlc3Rpb25zKCk7Ci0gICAgdm9pZCBjbG9zZSgpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGlzcGxheVdpdGhBY3RpdmF0aW9uVHlwZShXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3Rp
dmF0aW9uVHlwZSkgb3ZlcnJpZGU7CisKIHByaXZhdGU6Ci0gICAgV2ViQ29yZTo6RGF0YUxpc3RT
dWdnZXN0aW9uc0NsaWVudCogbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50OwotICAgIFdlYlBh
Z2UqIG1fcGFnZTsKKyAgICB2b2lkIGhhbmRsZUtleWRvd25XaXRoSWRlbnRpZmllcihjb25zdCBT
dHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BsYXlXaXRoQWN0aXZhdGlvblR5cGUoV2ViQ29y
ZTo6RGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUpIGZpbmFsOworICAgIHZvaWQgY2xv
c2UoKSBmaW5hbDsKKworICAgIFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQmIG1f
Y2xpZW50OworICAgIFdlYlBhZ2UmIG1fcGFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4
IGY2Yzk4NGUzMDVlYzdmN2RhZWQ5N2Y2ODZlODlhMjdmYjkwYmI0N2UuLmFlYjBjNjI4Y2Q3MGQ0
ODljZjg3YmQ1MGEzYzQwMWM0ZTQwZjExMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9DaHJvbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnRDaGlsZEl0
ZXJhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CkBAIC03MSw3ICs3Miw2
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9KU0VsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pT
RmlsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNSYW5nZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
Tm9kZVRyYXZlcnNhbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGx1Z2luRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRyZWVBc1Rl
eHQuaD4KQEAgLTY2MiwxNyArNjYyLDggQEAgYm9vbCBXZWJGcmFtZTo6Y29udGFpbnNBbnlGb3Jt
RWxlbWVudHMoKSBjb25zdAogICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2NvcmVGcmFtZS0+ZG9jdW1l
bnQoKTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBm
b3IgKE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7IG5vZGU7IG5vZGUg
PSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlKSkgewotICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+
KCpub2RlKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoaXM8SFRNTEZvcm1F
bGVtZW50Pigqbm9kZSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0
dXJuIGZhbHNlOworICAgIGF1dG8qIGRvY3VtZW50ID0gbV9jb3JlRnJhbWUtPmRvY3VtZW50KCk7
CisgICAgcmV0dXJuIGRvY3VtZW50ICYmIGNoaWxkcmVuT2ZUeXBlPEhUTUxGb3JtRWxlbWVudD4o
KmRvY3VtZW50KS5maXJzdCgpOwogfQogCiBib29sIFdlYkZyYW1lOjpjb250YWluc0FueUZvcm1D
b250cm9scygpIGNvbnN0CkBAIC02ODAsMTQgKzY3MSwxMiBAQCBib29sIFdlYkZyYW1lOjpjb250
YWluc0FueUZvcm1Db250cm9scygpIGNvbnN0CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fY29yZUZy
YW1lLT5kb2N1bWVudCgpOworICAgIGF1dG8qIGRvY3VtZW50ID0gbV9jb3JlRnJhbWUtPmRvY3Vt
ZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Zm9yIChOb2RlKiBub2RlID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOyBub2RlOyBub2Rl
ID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSkpIHsKLSAgICAgICAgaWYgKCFpczxFbGVtZW50
Pigqbm9kZSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKGlzPEhUTUxJbnB1
dEVsZW1lbnQ+KCpub2RlKSB8fCBpczxIVE1MU2VsZWN0RWxlbWVudD4oKm5vZGUpIHx8IGlzPEhU
TUxUZXh0QXJlYUVsZW1lbnQ+KCpub2RlKSkKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRy
ZW5PZlR5cGU8RWxlbWVudD4oKmRvY3VtZW50KSkgeworICAgICAgICBpZiAoaXM8SFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ+KGNoaWxkKSB8fCBpczxIVE1MU2VsZWN0RWxlbWVudD4oY2hpbGQp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYWE5OWU5
ZGMwYjAwZDY1MjU4ZjNjZTQ4NGRhYjVhOTA0NjMwZGI3Yy4uZjMxOWMwM2Y0N2Q2MWUxNjJhZGUw
NGUyOWExNTYxYzc1NWY5ODUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTQxMDUsOSArNDEwNSw5IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ2hv
b3NlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogCiAjaWYgRU5BQkxFKERBVEFM
SVNUX0VMRU1FTlQpCiAKLXZvaWQgV2ViUGFnZTo6c2V0QWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9u
UGlja2VyKFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlciogZGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyKQordm9pZCBXZWJQYWdlOjpzZXRBY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyJiBkYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIpCiB7Ci0g
ICAgbV9hY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIgPSBtYWtlV2Vha1B0cihkYXRhTGlz
dFN1Z2dlc3Rpb25QaWNrZXIpOworICAgIG1fYWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2Vy
ID0gbWFrZVdlYWtQdHIoJmRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik7CiB9CiAKIHZvaWQgV2Vi
UGFnZTo6ZGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oY29uc3QgU3RyaW5nJiBzZWxlY3RlZE9wdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA3NmQw
NGEwNGQxZjRhMGIyNDIzYTc4MmFkNWI2ODNlZmEwMThlM2E2Li42ZDVjZDM4YzhiYjU4MjU5N2Uy
NDQ0MjE4ZThjZjgxYWVhMTA1YWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC00MTYsNyArNDE2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBF
TkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICB2b2lkIHNldEFjdGl2ZURhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlcihXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIqKTsKKyAgICB2b2lkIHNldEFj
dGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIm
KTsKICAgICB2b2lkIGRpZFNlbGVjdERhdGFMaXN0T3B0aW9uKGNvbnN0IFN0cmluZyYpOwogICAg
IHZvaWQgZGlkQ2xvc2VTdWdnZXN0aW9ucygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDQ3MzgzNTc2Y2Yw
MzkzZDdhNGVkM2Y1ODc3M2MzOTkzODllZWZhZTYuLjAxYTAyOWNjZGQyNmQ2MGFmMzkyZjM4NzQ4
NGE3MjA2M2RhNmU1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yNDk4LDExICsyNDk4LDEyIEBAIHZvaWQgV2ViUGFn
ZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpCiAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpIYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQoYXV0b2NvcnJlY3Rpb25Db250
ZXh0KCkpKTsKIH0KIAotc3RhdGljIEhUTUxBbmNob3JFbGVtZW50KiBjb250YWluaW5nTGlua0Vs
ZW1lbnQoRWxlbWVudCogZWxlbWVudCkKK3N0YXRpYyBIVE1MQW5jaG9yRWxlbWVudCogY29udGFp
bmluZ0xpbmtBbmNob3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgZm9yIChhdXRv
JiBjdXJyZW50RWxlbWVudCA6IGVsZW1lbnRMaW5lYWdlKGVsZW1lbnQpKSB7Ci0gICAgICAgIGlm
IChjdXJyZW50RWxlbWVudC5pc0xpbmsoKSAmJiBpczxIVE1MQW5jaG9yRWxlbWVudD4oY3VycmVu
dEVsZW1lbnQpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50
PigmY3VycmVudEVsZW1lbnQpOworICAgIC8vIEZJWE1FOiBUaGVyZSBpcyBjb2RlIGluIHRoZSBk
cmFnIGNvbnRyb2xsZXIgdGhhdCBzdXBwb3J0cyBhbnkgbGluaywgZXZlbiBpZiBpdCdzIG5vdCBh
biBIVE1MQW5jaG9yRWxlbWVudC4gV2h5IGlzIHRoaXMgZGlmZmVyZW50PworICAgIGZvciAoYXV0
byYgY3VycmVudEVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEhUTUxBbmNob3JFbGVtZW50PihlbGVt
ZW50KSkgeworICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuaXNMaW5rKCkpCisgICAgICAgICAg
ICByZXR1cm4gJmN1cnJlbnRFbGVtZW50OwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
QEAgLTI2NzIsNyArMjY3Myw3IEBAIHN0YXRpYyB2b2lkIGVsZW1lbnRQb3NpdGlvbkluZm9ybWF0
aW9uKFdlYlBhZ2UmIHBhZ2UsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEluCiB7CiAgICAgRWxl
bWVudCogbGlua0VsZW1lbnQgPSBudWxscHRyOwogICAgIGlmIChlbGVtZW50LnJlbmRlcmVyKCkg
JiYgZWxlbWVudC5yZW5kZXJlcigpLT5pc1JlbmRlckltYWdlKCkpCi0gICAgICAgIGxpbmtFbGVt
ZW50ID0gY29udGFpbmluZ0xpbmtFbGVtZW50KCZlbGVtZW50KTsKKyAgICAgICAgbGlua0VsZW1l
bnQgPSBjb250YWluaW5nTGlua0FuY2hvckVsZW1lbnQoZWxlbWVudCk7CiAgICAgZWxzZSBpZiAo
ZWxlbWVudC5pc0xpbmsoKSkKICAgICAgICAgbGlua0VsZW1lbnQgPSAmZWxlbWVudDsKIApAQCAt
MjkzOCw3ICsyOTM5LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVp
bnQzMl90IGFjdGlvbikKICAgICAgICAgaWYgKGlzPFJlbmRlckltYWdlPigqZWxlbWVudC5yZW5k
ZXJlcigpKSkgewogICAgICAgICAgICAgVVJMIHVybDsKICAgICAgICAgICAgIFN0cmluZyB0aXRs
ZTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBsaW5rRWxlbWVudCA9IGNvbnRhaW5pbmdMaW5rRWxl
bWVudCgmZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBsaW5rRWxlbWVudCA9IGNv
bnRhaW5pbmdMaW5rQW5jaG9yRWxlbWVudChlbGVtZW50KSkgewogICAgICAgICAgICAgICAgIHVy
bCA9IGxpbmtFbGVtZW50LT5ocmVmKCk7CiAgICAgICAgICAgICAgICAgdGl0bGUgPSBsaW5rRWxl
bWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnRpdGxlQXR0
cik7CiAgICAgICAgICAgICAgICAgaWYgKCF0aXRsZS5sZW5ndGgoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQppbmRleCA1YzEzZDYzN2UxZjdmZjZmODJkOTI5
NDI4ZGZiODI1MDViMzhjYWM5Li5hZGNkMDE3ZDMwNjVlMjMyYTY3Y2E0MjU1NmYzNWM1Y2RlNmVj
ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCkBAIC0y
NSwxMyArMjUsNiBAQAogCiAjaW1wb3J0ICJET01Eb2N1bWVudEludGVybmFsLmgiCiAKLSNpbXBv
cnQgPFdlYkNvcmUvQXR0ci5oPgotI2ltcG9ydCA8V2ViQ29yZS9DREFUQVNlY3Rpb24uaD4KLSNp
bXBvcnQgPFdlYkNvcmUvQ1NTUnVsZUxpc3QuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9Db21tZW50Lmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL0RvY3VtZW50RnVsbHNjcmVlbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bi5oPgogI2ltcG9ydCAiRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUF0
dHJJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NQ0RBVEFTZWN0aW9uSW50ZXJuYWwuaCIKQEAgLTU3
LDE1ICs1MCwyMiBAQAogI2ltcG9ydCAiRE9NU3R5bGVTaGVldExpc3RJbnRlcm5hbC5oIgogI2lt
cG9ydCAiRE9NVGV4dEludGVybmFsLmgiCiAjaW1wb3J0ICJET01UcmVlV2Fsa2VySW50ZXJuYWwu
aCIKLSNpbXBvcnQgPFdlYkNvcmUvRE9NV2luZG93Lmg+CiAjaW1wb3J0ICJET01YUGF0aEV4cHJl
c3Npb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NWFBhdGhSZXN1bHRJbnRlcm5hbC5oIgorI2lt
cG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKKyNpbXBvcnQgIk9iakNOb2RlRmlsdGVyQ29uZGl0
aW9uLmgiCisjaW1wb3J0IDxXZWJDb3JlL0F0dHIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ0RBVEFT
ZWN0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NTU1J1bGVMaXN0Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL0NTU1N0eWxlRGVjbGFyYXRpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ29tbWVudC5oPgor
I2ltcG9ydCA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRGcmFnbWVudC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9Eb2N1bWVudEZ1bGxzY3JlZW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRUeXBlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0VsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXZlbnQuaD4K
LSNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxDb2xs
ZWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0hUTUxIZWFkRWxlbWVudC5oPgpAQCAtNzMsMTIgKzczLDExIEBACiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05hbWVOb2RlTGlzdC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9OYXRpdmVOb2RlRmlsdGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL05vZGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZUl0ZXJhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05v
ZGVMaXN0Lmg+Ci0jaW1wb3J0ICJPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oIgogI2ltcG9ydCA8
V2ViQ29yZS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUmFuZ2Uu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUv
U3R5bGVQcm9wZXJ0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlU2hlZXRMaXN0Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RleHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KaW5kZXggMDcyOTMwZTM5NThlMjBhMTJlM2NlM2M1
N2UxOTk0ZmUzZGRjMTY1ZS4uY2YxYTNjMWY4NDM3YmQ1YmU5MjBkODg0ZTM1YWMwNTNmODlmODQw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJh
Z21lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJh
Z21lbnQubW0KQEAgLTMyLDcgKzMyLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRGcmFn
bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Lmg+CiAjaW1wb3J0ICJFeGNlcHRpb25I
YW5kbGVycy5oIgotI2ltcG9ydCA8V2ViQ29yZS9IVE1MQ29sbGVjdGlvbi5oPgogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OYW1lTm9kZUxpc3QuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTm9kZUxpc3QuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MRmllbGRTZXRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW0KaW5kZXggYTRjMWI2MDhjMTZk
MjFlNTg3NzEwMTUyNjc3OWJhNjQ1NTA2OTBjMy4uZmQ5OTRhYjViZTE0ZWNjM2IyMTRmOTQ1MjFj
OGQzMDNhOTZiOTJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxGaWVsZFNldEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW0KQEAgLTI1LDIxICsyNSwxMCBAQAogCiAjaW1wb3J0
ICJET01IVE1MRmllbGRTZXRFbGVtZW50LmgiCiAKLSNpbXBvcnQgIkRPTUhUTUxDb2xsZWN0aW9u
SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUhUTUxGb3JtRWxlbWVudEludGVybmFsLmgiCi0jaW1w
b3J0ICJET01JbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCi0jaW1wb3J0
ICJFeGNlcHRpb25IYW5kbGVycy5oIgotI2ltcG9ydCA8V2ViQ29yZS9IVE1MQ29sbGVjdGlvbi5o
PgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MRmllbGRTZXRFbGVtZW50Lmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL0hUTUxGb3JtRWxlbWVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVmFsaWRpdHlTdGF0ZS5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+Ci0jaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
RmllbGRTZXRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVy
bmFsKSkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390882</attachid>
            <date>2020-02-15 20:25:48 -0800</date>
            <delta_ts>2020-02-16 12:00:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207816-20200215202547.patch</filename>
            <type>text/plain</type>
            <size>211732</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA3ZDVjMDg3NTUyMmNm
ZGU0MjQwZTU1YTcwZTQ3ZGVmNjE0YTNhNy4uYjgxMDM3ZWYxNzgxOWIyN2M1YTBlYjU4MTY3ZjI1
NmJlMGVkYThlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5MSBAQAorMjAyMC0wMi0xNSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRv
cnMgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZpbmVkIGVsZW1lbnQgaXRlcmF0b3IgaW1wbGVtZW50YXRp
b24gb24gdGhlIGZvbGxvd2luZyB3YXlzOgorCisgICAgICAgIDEpIFJlbW92ZWQgdGhlIGR1cGxp
Y2F0ZSBkZXNjZW5kYW50IGl0ZXJhdG9yLCBrZWVwaW5nIHRoZSBvbmUgdGhhdCBtYXRjaGVzCisg
ICAgICAgICAgIHRoZSBzdHlsZSBvZiB0aGUgYW5jZXN0b3IgYW5kIGNoaWxkIGl0ZXJhdG9ycy4K
KyAgICAgICAgMikgUmVtb3ZlZCB0aGUgbm9uLXRlbXBsYXRlIGVsZW1lbnRBbmNlc3RvcnMsIGVs
ZW1lbnRDaGlsZHJlbiwgZWxlbWVudERlc2NlbmRhbnRzLAorICAgICAgICAgICBhbmQgZWxlbWVu
dExpbmVhZ2UgZnVuY3Rpb25zIGFuZCBjaGFuZ2VkIGNhbGxlcnMgdG8gdXNlIHh4eE9mVHlwZTxF
bGVtZW50PiBpbnN0ZWFkLgorCisgICAgICAgIEFsc28gcmVwbGFjZWQgdXNlIG9mIEhUTUxDb2xs
ZWN0aW9uIGNsYXNzZXMgaW4gV2ViS2l0IGNvZGUgZm9yIGl0ZXJhdGlvbi4KKyAgICAgICAgVGhl
eSBhcmUgZmluZSBmb3IgdXNlIGZyb20gSmF2YVNjcmlwdCwgYnV0IGludGVybmFsbHkgd2UgaGF2
ZSBtb3JlIGVmZmljaWVudAorICAgICAgICBpdGVyYXRpb24gaWRpb21zLgorCisgICAgICAgICog
SGVhZGVycy5jbWFrZTogUmVtb3ZlZCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmguCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Om1vdXNlQnV0dG9uTGlzdGVuZXIgY29u
c3QpOiBVc2UKKyAgICAgICAgbGluZWFnZU9mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnRMaW5lYWdl
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2li
aWxpdHlJbWFnZU1hcEhpdFRlc3QgY29uc3QpOgorICAgICAgICBVc2UgYW5jZXN0b3JzT2ZUeXBl
IGluc3RlYWQgb2YgYSBoYW5kd3JpdHRlbiBsb29wLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUg
b2YKKyAgICAgICAgSFRNTENvbGxlY3Rpb24uaC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHA6IERpdHRvLgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmNwcDogVXBkYXRlZCBpbmNsdWRlcy4KKyAgICAgICAgKiBkb20vQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5LmNwcDogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50OjpnZXRFbGVtZW50QnlJ
ZCBjb25zdCk6IFVzZQorICAgICAgICBkZXNjZW5kYW50c09mVHlwZSBpbnN0ZWFkb2YgZWxlbWVu
dERlc2NlbmRhbnRzLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlIGNvbnN0KTogVXNlIGxpbmVh
Z2VPZlR5cGUKKyAgICAgICAgaW5zdGVhZCBvZiBhIGhhbmRyd2l0dGVuIGxvb3AuCisKKyAgICAg
ICAgKiBkb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaDogTW92ZWQgdGhlIGRlY2xhcmF0aW9u
cyBvZiB0aGUgZnVuY3Rpb25zCisgICAgICAgIHRvIHRoZSB0b3Agb2YgdGhlIGZpbGUsIHNpbmNl
IHRoZSBjbGFzc2VzIGFyZSByZWFsbHkgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KKyAgICAgICAg
UmVtb3ZlZCB0aGUgc2VwYXJhdGUgIkNvbnN0IiB2ZXJzaW9ucyBvZiBldmVyeXRoaW5nIHNpbmNl
IHdlIGNhbiBqdXN0IHVzZQorICAgICAgICBjb25zdCBpbiB0aGUgdGVtcGxhdGUgYXJndW1lbnQg
dHlwZSBpbnN0ZWFkLiBVc2UgdGhlIHRlcm0gIlJhbmdlIiBpbnN0ZWFkCisgICAgICAgIG9mIHRo
ZSB0ZXJtICJJdGVyYXRvckFkYXB0ZXIiIGZvciB0aGUgY2xhc3MgdGVtcGxhdGVzIGZvciB1c2Ug
aW4gcmFuZ2UtYmFzZWQKKyAgICAgICAgZm9yIGxvb3BzIHNpbmNlIHRoYXQncyBjbG9zZXIgdG8g
bW9kZXJuIEMrKyB0ZXJtaW5vbG9neS4gTWFkZSBtYW55IGZ1bmN0aW9uCisgICAgICAgIG1lbWJl
cnMgY29uc3Qgd2hlcmUgYXBwcm9wcmlhdGUuIFNwZWNpYWxpemVkIGxpbmVhZ2VPZlR5cGUgYW5k
IGFuY2VzdG9yc09mVHlwZQorICAgICAgICBmb3IgRWxlbWVudCB0byBzbGlnaHRseSBvcHRpbWl6
ZSB0aGF0IGNhc2UuIFVzZSBkb3duY2FzdCBpbnN0ZWFkIG9mIHN0YXRpY19jYXN0LgorICAgICAg
ICBEZWxldGVkIGVsZW1lbnRMaW5lYWdlIGFuZCBlbGVtZW50QW5jZXN0b3JzLgorCisgICAgICAg
ICogZG9tL0VsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmg6IFJlbmFtZWQgSXRlcmF0
b3JBZGFwdGVyIHRvIFJhbmdlLgorICAgICAgICBNYWRlIG1vcmUgZnVuY3Rpb24gbWVtYmVycyBj
b25zdC4KKworICAgICAgICAqIGRvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oOiBNb3ZlZCB0aGUg
ZGVjbGFyYXRpb25zIG9mIHRoZSBmdW5jdGlvbnMKKyAgICAgICAgdG8gdGhlIHRvcCBvZiB0aGUg
ZmlsZSwgc2luY2UgdGhlIGNsYXNzZXMgYXJlIHJlYWxseSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxz
LgorICAgICAgICBSZW1vdmVkIHRoZSBzZXBhcmF0ZSAiQ29uc3QiIHZlcnNpb25zIG9mIGV2ZXJ5
dGhpbmcgc2luY2Ugd2UgY2FuIGp1c3QgdXNlCisgICAgICAgIGNvbnN0IGluIHRoZSB0ZW1wbGF0
ZSBhcmd1bWVudCB0eXBlIGluc3RlYWQuIFVzZSB0aGUgdGVybSAiUmFuZ2UiIGluc3RlYWQKKyAg
ICAgICAgb2YgdGhlIHRlcm0gIkl0ZXJhdG9yQWRhcHRlciIgZm9yIHRoZSBjbGFzcyB0ZW1wbGF0
ZXMgZm9yIHVzZSBpbiByYW5nZS1iYXNlZAorICAgICAgICBmb3IgbG9vcHMgc2luY2UgdGhhdCdz
IGNsb3NlciB0byBtb2Rlcm4gQysrIHRlcm1pbm9sb2d5LiBNYWRlIG1hbnkgZnVuY3Rpb24KKyAg
ICAgICAgbWVtYmVycyBjb25zdCB3aGVyZSBhcHByb3ByaWF0ZS4gRGVsZXRlZCBlbGVtZW50Q2hp
bGRyZW4uCisKKyAgICAgICAgKiBkb20vRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oOiBSZW1v
dmVkLgorCisgICAgICAgICogZG9tL0VsZW1lbnRJdGVyYXRvci5oOiBDaGFuZ2VkIEVsZW1lbnRJ
dGVyYXRvciB0byBkZXJpdmUgZnJvbSBzdGQ6Oml0ZXJhdG9yCisgICAgICAgIHRvIG1ha2UgaXRl
cmF0b3IgdHJhaXRzIHdvcmsgZm9yIGFsbCBjbGFzc2VzIGRlcml2ZWQgZnJvbSBpdC4gTWFkZSBj
b25zdHJ1Y3RvcnMKKyAgICAgICAgb2YgRWxlbWVudEl0ZXJhdG9yIHByaXZhdGUgdG8gbWFrZSBp
dCBjbGVhciBpdCdzIGludGVuZGVkIHRvIGJlIHVzZWQgYXMgYSBiYXNlCisgICAgICAgIGNsYXNz
IGFuZCBub3QgaW5zdGFudGlhdGVkLiBBZGRlZCBhIHByb3RlY3RlZCBhdEVuZCBmdW5jdGlvbiB0
aGF0J3MgdXNlZnVsIGluIHRoZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBzb21lIGZ1bmN0
aW9ucyB0aGF0IHdhbnQgdG8gY2hlY2sgdGhlIGVuZCBvZiBpdGVyYXRpb24gd2l0aG91dAorICAg
ICAgICBhbGxvY2F0aW5nIGFuICJlbmQiIGl0ZXJhdG9yLiBEZWxldGVkIEVsZW1lbnRDb25zdEl0
ZXJhdG9yLgorCisgICAgICAgICogZG9tL0xpdmVOb2RlTGlzdC5jcHA6IFJlbW92ZWQgc29tZSB1
bm5lZWRlZCBpbmNsdWRlcywgaW5jbHVkaW5nIEhUTUxDb2xsZWN0aW9uLmguCisKKyAgICAgICAg
KiBkb20vTGl2ZU5vZGVMaXN0Lmg6IFVwZGF0ZWQgc2luY2UgQ29sbGVjdGlvblRyYXZlcnNhbCBu
b3cgdXNlcyB0aGUKKyAgICAgICAgbW9yZSBtb2Rlcm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ciwgbm90IHRoZSBvbGRlciBvbmUgdGhhdCB1c2VkIGEgdmVjdG9yIG9mCisgICAgICAgIGFuY2Vz
dG9ycyB0byBkbyB0aGUgaXRlcmF0aW9uLgorCisgICAgICAgICogZG9tL05vZGUuY3BwOiBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgSFRNTENvbGxlY3Rpb24uaC4KKworICAgICAgICAqIGRv
bS9TZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6
OmNsb3Nlc3QgY29uc3QpOiBVc2UgbGluZWFnZWVPZlR5cGUgaW5zdGVhZCBvZiBhbgorICAgICAg
ICBleHBsaWNpdCBsb29wLgorICAgICAgICAoV2ViQ29yZTo6ZWxlbWVudHNGb3JMb2NhbE5hbWUp
OiBVc2UgZGVzY2VuZGFudHNPZlR5cGUgaW5zdGVhZCBvZiBlbGVtZW50RGVzY2VuZGFudHMuCisg
ICAgICAgIChXZWJDb3JlOjphbnlFbGVtZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlVGFnTmFtZVNlbGVjdG9yRGF0YSBjb25zdCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmds
ZUNsYXNzTmFtZVNlbGVjdG9yRGF0YSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZVNlbGVjdG9yRGF0YSBjb25zdCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZU11bHRp
U2VsZWN0b3JEYXRhIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRh
dGFMaXN0OjpleGVjdXRlQ29tcGlsZWRTaW1wbGVTZWxlY3RvckNoZWNrZXIgY29uc3QpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVDb21waWxlZFNl
bGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQgY29uc3QpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVDb21waWxlZFNpbmdsZU11bHRpU2Vs
ZWN0b3JEYXRhIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vU2xvdEFzc2lnbm1lbnQu
Y3BwOiBVcGRhdGVkIGluY2x1ZGVzLgorCisgICAgICAgICogZG9tL1R5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvci5oOiBNb3ZlZCB0aGUgZGVjbGFyYXRpb25zIG9mIHRoZSBmdW5jdGlvbnMK
KyAgICAgICAgdG8gdGhlIHRvcCBvZiB0aGUgZmlsZSwgc2luY2UgdGhlIGNsYXNzZXMgYXJlIHJl
YWxseSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgorICAgICAgICBSZW5hbWVkIHRoZSBjbGFzc2Vz
IHRvIHRha2Ugb3V0IHRoZSB3b3JkICJ0eXBlZCIgc2luY2UgdGhlc2UgaXRlcmF0b3JzIGFyZSB0
aGUKKyAgICAgICAgc2FtZSBhcyB0aGUgYW5jZXN0b3IgYW5kIGNoaWxkcmVuIGl0ZXJhdG9yczsg
dGhpcyBnaXZlcyB0aGVzZSB0aGUgc2FtZSBuYW1lIGFzCisgICAgICAgIHRoZSBjbGFzc2VzIGlu
IHRoZSBkZWxldGVkIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCBmaWxlLCBhbmQgd2UgY2Fu
IGZvbGxvdworICAgICAgICB1cCBieSByZW5hbWluZyB0aGlzIGZpbGUgdG8gdGFrZSAiVHlwZWQi
IG91dCBvZiB0aGUgbmFtZSBvZiB0aGUgZmlsZSwgdG9vLgorICAgICAgICBSZW1vdmVkIHRoZSBz
ZXBhcmF0ZSAiQ29uc3QiIHZlcnNpb25zIG9mIGV2ZXJ5dGhpbmcgc2luY2Ugd2UgY2FuIGp1c3Qg
dXNlCisgICAgICAgIGNvbnN0IGluIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudCB0eXBlIGluc3RlYWQu
IFVzZSB0aGUgdGVybSAiUmFuZ2UiIGluc3RlYWQKKyAgICAgICAgb2YgdGhlIHRlcm0gIkl0ZXJh
dG9yQWRhcHRlciIgZm9yIHRoZSBjbGFzcyB0ZW1wbGF0ZXMgZm9yIHVzZSBpbiByYW5nZS1iYXNl
ZAorICAgICAgICBmb3IgbG9vcHMgc2luY2UgdGhhdCdzIGNsb3NlciB0byBtb2Rlcm4gQysrIHRl
cm1pbm9sb2d5LiBNYWRlIG1hbnkgZnVuY3Rpb24KKyAgICAgICAgbWVtYmVycyBjb25zdCB3aGVy
ZSBhcHByb3ByaWF0ZS4gQWRkZWQgYSBuZXcgc3BlY2lhbGl6YXRpb24gdGhhdCBtYWtlcyBhCisg
ICAgICAgIGRlc2NlbmRhbnQgaXRlcmF0b3IgdGhhdCBpcyBmaWx0ZXJlZCBiYXNlZCBvbiBhIGZ1
bmN0aW9uLCBmb3IgdXNlIGluIGl0ZXJhdGluZworICAgICAgICBkYXRhIGxpc3Qgc3VnZ2VzdGlv
bnMuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCBjb25zdCk6IFVzZSB0aGUgZnVu
Y3Rpb24KKyAgICAgICAgZGVzY2VuZGFudHNPZlR5cGU8SFRNTEJvZHlFbGVtZW50PiBpbnN0ZWFk
IG9mIGdldEVsZW1lbnRCeVRhZ05hbWUoYm9keVRhZykuCisgICAgICAgIEFsc28gbWVyZ2VkIGFw
cGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50IGluIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmFwcGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKworICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmg6IERlbGV0ZWQgYXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQu
CisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvblJ1bGVNYXRjaGVyOjppc0V4Y2x1ZGVkKTogVXNlIGxp
bmVhZ2VPZlR5cGUgaW5zdGVhZCBvZgorICAgICAgICBlbGVtZW50TGluZWFnZS4KKworICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOiBVcGRhdGVkIGluY2x1
ZGVzLgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDogRGl0dG8uCisgICAgICAgICogaHRt
bC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oOiBEaXR0by4KKworICAgICAgICAqIGh0bWwvQ29sbGVj
dGlvblRyYXZlcnNhbC5oOiBVcGRhdGVkIHRvIHVzZSB0aGUgbWV3L3R5cGVkIHZlcnNpb24gb2YK
KyAgICAgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci4gQWxzbyB1cGRhdGVkIHRvIHVzZSBz
aG9ydGVyIHR5cGUgbmFtZXMuCisKKyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpzdWdnZXN0ZWRDb2xvcnMgY29uc3Qp
OiBVc2UgdGhlIG5ldworICAgICAgICBIVE1MRGF0YUxpc3RFbGVtZW50OjpzdWdnZXN0aW9ucyBp
bnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAgICogaHRtbC9HZW5lcmljQ2FjaGVk
SFRNTENvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0NhY2hlZEhUTUxD
b2xsZWN0aW9uPHRyYXZlcnNhbFR5cGU+OjplbGVtZW50TWF0Y2hlcyBjb25zdCk6CisgICAgICAg
IFVwZGF0ZWQgdG8gdXNlIEhUTUxEYXRhTGlzdEVsZW1lbnQ6OmlzU3VnZ2VzdGlvbiBhbmQgYWRk
ZWQgYSBjb21tZW50IGV4cGxhaW5pbmcKKyAgICAgICAgd2h5IHRoYXQgbWlnaHQgbm90IGJlIG5l
Y2Vzc2FyeSBpZiB3ZSBjb3JyZWN0IHRoZSBpbXBsZW1lbnRhdGlvbiB0byBtYXRjaCB0aGUKKyAg
ICAgICAgSFRNTCBzcGVjaWZpY2F0aW9uLgorCisgICAgICAgICogaHRtbC9IVE1MQWxsQ29sbGVj
dGlvbi5pZGw6IFNwZWNpZnkgW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBvbiB0aGUKKyAg
ICAgICAgYXJndW1lbnQgdG8gbmFtZWRJdGVtLCBhbmQgW0F0b21TdHJpbmddIGZvciB0aGUgYXJn
dW1lbnQgdG8gaXRlbS4KKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmlkbDogRGl0dG8u
CisKKyAgICAgICAgKiBodG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTERhdGFMaXN0RWxlbWVudDo6aXNTdWdnZXN0aW9uKTogQWRkZWQuCisgICAgICAg
ICogaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50Lmg6IEFkZGVkIGlzU3VnZ2VzdGlvbiBhbmQgc3Vn
Z2VzdGlvbnMgZnVuY3Rpb25zIHNvCisgICAgICAgIGxvZ2ljIGFib3V0IHdoaWNoIGRhdGEgbGlz
dCBvcHRpb25zIGFyZSBzdWdnZXN0aW9ucyBpcyBzaGFyZWQuCisKKyAgICAgICAgKiBodG1sL0hU
TUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVsZW1lbnRBZmZlY3RzRGlyZWN0aW9u
YWxpdHkpOiBSZWZhY3RvcmVkIHNvIHdlIGdldCBhIG1vcmUgZWZmaWNpZW50CisgICAgICAgIGlt
cGxlbWVudGF0aW9uIHdoZW4gdGhlIHR5cGUgb2YgdGhlIGVsZW1lbnQgaXMga25vd24uCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFm
dGVyQ2hpbGRBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgVXNlIGxpbmVhZ2VPZlR5cGUgaW5z
dGVhZCBvZiBlbGVtZW50TGluZWFnZS4KKworICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDog
UmVtb3ZlZCBzb21lIHVuZWVlZGVkIGZvcndhcmQgZGVjbGFyYXRpb25zLgorCisgICAgICAgICog
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRXaWRnZXRS
ZW5kZXJlcik6IFVzZSBhbmNlc3RvcnNPZlR5cGUgaW5zdGVhZCBvZiBhIGxvb3AuCisKKyAgICAg
ICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y29tcHV0ZVdpbGxWYWxpZGF0ZSBjb25zdCk6IFVzZQor
ICAgICAgICBhbmNlc3RvcnNPZlR5cGUgaW5zdGVhZCBvZiBhIGxvb3AuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjplbmNsb3NpbmdGb3JtQ29udHJvbEVsZW1lbnQp
OiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOiBEZWxl
dGVkIHVudXNlZCBlbmNsb3NpbmdGb3JtQ29udHJvbEVsZW1lbnQuCisKKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbDogU3BlY2lmeSBbUmVxdWlyZXNFeGlzdGlu
Z0F0b21TdHJpbmddIG9uCisgICAgICAgIHRoZSBhcmd1bWVudCB0byBuYW1lZEl0ZW0uCisKKyAg
ICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOiBSZW1vdmVkIHVubmVlZGVkIGlu
Y2x1ZGUgb2YgSFRNTENvbGxlY3Rpb24uaC4KKworICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXR1cERhdGVU
aW1lQ2hvb3NlclBhcmFtZXRlcnMpOiBVc2UgdGhlIG5ldworICAgICAgICBIVE1MRGF0YUxpc3RF
bGVtZW50OjpzdWdnZXN0aW9ucyBpbnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAg
ICogaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxP
cHRHcm91cEVsZW1lbnQ6Om93bmVyU2VsZWN0RWxlbWVudCBjb25zdCk6IFVzZSBhbmNlc3RvcnNP
ZlR5cGUKKyAgICAgICAgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorCisgICAgICAg
ICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0
aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlIGluc3RlYWQg
b2YKKyAgICAgICAgY2FsbGluZyBvd25lckRhdGFMaXN0RWxlbWVudC4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxPcHRpb25FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50Ojpvd25lckRhdGFMaXN0RWxlbWVudCBjb25zdCk6
IERlbGV0ZWQuIFNpbmNlIHRoZQorICAgICAgICBzYW1lIG9wdGlvbiBjYW4gYmUgdXNlZCBieSBu
ZXN0ZWQgZGF0YSBsaXN0IGVsZW1lbnRzLCB0aGUgY29uY2VwdCBvZiBhIHNpbmdsZQorICAgICAg
ICAib3duZXIiIGRhdGEgbGlzdCBlbGVtZW50IGlzbid0IGZ1bGx5IGNvcnJlY3QuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6b3duZXJTZWxlY3RFbGVtZW50IGNvbnN0KTog
VXNlIGFuY2VzdG9yc09mVHlwZQorICAgICAgICBpbnN0ZWFkIG9mIGEgaGFuZC13cml0dGVuIGxv
b3AuCisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oOiBEZWxldGVkIG93bmVyRGF0
YUxpc3RFbGVtZW50LgorCisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRs
OiBTcGVjaWZ5IFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gb24KKyAgICAgICAgdGhlIGFy
Z3VtZW50IHRvIG5hbWVkSXRlbS4KKworICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RF
bGVtZW50LmlkbDogU3BlY2lmeSBbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIG9uCisgICAg
ICAgIHRoZSBhcmd1bWVudCB0byBuYW1lZEl0ZW0uCisKKyAgICAgICAgKiBodG1sL0hUTUxUYWJs
ZUNlbGxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUNlbGxFbGVtZW50
OjphZGRpdGlvbmFsUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUgY29uc3QpOgorICAgICAgICBV
c2UgYXV0byBzaW5jZSBmaW5kUGFyZW50VGFibGUgbm93IHJldHVybnMgYSBjb25zdCB0YWJsZSBw
b2ludGVyLgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGFibGVDb2xFbGVtZW50OjphZGRpdGlvbmFsUHJlc2VudGF0aW9uQXR0
cmlidXRlU3R5bGUgY29uc3QpOgorICAgICAgICBEaXR0by4KKworICAgICAgICAqIGh0bWwvSFRN
TFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50Ojpj
cmVhdGVTaGFyZWRDZWxsU3R5bGUpOiBNYWRlIGNvbnN0LgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRhYmxlRWxlbWVudDo6YWRkaXRpb25hbENlbGxTdHlsZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRhYmxlRWxlbWVudDo6YWRkaXRpb25hbEdyb3VwU3R5bGUpOiBEaXR0by4KKyAg
ICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuaDogTWFkZSB0aGUgZnVuY3Rpb25zIGNvbnN0
LCBhbmQgbV9zaGFyZWRDZWxsU3R5bGUKKyAgICAgICAgbXV0YWJsZS4KKworICAgICAgICAqIGh0
bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxl
UGFydEVsZW1lbnQ6OmZpbmRQYXJlbnRUYWJsZSBjb25zdCk6IFVzZSBhbmNlc3RvcnNPZlR5cGUK
KyAgICAgICAgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLiBBbHNvIHJldmlzZWQgcmV0
dXJuIHR5cGUgdG8gYmUgY29uc3QtY29uc2lzdGVudC4KKyAgICAgICAgKiBodG1sL0hUTUxUYWJs
ZVBhcnRFbGVtZW50Lmg6IFVwZGF0ZWQgcmV0dXJuIHR5cGUuCisKKyAgICAgICAgKiBodG1sL0hU
TUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIEhUTUxDb2xsZWN0
aW9uLmguCisKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhcmVudEhUTUxFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaXJlY3Rpb25Gb3JGb3JtRGF0
YSBjb25zdCk6IFVzZQorICAgICAgICBsaW5lYWdlT2ZUeXBlIHJhdGhlciB0aGFuIGEgaGFuZC13
cml0dGVuIGxvb3AuIEFsc28gZ290IHJpZCBvZiB0aGUgbXVsdGlwbGUKKyAgICAgICAgc3RyaW5n
cyBpbiByZXR1cm4gcGF0aHMgc2luY2UgdGhlIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIG9uZSBv
ZiB0d28gc3RyaW5ncy4KKworICAgICAgICAqIGh0bWwvTWVkaWFEb2N1bWVudC5jcHA6IFVwZGF0
ZWQgaW5jbHVkZXMuCisKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OnN1Z2dlc3Rpb25zKTogVXNlIEhU
TUxEYXRhTGlzdEVsZW1lbnQ6OnN1Z2dlc3Rpb25zCisgICAgICAgIGluc3RlYWQgb2YgSFRNTENv
bGxlY3Rpb24uIEFsc28gYWRkZWQgYSBGSVhNRSBiZWNhdXNlIHRoZSBjdXJyZW50IGxvZ2ljIGlz
CisgICAgICAgIG5vdCByaWdodCBhY3Jvc3MgbGFuZ3VhZ2VzIGFuZCB3aXRoIG5vbi1BU0NJSSBj
aGFyYWN0ZXJzLgorCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOiBSZW1v
dmVkIGluY2x1ZGUgb2YgSFRNTENvbGxlY3Rpb24uaC4KKworICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRFbGVtZW50c0J5Q29tcHV0ZWRS
b2xlKToKKyAgICAgICAgVXNlIGRlc2NlbmRhbnRzT2ZUeXBlIGluc3RlYWQgb2YgZWxlbWVudERl
c2NlbmRhbnRzLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0
eWxlc0Zvck5vZGUpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2YgYSBo
YW5kLXdyaXR0ZW4gbG9vcC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omluc3Bl
Y3QpOiBVc2UgaXNFbGVtZW50Tm9kZSBhbmQgaXNEb2N1bWVudE5vZGUKKyAgICAgICAgaW5zdGVh
ZCBvZiB0aGUgbXVjaCBzbG93ZXIgbm9kZVR5cGUuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6aGlnaGxpZ2h0TW91c2VkT3Zlck5vZGUpOiBVc2UgaXNUZXh0Tm9kZSBpbnN0
ZWFkIG9mCisgICAgICAgIHRoZSBtdWNoIHNsb3dlciBub2RlVHlwZS4KKworICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDogVXBkYXRlZCBpbmNsdWRlcy4KKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6IERpdHRvLgorCisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250YWluaW5nTGlua0VsZW1l
bnQpOiBBZGRlZC4gVXNlcyBsaW5lYWdlT2ZUeXBlIGluc3RlYWQgb2YgZWxlbWVudExpbmVhZ2Uu
CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZG9TeXN0ZW1EcmFnKTogVXBkYXRl
ZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNu
YXBPZmZzZXRzLmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIEhUTUxDb2xsZWN0aW9uLmguCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50Lmg6IFJlZHVjZWQgaW5j
bHVkZXMsIHVzZSBmb3J3YXJkIGRlY2xhcmF0aW9ucy4KKworICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRTbGlk
ZXJUaWNrcyk6IFVzZSBIVE1MRGF0YUxpc3RFbGVtZW50OjpzdWdnZXN0aW9ucworICAgICAgICBp
bnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6OnVw
ZGF0ZU1hc2tlZEFuY2VzdG9yU2hvdWxkSXNvbGF0ZUJsZW5kaW5nKToKKyAgICAgICAgVXNlIGFu
Y2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEgaGFuZC13cml0dGVuIGxvb3AuCisKKyAgICAgICAg
KiBzdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpJ
bnZhbGlkYXRvcjo6aW52YWxpZGF0ZVN0eWxlV2l0aE1hdGNoRWxlbWVudCk6IFJlbW92ZSBhbiB1
bm5lZWRlZAorICAgICAgICBsb2NhbCB2YXJpYWJsZSBhbmQgdW5uZWVkZWQgYnJhY2VzLgorCisg
ICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6aXNBdFNoYWRvd0JvdW5kYXJ5KTogVXNlIHRoZSBpczxTaGFkb3dSb290PiBmdW5jdGlvbi4K
KworICAgICAgICAqIHN2Zy9TVkdBRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKTogVXNlIHRoZSBpczxTVkdFbGVtZW50PiBm
dW5jdGlvbi4KKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdFbGVtZW50Ojp1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbik6IERpdHRvLgor
CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDogTWFkZSBjb21wdXRlZFN0eWxlIHB1YmxpYy4g
QXQgbGVhc3Qgb25lIGNhbGwgc2l0ZSBub3cga25vd3MgdGhlCisgICAgICAgIHNwZWNpZmljIHR5
cGUgU1ZHRWxlbWVudCwgYW5kIHNvIGNhbiBjYWxsIGl0IGV2ZW4gbW9yZSBlZmZpY2llbnRseSB0
aGFuIGJlZm9yZS4gSWYKKyAgICAgICAgd2UgbGVmdCBpdCBwcml2YXRlIHdlJ2QgaGF2ZSB0byBj
YXN0IHRvIHRoZSBiYXNlIGNsYXNzIHRvIGNhbGwgaXQsIGFuZCB0aGVuIHdvdWxkIG5lZWQKKyAg
ICAgICAgdmlydHVhbCBmdW5jdGlvbiBkaXNwYXRjaC4KKworICAgICAgICAqIHhtbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJz
ZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudCk6IFVzZSBsaW5lYWdlT2ZUeXBlIGluc3RlYWQgb2YK
KyAgICAgICAgZWxlbWVudExpbmVhZ2UuIEFsc28gYWRkIGEgbnVsbCBjaGVjayB0aGF0IHNlZW1z
IHRvIGhhdmUgYmVlbiBuZWVkZWQgYmVmb3JlIHRvby4KKwogMjAyMC0wMi0xNSAgQWRyaWFuIFBl
cmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJd
IEJ1aWxkIGZhaWx1cmUgd2l0aCBDbGFuZy9saWJjKysgZHVlIHRvIG1pc3NpbmcgV2FsbFRpbWXi
hpJmbG9hdCBmb3Igc3RkOjppc25hbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJkMzkxMGVjMWRjYmZiMmE0ZDAz
YTJiZWRjNmRhMTdiYTZhMjM0OTcuLjIzZGNjNDA3ZjUyNmVmMTkxNDI2YTVlZWE5Mjg5OGRmYTMy
ODhiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjAtMDItMTUgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlzZSBET00gaXRlcmF0b3JzIGltcGxl
bWVudGF0aW9uIGFuZCB1c2FnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA3ODE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvbnRhaW5lckVsZW1lbnRGb3JFbGVtZW50KTog
VWVzIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mIG93bmVyRGF0YUxpc3RFbGVtZW50LgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcDog
VXBkYXRlZCBpbmNsdWRlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojpj
cmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIpOiBQYXNzIHJlZmVyZW5jZXMuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6V2Vi
RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKTogVGFrZSByZWZlcmVuY2VzCisgICAgICAgIGluc3Rl
YWQgb2YgcG9pbnRlcnMsIHNpbmNlIHRoZXkgbXVzdCBib3RoIGJlIG5vbi1udWxsLgorICAgICAg
ICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmhhbmRsZUtleWRvd25XaXRo
SWRlbnRpZmllcik6IFVwZGF0ZWQKKyAgICAgICAgdG8gdXNlIHJlZmVyZW5jZS4KKyAgICAgICAg
KFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpkaWRTZWxlY3RPcHRpb24pOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpkaWRD
bG9zZVN1Z2dlc3Rpb25zKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3Vn
Z2VzdGlvblBpY2tlcjo6Y2xvc2UpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YUxp
c3RTdWdnZXN0aW9uUGlja2VyOjpkaXNwbGF5V2l0aEFjdGl2YXRpb25UeXBlKTogRGl0dG8uCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlv
blBpY2tlci5oOiBNYXJrZWQgdGhlIGNsYXNzCisgICAgICAgIGZpbmFsLCBtYWRlIG1vcmUgZnVu
Y3Rpb25zIHByaXZhdGUsIHVzZSByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMsCisgICAg
ICAgIHJlbmFtZWQgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50IHRvIG1fY2xpZW50IHNpbmNl
IHRoZXJlIGlzIG9ubHkgb25lCisgICAgICAgIGNsaWVudCB3ZSBhcmUgZGVhbGluZyB3aXRoIGlu
IHRoaXMgY2xhc3MuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y29udGFpbnNBbnlGb3JtRWxlbWVudHMgY29u
c3QpOiBVc2UgY2hpbGRyZW5PZlR5cGUgaW5zdGVhZAorICAgICAgICBvZiBhIGhhbmQtd3JpdHRl
biBsb29wLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y29udGFpbnNBbnlGb3JtQ29udHJv
bHMgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0QWN0aXZlRGF0YUxpc3RTdWdnZXN0
aW9uUGlja2VyKTogVGFrZSByZWZlcmVuY2UuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb250YWluaW5n
TGlua0FuY2hvckVsZW1lbnQpOiBVc2UgbGluZWFnZU9mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnRM
aW5lYWdlLgorICAgICAgICBBbHNvIHJlbmFtZWQgdG8gZW1waGFzaXplIHRoYXQgdGhpcyBmdW5j
dGlvbiBvbmx5IHJldHVybnMgSFRNTEFuY2hvckVsZW1lbnQgbGlua3MuCisgICAgICAgIChXZWJL
aXQ6OmVsZW1lbnRQb3NpdGlvbkluZm9ybWF0aW9uKTogVXBkYXRlZCBmb3IgbmFtZSBhbmQgdHlw
ZSBjaGFuZ2UuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1l
bnQpOiBEaXR0by4KKwogMjAyMC0wMi0xNSAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5A
Z21haWwuY29tPgogCiAgICAgICAgIFtHZW9jbHVlXSBBdm9pZCB1c2FnZSBvZiBwcm92aWRlciBp
biBjYWxsYmFja3MgYWZ0ZXIgaXQgaGFzIGJlZW4gZGVzdHJveWVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggY2FjMDg3MGRiNTA2M2FjODk5NDQ2ODNiNjZjZDAzMGE5ODk1YWJjYS4u
ZjhiNTAyYjE0ZjNhOGM4NzI2MGUwYTIyY2Y2MzAzYzhkYzI3NjE4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAyLTE1ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpc2UgRE9NIGl0ZXJhdG9ycyBpbXBsZW1l
bnRhdGlvbiBhbmQgdXNhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNzgxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOiBDdXQgZG93biBvbiBpbmNsdWRlcyBhbmQg
cmUtc29ydGVkIHRoZW0uCisgICAgICAgICogRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW06IERp
dHRvLgorICAgICAgICAqIERPTS9ET01IVE1MRmllbGRTZXRFbGVtZW50Lm1tOiBEaXR0by4KKwog
MjAyMC0wMi0xNCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFzayBX
ZWJHTCBzdHJpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBkYzM4ZDZiZGYxZTNlM2I3MDhmYWJi
NjI0YzNhY2RiZjkxYWQ2ZDhlLi4xYzE0M2IzYzBmMGVhZjMzMTcwZDc2ZDdiNGExODIwNmYyZjEz
NjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTM5MCw3ICszOTAsNiBAQCBzZXQoV2ViQ29yZV9Q
UklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgZG9tL0VsZW1lbnRDaGlsZEl0ZXJhdG9yLmgK
ICAgICBkb20vRWxlbWVudENvbnRleHQuaAogICAgIGRvbS9FbGVtZW50RGF0YS5oCi0gICAgZG9t
L0VsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaAogICAgIGRvbS9FbGVtZW50SWRlbnRpZmllci5o
CiAgICAgZG9tL0VsZW1lbnRJdGVyYXRvci5oCiAgICAgZG9tL0VsZW1lbnRJdGVyYXRvckFzc2Vy
dGlvbnMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDYxMTAyYTQ1NmEzMWQ1MjFmMDYyYzFkMDgxYjdmYmUzN2NlMDA0OWYuLjdi
ZmFlMzU4ODVlN2U5YWJkZmI1NDIyN2JmMjFmNWFhZWI1NmVjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI2OTEsNyArMjY5
MSw2IEBACiAJCTkzRDE5NjMzMUQ2Q0FCODIwMEZDN0U0NyAvKiBFeGNlcHRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDE5NjMyMUQ2Q0FCODIw
MEZDN0U0NyAvKiBFeGNlcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5M0Q0Mzc5RjFENTdCMTUzMDBBQjg1RUEgLyogSlNFeGVjU3RhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhGOTM0RDgz
MTE4OUYxRUUwMDUwOEQ1RCAvKiBKU0V4ZWNTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDQzN0EwMUQ1N0IxOUEwMEFCODVFQSAvKiBD
dXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUI1NkM5QTgxQzg5MzEyODAwQzQ1NkRGIC8qIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblF1ZXVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJOTNENDM3QTExRDU3QjNGNDAwQUI4NUVBIC8qIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFERTExRjRBMThEODMxMUIwMDc4OTgzQiAvKiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENDM3
QTIxRDU3QjNGRTAwQUI4NUVBIC8qIFVSTFV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTZCOURDQTE4OURFMTAwMDBCQjg0MkMgLyogVVJMVXRp
bHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
M0Q0MzdBMzFENTdCN0UyMDBBQjg1RUEgLyogSlNNZWRpYUxpc3RDdXN0b20uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENzI2RkU3MTZEOUYyMDQwMDNB
NEU2RCAvKiBKU01lZGlhTGlzdEN1c3RvbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTkzRDlENTNDMERBMjdFMTgwMDc3MjE2QyAvKiBSYW5nZUJv
dW5kYXJ5UG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzRDlENTNCMERBMjdFMTgwMDc3MjE2QyAvKiBSYW5nZUJvdW5kYXJ5UG9pbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTIyNTYsNyAr
MTIyNTUsNiBAQAogCQlBRERBOTRCRjE5Njg2RjgwMDA0NTMwMjkgLyogSlNEb2N1bWVudEN1c3Rv
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RvY3VtZW50Q3VzdG9tLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEREYxQUQ0MTI1N0NEOUEwMDAzQTc1OSAv
KiBSZW5kZXJTVkdQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlclNWR1BhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRERGMUFE
NTEyNTdDRDlBMDAwM0E3NTkgLyogUmVuZGVyU1ZHUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUFERTExRjRBMThEODMxMUIwMDc4OTgzQiAvKiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURFMTY3MzYxODEwNTBDMzAw
NDYzQTJFIC8qIFJlbmRlclB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW5kZXJQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURFQzc4RjcxOEVFNTMw
ODAwMTMxNUMyIC8qIEpTRWxlbWVudEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0VsZW1lbnRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QURGRTJCNTQxQkQ1RjQxMjAwREFCNDU3IC8qIFJlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZVVzYWdlT3Zl
cmxheUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjgwOTUsNyArMjgw
OTMsNiBAQAogCQkJCTMxM0JDRTFCMjM1RTNCREIwMEZDMzlFNSAvKiBFbGVtZW50Q29udGV4dC5o
ICovLAogCQkJCUI1QjdBMTZGMTdDMTA4MDYwMEU0QUEwQSAvKiBFbGVtZW50RGF0YS5jcHAgKi8s
CiAJCQkJQjVCN0ExNkUxN0MxMDQ4MDAwRTRBQTBBIC8qIEVsZW1lbnREYXRhLmggKi8sCi0JCQkJ
QURFMTFGNEExOEQ4MzExQjAwNzg5ODNCIC8qIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCAq
LywKIAkJCQkyRDJCRUIyRjIyMzRBMzM0MDA1NTQ0Q0EgLyogRWxlbWVudElkZW50aWZpZXIuaCAq
LywKIAkJCQlFNEFFN0MxNTE3RDFCQjk1MDAwOUZCMzEgLyogRWxlbWVudEl0ZXJhdG9yLmggKi8s
CiAJCQkJRTQwMUMyNzQxN0NFNTNFQzAwQzQxQTM1IC8qIEVsZW1lbnRJdGVyYXRvckFzc2VydGlv
bnMuaCAqLywKQEAgLTI5NzU5LDcgKzI5NzU2LDYgQEAKIAkJCQlFNDZBMkIxRTE3Q0E3NkIxMDAw
REJDRDggLyogRWxlbWVudENoaWxkSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxM0JD
RTFDMjM1RTNCRTUwMEZDMzlFNSAvKiBFbGVtZW50Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjVCN0ExNzExN0MxMEFDMDAwRTRBQTBBIC8qIEVsZW1lbnREYXRhLmggaW4gSGVhZGVycyAq
LywKLQkJCQk5M0Q0MzdBMTFENTdCM0Y0MDBBQjg1RUEgLyogRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQyQkVCMzEyMjM0QTMzNTAwNTU0NENBIC8qIEVs
ZW1lbnRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFFN0MxNjE3RDFCQjk1MDAw
OUZCMzEgLyogRWxlbWVudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDAxQzI3NTE3
Q0U1M0VDMDBDNDFBMzUgLyogRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3QuY3BwCmluZGV4IDIwOWViOGU2NThlMGI3MzQxOGVjMmNkMDBjZDgwYTQx
NmZhMjkzM2EuLjQ1OGE0MDU3ZTJjZmZkMmY2Zjg1Y2U4MDFjYWY5ZDYxZDI4MDI5ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3QuY3BwCkBAIC0xMDQ0LDcgKzEwNDQsNyBAQCBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6bW91c2VCdXR0b25MaXN0ZW5lcihNb3VzZUJ1dHRvbkxpc3RlbmVyUmVzdWx0
RgogCiAgICAgLy8gY2hlY2sgaWYgb3VyIHBhcmVudCBpcyBhIG1vdXNlIGJ1dHRvbiBsaXN0ZW5l
cgogICAgIC8vIEZJWE1FOiBEbyB0aGUgY29udGludWF0aW9uIHNlYXJjaCBsaWtlIGFuY2hvckVs
ZW1lbnQgZG9lcwotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnRMaW5lYWdlKGlzPEVs
ZW1lbnQ+KCpub2RlKSA/IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpIDogbm9kZS0+cGFyZW50RWxl
bWVudCgpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVu
dD4oaXM8RWxlbWVudD4oKm5vZGUpID8gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpIDogKm5vZGUt
PnBhcmVudEVsZW1lbnQoKSkpIHsKICAgICAgICAgLy8gSWYgd2UndmUgcmVhY2hlZCB0aGUgYm9k
eSBhbmQgdGhpcyBpcyBub3QgYSBjb250cm9sIGVsZW1lbnQsIGRvIG5vdCBleHBvc2UgcHJlc3Mg
YWN0aW9uIGZvciB0aGlzIGVsZW1lbnQgdW5sZXNzIGZpbHRlciBpcyBJbmNsdWRlQm9keUVsZW1l
bnQuCiAgICAgICAgIC8vIEl0IGNhbiBjYXVzZSBmYWxzZSBwb3NpdGl2ZXMsIHdoZXJlIGV2ZXJ5
IHBpZWNlIG9mIHRleHQgaXMgbGFiZWxlZCBhcyBhY2NlcHRpbmcgcHJlc3MgYWN0aW9ucy4KICAg
ICAgICAgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShib2R5VGFnKSAmJiBpc1N0YXRpY1RleHQoKSAm
JiBmaWx0ZXIgPT0gRXhjbHVkZUJvZHlFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXgg
OTZmMzNjYjczNGE3MDgzNjliNGYzYmEzZDU0ODQ4OGU1MDQ5NTc3MC4uOGE4MzAwZDA5N2UxMGZj
NGYzMzAzNzMzNDFjMTE0YTE3MTlhMzAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAqCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzNzUsMjEg
KzIzNzUsMTkgQEAgQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nl
c3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhUTUxBcmVhRWwKICAgICBpZiAoIWFyZWEpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0g
bnVsbHB0cjsKLSAgICBmb3IgKEVsZW1lbnQqIG1hcFBhcmVudCA9IGFyZWEtPnBhcmVudEVsZW1l
bnQoKTsgbWFwUGFyZW50OyBtYXBQYXJlbnQgPSBtYXBQYXJlbnQtPnBhcmVudEVsZW1lbnQoKSkg
ewotICAgICAgICBpZiAoaXM8SFRNTE1hcEVsZW1lbnQ+KCptYXBQYXJlbnQpKSB7Ci0gICAgICAg
ICAgICBwYXJlbnQgPSBhY2Nlc3NpYmlsaXR5UGFyZW50Rm9ySW1hZ2VNYXAoZG93bmNhc3Q8SFRN
TE1hcEVsZW1lbnQ+KG1hcFBhcmVudCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICB9CisgICAgYXV0byogbWFwUGFyZW50ID0gYW5jZXN0b3JzT2ZUeXBlPEhUTUxNYXBFbGVt
ZW50PigqYXJlYSkuZmlyc3QoKTsKKyAgICBpZiAoIW1hcFBhcmVudCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBhdXRvKiBwYXJlbnQgPSBhY2Nlc3NpYmlsaXR5UGFyZW50Rm9ySW1h
Z2VNYXAobWFwUGFyZW50KTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgCisKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcGFyZW50LT5jaGlsZHJl
bigpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+ZWxlbWVudFJlY3QoKS5jb250YWlucyhwb2ludCkp
CiAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7CiAgICAgfQotICAgIAorCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAppbmRleCBmZGM2N2Y4YWMxNTZhNWFk
YmJhYTYxMzU3NmI4NjgyYWU2MjcxNWExLi5mZjQ3OGZkMjM2MTc4YmEzOWJjMjJkYzE5NWExNDhh
NTc5MmUyN2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNs
dWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5o
IgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZS5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDIw
NTA2ZjhlY2ZhYzY1M2U1NWFkMDQ4MWRkYTU2MGY1ZmQ3MmE1NGQuLjRlMDA5ZmVkNmJkMGUzMTE1
N2M2NjQwOWM3YjM1ZmNjN2VmZjIzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJE
T01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaCIKICNpbmNsdWRlICJET01XaW5kb3dXZWJEYXRhYmFz
ZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNp
bmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgpAQCAtMzgsNyArMzcsNiBAQAogI2luY2x1ZGUg
IkpTRXZlbnQuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJKU0hU
TUxBdWRpb0VsZW1lbnQuaCIKLSNpbmNsdWRlICJKU0hUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSURCRmFjdG9yeS5oIgogI2lu
Y2x1ZGUgIkpTUmVtb3RlRE9NV2luZG93LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGVBbGdvcml0aG1zLmNwcAppbmRleCAyYWYyNzYxODc3NTdlODgyODgzMDU1YzkwNGU2
ZTg3MzM0Y2Q0ZDIzLi5lNTZiOGZlMjFhYzU2OGYyMjA4NTVkOGE0ZTM1ZGEwMTQ0ODU4M2FlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKQEAg
LTI2LDEyICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbnRhaW5l
ck5vZGVBbGdvcml0aG1zLmgiCiAKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNs
dWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1
ZGUgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAKaW5k
ZXggOTQ1ODJlZjQzZjZmM2Q3NDJiNzAwODcyOTY5ZTNmOTM5NWNkZDI2Ny4uNWIwOTVhY2JmMWNk
NTQxMzA4ZTFhMGZiZjAzNTAxNTkxOTEwNjUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1
c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAKQEAgLTI5LDE0ICsyOSwxMiBAQAogI2luY2x1ZGUgIkN1
c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVu
dFRyYXZlcnNhbC5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpT
Q3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCiAjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgi
CiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRGcmFnbWVudC5jcHAKaW5kZXggOGYyMWIyNzkzNTAzNzYxOWViMTAzYjk0Y2MyMGM3
MmNiYjcxMWExOC4uMmEyNWFiMmU1YWE3Njc5NjUwODM3MGFlZmEyOTFlNzJjN2MxYzY3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcApAQCAtMjQsNyArMjQsNyBAQAog
I2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0j
aW5jbHVkZSAiRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkVsZW1lbnRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJYTUxEb2N1bWVudFBhcnNlci5oIgpAQCAtMTAzLDcgKzEwMyw3IEBA
IEVsZW1lbnQqIERvY3VtZW50RnJhZ21lbnQ6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21TdHJp
bmcmIGlkKSBjb25zdAogICAgICAgICByZXR1cm4gdHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQo
aWQpOwogCiAgICAgLy8gT3RoZXJ3aXNlLCBmYWxsIGJhY2sgdG8gaXRlcmF0aW5nIGFsbCBvZiB0
aGUgZWxlbWVudCBkZXNjZW5kYW50cy4KLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50
RGVzY2VuZGFudHMoKnRoaXMpKSB7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFu
dHNPZlR5cGU8RWxlbWVudD4oKnRoaXMpKSB7CiAgICAgICAgIGlmIChlbGVtZW50LmdldElkQXR0
cmlidXRlKCkgPT0gaWQpCiAgICAgICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxFbGVtZW50Kj4o
JmVsZW1lbnQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA4NzE4ZTZkODZhZDdm
ZTUwOGIxMzg3MDZhNjVkMjk1YWRkNDM5YzUyLi4wMTE3YTM2NmJjNzI1Nzk1YTU2ZmViOTlhZTFm
ZTE2Mjc4MzhlZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC00LDcgKzQsNyBAQAogICog
ICAgICAgICAgIChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiAgICAgICAg
ICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgKiAgICAgICAgICAg
KEMpIDIwMDcgRGF2aWQgU21pdGggKGNhdGZpc2gubWFuQGdtYWlsLmNvbSkKLSAqIENvcHlyaWdo
dCAoQykgMjAwNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAg
ICAgICAgICAoQykgMjAwNyBFcmljIFNlaWRlbCAoZXJpY0B3ZWJraXQub3JnKQogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKQEAgLTYwLDcgKzYwLDYgQEAKICNpbmNsdWRlICJHZXRBbmltYXRpb25zT3B0aW9ucy5oIgog
I2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50
LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MSHRtbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTGFiZWxFbGVt
ZW50LmgiCkBAIC0zNDAwLDI2ICszMzk5LDE0IEBAIHVuc2lnbmVkIEVsZW1lbnQ6OnJhcmVEYXRh
Q2hpbGRJbmRleCgpIGNvbnN0CiAKIEF0b21TdHJpbmcgRWxlbWVudDo6Y29tcHV0ZUluaGVyaXRl
ZExhbmd1YWdlKCkgY29uc3QKIHsKLSAgICBpZiAoY29uc3QgRWxlbWVudERhdGEqIGVsZW1lbnRE
YXRhID0gdGhpcy0+ZWxlbWVudERhdGEoKSkgewotICAgICAgICBpZiAoY29uc3QgQXR0cmlidXRl
KiBhdHRyaWJ1dGUgPSBlbGVtZW50RGF0YS0+ZmluZExhbmd1YWdlQXR0cmlidXRlKCkpCi0gICAg
ICAgICAgICByZXR1cm4gYXR0cmlidXRlLT52YWx1ZSgpOwotICAgIH0KLQogICAgIC8vIFRoZSBs
YW5ndWFnZSBwcm9wZXJ0eSBpcyBpbmhlcml0ZWQsIHNvIHdlIGl0ZXJhdGUgb3ZlciB0aGUgcGFy
ZW50cyB0byBmaW5kIHRoZSBmaXJzdCBsYW5ndWFnZS4KLSAgICBjb25zdCBOb2RlKiBjdXJyZW50
Tm9kZSA9IHRoaXM7Ci0gICAgd2hpbGUgKChjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLT5wYXJl
bnROb2RlKCkpKSB7Ci0gICAgICAgIGlmIChpczxFbGVtZW50PigqY3VycmVudE5vZGUpKSB7Ci0g
ICAgICAgICAgICBpZiAoY29uc3QgRWxlbWVudERhdGEqIGVsZW1lbnREYXRhID0gZG93bmNhc3Q8
RWxlbWVudD4oKmN1cnJlbnROb2RlKS5lbGVtZW50RGF0YSgpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZWxlbWVudERhdGEtPmZpbmRMYW5ndWFn
ZUF0dHJpYnV0ZSgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlLT52YWx1
ZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGlzPERvY3VtZW50PigqY3Vy
cmVudE5vZGUpKSB7Ci0gICAgICAgICAgICAvLyBjaGVja2luZyB0aGUgTUlNRSBjb250ZW50LWxh
bmd1YWdlCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjdXJyZW50Tm9k
ZSkuY29udGVudExhbmd1YWdlKCk7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbGluZWFnZU9m
VHlwZTxFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnREYXRhID0g
ZWxlbWVudC5lbGVtZW50RGF0YSgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogYXR0cmlidXRl
ID0gZWxlbWVudERhdGEtPmZpbmRMYW5ndWFnZUF0dHJpYnV0ZSgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBhdHRyaWJ1dGUtPnZhbHVlKCk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICByZXR1
cm4gbnVsbEF0b20oKTsKKyAgICByZXR1cm4gZG9jdW1lbnQoKS5jb250ZW50TGFuZ3VhZ2UoKTsK
IH0KIAogTG9jYWxlJiBFbGVtZW50Ojpsb2NhbGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaAppbmRleCA0YjYyZDM4YjM4ZmQzODQ5YzczN2Fj
YTg3ZWY4NDUyN2Y4Mzc1NWYwLi44MDUxNDM2NzRkNjA4MWM0NzQyMDYxODkyNDg0ZWZjOTExZTNk
NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OSw2ICsyOSwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlPHR5cGVuYW1l
PiBjbGFzcyBFbGVtZW50QW5jZXN0b3JSYW5nZTsKKworLy8gUmFuZ2UgZm9yIGl0ZXJhdGluZyBh
biBlbGVtZW50IGFuZCBpdHMgYW5jZXN0b3JzLgordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5
cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKEVsZW1l
bnQmIGZpcnN0KTsKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0
b3JSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShjb25zdCBFbGVtZW50JiBm
aXJzdCk7CisKKy8vIFJhbmdlIGZvciBpdGVyYXRpbmcgYSBub2RlJ3MgZWxlbWVudCBhbmNlc3Rv
cnMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8
RWxlbWVudFR5cGU+IGFuY2VzdG9yc09mVHlwZShOb2RlJiBkZXNjZW5kYW50KTsKK3RlbXBsYXRl
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JSYW5nZTxjb25zdCBFbGVtZW50
VHlwZT4gYW5jZXN0b3JzT2ZUeXBlKGNvbnN0IE5vZGUmIGRlc2NlbmRhbnQpOworCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBjbGFzcyBFbGVtZW50QW5jZXN0b3JJdGVyYXRvciA6
IHB1YmxpYyBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IHsKIHB1YmxpYzoKQEAgLTM4LDQ2
ICs0OCwxNyBAQCBwdWJsaWM6CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
Ci1jbGFzcyBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRDb25z
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiB7Ci1wdWJsaWM6Ci0gICAgRWxlbWVudEFuY2VzdG9yQ29u
c3RJdGVyYXRvcigpOwotICAgIGV4cGxpY2l0IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3Io
Y29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotICAgIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRl
cmF0b3ImIG9wZXJhdG9yKysoKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWNsYXNzIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlciB7CitjbGFzcyBFbGVtZW50
QW5jZXN0b3JSYW5nZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRWxlbWVudEFuY2VzdG9ySXRl
cmF0b3JBZGFwdGVyKEVsZW1lbnRUeXBlKiBmaXJzdCk7Ci0gICAgRWxlbWVudEFuY2VzdG9ySXRl
cmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCk7Ci0gICAgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8
RWxlbWVudFR5cGU+IGVuZCgpOwotICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpIHsgcmV0dXJuIG1f
Zmlyc3Q7IH0KKyAgICBleHBsaWNpdCBFbGVtZW50QW5jZXN0b3JSYW5nZShFbGVtZW50VHlwZSog
Zmlyc3QpOworICAgIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigp
IGNvbnN0OworICAgIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKSBj
b25zdDsKKyAgICBFbGVtZW50VHlwZSogZmlyc3QoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0OyB9
CiAKIHByaXZhdGU6Ci0gICAgRWxlbWVudFR5cGUqIG1fZmlyc3Q7CisgICAgRWxlbWVudFR5cGUq
IGNvbnN0IG1fZmlyc3Q7CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1j
bGFzcyBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlciB7Ci1wdWJsaWM6Ci0gICAg
ZXhwbGljaXQgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgRWxlbWVu
dFR5cGUqIGZpcnN0KTsKLSAgICBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPiBiZWdpbigpIGNvbnN0OwotICAgIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxl
bWVudFR5cGU+IGVuZCgpIGNvbnN0OwotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNv
bnN0IHsgcmV0dXJuIG1fZmlyc3Q7IH0KLQotcHJpdmF0ZToKLSAgICBjb25zdCBFbGVtZW50VHlw
ZSogbV9maXJzdDsKLX07Ci0KLUVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50
PiBlbGVtZW50TGluZWFnZShFbGVtZW50KiBmaXJzdCk7Ci1FbGVtZW50QW5jZXN0b3JDb25zdEl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50TGluZWFnZShjb25zdCBFbGVtZW50KiBmaXJz
dCk7Ci1FbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudEFuY2Vz
dG9ycyhFbGVtZW50KiBkZXNjZW5kYW50KTsKLUVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JB
ZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRBbmNlc3RvcnMoY29uc3QgRWxlbWVudCogZGVzY2VuZGFu
dCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShFbGVtZW50JiBmaXJzdCk7Ci10
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0
b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKGNvbnN0IEVsZW1lbnQmIGZpcnN0
KTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9ySXRlcmF0
b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNPZlR5cGUoTm9kZSYgZGVzY2VuZGFudCk7
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRl
cmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNPZlR5cGUoY29uc3QgTm9kZSYgZGVz
Y2VuZGFudCk7Ci0KIC8vIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yCiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KQEAgLTk1LDExOSArNzYsNzAgQEAgaW5saW5lIEVsZW1lbnRBbmNl
c3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudEFuY2VzdG9ySXRlcmF0b3IoRWxlbWVu
dFR5cGUKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50QW5j
ZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6b3BlcmF0b3IrKygpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRB
bmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT46OnRyYXZlcnNlQW5jZXN0b3IoKSk7Ci19Ci0KLS8vIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRl
cmF0b3IKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRB
bmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50QW5jZXN0b3JDb25zdEl0
ZXJhdG9yKCkKLSAgICA6IEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihudWxscHRy
KQotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVu
dEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRBbmNlc3RvckNvbnN0
SXRlcmF0b3IoY29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpCi0gICAgOiBFbGVtZW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT4obnVsbHB0ciwgY3VycmVudCkKLXsKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0
b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBl
Pjo6b3BlcmF0b3IrKygpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRBbmNlc3Rv
ckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+Ojp0cmF2ZXJzZUFuY2VzdG9yKCkpOworICAgIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50
VHlwZT46OnRyYXZlcnNlQW5jZXN0b3IoKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKLS8vIEVs
ZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcgorLy8gRWxlbWVudEFuY2VzdG9yUmFuZ2UKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRl
cihFbGVtZW50VHlwZSogZmlyc3QpCitpbmxpbmUgRWxlbWVudEFuY2VzdG9yUmFuZ2U8RWxlbWVu
dFR5cGU+OjpFbGVtZW50QW5jZXN0b3JSYW5nZShFbGVtZW50VHlwZSogZmlyc3QpCiAgICAgOiBt
X2ZpcnN0KGZpcnN0KQogewogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3Rv
ckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2luKCkKK2lubGluZSBFbGVtZW50QW5j
ZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8RWxlbWVudFR5
cGU+OjpiZWdpbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9y
PEVsZW1lbnRUeXBlPihtX2ZpcnN0KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50
QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjplbmQoKQoraW5saW5lIEVsZW1l
bnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVt
ZW50VHlwZT46OmVuZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yPEVsZW1lbnRUeXBlPigpOwogfQogCi0vLyBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9y
QWRhcHRlcgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVu
dEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpFbGVtZW50QW5jZXN0
b3JDb25zdEl0ZXJhdG9yQWRhcHRlcihjb25zdCBFbGVtZW50VHlwZSogZmlyc3QpCi0gICAgOiBt
X2ZpcnN0KGZpcnN0KQotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudEFu
Y2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1f
Zmlyc3QpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxl
bWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9yQ29u
c3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjplbmQoKSBjb25zdAotewotICAgIHJldHVy
biBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPigpOwotfQotCiAvLyBT
dGFuZGFsb25lIGZ1bmN0aW9ucwogCi1pbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFw
dGVyPEVsZW1lbnQ+IGVsZW1lbnRMaW5lYWdlKEVsZW1lbnQqIGZpcnN0KQotewotICAgIHJldHVy
biBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4oZmlyc3QpOwotfQotCi1p
bmxpbmUgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVu
dExpbmVhZ2UoY29uc3QgRWxlbWVudCogZmlyc3QpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNl
c3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+KGZpcnN0KTsKLX0KLQotaW5saW5lIEVs
ZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50QW5jZXN0b3JzKEVs
ZW1lbnQqIGRlc2NlbmRhbnQpCit0ZW1wbGF0ZTw+IGlubGluZSBFbGVtZW50QW5jZXN0b3JSYW5n
ZTxFbGVtZW50PiBsaW5lYWdlT2ZUeXBlPEVsZW1lbnQ+KEVsZW1lbnQmIGZpcnN0KQogewotICAg
IHJldHVybiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4oZGVzY2VuZGFu
dC0+cGFyZW50RWxlbWVudCgpKTsKLX0KLQotaW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRl
cmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRBbmNlc3RvcnMoY29uc3QgRWxlbWVudCogZGVz
Y2VuZGFudCkKLXsKLSAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0
ZXI8RWxlbWVudD4oZGVzY2VuZGFudC0+cGFyZW50RWxlbWVudCgpKTsKKyAgICByZXR1cm4gRWxl
bWVudEFuY2VzdG9yUmFuZ2U8RWxlbWVudD4oJmZpcnN0KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxF
bGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShFbGVtZW50JiBmaXJzdCkKK2lubGluZSBFbGVtZW50
QW5jZXN0b3JSYW5nZTxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShFbGVtZW50JiBmaXJzdCkK
IHsKICAgICBpZiAoaXM8RWxlbWVudFR5cGU+KGZpcnN0KSkKLSAgICAgICAgcmV0dXJuIEVsZW1l
bnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4oc3RhdGljX2Nhc3Q8RWxlbWVu
dFR5cGUqPigmZmlyc3QpKTsKKyAgICAgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvclJhbmdlPEVs
ZW1lbnRUeXBlPigmZG93bmNhc3Q8RWxlbWVudFR5cGU+KGZpcnN0KSk7CiAgICAgcmV0dXJuIGFu
Y2VzdG9yc09mVHlwZTxFbGVtZW50VHlwZT4oZmlyc3QpOwogfQogCit0ZW1wbGF0ZTw+IGlubGlu
ZSBFbGVtZW50QW5jZXN0b3JSYW5nZTxjb25zdCBFbGVtZW50PiBsaW5lYWdlT2ZUeXBlPEVsZW1l
bnQ+KGNvbnN0IEVsZW1lbnQmIGZpcnN0KQoreworICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JS
YW5nZTxjb25zdCBFbGVtZW50PigmZmlyc3QpOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoY29uc3QgRWxlbWVudCYgZmlyc3QpCitpbmxpbmUgRWxl
bWVudEFuY2VzdG9yUmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoY29uc3Qg
RWxlbWVudCYgZmlyc3QpCiB7CiAgICAgaWYgKGlzPEVsZW1lbnRUeXBlPihmaXJzdCkpCi0gICAg
ICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlw
ZT4oc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudFR5cGUqPigmZmlyc3QpKTsKKyAgICAgICAgcmV0
dXJuIEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPigmZG93bmNhc3Q8RWxl
bWVudFR5cGU+KGZpcnN0KSk7CiAgICAgcmV0dXJuIGFuY2VzdG9yc09mVHlwZTxFbGVtZW50VHlw
ZT4oZmlyc3QpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUg
RWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNPZlR5
cGUoTm9kZSYgZGVzY2VuZGFudCkKK2lubGluZSBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50
VHlwZT4gYW5jZXN0b3JzT2ZUeXBlKE5vZGUmIGRlc2NlbmRhbnQpCiB7CiAgICAgRWxlbWVudFR5
cGUqIGZpcnN0ID0gZmluZEVsZW1lbnRBbmNlc3Rvck9mVHlwZTxFbGVtZW50VHlwZT4oZGVzY2Vu
ZGFudCk7Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50
VHlwZT4oZmlyc3QpOworICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50VHlw
ZT4oZmlyc3QpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUg
RWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGFuY2VzdG9y
c09mVHlwZShjb25zdCBOb2RlJiBkZXNjZW5kYW50KQoraW5saW5lIEVsZW1lbnRBbmNlc3RvclJh
bmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNPZlR5cGUoY29uc3QgTm9kZSYgZGVzY2Vu
ZGFudCkKIHsKICAgICBjb25zdCBFbGVtZW50VHlwZSogZmlyc3QgPSBmaW5kRWxlbWVudEFuY2Vz
dG9yT2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPihkZXNjZW5kYW50KTsKLSAgICByZXR1cm4gRWxl
bWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KGZpcnN0KTsKKyAg
ICByZXR1cm4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+KGZpcnN0KTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IuaAppbmRleCA0OGUzYjFhNjE4ZDJm
ZTBhMjg3NjdiMzczMWYyZmFkZjk3M2VmYmNlLi5kMWRkYjBmNzM3NTAxNTY0NTk3YjBhMDIzNGUy
YjQ2MjAxZDVkZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuZFRl
eHREZXNjZW5kYW50SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFu
ZFRleHREZXNjZW5kYW50SXRlcmF0b3IuaApAQCAtMzYsOCArMzYsOCBAQCBjbGFzcyBFbGVtZW50
QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgRWxlbWVudEFuZFRleHRE
ZXNjZW5kYW50SXRlcmF0b3IoKTsKICAgICBlbnVtIEZpcnN0Q2hpbGRUYWcgeyBGaXJzdENoaWxk
IH07Ci0gICAgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoQ29udGFpbmVyTm9kZSYg
cm9vdCwgRmlyc3RDaGlsZFRhZyk7Ci0gICAgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0
b3IoQ29udGFpbmVyTm9kZSYgcm9vdCwgTm9kZSogY3VycmVudCk7CisgICAgRWxlbWVudEFuZFRl
eHREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgRmlyc3RDaGls
ZFRhZyk7CisgICAgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFp
bmVyTm9kZSYgcm9vdCwgTm9kZSogY3VycmVudCk7CiAKICAgICBFbGVtZW50QW5kVGV4dERlc2Nl
bmRhbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgcmV0dXJuIHRyYXZlcnNlTmV4dCgpOyB9CiAK
QEAgLTYzLDkgKzYzLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGlz
RWxlbWVudE9yVGV4dChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxFbGVtZW50Pihub2Rl
KSB8fCBpczxUZXh0Pihub2RlKTsgfQotICAgIHN0YXRpYyBOb2RlKiBmaXJzdENoaWxkKE5vZGUm
KTsKLSAgICBzdGF0aWMgTm9kZSogbmV4dFNpYmxpbmcoTm9kZSYpOwotICAgIHN0YXRpYyBOb2Rl
KiBwcmV2aW91c1NpYmxpbmcoTm9kZSYpOworICAgIHN0YXRpYyBOb2RlKiBmaXJzdENoaWxkKGNv
bnN0IE5vZGUmKTsKKyAgICBzdGF0aWMgTm9kZSogbmV4dFNpYmxpbmcoY29uc3QgTm9kZSYpOwor
ICAgIHN0YXRpYyBOb2RlKiBwcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSYpOwogCiAgICAgdm9p
ZCBwb3BBbmNlc3RvclNpYmxpbmdTdGFjaygpOwogCkBAIC04MiwxNyArODIsMTcgQEAgcHJpdmF0
ZToKICNlbmRpZgogfTsKIAotY2xhc3MgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JB
ZGFwdGVyIHsKK2NsYXNzIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudFJhbmdlIHsKIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoQ29u
dGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3Ig
YmVnaW4oKTsKLSAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBlbmQoKTsKKyAg
ICBleHBsaWNpdCBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZShjb25zdCBDb250YWluZXJO
b2RlJiByb290KTsKKyAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBiZWdpbigp
IGNvbnN0OworICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yIGVuZCgpIGNvbnN0
OwogCiBwcml2YXRlOgotICAgIENvbnRhaW5lck5vZGUmIG1fcm9vdDsKKyAgICBjb25zdCBDb250
YWluZXJOb2RlJiBtX3Jvb3Q7CiB9OwogCi1FbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRv
ckFkYXB0ZXIgZWxlbWVudEFuZFRleHREZXNjZW5kYW50cyhDb250YWluZXJOb2RlJik7CitFbGVt
ZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZSBlbGVtZW50QW5kVGV4dERlc2NlbmRhbnRzKENvbnRh
aW5lck5vZGUmKTsKIAogLy8gRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IKIApAQCAt
MTAxLDcgKzEwMSw3IEBAIGlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6
RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoKQogewogfQogCi1pbmxpbmUgRWxlbWVu
dEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJh
dG9yKENvbnRhaW5lck5vZGUmIHJvb3QsIEZpcnN0Q2hpbGRUYWcpCitpbmxpbmUgRWxlbWVudEFu
ZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9y
KGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QsIEZpcnN0Q2hpbGRUYWcpCiAgICAgOiBtX2N1cnJl
bnQoZmlyc3RDaGlsZChyb290KSkKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgICwgbV9hc3NlcnRp
b25zKG1fY3VycmVudCkKQEAgLTExMyw3ICsxMTMsNyBAQCBpbmxpbmUgRWxlbWVudEFuZFRleHRE
ZXNjZW5kYW50SXRlcmF0b3I6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKENvbnRh
aQogICAgIG1fZGVwdGggPSAxOwogfQogCi1pbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50
SXRlcmF0b3I6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKENvbnRhaW5lck5vZGUm
IHJvb3QsIE5vZGUqIGN1cnJlbnQpCitpbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRl
cmF0b3I6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5v
ZGUmIHJvb3QsIE5vZGUqIGN1cnJlbnQpCiAgICAgOiBtX2N1cnJlbnQoY3VycmVudCkKICNpZiBB
U1NFUlRfRU5BQkxFRAogICAgICwgbV9hc3NlcnRpb25zKG1fY3VycmVudCkKQEAgLTE0OCw3ICsx
NDgsNyBAQCBpbmxpbmUgdm9pZCBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6ZHJv
cEFzc2VydGlvbnMoKQogI2VuZGlmCiB9CiAKLWlubGluZSBOb2RlKiBFbGVtZW50QW5kVGV4dERl
c2NlbmRhbnRJdGVyYXRvcjo6Zmlyc3RDaGlsZChOb2RlJiBjdXJyZW50KQoraW5saW5lIE5vZGUq
IEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpmaXJzdENoaWxkKGNvbnN0IE5vZGUm
IGN1cnJlbnQpCiB7CiAgICAgYXV0byogbm9kZSA9IGN1cnJlbnQuZmlyc3RDaGlsZCgpOwogICAg
IHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPclRleHQoKm5vZGUpKQpAQCAtMTU2LDcgKzE1Niw3
IEBAIGlubGluZSBOb2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6Zmlyc3RD
aGlsZChOb2RlJiBjdXJyZW50KQogICAgIHJldHVybiBub2RlOwogfQogCi1pbmxpbmUgTm9kZSog
RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6Om5leHRTaWJsaW5nKE5vZGUmIGN1cnJl
bnQpCitpbmxpbmUgTm9kZSogRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6Om5leHRT
aWJsaW5nKGNvbnN0IE5vZGUmIGN1cnJlbnQpCiB7CiAgICAgYXV0byogbm9kZSA9IGN1cnJlbnQu
bmV4dFNpYmxpbmcoKTsKICAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T3JUZXh0KCpub2Rl
KSkKQEAgLTE2NCw3ICsxNjQsNyBAQCBpbmxpbmUgTm9kZSogRWxlbWVudEFuZFRleHREZXNjZW5k
YW50SXRlcmF0b3I6Om5leHRTaWJsaW5nKE5vZGUmIGN1cnJlbnQpCiAgICAgcmV0dXJuIG5vZGU7
CiB9CiAKLWlubGluZSBOb2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6cHJl
dmlvdXNTaWJsaW5nKE5vZGUmIGN1cnJlbnQpCitpbmxpbmUgTm9kZSogRWxlbWVudEFuZFRleHRE
ZXNjZW5kYW50SXRlcmF0b3I6OnByZXZpb3VzU2libGluZyhjb25zdCBOb2RlJiBjdXJyZW50KQog
ewogICAgIGF1dG8qIG5vZGUgPSBjdXJyZW50LnByZXZpb3VzU2libGluZygpOwogICAgIHdoaWxl
IChub2RlICYmICFpc0VsZW1lbnRPclRleHQoKm5vZGUpKQpAQCAtMjk0LDI4ICsyOTQsMjggQEAg
aW5saW5lIGJvb2wgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6Om9wZXJhdG9yIT0o
Y29uc3QgRWxlbWVudEFuZFRleHREZXMKICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiB9
CiAKLS8vIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcgorLy8gRWxlbWVu
dEFuZFRleHREZXNjZW5kYW50UmFuZ2UKIAotaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFu
dEl0ZXJhdG9yQWRhcHRlcjo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVy
KENvbnRhaW5lck5vZGUmIHJvb3QpCitpbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50UmFu
Z2U6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudFJhbmdlKGNvbnN0IENvbnRhaW5lck5vZGUmIHJv
b3QpCiAgICAgOiBtX3Jvb3Qocm9vdCkKIHsKIH0KIAotaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVz
Y2VuZGFudEl0ZXJhdG9yIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjo6
YmVnaW4oKQoraW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yIEVsZW1lbnRB
bmRUZXh0RGVzY2VuZGFudFJhbmdlOjpiZWdpbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEVsZW1l
bnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKG1fcm9vdCwgRWxlbWVudEFuZFRleHREZXNjZW5k
YW50SXRlcmF0b3I6OkZpcnN0Q2hpbGQpOwogfQogCi1pbmxpbmUgRWxlbWVudEFuZFRleHREZXNj
ZW5kYW50SXRlcmF0b3IgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjpl
bmQoKQoraW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yIEVsZW1lbnRBbmRU
ZXh0RGVzY2VuZGFudFJhbmdlOjplbmQoKSBjb25zdAogewogICAgIHJldHVybiB7IH07CiB9CiAK
IC8vIFN0YW5kYWxvbmUgZnVuY3Rpb25zCiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRh
bnRJdGVyYXRvckFkYXB0ZXIgZWxlbWVudEFuZFRleHREZXNjZW5kYW50cyhDb250YWluZXJOb2Rl
JiByb290KQoraW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudFJhbmdlIGVsZW1lbnRBbmRU
ZXh0RGVzY2VuZGFudHMoQ29udGFpbmVyTm9kZSYgcm9vdCkKIHsKLSAgICByZXR1cm4gRWxlbWVu
dEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKHJvb3QpOworICAgIHJldHVybiBFbGVt
ZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZShyb290KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0ZXJhdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENoaWxkSXRlcmF0b3IuaAppbmRleCA4ZTM4
ZmI1MDMyYTgyMzc3NmUyYTdiY2EzYWMyNThjYjE1MDZjNDAwLi4xM2I4YzAxOGRkNGYxOGUxZjk3
ODkzYzc1YjBhMzVlOTRjYmY5YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudENoaWxkSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENoaWxk
SXRlcmF0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yOSwxNSArMjksMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0ZW1w
bGF0ZTx0eXBlbmFtZT4gY2xhc3MgRWxlbWVudENoaWxkUmFuZ2U7CisKKy8vIFJhbmdlIGZvciBp
dGVyYXRpbmcgdGhyb3VnaCBjaGlsZCBlbGVtZW50cy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4gRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKENv
bnRhaW5lck5vZGUmKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudENo
aWxkUmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKGNvbnN0IENvbnRhaW5l
ck5vZGUmKTsKKwogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogY2xhc3MgRWxlbWVu
dENoaWxkSXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiB7CiBw
dWJsaWM6Ci0gICAgdHlwZWRlZiBFbGVtZW50VHlwZSB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYg
cHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIEVsZW1lbnRUeXBlKiBwb2lu
dGVyOwotICAgIHR5cGVkZWYgRWxlbWVudFR5cGUmIHJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHN0
ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0KICAgICBFbGVtZW50
Q2hpbGRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpOwogICAgIEVsZW1lbnRD
aGlsZEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCwgRWxlbWVudFR5cGUqIGN1
cnJlbnQpOwogICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yJiBvcGVyYXRvci0tKCk7CkBAIC00NSw1
NSArNDUsMjEgQEAgcHVibGljOgogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotY2xhc3MgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT4gewotcHVibGljOgotICAgIHR5cGVkZWYgY29uc3QgRWxlbWVu
dFR5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7
Ci0gICAgdHlwZWRlZiBjb25zdCBFbGVtZW50VHlwZSogcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNv
bnN0IEVsZW1lbnRUeXBlJiByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBzdGQ6OmZvcndhcmRfaXRl
cmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwotCi0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVy
YXRvcihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpOwotICAgIEVsZW1lbnRDaGlsZENvbnN0
SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50LCBjb25zdCBFbGVtZW50VHlwZSog
Y3VycmVudCk7Ci0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwot
ICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKLX07Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRh
cHRlciB7Ci1wdWJsaWM6Ci0gICAgRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyKENvbnRhaW5l
ck5vZGUmIHBhcmVudCk7Ci0KLSAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4g
YmVnaW4oKTsKLSAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCk7Ci0g
ICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoRWxlbWVudFR5cGUm
KTsKLQotICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpOwotICAgIEVsZW1lbnRUeXBlKiBsYXN0KCk7
Ci0KLXByaXZhdGU6Ci0gICAgQ29udGFpbmVyTm9kZSYgbV9wYXJlbnQ7Ci19OwotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9y
QWRhcHRlciB7CitjbGFzcyBFbGVtZW50Q2hpbGRSYW5nZSB7CiBwdWJsaWM6Ci0gICAgRWxlbWVu
dENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsK
KyAgICBFbGVtZW50Q2hpbGRSYW5nZShjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpOwogCi0g
ICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKSBjb25zdDsK
LSAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKSBjb25zdDsK
LSAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbkF0KGNvbnN0
IEVsZW1lbnRUeXBlJikgY29uc3Q7CisgICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5
cGU+IGJlZ2luKCkgY29uc3Q7CisgICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+
IGVuZCgpIGNvbnN0OworICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdp
bkF0KEVsZW1lbnRUeXBlJikgY29uc3Q7CiAKLSAgICBjb25zdCBFbGVtZW50VHlwZSogZmlyc3Qo
KSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50VHlwZSogbGFzdCgpIGNvbnN0OworICAgIEVsZW1l
bnRUeXBlKiBmaXJzdCgpIGNvbnN0OworICAgIEVsZW1lbnRUeXBlKiBsYXN0KCkgY29uc3Q7CiAK
IHByaXZhdGU6CiAgICAgY29uc3QgQ29udGFpbmVyTm9kZSYgbV9wYXJlbnQ7CiB9OwogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxF
bGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoQ29udGFpbmVyTm9kZSYpOwotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYpOwotCiAvLyBFbGVt
ZW50Q2hpbGRJdGVyYXRvcgogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CkBAIC0x
MTEsMTMyICs3Nyw2OCBAQCBpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+
OjpFbGVtZW50Q2hpbGRJdGVyYXRvcihjb25zdCBDb250YWluZXJObwogdGVtcGxhdGUgPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBl
PiYgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvci0tKCkKIHsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4o
RWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoKSk7
CisgICAgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91c1NpYmxp
bmcoKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KIGlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRD
aGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCiB7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxpbmcoKSk7CisgICAgRWxlbWVudEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGluZygpOworICAgIHJldHVybiAq
dGhpczsKIH0KIAotLy8gRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcgorLy8gRWxlbWVudENoaWxk
UmFuZ2UKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRD
aGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9y
KGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCkKLSAgICA6IEVsZW1lbnRDb25zdEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPigmcGFyZW50KQotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVs
ZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50LCBjb25z
dCBFbGVtZW50VHlwZSogY3VycmVudCkKLSAgICA6IEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPigmcGFyZW50LCBjdXJyZW50KQotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4m
IEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvci0tKCkKLXsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT4mPihFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlv
dXNTaWJsaW5nKCkpOwotfQotCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlu
bGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENoaWxk
Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQotewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1l
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGluZygpKTsKLX0K
LQotLy8gRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5
cGU+OjpFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVyTm9kZSYgcGFyZW50KQor
aW5saW5lIEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPjo6RWxlbWVudENoaWxkUmFuZ2Uo
Y29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KQogICAgIDogbV9wYXJlbnQocGFyZW50KQogewog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxk
SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50
VHlwZT46OmJlZ2luKCkKK2lubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4g
RWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3BhcmVudCwgVHJhdmVyc2Fs
PEVsZW1lbnRUeXBlPjo6Zmlyc3RDaGlsZChtX3BhcmVudCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5
cGU+IEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpCitpbmxp
bmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZFJhbmdlPEVs
ZW1lbnRUeXBlPjo6ZW5kKCkgY29uc3QKIHsKICAgICByZXR1cm4gRWxlbWVudENoaWxkSXRlcmF0
b3I8RWxlbWVudFR5cGU+KG1fcGFyZW50KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPgotaW5saW5lIEVsZW1lbnRUeXBlKiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8
RWxlbWVudFR5cGU+OjpmaXJzdCgpCitpbmxpbmUgRWxlbWVudFR5cGUqIEVsZW1lbnRDaGlsZFJh
bmdlPEVsZW1lbnRUeXBlPjo6Zmlyc3QoKSBjb25zdAogewogICAgIHJldHVybiBUcmF2ZXJzYWw8
RWxlbWVudFR5cGU+OjpmaXJzdENoaWxkKG1fcGFyZW50KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRUeXBlKiBFbGVtZW50Q2hpbGRJdGVyYXRv
ckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpsYXN0KCkKK2lubGluZSBFbGVtZW50VHlwZSogRWxlbWVu
dENoaWxkUmFuZ2U8RWxlbWVudFR5cGU+OjpsYXN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gVHJh
dmVyc2FsPEVsZW1lbnRUeXBlPjo6bGFzdENoaWxkKG1fcGFyZW50KTsKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbkF0
KEVsZW1lbnRUeXBlJiBjaGlsZCkKK2lubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50
VHlwZT4gRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBl
JiBjaGlsZCkgY29uc3QKIHsKICAgICBBU1NFUlQoY2hpbGQucGFyZW50Tm9kZSgpID09ICZtX3Bh
cmVudCk7CiAgICAgcmV0dXJuIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Bh
cmVudCwgJmNoaWxkKTsKIH0KIAotLy8gRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXIK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENv
bnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6RWxlbWVudENoaWxkQ29uc3RJdGVyYXRv
ckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KQotICAgIDogbV9wYXJlbnQocGFy
ZW50KQotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxl
bWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkQ29uc3RJdGVy
YXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVs
ZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcGFyZW50LCBUcmF2ZXJzYWw8
RWxlbWVudFR5cGU+OjpmaXJzdENoaWxkKG1fcGFyZW50KSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVu
ZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+KG1fcGFyZW50KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlKiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRl
cjxFbGVtZW50VHlwZT46OmZpcnN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gVHJhdmVyc2FsPEVs
ZW1lbnRUeXBlPjo6Zmlyc3RDaGlsZChtX3BhcmVudCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KLWlubGluZSBjb25zdCBFbGVtZW50VHlwZSogRWxlbWVudENoaWxkQ29u
c3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpsYXN0KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bGFzdENoaWxkKG1fcGFyZW50KTsKLX0KLQotdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRl
cmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1l
bnRUeXBlPjo6YmVnaW5BdChjb25zdCBFbGVtZW50VHlwZSYgY2hpbGQpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKGNoaWxkLnBhcmVudE5vZGUoKSA9PSAmbV9wYXJlbnQpOwotICAgIHJldHVybiBFbGVt
ZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3BhcmVudCwgJmNoaWxkKTsKLX0K
LQogLy8gU3RhbmRhbG9uZSBmdW5jdGlvbnMKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gY2hp
bGRyZW5PZlR5cGUoQ29udGFpbmVyTm9kZSYgcGFyZW50KQoraW5saW5lIEVsZW1lbnRDaGlsZFJh
bmdlPEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShDb250YWluZXJOb2RlJiBwYXJlbnQpCiB7
Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4ocGFy
ZW50KTsKKyAgICByZXR1cm4gRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5cGU+KHBhcmVudCk7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hp
bGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoY29uc3Qg
Q29udGFpbmVyTm9kZSYgcGFyZW50KQoraW5saW5lIEVsZW1lbnRDaGlsZFJhbmdlPGNvbnN0IEVs
ZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpCiB7
Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBl
PihwYXJlbnQpOworICAgIHJldHVybiBFbGVtZW50Q2hpbGRSYW5nZTxjb25zdCBFbGVtZW50VHlw
ZT4ocGFyZW50KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDhkYmRiOTlhNmRkZTk2NDZkZmI0MTc0NjEyOTkxOGM3MzVlYWU0OTkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDM2NiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudEl0ZXJh
dG9yQXNzZXJ0aW9ucy5oIgotI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKLSNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
cigpOwotICAgIGV4cGxpY2l0IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoRWxlbWVudCogY3Vy
cmVudCk7Ci0KLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Ci0g
ICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwotCi0gICAgRWxlbWVu
dCYgb3BlcmF0b3IqKCk7Ci0gICAgRWxlbWVudCogb3BlcmF0b3ItPigpOwotCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG90aGVyKSBjb25zdDsK
LSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0OwotCi0gICAgdm9pZCBkcm9wQXNzZXJ0aW9ucygpOwotCi1wcml2YXRlOgotICAg
IEVsZW1lbnQqIG1fY3VycmVudDsKLSAgICBWZWN0b3I8RWxlbWVudCosIDE2PiBtX2FuY2VzdG9y
U2libGluZ1N0YWNrOwotCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBFbGVtZW50SXRlcmF0b3JB
c3NlcnRpb25zIG1fYXNzZXJ0aW9uczsKLSNlbmRpZgotfTsKLQotY2xhc3MgRWxlbWVudERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yIHsKLXB1YmxpYzoKLSAgICBFbGVtZW50RGVzY2VuZGFudENvbnN0
SXRlcmF0b3IoKTsKLSAgICBleHBsaWNpdCBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3Io
Y29uc3QgRWxlbWVudCopOwotCi0gICAgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yJiBv
cGVyYXRvcisrKCk7Ci0KLSAgICBjb25zdCBFbGVtZW50JiBvcGVyYXRvciooKSBjb25zdDsKLSAg
ICBjb25zdCBFbGVtZW50KiBvcGVyYXRvci0+KCkgY29uc3Q7Ci0KLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7Ci0g
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYg
b3RoZXIpIGNvbnN0OwotCi0gICAgdm9pZCBkcm9wQXNzZXJ0aW9ucygpOwotCi1wcml2YXRlOgot
ICAgIGNvbnN0IEVsZW1lbnQqIG1fY3VycmVudDsKLSAgICBWZWN0b3I8RWxlbWVudCosIDE2PiBt
X2FuY2VzdG9yU2libGluZ1N0YWNrOwotCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBFbGVtZW50
SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0aW9uczsKLSNlbmRpZgotfTsKLQotY2xhc3MgRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgewotcHVibGljOgotICAgIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUmIHJvb3QpOwotICAgIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IgYmVnaW4oKTsKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
IGVuZCgpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgbGFzdCgpOwotCi1wcml2YXRl
OgotICAgIENvbnRhaW5lck5vZGUmIG1fcm9vdDsKLX07Ci0KLWNsYXNzIEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvckFkYXB0ZXIgewotcHVibGljOgotICAgIEVsZW1lbnREZXNjZW5kYW50
Q29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgRWxl
bWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7Ci0gICAgRWxlbWVudERl
c2NlbmRhbnRDb25zdEl0ZXJhdG9yIGVuZCgpIGNvbnN0OwotICAgIEVsZW1lbnREZXNjZW5kYW50
Q29uc3RJdGVyYXRvciBsYXN0KCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgQ29udGFp
bmVyTm9kZSYgbV9yb290OwotfTsKLQotRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIg
ZWxlbWVudERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUmKTsKLUVsZW1lbnREZXNjZW5kYW50Q29u
c3RJdGVyYXRvckFkYXB0ZXIgZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0IENvbnRhaW5lck5vZGUm
KTsKLQotLy8gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcgotCi1pbmxpbmUgRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcigpCi0gICAgOiBtX2N1cnJl
bnQobnVsbHB0cikKLXsKLX0KLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6OkVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoRWxlbWVudCogY3VycmVudCkKLSAgICA6IG1fY3VycmVu
dChjdXJyZW50KQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLCBtX2Fzc2VydGlvbnMoY3VycmVu
dCkKLSNlbmRpZgotewotICAgIG1fYW5jZXN0b3JTaWJsaW5nU3RhY2sudW5jaGVja2VkQXBwZW5k
KG51bGxwdHIpOwotfQotCi1pbmxpbmUgdm9pZCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpk
cm9wQXNzZXJ0aW9ucygpCi17Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2Fzc2VydGlvbnMu
Y2xlYXIoKTsKLSNlbmRpZgotfQotCi1BTFdBWVNfSU5MSU5FIEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3ImIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6Om9wZXJhdG9yKysoKQotewotICAgIEFT
U0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRh
dGVkKCkpOwotCi0gICAgRWxlbWVudCogZmlyc3RDaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZp
cnN0Q2hpbGQoKm1fY3VycmVudCk7Ci0gICAgRWxlbWVudCogbmV4dFNpYmxpbmcgPSBFbGVtZW50
VHJhdmVyc2FsOjpuZXh0U2libGluZygqbV9jdXJyZW50KTsKLQotICAgIGlmIChmaXJzdENoaWxk
KSB7Ci0gICAgICAgIGlmIChuZXh0U2libGluZykKLSAgICAgICAgICAgIG1fYW5jZXN0b3JTaWJs
aW5nU3RhY2suYXBwZW5kKG5leHRTaWJsaW5nKTsKLSAgICAgICAgbV9jdXJyZW50ID0gZmlyc3RD
aGlsZDsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIGlmIChuZXh0U2libGlu
ZykgewotICAgICAgICBtX2N1cnJlbnQgPSBuZXh0U2libGluZzsKLSAgICAgICAgcmV0dXJuICp0
aGlzOwotICAgIH0KLQotICAgIG1fY3VycmVudCA9IG1fYW5jZXN0b3JTaWJsaW5nU3RhY2sudGFr
ZUxhc3QoKTsKLQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9u
IHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkK
LSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5k
aWYKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotQUxXQVlTX0lOTElORSBFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yJiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvci0tKCkKLXsK
LSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVl
SGFzTXV0YXRlZCgpKTsKLQotICAgIEVsZW1lbnQqIHByZXZpb3VzU2libGluZyA9IEVsZW1lbnRU
cmF2ZXJzYWw6OnByZXZpb3VzU2libGluZygqbV9jdXJyZW50KTsKLQotICAgIGlmICghcHJldmlv
dXNTaWJsaW5nKSB7Ci0gICAgICAgIG1fY3VycmVudCA9IG1fY3VycmVudC0+cGFyZW50RWxlbWVu
dCgpOwotICAgICAgICAvLyBUaGUgc3RhY2sgb3B0aW1pemVzIGZvciBmb3J3YXJkIHRyYXZlcnNh
bCBvbmx5LCB0aGlzIGp1c3QgbWFpbnRhaW5zIGNvbnNpc3RlbmN5LgotICAgICAgICBpZiAobV9j
dXJyZW50LT5uZXh0U2libGluZygpICYmIG1fY3VycmVudC0+bmV4dFNpYmxpbmcoKSA9PSBtX2Fu
Y2VzdG9yU2libGluZ1N0YWNrLmxhc3QoKSkKLSAgICAgICAgICAgIG1fYW5jZXN0b3JTaWJsaW5n
U3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAg
RWxlbWVudCogZGVlcGVzdFNpYmxpbmcgPSBwcmV2aW91c1NpYmxpbmc7Ci0gICAgd2hpbGUgKEVs
ZW1lbnQqIGxhc3RDaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RDaGlsZCgqZGVlcGVzdFNp
YmxpbmcpKQotICAgICAgICBkZWVwZXN0U2libGluZyA9IGxhc3RDaGlsZDsKLSAgICBBU1NFUlQo
ZGVlcGVzdFNpYmxpbmcpOwotCi0gICAgaWYgKGRlZXBlc3RTaWJsaW5nICE9IHByZXZpb3VzU2li
bGluZykKLSAgICAgICAgbV9hbmNlc3RvclNpYmxpbmdTdGFjay5hcHBlbmQobV9jdXJyZW50KTsK
LQotICAgIG1fY3VycmVudCA9IGRlZXBlc3RTaWJsaW5nOwotCi0jaWYgQVNTRVJUX0VOQUJMRUQK
LSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUg
ZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50
RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi1p
bmxpbmUgRWxlbWVudCYgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6b3BlcmF0b3IqKCkKLXsK
LSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVl
SGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gKm1fY3VycmVudDsKLX0KLQotaW5saW5lIEVsZW1l
bnQqIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6Om9wZXJhdG9yLT4oKQotewotICAgIEFTU0VS
VChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVk
KCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQ7Ci19Ci0KLWlubGluZSBib29sIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011
dGF0ZWQoKSk7Ci0gICAgcmV0dXJuIG1fY3VycmVudCA9PSBvdGhlci5tX2N1cnJlbnQ7Ci19Ci0K
LWlubGluZSBib29sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6Om9wZXJhdG9yIT0oY29uc3Qg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOwotfQotCi0vLyBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IK
LQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6RWxlbWVudERlc2NlbmRh
bnRDb25zdEl0ZXJhdG9yKCkKLSAgICA6IG1fY3VycmVudChudWxscHRyKQotewotfQotCi1pbmxp
bmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpFbGVtZW50RGVzY2VuZGFudENvbnN0
SXRlcmF0b3IoY29uc3QgRWxlbWVudCogY3VycmVudCkKLSAgICA6IG1fY3VycmVudChjdXJyZW50
KQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLCBtX2Fzc2VydGlvbnMoY3VycmVudCkKLSNlbmRp
ZgotewotICAgIG1fYW5jZXN0b3JTaWJsaW5nU3RhY2sudW5jaGVja2VkQXBwZW5kKG51bGxwdHIp
OwotfQotCi1pbmxpbmUgdm9pZCBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I6OmRyb3BB
c3NlcnRpb25zKCkKLXsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG1fYXNzZXJ0aW9ucy5jbGVh
cigpOwotI2VuZGlmCi19Ci0KLUFMV0FZU19JTkxJTkUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0
ZXJhdG9yJiBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I6Om9wZXJhdG9yKysoKQotewot
ICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVI
YXNNdXRhdGVkKCkpOwotCi0gICAgRWxlbWVudCogZmlyc3RDaGlsZCA9IEVsZW1lbnRUcmF2ZXJz
YWw6OmZpcnN0Q2hpbGQoKm1fY3VycmVudCk7Ci0gICAgRWxlbWVudCogbmV4dFNpYmxpbmcgPSBF
bGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZygqbV9jdXJyZW50KTsKLQotICAgIGlmIChmaXJz
dENoaWxkKSB7Ci0gICAgICAgIGlmIChuZXh0U2libGluZykKLSAgICAgICAgICAgIG1fYW5jZXN0
b3JTaWJsaW5nU3RhY2suYXBwZW5kKG5leHRTaWJsaW5nKTsKLSAgICAgICAgbV9jdXJyZW50ID0g
Zmlyc3RDaGlsZDsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIGlmIChuZXh0
U2libGluZykgewotICAgICAgICBtX2N1cnJlbnQgPSBuZXh0U2libGluZzsKLSAgICAgICAgcmV0
dXJuICp0aGlzOwotICAgIH0KLQotICAgIG1fY3VycmVudCA9IG1fYW5jZXN0b3JTaWJsaW5nU3Rh
Y2sudGFrZUxhc3QoKTsKLQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNz
ZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3Vy
cmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7
Ci0jZW5kaWYKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotaW5saW5lIGNvbnN0IEVsZW1lbnQm
IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6b3BlcmF0b3IqKCkgY29uc3QKLXsKLSAg
ICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFz
TXV0YXRlZCgpKTsKLSAgICByZXR1cm4gKm1fY3VycmVudDsKLX0KLQotaW5saW5lIGNvbnN0IEVs
ZW1lbnQqIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6b3BlcmF0b3ItPigpIGNvbnN0
Ci17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9t
VHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuIG1fY3VycmVudDsKLX0KLQotaW5saW5lIGJv
b2wgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpvcGVyYXRvcj09KGNvbnN0IEVsZW1l
bnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFt
X2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuIG1fY3VycmVudCA9
PSBvdGhlci5tX2N1cnJlbnQ7Ci19Ci0KLWlubGluZSBib29sIEVsZW1lbnREZXNjZW5kYW50Q29u
c3RJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0
b3ImIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLX0KLQot
Ly8gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIKLQotaW5saW5lIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3JBZGFwdGVyOjpFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcihD
b250YWluZXJOb2RlJiByb290KQotICAgIDogbV9yb290KHJvb3QpCi17Ci19Ci0KLWlubGluZSBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVy
OjpiZWdpbigpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoRWxlbWVu
dFRyYXZlcnNhbDo6Zmlyc3RDaGlsZChtX3Jvb3QpKTsKLX0KLQotaW5saW5lIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI6OmVuZCgpCi17
Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoKTsKLX0KLQotaW5saW5lIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI6
Omxhc3QoKQotewotICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKEVsZW1lbnRU
cmF2ZXJzYWw6Omxhc3RXaXRoaW4obV9yb290KSk7Ci19Ci0KLS8vIEVsZW1lbnREZXNjZW5kYW50
Q29uc3RJdGVyYXRvckFkYXB0ZXIKLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVy
YXRvckFkYXB0ZXI6OkVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3Qg
Q29udGFpbmVyTm9kZSYgcm9vdCkKLSAgICA6IG1fcm9vdChyb290KQotewotfQotCi1pbmxpbmUg
RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVy
YXRvckFkYXB0ZXI6OmJlZ2luKCkgY29uc3QKLXsKLSAgICByZXR1cm4gRWxlbWVudERlc2NlbmRh
bnRDb25zdEl0ZXJhdG9yKEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQobV9yb290KSk7Ci19
Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IgRWxlbWVudERlc2NlbmRh
bnRDb25zdEl0ZXJhdG9yQWRhcHRlcjo6ZW5kKCkgY29uc3QKLXsKLSAgICByZXR1cm4gRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKCk7Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3IgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjo6bGFz
dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcihF
bGVtZW50VHJhdmVyc2FsOjpsYXN0V2l0aGluKG1fcm9vdCkpOwotfQotCi0vLyBTdGFuZGFsb25l
IGZ1bmN0aW9ucwotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgZWxl
bWVudERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUmIHJvb3QpCi17Ci0gICAgcmV0dXJuIEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKHJvb3QpOwotfQotCi1pbmxpbmUgRWxlbWVudERl
c2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlciBlbGVtZW50RGVzY2VuZGFudHMoY29uc3QgQ29u
dGFpbmVyTm9kZSYgcm9vdCkKLXsKLSAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0
ZXJhdG9yQWRhcHRlcihyb290KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1l
c3BhY2Ugc3RkIHsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpdGVyYXRvcl90cmFpdHM8V2ViQ29yZTo6
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcj4gewotICAgIHR5cGVkZWYgV2ViQ29yZTo6RWxlbWVu
dCB2YWx1ZV90eXBlOwotfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpdGVyYXRvcl90cmFpdHM8V2Vi
Q29yZTo6RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPiB7Ci0gICAgdHlwZWRlZiBjb25z
dCBXZWJDb3JlOjpFbGVtZW50IHZhbHVlX3R5cGU7Ci19OwotfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRJdGVyYXRvci5oCmluZGV4IDM3NGRiYTdhNGMyNDc4ZGRkOTNhZWIyYTRjNDRlM2RiODJkNzNi
NTYuLjc0OThkNDBhYTQwMWRhYzZlNTkzNTZmYjBhMDRiODRmNWI3MDM0NmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudEl0ZXJhdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMTEgKzM0LDggQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVudEl0ZXJh
dG9yIHsKK2NsYXNzIEVsZW1lbnRJdGVyYXRvciA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPHN0ZDo6
Zm9yd2FyZF9pdGVyYXRvcl90YWcsIEVsZW1lbnRUeXBlPiB7CiBwdWJsaWM6Ci0gICAgRWxlbWVu
dEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QpOwotICAgIEVsZW1lbnRJdGVyYXRv
cihjb25zdCBDb250YWluZXJOb2RlKiByb290LCBFbGVtZW50VHlwZSogY3VycmVudCk7Ci0KICAg
ICBFbGVtZW50VHlwZSYgb3BlcmF0b3IqKCkgY29uc3Q7CiAgICAgRWxlbWVudFR5cGUqIG9wZXJh
dG9yLT4oKSBjb25zdDsKIApAQCAtNTQsMzkgKzUxLDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
ZHJvcEFzc2VydGlvbnMoKTsKIAotcHJpdmF0ZToKLSAgICBjb25zdCBDb250YWluZXJOb2RlKiBt
X3Jvb3Q7Ci0gICAgRWxlbWVudFR5cGUqIG1fY3VycmVudDsKK3Byb3RlY3RlZDoKKyAgICBFbGVt
ZW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCA9IG51bGxwdHIsIEVsZW1lbnRU
eXBlKiBjdXJyZW50ID0gbnVsbHB0cik7CiAKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIEVsZW1l
bnRJdGVyYXRvckFzc2VydGlvbnMgbV9hc3NlcnRpb25zOwotI2VuZGlmCi19OwotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBFbGVtZW50Q29uc3RJdGVyYXRvciB7Ci1w
dWJsaWM6Ci0gICAgRWxlbWVudENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9v
dCk7Ci0gICAgRWxlbWVudENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwg
Y29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotCi0gICAgY29uc3QgRWxlbWVudFR5cGUmIG9w
ZXJhdG9yKigpIGNvbnN0OwotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBvcGVyYXRvci0+KCkgY29u
c3Q7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRWxlbWVudENvbnN0SXRlcmF0b3ImIG90
aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRWxlbWVudENvbnN0SXRlcmF0
b3ImIG90aGVyKSBjb25zdDsKLQotICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yJiB0cmF2ZXJzZU5l
eHQoKTsKLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91cygpOwotICAg
IEVsZW1lbnRDb25zdEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRTaWJsaW5nKCk7Ci0gICAgRWxlbWVu
dENvbnN0SXRlcmF0b3ImIHRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgRWxlbWVudENv
bnN0SXRlcmF0b3ImIHRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4oKTsKLSAgICBFbGVtZW50
Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VBbmNlc3RvcigpOwotCi0gICAgdm9pZCBkcm9wQXNzZXJ0
aW9ucygpOworICAgIGJvb2wgYXRFbmQoKSB7IHJldHVybiAhbV9jdXJyZW50OyB9CiAKIHByaXZh
dGU6CiAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogbV9yb290OwotICAgIGNvbnN0IEVsZW1lbnRU
eXBlKiBtX2N1cnJlbnQ7CisgICAgRWxlbWVudFR5cGUqIG1fY3VycmVudDsKIAogI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7CkBA
IC05NSwxMyArNjcsNiBAQCBwcml2YXRlOgogCiAvLyBFbGVtZW50SXRlcmF0b3IKIAotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50
VHlwZT46OkVsZW1lbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290KQotICAgIDog
bV9yb290KHJvb3QpCi0gICAgLCBtX2N1cnJlbnQobnVsbHB0cikKLXsKLX0KLQogdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT46OkVsZW1lbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290LCBFbGVtZW50VHlw
ZSogY3VycmVudCkKICAgICA6IG1fcm9vdChyb290KQpAQCAtMjUxLDE0OCArMjE2LDYgQEAgaW5s
aW5lIGJvb2wgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBF
bGVtZW50SXRlcmF0b3ImIG90aGUKICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiB9CiAK
LS8vIEVsZW1lbnRDb25zdEl0ZXJhdG9yCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDb25z
dEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QpCi0gICAgOiBtX3Jvb3Qocm9vdCkK
LSAgICAsIG1fY3VycmVudChudWxscHRyKQotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVt
ZW50Q29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290LCBjb25zdCBFbGVtZW50
VHlwZSogY3VycmVudCkKLSAgICA6IG1fcm9vdChyb290KQotICAgICwgbV9jdXJyZW50KGN1cnJl
bnQpCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAsIG1fYXNzZXJ0aW9ucyhjdXJyZW50KQotI2Vu
ZGlmCi17Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVt
ZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6dHJhdmVyc2VOZXh0KCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBB
U1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICBtX2N1cnJlbnQg
PSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0KCptX2N1cnJlbnQsIG1fcm9vdCk7Ci0jaWYg
QVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0
b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBtX2Fzc2Vy
dGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAgIHJldHVybiAq
dGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1l
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+Ojp0cmF2ZXJzZVByZXZpb3VzKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAg
ICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICBtX2N1cnJl
bnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpwcmV2aW91cygqbV9jdXJyZW50LCBtX3Jvb3Qp
OwotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhl
IGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAg
bV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLSAgICBy
ZXR1cm4gKnRoaXM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGlu
ZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDb25zdEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGluZygpCi17Ci0gICAgQVNTRVJUKG1fY3Vy
cmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0g
ICAgbV9jdXJyZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFNpYmxpbmcoKm1fY3Vy
cmVudCk7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hl
biB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAg
ICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgot
ICAgIHJldHVybiAqdGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRl
cmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZpb3VzU2libGluZygpCi17Ci0gICAgQVNT
RVJUKG1fY3VycmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0
ZWQoKSk7Ci0gICAgbV9jdXJyZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXNT
aWJsaW5nKCptX2N1cnJlbnQpOwotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRHJvcCB0aGUg
YXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1f
Y3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9u
KCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVs
ZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2tpcHBpbmdDaGls
ZHJlbigpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlv
bnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgbV9jdXJyZW50ID0gVHJhdmVyc2FsPEVsZW1l
bnRUeXBlPjo6bmV4dFNraXBwaW5nQ2hpbGRyZW4oKm1fY3VycmVudCwgbV9yb290KTsKLSNpZiBB
U1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRv
ciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0gICAgICAgIG1fYXNzZXJ0
aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlmCi0gICAgcmV0dXJuICp0
aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVu
dENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT46OnRyYXZlcnNlQW5jZXN0b3IoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAg
IEFTU0VSVChtX2N1cnJlbnQgIT0gbV9yb290KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5k
b21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICBtX2N1cnJlbnQgPSBmaW5kRWxlbWVudEFuY2VzdG9y
T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbV9jdXJyZW50KTsKLSNpZiBBU1NFUlRfRU5BQkxF
RAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRo
ZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0gICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZl
bnREaXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlmCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgdm9pZCBFbGVtZW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT46OmRyb3BBc3NlcnRpb25zKCkKLXsKLSNpZiBBU1NFUlRfRU5B
QkxFRAotICAgIG1fYXNzZXJ0aW9ucy5jbGVhcigpOwotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBjb25zdCBFbGVtZW50VHlwZSYgRWxlbWVudENv
bnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvciooKSBjb25zdAotewotICAgIEFTU0VS
VChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVk
KCkpOwotICAgIHJldHVybiAqbV9jdXJyZW50OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+Ci1pbmxpbmUgY29uc3QgRWxlbWVudFR5cGUqIEVsZW1lbnRDb25zdEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItPigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fY3VycmVu
dCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAg
cmV0dXJuIG1fY3VycmVudDsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIGJvb2wgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcj09
KGNvbnN0IEVsZW1lbnRDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICBBU1NFUlQo
bV9yb290ID09IG90aGVyLm1fcm9vdCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJl
ZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuIG1fY3VycmVudCA9PSBvdGhlci5tX2N1cnJlbnQ7
Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBib29sIEVsZW1l
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBFbGVtZW50Q29u
c3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNpbmNsdWRlICJFbGVtZW50QW5jZXN0
b3JJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmNwcAppbmRleCBkZDBjOTk5
MTgwOWNiZjdjNzEwNjAwNTAyMTY0ZTlhMTZmZGNjMTkxLi40MzRkNGE0NDkwZWNmYzJhOWM1MGIy
ZDQwNjk0ZTE0MzlkZTUwNjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5v
ZGVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmNwcApAQCAt
MjMsMTAgKzIzLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMaXZlTm9kZUxp
c3QuaCIKIAotI2luY2x1ZGUgIkNsYXNzQ29sbGVjdGlvbi5oIgotI2luY2x1ZGUgIkVsZW1lbnQu
aCIKLSNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rp
b24uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKaW5kZXggZjI3ZjBlZjY3NGJiZDk4MjMx
NGMwYmJiMjViODUyNDIyMzRkYTU4Zi4uY2M4NTVhMjYwNjk4NDFlZGJiZWFkZWQ3MGE3Y2M2MTMz
MWMyMzczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaApAQCAtMjYsNyArMjYsNiBAQAog
I2luY2x1ZGUgIkNvbGxlY3Rpb25JbmRleENhY2hlLmgiCiAjaW5jbHVkZSAiQ29sbGVjdGlvblRy
YXZlcnNhbC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk5vZGVM
aXN0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTgzLDEyICs4MiwxNSBAQCBwdWJs
aWM6CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pbmRleENh
Y2hlLm5vZGVDb3VudChub2RlTGlzdCgpKTsgfQogICAgIEVsZW1lbnQqIGl0ZW0odW5zaWduZWQg
b2Zmc2V0KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUF0KG5vZGVM
aXN0KCksIG9mZnNldCk7IH0KIAorICAgIHVzaW5nIFRyYXZlcnNhbCA9IENvbGxlY3Rpb25UcmF2
ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjsKKyAgICB1c2luZyBJ
dGVyYXRvciA9IFRyYXZlcnNhbDo6SXRlcmF0b3I7CisKICAgICAvLyBGb3IgQ29sbGVjdGlvbklu
ZGV4Q2FjaGUKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGNvbGxlY3Rpb25CZWdpbigp
IGNvbnN0IHsgcmV0dXJuIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5
cGU6OkRlc2NlbmRhbnRzPjo6YmVnaW4obm9kZUxpc3QoKSwgcm9vdE5vZGUoKSk7IH0KLSAgICBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGNvbGxlY3Rpb25MYXN0KCkgY29uc3QgeyByZXR1cm4g
Q29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+
OjpsYXN0KG5vZGVMaXN0KCksIHJvb3ROb2RlKCkpOyB9Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvciBjb2xsZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcigpOyB9Ci0gICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJh
dmVyc2VkQ291bnQpIGNvbnN0IHsgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVy
c2FsVHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUZvcndhcmQobm9kZUxpc3QoKSwgY3VycmVu
dCwgY291bnQsIHRyYXZlcnNlZENvdW50KTsgfQotICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNl
QmFja3dhcmQoRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291
bnQpIGNvbnN0IHsgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6
RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUJhY2t3YXJkKG5vZGVMaXN0KCksIGN1cnJlbnQsIGNvdW50
KTsgfQorICAgIGF1dG8gY29sbGVjdGlvbkJlZ2luKCkgY29uc3QgeyByZXR1cm4gVHJhdmVyc2Fs
OjpiZWdpbihub2RlTGlzdCgpLCByb290Tm9kZSgpKTsgfQorICAgIGF1dG8gY29sbGVjdGlvbkxh
c3QoKSBjb25zdCB7IHJldHVybiBUcmF2ZXJzYWw6Omxhc3Qobm9kZUxpc3QoKSwgcm9vdE5vZGUo
KSk7IH0KKyAgICBhdXRvIGNvbGxlY3Rpb25FbmQoKSBjb25zdCB7IHJldHVybiBJdGVyYXRvcihy
b290Tm9kZSgpKTsgfQorICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChJdGVyYXRv
ciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29u
c3QgeyBUcmF2ZXJzYWw6OnRyYXZlcnNlRm9yd2FyZChub2RlTGlzdCgpLCBjdXJyZW50LCBjb3Vu
dCwgdHJhdmVyc2VkQ291bnQpOyB9CisgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2Fy
ZChJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpIGNvbnN0IHsgVHJhdmVyc2FsOjp0
cmF2ZXJzZUJhY2t3YXJkKG5vZGVMaXN0KCksIGN1cnJlbnQsIGNvdW50KTsgfQogICAgIGJvb2wg
Y29sbGVjdGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdm9pZCB3aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3QgeyBkb2N1bWVudCgpLnJlZ2lz
dGVyTm9kZUxpc3RGb3JJbnZhbGlkYXRpb24oY29uc3RfY2FzdDxDYWNoZWRMaXZlTm9kZUxpc3Q8
Tm9kZUxpc3RUeXBlPiY+KCp0aGlzKSk7IH0KIApAQCAtMTAxLDYgKzEwMyw4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1faW5kZXhDYWNoZS5tZW1vcnlDb3N0KCk7CiAgICAgfQogCisgICAg
Q29udGFpbmVyTm9kZSYgcm9vdE5vZGUoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIENhY2hl
ZExpdmVOb2RlTGlzdChDb250YWluZXJOb2RlJiByb290Tm9kZSwgTm9kZUxpc3RJbnZhbGlkYXRp
b25UeXBlKTsKIApAQCAtMTA4LDkgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgTm9kZUxpc3RUeXBl
JiBub2RlTGlzdCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsg
fQogICAgIGNvbnN0IE5vZGVMaXN0VHlwZSYgbm9kZUxpc3QoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigqdGhpcyk7IH0KIAotICAgIENvbnRhaW5lck5v
ZGUmIHJvb3ROb2RlKCkgY29uc3Q7Ci0KLSAgICBtdXRhYmxlIENvbGxlY3Rpb25JbmRleENhY2hl
PE5vZGVMaXN0VHlwZSwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcj4gbV9pbmRleENhY2hlOwor
ICAgIG11dGFibGUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Tm9kZUxpc3RUeXBlLCBJdGVyYXRvcj4g
bV9pbmRleENhY2hlOwogfTsKIAogQUxXQVlTX0lOTElORSBib29sIHNob3VsZEludmFsaWRhdGVU
eXBlT25BdHRyaWJ1dGVDaGFuZ2UoTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIHR5cGUsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDk4MjEyNDRkYzkx
NzQ5MzQxYjNkMjZjNTNhZTI1N2YzYWNhYWE5NTEuLmY5YzU5ZDA2NTcxMTU1ZTExMzEzYTA4ZmQ3
YTU2ZmMyMmE0NjJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MQXJlYUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MQm9keUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1
ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxTbG90RWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nl
bGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCmlu
ZGV4IGVmMDU1MjkzNDI3N2Q0M2IxMTlhNDY3NTFmZjQyOGUwYTE4MDM3OTAuLmMwNjFhM2RlMmJj
NTU4MjVmOTVjZjcyZDQ4MDMzYTFlY2QxOWQyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JR
dWVyeS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE0
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
QEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJTZWxlY3RvclF1ZXJ5LmgiCiAKICNpbmNsdWRl
ICJDU1NQYXJzZXIuaCIKLSNpbmNsdWRlICJFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCisj
aW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5j
bHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCiAjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3QuaCIKQEAg
LTE1MCwxNSArMTUwLDEyIEBAIGJvb2wgU2VsZWN0b3JEYXRhTGlzdDo6bWF0Y2hlcyhFbGVtZW50
JiB0YXJnZXRFbGVtZW50KSBjb25zdAogCiBFbGVtZW50KiBTZWxlY3RvckRhdGFMaXN0OjpjbG9z
ZXN0KEVsZW1lbnQmIHRhcmdldEVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgRWxlbWVudCogY3VycmVu
dE5vZGUgPSAmdGFyZ2V0RWxlbWVudDsKLSAgICBkbyB7CisgICAgZm9yIChhdXRvJiBjdXJyZW50
RWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4odGFyZ2V0RWxlbWVudCkpIHsKICAgICAg
ICAgZm9yIChhdXRvJiBzZWxlY3RvciA6IG1fc2VsZWN0b3JzKSB7Ci0gICAgICAgICAgICBFbGVt
ZW50KiBjYW5kaWRhdGVFbGVtZW50ID0gc2VsZWN0b3JDbG9zZXN0KHNlbGVjdG9yLCAqY3VycmVu
dE5vZGUsIHRhcmdldEVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZUVsZW1lbnQp
CisgICAgICAgICAgICBpZiAoYXV0byogY2FuZGlkYXRlRWxlbWVudCA9IHNlbGVjdG9yQ2xvc2Vz
dChzZWxlY3RvciwgY3VycmVudEVsZW1lbnQsIHRhcmdldEVsZW1lbnQpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBjYW5kaWRhdGVFbGVtZW50OwogICAgICAgICB9Ci0gICAgICAgIGN1cnJlbnRO
b2RlID0gY3VycmVudE5vZGUtPnBhcmVudEVsZW1lbnQoKTsKLSAgICB9IHdoaWxlIChjdXJyZW50
Tm9kZSk7CisgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0yOTUsNyArMjkyLDcg
QEAgdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4KIHN0YXRpYyBpbmxpbmUg
dm9pZCBlbGVtZW50c0ZvckxvY2FsTmFtZShjb25zdCBDb250YWluZXJOb2RlJiByb290Tm9kZSwg
Y29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBsb3dlcmNhc2VM
b2NhbE5hbWUsIHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0cHV0
KQogewogICAgIGlmIChsb2NhbE5hbWUgPT0gbG93ZXJjYXNlTG9jYWxOYW1lKSB7Ci0gICAgICAg
IGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9jYXN0PENvbnRh
aW5lck5vZGUmPihyb290Tm9kZSkpKSB7CisgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRl
c2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3RO
b2RlKSkpIHsKICAgICAgICAgICAgIGlmIChlbGVtZW50LnRhZ1FOYW1lKCkubG9jYWxOYW1lKCkg
PT0gbG9jYWxOYW1lKSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0OjphcHBl
bmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlm
IChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAgLTMw
Myw3ICszMDAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZWxlbWVudHNGb3JMb2NhbE5hbWUoY29u
c3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0bwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVu
dERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsKKyAg
ICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oY29u
c3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAgICAgICAgICAgaWYgKGxv
Y2FsTmFtZU1hdGNoZXMoZWxlbWVudCwgbG9jYWxOYW1lLCBsb3dlcmNhc2VMb2NhbE5hbWUpKSB7
CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRwdXRGb3JFbGVt
ZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChTZWxlY3RvclF1ZXJ5
VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAgLTMxNiw3ICszMTMsNyBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgZWxlbWVudHNGb3JMb2NhbE5hbWUoY29uc3QgQ29udGFpbmVyTm9k
ZSYgcm9vdE5vZGUsIGNvbnN0IEF0bwogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlU
cmFpdD4KIHN0YXRpYyBpbmxpbmUgdm9pZCBhbnlFbGVtZW50KGNvbnN0IENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlLCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5cGUmIG91dHB1
dCkKIHsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29uc3Rf
Y2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVu
dCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+
KHJvb3ROb2RlKSkpIHsKICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRwdXRG
b3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICBpZiAoU2VsZWN0b3JRdWVyeVRy
YWl0OjpzaG91bGRPbmx5TWF0Y2hGaXJzdEVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0zNDUsNyArMzQyLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4
ZWN1dGVTaW5nbGVUYWdOYW1lU2VsZWN0b3JEYXRhKGNvbnN0IENvbnQKICAgICAgICAgfQogICAg
IH0gZWxzZSB7CiAgICAgICAgIC8vIEZhbGxiYWNrOiBOYW1lc3BhY2VVUkkgaXMgc2V0LCBzZWxl
Y3RvckxvY2FsTmFtZSBtYXkgYmUgc3RhckF0b20oKS4KLSAgICAgICAgZm9yIChhdXRvJiBlbGVt
ZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3RO
b2RlKSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8
RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAgICAg
ICAgICAgaWYgKGVsZW1lbnQubmFtZXNwYWNlVVJJKCkgPT0gc2VsZWN0b3JOYW1lc3BhY2VVUkkg
JiYgbG9jYWxOYW1lTWF0Y2hlcyhlbGVtZW50LCBzZWxlY3RvckxvY2FsTmFtZSwgc2VsZWN0b3JM
b3dlcmNhc2VMb2NhbE5hbWUpKSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0
OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICAgICAg
ICAgIGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkK
QEAgLTM2Miw3ICszNTksNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6
ZXhlY3V0ZVNpbmdsZUNsYXNzTmFtZVNlbGVjdG9yRGF0YShjb25zdCBDbwogICAgIEFTU0VSVChp
c1NpbmdsZUNsYXNzTmFtZVNlbGVjdG9yKCpzZWxlY3RvckRhdGEuc2VsZWN0b3IpKTsKIAogICAg
IGNvbnN0IEF0b21TdHJpbmcmIGNsYXNzTmFtZSA9IHNlbGVjdG9yRGF0YS5zZWxlY3Rvci0+dmFs
dWUoKTsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29uc3Rf
Y2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVu
dCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+
KHJvb3ROb2RlKSkpIHsKICAgICAgICAgaWYgKGVsZW1lbnQuaGFzQ2xhc3MoKSAmJiBlbGVtZW50
LmNsYXNzTmFtZXMoKS5jb250YWlucyhjbGFzc05hbWUpKSB7CiAgICAgICAgICAgICBTZWxlY3Rv
clF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1lbnQob3V0cHV0LCAmZWxlbWVudCk7CiAg
ICAgICAgICAgICBpZiAoU2VsZWN0b3JRdWVyeVRyYWl0OjpzaG91bGRPbmx5TWF0Y2hGaXJzdEVs
ZW1lbnQpCkBAIC0zNzYsNyArMzczLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0
YUxpc3Q6OmV4ZWN1dGVTaW5nbGVTZWxlY3RvckRhdGEoY29uc3QgQ29udGFpbmVyTm8KIHsKICAg
ICBBU1NFUlQobV9zZWxlY3RvcnMuc2l6ZSgpID09IDEpOwogCi0gICAgZm9yIChhdXRvJiBlbGVt
ZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNlYXJj
aFJvb3ROb2RlKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlw
ZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihzZWFyY2hSb290Tm9kZSkpKSB7
CiAgICAgICAgIGlmIChzZWxlY3Rvck1hdGNoZXMoc2VsZWN0b3JEYXRhLCBlbGVtZW50LCByb290
Tm9kZSkpIHsKICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBwZW5kT3V0cHV0Rm9y
RWxlbWVudChvdXRwdXQsICZlbGVtZW50KTsKICAgICAgICAgICAgIGlmIChTZWxlY3RvclF1ZXJ5
VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAgLTM4OCw3ICszODUsNyBAQCBB
TFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZVNlbGVjdG9y
RGF0YShjb25zdCBDb250YWluZXJObwogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlU
cmFpdD4KIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2luZ2xl
TXVsdGlTZWxlY3RvckRhdGEoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIHR5cGVuYW1l
IFNlbGVjdG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0cHV0KSBjb25zdAogewotICAgIGZv
ciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9jYXN0PENvbnRhaW5l
ck5vZGUmPihyb290Tm9kZSkpKSB7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFu
dHNPZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkg
ewogICAgICAgICBmb3IgKGF1dG8mIHNlbGVjdG9yIDogbV9zZWxlY3RvcnMpIHsKICAgICAgICAg
ICAgIGlmIChzZWxlY3Rvck1hdGNoZXMoc2VsZWN0b3IsIGVsZW1lbnQsIHJvb3ROb2RlKSkgewog
ICAgICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBwZW5kT3V0cHV0Rm9yRWxlbWVu
dChvdXRwdXQsICZlbGVtZW50KTsKQEAgLTQwNCw3ICs0MDEsNyBAQCBBTFdBWVNfSU5MSU5FIHZv
aWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZU11bHRpU2VsZWN0b3JEYXRhKGNvbnN0
IENvbnRhaQogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4KIEFMV0FZU19J
TkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29tcGlsZWRTaW1wbGVTZWxlY3Rv
ckNoZWNrZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgc2VhcmNoUm9vdE5vZGUsIFNlbGVjdG9yQ29t
cGlsZXI6OlF1ZXJ5U2VsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXIgc2VsZWN0b3JDaGVja2Vy
LCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5cGUmIG91dHB1dCwgY29uc3Qg
U2VsZWN0b3JEYXRhJiBzZWxlY3RvckRhdGEpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvJiBlbGVt
ZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNlYXJj
aFJvb3ROb2RlKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlw
ZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihzZWFyY2hSb290Tm9kZSkpKSB7
CiAgICAgICAgIHNlbGVjdG9yRGF0YS5jb21waWxlZFNlbGVjdG9yLndhc1VzZWQoKTsKIAogICAg
ICAgICBpZiAoc2VsZWN0b3JDaGVja2VyKCZlbGVtZW50KSkgewpAQCAtNDIxLDcgKzQxOCw3IEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29tcGlsZWRTZWxl
Y3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDCiAgICAgU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0Nv
bnRleHQgY2hlY2tpbmdDb250ZXh0KFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6UXVlcnlpbmdSdWxl
cyk7CiAgICAgY2hlY2tpbmdDb250ZXh0LnNjb3BlID0gcm9vdE5vZGUuaXNEb2N1bWVudE5vZGUo
KSA/IG51bGxwdHIgOiAmcm9vdE5vZGU7CiAKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVt
ZW50RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4oc2VhcmNoUm9vdE5vZGUp
KSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+
KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNlYXJjaFJvb3ROb2RlKSkpIHsKICAgICAgICAg
c2VsZWN0b3JEYXRhLmNvbXBpbGVkU2VsZWN0b3Iud2FzVXNlZCgpOwogCiAgICAgICAgIGlmIChz
ZWxlY3RvckNoZWNrZXIoJmVsZW1lbnQsICZjaGVja2luZ0NvbnRleHQpKSB7CkBAIC00MzcsNyAr
NDM0LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVDb21w
aWxlZFNpbmdsZU11bHRpU2VsZWN0b3JEYXRhKGNvbnMKIHsKICAgICBTZWxlY3RvckNoZWNrZXI6
OkNoZWNraW5nQ29udGV4dCBjaGVja2luZ0NvbnRleHQoU2VsZWN0b3JDaGVja2VyOjpNb2RlOjpR
dWVyeWluZ1J1bGVzKTsKICAgICBjaGVja2luZ0NvbnRleHQuc2NvcGUgPSByb290Tm9kZS5pc0Rv
Y3VtZW50Tm9kZSgpID8gbnVsbHB0ciA6ICZyb290Tm9kZTsKLSAgICBmb3IgKGF1dG8mIGVsZW1l
bnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5v
ZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1l
bnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAgZm9y
IChhdXRvJiBzZWxlY3RvciA6IG1fc2VsZWN0b3JzKSB7CiAgICAgICAgICAgICBzZWxlY3Rvci5j
b21waWxlZFNlbGVjdG9yLndhc1VzZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Nsb3RBc3NpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVu
dC5jcHAKaW5kZXggNGQzZTYxOTQ3ZDNiZjhhNWFhYzRiY2U2NzdmYzcxYTMzYjg1YzZiOC4uZDJk
MTNjYjA5MzUwZDA3YmM2MjA1N2VjOTNjZjM0ODVhNDYwZGRkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2xvdEFzc2lnbm1lbnQuY3BwCkBAIC0yNiwxMCArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlNsb3RBc3NpZ25tZW50LmgiCiAKLQorI2luY2x1ZGUgIkVsZW1lbnRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKLSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHlwZWRFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKaW5kZXggOWYzNTkzNWQ5NmM3OWU3NWI2OGQzMGMyOGNi
ZTNjNWEwNDNmMDMzMy4uZmY2MWQ4Zjk0MGFhNmIxNjlkZmNmZDEzZjg3NDFjY2YwNzMxMjQ4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI5LDI5NCArMjksMjgyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
dGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZVR5cGVkRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvcjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBEb3VibGVFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIERvdWJsZUVsZW1l
bnREZXNjZW5kYW50UmFuZ2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRWxlbWVudERlc2Nl
bmRhbnRSYW5nZTsKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sKGNvbnN0IEVs
ZW1lbnRUeXBlJik+IGNsYXNzIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZTsKIAotdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gewotcHVibGlj
OgotICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2Rl
JiByb290KTsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFp
bmVyTm9kZSYgcm9vdCwgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotICAgIFR5cGVkRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotfTsKKy8vIFJhbmdlIGZvciBpdGVyYXRp
bmcgdGhyb3VnaCBkZXNjZW5kYW50IGVsZW1lbnRzLgordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZU
eXBlKENvbnRhaW5lck5vZGUmKTsKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVt
ZW50RGVzY2VuZGFudFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShj
b25zdCBDb250YWluZXJOb2RlJik7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWNsYXNzIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIDogcHVibGljIEVsZW1l
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiAgewotcHVibGljOgotICAgIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpOwotICAg
IFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUm
IHJvb3QsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKLSAgICBUeXBlZEVsZW1lbnREZXNj
ZW5kYW50Q29uc3RJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotfTsKKy8vIFJhbmdlIHRoYXQgc2tp
cHMgZWxlbWVudHMgd2hlcmUgdGhlIGZpbHRlciByZXR1cm5zIGZhbHNlLgordGVtcGxhdGU8dHlw
ZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmlsdGVyKGNvbnN0IEVsZW1lbnRUeXBlJik+IEZpbHRl
cmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZTxjb25zdCBFbGVtZW50VHlwZSwgZmlsdGVyPiBkZXNj
ZW5kYW50c09mVHlwZShjb25zdCBDb250YWluZXJOb2RlJik7CisKKy8vIFJhbmdlIGZvciB1c2Ug
d2hlbiBib3RoIHNldHMgb2YgZGVzY2VuZGFudHMgYXJlIGtub3duIHRvIGJlIHRoZSBzYW1lIGxl
bmd0aC4KKy8vIElmIHRoZXkgYXJlIGRpZmZlcmVudCBsZW5ndGhzLCB0aGlzIHdpbGwgc3RvcCB3
aGVuIHRoZSBzaG9ydGVyIG9uZSByZWFjaGVzIHRoZSBlbmQsIGJ1dCBhbHNvIGFuIGFzc2VydGlv
biB3aWxsIGZhaWwuCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRG91YmxlRWxlbWVu
dERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFpbmVy
Tm9kZSYgZmlyc3RSb290LCBDb250YWluZXJOb2RlJiBzZWNvbmRSb290KTsKIAogdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yQWRhcHRlciB7CitjbGFzcyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIDogcHVibGljIEVs
ZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gewogcHVibGljOgotICAgIFR5cGVkRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpOwotICAgIFR5cGVk
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCk7Ci0gICAgVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbkF0KEVsZW1lbnRUeXBl
Jik7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBmcm9t
KEVsZW1lbnQmKTsKLQotICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpOwotICAgIEVsZW1lbnRUeXBl
KiBsYXN0KCk7Ci0KLXByaXZhdGU6Ci0gICAgQ29udGFpbmVyTm9kZSYgbV9yb290OworICAgIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7CisgICAg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBFbGVt
ZW50VHlwZSogY3VycmVudCk7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0
b3IrKygpOworICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsKIH07
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIFR5cGVkRWxlbWVudERl
c2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlciB7CitjbGFzcyBFbGVtZW50RGVzY2VuZGFudFJh
bmdlIHsKIHB1YmxpYzoKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFk
YXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7Ci0gICAgVHlwZWRF
bGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpIGNvbnN0Owot
ICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdp
bkF0KGNvbnN0IEVsZW1lbnRUeXBlJikgY29uc3Q7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGZyb20oY29uc3QgRWxlbWVudCYpIGNvbnN0Owor
ICAgIEVsZW1lbnREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7Cisg
ICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKSBjb25zdDsK
KyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKSBjb25zdDsK
KyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbkF0KEVsZW1l
bnRUeXBlJikgY29uc3Q7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4gZnJvbShFbGVtZW50JikgY29uc3Q7CiAKLSAgICBjb25zdCBFbGVtZW50VHlwZSogZmlyc3Qo
KSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50VHlwZSogbGFzdCgpIGNvbnN0OworICAgIEVsZW1l
bnRUeXBlKiBmaXJzdCgpIGNvbnN0OworICAgIEVsZW1lbnRUeXBlKiBsYXN0KCkgY29uc3Q7CiAK
IHByaXZhdGU6CiAgICAgY29uc3QgQ29udGFpbmVyTm9kZSYgbV9yb290OwogfTsKIAotdGVtcGxh
dGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvckFkYXB0ZXIgewordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNz
IERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UgewogcHVibGljOgotICAgIHR5cGVkZWYgVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gU2luZ2xlQWRh
cHRlcjsKLSAgICB0eXBlZGVmIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxF
bGVtZW50VHlwZT4gSXRlcmF0b3I7CisgICAgdHlwZWRlZiBFbGVtZW50RGVzY2VuZGFudFJhbmdl
PEVsZW1lbnRUeXBlPiBTaW5nbGVBZGFwdGVyOworICAgIHR5cGVkZWYgRG91YmxlRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gSXRlcmF0b3I7CiAKLSAgICBEb3VibGVUeXBl
ZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKFNpbmdsZUFkYXB0ZXImJiwgU2luZ2xl
QWRhcHRlciYmKTsKLSAgICBJdGVyYXRvciBiZWdpbigpOwotICAgIEl0ZXJhdG9yIGVuZCgpOwor
ICAgIERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UoU2luZ2xlQWRhcHRlciYmLCBTaW5nbGVB
ZGFwdGVyJiYpOworICAgIEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CisgICAgSXRlcmF0b3IgZW5k
KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgc3RkOjpwYWlyPFNpbmdsZUFkYXB0ZXIsIFNpbmds
ZUFkYXB0ZXI+IG1fcGFpcjsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBj
bGFzcyBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgewordGVtcGxhdGU8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Ig
ewogcHVibGljOgotICAgIHR5cGVkZWYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPiBTaW5nbGVJdGVyYXRvcjsKKyAgICB0eXBlZGVmIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+IFNpbmdsZUl0ZXJhdG9yOwogICAgIHR5cGVkZWYgc3RkOjpw
YWlyPEVsZW1lbnRUeXBlJiwgRWxlbWVudFR5cGUmPiBSZWZlcmVuY2VQcm94eTsKIAotICAgIERv
dWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihTaW5nbGVJdGVyYXRvciYmLCBTaW5n
bGVJdGVyYXRvciYmKTsKKyAgICBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKFNpbmds
ZUl0ZXJhdG9yJiYsIFNpbmdsZUl0ZXJhdG9yJiYpOwogICAgIFJlZmVyZW5jZVByb3h5IG9wZXJh
dG9yKigpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEb3VibGVUeXBlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3ImKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
RG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJikgY29uc3Q7Ci0gICAgRG91Ymxl
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImKSBjb25zdDsK
KyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRG91YmxlRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ciYpIGNvbnN0OworICAgIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9y
KysoKTsKIAogcHJpdmF0ZToKICAgICBzdGQ6OnBhaXI8U2luZ2xlSXRlcmF0b3IsIFNpbmdsZUl0
ZXJhdG9yPiBtX3BhaXI7CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IFR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRh
bnRzT2ZUeXBlKENvbnRhaW5lck5vZGUmKTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBl
PiBkZXNjZW5kYW50c09mVHlwZShjb25zdCBDb250YWluZXJOb2RlJik7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBFbGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gY2xhc3Mg
RmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJdGVyYXRv
cjxFbGVtZW50VHlwZT4geworcHVibGljOgorICAgIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiwgRWxlbWVudFR5cGUqID0gbnVsbHB0cik7Cisg
ICAgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Cit9Owog
Ci0vLyBUaGlzIG11c3Qgb25seSBiZSB1c2VkIHdoZW4gYm90aCBzZXRzIG9mIGRlc2NlbmRhbnRz
IGFyZSBrbm93biB0byBiZSB0aGUgc2FtZSBsZW5ndGguCi0vLyBJZiB0aGV5IGFyZSBkaWZmZXJl
bnQgbGVuZ3RocywgdGhpcyB3aWxsIHN0b3Agd2hlbiB0aGUgc2hvcnRlciBvbmUgcmVhY2hlcyB0
aGUgZW5kLCBidXQgYWxzbyBhbiBhc3NlcnRpb24gd2lsbCBmYWlsLgotdGVtcGxhdGU8dHlwZW5h
bWUgRWxlbWVudFR5cGU+IERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0
ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKENvbnRhaW5lck5vZGUmIGZpcnN0Um9v
dCwgQ29udGFpbmVyTm9kZSYgc2Vjb25kUm9vdCk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50
VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gY2xhc3MgRmlsdGVyZWRFbGVt
ZW50RGVzY2VuZGFudFJhbmdlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBJdGVyYXRvciA9IEZpbHRl
cmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZSwgZmlsdGVyPjsKIAotLy8g
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yCisgICAgRmlsdGVyZWRFbGVtZW50RGVzY2Vu
ZGFudFJhbmdlKGNvbnN0IENvbnRhaW5lck5vZGUmKTsKKyAgICBJdGVyYXRvciBiZWdpbigpIGNv
bnN0OworICAgIEl0ZXJhdG9yIGVuZCgpIGNvbnN0OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUm
IHJvb3QpCi0gICAgOiBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZyb290KQotewotfQor
ICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUm
IHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPigmcm9vdCwgY3VycmVudCkKLXsKLX0KK3ByaXZhdGU6CisgICAgY29uc3QgQ29udGFp
bmVyTm9kZSYgbV9yb290OworfTsKKworLy8gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcgogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCitpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFp
bmVyTm9kZSYgcm9vdCkKKyAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnJvb3Qp
CiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
cjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5l
eHQoKSk7CiB9CiAKLS8vIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yCi0KIHRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCi0gICAgOiBFbGVtZW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT4oJnJvb3QpCi0KK2lubGluZSBFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250
YWluZXJOb2RlJiByb290LCBFbGVtZW50VHlwZSogY3VycmVudCkKKyAgICA6IEVsZW1lbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT4oJnJvb3QsIGN1cnJlbnQpCiB7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKGNv
bnN0IENvbnRhaW5lck5vZGUmIHJvb3QsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAg
IDogRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZyb290LCBjdXJyZW50KQoraW5s
aW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCiB7CisgICAgRWxlbWVudEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0KCk7CisgICAgcmV0dXJuICp0aGlzOwog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50
RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBUeXBlZEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQoraW5saW5lIEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItLSgpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1l
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0KCkpOworICAgIEVsZW1l
bnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXMoKTsKKyAgICByZXR1cm4g
KnRoaXM7CiB9CiAKLS8vIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIKKy8v
IEVsZW1lbnREZXNjZW5kYW50UmFuZ2UKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5
cGU+OjpUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUm
IHJvb3QpCitpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZT46OkVsZW1l
bnREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKICAgICA6IG1fcm9v
dChyb290KQogewogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUg
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4oKQoraW5saW5lIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50UmFu
Z2U8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBUcmF2ZXJzYWw8RWxlbWVu
dFR5cGU+OjpmaXJzdFdpdGhpbihtX3Jvb3QpKTsKKyAgICByZXR1cm4gRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+Ojpm
aXJzdFdpdGhpbihtX3Jvb3QpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpCitp
bmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudERlc2Nl
bmRhbnRSYW5nZTxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFR5cGVk
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290KTsKKyAgICByZXR1
cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290KTsKIH0KICAg
ICAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBkZXNjZW5kYW50
KQoraW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRE
ZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBkZXNjZW5k
YW50KSBjb25zdAogewogICAgIEFTU0VSVChkZXNjZW5kYW50LmlzRGVzY2VuZGFudE9mKG1fcm9v
dCkpOwotICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+KG1fcm9vdCwgJmRlc2NlbmRhbnQpOworICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsICZkZXNjZW5kYW50KTsKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxF
bGVtZW50VHlwZT46OmZyb20oRWxlbWVudCYgZGVzY2VuZGFudCkKK2lubGluZSBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1l
bnRUeXBlPjo6ZnJvbShFbGVtZW50JiBkZXNjZW5kYW50KSBjb25zdAogewogICAgIEFTU0VSVChk
ZXNjZW5kYW50LmlzRGVzY2VuZGFudE9mKG1fcm9vdCkpOwogICAgIGlmIChpczxFbGVtZW50VHlw
ZT4oZGVzY2VuZGFudCkpCi0gICAgICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgZG93bmNhc3Q8RWxlbWVudFR5cGU+KCZkZXNjZW5k
YW50KSk7CisgICAgICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPihtX3Jvb3QsIGRvd25jYXN0PEVsZW1lbnRUeXBlPigmZGVzY2VuZGFudCkpOwogICAgIEVs
ZW1lbnRUeXBlKiBuZXh0ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dChkZXNjZW5kYW50
LCAmbV9yb290KTsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPihtX3Jvb3QsIG5leHQpOworICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIG5leHQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudFR5cGUqIFR5cGVkRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpmaXJzdCgpCitpbmxpbmUgRWxlbWVudFR5
cGUqIEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpmaXJzdCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0aGluKG1fcm9vdCk7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50VHlw
ZSogVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46Omxh
c3QoKQoraW5saW5lIEVsZW1lbnRUeXBlKiBFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRU
eXBlPjo6bGFzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46
Omxhc3RXaXRoaW4obV9yb290KTsKIH0KIAotLy8gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0
SXRlcmF0b3JBZGFwdGVyCisvLyBEb3VibGVFbGVtZW50RGVzY2VuZGFudFJhbmdlCiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50
Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpUeXBlZEVsZW1lbnREZXNjZW5kYW50
Q29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKLSAgICA6IG1f
cm9vdChyb290KQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBEb3VibGVF
bGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPjo6RG91YmxlRWxlbWVudERlc2NlbmRh
bnRSYW5nZShTaW5nbGVBZGFwdGVyJiYgZmlyc3QsIFNpbmdsZUFkYXB0ZXImJiBzZWNvbmQpCisg
ICAgOiBtX3BhaXIoV1RGTW92ZShmaXJzdCksIFdURk1vdmUoc2Vjb25kKSkKIHsKIH0KIAotdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRh
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGF1dG8gRG91YmxlRWxlbWVudERlc2NlbmRhbnRSYW5n
ZTxFbGVtZW50VHlwZT46OmJlZ2luKCkgY29uc3QgLT4gSXRlcmF0b3IKIHsKLSAgICByZXR1cm4g
VHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwg
VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RXaXRoaW4obV9yb290KSk7CisgICAgcmV0dXJu
IEl0ZXJhdG9yKG1fcGFpci5maXJzdC5iZWdpbigpLCBtX3BhaXIuc2Vjb25kLmJlZ2luKCkpOwog
fQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50
RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2NlbmRh
bnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGF1dG8gRG91YmxlRWxlbWVudERlc2NlbmRh
bnRSYW5nZTxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0IC0+IEl0ZXJhdG9yCiB7Ci0gICAgcmV0
dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jv
b3QpOworICAgIHJldHVybiBJdGVyYXRvcihtX3BhaXIuZmlyc3QuZW5kKCksIG1fcGFpci5zZWNv
bmQuZW5kKCkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUg
VHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxl
bWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2luQXQo
Y29uc3QgRWxlbWVudFR5cGUmIGRlc2NlbmRhbnQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGRlc2Nl
bmRhbnQuaXNEZXNjZW5kYW50T2YobV9yb290KSk7Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVudERl
c2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsICZkZXNjZW5kYW50KTsK
LX0KKy8vIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IKIAotdGVtcGxhdGUgPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0
ZXI8RWxlbWVudFR5cGU+Ojpmcm9tKGNvbnN0IEVsZW1lbnQmIGRlc2NlbmRhbnQpIGNvbnN0Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIERvdWJsZUVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
KFNpbmdsZUl0ZXJhdG9yJiYgZmlyc3QsIFNpbmdsZUl0ZXJhdG9yJiYgc2Vjb25kKQorICAgIDog
bV9wYWlyKFdURk1vdmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29uZCkpCiB7Ci0gICAgQVNTRVJUKGRl
c2NlbmRhbnQuaXNEZXNjZW5kYW50T2YobV9yb290KSk7Ci0gICAgaWYgKGlzPEVsZW1lbnRUeXBl
PihkZXNjZW5kYW50KSkKLSAgICAgICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIGRvd25jYXN0PEVsZW1lbnRUeXBlPigmZGVz
Y2VuZGFudCkpOwotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBuZXh0ID0gVHJhdmVyc2FsPEVsZW1l
bnRUeXBlPjo6bmV4dChkZXNjZW5kYW50LCAmbV9yb290KTsKLSAgICByZXR1cm4gVHlwZWRFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgbmV4dCk7CiB9
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBjb25zdCBFbGVtZW50
VHlwZSogVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPjo6Zmlyc3QoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGlu
ZSBhdXRvIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVy
YXRvciooKSBjb25zdCAtPiBSZWZlcmVuY2VQcm94eQogewotICAgIHJldHVybiBUcmF2ZXJzYWw8
RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpbihtX3Jvb3QpOworICAgIHJldHVybiB7ICptX3BhaXIu
Zmlyc3QsICptX3BhaXIuc2Vjb25kIH07CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KLWlubGluZSBjb25zdCBFbGVtZW50VHlwZSogVHlwZWRFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6bGFzdCgpIGNvbnN0Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGJvb2wgRG91YmxlRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yPT0oY29uc3QgRG91YmxlRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVt
ZW50VHlwZT46Omxhc3RXaXRoaW4obV9yb290KTsKKyAgICBBU1NFUlQoKG1fcGFpci5maXJzdCA9
PSBvdGhlci5tX3BhaXIuZmlyc3QpID09IChtX3BhaXIuc2Vjb25kID09IG90aGVyLm1fcGFpci5z
ZWNvbmQpKTsKKyAgICByZXR1cm4gbV9wYWlyLmZpcnN0ID09IG90aGVyLm1fcGFpci5maXJzdCB8
fCBtX3BhaXIuc2Vjb25kID09IG90aGVyLm1fcGFpci5zZWNvbmQ7CiB9CiAKLS8vIERvdWJsZVR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIKLQotdGVtcGxhdGU8dHlwZW5hbWUg
RWxlbWVudFR5cGU+IGlubGluZSBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JB
ZGFwdGVyPEVsZW1lbnRUeXBlPjo6RG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
QWRhcHRlcihTaW5nbGVBZGFwdGVyJiYgZmlyc3QsIFNpbmdsZUFkYXB0ZXImJiBzZWNvbmQpCi0g
ICAgOiBtX3BhaXIoV1RGTW92ZShmaXJzdCksIFdURk1vdmUoc2Vjb25kKSkKK3RlbXBsYXRlPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgYm9vbCBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBEb3VibGVFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKIHsKKyAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgYXV0byBEb3Vi
bGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVn
aW4oKSAtPiBJdGVyYXRvcgordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBE
b3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRG91YmxlRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewotICAgIHJl
dHVybiBJdGVyYXRvcihtX3BhaXIuZmlyc3QuYmVnaW4oKSwgbV9wYWlyLnNlY29uZC5iZWdpbigp
KTsKKyAgICArK21fcGFpci5maXJzdDsKKyAgICArK21fcGFpci5zZWNvbmQ7CisgICAgcmV0dXJu
ICp0aGlzOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGF1dG8g
RG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46
OmVuZCgpIC0+IEl0ZXJhdG9yCisvLyBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IK
KwordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmlsdGVyKGNvbnN0IEVsZW1l
bnRUeXBlJik+IEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZSwg
ZmlsdGVyPjo6RmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5l
ck5vZGUmIHJvb3QsIEVsZW1lbnRUeXBlKiBlbGVtZW50KQorICAgIDogRWxlbWVudEl0ZXJhdG9y
PGNvbnN0IEVsZW1lbnRUeXBlPiB7ICZyb290LCBlbGVtZW50IH0KIHsKLSAgICByZXR1cm4gSXRl
cmF0b3IobV9wYWlyLmZpcnN0LmVuZCgpLCBtX3BhaXIuc2Vjb25kLmVuZCgpKTsKIH0KIAotLy8g
RG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yCi0KLXRlbXBsYXRlPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPiBpbmxpbmUgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPjo6RG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKFNpbmds
ZUl0ZXJhdG9yJiYgZmlyc3QsIFNpbmdsZUl0ZXJhdG9yJiYgc2Vjb25kKQotICAgIDogbV9wYWly
KFdURk1vdmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29uZCkpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVt
ZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gRmlsdGVyZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlLCBmaWx0ZXI+JiBGaWx0ZXJlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGUsIGZpbHRlcj46Om9wZXJhdG9yKysoKQogewor
ICAgIGRvIHsKKyAgICAgICAgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VO
ZXh0KCk7CisgICAgfSB3aGlsZSAoIUVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OmF0RW5k
KCkgJiYgIWZpbHRlcigqKnRoaXMpKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgYXV0byBEb3VibGVUeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvciooKSBjb25zdCAtPiBSZWZlcmVu
Y2VQcm94eQorLy8gRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlCisKK3RlbXBsYXRlPHR5
cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBGaWx0
ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGUsIGZpbHRlcj46OkZpbHRlcmVk
RWxlbWVudERlc2NlbmRhbnRSYW5nZShjb25zdCBDb250YWluZXJOb2RlJiByb290KQorICAgIDog
bV9yb290IHsgcm9vdCB9CiB7Ci0gICAgcmV0dXJuIHsgKm1fcGFpci5maXJzdCwgKm1fcGFpci5z
ZWNvbmQgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBib29s
IERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJh
dG9yPT0oY29uc3QgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhlcikg
Y29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBF
bGVtZW50VHlwZSYpPiBhdXRvIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50
VHlwZSwgZmlsdGVyPjo6YmVnaW4oKSBjb25zdCAtPiBJdGVyYXRvcgogewotICAgIEFTU0VSVCgo
bV9wYWlyLmZpcnN0ID09IG90aGVyLm1fcGFpci5maXJzdCkgPT0gKG1fcGFpci5zZWNvbmQgPT0g
b3RoZXIubV9wYWlyLnNlY29uZCkpOwotICAgIHJldHVybiBtX3BhaXIuZmlyc3QgPT0gb3RoZXIu
bV9wYWlyLmZpcnN0IHx8IG1fcGFpci5zZWNvbmQgPT0gb3RoZXIubV9wYWlyLnNlY29uZDsKKyAg
ICByZXR1cm4geyBtX3Jvb3QsIGZpcnN0KCkgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxl
bWVudFR5cGU+IGlubGluZSBib29sIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
cjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIT0oY29uc3QgRG91YmxlVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBl
LCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBhdXRvIEZpbHRlcmVkRWxlbWVudERl
c2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZSwgZmlsdGVyPjo6ZW5kKCkgY29uc3QgLT4gSXRlcmF0
b3IKIHsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgcmV0dXJuIHsgbV9yb290
IH07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgRG91YmxlVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRG91YmxlVHlwZWRFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBFbGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4g
RWxlbWVudFR5cGUqIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZSwg
ZmlsdGVyPjo6Zmlyc3QoKSBjb25zdAogewotICAgICsrbV9wYWlyLmZpcnN0OwotICAgICsrbV9w
YWlyLnNlY29uZDsKLSAgICByZXR1cm4gKnRoaXM7CisgICAgZm9yIChhdXRvKiBlbGVtZW50ID0g
VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RXaXRoaW4obV9yb290KTsgZWxlbWVudDsgZWxl
bWVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHQoKmVsZW1lbnQsICZtX3Jvb3QpKSB7
CisgICAgICAgIGlmIChmaWx0ZXIoKmVsZW1lbnQpKQorICAgICAgICAgICAgcmV0dXJuIGVsZW1l
bnQ7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOwogfQogCiAvLyBTdGFuZGFsb25lIGZ1bmN0
aW9ucwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5
cGUoQ29udGFpbmVyTm9kZSYgcm9vdCkKK2lubGluZSBFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVs
ZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWluZXJOb2RlJiByb290KQogewotICAg
IHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBl
Pihyb290KTsKKyAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZT4o
cm9vdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBl
ZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2Nl
bmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCitpbmxpbmUgRWxlbWVudERl
c2NlbmRhbnRSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoY29uc3Qg
Q29udGFpbmVyTm9kZSYgcm9vdCkKIHsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihyb290KTsKKyAgICByZXR1cm4gRWxl
bWVudERlc2NlbmRhbnRSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4ocm9vdCk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgRG91YmxlVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFp
bmVyTm9kZSYgZmlyc3RSb290LCBDb250YWluZXJOb2RlJiBzZWNvbmRSb290KQordGVtcGxhdGU8
dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBEb3VibGVFbGVtZW50RGVzY2VuZGFudFJhbmdl
PEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWluZXJOb2RlJiBmaXJzdFJvb3Qs
IENvbnRhaW5lck5vZGUmIHNlY29uZFJvb3QpCiB7CiAgICAgcmV0dXJuIHsgZGVzY2VuZGFudHNP
ZlR5cGU8RWxlbWVudFR5cGU+KGZpcnN0Um9vdCksIGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnRU
eXBlPihzZWNvbmRSb290KSB9OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZSwg
Ym9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFu
dFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlLCBmaWx0ZXI+IGRlc2NlbmRhbnRzT2ZUeXBlKGNvbnN0
IENvbnRhaW5lck5vZGUmIHJvb3QpCit7CisgICAgcmV0dXJuIHsgcm9vdCB9OworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMjkxYmE2
YzBjMDRjNGI2Njk4NDY2ZTEwNzUzNDg1OGU4NTlkYWEwMS4uZGIyMGIzMDEzMjA5NjQxNmMzZTEw
OTQ2ZWQyMDEwZTU0ZmM5ZjkwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDks
NiArNDksNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJFbGVt
ZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgpAQCAtNjEsNyArNjIsNyBAQAogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxCUkVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgor
I2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MSW1hZ2VFbGVtZW50LmgiCkBAIC0zNDI2LDIzICszNDI3LDE4IEBAIHZvaWQgRWRpdG9yOjp0
ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShFbGVtZW50KiBlKQogCiB2b2lkIEVkaXRvcjo6YXBwbHlF
ZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGNvbGxlY3Rpb24g
PSBkb2N1bWVudCgpLmdldEVsZW1lbnRzQnlUYWdOYW1lKEhUTUxOYW1lczo6Ym9keVRhZy0+bG9j
YWxOYW1lKCkpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNvbGxlY3Rpb24tPmxlbmd0aCgpOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgYXBwbHlF
ZGl0aW5nU3R5bGVUb0VsZW1lbnQoY29sbGVjdGlvbi0+aXRlbShpKSk7Ci19Ci0KLXZvaWQgRWRp
dG9yOjphcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudChFbGVtZW50KiBlbGVtZW50KSBjb25zdAot
ewotICAgIEFTU0VSVCghZWxlbWVudCB8fCBpczxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkpOwot
ICAgIGlmICghaXM8U3R5bGVkRWxlbWVudD4oZWxlbWVudCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00gd3JhcHBlciBzbyB3ZSBnZXQgdGhlIHNhbWUg
ZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCi0gICAgYXV0byYgc3R5bGUgPSBkb3duY2FzdDxT
dHlsZWRFbGVtZW50PigqZWxlbWVudCkuY3Nzb21TdHlsZSgpOwotICAgIHN0eWxlLnNldFByb3Bl
cnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkV3JhcCwgImJyZWFrLXdvcmQiLCBmYWxzZSk7Ci0g
ICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCAi
c3BhY2UiLCBmYWxzZSk7Ci0gICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0
eUxpbmVCcmVhaywgImFmdGVyLXdoaXRlLXNwYWNlIiwgZmFsc2UpOworICAgIC8vIEZJWE1FOiBO
b3QgY2xlYXIgaXQncyB2YWx1YWJsZSB0byBkbyB0aGlzIHRvIGFsbCBib2R5IGVsZW1lbnRzIHJh
dGhlciB0aGFuIGp1c3QgZG9pbmcgaXQgb24gdGhlIHNpbmdsZSBvbmUgcmV0dXJuZWQgYnkgRG9j
dW1lbnQ6OmJvZHkuCisgICAgVmVjdG9yPFJlZjxIVE1MQm9keUVsZW1lbnQ+PiBib2RpZXM7Cisg
ICAgZm9yIChhdXRvJiBib2R5IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTEJvZHlFbGVtZW50Pihk
b2N1bWVudCgpKSkKKyAgICAgICAgYm9kaWVzLmFwcGVuZChib2R5KTsKKworICAgIGZvciAoYXV0
byYgYm9keSA6IGJvZGllcykgeworICAgICAgICAvLyBNdXRhdGUgdXNpbmcgdGhlIENTU09NIHdy
YXBwZXIgc28gd2UgZ2V0IHRoZSBzYW1lIGV2ZW50IGJlaGF2aW9yIGFzIGEgc2NyaXB0LgorICAg
ICAgICBhdXRvJiBzdHlsZSA9IGJvZHktPmNzc29tU3R5bGUoKTsKKyAgICAgICAgc3R5bGUuc2V0
UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdvcmRXcmFwLCAiYnJlYWstd29yZCIsIGZhbHNl
KTsKKyAgICAgICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE5i
c3BNb2RlLCAic3BhY2UiLCBmYWxzZSk7CisgICAgICAgIHN0eWxlLnNldFByb3BlcnR5SW50ZXJu
YWwoQ1NTUHJvcGVydHlMaW5lQnJlYWssICJhZnRlci13aGl0ZS1zcGFjZSIsIGZhbHNlKTsKKyAg
ICB9CiB9CiAKIGJvb2wgRWRpdG9yOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBG
aW5kT3B0aW9ucyBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggNmVhODkyMmZi
MDc2MmRmZTAzMmYxMGY2ZGExYWZiZDZlMzE0ZWY4Yy4uNzA5ODFkNzQ3YTE4N2U4ZTc1ODExNWI2
NjZkNzhjYTIzZDBkYTVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC00MzEsNyArNDMx
LDYgQEAgcHVibGljOgogICAgIHZvaWQgY29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKEVkaXRpbmdT
dHlsZSYgLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6VW5zcGVjaWZpZWQpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKFN0eWxlUHJvcGVydGllcyYg
LCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6VW5zcGVjaWZpZWQpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCkgY29uc3Q7Ci0gICAgdm9p
ZCBhcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudChFbGVtZW50KikgY29uc3Q7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBJbnRSZWN0IGZpcnN0UmVjdEZvclJhbmdlKFJhbmdlKikgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxl
ci5jcHAKaW5kZXggY2RlOWE3OGM4ZmU3ZGExMzFlMTFmNDRmNGJiMDkxYzVmZTZmMDJmMy4uMWU3
NjBkZTcyMzE2MDlkMDU5Mjk4MjhmN2UxM2YzZDIyYmEyNTJmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTcx
LDcgKzcxLDcgQEAgcHVibGljOgogCiAgICAgICAgIFR5cGUgdHlwZSA9IFR5cGU6OkluY2x1ZGU7
CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBtYXRjaGluZ0VsZW1lbnQ7Ci0gICAgICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IGVsZW1lbnRMaW5lYWdlKHN0YXJ0aW5nRWxlbWVudC5nZXQoKSkpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbGluZWFnZU9mVHlwZTxFbGVtZW50Pigqc3Rh
cnRpbmdFbGVtZW50KSkgewogICAgICAgICAgICAgaWYgKGF1dG8gdHlwZU9yTnVsbG9wdCA9IHR5
cGVGb3JFbGVtZW50KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgdHlwZSA9ICp0eXBlT3JO
dWxsb3B0OwogICAgICAgICAgICAgICAgIG1hdGNoaW5nRWxlbWVudCA9ICZlbGVtZW50OwpAQCAt
NzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAg
ICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50TGluZWFnZShzdGFydGluZ0VsZW1lbnQuZ2V0
KCkpKSB7CisgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVu
dD4oKnN0YXJ0aW5nRWxlbWVudCkpIHsKICAgICAgICAgICAgIG1fY2FjaGUuc2V0KGVsZW1lbnQs
IHR5cGUpOwogICAgICAgICAgICAgaWYgKCZlbGVtZW50ID09IG1hdGNoaW5nRWxlbWVudCkKICAg
ICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMzk0OTZiNjk4ODY2YzRhZWMzZjc3
ZDRlNjYwYmU2ZDUwNzk5ZDlkZS4uZjdkYTBiZGI1OGE4ZGUwYmYzNjRlYmYzNDk0NDNiMmRlYzgy
NDhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIkRvY3VtZW50TG9h
ZGVyLmgiCiAjaW1wb3J0ICJFZGl0b3IuaCIKICNpbXBvcnQgIkVkaXRvckNsaWVudC5oIgorI2lt
cG9ydCAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW1wb3J0ICJGaWxlLmgiCiAjaW1wb3J0ICJGcmFt
ZS5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXIuaCIKQEAgLTU4LDcgKzU5LDYgQEAKICNpbXBvcnQg
IlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIgogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNpbXBv
cnQgIlNvY2tldFByb3ZpZGVyLmgiCi0jaW1wb3J0ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3IuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZVJl
c291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZVJlc291
cmNlV2ViUmVzb3VyY2VIYW5kbGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXgg
MTU5NTAzNTFkOTA0NzRjN2M3ODhjMzNlNjdlN2RhODU4ODdmNmQ0Yy4uN2UyMmM1MjJhZGM4ZTIy
N2I2MzliY2VlNmRiNDZkMGEzOTI5M2Q1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApA
QCAtNzUsNyArNzUsNiBAQAogI2luY2x1ZGUgIlNvY2tldFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAi
U3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAi
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVj
dGlvbi5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxl
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaAppbmRl
eCA3OWY0NzdkNzRmMjI0ZTcxYjQ2YWJhNDc3ZjZjZGIwZGE4OWRmNDg1Li5jODkxYmUzZDdlZjk3
OWJkMTU4Nzg4ZTQyYzhjNDA4YWI1YmJhZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYWNo
ZWRIVE1MQ29sbGVjdGlvbi5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiQ29sbGVjdGlvblRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UcmF2ZXJzYWwuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oCmluZGV4IDY2ODI5MzM4
ZDBiMWQxYjBjYWI1MTE3N2YwMzg3MjBjMTkyZjcxOTYuLmYxMWU4ODFjYzM5ZDcxNGIwY2QzNDU2
M2Y4Yzg2OGEzZmU2MjYxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVj
dGlvblRyYXZlcnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRyYXZl
cnNhbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI2LDggKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29sbGVjdGlv
blR5cGUuaCIKLSNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgotI2luY2x1ZGUgIkVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNiwyNyArMzUsMjcgQEAgc3RydWN0IENvbGxl
Y3Rpb25UcmF2ZXJzYWwgeyB9OwogCiB0ZW1wbGF0ZSA8Pgogc3RydWN0IENvbGxlY3Rpb25UcmF2
ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPiB7Ci0gICAgdXNpbmcg
SXRlcmF0b3IgPSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOworICAgIHVzaW5nIEl0ZXJhdG9y
ID0gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50PjsKIAotICAgIHN0YXRpYyBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yIGVuZChDb250YWluZXJOb2RlJikgeyByZXR1cm4gRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcigpOyB9CisgICAgc3RhdGljIEl0ZXJhdG9yIGVuZChDb250YWlu
ZXJOb2RlJiByb290Tm9kZSkgeyByZXR1cm4geyByb290Tm9kZSB9OyB9CiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotICAgIHN0YXRpYyBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yIGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJv
b3ROb2RlKTsKKyAgICBzdGF0aWMgSXRlcmF0b3IgYmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNz
JiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENv
bGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBsYXN0
KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKKyAgICBz
dGF0aWMgSXRlcmF0b3IgbGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2Rl
JiByb290Tm9kZSk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgot
ICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWdu
ZWQmIHRyYXZlcnNlZENvdW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29u
c3QgQ29sbGVjdGlvbkNsYXNzJiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1
bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxl
Y3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxl
Y3Rpb25DbGFzcyYsIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVk
IGNvdW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rp
b25DbGFzcyYsIEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCk7CiB9OwogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVz
Y2VuZGFudHM+OjpiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRh
aW5lck5vZGUmIHJvb3ROb2RlKQoraW5saW5lIGF1dG8gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xs
ZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+OjpiZWdpbihjb25zdCBDb2xsZWN0aW9u
Q2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSAtPiBJdGVyYXRvcgog
ewotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBlbGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUpOwor
ICAgIGF1dG8gZGVzY2VuZGFudHMgPSBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihyb290Tm9k
ZSk7CiAgICAgYXV0byBlbmQgPSBkZXNjZW5kYW50cy5lbmQoKTsKICAgICBmb3IgKGF1dG8gaXQg
PSBkZXNjZW5kYW50cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKGNv
bGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkgewpAQCAtNjksMTEgKzY4LDEwIEBAIGlubGlu
ZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlv
blRyYXZlcnNhbFR5cGU6OkRlCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xh
c3M+Ci1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDb2xsZWN0aW9uVHJhdmVyc2Fs
PENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46Omxhc3QoY29uc3QgQ29sbGVj
dGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK2lubGluZSBh
dXRvIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRh
bnRzPjo6bGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5v
ZGUmIHJvb3ROb2RlKSAtPiBJdGVyYXRvcgogewotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBlbGVt
ZW50RGVzY2VuZGFudHMocm9vdE5vZGUpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Ig
aW52YWxpZDsKLSAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5sYXN0KCk7IGl0ICE9IGlu
dmFsaWQ7IC0taXQpIHsKKyAgICBJdGVyYXRvciBpbnZhbGlkIHsgcm9vdE5vZGUgfTsKKyAgICBm
b3IgKEl0ZXJhdG9yIGl0IHsgcm9vdE5vZGUsIEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RXaXRoaW4o
cm9vdE5vZGUpIH07IGl0ICE9IGludmFsaWQ7IC0taXQpIHsKICAgICAgICAgaWYgKGNvbGxlY3Rp
b24uZWxlbWVudE1hdGNoZXMoKml0KSkgewogICAgICAgICAgICAgLy8gRHJvcCBpdGVyYXRvciBh
c3NlcnRpb25zIGJlY2F1c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1n
cmFpbmVkIGludmFsaWRhdGlvbiBzY2hlbWUuCiAgICAgICAgICAgICBpdC5kcm9wQXNzZXJ0aW9u
cygpOwpAQCAtODQsMTAgKzgyLDEwIEBAIGlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlCiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci1pbmxpbmUgdm9pZCBDb2xsZWN0aW9u
VHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNl
Rm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2Vk
Q291bnQpCitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJz
YWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xh
c3MmIGNvbGxlY3Rpb24sIEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWdu
ZWQmIHRyYXZlcnNlZENvdW50KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRj
aGVzKCpjdXJyZW50KSk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBpbnZhbGlkOwor
ICAgIEl0ZXJhdG9yIGludmFsaWQgeyBjb2xsZWN0aW9uLnJvb3ROb2RlKCkgfTsKICAgICBmb3Ig
KHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2ZXJzZWRD
b3VudCkgewogICAgICAgICBkbyB7CiAgICAgICAgICAgICArK2N1cnJlbnQ7CkBAIC05OCwxMCAr
OTYsMTAgQEAgaW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVy
c2FsVHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUYKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVj
dGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VCYWNrd2FyZChjb25zdCBD
b2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1
cnJlbnQsIHVuc2lnbmVkIGNvdW50KQoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxD
b2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNv
bnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2ln
bmVkIGNvdW50KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJy
ZW50KSk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBpbnZhbGlkOworICAgIEl0ZXJh
dG9yIGludmFsaWQgeyBjb2xsZWN0aW9uLnJvb3ROb2RlKCkgfTsKICAgICBmb3IgKDsgY291bnQ7
IC0tY291bnQpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgLS1jdXJyZW50OwpAQCAtMTE1
LDIzICsxMTMsMjMgQEAgdGVtcGxhdGUgPD4KIHN0cnVjdCBDb2xsZWN0aW9uVHJhdmVyc2FsPENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+IHsKICAgICB1c2luZyBJdGVyYXRv
ciA9IEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+OwogCi0gICAgc3RhdGljIEVsZW1lbnRD
aGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGVuZChDb250YWluZXJOb2RlJiByb290Tm9kZSkgeyByZXR1
cm4gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4ocm9vdE5vZGUpOyB9CisgICAgc3RhdGlj
IEl0ZXJhdG9yIGVuZChDb250YWluZXJOb2RlJiByb290Tm9kZSkgeyByZXR1cm4gSXRlcmF0b3Io
cm9vdE5vZGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgot
ICAgIHN0YXRpYyBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBiZWdpbihjb25zdCBDb2xs
ZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CisgICAgc3RhdGljIEl0ZXJh
dG9yIGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2Rl
KTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGlj
IEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNz
JiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOworICAgIHN0YXRpYyBJdGVyYXRvciBsYXN0KGNv
bnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKIAogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIHZvaWQgdHJhdmVy
c2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVs
ZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50
KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNz
JiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2Vk
Q291bnQpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLSAgICBz
dGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCk7CisgICAg
c3RhdGljIHZvaWQgdHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBJdGVy
YXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpOwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBD
b2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+
OjpiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlKQoraW5saW5lIGF1dG8gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJh
dmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6YmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBj
b2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkgLT4gSXRlcmF0b3IKIHsKICAgICBh
dXRvIGNoaWxkcmVuID0gY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpOwogICAgIGF1
dG8gZW5kID0gY2hpbGRyZW4uZW5kKCk7CkBAIC0xNDYsMTEgKzE0NCwxMSBAQCBpbmxpbmUgRWxl
bWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9u
VHJhdmVyc2FsVHlwZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgot
aW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IENvbGxlY3Rpb25UcmF2ZXJzYWw8
Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46Omxhc3QoY29uc3QgQ29sbGVj
dGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK2lubGluZSBh
dXRvIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVu
T25seT46Omxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJO
b2RlJiByb290Tm9kZSkgLT4gSXRlcmF0b3IKIHsKICAgICBhdXRvIGNoaWxkcmVuID0gY2hpbGRy
ZW5PZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpOwotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVs
ZW1lbnQ+IGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKLSAgICBFbGVtZW50Q2hpbGRJ
dGVyYXRvcjxFbGVtZW50PiBsYXN0KHJvb3ROb2RlLCBjaGlsZHJlbi5sYXN0KCkpOworICAgIEl0
ZXJhdG9yIGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKKyAgICBJdGVyYXRvciBsYXN0
KHJvb3ROb2RlLCBjaGlsZHJlbi5sYXN0KCkpOwogICAgIGZvciAoYXV0byBpdCA9IGxhc3Q7IGl0
ICE9IGludmFsaWQ7IC0taXQpIHsKICAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNo
ZXMoKml0KSkgewogICAgICAgICAgICAgLy8gRHJvcCBpdGVyYXRvciBhc3NlcnRpb25zIGJlY2F1
c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1ncmFpbmVkIGludmFsaWRh
dGlvbiBzY2hlbWUuCkBAIC0xNjIsMTAgKzE2MCwxMCBAQCBpbmxpbmUgRWxlbWVudENoaWxkSXRl
cmF0b3I8RWxlbWVudD4gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5lIHZvaWQg
Q29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5
Pjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgRWxl
bWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNp
Z25lZCYgdHJhdmVyc2VkQ291bnQpCitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2ZXJzZUZvcndhcmQoY29u
c3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBJdGVyYXRvciYgY3VycmVudCwgdW5zaWdu
ZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkKIHsKICAgICBBU1NFUlQoY29sbGVj
dGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9y
PEVsZW1lbnQ+IGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKKyAgICBJdGVyYXRvciBp
bnZhbGlkKGNvbGxlY3Rpb24ucm9vdE5vZGUoKSk7CiAgICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9
IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKICAgICAgICAg
ZG8gewogICAgICAgICAgICAgKytjdXJyZW50OwpAQCAtMTc2LDEwICsxNzQsMTAgQEAgaW5saW5l
IHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRy
ZW5Pbmx5Pjo6dHJhdmVyc2UKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFz
cz4KLWlubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5
cGU6OkNoaWxkcmVuT25seT46OnRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNz
JiBjb2xsZWN0aW9uLCBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiYgY3VycmVudCwgdW5z
aWduZWQgY291bnQpCitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25U
cmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxl
Y3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50
KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7Ci0g
ICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gaW52YWxpZChjb2xsZWN0aW9uLnJvb3RO
b2RlKCkpOworICAgIEl0ZXJhdG9yIGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKICAg
ICBmb3IgKDsgY291bnQ7IC0tY291bnQpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgLS1j
dXJyZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCBiOTQ5YTY5
MWY2MGZkYzk5YzJkN2Y2N2ZkZjhiNzc1Mzg1OGUzOTI4Li43ZmYzMmU1OTk3ZTcwNmQ1NzliOTli
MGMzZjI3ZmQ1ZWZiYmQyMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9y
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNw
cApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAj
aW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJFbGVtZW50
Q2hpbGRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiSFRNTERhdGFM
aXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCkBAIC0yODcsMTMgKzI4
Niw5IEBAIFZlY3RvcjxDb2xvcj4gQ29sb3JJbnB1dFR5cGU6OnN1Z2dlc3RlZENvbG9ycygpIGNv
bnN0CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7
CiAgICAgaWYgKGF1dG8gZGF0YUxpc3QgPSBlbGVtZW50KCktPmRhdGFMaXN0KCkpIHsKLSAgICAg
ICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBvcHRpb25zID0gZGF0YUxpc3QtPm9wdGlvbnMoKTsKLSAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoID0gb3B0aW9ucy0+bGVuZ3RoKCk7Ci0gICAgICAgIHN1Z2dl
c3Rpb25zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSAhPSBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9
IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50Pigqb3B0aW9ucy0+aXRlbShpKSkudmFsdWUoKTsK
LSAgICAgICAgICAgIGlmIChpc1ZhbGlkU2ltcGxlQ29sb3IodmFsdWUpKQotICAgICAgICAgICAg
ICAgIHN1Z2dlc3Rpb25zLnVuY2hlY2tlZEFwcGVuZChDb2xvcih2YWx1ZSkpOworICAgICAgICBm
b3IgKGF1dG8mIG9wdGlvbiA6IGRhdGFMaXN0LT5zdWdnZXN0aW9ucygpKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byBjb2xvciA9IHBhcnNlU2ltcGxlQ29sb3JWYWx1ZShvcHRpb24udmFsdWUoKSkp
CisgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMudW5jaGVja2VkQXBwZW5kKCpjb2xvcik7CiAg
ICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2Vu
ZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcAppbmRleCAzODM4ZjFiZDdlNGU2N2Y1NTcwNWUx
MDBiM2Q2OTczZDAzODkzZTUwLi45Y2IzYTY3MDIzNzJjZDRiZDJiZmQ5ZWUzYmE4OWZiY2E3Yzhm
ZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29s
bGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENv
bGxlY3Rpb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRNTENv
bGxlY3Rpb24uaCIKIAogI2luY2x1ZGUgIkhUTUxBcHBsZXRFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTERhdGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgpA
QCAtNjQsMTIgKzY1LDcgQEAgYm9vbCBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248dHJhdmVy
c2FsVHlwZT46OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIGVsZW1lbnQKICAgICBjYXNlIFNlbGVj
dGVkT3B0aW9uczoKICAgICAgICAgcmV0dXJuIGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50
KSAmJiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkuc2VsZWN0ZWQoKTsKICAg
ICBjYXNlIERhdGFMaXN0T3B0aW9uczoKLSAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50
PihlbGVtZW50KSkgewotICAgICAgICAgICAgSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbiA9IGRv
d25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KTsKLSAgICAgICAgICAgIGlmICghb3B0
aW9uLmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmICFvcHRpb24udmFsdWUoKS5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpOwog
ICAgIGNhc2UgTWFwQXJlYXM6CiAgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoYXJl
YVRhZyk7CiAgICAgY2FzZSBEb2NBcHBsZXRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxD
b2xsZWN0aW9uLmlkbAppbmRleCA4ZmNiNjhjNjgwMDA4MzcyM2E1ODU4ZjBjZTZkYmFhYjQ3NTM5
YzNjLi5lNWIxMTkyZTQ5Mjg4NzEzZjMzMjFiY2EwYTdjMjhhNjc4MWFhYTk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmlkbApAQCAtMzEsNiArMzEsNiBAQAogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKIAogICAgIGdldHRlciBF
bGVtZW50PyAodW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW0ltcGxlbWVudGVkQXM9bmFtZWRJ
dGVtT3JJdGVtc10gZ2V0dGVyIChIVE1MQ29sbGVjdGlvbiBvciBFbGVtZW50KT8gbmFtZWRJdGVt
KERPTVN0cmluZyBuYW1lKTsKLSAgICBbSW1wbGVtZW50ZWRBcz1uYW1lZE9ySW5kZXhlZEl0ZW1P
ckl0ZW1zXSBsZWdhY3ljYWxsZXIgKEhUTUxDb2xsZWN0aW9uIG9yIEVsZW1lbnQpPyBpdGVtKG9w
dGlvbmFsIERPTVN0cmluZyBuYW1lT3JJbmRleCk7CisgICAgW0ltcGxlbWVudGVkQXM9bmFtZWRJ
dGVtT3JJdGVtc10gZ2V0dGVyIChIVE1MQ29sbGVjdGlvbiBvciBFbGVtZW50KT8gbmFtZWRJdGVt
KFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gRE9NU3RyaW5nIG5hbWUpOworICAgIFtJbXBs
ZW1lbnRlZEFzPW5hbWVkT3JJbmRleGVkSXRlbU9ySXRlbXNdIGxlZ2FjeWNhbGxlciAoSFRNTENv
bGxlY3Rpb24gb3IgRWxlbWVudCk/IGl0ZW0ob3B0aW9uYWwgW0F0b21TdHJpbmddIERPTVN0cmlu
ZyBuYW1lT3JJbmRleCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q29sbGVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmlkbApp
bmRleCA2ZGZhZThiZDg5NGFjZGMyZDI2MDU1NjYyNmI0YzczYmRiMWM5YTViLi5jNDUyZDg5ZWM5
YmIwZTA3ZWIzZTQyMzEyM2JmMzIxNzIwOTU2NDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDb2xsZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
b2xsZWN0aW9uLmlkbApAQCAtMjcsNSArMjcsNSBAQAogXSBpbnRlcmZhY2UgSFRNTENvbGxlY3Rp
b24gewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBn
ZXR0ZXIgRWxlbWVudD8gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBnZXR0ZXIgRWxl
bWVudD8gbmFtZWRJdGVtKERPTVN0cmluZyBuYW1lKTsKKyAgICBnZXR0ZXIgRWxlbWVudD8gbmFt
ZWRJdGVtKFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gRE9NU3RyaW5nIG5hbWUpOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwCmluZGV4IGJlYzg3
YjM2ZDM4MTQwZTJjMmNlYzEyZDRhMGJkYmYzODU0ODhhMTkuLjgyNmMyYzU0OTM1MmU1NTdhNWJi
ODk1NGY3NmE2MWYwNTJmOTc1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERhdGFMaXN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxp
c3RFbGVtZW50LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCkBAIC0zNyw2ICszNyw3IEBACiAKICNpbmNsdWRlICJHZW5lcmljQ2FjaGVk
SFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1M
T3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CkBAIC02NSw2ICs2NiwxMSBAQCB2b2lkIEhUTUxEYXRhTGlzdEVsZW1lbnQ6Om9wdGlvbkVs
ZW1lbnRDaGlsZHJlbkNoYW5nZWQoKQogICAgIHRyZWVTY29wZSgpLmlkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeSgpLm5vdGlmeU9ic2VydmVycyhnZXRJZEF0dHJpYnV0ZSgpKTsKIH0KIAorYm9vbCBI
VE1MRGF0YUxpc3RFbGVtZW50Ojppc1N1Z2dlc3Rpb24oY29uc3QgSFRNTE9wdGlvbkVsZW1lbnQm
IGRlc2NlbmRhbnQpCit7CisgICAgcmV0dXJuICFkZXNjZW5kYW50LmlzRGlzYWJsZWRGb3JtQ29u
dHJvbCgpICYmICFkZXNjZW5kYW50LnZhbHVlKCkuaXNFbXB0eSgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmgKaW5kZXggOGY3MWZhNWM5MTFjOWI1
MGIyYjgxMGQ4NTdmN2FjM2NmMmNjZWMwMS4uN2NmNTcxZTI5YTY3MGNkZjBjZDZkZTU1Mzc1M2I3
ZWE5NTJkODY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmgK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTMzLDExICszMywxMyBAQAogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAKLSNp
bmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
SFRNTENvbGxlY3Rpb247CisKIGNsYXNzIEhUTUxEYXRhTGlzdEVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgSFRNTEVsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTERhdGFMaXN0
RWxlbWVudCk7CiBwdWJsaWM6CkBAIC00Nyw2ICs0OSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
b3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOwogCisgICAgc3RhdGljIGJvb2wgaXNTdWdn
ZXN0aW9uKGNvbnN0IEhUTUxPcHRpb25FbGVtZW50JiBkZXNjZW5kYW50KTsKKyAgICBhdXRvIHN1
Z2dlc3Rpb25zKCkgY29uc3QgeyByZXR1cm4gZGVzY2VuZGFudHNPZlR5cGU8SFRNTE9wdGlvbkVs
ZW1lbnQsIGlzU3VnZ2VzdGlvbj4oKnRoaXMpOyB9CisKIHByaXZhdGU6CiAgICAgSFRNTERhdGFM
aXN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDY4Y2Y1NTNhYjQ5MGFlNGRmMDdjN2RmYjYyYjdk
ZGQwNjY5MDYwZWEuLjMyZWQ0YWQzMWJkMzBlY2Y0Y2NjNDhmYjE0MjQ0YTMyMzI0ZTA0YjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAg
IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0
IChDKSAyMDA0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuICho
dHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90b3Jv
bGEgTW9iaWxpdHkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDQsNyArNDQsNiBAQAog
I2luY2x1ZGUgIkhUTUxCRElFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJSRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxCdXR0b25FbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24u
aCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudEZhY3Rv
cnkuaCIKICNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCkBAIC02MCw2ICs1OSw3IEBA
CiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIK
ICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dl
ZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlNpbXVsYXRlZENs
aWNrLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCkBAIC03NjcsMTQgKzc2NywxNiBA
QCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIEhUTUxFbGVtZW50Ojphc0Zvcm1Bc3NvY2lhdGVkRWxl
bWVudCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBlbGVt
ZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5KGNvbnN0IE5vZGUmIG5vZGUpCitzdGF0aWMgYm9vbCBl
bGVtZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KQog
ewotICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KG5vZGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4o
bm9kZSk7CiAgICAgcmV0dXJuIGlzPEhUTUxCRElFbGVtZW50PihlbGVtZW50KSB8fCBlbGVtZW50
Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGlyQXR0cik7CiB9CiAKK3N0YXRp
YyBib29sIGVsZW1lbnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkoY29uc3QgTm9kZSYgbm9kZSkKK3sK
KyAgICByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGVsZW1lbnRBZmZlY3RzRGlyZWN0
aW9uYWxpdHkoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG5vZGUpKTsKK30KKwogc3RhdGljIHZvaWQg
c2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVseShOb2RlKiBmaXJzdE5vZGUsIGJvb2wgZmxhZywg
Tm9kZSogbGFzdE5vZGUgPSBudWxscHRyKQogewogICAgIGZpcnN0Tm9kZS0+c2V0U2VsZk9yQW5j
ZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKGZsYWcpOwpAQCAtODg1LDEwICs4ODcsMTAgQEAgdm9p
ZCBIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hpbGRBdHRy
aWJ1dGVDaGFuZ2VkKEVsZW1lbnQKICAgICBzZXRIYXNEaXJBdXRvRmxhZ1JlY3Vyc2l2ZWx5KGNo
aWxkLCBmYWxzZSk7CiAgICAgaWYgKCFyZW5kZXJlcigpIHx8IHJlbmRlcmVyKCktPnN0eWxlKCku
ZGlyZWN0aW9uKCkgPT0gdGV4dERpcmVjdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIGZvciAo
YXV0byYgZWxlbWVudFRvQWRqdXN0IDogZWxlbWVudExpbmVhZ2UodGhpcykpIHsKLSAgICAgICAg
aWYgKGVsZW1lbnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkoZWxlbWVudFRvQWRqdXN0KSkgewotICAg
ICAgICAgICAgZWxlbWVudFRvQWRqdXN0LmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBl
PEhUTUxFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKGVsZW1lbnRBZmZlY3RzRGlyZWN0
aW9uYWxpdHkoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGVsZW1lbnQuaW52YWxpZGF0ZVN0eWxl
Rm9yU3VidHJlZSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggMzk1ZGIxZTYyZWVkZDFkOTAwZTllN2MzZWM4
ODhjYjAwY2IyYTRhMy4uN2UwNzRlYjYxMjg5NzYyODkwZTExZTgxYWZjZDZhMDkzZTdmZGQ4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtMjIsMTkgKzIyLDE3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiSW5wdXRNb2RlLmgiCisjaW5jbHVkZSAiU3R5bGVkRWxlbWVu
dC5oIgorCiAjaWYgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKQogI2luY2x1ZGUgIkF1dG9jYXBpdGFs
aXplLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgIklucHV0TW9kZS5oIgotI2luY2x1ZGUgIlN0eWxl
ZEVsZW1lbnQuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEb2N1bWVudEZyYWdt
ZW50OwogY2xhc3MgRm9ybUFzc29jaWF0ZWRFbGVtZW50OwogY2xhc3MgRm9ybU5hbWVkSXRlbTsK
LWNsYXNzIEhUTUxDb2xsZWN0aW9uOwogY2xhc3MgSFRNTEZvcm1FbGVtZW50OwogCiBlbnVtIGNs
YXNzIEVudGVyS2V5SGludCA6IHVpbnQ4X3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmNwcAppbmRleCA5MTcwMWUxNDQ0ZWYyODYwODVmNzIxMjQwYmVmMGFiNmMyNzYxNjEy
Li4yMWNiOWQ5M2M5YTM0MGEzZmIzY2IxNjYyMDBjZDY4MTA0MGU1YTcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmln
aHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MjAwMCBTdGVmYW4gU2NoaW1hbnNraSAoMVN0ZWluQGdteC5kZSkKLSAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNjYsMTUgKzY2LDEwIEBA
IFJlZjxIVE1MRW1iZWRFbGVtZW50PiBIVE1MRW1iZWRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQm
IGRvY3VtZW50KQogCiBzdGF0aWMgaW5saW5lIFJlbmRlcldpZGdldCogZmluZFdpZGdldFJlbmRl
cmVyKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKSB7Ci0g
ICAgICAgIGRvIHsKLSAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7Ci0gICAg
ICAgIH0gd2hpbGUgKG5vZGUgJiYgIWlzPEhUTUxPYmplY3RFbGVtZW50Pigqbm9kZSkpOwotICAg
IH0KLQorICAgIGlmICghbm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgbm9kZSA9IGFuY2VzdG9y
c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oKm5vZGUpLmZpcnN0KCk7CiAgICAgaWYgKG5vZGUg
JiYgaXM8UmVuZGVyV2lkZ2V0Pihub2RlLT5yZW5kZXJlcigpKSkKICAgICAgICAgcmV0dXJuIGRv
d25jYXN0PFJlbmRlcldpZGdldD4obm9kZS0+cmVuZGVyZXIoKSk7Ci0KICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5jcHAKaW5kZXggZDYxMWJjMWIyMjUxZmY4ZjA4ODQ0ZjY4ZDQyNGZiOWRjOTY2ODJmNC4uZmQ3
N2Q3YmEwNDNlOWE3Y2Q3MmZmOTZlODU2OGZiOWVjOTgzZjdjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0yLDcgKzIsNyBAQAogICog
Q29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAg
ICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAg
ICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAg
ICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1MRGF0YUxp
c3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKQEAgLTQx
MiwxNCArNDEzLDEyIEBAIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6bWF0Y2hlc0ludmFs
aWRQc2V1ZG9DbGFzcygpIGNvbnN0CiBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbXB1
dGVXaWxsVmFsaWRhdGUoKSBjb25zdAogewogICAgIGlmIChtX2RhdGFMaXN0QW5jZXN0b3JTdGF0
ZSA9PSBVbmtub3duKSB7Ci0gICAgICAgIGZvciAoQ29udGFpbmVyTm9kZSogYW5jZXN0b3IgPSBw
YXJlbnROb2RlKCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnROb2RlKCkp
IHsKLSAgICAgICAgICAgIGlmIChhbmNlc3Rvci0+aGFzVGFnTmFtZShkYXRhbGlzdFRhZykpIHsK
LSAgICAgICAgICAgICAgICBtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9IEluc2lkZURhdGFMaXN0
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIGlmIChtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9PSBVbmtub3duKQotICAgICAgICAgICAg
bV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUgPSBOb3RJbnNpZGVEYXRhTGlzdDsKKyNpZiBFTkFCTEUo
REFUQUxJU1RfRUxFTUVOVCkKKyAgICAgICAgbV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUgPSBhbmNl
c3RvcnNPZlR5cGU8SFRNTERhdGFMaXN0RWxlbWVudD4oKnRoaXMpLmZpcnN0KCkKKyAgICAgICAg
ICAgID8gSW5zaWRlRGF0YUxpc3QgOiBOb3RJbnNpZGVEYXRhTGlzdDsKKyNlbHNlCisgICAgICAg
IG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlID0gTm90SW5zaWRlRGF0YUxpc3Q7CisjZW5kaWYKICAg
ICB9CiAgICAgcmV0dXJuIG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlID09IE5vdEluc2lkZURhdGFM
aXN0ICYmICFpc0Rpc2FibGVkT3JSZWFkT25seSgpOwogfQpAQCAtNjQ1LDE1ICs2NDQsNiBAQCBB
dXRvY2FwaXRhbGl6ZVR5cGUgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXV0b2NhcGl0YWxpemVU
eXBlKCkgY29uc3QKIAogI2VuZGlmCiAKLUhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OmVuY2xvc2luZ0Zvcm1Db250cm9sRWxlbWVudChOb2RlKiBub2RlKQot
ewotICAgIGZvciAoOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAg
IGlmIChpczxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Pigqbm9kZSkpCi0gICAgICAgICAgICByZXR1
cm4gZG93bmNhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudD4obm9kZSk7Ci0gICAgfQotICAgIHJl
dHVybiBudWxscHRyOwotfQotCiBTdHJpbmcgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXV0b2Nv
bXBsZXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gYXV0b2ZpbGxEYXRhKCkuaWRsRXhwb3NlZFZh
bHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRl
eCA2MTM0MGJmYTczYTNhOTY2YmE2MzdhZDQ0ZjU2Y2JkOGZjZmM5NmYwLi4zYWRiMzExYzdhNjFk
NzhkODBiOTkwYTE1NjllNjgxZDBmNjUzMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMTE2LDggKzExNiw2IEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc0F1dG9mb2N1c2VkKCkgeyByZXR1cm4gbV9oYXNBdXRvZm9jdXNlZDsgfQogICAgIHZv
aWQgc2V0QXV0b2ZvY3VzZWQoKSB7IG1faGFzQXV0b2ZvY3VzZWQgPSB0cnVlOyB9CiAKLSAgICBz
dGF0aWMgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZW5jbG9zaW5nRm9ybUNvbnRyb2xFbGVtZW50
KE5vZGUqKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdXRvY29tcGxldGUoKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1dG9jb21wbGV0ZShjb25zdCBTdHJpbmcm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmlkbAppbmRleCA0M2M4MzU5OThiNDAwNTllMzMyN2NlNmQ1OWUwZjgyZTZmZGQxODIzLi40
ZDgxZmZkMDM0NTc0NzdjYmEyNGQyZDMzZGJiOTMxYjQ4YjM1ZWU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbApAQCAtMjIsNSAr
MjIsNSBAQAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbE93bmVyTm9kZVJvb3QsCiBdIGlu
dGVyZmFjZSBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiA6IEhUTUxDb2xsZWN0aW9uIHsKICAg
ICBnZXR0ZXIgSFRNTEVsZW1lbnQ/ICh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbSW1wbGVt
ZW50ZWRBcz1uYW1lZEl0ZW1Pckl0ZW1zXSBnZXR0ZXIgKFJhZGlvTm9kZUxpc3Qgb3IgRWxlbWVu
dCk/IG5hbWVkSXRlbShET01TdHJpbmcgbmFtZSk7IC8vIHNoYWRvd3MgaW5oZXJpdGVkIG5hbWVk
SXRlbSgpCisgICAgW0ltcGxlbWVudGVkQXM9bmFtZWRJdGVtT3JJdGVtc10gZ2V0dGVyIChSYWRp
b05vZGVMaXN0IG9yIEVsZW1lbnQpPyBuYW1lZEl0ZW0oW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3Ry
aW5nXSBET01TdHJpbmcgbmFtZSk7IC8vIHNoYWRvd3MgaW5oZXJpdGVkIG5hbWVkSXRlbSgpCiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKaW5kZXggODNh
YzY4MGQ5MDQ4NzU3MTUwYjViNmViMzZiNjRkNzg4ZjBlYmM3MC4uZTZhZTZmNjhkODc5ODVhZjlm
ZjU0ZWI1ZDY3NTMzYTViNWFiMWYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZVNldEVsZW1lbnQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkhUTUxCb2R5RWxl
bWVudC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1l
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkxlbmd0aC5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggZGZlMTkwYTU5ZGRk
MWU2YWQxNTMwYzVmMjE5NGIwODU3YWM3YjVlNi4uYjNkZThhN2Q4YTRkNjBiYWEzMDY0ZDhjZDk4
YTQ3ZWFlNmRmMDY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xs
QGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3Rv
QGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtk
ZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAo
YXBAbnlwb3AuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBXZWluaWcgKHNhbUB3
ZWJraXQub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCkBAIC0yMTA0LDYgKzIxMDQsNyBAQCBSZW5kZXJTdHlsZSBIVE1MSW5wdXRFbGVt
ZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB9CiAK
ICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKKwogYm9vbCBIVE1MSW5wdXRF
bGVtZW50OjpzZXR1cERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMoRGF0ZVRpbWVDaG9vc2VyUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBpZiAoIWRvY3VtZW50KCkudmlldygpKQpAQCAt
MjEzNiwyMCArMjEzNywyNCBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnNldHVwRGF0ZVRpbWVD
aG9vc2VyUGFyYW1ldGVycyhEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzJgogICAgICAgICBwYXJh
bWV0ZXJzLmFuY2hvclJlY3RJblJvb3RWaWV3ID0gSW50UmVjdCgpOwogICAgIHBhcmFtZXRlcnMu
Y3VycmVudFZhbHVlID0gdmFsdWUoKTsKICAgICBwYXJhbWV0ZXJzLmlzQW5jaG9yRWxlbWVudFJU
TCA9IGNvbXB1dGVkU3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMOwor
CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgaWYgKGF1dG8gZGF0YUxpc3QgPSB0
aGlzLT5kYXRhTGlzdCgpKSB7Ci0gICAgICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gb3B0aW9ucyA9
IGRhdGFMaXN0LT5vcHRpb25zKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IFJlZlB0
cjxIVE1MT3B0aW9uRWxlbWVudD4gb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+
KG9wdGlvbnMtPml0ZW0oaSkpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghaXNWYWxpZFZhbHVl
KG9wdGlvbi0+dmFsdWUoKSkpCisgICAgICAgIGZvciAoYXV0byYgb3B0aW9uIDogZGF0YUxpc3Qt
PnN1Z2dlc3Rpb25zKCkpIHsKKyAgICAgICAgICAgIGF1dG8gbGFiZWwgPSBvcHRpb24ubGFiZWwo
KTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBvcHRpb24udmFsdWUoKTsKKyAgICAgICAgICAg
IGlmICghaXNWYWxpZFZhbHVlKHZhbHVlKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIHBhcmFtZXRlcnMuc3VnZ2VzdGlvblZhbHVlcy5hcHBlbmQoc2FuaXRpemVWYWx1
ZShvcHRpb24tPnZhbHVlKCkpKTsKLSAgICAgICAgICAgIHBhcmFtZXRlcnMubG9jYWxpemVkU3Vn
Z2VzdGlvblZhbHVlcy5hcHBlbmQobG9jYWxpemVWYWx1ZShvcHRpb24tPnZhbHVlKCkpKTsKLSAg
ICAgICAgICAgIHBhcmFtZXRlcnMuc3VnZ2VzdGlvbkxhYmVscy5hcHBlbmQob3B0aW9uLT52YWx1
ZSgpID09IG9wdGlvbi0+bGFiZWwoKSA/IFN0cmluZygpIDogb3B0aW9uLT5sYWJlbCgpKTsKKyAg
ICAgICAgICAgIHBhcmFtZXRlcnMuc3VnZ2VzdGlvblZhbHVlcy5hcHBlbmQoc2FuaXRpemVWYWx1
ZSh2YWx1ZSkpOworICAgICAgICAgICAgcGFyYW1ldGVycy5sb2NhbGl6ZWRTdWdnZXN0aW9uVmFs
dWVzLmFwcGVuZChsb2NhbGl6ZVZhbHVlKHZhbHVlKSk7CisgICAgICAgICAgICBwYXJhbWV0ZXJz
LnN1Z2dlc3Rpb25MYWJlbHMuYXBwZW5kKHZhbHVlID09IGxhYmVsID8gU3RyaW5nKCkgOiBsYWJl
bCk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKKwogICAgIHJldHVybiB0cnVlOwogfQorCiAj
ZW5kaWYKIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5n
ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKaW5kZXgg
OWU4Y2ZmZGI5MWE1MTA5MDQyODQ1OWVmZmU4NjVhNDhlMDdmNDgwOC4uNjc2OGZlMTJhMWU1ZTcy
MjBjNTM2OTBmZTZmOTczNTdjYWU3Y2RiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRHcm91cEVsZW1lbnQuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkg
S29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBN
dWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxl
eGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTEwOSwxNCAr
MTA5LDcgQEAgU3RyaW5nIEhUTUxPcHRHcm91cEVsZW1lbnQ6Omdyb3VwTGFiZWxUZXh0KCkgY29u
c3QKICAgICAKIEhUTUxTZWxlY3RFbGVtZW50KiBIVE1MT3B0R3JvdXBFbGVtZW50Ojpvd25lclNl
bGVjdEVsZW1lbnQoKSBjb25zdAogewotICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBzZWxlY3Qg
PSBwYXJlbnROb2RlKCk7Ci0gICAgd2hpbGUgKHNlbGVjdCAmJiAhaXM8SFRNTFNlbGVjdEVsZW1l
bnQ+KCpzZWxlY3QpKQotICAgICAgICBzZWxlY3QgPSBzZWxlY3QtPnBhcmVudE5vZGUoKTsKLSAg
ICAKLSAgICBpZiAoIXNlbGVjdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAg
cmV0dXJuIGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50PihzZWxlY3QuZ2V0KCkpOworICAgIHJl
dHVybiBjb25zdF9jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4oYW5jZXN0b3JzT2ZUeXBlPEhUTUxT
ZWxlY3RFbGVtZW50PigqdGhpcykuZmlyc3QoKSk7CiB9CiAKIHZvaWQgSFRNTE9wdEdyb3VwRWxl
bWVudDo6YWNjZXNzS2V5QWN0aW9uKGJvb2wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuY3BwCmluZGV4IGMzZGQzMGQ1ZGM2MmJmODMxNzA5ZTU3MDA0Njg4ZDRhODhiM2Uy
YTYuLjNjMDFlNjk1YWQxMDI2NzdhYWZmMDJkYjBmMjExZGI4OGY2OTI4NDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCkBAIC0zLDcgKzMsNyBAQAogICogICAg
ICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAg
ICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQogICogICAgICAg
ICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKLSAqIENvcHly
aWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKQEAgLTE2Niw4ICsxNjYsOCBAQCB2b2lkIEhUTUxPcHRpb25FbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaQog
ewogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIGlmIChuYW1lID09IHZhbHVlQXR0
cikgewotICAgICAgICBpZiAoUmVmUHRyPEhUTUxEYXRhTGlzdEVsZW1lbnQ+IGRhdGFMaXN0ID0g
b3duZXJEYXRhTGlzdEVsZW1lbnQoKSkKLSAgICAgICAgICAgIGRhdGFMaXN0LT5vcHRpb25FbGVt
ZW50Q2hpbGRyZW5DaGFuZ2VkKCk7CisgICAgICAgIGZvciAoYXV0byYgZGF0YUxpc3QgOiBhbmNl
c3RvcnNPZlR5cGU8SFRNTERhdGFMaXN0RWxlbWVudD4oKnRoaXMpKQorICAgICAgICAgICAgZGF0
YUxpc3Qub3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOwogICAgIH0gZWxzZQogI2VuZGlm
CiAgICAgaWYgKG5hbWUgPT0gZGlzYWJsZWRBdHRyKSB7CkBAIC0yMzgsMzkgKzIzOCwxNyBAQCB2
b2lkIEhUTUxPcHRpb25FbGVtZW50OjpzZXRTZWxlY3RlZFN0YXRlKGJvb2wgc2VsZWN0ZWQpCiB2
b2lkIEhUTUxPcHRpb25FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2Um
IGNoYW5nZSkKIHsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICBpZiAoUmVmUHRy
PEhUTUxEYXRhTGlzdEVsZW1lbnQ+IGRhdGFMaXN0ID0gb3duZXJEYXRhTGlzdEVsZW1lbnQoKSkK
LSAgICAgICAgZGF0YUxpc3QtPm9wdGlvbkVsZW1lbnRDaGlsZHJlbkNoYW5nZWQoKTsKLSAgICBl
bHNlCisgICAgZm9yIChhdXRvJiBkYXRhTGlzdCA6IGFuY2VzdG9yc09mVHlwZTxIVE1MRGF0YUxp
c3RFbGVtZW50PigqdGhpcykpCisgICAgICAgIGRhdGFMaXN0Lm9wdGlvbkVsZW1lbnRDaGlsZHJl
bkNoYW5nZWQoKTsKICNlbmRpZgogICAgIGlmIChSZWZQdHI8SFRNTFNlbGVjdEVsZW1lbnQ+IHNl
bGVjdCA9IG93bmVyU2VsZWN0RWxlbWVudCgpKQogICAgICAgICBzZWxlY3QtPm9wdGlvbkVsZW1l
bnRDaGlsZHJlbkNoYW5nZWQoKTsKICAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNo
YW5nZSk7CiB9CiAKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLUhUTUxEYXRhTGlzdEVs
ZW1lbnQqIEhUTUxPcHRpb25FbGVtZW50Ojpvd25lckRhdGFMaXN0RWxlbWVudCgpIGNvbnN0Ci17
Ci0gICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IGRhdGFsaXN0ID0gcGFyZW50Tm9kZSgpOwotICAg
IHdoaWxlIChkYXRhbGlzdCAmJiAhaXM8SFRNTERhdGFMaXN0RWxlbWVudD4oKmRhdGFsaXN0KSkK
LSAgICAgICAgZGF0YWxpc3QgPSBkYXRhbGlzdC0+cGFyZW50Tm9kZSgpOwotCi0gICAgaWYgKCFk
YXRhbGlzdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZG93bmNhc3Q8
SFRNTERhdGFMaXN0RWxlbWVudD4oZGF0YWxpc3QuZ2V0KCkpOwotfQotI2VuZGlmCi0KIEhUTUxT
ZWxlY3RFbGVtZW50KiBIVE1MT3B0aW9uRWxlbWVudDo6b3duZXJTZWxlY3RFbGVtZW50KCkgY29u
c3QKIHsKLSAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gc2VsZWN0ID0gcGFyZW50Tm9kZSgpOwot
ICAgIHdoaWxlIChzZWxlY3QgJiYgIWlzPEhUTUxTZWxlY3RFbGVtZW50Pigqc2VsZWN0KSkKLSAg
ICAgICAgc2VsZWN0ID0gc2VsZWN0LT5wYXJlbnROb2RlKCk7Ci0KLSAgICBpZiAoIXNlbGVjdCkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFNlbGVj
dEVsZW1lbnQ+KHNlbGVjdC5nZXQoKSk7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SFRNTFNlbGVj
dEVsZW1lbnQqPihhbmNlc3RvcnNPZlR5cGU8SFRNTFNlbGVjdEVsZW1lbnQ+KCp0aGlzKS5maXJz
dCgpKTsKIH0KIAogU3RyaW5nIEhUTUxPcHRpb25FbGVtZW50OjpsYWJlbCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKaW5kZXggZjBkOTRjOGE2YjVmMzA4MzM0
ZWFhMTFkYTllNDAyMWI1YzBlNTdlNi4uOTFjNWFiYzdlMDE3YzExZmExMzJmZDMxZjAxYmUxZTMy
NGUyNmIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaApAQCAtMiw3
ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3Jn
KQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3Jn
KQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQot
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDEwLCAyMDExLCAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI4LDcgKzI4LDYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MRGF0YUxpc3RFbGVtZW50Owog
Y2xhc3MgSFRNTFNlbGVjdEVsZW1lbnQ7CiAKIGNsYXNzIEhUTUxPcHRpb25FbGVtZW50IGZpbmFs
IDogcHVibGljIEhUTUxFbGVtZW50IHsKQEAgLTQ5LDkgKzQ4LDYgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgc2VsZWN0ZWQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFNlbGVjdGVkKGJvb2wpOwogCi0jaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAgV0VC
Q09SRV9FWFBPUlQgSFRNTERhdGFMaXN0RWxlbWVudCogb3duZXJEYXRhTGlzdEVsZW1lbnQoKSBj
b25zdDsKLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIEhUTUxTZWxlY3RFbGVtZW50KiBvd25l
clNlbGVjdEVsZW1lbnQoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYWJl
bCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24u
aWRsCmluZGV4IDZlOWZhNGQwZTE2MTYwZGEyYjdjYWI4MGQwMmE5N2FiZDgwNjNiMDUuLmYxYzQ3
N2U0ODY4ZTBmZTQwNTlmZGZjNjA1MWJlYzNhMWYyYzVjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGwKQEAgLTMyLDUgKzMyLDUgQEAKIAogICAg
IC8vIEZJWE1FOiBDYW4gdGhlc2UganVzdCBiZSBpbmhlcml0ZWQgZnJvbSBIVE1MQ29sbGVjdGlv
biBsaWtlIGluIHRoZSBzcGVjPwogICAgIGdldHRlciBIVE1MT3B0aW9uRWxlbWVudD8gaXRlbSh1
bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBnZXR0ZXIgSFRNTE9wdGlvbkVsZW1lbnQ/IG5hbWVk
SXRlbShET01TdHJpbmcgbmFtZSk7CisgICAgZ2V0dGVyIEhUTUxPcHRpb25FbGVtZW50PyBuYW1l
ZEl0ZW0oW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBET01TdHJpbmcgbmFtZSk7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXgg
NTYyMzFhNTBiMmE0NjBlNGFkMGI4N2YwZDhiNGE4MDk1NjQ0NmNhMi4uMGZhM2M2OWQ0ZTkyNmI3
MjliZTdlNWY2MzAyYmIwMjE0NzY0OWIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiQ2hy
b21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKICNpbmNsdWRlICJDb250ZW50U2Vj
dXJpdHlQb2xpY3kuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNs
aWVudC5oIgpAQCAtNTAsNyArNTEsNiBAQAogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNs
dWRlICJTdHlsZVRyZWVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN1YmZyYW1lTG9hZGVyLmgiCi0j
aW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYXRjaFNjb3Bl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCmluZGV4IDYxZWU1OTRlNjAz
Nzc5MGVhZGZjOGFmZDFjMTVlY2M0NmYzOGM2YzkuLmQzYWVkYTkwMzU1MzhkOTZmMjJiZTFhNTQw
ZTczNjEwMzllZWVjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
aWRsCkBAIC0zNiw3ICszNiw3IEBACiAgICAgLyogW1NhbWVPYmplY3RdICovIHJlYWRvbmx5IGF0
dHJpYnV0ZSBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gb3B0aW9uczsKICAgICBbQ0VSZWFjdGlvbnNd
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBnZXR0ZXIgSFRNTE9wdGlvbkVs
ZW1lbnQ/IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7IC8vIEZJWE1FOiBUaGUgc3BlYyBoYXMg
dGhpcyByZXR1cm5pbmcgRWxlbWVudD8uCi0gICAgSFRNTE9wdGlvbkVsZW1lbnQ/IG5hbWVkSXRl
bShET01TdHJpbmcgbmFtZSk7CisgICAgSFRNTE9wdGlvbkVsZW1lbnQ/IG5hbWVkSXRlbShbUmVx
dWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIERPTVN0cmluZyBuYW1lKTsKICAgICBbQ0VSZWFjdGlv
bnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGFkZCgoSFRNTE9wdGlvbkVsZW1lbnQgb3IgSFRN
TE9wdEdyb3VwRWxlbWVudCkgZWxlbWVudCwgb3B0aW9uYWwgKEhUTUxFbGVtZW50IG9yIGxvbmcp
PyBiZWZvcmUgPSBudWxsKTsKICAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2
b2lkIHJlbW92ZSgpOyAvLyBDaGlsZE5vZGUgb3ZlcmxvYWQKICAgICBbQ0VSZWFjdGlvbnNdIHZv
aWQgcmVtb3ZlKGxvbmcgaW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVDZWxsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNl
bGxFbGVtZW50LmNwcAppbmRleCBmYmY4ZjczM2U0ODAwMDQ5MWVhZDg2MTY3M2I4NjMxOTIzZjk5
MTg2Li5hNjAwMzhmZTk0ZjI5OGIwOGVhNGFiNmVkYWNkN2QxNTU3YWE4NzU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcApAQCAtMTMxLDkgKzEzMSw5
IEBAIHZvaWQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TCiAKIGNvbnN0IFN0eWxlUHJvcGVydGllcyogSFRN
TFRhYmxlQ2VsbEVsZW1lbnQ6OmFkZGl0aW9uYWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgp
IGNvbnN0CiB7Ci0gICAgaWYgKFJlZlB0cjxIVE1MVGFibGVFbGVtZW50PiB0YWJsZSA9IGZpbmRQ
YXJlbnRUYWJsZSgpKQorICAgIGlmIChhdXRvIHRhYmxlID0gZmluZFBhcmVudFRhYmxlKCkpCiAg
ICAgICAgIHJldHVybiB0YWJsZS0+YWRkaXRpb25hbENlbGxTdHlsZSgpOwotICAgIHJldHVybiAw
OworICAgIHJldHVybiBudWxscHRyOwogfQogCiBib29sIEhUTUxUYWJsZUNlbGxFbGVtZW50Ojpp
c1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCmluZGV4IDcyOGI1ZjNkMmI1NTIz
YjA0YjM5OWYyY2M0YjU1YWE0ZjhiMWZjNzQuLmY0ZDQ0NzU4MTFlOGE0MGNhMzJhNjdiY2Y2YjIx
NmMyNTNhN2U3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29s
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50
LmNwcApAQCAtOTIsNyArOTIsNyBAQCBjb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUNv
bEVsZW1lbnQ6OmFkZGl0aW9uYWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZQogewogICAgIGlm
ICghaGFzVGFnTmFtZShjb2xncm91cFRhZykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IGlmIChSZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gdGFibGUgPSBmaW5kUGFyZW50VGFibGUoKSkK
KyAgICBpZiAoYXV0byB0YWJsZSA9IGZpbmRQYXJlbnRUYWJsZSgpKQogICAgICAgICByZXR1cm4g
dGFibGUtPmFkZGl0aW9uYWxHcm91cFN0eWxlKGZhbHNlKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IDc2N2EzZTM4
YWY0ODJkZDkyYjE0OWM4ZjBlZThiODY2ZTdkNGI3YmYuLmE1ZjgwZmUwYzkxZjg4ZDk2MGFiN2Zl
N2FmMDY4YTQ4Yjg5NjQ1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50
LmNwcApAQCAtNDczLDcgKzQ3Myw3IEBAIEhUTUxUYWJsZUVsZW1lbnQ6OkNlbGxCb3JkZXJzIEhU
TUxUYWJsZUVsZW1lbnQ6OmNlbGxCb3JkZXJzKCkgY29uc3QKICAgICByZXR1cm4gTm9Cb3JkZXJz
OwogfQogCi1SZWY8U3R5bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFy
ZWRDZWxsU3R5bGUoKQorUmVmPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3Jl
YXRlU2hhcmVkQ2VsbFN0eWxlKCkgY29uc3QKIHsKICAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0
eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAKQEAgLTUxNCw3ICs1MTQsNyBAQCBSZWY8U3R5bGVQ
cm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQogICAg
IHJldHVybiBzdHlsZTsKIH0KIAotY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBIVE1MVGFibGVFbGVt
ZW50OjphZGRpdGlvbmFsQ2VsbFN0eWxlKCkKK2NvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRh
YmxlRWxlbWVudDo6YWRkaXRpb25hbENlbGxTdHlsZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3No
YXJlZENlbGxTdHlsZSkKICAgICAgICAgbV9zaGFyZWRDZWxsU3R5bGUgPSBjcmVhdGVTaGFyZWRD
ZWxsU3R5bGUoKTsKQEAgLTUzOCwxMSArNTM4LDEwIEBAIHN0YXRpYyBTdHlsZVByb3BlcnRpZXMq
IGxlYWtHcm91cEJvcmRlclN0eWxlKGludCByb3dzKQogICAgIHJldHVybiAmc3R5bGUubGVha1Jl
ZigpOwogfQogCi1jb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0
aW9uYWxHcm91cFN0eWxlKGJvb2wgcm93cykKK2NvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRh
YmxlRWxlbWVudDo6YWRkaXRpb25hbEdyb3VwU3R5bGUoYm9vbCByb3dzKSBjb25zdAogewogICAg
IGlmIChtX3J1bGVzQXR0ciAhPSBHcm91cHNSdWxlcykKLSAgICAgICAgcmV0dXJuIDA7Ci0KKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKHJvd3MpIHsKICAgICAgICAgc3RhdGljIFN0
eWxlUHJvcGVydGllcyogcm93Qm9yZGVyU3R5bGUgPSBsZWFrR3JvdXBCb3JkZXJTdHlsZSh0cnVl
KTsKICAgICAgICAgcmV0dXJuIHJvd0JvcmRlclN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuaAppbmRleCBiMzY1NDIwOWJkYTg1Nzg4NWM2OTMxYzgxYjRlZTNmOTg2ZjM4
NDE2Li4zNzU2ZGM2MTA3NWM0YmY3OTU3ZjkwNzNiNzg3NWE1MmYyZTU2YjFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaApAQCAtNjUsOCArNjUsOCBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgQXRvbVN0cmluZyYgcnVsZXMoKSBjb25zdDsKICAgICBjb25zdCBBdG9tU3RyaW5n
JiBzdW1tYXJ5KCkgY29uc3Q7CiAKLSAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0aW9u
YWxDZWxsU3R5bGUoKTsKLSAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0aW9uYWxHcm91
cFN0eWxlKGJvb2wgcm93cyk7CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRpdGlvbmFs
Q2VsbFN0eWxlKCkgY29uc3Q7CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRpdGlvbmFs
R3JvdXBTdHlsZShib29sIHJvd3MpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIEhUTUxUYWJsZUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CkBAIC04Niw3ICs4Niw3IEBA
IHByaXZhdGU6CiAKICAgICBDZWxsQm9yZGVycyBjZWxsQm9yZGVycygpIGNvbnN0OwogCi0gICAg
UmVmPFN0eWxlUHJvcGVydGllcz4gY3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCk7CisgICAgUmVmPFN0
eWxlUHJvcGVydGllcz4gY3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCkgY29uc3Q7CiAKICAgICBIVE1M
VGFibGVTZWN0aW9uRWxlbWVudCogbGFzdEJvZHkoKSBjb25zdDsKIApAQCAtOTUsNyArOTUsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9mcmFtZUF0dHIgeyBmYWxzZSB9OyAvLyBJbXBsaWVzIGEg
dGhpbiBib3JkZXIgd2lkdGggaWYgbm8gYm9yZGVyIGlzIHNldCBhbmQgdGhlbiBhIGNlcnRhaW4g
c2V0IG9mIHNvbGlkL2hpZGRlbiBib3JkZXJzIGJhc2VkIG9mZiB0aGUgdmFsdWUuCiAgICAgVGFi
bGVSdWxlcyBtX3J1bGVzQXR0ciB7IFVuc2V0UnVsZXMgfTsgLy8gSW1wbGllcyBhIHRoaW4gYm9y
ZGVyIHdpZHRoLCBhIGNvbGxhcHNpbmcgYm9yZGVyIG1vZGVsLCBhbmQgYWxsIGJvcmRlcnMgb24g
dGhlIHRhYmxlIGJlY29taW5nIHNldCB0byBoaWRkZW4gKGlmIGZyYW1lL2JvcmRlciBhcmUgcHJl
c2VudCwgdG8gbm9uZSBvdGhlcndpc2UpLgogICAgIHVuc2lnbmVkIHNob3J0IG1fcGFkZGluZyB7
IDEgfTsKLSAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBtX3NoYXJlZENlbGxTdHlsZTsKKyAg
ICBtdXRhYmxlIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IG1fc2hhcmVkQ2VsbFN0eWxlOwogfTsK
IAogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVQYXJ0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVt
ZW50LmNwcAppbmRleCAzNTg3ODAxNjIxMGZjYWFmZjYwOTBlNjk1Mzk0MTU1YzQ1NWFlYTdjLi4z
NDliMDM1MTJhOGVjNTQwNTI0MWJiYTZmYzNkNGE5ZmY3NDM2ZWYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcApAQCAtNCw3ICs0LDcgQEAKICAqICAg
ICAgICAgICAoQykgMTk5OCBXYWxkbyBCYXN0aWFuIChiYXN0aWFuQGtkZS5vcmcpCiAgKiAgICAg
ICAgICAgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAo
QykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTg1LDEyICs4NSw5IEBAIHZvaWQgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmNvbGxlY3RT
dHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROCiAgICAgICAgIEhU
TUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSwgdmFs
dWUsIHN0eWxlKTsKIH0KIAotUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IEhUTUxUYWJsZVBhcnRF
bGVtZW50OjpmaW5kUGFyZW50VGFibGUoKSBjb25zdAorUmVmUHRyPGNvbnN0IEhUTUxUYWJsZUVs
ZW1lbnQ+IEhUTUxUYWJsZVBhcnRFbGVtZW50OjpmaW5kUGFyZW50VGFibGUoKSBjb25zdAogewot
ICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBwYXJlbnQgPSBwYXJlbnROb2RlKCk7Ci0gICAgd2hp
bGUgKHBhcmVudCAmJiAhaXM8SFRNTFRhYmxlRWxlbWVudD4oKnBhcmVudCkpCi0gICAgICAgIHBh
cmVudCA9IHBhcmVudC0+cGFyZW50Tm9kZSgpOwotICAgIHJldHVybiBkb3duY2FzdDxIVE1MVGFi
bGVFbGVtZW50PihwYXJlbnQuZ2V0KCkpOworICAgIHJldHVybiBhbmNlc3RvcnNPZlR5cGU8SFRN
TFRhYmxlRWxlbWVudD4oKnRoaXMpLmZpcnN0KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuaAppbmRleCBkM2JjZjUwYmFlMjFjMzU4Y2RlMjNmMzM2
M2U1YzY5MmQ1NmYxMWU2Li4wNGY5NDcxYmFiYTI4NzdmNzU0NTQwYzliMWE1ODA5NzI3YmViNTcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5oCkBAIC00LDcg
KzQsNyBAQAogICogICAgICAgICAgIChDKSAxOTk4IFdhbGRvIEJhc3RpYW4gKGJhc3RpYW5Aa2Rl
Lm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQog
ICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQot
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDIsNyArNDIs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJp
bmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8SFRN
TFRhYmxlRWxlbWVudD4gZmluZFBhcmVudFRhYmxlKCkgY29uc3Q7CisgICAgUmVmUHRyPGNvbnN0
IEhUTUxUYWJsZUVsZW1lbnQ+IGZpbmRQYXJlbnRUYWJsZSgpIGNvbnN0OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVTZWN0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rp
b25FbGVtZW50LmNwcAppbmRleCBlNTE2YTgxODRkMWYwZjgzNzNjZDIxYTRhN2E0MDkzY2Y5YmNm
MmYxLi43NzlkOTY0ZTkzODYyZDA0NzlkZmY0MDhiNGYwNTM5MjRhNzI1MDA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcApAQCAtMjYsNyAr
MjYsNiBAQAogI2luY2x1ZGUgIkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCiAKICNpbmNsdWRl
ICJHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlv
bi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVJvd0VsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDNjOWIzMzhmZDI2
MjZkNzRkNmRlMDhjZWZlNDVlNTM2YjM0YTE2MDMuLmUyN2FmYmMwMGQ0ZTg0NTZiMDQwYTRhYzY0
M2U3YWJhYWY3YWZhMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAx
OTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50
dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGly
ayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYg
QWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTc2MSwz
NCArNzYxLDI0IEBAIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KiBlbmNsb3NpbmdUZXh0Rm9y
bUNvbnRyb2woY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQogICAgIHJldHVybiBhbmNlc3RvciAm
JiBhbmNlc3Rvci0+aXNUZXh0RmllbGQoKSA/IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50PihhbmNlc3Rvci5nZXQoKSkgOiBudWxscHRyOwogfQogCi1zdGF0aWMgY29uc3QgRWxl
bWVudCogcGFyZW50SFRNTEVsZW1lbnQoY29uc3QgRWxlbWVudCogZWxlbWVudCkKLXsKLSAgICB3
aGlsZSAoZWxlbWVudCkgewotICAgICAgICBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVu
dCgpOwotICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkpCi0g
ICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIFN0
cmluZyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlyZWN0aW9uRm9yRm9ybURhdGEoKSBj
b25zdAogewotICAgIGZvciAoY29uc3QgRWxlbWVudCogZWxlbWVudCA9IHRoaXM7IGVsZW1lbnQ7
IGVsZW1lbnQgPSBwYXJlbnRIVE1MRWxlbWVudChlbGVtZW50KSkgewotICAgICAgICBjb25zdCBB
dG9tU3RyaW5nJiBkaXJBdHRyaWJ1dGVWYWx1ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oZGlyQXR0cik7Ci0gICAgICAgIGlmIChkaXJBdHRyaWJ1dGVWYWx1ZS5p
c051bGwoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwgInJ0bCIpIHx8IGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAibHRyIikpCi0gICAgICAg
ICAgICByZXR1cm4gZGlyQXR0cmlidXRlVmFsdWU7Ci0KLSAgICAgICAgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAiYXV0byIpKSB7Ci0gICAgICAg
ICAgICBib29sIGlzQXV0bzsKLSAgICAgICAgICAgIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlv
biA9IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxFbGVtZW50Kj4oZWxlbWVudCktPmRpcmVjdGlvbmFs
aXR5SWZoYXNEaXJBdXRvQXR0cmlidXRlKGlzQXV0byk7Ci0gICAgICAgICAgICByZXR1cm4gdGV4
dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgPyAicnRsIiA6ICJsdHIiOworICAgIGF1
dG8gZGlyZWN0aW9uID0gW3RoaXNdIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbGlu
ZWFnZU9mVHlwZTxIVE1MRWxlbWVudD4oKnRoaXMpKSB7CisgICAgICAgICAgICBhdXRvJiB2YWx1
ZSA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkaXJBdHRyKTsKKyAg
ICAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgInJ0bCIp
KQorICAgICAgICAgICAgICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpSVEw7CisgICAgICAgICAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJsdHIiKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gVGV4dERpcmVjdGlvbjo6TFRSOworICAgICAgICAgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAiYXV0byIpKSB7CisgICAgICAgICAg
ICAgICAgYm9vbCBpc0F1dG87CisgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZGlyZWN0
aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUoaXNBdXRvKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgIH0KKyAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKKyAgICB9
KCk7CiAKLSAgICByZXR1cm4gImx0ciI7CisgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBUZXh0RGly
ZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfczsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldE1heExlbmd0aChpbnQgbWF4TGVuZ3RoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKaW5kZXggMDRkZTc1MTNjYWM0ODJiZjc2
MGI0ZTRjNmZmYTAyZWMyZTViNjdmNy4uMjRlNDBjMmM2ZDMzMTE0OTNiNjE3YzY1Y2RmMmY1OGE4
NTEyMjJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ3VzdG9tSGVhZGVy
RmllbGRzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJFbGVtZW50
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgpAQCAtNTEsNyArNTIsNiBAQAogI2luY2x1ZGUgIlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5jcHAKaW5kZXggZmRiOGUzMGZmZWM5YmIwOWFjZTZiMjllYzZhMzAxYTM5MGVl
ZDU4MS4uMDJlZmY0OGYzODhmMTgwZGJhOTRhMTE4MGNlNTFjMjI0YTIxY2NhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTg2Nyw2ICs4Njcs
OCBAQCBJbnRSZWN0IFRleHRGaWVsZElucHV0VHlwZTo6ZWxlbWVudFJlY3RJblJvb3RWaWV3Q29v
cmRpbmF0ZXMoKSBjb25zdAogCiBWZWN0b3I8U3RyaW5nPiBUZXh0RmllbGRJbnB1dFR5cGU6OnN1
Z2dlc3Rpb25zKCkKIHsKKyAgICAvLyBGSVhNRTogU3VnZ2VzdGlvbnMgYXJlICJ0eXBpbmcgY29t
cGxldGlvbnMiIGFuZCBzbyBzaG91bGQgcHJvYmFibHkgdXNlIHRoZSBmaW5kUGxhaW5UZXh0IGFs
Z29yaXRobSByYXRoZXIgdGhhbiB0aGUgc2ltcGxpc3RpYyAiaWdub3JpbmcgQVNDSUkgY2FzZSIg
cnVsZXMuCisKICAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uczsKICAgICBWZWN0b3I8U3Ry
aW5nPiBtYXRjaGVzQ29udGFpbmluZ1ZhbHVlOwogCkBAIC04NzYsMTIgKzg3OCwxMSBAQCBWZWN0
b3I8U3RyaW5nPiBUZXh0RmllbGRJbnB1dFR5cGU6OnN1Z2dlc3Rpb25zKCkKICAgICAgICAgcmV0
dXJuIG1fY2FjaGVkU3VnZ2VzdGlvbnMuc2Vjb25kOwogCiAgICAgaWYgKGF1dG8gZGF0YUxpc3Qg
PSBlbGVtZW50KCktPmRhdGFMaXN0KCkpIHsKLSAgICAgICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBv
cHRpb25zID0gZGF0YUxpc3QtPm9wdGlvbnMoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgYXV0byogb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KG9wdGlvbnMtPml0
ZW0oaSkpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghZWxlbWVudCgpLT5pc1ZhbGlkVmFsdWUo
b3B0aW9uLT52YWx1ZSgpKSkKKyAgICAgICAgZm9yIChhdXRvJiBvcHRpb24gOiBkYXRhTGlzdC0+
c3VnZ2VzdGlvbnMoKSkgeworICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gb3B0aW9uLnZhbHVl
KCk7CisgICAgICAgICAgICBpZiAoIWVsZW1lbnQoKS0+aXNWYWxpZFZhbHVlKHZhbHVlKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gc2Fu
aXRpemVWYWx1ZShvcHRpb24tPnZhbHVlKCkpOworICAgICAgICAgICAgdmFsdWUgPSBzYW5pdGl6
ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgICAgIGlmIChlbGVtZW50VmFsdWUuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zLmFwcGVuZCh2YWx1ZSk7CiAgICAgICAgICAgICBl
bHNlIGlmICh2YWx1ZS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoZWxlbWVudFZhbHVlKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCBlNWRmM2Mz
Yjc4NjZlYTlmZDQzZGFjY2Y0YTQ2MjJiZGI2NDg5NDIyLi5mY2U1OTI2YWI1ZWZhNWRhNWNkNDQ3
NGQxNmVlYzJkODkyNzBlYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5o
IgogI2luY2x1ZGUgIkRPTVJlY3QuaCIKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkhU
TUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAppbmRleCBlMWUyM2E3NmE0ZDk0NmY5ZWEyN2Y2MjZhMjJiMmNjNzc4YTk0ZDMx
Li40NDgzZGY3MDAzZmIxZWQ1NDk2ZGNhYmIyMzAzZWFhNTUwYzdkZmUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcApAQCAtMzIsMTAgKzMyLDggQEAKICNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5T2JqZWN0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU3BhY2VTcGxp
dFN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KQEAgLTcwLDcgKzY4LDcgQEAgRXhjZXB0aW9uT3I8VmVjdG9yPFJlZjxOb2Rl
Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0RWxlbWVudHNCeUMKIAog
ICAgIFZlY3RvcjxSZWY8Tm9kZT4+IG5vZGVzOwogCi0gICAgZm9yIChFbGVtZW50JiBlbGVtZW50
IDogZWxlbWVudERlc2NlbmRhbnRzKGlzPENvbnRhaW5lck5vZGU+KGNvbnRhaW5lcikgPyBkb3du
Y2FzdDxDb250YWluZXJOb2RlPigqY29udGFpbmVyKSA6IGRvY3VtZW50KSkgeworICAgIGZvciAo
RWxlbWVudCYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGlzPENvbnRhaW5l
ck5vZGU+KGNvbnRhaW5lcikgPyBkb3duY2FzdDxDb250YWluZXJOb2RlPigqY29udGFpbmVyKSA6
IGRvY3VtZW50KSkgewogICAgICAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vz
c2libGl0eU9iamVjdEZvck5vZGUoZWxlbWVudCkpIHsKICAgICAgICAgICAgIGlmIChheE9iamVj
dC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCkgPT0gcm9sZSkKICAgICAgICAgICAgICAgICBub2Rlcy5h
cHBlbmQoZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDI5MzBiNDVmOGYyMDc1MWU4NTZjZGEzZTA1
MTg5YWE0NDRlMTg1NTEuLmFjZTVmOWFjNTNjYmUyNmZkM2M0ZDlkNGYyMjQ5NGZkODA2NWE1OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC01MDksMjAgKzUwOSwxOCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50
OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBu
bwogICAgICAgICAvLyBJbmhlcml0ZWQgc3R5bGVzLgogICAgICAgICBpZiAoIWluY2x1ZGVJbmhl
cml0ZWQgfHwgKmluY2x1ZGVJbmhlcml0ZWQpIHsKICAgICAgICAgICAgIGF1dG8gZW50cmllcyA9
IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVu
dHJ5Pjo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxl
bWVudC0+cGFyZW50RWxlbWVudCgpOwotICAgICAgICAgICAgd2hpbGUgKHBhcmVudEVsZW1lbnQp
IHsKLSAgICAgICAgICAgICAgICBhdXRvJiBwYXJlbnRTdHlsZVJlc29sdmVyID0gcGFyZW50RWxl
bWVudC0+c3R5bGVSZXNvbHZlcigpOwotICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50TWF0Y2hl
ZFJ1bGVzID0gcGFyZW50U3R5bGVSZXNvbHZlci5zdHlsZVJ1bGVzRm9yRWxlbWVudChwYXJlbnRF
bGVtZW50LCBTdHlsZTo6UmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgYW5jZXN0b3IgOiBhbmNlc3RvcnNPZlR5cGU8RWxlbWVudD4oKmVsZW1lbnQpKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byYgcGFyZW50U3R5bGVSZXNvbHZlciA9IGFuY2VzdG9yLnN0eWxl
UmVzb2x2ZXIoKTsKKyAgICAgICAgICAgICAgICBhdXRvIHBhcmVudE1hdGNoZWRSdWxlcyA9IHBh
cmVudFN0eWxlUmVzb2x2ZXIuc3R5bGVSdWxlc0ZvckVsZW1lbnQoJmFuY2VzdG9yLCBTdHlsZTo6
UmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKICAgICAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5OjpjcmVhdGUoKQotICAg
ICAgICAgICAgICAgICAgICAuc2V0TWF0Y2hlZENTU1J1bGVzKGJ1aWxkQXJyYXlGb3JNYXRjaGVk
UnVsZUxpc3QocGFyZW50TWF0Y2hlZFJ1bGVzLCBzdHlsZVJlc29sdmVyLCAqcGFyZW50RWxlbWVu
dCwgUHNldWRvSWQ6Ok5vbmUpKQorICAgICAgICAgICAgICAgICAgICAuc2V0TWF0Y2hlZENTU1J1
bGVzKGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QocGFyZW50TWF0Y2hlZFJ1bGVzLCBzdHls
ZVJlc29sdmVyLCBhbmNlc3RvciwgUHNldWRvSWQ6Ok5vbmUpKQogICAgICAgICAgICAgICAgICAg
ICAucmVsZWFzZSgpOwotICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZWRFbGVtZW50PigqcGFy
ZW50RWxlbWVudCkgJiYgZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKnBhcmVudEVsZW1lbnQpLmNz
c29tU3R5bGUoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvJiBzdHlsZVNo
ZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KCpwYXJl
bnRFbGVtZW50KSk7CisgICAgICAgICAgICAgICAgaWYgKGlzPFN0eWxlZEVsZW1lbnQ+KGFuY2Vz
dG9yKSAmJiBkb3duY2FzdDxTdHlsZWRFbGVtZW50PihhbmNlc3RvcikuY3Nzb21TdHlsZSgpLmxl
bmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlU2hlZXQgPSBhc0luc3Bl
Y3RvclN0eWxlU2hlZXQoZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oYW5jZXN0b3IpKTsKICAgICAg
ICAgICAgICAgICAgICAgZW50cnktPnNldElubGluZVN0eWxlKHN0eWxlU2hlZXQuYnVpbGRPYmpl
Y3RGb3JTdHlsZShzdHlsZVNoZWV0LnN0eWxlRm9ySWQoSW5zcGVjdG9yQ1NTSWQoc3R5bGVTaGVl
dC5pZCgpLCAwKSkpKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBlbnRy
aWVzLT5hZGRJdGVtKFdURk1vdmUoZW50cnkpKTsKLSAgICAgICAgICAgICAgICBwYXJlbnRFbGVt
ZW50ID0gcGFyZW50RWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpbmhlcml0ZWRFbnRyaWVzID0gV1RGTW92ZShlbnRyaWVzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAK
aW5kZXggMGY0NmEzMDMzYWVmNDAwN2Y2ZWI4MzdhNjEwNWYwNWEwYzU5MDY3Zi4uZDJjYTViYmUx
MDlhYWFkMTgyYmFlMTg1YzRkNTJkOGFhZWNkYTg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9zZXBoIFBlY29yYXJvCiAgKgpA
QCAtMTExNCw3ICsxMTE0LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aW5zcGVjdChOb2Rl
KiBpbnNwZWN0ZWROb2RlKQogICAgIFJlZlB0cjxOb2RlPiBub2RlID0gaW5zcGVjdGVkTm9kZTsK
ICAgICBzZXRTZWFyY2hpbmdGb3JOb2RlKGlnbm9yZWQsIGZhbHNlLCBudWxscHRyLCBmYWxzZSk7
CiAKLSAgICBpZiAobm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpFTEVNRU5UX05PREUgJiYgbm9k
ZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9OT0RFKQorICAgIGlmICghbm9kZS0+aXNF
bGVtZW50Tm9kZSgpICYmICFub2RlLT5pc0RvY3VtZW50Tm9kZSgpKQogICAgICAgICBub2RlID0g
bm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIG1fbm9kZVRvRm9jdXMgPSBub2RlOwogCkBAIC0xMTU5
LDcgKzExNTksNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVPdmVyRWxl
bWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVucwogdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6aGlnaGxpZ2h0TW91c2VkT3Zlck5vZGUoKQogewogICAgIE5vZGUqIG5vZGUgPSBtX21v
dXNlZE92ZXJOb2RlLmdldCgpOwotICAgIHdoaWxlIChub2RlICYmIG5vZGUtPm5vZGVUeXBlKCkg
PT0gTm9kZTo6VEVYVF9OT0RFKQorICAgIGlmIChub2RlICYmIG5vZGUtPmlzVGV4dE5vZGUoKSkK
ICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKICAgICBpZiAobm9kZSAmJiBtX2lu
c3BlY3RNb2RlSGlnaGxpZ2h0Q29uZmlnKQogICAgICAgICBtX292ZXJsYXktPmhpZ2hsaWdodE5v
ZGUobm9kZSwgKm1faW5zcGVjdE1vZGVIaWdobGlnaHRDb25maWcpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDNmNDY5OWNmODMyOThmMDRlMjc0YWUw
MGVmOTVhNTU0NzVhNjVmM2QuLjA2ZjQ2ZDRhNTY5ZDBmYTBkYzE3YmQ2NTliNjU4ODE1NTcxNmE2
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTMw
LDEyICszMCwxMiBAQAogI2luY2x1ZGUgIkNhY2hlZEZvbnRDbGllbnQuaCIKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9h
ZGVyLmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUg
IkZvbnRQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRl
ICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiV09GRkZpbGVGb3JtYXQuaCIKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
LmNwcAppbmRleCAwMTJkMmYzMWZlMWNlOTlhNzdlODU1ZmM2ZWNlZmI4NmYwNzZkZWI2Li5jOGY5
YmE1MzAwNWY4ZDdiYzkzMGQwOTZkNWYyMTNjOTM4MjVhOWVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
ZiBFTkFCTEUoU1ZHX0ZPTlRTKQogCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgog
I2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCkBAIC0zNyw3ICszOCw2IEBACiAjaW5jbHVkZSAiU2Ny
aXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgotI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlNWR1RvT1RGRm9udENvbnZlcnNpb24uaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRl
eCBkYWQwMDJiMTk2OGFkMGI0MjZmYjEyYjdhNjVhMGYzNzM4NmJlOGJiLi4wNTlmNDVkNjI5ZjU4
ODY1YjQwN2NjYmUxYTcyYWQyZWRmNTNkNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTEyNjAsNiArMTI2MCwxNSBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpi
ZWdpbkRyYWcoRHJhZ0l0ZW0gZHJhZ0l0ZW0sIEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UG9pbnQm
CiAgICAgY2xpZW50KCkuYmVnaW5EcmFnKFdURk1vdmUoZHJhZ0l0ZW0pLCBmcmFtZSwgbW91c2VE
b3duUG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMsIG1vdXNlRHJhZ2dlZFBvaW50SW5Sb290Vmll
d0Nvb3JkaW5hdGVzLCBkYXRhVHJhbnNmZXIsIGRyYWdTb3VyY2VBY3Rpb24pOwogfQogCitzdGF0
aWMgUmVmUHRyPEVsZW1lbnQ+IGNvbnRhaW5pbmdMaW5rRWxlbWVudChFbGVtZW50JiBlbGVtZW50
KQoreworICAgIGZvciAoYXV0byYgY3VycmVudEVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEVsZW1l
bnQ+KGVsZW1lbnQpKSB7CisgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5pc0xpbmsoKSkKKyAg
ICAgICAgICAgIHJldHVybiAmY3VycmVudEVsZW1lbnQ7CisgICAgfQorICAgIHJldHVybiBudWxs
cHRyOworfQorCiB2b2lkIERyYWdDb250cm9sbGVyOjpkb1N5c3RlbURyYWcoRHJhZ0ltYWdlIGlt
YWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0xvYywgY29uc3QgSW50UG9pbnQmIGV2ZW50UG9zLCBG
cmFtZSYgZnJhbWUsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIFByb21pc2VkQXR0YWNobWVudElu
Zm8mJiBwcm9taXNlZEF0dGFjaG1lbnRJbmZvKQogewogICAgIG1fZGlkSW5pdGlhdGVEcmFnID0g
dHJ1ZTsKQEAgLTEyOTYsMTggKzEzMDUsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpkb1N5c3Rl
bURyYWcoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0xvYywgY29ucwogICAg
ICAgICAgICAgaXRlbS5kcmFnUHJldmlld0ZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gZWxl
bWVudC0+Ym91bmRzSW5Sb290Vmlld1NwYWNlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQ
dHI8RWxlbWVudD4gbGluazsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmlzTGluaygpKQotICAgICAg
ICAgICAgbGluayA9IGVsZW1lbnQ7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZm9yIChh
dXRvJiBjdXJyZW50RWxlbWVudCA6IGVsZW1lbnRMaW5lYWdlKGVsZW1lbnQuZ2V0KCkpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmlzTGluaygpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGxpbmsgPSAmY3VycmVudEVsZW1lbnQ7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICBpZiAobGluaykgeworICAgICAgICBpZiAoYXV0byBsaW5rID0gY29udGFpbmluZ0xpbmtFbGVt
ZW50KCplbGVtZW50KSkgewogICAgICAgICAgICAgYXV0byB0aXRsZUF0dHJpYnV0ZSA9IGxpbmst
PmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp0aXRsZUF0dHIpOwog
ICAgICAgICAgICAgaXRlbS50aXRsZSA9IHRpdGxlQXR0cmlidXRlLmlzRW1wdHkoKSA/IGxpbmst
PmlubmVyVGV4dCgpIDogdGl0bGVBdHRyaWJ1dGUuc3RyaW5nKCk7CiAgICAgICAgICAgICBpdGVt
LnVybCA9IGZyYW1lLmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWls
aW5nSFRNTFNwYWNlcyhsaW5rLT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0cikpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFw
T2Zmc2V0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25h
cE9mZnNldHMuY3BwCmluZGV4IGQyNmNlZmU0ZjIwMjM2YzdjNDNhYzVlMjVlZTcxNmVkZDU0MGUx
MGYuLmY4MGExODU0ODk4Y2M4NGY1ZDBlMGY2NzBiZmFmMjUzMDYwYWYxODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRz
LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkF4aXNTY3JvbGxTbmFwT2Zmc2V0cy5o
IgogCiAjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJIVE1MQ29s
bGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oCmluZGV4IDdiMzJiMzNkMzE1YWI5NWQyYTBiZTk4
ZDNlMmYwYTUwYmEwYjllZDMuLjVlZDgwMjViZTc5MDI5MjdmNWQ2NTNiOTc2OWUxMTNmMmNhZWM4
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFMaXN0U3VnZ2VzdGlv
bnNDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rp
b25zQ2xpZW50LmgKQEAgLTI3LDExICsyNywxMiBAQAogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VM
RU1FTlQpCiAKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
SW50UmVjdDsKKwogY2xhc3MgRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCB7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCgpID0gZGVmYXVsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDYwOTdiNGM2YTNlOWViZDMx
OTI5MjZmZTM5MzliOGJiNWQ3ZmVlYzUuLjI2NzQzMzUyZTQ1NzFjMWU3NDBiZmRiNjNmMGNiNjQw
YmM3ZjRjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC01NCw3ICs1NCw2IEBACiAjZW5k
aWYKIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotI2luY2x1ZGUgIkhUTUxDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERhdGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxP
cHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgpAQCAtMTExNywx
MiArMTExNiw5IEBAIHZvaWQgUmVuZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MoY29uc3QgUmVu
ZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAgICAgIHRpY2tSZWdpb25T
aWRlTWFyZ2luID0gdHJhY2tCb3VuZHMueSgpICsgKHRodW1iU2l6ZS53aWR0aCgpIC0gdGlja1Np
emUud2lkdGgoKSAqIHpvb21GYWN0b3IpIC8gMi4wOwogICAgICAgICB0aWNrUmVnaW9uV2lkdGgg
PSB0cmFja0JvdW5kcy5oZWlnaHQoKSAtIHRodW1iU2l6ZS53aWR0aCgpOwogICAgIH0KLSAgICBS
ZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC5vcHRpb25zKCk7CiAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwog
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKG8uc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvcikpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IE5vZGUqIG5vZGUgPSBvcHRpb25zLT5pdGVtKGkpOyBpKyspIHsKLSAg
ICAgICAgQVNTRVJUKGlzPEhUTUxPcHRpb25FbGVtZW50Pigqbm9kZSkpOwotICAgICAgICBIVE1M
T3B0aW9uRWxlbWVudCYgb3B0aW9uRWxlbWVudCA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50
Pigqbm9kZSk7CisgICAgZm9yIChhdXRvJiBvcHRpb25FbGVtZW50IDogZGF0YUxpc3Quc3VnZ2Vz
dGlvbnMoKSkgewogICAgICAgICBTdHJpbmcgdmFsdWUgPSBvcHRpb25FbGVtZW50LnZhbHVlKCk7
CiAgICAgICAgIGlmICghaW5wdXQuaXNWYWxpZFZhbHVlKHZhbHVlKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3Vw
cG9ydC5jcHAKaW5kZXggODhjYTNlNTAzNzM3MzAxNWM1MjAzMGYwNTQ4YzBmYjMzMmUxMDc2ZC4u
ZmNhZjAwYzUwYmJmNjAzZWYzYTNhOWZkODM0ZDNjOTllMzMzYjk1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCkBAIC02LDYgKzYs
NyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3Jn
PgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggQWRvYmUgU3lzdGVt
cyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yNiw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVy
U3VwcG9ydC5oIgogCisjaW5jbHVkZSAiRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCIKICNpbmNs
dWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgpAQCAtNDgxLDYgKzQ4Myw3IEBAIHZvaWQgU1ZH
UmVuZGVyU3VwcG9ydDo6c3R5bGVDaGFuZ2VkKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25z
dCBSZW5kZXJTdHlsZSoKIH0KIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCisKIGJvb2wg
U1ZHUmVuZGVyU3VwcG9ydDo6aXNvbGF0ZXNCbGVuZGluZyhjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUpCiB7CiAgICAgcmV0dXJuIHN0eWxlLnN2Z1N0eWxlKCkuaXNvbGF0ZXNCbGVuZGluZygpIHx8
IHN0eWxlLmhhc0ZpbHRlcigpIHx8IHN0eWxlLmhhc0JsZW5kTW9kZSgpIHx8IHN0eWxlLm9wYWNp
dHkoKSA8IDEuMGY7CkBAIC00OTEsMjAgKzQ5NCwxNiBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6
OnVwZGF0ZU1hc2tlZEFuY2VzdG9yU2hvdWxkSXNvbGF0ZUJsZW5kaW5nKGNvbnN0IFJlbmRlckVs
ZQogICAgIEFTU0VSVChyZW5kZXJlci5lbGVtZW50KCkpOwogICAgIEFTU0VSVChyZW5kZXJlci5l
bGVtZW50KCktPmlzU1ZHRWxlbWVudCgpKTsKIAotICAgIGJvb2wgbWFza2VkQW5jZXN0b3JTaG91
bGRJc29sYXRlQmxlbmRpbmcgPSByZW5kZXJlci5zdHlsZSgpLmhhc0JsZW5kTW9kZSgpOwotICAg
IGZvciAoYXV0byogYW5jZXN0b3IgPSByZW5kZXJlci5lbGVtZW50KCktPnBhcmVudEVsZW1lbnQo
KTsgYW5jZXN0b3IgJiYgYW5jZXN0b3ItPmlzU1ZHRWxlbWVudCgpOyBhbmNlc3RvciA9IGFuY2Vz
dG9yLT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKCFkb3duY2FzdDxTVkdFbGVtZW50
PigqYW5jZXN0b3IpLmlzU1ZHR3JhcGhpY3NFbGVtZW50KCkpCi0gICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICBjb25zdCBhdXRvKiBzdHlsZSA9IGFuY2VzdG9yLT5jb21wdXRlZFN0eWxl
KCk7CisgICAgZm9yIChhdXRvJiBhbmNlc3RvciA6IGFuY2VzdG9yc09mVHlwZTxTVkdHcmFwaGlj
c0VsZW1lbnQ+KCpyZW5kZXJlci5lbGVtZW50KCkpKSB7CisgICAgICAgIGF1dG8qIHN0eWxlID0g
YW5jZXN0b3IuY29tcHV0ZWRTdHlsZSgpOwogICAgICAgICBpZiAoIXN0eWxlIHx8ICFpc29sYXRl
c0JsZW5kaW5nKCpzdHlsZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAo
YW5jZXN0b3ItPmNvbXB1dGVkU3R5bGUoKS0+c3ZnU3R5bGUoKS5oYXNNYXNrZXIoKSkKLSAgICAg
ICAgICAgIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4oKmFuY2VzdG9yKS5zZXRTaG91bGRJ
c29sYXRlQmxlbmRpbmcobWFza2VkQW5jZXN0b3JTaG91bGRJc29sYXRlQmxlbmRpbmcpOwotCisg
ICAgICAgIGlmIChzdHlsZS0+c3ZnU3R5bGUoKS5oYXNNYXNrZXIoKSkKKyAgICAgICAgICAgIGFu
Y2VzdG9yLnNldFNob3VsZElzb2xhdGVCbGVuZGluZyhyZW5kZXJlci5zdHlsZSgpLmhhc0JsZW5k
TW9kZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KKwogI2VuZGlmCisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKaW5kZXggNWU5OWZiYmQyZmUwMzg0
Yjc5MGMwMDMwYzE1NmFmNmNmNTc4NDM4Mi4uMjIzNGZiNWFiZmFkNmRhZjljZDM0NDM3OTQ2NzAw
ZDg5ZTRmMzM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlk
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAK
QEAgLTI3NSwxMiArMjc1LDEwIEBAIHZvaWQgSW52YWxpZGF0b3I6OmludmFsaWRhdGVTdHlsZVdp
dGhNYXRjaEVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTWF0Y2hFbGVtZW50CiAgICAgICAgIGZv
ciAoYXV0byogc2libGluZyA9IGVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7
IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkKICAgICAgICAgICAgIGlu
dmFsaWRhdGVJZk5lZWRlZCgqc2libGluZywgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTWF0Y2hFbGVtZW50OjpBbnlTaWJsaW5nOiB7Ci0gICAgICAgIGF1dG8gcGFyZW50Q2hp
bGRyZW4gPSBjaGlsZHJlbk9mVHlwZTxFbGVtZW50PigqZWxlbWVudC5wYXJlbnROb2RlKCkpOwot
ICAgICAgICBmb3IgKGF1dG8mIHBhcmVudENoaWxkIDogcGFyZW50Q2hpbGRyZW4pCisgICAgY2Fz
ZSBNYXRjaEVsZW1lbnQ6OkFueVNpYmxpbmc6CisgICAgICAgIGZvciAoYXV0byYgcGFyZW50Q2hp
bGQgOiBjaGlsZHJlbk9mVHlwZTxFbGVtZW50PigqZWxlbWVudC5wYXJlbnROb2RlKCkpKQogICAg
ICAgICAgICAgaW52YWxpZGF0ZUlmTmVlZGVkKHBhcmVudENoaWxkLCBudWxscHRyKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgfQogICAgIGNhc2UgTWF0Y2hFbGVtZW50OjpQYXJlbnRTaWJsaW5nOgog
ICAgICAgICBmb3IgKGF1dG8qIHNpYmxpbmcgPSBlbGVtZW50Lm5leHRFbGVtZW50U2libGluZygp
OyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKICAg
ICAgICAgICAgIGF1dG8gc2libGluZ0NoaWxkcmVuID0gY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4o
KnNpYmxpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBmM2Yz
NjIxODNkNTA2MTc0YTQ2NjY0NjFjNzE3YmU3OWIzZTYxZjE0Li42NTFmOGYxZTJkNzg5MjE5OTA2
NTZhZmE0ZmQ5ZTY5ZWRjYWMzYzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVy
LmNwcApAQCAtMTgzLDggKzE4Myw3IEBAIGlubGluZSB2b2lkIFJlc29sdmVyOjpTdGF0ZTo6c2V0
UGFyZW50U3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBwYXJlbnRTCiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc0F0U2hhZG93Qm91bmRhcnkoY29uc3QgRWxlbWVudCYgZWxlbWVudCkK
IHsKLSAgICBhdXRvKiBwYXJlbnROb2RlID0gZWxlbWVudC5wYXJlbnROb2RlKCk7Ci0gICAgcmV0
dXJuIHBhcmVudE5vZGUgJiYgcGFyZW50Tm9kZS0+aXNTaGFkb3dSb290KCk7CisgICAgcmV0dXJu
IGlzPFNoYWRvd1Jvb3Q+KGVsZW1lbnQucGFyZW50Tm9kZSgpKTsKIH0KIAogQnVpbGRlckNvbnRl
eHQgUmVzb2x2ZXI6OmJ1aWxkZXJDb250ZXh0KGNvbnN0IFN0YXRlJiBzdGF0ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQUVsZW1lbnQuY3BwCmluZGV4IDk5ZGIzNTliMjA0NjE4NDBmY2NhMTU4OGVlMTBmNTFl
ZWYxNTVmODYuLjZiNGI2MjU2OTJkN2FjYTYyZjE3OWE5YTE0MzFiOWI3MmZlZWJlZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcApAQCAtMTAyLDkgKzEwMiw4IEBAIHZvaWQgU1ZHQUVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdBRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7
Ci0gICAgaWYgKHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgpICYm
IGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpwYXJlbnROb2RlKCkpLmlzVGV4dENvbnRlbnQoKSkKKyAg
ICBpZiAoaXM8U1ZHRWxlbWVudD4ocGFyZW50Tm9kZSgpKSAmJiBkb3duY2FzdDxTVkdFbGVtZW50
PigqcGFyZW50Tm9kZSgpKS5pc1RleHRDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJTVkdJbmxpbmU+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7Ci0KICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcj4oKnRo
aXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4
IDJmZmNiYWM1MjExYzhhMDVhZTQ2MGQzMGNhMDQyNmU0NjdjZWExODMuLjIyMjQxZGFkNDE3ZmM3
ZTI2OGJkNjA3ZWE1MzA3YmIyYTkyYjQ1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAK
QEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4K
ICAqIENvcHlyaWdodCAoQykgMjAwOSBDYW1lcm9uIE1jQ29ybWFjayA8Y2FtQG1jYy5pZC5hdT4K
ICAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgpAQCAtOTE2LDE4ICs5MTYsMTAgQEAgdm9pZCBTVkdFbGVtZW50Ojp1cGRhdGVSZWxh
dGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihib29sIGhhc1JlbGF0aXZlTGVuZ3RocywgU1ZHRWwKICAg
ICAgICAgbV9lbGVtZW50c1dpdGhSZWxhdGl2ZUxlbmd0aHMucmVtb3ZlKGVsZW1lbnQpOwogICAg
IH0KIAotICAgIGlmICghZWxlbWVudC0+aXNTVkdHcmFwaGljc0VsZW1lbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgLy8gRmluZCBmaXJzdCBzdHlsZWQgcGFyZW50IG5vZGUsIGFuZCBub3Rp
ZnkgaXQgdGhhdCB3ZSd2ZSBjaGFuZ2VkIG91ciByZWxhdGl2ZSBsZW5ndGggc3RhdGUuCi0gICAg
YXV0byBub2RlID0gbWFrZVJlZlB0cihwYXJlbnROb2RlKCkpOwotICAgIHdoaWxlIChub2RlKSB7
Ci0gICAgICAgIGlmICghbm9kZS0+aXNTVkdFbGVtZW50KCkpCi0gICAgICAgICAgICBicmVhazsK
LQotICAgICAgICAvLyBSZWdpc3RlciB1cyBpbiB0aGUgcGFyZW50IGVsZW1lbnQgbWFwLgotICAg
ICAgICBkb3duY2FzdDxTVkdFbGVtZW50Pigqbm9kZSkudXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5m
b3JtYXRpb24oaGFzUmVsYXRpdmVMZW5ndGhzLCB0aGlzKTsKLSAgICAgICAgYnJlYWs7CisgICAg
aWYgKGVsZW1lbnQtPmlzU1ZHR3JhcGhpY3NFbGVtZW50KCkpIHsKKyAgICAgICAgYXV0byBwYXJl
bnQgPSBtYWtlUmVmUHRyKHBhcmVudE5vZGUoKSk7CisgICAgICAgIGlmIChpczxTVkdFbGVtZW50
PihwYXJlbnQpKQorICAgICAgICAgICAgZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnBhcmVudCkudXBk
YXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oaGFzUmVsYXRpdmVMZW5ndGhzLCB0aGlzKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IDk4ZmNmZmJjYTRkNzEyNjdl
NzQ1ZmVkYjliMzBlODBkMGM5YjYyY2YuLjYzOTE4YWE4OGJmMTk0YTI5ZTY0MzBhYjFlOTk2MGI4
OGNiZWRlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtMTQ1LDYgKzE0NSw4IEBAIHB1
YmxpYzoKICAgICBTdHJpbmcgY2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc05hbWUt
PmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmcmIGNsYXNzTmFtZUFuaW1h
dGVkKCkgeyByZXR1cm4gbV9jbGFzc05hbWU7IH0KIAorICAgIGNvbnN0IFJlbmRlclN0eWxlKiBj
b21wdXRlZFN0eWxlKFBzZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmUpIGZpbmFsOworCiBwcm90ZWN0
ZWQ6CiAgICAgU1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAg
ICB2aXJ0dWFsIH5TVkdFbGVtZW50KCk7CkBAIC0xNzMsOCArMTc1LDYgQEAgcHJvdGVjdGVkOgog
ICAgIHZvaWQgd2lsbFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlOwogCiBwcml2
YXRlOgotICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gUHNl
dWRvSWQ6Ok5vbmUpIGZpbmFsOwotCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVGFyZ2V0KCkgeyB9
CiAKICAgICB2b2lkIGJ1aWxkUGVuZGluZ1Jlc291cmNlc0lmTmVlZGVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDc3ZDk0YWZl
ODVlYmExNjQyNmE0MTk3ZDdmOTA1NjhjM2MzNmQwYWQuLjNmNzIzMTMxYTIyNjIyM2FjMGRmNmI1
MGMyZDk2YTAyZTJhNzc3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yNzQsMjIgKzI3NCwyNCBAQCBib29sIFhNTERvY3VtZW50
UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBjaHVuaywgRG9jdW1l
bnRGcmFnbQogCiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiBwcmVmaXhUb05h
bWVzcGFjZU1hcDsKICAgICBBdG9tU3RyaW5nIGRlZmF1bHROYW1lc3BhY2VVUkk7Ci0gICAgYm9v
bCBzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkgPSBmYWxzZTsKLSAgICAKLSAgICBm
b3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50TGluZWFnZShjb250ZXh0RWxlbWVudCkpIHsKLSAg
ICAgICAgaWYgKGlzPFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50PihlbGVtZW50KSkKLSAgICAgICAg
ICAgIHN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVSSSA9IHRydWU7Ci0gICAgICAgIGVs
c2UgaWYgKCFzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkpCi0gICAgICAgICAgICBk
ZWZhdWx0TmFtZXNwYWNlVVJJID0gZWxlbWVudC5uYW1lc3BhY2VVUkkoKTsKLQotICAgICAgICBp
ZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlcygpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgZm9yIChjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA6IGVsZW1lbnQuYXR0cmlidXRl
c0l0ZXJhdG9yKCkpIHsKLSAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUucHJlZml4KCkgPT0geG1s
bnNBdG9tKCkpCi0gICAgICAgICAgICAgICAgcHJlZml4VG9OYW1lc3BhY2VNYXAuc2V0KGF0dHJp
YnV0ZS5sb2NhbE5hbWUoKSwgYXR0cmlidXRlLnZhbHVlKCkpOwotICAgICAgICAgICAgZWxzZSBp
ZiAoIXN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVSSSAmJiBhdHRyaWJ1dGUucHJlZml4
KCkgPT0geG1sbnNBdG9tKCkpCi0gICAgICAgICAgICAgICAgZGVmYXVsdE5hbWVzcGFjZVVSSSA9
IGF0dHJpYnV0ZS52YWx1ZSgpOworICAgIGlmIChjb250ZXh0RWxlbWVudCkgeworICAgICAgICBi
b29sIHN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVSSSA9IGZhbHNlOworCisgICAgICAg
IGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4oKmNvbnRleHRFbGVt
ZW50KSkgeworICAgICAgICAgICAgaWYgKGlzPFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50PihlbGVt
ZW50KSkKKyAgICAgICAgICAgICAgICBzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkg
PSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAoIXN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVz
cGFjZVVSSSkKKyAgICAgICAgICAgICAgICBkZWZhdWx0TmFtZXNwYWNlVVJJID0gZWxlbWVudC5u
YW1lc3BhY2VVUkkoKTsKKworICAgICAgICAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZXMo
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgZm9yIChjb25zdCBB
dHRyaWJ1dGUmIGF0dHJpYnV0ZSA6IGVsZW1lbnQuYXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlLnByZWZpeCgpID09IHhtbG5zQXRvbSgpKQorICAg
ICAgICAgICAgICAgICAgICBwcmVmaXhUb05hbWVzcGFjZU1hcC5zZXQoYXR0cmlidXRlLmxvY2Fs
TmFtZSgpLCBhdHRyaWJ1dGUudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0
b3BMb29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVSSSAmJiBhdHRyaWJ1dGUucHJlZml4KCkgPT0g
eG1sbnNBdG9tKCkpCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHROYW1lc3BhY2VVUkkgPSBh
dHRyaWJ1dGUudmFsdWUoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAppbmRleCAzZjViNjE4MWUwNmUwYTg0Njg4YmRh
OTE2ZjEwZDg3YTYxZDE0YmU3Li42YjI3NzNlYzk3MzUxOGEwMWUxNDU1NDA1MjcyNWU1NTk0MDZi
YzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtNTU5LDEyICs1NTks
MTEgQEAgc3RhdGljIFdlYkNvcmU6OkVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnRGb3JFbGVtZW50
KFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQpCiAgICAgLy8gwqcxMy4gRWxlbWVudCBTdGF0ZS4K
ICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2ViZHJpdmVyL3dlYmRyaXZlci1zcGVjLmh0
bWwjZGZuLWNvbnRhaW5lci4KICAgICBpZiAoaXM8V2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ+
KGVsZW1lbnQpKSB7Ci0gICAgICAgIGF1dG8mIG9wdGlvbkVsZW1lbnQgPSBkb3duY2FzdDxXZWJD
b3JlOjpIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCk7CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VM
RU1FTlQpCi0gICAgICAgIGlmIChhdXRvKiBwYXJlbnRFbGVtZW50ID0gb3B0aW9uRWxlbWVudC5v
d25lckRhdGFMaXN0RWxlbWVudCgpKQorICAgICAgICBpZiAoYXV0byogcGFyZW50RWxlbWVudCA9
IFdlYkNvcmU6OmFuY2VzdG9yc09mVHlwZTxXZWJDb3JlOjpIVE1MRGF0YUxpc3RFbGVtZW50Pihl
bGVtZW50KS5maXJzdCgpKQogICAgICAgICAgICAgcmV0dXJuIHBhcmVudEVsZW1lbnQ7CiAjZW5k
aWYKLSAgICAgICAgaWYgKGF1dG8qIHBhcmVudEVsZW1lbnQgPSBvcHRpb25FbGVtZW50Lm93bmVy
U2VsZWN0RWxlbWVudCgpKQorICAgICAgICBpZiAoYXV0byogcGFyZW50RWxlbWVudCA9IGRvd25j
YXN0PFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KS5vd25lclNlbGVjdEVsZW1l
bnQoKSkKICAgICAgICAgICAgIHJldHVybiBwYXJlbnRFbGVtZW50OwogCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Z1bGxTY3Jl
ZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Z1
bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCmluZGV4IGY1MTk0MWU2YjRlYzEyMTlk
MmJiZGEwZmE5OTU3ZGM1MzgyN2M3OGIuLmQwY2ZlOWQxNzNhZDk3OGI1ODY2ZGU1ZjZiZjM0NTQy
OTc4MjZkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GdWxsU2NyZWVu
L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
RnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNp
bmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJQYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
RWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRWxlbWVudEl0ZXJhdG9yLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9GdWxsc2NyZWVuTWFuYWdlci5oPgpAQCAtNDUsNyArNDUsNiBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVuZGVyT2JqZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJW
aWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUp
KQogI2luY2x1ZGUgIlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKaW5kZXggOGU0YzkzNzVkN2I4Y2MxMGZmYTAwODAzZDQ4MjE3M2JlNWEzNTU4YS4uNTNkZTE5
MTViNDczYWYzM2ZhZGIwNTUwOTkwN2VhYjBjMzVmMDI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKQEAgLTc5NSw3ICs3OTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBXZWJD
aHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbAogCiBzdGQ6OnVu
aXF1ZV9wdHI8RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0
ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50JiBjbGll
bnQpCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2Vy
PigmbV9wYWdlLCAmY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXI+KG1fcGFnZSwgY2xpZW50KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdn
ZXN0aW9uUGlja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwCmluZGV4IGFlYjg3MzdhZGQ0NzNjMDNh
YjZlMTE3NTJmZjBjMjI0YzhkZTA4MTguLmIyMGIwYWNmODhhNDlmZjUwZTM1NDE1NmY0MjFiODZh
MDYxMWVmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM1LDQ3ICszNSw0NSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YUxpc3RTdWdnZXN0aW9uc0Ns
aWVudC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
cihXZWJQYWdlKiBwYWdlLCBEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50KiBjbGllbnQpCi0gICAg
OiBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQoY2xpZW50KQorV2ViRGF0YUxpc3RTdWdnZXN0
aW9uUGlja2VyOjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2ViUGFnZSYgcGFnZSwgV2Vi
Q29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCYgY2xpZW50KQorICAgIDogbV9jbGllbnQo
Y2xpZW50KQogICAgICwgbV9wYWdlKHBhZ2UpCiB7CiB9CiAKLVdlYkRhdGFMaXN0U3VnZ2VzdGlv
blBpY2tlcjo6fldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcigpIHsgfQotCi12b2lkIFdlYkRh
dGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6aGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKGNvbnN0
IFdURjo6U3RyaW5nJiBrZXkpCit2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6aGFu
ZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlS2V5ZG93bkluRGF0YUxpc3Qoa2V5KSwgbV9wYWdlLT5p
ZGVudGlmaWVyKCkpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlS2V5ZG93bklu
RGF0YUxpc3Qoa2V5KSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7CiB9CiAKLXZvaWQgV2ViRGF0YUxp
c3RTdWdnZXN0aW9uUGlja2VyOjpkaWRTZWxlY3RPcHRpb24oY29uc3QgV1RGOjpTdHJpbmcmIHNl
bGVjdGVkT3B0aW9uKQordm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpZFNlbGVj
dE9wdGlvbihjb25zdCBTdHJpbmcmIHNlbGVjdGVkT3B0aW9uKQogewotICAgIG1fZGF0YUxpc3RT
dWdnZXN0aW9uc0NsaWVudC0+ZGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oc2VsZWN0ZWRPcHRpb24p
OworICAgIG1fY2xpZW50LmRpZFNlbGVjdERhdGFMaXN0T3B0aW9uKHNlbGVjdGVkT3B0aW9uKTsK
IH0KIAogdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpZENsb3NlU3VnZ2VzdGlv
bnMoKQogewotICAgIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC0+ZGlkQ2xvc2VTdWdnZXN0
aW9ucygpOworICAgIG1fY2xpZW50LmRpZENsb3NlU3VnZ2VzdGlvbnMoKTsKIH0KIAogdm9pZCBX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmNsb3NlKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkVuZERhdGFMaXN0U3VnZ2VzdGlvbnMoKSwgbV9wYWdlLT5pZGVudGlmaWVyKCkp
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kRGF0YUxpc3RTdWdnZXN0aW9ucygpLCBt
X3BhZ2UuaWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNr
ZXI6OmRpc3BsYXlXaXRoQWN0aXZhdGlvblR5cGUoRGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlv
blR5cGUgdHlwZSkKK3ZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpkaXNwbGF5V2l0
aEFjdGl2YXRpb25UeXBlKFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBl
IHR5cGUpCiB7Ci0gICAgaWYgKCFtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQtPnN1Z2dlc3Rp
b25zKCkuc2l6ZSgpKSB7CisgICAgYXV0byBzdWdnZXN0aW9ucyA9IG1fY2xpZW50LnN1Z2dlc3Rp
b25zKCk7CisgICAgaWYgKHN1Z2dlc3Rpb25zLmlzRW1wdHkoKSkgewogICAgICAgICBjbG9zZSgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wYWdlLT5zZXRBY3RpdmVEYXRhTGlz
dFN1Z2dlc3Rpb25QaWNrZXIodGhpcyk7CisgICAgbV9wYWdlLnNldEFjdGl2ZURhdGFMaXN0U3Vn
Z2VzdGlvblBpY2tlcigqdGhpcyk7CiAKLSAgICBEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlv
biBpbmZvID0geyB0eXBlLCBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQtPnN1Z2dlc3Rpb25z
KCksIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC0+ZWxlbWVudFJlY3RJblJvb3RWaWV3Q29v
cmRpbmF0ZXMoKSB9OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0RhdGFMaXN0U3Vn
Z2VzdGlvbnMoaW5mbyksIG1fcGFnZS0+aWRlbnRpZmllcigpKTsKKyAgICBXZWJDb3JlOjpEYXRh
TGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiBpbmZvIHsgdHlwZSwgV1RGTW92ZShzdWdnZXN0aW9u
cyksIG1fY2xpZW50LmVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgfTsKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dEYXRhTGlzdFN1Z2dlc3Rpb25zKGluZm8pLCBtX3Bh
Z2UuaWRlbnRpZmllcigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdn
ZXN0aW9uUGlja2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmgKaW5kZXggOTcwNTM1OTg5MGI3NjYxYWY2Y2E4
MDcxNzBiMzUzYjU5OGM1MGY3OS4uMTM1MTA3MzUyMTQyOWVmODdkZWQxNDJjNDk2MTQxOTBjZDg2
MzA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw3ICsy
OCw2IEBACiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAKICNpbmNsdWRlIDxXZWJDb3Jl
L0RhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xp
ZW50OwpAQCAtMzgsMTkgKzM3LDIwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQ
YWdlOwogCi1jbGFzcyBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIgOiBwdWJsaWMgV2ViQ29y
ZTo6RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyIHsKK2NsYXNzIFdlYkRhdGFMaXN0U3VnZ2VzdGlv
blBpY2tlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIg
ewogcHVibGljOgotICAgIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihXZWJQYWdlKiwgV2Vi
Q29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCopOwotICAgIHZpcnR1YWwgfldlYkRhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlcigpOworICAgIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihX
ZWJQYWdlJiwgV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCYpOwogCi0gICAgdm9p
ZCBoYW5kbGVLZXlkb3duV2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRTZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRDbG9z
ZVN1Z2dlc3Rpb25zKCk7Ci0gICAgdm9pZCBjbG9zZSgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlz
cGxheVdpdGhBY3RpdmF0aW9uVHlwZShXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0
aW9uVHlwZSkgb3ZlcnJpZGU7CisKIHByaXZhdGU6Ci0gICAgV2ViQ29yZTo6RGF0YUxpc3RTdWdn
ZXN0aW9uc0NsaWVudCogbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50OwotICAgIFdlYlBhZ2Uq
IG1fcGFnZTsKKyAgICB2b2lkIGhhbmRsZUtleWRvd25XaXRoSWRlbnRpZmllcihjb25zdCBTdHJp
bmcmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BsYXlXaXRoQWN0aXZhdGlvblR5cGUoV2ViQ29yZTo6
RGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUpIGZpbmFsOworICAgIHZvaWQgY2xvc2Uo
KSBmaW5hbDsKKworICAgIFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQmIG1fY2xp
ZW50OworICAgIFdlYlBhZ2UmIG1fcGFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGY2
Yzk4NGUzMDVlYzdmN2RhZWQ5N2Y2ODZlODlhMjdmYjkwYmI0N2UuLmFlYjBjNjI4Y2Q3MGQ0ODlj
Zjg3YmQ1MGEzYzQwMWM0ZTQwZjExMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9DaHJvbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9FZGl0b3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnRDaGlsZEl0ZXJh
dG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ZpbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CkBAIC03MSw3ICs3Miw2IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0VsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRmls
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNSYW5nZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTm9k
ZVRyYXZlcnNhbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGx1Z2luRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRyZWVBc1RleHQu
aD4KQEAgLTY2MiwxNyArNjYyLDggQEAgYm9vbCBXZWJGcmFtZTo6Y29udGFpbnNBbnlGb3JtRWxl
bWVudHMoKSBjb25zdAogICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2NvcmVGcmFtZS0+ZG9jdW1lbnQo
KTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmb3Ig
KE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7IG5vZGU7IG5vZGUgPSBO
b2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlKSkgewotICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KCpu
b2RlKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoaXM8SFRNTEZvcm1FbGVt
ZW50Pigqbm9kZSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIGF1dG8qIGRvY3VtZW50ID0gbV9jb3JlRnJhbWUtPmRvY3VtZW50KCk7Cisg
ICAgcmV0dXJuIGRvY3VtZW50ICYmIGNoaWxkcmVuT2ZUeXBlPEhUTUxGb3JtRWxlbWVudD4oKmRv
Y3VtZW50KS5maXJzdCgpOwogfQogCiBib29sIFdlYkZyYW1lOjpjb250YWluc0FueUZvcm1Db250
cm9scygpIGNvbnN0CkBAIC02ODAsMTQgKzY3MSwxMiBAQCBib29sIFdlYkZyYW1lOjpjb250YWlu
c0FueUZvcm1Db250cm9scygpIGNvbnN0CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fY29yZUZyYW1l
LT5kb2N1bWVudCgpOworICAgIGF1dG8qIGRvY3VtZW50ID0gbV9jb3JlRnJhbWUtPmRvY3VtZW50
KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm9y
IChOb2RlKiBub2RlID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOyBub2RlOyBub2RlID0g
Tm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSkpIHsKLSAgICAgICAgaWYgKCFpczxFbGVtZW50Pigq
bm9kZSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKGlzPEhUTUxJbnB1dEVs
ZW1lbnQ+KCpub2RlKSB8fCBpczxIVE1MU2VsZWN0RWxlbWVudD4oKm5vZGUpIHx8IGlzPEhUTUxU
ZXh0QXJlYUVsZW1lbnQ+KCpub2RlKSkKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5P
ZlR5cGU8RWxlbWVudD4oKmRvY3VtZW50KSkgeworICAgICAgICBpZiAoaXM8SFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ+KGNoaWxkKSB8fCBpczxIVE1MU2VsZWN0RWxlbWVudD4oY2hpbGQpKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYWE5OWU5ZGMw
YjAwZDY1MjU4ZjNjZTQ4NGRhYjVhOTA0NjMwZGI3Yy4uZjMxOWMwM2Y0N2Q2MWUxNjJhZGUwNGUy
OWExNTYxYzc1NWY5ODUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTQxMDUsOSArNDEwNSw5IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ2hvb3Nl
Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogCiAjaWYgRU5BQkxFKERBVEFMSVNU
X0VMRU1FTlQpCiAKLXZvaWQgV2ViUGFnZTo6c2V0QWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyKFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlciogZGF0YUxpc3RTdWdnZXN0aW9uUGlja2Vy
KQordm9pZCBXZWJQYWdlOjpzZXRBY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2ViRGF0
YUxpc3RTdWdnZXN0aW9uUGlja2VyJiBkYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIpCiB7Ci0gICAg
bV9hY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIgPSBtYWtlV2Vha1B0cihkYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXIpOworICAgIG1fYWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyID0g
bWFrZVdlYWtQdHIoJmRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik7CiB9CiAKIHZvaWQgV2ViUGFn
ZTo6ZGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oY29uc3QgU3RyaW5nJiBzZWxlY3RlZE9wdGlvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA3NmQwNGEw
NGQxZjRhMGIyNDIzYTc4MmFkNWI2ODNlZmEwMThlM2E2Li42ZDVjZDM4YzhiYjU4MjU5N2UyNDQ0
MjE4ZThjZjgxYWVhMTA1YWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC00MTYsNyArNDE2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICB2b2lkIHNldEFjdGl2ZURhdGFMaXN0U3VnZ2VzdGlv
blBpY2tlcihXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIqKTsKKyAgICB2b2lkIHNldEFjdGl2
ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXImKTsK
ICAgICB2b2lkIGRpZFNlbGVjdERhdGFMaXN0T3B0aW9uKGNvbnN0IFN0cmluZyYpOwogICAgIHZv
aWQgZGlkQ2xvc2VTdWdnZXN0aW9ucygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDQ3MzgzNTc2Y2YwMzkz
ZDdhNGVkM2Y1ODc3M2MzOTkzODllZWZhZTYuLjAxYTAyOWNjZGQyNmQ2MGFmMzkyZjM4NzQ4NGE3
MjA2M2RhNmU1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yNDk4LDExICsyNDk4LDEyIEBAIHZvaWQgV2ViUGFnZTo6
cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpIYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQoYXV0b2NvcnJlY3Rpb25Db250ZXh0
KCkpKTsKIH0KIAotc3RhdGljIEhUTUxBbmNob3JFbGVtZW50KiBjb250YWluaW5nTGlua0VsZW1l
bnQoRWxlbWVudCogZWxlbWVudCkKK3N0YXRpYyBIVE1MQW5jaG9yRWxlbWVudCogY29udGFpbmlu
Z0xpbmtBbmNob3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgZm9yIChhdXRvJiBj
dXJyZW50RWxlbWVudCA6IGVsZW1lbnRMaW5lYWdlKGVsZW1lbnQpKSB7Ci0gICAgICAgIGlmIChj
dXJyZW50RWxlbWVudC5pc0xpbmsoKSAmJiBpczxIVE1MQW5jaG9yRWxlbWVudD4oY3VycmVudEVs
ZW1lbnQpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50Pigm
Y3VycmVudEVsZW1lbnQpOworICAgIC8vIEZJWE1FOiBUaGVyZSBpcyBjb2RlIGluIHRoZSBkcmFn
IGNvbnRyb2xsZXIgdGhhdCBzdXBwb3J0cyBhbnkgbGluaywgZXZlbiBpZiBpdCdzIG5vdCBhbiBI
VE1MQW5jaG9yRWxlbWVudC4gV2h5IGlzIHRoaXMgZGlmZmVyZW50PworICAgIGZvciAoYXV0byYg
Y3VycmVudEVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEhUTUxBbmNob3JFbGVtZW50PihlbGVtZW50
KSkgeworICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuaXNMaW5rKCkpCisgICAgICAgICAgICBy
ZXR1cm4gJmN1cnJlbnRFbGVtZW50OwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAg
LTI2NzIsNyArMjY3Myw3IEBAIHN0YXRpYyB2b2lkIGVsZW1lbnRQb3NpdGlvbkluZm9ybWF0aW9u
KFdlYlBhZ2UmIHBhZ2UsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEluCiB7CiAgICAgRWxlbWVu
dCogbGlua0VsZW1lbnQgPSBudWxscHRyOwogICAgIGlmIChlbGVtZW50LnJlbmRlcmVyKCkgJiYg
ZWxlbWVudC5yZW5kZXJlcigpLT5pc1JlbmRlckltYWdlKCkpCi0gICAgICAgIGxpbmtFbGVtZW50
ID0gY29udGFpbmluZ0xpbmtFbGVtZW50KCZlbGVtZW50KTsKKyAgICAgICAgbGlua0VsZW1lbnQg
PSBjb250YWluaW5nTGlua0FuY2hvckVsZW1lbnQoZWxlbWVudCk7CiAgICAgZWxzZSBpZiAoZWxl
bWVudC5pc0xpbmsoKSkKICAgICAgICAgbGlua0VsZW1lbnQgPSAmZWxlbWVudDsKIApAQCAtMjkz
OCw3ICsyOTM5LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQz
Ml90IGFjdGlvbikKICAgICAgICAgaWYgKGlzPFJlbmRlckltYWdlPigqZWxlbWVudC5yZW5kZXJl
cigpKSkgewogICAgICAgICAgICAgVVJMIHVybDsKICAgICAgICAgICAgIFN0cmluZyB0aXRsZTsK
LSAgICAgICAgICAgIGlmIChhdXRvKiBsaW5rRWxlbWVudCA9IGNvbnRhaW5pbmdMaW5rRWxlbWVu
dCgmZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBsaW5rRWxlbWVudCA9IGNvbnRh
aW5pbmdMaW5rQW5jaG9yRWxlbWVudChlbGVtZW50KSkgewogICAgICAgICAgICAgICAgIHVybCA9
IGxpbmtFbGVtZW50LT5ocmVmKCk7CiAgICAgICAgICAgICAgICAgdGl0bGUgPSBsaW5rRWxlbWVu
dC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnRpdGxlQXR0cik7
CiAgICAgICAgICAgICAgICAgaWYgKCF0aXRsZS5sZW5ndGgoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQppbmRleCA1YzEzZDYzN2UxZjdmZjZmODJkOTI5NDI4
ZGZiODI1MDViMzhjYWM5Li5hZGNkMDE3ZDMwNjVlMjMyYTY3Y2E0MjU1NmYzNWM1Y2RlNmVjZjAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCkBAIC0yNSwx
MyArMjUsNiBAQAogCiAjaW1wb3J0ICJET01Eb2N1bWVudEludGVybmFsLmgiCiAKLSNpbXBvcnQg
PFdlYkNvcmUvQXR0ci5oPgotI2ltcG9ydCA8V2ViQ29yZS9DREFUQVNlY3Rpb24uaD4KLSNpbXBv
cnQgPFdlYkNvcmUvQ1NTUnVsZUxpc3QuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQ1NTU3R5bGVEZWNs
YXJhdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9Db21tZW50Lmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L0RvY3VtZW50RnVsbHNjcmVlbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5o
PgogI2ltcG9ydCAiRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUF0dHJJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NQ0RBVEFTZWN0aW9uSW50ZXJuYWwuaCIKQEAgLTU3LDE1
ICs1MCwyMiBAQAogI2ltcG9ydCAiRE9NU3R5bGVTaGVldExpc3RJbnRlcm5hbC5oIgogI2ltcG9y
dCAiRE9NVGV4dEludGVybmFsLmgiCiAjaW1wb3J0ICJET01UcmVlV2Fsa2VySW50ZXJuYWwuaCIK
LSNpbXBvcnQgPFdlYkNvcmUvRE9NV2luZG93Lmg+CiAjaW1wb3J0ICJET01YUGF0aEV4cHJlc3Np
b25JbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NWFBhdGhSZXN1bHRJbnRlcm5hbC5oIgorI2ltcG9y
dCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKKyNpbXBvcnQgIk9iakNOb2RlRmlsdGVyQ29uZGl0aW9u
LmgiCisjaW1wb3J0IDxXZWJDb3JlL0F0dHIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ0RBVEFTZWN0
aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NTU1J1bGVMaXN0Lmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0NTU1N0eWxlRGVjbGFyYXRpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ29tbWVudC5oPgorI2lt
cG9ydCA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRGcmFnbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9E
b2N1bWVudEZ1bGxzY3JlZW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRUeXBlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0VsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXZlbnQuaD4KLSNp
bXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxDb2xsZWN0
aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0hUTUxIZWFkRWxlbWVudC5oPgpAQCAtNzMsMTIgKzczLDExIEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05hbWVOb2RlTGlzdC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9OYXRpdmVOb2RlRmlsdGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL05vZGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTm9kZUl0ZXJhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVM
aXN0Lmg+Ci0jaW1wb3J0ICJPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oIgogI2ltcG9ydCA8V2Vi
Q29yZS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUmFuZ2UuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5
bGVQcm9wZXJ0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlU2hlZXRMaXN0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RleHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTURvY3VtZW50RnJhZ21lbnQubW0KaW5kZXggMDcyOTMwZTM5NThlMjBhMTJlM2NlM2M1N2Ux
OTk0ZmUzZGRjMTY1ZS4uY2YxYTNjMWY4NDM3YmQ1YmU5MjBkODg0ZTM1YWMwNTNmODlmODQwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21l
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21l
bnQubW0KQEAgLTMyLDcgKzMyLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRGcmFnbWVu
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Lmg+CiAjaW1wb3J0ICJFeGNlcHRpb25IYW5k
bGVycy5oIgotI2ltcG9ydCA8V2ViQ29yZS9IVE1MQ29sbGVjdGlvbi5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OYW1lTm9kZUxpc3QuaD4KICNp
bXBvcnQgPFdlYkNvcmUvTm9kZUxpc3QuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MRmllbGRTZXRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW0KaW5kZXggYTRjMWI2MDhjMTZkMjFl
NTg3NzEwMTUyNjc3OWJhNjQ1NTA2OTBjMy4uZmQ5OTRhYjViZTE0ZWNjM2IyMTRmOTQ1MjFjOGQz
MDNhOTZiOTJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxGaWVsZFNldEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxGaWVsZFNldEVsZW1lbnQubW0KQEAgLTI1LDIxICsyNSwxMCBAQAogCiAjaW1wb3J0ICJE
T01IVE1MRmllbGRTZXRFbGVtZW50LmgiCiAKLSNpbXBvcnQgIkRPTUhUTUxDb2xsZWN0aW9uSW50
ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUhUTUxGb3JtRWxlbWVudEludGVybmFsLmgiCi0jaW1wb3J0
ICJET01JbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCi0jaW1wb3J0ICJF
eGNlcHRpb25IYW5kbGVycy5oIgotI2ltcG9ydCA8V2ViQ29yZS9IVE1MQ29sbGVjdGlvbi5oPgog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MRmllbGRTZXRFbGVtZW50Lmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L0hUTUxGb3JtRWxlbWVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVmFsaWRpdHlTdGF0ZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9X
ZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+Ci0jaW1wb3J0
IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRmll
bGRTZXRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFs
KSkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDEwNmNhYTkwNTg5NmQ1NTg4NTFhZGI1NGE5NzlhNjUxZGRlNjI5NjEuLjI2
N2ZlMmNmZWI0NDNkYzYzYmQ3ZDcyZmQ3MzE4MTFmZTMxNGVmNDYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NiBAQAorMjAyMC0wMi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aXNlIERPTSBpdGVyYXRvcnMgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvZGF0
YWxpc3QvZGF0YWxpc3QtZXhwZWN0ZWQudHh0OiBVcGRhdGVkIGV4cGVjdGF0aW9ucy4KKyAgICAg
ICAgKiBmYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0Lmh0bWw6IFVwZGF0ZWQgdGVzdCBzaW5j
ZSB0aGUgb3B0aW9ucyBjb2xsZWN0aW9uCisgICAgICAgIGRvZXMgbm90IGluZGljYXRlIHdoaWNo
IG9wdGlvbnMgYXJlIHN1Z2dlc3Rpb25zIGFuZCB3aGljaCBhcmUgbm90LiBUaGUgd2ViCisgICAg
ICAgIHBsYXRmb3JtIHRlc3RzIGFscmVhZHkgaGFkIHRoaXMgcmlnaHQsIHdoaWNoIGlzIHdoeSB3
ZSBoYWQgYSBmYWlsaW5nIHRlc3QgdGhlcmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnM6IFJlbW92ZWQgc29tZSBsaW5lcyBmb3IgdGVzdCB0aGF0IGRvbid0
CisgICAgICAgIGV4aXN0IGF0IHRoZSBwYXRocyBtZW50aW9uZWQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMtd2sxL2Zhc3QvZm9ybXMvZm9ybS1wc2V1ZG8tdmFsaWQtc3R5bGUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgRXhwZWN0IGZhaWx1cmUgb24gdGhlIHBhcnRzIG9mIHRoaXMg
dGhhdCBhcmUgc3BlY2lmaWMgdG8gZGF0YWxpc3QsIHNpbmNlIHRoYXQKKyAgICAgICAgZmVhdHVy
ZSBpcyBub3QgZW5hYmxlZC4gQmVmb3JlIG5vdywgdGhlIGNvZGUgd2Fzbid0IHByb3Blcmx5IGNv
bmRpdGlvbmFsaXplZAorICAgICAgICBhbmQgc29tZSBvZiB0aGUgZGF0YWxpc3QgYmVoYXZpb3Ig
d291bGQgaGFwcGVuIGV2ZW4gaWYgdGhlIGZlYXR1cmUgd2FzIGRpc2FibGVkLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOiBDbGVhbmVkIHVwIGEgdHlwbyBh
bmQgYSBtZXJnZSBjb25mbGljdAorICAgICAgICB0aGF0IHdhcyBjaGVja2VkIGluIHdpdGhvdXQg
YmVpbmcgcmVzb2x2ZWQuCisKIDIwMjAtMDItMTQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1
ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTY2MzMu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAwY2IwOTk5Mzc5MDg3ZjRiMTIyYTE3
NzRmMzZkNjVlZWQ0MWViODYzLi4yMzdiNjVjNTMzYmM0M2YzZDZhZGYyMzEyYzlkYTU4YzE5NzBk
MTk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAy
MC0wMi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNl
IERPTSBpdGVyYXRvcnMgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9mb3Jtcy90aGUtZGF0YWxpc3QtZWxlbWVudC9kYXRhbGlzdG9wdGlvbnMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICBFeHBlY3QgdGhpcyB0ZXN0IHRvIHBhc3MgaW5zdGVhZCBvZiBm
YWlsaW5nLgorCiAyMDIwLTAyLTE0ICBSb3NzYW5hIE1vbnRlcmlzbyAgPHJtb250ZXJpc29AaWdh
bGlhLmNvbT4KIAogICAgICAgICBbY3NzLWdyaWRdIE1vdmUgZ3JpZC1ndXR0ZXJzLWFuZC1hbGln
bm1lbnQgdGVzdCB0byBXUFQgZm9sZGVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2RhdGFsaXN0L2RhdGFsaXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvZGF0YWxpc3QvZGF0YWxpc3QtZXhwZWN0ZWQudHh0CmluZGV4IDQ2MDk0ODkwNGNkMjAxOTlm
MWQ5MTI2YjgyYzE0ZDdiOWM0MDQ3NmUuLmNiYTY1MDU3Mjc2ZjRhZjE1NzkwMjg5OWUxZjM1NmQz
NGNhMDI5MjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0
YWxpc3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3Qv
ZGF0YWxpc3QtZXhwZWN0ZWQudHh0CkBAIC0zLDggKzMsOCBAQCBUZXN0IGZvciB0aGUgZGF0YWxp
c3QgZWxlbWVudC4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGRhdGFsaXN0
Lm9wdGlvbnMubGVuZ3RoIGlzIDQKLVBBU1MgZGF0YWxpc3Qub3B0aW9ucy5sZW5ndGggaXMgMwor
UEFTUyBkYXRhbGlzdC5vcHRpb25zLmxlbmd0aCBpcyA1CitQQVNTIGRhdGFsaXN0Lm9wdGlvbnMu
bGVuZ3RoIGlzIDUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01Q
TEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlz
dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC5odG1sCmlu
ZGV4IDU2MWI2NmI1YzVkMjIyOGY4M2I1ZDgyMTU5NzlmMDU4OTEwMTc5MzUuLmNhYzE1ZWYxMmJi
ZWY5YjUzNjMyMWQ5ZGVmNDUwNTNiMTNhZDczZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2RhdGFsaXN0L2RhdGFsaXN0Lmh0bWwKQEAgLTEsNyArMSw3IEBACiA8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHk+CiA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KQEAgLTE3LDE4ICsxNywyMCBAQAog
PC9kYXRhbGlzdD4KIAogPHNjcmlwdD4KKwogZGVzY3JpcHRpb24oJ1Rlc3QgZm9yIHRoZSBkYXRh
bGlzdCBlbGVtZW50LicpOwogCiB2YXIgZGF0YWxpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZGwxJyk7Ci0vLyBBbiBvcHRpb24gZWxlbWVudCB3aXRoIGVtcHR5IHZhbHVlIGlzIG5vdCBp
bmNsdWRlZC4KLXNob3VsZEJlKCdkYXRhbGlzdC5vcHRpb25zLmxlbmd0aCcsICc0Jyk7CiAKKy8v
IEFuIG9wdGlvbiBlbGVtZW50IHdpdGggZW1wdHkgdmFsdWUgaXMgbm90IGEgc3VnZ2VzdGlvbiwg
YnV0IHN0aWxsIGlzIGluY2x1ZGVkIGluIHRoZSBvcHRpb25zIGNvbGxlY3Rpb24uCitzaG91bGRC
ZSgnZGF0YWxpc3Qub3B0aW9ucy5sZW5ndGgnLCAnNScpOworCisvLyBBIGRpc2FibGVkIG9wdGlv
biBlbGVtZW50IGlzIG5vIGxvbmdlciBhIHN1Z2dlc3Rpb24sIGJ1dCBzdGlsbCBpcyBpbmNsdWRl
ZCBpbiB0aGUgb3B0aW9ucyBjb2xsZWN0aW9uLgogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ280
JykuZGlzYWJsZWQgPSB0cnVlOwotLy8gQSBkaXNhYmxlZCBvcHRpb24gZWxlbWVudCBpcyBub3Qg
aW5jbHVkZWQuCi1zaG91bGRCZSgnZGF0YWxpc3Qub3B0aW9ucy5sZW5ndGgnLCAnMycpOwotLy8g
QWZ0ZXIgZGF0YWxpc3QgaXMgaW1wbGVtZW50ZWQsIHRoZSBleHBlY3RlZCB0ZXh0IHNob3VsZCBu
b3QgY29udGFpbiB0aGUKLS8vIHRleHQgaW4gdGhlIGRhdGFsaXN0IGVsZW1lbnQuCitzaG91bGRC
ZSgnZGF0YWxpc3Qub3B0aW9ucy5sZW5ndGgnLCAnNScpOworCisvLyBBbHNvLCB0aGUgZXhwZWN0
ZWQgdGV4dCBzaG91bGQgbm90IGNvbnRhaW4gdGhlIHRleHQgaW4gdGhlIGRhdGFsaXN0IGVsZW1l
bnQuCisKIDwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jt
cy90aGUtZGF0YWxpc3QtZWxlbWVudC9kYXRhbGlzdG9wdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9m
b3Jtcy90aGUtZGF0YWxpc3QtZWxlbWVudC9kYXRhbGlzdG9wdGlvbnMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGI1YzZlOTUzNDQzY2U5NGI4Zjc5YzNiZjhkM2Q3NWIwYmMwMDA5Y2MuLjM1NDVhN2U4OTcx
OGMxNTkxMjJhZGE4N2M5YzY2YWUzYTMyOTk2ODEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWRh
dGFsaXN0LWVsZW1lbnQvZGF0YWxpc3RvcHRpb25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1z
L3RoZS1kYXRhbGlzdC1lbGVtZW50L2RhdGFsaXN0b3B0aW9ucy1leHBlY3RlZC50eHQKQEAgLTEs
NCArMSw0IEBACiAKLUZBSUwgb3B0aW9ucyBsYWJlbC92YWx1ZSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCA1IGJ1dCBnb3QgMworUEFTUyBvcHRpb25zIGxhYmVsL3ZhbHVlIAogUEFTUyBJZiBhbiBl
bGVtZW50IGhhcyBhIGRhdGFsaXN0IGVsZW1lbnQgYW5jZXN0b3IsIGl0IGlzIGJhcnJlZCBmcm9t
IGNvbnN0cmFpbnQgdmFsaWRhdGlvbiAKIE51bWJlcjogIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDJlZjYzOTM1OTZkOGIxNmJmZTcxOWVl
YjA3YWEzYzliNjRhMjMyZmIuLjYyYzFiNmM2OTIxM2UxZjE5OGQ2MDgwMTBkY2FhNGYwOTVhN2Nm
MzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTQzMiw5ICs0MzIsNiBAQCBpbXBvcnRlZC9ibGluay9zdmcvY3VzdG9tL21hcmtlci1sYXlv
dXQtaW52YWxpZGF0aW9uLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogaW1wb3J0ZWQvYmxpbmsvZmFz
dC9jc3MvY3Jhc2gtY29ybmVyLXByZXNlbnQuaHRtbCBbIFBhc3MgVGltZW91dCBdCiBpbXBvcnRl
ZC9ibGluay9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9pZnJhbWUtY2xpcC1yZW1vdmVkLmh0
bWwgWyBQYXNzIFRpbWVvdXQgXQogCi0jIEFTQU4gdGVzdCBvbmx5IGZhaWxzIG9uIFdLMToKLXdl
YmdsLzEuMC4zLzE1MTA1NV9hc2FuLmh0bWwgWyBGYWlsdXJlIF0KLQogIyBMYWNraW5nIFdLMSBU
ZXN0UnVubmVyIEFQSSB0aGF0IGV2YWx1YXRlcyBKYXZhU2NyaXB0IHRocm91Z2ggSlNDIEFQSXMg
YW5kIG5vdCBXZWJDb3JlIEFQSXMuCiBpbnNwZWN0b3Ivc2NyaXB0LXByb2ZpbGVyL2V2ZW50LXR5
cGUtQVBJLmh0bWwgWyBTa2lwIF0KIApAQCAtNzY0LDggKzc2MSw2IEBAIHdlYmtpdC5vcmcvYi8x
OTAzNTAgWyBNb2phdmUgXSBzdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1vZGQtbmFtZXMuaHRt
bCBbIEZhaWx1CiAKIHdlYmtpdC5vcmcvYi8xOTA4MzIgWyBEZWJ1ZyBdIGZhc3QvZm9ybXMvc3Rh
dGUtcmVzdG9yZS10by1ub24tZWRpdGVkLWNvbnRyb2xzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQog
Ci13ZWJraXQub3JnL2IvMTkwODMzIFsgRGVidWcgXSBpbnNwZWN0b3IvY29kZW1pcnJvci9wcmV0
dHlwcmludGluZy1jc3MuaHRtbCBbIFNsb3cgXQotCiB3ZWJraXQub3JnL2IvMTkwODQ5IGh0dHAv
dGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtbXVsdGlwbGUtaGVh
ZGVycy1zYW1lb3JpZ2luLWRlbnkuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcv
Yi8xODY0MDYgWyBNb2phdmUrIF0gY29tcG9zaXRpbmcvaWZyYW1lcy9kaXNwbGF5LW5vbmUtc3Vi
ZnJhbWUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCkBAIC05MTYsNCArOTExLDQgQEAgd2Via2l0Lm9y
Zy9iLzIwNzU2NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25z
L3RpbWluZy1tb2RlbC8KIAogd2Via2l0Lm9yZy9iLzIwNzU2OCBpbnNwZWN0b3IvcGFnZS9vdmVy
cmlkZVVzZXJBZ2VudC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwNzU2
OSBsZWdhY3ktYW5pbWF0aW9uLWVuZ2luZS9hbmltYXRpb25zLzNkL3RyYW5zZm9ybS1vcmlnaW4t
dnMtZnVuY3Rpb25zLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKK3dlYmtpdC5vcmcvYi8yMDc1NjkgbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5pbWF0
aW9ucy8zZC90cmFuc2Zvcm0tb3JpZ2luLXZzLWZ1bmN0aW9ucy5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvZmFzdC9mb3Jtcy9m
b3JtLXBzZXVkby12YWxpZC1zdHlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL2Zhc3QvZm9ybXMvZm9ybS1wc2V1ZG8tdmFsaWQtc3R5bGUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ0M2ZhYTc1MTc1MzE3MmQxMmJlOTQxZDdmOThhYzg3ZTVkNjY5NjMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2Zhc3QvZm9ybXMv
Zm9ybS1wc2V1ZG8tdmFsaWQtc3R5bGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTQgQEAKK0No
ZWNrIGlmIDp2YWxpZC86aW52YWxpZCBDU1MgcHNldWRvIHNlbGVjdG9ycyBhcmUgbGl2ZWx5IGFw
cGxpZWQgZm9yIGZvcm1zCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitSZW1vdmlu
ZyBhbmQgYWRkaW5nIHJlcXVpcmVkIHRleHQgaW5wdXRzIGFuZCBtb2RpZnlpbmcgdGhlaXIgdmFs
dWUgYnkgYSBET00gdHJlZSBtdXRhdGlvbjoKK1BBU1MgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBp
bnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1YkludmFsaWRDb2xvcgor
UEFTUyBmb3JtMS5yZW1vdmVDaGlsZChpbnB1dDEpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIHZh
bGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1YlZhbGlkQ29sb3IKK1BBU1Mg
Zm9ybTEuYXBwZW5kQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlk
Q29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1YkludmFsaWRDb2xvcgorUEFTUyBp
bnB1dDEuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsICJhIik7IGJhY2tncm91bmRPZihmb3JtMSkgaXMg
dmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViVmFsaWRDb2xvcgorUEFT
UyBpbnB1dDIuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsICIiKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBp
cyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1YkludmFsaWRDb2xv
cgorCitEaXNhYmxpbmcgYW5kIG1hcmtpbmcgaW5wdXRzIHJlYWRvbmx5IGJ5IGEgRE9NIHRyZWUg
bXV0YXRpb246CitQQVNTIGJhY2tncm91bmRPZihmb3JtMSkgaXMgaW52YWxpZENvbG9yCitQQVNT
IGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJJbnZhbGlkQ29sb3IKK1BBU1MgaW5wdXQxLmRpc2Fi
bGVkPTE7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5k
T2Yoc3ViMSkgaXMgc3ViVmFsaWRDb2xvcgorUEFTUyBpbnB1dDEuZGlzYWJsZWQ9MDsgYmFja2dy
b3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlz
IHN1YkludmFsaWRDb2xvcgorUEFTUyBpbnB1dDEuc2V0QXR0cmlidXRlKCJyZWFkb25seSIsICIx
Iik7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2Yo
c3ViMSkgaXMgc3ViVmFsaWRDb2xvcgorCitNb3ZlIGVsZW1lbnQgdW5kZXIgZGF0YWxpc3QgYnkg
YSBET00gdHJlZSBtdXRhdGlvbjoKK1BBU1MgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlk
Q29sb3IKK1BBU1MgcGFyZW50LnJlbW92ZUNoaWxkKGlucHV0MSk7IGJhY2tncm91bmRPZihmb3Jt
MSkgaXMgdmFsaWRDb2xvcgorRkFJTCBkbDEuYXBwZW5kQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3Vu
ZE9mKGZvcm0xKSBzaG91bGQgYmUgcmdiKDAsIDI1NSwgMCkuIFdhcyByZ2IoMjU1LCAwLCAwKS4K
K1BBU1MgcGFyZW50LmFwcGVuZENoaWxkKGlucHV0MSk7IGJhY2tncm91bmRPZihmb3JtMSkgaXMg
aW52YWxpZENvbG9yCisKK0FkZGluZyBhIHJlcXVpcmVkIHRleHQgaW5wdXQgdGhhdCBpcyBub3Qg
YSBkaXJlY3QgY2hpbGQgb2YgdGhlIGZvcm06CitQQVNTIGJhY2tncm91bmRPZihmb3JtMSkgaXMg
dmFsaWRDb2xvcgorUEFTUyBkaXYxLmFwcGVuZENoaWxkKGlucHV0MSk7IGJhY2tncm91bmRPZihm
b3JtMSkgaXMgaW52YWxpZENvbG9yCisKK1JlbmRlciBtdWx0aXBsZSBmb3JtcyBhbmQgcmVhc3Np
Z24gYW4gaW52YWxpZCBpbnB1dCBmcm9tIG9uZSB0byBhbm90aGVyOgorUEFTUyBiYWNrZ3JvdW5k
T2YoJCgiZm9ybTEiKSkgaXMgaW52YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZigkKCJmb3Jt
MiIpKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZigkKCJmb3JtMyIpKSBpcyB2YWxp
ZENvbG9yCitQQVNTIGJhY2tncm91bmRPZigkKCJmb3JtMSIpKSBpcyB2YWxpZENvbG9yCitQQVNT
IGJhY2tncm91bmRPZigkKCJmb3JtMyIpKSBpcyBpbnZhbGlkQ29sb3IKKworRW5zdXJlIHRoYXQg
aW52YWxpZCBldmVudCB3YXMgbm90IHRyaWdnZXJlZCBvbiBzdHlsZSBldmFsdWF0aW9uOgorUEFT
UyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyB2YWwgaXMgIjAiCitQ
QVNTIGZvcm0xLmNoZWNrVmFsaWRpdHkoKTsgdmFsIGlzICIxIgorCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCitTb21lIHRlc3RzIGZhaWxlZC4KKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggY2Yz
MjJkN2QwYWU2NGFkZGY0ZDRhNWMyM2Y5NGU2YTg0YzkzYTY1NC4uNDczNGIwODJiNjBkOWJmNTQ2
MTkxNjdmZGU2MDA1M2Q4NTQzNmFmOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTAxMCw3ICsxMDEwLDcgQEAgd2Via2l0Lm9yZy9iLzIw
NzUwOSBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkv
cmVxdWVzdC8KIAogd2Via2l0Lm9yZy9iLzIwNzUxOCB0aWxlZC1kcmF3aW5nL3NpbXBsZS1kb2N1
bWVudC13aXRoLW1hcmdpbi10aWxlcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0LnJv
Zy9iLzIwNzU3MSBodHRwL3Rlc3RzL0luZGV4ZWREQi9jb2xsZWN0LUlEQi1vYmplY3RzLmh0dHBz
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIwNzU3MSBodHRwL3Rlc3RzL0lu
ZGV4ZWREQi9jb2xsZWN0LUlEQi1vYmplY3RzLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQog
CiB3ZWJraXQub3JnL2IvMjA3NTk5IHdlYmdwdS93aGxzbC9kby13aGlsZS1sb29wLmh0bWwgWyBQ
YXNzIEltYWdlT25seUZhaWx1cmUgXQogCkBAIC0xMDQwLDEyICsxMDQwLDggQEAgd2Via2l0Lm9y
Zy9iLzIwNzc3OSB3ZWJncHUvd2hsc2wvZGVyZWZlcmVuY2UtcG9pbnRlci1zaG91bGQtdHlwZS1j
aGVjay5odG1sIFsgUGEKIAogd2Via2l0Lm9yZy9iLzIwNzc4NSBmYXN0L2V2ZW50cy9rZXlkb3du
LTEuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLTw8PDw8PDwgVXBkYXRlZCB1cHN0cmVhbQogd2Vi
a2l0Lm9yZy9iLzIwNzc5MyBmYXN0L2h0bWwvbWFycXVlZS1jaGlsZC13cmFwLmh0bWwgWyBQYXNz
IEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA3Nzk2IFsgUmVsZWFzZSBdIGZh
c3QvYm94LXNoYWRvdy9oaWRwaS1ib3gtc2hhZG93Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1
cmUgXQogCiB3ZWJraXQub3JnL2IvMjA3Nzk4IHdlYnJ0Yy9jb25uZWN0aW9uLXN0YXRlLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQotPT09PT09PQotd2Via2l0Lm9yZy9iLzIwNzc5NiBbIFJlbGVhc2Ug
XSBmYXN0L2JveC1zaGFkb3cvaGlkcGktYm94LXNoYWRvdy5odG1sIFsgUGFzcyBJbWFnZU9ubHlG
YWlsdXJlIF0KLT4+Pj4+Pj4gU3Rhc2hlZCBjaGFuZ2VzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390890</attachid>
            <date>2020-02-16 12:00:46 -0800</date>
            <delta_ts>2020-02-16 21:55:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207816-20200216120044.patch</filename>
            <type>text/plain</type>
            <size>247675</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2EzYjkzYzkxMDU2NmQ4
MTY4NTEyMzRlYzU0NzQzY2YzMTk5NzY0MC4uNmQwNDdmN2M5Mjg2NDYzNjQwMmE5MmMxMDNlYjZl
YjcxZjhkNGRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0NSBAQAorMjAyMC0wMi0xNiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRv
cnMgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZpbmVkIGVsZW1lbnQgaXRlcmF0b3IgaW1wbGVtZW50YXRp
b24gaW4gdGhlIGZvbGxvd2luZyB3YXlzOgorCisgICAgICAgIDEpIFJlbW92ZWQgdGhlIGR1cGxp
Y2F0ZSBkZXNjZW5kYW50IGl0ZXJhdG9yLCBrZWVwaW5nIHRoZSBvbmUgdGhhdCBtYXRjaGVzCisg
ICAgICAgICAgIHRoZSBzdHlsZSBvZiB0aGUgYW5jZXN0b3IgYW5kIGNoaWxkIGl0ZXJhdG9ycy4K
KyAgICAgICAgMikgUmVtb3ZlZCB0aGUgbm9uLXRlbXBsYXRlIGVsZW1lbnRBbmNlc3RvcnMsIGVs
ZW1lbnRDaGlsZHJlbiwgZWxlbWVudERlc2NlbmRhbnRzLAorICAgICAgICAgICBhbmQgZWxlbWVu
dExpbmVhZ2UgZnVuY3Rpb25zIGFuZCBjaGFuZ2VkIGNhbGxlcnMgdG8gdXNlIHh4eE9mVHlwZTxF
bGVtZW50PiBpbnN0ZWFkLgorCisgICAgICAgIEFsc28gcmVwbGFjZWQgdXNlIG9mIEhUTUxDb2xs
ZWN0aW9uIGNsYXNzZXMgaW4gV2ViS2l0IGNvZGUgZm9yIGl0ZXJhdGlvbi4KKyAgICAgICAgVGhl
eSBhcmUgZmluZSBmb3IgdXNlIGZyb20gSmF2YVNjcmlwdCwgYnV0IGludGVybmFsbHkgd2UgaGF2
ZSBtb3JlIGVmZmljaWVudAorICAgICAgICBpdGVyYXRpb24gaWRpb21zLgorCisgICAgICAgICog
SGVhZGVycy5jbWFrZTogUmVtb3ZlZCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmguCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmVkIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IuaCBhbmQKKyAgICAgICAgYWRkZWQgUmFkaW9Ob2RlTGlzdC5pZGwu
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojptb3VzZUJ1dHRvbkxp
c3RlbmVyIGNvbnN0KTogVXNlCisgICAgICAgIGxpbmVhZ2VPZlR5cGUgaW5zdGVhZCBvZiBlbGVt
ZW50TGluZWFnZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgVXNlIGFuY2Vz
dG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEgaGFuZHdyaXR0ZW4gbG9vcC4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcDogUmVtb3ZlZCB1bm5lZWRl
ZCBpbmNsdWRlIG9mCisgICAgICAgIEhUTUxDb2xsZWN0aW9uLmguCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOiBEaXR0by4KKworICAgICAgICAqIGRvbS9Db250
YWluZXJOb2RlQWxnb3JpdGhtcy5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAgICAgICogZG9t
L0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHA6IERpdHRvLgorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6Z2V0
RWxlbWVudEJ5SWQgY29uc3QpOiBVc2UKKyAgICAgICAgZGVzY2VuZGFudHNPZlR5cGUgaW5zdGVh
ZG9mIGVsZW1lbnREZXNjZW5kYW50cy4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSBjb25zdCk6
IFVzZSBsaW5lYWdlT2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2YgYSBoYW5kcndpdHRlbiBsb29w
LgorCisgICAgICAgICogZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmg6IE1vdmVkIHRoZSBk
ZWNsYXJhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucworICAgICAgICB0byB0aGUgdG9wIG9mIHRoZSBm
aWxlLCBzaW5jZSB0aGUgY2xhc3NlcyBhcmUgcmVhbGx5IGltcGxlbWVudGF0aW9uIGRldGFpbHMu
CisgICAgICAgIFJlbW92ZWQgdGhlIHNlcGFyYXRlICJDb25zdCIgdmVyc2lvbnMgb2YgZXZlcnl0
aGluZyBzaW5jZSB3ZSBjYW4ganVzdCB1c2UKKyAgICAgICAgY29uc3QgaW4gdGhlIHRlbXBsYXRl
IGFyZ3VtZW50IHR5cGUgaW5zdGVhZC4gVXNlIHRoZSB0ZXJtICJSYW5nZSIgaW5zdGVhZAorICAg
ICAgICBvZiB0aGUgdGVybSAiSXRlcmF0b3JBZGFwdGVyIiBmb3IgdGhlIGNsYXNzIHRlbXBsYXRl
cyBmb3IgdXNlIGluIHJhbmdlLWJhc2VkCisgICAgICAgIGZvciBsb29wcyBzaW5jZSB0aGF0J3Mg
Y2xvc2VyIHRvIG1vZGVybiBDKysgdGVybWlub2xvZ3kuIE1hZGUgbWFueSBmdW5jdGlvbgorICAg
ICAgICBtZW1iZXJzIGNvbnN0IHdoZXJlIGFwcHJvcHJpYXRlLiBTcGVjaWFsaXplZCBsaW5lYWdl
T2ZUeXBlIGFuZCBhbmNlc3RvcnNPZlR5cGUKKyAgICAgICAgZm9yIEVsZW1lbnQgdG8gc2xpZ2h0
bHkgb3B0aW1pemUgdGhhdCBjYXNlLiBVc2UgZG93bmNhc3QgaW5zdGVhZCBvZiBzdGF0aWNfY2Fz
dC4KKyAgICAgICAgRGVsZXRlZCBlbGVtZW50TGluZWFnZSBhbmQgZWxlbWVudEFuY2VzdG9ycy4K
KworICAgICAgICAqIGRvbS9FbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvci5oOiBSZW5h
bWVkIEl0ZXJhdG9yQWRhcHRlciB0byBSYW5nZS4KKyAgICAgICAgTWFkZSBtb3JlIGZ1bmN0aW9u
IG1lbWJlcnMgY29uc3QuCisKKyAgICAgICAgKiBkb20vRWxlbWVudENoaWxkSXRlcmF0b3IuaDog
TW92ZWQgdGhlIGRlY2xhcmF0aW9ucyBvZiB0aGUgZnVuY3Rpb25zCisgICAgICAgIHRvIHRoZSB0
b3Agb2YgdGhlIGZpbGUsIHNpbmNlIHRoZSBjbGFzc2VzIGFyZSByZWFsbHkgaW1wbGVtZW50YXRp
b24gZGV0YWlscy4KKyAgICAgICAgUmVtb3ZlZCB0aGUgc2VwYXJhdGUgIkNvbnN0IiB2ZXJzaW9u
cyBvZiBldmVyeXRoaW5nIHNpbmNlIHdlIGNhbiBqdXN0IHVzZQorICAgICAgICBjb25zdCBpbiB0
aGUgdGVtcGxhdGUgYXJndW1lbnQgdHlwZSBpbnN0ZWFkLiBVc2UgdGhlIHRlcm0gIlJhbmdlIiBp
bnN0ZWFkCisgICAgICAgIG9mIHRoZSB0ZXJtICJJdGVyYXRvckFkYXB0ZXIiIGZvciB0aGUgY2xh
c3MgdGVtcGxhdGVzIGZvciB1c2UgaW4gcmFuZ2UtYmFzZWQKKyAgICAgICAgZm9yIGxvb3BzIHNp
bmNlIHRoYXQncyBjbG9zZXIgdG8gbW9kZXJuIEMrKyB0ZXJtaW5vbG9neS4gTWFkZSBtYW55IGZ1
bmN0aW9uCisgICAgICAgIG1lbWJlcnMgY29uc3Qgd2hlcmUgYXBwcm9wcmlhdGUuIERlbGV0ZWQg
ZWxlbWVudENoaWxkcmVuLgorCisgICAgICAgICogZG9tL0VsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IuaDogUmVtb3ZlZC4KKworICAgICAgICAqIGRvbS9FbGVtZW50SXRlcmF0b3IuaDogQ2hhbmdl
ZCBFbGVtZW50SXRlcmF0b3IgdG8gZGVyaXZlIGZyb20gc3RkOjppdGVyYXRvcgorICAgICAgICB0
byBtYWtlIGl0ZXJhdG9yIHRyYWl0cyB3b3JrIGZvciBhbGwgY2xhc3NlcyBkZXJpdmVkIGZyb20g
aXQuIE1hZGUgY29uc3RydWN0b3JzCisgICAgICAgIG9mIEVsZW1lbnRJdGVyYXRvciBwcml2YXRl
IHRvIG1ha2UgaXQgY2xlYXIgaXQncyBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGEgYmFzZQorICAg
ICAgICBjbGFzcyBhbmQgbm90IGluc3RhbnRpYXRlZC4gQWRkZWQgYSBwcm90ZWN0ZWQgYXRFbmQg
ZnVuY3Rpb24gdGhhdCdzIHVzZWZ1bCBpbiB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2Yg
c29tZSBmdW5jdGlvbnMgdGhhdCB3YW50IHRvIGNoZWNrIHRoZSBlbmQgb2YgaXRlcmF0aW9uIHdp
dGhvdXQKKyAgICAgICAgYWxsb2NhdGluZyBhbiAiZW5kIiBpdGVyYXRvci4gRGVsZXRlZCBFbGVt
ZW50Q29uc3RJdGVyYXRvci4KKworICAgICAgICAqIGRvbS9MaXZlTm9kZUxpc3QuY3BwOiBSZW1v
dmVkIHNvbWUgdW5uZWVkZWQgaW5jbHVkZXMsIGluY2x1ZGluZyBIVE1MQ29sbGVjdGlvbi5oLgor
ICAgICAgICAoV2ViQ29yZTo6TGl2ZU5vZGVMaXN0OjpMaXZlTm9kZUxpc3QpOiBDaGFuZ2VkIHRv
IHRha2UgSXNSb290ZWRBdERvY3VtZW50IGFyZ3VtZW50LgorICAgICAgICBOZWVkIHRvIGhhdmUg
dGhpcyBwYXNzZWQgdXAgZnJvbSB0aGUgYmFzZSBjbGFzcyByYXRoZXIgdGhhbiBjb21wdXRlZCBi
eSBhIHZpcnR1YWwKKyAgICAgICAgZnVuY3Rpb24gc28gaXQncyBjb3JyZWN0IHdoaWxlIHRoZSBv
YmplY3QgaXMgYmVpbmcgY29uc3RydWN0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMaXZlTm9kZUxp
c3Q6OmludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50IGNvbnN0KTogU2V0IG1faXNSb290ZWRBdERv
Y3VtZW50LAorICAgICAgICBzaW5jZSB3aGV0aGVyIHRoZSBvd25lciBub2RlIGlzIGNvbm5lY3Rl
ZCBtYXkgaGF2ZSBjaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6TGl2ZU5vZGVMaXN0Ojpyb290
Tm9kZSBjb25zdCk6IE1vdmVkIHRvIHRoZSBoZWFkZXIgYW5kIGlubGluZWQuCisKKyAgICAgICAg
KiBkb20vTGl2ZU5vZGVMaXN0Lmg6IFVwZGF0ZWQgc2luY2UgQ29sbGVjdGlvblRyYXZlcnNhbCBu
b3cgdXNlcyB0aGUKKyAgICAgICAgbW9yZSBtb2Rlcm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ciwgbm90IHRoZSBvbGRlciBvbmUgdGhhdCB1c2VkIGEgdmVjdG9yIG9mCisgICAgICAgIGFuY2Vz
dG9ycyB0byBkbyB0aGUgaXRlcmF0aW9uLiBBbHNvIHVzZSBXVEZfTUFLRV9JU09fTk9OQUxMT0NB
VEFCTEUgc2luY2UKKyAgICAgICAgTGl2ZU5vZGVMaXN0IGlzIGFuIGFic3RyYWN0IGNsYXNzLCBt
YWRlIHNvbWUgbWVtYmVyIHByb3RlY3RlZCwgYWRkZWQgdGhlCisgICAgICAgIElzUm9vdGVkQXRE
b2N1bWVudCBjb25zdHJ1Y3RvciBhcmd1bWVudCwgbV9pc1Jvb3RlZEF0RG9jdW1lbnRXaGVuQ29u
bmVjdGVkLAorICAgICAgICBhbmQgbV9pc1Jvb3RlZEF0RG9jdW1lbnQuIEFsc28gcmVtb3ZlZCBD
YWNoZWRMaXZlTm9kZUxpc3Q6OnJvb3ROb2RlIHNpbmNlIGl0CisgICAgICAgIHdhcyBpZGVudGlj
YWwgdG8gTGl2ZU5vZGVMaXN0Ojpyb290Tm9kZS4gRmluYWxseSwgcmV2aXNlZAorICAgICAgICBD
YWNoZWRMaXZlTm9kZUxpc3Q6OmludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50IHNvIGl0IGNhbGxl
ZCB0aHJvdWdoIHRvIHRoZQorICAgICAgICBiYXNlIGNsYXNzIGF0IHRoZSBleGFjdCByaWdodCBt
b21lbnQgc28gY2hlY2tpbmcgaXMgZG9uZSB3aXRoIHRoZSBvbGQgcm9vdAorICAgICAgICBub2Rl
IGFuZCBpbnZhbGlkYXRpbmcgaXMgZG9uZSB3aXRoIHRoZSBuZXcgcm9vdCBub2RlLCBzaW5jZSB0
aGV5IG1heSBub3QgYmUKKyAgICAgICAgdGhlIHNhbWUgZHVlIHRvIGNoYW5nZXMgaW4gd2hldGhl
ciB0aGUgb3duZXIgbm9kZSBpcyBjb25uZWN0ZWQuCisKKyAgICAgICAgKiBkb20vTmFtZU5vZGVM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVOb2RlTGlzdDo6TmFtZU5vZGVMaXN0KTog
UGFzcyBJc1Jvb3RlZEF0RG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpOYW1lTm9kZUxpc3Q6
OmNyZWF0ZSk6IE1vdmVkIGhlcmUgZnJvbSB0aGUgaGVhZGVyLgorICAgICAgICAqIGRvbS9OYW1l
Tm9kZUxpc3QuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcyBhbmQgY29tbWVudCwgbW92ZWQg
Y3JlYXRlCisgICAgICAgIGZ1Y250aW9uIG91dCBvZiB0aGUgaGVhZGVyLgorCisgICAgICAgICog
ZG9tL05vZGUuY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgSFRNTENvbGxlY3Rpb24u
aC4KKworICAgICAgICAqIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yRGF0YUxpc3Q6OmNsb3Nlc3QgY29uc3QpOiBVc2UgbGluZWFnZWVPZlR5cGUgaW5z
dGVhZCBvZiBhbgorICAgICAgICBleHBsaWNpdCBsb29wLgorICAgICAgICAoV2ViQ29yZTo6ZWxl
bWVudHNGb3JMb2NhbE5hbWUpOiBVc2UgZGVzY2VuZGFudHNPZlR5cGUgaW5zdGVhZCBvZiBlbGVt
ZW50RGVzY2VuZGFudHMuCisgICAgICAgIChXZWJDb3JlOjphbnlFbGVtZW50KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlVGFnTmFtZVNl
bGVjdG9yRGF0YSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRh
TGlzdDo6ZXhlY3V0ZVNpbmdsZUNsYXNzTmFtZVNlbGVjdG9yRGF0YSBjb25zdCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZVNlbGVjdG9y
RGF0YSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6
ZXhlY3V0ZVNpbmdsZU11bHRpU2VsZWN0b3JEYXRhIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29tcGlsZWRTaW1wbGVTZWxlY3RvckNo
ZWNrZXIgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6
OmV4ZWN1dGVDb21waWxlZFNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQgY29uc3Qp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVDb21w
aWxlZFNpbmdsZU11bHRpU2VsZWN0b3JEYXRhIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBk
b20vU2xvdEFzc2lnbm1lbnQuY3BwOiBVcGRhdGVkIGluY2x1ZGVzLgorCisgICAgICAgICogZG9t
L1R5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oOiBNb3ZlZCB0aGUgZGVjbGFyYXRpb25z
IG9mIHRoZSBmdW5jdGlvbnMKKyAgICAgICAgdG8gdGhlIHRvcCBvZiB0aGUgZmlsZSwgc2luY2Ug
dGhlIGNsYXNzZXMgYXJlIHJlYWxseSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgorICAgICAgICBS
ZW5hbWVkIHRoZSBjbGFzc2VzIHRvIHRha2Ugb3V0IHRoZSB3b3JkICJ0eXBlZCIgc2luY2UgdGhl
c2UgaXRlcmF0b3JzIGFyZSB0aGUKKyAgICAgICAgc2FtZSBhcyB0aGUgYW5jZXN0b3IgYW5kIGNo
aWxkcmVuIGl0ZXJhdG9yczsgdGhpcyBnaXZlcyB0aGVzZSB0aGUgc2FtZSBuYW1lIGFzCisgICAg
ICAgIHRoZSBjbGFzc2VzIGluIHRoZSBkZWxldGVkIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Iu
aCBmaWxlLCBhbmQgd2UgY2FuIGZvbGxvdworICAgICAgICB1cCBieSByZW5hbWluZyB0aGlzIGZp
bGUgdG8gdGFrZSAiVHlwZWQiIG91dCBvZiB0aGUgbmFtZSBvZiB0aGUgZmlsZSwgdG9vLgorICAg
ICAgICBSZW1vdmVkIHRoZSBzZXBhcmF0ZSAiQ29uc3QiIHZlcnNpb25zIG9mIGV2ZXJ5dGhpbmcg
c2luY2Ugd2UgY2FuIGp1c3QgdXNlCisgICAgICAgIGNvbnN0IGluIHRoZSB0ZW1wbGF0ZSBhcmd1
bWVudCB0eXBlIGluc3RlYWQuIFVzZSB0aGUgdGVybSAiUmFuZ2UiIGluc3RlYWQKKyAgICAgICAg
b2YgdGhlIHRlcm0gIkl0ZXJhdG9yQWRhcHRlciIgZm9yIHRoZSBjbGFzcyB0ZW1wbGF0ZXMgZm9y
IHVzZSBpbiByYW5nZS1iYXNlZAorICAgICAgICBmb3IgbG9vcHMgc2luY2UgdGhhdCdzIGNsb3Nl
ciB0byBtb2Rlcm4gQysrIHRlcm1pbm9sb2d5LiBNYWRlIG1hbnkgZnVuY3Rpb24KKyAgICAgICAg
bWVtYmVycyBjb25zdCB3aGVyZSBhcHByb3ByaWF0ZS4gQWRkZWQgYSBuZXcgc3BlY2lhbGl6YXRp
b24gdGhhdCBtYWtlcyBhCisgICAgICAgIGRlc2NlbmRhbnQgaXRlcmF0b3IgdGhhdCBpcyBmaWx0
ZXJlZCBiYXNlZCBvbiBhIGZ1bmN0aW9uLCBmb3IgdXNlIGluIGl0ZXJhdGluZworICAgICAgICBk
YXRhIGxpc3Qgc3VnZ2VzdGlvbnMuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCBj
b25zdCk6IFVzZSB0aGUgZnVuY3Rpb24KKyAgICAgICAgZGVzY2VuZGFudHNPZlR5cGU8SFRNTEJv
ZHlFbGVtZW50PiBpbnN0ZWFkIG9mIGdldEVsZW1lbnRCeVRhZ05hbWUoYm9keVRhZykuCisgICAg
ICAgIEFsc28gbWVyZ2VkIGFwcGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50IGluIGhlcmUuCisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OmFwcGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50IGNvbnN0KTog
RGVsZXRlZC4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6IERlbGV0ZWQgYXBwbHlFZGl0
aW5nU3R5bGVUb0VsZW1lbnQuCisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvblJ1bGVNYXRjaGVyOjpp
c0V4Y2x1ZGVkKTogVXNlIGxpbmVhZ2VPZlR5cGUgaW5zdGVhZCBvZgorICAgICAgICBlbGVtZW50
TGluZWFnZS4KKworICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tOiBVcGRhdGVkIGluY2x1ZGVzLgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDogRGl0
dG8uCisgICAgICAgICogaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oOiBEaXR0by4KKworICAg
ICAgICAqIGh0bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oOiBVcGRhdGVkIHRvIHVzZSB0aGUgbWV3
L3R5cGVkIHZlcnNpb24gb2YKKyAgICAgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci4gQWxz
byB1cGRhdGVkIHRvIHVzZSBzaG9ydGVyIHR5cGUgbmFtZXMuCisKKyAgICAgICAgKiBodG1sL0Nv
bG9ySW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpzdWdn
ZXN0ZWRDb2xvcnMgY29uc3QpOiBVc2UgdGhlIG5ldworICAgICAgICBIVE1MRGF0YUxpc3RFbGVt
ZW50OjpzdWdnZXN0aW9ucyBpbnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAgICog
aHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPHRyYXZlcnNhbFR5cGU+OjplbGVtZW50TWF0Y2hl
cyBjb25zdCk6CisgICAgICAgIFVwZGF0ZWQgdG8gdXNlIEhUTUxEYXRhTGlzdEVsZW1lbnQ6Omlz
U3VnZ2VzdGlvbiBhbmQgYWRkZWQgYSBjb21tZW50IGV4cGxhaW5pbmcKKyAgICAgICAgd2h5IHRo
YXQgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeSBpZiB3ZSBjb3JyZWN0IHRoZSBpbXBsZW1lbnRhdGlv
biB0byBtYXRjaCB0aGUKKyAgICAgICAgSFRNTCBzcGVjaWZpY2F0aW9uLgorCisgICAgICAgICog
aHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5pZGw6IFNwZWNpZnkgW1JlcXVpcmVzRXhpc3RpbmdBdG9t
U3RyaW5nXSBvbiB0aGUKKyAgICAgICAgYXJndW1lbnQgdG8gbmFtZWRJdGVtLCBhbmQgW0F0b21T
dHJpbmddIGZvciB0aGUgYXJndW1lbnQgdG8gaXRlbS4KKyAgICAgICAgKiBodG1sL0hUTUxDb2xs
ZWN0aW9uLmlkbDogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERhdGFMaXN0RWxlbWVudDo6aXNTdWdnZXN0aW9u
KTogQWRkZWQuCisgICAgICAgICogaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50Lmg6IEFkZGVkIGlz
U3VnZ2VzdGlvbiBhbmQgc3VnZ2VzdGlvbnMgZnVuY3Rpb25zIHNvCisgICAgICAgIGxvZ2ljIGFi
b3V0IHdoaWNoIGRhdGEgbGlzdCBvcHRpb25zIGFyZSBzdWdnZXN0aW9ucyBpcyBzaGFyZWQuCisK
KyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVsZW1l
bnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkpOiBSZWZhY3RvcmVkIHNvIHdlIGdldCBhIG1vcmUgZWZm
aWNpZW50CisgICAgICAgIGltcGxlbWVudGF0aW9uIHdoZW4gdGhlIHR5cGUgb2YgdGhlIGVsZW1l
bnQgaXMga25vd24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0
aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hpbGRBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgVXNl
IGxpbmVhZ2VPZlR5cGUgaW5zdGVhZCBvZiBlbGVtZW50TGluZWFnZS4KKworICAgICAgICAqIGh0
bWwvSFRNTEVsZW1lbnQuaDogUmVtb3ZlZCBzb21lIHVuZWVlZGVkIGZvcndhcmQgZGVjbGFyYXRp
b25zLgorCisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmZpbmRXaWRnZXRSZW5kZXJlcik6IFVzZSBhbmNlc3RvcnNPZlR5cGUgaW5zdGVhZCBv
ZiBhIGxvb3AuCisKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y29tcHV0ZVdpbGxWYWxp
ZGF0ZSBjb25zdCk6IFVzZQorICAgICAgICBhbmNlc3RvcnNPZlR5cGUgaW5zdGVhZCBvZiBhIGxv
b3AuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjplbmNsb3NpbmdG
b3JtQ29udHJvbEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5oOiBEZWxldGVkIHVudXNlZCBlbmNsb3NpbmdGb3JtQ29udHJvbEVsZW1lbnQu
CisKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbik6IFVzZQorICAgICAgICBzaG9ydCBmb3JtIENhY2hlZEhUTUxDb2xsZWN0aW9u
IGluc3RlYWQgb2Ygd3JpdGluZyBvdXQgYWxsIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudHMuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6b3duZXJOb2RlIGNvbnN0
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6
aW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQpOiBEaXR0by4KKworICAgICAgICAqIGh0bWwvSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsOiBTcGVjaWZ5IFtSZXF1aXJlc0V4aXN0aW5nQXRv
bVN0cmluZ10gb24KKyAgICAgICAgdGhlIGFyZ3VtZW50IHRvIG5hbWVkSXRlbS4KKworICAgICAg
ICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVk
ZSBvZiBIVE1MQ29sbGVjdGlvbi5oLgorCisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcDogQ2xlYXJlZCBzdHJheSBleGVjdXRhYmxlIGJpdC4KKworICAgICAgICAqIGh0bWwvSFRN
TElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojpz
ZXR1cERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMpOiBVc2UgdGhlIG5ldworICAgICAgICBIVE1M
RGF0YUxpc3RFbGVtZW50OjpzdWdnZXN0aW9ucyBpbnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLgor
CisgICAgICAgICogaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxPcHRHcm91cEVsZW1lbnQ6Om93bmVyU2VsZWN0RWxlbWVudCBjb25zdCk6IFVzZSBh
bmNlc3RvcnNPZlR5cGUKKyAgICAgICAgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgor
CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MT3B0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBVc2UgYW5jZXN0b3JzT2ZUeXBl
IGluc3RlYWQgb2YKKyAgICAgICAgY2FsbGluZyBvd25lckRhdGFMaXN0RWxlbWVudC4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50Ojpvd25lckRhdGFMaXN0RWxlbWVu
dCBjb25zdCk6IERlbGV0ZWQuIFNpbmNlIHRoZQorICAgICAgICBzYW1lIG9wdGlvbiBjYW4gYmUg
dXNlZCBieSBuZXN0ZWQgZGF0YSBsaXN0IGVsZW1lbnRzLCB0aGUgY29uY2VwdCBvZiBhIHNpbmds
ZQorICAgICAgICAib3duZXIiIGRhdGEgbGlzdCBlbGVtZW50IGlzbid0IGZ1bGx5IGNvcnJlY3Qu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6b3duZXJTZWxlY3RFbGVtZW50
IGNvbnN0KTogVXNlIGFuY2VzdG9yc09mVHlwZQorICAgICAgICBpbnN0ZWFkIG9mIGEgaGFuZC13
cml0dGVuIGxvb3AuCisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oOiBEZWxldGVk
IG93bmVyRGF0YUxpc3RFbGVtZW50LgorCisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uc0NvbGxl
Y3Rpb24uaWRsOiBTcGVjaWZ5IFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gb24KKyAgICAg
ICAgdGhlIGFyZ3VtZW50IHRvIG5hbWVkSXRlbS4KKworICAgICAgICAqIGh0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisKKyAgICAgICAgKiBodG1sL0hU
TUxTZWxlY3RFbGVtZW50LmlkbDogU3BlY2lmeSBbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmdd
IG9uCisgICAgICAgIHRoZSBhcmd1bWVudCB0byBuYW1lZEl0ZW0uCisKKyAgICAgICAgKiBodG1s
L0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUNl
bGxFbGVtZW50OjphZGRpdGlvbmFsUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUgY29uc3QpOgor
ICAgICAgICBVc2UgYXV0byBzaW5jZSBmaW5kUGFyZW50VGFibGUgbm93IHJldHVybnMgYSBjb25z
dCB0YWJsZSBwb2ludGVyLgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDb2xFbGVtZW50OjphZGRpdGlvbmFsUHJlc2Vu
dGF0aW9uQXR0cmlidXRlU3R5bGUgY29uc3QpOgorICAgICAgICBEaXR0by4KKworICAgICAgICAq
IGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVF
bGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUpOiBNYWRlIGNvbnN0LgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRhYmxlRWxlbWVudDo6YWRkaXRpb25hbENlbGxTdHlsZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6YWRkaXRpb25hbEdyb3VwU3R5bGUpOiBE
aXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuaDogTWFkZSB0aGUgZnVuY3Rp
b25zIGNvbnN0LCBhbmQgbV9zaGFyZWRDZWxsU3R5bGUKKyAgICAgICAgbXV0YWJsZS4KKworICAg
ICAgICAqIGh0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRhYmxlUGFydEVsZW1lbnQ6OmZpbmRQYXJlbnRUYWJsZSBjb25zdCk6IFVzZSBhbmNlc3Rv
cnNPZlR5cGUKKyAgICAgICAgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLiBBbHNvIHJl
dmlzZWQgcmV0dXJuIHR5cGUgdG8gYmUgY29uc3QtY29uc2lzdGVudC4KKyAgICAgICAgKiBodG1s
L0hUTUxUYWJsZVBhcnRFbGVtZW50Lmg6IFVwZGF0ZWQgcmV0dXJuIHR5cGUuCisKKyAgICAgICAg
KiBodG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIEhU
TUxDb2xsZWN0aW9uLmguCisKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcmVudEhUTUxFbGVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaXJlY3Rpb25G
b3JGb3JtRGF0YSBjb25zdCk6IFVzZQorICAgICAgICBsaW5lYWdlT2ZUeXBlIHJhdGhlciB0aGFu
IGEgaGFuZC13cml0dGVuIGxvb3AuIEFsc28gZ290IHJpZCBvZiB0aGUgbXVsdGlwbGUKKyAgICAg
ICAgc3RyaW5ncyBpbiByZXR1cm4gcGF0aHMgc2luY2UgdGhlIGZ1bmN0aW9uIGFsd2F5cyByZXR1
cm5zIG9uZSBvZiB0d28gc3RyaW5ncy4KKworICAgICAgICAqIGh0bWwvTGFiZWxzTm9kZUxpc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGFiZWxzTm9kZUxpc3Q6OkxhYmVsc05vZGVMaXN0KTog
UGFzcyBJc1Jvb3RlZEF0RG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpMYWJlbHNOb2RlTGlz
dDo6Y3JlYXRlKTogTW92ZWQgaGVyZSBmcm9tIGhlYWRlci4KKyAgICAgICAgKiBodG1sL0xhYmVs
c05vZGVMaXN0Lmg6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZSwgdHdlYWtlZCBjb2Rpbmcgc3R5
bGUgYSBiaXQsCisgICAgICAgIG1vdmVkIGNyZWF0ZSBmdW5jdGlvbiBpbnRvIHRoZSAuY3BwIGZp
bGUsIHJlbW92ZWQgb3ZlcnJpZGUgb2YgaXNSb290ZWRBdERvY3VtZW50LgorCisgICAgICAgICog
aHRtbC9NZWRpYURvY3VtZW50LmNwcDogVXBkYXRlZCBpbmNsdWRlcy4KKworICAgICAgICAqIGh0
bWwvUmFkaW9Ob2RlTGlzdC5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKyAgICAgICAg
KFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6OlJhZGlvTm9kZUxpc3QpOiBQYXNzIElzUm9vdGVkQXRE
Y291bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6OmNyZWF0ZSk6IE1vdmVk
IHRoaXMgaGVyZSBmcm9tIHRoZSBoZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjpub25FbXB0eVJh
ZGlvQnV0dG9uKTogUmVuYW1lZCBmcm9tIHRvUmFkaW9CdXR0b25JbnB1dEVsZW1lbnQgdG8gbWFr
ZQorICAgICAgICBhIGxpdHRsZSBjbGVhcmVyIHdoYXQgdGhlIGZ1bmN0aW9uIGRvZXMuCisgICAg
ICAgIChXZWJDb3JlOjpSYWRpb05vZGVMaXN0Ojp2YWx1ZSBjb25zdCk6IFVwZGF0ZWQgdG8gdXNl
IG5vbkVtcHR5UmFkaW9CdXR0b24gYW5kCisgICAgICAgIHN0cmFpZ2h0ZW4gb3V0IHRoZSBsb29w
IGEgdGlueSBiaXQuCisgICAgICAgIChXZWJDb3JlOjpSYWRpb05vZGVMaXN0OjpzZXRWYWx1ZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6Y2hlY2tFbGVtZW50TWF0
Y2hlc1JhZGlvTm9kZUxpc3RGaWx0ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmFkaW9Ob2RlTGlzdDo6ZWxlbWVudE1hdGNoZXMgY29uc3QpOiBNZXJnZWQgaW4gdGhlIGxv
Z2ljIGZyb20KKyAgICAgICAgY2hlY2tFbGVtZW50TWF0Y2hlc1JhZGlvTm9kZUxpc3RGaWx0ZXIs
IHNpbmNlIHRoZSBzZXBhcmF0ZSBmdW5jdGlvbiB3YXNuJ3QgaGVscGZ1bC4KKyAgICAgICAgKiBo
dG1sL1JhZGlvTm9kZUxpc3QuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4gTW92ZWQgdGhl
IGNyZWF0ZSBmdW5jdGlvbiBvdXQKKyAgICAgICAgb2YgdGhlIGhlYWRlci4gUmVtb3ZlZCBpc1Jv
b3RlZEF0RG9jdW1lbnQgZnVuY3Rpb24gYW5kIGRhdGEgbWVtYmVyLiBSZW1vdmVkCisgICAgICAg
IHVubmVlZGVkIG92ZXJyaWRlIG9mIHRoZSBpdGVtIGZ1bmN0aW9uIHRvIHRpZ2h0ZW4gdGhlIHJl
dHVybiB0eXBlOyBub3QgdXNlZCBpbgorICAgICAgICBXZWJDb3JlIGFuZCBub3QgaGVscGZ1bCBm
b3IgYmluZGluZ3MuCisgICAgICAgIChXZWJDb3JlOjpSYWRpb05vZGVMaXN0OjppdGVtIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL1JhZGlvTm9kZUxpc3QuaWRsOiBSZW1vdmVkIHVu
bmVlZGVkIGdldHRlcjsgdGhlIGluaGVyaXRlZCBvbmUgZnJvbSBOb2RlTGlzdAorICAgICAgICB3
b3JrcyBjb3JyZWN0bHksIGFuZCB0aGlzIGlzbid0IG1vcmUgZWZmaWNpZW50IGJlY2F1c2Ugb2Yg
YSBtb3JlIHNwZWNpZmljIHR5cGUuCisKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OnN1Z2dlc3Rpb25z
KTogVXNlIEhUTUxEYXRhTGlzdEVsZW1lbnQ6OnN1Z2dlc3Rpb25zCisgICAgICAgIGluc3RlYWQg
b2YgSFRNTENvbGxlY3Rpb24uIEFsc28gYWRkZWQgYSBGSVhNRSBiZWNhdXNlIHRoZSBjdXJyZW50
IGxvZ2ljIGlzCisgICAgICAgIG5vdCByaWdodCBhY3Jvc3MgbGFuZ3VhZ2VzIGFuZCB3aXRoIG5v
bi1BU0NJSSBjaGFyYWN0ZXJzLgorCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUu
Y3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgSFRNTENvbGxlY3Rpb24uaC4KKworICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRFbGVtZW50c0J5
Q29tcHV0ZWRSb2xlKToKKyAgICAgICAgVXNlIGRlc2NlbmRhbnRzT2ZUeXBlIGluc3RlYWQgb2Yg
ZWxlbWVudERlc2NlbmRhbnRzLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0
TWF0Y2hlZFN0eWxlc0Zvck5vZGUpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlCisgICAgICAgIGluc3Rl
YWQgb2YgYSBoYW5kLXdyaXR0ZW4gbG9vcC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6Omluc3BlY3QpOiBVc2UgaXNFbGVtZW50Tm9kZSBhbmQgaXNEb2N1bWVudE5vZGUKKyAgICAg
ICAgaW5zdGVhZCBvZiB0aGUgbXVjaCBzbG93ZXIgbm9kZVR5cGUuCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0TW91c2VkT3Zlck5vZGUpOiBVc2UgaXNUZXh0
Tm9kZSBpbnN0ZWFkIG9mCisgICAgICAgIHRoZSBtdWNoIHNsb3dlciBub2RlVHlwZS4KKworICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDogVXBkYXRlZCBpbmNsdWRlcy4KKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6IERpdHRvLgorCisgICAgICAg
ICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250YWluaW5n
TGlua0VsZW1lbnQpOiBBZGRlZC4gVXNlcyBsaW5lYWdlT2ZUeXBlIGluc3RlYWQgb2YgZWxlbWVu
dExpbmVhZ2UuCisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZG9TeXN0ZW1EcmFn
KTogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXhp
c1Njcm9sbFNuYXBPZmZzZXRzLmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIEhUTUxDb2xsZWN0aW9u
LmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50Lmg6IFJl
ZHVjZWQgaW5jbHVkZXMsIHVzZSBmb3J3YXJkIGRlY2xhcmF0aW9ucy4KKworICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6
cGFpbnRTbGlkZXJUaWNrcyk6IFVzZSBIVE1MRGF0YUxpc3RFbGVtZW50OjpzdWdnZXN0aW9ucwor
ICAgICAgICBpbnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1
cHBvcnQ6OnVwZGF0ZU1hc2tlZEFuY2VzdG9yU2hvdWxkSXNvbGF0ZUJsZW5kaW5nKToKKyAgICAg
ICAgVXNlIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEgaGFuZC13cml0dGVuIGxvb3AuCisK
KyAgICAgICAgKiBzdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpJbnZhbGlkYXRvcjo6aW52YWxpZGF0ZVN0eWxlV2l0aE1hdGNoRWxlbWVudCk6IFJl
bW92ZSBhbiB1bm5lZWRlZAorICAgICAgICBsb2NhbCB2YXJpYWJsZSBhbmQgdW5uZWVkZWQgYnJh
Y2VzLgorCisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6aXNBdFNoYWRvd0JvdW5kYXJ5KTogVXNlIHRoZSBpczxTaGFkb3dSb290PiBm
dW5jdGlvbi4KKworICAgICAgICAqIHN2Zy9TVkdBRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKTogVXNlIHRoZSBpczxTVkdF
bGVtZW50PiBmdW5jdGlvbi4KKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbGVtZW50Ojp1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbik6
IERpdHRvLgorCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDogTWFkZSBjb21wdXRlZFN0eWxl
IHB1YmxpYy4gQXQgbGVhc3Qgb25lIGNhbGwgc2l0ZSBub3cga25vd3MgdGhlCisgICAgICAgIHNw
ZWNpZmljIHR5cGUgU1ZHRWxlbWVudCwgYW5kIHNvIGNhbiBjYWxsIGl0IGV2ZW4gbW9yZSBlZmZp
Y2llbnRseSB0aGFuIGJlZm9yZS4gSWYKKyAgICAgICAgd2UgbGVmdCBpdCBwcml2YXRlIHdlJ2Qg
aGF2ZSB0byBjYXN0IHRvIHRoZSBiYXNlIGNsYXNzIHRvIGNhbGwgaXQsIGFuZCB0aGVuIHdvdWxk
IG5lZWQKKyAgICAgICAgdmlydHVhbCBmdW5jdGlvbiBkaXNwYXRjaC4KKworICAgICAgICAqIHht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9j
dW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudCk6IFVzZSBsaW5lYWdlT2ZUeXBlIGlu
c3RlYWQgb2YKKyAgICAgICAgZWxlbWVudExpbmVhZ2UuIEFsc28gYWRkIGEgbnVsbCBjaGVjayB0
aGF0IHNlZW1zIHRvIGhhdmUgYmVlbiBuZWVkZWQgYmVmb3JlIHRvby4KKwogMjAyMC0wMi0xNiAg
WmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0Zsb2F0XSBT
aW1wbGlmeSBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9h
dEF2b2lkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMmQzOTEwZWMxZGNiZmIyYTRkMDNhMmJlZGM2ZGExN2JhNmEy
MzQ5Ny4uZWJjOTM5OTgyOTc1ZTE3ODIxNjllY2FkZTExYmUzNDhkZTQxNDk5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0OCBAQAorMjAyMC0wMi0xNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRvcnMgaW1wbGVtZW50YXRpb24gYW5kIHVz
YWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4
MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Y29udGFpbmVyRWxlbWVudEZvckVsZW1lbnQpOiBVZXMgYW5jZXN0b3JzT2ZU
eXBlIGluc3RlYWQgb2Ygb3duZXJEYXRhTGlzdEVsZW1lbnQuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwOiBVcGRhdGVkIGluY2x1ZGVz
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGFMaXN0U3Vn
Z2VzdGlvblBpY2tlcik6IFBhc3MgcmVmZXJlbmNlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpXZWJEYXRhTGlzdFN1Z2dlc3Rp
b25QaWNrZXIpOiBUYWtlIHJlZmVyZW5jZXMKKyAgICAgICAgaW5zdGVhZCBvZiBwb2ludGVycywg
c2luY2UgdGhleSBtdXN0IGJvdGggYmUgbm9uLW51bGwuCisgICAgICAgIChXZWJLaXQ6OldlYkRh
dGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6aGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKTogVXBk
YXRlZAorICAgICAgICB0byB1c2UgcmVmZXJlbmNlLgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpZFNlbGVjdE9wdGlvbik6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpZENsb3NlU3VnZ2VzdGlvbnMp
OiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpj
bG9zZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNr
ZXI6OmRpc3BsYXlXaXRoQWN0aXZhdGlvblR5cGUpOiBEaXR0by4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmg6IE1hcmtl
ZCB0aGUgY2xhc3MKKyAgICAgICAgZmluYWwsIG1hZGUgbW9yZSBmdW5jdGlvbnMgcHJpdmF0ZSwg
dXNlIHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycywKKyAgICAgICAgcmVuYW1lZCBtX2Rh
dGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQgdG8gbV9jbGllbnQgc2luY2UgdGhlcmUgaXMgb25seSBv
bmUKKyAgICAgICAgY2xpZW50IHdlIGFyZSBkZWFsaW5nIHdpdGggaW4gdGhpcyBjbGFzcy4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lOjpjb250YWluc0FueUZvcm1FbGVtZW50cyBjb25zdCk6IFVzZSBjaGlsZHJl
bk9mVHlwZSBpbnN0ZWFkCisgICAgICAgIG9mIGEgaGFuZC13cml0dGVuIGxvb3AuCisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lOjpjb250YWluc0FueUZvcm1Db250cm9scyBjb25zdCk6IERpdHRv
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZXRBY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIpOiBUYWtl
IHJlZmVyZW5jZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOiBVcGRh
dGVkIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OmNvbnRhaW5pbmdMaW5rQW5jaG9yRWxlbWVu
dCk6IFVzZSBsaW5lYWdlT2ZUeXBlIGluc3RlYWQgb2YgZWxlbWVudExpbmVhZ2UuCisgICAgICAg
IEFsc28gcmVuYW1lZCB0byBlbXBoYXNpemUgdGhhdCB0aGlzIGZ1bmN0aW9uIG9ubHkgcmV0dXJu
cyBIVE1MQW5jaG9yRWxlbWVudCBsaW5rcy4KKyAgICAgICAgKFdlYktpdDo6ZWxlbWVudFBvc2l0
aW9uSW5mb3JtYXRpb24pOiBVcGRhdGVkIGZvciBuYW1lIGFuZCB0eXBlIGNoYW5nZS4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVudCk6IERpdHRvLgorCiAy
MDIwLTAyLTE1ICBQYXZlbCBGZWxkbWFuICA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+CiAKICAg
ICAgICAgW0dlb2NsdWVdIEF2b2lkIHVzYWdlIG9mIHByb3ZpZGVyIGluIGNhbGxiYWNrcyBhZnRl
ciBpdCBoYXMgYmVlbiBkZXN0cm95ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBj
YWMwODcwZGI1MDYzYWM4OTk0NDY4M2I2NmNkMDMwYTk4OTVhYmNhLi45ZTg2YzZlYTcxYjEzOTdh
MWNiNWZjMTQzNTBkZmVjOTdjYmIzNzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMjAtMDItMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlzZSBET00gaXRlcmF0b3JzIGltcGxlbWVudGF0aW9uIGFuZCB1c2Fn
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3ODE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00v
RE9NRG9jdW1lbnQubW06IEN1dCBkb3duIG9uIGluY2x1ZGVzIGFuZCByZS1zb3J0ZWQgdGhlbS4K
KyAgICAgICAgKiBET00vRE9NRG9jdW1lbnRGcmFnbWVudC5tbTogRGl0dG8uCisgICAgICAgICog
RE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW06IERpdHRvLgorCiAyMDIwLTAyLTE0ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBNYXNrIFdlYkdMIHN0cmluZ3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCmluZGV4IGRjMzhkNmJkZjFlM2UzYjcwOGZhYmI2MjRjM2FjZGJmOTFhZDZk
OGUuLjFjMTQzYjNjMGYwZWFmMzMxNzBkNzZkN2I0YTE4MjA2ZjJmMTM2NjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQpAQCAtMzkwLDcgKzM5MCw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JL
X0hFQURFUlMKICAgICBkb20vRWxlbWVudENoaWxkSXRlcmF0b3IuaAogICAgIGRvbS9FbGVtZW50
Q29udGV4dC5oCiAgICAgZG9tL0VsZW1lbnREYXRhLmgKLSAgICBkb20vRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvci5oCiAgICAgZG9tL0VsZW1lbnRJZGVudGlmaWVyLmgKICAgICBkb20vRWxlbWVu
dEl0ZXJhdG9yLmgKICAgICBkb20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjEx
MDJhNDU2YTMxZDUyMWYwNjJjMWQwODFiN2ZiZTM3Y2UwMDQ5Zi4uOTAxMTdlNjRhNTExYjFiNWZh
OTQxYjdmNzM3N2FjZTkwN2IyYzkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjY5MSw3ICsyNjkxLDYgQEAKIAkJOTNEMTk2
MzMxRDZDQUI4MjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNEMTk2MzIxRDZDQUI4MjAwRkM3RTQ3IC8qIEV4Y2Vw
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTkzRDQzNzlGMUQ1N0IxNTMwMEFCODVFQSAvKiBKU0V4ZWNTdGF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEY5MzREODMxMTg5RjFFRTAwNTA4RDVE
IC8qIEpTRXhlY1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTNENDM3QTAxRDU3QjE5QTAwQUI4NUVBIC8qIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5QjU2QzlBODFDODkzMTI4MDBDNDU2REYgLyogQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5M0Q0
MzdBMTFENTdCM0Y0MDBBQjg1RUEgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQURFMTFGNEExOEQ4MzEx
QjAwNzg5ODNCIC8qIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q0MzdBMjFENTdCM0ZFMDBBQjg1
RUEgLyogVVJMVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1NkI5RENBMTg5REUxMDAwMEJCODQyQyAvKiBVUkxVdGlscy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDQzN0EzMUQ1N0I3RTIw
MEFCODVFQSAvKiBKU01lZGlhTGlzdEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ3MjZGRTcxNkQ5RjIwNDAwM0E0RTZEIC8qIEpTTWVkaWFM
aXN0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNEOUQ1M0MwREEyN0UxODAwNzcyMTZDIC8qIFJhbmdlQm91bmRhcnlQb2ludC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNEOUQ1M0IwREEy
N0UxODAwNzcyMTZDIC8qIFJhbmdlQm91bmRhcnlQb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDcxMSw2ICsxMDcxMCw3IEBACiAJCTkz
ODBGNDcxMDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdpZGdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzODBGNDcyMDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdpZGdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5MzgwRjQ3NzA5QTExQUNDMDAxRkRCMzQgLyogV2lkZ2V0TWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdpZGdldE1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTM4MUI5NDEyM0Y5QjBFMDAwNzExOEI0IC8qIFJhZGlvTm9kZUxpc3Qu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFJhZGlvTm9kZUxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5MzgyQUFCMTBEOEMzODYxMDBGMzU3QTYgLyogTm9kZVdpdGhJbmRleC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOb2RlV2l0aEluZGV4Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzODJERjU3MTBBOEQ1QzkwMDkyNTY1MiAvKiBDb2xvclNwYWNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yU3BhY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTM4RTY1RjAwOUYwOTg0MDAwOEE0OEVDIC8qIEpTSFRNTEVsZW1l
bnRXcmFwcGVyRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNI
VE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwpAQCAtMTIyNTYsNyArMTIyNTYsNiBAQAogCQlBRERBOTRCRjE5Njg2RjgwMDA0
NTMwMjkgLyogSlNEb2N1bWVudEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0RvY3VtZW50Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFE
REYxQUQ0MTI1N0NEOUEwMDAzQTc1OSAvKiBSZW5kZXJTVkdQYXRoLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1BhdGguY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBRERGMUFENTEyNTdDRDlBMDAwM0E3NTkgLyogUmVuZGVyU1ZHUGF0
aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdQYXRoLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUFERTExRjRBMThEODMxMUIwMDc4OTgzQiAvKiBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQURFMTY3MzYxODEwNTBDMzAwNDYzQTJFIC8qIFJlbmRlclB0ci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQURFQzc4RjcxOEVFNTMwODAwMTMxNUMyIC8qIEpTRWxlbWVudEN1c3RvbS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0VsZW1lbnRDdXN0b20uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURGRTJCNTQxQkQ1RjQxMjAwREFCNDU3IC8qIFJlc291
cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBSZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjIxMjMsNiArMjIxMjIsNyBAQAogCQkJCUY1NUIzRDk4MTI1MUYxMkQwMDNF
RjI2OSAvKiBSYWRpb0lucHV0VHlwZS5oICovLAogCQkJCUI2NThGRkEzMTUyMkVGQUEwMERENTU5
NSAvKiBSYWRpb05vZGVMaXN0LmNwcCAqLywKIAkJCQlCNjU4RkZBNDE1MjJFRkFBMDBERDU1OTUg
LyogUmFkaW9Ob2RlTGlzdC5oICovLAorCQkJCTkzODFCOTQxMjNGOUIwRTAwMDcxMThCNCAvKiBS
YWRpb05vZGVMaXN0LmlkbCAqLywKIAkJCQlGNTVCM0Q5OTEyNTFGMTJEMDAzRUYyNjkgLyogUmFu
Z2VJbnB1dFR5cGUuY3BwICovLAogCQkJCUY1NUIzRDlBMTI1MUYxMkQwMDNFRjI2OSAvKiBSYW5n
ZUlucHV0VHlwZS5oICovLAogCQkJCUY1NUIzRDlCMTI1MUYxMkQwMDNFRjI2OSAvKiBSZXNldElu
cHV0VHlwZS5jcHAgKi8sCkBAIC0yODA5NSw3ICsyODA5NSw2IEBACiAJCQkJMzEzQkNFMUIyMzVF
M0JEQjAwRkMzOUU1IC8qIEVsZW1lbnRDb250ZXh0LmggKi8sCiAJCQkJQjVCN0ExNkYxN0MxMDgw
NjAwRTRBQTBBIC8qIEVsZW1lbnREYXRhLmNwcCAqLywKIAkJCQlCNUI3QTE2RTE3QzEwNDgwMDBF
NEFBMEEgLyogRWxlbWVudERhdGEuaCAqLywKLQkJCQlBREUxMUY0QTE4RDgzMTFCMDA3ODk4M0Ig
LyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oICovLAogCQkJCTJEMkJFQjJGMjIzNEEzMzQw
MDU1NDRDQSAvKiBFbGVtZW50SWRlbnRpZmllci5oICovLAogCQkJCUU0QUU3QzE1MTdEMUJCOTUw
MDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0b3IuaCAqLywKIAkJCQlFNDAxQzI3NDE3Q0U1M0VDMDBD
NDFBMzUgLyogRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oICovLApAQCAtMjk3NTksNyArMjk3
NTgsNiBAQAogCQkJCUU0NkEyQjFFMTdDQTc2QjEwMDBEQkNEOCAvKiBFbGVtZW50Q2hpbGRJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEzQkNFMUMyMzVFM0JFNTAwRkMzOUU1IC8qIEVs
ZW1lbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCNUI3QTE3MTE3QzEwQUMwMDBFNEFB
MEEgLyogRWxlbWVudERhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzRDQzN0ExMUQ1N0IzRjQw
MEFCODVFQSAvKiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyRDJCRUIzMTIyMzRBMzM1MDA1NTQ0Q0EgLyogRWxlbWVudElkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0QUU3QzE2MTdEMUJCOTUwMDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUU0MDFDMjc1MTdDRTUzRUMwMEM0MUEzNSAvKiBFbGVtZW50
SXRlcmF0b3JBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXgg
MjA5ZWI4ZTY1OGUwYjczNDE4ZWMyY2QwMGNkODBhNDE2ZmEyOTMzYS4uNDU4YTQwNTdlMmNmZmQy
ZjZmODVjZTgwMWNhZjlkNjFkMjgwMjlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTEwNDQsNyAr
MTA0NCw3IEBAIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojptb3VzZUJ1dHRvbkxp
c3RlbmVyKE1vdXNlQnV0dG9uTGlzdGVuZXJSZXN1bHRGCiAKICAgICAvLyBjaGVjayBpZiBvdXIg
cGFyZW50IGlzIGEgbW91c2UgYnV0dG9uIGxpc3RlbmVyCiAgICAgLy8gRklYTUU6IERvIHRoZSBj
b250aW51YXRpb24gc2VhcmNoIGxpa2UgYW5jaG9yRWxlbWVudCBkb2VzCi0gICAgZm9yIChhdXRv
JiBlbGVtZW50IDogZWxlbWVudExpbmVhZ2UoaXM8RWxlbWVudD4oKm5vZGUpID8gZG93bmNhc3Q8
RWxlbWVudD4obm9kZSkgOiBub2RlLT5wYXJlbnRFbGVtZW50KCkpKSB7CisgICAgZm9yIChhdXRv
JiBlbGVtZW50IDogbGluZWFnZU9mVHlwZTxFbGVtZW50PihpczxFbGVtZW50Pigqbm9kZSkgPyBk
b3duY2FzdDxFbGVtZW50Pigqbm9kZSkgOiAqbm9kZS0+cGFyZW50RWxlbWVudCgpKSkgewogICAg
ICAgICAvLyBJZiB3ZSd2ZSByZWFjaGVkIHRoZSBib2R5IGFuZCB0aGlzIGlzIG5vdCBhIGNvbnRy
b2wgZWxlbWVudCwgZG8gbm90IGV4cG9zZSBwcmVzcyBhY3Rpb24gZm9yIHRoaXMgZWxlbWVudCB1
bmxlc3MgZmlsdGVyIGlzIEluY2x1ZGVCb2R5RWxlbWVudC4KICAgICAgICAgLy8gSXQgY2FuIGNh
dXNlIGZhbHNlIHBvc2l0aXZlcywgd2hlcmUgZXZlcnkgcGllY2Ugb2YgdGV4dCBpcyBsYWJlbGVk
IGFzIGFjY2VwdGluZyBwcmVzcyBhY3Rpb25zLgogICAgICAgICBpZiAoZWxlbWVudC5oYXNUYWdO
YW1lKGJvZHlUYWcpICYmIGlzU3RhdGljVGV4dCgpICYmIGZpbHRlciA9PSBFeGNsdWRlQm9keUVs
ZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA5NmYzM2NiNzM0YTcwODM2OWI0ZjNiYTNk
NTQ4NDg4ZTUwNDk1NzcwLi44YTgzMDBkMDk3ZTEwZmM0ZjMzMDM3MzM0MWMxMTRhMTcxOWEzMDAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotKiBDb3B5cmlnaHQg
KEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjM3NSwyMSArMjM3NSwxOSBAQCBBWENvcmVPYmplY3Qq
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3Qo
SFRNTEFyZWFFbAogICAgIGlmICghYXJlYSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBudWxscHRyOwotICAgIGZvciAoRWxlbWVu
dCogbWFwUGFyZW50ID0gYXJlYS0+cGFyZW50RWxlbWVudCgpOyBtYXBQYXJlbnQ7IG1hcFBhcmVu
dCA9IG1hcFBhcmVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChpczxIVE1MTWFw
RWxlbWVudD4oKm1hcFBhcmVudCkpIHsKLSAgICAgICAgICAgIHBhcmVudCA9IGFjY2Vzc2liaWxp
dHlQYXJlbnRGb3JJbWFnZU1hcChkb3duY2FzdDxIVE1MTWFwRWxlbWVudD4obWFwUGFyZW50KSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICBhdXRvKiBtYXBQYXJl
bnQgPSBhbmNlc3RvcnNPZlR5cGU8SFRNTE1hcEVsZW1lbnQ+KCphcmVhKS5maXJzdCgpOworICAg
IGlmICghbWFwUGFyZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIHBh
cmVudCA9IGFjY2Vzc2liaWxpdHlQYXJlbnRGb3JJbWFnZU1hcChtYXBQYXJlbnQpOwogICAgIGlm
ICghcGFyZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIGZvciAoY29u
c3QgYXV0byYgY2hpbGQgOiBwYXJlbnQtPmNoaWxkcmVuKCkpIHsKICAgICAgICAgaWYgKGNoaWxk
LT5lbGVtZW50UmVjdCgpLmNvbnRhaW5zKHBvaW50KSkKICAgICAgICAgICAgIHJldHVybiBjaGls
ZC5nZXQoKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1
bW4uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVD
b2x1bW4uY3BwCmluZGV4IGZkYzY3ZjhhYzE1NmE1YWRiYmFhNjEzNTc2Yjg2ODJhZTYyNzE1YTEu
LmZmNDc4ZmQyMzYxNzhiYTM5YmMyMmRjMTk1YTE0OGE1NzkyZTI3YjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVt
bi5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rp
b24uaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgog
I2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggMjA1MDZmOGVjZmFjNjUzZTU1YWQwNDgxZGRh
NTYwZjVmZDcyYTU0ZC4uNGUwMDlmZWQ2YmQwZTMxMTU3YzY2NDA5YzdiMzVmY2M3ZWZmMjMyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cApAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgIkRPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5o
IgogI2luY2x1ZGUgIkRPTVdpbmRvd1dlYkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
LSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJz
LmgiCkBAIC0zOCw3ICszNyw2IEBACiAjaW5jbHVkZSAiSlNFdmVudC5oIgogI2luY2x1ZGUgIkpT
RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkpTSFRNTEF1ZGlvRWxlbWVudC5oIgotI2luY2x1
ZGUgIkpTSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJKU0hUTUxPcHRpb25FbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSlNJREJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSlNSZW1vdGVET01XaW5kb3cu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGht
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCmlu
ZGV4IDJhZjI3NjE4Nzc1N2U4ODI4ODMwNTVjOTA0ZTZlODczMzRjZDRkMjMuLmU1NmI4ZmUyMWFj
NTY4ZjIyMDg1NWQ4YTRlMzVkYTAxNDQ4NTgzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcApAQCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKIAorI2lu
Y2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIK
ICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAppbmRleCA5NDU4MmVmNDNmNmYzZDc0MmI3MDA4
NzI5NjllM2Y5Mzk1Y2RkMjY3Li41YjA5NWFjYmYxY2Q1NDEzMDhlMWEwZmJmMDM1MDE1OTE5MTA2
NTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcApA
QCAtMjksMTQgKzI5LDEyIEBACiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUu
aCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1
ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCisjaW5jbHVkZSAi
RWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJNYXRoTUxOYW1l
cy5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290Lmgi
Ci0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9tU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZy
YWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAppbmRl
eCA4ZjIxYjI3OTM1MDM3NjE5ZWIxMDNiOTRjYzIwYzcyY2JiNzExYTE4Li4yYTI1YWIyZTVhYTc2
Nzk2NTA4MzcwYWVmYTI5MWU3MmM3YzFjNjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRGcmFnbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
RnJhZ21lbnQuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVu
dC5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRN
TERvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlhNTERvY3Vt
ZW50UGFyc2VyLmgiCkBAIC0xMDMsNyArMTAzLDcgQEAgRWxlbWVudCogRG9jdW1lbnRGcmFnbWVu
dDo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbVN0cmluZyYgaWQpIGNvbnN0CiAgICAgICAgIHJl
dHVybiB0cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChpZCk7CiAKICAgICAvLyBPdGhlcndpc2Us
IGZhbGwgYmFjayB0byBpdGVyYXRpbmcgYWxsIG9mIHRoZSBlbGVtZW50IGRlc2NlbmRhbnRzLgot
ICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cygqdGhpcykpIHsKKyAg
ICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PigqdGhpcykp
IHsKICAgICAgICAgaWYgKGVsZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKSA9PSBpZCkKICAgICAgICAg
ICAgIHJldHVybiBjb25zdF9jYXN0PEVsZW1lbnQqPigmZWxlbWVudCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCmluZGV4IDg3MThlNmQ4NmFkN2ZlNTA4YjEzODcwNmE2NWQyOTVhZGQ0Mzlj
NTIuLjAxMTdhMzY2YmM3MjU3OTVhNTZmZWI5OWFlMWZlMTYyNzgzOGVlYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKQEAgLTQsNyArNCw3IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDEgUGV0ZXIg
S2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIg
KG11ZWxsZXJAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwNyBEYXZpZCBTbWl0aCAoY2F0
ZmlzaC5tYW5AZ21haWwuY29tKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA3IEVyaWMgU2Vp
ZGVsIChlcmljQHdlYmtpdC5vcmcpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNjAsNyArNjAsNiBAQAogI2lu
Y2x1ZGUgIkdldEFuaW1hdGlvbnNPcHRpb25zLmgiCiAjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVj
dGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxIdG1sRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxMYWJlbEVsZW1lbnQuaCIKQEAgLTM0MDAsMjYgKzMzOTks
MTQgQEAgdW5zaWduZWQgRWxlbWVudDo6cmFyZURhdGFDaGlsZEluZGV4KCkgY29uc3QKIAogQXRv
bVN0cmluZyBFbGVtZW50Ojpjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdAogewotICAg
IGlmIChjb25zdCBFbGVtZW50RGF0YSogZWxlbWVudERhdGEgPSB0aGlzLT5lbGVtZW50RGF0YSgp
KSB7Ci0gICAgICAgIGlmIChjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnREYXRh
LT5maW5kTGFuZ3VhZ2VBdHRyaWJ1dGUoKSkKLSAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGUt
PnZhbHVlKCk7Ci0gICAgfQotCiAgICAgLy8gVGhlIGxhbmd1YWdlIHByb3BlcnR5IGlzIGluaGVy
aXRlZCwgc28gd2UgaXRlcmF0ZSBvdmVyIHRoZSBwYXJlbnRzIHRvIGZpbmQgdGhlIGZpcnN0IGxh
bmd1YWdlLgotICAgIGNvbnN0IE5vZGUqIGN1cnJlbnROb2RlID0gdGhpczsKLSAgICB3aGlsZSAo
KGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUtPnBhcmVudE5vZGUoKSkpIHsKLSAgICAgICAgaWYg
KGlzPEVsZW1lbnQ+KCpjdXJyZW50Tm9kZSkpIHsKLSAgICAgICAgICAgIGlmIChjb25zdCBFbGVt
ZW50RGF0YSogZWxlbWVudERhdGEgPSBkb3duY2FzdDxFbGVtZW50PigqY3VycmVudE5vZGUpLmVs
ZW1lbnREYXRhKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29uc3QgQXR0cmlidXRlKiBhdHRy
aWJ1dGUgPSBlbGVtZW50RGF0YS0+ZmluZExhbmd1YWdlQXR0cmlidXRlKCkpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGUtPnZhbHVlKCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZSBpZiAoaXM8RG9jdW1lbnQ+KCpjdXJyZW50Tm9kZSkpIHsKLSAgICAgICAgICAg
IC8vIGNoZWNraW5nIHRoZSBNSU1FIGNvbnRlbnQtbGFuZ3VhZ2UKLSAgICAgICAgICAgIHJldHVy
biBkb3duY2FzdDxEb2N1bWVudD4oKmN1cnJlbnROb2RlKS5jb250ZW50TGFuZ3VhZ2UoKTsKKyAg
ICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEVsZW1lbnQ+KCp0aGlzKSkgewor
ICAgICAgICBpZiAoYXV0byogZWxlbWVudERhdGEgPSBlbGVtZW50LmVsZW1lbnREYXRhKCkpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvKiBhdHRyaWJ1dGUgPSBlbGVtZW50RGF0YS0+ZmluZExhbmd1
YWdlQXR0cmlidXRlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFsdWUo
KTsKICAgICAgICAgfQogICAgIH0KLQotICAgIHJldHVybiBudWxsQXRvbSgpOworICAgIHJldHVy
biBkb2N1bWVudCgpLmNvbnRlbnRMYW5ndWFnZSgpOwogfQogCiBMb2NhbGUmIEVsZW1lbnQ6Omxv
Y2FsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuY2Vz
dG9ySXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0b3JJdGVyYXRv
ci5oCmluZGV4IDRiNjJkMzhiMzhmZDM4NDljNzM3YWNhODdlZjg0NTI3ZjgzNzU1ZjAuLjgwNTE0
MzY3NGQ2MDgxYzQ3NDIwNjE4OTI0ODRlZmM5MTFlM2Q0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDE2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEVsZW1lbnRBbmNlc3RvclJh
bmdlOworCisvLyBSYW5nZSBmb3IgaXRlcmF0aW5nIGFuIGVsZW1lbnQgYW5kIGl0cyBhbmNlc3Rv
cnMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8
RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoRWxlbWVudCYgZmlyc3QpOwordGVtcGxhdGU8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnRUeXBl
PiBsaW5lYWdlT2ZUeXBlKGNvbnN0IEVsZW1lbnQmIGZpcnN0KTsKKworLy8gUmFuZ2UgZm9yIGl0
ZXJhdGluZyBhIG5vZGUncyBlbGVtZW50IGFuY2VzdG9ycy4KK3RlbXBsYXRlPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZU
eXBlKE5vZGUmIGRlc2NlbmRhbnQpOwordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVs
ZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNPZlR5cGUoY29u
c3QgTm9kZSYgZGVzY2VuZGFudCk7CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
IGNsYXNzIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJdGVyYXRvcjxF
bGVtZW50VHlwZT4gewogcHVibGljOgpAQCAtMzgsNDYgKzQ4LDE3IEBAIHB1YmxpYzoKIH07CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRBbmNlc3RvckNv
bnN0SXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IHsK
LXB1YmxpYzoKLSAgICBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yKCk7Ci0gICAgZXhwbGlj
aXQgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcihjb25zdCBFbGVtZW50VHlwZSogY3VycmVu
dCk7Ci0gICAgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVudEFuY2VzdG9y
SXRlcmF0b3JBZGFwdGVyIHsKK2NsYXNzIEVsZW1lbnRBbmNlc3RvclJhbmdlIHsKIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXIoRWxlbWVudFR5cGUq
IGZpcnN0KTsKLSAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4o
KTsKLSAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCk7Ci0gICAg
RWxlbWVudFR5cGUqIGZpcnN0KCkgeyByZXR1cm4gbV9maXJzdDsgfQorICAgIGV4cGxpY2l0IEVs
ZW1lbnRBbmNlc3RvclJhbmdlKEVsZW1lbnRUeXBlKiBmaXJzdCk7CisgICAgRWxlbWVudEFuY2Vz
dG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7CisgICAgRWxlbWVudEFuY2Vz
dG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpIGNvbnN0OworICAgIEVsZW1lbnRUeXBlKiBm
aXJzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3Q7IH0KIAogcHJpdmF0ZToKLSAgICBFbGVtZW50
VHlwZSogbV9maXJzdDsKKyAgICBFbGVtZW50VHlwZSogY29uc3QgbV9maXJzdDsKIH07CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRBbmNlc3RvckNvbnN0
SXRlcmF0b3JBZGFwdGVyIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBFbGVtZW50QW5jZXN0b3JD
b25zdEl0ZXJhdG9yQWRhcHRlcihjb25zdCBFbGVtZW50VHlwZSogZmlyc3QpOwotICAgIEVsZW1l
bnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7Ci0gICAg
RWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCkgY29uc3Q7Ci0g
ICAgY29uc3QgRWxlbWVudFR5cGUqIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdDsgfQot
Ci1wcml2YXRlOgotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBtX2ZpcnN0OwotfTsKLQotRWxlbWVu
dEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRMaW5lYWdlKEVsZW1lbnQq
IGZpcnN0KTsKLUVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVs
ZW1lbnRMaW5lYWdlKGNvbnN0IEVsZW1lbnQqIGZpcnN0KTsKLUVsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50QW5jZXN0b3JzKEVsZW1lbnQqIGRlc2NlbmRhbnQp
OwotRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudEFu
Y2VzdG9ycyhjb25zdCBFbGVtZW50KiBkZXNjZW5kYW50KTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBs
aW5lYWdlT2ZUeXBlKEVsZW1lbnQmIGZpcnN0KTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGxp
bmVhZ2VPZlR5cGUoY29uc3QgRWxlbWVudCYgZmlyc3QpOwotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGFu
Y2VzdG9yc09mVHlwZShOb2RlJiBkZXNjZW5kYW50KTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+
IGFuY2VzdG9yc09mVHlwZShjb25zdCBOb2RlJiBkZXNjZW5kYW50KTsKLQogLy8gRWxlbWVudEFu
Y2VzdG9ySXRlcmF0b3IKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgpAQCAtOTUs
MTE5ICs3Niw3MCBAQCBpbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+
OjpFbGVtZW50QW5jZXN0b3JJdGVyYXRvcihFbGVtZW50VHlwZQogdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBl
PiYgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKIHsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5
cGU+Jj4oRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VBbmNlc3RvcigpKTsK
LX0KLQotLy8gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcgotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT46OkVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3IoKQotICAgIDogRWxlbWVudENv
bnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG51bGxwdHIpCi17Ci19Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPjo6RWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcihjb25zdCBFbGVtZW50VHlw
ZSogY3VycmVudCkKLSAgICA6IEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihudWxs
cHRyLCBjdXJyZW50KQotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRB
bmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKLXsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT4mPihFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlQW5jZXN0b3Io
KSk7CisgICAgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VBbmNlc3Rvcigp
OworICAgIHJldHVybiAqdGhpczsKIH0KIAotLy8gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFw
dGVyCisvLyBFbGVtZW50QW5jZXN0b3JSYW5nZQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+Ci1pbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBl
Pjo6RWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyKEVsZW1lbnRUeXBlKiBmaXJzdCkKK2lu
bGluZSBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50VHlwZT46OkVsZW1lbnRBbmNlc3RvclJh
bmdlKEVsZW1lbnRUeXBlKiBmaXJzdCkKICAgICA6IG1fZmlyc3QoZmlyc3QpCiB7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVy
YXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPjo6YmVnaW4oKQoraW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBl
PiBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50VHlwZT46OmJlZ2luKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fZmlyc3QpOwog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudEFuY2Vz
dG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxF
bGVtZW50VHlwZT46OmVuZCgpCitpbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxlbWVu
dFR5cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRUeXBlPjo6ZW5kKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+KCk7CiB9CiAK
LS8vIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyCi0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRh
cHRlcjxFbGVtZW50VHlwZT46OkVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyKGNv
bnN0IEVsZW1lbnRUeXBlKiBmaXJzdCkKLSAgICA6IG1fZmlyc3QoZmlyc3QpCi17Ci19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25z
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRl
cjxFbGVtZW50VHlwZT46OmJlZ2luKCkgY29uc3QKLXsKLSAgICByZXR1cm4gRWxlbWVudEFuY2Vz
dG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9maXJzdCk7Ci19Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50
VHlwZT46OmVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRl
cmF0b3I8RWxlbWVudFR5cGU+KCk7Ci19Ci0KIC8vIFN0YW5kYWxvbmUgZnVuY3Rpb25zCiAKLWlu
bGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudExpbmVh
Z2UoRWxlbWVudCogZmlyc3QpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9y
QWRhcHRlcjxFbGVtZW50PihmaXJzdCk7Ci19Ci0KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25z
dEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50TGluZWFnZShjb25zdCBFbGVtZW50KiBm
aXJzdCkKLXsKLSAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8
RWxlbWVudD4oZmlyc3QpOwotfQotCi1pbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFw
dGVyPEVsZW1lbnQ+IGVsZW1lbnRBbmNlc3RvcnMoRWxlbWVudCogZGVzY2VuZGFudCkKK3RlbXBs
YXRlPD4gaW5saW5lIEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnQ+IGxpbmVhZ2VPZlR5cGU8
RWxlbWVudD4oRWxlbWVudCYgZmlyc3QpCiB7Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50PihkZXNjZW5kYW50LT5wYXJlbnRFbGVtZW50KCkpOwotfQot
Ci1pbmxpbmUgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxl
bWVudEFuY2VzdG9ycyhjb25zdCBFbGVtZW50KiBkZXNjZW5kYW50KQotewotICAgIHJldHVybiBF
bGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PihkZXNjZW5kYW50LT5w
YXJlbnRFbGVtZW50KCkpOworICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50
PigmZmlyc3QpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUg
RWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBl
KEVsZW1lbnQmIGZpcnN0KQoraW5saW5lIEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRUeXBl
PiBsaW5lYWdlT2ZUeXBlKEVsZW1lbnQmIGZpcnN0KQogewogICAgIGlmIChpczxFbGVtZW50VHlw
ZT4oZmlyc3QpKQotICAgICAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVy
PEVsZW1lbnRUeXBlPihzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KCZmaXJzdCkpOworICAgICAg
ICByZXR1cm4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8RWxlbWVudFR5cGU+KCZkb3duY2FzdDxFbGVt
ZW50VHlwZT4oZmlyc3QpKTsKICAgICByZXR1cm4gYW5jZXN0b3JzT2ZUeXBlPEVsZW1lbnRUeXBl
PihmaXJzdCk7CiB9CiAKK3RlbXBsYXRlPD4gaW5saW5lIEVsZW1lbnRBbmNlc3RvclJhbmdlPGNv
bnN0IEVsZW1lbnQ+IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4oY29uc3QgRWxlbWVudCYgZmlyc3Qp
Cit7CisgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnQ+KCZmaXJz
dCk7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShj
b25zdCBFbGVtZW50JiBmaXJzdCkKK2lubGluZSBFbGVtZW50QW5jZXN0b3JSYW5nZTxjb25zdCBF
bGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShjb25zdCBFbGVtZW50JiBmaXJzdCkKIHsKICAgICBp
ZiAoaXM8RWxlbWVudFR5cGU+KGZpcnN0KSkKLSAgICAgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3Rv
ckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihzdGF0aWNfY2FzdDxjb25zdCBFbGVt
ZW50VHlwZSo+KCZmaXJzdCkpOworICAgICAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8
Y29uc3QgRWxlbWVudFR5cGU+KCZkb3duY2FzdDxFbGVtZW50VHlwZT4oZmlyc3QpKTsKICAgICBy
ZXR1cm4gYW5jZXN0b3JzT2ZUeXBlPEVsZW1lbnRUeXBlPihmaXJzdCk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFk
YXB0ZXI8RWxlbWVudFR5cGU+IGFuY2VzdG9yc09mVHlwZShOb2RlJiBkZXNjZW5kYW50KQoraW5s
aW5lIEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNPZlR5cGUoTm9k
ZSYgZGVzY2VuZGFudCkKIHsKICAgICBFbGVtZW50VHlwZSogZmlyc3QgPSBmaW5kRWxlbWVudEFu
Y2VzdG9yT2ZUeXBlPEVsZW1lbnRUeXBlPihkZXNjZW5kYW50KTsKLSAgICByZXR1cm4gRWxlbWVu
dEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihmaXJzdCk7CisgICAgcmV0dXJu
IEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRUeXBlPihmaXJzdCk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZUeXBlKGNvbnN0IE5vZGUmIGRlc2Nl
bmRhbnQpCitpbmxpbmUgRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+IGFu
Y2VzdG9yc09mVHlwZShjb25zdCBOb2RlJiBkZXNjZW5kYW50KQogewogICAgIGNvbnN0IEVsZW1l
bnRUeXBlKiBmaXJzdCA9IGZpbmRFbGVtZW50QW5jZXN0b3JPZlR5cGU8Y29uc3QgRWxlbWVudFR5
cGU+KGRlc2NlbmRhbnQpOwotICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9y
QWRhcHRlcjxFbGVtZW50VHlwZT4oZmlyc3QpOworICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JS
YW5nZTxjb25zdCBFbGVtZW50VHlwZT4oZmlyc3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuZFRleHREZXNjZW5k
YW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5kVGV4dERlc2NlbmRh
bnRJdGVyYXRvci5oCmluZGV4IDQ4ZTNiMWE2MThkMmZlMGEyODc2N2IzNzMxZjJmYWRmOTczZWZi
Y2UuLmQxZGRiMGY3Mzc1MDE1NjQ1OTdiMGEwMjM0ZTJiNDYyMDFkNWRlNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvci5o
CkBAIC0zNiw4ICszNiw4IEBAIGNsYXNzIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9y
IHsKIHB1YmxpYzoKICAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcigpOwogICAg
IGVudW0gRmlyc3RDaGlsZFRhZyB7IEZpcnN0Q2hpbGQgfTsKLSAgICBFbGVtZW50QW5kVGV4dERl
c2NlbmRhbnRJdGVyYXRvcihDb250YWluZXJOb2RlJiByb290LCBGaXJzdENoaWxkVGFnKTsKLSAg
ICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihDb250YWluZXJOb2RlJiByb290LCBO
b2RlKiBjdXJyZW50KTsKKyAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihjb25z
dCBDb250YWluZXJOb2RlJiByb290LCBGaXJzdENoaWxkVGFnKTsKKyAgICBFbGVtZW50QW5kVGV4
dERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBOb2RlKiBjdXJy
ZW50KTsKIAogICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisr
KCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0KCk7IH0KIApAQCAtNjMsOSArNjMsOSBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgaXNFbGVtZW50T3JUZXh0KGNvbnN0IE5vZGUm
IG5vZGUpIHsgcmV0dXJuIGlzPEVsZW1lbnQ+KG5vZGUpIHx8IGlzPFRleHQ+KG5vZGUpOyB9Ci0g
ICAgc3RhdGljIE5vZGUqIGZpcnN0Q2hpbGQoTm9kZSYpOwotICAgIHN0YXRpYyBOb2RlKiBuZXh0
U2libGluZyhOb2RlJik7Ci0gICAgc3RhdGljIE5vZGUqIHByZXZpb3VzU2libGluZyhOb2RlJik7
CisgICAgc3RhdGljIE5vZGUqIGZpcnN0Q2hpbGQoY29uc3QgTm9kZSYpOworICAgIHN0YXRpYyBO
b2RlKiBuZXh0U2libGluZyhjb25zdCBOb2RlJik7CisgICAgc3RhdGljIE5vZGUqIHByZXZpb3Vz
U2libGluZyhjb25zdCBOb2RlJik7CiAKICAgICB2b2lkIHBvcEFuY2VzdG9yU2libGluZ1N0YWNr
KCk7CiAKQEAgLTgyLDE3ICs4MiwxNyBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1jbGFzcyBF
bGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgeworY2xhc3MgRWxlbWVudEFu
ZFRleHREZXNjZW5kYW50UmFuZ2UgewogcHVibGljOgotICAgIGV4cGxpY2l0IEVsZW1lbnRBbmRU
ZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2RlJiByb290KTsKLSAgICBF
bGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBiZWdpbigpOwotICAgIEVsZW1lbnRBbmRU
ZXh0RGVzY2VuZGFudEl0ZXJhdG9yIGVuZCgpOworICAgIGV4cGxpY2l0IEVsZW1lbnRBbmRUZXh0
RGVzY2VuZGFudFJhbmdlKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpOworICAgIEVsZW1lbnRB
bmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CisgICAgRWxlbWVudEFuZFRl
eHREZXNjZW5kYW50SXRlcmF0b3IgZW5kKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQ29udGFp
bmVyTm9kZSYgbV9yb290OworICAgIGNvbnN0IENvbnRhaW5lck5vZGUmIG1fcm9vdDsKIH07CiAK
LUVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlciBlbGVtZW50QW5kVGV4dERl
c2NlbmRhbnRzKENvbnRhaW5lck5vZGUmKTsKK0VsZW1lbnRBbmRUZXh0RGVzY2VuZGFudFJhbmdl
IGVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudHMoQ29udGFpbmVyTm9kZSYpOwogCiAvLyBFbGVtZW50
QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcgogCkBAIC0xMDEsNyArMTAxLDcgQEAgaW5saW5lIEVs
ZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJ
dGVyYXRvcigpCiB7CiB9CiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRv
cjo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoQ29udGFpbmVyTm9kZSYgcm9vdCwg
Rmlyc3RDaGlsZFRhZykKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6
RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9v
dCwgRmlyc3RDaGlsZFRhZykKICAgICA6IG1fY3VycmVudChmaXJzdENoaWxkKHJvb3QpKQogI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgLCBtX2Fzc2VydGlvbnMobV9jdXJyZW50KQpAQCAtMTEzLDcg
KzExMyw3IEBAIGlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6RWxlbWVu
dEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoQ29udGFpCiAgICAgbV9kZXB0aCA9IDE7CiB9CiAK
LWlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6RWxlbWVudEFuZFRleHRE
ZXNjZW5kYW50SXRlcmF0b3IoQ29udGFpbmVyTm9kZSYgcm9vdCwgTm9kZSogY3VycmVudCkKK2lu
bGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6RWxlbWVudEFuZFRleHREZXNj
ZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgTm9kZSogY3VycmVudCkK
ICAgICA6IG1fY3VycmVudChjdXJyZW50KQogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLCBtX2Fz
c2VydGlvbnMobV9jdXJyZW50KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIGlubGluZSB2b2lkIEVsZW1l
bnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpkcm9wQXNzZXJ0aW9ucygpCiAjZW5kaWYKIH0K
IAotaW5saW5lIE5vZGUqIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpmaXJzdENo
aWxkKE5vZGUmIGN1cnJlbnQpCitpbmxpbmUgTm9kZSogRWxlbWVudEFuZFRleHREZXNjZW5kYW50
SXRlcmF0b3I6OmZpcnN0Q2hpbGQoY29uc3QgTm9kZSYgY3VycmVudCkKIHsKICAgICBhdXRvKiBu
b2RlID0gY3VycmVudC5maXJzdENoaWxkKCk7CiAgICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVu
dE9yVGV4dCgqbm9kZSkpCkBAIC0xNTYsNyArMTU2LDcgQEAgaW5saW5lIE5vZGUqIEVsZW1lbnRB
bmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpmaXJzdENoaWxkKE5vZGUmIGN1cnJlbnQpCiAgICAg
cmV0dXJuIG5vZGU7CiB9CiAKLWlubGluZSBOb2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJ
dGVyYXRvcjo6bmV4dFNpYmxpbmcoTm9kZSYgY3VycmVudCkKK2lubGluZSBOb2RlKiBFbGVtZW50
QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6bmV4dFNpYmxpbmcoY29uc3QgTm9kZSYgY3VycmVu
dCkKIHsKICAgICBhdXRvKiBub2RlID0gY3VycmVudC5uZXh0U2libGluZygpOwogICAgIHdoaWxl
IChub2RlICYmICFpc0VsZW1lbnRPclRleHQoKm5vZGUpKQpAQCAtMTY0LDcgKzE2NCw3IEBAIGlu
bGluZSBOb2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6bmV4dFNpYmxpbmco
Tm9kZSYgY3VycmVudCkKICAgICByZXR1cm4gbm9kZTsKIH0KIAotaW5saW5lIE5vZGUqIEVsZW1l
bnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpwcmV2aW91c1NpYmxpbmcoTm9kZSYgY3VycmVu
dCkKK2lubGluZSBOb2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6cHJldmlv
dXNTaWJsaW5nKGNvbnN0IE5vZGUmIGN1cnJlbnQpCiB7CiAgICAgYXV0byogbm9kZSA9IGN1cnJl
bnQucHJldmlvdXNTaWJsaW5nKCk7CiAgICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9yVGV4
dCgqbm9kZSkpCkBAIC0yOTQsMjggKzI5NCwyOCBAQCBpbmxpbmUgYm9vbCBFbGVtZW50QW5kVGV4
dERlc2NlbmRhbnRJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBFbGVtZW50QW5kVGV4dERlcwog
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKIH0KIAotLy8gRWxlbWVudEFuZFRleHREZXNj
ZW5kYW50SXRlcmF0b3JBZGFwdGVyCisvLyBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZQog
Ci1pbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjpFbGVtZW50
QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVyTm9kZSYgcm9vdCkKK2lu
bGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZTo6RWxlbWVudEFuZFRleHREZXNjZW5k
YW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKICAgICA6IG1fcm9vdChyb290KQog
ewogfQogCi1pbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgRWxlbWVudEFu
ZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjpiZWdpbigpCitpbmxpbmUgRWxlbWVudEFu
ZFRleHREZXNjZW5kYW50SXRlcmF0b3IgRWxlbWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2U6OmJl
Z2luKCkgY29uc3QKIHsKICAgICByZXR1cm4gRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0
b3IobV9yb290LCBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6Rmlyc3RDaGlsZCk7
CiB9CiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBFbGVtZW50QW5k
VGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI6OmVuZCgpCitpbmxpbmUgRWxlbWVudEFuZFRl
eHREZXNjZW5kYW50SXRlcmF0b3IgRWxlbWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2U6OmVuZCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAogLy8gU3RhbmRhbG9uZSBmdW5jdGlvbnMK
IAotaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlciBlbGVtZW50
QW5kVGV4dERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUmIHJvb3QpCitpbmxpbmUgRWxlbWVudEFu
ZFRleHREZXNjZW5kYW50UmFuZ2UgZWxlbWVudEFuZFRleHREZXNjZW5kYW50cyhDb250YWluZXJO
b2RlJiByb290KQogewotICAgIHJldHVybiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRv
ckFkYXB0ZXIocm9vdCk7CisgICAgcmV0dXJuIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudFJhbmdl
KHJvb3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudENoaWxkSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50Q2hpbGRJdGVyYXRvci5oCmluZGV4IDhlMzhmYjUwMzJhODIzNzc2ZTJhN2JjYTNhYzI1
OGNiMTUwNmM0MDAuLjEzYjhjMDE4ZGQ0ZjE4ZTFmOTc4OTNjNzViMGEzNWU5NGNiZjliYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDE1ICsyOSwxNSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBFbGVt
ZW50Q2hpbGRSYW5nZTsKKworLy8gUmFuZ2UgZm9yIGl0ZXJhdGluZyB0aHJvdWdoIGNoaWxkIGVs
ZW1lbnRzLgordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRSYW5n
ZTxFbGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoQ29udGFpbmVyTm9kZSYpOwordGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRSYW5nZTxjb25zdCBFbGVtZW50VHlw
ZT4gY2hpbGRyZW5PZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYpOworCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+CiBjbGFzcyBFbGVtZW50Q2hpbGRJdGVyYXRvciA6IHB1YmxpYyBF
bGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEVsZW1l
bnRUeXBlIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBl
OwotICAgIHR5cGVkZWYgRWxlbWVudFR5cGUqIHBvaW50ZXI7Ci0gICAgdHlwZWRlZiBFbGVtZW50
VHlwZSYgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZyBp
dGVyYXRvcl9jYXRlZ29yeTsKLQogICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNvbnN0IENvbnRh
aW5lck5vZGUmIHBhcmVudCk7CiAgICAgRWxlbWVudENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFp
bmVyTm9kZSYgcGFyZW50LCBFbGVtZW50VHlwZSogY3VycmVudCk7CiAgICAgRWxlbWVudENoaWxk
SXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsKQEAgLTQ1LDU1ICs0NSwyMSBAQCBwdWJsaWM6CiB9Owog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBFbGVtZW50Q2hpbGRDb25z
dEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiB7Ci1w
dWJsaWM6Ci0gICAgdHlwZWRlZiBjb25zdCBFbGVtZW50VHlwZSB2YWx1ZV90eXBlOwotICAgIHR5
cGVkZWYgcHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIGNvbnN0IEVsZW1l
bnRUeXBlKiBwb2ludGVyOwotICAgIHR5cGVkZWYgY29uc3QgRWxlbWVudFR5cGUmIHJlZmVyZW5j
ZTsKLSAgICB0eXBlZGVmIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdv
cnk7Ci0KLSAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUm
IHBhcmVudCk7Ci0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJO
b2RlJiBwYXJlbnQsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKLSAgICBFbGVtZW50Q2hp
bGRDb25zdEl0ZXJhdG9yJiBvcGVyYXRvci0tKCk7Ci0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVy
YXRvciYgb3BlcmF0b3IrKygpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotY2xhc3MgRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyIHsKLXB1YmxpYzoKLSAgICBFbGVt
ZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKLQotICAgIEVs
ZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpOwotICAgIEVsZW1lbnRDaGls
ZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKTsKLSAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxF
bGVtZW50VHlwZT4gYmVnaW5BdChFbGVtZW50VHlwZSYpOwotCi0gICAgRWxlbWVudFR5cGUqIGZp
cnN0KCk7Ci0gICAgRWxlbWVudFR5cGUqIGxhc3QoKTsKLQotcHJpdmF0ZToKLSAgICBDb250YWlu
ZXJOb2RlJiBtX3BhcmVudDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWNsYXNzIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyIHsKK2NsYXNzIEVsZW1lbnRD
aGlsZFJhbmdlIHsKIHB1YmxpYzoKLSAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRl
cihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpOworICAgIEVsZW1lbnRDaGlsZFJhbmdlKGNv
bnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCk7CiAKLSAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpIGNvbnN0OwotICAgIEVsZW1lbnRDaGlsZENvbnN0SXRl
cmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpIGNvbnN0OwotICAgIEVsZW1lbnRDaGlsZENvbnN0SXRl
cmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoY29uc3QgRWxlbWVudFR5cGUmKSBjb25zdDsKKyAg
ICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKSBjb25zdDsKKyAgICBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCkgY29uc3Q7CisgICAgRWxlbWVu
dENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoRWxlbWVudFR5cGUmKSBjb25zdDsK
IAotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0OwotICAgIGNvbnN0IEVsZW1l
bnRUeXBlKiBsYXN0KCkgY29uc3Q7CisgICAgRWxlbWVudFR5cGUqIGZpcnN0KCkgY29uc3Q7Cisg
ICAgRWxlbWVudFR5cGUqIGxhc3QoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBjb25zdCBDb250
YWluZXJOb2RlJiBtX3BhcmVudDsKIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4gRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlw
ZShDb250YWluZXJOb2RlJik7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1l
bnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShj
b25zdCBDb250YWluZXJOb2RlJik7Ci0KIC8vIEVsZW1lbnRDaGlsZEl0ZXJhdG9yCiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KQEAgLTExMSwxMzIgKzc3LDY4IEBAIGlubGluZSBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNv
bnN0IENvbnRhaW5lck5vCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUg
RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxF
bGVtZW50VHlwZT46Om9wZXJhdG9yLS0oKQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVt
ZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+Ojp0cmF2ZXJzZVByZXZpb3VzU2libGluZygpKTsKKyAgICBFbGVtZW50SXRlcmF0b3I8RWxl
bWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZpb3VzU2libGluZygpOworICAgIHJldHVybiAqdGhpczsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRDaGls
ZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+
OjpvcGVyYXRvcisrKCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkSXRl
cmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVy
c2VOZXh0U2libGluZygpKTsKKyAgICBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2
ZXJzZU5leHRTaWJsaW5nKCk7CisgICAgcmV0dXJuICp0aGlzOwogfQogCi0vLyBFbGVtZW50Q2hp
bGRDb25zdEl0ZXJhdG9yCisvLyBFbGVtZW50Q2hpbGRSYW5nZQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT46OkVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFy
ZW50KQotICAgIDogRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZwYXJlbnQpCi17
Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hp
bGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcihj
b25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KQot
ICAgIDogRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZwYXJlbnQsIGN1cnJlbnQp
Ci17Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT46Om9wZXJhdG9yLS0oKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxF
bGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRDb25zdEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoKSk7Ci19Ci0KLQotdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRl
cmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBl
Pjo6b3BlcmF0b3IrKygpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRDaGlsZENv
bnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5
cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkpOwotfQotCi0vLyBFbGVtZW50Q2hpbGRJdGVyYXRv
ckFkYXB0ZXIKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZEl0ZXJhdG9y
QWRhcHRlcihDb250YWluZXJOb2RlJiBwYXJlbnQpCitpbmxpbmUgRWxlbWVudENoaWxkUmFuZ2U8
RWxlbWVudFR5cGU+OjpFbGVtZW50Q2hpbGRSYW5nZShjb25zdCBDb250YWluZXJOb2RlJiBwYXJl
bnQpCiAgICAgOiBtX3BhcmVudChwYXJlbnQpCiB7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxl
bWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4oKQoraW5saW5lIEVs
ZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRSYW5nZTxFbGVtZW50
VHlwZT46OmJlZ2luKCkgY29uc3QKIHsKICAgICByZXR1cm4gRWxlbWVudENoaWxkSXRlcmF0b3I8
RWxlbWVudFR5cGU+KG1fcGFyZW50LCBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdENoaWxk
KG1fcGFyZW50KSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGlu
ZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkSXRlcmF0b3JB
ZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkKK2lubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxF
bGVtZW50VHlwZT4gRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5cGU+OjplbmQoKSBjb25zdAog
ewogICAgIHJldHVybiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9wYXJlbnQp
OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudFR5
cGUqIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZpcnN0KCkKK2lu
bGluZSBFbGVtZW50VHlwZSogRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5cGU+OjpmaXJzdCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0Q2hpbGQo
bV9wYXJlbnQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUg
RWxlbWVudFR5cGUqIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46Omxh
c3QoKQoraW5saW5lIEVsZW1lbnRUeXBlKiBFbGVtZW50Q2hpbGRSYW5nZTxFbGVtZW50VHlwZT46
Omxhc3QoKSBjb25zdAogewogICAgIHJldHVybiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpsYXN0
Q2hpbGQobV9wYXJlbnQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZEl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2luQXQoRWxlbWVudFR5cGUmIGNoaWxkKQoraW5s
aW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRSYW5nZTxF
bGVtZW50VHlwZT46OmJlZ2luQXQoRWxlbWVudFR5cGUmIGNoaWxkKSBjb25zdAogewogICAgIEFT
U0VSVChjaGlsZC5wYXJlbnROb2RlKCkgPT0gJm1fcGFyZW50KTsKICAgICByZXR1cm4gRWxlbWVu
dENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcGFyZW50LCAmY2hpbGQpOwogfQogCi0vLyBF
bGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dFR5cGU+OjpFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcihjb25zdCBDb250YWluZXJO
b2RlJiBwYXJlbnQpCi0gICAgOiBtX3BhcmVudChwYXJlbnQpCi17Ci19Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46
OmJlZ2luKCkgY29uc3QKLXsKLSAgICByZXR1cm4gRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxF
bGVtZW50VHlwZT4obV9wYXJlbnQsIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0Q2hpbGQo
bV9wYXJlbnQpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5l
IEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZENvbnN0
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9wYXJlbnQpOwotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgY29uc3QgRWxlbWVudFR5cGUq
IEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6Zmlyc3QoKSBj
b25zdAotewotICAgIHJldHVybiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdENoaWxkKG1f
cGFyZW50KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGNv
bnN0IEVsZW1lbnRUeXBlKiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50
VHlwZT46Omxhc3QoKSBjb25zdAotewotICAgIHJldHVybiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+
OjpsYXN0Q2hpbGQobV9wYXJlbnQpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVu
dENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbkF0KGNvbnN0IEVs
ZW1lbnRUeXBlJiBjaGlsZCkgY29uc3QKLXsKLSAgICBBU1NFUlQoY2hpbGQucGFyZW50Tm9kZSgp
ID09ICZtX3BhcmVudCk7Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxl
bWVudFR5cGU+KG1fcGFyZW50LCAmY2hpbGQpOwotfQotCiAvLyBTdGFuZGFsb25lIGZ1bmN0aW9u
cwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxk
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShDb250YWluZXJOb2Rl
JiBwYXJlbnQpCitpbmxpbmUgRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5cGU+IGNoaWxkcmVu
T2ZUeXBlKENvbnRhaW5lck5vZGUmIHBhcmVudCkKIHsKLSAgICByZXR1cm4gRWxlbWVudENoaWxk
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihwYXJlbnQpOworICAgIHJldHVybiBFbGVtZW50
Q2hpbGRSYW5nZTxFbGVtZW50VHlwZT4ocGFyZW50KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVs
ZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpCitp
bmxpbmUgRWxlbWVudENoaWxkUmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBl
KGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCkKIHsKLSAgICByZXR1cm4gRWxlbWVudENoaWxk
Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KHBhcmVudCk7CisgICAgcmV0dXJuIEVs
ZW1lbnRDaGlsZFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPihwYXJlbnQpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRiZGI5OWE2ZGRlOTY0
NmRmYjQxNzQ2MTI5OTE4YzczNWVhZTQ5OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmgiCi0jaW5jbHVk
ZSAiRWxlbWVudFRyYXZlcnNhbC5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIHsKLXB1Ymxp
YzoKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKCk7Ci0gICAgZXhwbGljaXQgRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcihFbGVtZW50KiBjdXJyZW50KTsKLQotICAgIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yJiBvcGVyYXRvci0tKCk7Ci0KLSAgICBFbGVtZW50JiBvcGVyYXRvciooKTsKLSAgICBFbGVt
ZW50KiBvcGVyYXRvci0+KCk7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7Ci0KLSAgICB2b2lkIGRy
b3BBc3NlcnRpb25zKCk7Ci0KLXByaXZhdGU6Ci0gICAgRWxlbWVudCogbV9jdXJyZW50OwotICAg
IFZlY3RvcjxFbGVtZW50KiwgMTY+IG1fYW5jZXN0b3JTaWJsaW5nU3RhY2s7Ci0KLSNpZiBBU1NF
UlRfRU5BQkxFRAotICAgIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMgbV9hc3NlcnRpb25zOwot
I2VuZGlmCi19OwotCi1jbGFzcyBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IgewotcHVi
bGljOgotICAgIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcigpOwotICAgIGV4cGxpY2l0
IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcihjb25zdCBFbGVtZW50Kik7Ci0KLSAgICBF
bGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKLQotICAgIGNvbnN0
IEVsZW1lbnQmIG9wZXJhdG9yKigpIGNvbnN0OwotICAgIGNvbnN0IEVsZW1lbnQqIG9wZXJhdG9y
LT4oKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7Ci0KLSAgICB2b2lk
IGRyb3BBc3NlcnRpb25zKCk7Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgRWxlbWVudCogbV9jdXJy
ZW50OwotICAgIFZlY3RvcjxFbGVtZW50KiwgMTY+IG1fYW5jZXN0b3JTaWJsaW5nU3RhY2s7Ci0K
LSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMgbV9hc3Nl
cnRpb25zOwotI2VuZGlmCi19OwotCi1jbGFzcyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRh
cHRlciB7Ci1wdWJsaWM6Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoQ29u
dGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBiZWdpbigp
OwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgZW5kKCk7Ci0gICAgRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvciBsYXN0KCk7Ci0KLXByaXZhdGU6Ci0gICAgQ29udGFpbmVyTm9kZSYgbV9y
b290OwotfTsKLQotY2xhc3MgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlciB7
Ci1wdWJsaWM6Ci0gICAgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcihjb25z
dCBDb250YWluZXJOb2RlJiByb290KTsKLSAgICBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0
b3IgYmVnaW4oKSBjb25zdDsKLSAgICBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IgZW5k
KCkgY29uc3Q7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIGxhc3QoKSBjb25z
dDsKLQotcHJpdmF0ZToKLSAgICBjb25zdCBDb250YWluZXJOb2RlJiBtX3Jvb3Q7Ci19OwotCi1F
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlciBlbGVtZW50RGVzY2VuZGFudHMoQ29udGFp
bmVyTm9kZSYpOwotRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlciBlbGVtZW50
RGVzY2VuZGFudHMoY29uc3QgQ29udGFpbmVyTm9kZSYpOwotCi0vLyBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yCi0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yKCkKLSAgICA6IG1fY3VycmVudChudWxscHRyKQotewotfQotCi1pbmxp
bmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihF
bGVtZW50KiBjdXJyZW50KQotICAgIDogbV9jdXJyZW50KGN1cnJlbnQpCi0jaWYgQVNTRVJUX0VO
QUJMRUQKLSAgICAsIG1fYXNzZXJ0aW9ucyhjdXJyZW50KQotI2VuZGlmCi17Ci0gICAgbV9hbmNl
c3RvclNpYmxpbmdTdGFjay51bmNoZWNrZWRBcHBlbmQobnVsbHB0cik7Ci19Ci0KLWlubGluZSB2
b2lkIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6OmRyb3BBc3NlcnRpb25zKCkKLXsKLSNpZiBB
U1NFUlRfRU5BQkxFRAotICAgIG1fYXNzZXJ0aW9ucy5jbGVhcigpOwotI2VuZGlmCi19Ci0KLUFM
V0FZU19JTkxJTkUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcjo6b3BlcmF0b3IrKygpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNT
RVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0KLSAgICBFbGVtZW50KiBm
aXJzdENoaWxkID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGlsZCgqbV9jdXJyZW50KTsKLSAg
ICBFbGVtZW50KiBuZXh0U2libGluZyA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKCpt
X2N1cnJlbnQpOwotCi0gICAgaWYgKGZpcnN0Q2hpbGQpIHsKLSAgICAgICAgaWYgKG5leHRTaWJs
aW5nKQotICAgICAgICAgICAgbV9hbmNlc3RvclNpYmxpbmdTdGFjay5hcHBlbmQobmV4dFNpYmxp
bmcpOwotICAgICAgICBtX2N1cnJlbnQgPSBmaXJzdENoaWxkOwotICAgICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgfQotCi0gICAgaWYgKG5leHRTaWJsaW5nKSB7Ci0gICAgICAgIG1fY3VycmVudCA9
IG5leHRTaWJsaW5nOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgbV9jdXJy
ZW50ID0gbV9hbmNlc3RvclNpYmxpbmdTdGFjay50YWtlTGFzdCgpOwotCi0jaWYgQVNTRVJUX0VO
QUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hl
cyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBtX2Fzc2VydGlvbnMuZHJv
cEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuICp0aGlzOwot
fQotCi1BTFdBWVNfSU5MSU5FIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I6Om9wZXJhdG9yLS0oKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwot
ICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotCi0gICAgRWxl
bWVudCogcHJldmlvdXNTaWJsaW5nID0gRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5n
KCptX2N1cnJlbnQpOwotCi0gICAgaWYgKCFwcmV2aW91c1NpYmxpbmcpIHsKLSAgICAgICAgbV9j
dXJyZW50ID0gbV9jdXJyZW50LT5wYXJlbnRFbGVtZW50KCk7Ci0gICAgICAgIC8vIFRoZSBzdGFj
ayBvcHRpbWl6ZXMgZm9yIGZvcndhcmQgdHJhdmVyc2FsIG9ubHksIHRoaXMganVzdCBtYWludGFp
bnMgY29uc2lzdGVuY3kuCi0gICAgICAgIGlmIChtX2N1cnJlbnQtPm5leHRTaWJsaW5nKCkgJiYg
bV9jdXJyZW50LT5uZXh0U2libGluZygpID09IG1fYW5jZXN0b3JTaWJsaW5nU3RhY2subGFzdCgp
KQotICAgICAgICAgICAgbV9hbmNlc3RvclNpYmxpbmdTdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAg
ICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBFbGVtZW50KiBkZWVwZXN0U2libGluZyA9
IHByZXZpb3VzU2libGluZzsKLSAgICB3aGlsZSAoRWxlbWVudCogbGFzdENoaWxkID0gRWxlbWVu
dFRyYXZlcnNhbDo6bGFzdENoaWxkKCpkZWVwZXN0U2libGluZykpCi0gICAgICAgIGRlZXBlc3RT
aWJsaW5nID0gbGFzdENoaWxkOwotICAgIEFTU0VSVChkZWVwZXN0U2libGluZyk7Ci0KLSAgICBp
ZiAoZGVlcGVzdFNpYmxpbmcgIT0gcHJldmlvdXNTaWJsaW5nKQotICAgICAgICBtX2FuY2VzdG9y
U2libGluZ1N0YWNrLmFwcGVuZChtX2N1cnJlbnQpOwotCi0gICAgbV9jdXJyZW50ID0gZGVlcGVz
dFNpYmxpbmc7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlv
biB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQp
Ci0gICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2Vu
ZGlmCi0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLWlubGluZSBFbGVtZW50JiBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvciooKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwot
ICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIHJldHVy
biAqbV9jdXJyZW50OwotfQotCi1pbmxpbmUgRWxlbWVudCogRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjo6b3BlcmF0b3ItPigpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNTRVJU
KCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuIG1fY3VycmVu
dDsKLX0KLQotaW5saW5lIGJvb2wgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6b3BlcmF0b3I9
PShjb25zdCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICBB
U1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gbV9j
dXJyZW50ID09IG90aGVyLm1fY3VycmVudDsKLX0KLQotaW5saW5lIGJvb2wgRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
JiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci19Ci0KLS8v
IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcgotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRh
bnRDb25zdEl0ZXJhdG9yOjpFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoKQotICAgIDog
bV9jdXJyZW50KG51bGxwdHIpCi17Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudENvbnN0
SXRlcmF0b3I6OkVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcihjb25zdCBFbGVtZW50KiBj
dXJyZW50KQotICAgIDogbV9jdXJyZW50KGN1cnJlbnQpCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAg
ICAsIG1fYXNzZXJ0aW9ucyhjdXJyZW50KQotI2VuZGlmCi17Ci0gICAgbV9hbmNlc3RvclNpYmxp
bmdTdGFjay51bmNoZWNrZWRBcHBlbmQobnVsbHB0cik7Ci19Ci0KLWlubGluZSB2b2lkIEVsZW1l
bnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6ZHJvcEFzc2VydGlvbnMoKQotewotI2lmIEFTU0VS
VF9FTkFCTEVECi0gICAgbV9hc3NlcnRpb25zLmNsZWFyKCk7Ci0jZW5kaWYKLX0KLQotQUxXQVlT
X0lOTElORSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3ImIEVsZW1lbnREZXNjZW5kYW50
Q29uc3RJdGVyYXRvcjo6b3BlcmF0b3IrKygpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0g
ICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0KLSAgICBFbGVt
ZW50KiBmaXJzdENoaWxkID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGlsZCgqbV9jdXJyZW50
KTsKLSAgICBFbGVtZW50KiBuZXh0U2libGluZyA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJs
aW5nKCptX2N1cnJlbnQpOwotCi0gICAgaWYgKGZpcnN0Q2hpbGQpIHsKLSAgICAgICAgaWYgKG5l
eHRTaWJsaW5nKQotICAgICAgICAgICAgbV9hbmNlc3RvclNpYmxpbmdTdGFjay5hcHBlbmQobmV4
dFNpYmxpbmcpOwotICAgICAgICBtX2N1cnJlbnQgPSBmaXJzdENoaWxkOwotICAgICAgICByZXR1
cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgaWYgKG5leHRTaWJsaW5nKSB7Ci0gICAgICAgIG1fY3Vy
cmVudCA9IG5leHRTaWJsaW5nOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAg
bV9jdXJyZW50ID0gbV9hbmNlc3RvclNpYmxpbmdTdGFjay50YWtlTGFzdCgpOwotCi0jaWYgQVNT
RVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3Ig
cmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBtX2Fzc2VydGlv
bnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuICp0
aGlzOwotfQotCi1pbmxpbmUgY29uc3QgRWxlbWVudCYgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0
ZXJhdG9yOjpvcGVyYXRvciooKSBjb25zdAotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAg
IEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIHJldHVybiAq
bV9jdXJyZW50OwotfQotCi1pbmxpbmUgY29uc3QgRWxlbWVudCogRWxlbWVudERlc2NlbmRhbnRD
b25zdEl0ZXJhdG9yOjpvcGVyYXRvci0+KCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50
KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICBy
ZXR1cm4gbV9jdXJyZW50OwotfQotCi1pbmxpbmUgYm9vbCBFbGVtZW50RGVzY2VuZGFudENvbnN0
SXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
JiBvdGhlcikgY29uc3QKLXsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0
YXRlZCgpKTsKLSAgICByZXR1cm4gbV9jdXJyZW50ID09IG90aGVyLm1fY3VycmVudDsKLX0KLQot
aW5saW5lIGJvb2wgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpvcGVyYXRvciE9KGNv
bnN0IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotfQotCi0vLyBFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yQWRhcHRlcgotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI6OkVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUmIHJvb3QpCi0gICAg
OiBtX3Jvb3Qocm9vdCkKLXsKLX0KLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Ig
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI6OmJlZ2luKCkKLXsKLSAgICByZXR1cm4g
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihFbGVtZW50VHJhdmVyc2FsOjpmaXJzdENoaWxkKG1f
cm9vdCkpOwotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yQWRhcHRlcjo6ZW5kKCkKLXsKLSAgICByZXR1cm4gRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcigpOwotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjo6bGFzdCgpCi17Ci0gICAgcmV0dXJuIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoRWxlbWVudFRyYXZlcnNhbDo6bGFzdFdpdGhpbihtX3Jv
b3QpKTsKLX0KLQotLy8gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcgotCi1p
bmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjo6RWxlbWVudERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcihjb25zdCBDb250YWluZXJOb2RlJiByb290KQotICAg
IDogbV9yb290KHJvb3QpCi17Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3IgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjo6YmVnaW4oKSBjb25z
dAotewotICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoRWxlbWVudFRy
YXZlcnNhbDo6Zmlyc3RDaGlsZChtX3Jvb3QpKTsKLX0KLQotaW5saW5lIEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvciBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyOjpl
bmQoKSBjb25zdAotewotICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3Io
KTsKLX0KLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciBFbGVtZW50RGVz
Y2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyOjpsYXN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4g
RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RXaXRo
aW4obV9yb290KSk7Ci19Ci0KLS8vIFN0YW5kYWxvbmUgZnVuY3Rpb25zCi0KLWlubGluZSBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlciBlbGVtZW50RGVzY2VuZGFudHMoQ29udGFpbmVy
Tm9kZSYgcm9vdCkKLXsKLSAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0
ZXIocm9vdCk7Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFw
dGVyIGVsZW1lbnREZXNjZW5kYW50cyhjb25zdCBDb250YWluZXJOb2RlJiByb290KQotewotICAg
IHJldHVybiBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyKHJvb3QpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBzdGQgewotdGVtcGxhdGUgPD4g
c3RydWN0IGl0ZXJhdG9yX3RyYWl0czxXZWJDb3JlOjpFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
PiB7Ci0gICAgdHlwZWRlZiBXZWJDb3JlOjpFbGVtZW50IHZhbHVlX3R5cGU7Ci19OwotdGVtcGxh
dGUgPD4gc3RydWN0IGl0ZXJhdG9yX3RyYWl0czxXZWJDb3JlOjpFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3I+IHsKLSAgICB0eXBlZGVmIGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQgdmFsdWVf
dHlwZTsKLX07Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJh
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yLmgKaW5kZXggMzc0ZGJh
N2E0YzI0NzhkZGQ5M2FlYjJhNGM0NGUzZGI4MmQ3M2I1Ni4uNzQ5OGQ0MGFhNDAxZGFjNmU1OTM1
NmZiMGEwNGI4NGY1YjcwMzQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3IuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
NCwxMSArMzQsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1jbGFzcyBFbGVtZW50SXRlcmF0b3IgeworY2xhc3MgRWxlbWVudEl0ZXJh
dG9yIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8c3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywgRWxl
bWVudFR5cGU+IHsKIHB1YmxpYzoKLSAgICBFbGVtZW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVy
Tm9kZSogcm9vdCk7Ci0gICAgRWxlbWVudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJv
b3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKLQogICAgIEVsZW1lbnRUeXBlJiBvcGVyYXRvcioo
KSBjb25zdDsKICAgICBFbGVtZW50VHlwZSogb3BlcmF0b3ItPigpIGNvbnN0OwogCkBAIC01NCwz
OSArNTEsMTQgQEAgcHVibGljOgogCiAgICAgdm9pZCBkcm9wQXNzZXJ0aW9ucygpOwogCi1wcml2
YXRlOgotICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIG1fcm9vdDsKLSAgICBFbGVtZW50VHlwZSog
bV9jdXJyZW50OworcHJvdGVjdGVkOgorICAgIEVsZW1lbnRJdGVyYXRvcihjb25zdCBDb250YWlu
ZXJOb2RlKiByb290ID0gbnVsbHB0ciwgRWxlbWVudFR5cGUqIGN1cnJlbnQgPSBudWxscHRyKTsK
IAotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fz
c2VydGlvbnM7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWNsYXNzIEVsZW1lbnRDb25zdEl0ZXJhdG9yIHsKLXB1YmxpYzoKLSAgICBFbGVtZW50Q29uc3RJ
dGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290KTsKLSAgICBFbGVtZW50Q29uc3RJdGVy
YXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290LCBjb25zdCBFbGVtZW50VHlwZSogY3VycmVu
dCk7Ci0KLSAgICBjb25zdCBFbGVtZW50VHlwZSYgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAgY29u
c3QgRWxlbWVudFR5cGUqIG9wZXJhdG9yLT4oKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBFbGVtZW50Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBFbGVtZW50Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotCi0gICAg
RWxlbWVudENvbnN0SXRlcmF0b3ImIHRyYXZlcnNlTmV4dCgpOwotICAgIEVsZW1lbnRDb25zdEl0
ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzKCk7Ci0gICAgRWxlbWVudENvbnN0SXRlcmF0b3ImIHRy
YXZlcnNlTmV4dFNpYmxpbmcoKTsKLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VQ
cmV2aW91c1NpYmxpbmcoKTsKLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VOZXh0
U2tpcHBpbmdDaGlsZHJlbigpOwotICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yJiB0cmF2ZXJzZUFu
Y2VzdG9yKCk7Ci0KLSAgICB2b2lkIGRyb3BBc3NlcnRpb25zKCk7CisgICAgYm9vbCBhdEVuZCgp
IHsgcmV0dXJuICFtX2N1cnJlbnQ7IH0KIAogcHJpdmF0ZToKICAgICBjb25zdCBDb250YWluZXJO
b2RlKiBtX3Jvb3Q7Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIG1fY3VycmVudDsKKyAgICBFbGVt
ZW50VHlwZSogbV9jdXJyZW50OwogCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBFbGVtZW50SXRl
cmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0aW9uczsKQEAgLTk1LDEzICs2Nyw2IEBAIHByaXZhdGU6
CiAKIC8vIEVsZW1lbnRJdGVyYXRvcgogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
Ci1pbmxpbmUgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudEl0ZXJhdG9yKGNv
bnN0IENvbnRhaW5lck5vZGUqIHJvb3QpCi0gICAgOiBtX3Jvb3Qocm9vdCkKLSAgICAsIG1fY3Vy
cmVudChudWxscHRyKQotewotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBp
bmxpbmUgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudEl0ZXJhdG9yKGNvbnN0
IENvbnRhaW5lck5vZGUqIHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KQogICAgIDogbV9yb290
KHJvb3QpCkBAIC0yNTEsMTQ4ICsyMTYsNiBAQCBpbmxpbmUgYm9vbCBFbGVtZW50SXRlcmF0b3I8
RWxlbWVudFR5cGU+OjpvcGVyYXRvciE9KGNvbnN0IEVsZW1lbnRJdGVyYXRvciYgb3RoZQogICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKIH0KIAotLy8gRWxlbWVudENvbnN0SXRlcmF0b3IK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVy
Tm9kZSogcm9vdCkKLSAgICA6IG1fcm9vdChyb290KQotICAgICwgbV9jdXJyZW50KG51bGxwdHIp
Ci17Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENv
bnRhaW5lck5vZGUqIHJvb3QsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogbV9y
b290KHJvb3QpCi0gICAgLCBtX2N1cnJlbnQoY3VycmVudCkKLSNpZiBBU1NFUlRfRU5BQkxFRAot
ICAgICwgbV9hc3NlcnRpb25zKGN1cnJlbnQpCi0jZW5kaWYKLXsKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHQoKQot
ewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRy
ZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3VycmVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46
Om5leHQoKm1fY3VycmVudCwgbV9yb290KTsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERy
b3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAg
aWYgKCFtX2N1cnJlbnQpCi0gICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFz
c2VydGlvbigpOwotI2VuZGlmCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5
cGU+JiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXMo
KQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRv
bVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3VycmVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlw
ZT46OnByZXZpb3VzKCptX2N1cnJlbnQsIG1fcm9vdCk7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAg
ICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5k
LgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlz
cGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAgIHJldHVybiAqdGhpczsKLX0KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5l
eHRTaWJsaW5nKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNz
ZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8
RWxlbWVudFR5cGU+OjpuZXh0U2libGluZygqbV9jdXJyZW50KTsKLSNpZiBBU1NFUlRfRU5BQkxF
RAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRo
ZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0gICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZl
bnREaXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlmCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENvbnN0SXRlcmF0
b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZl
cnNlUHJldmlvdXNTaWJsaW5nKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NF
UlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICBtX2N1cnJlbnQgPSBU
cmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpwcmV2aW91c1NpYmxpbmcoKm1fY3VycmVudCk7Ci0jaWYg
QVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0
b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBtX2Fzc2Vy
dGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAgIHJldHVybiAq
dGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1l
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+Ojp0cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCkKLXsKLSAgICBBU1NFUlQobV9j
dXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsK
LSAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0U2tpcHBpbmdDaGls
ZHJlbigqbV9jdXJyZW50LCBtX3Jvb3QpOwotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRHJv
cCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KLSAgICBp
ZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNz
ZXJ0aW9uKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT4mIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VBbmNlc3Rvcigp
Ci17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNTRVJUKG1fY3VycmVudCAhPSBtX3Jv
b3QpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAg
IG1fY3VycmVudCA9IGZpbmRFbGVtZW50QW5jZXN0b3JPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+
KCptX2N1cnJlbnQpOwotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0
aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVu
dCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0j
ZW5kaWYKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KLWlubGluZSB2b2lkIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6ZHJv
cEFzc2VydGlvbnMoKQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9hc3NlcnRpb25zLmNs
ZWFyKCk7Ci0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5s
aW5lIGNvbnN0IEVsZW1lbnRUeXBlJiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46
Om9wZXJhdG9yKigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNTRVJU
KCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuICptX2N1cnJl
bnQ7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBjb25zdCBF
bGVtZW50VHlwZSogRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvci0+
KCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0
aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gbV9jdXJyZW50OwotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgYm9vbCBFbGVtZW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yPT0oY29uc3QgRWxlbWVudENvbnN0SXRlcmF0
b3ImIG90aGVyKSBjb25zdAotewotICAgIEFTU0VSVChtX3Jvb3QgPT0gb3RoZXIubV9yb290KTsK
LSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1
cm4gbV9jdXJyZW50ID09IG90aGVyLm1fY3VycmVudDsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgotaW5saW5lIGJvb2wgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5
cGU+OjpvcGVyYXRvciE9KGNvbnN0IEVsZW1lbnRDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3QK
LXsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2luY2x1ZGUgIkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9MaXZlTm9kZUxpc3QuY3BwCmluZGV4IGRkMGM5OTkxODA5Y2JmN2M3MTA2MDA1MDIxNjRlOWEx
NmZkY2MxOTEuLmMzMDIxOWQxOTNiN2I5NDlkZjFlYmVjZDMwOTBiMjYzZjUyZGY4MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0
IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5
OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIw
MDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDYtMjAwOCwgMjAxMCwgMjAxMy0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsMzIgKzIzLDIxIEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiTGl2ZU5vZGVMaXN0LmgiCiAKLSNpbmNsdWRlICJDbGFzc0Nv
bGxlY3Rpb24uaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudFRyYXZl
cnNhbC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoTGl2ZU5vZGVMaXN0KTsKLQotTGl2ZU5vZGVMaXN0OjpMaXZlTm9kZUxpc3Qo
Q29udGFpbmVyTm9kZSYgb3duZXJOb2RlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxp
ZGF0aW9uVHlwZSkKK0xpdmVOb2RlTGlzdDo6TGl2ZU5vZGVMaXN0KENvbnRhaW5lck5vZGUmIG93
bmVyTm9kZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUsIElzUm9v
dGVkQXREb2N1bWVudCBpc1Jvb3RlZEF0RG9jdW1lbnQpCiAgICAgOiBtX293bmVyTm9kZShvd25l
ck5vZGUpCiAgICAgLCBtX2ludmFsaWRhdGlvblR5cGUoaW52YWxpZGF0aW9uVHlwZSkKLSAgICAs
IG1faXNSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudChmYWxzZSkKKyAgICAsIG1f
aXNSb290ZWRBdERvY3VtZW50V2hlbkNvbm5lY3RlZChpc1Jvb3RlZEF0RG9jdW1lbnQgIT0gSXNS
b290ZWRBdERvY3VtZW50OjpObykKKyAgICAsIG1faXNSb290ZWRBdERvY3VtZW50KG1faXNSb290
ZWRBdERvY3VtZW50V2hlbkNvbm5lY3RlZCAmJiBvd25lck5vZGUuaXNDb25uZWN0ZWQoKSkKIHsK
LSAgICBBU1NFUlQobV9pbnZhbGlkYXRpb25UeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bnZhbGlkYXRpb25UeXBlKSk7CiB9CiAKIExpdmVOb2RlTGlzdDo6fkxpdmVOb2RlTGlzdCgpID0g
ZGVmYXVsdDsKIAotQ29udGFpbmVyTm9kZSYgTGl2ZU5vZGVMaXN0Ojpyb290Tm9kZSgpIGNvbnN0
Cit2b2lkIExpdmVOb2RlTGlzdDo6aW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQoRG9jdW1lbnQm
KSBjb25zdAogewotICAgIGlmIChpc1Jvb3RlZEF0RG9jdW1lbnQoKSAmJiBvd25lck5vZGUoKS5p
c0Nvbm5lY3RlZCgpKQotICAgICAgICByZXR1cm4gb3duZXJOb2RlKCkuZG9jdW1lbnQoKTsKLQot
ICAgIHJldHVybiBvd25lck5vZGUoKTsKKyAgICBtX2lzUm9vdGVkQXREb2N1bWVudCA9IG1faXNS
b290ZWRBdERvY3VtZW50V2hlbkNvbm5lY3RlZCAmJiBtX293bmVyTm9kZS0+aXNDb25uZWN0ZWQo
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0xpdmVOb2RlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5o
CmluZGV4IGYyN2YwZWY2NzRiYmQ5ODIzMTRjMGJiYjI1Yjg1MjQyMjM0ZGE1OGYuLmQyM2QxNmYx
ZmJiN2I5YjdlZmRhMDcyNmYwNzIxMDJiMWE3ZjNhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9MaXZlTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVM
aXN0LmgKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJDb2xsZWN0aW9uSW5kZXhDYWNoZS5o
IgogI2luY2x1ZGUgIkNvbGxlY3Rpb25UcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgotI2luY2x1ZGUgIkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CkBAIC0zOSwzOSArMzgsMzggQEAgY2xhc3MgRWxlbWVudDsKIHN0YXRpYyBib29sIHNob3VsZElu
dmFsaWRhdGVUeXBlT25BdHRyaWJ1dGVDaGFuZ2UoTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlLCBj
b25zdCBRdWFsaWZpZWROYW1lJik7CiAKIGNsYXNzIExpdmVOb2RlTGlzdCA6IHB1YmxpYyBOb2Rl
TGlzdCB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChMaXZlTm9kZUxpc3QpOworICAgIFdU
Rl9NQUtFX0lTT19OT05BTExPQ0FUQUJMRShMaXZlTm9kZUxpc3QpOwogcHVibGljOgotICAgIExp
dmVOb2RlTGlzdChDb250YWluZXJOb2RlJiBvd25lck5vZGUsIE5vZGVMaXN0SW52YWxpZGF0aW9u
VHlwZSk7CiAgICAgdmlydHVhbCB+TGl2ZU5vZGVMaXN0KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wg
ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNS
b290ZWRBdERvY3VtZW50KCkgY29uc3QgPSAwOworICAgIGJvb2wgaXNSb290ZWRBdERvY3VtZW50
KCkgY29uc3QgeyByZXR1cm4gbV9pc1Jvb3RlZEF0RG9jdW1lbnQ7IH0KIAotICAgIEFMV0FZU19J
TkxJTkUgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxOb2RlTGlzdEludmFsaWRhdGlvblR5cGU+KG1faW52YWxpZGF0
aW9uVHlwZSk7IH0KKyAgICBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxpZGF0aW9uVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW52YWxpZGF0aW9uVHlwZTsgfQogICAgIENvbnRhaW5lck5v
ZGUmIG93bmVyTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXJOb2RlOyB9Ci0gICAgQUxXQVlT
X0lOTElORSB2b2lkIGludmFsaWRhdGVDYWNoZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChzaG91bGRJbnZhbGlkYXRl
VHlwZU9uQXR0cmlidXRlQ2hhbmdlKGludmFsaWRhdGlvblR5cGUoKSwgYXR0ck5hbWUpKQotICAg
ICAgICAgICAgaW52YWxpZGF0ZUNhY2hlKCk7Ci0gICAgfQotICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlQ2FjaGVGb3JEb2N1bWVudChEb2N1bWVudCYpIGNvbnN0ID0gMDsKKyAgICB2b2lkIGlu
dmFsaWRhdGVDYWNoZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQo
RG9jdW1lbnQmKSBjb25zdDsKICAgICB2b2lkIGludmFsaWRhdGVDYWNoZSgpIGNvbnN0IHsgaW52
YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQoZG9jdW1lbnQoKSk7IH0KIAogICAgIGJvb2wgaXNSZWdp
c3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZWdp
c3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudDsgfQotICAgIHZvaWQgc2V0UmVnaXN0ZXJl
ZEZvckludmFsaWRhdGlvbkF0RG9jdW1lbnQoYm9vbCBmKSB7IG1faXNSZWdpc3RlcmVkRm9ySW52
YWxpZGF0aW9uQXREb2N1bWVudCA9IGY7IH0KKyAgICB2b2lkIHNldFJlZ2lzdGVyZWRGb3JJbnZh
bGlkYXRpb25BdERvY3VtZW50KGJvb2wgaXNSZWdpc3RlcmVkKSB7IG1faXNSZWdpc3RlcmVkRm9y
SW52YWxpZGF0aW9uQXREb2N1bWVudCA9IGlzUmVnaXN0ZXJlZDsgfQogCiBwcm90ZWN0ZWQ6Cisg
ICAgZW51bSBjbGFzcyBJc1Jvb3RlZEF0RG9jdW1lbnQgOiBib29sIHsgTm8sIFllcyB9OworICAg
IExpdmVOb2RlTGlzdChDb250YWluZXJOb2RlJiBvd25lck5vZGUsIE5vZGVMaXN0SW52YWxpZGF0
aW9uVHlwZSwgSXNSb290ZWRBdERvY3VtZW50KTsKKwogICAgIERvY3VtZW50JiBkb2N1bWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fb3duZXJOb2RlLT5kb2N1bWVudCgpOyB9CisgICAgQ29udGFpbmVy
Tm9kZSYgcm9vdE5vZGUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBib29sIGlzTGl2ZU5vZGVM
aXN0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgQ29udGFpbmVyTm9kZSYg
cm9vdE5vZGUoKSBjb25zdDsKLQogICAgIFJlZjxDb250YWluZXJOb2RlPiBtX293bmVyTm9kZTsK
IAotICAgIGNvbnN0IHVuc2lnbmVkIG1faW52YWxpZGF0aW9uVHlwZTsKLSAgICBib29sIG1faXNS
ZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudDsKKyAgICBjb25zdCBOb2RlTGlzdElu
dmFsaWRhdGlvblR5cGUgbV9pbnZhbGlkYXRpb25UeXBlOworICAgIGJvb2wgbV9pc1JlZ2lzdGVy
ZWRGb3JJbnZhbGlkYXRpb25BdERvY3VtZW50IHsgZmFsc2UgfTsKKyAgICBjb25zdCBib29sIG1f
aXNSb290ZWRBdERvY3VtZW50V2hlbkNvbm5lY3RlZDsKKyAgICBtdXRhYmxlIGJvb2wgbV9pc1Jv
b3RlZEF0RG9jdW1lbnQ7CiB9OwogCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgpAQCAt
ODEsMTQgKzc5LDE3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWNoZWRMaXZlTm9kZUxpc3Qo
KTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW5kZXhD
YWNoZS5ub2RlQ291bnQobm9kZUxpc3QoKSk7IH0KLSAgICBFbGVtZW50KiBpdGVtKHVuc2lnbmVk
IG9mZnNldCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVBdChub2Rl
TGlzdCgpLCBvZmZzZXQpOyB9CisgICAgRWxlbWVudCogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1faW5kZXhDYWNoZS5ub2RlQXQobm9kZUxpc3QoKSwgb2Zmc2V0
KTsgfQorCisgICAgdXNpbmcgVHJhdmVyc2FsID0gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0
aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+OworICAgIHVzaW5nIEl0ZXJhdG9yID0gVHJh
dmVyc2FsOjpJdGVyYXRvcjsKIAogICAgIC8vIEZvciBDb2xsZWN0aW9uSW5kZXhDYWNoZQotICAg
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgY29sbGVjdGlvbkJlZ2luKCkgY29uc3QgeyByZXR1
cm4gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFu
dHM+OjpiZWdpbihub2RlTGlzdCgpLCByb290Tm9kZSgpKTsgfQotICAgIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IgY29sbGVjdGlvbkxhc3QoKSBjb25zdCB7IHJldHVybiBDb2xsZWN0aW9uVHJh
dmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46Omxhc3Qobm9kZUxp
c3QoKSwgcm9vdE5vZGUoKSk7IH0KLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGNvbGxl
Y3Rpb25FbmQoKSBjb25zdCB7IHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKCk7IH0K
LSAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkg
Y29uc3QgeyBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNj
ZW5kYW50cz46OnRyYXZlcnNlRm9yd2FyZChub2RlTGlzdCgpLCBjdXJyZW50LCBjb3VudCwgdHJh
dmVyc2VkQ291bnQpOyB9Ci0gICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkgY29uc3QgeyBD
b2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46
OnRyYXZlcnNlQmFja3dhcmQobm9kZUxpc3QoKSwgY3VycmVudCwgY291bnQpOyB9CisgICAgYXV0
byBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBUcmF2ZXJzYWw6OmJlZ2luKG5vZGVM
aXN0KCksIHJvb3ROb2RlKCkpOyB9CisgICAgYXV0byBjb2xsZWN0aW9uTGFzdCgpIGNvbnN0IHsg
cmV0dXJuIFRyYXZlcnNhbDo6bGFzdChub2RlTGlzdCgpLCByb290Tm9kZSgpKTsgfQorICAgIGF1
dG8gY29sbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIFRyYXZlcnNhbDo6ZW5kKHJvb3ROb2Rl
KCkpOyB9CisgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEl0ZXJhdG9yJiBjdXJy
ZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdCB7IFRy
YXZlcnNhbDo6dHJhdmVyc2VGb3J3YXJkKG5vZGVMaXN0KCksIGN1cnJlbnQsIGNvdW50LCB0cmF2
ZXJzZWRDb3VudCk7IH0KKyAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKEl0ZXJh
dG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkgY29uc3QgeyBUcmF2ZXJzYWw6OnRyYXZlcnNl
QmFja3dhcmQobm9kZUxpc3QoKSwgY3VycmVudCwgY291bnQpOyB9CiAgICAgYm9vbCBjb2xsZWN0
aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lk
IHdpbGxWYWxpZGF0ZUluZGV4Q2FjaGUoKSBjb25zdCB7IGRvY3VtZW50KCkucmVnaXN0ZXJOb2Rl
TGlzdEZvckludmFsaWRhdGlvbihjb25zdF9jYXN0PENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlz
dFR5cGU+Jj4oKnRoaXMpKTsgfQogCkBAIC0xMDEsMTggKzEwMiwyMyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX2luZGV4Q2FjaGUubWVtb3J5Q29zdCgpOwogICAgIH0KIAorICAgIHVzaW5n
IExpdmVOb2RlTGlzdDo6cm9vdE5vZGU7CisKIHByb3RlY3RlZDoKLSAgICBDYWNoZWRMaXZlTm9k
ZUxpc3QoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSk7
CisgICAgQ2FjaGVkTGl2ZU5vZGVMaXN0KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBOb2RlTGlz
dEludmFsaWRhdGlvblR5cGUsIElzUm9vdGVkQXREb2N1bWVudCk7CiAKIHByaXZhdGU6CiAgICAg
Tm9kZUxpc3RUeXBlJiBub2RlTGlzdCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE5vZGVMaXN0VHlw
ZSY+KCp0aGlzKTsgfQogICAgIGNvbnN0IE5vZGVMaXN0VHlwZSYgbm9kZUxpc3QoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigqdGhpcyk7IH0KIAotICAg
IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKCkgY29uc3Q7Ci0KLSAgICBtdXRhYmxlIENvbGxlY3Rp
b25JbmRleENhY2hlPE5vZGVMaXN0VHlwZSwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcj4gbV9p
bmRleENhY2hlOworICAgIG11dGFibGUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Tm9kZUxpc3RUeXBl
LCBJdGVyYXRvcj4gbV9pbmRleENhY2hlOwogfTsKIAoraW5saW5lIENvbnRhaW5lck5vZGUmIExp
dmVOb2RlTGlzdDo6cm9vdE5vZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2lzUm9vdGVkQXRE
b2N1bWVudCA/IG93bmVyTm9kZSgpLmRvY3VtZW50KCkgOiBvd25lck5vZGUoKTsKK30KKwogQUxX
QVlTX0lOTElORSBib29sIHNob3VsZEludmFsaWRhdGVUeXBlT25BdHRyaWJ1dGVDaGFuZ2UoTm9k
ZUxpc3RJbnZhbGlkYXRpb25UeXBlIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQogewogICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTM3LDkgKzE0MywxNSBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgc2hvdWxkSW52YWxpZGF0ZVR5cGVPbkF0dHJpYnV0ZUNoYW5nZShOb2RlTGlzdElu
dmFsaWRhdGlvblR5cAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorQUxXQVlTX0lOTElORSB2b2lk
IExpdmVOb2RlTGlzdDo6aW52YWxpZGF0ZUNhY2hlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0Cit7CisgICAgaWYgKHNob3VsZEludmFsaWRhdGVU
eXBlT25BdHRyaWJ1dGVDaGFuZ2UobV9pbnZhbGlkYXRpb25UeXBlLCBhdHRyaWJ1dGVOYW1lKSkK
KyAgICAgICAgaW52YWxpZGF0ZUNhY2hlKCk7Cit9CisKIHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlz
dFR5cGU+Ci1DYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Q2FjaGVkTGl2ZU5vZGVM
aXN0KENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGlu
dmFsaWRhdGlvblR5cGUpCi0gICAgOiBMaXZlTm9kZUxpc3Qob3duZXJOb2RlLCBpbnZhbGlkYXRp
b25UeXBlKQorQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OkNhY2hlZExpdmVOb2Rl
TGlzdChDb250YWluZXJOb2RlJiBvd25lck5vZGUsIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBp
bnZhbGlkYXRpb25UeXBlLCBJc1Jvb3RlZEF0RG9jdW1lbnQgaXNSb290ZWRBdERvY3VtZW50KQor
ICAgIDogTGl2ZU5vZGVMaXN0KG93bmVyTm9kZSwgaW52YWxpZGF0aW9uVHlwZSwgaXNSb290ZWRB
dERvY3VtZW50KQogICAgICwgbV9pbmRleENhY2hlKG5vZGVMaXN0KCkpCiB7CiB9CkBAIC0xNTEs
MjIgKzE2MywxNSBAQCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6fkNhY2hlZExp
dmVOb2RlTGlzdCgpCiAgICAgICAgIGRvY3VtZW50KCkudW5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52
YWxpZGF0aW9uKCp0aGlzKTsKIH0KIAotdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KLWlu
bGluZSBDb250YWluZXJOb2RlJiBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6cm9v
dE5vZGUoKSBjb25zdAotewotICAgIGlmIChub2RlTGlzdCgpLmlzUm9vdGVkQXREb2N1bWVudCgp
ICYmIG93bmVyTm9kZSgpLmlzQ29ubmVjdGVkKCkpCi0gICAgICAgIHJldHVybiBvd25lck5vZGUo
KS5kb2N1bWVudCgpOwotCi0gICAgcmV0dXJuIG93bmVyTm9kZSgpOwotfQotCiB0ZW1wbGF0ZSA8
Y2xhc3MgTm9kZUxpc3RUeXBlPgogdm9pZCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBl
Pjo6aW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAog
ewotICAgIGlmICghbV9pbmRleENhY2hlLmhhc1ZhbGlkQ2FjaGUobm9kZUxpc3QoKSkpCi0gICAg
ICAgIHJldHVybjsKLSAgICBkb2N1bWVudC51bnJlZ2lzdGVyTm9kZUxpc3RGb3JJbnZhbGlkYXRp
b24oY29uc3RfY2FzdDxOb2RlTGlzdFR5cGUmPihub2RlTGlzdCgpKSk7Ci0gICAgbV9pbmRleENh
Y2hlLmludmFsaWRhdGUobm9kZUxpc3QoKSk7CisgICAgYm9vbCBoYXNWYWxpZENhY2hlID0gbV9p
bmRleENhY2hlLmhhc1ZhbGlkQ2FjaGUobm9kZUxpc3QoKSk7CisgICAgaWYgKGhhc1ZhbGlkQ2Fj
aGUpCisgICAgICAgIGRvY3VtZW50LnVucmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbihj
b25zdF9jYXN0PE5vZGVMaXN0VHlwZSY+KG5vZGVMaXN0KCkpKTsKKyAgICBMaXZlTm9kZUxpc3Q6
OmludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50KGRvY3VtZW50KTsKKyAgICBpZiAoaGFzVmFsaWRD
YWNoZSkKKyAgICAgICAgbV9pbmRleENhY2hlLmludmFsaWRhdGUobm9kZUxpc3QoKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
YW1lTm9kZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5jcHAKaW5k
ZXggZjBhZGQyYWMyZDU0NjY2ZmEyZmU4NTc4OTYyY2I1NDA4ZmJiNzM1NC4uMTViNTFmZDk1MTc1
NTM1YjI5OTAwYmNiN2EyMDNhMDI4ZWUwZmZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL05hbWVOb2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVOb2RlTGlz
dC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAo
a25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29p
dmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxs
ZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNywgMjAxNC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzMs
MTEgKzMzLDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoTmFtZU5vZGVMaXN0KTsKIAogTmFtZU5vZGVMaXN0OjpOYW1lTm9kZUxpc3Qo
Q29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCi0gICAgOiBD
YWNoZWRMaXZlTm9kZUxpc3Qocm9vdE5vZGUsIEludmFsaWRhdGVPbk5hbWVBdHRyQ2hhbmdlKQor
ICAgIDogQ2FjaGVkTGl2ZU5vZGVMaXN0KHJvb3ROb2RlLCBJbnZhbGlkYXRlT25OYW1lQXR0ckNo
YW5nZSwgSXNSb290ZWRBdERvY3VtZW50OjpObykKICAgICAsIG1fbmFtZShuYW1lKQogewogfQog
CitSZWY8TmFtZU5vZGVMaXN0PiBOYW1lTm9kZUxpc3Q6OmNyZWF0ZShDb250YWluZXJOb2RlJiBy
b290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBOYW1lTm9kZUxpc3Qocm9vdE5vZGUsIG5hbWUpKTsKK30KKwogTmFtZU5vZGVMaXN0Ojp+
TmFtZU5vZGVMaXN0KCkKIHsKICAgICBvd25lck5vZGUoKS5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2Fj
aGVXaXRoQXRvbU5hbWUoKnRoaXMsIG1fbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTmFtZU5vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmgK
aW5kZXggNzBjNWM3MDBlOTUwZTUzMTQzN2YwZmRlNTFjY2MzOGQ2ZGNiM2FhMS4uOTRlMzZkMWI3
M2EyMGM5NzcyMDI3Y2I4ODc5NDM2Yzg5MDE1OTA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05hbWVOb2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxp
c3QuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChr
bm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2
aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxl
ckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LTIwMDgsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNCwy
NCArMjQsMTYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTGl2ZU5vZGVMaXN0LmgiCi0j
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gTm9kZUxpc3Qgd2hpY2ggbGlzdHMgYWxsIE5v
ZGVzIGluIGEgRWxlbWVudCB3aXRoIGEgZ2l2ZW4gIm5hbWUiIGF0dHJpYnV0ZQogY2xhc3MgTmFt
ZU5vZGVMaXN0IGZpbmFsIDogcHVibGljIENhY2hlZExpdmVOb2RlTGlzdDxOYW1lTm9kZUxpc3Q+
IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE5hbWVOb2RlTGlzdCk7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxOYW1lTm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9k
ZSwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE5hbWVOb2RlTGlzdChyb290Tm9kZSwgbmFtZSkpOwotICAgIH0KLQorICAgIHN0YXRp
YyBSZWY8TmFtZU5vZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0
IEF0b21TdHJpbmcmIG5hbWUpOwogICAgIHZpcnR1YWwgfk5hbWVOb2RlTGlzdCgpOwogCi0gICAg
Ym9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBp
c1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgog
ICAgIE5hbWVOb2RlTGlzdChDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmlu
ZyYgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggOTgyMTI0NGRjOTE3NDkzNDFiM2QyNmM1M2Fl
MjU3ZjNhY2FhYTk1MS4uZjljNTlkMDY1NzExNTVlMTEzMTNhMDhmZDdhNTZmYzIyYTQ2MmNmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcApAQCAtNDcsNyArNDcsNiBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgIkhUTUxBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVu
dC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFNsb3RFbGVt
ZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggZWYwNTUyOTM0Mjc3
ZDQzYjExOWE0Njc1MWZmNDI4ZTBhMTgwMzc5MC4uYzA2MWEzZGUyYmM1NTgyNWY5NWNmNzJkNDgw
MzNhMWVjZDE5ZDI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVl
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjgsNyArMjgsNyBA
QAogI2luY2x1ZGUgIlNlbGVjdG9yUXVlcnkuaCIKIAogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgot
I2luY2x1ZGUgIkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJTZWxlY3RvckNo
ZWNrZXIuaCIKICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgpAQCAtMTUwLDE1ICsxNTAsMTIg
QEAgYm9vbCBTZWxlY3RvckRhdGFMaXN0OjptYXRjaGVzKEVsZW1lbnQmIHRhcmdldEVsZW1lbnQp
IGNvbnN0CiAKIEVsZW1lbnQqIFNlbGVjdG9yRGF0YUxpc3Q6OmNsb3Nlc3QoRWxlbWVudCYgdGFy
Z2V0RWxlbWVudCkgY29uc3QKIHsKLSAgICBFbGVtZW50KiBjdXJyZW50Tm9kZSA9ICZ0YXJnZXRF
bGVtZW50OwotICAgIGRvIHsKKyAgICBmb3IgKGF1dG8mIGN1cnJlbnRFbGVtZW50IDogbGluZWFn
ZU9mVHlwZTxFbGVtZW50Pih0YXJnZXRFbGVtZW50KSkgewogICAgICAgICBmb3IgKGF1dG8mIHNl
bGVjdG9yIDogbV9zZWxlY3RvcnMpIHsKLSAgICAgICAgICAgIEVsZW1lbnQqIGNhbmRpZGF0ZUVs
ZW1lbnQgPSBzZWxlY3RvckNsb3Nlc3Qoc2VsZWN0b3IsICpjdXJyZW50Tm9kZSwgdGFyZ2V0RWxl
bWVudCk7Ci0gICAgICAgICAgICBpZiAoY2FuZGlkYXRlRWxlbWVudCkKKyAgICAgICAgICAgIGlm
IChhdXRvKiBjYW5kaWRhdGVFbGVtZW50ID0gc2VsZWN0b3JDbG9zZXN0KHNlbGVjdG9yLCBjdXJy
ZW50RWxlbWVudCwgdGFyZ2V0RWxlbWVudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRp
ZGF0ZUVsZW1lbnQ7CiAgICAgICAgIH0KLSAgICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9k
ZS0+cGFyZW50RWxlbWVudCgpOwotICAgIH0gd2hpbGUgKGN1cnJlbnROb2RlKTsKKyAgICB9CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTI5NSw3ICsyOTIsNyBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgU2VsZWN0b3JRdWVyeVRyYWl0Pgogc3RhdGljIGlubGluZSB2b2lkIGVsZW1lbnRzRm9y
TG9jYWxOYW1lKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5n
JiBsb2NhbE5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGxvd2VyY2FzZUxvY2FsTmFtZSwgdHlwZW5h
bWUgU2VsZWN0b3JRdWVyeVRyYWl0OjpPdXRwdXRUeXBlJiBvdXRwdXQpCiB7CiAgICAgaWYgKGxv
Y2FsTmFtZSA9PSBsb3dlcmNhc2VMb2NhbE5hbWUpIHsKLSAgICAgICAgZm9yIChhdXRvJiBlbGVt
ZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3RO
b2RlKSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8
RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAgICAg
ICAgICAgaWYgKGVsZW1lbnQudGFnUU5hbWUoKS5sb2NhbE5hbWUoKSA9PSBsb2NhbE5hbWUpIHsK
ICAgICAgICAgICAgICAgICBTZWxlY3RvclF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1l
bnQob3V0cHV0LCAmZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKFNlbGVjdG9yUXVlcnlU
cmFpdDo6c2hvdWxkT25seU1hdGNoRmlyc3RFbGVtZW50KQpAQCAtMzAzLDcgKzMwMCw3IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBlbGVtZW50c0ZvckxvY2FsTmFtZShjb25zdCBDb250YWluZXJOb2Rl
JiByb290Tm9kZSwgY29uc3QgQXRvCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVs
c2UgewotICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29u
c3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgICAgICBmb3IgKGF1dG8m
IGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5l
ck5vZGUmPihyb290Tm9kZSkpKSB7CiAgICAgICAgICAgICBpZiAobG9jYWxOYW1lTWF0Y2hlcyhl
bGVtZW50LCBsb2NhbE5hbWUsIGxvd2VyY2FzZUxvY2FsTmFtZSkpIHsKICAgICAgICAgICAgICAg
ICBTZWxlY3RvclF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1lbnQob3V0cHV0LCAmZWxl
bWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKFNlbGVjdG9yUXVlcnlUcmFpdDo6c2hvdWxkT25s
eU1hdGNoRmlyc3RFbGVtZW50KQpAQCAtMzE2LDcgKzMxMyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBlbGVtZW50c0ZvckxvY2FsTmFtZShjb25zdCBDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29u
c3QgQXRvCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRyYWl0Pgogc3RhdGljIGlu
bGluZSB2b2lkIGFueUVsZW1lbnQoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIHR5cGVu
YW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0cHV0KQogewotICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9jYXN0PENvbnRhaW5lck5v
ZGUmPihyb290Tm9kZSkpKSB7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNP
ZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewog
ICAgICAgICBTZWxlY3RvclF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1lbnQob3V0cHV0
LCAmZWxlbWVudCk7CiAgICAgICAgIGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlN
YXRjaEZpcnN0RWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM0NSw3ICszNDIsNyBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZVRhZ05h
bWVTZWxlY3RvckRhdGEoY29uc3QgQ29udAogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgLy8gRmFsbGJhY2s6IE5hbWVzcGFjZVVSSSBpcyBzZXQsIHNlbGVjdG9yTG9jYWxOYW1lIG1h
eSBiZSBzdGFyQXRvbSgpLgotICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVz
Y2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgICAg
ICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihjb25zdF9j
YXN0PENvbnRhaW5lck5vZGUmPihyb290Tm9kZSkpKSB7CiAgICAgICAgICAgICBpZiAoZWxlbWVu
dC5uYW1lc3BhY2VVUkkoKSA9PSBzZWxlY3Rvck5hbWVzcGFjZVVSSSAmJiBsb2NhbE5hbWVNYXRj
aGVzKGVsZW1lbnQsIHNlbGVjdG9yTG9jYWxOYW1lLCBzZWxlY3Rvckxvd2VyY2FzZUxvY2FsTmFt
ZSkpIHsKICAgICAgICAgICAgICAgICBTZWxlY3RvclF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZv
ckVsZW1lbnQob3V0cHV0LCAmZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKFNlbGVjdG9y
UXVlcnlUcmFpdDo6c2hvdWxkT25seU1hdGNoRmlyc3RFbGVtZW50KQpAQCAtMzYyLDcgKzM1OSw3
IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlQ2xh
c3NOYW1lU2VsZWN0b3JEYXRhKGNvbnN0IENvCiAgICAgQVNTRVJUKGlzU2luZ2xlQ2xhc3NOYW1l
U2VsZWN0b3IoKnNlbGVjdG9yRGF0YS5zZWxlY3RvcikpOwogCiAgICAgY29uc3QgQXRvbVN0cmlu
ZyYgY2xhc3NOYW1lID0gc2VsZWN0b3JEYXRhLnNlbGVjdG9yLT52YWx1ZSgpOwotICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9jYXN0PENvbnRhaW5lck5v
ZGUmPihyb290Tm9kZSkpKSB7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNP
ZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewog
ICAgICAgICBpZiAoZWxlbWVudC5oYXNDbGFzcygpICYmIGVsZW1lbnQuY2xhc3NOYW1lcygpLmNv
bnRhaW5zKGNsYXNzTmFtZSkpIHsKICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBw
ZW5kT3V0cHV0Rm9yRWxlbWVudChvdXRwdXQsICZlbGVtZW50KTsKICAgICAgICAgICAgIGlmIChT
ZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAgLTM3Niw3
ICszNzMsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNp
bmdsZVNlbGVjdG9yRGF0YShjb25zdCBDb250YWluZXJObwogewogICAgIEFTU0VSVChtX3NlbGVj
dG9ycy5zaXplKCkgPT0gMSk7CiAKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVz
Y2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4oc2VhcmNoUm9vdE5vZGUpKSkgewor
ICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0
X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNlYXJjaFJvb3ROb2RlKSkpIHsKICAgICAgICAgaWYgKHNl
bGVjdG9yTWF0Y2hlcyhzZWxlY3RvckRhdGEsIGVsZW1lbnQsIHJvb3ROb2RlKSkgewogICAgICAg
ICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwg
JmVsZW1lbnQpOwogICAgICAgICAgICAgaWYgKFNlbGVjdG9yUXVlcnlUcmFpdDo6c2hvdWxkT25s
eU1hdGNoRmlyc3RFbGVtZW50KQpAQCAtMzg4LDcgKzM4NSw3IEBAIEFMV0FZU19JTkxJTkUgdm9p
ZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlU2VsZWN0b3JEYXRhKGNvbnN0IENvbnRh
aW5lck5vCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRyYWl0PgogQUxXQVlTX0lO
TElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVNdWx0aVNlbGVjdG9yRGF0
YShjb25zdCBDb250YWluZXJOb2RlJiByb290Tm9kZSwgdHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRy
YWl0OjpPdXRwdXRUeXBlJiBvdXRwdXQpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvJiBlbGVtZW50
IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2Rl
KSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50
Pihjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihyb290Tm9kZSkpKSB7CiAgICAgICAgIGZvciAo
YXV0byYgc2VsZWN0b3IgOiBtX3NlbGVjdG9ycykgewogICAgICAgICAgICAgaWYgKHNlbGVjdG9y
TWF0Y2hlcyhzZWxlY3RvciwgZWxlbWVudCwgcm9vdE5vZGUpKSB7CiAgICAgICAgICAgICAgICAg
U2VsZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1l
bnQpOwpAQCAtNDA0LDcgKzQwMSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFM
aXN0OjpleGVjdXRlU2luZ2xlTXVsdGlTZWxlY3RvckRhdGEoY29uc3QgQ29udGFpCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRyYWl0PgogQUxXQVlTX0lOTElORSB2b2lkIFNlbGVj
dG9yRGF0YUxpc3Q6OmV4ZWN1dGVDb21waWxlZFNpbXBsZVNlbGVjdG9yQ2hlY2tlcihjb25zdCBD
b250YWluZXJOb2RlJiBzZWFyY2hSb290Tm9kZSwgU2VsZWN0b3JDb21waWxlcjo6UXVlcnlTZWxl
Y3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIsIHR5cGVuYW1lIFNlbGVj
dG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0cHV0LCBjb25zdCBTZWxlY3RvckRhdGEmIHNl
bGVjdG9yRGF0YSkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVz
Y2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4oc2VhcmNoUm9vdE5vZGUpKSkgewor
ICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0
X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNlYXJjaFJvb3ROb2RlKSkpIHsKICAgICAgICAgc2VsZWN0
b3JEYXRhLmNvbXBpbGVkU2VsZWN0b3Iud2FzVXNlZCgpOwogCiAgICAgICAgIGlmIChzZWxlY3Rv
ckNoZWNrZXIoJmVsZW1lbnQpKSB7CkBAIC00MjEsNyArNDE4LDcgQEAgQUxXQVlTX0lOTElORSB2
b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVDb21waWxlZFNlbGVjdG9yQ2hlY2tlcldpdGhD
aGVja2luZ0MKICAgICBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCBjaGVja2luZ0Nv
bnRleHQoU2VsZWN0b3JDaGVja2VyOjpNb2RlOjpRdWVyeWluZ1J1bGVzKTsKICAgICBjaGVja2lu
Z0NvbnRleHQuc2NvcGUgPSByb290Tm9kZS5pc0RvY3VtZW50Tm9kZSgpID8gbnVsbHB0ciA6ICZy
b290Tm9kZTsKIAotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhj
b25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihzZWFyY2hSb290Tm9kZSkpKSB7CisgICAgZm9yIChh
dXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250
YWluZXJOb2RlJj4oc2VhcmNoUm9vdE5vZGUpKSkgewogICAgICAgICBzZWxlY3RvckRhdGEuY29t
cGlsZWRTZWxlY3Rvci53YXNVc2VkKCk7CiAKICAgICAgICAgaWYgKHNlbGVjdG9yQ2hlY2tlcigm
ZWxlbWVudCwgJmNoZWNraW5nQ29udGV4dCkpIHsKQEAgLTQzNyw3ICs0MzQsNyBAQCBBTFdBWVNf
SU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZUNvbXBpbGVkU2luZ2xlTXVsdGlT
ZWxlY3RvckRhdGEoY29ucwogewogICAgIFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0
IGNoZWNraW5nQ29udGV4dChTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OlF1ZXJ5aW5nUnVsZXMpOwog
ICAgIGNoZWNraW5nQ29udGV4dC5zY29wZSA9IHJvb3ROb2RlLmlzRG9jdW1lbnROb2RlKCkgPyBu
dWxscHRyIDogJnJvb3ROb2RlOwotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNj
ZW5kYW50cyhjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihyb290Tm9kZSkpKSB7CisgICAgZm9y
IChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxD
b250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAgICAgICBmb3IgKGF1dG8mIHNlbGVjdG9y
IDogbV9zZWxlY3RvcnMpIHsKICAgICAgICAgICAgIHNlbGVjdG9yLmNvbXBpbGVkU2VsZWN0b3Iu
d2FzVXNlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAppbmRleCA0ZDNl
NjE5NDdkM2JmOGE1YWFjNGJjZTY3N2ZjNzFhMzNiODVjNmI4Li5kMmQxM2NiMDkzNTBkMDdiYzYy
MDU3ZWM5M2NmMzQ4NWE0NjBkZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xv
dEFzc2lnbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5j
cHAKQEAgLTI2LDEwICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2xv
dEFzc2lnbm1lbnQuaCIKIAotCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSFRNTFNsb3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUg
IlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3IuaAppbmRleCA5ZjM1OTM1ZDk2Yzc5ZTc1YjY4ZDMwYzI4Y2JlM2M1YTA0M2YwMzMzLi5m
ZjYxZDhmOTQwYWE2YjE2OWRmY2ZkMTNmODc0MWNjZjA3MzEyNDgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjks
Mjk0ICsyOSwyODIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4gY2xhc3MgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
OwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3I7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRG91YmxlRWxlbWVudERlc2NlbmRhbnRSYW5n
ZTsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBFbGVtZW50RGVzY2VuZGFudFJhbmdlOwordGVt
cGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJvb2woY29uc3QgRWxlbWVudFR5cGUmKT4gY2xh
c3MgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlOwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1jbGFzcyBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgOiBwdWJs
aWMgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiB7Ci1wdWJsaWM6Ci0gICAgVHlwZWRFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpOwotICAgIFR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBF
bGVtZW50VHlwZSogY3VycmVudCk7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
JiBvcGVyYXRvcisrKCk7Ci19OworLy8gUmFuZ2UgZm9yIGl0ZXJhdGluZyB0aHJvdWdoIGRlc2Nl
bmRhbnQgZWxlbWVudHMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudERl
c2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFpbmVyTm9k
ZSYpOwordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50UmFu
Z2U8Y29uc3QgRWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5v
ZGUmKTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVudENvbnN0SXRlcmF0b3I8
RWxlbWVudFR5cGU+ICB7Ci1wdWJsaWM6Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0
SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgVHlwZWRFbGVtZW50RGVz
Y2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgY29uc3QgRWxl
bWVudFR5cGUqIGN1cnJlbnQpOwotICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yJiBvcGVyYXRvcisrKCk7Ci19OworLy8gUmFuZ2UgdGhhdCBza2lwcyBlbGVtZW50cyB3aGVy
ZSB0aGUgZmlsdGVyIHJldHVybnMgZmFsc2UuCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlw
ZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gRmlsdGVyZWRFbGVtZW50RGVzY2Vu
ZGFudFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlLCBmaWx0ZXI+IGRlc2NlbmRhbnRzT2ZUeXBlKGNv
bnN0IENvbnRhaW5lck5vZGUmKTsKKworLy8gUmFuZ2UgZm9yIHVzZSB3aGVuIGJvdGggc2V0cyBv
ZiBkZXNjZW5kYW50cyBhcmUga25vd24gdG8gYmUgdGhlIHNhbWUgbGVuZ3RoLgorLy8gSWYgdGhl
eSBhcmUgZGlmZmVyZW50IGxlbmd0aHMsIHRoaXMgd2lsbCBzdG9wIHdoZW4gdGhlIHNob3J0ZXIg
b25lIHJlYWNoZXMgdGhlIGVuZCwgYnV0IGFsc28gYW4gYXNzZXJ0aW9uIHdpbGwgZmFpbC4KK3Rl
bXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBEb3VibGVFbGVtZW50RGVzY2VuZGFudFJhbmdl
PEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWluZXJOb2RlJiBmaXJzdFJvb3Qs
IENvbnRhaW5lck5vZGUmIHNlY29uZFJvb3QpOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+Ci1jbGFzcyBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyIHsKK2Ns
YXNzIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVudEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPiB7CiBwdWJsaWM6Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
QWRhcHRlcihDb250YWluZXJOb2RlJiByb290KTsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCk7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKTsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoRWxlbWVudFR5cGUmKTsKLSAgICBUeXBlZEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IGZyb20oRWxlbWVudCYpOwotCi0g
ICAgRWxlbWVudFR5cGUqIGZpcnN0KCk7Ci0gICAgRWxlbWVudFR5cGUqIGxhc3QoKTsKLQotcHJp
dmF0ZToKLSAgICBDb250YWluZXJOb2RlJiBtX3Jvb3Q7CisgICAgRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290KTsKKyAgICBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50
KTsKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisgICAgRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwogfTsKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3JBZGFwdGVyIHsKK2NsYXNzIEVsZW1lbnREZXNjZW5kYW50UmFuZ2UgewogcHVibGljOgot
ICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcihjb25zdCBDb250
YWluZXJOb2RlJiByb290KTsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT4gYmVnaW4oKSBjb25zdDsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50
Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCkgY29uc3Q7Ci0gICAgVHlwZWRFbGVtZW50
RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoY29uc3QgRWxlbWVu
dFR5cGUmKSBjb25zdDsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxF
bGVtZW50VHlwZT4gZnJvbShjb25zdCBFbGVtZW50JikgY29uc3Q7CisgICAgRWxlbWVudERlc2Nl
bmRhbnRSYW5nZShjb25zdCBDb250YWluZXJOb2RlJiByb290KTsKKyAgICBFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpIGNvbnN0OworICAgIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpIGNvbnN0OworICAgIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoRWxlbWVudFR5cGUmKSBjb25zdDsK
KyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBmcm9tKEVsZW1lbnQm
KSBjb25zdDsKIAotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0OwotICAgIGNv
bnN0IEVsZW1lbnRUeXBlKiBsYXN0KCkgY29uc3Q7CisgICAgRWxlbWVudFR5cGUqIGZpcnN0KCkg
Y29uc3Q7CisgICAgRWxlbWVudFR5cGUqIGxhc3QoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBj
b25zdCBDb250YWluZXJOb2RlJiBtX3Jvb3Q7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4gY2xhc3MgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRl
ciB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gY2xhc3MgRG91YmxlRWxlbWVudERl
c2NlbmRhbnRSYW5nZSB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBUeXBlZEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBTaW5nbGVBZGFwdGVyOwotICAgIHR5cGVk
ZWYgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBJdGVy
YXRvcjsKKyAgICB0eXBlZGVmIEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+IFNp
bmdsZUFkYXB0ZXI7CisgICAgdHlwZWRlZiBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiBJdGVyYXRvcjsKIAotICAgIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvckFkYXB0ZXIoU2luZ2xlQWRhcHRlciYmLCBTaW5nbGVBZGFwdGVyJiYpOwotICAg
IEl0ZXJhdG9yIGJlZ2luKCk7Ci0gICAgSXRlcmF0b3IgZW5kKCk7CisgICAgRG91YmxlRWxlbWVu
dERlc2NlbmRhbnRSYW5nZShTaW5nbGVBZGFwdGVyJiYsIFNpbmdsZUFkYXB0ZXImJik7CisgICAg
SXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKKyAgICBJdGVyYXRvciBlbmQoKSBjb25zdDsKIAogcHJp
dmF0ZToKICAgICBzdGQ6OnBhaXI8U2luZ2xlQWRhcHRlciwgU2luZ2xlQWRhcHRlcj4gbV9wYWly
OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZVR5cGVk
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4gY2xhc3MgRG91YmxlRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciB7CiBwdWJsaWM6Ci0gICAg
dHlwZWRlZiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IFNpbmds
ZUl0ZXJhdG9yOworICAgIHR5cGVkZWYgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50
VHlwZT4gU2luZ2xlSXRlcmF0b3I7CiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8RWxlbWVudFR5cGUm
LCBFbGVtZW50VHlwZSY+IFJlZmVyZW5jZVByb3h5OwogCi0gICAgRG91YmxlVHlwZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yKFNpbmdsZUl0ZXJhdG9yJiYsIFNpbmdsZUl0ZXJhdG9yJiYpOwor
ICAgIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoU2luZ2xlSXRlcmF0b3ImJiwgU2lu
Z2xlSXRlcmF0b3ImJik7CiAgICAgUmVmZXJlbmNlUHJveHkgb3BlcmF0b3IqKCkgY29uc3Q7Ci0g
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvciYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBEb3VibGVUeXBlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3ImKSBjb25zdDsKLSAgICBEb3VibGVUeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RG91YmxlRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJikgY29uc3Q7CisgICAg
RG91YmxlRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwogCiBwcml2YXRl
OgogICAgIHN0ZDo6cGFpcjxTaW5nbGVJdGVyYXRvciwgU2luZ2xlSXRlcmF0b3I+IG1fcGFpcjsK
IH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFp
bmVyTm9kZSYpOwotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZU
eXBlKGNvbnN0IENvbnRhaW5lck5vZGUmKTsKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBl
LCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBjbGFzcyBGaWx0ZXJlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiB7
CitwdWJsaWM6CisgICAgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENv
bnRhaW5lck5vZGUmLCBFbGVtZW50VHlwZSogPSBudWxscHRyKTsKKyAgICBGaWx0ZXJlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKK307CiAKLS8vIFRoaXMgbXVzdCBv
bmx5IGJlIHVzZWQgd2hlbiBib3RoIHNldHMgb2YgZGVzY2VuZGFudHMgYXJlIGtub3duIHRvIGJl
IHRoZSBzYW1lIGxlbmd0aC4KLS8vIElmIHRoZXkgYXJlIGRpZmZlcmVudCBsZW5ndGhzLCB0aGlz
IHdpbGwgc3RvcCB3aGVuIHRoZSBzaG9ydGVyIG9uZSByZWFjaGVzIHRoZSBlbmQsIGJ1dCBhbHNv
IGFuIGFzc2VydGlvbiB3aWxsIGZhaWwuCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4g
RG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4g
ZGVzY2VuZGFudHNPZlR5cGUoQ29udGFpbmVyTm9kZSYgZmlyc3RSb290LCBDb250YWluZXJOb2Rl
JiBzZWNvbmRSb290KTsKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRl
cihjb25zdCBFbGVtZW50VHlwZSYpPiBjbGFzcyBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFu
Z2UgeworcHVibGljOgorICAgIHVzaW5nIEl0ZXJhdG9yID0gRmlsdGVyZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlLCBmaWx0ZXI+OwogCi0vLyBUeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IKKyAgICBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFuZ2UoY29uc3Qg
Q29udGFpbmVyTm9kZSYpOworICAgIEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CisgICAgSXRlcmF0
b3IgZW5kKCkgY29uc3Q7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGlu
ZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpUeXBlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKLSAgICA6IEVs
ZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnJvb3QpCi17Ci19CisgICAgRWxlbWVudFR5cGUq
IGZpcnN0KCkgY29uc3Q7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGlu
ZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpUeXBlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgRWxlbWVudFR5
cGUqIGN1cnJlbnQpCi0gICAgOiBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZyb290LCBj
dXJyZW50KQotewotfQorcHJpdmF0ZToKKyAgICBjb25zdCBDb250YWluZXJOb2RlJiBtX3Jvb3Q7
Cit9OworCisvLyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yCiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxl
bWVudFR5cGU+JiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojpv
cGVyYXRvcisrKCkKK2lubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBl
Pjo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290KQor
ICAgIDogRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPigmcm9vdCkKIHsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+
KEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dCgpKTsKIH0KIAotLy8g
VHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IKLQogdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPjo6VHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3Qg
Q29udGFpbmVyTm9kZSYgcm9vdCkKLSAgICA6IEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPigmcm9vdCkKLQoraW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+OjpFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3Qs
IEVsZW1lbnRUeXBlKiBjdXJyZW50KQorICAgIDogRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBl
Pigmcm9vdCwgY3VycmVudCkKIHsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBl
Pjo6VHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9k
ZSYgcm9vdCwgY29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpCi0gICAgOiBFbGVtZW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT4oJnJvb3QsIGN1cnJlbnQpCitpbmxpbmUgRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxl
bWVudFR5cGU+OjpvcGVyYXRvcisrKCkKIHsKKyAgICBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+Ojp0cmF2ZXJzZU5leHQoKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT4mIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCitpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+
OjpvcGVyYXRvci0tKCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZWRFbGVtZW50RGVz
Y2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxlbWVudENvbnN0SXRlcmF0b3I8
RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHQoKSk7CisgICAgRWxlbWVudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91cygpOworICAgIHJldHVybiAqdGhpczsKIH0KIAotLy8g
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcgorLy8gRWxlbWVudERlc2NlbmRh
bnRSYW5nZQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVyTm9kZSYgcm9vdCkKK2lubGluZSBF
bGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPjo6RWxlbWVudERlc2NlbmRhbnRSYW5n
ZShjb25zdCBDb250YWluZXJOb2RlJiByb290KQogICAgIDogbV9yb290KHJvb3QpCiB7CiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbigpCitpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZT46
OmJlZ2luKCkgY29uc3QKIHsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0
aGluKG1fcm9vdCkpOworICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPihtX3Jvb3QsIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0aGluKG1fcm9v
dCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkKK2lubGluZSBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1l
bnRUeXBlPjo6ZW5kKCkgY29uc3QKIHsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QpOworICAgIHJldHVybiBFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QpOwogfQogICAgIAogdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
cjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46OmJlZ2luQXQoRWxlbWVudFR5cGUmIGRlc2NlbmRhbnQpCitpbmxpbmUgRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxF
bGVtZW50VHlwZT46OmJlZ2luQXQoRWxlbWVudFR5cGUmIGRlc2NlbmRhbnQpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGRlc2NlbmRhbnQuaXNEZXNjZW5kYW50T2YobV9yb290KSk7Ci0gICAgcmV0dXJu
IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCAmZGVz
Y2VuZGFudCk7CisgICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+KG1fcm9vdCwgJmRlc2NlbmRhbnQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBl
PiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZnJv
bShFbGVtZW50JiBkZXNjZW5kYW50KQoraW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8
RWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+Ojpmcm9tKEVs
ZW1lbnQmIGRlc2NlbmRhbnQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRlc2NlbmRhbnQuaXNEZXNj
ZW5kYW50T2YobV9yb290KSk7CiAgICAgaWYgKGlzPEVsZW1lbnRUeXBlPihkZXNjZW5kYW50KSkK
LSAgICAgICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4obV9yb290LCBkb3duY2FzdDxFbGVtZW50VHlwZT4oJmRlc2NlbmRhbnQpKTsKKyAgICAgICAg
cmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgZG93
bmNhc3Q8RWxlbWVudFR5cGU+KCZkZXNjZW5kYW50KSk7CiAgICAgRWxlbWVudFR5cGUqIG5leHQg
PSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0KGRlc2NlbmRhbnQsICZtX3Jvb3QpOwotICAg
IHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9v
dCwgbmV4dCk7CisgICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+KG1fcm9vdCwgbmV4dCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWlubGluZSBFbGVtZW50VHlwZSogVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRl
cjxFbGVtZW50VHlwZT46OmZpcnN0KCkKK2lubGluZSBFbGVtZW50VHlwZSogRWxlbWVudERlc2Nl
bmRhbnRSYW5nZTxFbGVtZW50VHlwZT46OmZpcnN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gVHJh
dmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RXaXRoaW4obV9yb290KTsKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRUeXBlKiBUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6bGFzdCgpCitpbmxpbmUgRWxl
bWVudFR5cGUqIEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpsYXN0KCkgY29u
c3QKIHsKICAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bGFzdFdpdGhpbihtX3Jv
b3QpOwogfQogCi0vLyBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIK
Ky8vIERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRh
cHRlcjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRh
cHRlcihjb25zdCBDb250YWluZXJOb2RlJiByb290KQotICAgIDogbV9yb290KHJvb3QpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIERvdWJsZUVsZW1lbnREZXNjZW5kYW50
UmFuZ2U8RWxlbWVudFR5cGU+OjpEb3VibGVFbGVtZW50RGVzY2VuZGFudFJhbmdlKFNpbmdsZUFk
YXB0ZXImJiBmaXJzdCwgU2luZ2xlQWRhcHRlciYmIHNlY29uZCkKKyAgICA6IG1fcGFpcihXVEZN
b3ZlKGZpcnN0KSwgV1RGTW92ZShzZWNvbmQpKQogewogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8
RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxF
bGVtZW50VHlwZT46OmJlZ2luKCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PiBpbmxpbmUgYXV0byBEb3VibGVFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPjo6
YmVnaW4oKSBjb25zdCAtPiBJdGVyYXRvcgogewotICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNj
ZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBUcmF2ZXJzYWw8RWxlbWVu
dFR5cGU+OjpmaXJzdFdpdGhpbihtX3Jvb3QpKTsKKyAgICByZXR1cm4gSXRlcmF0b3IobV9wYWly
LmZpcnN0LmJlZ2luKCksIG1fcGFpci5zZWNvbmQuYmVnaW4oKSk7CiB9CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JB
ZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPiBpbmxpbmUgYXV0byBEb3VibGVFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRU
eXBlPjo6ZW5kKCkgY29uc3QgLT4gSXRlcmF0b3IKIHsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50
RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCk7CisgICAgcmV0dXJu
IEl0ZXJhdG9yKG1fcGFpci5maXJzdC5lbmQoKSwgbV9wYWlyLnNlY29uZC5lbmQoKSk7CiB9CiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNj
ZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW5BdChjb25zdCBFbGVtZW50VHlw
ZSYgZGVzY2VuZGFudCkgY29uc3QKLXsKLSAgICBBU1NFUlQoZGVzY2VuZGFudC5pc0Rlc2NlbmRh
bnRPZihtX3Jvb3QpKTsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgJmRlc2NlbmRhbnQpOwotfQorLy8gRG91YmxlRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcgogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+
IFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46
OmZyb20oY29uc3QgRWxlbWVudCYgZGVzY2VuZGFudCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPiBpbmxpbmUgRG91YmxlRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVt
ZW50VHlwZT46OkRvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoU2luZ2xlSXRlcmF0b3Im
JiBmaXJzdCwgU2luZ2xlSXRlcmF0b3ImJiBzZWNvbmQpCisgICAgOiBtX3BhaXIoV1RGTW92ZShm
aXJzdCksIFdURk1vdmUoc2Vjb25kKSkKIHsKLSAgICBBU1NFUlQoZGVzY2VuZGFudC5pc0Rlc2Nl
bmRhbnRPZihtX3Jvb3QpKTsKLSAgICBpZiAoaXM8RWxlbWVudFR5cGU+KGRlc2NlbmRhbnQpKQot
ICAgICAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+KG1fcm9vdCwgZG93bmNhc3Q8RWxlbWVudFR5cGU+KCZkZXNjZW5kYW50KSk7Ci0gICAg
Y29uc3QgRWxlbWVudFR5cGUqIG5leHQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0KGRl
c2NlbmRhbnQsICZtX3Jvb3QpOwotICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29u
c3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBuZXh0KTsKIH0KIAotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlKiBUeXBlZEVsZW1l
bnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpmaXJzdCgpIGNv
bnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGF1dG8gRG91YmxlRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKigpIGNvbnN0IC0+
IFJlZmVyZW5jZVByb3h5CiB7Ci0gICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZp
cnN0V2l0aGluKG1fcm9vdCk7CisgICAgcmV0dXJuIHsgKm1fcGFpci5maXJzdCwgKm1fcGFpci5z
ZWNvbmQgfTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGNv
bnN0IEVsZW1lbnRUeXBlKiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0
ZXI8RWxlbWVudFR5cGU+OjpsYXN0KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPiBpbmxpbmUgYm9vbCBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6b3BlcmF0b3I9PShjb25zdCBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBv
dGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bGFzdFdp
dGhpbihtX3Jvb3QpOworICAgIEFTU0VSVCgobV9wYWlyLmZpcnN0ID09IG90aGVyLm1fcGFpci5m
aXJzdCkgPT0gKG1fcGFpci5zZWNvbmQgPT0gb3RoZXIubV9wYWlyLnNlY29uZCkpOworICAgIHJl
dHVybiBtX3BhaXIuZmlyc3QgPT0gb3RoZXIubV9wYWlyLmZpcnN0IHx8IG1fcGFpci5zZWNvbmQg
PT0gb3RoZXIubV9wYWlyLnNlY29uZDsKIH0KIAotLy8gRG91YmxlVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yQWRhcHRlcgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5s
aW5lIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5
cGU+OjpEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKFNpbmdsZUFk
YXB0ZXImJiBmaXJzdCwgU2luZ2xlQWRhcHRlciYmIHNlY29uZCkKLSAgICA6IG1fcGFpcihXVEZN
b3ZlKGZpcnN0KSwgV1RGTW92ZShzZWNvbmQpKQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5
cGU+IGlubGluZSBib29sIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+OjpvcGVyYXRvciE9KGNvbnN0IERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG90
aGVyKSBjb25zdAogeworICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBhdXRvIERvdWJsZVR5cGVkRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbigpIC0+IEl0ZXJhdG9y
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIERvdWJsZUVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCiB7Ci0gICAgcmV0dXJuIEl0ZXJhdG9yKG1f
cGFpci5maXJzdC5iZWdpbigpLCBtX3BhaXIuc2Vjb25kLmJlZ2luKCkpOworICAgICsrbV9wYWly
LmZpcnN0OworICAgICsrbV9wYWlyLnNlY29uZDsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgYXV0byBEb3VibGVUeXBlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkgLT4gSXRlcmF0
b3IKKy8vIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcgorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBFbGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gRmlsdGVy
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlLCBmaWx0ZXI+OjpGaWx0ZXJl
ZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgRWxl
bWVudFR5cGUqIGVsZW1lbnQpCisgICAgOiBFbGVtZW50SXRlcmF0b3I8Y29uc3QgRWxlbWVudFR5
cGU+IHsgJnJvb3QsIGVsZW1lbnQgfQogewotICAgIHJldHVybiBJdGVyYXRvcihtX3BhaXIuZmly
c3QuZW5kKCksIG1fcGFpci5zZWNvbmQuZW5kKCkpOwogfQogCi0vLyBEb3VibGVUeXBlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3IKLQotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlu
bGluZSBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpE
b3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoU2luZ2xlSXRlcmF0b3ImJiBmaXJz
dCwgU2luZ2xlSXRlcmF0b3ImJiBzZWNvbmQpCi0gICAgOiBtX3BhaXIoV1RGTW92ZShmaXJzdCks
IFdURk1vdmUoc2Vjb25kKSkKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZp
bHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3I8RWxlbWVudFR5cGUsIGZpbHRlcj4mIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
cjxFbGVtZW50VHlwZSwgZmlsdGVyPjo6b3BlcmF0b3IrKygpCiB7CisgICAgZG8geworICAgICAg
ICBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHQoKTsKKyAgICB9IHdo
aWxlICghRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6YXRFbmQoKSAmJiAhZmlsdGVyKCoq
dGhpcykpOworICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+IGlubGluZSBhdXRvIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxF
bGVtZW50VHlwZT46Om9wZXJhdG9yKigpIGNvbnN0IC0+IFJlZmVyZW5jZVByb3h5CisvLyBGaWx0
ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFuZ2UKKwordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5
cGUsIGJvb2wgZmlsdGVyKGNvbnN0IEVsZW1lbnRUeXBlJik+IEZpbHRlcmVkRWxlbWVudERlc2Nl
bmRhbnRSYW5nZTxFbGVtZW50VHlwZSwgZmlsdGVyPjo6RmlsdGVyZWRFbGVtZW50RGVzY2VuZGFu
dFJhbmdlKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCisgICAgOiBtX3Jvb3QgeyByb290IH0K
IHsKLSAgICByZXR1cm4geyAqbV9wYWlyLmZpcnN0LCAqbV9wYWlyLnNlY29uZCB9OwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGJvb2wgRG91YmxlVHlwZWRFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3I9PShjb25zdCBEb3Vi
bGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAordGVtcGxhdGU8
dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmlsdGVyKGNvbnN0IEVsZW1lbnRUeXBlJik+IGF1
dG8gRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlLCBmaWx0ZXI+Ojpi
ZWdpbigpIGNvbnN0IC0+IEl0ZXJhdG9yCiB7Ci0gICAgQVNTRVJUKChtX3BhaXIuZmlyc3QgPT0g
b3RoZXIubV9wYWlyLmZpcnN0KSA9PSAobV9wYWlyLnNlY29uZCA9PSBvdGhlci5tX3BhaXIuc2Vj
b25kKSk7Ci0gICAgcmV0dXJuIG1fcGFpci5maXJzdCA9PSBvdGhlci5tX3BhaXIuZmlyc3QgfHwg
bV9wYWlyLnNlY29uZCA9PSBvdGhlci5tX3BhaXIuc2Vjb25kOworICAgIHJldHVybiB7IG1fcm9v
dCwgZmlyc3QoKSB9OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5l
IGJvb2wgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6
b3BlcmF0b3IhPShjb25zdCBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG90
aGVyKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmlsdGVyKGNv
bnN0IEVsZW1lbnRUeXBlJik+IGF1dG8gRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVs
ZW1lbnRUeXBlLCBmaWx0ZXI+OjplbmQoKSBjb25zdCAtPiBJdGVyYXRvcgogewotICAgIHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsKKyAgICByZXR1cm4geyBtX3Jvb3QgfTsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1l
bnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBFbGVtZW50VHlwZSogRmls
dGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlLCBmaWx0ZXI+OjpmaXJzdCgp
IGNvbnN0CiB7Ci0gICAgKyttX3BhaXIuZmlyc3Q7Ci0gICAgKyttX3BhaXIuc2Vjb25kOwotICAg
IHJldHVybiAqdGhpczsKKyAgICBmb3IgKGF1dG8qIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVu
dFR5cGU+OjpmaXJzdFdpdGhpbihtX3Jvb3QpOyBlbGVtZW50OyBlbGVtZW50ID0gVHJhdmVyc2Fs
PEVsZW1lbnRUeXBlPjo6bmV4dCgqZWxlbWVudCwgJm1fcm9vdCkpIHsKKyAgICAgICAgaWYgKGZp
bHRlcigqZWxlbWVudCkpCisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICB9CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIC8vIFN0YW5kYWxvbmUgZnVuY3Rpb25zCiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWluZXJOb2Rl
JiByb290KQoraW5saW5lIEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+IGRlc2Nl
bmRhbnRzT2ZUeXBlKENvbnRhaW5lck5vZGUmIHJvb3QpCiB7Ci0gICAgcmV0dXJuIFR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KHJvb3QpOworICAgIHJl
dHVybiBFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPihyb290KTsKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRh
bnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoY29u
c3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKK2lubGluZSBFbGVtZW50RGVzY2VuZGFudFJhbmdlPGNv
bnN0IEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShjb25zdCBDb250YWluZXJOb2RlJiBy
b290KQogewotICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFk
YXB0ZXI8RWxlbWVudFR5cGU+KHJvb3QpOworICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudFJh
bmdlPGNvbnN0IEVsZW1lbnRUeXBlPihyb290KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxl
bWVudFR5cGU+IGlubGluZSBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFw
dGVyPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWluZXJOb2RlJiBmaXJzdFJv
b3QsIENvbnRhaW5lck5vZGUmIHNlY29uZFJvb3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50
VHlwZT4gaW5saW5lIERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+IGRl
c2NlbmRhbnRzT2ZUeXBlKENvbnRhaW5lck5vZGUmIGZpcnN0Um9vdCwgQ29udGFpbmVyTm9kZSYg
c2Vjb25kUm9vdCkKIHsKICAgICByZXR1cm4geyBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50VHlw
ZT4oZmlyc3RSb290KSwgZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudFR5cGU+KHNlY29uZFJvb3Qp
IH07CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25z
dCBFbGVtZW50VHlwZSYpPiBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8Y29uc3QgRWxl
bWVudFR5cGUsIGZpbHRlcj4gZGVzY2VuZGFudHNPZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYg
cm9vdCkKK3sKKyAgICByZXR1cm4geyByb290IH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAyOTFiYTZjMGMwNGM0YjY2OTg0NjZl
MTA3NTM0ODU4ZTg1OWRhYTAxLi5kYjIwYjMwMTMyMDk2NDE2YzNlMTA5NDZlZDIwMTBlNTRmYzlm
OTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5j
bHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRWRpdGluZy5oIgog
I2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNs
dWRlICJGaWxlLmgiCkBAIC02MSw3ICs2Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJS
RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTEJv
ZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQu
aCIKQEAgLTM0MjYsMjMgKzM0MjcsMTggQEAgdm9pZCBFZGl0b3I6OnRleHREaWRDaGFuZ2VJblRl
eHRBcmVhKEVsZW1lbnQqIGUpCiAKIHZvaWQgRWRpdG9yOjphcHBseUVkaXRpbmdTdHlsZVRvQm9k
eUVsZW1lbnQoKSBjb25zdAogewotICAgIGF1dG8gY29sbGVjdGlvbiA9IGRvY3VtZW50KCkuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoSFRNTE5hbWVzOjpib2R5VGFnLT5sb2NhbE5hbWUoKSk7Ci0gICAg
dW5zaWduZWQgbGVuZ3RoID0gY29sbGVjdGlvbi0+bGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICBhcHBseUVkaXRpbmdTdHlsZVRvRWxl
bWVudChjb2xsZWN0aW9uLT5pdGVtKGkpKTsKLX0KLQotdm9pZCBFZGl0b3I6OmFwcGx5RWRpdGlu
Z1N0eWxlVG9FbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFl
bGVtZW50IHx8IGlzPFN0eWxlZEVsZW1lbnQ+KCplbGVtZW50KSk7Ci0gICAgaWYgKCFpczxTdHls
ZWRFbGVtZW50PihlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gTXV0YXRlIHVz
aW5nIHRoZSBDU1NPTSB3cmFwcGVyIHNvIHdlIGdldCB0aGUgc2FtZSBldmVudCBiZWhhdmlvciBh
cyBhIHNjcmlwdC4KLSAgICBhdXRvJiBzdHlsZSA9IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KCpl
bGVtZW50KS5jc3NvbVN0eWxlKCk7Ci0gICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQ
cm9wZXJ0eVdvcmRXcmFwLCAiYnJlYWstd29yZCIsIGZhbHNlKTsKLSAgICBzdHlsZS5zZXRQcm9w
ZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsICJzcGFjZSIsIGZhbHNlKTsK
LSAgICBzdHlsZS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5TGluZUJyZWFrLCAiYWZ0
ZXItd2hpdGUtc3BhY2UiLCBmYWxzZSk7CisgICAgLy8gRklYTUU6IE5vdCBjbGVhciBpdCdzIHZh
bHVhYmxlIHRvIGRvIHRoaXMgdG8gYWxsIGJvZHkgZWxlbWVudHMgcmF0aGVyIHRoYW4ganVzdCBk
b2luZyBpdCBvbiB0aGUgc2luZ2xlIG9uZSByZXR1cm5lZCBieSBEb2N1bWVudDo6Ym9keS4KKyAg
ICBWZWN0b3I8UmVmPEhUTUxCb2R5RWxlbWVudD4+IGJvZGllczsKKyAgICBmb3IgKGF1dG8mIGJv
ZHkgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MQm9keUVsZW1lbnQ+KGRvY3VtZW50KCkpKQorICAg
ICAgICBib2RpZXMuYXBwZW5kKGJvZHkpOworCisgICAgZm9yIChhdXRvJiBib2R5IDogYm9kaWVz
KSB7CisgICAgICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00gd3JhcHBlciBzbyB3ZSBnZXQg
dGhlIHNhbWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCisgICAgICAgIGF1dG8mIHN0eWxl
ID0gYm9keS0+Y3Nzb21TdHlsZSgpOworICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eUludGVybmFs
KENTU1Byb3BlcnR5V29yZFdyYXAsICJicmVhay13b3JkIiwgZmFsc2UpOworICAgICAgICBzdHls
ZS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsICJzcGFjZSIs
IGZhbHNlKTsKKyAgICAgICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUxp
bmVCcmVhaywgImFmdGVyLXdoaXRlLXNwYWNlIiwgZmFsc2UpOworICAgIH0KIH0KIAogYm9vbCBF
ZGl0b3I6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlv
bnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA2ZWE4OTIyZmIwNzYyZGZlMDMyZjEwZjZk
YTFhZmJkNmUzMTRlZjhjLi43MDk4MWQ3NDdhMTg3ZThlNzU4MTE1YjY2NmQ3OGNhMjNkMGRhNWUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTQzMSw3ICs0MzEsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUoRWRpdGluZ1N0eWxlJiAsIEVkaXRBY3Rp
b24gPSBFZGl0QWN0aW9uOjpVbnNwZWNpZmllZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
b21wdXRlQW5kU2V0VHlwaW5nU3R5bGUoU3R5bGVQcm9wZXJ0aWVzJiAsIEVkaXRBY3Rpb24gPSBF
ZGl0QWN0aW9uOjpVbnNwZWNpZmllZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBseUVk
aXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKSBjb25zdDsKLSAgICB2b2lkIGFwcGx5RWRpdGluZ1N0
eWxlVG9FbGVtZW50KEVsZW1lbnQqKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEludFJl
Y3QgZmlyc3RSZWN0Rm9yUmFuZ2UoUmFuZ2UqKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBjZGU5
YTc4YzhmZTdkYTEzMWUxMWY0NGY0YmIwOTFjNWZlNmYwMmYzLi4xZTc2MGRlNzIzMTYwOWQwNTky
OTgyOGY3ZTEzZjNkMjJiYTI1MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcApAQCAtNzEsNyArNzEsNyBAQCBwdWJs
aWM6CiAKICAgICAgICAgVHlwZSB0eXBlID0gVHlwZTo6SW5jbHVkZTsKICAgICAgICAgUmVmUHRy
PEVsZW1lbnQ+IG1hdGNoaW5nRWxlbWVudDsKLSAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDog
ZWxlbWVudExpbmVhZ2Uoc3RhcnRpbmdFbGVtZW50LmdldCgpKSkgeworICAgICAgICBmb3IgKGF1
dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEVsZW1lbnQ+KCpzdGFydGluZ0VsZW1lbnQpKSB7
CiAgICAgICAgICAgICBpZiAoYXV0byB0eXBlT3JOdWxsb3B0ID0gdHlwZUZvckVsZW1lbnQoZWxl
bWVudCkpIHsKICAgICAgICAgICAgICAgICB0eXBlID0gKnR5cGVPck51bGxvcHQ7CiAgICAgICAg
ICAgICAgICAgbWF0Y2hpbmdFbGVtZW50ID0gJmVsZW1lbnQ7CkBAIC03OSw3ICs3OSw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGZvciAoYXV0byYgZWxl
bWVudCA6IGVsZW1lbnRMaW5lYWdlKHN0YXJ0aW5nRWxlbWVudC5nZXQoKSkpIHsKKyAgICAgICAg
Zm9yIChhdXRvJiBlbGVtZW50IDogbGluZWFnZU9mVHlwZTxFbGVtZW50Pigqc3RhcnRpbmdFbGVt
ZW50KSkgewogICAgICAgICAgICAgbV9jYWNoZS5zZXQoZWxlbWVudCwgdHlwZSk7CiAgICAgICAg
ICAgICBpZiAoJmVsZW1lbnQgPT0gbWF0Y2hpbmdFbGVtZW50KQogICAgICAgICAgICAgICAgIGJy
ZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRS
ZWFkZXJDb2NvYS5tbQppbmRleCAzOTQ5NmI2OTg4NjZjNGFlYzNmNzdkNGU2NjBiZTZkNTA3OTlk
OWRlLi5mN2RhMGJkYjU4YThkZTBiZjM2NGViZjM0OTQ0M2IyZGVjODI0OGI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5t
bQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbXBvcnQg
IkVkaXRvci5oIgogI2ltcG9ydCAiRWRpdG9yQ2xpZW50LmgiCisjaW1wb3J0ICJFbGVtZW50SXRl
cmF0b3IuaCIKICNpbXBvcnQgIkZpbGUuaCIKICNpbXBvcnQgIkZyYW1lLmgiCiAjaW1wb3J0ICJG
cmFtZUxvYWRlci5oIgpAQCAtNTgsNyArNTksNiBAQAogI2ltcG9ydCAiU2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhLmgiCiAjaW1wb3J0ICJTZXR0aW5ncy5oIgogI2ltcG9ydCAiU29ja2V0UHJvdmlk
ZXIuaCIKLSNpbXBvcnQgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgogI2ltcG9y
dCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRy
aWJ1dGVkU3RyaW5nLmgiCiAjaW1wb3J0ICJXZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhh
bmRsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAxNTk1MDM1MWQ5MDQ3NGM3
Yzc4OGMzM2U2N2U3ZGE4NTg4N2Y2ZDRjLi43ZTIyYzUyMmFkYzhlMjI3YjYzOWJjZWU2ZGI0NmQw
YTM5MjkzZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC03NSw3ICs3NSw2IEBA
CiAjaW5jbHVkZSAiU29ja2V0UHJvdmlkZXIuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMu
aCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oCmluZGV4IDc5ZjQ3N2Q3NGYyMjRl
NzFiNDZhYmE0NzdmNmNkYjBkYTg5ZGY0ODUuLmM4OTFiZTNkN2VmOTc5YmQxNTg3ODhlNDJjOGM0
MDhhYjViYmFkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENv
bGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9u
LmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDb2xsZWN0
aW9uVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJI
VE1MRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Db2xsZWN0aW9uVHJhdmVyc2FsLmgKaW5kZXggNjY4MjkzMzhkMGIxZDFiMGNhYjUxMTc3
ZjAzODcyMGMxOTJmNzE5Ni4uZjExZTg4MWNjMzlkNzE0YjBjZDM0NTYzZjhjODY4YTNmZTYyNjE0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHJhdmVyc2FsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHJhdmVyc2FsLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOCArMjYs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2xsZWN0aW9uVHlwZS5oIgotI2luY2x1
ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvci5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTM2LDI3ICszNSwyNyBAQCBzdHJ1Y3QgQ29sbGVjdGlvblRyYXZlcnNhbCB7
IH07CiAKIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9u
VHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+IHsKLSAgICB1c2luZyBJdGVyYXRvciA9IEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3I7CisgICAgdXNpbmcgSXRlcmF0b3IgPSBFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yPEVsZW1lbnQ+OwogCi0gICAgc3RhdGljIEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3IgZW5kKENvbnRhaW5lck5vZGUmKSB7IHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yKCk7IH0KKyAgICBzdGF0aWMgSXRlcmF0b3IgZW5kKENvbnRhaW5lck5vZGUmIHJvb3ROb2Rl
KSB7IHJldHVybiB7IHJvb3ROb2RlIH07IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xs
ZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgYmVnaW4o
Y29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOworICAgIHN0
YXRpYyBJdGVyYXRvciBiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2Rl
JiByb290Tm9kZSk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgot
ICAgIHN0YXRpYyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGxhc3QoY29uc3QgQ29sbGVjdGlv
bkNsYXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOworICAgIHN0YXRpYyBJdGVyYXRvciBs
YXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKIAog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIHZvaWQg
dHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291
bnQpOworICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xh
c3MmLCBJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJz
ZWRDb3VudCk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotICAg
IHN0YXRpYyB2b2lkIHRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpOworICAgIHN0
YXRpYyB2b2lkIHRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgSXRlcmF0
b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KTsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBD
b2xsZWN0aW9uQ2xhc3M+Ci1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDb2xsZWN0
aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OmJlZ2lu
KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdE5v
ZGUpCitpbmxpbmUgYXV0byBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxU
eXBlOjpEZXNjZW5kYW50cz46OmJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlv
biwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpIC0+IEl0ZXJhdG9yCiB7Ci0gICAgYXV0byBkZXNj
ZW5kYW50cyA9IGVsZW1lbnREZXNjZW5kYW50cyhyb290Tm9kZSk7CisgICAgYXV0byBkZXNjZW5k
YW50cyA9IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KHJvb3ROb2RlKTsKICAgICBhdXRvIGVu
ZCA9IGRlc2NlbmRhbnRzLmVuZCgpOwogICAgIGZvciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBpZiAoY29sbGVjdGlvbi5lbGVtZW50
TWF0Y2hlcygqaXQpKSB7CkBAIC02OSwxMSArNjgsMTAgQEAgaW5saW5lIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6
RGUKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZl
cnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6bGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxl
Y3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKQoraW5saW5lIGF1dG8gQ29sbGVjdGlvblRy
YXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+OjpsYXN0KGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpIC0+
IEl0ZXJhdG9yCiB7Ci0gICAgYXV0byBkZXNjZW5kYW50cyA9IGVsZW1lbnREZXNjZW5kYW50cyhy
b290Tm9kZSk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBpbnZhbGlkOwotICAgIGZv
ciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmxhc3QoKTsgaXQgIT0gaW52YWxpZDsgLS1pdCkgewor
ICAgIEl0ZXJhdG9yIGludmFsaWQgeyByb290Tm9kZSB9OworICAgIGZvciAoSXRlcmF0b3IgaXQg
eyByb290Tm9kZSwgRWxlbWVudFRyYXZlcnNhbDo6bGFzdFdpdGhpbihyb290Tm9kZSkgfTsgaXQg
IT0gaW52YWxpZDsgLS1pdCkgewogICAgICAgICBpZiAoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hl
cygqaXQpKSB7CiAgICAgICAgICAgICAvLyBEcm9wIGl0ZXJhdG9yIGFzc2VydGlvbnMgYmVjYXVz
ZSBIVE1MQ29sbGVjdGlvbnMgLyBOb2RlTGlzdCB1c2UgYSBmaW5lLWdyYWluZWQgaW52YWxpZGF0
aW9uIHNjaGVtZS4KICAgICAgICAgICAgIGl0LmRyb3BBc3NlcnRpb25zKCk7CkBAIC04NCwxMCAr
ODIsMTAgQEAgaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgQ29sbGVjdGlvblRyYXZl
cnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGUKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVj
dGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0IENv
bGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3Vy
cmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkKK2lubGluZSB2
b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRh
bnRzPjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwg
SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291
bnQpCiB7CiAgICAgQVNTRVJUKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsK
LSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGludmFsaWQ7CisgICAgSXRlcmF0b3IgaW52
YWxpZCB7IGNvbGxlY3Rpb24ucm9vdE5vZGUoKSB9OwogICAgIGZvciAodHJhdmVyc2VkQ291bnQg
PSAwOyB0cmF2ZXJzZWRDb3VudCA8IGNvdW50OyArK3RyYXZlcnNlZENvdW50KSB7CiAgICAgICAg
IGRvIHsKICAgICAgICAgICAgICsrY3VycmVudDsKQEAgLTk4LDEwICs5NiwxMCBAQCBpbmxpbmUg
dm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5k
YW50cz46OnRyYXZlcnNlRgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgotaW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYg
Y29sbGVjdGlvbiwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQg
Y291bnQpCitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJz
YWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiBjb2xsZWN0aW9uLCBJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpCiB7CiAg
ICAgQVNTRVJUKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAgICBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yIGludmFsaWQ7CisgICAgSXRlcmF0b3IgaW52YWxpZCB7IGNv
bGxlY3Rpb24ucm9vdE5vZGUoKSB9OwogICAgIGZvciAoOyBjb3VudDsgLS1jb3VudCkgewogICAg
ICAgICBkbyB7CiAgICAgICAgICAgICAtLWN1cnJlbnQ7CkBAIC0xMTUsMjMgKzExMywyMyBAQCB0
ZW1wbGF0ZSA8Pgogc3RydWN0IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNh
bFR5cGU6OkNoaWxkcmVuT25seT4gewogICAgIHVzaW5nIEl0ZXJhdG9yID0gRWxlbWVudENoaWxk
SXRlcmF0b3I8RWxlbWVudD47CiAKLSAgICBzdGF0aWMgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxl
bWVudD4gZW5kKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSB7IHJldHVybiBFbGVtZW50Q2hpbGRJ
dGVyYXRvcjxFbGVtZW50Pihyb290Tm9kZSk7IH0KKyAgICBzdGF0aWMgSXRlcmF0b3IgZW5kKENv
bnRhaW5lck5vZGUmIHJvb3ROb2RlKSB7IHJldHVybiBJdGVyYXRvcihyb290Tm9kZSk7IH0KIAog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENv
bnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKKyAgICBzdGF0aWMgSXRlcmF0b3IgYmVnaW4oY29uc3Qg
Q29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOwogCiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgRWxlbWVudENoaWxkSXRl
cmF0b3I8RWxlbWVudD4gbGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2Rl
JiByb290Tm9kZSk7CisgICAgc3RhdGljIEl0ZXJhdG9yIGxhc3QoY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENvbGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29uc3Qg
Q29sbGVjdGlvbkNsYXNzJiwgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQs
IHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpOworICAgIHN0YXRpYyB2
b2lkIHRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBJdGVyYXRvciYgY3Vy
cmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCk7CiAKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotICAgIHN0YXRpYyB2b2lkIHRyYXZl
cnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgRWxlbWVudENoaWxkSXRlcmF0b3I8
RWxlbWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2
ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEl0ZXJhdG9yJiBjdXJyZW50LCB1
bnNpZ25lZCBjb3VudCk7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IENvbGxlY3Rpb25UcmF2ZXJz
YWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46OmJlZ2luKGNvbnN0IENv
bGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpCitpbmxp
bmUgYXV0byBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGls
ZHJlbk9ubHk+OjpiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRh
aW5lck5vZGUmIHJvb3ROb2RlKSAtPiBJdGVyYXRvcgogewogICAgIGF1dG8gY2hpbGRyZW4gPSBj
aGlsZHJlbk9mVHlwZTxFbGVtZW50Pihyb290Tm9kZSk7CiAgICAgYXV0byBlbmQgPSBjaGlsZHJl
bi5lbmQoKTsKQEAgLTE0NiwxMSArMTQ0LDExIEBAIGlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRv
cjxFbGVtZW50PiBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlCiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci1pbmxpbmUgRWxlbWVudENo
aWxkSXRlcmF0b3I8RWxlbWVudD4gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVy
c2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6bGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxl
Y3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKQoraW5saW5lIGF1dG8gQ29sbGVjdGlvblRy
YXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6bGFzdChjb25z
dCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSAt
PiBJdGVyYXRvcgogewogICAgIGF1dG8gY2hpbGRyZW4gPSBjaGlsZHJlbk9mVHlwZTxFbGVtZW50
Pihyb290Tm9kZSk7Ci0gICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gaW52YWxpZChj
b2xsZWN0aW9uLnJvb3ROb2RlKCkpOwotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+
IGxhc3Qocm9vdE5vZGUsIGNoaWxkcmVuLmxhc3QoKSk7CisgICAgSXRlcmF0b3IgaW52YWxpZChj
b2xsZWN0aW9uLnJvb3ROb2RlKCkpOworICAgIEl0ZXJhdG9yIGxhc3Qocm9vdE5vZGUsIGNoaWxk
cmVuLmxhc3QoKSk7CiAgICAgZm9yIChhdXRvIGl0ID0gbGFzdDsgaXQgIT0gaW52YWxpZDsgLS1p
dCkgewogICAgICAgICBpZiAoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqaXQpKSB7CiAgICAg
ICAgICAgICAvLyBEcm9wIGl0ZXJhdG9yIGFzc2VydGlvbnMgYmVjYXVzZSBIVE1MQ29sbGVjdGlv
bnMgLyBOb2RlTGlzdCB1c2UgYSBmaW5lLWdyYWluZWQgaW52YWxpZGF0aW9uIHNjaGVtZS4KQEAg
LTE2MiwxMCArMTYwLDEwIEBAIGlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBD
b2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlCiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci1pbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVy
c2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2ZXJzZUZvcndh
cmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBFbGVtZW50Q2hpbGRJdGVyYXRv
cjxFbGVtZW50PiYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRD
b3VudCkKK2lubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNh
bFR5cGU6OkNoaWxkcmVuT25seT46OnRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xh
c3MmIGNvbGxlY3Rpb24sIEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWdu
ZWQmIHRyYXZlcnNlZENvdW50KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRj
aGVzKCpjdXJyZW50KSk7Ci0gICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gaW52YWxp
ZChjb2xsZWN0aW9uLnJvb3ROb2RlKCkpOworICAgIEl0ZXJhdG9yIGludmFsaWQoY29sbGVjdGlv
bi5yb290Tm9kZSgpKTsKICAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291
bnQgPCBjb3VudDsgKyt0cmF2ZXJzZWRDb3VudCkgewogICAgICAgICBkbyB7CiAgICAgICAgICAg
ICArK2N1cnJlbnQ7CkBAIC0xNzYsMTAgKzE3NCwxMCBAQCBpbmxpbmUgdm9pZCBDb2xsZWN0aW9u
VHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2ZXJz
ZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5lIHZvaWQg
Q29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5
Pjo6dHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVs
ZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkKK2lu
bGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNo
aWxkcmVuT25seT46OnRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xs
ZWN0aW9uLCBJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpCiB7CiAgICAgQVNTRVJU
KGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAgICBFbGVtZW50Q2hpbGRJ
dGVyYXRvcjxFbGVtZW50PiBpbnZhbGlkKGNvbGxlY3Rpb24ucm9vdE5vZGUoKSk7CisgICAgSXRl
cmF0b3IgaW52YWxpZChjb2xsZWN0aW9uLnJvb3ROb2RlKCkpOwogICAgIGZvciAoOyBjb3VudDsg
LS1jb3VudCkgewogICAgICAgICBkbyB7CiAgICAgICAgICAgICAtLWN1cnJlbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCmluZGV4IGI5NDlhNjkxZjYwZmRjOTljMmQ3ZjY3
ZmRmOGI3NzUzODU4ZTM5MjguLjdmZjMyZTU5OTdlNzA2ZDU3OWI5OWIwYzNmMjdmZDVlZmJiZDIy
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzgsNyAr
MzgsNiBAQAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDaHJvbWUu
aCIKICNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJIVE1MRGF0YUxpc3RFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKQEAgLTI4NywxMyArMjg2LDkgQEAgVmVjdG9yPENv
bG9yPiBDb2xvcklucHV0VHlwZTo6c3VnZ2VzdGVkQ29sb3JzKCkgY29uc3QKICNpZiBFTkFCTEUo
REFUQUxJU1RfRUxFTUVOVCkKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKICAgICBpZiAoYXV0byBk
YXRhTGlzdCA9IGVsZW1lbnQoKS0+ZGF0YUxpc3QoKSkgewotICAgICAgICBSZWY8SFRNTENvbGxl
Y3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9ucygpOwotICAgICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBvcHRpb25zLT5sZW5ndGgoKTsKLSAgICAgICAgc3VnZ2VzdGlvbnMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9
IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gZG93bmNhc3Q8SFRNTE9w
dGlvbkVsZW1lbnQ+KCpvcHRpb25zLT5pdGVtKGkpKS52YWx1ZSgpOwotICAgICAgICAgICAgaWYg
KGlzVmFsaWRTaW1wbGVDb2xvcih2YWx1ZSkpCi0gICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMu
dW5jaGVja2VkQXBwZW5kKENvbG9yKHZhbHVlKSk7CisgICAgICAgIGZvciAoYXV0byYgb3B0aW9u
IDogZGF0YUxpc3QtPnN1Z2dlc3Rpb25zKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGNvbG9y
ID0gcGFyc2VTaW1wbGVDb2xvclZhbHVlKG9wdGlvbi52YWx1ZSgpKSkKKyAgICAgICAgICAgICAg
ICBzdWdnZXN0aW9ucy51bmNoZWNrZWRBcHBlbmQoKmNvbG9yKTsKICAgICAgICAgfQogICAgIH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENv
bGxlY3Rpb24uY3BwCmluZGV4IDM4MzhmMWJkN2U0ZTY3ZjU1NzA1ZTEwMGIzZDY5NzNkMDM4OTNl
NTAuLjljYjNhNjcwMjM3MmNkNGJkMmJmZDllZTNiYTg5ZmJjYTdjOGZmYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogCiAj
aW5jbHVkZSAiSFRNTEFwcGxldEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MRGF0YUxpc3RFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCkBAIC02NCwxMiArNjUsNyBA
QCBib29sIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjx0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVu
dE1hdGNoZXMoRWxlbWVudCYgZWxlbWVudAogICAgIGNhc2UgU2VsZWN0ZWRPcHRpb25zOgogICAg
ICAgICByZXR1cm4gaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhU
TUxPcHRpb25FbGVtZW50PihlbGVtZW50KS5zZWxlY3RlZCgpOwogICAgIGNhc2UgRGF0YUxpc3RP
cHRpb25zOgotICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKSB7Ci0g
ICAgICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlv
bkVsZW1lbnQ+KGVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKCFvcHRpb24uaXNEaXNhYmxlZEZv
cm1Db250cm9sKCkgJiYgIW9wdGlvbi52YWx1ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiBpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCk7CiAgICAgY2FzZSBNYXBBcmVh
czoKICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShhcmVhVGFnKTsKICAgICBjYXNl
IERvY0FwcGxldHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xs
ZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaWRsCmlu
ZGV4IDhmY2I2OGM2ODAwMDgzNzIzYTU4NThmMGNlNmRiYWFiNDc1MzljM2MuLmU1YjExOTJlNDky
ODg3MTNmMzMyMWJjYTBhN2MyOGE2NzgxYWFhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFsbENvbGxlY3Rpb24uaWRsCkBAIC0zMSw2ICszMSw2IEBACiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogCiAgICAgZ2V0dGVyIEVsZW1lbnQ/ICh1bnNpZ25l
ZCBsb25nIGluZGV4KTsKLSAgICBbSW1wbGVtZW50ZWRBcz1uYW1lZEl0ZW1Pckl0ZW1zXSBnZXR0
ZXIgKEhUTUxDb2xsZWN0aW9uIG9yIEVsZW1lbnQpPyBuYW1lZEl0ZW0oRE9NU3RyaW5nIG5hbWUp
OwotICAgIFtJbXBsZW1lbnRlZEFzPW5hbWVkT3JJbmRleGVkSXRlbU9ySXRlbXNdIGxlZ2FjeWNh
bGxlciAoSFRNTENvbGxlY3Rpb24gb3IgRWxlbWVudCk/IGl0ZW0ob3B0aW9uYWwgRE9NU3RyaW5n
IG5hbWVPckluZGV4KTsKKyAgICBbSW1wbGVtZW50ZWRBcz1uYW1lZEl0ZW1Pckl0ZW1zXSBnZXR0
ZXIgKEhUTUxDb2xsZWN0aW9uIG9yIEVsZW1lbnQpPyBuYW1lZEl0ZW0oW1JlcXVpcmVzRXhpc3Rp
bmdBdG9tU3RyaW5nXSBET01TdHJpbmcgbmFtZSk7CisgICAgW0ltcGxlbWVudGVkQXM9bmFtZWRP
ckluZGV4ZWRJdGVtT3JJdGVtc10gbGVnYWN5Y2FsbGVyIChIVE1MQ29sbGVjdGlvbiBvciBFbGVt
ZW50KT8gaXRlbShvcHRpb25hbCBbQXRvbVN0cmluZ10gRE9NU3RyaW5nIG5hbWVPckluZGV4KTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaWRsCmluZGV4IDZkZmFlOGJkODk0
YWNkYzJkMjYwNTU2NjI2YjRjNzNiZGIxYzlhNWIuLmM0NTJkODllYzliYjBlMDdlYjNlNDIzMTIz
YmYzMjE3MjA5NTY0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxl
Y3Rpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaWRsCkBA
IC0yNyw1ICsyNyw1IEBACiBdIGludGVyZmFjZSBIVE1MQ29sbGVjdGlvbiB7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIGdldHRlciBFbGVtZW50PyBp
dGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIGdldHRlciBFbGVtZW50PyBuYW1lZEl0ZW0o
RE9NU3RyaW5nIG5hbWUpOworICAgIGdldHRlciBFbGVtZW50PyBuYW1lZEl0ZW0oW1JlcXVpcmVz
RXhpc3RpbmdBdG9tU3RyaW5nXSBET01TdHJpbmcgbmFtZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAKaW5kZXggYmVjODdiMzZkMzgxNDBlMmMyY2Vj
MTJkNGEwYmRiZjM4NTQ4OGExOS4uODI2YzJjNTQ5MzUyZTU1N2E1YmI4OTU0Zjc2YTYxZjA1MmY5
NzUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAg
LTM3LDYgKzM3LDcgQEAKIAogI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTm9kZVJh
cmVEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTY1LDYgKzY2
LDExIEBAIHZvaWQgSFRNTERhdGFMaXN0RWxlbWVudDo6b3B0aW9uRWxlbWVudENoaWxkcmVuQ2hh
bmdlZCgpCiAgICAgdHJlZVNjb3BlKCkuaWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KCkubm90aWZ5
T2JzZXJ2ZXJzKGdldElkQXR0cmlidXRlKCkpOwogfQogCitib29sIEhUTUxEYXRhTGlzdEVsZW1l
bnQ6OmlzU3VnZ2VzdGlvbihjb25zdCBIVE1MT3B0aW9uRWxlbWVudCYgZGVzY2VuZGFudCkKK3sK
KyAgICByZXR1cm4gIWRlc2NlbmRhbnQuaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgIWRlc2Nl
bmRhbnQudmFsdWUoKS5pc0VtcHR5KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEYXRhTGlzdEVsZW1lbnQuaAppbmRleCA4ZjcxZmE1YzkxMWM5YjUwYjJiODEwZDg1N2Y3YWMz
Y2YyY2NlYzAxLi43Y2Y1NzFlMjlhNjcwY2RmMGNkNmRlNTUzNzUzYjdlYTk1MmQ4NjQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuaApAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzMsMTEgKzMzLDEz
IEBACiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKIAotI2luY2x1ZGUgIkhUTUxDb2xs
ZWN0aW9uLmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBIVE1MQ29sbGVjdGlvbjsK
KwogY2xhc3MgSFRNTERhdGFMaXN0RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7
CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChIVE1MRGF0YUxpc3RFbGVtZW50KTsKIHB1Ymxp
YzoKQEAgLTQ3LDYgKzQ5LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBvcHRpb25FbGVtZW50Q2hp
bGRyZW5DaGFuZ2VkKCk7CiAKKyAgICBzdGF0aWMgYm9vbCBpc1N1Z2dlc3Rpb24oY29uc3QgSFRN
TE9wdGlvbkVsZW1lbnQmIGRlc2NlbmRhbnQpOworICAgIGF1dG8gc3VnZ2VzdGlvbnMoKSBjb25z
dCB7IHJldHVybiBkZXNjZW5kYW50c09mVHlwZTxIVE1MT3B0aW9uRWxlbWVudCwgaXNTdWdnZXN0
aW9uPigqdGhpcyk7IH0KKwogcHJpdmF0ZToKICAgICBIVE1MRGF0YUxpc3RFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5jcHAKaW5kZXggNjhjZjU1M2FiNDkwYWU0ZGYwN2M3ZGZiNjJiN2RkZDA2NjkwNjBlYS4uMzJl
ZDRhZDMxYmQzMGVjZjRjY2M0OGZiMTQyNDRhMzIzMjRlMDRiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkg
S29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
VG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2ht
b2JpbGUuY29tLykKICAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eS4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiSFRNTEJE
SUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQlJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJ1
dHRvbkVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhU
TUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50RmFjdG9yeS5oIgogI2luY2x1ZGUg
IkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKQEAgLTYwLDYgKzU5LDcgQEAKICNpbmNsdWRlICJOb2Rl
VHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNs
dWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU2ltdWxhdGVkQ2xpY2suaCIKICNpbmNsdWRl
ICJTdHlsZVByb3BlcnRpZXMuaCIKQEAgLTc2NywxNCArNzY3LDE2IEBAIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudCogSFRNTEVsZW1lbnQ6OmFzRm9ybUFzc29jaWF0ZWRFbGVtZW50KCkKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGVsZW1lbnRBZmZlY3RzRGlyZWN0
aW9uYWxpdHkoY29uc3QgTm9kZSYgbm9kZSkKK3N0YXRpYyBib29sIGVsZW1lbnRBZmZlY3RzRGly
ZWN0aW9uYWxpdHkoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgaWYgKCFpczxI
VE1MRWxlbWVudD4obm9kZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjb25zdCBIVE1M
RWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKTsKICAgICByZXR1
cm4gaXM8SFRNTEJESUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGVsZW1lbnQuaGFzQXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihkaXJBdHRyKTsKIH0KIAorc3RhdGljIGJvb2wgZWxlbWVudEFm
ZmVjdHNEaXJlY3Rpb25hbGl0eShjb25zdCBOb2RlJiBub2RlKQoreworICAgIHJldHVybiBpczxI
VE1MRWxlbWVudD4obm9kZSkgJiYgZWxlbWVudEFmZmVjdHNEaXJlY3Rpb25hbGl0eShkb3duY2Fz
dDxIVE1MRWxlbWVudD4obm9kZSkpOworfQorCiBzdGF0aWMgdm9pZCBzZXRIYXNEaXJBdXRvRmxh
Z1JlY3Vyc2l2ZWx5KE5vZGUqIGZpcnN0Tm9kZSwgYm9vbCBmbGFnLCBOb2RlKiBsYXN0Tm9kZSA9
IG51bGxwdHIpCiB7CiAgICAgZmlyc3ROb2RlLT5zZXRTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9B
dHRyaWJ1dGUoZmxhZyk7CkBAIC04ODUsMTAgKzg4NywxMCBAQCB2b2lkIEhUTUxFbGVtZW50Ojph
ZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQoRWxl
bWVudAogICAgIHNldEhhc0RpckF1dG9GbGFnUmVjdXJzaXZlbHkoY2hpbGQsIGZhbHNlKTsKICAg
ICBpZiAoIXJlbmRlcmVyKCkgfHwgcmVuZGVyZXIoKS0+c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSB0
ZXh0RGlyZWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgZm9yIChhdXRvJiBlbGVtZW50VG9B
ZGp1c3QgOiBlbGVtZW50TGluZWFnZSh0aGlzKSkgewotICAgICAgICBpZiAoZWxlbWVudEFmZmVj
dHNEaXJlY3Rpb25hbGl0eShlbGVtZW50VG9BZGp1c3QpKSB7Ci0gICAgICAgICAgICBlbGVtZW50
VG9BZGp1c3QuaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwotICAgICAgICAgICAgcmV0dXJu
OworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8SFRNTEVsZW1lbnQ+KCp0
aGlzKSkgeworICAgICAgICBpZiAoZWxlbWVudEFmZmVjdHNEaXJlY3Rpb25hbGl0eShlbGVtZW50
KSkgeworICAgICAgICAgICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuaAppbmRleCAzOTVkYjFlNjJlZWRkMWQ5MDBlOWU3YzNlYzg4OGNiMDBjYjJhNGEzLi43
ZTA3NGViNjEyODk3NjI4OTBlMTFlODFhZmNkNmEwOTNlN2ZkZDhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5oCkBAIC0yMiwxOSArMjIsMTcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJJbnB1dE1vZGUuaCIKKyNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCisKICNpZiBFTkFC
TEUoQVVUT0NBUElUQUxJWkUpCiAjaW5jbHVkZSAiQXV0b2NhcGl0YWxpemUuaCIKICNlbmRpZgog
Ci0jaW5jbHVkZSAiSW5wdXRNb2RlLmgiCi0jaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQ7CiBjbGFzcyBGb3JtTmFtZWRJdGVtOwotY2xhc3MgSFRNTENvbGxl
Y3Rpb247CiBjbGFzcyBIVE1MRm9ybUVsZW1lbnQ7CiAKIGVudW0gY2xhc3MgRW50ZXJLZXlIaW50
IDogdWludDhfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCmluZGV4
IDkxNzAxZTE0NDRlZjI4NjA4NWY3MjEyNDBiZWYwYWI2YzI3NjE2MTIuLjIxY2I5ZDkzYzlhMzQw
YTNmYjNjYjE2NjIwMGNkNjgxMDQwZTVhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJz
IEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZp
c3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIFN0ZWZhbiBTY2hp
bWFuc2tpICgxU3RlaW5AZ214LmRlKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA4LCAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC02NiwxNSArNjYsMTAgQEAgUmVmPEhUTUxFbWJlZEVs
ZW1lbnQ+IEhUTUxFbWJlZEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAKIHN0
YXRpYyBpbmxpbmUgUmVuZGVyV2lkZ2V0KiBmaW5kV2lkZ2V0UmVuZGVyZXIoY29uc3QgTm9kZSog
bm9kZSkKIHsKLSAgICBpZiAoIW5vZGUtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgZG8gewotICAg
ICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgfSB3aGlsZSAobm9k
ZSAmJiAhaXM8SFRNTE9iamVjdEVsZW1lbnQ+KCpub2RlKSk7Ci0gICAgfQotCisgICAgaWYgKCFu
b2RlLT5yZW5kZXJlcigpKQorICAgICAgICBub2RlID0gYW5jZXN0b3JzT2ZUeXBlPEhUTUxPYmpl
Y3RFbGVtZW50Pigqbm9kZSkuZmlyc3QoKTsKICAgICBpZiAobm9kZSAmJiBpczxSZW5kZXJXaWRn
ZXQ+KG5vZGUtPnJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyV2lk
Z2V0Pihub2RlLT5yZW5kZXJlcigpKTsKLQogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCBkNjEx
YmMxYjIyNTFmZjhmMDg4NDRmNjhkNDI0ZmI5ZGM5NjY4MmY0Li5mZDc3ZDdiYTA0M2U5YTdjZDcy
ZmY5NmU4NTY4ZmI5ZWM5ODNmN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5
OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0
aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJr
IE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBB
bGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhUTUxEYXRhTGlzdEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgpAQCAtNDEyLDE0ICs0MTMsMTIgQEAg
Ym9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjptYXRjaGVzSW52YWxpZFBzZXVkb0NsYXNzKCkg
Y29uc3QKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y29tcHV0ZVdpbGxWYWxpZGF0ZSgp
IGNvbnN0CiB7CiAgICAgaWYgKG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlID09IFVua25vd24pIHsK
LSAgICAgICAgZm9yIChDb250YWluZXJOb2RlKiBhbmNlc3RvciA9IHBhcmVudE5vZGUoKTsgYW5j
ZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudE5vZGUoKSkgewotICAgICAgICAgICAg
aWYgKGFuY2VzdG9yLT5oYXNUYWdOYW1lKGRhdGFsaXN0VGFnKSkgewotICAgICAgICAgICAgICAg
IG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlID0gSW5zaWRlRGF0YUxpc3Q7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1fZGF0YUxp
c3RBbmNlc3RvclN0YXRlID09IFVua25vd24pCi0gICAgICAgICAgICBtX2RhdGFMaXN0QW5jZXN0
b3JTdGF0ZSA9IE5vdEluc2lkZURhdGFMaXN0OworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5U
KQorICAgICAgICBtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9IGFuY2VzdG9yc09mVHlwZTxIVE1M
RGF0YUxpc3RFbGVtZW50PigqdGhpcykuZmlyc3QoKQorICAgICAgICAgICAgPyBJbnNpZGVEYXRh
TGlzdCA6IE5vdEluc2lkZURhdGFMaXN0OworI2Vsc2UKKyAgICAgICAgbV9kYXRhTGlzdEFuY2Vz
dG9yU3RhdGUgPSBOb3RJbnNpZGVEYXRhTGlzdDsKKyNlbmRpZgogICAgIH0KICAgICByZXR1cm4g
bV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUgPT0gTm90SW5zaWRlRGF0YUxpc3QgJiYgIWlzRGlzYWJs
ZWRPclJlYWRPbmx5KCk7CiB9CkBAIC02NDUsMTUgKzY0NCw2IEBAIEF1dG9jYXBpdGFsaXplVHlw
ZSBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphdXRvY2FwaXRhbGl6ZVR5cGUoKSBjb25zdAogCiAj
ZW5kaWYKIAotSFRNTEZvcm1Db250cm9sRWxlbWVudCogSFRNTEZvcm1Db250cm9sRWxlbWVudDo6
ZW5jbG9zaW5nRm9ybUNvbnRyb2xFbGVtZW50KE5vZGUqIG5vZGUpCi17Ci0gICAgZm9yICg7IG5v
ZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKGlzPEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ+KCpub2RlKSkKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50Pihub2RlKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19
Ci0KIFN0cmluZyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphdXRvY29tcGxldGUoKSBjb25zdAog
ewogICAgIHJldHVybiBhdXRvZmlsbERhdGEoKS5pZGxFeHBvc2VkVmFsdWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IDYxMzQwYmZhNzNhM2E5
NjZiYTYzN2FkNDRmNTZjYmQ4ZmNmYzk2ZjAuLjNhZGIzMTFjN2E2MWQ3OGQ4MGI5OTBhMTU2OWU2
ODFkMGY2NTMwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5oCkBAIC0xMTYsOCArMTE2LDYgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQXV0b2ZvY3Vz
ZWQoKSB7IHJldHVybiBtX2hhc0F1dG9mb2N1c2VkOyB9CiAgICAgdm9pZCBzZXRBdXRvZm9jdXNl
ZCgpIHsgbV9oYXNBdXRvZm9jdXNlZCA9IHRydWU7IH0KIAotICAgIHN0YXRpYyBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50KiBlbmNsb3NpbmdGb3JtQ29udHJvbEVsZW1lbnQoTm9kZSopOwotCiAgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIGF1dG9jb21wbGV0ZSgpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0QXV0b2NvbXBsZXRlKGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCmluZGV4IGEy
YjAwZThmODE2ZGExYzIyMWIxYzM2NmVhNmU2ODljM2IxYzY4YjkuLjg0YTFjYjc5ZTM2MDE0M2Vj
M2Q0ODI5YzY1NzU3OGM4MjgzN2QwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24pOwogCiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6SFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlKQotICAgIDogQ2Fj
aGVkSFRNTENvbGxlY3Rpb248SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24sIENvbGxlY3Rpb25U
eXBlVHJhaXRzPEZvcm1Db250cm9scz46OnRyYXZlcnNhbFR5cGU+KG93bmVyTm9kZSwgRm9ybUNv
bnRyb2xzKQorICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb24ob3duZXJOb2RlLCBGb3JtQ29udHJv
bHMpCiAgICAgLCBtX2NhY2hlZEVsZW1lbnQobnVsbHB0cikKICAgICAsIG1fY2FjaGVkRWxlbWVu
dE9mZnNldEluQXJyYXkoMCkKIHsKQEAgLTExMSw3ICsxMTEsNyBAQCBIVE1MRWxlbWVudCogSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmN1c3RvbUVsZW1lbnRBZnRlcihFbGVtZW50KiBjdXJy
ZW50KSBjbwogCiBIVE1MRm9ybUVsZW1lbnQmIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpv
d25lck5vZGUoKSBjb25zdAogewotICAgIHJldHVybiBkb3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+
KENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLCBDb2xsZWN0
aW9uVHlwZVRyYWl0czxGb3JtQ29udHJvbHM+Ojp0cmF2ZXJzYWxUeXBlPjo6b3duZXJOb2RlKCkp
OworICAgIHJldHVybiBkb3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KENhY2hlZEhUTUxDb2xsZWN0
aW9uOjpvd25lck5vZGUoKSk7CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246
OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lk
IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNv
bnN0CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZUZv
ckRvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBDYWNoZWRIVE1MQ29sbGVjdGlv
bjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8Rm9ybUNv
bnRyb2xzPjo6dHJhdmVyc2FsVHlwZT46OmludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50KGRvY3Vt
ZW50KTsKKyAgICBDYWNoZWRIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1l
bnQoZG9jdW1lbnQpOwogICAgIG1fY2FjaGVkRWxlbWVudCA9IG51bGxwdHI7CiAgICAgbV9jYWNo
ZWRFbGVtZW50T2Zmc2V0SW5BcnJheSA9IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsCmluZGV4IDQzYzgzNTk5OGI0MDA1OWUz
MzI3Y2U2ZDU5ZTBmODJlNmZkZDE4MjMuLjRkODFmZmQwMzQ1NzQ3N2NiYTI0ZDJkMzNkYmI5MzFi
NDhiMzVlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uaWRsCkBAIC0yMiw1ICsyMiw1IEBACiAgICAgR2VuZXJhdGVJc1JlYWNoYWJs
ZT1JbXBsT3duZXJOb2RlUm9vdCwKIF0gaW50ZXJmYWNlIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uIDogSFRNTENvbGxlY3Rpb24gewogICAgIGdldHRlciBIVE1MRWxlbWVudD8gKHVuc2lnbmVk
IGxvbmcgaW5kZXgpOwotICAgIFtJbXBsZW1lbnRlZEFzPW5hbWVkSXRlbU9ySXRlbXNdIGdldHRl
ciAoUmFkaW9Ob2RlTGlzdCBvciBFbGVtZW50KT8gbmFtZWRJdGVtKERPTVN0cmluZyBuYW1lKTsg
Ly8gc2hhZG93cyBpbmhlcml0ZWQgbmFtZWRJdGVtKCkKKyAgICBbSW1wbGVtZW50ZWRBcz1uYW1l
ZEl0ZW1Pckl0ZW1zXSBnZXR0ZXIgKFJhZGlvTm9kZUxpc3Qgb3IgRWxlbWVudCk/IG5hbWVkSXRl
bShbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIERPTVN0cmluZyBuYW1lKTsgLy8gc2hhZG93
cyBpbmhlcml0ZWQgbmFtZWRJdGVtKCkKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVTZXRFbGVtZW50LmNwcAppbmRleCA4M2FjNjgwZDkwNDg3NTcxNTBiNWI2ZWIzNmI2NGQ3ODhm
MGViYzcwLi5lNmFlNmY2OGQ4Nzk4NWFmOWZmNTRlYjVkNjc1MzNhNWI1YWIxZjI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKQEAgLTMzLDcgKzMzLDYg
QEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rp
b24uaCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcApvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBkZmUxOTBhNTlkZGQxZTZhZDE1MzBjNWYyMTk0
YjA4NTdhYzdiNWU2Li5iM2RlOGE3ZDhhNGQ2MGJhYTMwNjRkOGNkOThhNDdlYWU2ZGYwNjhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBA
CiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAg
ICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAg
ICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHly
aWdodCAoQykgMjAwNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
ICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyAoc2FtQHdlYmtpdC5vcmcpCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTIx
MDQsNiArMjEwNCw3IEBAIFJlbmRlclN0eWxlIEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlubmVy
VGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIH0KIAogI2lmIEVOQUJMRShEQVRF
X0FORF9USU1FX0lOUFVUX1RZUEVTKQorCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnNldHVwRGF0
ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyhEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogewogICAgIGlmICghZG9jdW1lbnQoKS52aWV3KCkpCkBAIC0yMTM2LDIwICsyMTM3LDI0
IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6c2V0dXBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJz
KERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMmCiAgICAgICAgIHBhcmFtZXRlcnMuYW5jaG9yUmVj
dEluUm9vdFZpZXcgPSBJbnRSZWN0KCk7CiAgICAgcGFyYW1ldGVycy5jdXJyZW50VmFsdWUgPSB2
YWx1ZSgpOwogICAgIHBhcmFtZXRlcnMuaXNBbmNob3JFbGVtZW50UlRMID0gY29tcHV0ZWRTdHls
ZSgpLT5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEw7CisKICNpZiBFTkFCTEUoREFU
QUxJU1RfRUxFTUVOVCkKICAgICBpZiAoYXV0byBkYXRhTGlzdCA9IHRoaXMtPmRhdGFMaXN0KCkp
IHsKLSAgICAgICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBvcHRpb25zID0gZGF0YUxpc3QtPm9wdGlv
bnMoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgUmVmUHRyPEhUTUxPcHRpb25FbGVt
ZW50PiBvcHRpb24gPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4ob3B0aW9ucy0+aXRlbShp
KSk7ICsraSkgewotICAgICAgICAgICAgaWYgKCFpc1ZhbGlkVmFsdWUob3B0aW9uLT52YWx1ZSgp
KSkKKyAgICAgICAgZm9yIChhdXRvJiBvcHRpb24gOiBkYXRhTGlzdC0+c3VnZ2VzdGlvbnMoKSkg
eworICAgICAgICAgICAgYXV0byBsYWJlbCA9IG9wdGlvbi5sYWJlbCgpOworICAgICAgICAgICAg
YXV0byB2YWx1ZSA9IG9wdGlvbi52YWx1ZSgpOworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkVmFs
dWUodmFsdWUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcGFyYW1l
dGVycy5zdWdnZXN0aW9uVmFsdWVzLmFwcGVuZChzYW5pdGl6ZVZhbHVlKG9wdGlvbi0+dmFsdWUo
KSkpOwotICAgICAgICAgICAgcGFyYW1ldGVycy5sb2NhbGl6ZWRTdWdnZXN0aW9uVmFsdWVzLmFw
cGVuZChsb2NhbGl6ZVZhbHVlKG9wdGlvbi0+dmFsdWUoKSkpOwotICAgICAgICAgICAgcGFyYW1l
dGVycy5zdWdnZXN0aW9uTGFiZWxzLmFwcGVuZChvcHRpb24tPnZhbHVlKCkgPT0gb3B0aW9uLT5s
YWJlbCgpID8gU3RyaW5nKCkgOiBvcHRpb24tPmxhYmVsKCkpOworICAgICAgICAgICAgcGFyYW1l
dGVycy5zdWdnZXN0aW9uVmFsdWVzLmFwcGVuZChzYW5pdGl6ZVZhbHVlKHZhbHVlKSk7CisgICAg
ICAgICAgICBwYXJhbWV0ZXJzLmxvY2FsaXplZFN1Z2dlc3Rpb25WYWx1ZXMuYXBwZW5kKGxvY2Fs
aXplVmFsdWUodmFsdWUpKTsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuc3VnZ2VzdGlvbkxhYmVs
cy5hcHBlbmQodmFsdWUgPT0gbGFiZWwgPyBTdHJpbmcoKSA6IGxhYmVsKTsKICAgICAgICAgfQog
ICAgIH0KICNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9CisKICNlbmRpZgogCiB2b2lkIEhU
TUxJbnB1dEVsZW1lbnQ6OmNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAppbmRleCA5ZThjZmZkYjkxYTUxMDkw
NDI4NDU5ZWZmZTg2NWE0OGUwN2Y0ODA4Li42NzY4ZmUxMmExZTVlNzIyMGM1MzY5MGZlNmY5NzM1
N2NhZTdjZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5j
cHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25v
bGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlz
dG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJA
a2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292
IChhcEBueXBvcC5jb20pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMTA5LDE0ICsxMDksNyBAQCBTdHJpbmcg
SFRNTE9wdEdyb3VwRWxlbWVudDo6Z3JvdXBMYWJlbFRleHQoKSBjb25zdAogICAgIAogSFRNTFNl
bGVjdEVsZW1lbnQqIEhUTUxPcHRHcm91cEVsZW1lbnQ6Om93bmVyU2VsZWN0RWxlbWVudCgpIGNv
bnN0CiB7Ci0gICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHNlbGVjdCA9IHBhcmVudE5vZGUoKTsK
LSAgICB3aGlsZSAoc2VsZWN0ICYmICFpczxIVE1MU2VsZWN0RWxlbWVudD4oKnNlbGVjdCkpCi0g
ICAgICAgIHNlbGVjdCA9IHNlbGVjdC0+cGFyZW50Tm9kZSgpOwotICAgIAotICAgIGlmICghc2Vs
ZWN0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICByZXR1cm4gZG93bmNhc3Q8
SFRNTFNlbGVjdEVsZW1lbnQ+KHNlbGVjdC5nZXQoKSk7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8
SFRNTFNlbGVjdEVsZW1lbnQqPihhbmNlc3RvcnNPZlR5cGU8SFRNTFNlbGVjdEVsZW1lbnQ+KCp0
aGlzKS5maXJzdCgpKTsKIH0KIAogdm9pZCBIVE1MT3B0R3JvdXBFbGVtZW50OjphY2Nlc3NLZXlB
Y3Rpb24oYm9vbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKaW5k
ZXggYzNkZDMwZDVkYzYyYmY4MzE3MDllNTcwMDQ2ODhkNGE4OGIzZTJhNi4uM2MwMWU2OTVhZDEw
MjY3N2FhZmYwMmRiMGYyMTFkYjg4ZjY5Mjg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uRWxlbWVudC5jcHAKQEAgLTMsNyArMyw3IEBACiAgKiAgICAgICAgICAgKEMpIDE5OTkg
QW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEg
RGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxl
eGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAt
MTY2LDggKzE2Niw4IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpCiB7CiAjaWYgRU5BQkxFKERB
VEFMSVNUX0VMRU1FTlQpCiAgICAgaWYgKG5hbWUgPT0gdmFsdWVBdHRyKSB7Ci0gICAgICAgIGlm
IChSZWZQdHI8SFRNTERhdGFMaXN0RWxlbWVudD4gZGF0YUxpc3QgPSBvd25lckRhdGFMaXN0RWxl
bWVudCgpKQotICAgICAgICAgICAgZGF0YUxpc3QtPm9wdGlvbkVsZW1lbnRDaGlsZHJlbkNoYW5n
ZWQoKTsKKyAgICAgICAgZm9yIChhdXRvJiBkYXRhTGlzdCA6IGFuY2VzdG9yc09mVHlwZTxIVE1M
RGF0YUxpc3RFbGVtZW50PigqdGhpcykpCisgICAgICAgICAgICBkYXRhTGlzdC5vcHRpb25FbGVt
ZW50Q2hpbGRyZW5DaGFuZ2VkKCk7CiAgICAgfSBlbHNlCiAjZW5kaWYKICAgICBpZiAobmFtZSA9
PSBkaXNhYmxlZEF0dHIpIHsKQEAgLTIzOCwzOSArMjM4LDE3IEBAIHZvaWQgSFRNTE9wdGlvbkVs
ZW1lbnQ6OnNldFNlbGVjdGVkU3RhdGUoYm9vbCBzZWxlY3RlZCkKIHZvaWQgSFRNTE9wdGlvbkVs
ZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogewogI2lm
IEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotICAgIGlmIChSZWZQdHI8SFRNTERhdGFMaXN0RWxl
bWVudD4gZGF0YUxpc3QgPSBvd25lckRhdGFMaXN0RWxlbWVudCgpKQotICAgICAgICBkYXRhTGlz
dC0+b3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOwotICAgIGVsc2UKKyAgICBmb3IgKGF1
dG8mIGRhdGFMaXN0IDogYW5jZXN0b3JzT2ZUeXBlPEhUTUxEYXRhTGlzdEVsZW1lbnQ+KCp0aGlz
KSkKKyAgICAgICAgZGF0YUxpc3Qub3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOwogI2Vu
ZGlmCiAgICAgaWYgKFJlZlB0cjxIVE1MU2VsZWN0RWxlbWVudD4gc2VsZWN0ID0gb3duZXJTZWxl
Y3RFbGVtZW50KCkpCiAgICAgICAgIHNlbGVjdC0+b3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdl
ZCgpOwogICAgIEhUTUxFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIH0KIAotI2lm
IEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotSFRNTERhdGFMaXN0RWxlbWVudCogSFRNTE9wdGlv
bkVsZW1lbnQ6Om93bmVyRGF0YUxpc3RFbGVtZW50KCkgY29uc3QKLXsKLSAgICBSZWZQdHI8Q29u
dGFpbmVyTm9kZT4gZGF0YWxpc3QgPSBwYXJlbnROb2RlKCk7Ci0gICAgd2hpbGUgKGRhdGFsaXN0
ICYmICFpczxIVE1MRGF0YUxpc3RFbGVtZW50PigqZGF0YWxpc3QpKQotICAgICAgICBkYXRhbGlz
dCA9IGRhdGFsaXN0LT5wYXJlbnROb2RlKCk7Ci0KLSAgICBpZiAoIWRhdGFsaXN0KQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBkb3duY2FzdDxIVE1MRGF0YUxpc3RFbGVt
ZW50PihkYXRhbGlzdC5nZXQoKSk7Ci19Ci0jZW5kaWYKLQogSFRNTFNlbGVjdEVsZW1lbnQqIEhU
TUxPcHRpb25FbGVtZW50Ojpvd25lclNlbGVjdEVsZW1lbnQoKSBjb25zdAogewotICAgIFJlZlB0
cjxDb250YWluZXJOb2RlPiBzZWxlY3QgPSBwYXJlbnROb2RlKCk7Ci0gICAgd2hpbGUgKHNlbGVj
dCAmJiAhaXM8SFRNTFNlbGVjdEVsZW1lbnQ+KCpzZWxlY3QpKQotICAgICAgICBzZWxlY3QgPSBz
ZWxlY3QtPnBhcmVudE5vZGUoKTsKLQotICAgIGlmICghc2VsZWN0KQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIHJldHVybiBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oc2VsZWN0
LmdldCgpKTsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KGFuY2Vz
dG9yc09mVHlwZTxIVE1MU2VsZWN0RWxlbWVudD4oKnRoaXMpLmZpcnN0KCkpOwogfQogCiBTdHJp
bmcgSFRNTE9wdGlvbkVsZW1lbnQ6OmxhYmVsKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbkVsZW1lbnQuaAppbmRleCBmMGQ5NGM4YTZiNWYzMDgzMzRlYWExMWRhOWU0MDIxYjVj
MGU1N2U2Li45MWM1YWJjN2UwMTdjMTFmYTEzMmZkMzFmMDFiZTFlMzI0ZTI2YjE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29w
eXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAg
KEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAg
KEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMTAsIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjgsNyArMjgsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxEYXRhTGlzdEVsZW1lbnQ7CiBjbGFzcyBIVE1MU2VsZWN0
RWxlbWVudDsKIAogY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVs
ZW1lbnQgewpAQCAtNDksOSArNDgsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBzZWxlY3RlZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCk7
CiAKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICBXRUJDT1JFX0VYUE9SVCBIVE1M
RGF0YUxpc3RFbGVtZW50KiBvd25lckRhdGFMaXN0RWxlbWVudCgpIGNvbnN0OwotI2VuZGlmCiAg
ICAgV0VCQ09SRV9FWFBPUlQgSFRNTFNlbGVjdEVsZW1lbnQqIG93bmVyU2VsZWN0RWxlbWVudCgp
IGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGwKaW5kZXggNmU5ZmE0
ZDBlMTYxNjBkYTJiN2NhYjgwZDAyYTk3YWJkODA2M2IwNS4uZjFjNDc3ZTQ4NjhlMGZlNDA1OWZk
ZmM2MDUxYmVjM2ExZjJjNWNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uc0NvbGxlY3Rpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLmlkbApAQCAtMzIsNSArMzIsNSBAQAogCiAgICAgLy8gRklYTUU6IENhbiB0
aGVzZSBqdXN0IGJlIGluaGVyaXRlZCBmcm9tIEhUTUxDb2xsZWN0aW9uIGxpa2UgaW4gdGhlIHNw
ZWM/CiAgICAgZ2V0dGVyIEhUTUxPcHRpb25FbGVtZW50PyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5k
ZXgpOwotICAgIGdldHRlciBIVE1MT3B0aW9uRWxlbWVudD8gbmFtZWRJdGVtKERPTVN0cmluZyBu
YW1lKTsKKyAgICBnZXR0ZXIgSFRNTE9wdGlvbkVsZW1lbnQ/IG5hbWVkSXRlbShbUmVxdWlyZXNF
eGlzdGluZ0F0b21TdHJpbmddIERPTVN0cmluZyBuYW1lKTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCA1NjIzMWE1MGIyYTQ2MGU0
YWQwYjg3ZjBkOGI0YTgwOTU2NDQ2Y2EyLi4wZmEzYzY5ZDRlOTI2YjcyOWJlN2U1ZjYzMDJiYjAy
MTQ3NjQ5YjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNp
bmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgor
I2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC01MCw3
ICs1MSw2IEBACiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlVHJlZVJl
c29sdmVyLmgiCiAjaW5jbHVkZSAiU3ViZnJhbWVMb2FkZXIuaCIKLSNpbmNsdWRlICJUeXBlZEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRv
ci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhdGNoU2NvcGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdElubGluZXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2VsZWN0RWxlbWVudC5pZGwKaW5kZXggNjFlZTU5NGU2MDM3NzkwZWFkZmM4YWZkMWMx
NWVjYzQ2ZjM4YzZjOS4uZDNhZWRhOTAzNTUzOGQ5NmYyMmJlMWE1NDBlNzM2MTAzOWVlZWMyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwKQEAgLTM2LDcgKzM2
LDcgQEAKICAgICAvKiBbU2FtZU9iamVjdF0gKi8gcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxPcHRp
b25zQ29sbGVjdGlvbiBvcHRpb25zOwogICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgbGVuZ3RoOwogICAgIGdldHRlciBIVE1MT3B0aW9uRWxlbWVudD8gaXRlbSh1bnNp
Z25lZCBsb25nIGluZGV4KTsgLy8gRklYTUU6IFRoZSBzcGVjIGhhcyB0aGlzIHJldHVybmluZyBF
bGVtZW50Py4KLSAgICBIVE1MT3B0aW9uRWxlbWVudD8gbmFtZWRJdGVtKERPTVN0cmluZyBuYW1l
KTsKKyAgICBIVE1MT3B0aW9uRWxlbWVudD8gbmFtZWRJdGVtKFtSZXF1aXJlc0V4aXN0aW5nQXRv
bVN0cmluZ10gRE9NU3RyaW5nIG5hbWUpOwogICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNl
cHRpb25dIHZvaWQgYWRkKChIVE1MT3B0aW9uRWxlbWVudCBvciBIVE1MT3B0R3JvdXBFbGVtZW50
KSBlbGVtZW50LCBvcHRpb25hbCAoSFRNTEVsZW1lbnQgb3IgbG9uZyk/IGJlZm9yZSA9IG51bGwp
OwogICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVtb3ZlKCk7IC8v
IENoaWxkTm9kZSBvdmVybG9hZAogICAgIFtDRVJlYWN0aW9uc10gdm9pZCByZW1vdmUobG9uZyBp
bmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCmlu
ZGV4IGZiZjhmNzMzZTQ4MDAwNDkxZWFkODYxNjczYjg2MzE5MjNmOTkxODYuLmE2MDAzOGZlOTRm
Mjk4YjA4ZWE0YWI2ZWRhY2Q3ZDE1NTdhYTg3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCkBAIC0xMzEsOSArMTMxLDkgQEAgdm9pZCBIVE1MVGFi
bGVDZWxsRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbVMKIAogY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBIVE1MVGFibGVDZWxsRWxlbWVu
dDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCkgY29uc3QKIHsKLSAgICBp
ZiAoUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IHRhYmxlID0gZmluZFBhcmVudFRhYmxlKCkpCisg
ICAgaWYgKGF1dG8gdGFibGUgPSBmaW5kUGFyZW50VGFibGUoKSkKICAgICAgICAgcmV0dXJuIHRh
YmxlLT5hZGRpdGlvbmFsQ2VsbFN0eWxlKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKIGJvb2wgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGNv
bnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlQ29sRWxlbWVudC5jcHAKaW5kZXggNzI4YjVmM2QyYjU1MjNiMDRiMzk5ZjJjYzRiNTVh
YTRmOGIxZmM3NC4uZjRkNDQ3NTgxMWU4YTQwY2EzMmE2N2JjZjZiMjE2YzI1M2E3ZTdhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCkBAIC05Miw3ICs5
Miw3IEBAIGNvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlQ29sRWxlbWVudDo6YWRkaXRp
b25hbFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlCiB7CiAgICAgaWYgKCFoYXNUYWdOYW1lKGNv
bGdyb3VwVGFnKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKFJlZlB0cjxIVE1M
VGFibGVFbGVtZW50PiB0YWJsZSA9IGZpbmRQYXJlbnRUYWJsZSgpKQorICAgIGlmIChhdXRvIHRh
YmxlID0gZmluZFBhcmVudFRhYmxlKCkpCiAgICAgICAgIHJldHVybiB0YWJsZS0+YWRkaXRpb25h
bEdyb3VwU3R5bGUoZmFsc2UpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXggNzY3YTNlMzhhZjQ4MmRkOTJiMTQ5Yzhm
MGVlOGI4NjZlN2Q0YjdiZi4uYTVmODBmZTBjOTFmODhkOTYwYWI3ZmU3YWYwNjhhNDhiODk2NDVk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCkBAIC00NzMsNyAr
NDczLDcgQEAgSFRNTFRhYmxlRWxlbWVudDo6Q2VsbEJvcmRlcnMgSFRNTFRhYmxlRWxlbWVudDo6
Y2VsbEJvcmRlcnMoKSBjb25zdAogICAgIHJldHVybiBOb0JvcmRlcnM7CiB9CiAKLVJlZjxTdHls
ZVByb3BlcnRpZXM+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpCitS
ZWY8U3R5bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5
bGUoKSBjb25zdAogewogICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpj
cmVhdGUoKTsKIApAQCAtNTE0LDcgKzUxNCw3IEBAIFJlZjxTdHlsZVByb3BlcnRpZXM+IEhUTUxU
YWJsZUVsZW1lbnQ6OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpCiAgICAgcmV0dXJuIHN0eWxlOwog
fQogCi1jb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxD
ZWxsU3R5bGUoKQorY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBIVE1MVGFibGVFbGVtZW50OjphZGRp
dGlvbmFsQ2VsbFN0eWxlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc2hhcmVkQ2VsbFN0eWxlKQog
ICAgICAgICBtX3NoYXJlZENlbGxTdHlsZSA9IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOwpAQCAt
NTM4LDExICs1MzgsMTAgQEAgc3RhdGljIFN0eWxlUHJvcGVydGllcyogbGVha0dyb3VwQm9yZGVy
U3R5bGUoaW50IHJvd3MpCiAgICAgcmV0dXJuICZzdHlsZS5sZWFrUmVmKCk7CiB9CiAKLWNvbnN0
IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlRWxlbWVudDo6YWRkaXRpb25hbEdyb3VwU3R5bGUo
Ym9vbCByb3dzKQorY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBIVE1MVGFibGVFbGVtZW50OjphZGRp
dGlvbmFsR3JvdXBTdHlsZShib29sIHJvd3MpIGNvbnN0CiB7CiAgICAgaWYgKG1fcnVsZXNBdHRy
ICE9IEdyb3Vwc1J1bGVzKQotICAgICAgICByZXR1cm4gMDsKLQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBpZiAocm93cykgewogICAgICAgICBzdGF0aWMgU3R5bGVQcm9wZXJ0aWVzKiBy
b3dCb3JkZXJTdHlsZSA9IGxlYWtHcm91cEJvcmRlclN0eWxlKHRydWUpOwogICAgICAgICByZXR1
cm4gcm93Qm9yZGVyU3R5bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCmlu
ZGV4IGIzNjU0MjA5YmRhODU3ODg1YzY5MzFjODFiNGVlM2Y5ODZmMzg0MTYuLjM3NTZkYzYxMDc1
YzRiZjc5NTdmOTA3M2I3ODc1YTUyZjJlNTZiMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5oCkBAIC02NSw4ICs2NSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBBdG9tU3Ry
aW5nJiBydWxlcygpIGNvbnN0OwogICAgIGNvbnN0IEF0b21TdHJpbmcmIHN1bW1hcnkoKSBjb25z
dDsKIAotICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogYWRkaXRpb25hbENlbGxTdHlsZSgpOwot
ICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogYWRkaXRpb25hbEdyb3VwU3R5bGUoYm9vbCByb3dz
KTsKKyAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0aW9uYWxDZWxsU3R5bGUoKSBjb25z
dDsKKyAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0aW9uYWxHcm91cFN0eWxlKGJvb2wg
cm93cykgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSFRNTFRhYmxlRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKIAogICAg
IENlbGxCb3JkZXJzIGNlbGxCb3JkZXJzKCkgY29uc3Q7CiAKLSAgICBSZWY8U3R5bGVQcm9wZXJ0
aWVzPiBjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKTsKKyAgICBSZWY8U3R5bGVQcm9wZXJ0aWVzPiBj
cmVhdGVTaGFyZWRDZWxsU3R5bGUoKSBjb25zdDsKIAogICAgIEhUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50KiBsYXN0Qm9keSgpIGNvbnN0OwogCkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2ZyYW1lQXR0ciB7IGZhbHNlIH07IC8vIEltcGxpZXMgYSB0aGluIGJvcmRlciB3aWR0
aCBpZiBubyBib3JkZXIgaXMgc2V0IGFuZCB0aGVuIGEgY2VydGFpbiBzZXQgb2Ygc29saWQvaGlk
ZGVuIGJvcmRlcnMgYmFzZWQgb2ZmIHRoZSB2YWx1ZS4KICAgICBUYWJsZVJ1bGVzIG1fcnVsZXNB
dHRyIHsgVW5zZXRSdWxlcyB9OyAvLyBJbXBsaWVzIGEgdGhpbiBib3JkZXIgd2lkdGgsIGEgY29s
bGFwc2luZyBib3JkZXIgbW9kZWwsIGFuZCBhbGwgYm9yZGVycyBvbiB0aGUgdGFibGUgYmVjb21p
bmcgc2V0IHRvIGhpZGRlbiAoaWYgZnJhbWUvYm9yZGVyIGFyZSBwcmVzZW50LCB0byBub25lIG90
aGVyd2lzZSkuCiAgICAgdW5zaWduZWQgc2hvcnQgbV9wYWRkaW5nIHsgMSB9OwotICAgIFJlZlB0
cjxTdHlsZVByb3BlcnRpZXM+IG1fc2hhcmVkQ2VsbFN0eWxlOworICAgIG11dGFibGUgUmVmUHRy
PFN0eWxlUHJvcGVydGllcz4gbV9zaGFyZWRDZWxsU3R5bGU7CiB9OwogCiB9IC8vbmFtZXNwYWNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwCmluZGV4IDM1
ODc4MDE2MjEwZmNhYWZmNjA5MGU2OTUzOTQxNTVjNDU1YWVhN2MuLjM0OWIwMzUxMmE4ZWM1NDA1
MjQxYmJhNmZjM2Q0YTlmZjc0MzZlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlUGFydEVsZW1lbnQuY3BwCkBAIC00LDcgKzQsNyBAQAogICogICAgICAgICAgIChDKSAxOTk4
IFdhbGRvIEJhc3RpYW4gKGJhc3RpYW5Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBM
YXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtv
aXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAy
MDA1LCAyMDA2IEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODUsMTIgKzg1
LDkgQEAgdm9pZCBIVE1MVGFibGVQYXJ0RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE4KICAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxl
Y3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwogfQog
Ci1SZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmZpbmRQYXJl
bnRUYWJsZSgpIGNvbnN0CitSZWZQdHI8Y29uc3QgSFRNTFRhYmxlRWxlbWVudD4gSFRNTFRhYmxl
UGFydEVsZW1lbnQ6OmZpbmRQYXJlbnRUYWJsZSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPENvbnRh
aW5lck5vZGU+IHBhcmVudCA9IHBhcmVudE5vZGUoKTsKLSAgICB3aGlsZSAocGFyZW50ICYmICFp
czxIVE1MVGFibGVFbGVtZW50PigqcGFyZW50KSkKLSAgICAgICAgcGFyZW50ID0gcGFyZW50LT5w
YXJlbnROb2RlKCk7Ci0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxUYWJsZUVsZW1lbnQ+KHBhcmVu
dC5nZXQoKSk7CisgICAgcmV0dXJuIGFuY2VzdG9yc09mVHlwZTxIVE1MVGFibGVFbGVtZW50Pigq
dGhpcykuZmlyc3QoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVQYXJ0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0
RWxlbWVudC5oCmluZGV4IGQzYmNmNTBiYWUyMWMzNThjZGUyM2YzMzYzZTVjNjkyZDU2ZjExZTYu
LjA0Zjk0NzFiYWJhMjg3N2Y3NTQ1NDBjOWIxYTU4MDk3MjdiZWI1NzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmgKQEAgLTQsNyArNCw3IEBACiAgKiAgICAg
ICAgICAgKEMpIDE5OTggV2FsZG8gQmFzdGlhbiAoYmFzdGlhbkBrZGUub3JnKQogICogICAgICAg
ICAgIChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMp
IDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00Miw3ICs0Miw3IEBAIHByb3RlY3RlZDoK
ICAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYsIE11dGFibGVTdHls
ZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxIVE1MVGFibGVFbGVtZW50PiBm
aW5kUGFyZW50VGFibGUoKSBjb25zdDsKKyAgICBSZWZQdHI8Y29uc3QgSFRNTFRhYmxlRWxlbWVu
dD4gZmluZFBhcmVudFRhYmxlKCkgY29uc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwCmlu
ZGV4IGU1MTZhODE4NGQxZjBmODM3M2NkMjFhNGE3YTQwOTNjZjliY2YyZjEuLjc3OWQ5NjRlOTM4
NjJkMDQ3OWRmZjQwOGI0ZjA1MzkyNGE3MjUwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVk
ZSAiSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRI
VE1MQ29sbGVjdGlvbi5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlUm93RWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxUYWJsZUVsZW1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggM2M5YjMzOGZkMjYyNmQ3NGQ2ZGUwOGNlZmU0
NWU1MzZiMzRhMTYwMy4uZTI3YWZiYzAwZDRlODQ1NmIwNDBhNGFjNjQzZTdhYmFhZjdhZmExNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAo
a25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29p
dmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxs
ZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlh
a292IChhcEBueXBvcC5jb20pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNzYxLDM0ICs3NjEsMjQgQEAgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChjb25zdCBQ
b3NpdGlvbiYgcG9zaXRpb24pCiAgICAgcmV0dXJuIGFuY2VzdG9yICYmIGFuY2VzdG9yLT5pc1Rl
eHRGaWVsZCgpID8gZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGFuY2VzdG9y
LmdldCgpKSA6IG51bGxwdHI7CiB9CiAKLXN0YXRpYyBjb25zdCBFbGVtZW50KiBwYXJlbnRIVE1M
RWxlbWVudChjb25zdCBFbGVtZW50KiBlbGVtZW50KQotewotICAgIHdoaWxlIChlbGVtZW50KSB7
Ci0gICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7Ci0gICAgICAgIGlm
IChlbGVtZW50ICYmIGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVy
biBlbGVtZW50OwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQogU3RyaW5nIEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50OjpkaXJlY3Rpb25Gb3JGb3JtRGF0YSgpIGNvbnN0CiB7Ci0gICAgZm9y
IChjb25zdCBFbGVtZW50KiBlbGVtZW50ID0gdGhpczsgZWxlbWVudDsgZWxlbWVudCA9IHBhcmVu
dEhUTUxFbGVtZW50KGVsZW1lbnQpKSB7Ci0gICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIGRpckF0
dHJpYnV0ZVZhbHVlID0gZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihk
aXJBdHRyKTsKLSAgICAgICAgaWYgKGRpckF0dHJpYnV0ZVZhbHVlLmlzTnVsbCgpKQotICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAicnRsIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoZGlyQXR0cmlidXRlVmFsdWUsICJsdHIiKSkKLSAgICAgICAgICAgIHJldHVybiBkaXJB
dHRyaWJ1dGVWYWx1ZTsKLQotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoZGlyQXR0cmlidXRlVmFsdWUsICJhdXRvIikpIHsKLSAgICAgICAgICAgIGJvb2wgaXNBdXRv
OwotICAgICAgICAgICAgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8
Y29uc3QgSFRNTEVsZW1lbnQqPihlbGVtZW50KS0+ZGlyZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9B
dHRyaWJ1dGUoaXNBdXRvKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0RGlyZWN0aW9uID09IFRl
eHREaXJlY3Rpb246OlJUTCA/ICJydGwiIDogImx0ciI7CisgICAgYXV0byBkaXJlY3Rpb24gPSBb
dGhpc10geworICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEhUTUxF
bGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgICAgIGF1dG8mIHZhbHVlID0gZWxlbWVudC5hdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRpckF0dHIpOworICAgICAgICAgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAicnRsIikpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFRleHREaXJlY3Rpb246OlJUTDsKKyAgICAgICAgICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImx0ciIpKQorICAgICAgICAgICAgICAgIHJldHVy
biBUZXh0RGlyZWN0aW9uOjpMVFI7CisgICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UodmFsdWUsICJhdXRvIikpIHsKKyAgICAgICAgICAgICAgICBib29sIGlzQXV0
bzsKKyAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudC5kaXJlY3Rpb25hbGl0eUlmaGFzRGly
QXV0b0F0dHJpYnV0ZShpc0F1dG8pOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQor
ICAgICAgICByZXR1cm4gVGV4dERpcmVjdGlvbjo6TFRSOworICAgIH0oKTsKIAotICAgIHJldHVy
biAibHRyIjsKKyAgICByZXR1cm4gZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/ICJs
dHIiX3MgOiAicnRsIl9zOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6c2V0TWF4TGVuZ3RoKGludCBtYXhMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TGFiZWxzTm9kZUxpc3QuY3BwCmluZGV4IGQ0MTAxNzg2ZmIwMDVmMjY4N2IxOTBhZjM3MzFiY2Q1
NTdkMjBlMGEuLjczMGRhOTU0MDJiMjRhNDFhMjQ3YWQ5NGRjMDJiMDAzZWY4MDI1NDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29w
eXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAg
KEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAg
KEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDcsIDIwMDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCkBAIC0yNCw5ICsyNCw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiTGFiZWxzTm9kZUxpc3QuaCIKIAotI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTGFiZWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAi
TGFiZWxhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTM2LDExICszNiwxNiBAQCB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTGFiZWxzTm9k
ZUxpc3QpOwogCi1MYWJlbHNOb2RlTGlzdDo6TGFiZWxzTm9kZUxpc3QoTGFiZWxhYmxlRWxlbWVu
dCYgZm9yTm9kZSkKLSAgICA6IENhY2hlZExpdmVOb2RlTGlzdChmb3JOb2RlLCBJbnZhbGlkYXRl
T25Gb3JUeXBlQXR0ckNoYW5nZSkKK0xhYmVsc05vZGVMaXN0OjpMYWJlbHNOb2RlTGlzdChMYWJl
bGFibGVFbGVtZW50JiBlbGVtZW50KQorICAgIDogQ2FjaGVkTGl2ZU5vZGVMaXN0KGVsZW1lbnQs
IEludmFsaWRhdGVPbkZvclR5cGVBdHRyQ2hhbmdlLCBJc1Jvb3RlZEF0RG9jdW1lbnQ6OlllcykK
IHsKIH0KIAorUmVmPExhYmVsc05vZGVMaXN0PiBMYWJlbHNOb2RlTGlzdDo6Y3JlYXRlKExhYmVs
YWJsZUVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IExhYmVsc05vZGVMaXN0KGVsZW1lbnQpKTsKK30KKwogTGFiZWxzTm9kZUxp
c3Q6On5MYWJlbHNOb2RlTGlzdCgpCiB7CiAgICAgb3duZXJOb2RlKCkubm9kZUxpc3RzKCktPnJl
bW92ZUNhY2hlV2l0aEF0b21OYW1lKCp0aGlzLCBzdGFyQXRvbSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TGFiZWxzTm9kZUxpc3QuaAppbmRleCBmNTM5ZDc5YjBjYWEwNTAwMzA0ODg4ZGM0NjE3NzJhZjdk
YjE2MjgyLi5kMTM0NjEyNzAzNmNjMDMzNzZiOTQyOTA0YWI2MWU1YzBhMmE3OGNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0
IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5
OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIw
MDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDcsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEwIE5va2lhIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CkBAIC0yNCwyNSArMjQsMjIgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJMYWJlbGFi
bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGl2ZU5vZGVMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgTGFiZWxhYmxlRWxlbWVudDsKKwogY2xhc3MgTGFiZWxzTm9kZUxpc3Qg
ZmluYWwgOiBwdWJsaWMgQ2FjaGVkTGl2ZU5vZGVMaXN0PExhYmVsc05vZGVMaXN0PiB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChMYWJlbHNOb2RlTGlzdCk7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxMYWJlbHNOb2RlTGlzdD4gY3JlYXRlKExhYmVsYWJsZUVsZW1lbnQmIGZvck5vZGUs
IGNvbnN0IEF0b21TdHJpbmcmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TGFiZWxzTm9kZUxpc3QoZm9yTm9kZSkpOwotICAgIH0KLSAgICB+TGFiZWxzTm9kZUxpc3QoKTsK
KyAgICBzdGF0aWMgUmVmPExhYmVsc05vZGVMaXN0PiBjcmVhdGUoTGFiZWxhYmxlRWxlbWVudCYs
IGNvbnN0IEF0b21TdHJpbmcmKTsKKyAgICB2aXJ0dWFsIH5MYWJlbHNOb2RlTGlzdCgpOwogCi0g
ICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9v
bCBpc1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Cisg
ICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6
Ci0gICAgZXhwbGljaXQgTGFiZWxzTm9kZUxpc3QoTGFiZWxhYmxlRWxlbWVudCYgZm9yTm9kZSk7
CisgICAgZXhwbGljaXQgTGFiZWxzTm9kZUxpc3QoTGFiZWxhYmxlRWxlbWVudCYpOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAK
aW5kZXggMDRkZTc1MTNjYWM0ODJiZjc2MGI0ZTRjNmZmYTAyZWMyZTViNjdmNy4uMjRlNDBjMmM2
ZDMzMTE0OTNiNjE3YzY1Y2RmMmY1OGE4NTEyMjJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RG9jdW1lbnQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiQ3VzdG9tSGVhZGVyRmllbGRzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2Fk
ZXIuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgpAQCAtNTEs
NyArNTIsNiBAQAogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUg
IlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmNwcAppbmRleCA5NDcwZWEyOWFiNTc3NDg4MGM2M2Iz
YmY0NzRlZDg5YmZmN2JiMzQ2Li5kNjc1MjEzY2Y5NDlmNzI4MTkwYzM5NzI2YzllODE2MzA3YWFk
OTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5jcHAKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChjKSAyMDEyIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw3
ICsyOSw2IEBACiAKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SW5wdXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9i
amVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNDEsMTggKzQwLDIyIEBAIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmFkaW9Ob2RlTGlzdCk7CiAK
IFJhZGlvTm9kZUxpc3Q6OlJhZGlvTm9kZUxpc3QoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNv
bnN0IEF0b21TdHJpbmcmIG5hbWUpCi0gICAgOiBDYWNoZWRMaXZlTm9kZUxpc3Qocm9vdE5vZGUs
IEludmFsaWRhdGVGb3JGb3JtQ29udHJvbHMpCisgICAgOiBDYWNoZWRMaXZlTm9kZUxpc3Qocm9v
dE5vZGUsIEludmFsaWRhdGVGb3JGb3JtQ29udHJvbHMsIGlzPEhUTUxGb3JtRWxlbWVudD4ocm9v
dE5vZGUpID8gSXNSb290ZWRBdERvY3VtZW50OjpZZXMgOiBJc1Jvb3RlZEF0RG9jdW1lbnQ6Ok5v
KQogICAgICwgbV9uYW1lKG5hbWUpCi0gICAgLCBtX2lzUm9vdGVkQXREb2N1bWVudChpczxIVE1M
Rm9ybUVsZW1lbnQ+KG93bmVyTm9kZSgpKSkKIHsKIH0KIAorUmVmPFJhZGlvTm9kZUxpc3Q+IFJh
ZGlvTm9kZUxpc3Q6OmNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0
cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSYWRpb05vZGVMaXN0KHJv
b3ROb2RlLCBuYW1lKSk7Cit9CisKIFJhZGlvTm9kZUxpc3Q6On5SYWRpb05vZGVMaXN0KCkKIHsK
ICAgICBvd25lck5vZGUoKS5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVXaXRoQXRvbU5hbWUoKnRo
aXMsIG1fbmFtZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+
IHRvUmFkaW9CdXR0b25JbnB1dEVsZW1lbnQoSFRNTEVsZW1lbnQmIGVsZW1lbnQpCitzdGF0aWMg
UmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IG5vbkVtcHR5UmFkaW9CdXR0b24oRWxlbWVudCYgZWxl
bWVudCkKIHsKICAgICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTY3LDEwICs3MCwxMCBAQCBTdHJpbmcgUmFkaW9Ob2RlTGlz
dDo6dmFsdWUoKSBjb25zdAogewogICAgIGF1dG8gbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGF1dG8g
aW5wdXRFbGVtZW50ID0gdG9SYWRpb0J1dHRvbklucHV0RWxlbWVudCgqaXRlbShpKSk7Ci0gICAg
ICAgIGlmICghaW5wdXRFbGVtZW50IHx8ICFpbnB1dEVsZW1lbnQtPmNoZWNrZWQoKSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICByZXR1cm4gaW5wdXRFbGVtZW50LT52YWx1ZSgpOwor
ICAgICAgICBpZiAoYXV0byBidXR0b24gPSBub25FbXB0eVJhZGlvQnV0dG9uKCppdGVtKGkpKSkg
eworICAgICAgICAgICAgaWYgKGJ1dHRvbi0+Y2hlY2tlZCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBidXR0b24tPnZhbHVlKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQpAQCAtNzksNDAgKzgyLDM0IEBAIHZvaWQgUmFkaW9Ob2RlTGlzdDo6c2V0VmFsdWUo
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhdXRvIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBh
dXRvIGlucHV0RWxlbWVudCA9IHRvUmFkaW9CdXR0b25JbnB1dEVsZW1lbnQoKml0ZW0oaSkpOwot
ICAgICAgICBpZiAoIWlucHV0RWxlbWVudCB8fCBpbnB1dEVsZW1lbnQtPnZhbHVlKCkgIT0gdmFs
dWUpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaW5wdXRFbGVtZW50LT5zZXRDaGVj
a2VkKHRydWUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChhdXRvIGJ1dHRvbiA9IG5v
bkVtcHR5UmFkaW9CdXR0b24oKml0ZW0oaSkpKSB7CisgICAgICAgICAgICBpZiAoYnV0dG9uLT52
YWx1ZSgpID09IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgYnV0dG9uLT5zZXRDaGVja2VkKHRy
dWUpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQog
ICAgIH0KIH0KIAotYm9vbCBSYWRpb05vZGVMaXN0OjpjaGVja0VsZW1lbnRNYXRjaGVzUmFkaW9O
b2RlTGlzdEZpbHRlcihjb25zdCBFbGVtZW50JiB0ZXN0RWxlbWVudCkgY29uc3QKK2Jvb2wgUmFk
aW9Ob2RlTGlzdDo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYgZWxlbWVudCkgY29uc3QKIHsKLSAg
ICBBU1NFUlQoaXM8SFRNTE9iamVjdEVsZW1lbnQ+KHRlc3RFbGVtZW50KSB8fCBpczxIVE1MRm9y
bUNvbnRyb2xFbGVtZW50Pih0ZXN0RWxlbWVudCkpOworICAgIGlmICghaXM8SFRNTE9iamVjdEVs
ZW1lbnQ+KGVsZW1lbnQpICYmICFpczxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PihlbGVtZW50KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVs
ZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpLmlzSW1hZ2VCdXR0
b24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKGlzPEhUTUxGb3JtRWxlbWVu
dD4ob3duZXJOb2RlKCkpKSB7Ci0gICAgICAgIFJlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IGZvcm1F
bGVtZW50OwotICAgICAgICBpZiAodGVzdEVsZW1lbnQuaGFzVGFnTmFtZShvYmplY3RUYWcpKQot
ICAgICAgICAgICAgZm9ybUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4odGVz
dEVsZW1lbnQpLmZvcm0oKTsKKyAgICAgICAgUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gZm9ybTsK
KyAgICAgICAgaWYgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSkKKyAgICAgICAgICAg
IGZvcm0gPSBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkuZm9ybSgpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBmb3JtRWxlbWVudCA9IGRvd25jYXN0PEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ+KHRlc3RFbGVtZW50KS5mb3JtKCk7Ci0gICAgICAgIGlmICghZm9ybUVsZW1l
bnQgfHwgZm9ybUVsZW1lbnQgIT0gJm93bmVyTm9kZSgpKQorICAgICAgICAgICAgZm9ybSA9IGRv
d25jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQpLmZvcm0oKTsKKyAgICAgICAg
aWYgKCFmb3JtIHx8IGZvcm0gIT0gJm93bmVyTm9kZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIHJldHVybiB0ZXN0RWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpID09
IG1fbmFtZSB8fCB0ZXN0RWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkgPT0gbV9uYW1lOworICAg
IHJldHVybiBlbGVtZW50LmdldElkQXR0cmlidXRlKCkgPT0gbV9uYW1lIHx8IGVsZW1lbnQuZ2V0
TmFtZUF0dHJpYnV0ZSgpID09IG1fbmFtZTsKIH0KIAotYm9vbCBSYWRpb05vZGVMaXN0OjplbGVt
ZW50TWF0Y2hlcyhFbGVtZW50JiB0ZXN0RWxlbWVudCkgY29uc3QKLXsKLSAgICBpZiAoIWlzPEhU
TUxPYmplY3RFbGVtZW50Pih0ZXN0RWxlbWVudCkgJiYgIWlzPEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ+KHRlc3RFbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGlzPEhU
TUxJbnB1dEVsZW1lbnQ+KHRlc3RFbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50
Pih0ZXN0RWxlbWVudCkuaXNJbWFnZUJ1dHRvbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICByZXR1cm4gY2hlY2tFbGVtZW50TWF0Y2hlc1JhZGlvTm9kZUxpc3RGaWx0ZXIodGVzdEVs
ZW1lbnQpOwotfQotCi19IC8vIG5hbXNwYWNlCi0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmgKaW5kZXggYTMwMjc2MzMwYzdmZGI2Y2NmNjJiMjE4
ZTdiMTcyZDAyM2Q4YTZhMy4uYWMxYjM1MTc5MWJiY2JhZjU0ZGVlNTZlMWUxNTE5MzEwNmUxZGM2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmgKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChjKSAyMDEyIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw0MSArMjYs
MjQgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1
ZGUgIkxpdmVOb2RlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSYWRpb05vZGVMaXN0IGZpbmFsIDogcHVibGlj
IENhY2hlZExpdmVOb2RlTGlzdDxSYWRpb05vZGVMaXN0PiB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChSYWRpb05vZGVMaXN0KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJhZGlvTm9k
ZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYg
bmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJhZGlvTm9kZUxpc3Qo
cm9vdE5vZGUsIG5hbWUpKTsKLSAgICB9Ci0KKyAgICBzdGF0aWMgUmVmPFJhZGlvTm9kZUxpc3Q+
IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSk7
CiAgICAgdmlydHVhbCB+UmFkaW9Ob2RlTGlzdCgpOwogCi0gICAgSFRNTEVsZW1lbnQqIGl0ZW0o
dW5zaWduZWQgb2Zmc2V0KSBjb25zdCBvdmVycmlkZTsKLQogICAgIFN0cmluZyB2YWx1ZSgpIGNv
bnN0OwogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBib29sIGVsZW1l
bnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzUm9vdGVkQXRE
b2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNSb290ZWRBdERvY3VtZW50OyB9
CisgICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3QgZmluYWw7CiAKIHByaXZh
dGU6CiAgICAgUmFkaW9Ob2RlTGlzdChDb250YWluZXJOb2RlJiwgY29uc3QgQXRvbVN0cmluZyYg
bmFtZSk7Ci0gICAgYm9vbCBjaGVja0VsZW1lbnRNYXRjaGVzUmFkaW9Ob2RlTGlzdEZpbHRlcihj
b25zdCBFbGVtZW50JikgY29uc3Q7CiAKICAgICBBdG9tU3RyaW5nIG1fbmFtZTsKLSAgICBib29s
IG1faXNSb290ZWRBdERvY3VtZW50OwogfTsKIAotaW5saW5lIEhUTUxFbGVtZW50KiBSYWRpb05v
ZGVMaXN0OjppdGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3QKLXsKLSAgICByZXR1cm4gZG93bmNh
c3Q8SFRNTEVsZW1lbnQ+KENhY2hlZExpdmVOb2RlTGlzdDxSYWRpb05vZGVMaXN0Pjo6aXRlbShv
ZmZzZXQpKTsKLX0KLQotfSAvLyBuYW1lcHNhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5pZGwKaW5kZXggMjM0ZDQ1NTJmNjI0
OTM0NjFmMDZmYTFkNTI2M2IzODVhNjJhNjk5MS4uZjIxNzIwODk1MzRhYmUzZWFkMTBhNDhkMTM2
MDYxZDc0YWM1ZmJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVM
aXN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuaWRsCkBAIC0y
Nyw2ICsyNyw0IEBACiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCiBdIGludGVyZmFjZSBSYWRp
b05vZGVMaXN0IDogTm9kZUxpc3QgewogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsdWU7Ci0K
LSAgICBnZXR0ZXIgSFRNTEVsZW1lbnQgKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCBmZGI4ZTMwZmZlYzli
YjA5YWNlNmIyOWVjNmEzMDFhMzkwZWVkNTgxLi4wMmVmZjQ4ZjM4OGYxODBkYmE5NGExMTgwY2U1
MWMyMjRhMjFjY2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQpAQCAtODY3LDYgKzg2Nyw4IEBAIEludFJlY3QgVGV4dEZpZWxkSW5wdXRUeXBlOjpl
bGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpIGNvbnN0CiAKIFZlY3RvcjxTdHJpbmc+
IFRleHRGaWVsZElucHV0VHlwZTo6c3VnZ2VzdGlvbnMoKQogeworICAgIC8vIEZJWE1FOiBTdWdn
ZXN0aW9ucyBhcmUgInR5cGluZyBjb21wbGV0aW9ucyIgYW5kIHNvIHNob3VsZCBwcm9iYWJseSB1
c2UgdGhlIGZpbmRQbGFpblRleHQgYWxnb3JpdGhtIHJhdGhlciB0aGFuIHRoZSBzaW1wbGlzdGlj
ICJpZ25vcmluZyBBU0NJSSBjYXNlIiBydWxlcy4KKwogICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dl
c3Rpb25zOwogICAgIFZlY3RvcjxTdHJpbmc+IG1hdGNoZXNDb250YWluaW5nVmFsdWU7CiAKQEAg
LTg3NiwxMiArODc4LDExIEBAIFZlY3RvcjxTdHJpbmc+IFRleHRGaWVsZElucHV0VHlwZTo6c3Vn
Z2VzdGlvbnMoKQogICAgICAgICByZXR1cm4gbV9jYWNoZWRTdWdnZXN0aW9ucy5zZWNvbmQ7CiAK
ICAgICBpZiAoYXV0byBkYXRhTGlzdCA9IGVsZW1lbnQoKS0+ZGF0YUxpc3QoKSkgewotICAgICAg
ICBSZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9ucygpOwotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBhdXRvKiBvcHRpb24gPSBkb3duY2FzdDxIVE1MT3B0
aW9uRWxlbWVudD4ob3B0aW9ucy0+aXRlbShpKSk7ICsraSkgewotICAgICAgICAgICAgaWYgKCFl
bGVtZW50KCktPmlzVmFsaWRWYWx1ZShvcHRpb24tPnZhbHVlKCkpKQorICAgICAgICBmb3IgKGF1
dG8mIG9wdGlvbiA6IGRhdGFMaXN0LT5zdWdnZXN0aW9ucygpKSB7CisgICAgICAgICAgICBTdHJp
bmcgdmFsdWUgPSBvcHRpb24udmFsdWUoKTsKKyAgICAgICAgICAgIGlmICghZWxlbWVudCgpLT5p
c1ZhbGlkVmFsdWUodmFsdWUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
ICAgICBTdHJpbmcgdmFsdWUgPSBzYW5pdGl6ZVZhbHVlKG9wdGlvbi0+dmFsdWUoKSk7CisgICAg
ICAgICAgICB2YWx1ZSA9IHNhbml0aXplVmFsdWUodmFsdWUpOwogICAgICAgICAgICAgaWYgKGVs
ZW1lbnRWYWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMuYXBwZW5k
KHZhbHVlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLnN0YXJ0c1dpdGhJZ25vcmluZ0FT
Q0lJQ2FzZShlbGVtZW50VmFsdWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwCmluZGV4IGU1ZGYzYzNiNzg2NmVhOWZkNDNkYWNjZjRhNDYyMmJkYjY0ODk0MjIu
LmZjZTU5MjZhYjVlZmE1ZGE1Y2Q0NDc0ZDE2ZWVjMmQ4OTI3MGViMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNs
dWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRE9NUmVjdC5oIgogI2luY2x1ZGUg
IkV2ZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRGl2
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVk
aXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGUxZTIzYTc2YTRkOTQ2Zjll
YTI3ZjYyNmEyMmIyY2M3NzhhOTRkMzEuLjQ0ODNkZjcwMDNmYjFlZDU0OTZkY2FiYjIzMDNlYWE1
NTBjN2RmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
dWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0zMiwxMCArMzIsOCBA
QAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJD
b250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50
LmgiCi0jaW5jbHVkZSAiRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkVs
ZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIk5vZGUu
aCIKICNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzAsNyArNjgsNyBAQCBFeGNl
cHRpb25PcjxWZWN0b3I8UmVmPE5vZGU+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpnZXRFbGVtZW50c0J5QwogCiAgICAgVmVjdG9yPFJlZjxOb2RlPj4gbm9kZXM7CiAKLSAg
ICBmb3IgKEVsZW1lbnQmIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoaXM8Q29udGFpbmVy
Tm9kZT4oY29udGFpbmVyKSA/IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCpjb250YWluZXIpIDog
ZG9jdW1lbnQpKSB7CisgICAgZm9yIChFbGVtZW50JiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5
cGU8RWxlbWVudD4oaXM8Q29udGFpbmVyTm9kZT4oY29udGFpbmVyKSA/IGRvd25jYXN0PENvbnRh
aW5lck5vZGU+KCpjb250YWluZXIpIDogZG9jdW1lbnQpKSB7CiAgICAgICAgIGlmIChBWENvcmVP
YmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShlbGVtZW50KSkgewog
ICAgICAgICAgICAgaWYgKGF4T2JqZWN0LT5jb21wdXRlZFJvbGVTdHJpbmcoKSA9PSByb2xlKQog
ICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggMjkz
MGI0NWY4ZjIwNzUxZTg1NmNkYTNlMDUxODlhYTQ0NGUxODU1MS4uYWNlNWY5YWM1M2NiZTI2ZmQz
YzRkOWQ0ZjIyNDk0ZmQ4MDY1YTU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwOSwyMCArNTA5LDE4IEBA
IHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgaW50IG5vCiAgICAgICAgIC8vIEluaGVyaXRlZCBzdHlsZXMuCiAg
ICAgICAgIGlmICghaW5jbHVkZUluaGVyaXRlZCB8fCAqaW5jbHVkZUluaGVyaXRlZCkgewogICAg
ICAgICAgICAgYXV0byBlbnRyaWVzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIEVsZW1l
bnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7Ci0gICAgICAgICAg
ICB3aGlsZSAocGFyZW50RWxlbWVudCkgewotICAgICAgICAgICAgICAgIGF1dG8mIHBhcmVudFN0
eWxlUmVzb2x2ZXIgPSBwYXJlbnRFbGVtZW50LT5zdHlsZVJlc29sdmVyKCk7Ci0gICAgICAgICAg
ICAgICAgYXV0byBwYXJlbnRNYXRjaGVkUnVsZXMgPSBwYXJlbnRTdHlsZVJlc29sdmVyLnN0eWxl
UnVsZXNGb3JFbGVtZW50KHBhcmVudEVsZW1lbnQsIFN0eWxlOjpSZXNvbHZlcjo6QWxsQ1NTUnVs
ZXMpOworICAgICAgICAgICAgZm9yIChhdXRvJiBhbmNlc3RvciA6IGFuY2VzdG9yc09mVHlwZTxF
bGVtZW50PigqZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBwYXJlbnRTdHlsZVJl
c29sdmVyID0gYW5jZXN0b3Iuc3R5bGVSZXNvbHZlcigpOworICAgICAgICAgICAgICAgIGF1dG8g
cGFyZW50TWF0Y2hlZFJ1bGVzID0gcGFyZW50U3R5bGVSZXNvbHZlci5zdHlsZVJ1bGVzRm9yRWxl
bWVudCgmYW5jZXN0b3IsIFN0eWxlOjpSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOwogICAgICAgICAg
ICAgICAgIGF1dG8gZW50cnkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkluaGVyaXRlZFN0
eWxlRW50cnk6OmNyZWF0ZSgpCi0gICAgICAgICAgICAgICAgICAgIC5zZXRNYXRjaGVkQ1NTUnVs
ZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChwYXJlbnRNYXRjaGVkUnVsZXMsIHN0eWxl
UmVzb2x2ZXIsICpwYXJlbnRFbGVtZW50LCBQc2V1ZG9JZDo6Tm9uZSkpCisgICAgICAgICAgICAg
ICAgICAgIC5zZXRNYXRjaGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChw
YXJlbnRNYXRjaGVkUnVsZXMsIHN0eWxlUmVzb2x2ZXIsIGFuY2VzdG9yLCBQc2V1ZG9JZDo6Tm9u
ZSkpCiAgICAgICAgICAgICAgICAgICAgIC5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgaWYg
KGlzPFN0eWxlZEVsZW1lbnQ+KCpwYXJlbnRFbGVtZW50KSAmJiBkb3duY2FzdDxTdHlsZWRFbGVt
ZW50PigqcGFyZW50RWxlbWVudCkuY3Nzb21TdHlsZSgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGF1dG8mIHN0eWxlU2hlZXQgPSBhc0luc3BlY3RvclN0eWxlU2hlZXQoZG93bmNh
c3Q8U3R5bGVkRWxlbWVudD4oKnBhcmVudEVsZW1lbnQpKTsKKyAgICAgICAgICAgICAgICBpZiAo
aXM8U3R5bGVkRWxlbWVudD4oYW5jZXN0b3IpICYmIGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KGFu
Y2VzdG9yKS5jc3NvbVN0eWxlKCkubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byYgc3R5bGVTaGVldCA9IGFzSW5zcGVjdG9yU3R5bGVTaGVldChkb3duY2FzdDxTdHlsZWRFbGVt
ZW50PihhbmNlc3RvcikpOwogICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c2V0SW5saW5lU3R5
bGUoc3R5bGVTaGVldC5idWlsZE9iamVjdEZvclN0eWxlKHN0eWxlU2hlZXQuc3R5bGVGb3JJZChJ
bnNwZWN0b3JDU1NJZChzdHlsZVNoZWV0LmlkKCksIDApKSkpOwogICAgICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgICAgIGVudHJpZXMtPmFkZEl0ZW0oV1RGTW92ZShlbnRyeSkpOwotICAg
ICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQgPSBwYXJlbnRFbGVtZW50LT5wYXJlbnRFbGVtZW50
KCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGluaGVyaXRlZEVudHJpZXMgPSBXVEZN
b3ZlKGVudHJpZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAwZjQ2YTMwMzNhZWY0MDA3ZjZlYjgzN2E2MTA1
ZjA1YTBjNTkwNjdmLi5kMmNhNWJiZTEwOWFhYWQxODJiYWUxODVjNGQ1MmQ4YWFlY2RhODRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TUFnZW50LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAw
OSBKb3NlcGggUGVjb3Jhcm8KICAqCkBAIC0xMTE0LDcgKzExMTQsNyBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjppbnNwZWN0KE5vZGUqIGluc3BlY3RlZE5vZGUpCiAgICAgUmVmUHRyPE5vZGU+
IG5vZGUgPSBpbnNwZWN0ZWROb2RlOwogICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoaWdub3JlZCwg
ZmFsc2UsIG51bGxwdHIsIGZhbHNlKTsKIAotICAgIGlmIChub2RlLT5ub2RlVHlwZSgpICE9IE5v
ZGU6OkVMRU1FTlRfTk9ERSAmJiBub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5UX05P
REUpCisgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgIW5vZGUtPmlzRG9jdW1lbnRO
b2RlKCkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgbV9ub2RlVG9G
b2N1cyA9IG5vZGU7CiAKQEAgLTExNTksNyArMTE1OSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwg
dW5zCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRNb3VzZWRPdmVyTm9kZSgpCiB7
CiAgICAgTm9kZSogbm9kZSA9IG1fbW91c2VkT3Zlck5vZGUuZ2V0KCk7Ci0gICAgd2hpbGUgKG5v
ZGUgJiYgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpURVhUX05PREUpCisgICAgaWYgKG5vZGUg
JiYgbm9kZS0+aXNUZXh0Tm9kZSgpKQogICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgp
OwogICAgIGlmIChub2RlICYmIG1faW5zcGVjdE1vZGVIaWdobGlnaHRDb25maWcpCiAgICAgICAg
IG1fb3ZlcmxheS0+aGlnaGxpZ2h0Tm9kZShub2RlLCAqbV9pbnNwZWN0TW9kZUhpZ2hsaWdodENv
bmZpZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXgg
M2Y0Njk5Y2Y4MzI5OGYwNGUyNzRhZTAwZWY5NWE1NTQ3NWE2NWYzZC4uMDZmNDZkNGE1NjlkMGZh
MGRjMTdiZDY1OWI2NTg4MTU1NzE2YTZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAjaW5jbHVkZSAiQ2FjaGVkRm9u
dENsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRm9udERl
c2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKLSNpbmNsdWRl
ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJXT0ZGRmlsZUZv
cm1hdC5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IDAxMmQyZjMxZmUxY2U5OWE3N2U4NTVm
YzZlY2VmYjg2ZjA3NmRlYjYuLmM4ZjliYTUzMDA1ZjhkN2JjOTMwZDA5NmQ1ZjIxM2M5MzgyNWE5
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKIAogI2lmIEVOQUJMRShTVkdfRk9OVFMpCiAKKyNpbmNsdWRlICJF
bGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNpbmNsdWRl
ICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKQEAgLTM3LDcg
KzM4LDYgQEAKICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCi0jaW5jbHVk
ZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiU1ZHVG9PVEZG
b250Q29udmVyc2lvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGRhZDAwMmIxOTY4YWQwYjQyNmZiMTJiN2E2NWEwZjM3
Mzg2YmU4YmIuLjA1OWY0NWQ2MjlmNTg4NjViNDA3Y2NiZTFhNzJhZDJlZGY1M2Q2YjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTI2MCw2ICsxMjYwLDE1IEBA
IHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmJlZ2luRHJhZyhEcmFnSXRlbSBkcmFnSXRlbSwgRnJhbWUm
IGZyYW1lLCBjb25zdCBJbnRQb2ludCYKICAgICBjbGllbnQoKS5iZWdpbkRyYWcoV1RGTW92ZShk
cmFnSXRlbSksIGZyYW1lLCBtb3VzZURvd25Qb2ludEluUm9vdFZpZXdDb29yZGluYXRlcywgbW91
c2VEcmFnZ2VkUG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMsIGRhdGFUcmFuc2ZlciwgZHJhZ1Nv
dXJjZUFjdGlvbik7CiB9CiAKK3N0YXRpYyBSZWZQdHI8RWxlbWVudD4gY29udGFpbmluZ0xpbmtF
bGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgZm9yIChhdXRvJiBjdXJyZW50RWxlbWVu
dCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGN1cnJl
bnRFbGVtZW50LmlzTGluaygpKQorICAgICAgICAgICAgcmV0dXJuICZjdXJyZW50RWxlbWVudDsK
KyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRv
U3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBkcmFnTG9jLCBjb25z
dCBJbnRQb2ludCYgZXZlbnRQb3MsIEZyYW1lJiBmcmFtZSwgY29uc3QgRHJhZ1N0YXRlJiBzdGF0
ZSwgUHJvbWlzZWRBdHRhY2htZW50SW5mbyYmIHByb21pc2VkQXR0YWNobWVudEluZm8pCiB7CiAg
ICAgbV9kaWRJbml0aWF0ZURyYWcgPSB0cnVlOwpAQCAtMTI5NiwxOCArMTMwNSw3IEBAIHZvaWQg
RHJhZ0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBv
aW50JiBkcmFnTG9jLCBjb25zCiAgICAgICAgICAgICBpdGVtLmRyYWdQcmV2aWV3RnJhbWVJblJv
b3RWaWV3Q29vcmRpbmF0ZXMgPSBlbGVtZW50LT5ib3VuZHNJblJvb3RWaWV3U3BhY2UoKTsKICAg
ICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxFbGVtZW50PiBsaW5rOwotICAgICAgICBpZiAoZWxl
bWVudC0+aXNMaW5rKCkpCi0gICAgICAgICAgICBsaW5rID0gZWxlbWVudDsKLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGN1cnJlbnRFbGVtZW50IDogZWxlbWVudExpbmVh
Z2UoZWxlbWVudC5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQu
aXNMaW5rKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbGluayA9ICZjdXJyZW50RWxlbWVudDsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChsaW5rKSB7CisgICAgICAgIGlmIChhdXRvIGxp
bmsgPSBjb250YWluaW5nTGlua0VsZW1lbnQoKmVsZW1lbnQpKSB7CiAgICAgICAgICAgICBhdXRv
IHRpdGxlQXR0cmlidXRlID0gbGluay0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihI
VE1MTmFtZXM6OnRpdGxlQXR0cik7CiAgICAgICAgICAgICBpdGVtLnRpdGxlID0gdGl0bGVBdHRy
aWJ1dGUuaXNFbXB0eSgpID8gbGluay0+aW5uZXJUZXh0KCkgOiB0aXRsZUF0dHJpYnV0ZS5zdHJp
bmcoKTsKICAgICAgICAgICAgIGl0ZW0udXJsID0gZnJhbWUuZG9jdW1lbnQoKS0+Y29tcGxldGVV
Ukwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGxpbmstPmdldEF0dHJpYnV0ZShI
VE1MTmFtZXM6OmhyZWZBdHRyKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKaW5kZXggZDI2Y2VmZTRmMjAyMzZj
N2M0M2FjNWUyNWVlNzE2ZWRkNTQwZTEwZi4uZjgwYTE4NTQ4OThjYzg0ZjVkMGUwZjY3MGJmYWYy
NTMwNjBhZjE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhp
c1Njcm9sbFNuYXBPZmZzZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAi
QXhpc1Njcm9sbFNuYXBPZmZzZXRzLmgiCiAKICNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRv
ci5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQu
aCIKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LmgKaW5kZXgg
N2IzMmIzM2QzMTVhYjk1ZDJhMGJlOThkM2UyZjBhNTBiYTBiOWVkMy4uNWVkODAyNWJlNzkwMjky
N2Y1ZDY1M2I5NzY5ZTExM2YyY2FlYzhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQuaApAQCAtMjcsMTEgKzI3LDEyIEBACiAK
ICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKIAotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBJbnRSZWN0OworCiBjbGFzcyBEYXRhTGlzdFN1Z2dlc3Rp
b25zQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xp
ZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAK
aW5kZXggNjA5N2I0YzZhM2U5ZWJkMzE5MjkyNmZlMzkzOWI4YmI1ZDdmZWVjNS4uMjY3NDMzNTJl
NDU3MWMxZTc0MGJmZGI2M2YwY2I2NDBiYzdmNGM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
QEAgLTU0LDcgKzU0LDYgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQp
Ci0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRGF0YUxpc3RFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGFy
c2VySWRpb21zLmgiCkBAIC0xMTE3LDEyICsxMTE2LDkgQEAgdm9pZCBSZW5kZXJUaGVtZTo6cGFp
bnRTbGlkZXJUaWNrcyhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFp
bnQKICAgICAgICAgdGlja1JlZ2lvblNpZGVNYXJnaW4gPSB0cmFja0JvdW5kcy55KCkgKyAodGh1
bWJTaXplLndpZHRoKCkgLSB0aWNrU2l6ZS53aWR0aCgpICogem9vbUZhY3RvcikgLyAyLjA7CiAg
ICAgICAgIHRpY2tSZWdpb25XaWR0aCA9IHRyYWNrQm91bmRzLmhlaWdodCgpIC0gdGh1bWJTaXpl
LndpZHRoKCk7CiAgICAgfQotICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gb3B0aW9ucyA9IGRhdGFM
aXN0Lm9wdGlvbnMoKTsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
cGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29s
b3Ioby5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9w
ZXJ0eUNvbG9yKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgTm9kZSogbm9kZSA9IG9wdGlv
bnMtPml0ZW0oaSk7IGkrKykgewotICAgICAgICBBU1NFUlQoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+
KCpub2RlKSk7Ci0gICAgICAgIEhUTUxPcHRpb25FbGVtZW50JiBvcHRpb25FbGVtZW50ID0gZG93
bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpub2RlKTsKKyAgICBmb3IgKGF1dG8mIG9wdGlvbkVs
ZW1lbnQgOiBkYXRhTGlzdC5zdWdnZXN0aW9ucygpKSB7CiAgICAgICAgIFN0cmluZyB2YWx1ZSA9
IG9wdGlvbkVsZW1lbnQudmFsdWUoKTsKICAgICAgICAgaWYgKCFpbnB1dC5pc1ZhbGlkVmFsdWUo
dmFsdWUpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAppbmRleCA4OGNhM2U1MDM3MzczMDE1YzUy
MDMwZjA1NDhjMGZiMzMyZTEwNzZkLi5mY2FmMDBjNTBiYmY2MDNlZjNhM2E5ZmQ4MzRkM2M5OWUz
MzNiOTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
clN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
U3VwcG9ydC5jcHAKQEAgLTYsNiArNiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBT
Y2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxOCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI2LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdXBwb3J0LmgiCiAKKyNpbmNsdWRlICJFbGVtZW50QW5j
ZXN0b3JJdGVyYXRvci5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUg
IlJlbmRlckNoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCkBAIC00
ODEsNiArNDgzLDcgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0OjpzdHlsZUNoYW5nZWQoUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlKgogfQogCiAjaWYgRU5BQkxFKENT
U19DT01QT1NJVElORykKKwogYm9vbCBTVkdSZW5kZXJTdXBwb3J0Ojppc29sYXRlc0JsZW5kaW5n
KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICByZXR1cm4gc3R5bGUuc3ZnU3R5bGUo
KS5pc29sYXRlc0JsZW5kaW5nKCkgfHwgc3R5bGUuaGFzRmlsdGVyKCkgfHwgc3R5bGUuaGFzQmxl
bmRNb2RlKCkgfHwgc3R5bGUub3BhY2l0eSgpIDwgMS4wZjsKQEAgLTQ5MSwyMCArNDk0LDE2IEBA
IHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6dXBkYXRlTWFza2VkQW5jZXN0b3JTaG91bGRJc29sYXRl
QmxlbmRpbmcoY29uc3QgUmVuZGVyRWxlCiAgICAgQVNTRVJUKHJlbmRlcmVyLmVsZW1lbnQoKSk7
CiAgICAgQVNTRVJUKHJlbmRlcmVyLmVsZW1lbnQoKS0+aXNTVkdFbGVtZW50KCkpOwogCi0gICAg
Ym9vbCBtYXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyA9IHJlbmRlcmVyLnN0eWxl
KCkuaGFzQmxlbmRNb2RlKCk7Ci0gICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IHJlbmRlcmVyLmVs
ZW1lbnQoKS0+cGFyZW50RWxlbWVudCgpOyBhbmNlc3RvciAmJiBhbmNlc3Rvci0+aXNTVkdFbGVt
ZW50KCk7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICBp
ZiAoIWRvd25jYXN0PFNWR0VsZW1lbnQ+KCphbmNlc3RvcikuaXNTVkdHcmFwaGljc0VsZW1lbnQo
KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGNvbnN0IGF1dG8qIHN0eWxlID0g
YW5jZXN0b3ItPmNvbXB1dGVkU3R5bGUoKTsKKyAgICBmb3IgKGF1dG8mIGFuY2VzdG9yIDogYW5j
ZXN0b3JzT2ZUeXBlPFNWR0dyYXBoaWNzRWxlbWVudD4oKnJlbmRlcmVyLmVsZW1lbnQoKSkpIHsK
KyAgICAgICAgYXV0byogc3R5bGUgPSBhbmNlc3Rvci5jb21wdXRlZFN0eWxlKCk7CiAgICAgICAg
IGlmICghc3R5bGUgfHwgIWlzb2xhdGVzQmxlbmRpbmcoKnN0eWxlKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIGlmIChhbmNlc3Rvci0+Y29tcHV0ZWRTdHlsZSgpLT5zdmdTdHls
ZSgpLmhhc01hc2tlcigpKQotICAgICAgICAgICAgZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50
PigqYW5jZXN0b3IpLnNldFNob3VsZElzb2xhdGVCbGVuZGluZyhtYXNrZWRBbmNlc3RvclNob3Vs
ZElzb2xhdGVCbGVuZGluZyk7Ci0KKyAgICAgICAgaWYgKHN0eWxlLT5zdmdTdHlsZSgpLmhhc01h
c2tlcigpKQorICAgICAgICAgICAgYW5jZXN0b3Iuc2V0U2hvdWxkSXNvbGF0ZUJsZW5kaW5nKHJl
bmRlcmVyLnN0eWxlKCkuaGFzQmxlbmRNb2RlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
fQorCiAjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJ
bnZhbGlkYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNw
cAppbmRleCA1ZTk5ZmJiZDJmZTAzODRiNzkwYzAwMzBjMTU2YWY2Y2Y1Nzg0MzgyLi4yMjM0ZmI1
YWJmYWQ2ZGFmOWNkMzQ0Mzc5NDY3MDBkODllNGYzMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZUludmFsaWRhdG9yLmNwcApAQCAtMjc1LDEyICsyNzUsMTAgQEAgdm9pZCBJbnZhbGlk
YXRvcjo6aW52YWxpZGF0ZVN0eWxlV2l0aE1hdGNoRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBN
YXRjaEVsZW1lbnQKICAgICAgICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudC5uZXh0RWxl
bWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2li
bGluZygpKQogICAgICAgICAgICAgaW52YWxpZGF0ZUlmTmVlZGVkKCpzaWJsaW5nLCBudWxscHRy
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNYXRjaEVsZW1lbnQ6OkFueVNpYmxpbmc6IHsK
LSAgICAgICAgYXV0byBwYXJlbnRDaGlsZHJlbiA9IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KCpl
bGVtZW50LnBhcmVudE5vZGUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYgcGFyZW50Q2hpbGQgOiBw
YXJlbnRDaGlsZHJlbikKKyAgICBjYXNlIE1hdGNoRWxlbWVudDo6QW55U2libGluZzoKKyAgICAg
ICAgZm9yIChhdXRvJiBwYXJlbnRDaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KCplbGVt
ZW50LnBhcmVudE5vZGUoKSkpCiAgICAgICAgICAgICBpbnZhbGlkYXRlSWZOZWVkZWQocGFyZW50
Q2hpbGQsIG51bGxwdHIpOwogICAgICAgICBicmVhazsKLSAgICB9CiAgICAgY2FzZSBNYXRjaEVs
ZW1lbnQ6OlBhcmVudFNpYmxpbmc6CiAgICAgICAgIGZvciAoYXV0byogc2libGluZyA9IGVsZW1l
bnQubmV4dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0
RWxlbWVudFNpYmxpbmcoKSkgewogICAgICAgICAgICAgYXV0byBzaWJsaW5nQ2hpbGRyZW4gPSBj
aGlsZHJlbk9mVHlwZTxFbGVtZW50Pigqc2libGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
UmVzb2x2ZXIuY3BwCmluZGV4IGYzZjM2MjE4M2Q1MDYxNzRhNDY2NjQ2MWM3MTdiZTc5YjNlNjFm
MTQuLjY1MWY4ZjFlMmQ3ODkyMTk5MDY1NmFmYTRmZDllNjllZGNhYzNjMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xODMsOCArMTgzLDcgQEAgaW5saW5lIHZv
aWQgUmVzb2x2ZXI6OlN0YXRlOjpzZXRQYXJlbnRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHBhcmVudFMKIAogc3RhdGljIGlubGluZSBib29sIGlzQXRTaGFkb3dCb3VuZGFyeShj
b25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIGF1dG8qIHBhcmVudE5vZGUgPSBlbGVtZW50
LnBhcmVudE5vZGUoKTsKLSAgICByZXR1cm4gcGFyZW50Tm9kZSAmJiBwYXJlbnROb2RlLT5pc1No
YWRvd1Jvb3QoKTsKKyAgICByZXR1cm4gaXM8U2hhZG93Um9vdD4oZWxlbWVudC5wYXJlbnROb2Rl
KCkpOwogfQogCiBCdWlsZGVyQ29udGV4dCBSZXNvbHZlcjo6YnVpbGRlckNvbnRleHQoY29uc3Qg
U3RhdGUmIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKaW5kZXggOTlkYjM1OWIy
MDQ2MTg0MGZjY2ExNTg4ZWUxMGY1MWVlZjE1NWY4Ni4uNmI0YjYyNTY5MmQ3YWNhNjJmMTc5YTlh
MTQzMWI5YjcyZmVlYmVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCkBAIC0xMDIs
OSArMTAyLDggQEAgdm9pZCBTVkdBRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0FF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICBpZiAocGFyZW50Tm9kZSgpICYmIHBhcmVudE5v
ZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnBhcmVudE5vZGUo
KSkuaXNUZXh0Q29udGVudCgpKQorICAgIGlmIChpczxTVkdFbGVtZW50PihwYXJlbnROb2RlKCkp
ICYmIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpwYXJlbnROb2RlKCkpLmlzVGV4dENvbnRlbnQoKSkK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0lubGluZT4oKnRoaXMsIFdU
Rk1vdmUoc3R5bGUpKTsKLQogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdUcmFu
c2Zvcm1hYmxlQ29udGFpbmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggMmZmY2JhYzUyMTFjOGEwNWFlNDYwZDMwY2EwNDI2ZTQ2
N2NlYTE4My4uMjIyNDFkYWQ0MTdmYzdlMjY4YmQ2MDdlYTUzMDdiYjJhOTJiNDUyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBBbHAg
VG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA5IENhbWVyb24gTWND
b3JtYWNrIDxjYW1AbWNjLmlkLmF1PgogICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxl
Y3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC05MTYsMTggKzkxNiwxMCBAQCB2b2lk
IFNWR0VsZW1lbnQ6OnVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKGJvb2wgaGFzUmVs
YXRpdmVMZW5ndGhzLCBTVkdFbAogICAgICAgICBtX2VsZW1lbnRzV2l0aFJlbGF0aXZlTGVuZ3Ro
cy5yZW1vdmUoZWxlbWVudCk7CiAgICAgfQogCi0gICAgaWYgKCFlbGVtZW50LT5pc1NWR0dyYXBo
aWNzRWxlbWVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGaW5kIGZpcnN0IHN0eWxl
ZCBwYXJlbnQgbm9kZSwgYW5kIG5vdGlmeSBpdCB0aGF0IHdlJ3ZlIGNoYW5nZWQgb3VyIHJlbGF0
aXZlIGxlbmd0aCBzdGF0ZS4KLSAgICBhdXRvIG5vZGUgPSBtYWtlUmVmUHRyKHBhcmVudE5vZGUo
KSk7Ci0gICAgd2hpbGUgKG5vZGUpIHsKLSAgICAgICAgaWYgKCFub2RlLT5pc1NWR0VsZW1lbnQo
KSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIC8vIFJlZ2lzdGVyIHVzIGluIHRoZSBw
YXJlbnQgZWxlbWVudCBtYXAuCi0gICAgICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpub2RlKS51
cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihoYXNSZWxhdGl2ZUxlbmd0aHMsIHRoaXMp
OwotICAgICAgICBicmVhazsKKyAgICBpZiAoZWxlbWVudC0+aXNTVkdHcmFwaGljc0VsZW1lbnQo
KSkgeworICAgICAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50Tm9kZSgpKTsKKyAg
ICAgICAgaWYgKGlzPFNWR0VsZW1lbnQ+KHBhcmVudCkpCisgICAgICAgICAgICBkb3duY2FzdDxT
VkdFbGVtZW50PigqcGFyZW50KS51cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihoYXNS
ZWxhdGl2ZUxlbmd0aHMsIHRoaXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgK
aW5kZXggOThmY2ZmYmNhNGQ3MTI2N2U3NDVmZWRiOWIzMGU4MGQwYzliNjJjZi4uNjM5MThhYTg4
YmYxOTRhMjllNjQzMGFiMWU5OTYwYjg4Y2JlZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5o
CkBAIC0xNDUsNiArMTQ1LDggQEAgcHVibGljOgogICAgIFN0cmluZyBjbGFzc05hbWUoKSBjb25z
dCB7IHJldHVybiBtX2NsYXNzTmFtZS0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBTVkdBbmltYXRl
ZFN0cmluZyYgY2xhc3NOYW1lQW5pbWF0ZWQoKSB7IHJldHVybiBtX2NsYXNzTmFtZTsgfQogCisg
ICAgY29uc3QgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBQc2V1ZG9JZDo6
Tm9uZSkgZmluYWw7CisKIHByb3RlY3RlZDoKICAgICBTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgflNWR0VsZW1lbnQoKTsKQEAgLTE3Myw4
ICsxNzUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB3aWxsUmVjYWxjU3R5bGUoU3R5bGU6OkNo
YW5nZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUqIGNvbXB1
dGVkU3R5bGUoUHNldWRvSWQgPSBQc2V1ZG9JZDo6Tm9uZSkgZmluYWw7Ci0KICAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJUYXJnZXQoKSB7IH0KIAogICAgIHZvaWQgYnVpbGRQZW5kaW5nUmVzb3VyY2Vz
SWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlci5jcHAKaW5kZXggNzdkOTRhZmU4NWViYTE2NDI2YTQxOTdkN2Y5MDU2OGMzYzM2ZDBhZC4u
M2Y3MjMxMzFhMjI2MjIzYWMwZGY2YjUwYzJkOTZhMDJlMmE3NzcwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTI3NCwyMiArMjc0
LDI0IEBAIGJvb2wgWE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChjb25z
dCBTdHJpbmcmIGNodW5rLCBEb2N1bWVudEZyYWdtCiAKICAgICBIYXNoTWFwPEF0b21TdHJpbmcs
IEF0b21TdHJpbmc+IHByZWZpeFRvTmFtZXNwYWNlTWFwOwogICAgIEF0b21TdHJpbmcgZGVmYXVs
dE5hbWVzcGFjZVVSSTsKLSAgICBib29sIHN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVS
SSA9IGZhbHNlOwotICAgIAotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnRMaW5lYWdl
KGNvbnRleHRFbGVtZW50KSkgewotICAgICAgICBpZiAoaXM8U1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQ+KGVsZW1lbnQpKQotICAgICAgICAgICAgc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFtZXNwYWNl
VVJJID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBpZiAoIXN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVz
cGFjZVVSSSkKLSAgICAgICAgICAgIGRlZmF1bHROYW1lc3BhY2VVUkkgPSBlbGVtZW50Lm5hbWVz
cGFjZVVSSSgpOwotCi0gICAgICAgIGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGVzKCkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmli
dXRlIDogZWxlbWVudC5hdHRyaWJ1dGVzSXRlcmF0b3IoKSkgewotICAgICAgICAgICAgaWYgKGF0
dHJpYnV0ZS5wcmVmaXgoKSA9PSB4bWxuc0F0b20oKSkKLSAgICAgICAgICAgICAgICBwcmVmaXhU
b05hbWVzcGFjZU1hcC5zZXQoYXR0cmlidXRlLmxvY2FsTmFtZSgpLCBhdHRyaWJ1dGUudmFsdWUo
KSk7Ci0gICAgICAgICAgICBlbHNlIGlmICghc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFtZXNwYWNl
VVJJICYmIGF0dHJpYnV0ZS5wcmVmaXgoKSA9PSB4bWxuc0F0b20oKSkKLSAgICAgICAgICAgICAg
ICBkZWZhdWx0TmFtZXNwYWNlVVJJID0gYXR0cmlidXRlLnZhbHVlKCk7CisgICAgaWYgKGNvbnRl
eHRFbGVtZW50KSB7CisgICAgICAgIGJvb2wgc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFtZXNwYWNl
VVJJID0gZmFsc2U7CisKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbGluZWFnZU9mVHlw
ZTxFbGVtZW50PigqY29udGV4dEVsZW1lbnQpKSB7CisgICAgICAgICAgICBpZiAoaXM8U1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICAgICAgICAgIHN0b3BMb29raW5n
Rm9yRGVmYXVsdE5hbWVzcGFjZVVSSSA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmICghc3Rv
cExvb2tpbmdGb3JEZWZhdWx0TmFtZXNwYWNlVVJJKQorICAgICAgICAgICAgICAgIGRlZmF1bHRO
YW1lc3BhY2VVUkkgPSBlbGVtZW50Lm5hbWVzcGFjZVVSSSgpOworCisgICAgICAgICAgICBpZiAo
IWVsZW1lbnQuaGFzQXR0cmlidXRlcygpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogZWxlbWVudC5hdHRy
aWJ1dGVzSXRlcmF0b3IoKSkgeworICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUucHJlZml4
KCkgPT0geG1sbnNBdG9tKCkpCisgICAgICAgICAgICAgICAgICAgIHByZWZpeFRvTmFtZXNwYWNl
TWFwLnNldChhdHRyaWJ1dGUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZS52YWx1ZSgpKTsKKyAgICAg
ICAgICAgICAgICBlbHNlIGlmICghc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFtZXNwYWNlVVJJICYm
IGF0dHJpYnV0ZS5wcmVmaXgoKSA9PSB4bWxuc0F0b20oKSkKKyAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdE5hbWVzcGFjZVVSSSA9IGF0dHJpYnV0ZS52YWx1ZSgpOworICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4
IDNmNWI2MTgxZTA2ZTBhODQ2ODhiZGE5MTZmMTBkODdhNjFkMTRiZTcuLjZiMjc3M2VjOTczNTE4
YTAxZTE0NTU0MDUyNzI1ZTU1OTQwNmJjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHkuY3BwCkBAIC01NTksMTIgKzU1OSwxMSBAQCBzdGF0aWMgV2ViQ29yZTo6RWxlbWVudCogY29u
dGFpbmVyRWxlbWVudEZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkKICAgICAv
LyDCpzEzLiBFbGVtZW50IFN0YXRlLgogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJk
cml2ZXIvd2ViZHJpdmVyLXNwZWMuaHRtbCNkZm4tY29udGFpbmVyLgogICAgIGlmIChpczxXZWJD
b3JlOjpIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkpIHsKLSAgICAgICAgYXV0byYgb3B0aW9u
RWxlbWVudCA9IGRvd25jYXN0PFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KTsK
ICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICAgICAgaWYgKGF1dG8qIHBhcmVudEVs
ZW1lbnQgPSBvcHRpb25FbGVtZW50Lm93bmVyRGF0YUxpc3RFbGVtZW50KCkpCisgICAgICAgIGlm
IChhdXRvKiBwYXJlbnRFbGVtZW50ID0gV2ViQ29yZTo6YW5jZXN0b3JzT2ZUeXBlPFdlYkNvcmU6
OkhUTUxEYXRhTGlzdEVsZW1lbnQ+KGVsZW1lbnQpLmZpcnN0KCkpCiAgICAgICAgICAgICByZXR1
cm4gcGFyZW50RWxlbWVudDsKICNlbmRpZgotICAgICAgICBpZiAoYXV0byogcGFyZW50RWxlbWVu
dCA9IG9wdGlvbkVsZW1lbnQub3duZXJTZWxlY3RFbGVtZW50KCkpCisgICAgICAgIGlmIChhdXRv
KiBwYXJlbnRFbGVtZW50ID0gZG93bmNhc3Q8V2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ+KGVs
ZW1lbnQpLm93bmVyU2VsZWN0RWxlbWVudCgpKQogICAgICAgICAgICAgcmV0dXJuIHBhcmVudEVs
ZW1lbnQ7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAK
aW5kZXggZjUxOTQxZTZiNGVjMTIxOWQyYmJkYTBmYTk5NTdkYzUzODI3Yzc4Yi4uZDBjZmU5ZDE3
M2FkOTc4YjU4NjZkZTVmNmJmMzQ1NDI5NzgyNmQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNw
cApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9y
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9FbGVt
ZW50SXRlcmF0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GcmFtZVZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Z1bGxzY3JlZW5NYW5hZ2VyLmg+
CkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdz
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9UeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaD4K
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAjaW5jbHVkZSAiUGxheWJhY2tTZXNzaW9uTWFuYWdl
ci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA4ZTRjOTM3NWQ3YjhjYzEwZmZhMDA4MDNk
NDgyMTczYmU1YTM1NThhLi41M2RlMTkxNWI0NzNhZjMzZmFkYjA1NTA5OTA3ZWFiMGMzNWYwMjY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzk1LDcgKzc5NSw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxDb2xvckNob29zZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKENv
bG9yQ2hvb3NlckNsCiAKIHN0ZDo6dW5pcXVlX3B0cjxEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+
IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKERhdGFMaXN0
U3VnZ2VzdGlvbnNDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJE
YXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+KCZtX3BhZ2UsICZjbGllbnQpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4obV9wYWdlLCBjbGllbnQpOwog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5jcHAK
aW5kZXggYWViODczN2FkZDQ3M2MwM2FiNmUxMTc1MmZmMGMyMjRjOGRlMDgxOC4uYjIwYjBhY2Y4
OGE0OWZmNTBlMzU0MTU2ZjQyMWI4NmEwNjExZWYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNDcgKzM1LDQ1IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6V2Vi
RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKFdlYlBhZ2UqIHBhZ2UsIERhdGFMaXN0U3VnZ2VzdGlv
bnNDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudChjbGll
bnQpCitXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBp
Y2tlcihXZWJQYWdlJiBwYWdlLCBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50JiBj
bGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3BhZ2UocGFnZSkKIHsKIH0K
IAotV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjp+V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyKCkgeyB9Ci0KLXZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpoYW5kbGVLZXlk
b3duV2l0aElkZW50aWZpZXIoY29uc3QgV1RGOjpTdHJpbmcmIGtleSkKK3ZvaWQgV2ViRGF0YUxp
c3RTdWdnZXN0aW9uUGlja2VyOjpoYW5kbGVLZXlkb3duV2l0aElkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiBrZXkpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVLZXlkb3duSW5E
YXRhTGlzdChrZXkpLCBtX3BhZ2UtPmlkZW50aWZpZXIoKSk7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpIYW5kbGVLZXlkb3duSW5EYXRhTGlzdChrZXkpLCBtX3BhZ2UuaWRlbnRpZmllcigp
KTsKIH0KIAotdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpZFNlbGVjdE9wdGlv
bihjb25zdCBXVEY6OlN0cmluZyYgc2VsZWN0ZWRPcHRpb24pCit2b2lkIFdlYkRhdGFMaXN0U3Vn
Z2VzdGlvblBpY2tlcjo6ZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRPcHRp
b24pCiB7Ci0gICAgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LT5kaWRTZWxlY3REYXRhTGlz
dE9wdGlvbihzZWxlY3RlZE9wdGlvbik7CisgICAgbV9jbGllbnQuZGlkU2VsZWN0RGF0YUxpc3RP
cHRpb24oc2VsZWN0ZWRPcHRpb24pOwogfQogCiB2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBp
Y2tlcjo6ZGlkQ2xvc2VTdWdnZXN0aW9ucygpCiB7Ci0gICAgbV9kYXRhTGlzdFN1Z2dlc3Rpb25z
Q2xpZW50LT5kaWRDbG9zZVN1Z2dlc3Rpb25zKCk7CisgICAgbV9jbGllbnQuZGlkQ2xvc2VTdWdn
ZXN0aW9ucygpOwogfQogCiB2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6Y2xvc2Uo
KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kRGF0YUxpc3RTdWdnZXN0aW9ucygp
LCBtX3BhZ2UtPmlkZW50aWZpZXIoKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFbmRE
YXRhTGlzdFN1Z2dlc3Rpb25zKCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwogfQogCi12b2lkIFdl
YkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlzcGxheVdpdGhBY3RpdmF0aW9uVHlwZShEYXRh
TGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSB0eXBlKQordm9pZCBXZWJEYXRhTGlzdFN1Z2dl
c3Rpb25QaWNrZXI6OmRpc3BsYXlXaXRoQWN0aXZhdGlvblR5cGUoV2ViQ29yZTo6RGF0YUxpc3RT
dWdnZXN0aW9uQWN0aXZhdGlvblR5cGUgdHlwZSkKIHsKLSAgICBpZiAoIW1fZGF0YUxpc3RTdWdn
ZXN0aW9uc0NsaWVudC0+c3VnZ2VzdGlvbnMoKS5zaXplKCkpIHsKKyAgICBhdXRvIHN1Z2dlc3Rp
b25zID0gbV9jbGllbnQuc3VnZ2VzdGlvbnMoKTsKKyAgICBpZiAoc3VnZ2VzdGlvbnMuaXNFbXB0
eSgpKSB7CiAgICAgICAgIGNsb3NlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X3BhZ2UtPnNldEFjdGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcih0aGlzKTsKKyAgICBtX3Bh
Z2Uuc2V0QWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKCp0aGlzKTsKIAotICAgIERhdGFM
aXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uIGluZm8gPSB7IHR5cGUsIG1fZGF0YUxpc3RTdWdnZXN0
aW9uc0NsaWVudC0+c3VnZ2VzdGlvbnMoKSwgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LT5l
bGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpIH07Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTaG93RGF0YUxpc3RTdWdnZXN0aW9ucyhpbmZvKSwgbV9wYWdlLT5pZGVudGlmaWVy
KCkpOworICAgIFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uIGluZm8geyB0
eXBlLCBXVEZNb3ZlKHN1Z2dlc3Rpb25zKSwgbV9jbGllbnQuZWxlbWVudFJlY3RJblJvb3RWaWV3
Q29vcmRpbmF0ZXMoKSB9OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0RhdGFMaXN0
U3VnZ2VzdGlvbnMoaW5mbyksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaAppbmRl
eCA5NzA1MzU5ODkwYjc2NjFhZjZjYTgwNzE3MGIzNTNiNTk4YzUwZjc5Li4xMzUxMDczNTIxNDI5
ZWY4N2RlZDE0MmM0OTYxNDE5MGNkODYzMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3Vn
Z2VzdGlvblBpY2tlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVO
VCkKIAogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IERhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQ7CkBAIC0zOCwxOSArMzcsMjAgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2U7CiAKLWNsYXNzIFdlYkRhdGFMaXN0U3VnZ2VzdGlv
blBpY2tlciA6IHB1YmxpYyBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIgeworY2xh
c3MgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkRh
dGFMaXN0U3VnZ2VzdGlvblBpY2tlciB7CiBwdWJsaWM6Ci0gICAgV2ViRGF0YUxpc3RTdWdnZXN0
aW9uUGlja2VyKFdlYlBhZ2UqLCBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50Kik7
Ci0gICAgdmlydHVhbCB+V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKCk7CisgICAgV2ViRGF0
YUxpc3RTdWdnZXN0aW9uUGlja2VyKFdlYlBhZ2UmLCBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rp
b25zQ2xpZW50Jik7CiAKLSAgICB2b2lkIGhhbmRsZUtleWRvd25XaXRoSWRlbnRpZmllcihjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFNlbGVjdE9wdGlvbihjb25zdCBTdHJp
bmcmKTsKICAgICB2b2lkIGRpZENsb3NlU3VnZ2VzdGlvbnMoKTsKLSAgICB2b2lkIGNsb3NlKCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwbGF5V2l0aEFjdGl2YXRpb25UeXBlKFdlYkNvcmU6OkRh
dGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBlKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKLSAg
ICBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50KiBtX2RhdGFMaXN0U3VnZ2VzdGlv
bnNDbGllbnQ7Ci0gICAgV2ViUGFnZSogbV9wYWdlOworICAgIHZvaWQgaGFuZGxlS2V5ZG93bldp
dGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgZGlzcGxheVdpdGhB
Y3RpdmF0aW9uVHlwZShXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSkg
ZmluYWw7CisgICAgdm9pZCBjbG9zZSgpIGZpbmFsOworCisgICAgV2ViQ29yZTo6RGF0YUxpc3RT
dWdnZXN0aW9uc0NsaWVudCYgbV9jbGllbnQ7CisgICAgV2ViUGFnZSYgbV9wYWdlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKaW5kZXggZjZjOTg0ZTMwNWVjN2Y3ZGFlZDk3ZjY4NmU4OWEyN2ZiOTBi
YjQ3ZS4uYWViMGM2MjhjZDcwZDQ4OWNmODdiZDUwYTNjNDAxYzRlNDBmMTExMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDYgKzU1
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9j
dW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRWxlbWVudENoaWxkSXRlcmF0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50SGFu
ZGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWUuaD4KQEAgLTcxLDcgKzcyLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0pTRWxlbWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSlNGaWxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU1JhbmdlLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9Ob2RlVHJhdmVyc2FsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVuZGVyVHJlZUFzVGV4dC5oPgpAQCAtNjYyLDE3ICs2NjIsOCBAQCBib29sIFdlYkZy
YW1lOjpjb250YWluc0FueUZvcm1FbGVtZW50cygpIGNvbnN0CiAgICAgaWYgKCFtX2NvcmVGcmFt
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IG1fY29yZUZyYW1lLT5kb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGZvciAoTm9kZSogbm9kZSA9IGRvY3VtZW50LT5kb2N1bWVudEVs
ZW1lbnQoKTsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUpKSB7Ci0gICAg
ICAgIGlmICghaXM8RWxlbWVudD4oKm5vZGUpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGlmIChpczxIVE1MRm9ybUVsZW1lbnQ+KCpub2RlKSkKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byogZG9jdW1lbnQgPSBtX2Nv
cmVGcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQgJiYgY2hpbGRyZW5PZlR5
cGU8SFRNTEZvcm1FbGVtZW50PigqZG9jdW1lbnQpLmZpcnN0KCk7CiB9CiAKIGJvb2wgV2ViRnJh
bWU6OmNvbnRhaW5zQW55Rm9ybUNvbnRyb2xzKCkgY29uc3QKQEAgLTY4MCwxNCArNjcxLDEyIEBA
IGJvb2wgV2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9ybUNvbnRyb2xzKCkgY29uc3QKICAgICBpZiAo
IW1fY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gbV9jb3JlRnJhbWUtPmRvY3VtZW50KCk7CisgICAgYXV0byogZG9jdW1lbnQg
PSBtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+ZG9jdW1lbnRF
bGVtZW50KCk7IG5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlKSkgewotICAg
ICAgICBpZiAoIWlzPEVsZW1lbnQ+KCpub2RlKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpIHx8IGlzPEhUTUxTZWxlY3RFbGVt
ZW50Pigqbm9kZSkgfHwgaXM8SFRNTFRleHRBcmVhRWxlbWVudD4oKm5vZGUpKQorICAgIGZvciAo
YXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxFbGVtZW50PigqZG9jdW1lbnQpKSB7CisgICAg
ICAgIGlmIChpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oY2hpbGQpIHx8IGlzPEhUTUxT
ZWxlY3RFbGVtZW50PihjaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCBhYTk5ZTlkYzBiMDBkNjUyNThmM2NlNDg0ZGFiNWE5MDQ2MzBkYjdjLi5m
MzE5YzAzZjQ3ZDYxZTE2MmFkZTA0ZTI5YTE1NjFjNzU1Zjk4NTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDEwNSw5ICs0MTA1LDkgQEAg
dm9pZCBXZWJQYWdlOjpkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3Ip
CiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKIAotdm9pZCBXZWJQYWdlOjpzZXRBY3Rp
dmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKiBk
YXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIpCit2b2lkIFdlYlBhZ2U6OnNldEFjdGl2ZURhdGFMaXN0
U3VnZ2VzdGlvblBpY2tlcihXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXImIGRhdGFMaXN0U3Vn
Z2VzdGlvblBpY2tlcikKIHsKLSAgICBtX2FjdGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlciA9
IG1ha2VXZWFrUHRyKGRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik7CisgICAgbV9hY3RpdmVEYXRh
TGlzdFN1Z2dlc3Rpb25QaWNrZXIgPSBtYWtlV2Vha1B0cigmZGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpkaWRTZWxlY3REYXRhTGlzdE9wdGlvbihjb25zdCBT
dHJpbmcmIHNlbGVjdGVkT3B0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IDc2ZDA0YTA0ZDFmNGEwYjI0MjNhNzgyYWQ1YjY4M2VmYTAxOGUzYTYu
LjZkNWNkMzhjOGJiNTgyNTk3ZTI0NDQyMThlOGNmODFhZWExMDVhY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQxNiw3ICs0MTYsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotICAgIHZvaWQgc2V0
QWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
ciopOworICAgIHZvaWQgc2V0QWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKFdlYkRhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlciYpOwogICAgIHZvaWQgZGlkU2VsZWN0RGF0YUxpc3RPcHRpb24o
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRDbG9zZVN1Z2dlc3Rpb25zKCk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KaW5kZXggNDczODM1NzZjZjAzOTNkN2E0ZWQzZjU4NzczYzM5OTM4OWVlZmFlNi4uMDFhMDI5
Y2NkZDI2ZDYwYWYzOTJmMzg3NDg0YTcyMDYzZGE2ZTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI0OTgsMTEgKzI0
OTgsMTIgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCkKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4
dChhdXRvY29ycmVjdGlvbkNvbnRleHQoKSkpOwogfQogCi1zdGF0aWMgSFRNTEFuY2hvckVsZW1l
bnQqIGNvbnRhaW5pbmdMaW5rRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQorc3RhdGljIEhUTUxB
bmNob3JFbGVtZW50KiBjb250YWluaW5nTGlua0FuY2hvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVu
dCkKIHsKLSAgICBmb3IgKGF1dG8mIGN1cnJlbnRFbGVtZW50IDogZWxlbWVudExpbmVhZ2UoZWxl
bWVudCkpIHsKLSAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmlzTGluaygpICYmIGlzPEhUTUxB
bmNob3JFbGVtZW50PihjdXJyZW50RWxlbWVudCkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNh
c3Q8SFRNTEFuY2hvckVsZW1lbnQ+KCZjdXJyZW50RWxlbWVudCk7CisgICAgLy8gRklYTUU6IFRo
ZXJlIGlzIGNvZGUgaW4gdGhlIGRyYWcgY29udHJvbGxlciB0aGF0IHN1cHBvcnRzIGFueSBsaW5r
LCBldmVuIGlmIGl0J3Mgbm90IGFuIEhUTUxBbmNob3JFbGVtZW50LiBXaHkgaXMgdGhpcyBkaWZm
ZXJlbnQ/CisgICAgZm9yIChhdXRvJiBjdXJyZW50RWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8SFRN
TEFuY2hvckVsZW1lbnQ+KGVsZW1lbnQpKSB7CisgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5p
c0xpbmsoKSkKKyAgICAgICAgICAgIHJldHVybiAmY3VycmVudEVsZW1lbnQ7CiAgICAgfQogICAg
IHJldHVybiBudWxscHRyOwogfQpAQCAtMjY3Miw3ICsyNjczLDcgQEAgc3RhdGljIHZvaWQgZWxl
bWVudFBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgSW4KIHsKICAgICBFbGVtZW50KiBsaW5rRWxlbWVudCA9IG51bGxwdHI7CiAgICAgaWYg
KGVsZW1lbnQucmVuZGVyZXIoKSAmJiBlbGVtZW50LnJlbmRlcmVyKCktPmlzUmVuZGVySW1hZ2Uo
KSkKLSAgICAgICAgbGlua0VsZW1lbnQgPSBjb250YWluaW5nTGlua0VsZW1lbnQoJmVsZW1lbnQp
OworICAgICAgICBsaW5rRWxlbWVudCA9IGNvbnRhaW5pbmdMaW5rQW5jaG9yRWxlbWVudChlbGVt
ZW50KTsKICAgICBlbHNlIGlmIChlbGVtZW50LmlzTGluaygpKQogICAgICAgICBsaW5rRWxlbWVu
dCA9ICZlbGVtZW50OwogCkBAIC0yOTM4LDcgKzI5MzksNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZv
cm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogICAgICAgICBpZiAoaXM8UmVuZGVy
SW1hZ2U+KCplbGVtZW50LnJlbmRlcmVyKCkpKSB7CiAgICAgICAgICAgICBVUkwgdXJsOwogICAg
ICAgICAgICAgU3RyaW5nIHRpdGxlOwotICAgICAgICAgICAgaWYgKGF1dG8qIGxpbmtFbGVtZW50
ID0gY29udGFpbmluZ0xpbmtFbGVtZW50KCZlbGVtZW50KSkgeworICAgICAgICAgICAgaWYgKGF1
dG8qIGxpbmtFbGVtZW50ID0gY29udGFpbmluZ0xpbmtBbmNob3JFbGVtZW50KGVsZW1lbnQpKSB7
CiAgICAgICAgICAgICAgICAgdXJsID0gbGlua0VsZW1lbnQtPmhyZWYoKTsKICAgICAgICAgICAg
ICAgICB0aXRsZSA9IGxpbmtFbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KEhUTUxOYW1lczo6dGl0bGVBdHRyKTsKICAgICAgICAgICAgICAgICBpZiAoIXRpdGxlLmxlbmd0
aCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCmluZGV4IDVj
MTNkNjM3ZTFmN2ZmNmY4MmQ5Mjk0MjhkZmI4MjUwNWIzOGNhYzkuLmFkY2QwMTdkMzA2NWUyMzJh
NjdjYTQyNTU2ZjM1YzVjZGU2ZWNmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NRG9jdW1lbnQubW0KQEAgLTI1LDEzICsyNSw2IEBACiAKICNpbXBvcnQgIkRPTURvY3VtZW50
SW50ZXJuYWwuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9BdHRyLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L0NEQVRBU2VjdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9DU1NSdWxlTGlzdC5oPgotI2ltcG9y
dCA8V2ViQ29yZS9DU1NTdHlsZURlY2xhcmF0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0NvbW1l
bnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRGdWxsc2NyZWVuLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW1wb3J0ICJET01BYnN0cmFjdFZpZXdJbnRlcm5h
bC5oIgogI2ltcG9ydCAiRE9NQXR0ckludGVybmFsLmgiCiAjaW1wb3J0ICJET01DREFUQVNlY3Rp
b25JbnRlcm5hbC5oIgpAQCAtNTcsMTUgKzUwLDIyIEBACiAjaW1wb3J0ICJET01TdHlsZVNoZWV0
TGlzdEludGVybmFsLmgiCiAjaW1wb3J0ICJET01UZXh0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRP
TVRyZWVXYWxrZXJJbnRlcm5hbC5oIgotI2ltcG9ydCA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNp
bXBvcnQgIkRPTVhQYXRoRXhwcmVzc2lvbkludGVybmFsLmgiCiAjaW1wb3J0ICJET01YUGF0aFJl
c3VsdEludGVybmFsLmgiCisjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgorI2ltcG9ydCAi
T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCIKKyNpbXBvcnQgPFdlYkNvcmUvQXR0ci5oPgorI2lt
cG9ydCA8V2ViQ29yZS9DREFUQVNlY3Rpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ1NTUnVsZUxp
c3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oPgorI2ltcG9ydCA8
V2ViQ29yZS9Db21tZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTVdpbmRvdy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50RnVsbHNjcmVlbi5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Eb2N1bWVudFR5cGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWxlbWVudC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9FdmVudC5oPgotI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBv
cnQgPFdlYkNvcmUvSFRNTENvbGxlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTEVsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTEhlYWRFbGVtZW50Lmg+CkBAIC03MywxMiArNzMs
MTEgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
TmFtZU5vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05hdGl2ZU5vZGVGaWx0ZXIuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlSXRlcmF0b3IuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTm9kZUxpc3QuaD4KLSNpbXBvcnQgIk9iakNOb2RlRmlsdGVyQ29u
ZGl0aW9uLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oPgogI2lt
cG9ydCA8V2ViQ29yZS9SYW5nZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
U3R5bGVTaGVldExpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dC5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnRGcmFnbWVudC5tbQppbmRleCAwNzI5
MzBlMzk1OGUyMGExMmUzY2UzYzU3ZTE5OTRmZTNkZGMxNjVlLi5jZjFhM2MxZjg0MzdiZDViZTky
MGQ4ODRlMzVhYzA1M2Y4OWY4NDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NRG9jdW1lbnRGcmFnbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NRG9jdW1lbnRGcmFnbWVudC5tbQpAQCAtMzIsNyArMzIsNiBAQAogI2ltcG9ydCA8
V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VsZW1lbnQuaD4K
ICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0hUTUxDb2xs
ZWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL05hbWVOb2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5t
bQppbmRleCBhNGMxYjYwOGMxNmQyMWU1ODc3MTAxNTI2Nzc5YmE2NDU1MDY5MGMzLi5mZDk5NGFi
NWJlMTRlY2MzYjIxNGY5NDUyMWM4ZDMwM2E5NmI5MmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQpAQCAtMjUsMjEg
KzI1LDEwIEBACiAKICNpbXBvcnQgIkRPTUhUTUxGaWVsZFNldEVsZW1lbnQuaCIKIAotI2ltcG9y
dCAiRE9NSFRNTENvbGxlY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NSFRNTEZvcm1FbGVt
ZW50SW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0jaW1wb3J0ICJET01Ob2Rl
SW50ZXJuYWwuaCIKLSNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCi0jaW1wb3J0IDxXZWJD
b3JlL0hUTUxDb2xsZWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxGaWVsZFNldEVsZW1l
bnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvSFRNTEZvcm1FbGVtZW50Lmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgotI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9WYWxpZGl0eVN0YXRl
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQg
PHd0Zi9HZXRQdHIuaD4KLSNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdl
YkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDU0NTAzZjJiMzA4ODBlOTkzZTk0
NWRhN2RjNjg5NjNlNGExODA3MC4uMDU4OTMyMzc1NWE4OWU0NGU0ZDEwZTFkMWQ2MmJmMzQwZTQ0
MDdiMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTAyLTE2ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpc2UgRE9NIGl0ZXJhdG9ycyBpbXBsZW1lbnRh
dGlvbiBhbmQgdXNhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNzgxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1leHBlY3RlZC50eHQ6IFVwZGF0
ZWQgZXhwZWN0YXRpb25zLgorICAgICAgICAqIGZhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3Qu
aHRtbDogVXBkYXRlZCB0ZXN0IHNpbmNlIHRoZSBvcHRpb25zIGNvbGxlY3Rpb24KKyAgICAgICAg
ZG9lcyBub3QgaW5kaWNhdGUgd2hpY2ggb3B0aW9ucyBhcmUgc3VnZ2VzdGlvbnMgYW5kIHdoaWNo
IGFyZSBub3QuIFRoZSB3ZWIKKyAgICAgICAgcGxhdGZvcm0gdGVzdHMgYWxyZWFkeSBoYWQgdGhp
cyByaWdodCwgd2hpY2ggaXMgd2h5IHdlIGhhZCBhIGZhaWxpbmcgdGVzdCB0aGVyZS4KKworICAg
ICAgICAqIHBsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9uczogUmVtb3ZlZCBzb21lIGxp
bmVzIGZvciB0ZXN0IHRoYXQgZG9uJ3QKKyAgICAgICAgZXhpc3QgYXQgdGhlIHBhdGhzIG1lbnRp
b25lZC4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy13azEvZmFzdC9mb3Jtcy9mb3JtLXBzZXVk
by12YWxpZC1zdHlsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jt
cy9jb25zdHJhaW50cy9mb3JtLXZhbGlkYXRpb24td2lsbFZhbGlkYXRlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd2luL2Zhc3QvZm9ybXMvZm9ybS1wc2V1ZG8tdmFs
aWQtc3R5bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgRXhwZWN0IGZhaWx1cmUgb24g
dGhlIHBhcnRzIG9mIHRoZXNlIHRlc3RzIHRoYXQgYXJlIHNwZWNpZmljIHRvIGRhdGFsaXN0LCBz
aW5jZQorICAgICAgICBkYXRhbGlzdCBpcyBub3QgZW5hYmxlZCBpbiB0aGVzZSBjb25maWd1cmF0
aW9ucy4gQmVmb3JlIG5vdywgdGhlIGNvZGUgd2Fzbid0CisgICAgICAgIHByb3Blcmx5IGNvbmRp
dGlvbmFsaXplZCBhbmQgc29tZSBvZiB0aGUgZGF0YWxpc3QgYmVoYXZpb3Igd291bGQgYmUgYWN0
aXZlIGV2ZW4KKyAgICAgICAgd2hlbiB0aGUgZmVhdHVyZSB3YXMgZGlzYWJsZWQuIEJlc3QgbG9u
Z2VyIHRlcm0gc29sdXRpb24gaXMgdG8gdHVybiB0aGlzIGZlYXR1cmUKKyAgICAgICAgb24gZm9y
IG1vcmUgcGxhdGZvcm1zLCBwZXJoYXBzIGFsbCBvZiB0aGVtLiBGb3Igbm93LCBsYW5kZWQgbmV3
IGV4cGVjdGVkIHJlc3VsdHMKKyAgICAgICAgZm9yIGNhc2VzIHRoYXQgRVdTIGluZGljYXRlZC4K
KworICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczogQ2xlYW5lZCB1
cCBhIHR5cG8gYW5kIGEgbWVyZ2UgY29uZmxpY3QKKyAgICAgICAgdGhhdCB3YXMgY2hlY2tlZCBp
biB3aXRob3V0IGJlaW5nIHJlc29sdmVkLgorCiAyMDIwLTAyLTE2ICBaYWxhbiBCdWp0YXMgIDx6
YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gRW5hYmxlIExGQyByZWdyZXNzaW9uIHRl
c3Rpbmcgb24gZmFzdC9ibG9jay9ibG9jay1vbmx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwppbmRleCAwY2IwOTk5Mzc5MDg3ZjRiMTIyYTE3NzRmMzZkNjVlZWQ0MWViODYzLi45MTVmMzcx
YThmZjQ2NDJiOTEzOTVjNWJhMGI3MjAwMjY5ZDgxZmY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMi0xNiAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRvcnMgaW1wbGVtZW50YXRp
b24gYW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy90aGUtZGF0YWxp
c3QtZWxlbWVudC9kYXRhbGlzdG9wdGlvbnMtZXhwZWN0ZWQudHh0OgorICAgICAgICBFeHBlY3Qg
dGhpcyB0ZXN0IHRvIHBhc3MgaW5zdGVhZCBvZiBmYWlsaW5nLgorCiAyMDIwLTAyLTE0ICBSb3Nz
YW5hIE1vbnRlcmlzbyAgPHJtb250ZXJpc29AaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWdy
aWRdIE1vdmUgZ3JpZC1ndXR0ZXJzLWFuZC1hbGlnbm1lbnQgdGVzdCB0byBXUFQgZm9sZGVyCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3QtZXhwZWN0
ZWQudHh0CmluZGV4IDQ2MDk0ODkwNGNkMjAxOTlmMWQ5MTI2YjgyYzE0ZDdiOWM0MDQ3NmUuLmNi
YTY1MDU3Mjc2ZjRhZjE1NzkwMjg5OWUxZjM1NmQzNGNhMDI5MjcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3QtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3QtZXhwZWN0ZWQudHh0CkBAIC0z
LDggKzMsOCBAQCBUZXN0IGZvciB0aGUgZGF0YWxpc3QgZWxlbWVudC4KIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KIAogCi1QQVNTIGRhdGFsaXN0Lm9wdGlvbnMubGVuZ3RoIGlzIDQKLVBBU1Mg
ZGF0YWxpc3Qub3B0aW9ucy5sZW5ndGggaXMgMworUEFTUyBkYXRhbGlzdC5vcHRpb25zLmxlbmd0
aCBpcyA1CitQQVNTIGRhdGFsaXN0Lm9wdGlvbnMubGVuZ3RoIGlzIDUKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC5odG1sCmluZGV4IDU2MWI2NmI1YzVkMjIyOGY4M2I1ZDgy
MTU5NzlmMDU4OTEwMTc5MzUuLmNhYzE1ZWYxMmJiZWY5YjUzNjMyMWQ5ZGVmNDUwNTNiMTNhZDcz
ZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3Qu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0Lmh0bWwK
QEAgLTEsNyArMSw3IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CiA8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KQEAgLTE3LDE4ICsxNywyMCBAQAogPC9kYXRhbGlzdD4KIAogPHNjcmlwdD4KKwog
ZGVzY3JpcHRpb24oJ1Rlc3QgZm9yIHRoZSBkYXRhbGlzdCBlbGVtZW50LicpOwogCiB2YXIgZGF0
YWxpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGwxJyk7Ci0vLyBBbiBvcHRpb24gZWxl
bWVudCB3aXRoIGVtcHR5IHZhbHVlIGlzIG5vdCBpbmNsdWRlZC4KLXNob3VsZEJlKCdkYXRhbGlz
dC5vcHRpb25zLmxlbmd0aCcsICc0Jyk7CiAKKy8vIEFuIG9wdGlvbiBlbGVtZW50IHdpdGggZW1w
dHkgdmFsdWUgaXMgbm90IGEgc3VnZ2VzdGlvbiwgYnV0IHN0aWxsIGlzIGluY2x1ZGVkIGluIHRo
ZSBvcHRpb25zIGNvbGxlY3Rpb24uCitzaG91bGRCZSgnZGF0YWxpc3Qub3B0aW9ucy5sZW5ndGgn
LCAnNScpOworCisvLyBBIGRpc2FibGVkIG9wdGlvbiBlbGVtZW50IGlzIG5vIGxvbmdlciBhIHN1
Z2dlc3Rpb24sIGJ1dCBzdGlsbCBpcyBpbmNsdWRlZCBpbiB0aGUgb3B0aW9ucyBjb2xsZWN0aW9u
LgogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ280JykuZGlzYWJsZWQgPSB0cnVlOwotLy8gQSBk
aXNhYmxlZCBvcHRpb24gZWxlbWVudCBpcyBub3QgaW5jbHVkZWQuCi1zaG91bGRCZSgnZGF0YWxp
c3Qub3B0aW9ucy5sZW5ndGgnLCAnMycpOwotLy8gQWZ0ZXIgZGF0YWxpc3QgaXMgaW1wbGVtZW50
ZWQsIHRoZSBleHBlY3RlZCB0ZXh0IHNob3VsZCBub3QgY29udGFpbiB0aGUKLS8vIHRleHQgaW4g
dGhlIGRhdGFsaXN0IGVsZW1lbnQuCitzaG91bGRCZSgnZGF0YWxpc3Qub3B0aW9ucy5sZW5ndGgn
LCAnNScpOworCisvLyBBbHNvLCB0aGUgZXhwZWN0ZWQgdGV4dCBzaG91bGQgbm90IGNvbnRhaW4g
dGhlIHRleHQgaW4gdGhlIGRhdGFsaXN0IGVsZW1lbnQuCisKIDwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5
PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy90aGUtZGF0YWxpc3QtZWxlbWVudC9kYXRh
bGlzdG9wdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy90aGUtZGF0YWxpc3QtZWxlbWVudC9k
YXRhbGlzdG9wdGlvbnMtZXhwZWN0ZWQudHh0CmluZGV4IGI1YzZlOTUzNDQzY2U5NGI4Zjc5YzNi
ZjhkM2Q3NWIwYmMwMDA5Y2MuLjM1NDVhN2U4OTcxOGMxNTkxMjJhZGE4N2M5YzY2YWUzYTMyOTk2
ODEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWRhdGFsaXN0LWVsZW1lbnQvZGF0YWxpc3RvcHRp
b25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS1kYXRhbGlzdC1lbGVtZW50L2RhdGFs
aXN0b3B0aW9ucy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACiAKLUZBSUwgb3B0aW9ucyBs
YWJlbC92YWx1ZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCA1IGJ1dCBnb3QgMworUEFTUyBvcHRp
b25zIGxhYmVsL3ZhbHVlIAogUEFTUyBJZiBhbiBlbGVtZW50IGhhcyBhIGRhdGFsaXN0IGVsZW1l
bnQgYW5jZXN0b3IsIGl0IGlzIGJhcnJlZCBmcm9tIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiAKIE51
bWJlcjogIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDJlZjYzOTM1OTZkOGIxNmJmZTcxOWVlYjA3YWEzYzliNjRhMjMyZmIuLjYyYzFiNmM2
OTIxM2UxZjE5OGQ2MDgwMTBkY2FhNGYwOTVhN2NmMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQzMiw5ICs0MzIsNiBAQCBpbXBvcnRl
ZC9ibGluay9zdmcvY3VzdG9tL21hcmtlci1sYXlvdXQtaW52YWxpZGF0aW9uLmh0bWwgWyBQYXNz
IFRpbWVvdXQgXQogaW1wb3J0ZWQvYmxpbmsvZmFzdC9jc3MvY3Jhc2gtY29ybmVyLXByZXNlbnQu
aHRtbCBbIFBhc3MgVGltZW91dCBdCiBpbXBvcnRlZC9ibGluay9jb21wb3NpdGluZy9sYXllci1j
cmVhdGlvbi9pZnJhbWUtY2xpcC1yZW1vdmVkLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCi0jIEFT
QU4gdGVzdCBvbmx5IGZhaWxzIG9uIFdLMToKLXdlYmdsLzEuMC4zLzE1MTA1NV9hc2FuLmh0bWwg
WyBGYWlsdXJlIF0KLQogIyBMYWNraW5nIFdLMSBUZXN0UnVubmVyIEFQSSB0aGF0IGV2YWx1YXRl
cyBKYXZhU2NyaXB0IHRocm91Z2ggSlNDIEFQSXMgYW5kIG5vdCBXZWJDb3JlIEFQSXMuCiBpbnNw
ZWN0b3Ivc2NyaXB0LXByb2ZpbGVyL2V2ZW50LXR5cGUtQVBJLmh0bWwgWyBTa2lwIF0KIApAQCAt
NzY0LDggKzc2MSw2IEBAIHdlYmtpdC5vcmcvYi8xOTAzNTAgWyBNb2phdmUgXSBzdG9yYWdlL2lu
ZGV4ZWRkYi9kYXRhYmFzZS1vZGQtbmFtZXMuaHRtbCBbIEZhaWx1CiAKIHdlYmtpdC5vcmcvYi8x
OTA4MzIgWyBEZWJ1ZyBdIGZhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS10by1ub24tZWRpdGVkLWNv
bnRyb2xzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTkwODMzIFsgRGVi
dWcgXSBpbnNwZWN0b3IvY29kZW1pcnJvci9wcmV0dHlwcmludGluZy1jc3MuaHRtbCBbIFNsb3cg
XQotCiB3ZWJraXQub3JnL2IvMTkwODQ5IGh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9u
cy94LWZyYW1lLW9wdGlvbnMtbXVsdGlwbGUtaGVhZGVycy1zYW1lb3JpZ2luLWRlbnkuaHRtbCBb
IFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xODY0MDYgWyBNb2phdmUrIF0gY29tcG9z
aXRpbmcvaWZyYW1lcy9kaXNwbGF5LW5vbmUtc3ViZnJhbWUuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
CkBAIC05MTYsNCArOTExLDQgQEAgd2Via2l0Lm9yZy9iLzIwNzU2NiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25zL3RpbWluZy1tb2RlbC8KIAogd2Via2l0Lm9y
Zy9iLzIwNzU2OCBpbnNwZWN0b3IvcGFnZS9vdmVycmlkZVVzZXJBZ2VudC5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwNzU2OSBsZWdhY3ktYW5pbWF0aW9uLWVuZ2luZS9h
bmltYXRpb25zLzNkL3RyYW5zZm9ybS1vcmlnaW4tdnMtZnVuY3Rpb25zLmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3dlYmtpdC5vcmcvYi8yMDc1Njkg
bGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5pbWF0aW9ucy8zZC90cmFuc2Zvcm0tb3JpZ2luLXZz
LWZ1bmN0aW9ucy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvZmFzdC9mb3Jtcy9mb3JtLXBzZXVkby12YWxpZC1zdHlsZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2Zhc3QvZm9ybXMvZm9ybS1w
c2V1ZG8tdmFsaWQtc3R5bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0M2ZhYTc1MTc1MzE3
MmQxMmJlOTQxZDdmOThhYzg3ZTVkNjY5NjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2sxL2Zhc3QvZm9ybXMvZm9ybS1wc2V1ZG8tdmFsaWQtc3R5bGUtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTQgQEAKK0NoZWNrIGlmIDp2YWxpZC86aW52YWxpZCBDU1Mg
cHNldWRvIHNlbGVjdG9ycyBhcmUgbGl2ZWx5IGFwcGxpZWQgZm9yIGZvcm1zCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitSZW1vdmluZyBhbmQgYWRkaW5nIHJlcXVpcmVkIHRleHQg
aW5wdXRzIGFuZCBtb2RpZnlpbmcgdGhlaXIgdmFsdWUgYnkgYSBET00gdHJlZSBtdXRhdGlvbjoK
K1BBU1MgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3Vu
ZE9mKHN1YjEpIGlzIHN1YkludmFsaWRDb2xvcgorUEFTUyBmb3JtMS5yZW1vdmVDaGlsZChpbnB1
dDEpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9m
KHN1YjEpIGlzIHN1YlZhbGlkQ29sb3IKK1BBU1MgZm9ybTEuYXBwZW5kQ2hpbGQoaW5wdXQxKTsg
YmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1
YjEpIGlzIHN1YkludmFsaWRDb2xvcgorUEFTUyBpbnB1dDEuc2V0QXR0cmlidXRlKCJ2YWx1ZSIs
ICJhIik7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5k
T2Yoc3ViMSkgaXMgc3ViVmFsaWRDb2xvcgorUEFTUyBpbnB1dDIuc2V0QXR0cmlidXRlKCJ2YWx1
ZSIsICIiKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dy
b3VuZE9mKHN1YjEpIGlzIHN1YkludmFsaWRDb2xvcgorCitEaXNhYmxpbmcgYW5kIG1hcmtpbmcg
aW5wdXRzIHJlYWRvbmx5IGJ5IGEgRE9NIHRyZWUgbXV0YXRpb246CitQQVNTIGJhY2tncm91bmRP
Zihmb3JtMSkgaXMgaW52YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJJ
bnZhbGlkQ29sb3IKK1BBU1MgaW5wdXQxLmRpc2FibGVkPTE7IGJhY2tncm91bmRPZihmb3JtMSkg
aXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViVmFsaWRDb2xvcgor
UEFTUyBpbnB1dDEuZGlzYWJsZWQ9MDsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29s
b3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1YkludmFsaWRDb2xvcgorUEFTUyBpbnB1
dDEuc2V0QXR0cmlidXRlKCJyZWFkb25seSIsICIxIik7IGJhY2tncm91bmRPZihmb3JtMSkgaXMg
dmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViVmFsaWRDb2xvcgorCitN
b3ZlIGVsZW1lbnQgdW5kZXIgZGF0YWxpc3QgYnkgYSBET00gdHJlZSBtdXRhdGlvbjoKK1BBU1Mg
YmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgcGFyZW50LnJlbW92ZUNo
aWxkKGlucHV0MSk7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorRkFJTCBkbDEu
YXBwZW5kQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBzaG91bGQgYmUgcmdiKDAs
IDI1NSwgMCkuIFdhcyByZ2IoMjU1LCAwLCAwKS4KK1BBU1MgcGFyZW50LmFwcGVuZENoaWxkKGlu
cHV0MSk7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgaW52YWxpZENvbG9yCisKK0FkZGluZyBhIHJl
cXVpcmVkIHRleHQgaW5wdXQgdGhhdCBpcyBub3QgYSBkaXJlY3QgY2hpbGQgb2YgdGhlIGZvcm06
CitQQVNTIGJhY2tncm91bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFTUyBkaXYxLmFwcGVu
ZENoaWxkKGlucHV0MSk7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgaW52YWxpZENvbG9yCisKK1Jl
bmRlciBtdWx0aXBsZSBmb3JtcyBhbmQgcmVhc3NpZ24gYW4gaW52YWxpZCBpbnB1dCBmcm9tIG9u
ZSB0byBhbm90aGVyOgorUEFTUyBiYWNrZ3JvdW5kT2YoJCgiZm9ybTEiKSkgaXMgaW52YWxpZENv
bG9yCitQQVNTIGJhY2tncm91bmRPZigkKCJmb3JtMiIpKSBpcyB2YWxpZENvbG9yCitQQVNTIGJh
Y2tncm91bmRPZigkKCJmb3JtMyIpKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZigk
KCJmb3JtMSIpKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZigkKCJmb3JtMyIpKSBp
cyBpbnZhbGlkQ29sb3IKKworRW5zdXJlIHRoYXQgaW52YWxpZCBldmVudCB3YXMgbm90IHRyaWdn
ZXJlZCBvbiBzdHlsZSBldmFsdWF0aW9uOgorUEFTUyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGlu
dmFsaWRDb2xvcgorUEFTUyB2YWwgaXMgIjAiCitQQVNTIGZvcm0xLmNoZWNrVmFsaWRpdHkoKTsg
dmFsIGlzICIxIgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCitTb21lIHRlc3Rz
IGZhaWxlZC4KKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZm9ybXMvY29uc3RyYWludHMvZm9ybS12YWxpZGF0aW9uLXdpbGxWYWxpZGF0ZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMvY29uc3RyYWludHMvZm9ybS12YWxpZGF0
aW9uLXdpbGxWYWxpZGF0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2VkNTM2ODA0M2U4YzE3
ZGRmZTg4MmEzNTM1NWE1YTQ3MmY3NjU1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9mb3Jtcy9jb25zdHJhaW50cy9mb3JtLXZhbGlkYXRpb24td2lsbFZhbGlkYXRlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDU3IEBACisKK1BBU1MgW0lOUFVUIGluIEhJRERFTiBzdGF0
dXNdIE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiAKK1BBU1Mg
W0lOUFVUIGluIEJVVFRPTiBzdGF0dXNdIE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFp
bnQgdmFsaWRhdGlvbiAKK1BBU1MgW0lOUFVUIGluIFJFU0VUIHN0YXR1c10gTXVzdCBiZSBiYXJy
ZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIAorUEFTUyBbQlVUVE9OIGluIEJVVFRP
TiBzdGF0dXNdIE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiAK
K1BBU1MgW0JVVFRPTiBpbiBSRVNFVCBzdGF0dXNdIE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNv
bnN0cmFpbnQgdmFsaWRhdGlvbiAKK1BBU1MgW2ZpZWxkc2V0XSAgVGhlIHdpbGxWYWxpZGF0ZSBh
dHRyaWJ1dGUgbXVzdCBiZSBmYWxzZSBzaW5jZSBGSUVMRFNFVCBpcyBub3QgYSBzdWJtaXR0YWJs
ZSBlbGVtZW50IAorUEFTUyBbb3V0cHV0XSAgVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVz
dCBiZSBmYWxzZSBzaW5jZSBPVVRQVVQgaXMgbm90IGEgc3VibWl0dGFibGUgZWxlbWVudCAKK1BB
U1MgW29iamVjdF0gIE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlv
biAKK1BBU1MgW0lOUFVUIGluIFRFWFQgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBj
b25zdHJhaW50IHZhbGlkYXRpb24gaWYgaXQgaXMgZGlzYWJsZWQgCitQQVNTIFtJTlBVVCBpbiBU
RVhUIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSB0cnVlIGlmIGFu
IGVsZW1lbnQgaXMgbXV0YWJsZSAKK1BBU1MgW0lOUFVUIGluIFRFWFQgc3RhdHVzXSBNdXN0IGJl
IGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gaWYgaXQgaXMgcmVhZG9ubHkg
CitQQVNTIFtJTlBVVCBpbiBURVhUIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUg
bXVzdCBiZSBmYWxzZSBpZiBpdCBoYXMgYSBkYXRhbGlzdCBhbmNlc3RvciAKK1BBU1MgW0lOUFVU
IGluIFNFQVJDSCBzdGF0dXNdIE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFs
aWRhdGlvbiBpZiBpdCBpcyBkaXNhYmxlZCAKK1BBU1MgW0lOUFVUIGluIFNFQVJDSCBzdGF0dXNd
IFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgdHJ1ZSBpZiBhbiBlbGVtZW50IGlz
IG11dGFibGUgCitQQVNTIFtJTlBVVCBpbiBTRUFSQ0ggc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBm
cm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gaWYgaXQgaXMgcmVhZG9ubHkgCitQQVNTIFtJ
TlBVVCBpbiBTRUFSQ0ggc3RhdHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJl
IGZhbHNlIGlmIGl0IGhhcyBhIGRhdGFsaXN0IGFuY2VzdG9yIAorUEFTUyBbSU5QVVQgaW4gVEVM
IHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIGlm
IGl0IGlzIGRpc2FibGVkIAorUEFTUyBbSU5QVVQgaW4gVEVMIHN0YXR1c10gVGhlIHdpbGxWYWxp
ZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSB0cnVlIGlmIGFuIGVsZW1lbnQgaXMgbXV0YWJsZSAKK1BB
U1MgW0lOUFVUIGluIFRFTCBzdGF0dXNdIE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFp
bnQgdmFsaWRhdGlvbiBpZiBpdCBpcyByZWFkb25seSAKK1BBU1MgW0lOUFVUIGluIFRFTCBzdGF0
dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgZmFsc2UgaWYgaXQgaGFzIGEg
ZGF0YWxpc3QgYW5jZXN0b3IgCitQQVNTIFtJTlBVVCBpbiBVUkwgc3RhdHVzXSBNdXN0IGJlIGJh
cnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gaWYgaXQgaXMgZGlzYWJsZWQgCitQ
QVNTIFtJTlBVVCBpbiBVUkwgc3RhdHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0
IGJlIHRydWUgaWYgYW4gZWxlbWVudCBpcyBtdXRhYmxlIAorUEFTUyBbSU5QVVQgaW4gVVJMIHN0
YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIGlmIGl0
IGlzIHJlYWRvbmx5IAorUEFTUyBbSU5QVVQgaW4gVVJMIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0
ZSBhdHRyaWJ1dGUgbXVzdCBiZSBmYWxzZSBpZiBpdCBoYXMgYSBkYXRhbGlzdCBhbmNlc3RvciAK
K1BBU1MgW0lOUFVUIGluIEVNQUlMIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29u
c3RyYWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIGRpc2FibGVkIAorUEFTUyBbSU5QVVQgaW4gRU1B
SUwgc3RhdHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIHRydWUgaWYgYW4g
ZWxlbWVudCBpcyBtdXRhYmxlIAorUEFTUyBbSU5QVVQgaW4gRU1BSUwgc3RhdHVzXSBNdXN0IGJl
IGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gaWYgaXQgaXMgcmVhZG9ubHkg
CitQQVNTIFtJTlBVVCBpbiBFTUFJTCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRl
IG11c3QgYmUgZmFsc2UgaWYgaXQgaGFzIGEgZGF0YWxpc3QgYW5jZXN0b3IgCitQQVNTIFtJTlBV
VCBpbiBQQVNTV09SRCBzdGF0dXNdIE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQg
dmFsaWRhdGlvbiBpZiBpdCBpcyBkaXNhYmxlZCAKK1BBU1MgW0lOUFVUIGluIFBBU1NXT1JEIHN0
YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSB0cnVlIGlmIGFuIGVsZW1l
bnQgaXMgbXV0YWJsZSAKK1BBU1MgW0lOUFVUIGluIFBBU1NXT1JEIHN0YXR1c10gTXVzdCBiZSBi
YXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIHJlYWRvbmx5IAor
UEFTUyBbSU5QVVQgaW4gUEFTU1dPUkQgc3RhdHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0
ZSBtdXN0IGJlIGZhbHNlIGlmIGl0IGhhcyBhIGRhdGFsaXN0IGFuY2VzdG9yIAorRkFJTCBbSU5Q
VVQgaW4gREFURVRJTUUtTE9DQUwgc3RhdHVzXSBUaGUgZGF0ZXRpbWUtbG9jYWwgdHlwZSBtdXN0
IGJlIHN1cHBvcnRlZC4gYXNzZXJ0X2VxdWFsczogVGhlIGRhdGV0aW1lLWxvY2FsIHR5cGUgc2hv
dWxkIGJlIHN1cHBvcnRlZC4gZXhwZWN0ZWQgImRhdGV0aW1lLWxvY2FsIiBidXQgZ290ICJ0ZXh0
IgorRkFJTCBbSU5QVVQgaW4gREFURSBzdGF0dXNdIFRoZSBkYXRlIHR5cGUgbXVzdCBiZSBzdXBw
b3J0ZWQuIGFzc2VydF9lcXVhbHM6IFRoZSBkYXRlIHR5cGUgc2hvdWxkIGJlIHN1cHBvcnRlZC4g
ZXhwZWN0ZWQgImRhdGUiIGJ1dCBnb3QgInRleHQiCitGQUlMIFtJTlBVVCBpbiBNT05USCBzdGF0
dXNdIFRoZSBtb250aCB0eXBlIG11c3QgYmUgc3VwcG9ydGVkLiBhc3NlcnRfZXF1YWxzOiBUaGUg
bW9udGggdHlwZSBzaG91bGQgYmUgc3VwcG9ydGVkLiBleHBlY3RlZCAibW9udGgiIGJ1dCBnb3Qg
InRleHQiCitGQUlMIFtJTlBVVCBpbiBXRUVLIHN0YXR1c10gVGhlIHdlZWsgdHlwZSBtdXN0IGJl
IHN1cHBvcnRlZC4gYXNzZXJ0X2VxdWFsczogVGhlIHdlZWsgdHlwZSBzaG91bGQgYmUgc3VwcG9y
dGVkLiBleHBlY3RlZCAid2VlayIgYnV0IGdvdCAidGV4dCIKK0ZBSUwgW0lOUFVUIGluIFRJTUUg
c3RhdHVzXSBUaGUgdGltZSB0eXBlIG11c3QgYmUgc3VwcG9ydGVkLiBhc3NlcnRfZXF1YWxzOiBU
aGUgdGltZSB0eXBlIHNob3VsZCBiZSBzdXBwb3J0ZWQuIGV4cGVjdGVkICJ0aW1lIiBidXQgZ290
ICJ0ZXh0IgorRkFJTCBbSU5QVVQgaW4gQ09MT1Igc3RhdHVzXSBUaGUgY29sb3IgdHlwZSBtdXN0
IGJlIHN1cHBvcnRlZC4gYXNzZXJ0X2VxdWFsczogVGhlIGNvbG9yIHR5cGUgc2hvdWxkIGJlIHN1
cHBvcnRlZC4gZXhwZWN0ZWQgImNvbG9yIiBidXQgZ290ICJ0ZXh0IgorUEFTUyBbSU5QVVQgaW4g
RklMRSBzdGF0dXNdIE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlv
biBpZiBpdCBpcyBkaXNhYmxlZCAKK1BBU1MgW0lOUFVUIGluIEZJTEUgc3RhdHVzXSBUaGUgd2ls
bFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIHRydWUgaWYgYW4gZWxlbWVudCBpcyBtdXRhYmxl
IAorUEFTUyBbSU5QVVQgaW4gRklMRSBzdGF0dXNdIE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNv
bnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyByZWFkb25seSAKK1BBU1MgW0lOUFVUIGluIEZJ
TEUgc3RhdHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIGZhbHNlIGlmIGl0
IGhhcyBhIGRhdGFsaXN0IGFuY2VzdG9yIAorUEFTUyBbSU5QVVQgaW4gU1VCTUlUIHN0YXR1c10g
TXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIGRp
c2FibGVkIAorUEFTUyBbSU5QVVQgaW4gU1VCTUlUIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBh
dHRyaWJ1dGUgbXVzdCBiZSB0cnVlIGlmIGFuIGVsZW1lbnQgaXMgbXV0YWJsZSAKK1BBU1MgW0lO
UFVUIGluIFNVQk1JVCBzdGF0dXNdIE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQg
dmFsaWRhdGlvbiBpZiBpdCBpcyByZWFkb25seSAKK1BBU1MgW0lOUFVUIGluIFNVQk1JVCBzdGF0
dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgZmFsc2UgaWYgaXQgaGFzIGEg
ZGF0YWxpc3QgYW5jZXN0b3IgCitQQVNTIFtCVVRUT04gaW4gU1VCTUlUIHN0YXR1c10gTXVzdCBi
ZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIAorUEFTUyBbQlVUVE9OIGlu
IFNVQk1JVCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgdHJ1ZSBp
ZiBhbiBlbGVtZW50IGlzIG11dGFibGUgCitGQUlMIFtCVVRUT04gaW4gU1VCTUlUIHN0YXR1c10g
VGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSBmYWxzZSBpZiBpdCBoYXMgYSBkYXRh
bGlzdCBhbmNlc3RvciBhc3NlcnRfZmFsc2U6IFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIHNo
b3VsZCBiZSBmYWxzZS4gZXhwZWN0ZWQgZmFsc2UgZ290IHRydWUKK1BBU1MgW3NlbGVjdF0gIE11
c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiAKK1BBU1MgW3NlbGVj
dF0gIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgdHJ1ZSBpZiBhbiBlbGVtZW50
IGlzIG11dGFibGUgCitGQUlMIFtzZWxlY3RdICBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBt
dXN0IGJlIGZhbHNlIGlmIGl0IGhhcyBhIGRhdGFsaXN0IGFuY2VzdG9yIGFzc2VydF9mYWxzZTog
VGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgc2hvdWxkIGJlIGZhbHNlLiBleHBlY3RlZCBmYWxz
ZSBnb3QgdHJ1ZQorUEFTUyBbdGV4dGFyZWFdICBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25z
dHJhaW50IHZhbGlkYXRpb24gCitQQVNTIFt0ZXh0YXJlYV0gIFRoZSB3aWxsVmFsaWRhdGUgYXR0
cmlidXRlIG11c3QgYmUgdHJ1ZSBpZiBhbiBlbGVtZW50IGlzIG11dGFibGUgCitGQUlMIFt0ZXh0
YXJlYV0gIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgZmFsc2UgaWYgaXQgaGFz
IGEgZGF0YWxpc3QgYW5jZXN0b3IgYXNzZXJ0X2ZhbHNlOiBUaGUgd2lsbFZhbGlkYXRlIGF0dHJp
YnV0ZSBzaG91bGQgYmUgZmFsc2UuIGV4cGVjdGVkIGZhbHNlIGdvdCB0cnVlCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjZjMyMmQ3ZDBh
ZTY0YWRkZjRkNGE1YzIzZjk0ZTZhODRjOTNhNjU0Li40NzM0YjA4MmI2MGQ5YmY1NDYxOTE2N2Zk
ZTYwMDUzZDg1NDM2YWY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zCkBAIC0xMDEwLDcgKzEwMTAsNyBAQCB3ZWJraXQub3JnL2IvMjA3NTA5IFsg
RGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0
LwogCiB3ZWJraXQub3JnL2IvMjA3NTE4IHRpbGVkLWRyYXdpbmcvc2ltcGxlLWRvY3VtZW50LXdp
dGgtbWFyZ2luLXRpbGVzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQucm9nL2IvMjA3
NTcxIGh0dHAvdGVzdHMvSW5kZXhlZERCL2NvbGxlY3QtSURCLW9iamVjdHMuaHR0cHMuaHRtbCBb
IFBhc3MgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjA3NTcxIGh0dHAvdGVzdHMvSW5kZXhlZERC
L2NvbGxlY3QtSURCLW9iamVjdHMuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtp
dC5vcmcvYi8yMDc1OTkgd2ViZ3B1L3dobHNsL2RvLXdoaWxlLWxvb3AuaHRtbCBbIFBhc3MgSW1h
Z2VPbmx5RmFpbHVyZSBdCiAKQEAgLTEwNDAsMTIgKzEwNDAsOCBAQCB3ZWJraXQub3JnL2IvMjA3
Nzc5IHdlYmdwdS93aGxzbC9kZXJlZmVyZW5jZS1wb2ludGVyLXNob3VsZC10eXBlLWNoZWNrLmh0
bWwgWyBQYQogCiB3ZWJraXQub3JnL2IvMjA3Nzg1IGZhc3QvZXZlbnRzL2tleWRvd24tMS5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KIAotPDw8PDw8PCBVcGRhdGVkIHVwc3RyZWFtCiB3ZWJraXQub3Jn
L2IvMjA3NzkzIGZhc3QvaHRtbC9tYXJxdWVlLWNoaWxkLXdyYXAuaHRtbCBbIFBhc3MgSW1hZ2VP
bmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDc3OTYgWyBSZWxlYXNlIF0gZmFzdC9ib3gt
c2hhZG93L2hpZHBpLWJveC1zaGFkb3cuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiAK
IHdlYmtpdC5vcmcvYi8yMDc3OTggd2VicnRjL2Nvbm5lY3Rpb24tc3RhdGUuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCi09PT09PT09Ci13ZWJraXQub3JnL2IvMjA3Nzk2IFsgUmVsZWFzZSBdIGZhc3Qv
Ym94LXNoYWRvdy9oaWRwaS1ib3gtc2hhZG93Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUg
XQotPj4+Pj4+PiBTdGFzaGVkIGNoYW5nZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9mYXN0L2Zvcm1zL2Zvcm0tcHNldWRvLXZhbGlkLXN0eWxlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2Zvcm1zL2Zvcm0tcHNldWRvLXZhbGlkLXN0
eWxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDNmYWE3NTE3NTMxNzJkMTJiZTk0MWQ3Zjk4
YWM4N2U1ZDY2OTYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L2Zhc3QvZm9ybXMvZm9ybS1wc2V1ZG8tdmFsaWQtc3R5bGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNTQgQEAKK0NoZWNrIGlmIDp2YWxpZC86aW52YWxpZCBDU1MgcHNldWRvIHNlbGVjdG9ycyBh
cmUgbGl2ZWx5IGFwcGxpZWQgZm9yIGZvcm1zCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitSZW1vdmluZyBhbmQgYWRkaW5nIHJlcXVpcmVkIHRleHQgaW5wdXRzIGFuZCBtb2RpZnlp
bmcgdGhlaXIgdmFsdWUgYnkgYSBET00gdHJlZSBtdXRhdGlvbjoKK1BBU1MgYmFja2dyb3VuZE9m
KGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1Yklu
dmFsaWRDb2xvcgorUEFTUyBmb3JtMS5yZW1vdmVDaGlsZChpbnB1dDEpOyBiYWNrZ3JvdW5kT2Yo
Zm9ybTEpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1YlZhbGlk
Q29sb3IKK1BBU1MgZm9ybTEuYXBwZW5kQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0x
KSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1YkludmFsaWRD
b2xvcgorUEFTUyBpbnB1dDEuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsICJhIik7IGJhY2tncm91bmRP
Zihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViVmFs
aWRDb2xvcgorUEFTUyBpbnB1dDIuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsICIiKTsgYmFja2dyb3Vu
ZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1
YkludmFsaWRDb2xvcgorCitEaXNhYmxpbmcgYW5kIG1hcmtpbmcgaW5wdXRzIHJlYWRvbmx5IGJ5
IGEgRE9NIHRyZWUgbXV0YXRpb246CitQQVNTIGJhY2tncm91bmRPZihmb3JtMSkgaXMgaW52YWxp
ZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJJbnZhbGlkQ29sb3IKK1BBU1Mg
aW5wdXQxLmRpc2FibGVkPTE7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFT
UyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViVmFsaWRDb2xvcgorUEFTUyBpbnB1dDEuZGlzYWJs
ZWQ9MDsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3Vu
ZE9mKHN1YjEpIGlzIHN1YkludmFsaWRDb2xvcgorUEFTUyBpbnB1dDEuc2V0QXR0cmlidXRlKCJy
ZWFkb25seSIsICIxIik7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFTUyBi
YWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViVmFsaWRDb2xvcgorCitNb3ZlIGVsZW1lbnQgdW5kZXIg
ZGF0YWxpc3QgYnkgYSBET00gdHJlZSBtdXRhdGlvbjoKK1BBU1MgYmFja2dyb3VuZE9mKGZvcm0x
KSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgcGFyZW50LnJlbW92ZUNoaWxkKGlucHV0MSk7IGJhY2tn
cm91bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorRkFJTCBkbDEuYXBwZW5kQ2hpbGQoaW5wdXQx
KTsgYmFja2dyb3VuZE9mKGZvcm0xKSBzaG91bGQgYmUgcmdiKDAsIDI1NSwgMCkuIFdhcyByZ2Io
MjU1LCAwLCAwKS4KK1BBU1MgcGFyZW50LmFwcGVuZENoaWxkKGlucHV0MSk7IGJhY2tncm91bmRP
Zihmb3JtMSkgaXMgaW52YWxpZENvbG9yCisKK0FkZGluZyBhIHJlcXVpcmVkIHRleHQgaW5wdXQg
dGhhdCBpcyBub3QgYSBkaXJlY3QgY2hpbGQgb2YgdGhlIGZvcm06CitQQVNTIGJhY2tncm91bmRP
Zihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFTUyBkaXYxLmFwcGVuZENoaWxkKGlucHV0MSk7IGJh
Y2tncm91bmRPZihmb3JtMSkgaXMgaW52YWxpZENvbG9yCisKK1JlbmRlciBtdWx0aXBsZSBmb3Jt
cyBhbmQgcmVhc3NpZ24gYW4gaW52YWxpZCBpbnB1dCBmcm9tIG9uZSB0byBhbm90aGVyOgorUEFT
UyBiYWNrZ3JvdW5kT2YoJCgiZm9ybTEiKSkgaXMgaW52YWxpZENvbG9yCitQQVNTIGJhY2tncm91
bmRPZigkKCJmb3JtMiIpKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZigkKCJmb3Jt
MyIpKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZigkKCJmb3JtMSIpKSBpcyB2YWxp
ZENvbG9yCitQQVNTIGJhY2tncm91bmRPZigkKCJmb3JtMyIpKSBpcyBpbnZhbGlkQ29sb3IKKwor
RW5zdXJlIHRoYXQgaW52YWxpZCBldmVudCB3YXMgbm90IHRyaWdnZXJlZCBvbiBzdHlsZSBldmFs
dWF0aW9uOgorUEFTUyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyB2
YWwgaXMgIjAiCitQQVNTIGZvcm0xLmNoZWNrVmFsaWRpdHkoKTsgdmFsIGlzICIxIgorCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCitTb21lIHRlc3RzIGZhaWxlZC4KKworVEVTVCBD
T01QTEVURQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390902</attachid>
            <date>2020-02-16 21:55:10 -0800</date>
            <delta_ts>2020-02-18 20:15:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207816-20200216215508.patch</filename>
            <type>text/plain</type>
            <size>270485</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJmNzA3Y2Y2YmU0Mjc3
YmJmNmZiY2VlMzM1ZTlkZmU5OTA2OTNiNC4uNWJhOTIwNjIwMzcwNTA5ZTUwMmJjYTIxN2ZjMTIx
MzdlYzg1ZjRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4OCBAQAorMjAyMC0wMi0xNiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRv
cnMgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZpbmVkIGVsZW1lbnQgaXRlcmF0b3IgaW1wbGVtZW50YXRp
b24gaW4gdGhlIGZvbGxvd2luZyB3YXlzOgorCisgICAgICAgIDEpIFJlbW92ZWQgdGhlIGR1cGxp
Y2F0ZSBkZXNjZW5kYW50IGl0ZXJhdG9yLCBrZWVwaW5nIHRoZSBvbmUgdGhhdCBtYXRjaGVzCisg
ICAgICAgICAgIHRoZSBzdHlsZSBvZiB0aGUgYW5jZXN0b3IgYW5kIGNoaWxkIGl0ZXJhdG9ycy4K
KyAgICAgICAgMikgUmVtb3ZlZCB0aGUgbm9uLXRlbXBsYXRlIGVsZW1lbnRBbmNlc3RvcnMsIGVs
ZW1lbnRDaGlsZHJlbiwgZWxlbWVudERlc2NlbmRhbnRzLAorICAgICAgICAgICBhbmQgZWxlbWVu
dExpbmVhZ2UgZnVuY3Rpb25zIGFuZCBjaGFuZ2VkIGNhbGxlcnMgdG8gdXNlIHh4eE9mVHlwZTxF
bGVtZW50PiBpbnN0ZWFkLgorCisgICAgICAgIEFsc28gcmVwbGFjZWQgdXNlIG9mIEhUTUxDb2xs
ZWN0aW9uIGNsYXNzZXMgaW4gV2ViS2l0IGNvZGUgZm9yIGl0ZXJhdGlvbi4KKyAgICAgICAgVGhl
eSBhcmUgZmluZSBmb3IgdXNlIGZyb20gSmF2YVNjcmlwdCwgYnV0IGludGVybmFsbHkgd2UgaGF2
ZSBtb3JlIGVmZmljaWVudAorICAgICAgICBpdGVyYXRpb24gaWRpb21zLgorCisgICAgICAgICog
SGVhZGVycy5jbWFrZTogUmVtb3ZlZCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmguCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmVkIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IuaCBhbmQKKyAgICAgICAgYWRkZWQgUmFkaW9Ob2RlTGlzdC5pZGwu
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojptb3VzZUJ1dHRvbkxp
c3RlbmVyIGNvbnN0KTogVXNlCisgICAgICAgIGxpbmVhZ2VPZlR5cGUgaW5zdGVhZCBvZiBlbGVt
ZW50TGluZWFnZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgVXNlIGFuY2Vz
dG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEgaGFuZHdyaXR0ZW4gbG9vcC4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcDogUmVtb3ZlZCB1bm5lZWRl
ZCBpbmNsdWRlIG9mCisgICAgICAgIEhUTUxDb2xsZWN0aW9uLmguCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOiBEaXR0by4KKworICAgICAgICAqIGRvbS9DaGls
ZE5vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUxpc3Q6OkNoaWxkTm9k
ZUxpc3QpOiBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIG1faW5kZXhDYWNoZQorICAgICAgICBz
aW5jZSB0aGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlcXVpcmVzIGFyZ3VtZW50cy4KKyAgICAg
ICAgKFdlYkNvcmU6OkNoaWxkTm9kZUxpc3Q6OmludmFsaWRhdGVDYWNoZSk6IFJlbW92ZWQgYXJn
dW1lbnQgdG8KKyAgICAgICAgQ29sbGVjdGlvbkluZGV4Q2FjaGU6OmludmFsaWRhdGUuCisgICAg
ICAgICogZG9tL0NoaWxkTm9kZUxpc3QuaDogUmVtb3ZlZCBjb2xsZWN0aW9uRW5kLCBzaW5jZSBp
dCdzIG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgKiBkb20vQ29sbGVjdGlvbkluZGV4Q2Fj
aGUuaDogUmVtb3ZlZCB0aGUgY29sbGVjdGlvbiBhcmd1bWVudCB0byB0aGUKKyAgICAgICAgY29u
c3RydWN0b3IsIGhhc1ZhbGlkQ2FjaGUsIGFuZCBpbnZhbGlkYXRlIGZ1bmN0aW9ucy4gVXBkYXRl
ZCBhbGdvcml0aG1zIHRvIHVzZQorICAgICAgICBudWxsIHN0eWxlIHRlcm1pbmF0aW9uIGluc3Rl
YWQgb2YgYWN0dWFsbHkgcmVseWluZyBvbiBjb21wYXJpbmcgd2l0aCBhbiBlbmQKKyAgICAgICAg
aXRlcmF0b3IsIHNpbmNlIHRoYXQgd29ya3MgZm9yIG91ciBlbGVtZW50IGl0ZXJhdG9ycy4KKwor
ICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OmNoaWxkRWxlbWVudENvdW50IGNvbnN0KTogVXNlIGFuIGVtcHR5IGluaXRpYWxp
emVyCisgICAgICAgIGxpc3QgaW5zdGVhZCBvZiB0aGUgcmVzdWx0IG9mIHRoZSBlbmQgZnVuY3Rp
b24gc2luY2Ugc3RkOjpkaXN0YW5jZSByZXF1aXJlcworICAgICAgICBib3RoIGJlZ2luIGFuZCBl
bmQgaXRlcmF0b3JzIGhhdmUgdGhlIHNhbWUgdHlwZS4KKworICAgICAgICAqIGRvbS9Db250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAgICAgICogZG9tL0N1
c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHA6IERpdHRvLgorCisgICAgICAgICogZG9tL0RvY3VtZW50
RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6Z2V0RWxl
bWVudEJ5SWQgY29uc3QpOiBVc2UKKyAgICAgICAgZGVzY2VuZGFudHNPZlR5cGUgaW5zdGVhZG9m
IGVsZW1lbnREZXNjZW5kYW50cy4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSBjb25zdCk6IFVz
ZSBsaW5lYWdlT2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2YgYSBoYW5kcndpdHRlbiBsb29wLgor
CisgICAgICAgICogZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmg6IE1vdmVkIHRoZSBkZWNs
YXJhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucworICAgICAgICB0byB0aGUgdG9wIG9mIHRoZSBmaWxl
LCBzaW5jZSB0aGUgY2xhc3NlcyBhcmUgcmVhbGx5IGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisg
ICAgICAgIFJlbW92ZWQgdGhlIHNlcGFyYXRlICJDb25zdCIgdmVyc2lvbnMgb2YgZXZlcnl0aGlu
ZyBzaW5jZSB3ZSBjYW4ganVzdCB1c2UKKyAgICAgICAgY29uc3QgaW4gdGhlIHRlbXBsYXRlIGFy
Z3VtZW50IHR5cGUgaW5zdGVhZC4gVXNlIHRoZSB0ZXJtICJSYW5nZSIgaW5zdGVhZAorICAgICAg
ICBvZiB0aGUgdGVybSAiSXRlcmF0b3JBZGFwdGVyIiBmb3IgdGhlIGNsYXNzIHRlbXBsYXRlcyBm
b3IgdXNlIGluIHJhbmdlLWJhc2VkCisgICAgICAgIGZvciBsb29wcyBzaW5jZSB0aGF0J3MgY2xv
c2VyIHRvIG1vZGVybiBDKysgdGVybWlub2xvZ3kuIFVzZSBudWxscHRyIGFzIGEKKyAgICAgICAg
c2VudGluZWwgZm9yIGVuZCwgd2hpY2ggd29ya3Mgd2VsbCB3aXRoIHJhbmdlLWJhc2VkIGZvciBs
b29wcy4gTWFkZSBtYW55IGZ1bmN0aW9uCisgICAgICAgIG1lbWJlcnMgY29uc3Qgd2hlcmUgYXBw
cm9wcmlhdGUuIFNwZWNpYWxpemVkIGxpbmVhZ2VPZlR5cGUgYW5kIGFuY2VzdG9yc09mVHlwZQor
ICAgICAgICBmb3IgRWxlbWVudCB0byBzbGlnaHRseSBvcHRpbWl6ZSB0aGF0IGNhc2UuIFVzZSBk
b3duY2FzdCBpbnN0ZWFkIG9mIHN0YXRpY19jYXN0LgorICAgICAgICBEZWxldGVkIGVsZW1lbnRM
aW5lYWdlIGFuZCBlbGVtZW50QW5jZXN0b3JzLgorCisgICAgICAgICogZG9tL0VsZW1lbnRBbmRU
ZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmg6IFJlbmFtZWQgSXRlcmF0b3JBZGFwdGVyIHRvIFJhbmdl
LgorICAgICAgICBNYWRlIG1vcmUgZnVuY3Rpb24gbWVtYmVycyBjb25zdC4KKworICAgICAgICAq
IGRvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oOiBNb3ZlZCB0aGUgZGVjbGFyYXRpb25zIG9mIHRo
ZSBmdW5jdGlvbnMKKyAgICAgICAgdG8gdGhlIHRvcCBvZiB0aGUgZmlsZSwgc2luY2UgdGhlIGNs
YXNzZXMgYXJlIHJlYWxseSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgorICAgICAgICBSZW1vdmVk
IHRoZSBzZXBhcmF0ZSAiQ29uc3QiIHZlcnNpb25zIG9mIGV2ZXJ5dGhpbmcgc2luY2Ugd2UgY2Fu
IGp1c3QgdXNlCisgICAgICAgIGNvbnN0IGluIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudCB0eXBlIGlu
c3RlYWQuIFVzZSB0aGUgdGVybSAiUmFuZ2UiIGluc3RlYWQKKyAgICAgICAgb2YgdGhlIHRlcm0g
Ikl0ZXJhdG9yQWRhcHRlciIgZm9yIHRoZSBjbGFzcyB0ZW1wbGF0ZXMgZm9yIHVzZSBpbiByYW5n
ZS1iYXNlZAorICAgICAgICBmb3IgbG9vcHMgc2luY2UgdGhhdCdzIGNsb3NlciB0byBtb2Rlcm4g
QysrIHRlcm1pbm9sb2d5LiBVc2UgbnVsbHB0ciBhcyBhCisgICAgICAgIHNlbnRpbmVsIGZvciBl
bmQsIHdoaWNoIHdvcmtzIHdlbGwgd2l0aCByYW5nZS1iYXNlZCBmb3IgbG9vcHMuIE1hZGUgbWFu
eQorICAgICAgICBmdW5jdGlvbiBtZW1iZXJzIGNvbnN0IHdoZXJlIGFwcHJvcHJpYXRlLiBEZWxl
dGVkIGVsZW1lbnRDaGlsZHJlbi4KKworICAgICAgICAqIGRvbS9FbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBkb20vRWxlbWVudEl0ZXJhdG9yLmg6IENo
YW5nZWQgRWxlbWVudEl0ZXJhdG9yIHRvIGRlcml2ZSBmcm9tIHN0ZDo6aXRlcmF0b3IKKyAgICAg
ICAgdG8gbWFrZSBpdGVyYXRvciB0cmFpdHMgd29yayBmb3IgYWxsIGNsYXNzZXMgZGVyaXZlZCBm
cm9tIGl0LiBNYWRlIGNvbnN0cnVjdG9ycworICAgICAgICBvZiBFbGVtZW50SXRlcmF0b3IgcHJp
dmF0ZSB0byBtYWtlIGl0IGNsZWFyIGl0J3MgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBhIGJhc2UK
KyAgICAgICAgY2xhc3MgYW5kIG5vdCBpbnN0YW50aWF0ZWQuIEFkZGVkIGFuIGVtcHR5IGNvbnN0
cnVjdG9yLiBEZWxldGVkIHRoZSA9PSBvcGVyYXRvci4KKyAgICAgICAgQWRkZWQgY29udmVyc2lv
bnMgdG8gYm9vbCBhbmQgb3BlcmF0b3IhIHNvIHRoZSBpdGVyYXRvciBjYW4gYmUgdXNlZCAibnVs
bCBzdHlsZSIKKyAgICAgICAgb3V0c2lkZSBvZiByYW5nZS1iYXNlZCBmb3IgbG9vcHMuIEFkZGVk
IGEgIT0gb3BlcmF0b3IgdGhhdCB3b3JrcyB3aXRoIG51bGxwdHIKKyAgICAgICAgc28gd2UgY2Fu
IHVzZSBudWxscHRyIGFzIGEgc2VudGluZWwgaW4gcmFuZ2UtYmFzZWQgZm9yIGxvb3BzLiBGb3Ig
dGhlICE9CisgICAgICAgIG9wZXJhdG9yLCByZWxheGVkIHRoZSBhc3NlcnRpb25zLCBzaW5jZSBj
b21wYXJpbmcgd2l0aCBhbm90aGVyIGl0ZXJhdG9yIHdvcmtzCisgICAgICAgIGZpbmUgZXZlbiBp
ZiB0aGUgRE9NIHRyZWUgaXMgbXV0YXRlZCwgYW5kIGEgbnVsbCBlbGVtZW50IGNhbiBiZSBjb21w
YXJlZCB3aXRoCisgICAgICAgIGFub3RoZXIgZXZlbiBpZiB0aGUgcm9vdCBlbGVtZW50IGlzIG5v
dCB0aGUgc2FtZS4gRGVsZXRlZCBFbGVtZW50Q29uc3RJdGVyYXRvci4KKworICAgICAgICAqIGRv
bS9MaXZlTm9kZUxpc3QuY3BwOiBSZW1vdmVkIHNvbWUgdW5uZWVkZWQgaW5jbHVkZXMsIGluY2x1
ZGluZyBIVE1MQ29sbGVjdGlvbi5oLgorICAgICAgICAoV2ViQ29yZTo6TGl2ZU5vZGVMaXN0OjpM
aXZlTm9kZUxpc3QpOiBTaW1wbGlmaWVkIGEgbGl0dGxlIGJpdC4KKyAgICAgICAgKFdlYkNvcmU6
OkxpdmVOb2RlTGlzdDo6cm9vdE5vZGUpOiBNb3ZlZCB0byB0aGUgaGVhZGVyLgorCisgICAgICAg
ICogZG9tL0xpdmVOb2RlTGlzdC5oOiBVcGRhdGVkIHNpbmNlIENvbGxlY3Rpb25UcmF2ZXJzYWwg
bm93IHVzZXMgdGhlCisgICAgICAgIG1vcmUgbW9kZXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IsIG5vdCB0aGUgb2xkZXIgb25lIHRoYXQgdXNlZCBhIHZlY3RvciBvZgorICAgICAgICBhbmNl
c3RvcnMgdG8gZG8gdGhlIGl0ZXJhdGlvbi4gQWxzbyB1c2UgV1RGX01BS0VfSVNPX05PTkFMTE9D
QVRBQkxFIHNpbmNlCisgICAgICAgIExpdmVOb2RlTGlzdCBpcyBhbiBhYnN0cmFjdCBjbGFzcywg
YW5kIG1hZGUgc29tZSBtZW1iZXJzIHByb3RlY3RlZC4gUmVtb3ZlZAorICAgICAgICBDYWNoZWRM
aXZlTm9kZUxpc3Q6OnJvb3ROb2RlIHNpbmNlIGl0IHdhcyBpZGVudGljYWwgdG8gTGl2ZU5vZGVM
aXN0Ojpyb290Tm9kZSwKKyAgICAgICAgYW5kIG1hZGUgTGl2ZU5vZGVMaXN0Ojpyb290Tm9kZSBw
cm90ZWN0ZWQgc28gaXQgY2FuIGJlIGNhbGxlZCBpbgorICAgICAgICBDYWNoZWRMaXZlTm9kZUxp
c3QsIGFuZCBtb3ZlZCBpdCB0byB0aGUgaGVhZGVyIHNvIGl0IHdpbGwgc3RpbGwgYmUgaW5saW5l
ZC4KKyAgICAgICAgU2ltcGxpZmllZCBDYWNoZWRMaXN0Tm9kZUxpc3QgdG8gdXNlIG1vcmUgZmlu
YWwsIHRvIG5hbWUgbG9uZyB0eXBlcyBsZXNzIGJ5CisgICAgICAgIHVzaW5nICJhdXRvIiBhbmQg
InVzaW5nIiwgYW5kIHRvIG5vdCBwYXNzIGFyZ3VtZW50cyB0byBmdW5jdGlvbnMgdGhhdCBkb24n
dAorICAgICAgICBuZWVkIHRoZW0gYW55IG1vcmUuCisKKyAgICAgICAgKiBkb20vTmFtZU5vZGVM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVOb2RlTGlzdDo6Y3JlYXRlKTogTW92ZWQg
aGVyZSBmcm9tIHRoZSBoZWFkZXIuCisgICAgICAgICogZG9tL05hbWVOb2RlTGlzdC5oOiBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGVzIGFuZCBjb21tZW50LCBtb3ZlZCBjcmVhdGUKKyAgICAgICAg
ZnVjbnRpb24gb3V0IG9mIHRoZSBoZWFkZXIuCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6IFJl
bW92ZWQgdW5uZWVkZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlvbi5oLgorCisgICAgICAgICog
ZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlz
dDo6Y2xvc2VzdCBjb25zdCk6IFVzZSBsaW5lYWdlZU9mVHlwZSBpbnN0ZWFkIG9mIGFuCisgICAg
ICAgIGV4cGxpY2l0IGxvb3AuCisgICAgICAgIChXZWJDb3JlOjplbGVtZW50c0ZvckxvY2FsTmFt
ZSk6IFVzZSBkZXNjZW5kYW50c09mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnREZXNjZW5kYW50cy4K
KyAgICAgICAgKFdlYkNvcmU6OmFueUVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVUYWdOYW1lU2VsZWN0b3JEYXRhIGNvbnN0
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2lu
Z2xlQ2xhc3NOYW1lU2VsZWN0b3JEYXRhIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlU2VsZWN0b3JEYXRhIGNvbnN0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlTXVs
dGlTZWxlY3RvckRhdGEgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
RGF0YUxpc3Q6OmV4ZWN1dGVDb21waWxlZFNpbXBsZVNlbGVjdG9yQ2hlY2tlciBjb25zdCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZUNvbXBpbGVk
U2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dCBjb25zdCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZUNvbXBpbGVkU2luZ2xlTXVsdGlT
ZWxlY3RvckRhdGEgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGRvbS9TbG90QXNzaWdubWVu
dC5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisKKyAgICAgICAgKiBkb20vVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yLmg6IE1vdmVkIHRoZSBkZWNsYXJhdGlvbnMgb2YgdGhlIGZ1bmN0aW9u
cworICAgICAgICB0byB0aGUgdG9wIG9mIHRoZSBmaWxlLCBzaW5jZSB0aGUgY2xhc3NlcyBhcmUg
cmVhbGx5IGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisgICAgICAgIFJlbmFtZWQgdGhlIGNsYXNz
ZXMgdG8gdGFrZSBvdXQgdGhlIHdvcmQgInR5cGVkIiBzaW5jZSB0aGVzZSBpdGVyYXRvcnMgYXJl
IHRoZQorICAgICAgICBzYW1lIGFzIHRoZSBhbmNlc3RvciBhbmQgY2hpbGRyZW4gaXRlcmF0b3Jz
OyB0aGlzIGdpdmVzIHRoZXNlIHRoZSBzYW1lIG5hbWUgYXMKKyAgICAgICAgdGhlIGNsYXNzZXMg
aW4gdGhlIGRlbGV0ZWQgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIGZpbGUsIGFuZCB3ZSBj
YW4gZm9sbG93CisgICAgICAgIHVwIGJ5IHJlbmFtaW5nIHRoaXMgZmlsZSB0byB0YWtlICJUeXBl
ZCIgb3V0IG9mIHRoZSBuYW1lIG9mIHRoZSBmaWxlLCB0b28uCisgICAgICAgIFJlbW92ZWQgdGhl
IHNlcGFyYXRlICJDb25zdCIgdmVyc2lvbnMgb2YgZXZlcnl0aGluZyBzaW5jZSB3ZSBjYW4ganVz
dCB1c2UKKyAgICAgICAgY29uc3QgaW4gdGhlIHRlbXBsYXRlIGFyZ3VtZW50IHR5cGUgaW5zdGVh
ZC4gVXNlIHRoZSB0ZXJtICJSYW5nZSIgaW5zdGVhZAorICAgICAgICBvZiB0aGUgdGVybSAiSXRl
cmF0b3JBZGFwdGVyIiBmb3IgdGhlIGNsYXNzIHRlbXBsYXRlcyBmb3IgdXNlIGluIHJhbmdlLWJh
c2VkCisgICAgICAgIGZvciBsb29wcyBzaW5jZSB0aGF0J3MgY2xvc2VyIHRvIG1vZGVybiBDKysg
dGVybWlub2xvZ3kuIFVzZSBudWxscHRyIGFzIGEKKyAgICAgICAgc2VudGluZWwgdmFsdWUgZm9y
IHRoZSBlbmQgZnVuY3Rpb25zLiBNYWRlIG1hbnkgZnVuY3Rpb24gbWVtYmVycyBjb25zdCB3aGVy
ZQorICAgICAgICBhcHByb3ByaWF0ZS4gQWRkZWQgYSBuZXcgc3BlY2lhbGl6YXRpb24gdGhhdCBt
YWtlcyBhIGRlc2NlbmRhbnQgaXRlcmF0b3IgdGhhdAorICAgICAgICBpcyBmaWx0ZXJlZCBiYXNl
ZCBvbiBhIGZ1bmN0aW9uLCBmb3IgdXNlIGluIGl0ZXJhdGluZyBkYXRhIGxpc3Qgc3VnZ2VzdGlv
bnMuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCBjb25zdCk6IFVzZSB0aGUgZnVu
Y3Rpb24KKyAgICAgICAgZGVzY2VuZGFudHNPZlR5cGU8SFRNTEJvZHlFbGVtZW50PiBpbnN0ZWFk
IG9mIGdldEVsZW1lbnRCeVRhZ05hbWUoYm9keVRhZykuCisgICAgICAgIEFsc28gbWVyZ2VkIGFw
cGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50IGluIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmFwcGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKworICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmg6IERlbGV0ZWQgYXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQu
CisKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNjYW5Gb3JGb3JtKTogVHdlYWtlZCB1c2FnZSBzbyB0aGVyZSdzIG5vIGV4cGxpY2l0IHVz
ZSBvZiBlbmQuCisgICAgICAgIEFsc28gY2hhbmdlZCBpZiBuZXN0aW5nIGEgbGl0dGxlIGJpdC4K
KworICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uUnVsZU1hdGNoZXI6OmlzRXhjbHVkZWQpOiBVc2UgbGlu
ZWFnZU9mVHlwZSBpbnN0ZWFkIG9mCisgICAgICAgIGVsZW1lbnRMaW5lYWdlLgorCisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06IFVwZGF0ZWQgaW5jbHVk
ZXMuCisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOiBEaXR0by4KKworICAgICAgICAqIGh0
bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDogVXBkYXRlZCBpbmNsdWRlcywgc2hvcnRlbmVkIHR5
cGUgbmFtZXMsCisgICAgICAgIGFuZCB1c2VkIGF1dG8gdG8gc2ltcGxpZnkgdGhlIGNvZGUgYSBi
aXQuIFJlbW92ZWQgdW5uZWVkZWQgY29sbGVjdGlvbiBhcmd1bWVudHMKKyAgICAgICAgZnJvbSB2
YXJpb3VzIENvbGxlY3Rpb25JbmRleENhY2hlIGZ1bmN0aW9ucy4KKworICAgICAgICAqIGh0bWwv
Q29sbGVjdGlvblRyYXZlcnNhbC5oOiBVcGRhdGVkIHRvIHVzZSB0aGUgbmV3L3R5cGVkIHZlcnNp
b24gb2YKKyAgICAgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci4gUmVtb3ZlZCBlbmQgZnVu
Y3Rpb25zLiBVc2Ugc2hvcnRlciB0eXBlIG5hbWVzLgorICAgICAgICBSZXdyb3RlIGFsZ29yaXRo
bXMgdG8gdXNlIG51bGwgdGVybWluYXRpb24gZm9yIGxvb3BzIGluc3RlYWQgb2YgZW5kIGl0ZXJh
dG9yCisgICAgICAgIHZhbHVlcy4KKworICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OnN1Z2dlc3RlZENvbG9ycyBjb25z
dCk6IFVzZSB0aGUgbmV3CisgICAgICAgIEhUTUxEYXRhTGlzdEVsZW1lbnQ6OnN1Z2dlc3Rpb25z
IGluc3RlYWQgb2YgSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBodG1sL0dlbmVyaWNDYWNo
ZWRIVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb248dHJhdmVyc2FsVHlwZT46OmVsZW1lbnRNYXRjaGVzIGNvbnN0KToKKyAgICAg
ICAgVXBkYXRlZCB0byB1c2UgSFRNTERhdGFMaXN0RWxlbWVudDo6aXNTdWdnZXN0aW9uIGFuZCBh
ZGRlZCBhIGNvbW1lbnQgZXhwbGFpbmluZworICAgICAgICB3aHkgdGhhdCBtaWdodCBub3QgYmUg
bmVjZXNzYXJ5IGlmIHdlIGNvcnJlY3QgdGhlIGltcGxlbWVudGF0aW9uIHRvIG1hdGNoIHRoZQor
ICAgICAgICBIVE1MIHNwZWNpZmljYXRpb24uCisKKyAgICAgICAgKiBodG1sL0hUTUxBbGxDb2xs
ZWN0aW9uLmlkbDogU3BlY2lmeSBbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIG9uIHRoZQor
ICAgICAgICBhcmd1bWVudCB0byBuYW1lZEl0ZW0sIGFuZCBbQXRvbVN0cmluZ10gZm9yIHRoZSBh
cmd1bWVudCB0byBpdGVtLgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaWRsOiBEaXR0
by4KKworICAgICAgICAqIGh0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRGF0YUxpc3RFbGVtZW50Ojppc1N1Z2dlc3Rpb24pOiBBZGRlZC4KKyAgICAg
ICAgKiBodG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuaDogQWRkZWQgaXNTdWdnZXN0aW9uIGFuZCBz
dWdnZXN0aW9ucyBmdW5jdGlvbnMgc28KKyAgICAgICAgbG9naWMgYWJvdXQgd2hpY2ggZGF0YSBs
aXN0IG9wdGlvbnMgYXJlIHN1Z2dlc3Rpb25zIGlzIHNoYXJlZC4KKworICAgICAgICAqIGh0bWwv
SFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWxlbWVudEFmZmVjdHNEaXJlY3Rp
b25hbGl0eSk6IFJlZmFjdG9yZWQgc28gd2UgZ2V0IGEgbW9yZSBlZmZpY2llbnQKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gd2hlbiB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudCBpcyBrbm93bi4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjphZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVk
QWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICBVc2UgbGluZWFnZU9mVHlwZSBp
bnN0ZWFkIG9mIGVsZW1lbnRMaW5lYWdlLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5o
OiBSZW1vdmVkIHNvbWUgdW5lZWVkZWQgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAg
KiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZFdpZGdl
dFJlbmRlcmVyKTogVXNlIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEgbG9vcC4KKworICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpjb21wdXRlV2lsbFZhbGlkYXRlIGNvbnN0KTogVXNl
CisgICAgICAgIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEgbG9vcC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmVuY2xvc2luZ0Zvcm1Db250cm9sRWxlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6IERl
bGV0ZWQgdW51c2VkIGVuY2xvc2luZ0Zvcm1Db250cm9sRWxlbWVudC4KKworICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKTogVXNl
CisgICAgICAgIHNob3J0IGZvcm0gQ2FjaGVkSFRNTENvbGxlY3Rpb24gaW5zdGVhZCBvZiB3cml0
aW5nIG91dCBhbGwgdGhlIHRlbXBsYXRlIGFyZ3VtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpvd25lck5vZGUgY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGVG
b3JEb2N1bWVudCk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5pZGw6IFNwZWNpZnkgW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBvbgorICAg
ICAgICB0aGUgYXJndW1lbnQgdG8gbmFtZWRJdGVtLgorCisgICAgICAgICogaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxl
bWVudEluZGV4KTogVXBkYXRlZCBjb2RlIHRoYXQgY2hlY2tzIHRoZQorICAgICAgICBmaXJzdCBl
bGVtZW50IHRvIHVzZSBvcGVyYXRvciEgaW5zdGVhZCBvZiBjb21wYXJpbmcgd2l0aCBlbmQuCisK
KyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOiBSZW1vdmVkIHVubmVlZGVk
IGluY2x1ZGUgb2YgSFRNTENvbGxlY3Rpb24uaC4KKworICAgICAgICAqIGh0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHA6IENsZWFyZWQgc3RyYXkgZXhlY3V0YWJsZSBiaXQuCisKKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6c2V0dXBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzKTogVXNlIHRoZSBuZXcKKyAgICAg
ICAgSFRNTERhdGFMaXN0RWxlbWVudDo6c3VnZ2VzdGlvbnMgaW5zdGVhZCBvZiBIVE1MQ29sbGVj
dGlvbi4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQpOiBVc2UgYSBi
b29sZWFuIHRlc3QgcmF0aGVyCisgICAgICAgIHRoYW4gY29tcGFyaW5nIHdpdGggZW5kIGluIHRo
ZSB1bnVzdWFsIGxvb3AgaGVyZS4KKworICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojpvd25lclNlbGVj
dEVsZW1lbnQgY29uc3QpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2Yg
YSBoYW5kLXdyaXR0ZW4gbG9vcC4KKworICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KTogVXNlIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mCisgICAgICAgIGNhbGxpbmcgb3duZXJE
YXRhTGlzdEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVu
dDo6b3duZXJEYXRhTGlzdEVsZW1lbnQgY29uc3QpOiBEZWxldGVkLiBTaW5jZSB0aGUKKyAgICAg
ICAgc2FtZSBvcHRpb24gY2FuIGJlIHVzZWQgYnkgbmVzdGVkIGRhdGEgbGlzdCBlbGVtZW50cywg
dGhlIGNvbmNlcHQgb2YgYSBzaW5nbGUKKyAgICAgICAgIm93bmVyIiBkYXRhIGxpc3QgZWxlbWVu
dCBpc24ndCBmdWxseSBjb3JyZWN0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1l
bnQ6Om93bmVyU2VsZWN0RWxlbWVudCBjb25zdCk6IFVzZSBhbmNlc3RvcnNPZlR5cGUKKyAgICAg
ICAgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorICAgICAgICAqIGh0bWwvSFRNTE9w
dGlvbkVsZW1lbnQuaDogRGVsZXRlZCBvd25lckRhdGFMaXN0RWxlbWVudC4KKworICAgICAgICAq
IGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbDogU3BlY2lmeSBbUmVxdWlyZXNFeGlzdGlu
Z0F0b21TdHJpbmddIG9uCisgICAgICAgIHRoZSBhcmd1bWVudCB0byBuYW1lZEl0ZW0uCisKKyAg
ICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOiBVcGRhdGVkIGluY2x1ZGVz
LgorCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGw6IFNwZWNpZnkgW1JlcXVp
cmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBvbgorICAgICAgICB0aGUgYXJndW1lbnQgdG8gbmFtZWRJ
dGVtLgorCisgICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0
dHJpYnV0ZVN0eWxlIGNvbnN0KToKKyAgICAgICAgVXNlIGF1dG8gc2luY2UgZmluZFBhcmVudFRh
YmxlIG5vdyByZXR1cm5zIGEgY29uc3QgdGFibGUgcG9pbnRlci4KKyAgICAgICAgKiBodG1sL0hU
TUxUYWJsZUNvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlQ29sRWxl
bWVudDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlIGNvbnN0KToKKyAgICAg
ICAgRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKTogTWFk
ZSBjb25zdC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxD
ZWxsU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmFk
ZGl0aW9uYWxHcm91cFN0eWxlKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVt
ZW50Lmg6IE1hZGUgdGhlIGZ1bmN0aW9ucyBjb25zdCwgYW5kIG1fc2hhcmVkQ2VsbFN0eWxlCisg
ICAgICAgIG11dGFibGUuCisKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZVBhcnRFbGVtZW50OjpmaW5kUGFyZW50VGFi
bGUgY29uc3QpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2YgYSBoYW5k
LXdyaXR0ZW4gbG9vcC4gQWxzbyByZXZpc2VkIHJldHVybiB0eXBlIHRvIGJlIGNvbnN0LWNvbnNp
c3RlbnQuCisgICAgICAgICogaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5oOiBVcGRhdGVkIHJl
dHVybiB0eXBlLgorCisgICAgICAgICogaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHA6
IFJlbW92ZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlvbi5oLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6Om51bVJvd3MgY29uc3QpOiBVc2UgYW4gZW1wdHkgaW5p
dGlhbGl6ZXIKKyAgICAgICAgbGlzdCBpbnN0ZWFkIG9mIHRoZSByZXN1bHQgb2YgdGhlIGVuZCBm
dW5jdGlvbiBzaW5jZSBzdGQ6OmRpc3RhbmNlIHJlcXVpcmVzCisgICAgICAgIGJvdGggYmVnaW4g
YW5kIGVuZCBpdGVyYXRvcnMgaGF2ZSB0aGUgc2FtZSB0eXBlLgorCisgICAgICAgICogaHRtbC9I
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRI
VE1MRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6ZGlyZWN0aW9uRm9yRm9ybURhdGEgY29uc3QpOiBVc2UKKyAgICAgICAgbGlu
ZWFnZU9mVHlwZSByYXRoZXIgdGhhbiBhIGhhbmQtd3JpdHRlbiBsb29wLiBBbHNvIGdvdCByaWQg
b2YgdGhlIG11bHRpcGxlCisgICAgICAgIHN0cmluZ3MgaW4gcmV0dXJuIHBhdGhzIHNpbmNlIHRo
ZSBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBvbmUgb2YgdHdvIHN0cmluZ3MuCisKKyAgICAgICAg
KiBodG1sL0xhYmVsc05vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxhYmVsc05vZGVM
aXN0OjpjcmVhdGUpOiBNb3ZlZCBoZXJlIGZyb20gaGVhZGVyLgorICAgICAgICAqIGh0bWwvTGFi
ZWxzTm9kZUxpc3QuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLCB0d2Vha2VkIGNvZGluZyBz
dHlsZSBhIGJpdCwKKyAgICAgICAgbW92ZWQgY3JlYXRlIGZ1bmN0aW9uIGludG8gdGhlIC5jcHAg
ZmlsZSwgcmVtb3ZlZCBvdmVycmlkZSBvZiBpc1Jvb3RlZEF0RG9jdW1lbnQuCisKKyAgICAgICAg
KiBodG1sL01lZGlhRG9jdW1lbnQuY3BwOiBVcGRhdGVkIGluY2x1ZGVzLgorCisgICAgICAgICog
aHRtbC9SYWRpb05vZGVMaXN0LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorICAgICAg
ICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6Y3JlYXRlKTogTW92ZWQgdGhpcyBoZXJlIGZyb20g
dGhlIGhlYWRlci4KKyAgICAgICAgKFdlYkNvcmU6Om5vbkVtcHR5UmFkaW9CdXR0b24pOiBSZW5h
bWVkIGZyb20gdG9SYWRpb0J1dHRvbklucHV0RWxlbWVudCB0byBtYWtlCisgICAgICAgIGEgbGl0
dGxlIGNsZWFyZXIgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcy4KKyAgICAgICAgKFdlYkNvcmU6OlJh
ZGlvTm9kZUxpc3Q6OnZhbHVlIGNvbnN0KTogVXBkYXRlZCB0byB1c2Ugbm9uRW1wdHlSYWRpb0J1
dHRvbiBhbmQKKyAgICAgICAgc3RyYWlnaHRlbiBvdXQgdGhlIGxvb3AgYSB0aW55IGJpdC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6OnNldFZhbHVlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSYWRpb05vZGVMaXN0OjpjaGVja0VsZW1lbnRNYXRjaGVzUmFkaW9Ob2RlTGlz
dEZpbHRlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSYWRpb05vZGVMaXN0
OjplbGVtZW50TWF0Y2hlcyBjb25zdCk6IE1lcmdlZCBpbiB0aGUgbG9naWMgZnJvbQorICAgICAg
ICBjaGVja0VsZW1lbnRNYXRjaGVzUmFkaW9Ob2RlTGlzdEZpbHRlciwgc2luY2UgdGhlIHNlcGFy
YXRlIGZ1bmN0aW9uIHdhc24ndCBoZWxwZnVsLgorICAgICAgICAqIGh0bWwvUmFkaW9Ob2RlTGlz
dC5oOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzLiBNb3ZlZCB0aGUgY3JlYXRlIGZ1bmN0aW9u
IG91dAorICAgICAgICBvZiB0aGUgaGVhZGVyLiBSZW1vdmVkIHVubmVlZGVkIG92ZXJyaWRlIG9m
IHRoZSBpdGVtIGZ1bmN0aW9uIHRvIHRpZ2h0ZW4gdGhlCisgICAgICAgIHJldHVybiB0eXBlOyBu
b3QgdXNlZCBpbiBXZWJDb3JlIGFuZCBub3QgaGVscGZ1bCBmb3IgYmluZGluZ3MuIE1hZGUgbW9y
ZSBwcml2YXRlLgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6aXRlbSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9SYWRpb05vZGVMaXN0LmlkbDogUmVtb3ZlZCB1bm5l
ZWRlZCBnZXR0ZXI7IHRoZSBpbmhlcml0ZWQgb25lIGZyb20gTm9kZUxpc3QKKyAgICAgICAgd29y
a3MgY29ycmVjdGx5LCBhbmQgdGhpcyBpc24ndCBtb3JlIGVmZmljaWVudCBiZWNhdXNlIG9mIGEg
bW9yZSBzcGVjaWZpYyB0eXBlLgorCisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9ucyk6
IFVzZSBIVE1MRGF0YUxpc3RFbGVtZW50OjpzdWdnZXN0aW9ucworICAgICAgICBpbnN0ZWFkIG9m
IEhUTUxDb2xsZWN0aW9uLiBBbHNvIGFkZGVkIGEgRklYTUUgYmVjYXVzZSB0aGUgY3VycmVudCBs
b2dpYyBpcworICAgICAgICBub3QgcmlnaHQgYWNyb3NzIGxhbmd1YWdlcyBhbmQgd2l0aCBub24t
QVNDSUkgY2hhcmFjdGVycy4KKworICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cDogUmVtb3ZlZCBpbmNsdWRlIG9mIEhUTUxDb2xsZWN0aW9uLmguCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0RWxlbWVudHNCeUNv
bXB1dGVkUm9sZSk6CisgICAgICAgIFVzZSBkZXNjZW5kYW50c09mVHlwZSBpbnN0ZWFkIG9mIGVs
ZW1lbnREZXNjZW5kYW50cy4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1h
dGNoZWRTdHlsZXNGb3JOb2RlKTogVXNlIGFuY2VzdG9yc09mVHlwZQorICAgICAgICBpbnN0ZWFk
IG9mIGEgaGFuZC13cml0dGVuIGxvb3AuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjppbnNwZWN0KTogVXNlIGlzRWxlbWVudE5vZGUgYW5kIGlzRG9jdW1lbnROb2RlCisgICAgICAg
IGluc3RlYWQgb2YgdGhlIG11Y2ggc2xvd2VyIG5vZGVUeXBlLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE1vdXNlZE92ZXJOb2RlKTogVXNlIGlzVGV4dE5v
ZGUgaW5zdGVhZCBvZgorICAgICAgICB0aGUgbXVjaCBzbG93ZXIgbm9kZVR5cGUuCisKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOiBEaXR0by4KKworICAgICAgICAq
IHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbmluZ0xp
bmtFbGVtZW50KTogQWRkZWQuIFVzZXMgbGluZWFnZU9mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnRM
aW5lYWdlLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyk6
IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0F4aXNT
Y3JvbGxTbmFwT2Zmc2V0cy5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlvbi5o
LgorCisgICAgICAgICogcGxhdGZvcm0vRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oOiBSZWR1
Y2VkIGluY2x1ZGVzLCB1c2UgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBh
aW50U2xpZGVyVGlja3MpOiBVc2UgSFRNTERhdGFMaXN0RWxlbWVudDo6c3VnZ2VzdGlvbnMKKyAg
ICAgICAgaW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBw
b3J0Ojp1cGRhdGVNYXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyk6CisgICAgICAg
IFVzZSBhbmNlc3RvcnNPZlR5cGUgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorCisg
ICAgICAgICogc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6SW52YWxpZGF0b3I6OmludmFsaWRhdGVTdHlsZUZvckRlc2NlbmRhbnRzKTogVXNlIG51
bGwgY2hlY2tpbmcKKyAgICAgICAgc3R5bGUgZm9yIHRoZSBmb3IgbG9vcCByYXRoZXIgdGhhbiBj
b21wYXJpbmcgd2l0aCBlbmQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SW52YWxpZGF0b3I6
OmludmFsaWRhdGVTdHlsZVdpdGhNYXRjaEVsZW1lbnQpOiBSZW1vdmUgYW4gdW5uZWVkZWQKKyAg
ICAgICAgbG9jYWwgdmFyaWFibGUgYW5kIHVubmVlZGVkIGJyYWNlcy4KKworICAgICAgICAqIHN0
eWxlL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OmlzQXRTaGFk
b3dCb3VuZGFyeSk6IFVzZSB0aGUgaXM8U2hhZG93Um9vdD4gZnVuY3Rpb24uCisKKyAgICAgICAg
KiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6IFVzZSB0aGUgaXM8U1ZHRWxlbWVudD4gZnVuY3Rpb24uCisg
ICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVu
dDo6dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24pOiBEaXR0by4KKworICAgICAgICAq
IHN2Zy9TVkdFbGVtZW50Lmg6IE1hZGUgY29tcHV0ZWRTdHlsZSBwdWJsaWMuIEF0IGxlYXN0IG9u
ZSBjYWxsIHNpdGUgbm93IGtub3dzIHRoZQorICAgICAgICBzcGVjaWZpYyB0eXBlIFNWR0VsZW1l
bnQsIGFuZCBzbyBjYW4gY2FsbCBpdCBldmVuIG1vcmUgZWZmaWNpZW50bHkgdGhhbiBiZWZvcmUu
IElmCisgICAgICAgIHdlIGxlZnQgaXQgcHJpdmF0ZSB3ZSdkIGhhdmUgdG8gY2FzdCB0byB0aGUg
YmFzZSBjbGFzcyB0byBjYWxsIGl0LCBhbmQgdGhlbiB3b3VsZCBuZWVkCisgICAgICAgIHZpcnR1
YWwgZnVuY3Rpb24gZGlzcGF0Y2guCisKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVEaXNhbGxvd2VkRWxlbWVudHNGcm9tU3VidHJlZSk6
IFVzZSBudWxsIGNoZWNraW5nIHN0eWxlIHJhdGhlciB0aGFuCisgICAgICAgIGNvbXBhcmluZyB3
aXRoIGVuZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmV4cGFuZFVzZUVsZW1l
bnRzSW5TaGFkb3dUcmVlIGNvbnN0KTogRGl0dG8uIEFsc28gYXNzaWduCisgICAgICAgIGFuIGVt
cHR5IGluaXRpYWxpemVyIGxpc3QgaW5zdGVhZCBvZiBlbmQuCisgICAgICAgIChXZWJDb3JlOjpT
VkdVc2VFbGVtZW50OjpleHBhbmRTeW1ib2xFbGVtZW50c0luU2hhZG93VHJlZSBjb25zdCk6IERp
dHRvLgorCisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KTog
VXNlIGxpbmVhZ2VPZlR5cGUgaW5zdGVhZCBvZgorICAgICAgICBlbGVtZW50TGluZWFnZS4gQWxz
byBhZGQgYSBudWxsIGNoZWNrIHRoYXQgc2VlbXMgdG8gaGF2ZSBiZWVuIG5lZWRlZCBiZWZvcmUg
dG9vLgorCiAyMDIwLTAyLTE2ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIGNsYXNzIFZpZGVvTGF5ZXJNYW5hZ2VyIHNpbmNlIGl0IGlzIG5vdCB1c2Vk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDAwMTQxNGE0MGE1ZjA0YmIxM2NkY2MwN2Y1ZmExOTAxZTU4YTZiODIuLjBi
Y2ZlYWE5YjMwMjU4ZDMzYWJiYjBjOTM1Y2NmNzA4NDYzMGFhMTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDggQEAKKzIwMjAtMDItMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlzZSBET00gaXRlcmF0b3JzIGltcGxlbWVudGF0aW9uIGFuZCB1c2FnZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3ODE2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OmNvbnRhaW5lckVsZW1lbnRGb3JFbGVtZW50KTogVWVzIGFuY2VzdG9yc09mVHlwZSBpbnN0
ZWFkIG9mIG93bmVyRGF0YUxpc3RFbGVtZW50LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9GdWxs
U2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcDogVXBkYXRlZCBpbmNsdWRlcy4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXIpOiBQYXNzIHJlZmVyZW5jZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2Vy
KTogVGFrZSByZWZlcmVuY2VzCisgICAgICAgIGluc3RlYWQgb2YgcG9pbnRlcnMsIHNpbmNlIHRo
ZXkgbXVzdCBib3RoIGJlIG5vbi1udWxsLgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXI6OmhhbmRsZUtleWRvd25XaXRoSWRlbnRpZmllcik6IFVwZGF0ZWQKKyAg
ICAgICAgdG8gdXNlIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdn
ZXN0aW9uUGlja2VyOjpkaWRTZWxlY3RPcHRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6
V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpkaWRDbG9zZVN1Z2dlc3Rpb25zKTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6Y2xvc2UpOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpkaXNw
bGF5V2l0aEFjdGl2YXRpb25UeXBlKTogRGl0dG8uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oOiBNYXJrZWQgdGhlIGNs
YXNzCisgICAgICAgIGZpbmFsLCBtYWRlIG1vcmUgZnVuY3Rpb25zIHByaXZhdGUsIHVzZSByZWZl
cmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMsCisgICAgICAgIHJlbmFtZWQgbV9kYXRhTGlzdFN1
Z2dlc3Rpb25zQ2xpZW50IHRvIG1fY2xpZW50IHNpbmNlIHRoZXJlIGlzIG9ubHkgb25lCisgICAg
ICAgIGNsaWVudCB3ZSBhcmUgZGVhbGluZyB3aXRoIGluIHRoaXMgY2xhc3MuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZTo6Y29udGFpbnNBbnlGb3JtRWxlbWVudHMgY29uc3QpOiBVc2UgY2hpbGRyZW5PZlR5cGUg
aW5zdGVhZAorICAgICAgICBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZTo6Y29udGFpbnNBbnlGb3JtQ29udHJvbHMgY29uc3QpOiBEaXR0by4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6c2V0QWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKTogVGFrZSByZWZlcmVu
Y2UuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDogVXBkYXRlZCBmb3Ig
dGhlIGFib3ZlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tOgorICAgICAgICAoV2ViS2l0Ojpjb250YWluaW5nTGlua0FuY2hvckVsZW1lbnQpOiBVc2Ug
bGluZWFnZU9mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnRMaW5lYWdlLgorICAgICAgICBBbHNvIHJl
bmFtZWQgdG8gZW1waGFzaXplIHRoYXQgdGhpcyBmdW5jdGlvbiBvbmx5IHJldHVybnMgSFRNTEFu
Y2hvckVsZW1lbnQgbGlua3MuCisgICAgICAgIChXZWJLaXQ6OmVsZW1lbnRQb3NpdGlvbkluZm9y
bWF0aW9uKTogVXBkYXRlZCBmb3IgbmFtZSBhbmQgdHlwZSBjaGFuZ2UuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQpOiBEaXR0by4KKwogMjAyMC0wMi0x
NiAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBS
ZW1vdmUgcmVtYWluaW5nIFdURl9FWFBPUlQgYW5kIFdURl9JTVBPUlQgYnkgcmVwbGFjaW5nIHRo
ZW0gd2l0aCBXVEZfRVhQT1JUX0RFQ0xBUkFUSU9OIGFuZCBXVEZfSU1QT1JUX0RFQ0xBUkFUSU9O
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggY2FjMDg3MGRiNTA2M2FjODk5NDQ2ODNi
NjZjZDAzMGE5ODk1YWJjYS4uOWU4NmM2ZWE3MWIxMzk3YTFjYjVmYzE0MzUwZGZlYzk3Y2JiMzcy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAy
LTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpc2UgRE9N
IGl0ZXJhdG9ycyBpbXBsZW1lbnRhdGlvbiBhbmQgdXNhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzgxNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOiBDdXQgZG93
biBvbiBpbmNsdWRlcyBhbmQgcmUtc29ydGVkIHRoZW0uCisgICAgICAgICogRE9NL0RPTURvY3Vt
ZW50RnJhZ21lbnQubW06IERpdHRvLgorICAgICAgICAqIERPTS9ET01IVE1MRmllbGRTZXRFbGVt
ZW50Lm1tOiBEaXR0by4KKwogMjAyMC0wMi0xNCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+
CiAKICAgICAgICAgTWFzayBXZWJHTCBzdHJpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBlYjQ0
MzFkZGQ3MTlmOGQxZjdjYjc0NzNmMjJmNWIyNTM3Nzg1MzBjLi5hZDVmOWRhZDUwZWJmZDdmMDU5
OGQwNjA0ZmYyMWI3MmY2ZGE4MDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTM5MCw3ICszOTAs
NiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgZG9tL0VsZW1l
bnRDaGlsZEl0ZXJhdG9yLmgKICAgICBkb20vRWxlbWVudENvbnRleHQuaAogICAgIGRvbS9FbGVt
ZW50RGF0YS5oCi0gICAgZG9tL0VsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaAogICAgIGRvbS9F
bGVtZW50SWRlbnRpZmllci5oCiAgICAgZG9tL0VsZW1lbnRJdGVyYXRvci5oCiAgICAgZG9tL0Vs
ZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNkYWFkMjM2OTA0MWYzZDMyZTIyMTA1MTZm
MTA3OGJmY2I4NDE3MjYuLmU1NTIxODRhZDQwZWFhZGEwYjcwYThjY2ZmMzkxYTI2ZjdjMDM3Nzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTI2OTIsNyArMjY5Miw2IEBACiAJCTkzRDE5NjMzMUQ2Q0FCODIwMEZDN0U0NyAvKiBF
eGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzRDE5NjMyMUQ2Q0FCODIwMEZDN0U0NyAvKiBFeGNlcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q0Mzc5RjFENTdCMTUzMDBBQjg1
RUEgLyogSlNFeGVjU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDhGOTM0RDgzMTE4OUYxRUUwMDUwOEQ1RCAvKiBKU0V4ZWNTdGF0ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDQzN0EwMUQ1
N0IxOUEwMEFCODVFQSAvKiBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1NkM5QTgxQzg5MzEyODAwQzQ1
NkRGIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTNENDM3QTExRDU3QjNGNDAwQUI4NUVBIC8q
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFERTExRjRBMThEODMxMUIwMDc4OTgzQiAvKiBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTNENDM3QTIxRDU3QjNGRTAwQUI4NUVBIC8qIFVSTFV0aWxzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTZCOURDQTE4OURFMTAw
MDBCQjg0MkMgLyogVVJMVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5M0Q0MzdBMzFENTdCN0UyMDBBQjg1RUEgLyogSlNNZWRpYUxpc3RD
dXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFE
NzI2RkU3MTZEOUYyMDQwMDNBNEU2RCAvKiBKU01lZGlhTGlzdEN1c3RvbS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDlENTNDMERBMjdFMTgw
MDc3MjE2QyAvKiBSYW5nZUJvdW5kYXJ5UG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDlENTNCMERBMjdFMTgwMDc3MjE2QyAvKiBSYW5nZUJv
dW5kYXJ5UG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTA3MTMsNiArMTA3MTIsNyBAQAogCQk5MzgwRjQ3MTA5QTExQUI0MDAxRkRCMzQg
LyogV2lkZ2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaWRn
ZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzgwRjQ3MjA5QTExQUI0MDAx
RkRCMzQgLyogV2lkZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaWRn
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM4MEY0NzcwOUExMUFDQzAwMUZE
QjM0IC8qIFdpZGdldE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXaWRnZXRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzODFCOTQx
MjNGOUIwRTAwMDcxMThCNCAvKiBSYWRpb05vZGVMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSYWRpb05vZGVMaXN0
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM4MkFBQjEwRDhDMzg2MTAwRjM1
N0E2IC8qIE5vZGVXaXRoSW5kZXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Tm9kZVdpdGhJbmRleC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzgyREY1NzEw
QThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb2xvclNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOEU2
NUYwMDlGMDk4NDAwMDhBNDhFQyAvKiBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9y
eS5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxFbGVtZW50V3JhcHBlckZh
Y3RvcnkuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTEyMjU4LDcg
KzEyMjU4LDYgQEAKIAkJQUREQTk0QkYxOTY4NkY4MDAwNDUzMDI5IC8qIEpTRG9jdW1lbnRDdXN0
b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEb2N1bWVudEN1c3RvbS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRERGMUFENDEyNTdDRDlBMDAwM0E3NTkg
LyogUmVuZGVyU1ZHUGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW5kZXJTVkdQYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURERjFB
RDUxMjU3Q0Q5QTAwMDNBNzU5IC8qIFJlbmRlclNWR1BhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHUGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlBREUxMUY0QTE4RDgzMTFCMDA3ODk4M0IgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFERTE2NzM2MTgxMDUwQzMw
MDQ2M0EyRSAvKiBSZW5kZXJQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVuZGVyUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFERUM3OEY3MThFRTUz
MDgwMDEzMTVDMiAvKiBKU0VsZW1lbnRDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNFbGVtZW50Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUFERkUyQjU0MUJENUY0MTIwMERBQjQ1NyAvKiBSZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VVc2FnZU92
ZXJsYXlDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMTI1LDYgKzIy
MTI0LDcgQEAKIAkJCQlGNTVCM0Q5ODEyNTFGMTJEMDAzRUYyNjkgLyogUmFkaW9JbnB1dFR5cGUu
aCAqLywKIAkJCQlCNjU4RkZBMzE1MjJFRkFBMDBERDU1OTUgLyogUmFkaW9Ob2RlTGlzdC5jcHAg
Ki8sCiAJCQkJQjY1OEZGQTQxNTIyRUZBQTAwREQ1NTk1IC8qIFJhZGlvTm9kZUxpc3QuaCAqLywK
KwkJCQk5MzgxQjk0MTIzRjlCMEUwMDA3MTE4QjQgLyogUmFkaW9Ob2RlTGlzdC5pZGwgKi8sCiAJ
CQkJRjU1QjNEOTkxMjUxRjEyRDAwM0VGMjY5IC8qIFJhbmdlSW5wdXRUeXBlLmNwcCAqLywKIAkJ
CQlGNTVCM0Q5QTEyNTFGMTJEMDAzRUYyNjkgLyogUmFuZ2VJbnB1dFR5cGUuaCAqLywKIAkJCQlG
NTVCM0Q5QjEyNTFGMTJEMDAzRUYyNjkgLyogUmVzZXRJbnB1dFR5cGUuY3BwICovLApAQCAtMjgw
OTYsNyArMjgwOTYsNiBAQAogCQkJCTMxM0JDRTFCMjM1RTNCREIwMEZDMzlFNSAvKiBFbGVtZW50
Q29udGV4dC5oICovLAogCQkJCUI1QjdBMTZGMTdDMTA4MDYwMEU0QUEwQSAvKiBFbGVtZW50RGF0
YS5jcHAgKi8sCiAJCQkJQjVCN0ExNkUxN0MxMDQ4MDAwRTRBQTBBIC8qIEVsZW1lbnREYXRhLmgg
Ki8sCi0JCQkJQURFMTFGNEExOEQ4MzExQjAwNzg5ODNCIC8qIEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3IuaCAqLywKIAkJCQkyRDJCRUIyRjIyMzRBMzM0MDA1NTQ0Q0EgLyogRWxlbWVudElkZW50
aWZpZXIuaCAqLywKIAkJCQlFNEFFN0MxNTE3RDFCQjk1MDAwOUZCMzEgLyogRWxlbWVudEl0ZXJh
dG9yLmggKi8sCiAJCQkJRTQwMUMyNzQxN0NFNTNFQzAwQzQxQTM1IC8qIEVsZW1lbnRJdGVyYXRv
ckFzc2VydGlvbnMuaCAqLywKQEAgLTI5NzYyLDcgKzI5NzYxLDYgQEAKIAkJCQlFNDZBMkIxRTE3
Q0E3NkIxMDAwREJDRDggLyogRWxlbWVudENoaWxkSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxM0JDRTFDMjM1RTNCRTUwMEZDMzlFNSAvKiBFbGVtZW50Q29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjVCN0ExNzExN0MxMEFDMDAwRTRBQTBBIC8qIEVsZW1lbnREYXRhLmggaW4g
SGVhZGVycyAqLywKLQkJCQk5M0Q0MzdBMTFENTdCM0Y0MDBBQjg1RUEgLyogRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQyQkVCMzEyMjM0QTMzNTAwNTU0
NENBIC8qIEVsZW1lbnRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFFN0MxNjE3
RDFCQjk1MDAwOUZCMzEgLyogRWxlbWVudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NDAxQzI3NTE3Q0U1M0VDMDBDNDFBMzUgLyogRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCmluZGV4IDIwOWViOGU2NThlMGI3MzQxOGVjMmNk
MDBjZDgwYTQxNmZhMjkzM2EuLjQ1OGE0MDU3ZTJjZmZkMmY2Zjg1Y2U4MDFjYWY5ZDYxZDI4MDI5
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC0xMDQ0LDcgKzEwNDQsNyBAQCBFbGVtZW50KiBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6bW91c2VCdXR0b25MaXN0ZW5lcihNb3VzZUJ1dHRvbkxpc3Rl
bmVyUmVzdWx0RgogCiAgICAgLy8gY2hlY2sgaWYgb3VyIHBhcmVudCBpcyBhIG1vdXNlIGJ1dHRv
biBsaXN0ZW5lcgogICAgIC8vIEZJWE1FOiBEbyB0aGUgY29udGludWF0aW9uIHNlYXJjaCBsaWtl
IGFuY2hvckVsZW1lbnQgZG9lcwotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnRMaW5l
YWdlKGlzPEVsZW1lbnQ+KCpub2RlKSA/IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpIDogbm9kZS0+
cGFyZW50RWxlbWVudCgpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5
cGU8RWxlbWVudD4oaXM8RWxlbWVudD4oKm5vZGUpID8gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUp
IDogKm5vZGUtPnBhcmVudEVsZW1lbnQoKSkpIHsKICAgICAgICAgLy8gSWYgd2UndmUgcmVhY2hl
ZCB0aGUgYm9keSBhbmQgdGhpcyBpcyBub3QgYSBjb250cm9sIGVsZW1lbnQsIGRvIG5vdCBleHBv
c2UgcHJlc3MgYWN0aW9uIGZvciB0aGlzIGVsZW1lbnQgdW5sZXNzIGZpbHRlciBpcyBJbmNsdWRl
Qm9keUVsZW1lbnQuCiAgICAgICAgIC8vIEl0IGNhbiBjYXVzZSBmYWxzZSBwb3NpdGl2ZXMsIHdo
ZXJlIGV2ZXJ5IHBpZWNlIG9mIHRleHQgaXMgbGFiZWxlZCBhcyBhY2NlcHRpbmcgcHJlc3MgYWN0
aW9ucy4KICAgICAgICAgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShib2R5VGFnKSAmJiBpc1N0YXRp
Y1RleHQoKSAmJiBmaWx0ZXIgPT0gRXhjbHVkZUJvZHlFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKaW5kZXggOTZmMzNjYjczNGE3MDgzNjliNGYzYmEzZDU0ODQ4OGU1MDQ5NTc3MC4uOGE4MzAw
ZDA5N2UxMGZjNGYzMzAzNzMzNDFjMTE0YTE3MTlhMzAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIzNzUsMjEgKzIzNzUsMTkgQEAgQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjphY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhUTUxBcmVhRWwKICAgICBpZiAoIWFy
ZWEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
cGFyZW50ID0gbnVsbHB0cjsKLSAgICBmb3IgKEVsZW1lbnQqIG1hcFBhcmVudCA9IGFyZWEtPnBh
cmVudEVsZW1lbnQoKTsgbWFwUGFyZW50OyBtYXBQYXJlbnQgPSBtYXBQYXJlbnQtPnBhcmVudEVs
ZW1lbnQoKSkgewotICAgICAgICBpZiAoaXM8SFRNTE1hcEVsZW1lbnQ+KCptYXBQYXJlbnQpKSB7
Ci0gICAgICAgICAgICBwYXJlbnQgPSBhY2Nlc3NpYmlsaXR5UGFyZW50Rm9ySW1hZ2VNYXAoZG93
bmNhc3Q8SFRNTE1hcEVsZW1lbnQ+KG1hcFBhcmVudCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICB9CisgICAgYXV0byogbWFwUGFyZW50ID0gYW5jZXN0b3JzT2ZUeXBlPEhU
TUxNYXBFbGVtZW50PigqYXJlYSkuZmlyc3QoKTsKKyAgICBpZiAoIW1hcFBhcmVudCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiBwYXJlbnQgPSBhY2Nlc3NpYmlsaXR5UGFy
ZW50Rm9ySW1hZ2VNYXAobWFwUGFyZW50KTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcGFyZW50
LT5jaGlsZHJlbigpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+ZWxlbWVudFJlY3QoKS5jb250YWlu
cyhwb2ludCkpCiAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7CiAgICAgfQotICAgIAor
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAppbmRleCBmZGM2N2Y4
YWMxNTZhNWFkYmJhYTYxMzU3NmI4NjgyYWU2MjcxNWExLi5mZjQ3OGZkMjM2MTc4YmEzOWJjMjJk
YzE5NWExNDhhNTc5MmUyN2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCkBAIC0zMSw3ICszMSw2IEBA
CiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZS5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
CmluZGV4IDIwNTA2ZjhlY2ZhYzY1M2U1NWFkMDQ4MWRkYTU2MGY1ZmQ3MmE1NGQuLjRlMDA5ZmVk
NmJkMGUzMTE1N2M2NjQwOWM3YjM1ZmNjN2VmZjIzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKICNp
bmNsdWRlICJET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaCIKICNpbmNsdWRlICJET01XaW5kb3dX
ZWJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rp
b24uaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25l
ckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgpAQCAtMzgsNyArMzcsNiBAQAog
I2luY2x1ZGUgIkpTRXZlbnQuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJKU0hUTUxBdWRpb0VsZW1lbnQuaCIKLSNpbmNsdWRlICJKU0hUTUxDb2xsZWN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSURCRmFjdG9y
eS5oIgogI2luY2x1ZGUgIkpTUmVtb3RlRE9NV2luZG93LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRO
b2RlTGlzdC5jcHAKaW5kZXggY2JmNmYxZTc4MjY5MTA5MjVhNjU2NTJjMzNhZTBjZmQ1NjY3YjIw
My4uNDdlNDZkY2JiNTU5OGU3ODIzNzU1NmRiN2E3YWNmZTIwNDk4ZTEwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGlsZE5vZGVMaXN0LmNwcApAQCAtMzksNyArMzksNiBAQCBFbXB0eU5vZGVMaXN0Ojp+
RW1wdHlOb2RlTGlzdCgpCiAKIENoaWxkTm9kZUxpc3Q6OkNoaWxkTm9kZUxpc3QoQ29udGFpbmVy
Tm9kZSYgcGFyZW50KQogICAgIDogbV9wYXJlbnQocGFyZW50KQotICAgICwgbV9pbmRleENhY2hl
KCp0aGlzKQogewogfQogCkBAIC04Nyw3ICs4Niw3IEBAIHZvaWQgQ2hpbGROb2RlTGlzdDo6Y29s
bGVjdGlvblRyYXZlcnNlQmFja3dhcmQoTm9kZSomIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KSBj
CiAKIHZvaWQgQ2hpbGROb2RlTGlzdDo6aW52YWxpZGF0ZUNhY2hlKCkKIHsKLSAgICBtX2luZGV4
Q2FjaGUuaW52YWxpZGF0ZSgqdGhpcyk7CisgICAgbV9pbmRleENhY2hlLmludmFsaWRhdGUoKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NoaWxkTm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmgK
aW5kZXggMTEzMjgyZWQ5NjIyYTlkNTAxYWE3NGUwMzJkODdjNjkxY2I5MzdiNi4uMTBiOWEyODY5
MDJmNmRhNzMwZDFmNDNiNTNkNzY1M2YwMDQ0ZjM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NoaWxkTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2Rl
TGlzdC5oCkBAIC03Miw3ICs3Miw2IEBAIHB1YmxpYzoKICAgICAvLyBGb3IgQ29sbGVjdGlvbklu
ZGV4Q2FjaGUKICAgICBOb2RlKiBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdDsKICAgICBOb2RlKiBj
b2xsZWN0aW9uTGFzdCgpIGNvbnN0OwotICAgIE5vZGUqIGNvbGxlY3Rpb25FbmQoKSBjb25zdCB7
IHJldHVybiBudWxscHRyOyB9CiAgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKE5v
ZGUqJiwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3Q7CiAg
ICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChOb2RlKiYsIHVuc2lnbmVkIGNvdW50
KSBjb25zdDsKICAgICBib29sIGNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJhY2t3YXJkKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbGxlY3Rp
b25JbmRleENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29sbGVjdGlvbkluZGV4Q2FjaGUu
aAppbmRleCAyODAxOTQyZmRhMDg4YzVjNWY2YTExNWEyNTk0Nzg4NWI1ZWViMWY5Li5lZDNmMGFl
ZjFlNGI2N2Q0YmVkNjdkMjU0MDdiYmQ3ODJlNGMxNTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29sbGVjdGlvbkluZGV4Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29sbGVjdGlvbkluZGV4Q2FjaGUuaApAQCAtMzQsMTUgKzM0LDE1IEBAIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWRGb3JDb2xsZWN0aW9uSW5kZXhDYWNoZShz
aXplX3QpOwogdGVtcGxhdGUgPGNsYXNzIENvbGxlY3Rpb24sIGNsYXNzIEl0ZXJhdG9yPgogY2xh
c3MgQ29sbGVjdGlvbkluZGV4Q2FjaGUgewogcHVibGljOgotICAgIGV4cGxpY2l0IENvbGxlY3Rp
b25JbmRleENhY2hlKGNvbnN0IENvbGxlY3Rpb24mKTsKKyAgICBDb2xsZWN0aW9uSW5kZXhDYWNo
ZSgpOwogCiAgICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRv
cj46OnZhbHVlX3R5cGUgTm9kZVR5cGU7CiAKICAgICB1bnNpZ25lZCBub2RlQ291bnQoY29uc3Qg
Q29sbGVjdGlvbiYpOwogICAgIE5vZGVUeXBlKiBub2RlQXQoY29uc3QgQ29sbGVjdGlvbiYsIHVu
c2lnbmVkIGluZGV4KTsKIAotICAgIGJvb2wgaGFzVmFsaWRDYWNoZShjb25zdCBDb2xsZWN0aW9u
JiBjb2xsZWN0aW9uKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnQgIT0gY29sbGVjdGlvbi5jb2xs
ZWN0aW9uRW5kKCkgfHwgbV9ub2RlQ291bnRWYWxpZCB8fCBtX2xpc3RWYWxpZDsgfQotICAgIHZv
aWQgaW52YWxpZGF0ZShjb25zdCBDb2xsZWN0aW9uJik7CisgICAgYm9vbCBoYXNWYWxpZENhY2hl
KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50IHx8IG1fbm9kZUNvdW50VmFsaWQgfHwgbV9saXN0
VmFsaWQ7IH0KKyAgICB2b2lkIGludmFsaWRhdGUoKTsKICAgICBzaXplX3QgbWVtb3J5Q29zdCgp
CiAgICAgewogICAgICAgICAvLyBtZW1vcnlDb3N0KCkgbWF5IGJlIGludm9rZWQgY29uY3VycmVu
dGx5IGZyb20gYSBHQyB0aHJlYWQsIGFuZCB3ZSBuZWVkIHRvIGJlIGNhcmVmdWwKQEAgLTU3LDE5
ICs1NywxNSBAQCBwcml2YXRlOgogICAgIE5vZGVUeXBlKiB0cmF2ZXJzZUZvcndhcmRUbyhjb25z
dCBDb2xsZWN0aW9uJiwgdW5zaWduZWQpOwogCiAgICAgSXRlcmF0b3IgbV9jdXJyZW50OwotICAg
IHVuc2lnbmVkIG1fY3VycmVudEluZGV4OwotICAgIHVuc2lnbmVkIG1fbm9kZUNvdW50OworICAg
IHVuc2lnbmVkIG1fY3VycmVudEluZGV4IHsgMCB9OworICAgIHVuc2lnbmVkIG1fbm9kZUNvdW50
IHsgMCB9OwogICAgIFZlY3RvcjxOb2RlVHlwZSo+IG1fY2FjaGVkTGlzdDsKICAgICBib29sIG1f
bm9kZUNvdW50VmFsaWQgOiAxOwogICAgIGJvb2wgbV9saXN0VmFsaWQgOiAxOwogfTsKIAotdGVt
cGxhdGUgPGNsYXNzIENvbGxlY3Rpb24sIGNsYXNzIEl0ZXJhdG9yPgotaW5saW5lIENvbGxlY3Rp
b25JbmRleENhY2hlPENvbGxlY3Rpb24sIEl0ZXJhdG9yPjo6Q29sbGVjdGlvbkluZGV4Q2FjaGUo
Y29uc3QgQ29sbGVjdGlvbiYgY29sbGVjdGlvbikKLSAgICA6IG1fY3VycmVudChjb2xsZWN0aW9u
LmNvbGxlY3Rpb25FbmQoKSkKLSAgICAsIG1fY3VycmVudEluZGV4KDApCi0gICAgLCBtX25vZGVD
b3VudCgwKQotICAgICwgbV9ub2RlQ291bnRWYWxpZChmYWxzZSkKK3RlbXBsYXRlPGNsYXNzIENv
bGxlY3Rpb24sIGNsYXNzIEl0ZXJhdG9yPiBDb2xsZWN0aW9uSW5kZXhDYWNoZTxDb2xsZWN0aW9u
LCBJdGVyYXRvcj46OkNvbGxlY3Rpb25JbmRleENhY2hlKCkKKyAgICA6IG1fbm9kZUNvdW50VmFs
aWQoZmFsc2UpCiAgICAgLCBtX2xpc3RWYWxpZChmYWxzZSkKIHsKIH0KQEAgLTc4LDcgKzc0LDcg
QEAgdGVtcGxhdGUgPGNsYXNzIENvbGxlY3Rpb24sIGNsYXNzIEl0ZXJhdG9yPgogaW5saW5lIHVu
c2lnbmVkIENvbGxlY3Rpb25JbmRleENhY2hlPENvbGxlY3Rpb24sIEl0ZXJhdG9yPjo6bm9kZUNv
dW50KGNvbnN0IENvbGxlY3Rpb24mIGNvbGxlY3Rpb24pCiB7CiAgICAgaWYgKCFtX25vZGVDb3Vu
dFZhbGlkKSB7Ci0gICAgICAgIGlmICghaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKSkKKyAgICAg
ICAgaWYgKCFoYXNWYWxpZENhY2hlKCkpCiAgICAgICAgICAgICBjb2xsZWN0aW9uLndpbGxWYWxp
ZGF0ZUluZGV4Q2FjaGUoKTsKICAgICAgICAgbV9ub2RlQ291bnQgPSBjb21wdXRlTm9kZUNvdW50
VXBkYXRpbmdMaXN0Q2FjaGUoY29sbGVjdGlvbik7CiAgICAgICAgIG1fbm9kZUNvdW50VmFsaWQg
PSB0cnVlOwpAQCAtOTEsMTYgKzg3LDE1IEBAIHRlbXBsYXRlIDxjbGFzcyBDb2xsZWN0aW9uLCBj
bGFzcyBJdGVyYXRvcj4KIHVuc2lnbmVkIENvbGxlY3Rpb25JbmRleENhY2hlPENvbGxlY3Rpb24s
IEl0ZXJhdG9yPjo6Y29tcHV0ZU5vZGVDb3VudFVwZGF0aW5nTGlzdENhY2hlKGNvbnN0IENvbGxl
Y3Rpb24mIGNvbGxlY3Rpb24pCiB7CiAgICAgYXV0byBjdXJyZW50ID0gY29sbGVjdGlvbi5jb2xs
ZWN0aW9uQmVnaW4oKTsKLSAgICBhdXRvIGVuZCA9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgp
OwotICAgIGlmIChjdXJyZW50ID09IGVuZCkKKyAgICBpZiAoIWN1cnJlbnQpCiAgICAgICAgIHJl
dHVybiAwOwogCiAgICAgdW5zaWduZWQgb2xkQ2FwYWNpdHkgPSBtX2NhY2hlZExpc3QuY2FwYWNp
dHkoKTsKLSAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQpIHsKKyAgICB3aGlsZSAoY3VycmVudCkg
ewogICAgICAgICBtX2NhY2hlZExpc3QuYXBwZW5kKCYqY3VycmVudCk7CiAgICAgICAgIHVuc2ln
bmVkIHRyYXZlcnNlZDsKICAgICAgICAgY29sbGVjdGlvbi5jb2xsZWN0aW9uVHJhdmVyc2VGb3J3
YXJkKGN1cnJlbnQsIDEsIHRyYXZlcnNlZCk7Ci0gICAgICAgIEFTU0VSVCh0cmF2ZXJzZWQgPT0g
KGN1cnJlbnQgIT0gZW5kID8gMSA6IDApKTsKKyAgICAgICAgQVNTRVJUKHRyYXZlcnNlZCA9PSAo
Y3VycmVudCA/IDEgOiAwKSk7CiAgICAgfQogICAgIG1fbGlzdFZhbGlkID0gdHJ1ZTsKIApAQCAt
MTEzLDcgKzEwOCw3IEBAIHVuc2lnbmVkIENvbGxlY3Rpb25JbmRleENhY2hlPENvbGxlY3Rpb24s
IEl0ZXJhdG9yPjo6Y29tcHV0ZU5vZGVDb3VudFVwZGF0aW5nTGlzCiB0ZW1wbGF0ZSA8Y2xhc3Mg
Q29sbGVjdGlvbiwgY2xhc3MgSXRlcmF0b3I+CiBpbmxpbmUgdHlwZW5hbWUgQ29sbGVjdGlvbklu
ZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+OjpOb2RlVHlwZSogQ29sbGVjdGlvbkluZGV4
Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+Ojp0cmF2ZXJzZUJhY2t3YXJkVG8oY29uc3QgQ29s
bGVjdGlvbiYgY29sbGVjdGlvbiwgdW5zaWduZWQgaW5kZXgpCiB7Ci0gICAgQVNTRVJUKG1fY3Vy
cmVudCAhPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKSk7CisgICAgQVNTRVJUKG1fY3VycmVu
dCk7CiAgICAgQVNTRVJUKGluZGV4IDwgbV9jdXJyZW50SW5kZXgpOwogCiAgICAgYm9vbCBmaXJz
dElzQ2xvc2VyID0gaW5kZXggPCBtX2N1cnJlbnRJbmRleCAtIGluZGV4OwpAQCAtMTIyLDUwICsx
MTcsNTAgQEAgaW5saW5lIHR5cGVuYW1lIENvbGxlY3Rpb25JbmRleENhY2hlPENvbGxlY3Rpb24s
IEl0ZXJhdG9yPjo6Tm9kZVR5cGUqIENvbGxlY3Rpb24KICAgICAgICAgbV9jdXJyZW50SW5kZXgg
PSAwOwogICAgICAgICBpZiAoaW5kZXgpCiAgICAgICAgICAgICBjb2xsZWN0aW9uLmNvbGxlY3Rp
b25UcmF2ZXJzZUZvcndhcmQobV9jdXJyZW50LCBpbmRleCwgbV9jdXJyZW50SW5kZXgpOwotICAg
ICAgICBBU1NFUlQobV9jdXJyZW50ICE9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpKTsKKyAg
ICAgICAgQVNTRVJUKG1fY3VycmVudCk7CiAgICAgICAgIHJldHVybiAmKm1fY3VycmVudDsKICAg
ICB9CiAKICAgICBjb2xsZWN0aW9uLmNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKG1fY3VycmVu
dCwgbV9jdXJyZW50SW5kZXggLSBpbmRleCk7CiAgICAgbV9jdXJyZW50SW5kZXggPSBpbmRleDsK
IAotICAgIEFTU0VSVChtX2N1cnJlbnQgIT0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCkpOwor
ICAgIEFTU0VSVChtX2N1cnJlbnQpOwogICAgIHJldHVybiAmKm1fY3VycmVudDsKIH0KIAogdGVt
cGxhdGUgPGNsYXNzIENvbGxlY3Rpb24sIGNsYXNzIEl0ZXJhdG9yPgogaW5saW5lIHR5cGVuYW1l
IENvbGxlY3Rpb25JbmRleENhY2hlPENvbGxlY3Rpb24sIEl0ZXJhdG9yPjo6Tm9kZVR5cGUqIENv
bGxlY3Rpb25JbmRleENhY2hlPENvbGxlY3Rpb24sIEl0ZXJhdG9yPjo6dHJhdmVyc2VGb3J3YXJk
VG8oY29uc3QgQ29sbGVjdGlvbiYgY29sbGVjdGlvbiwgdW5zaWduZWQgaW5kZXgpCiB7Ci0gICAg
QVNTRVJUKG1fY3VycmVudCAhPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKSk7CisgICAgQVNT
RVJUKG1fY3VycmVudCk7CiAgICAgQVNTRVJUKGluZGV4ID4gbV9jdXJyZW50SW5kZXgpOwogICAg
IEFTU0VSVCghbV9ub2RlQ291bnRWYWxpZCB8fCBpbmRleCA8IG1fbm9kZUNvdW50KTsKIAogICAg
IGJvb2wgbGFzdElzQ2xvc2VyID0gbV9ub2RlQ291bnRWYWxpZCAmJiBtX25vZGVDb3VudCAtIGlu
ZGV4IDwgaW5kZXggLSBtX2N1cnJlbnRJbmRleDsKICAgICBpZiAobGFzdElzQ2xvc2VyICYmIGNv
bGxlY3Rpb24uY29sbGVjdGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSkgewotICAgICAgICBBU1NF
UlQoaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKSk7CisgICAgICAgIEFTU0VSVChoYXNWYWxpZENh
Y2hlKCkpOwogICAgICAgICBtX2N1cnJlbnQgPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25MYXN0KCk7
CiAgICAgICAgIGlmIChpbmRleCA8IG1fbm9kZUNvdW50IC0gMSkKICAgICAgICAgICAgIGNvbGxl
Y3Rpb24uY29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQobV9jdXJyZW50LCBtX25vZGVDb3VudCAt
IGluZGV4IC0gMSk7CiAgICAgICAgIG1fY3VycmVudEluZGV4ID0gaW5kZXg7Ci0gICAgICAgIEFT
U0VSVChtX2N1cnJlbnQgIT0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCkpOworICAgICAgICBB
U1NFUlQobV9jdXJyZW50KTsKICAgICAgICAgcmV0dXJuICYqbV9jdXJyZW50OwogICAgIH0KIAot
ICAgIGlmICghaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKSkKKyAgICBpZiAoIWhhc1ZhbGlkQ2Fj
aGUoKSkKICAgICAgICAgY29sbGVjdGlvbi53aWxsVmFsaWRhdGVJbmRleENhY2hlKCk7CiAKICAg
ICB1bnNpZ25lZCB0cmF2ZXJzZWRDb3VudDsKICAgICBjb2xsZWN0aW9uLmNvbGxlY3Rpb25UcmF2
ZXJzZUZvcndhcmQobV9jdXJyZW50LCBpbmRleCAtIG1fY3VycmVudEluZGV4LCB0cmF2ZXJzZWRD
b3VudCk7CiAgICAgbV9jdXJyZW50SW5kZXggPSBtX2N1cnJlbnRJbmRleCArIHRyYXZlcnNlZENv
dW50OwogCi0gICAgaWYgKG1fY3VycmVudCA9PSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKSkg
eworICAgIGlmICghbV9jdXJyZW50KSB7CiAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRJbmRleCA8
IGluZGV4KTsKICAgICAgICAgLy8gRmFpbGVkIHRvIGZpbmQgdGhlIGluZGV4IGJ1dCBhdCBsZWFz
dCB3ZSBub3cga25vdyB0aGUgc2l6ZS4KICAgICAgICAgbV9ub2RlQ291bnQgPSBtX2N1cnJlbnRJ
bmRleCArIDE7CiAgICAgICAgIG1fbm9kZUNvdW50VmFsaWQgPSB0cnVlOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgQVNTRVJUKGhhc1ZhbGlkQ2FjaGUoY29sbGVjdGlvbikp
OworICAgIEFTU0VSVChoYXNWYWxpZENhY2hlKCkpOwogICAgIHJldHVybiAmKm1fY3VycmVudDsK
IH0KIApAQCAtMTc4LDggKzE3Myw3IEBAIGlubGluZSB0eXBlbmFtZSBDb2xsZWN0aW9uSW5kZXhD
YWNoZTxDb2xsZWN0aW9uLCBJdGVyYXRvcj46Ok5vZGVUeXBlKiBDb2xsZWN0aW9uCiAgICAgaWYg
KG1fbGlzdFZhbGlkKQogICAgICAgICByZXR1cm4gbV9jYWNoZWRMaXN0W2luZGV4XTsKIAotICAg
IGF1dG8gZW5kID0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCk7Ci0gICAgaWYgKG1fY3VycmVu
dCAhPSBlbmQpIHsKKyAgICBpZiAobV9jdXJyZW50KSB7CiAgICAgICAgIGlmIChpbmRleCA+IG1f
Y3VycmVudEluZGV4KQogICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlRm9yd2FyZFRvKGNvbGxl
Y3Rpb24sIGluZGV4KTsKICAgICAgICAgaWYgKGluZGV4IDwgbV9jdXJyZW50SW5kZXgpCkBAIC0x
ODksMzkgKzE4MywzOSBAQCBpbmxpbmUgdHlwZW5hbWUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Q29s
bGVjdGlvbiwgSXRlcmF0b3I+OjpOb2RlVHlwZSogQ29sbGVjdGlvbgogCiAgICAgYm9vbCBsYXN0
SXNDbG9zZXIgPSBtX25vZGVDb3VudFZhbGlkICYmIG1fbm9kZUNvdW50IC0gaW5kZXggPCBpbmRl
eDsKICAgICBpZiAobGFzdElzQ2xvc2VyICYmIGNvbGxlY3Rpb24uY29sbGVjdGlvbkNhblRyYXZl
cnNlQmFja3dhcmQoKSkgewotICAgICAgICBBU1NFUlQoaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9u
KSk7CisgICAgICAgIEFTU0VSVChoYXNWYWxpZENhY2hlKCkpOwogICAgICAgICBtX2N1cnJlbnQg
PSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25MYXN0KCk7CiAgICAgICAgIGlmIChpbmRleCA8IG1fbm9k
ZUNvdW50IC0gMSkKICAgICAgICAgICAgIGNvbGxlY3Rpb24uY29sbGVjdGlvblRyYXZlcnNlQmFj
a3dhcmQobV9jdXJyZW50LCBtX25vZGVDb3VudCAtIGluZGV4IC0gMSk7CiAgICAgICAgIG1fY3Vy
cmVudEluZGV4ID0gaW5kZXg7Ci0gICAgICAgIEFTU0VSVChtX2N1cnJlbnQgIT0gZW5kKTsKKyAg
ICAgICAgQVNTRVJUKG1fY3VycmVudCk7CiAgICAgICAgIHJldHVybiAmKm1fY3VycmVudDsKICAg
ICB9CiAKLSAgICBpZiAoIWhhc1ZhbGlkQ2FjaGUoY29sbGVjdGlvbikpCisgICAgaWYgKCFoYXNW
YWxpZENhY2hlKCkpCiAgICAgICAgIGNvbGxlY3Rpb24ud2lsbFZhbGlkYXRlSW5kZXhDYWNoZSgp
OwogCiAgICAgbV9jdXJyZW50ID0gY29sbGVjdGlvbi5jb2xsZWN0aW9uQmVnaW4oKTsKICAgICBt
X2N1cnJlbnRJbmRleCA9IDA7Ci0gICAgYm9vbCBzdGFydElzRW5kID0gbV9jdXJyZW50ID09IGVu
ZDsKLSAgICBpZiAoaW5kZXggJiYgIXN0YXJ0SXNFbmQpIHsKKyAgICBib29sIHN0YXJ0SXNFbmQg
PSAhbV9jdXJyZW50OworICAgIGlmIChpbmRleCAmJiBtX2N1cnJlbnQpIHsKICAgICAgICAgY29s
bGVjdGlvbi5jb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKG1fY3VycmVudCwgaW5kZXgsIG1fY3Vy
cmVudEluZGV4KTsKLSAgICAgICAgQVNTRVJUKG1fY3VycmVudCAhPSBlbmQgfHwgbV9jdXJyZW50
SW5kZXggPCBpbmRleCk7CisgICAgICAgIEFTU0VSVChtX2N1cnJlbnQgfHwgbV9jdXJyZW50SW5k
ZXggPCBpbmRleCk7CiAgICAgfQotICAgIGlmIChtX2N1cnJlbnQgPT0gZW5kKSB7CisgICAgaWYg
KCFtX2N1cnJlbnQpIHsKICAgICAgICAgLy8gRmFpbGVkIHRvIGZpbmQgdGhlIGluZGV4IGJ1dCBh
dCBsZWFzdCB3ZSBub3cga25vdyB0aGUgc2l6ZS4KICAgICAgICAgbV9ub2RlQ291bnQgPSBzdGFy
dElzRW5kID8gMCA6IG1fY3VycmVudEluZGV4ICsgMTsKICAgICAgICAgbV9ub2RlQ291bnRWYWxp
ZCA9IHRydWU7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBBU1NFUlQoaGFz
VmFsaWRDYWNoZShjb2xsZWN0aW9uKSk7CisgICAgQVNTRVJUKGhhc1ZhbGlkQ2FjaGUoKSk7CiAg
ICAgcmV0dXJuICYqbV9jdXJyZW50OwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgQ29sbGVjdGlvbiwg
Y2xhc3MgSXRlcmF0b3I+Ci12b2lkIENvbGxlY3Rpb25JbmRleENhY2hlPENvbGxlY3Rpb24sIEl0
ZXJhdG9yPjo6aW52YWxpZGF0ZShjb25zdCBDb2xsZWN0aW9uJiBjb2xsZWN0aW9uKQordm9pZCBD
b2xsZWN0aW9uSW5kZXhDYWNoZTxDb2xsZWN0aW9uLCBJdGVyYXRvcj46OmludmFsaWRhdGUoKQog
ewotICAgIG1fY3VycmVudCA9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpOworICAgIG1fY3Vy
cmVudCA9IHsgfTsKICAgICBtX25vZGVDb3VudFZhbGlkID0gZmFsc2U7CiAgICAgbV9saXN0VmFs
aWQgPSBmYWxzZTsKICAgICBtX2NhY2hlZExpc3Quc2hyaW5rKDApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCmluZGV4IDdhZTEzODI4YzVmMDJmNGJjZmQ4OWVhODYwMDA0OWEzNTNj
YWNjN2IuLjhkNGVmOTZkZTc3MmNkN2EzMjMyNDFmNzlkMzJiYjJlYmE3Nzk4NjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTkyMyw3ICs5MjMsNyBAQCBFbGVtZW50KiBD
b250YWluZXJOb2RlOjpsYXN0RWxlbWVudENoaWxkKCkgY29uc3QKIHVuc2lnbmVkIENvbnRhaW5l
ck5vZGU6OmNoaWxkRWxlbWVudENvdW50KCkgY29uc3QKIHsKICAgICBhdXRvIGNoaWxkcmVuID0g
Y2hpbGRyZW5PZlR5cGU8RWxlbWVudD4oKnRoaXMpOwotICAgIHJldHVybiBzdGQ6OmRpc3RhbmNl
KGNoaWxkcmVuLmJlZ2luKCksIGNoaWxkcmVuLmVuZCgpKTsKKyAgICByZXR1cm4gc3RkOjpkaXN0
YW5jZShjaGlsZHJlbi5iZWdpbigpLCB7IH0pOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBDb250
YWluZXJOb2RlOjphcHBlbmQoVmVjdG9yPE5vZGVPclN0cmluZz4mJiB2ZWN0b3IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAppbmRleCAyYWYyNzYx
ODc3NTdlODgyODgzMDU1YzkwNGU2ZTg3MzM0Y2Q0ZDIzLi5lNTZiOGZlMjFhYzU2OGYyMjA4NTVk
OGE0ZTM1ZGEwMTQ0ODU4M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZUFsZ29yaXRobXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlQWxnb3JpdGhtcy5jcHAKQEAgLTI2LDEyICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgiCiAKKyNpbmNsdWRlICJFbGVt
ZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVs
ZW1lbnRSZWdpc3RyeS5jcHAKaW5kZXggOTQ1ODJlZjQzZjZmM2Q3NDJiNzAwODcyOTY5ZTNmOTM5
NWNkZDI2Ny4uNWIwOTVhY2JmMWNkNTQxMzA4ZTFhMGZiZjAzNTAxNTkxOTEwNjUwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAKQEAgLTI5LDE0ICsy
OSwxMiBAQAogI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgiCiAjaW5jbHVk
ZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50
LmgiCi0jaW5jbHVkZSAiRWxlbWVudFRyYXZlcnNhbC5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgogI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKICNpbmNs
dWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUg
IlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5o
PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKaW5kZXggOGYyMWIyNzkz
NTAzNzYxOWViMTAzYjk0Y2MyMGM3MmNiYjcxMWExOC4uMmEyNWFiMmU1YWE3Njc5NjUwODM3MGFl
ZmEyOTFlNzJjN2MxYzY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
RnJhZ21lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNw
cApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKIAogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5o
IgorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudFBh
cnNlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJYTUxEb2N1bWVudFBhcnNlci5o
IgpAQCAtMTAzLDcgKzEwMyw3IEBAIEVsZW1lbnQqIERvY3VtZW50RnJhZ21lbnQ6OmdldEVsZW1l
bnRCeUlkKGNvbnN0IEF0b21TdHJpbmcmIGlkKSBjb25zdAogICAgICAgICByZXR1cm4gdHJlZVNj
b3BlKCkuZ2V0RWxlbWVudEJ5SWQoaWQpOwogCiAgICAgLy8gT3RoZXJ3aXNlLCBmYWxsIGJhY2sg
dG8gaXRlcmF0aW5nIGFsbCBvZiB0aGUgZWxlbWVudCBkZXNjZW5kYW50cy4KLSAgICBmb3IgKGF1
dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoKnRoaXMpKSB7CisgICAgZm9yIChhdXRv
JiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oKnRoaXMpKSB7CiAgICAgICAg
IGlmIChlbGVtZW50LmdldElkQXR0cmlidXRlKCkgPT0gaWQpCiAgICAgICAgICAgICByZXR1cm4g
Y29uc3RfY2FzdDxFbGVtZW50Kj4oJmVsZW1lbnQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAppbmRleCA4NzE4ZTZkODZhZDdmZTUwOGIxMzg3MDZhNjVkMjk1YWRkNDM5YzUyLi4wMTE3YTM2
NmJjNzI1Nzk1YTU2ZmViOTlhZTFmZTE2Mjc4MzhlZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CkBAIC00LDcgKzQsNyBAQAogICogICAgICAgICAgIChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtA
cG9zdC5jb20pCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDcgRGF2aWQgU21pdGggKGNhdGZpc2gubWFuQGdt
YWlsLmNvbSkKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNyBFcmljIFNlaWRlbCAoZXJpY0B3
ZWJraXQub3JnKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTYwLDcgKzYwLDYgQEAKICNpbmNsdWRlICJHZXRB
bmltYXRpb25zT3B0aW9ucy5oIgogI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNp
bmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSHRtbEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MTGFiZWxFbGVtZW50LmgiCkBAIC0zNDAwLDI2ICszMzk5LDE0IEBAIHVuc2ln
bmVkIEVsZW1lbnQ6OnJhcmVEYXRhQ2hpbGRJbmRleCgpIGNvbnN0CiAKIEF0b21TdHJpbmcgRWxl
bWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkgY29uc3QKIHsKLSAgICBpZiAoY29uc3Qg
RWxlbWVudERhdGEqIGVsZW1lbnREYXRhID0gdGhpcy0+ZWxlbWVudERhdGEoKSkgewotICAgICAg
ICBpZiAoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBlbGVtZW50RGF0YS0+ZmluZExhbmd1
YWdlQXR0cmlidXRlKCkpCi0gICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlLT52YWx1ZSgpOwot
ICAgIH0KLQogICAgIC8vIFRoZSBsYW5ndWFnZSBwcm9wZXJ0eSBpcyBpbmhlcml0ZWQsIHNvIHdl
IGl0ZXJhdGUgb3ZlciB0aGUgcGFyZW50cyB0byBmaW5kIHRoZSBmaXJzdCBsYW5ndWFnZS4KLSAg
ICBjb25zdCBOb2RlKiBjdXJyZW50Tm9kZSA9IHRoaXM7Ci0gICAgd2hpbGUgKChjdXJyZW50Tm9k
ZSA9IGN1cnJlbnROb2RlLT5wYXJlbnROb2RlKCkpKSB7Ci0gICAgICAgIGlmIChpczxFbGVtZW50
PigqY3VycmVudE5vZGUpKSB7Ci0gICAgICAgICAgICBpZiAoY29uc3QgRWxlbWVudERhdGEqIGVs
ZW1lbnREYXRhID0gZG93bmNhc3Q8RWxlbWVudD4oKmN1cnJlbnROb2RlKS5lbGVtZW50RGF0YSgp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZWxl
bWVudERhdGEtPmZpbmRMYW5ndWFnZUF0dHJpYnV0ZSgpKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gYXR0cmlidXRlLT52YWx1ZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2Ug
aWYgKGlzPERvY3VtZW50PigqY3VycmVudE5vZGUpKSB7Ci0gICAgICAgICAgICAvLyBjaGVja2lu
ZyB0aGUgTUlNRSBjb250ZW50LWxhbmd1YWdlCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8
RG9jdW1lbnQ+KCpjdXJyZW50Tm9kZSkuY29udGVudExhbmd1YWdlKCk7CisgICAgZm9yIChhdXRv
JiBlbGVtZW50IDogbGluZWFnZU9mVHlwZTxFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYg
KGF1dG8qIGVsZW1lbnREYXRhID0gZWxlbWVudC5lbGVtZW50RGF0YSgpKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byogYXR0cmlidXRlID0gZWxlbWVudERhdGEtPmZpbmRMYW5ndWFnZUF0dHJpYnV0
ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGUtPnZhbHVlKCk7CiAgICAgICAg
IH0KICAgICB9Ci0KLSAgICByZXR1cm4gbnVsbEF0b20oKTsKKyAgICByZXR1cm4gZG9jdW1lbnQo
KS5jb250ZW50TGFuZ3VhZ2UoKTsKIH0KIAogTG9jYWxlJiBFbGVtZW50Ojpsb2NhbGUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaAppbmRleCA0
YjYyZDM4YjM4ZmQzODQ5YzczN2FjYTg3ZWY4NDUyN2Y4Mzc1NWYwLi5jOTljNzY2Mjc1NzNlZDkx
NjE3ODJmZDA3YmQxZmM2NWYzYjIzOTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dEFuY2VzdG9ySXRlcmF0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOSw2MyArMjksMzcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBFbGVtZW50QW5jZXN0
b3JJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IHsKLXB1Ymxp
YzoKLSAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcigpOwotICAgIGV4cGxpY2l0IEVsZW1lbnRB
bmNlc3Rvckl0ZXJhdG9yKEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKLSAgICBFbGVtZW50QW5jZXN0
b3JJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotfTsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBF
bGVtZW50QW5jZXN0b3JSYW5nZTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
Y2xhc3MgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT4gewotcHVibGljOgotICAgIEVsZW1lbnRBbmNlc3RvckNvbnN0
SXRlcmF0b3IoKTsKLSAgICBleHBsaWNpdCBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yKGNv
bnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKLSAgICBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJh
dG9yJiBvcGVyYXRvcisrKCk7Ci19OworLy8gUmFuZ2UgZm9yIGl0ZXJhdGluZyBhbiBlbGVtZW50
IGFuZCBpdHMgYW5jZXN0b3JzLgordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1l
bnRBbmNlc3RvclJhbmdlPEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKEVsZW1lbnQmIGZpcnN0
KTsKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JSYW5nZTxj
b25zdCBFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShjb25zdCBFbGVtZW50JiBmaXJzdCk7CisK
Ky8vIFJhbmdlIGZvciBpdGVyYXRpbmcgYSBub2RlJ3MgZWxlbWVudCBhbmNlc3RvcnMuCit0ZW1w
bGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8RWxlbWVudFR5
cGU+IGFuY2VzdG9yc09mVHlwZShOb2RlJiBkZXNjZW5kYW50KTsKK3RlbXBsYXRlPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4gYW5j
ZXN0b3JzT2ZUeXBlKGNvbnN0IE5vZGUmIGRlc2NlbmRhbnQpOwogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXIgewor
Y2xhc3MgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVudEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRWxlbWVudEFuY2VzdG9ySXRlcmF0
b3JBZGFwdGVyKEVsZW1lbnRUeXBlKiBmaXJzdCk7Ci0gICAgRWxlbWVudEFuY2VzdG9ySXRlcmF0
b3I8RWxlbWVudFR5cGU+IGJlZ2luKCk7Ci0gICAgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxl
bWVudFR5cGU+IGVuZCgpOwotICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpIHsgcmV0dXJuIG1fZmly
c3Q7IH0KLQotcHJpdmF0ZToKLSAgICBFbGVtZW50VHlwZSogbV9maXJzdDsKKyAgICBleHBsaWNp
dCBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcihFbGVtZW50VHlwZSogPSBudWxscHRyKTsKKyAgICBF
bGVtZW50QW5jZXN0b3JJdGVyYXRvciYgb3BlcmF0b3IrKygpOwogfTsKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFk
YXB0ZXIgeworY2xhc3MgRWxlbWVudEFuY2VzdG9yUmFuZ2UgewogcHVibGljOgotICAgIGV4cGxp
Y2l0IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IEVsZW1lbnRUeXBl
KiBmaXJzdCk7Ci0gICAgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4g
YmVnaW4oKSBjb25zdDsKLSAgICBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPiBlbmQoKSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50VHlwZSogZmlyc3QoKSBjb25zdCB7
IHJldHVybiBtX2ZpcnN0OyB9CisgICAgZXhwbGljaXQgRWxlbWVudEFuY2VzdG9yUmFuZ2UoRWxl
bWVudFR5cGUqIGZpcnN0KTsKKyAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlw
ZT4gYmVnaW4oKSBjb25zdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6bnVsbHB0cl90IGVu
ZCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBFbGVtZW50VHlwZSogZmlyc3QoKSBjb25zdCB7
IHJldHVybiBtX2ZpcnN0OyB9CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIG1f
Zmlyc3Q7CisgICAgRWxlbWVudFR5cGUqIGNvbnN0IG1fZmlyc3Q7CiB9OwogCi1FbGVtZW50QW5j
ZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudExpbmVhZ2UoRWxlbWVudCogZmly
c3QpOwotRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVu
dExpbmVhZ2UoY29uc3QgRWxlbWVudCogZmlyc3QpOwotRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JB
ZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRBbmNlc3RvcnMoRWxlbWVudCogZGVzY2VuZGFudCk7Ci1F
bGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50QW5jZXN0
b3JzKGNvbnN0IEVsZW1lbnQqIGRlc2NlbmRhbnQpOwotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGxpbmVh
Z2VPZlR5cGUoRWxlbWVudCYgZmlyc3QpOwotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gbGluZWFn
ZU9mVHlwZShjb25zdCBFbGVtZW50JiBmaXJzdCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gYW5jZXN0
b3JzT2ZUeXBlKE5vZGUmIGRlc2NlbmRhbnQpOwotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gYW5j
ZXN0b3JzT2ZUeXBlKGNvbnN0IE5vZGUmIGRlc2NlbmRhbnQpOwotCiAvLyBFbGVtZW50QW5jZXN0
b3JJdGVyYXRvcgogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxl
bWVudEFuY2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50QW5jZXN0b3JJdGVyYXRv
cigpCi0gICAgOiBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KG51bGxwdHIpCi17Ci19Ci0K
IHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50QW5jZXN0b3JJ
dGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yKEVsZW1lbnRUeXBl
KiBjdXJyZW50KQogICAgIDogRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihudWxscHRyLCBj
dXJyZW50KQpAQCAtOTUsMTE5ICs2OSw2MiBAQCBpbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0
b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50QW5jZXN0b3JJdGVyYXRvcihFbGVtZW50VHlwZQogdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+Ojpv
cGVyYXRvcisrKCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudEFuY2VzdG9ySXRl
cmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVy
c2VBbmNlc3RvcigpKTsKLX0KLQotLy8gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcgotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudEFuY2VzdG9yQ29u
c3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3IoKQot
ICAgIDogRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG51bGxwdHIpCi17Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcihj
b25zdCBFbGVtZW50VHlwZSogY3VycmVudCkKLSAgICA6IEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPihudWxscHRyLCBjdXJyZW50KQotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT4mIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRv
cisrKCkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudEFuY2VzdG9yQ29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRy
YXZlcnNlQW5jZXN0b3IoKSk7CisgICAgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJh
dmVyc2VBbmNlc3RvcigpOworICAgIHJldHVybiAqdGhpczsKIH0KIAotLy8gRWxlbWVudEFuY2Vz
dG9ySXRlcmF0b3JBZGFwdGVyCisvLyBFbGVtZW50QW5jZXN0b3JSYW5nZQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFw
dGVyPEVsZW1lbnRUeXBlPjo6RWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyKEVsZW1lbnRU
eXBlKiBmaXJzdCkKK2lubGluZSBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50VHlwZT46OkVs
ZW1lbnRBbmNlc3RvclJhbmdlKEVsZW1lbnRUeXBlKiBmaXJzdCkKICAgICA6IG1fZmlyc3QoZmly
c3QpCiB7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVt
ZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JB
ZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4oKQoraW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50VHlwZT46OmJlZ2lu
KCkgY29uc3QKIHsKICAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5
cGU+KG1fZmlyc3QpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxp
bmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3Rvckl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnRB
bmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPigpOwotfQotCi0vLyBFbGVtZW50QW5jZXN0b3JD
b25zdEl0ZXJhdG9yQWRhcHRlcgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpF
bGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcihjb25zdCBFbGVtZW50VHlwZSogZmly
c3QpCi0gICAgOiBtX2ZpcnN0KGZpcnN0KQotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT4gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdp
bigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxl
bWVudFR5cGU+KG1fZmlyc3QpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
Ci1pbmxpbmUgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVu
dEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjplbmQoKSBjb25zdAot
ewotICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPigp
OwotfQotCiAvLyBTdGFuZGFsb25lIGZ1bmN0aW9ucwogCi1pbmxpbmUgRWxlbWVudEFuY2VzdG9y
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRMaW5lYWdlKEVsZW1lbnQqIGZpcnN0KQot
ewotICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4oZmly
c3QpOwotfQotCi1pbmxpbmUgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudD4gZWxlbWVudExpbmVhZ2UoY29uc3QgRWxlbWVudCogZmlyc3QpCit0ZW1wbGF0ZTw+IGlu
bGluZSBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50PiBsaW5lYWdlT2ZUeXBlPEVsZW1lbnQ+
KEVsZW1lbnQmIGZpcnN0KQogewotICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50PihmaXJzdCk7Ci19Ci0KLWlubGluZSBFbGVtZW50QW5jZXN0b3JJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudEFuY2VzdG9ycyhFbGVtZW50KiBkZXNjZW5k
YW50KQotewotICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dD4oZGVzY2VuZGFudC0+cGFyZW50RWxlbWVudCgpKTsKLX0KLQotaW5saW5lIEVsZW1lbnRBbmNl
c3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRBbmNlc3RvcnMoY29uc3Qg
RWxlbWVudCogZGVzY2VuZGFudCkKLXsKLSAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yQ29uc3RJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudD4oZGVzY2VuZGFudC0+cGFyZW50RWxlbWVudCgpKTsKKyAg
ICByZXR1cm4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8RWxlbWVudD4oJmZpcnN0KTsKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShFbGVtZW50JiBmaXJzdCkKK2lu
bGluZSBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShFbGVt
ZW50JiBmaXJzdCkKIHsKICAgICBpZiAoaXM8RWxlbWVudFR5cGU+KGZpcnN0KSkKLSAgICAgICAg
cmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4oc3RhdGlj
X2Nhc3Q8RWxlbWVudFR5cGUqPigmZmlyc3QpKTsKKyAgICAgICAgcmV0dXJuIEVsZW1lbnRBbmNl
c3RvclJhbmdlPEVsZW1lbnRUeXBlPigmZG93bmNhc3Q8RWxlbWVudFR5cGU+KGZpcnN0KSk7CiAg
ICAgcmV0dXJuIGFuY2VzdG9yc09mVHlwZTxFbGVtZW50VHlwZT4oZmlyc3QpOwogfQogCit0ZW1w
bGF0ZTw+IGlubGluZSBFbGVtZW50QW5jZXN0b3JSYW5nZTxjb25zdCBFbGVtZW50PiBsaW5lYWdl
T2ZUeXBlPEVsZW1lbnQ+KGNvbnN0IEVsZW1lbnQmIGZpcnN0KQoreworICAgIHJldHVybiBFbGVt
ZW50QW5jZXN0b3JSYW5nZTxjb25zdCBFbGVtZW50PigmZmlyc3QpOworfQorCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRv
ckFkYXB0ZXI8RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoY29uc3QgRWxlbWVudCYgZmlyc3Qp
CitpbmxpbmUgRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+IGxpbmVhZ2VP
ZlR5cGUoY29uc3QgRWxlbWVudCYgZmlyc3QpCiB7CiAgICAgaWYgKGlzPEVsZW1lbnRUeXBlPihm
aXJzdCkpCi0gICAgICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRl
cjxFbGVtZW50VHlwZT4oc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudFR5cGUqPigmZmlyc3QpKTsK
KyAgICAgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPigm
ZG93bmNhc3Q8RWxlbWVudFR5cGU+KGZpcnN0KSk7CiAgICAgcmV0dXJuIGFuY2VzdG9yc09mVHlw
ZTxFbGVtZW50VHlwZT4oZmlyc3QpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+Ci1pbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBh
bmNlc3RvcnNPZlR5cGUoTm9kZSYgZGVzY2VuZGFudCkKK2lubGluZSBFbGVtZW50QW5jZXN0b3JS
YW5nZTxFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZUeXBlKE5vZGUmIGRlc2NlbmRhbnQpCiB7Ci0g
ICAgRWxlbWVudFR5cGUqIGZpcnN0ID0gZmluZEVsZW1lbnRBbmNlc3Rvck9mVHlwZTxFbGVtZW50
VHlwZT4oZGVzY2VuZGFudCk7Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRh
cHRlcjxFbGVtZW50VHlwZT4oZmlyc3QpOworICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JSYW5n
ZTxFbGVtZW50VHlwZT4oZmluZEVsZW1lbnRBbmNlc3Rvck9mVHlwZTxFbGVtZW50VHlwZT4oZGVz
Y2VuZGFudCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUg
RWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGFuY2VzdG9y
c09mVHlwZShjb25zdCBOb2RlJiBkZXNjZW5kYW50KQoraW5saW5lIEVsZW1lbnRBbmNlc3RvclJh
bmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNPZlR5cGUoY29uc3QgTm9kZSYgZGVzY2Vu
ZGFudCkKIHsKLSAgICBjb25zdCBFbGVtZW50VHlwZSogZmlyc3QgPSBmaW5kRWxlbWVudEFuY2Vz
dG9yT2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPihkZXNjZW5kYW50KTsKLSAgICByZXR1cm4gRWxl
bWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KGZpcnN0KTsKKyAg
ICByZXR1cm4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+KGZpbmRFbGVt
ZW50QW5jZXN0b3JPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KGRlc2NlbmRhbnQpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IuaAppbmRleCA0OGUzYjFhNjE4ZDJmZTBhMjg3
NjdiMzczMWYyZmFkZjk3M2VmYmNlLi5kMWRkYjBmNzM3NTAxNTY0NTk3YjBhMDIzNGUyYjQ2MjAx
ZDVkZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuZFRleHREZXNj
ZW5kYW50SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuZFRleHRE
ZXNjZW5kYW50SXRlcmF0b3IuaApAQCAtMzYsOCArMzYsOCBAQCBjbGFzcyBFbGVtZW50QW5kVGV4
dERlc2NlbmRhbnRJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgRWxlbWVudEFuZFRleHREZXNjZW5k
YW50SXRlcmF0b3IoKTsKICAgICBlbnVtIEZpcnN0Q2hpbGRUYWcgeyBGaXJzdENoaWxkIH07Ci0g
ICAgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoQ29udGFpbmVyTm9kZSYgcm9vdCwg
Rmlyc3RDaGlsZFRhZyk7Ci0gICAgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoQ29u
dGFpbmVyTm9kZSYgcm9vdCwgTm9kZSogY3VycmVudCk7CisgICAgRWxlbWVudEFuZFRleHREZXNj
ZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgRmlyc3RDaGlsZFRhZyk7
CisgICAgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9k
ZSYgcm9vdCwgTm9kZSogY3VycmVudCk7CiAKICAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJ
dGVyYXRvciYgb3BlcmF0b3IrKygpIHsgcmV0dXJuIHRyYXZlcnNlTmV4dCgpOyB9CiAKQEAgLTYz
LDkgKzYzLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGlzRWxlbWVu
dE9yVGV4dChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxFbGVtZW50Pihub2RlKSB8fCBp
czxUZXh0Pihub2RlKTsgfQotICAgIHN0YXRpYyBOb2RlKiBmaXJzdENoaWxkKE5vZGUmKTsKLSAg
ICBzdGF0aWMgTm9kZSogbmV4dFNpYmxpbmcoTm9kZSYpOwotICAgIHN0YXRpYyBOb2RlKiBwcmV2
aW91c1NpYmxpbmcoTm9kZSYpOworICAgIHN0YXRpYyBOb2RlKiBmaXJzdENoaWxkKGNvbnN0IE5v
ZGUmKTsKKyAgICBzdGF0aWMgTm9kZSogbmV4dFNpYmxpbmcoY29uc3QgTm9kZSYpOworICAgIHN0
YXRpYyBOb2RlKiBwcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSYpOwogCiAgICAgdm9pZCBwb3BB
bmNlc3RvclNpYmxpbmdTdGFjaygpOwogCkBAIC04MiwxNyArODIsMTcgQEAgcHJpdmF0ZToKICNl
bmRpZgogfTsKIAotY2xhc3MgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVy
IHsKK2NsYXNzIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudFJhbmdlIHsKIHB1YmxpYzoKLSAgICBl
eHBsaWNpdCBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVy
Tm9kZSYgcm9vdCk7Ci0gICAgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgYmVnaW4o
KTsKLSAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBlbmQoKTsKKyAgICBleHBs
aWNpdCBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZShjb25zdCBDb250YWluZXJOb2RlJiBy
b290KTsKKyAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBiZWdpbigpIGNvbnN0
OworICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yIGVuZCgpIGNvbnN0OwogCiBw
cml2YXRlOgotICAgIENvbnRhaW5lck5vZGUmIG1fcm9vdDsKKyAgICBjb25zdCBDb250YWluZXJO
b2RlJiBtX3Jvb3Q7CiB9OwogCi1FbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0
ZXIgZWxlbWVudEFuZFRleHREZXNjZW5kYW50cyhDb250YWluZXJOb2RlJik7CitFbGVtZW50QW5k
VGV4dERlc2NlbmRhbnRSYW5nZSBlbGVtZW50QW5kVGV4dERlc2NlbmRhbnRzKENvbnRhaW5lck5v
ZGUmKTsKIAogLy8gRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IKIApAQCAtMTAxLDcg
KzEwMSw3IEBAIGlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6RWxlbWVu
dEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoKQogewogfQogCi1pbmxpbmUgRWxlbWVudEFuZFRl
eHREZXNjZW5kYW50SXRlcmF0b3I6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKENv
bnRhaW5lck5vZGUmIHJvb3QsIEZpcnN0Q2hpbGRUYWcpCitpbmxpbmUgRWxlbWVudEFuZFRleHRE
ZXNjZW5kYW50SXRlcmF0b3I6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0
IENvbnRhaW5lck5vZGUmIHJvb3QsIEZpcnN0Q2hpbGRUYWcpCiAgICAgOiBtX2N1cnJlbnQoZmly
c3RDaGlsZChyb290KSkKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgICwgbV9hc3NlcnRpb25zKG1f
Y3VycmVudCkKQEAgLTExMyw3ICsxMTMsNyBAQCBpbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5k
YW50SXRlcmF0b3I6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKENvbnRhaQogICAg
IG1fZGVwdGggPSAxOwogfQogCi1pbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0
b3I6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKENvbnRhaW5lck5vZGUmIHJvb3Qs
IE5vZGUqIGN1cnJlbnQpCitpbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6
OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJv
b3QsIE5vZGUqIGN1cnJlbnQpCiAgICAgOiBtX2N1cnJlbnQoY3VycmVudCkKICNpZiBBU1NFUlRf
RU5BQkxFRAogICAgICwgbV9hc3NlcnRpb25zKG1fY3VycmVudCkKQEAgLTE0OCw3ICsxNDgsNyBA
QCBpbmxpbmUgdm9pZCBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6ZHJvcEFzc2Vy
dGlvbnMoKQogI2VuZGlmCiB9CiAKLWlubGluZSBOb2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRh
bnRJdGVyYXRvcjo6Zmlyc3RDaGlsZChOb2RlJiBjdXJyZW50KQoraW5saW5lIE5vZGUqIEVsZW1l
bnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpmaXJzdENoaWxkKGNvbnN0IE5vZGUmIGN1cnJl
bnQpCiB7CiAgICAgYXV0byogbm9kZSA9IGN1cnJlbnQuZmlyc3RDaGlsZCgpOwogICAgIHdoaWxl
IChub2RlICYmICFpc0VsZW1lbnRPclRleHQoKm5vZGUpKQpAQCAtMTU2LDcgKzE1Niw3IEBAIGlu
bGluZSBOb2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6Zmlyc3RDaGlsZChO
b2RlJiBjdXJyZW50KQogICAgIHJldHVybiBub2RlOwogfQogCi1pbmxpbmUgTm9kZSogRWxlbWVu
dEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6Om5leHRTaWJsaW5nKE5vZGUmIGN1cnJlbnQpCitp
bmxpbmUgTm9kZSogRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6Om5leHRTaWJsaW5n
KGNvbnN0IE5vZGUmIGN1cnJlbnQpCiB7CiAgICAgYXV0byogbm9kZSA9IGN1cnJlbnQubmV4dFNp
YmxpbmcoKTsKICAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T3JUZXh0KCpub2RlKSkKQEAg
LTE2NCw3ICsxNjQsNyBAQCBpbmxpbmUgTm9kZSogRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRl
cmF0b3I6Om5leHRTaWJsaW5nKE5vZGUmIGN1cnJlbnQpCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAK
LWlubGluZSBOb2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6cHJldmlvdXNT
aWJsaW5nKE5vZGUmIGN1cnJlbnQpCitpbmxpbmUgTm9kZSogRWxlbWVudEFuZFRleHREZXNjZW5k
YW50SXRlcmF0b3I6OnByZXZpb3VzU2libGluZyhjb25zdCBOb2RlJiBjdXJyZW50KQogewogICAg
IGF1dG8qIG5vZGUgPSBjdXJyZW50LnByZXZpb3VzU2libGluZygpOwogICAgIHdoaWxlIChub2Rl
ICYmICFpc0VsZW1lbnRPclRleHQoKm5vZGUpKQpAQCAtMjk0LDI4ICsyOTQsMjggQEAgaW5saW5l
IGJvb2wgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6Om9wZXJhdG9yIT0oY29uc3Qg
RWxlbWVudEFuZFRleHREZXMKICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiB9CiAKLS8v
IEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcgorLy8gRWxlbWVudEFuZFRl
eHREZXNjZW5kYW50UmFuZ2UKIAotaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJh
dG9yQWRhcHRlcjo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENvbnRh
aW5lck5vZGUmIHJvb3QpCitpbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2U6OkVs
ZW1lbnRBbmRUZXh0RGVzY2VuZGFudFJhbmdlKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCiAg
ICAgOiBtX3Jvb3Qocm9vdCkKIHsKIH0KIAotaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFu
dEl0ZXJhdG9yIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjo6YmVnaW4o
KQoraW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yIEVsZW1lbnRBbmRUZXh0
RGVzY2VuZGFudFJhbmdlOjpiZWdpbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEVsZW1lbnRBbmRU
ZXh0RGVzY2VuZGFudEl0ZXJhdG9yKG1fcm9vdCwgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRl
cmF0b3I6OkZpcnN0Q2hpbGQpOwogfQogCi1pbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50
SXRlcmF0b3IgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjplbmQoKQor
aW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yIEVsZW1lbnRBbmRUZXh0RGVz
Y2VuZGFudFJhbmdlOjplbmQoKSBjb25zdAogewogICAgIHJldHVybiB7IH07CiB9CiAKIC8vIFN0
YW5kYWxvbmUgZnVuY3Rpb25zCiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVy
YXRvckFkYXB0ZXIgZWxlbWVudEFuZFRleHREZXNjZW5kYW50cyhDb250YWluZXJOb2RlJiByb290
KQoraW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudFJhbmdlIGVsZW1lbnRBbmRUZXh0RGVz
Y2VuZGFudHMoQ29udGFpbmVyTm9kZSYgcm9vdCkKIHsKLSAgICByZXR1cm4gRWxlbWVudEFuZFRl
eHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKHJvb3QpOworICAgIHJldHVybiBFbGVtZW50QW5k
VGV4dERlc2NlbmRhbnRSYW5nZShyb290KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0ZXJhdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENoaWxkSXRlcmF0b3IuaAppbmRleCA4ZTM4ZmI1MDMy
YTgyMzc3NmUyYTdiY2EzYWMyNThjYjE1MDZjNDAwLi5lNjZiMjQ5ZjU5NTExMDAwMzg0ZDg0NzEy
NzdhM2YyMDIxNmU2MWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENo
aWxkSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENoaWxkSXRlcmF0
b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOSw3OSArMjksMzkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0ZW1wbGF0ZTx0
eXBlbmFtZT4gY2xhc3MgRWxlbWVudENoaWxkUmFuZ2U7CisKKy8vIFJhbmdlIGZvciBpdGVyYXRp
bmcgdGhyb3VnaCBjaGlsZCBlbGVtZW50cy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4gRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKENvbnRhaW5l
ck5vZGUmKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkUmFu
Z2U8Y29uc3QgRWxlbWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUm
KTsKKwogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogY2xhc3MgRWxlbWVudENoaWxk
SXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiB7CiBwdWJsaWM6
Ci0gICAgdHlwZWRlZiBFbGVtZW50VHlwZSB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgcHRyZGlm
Zl90IGRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIEVsZW1lbnRUeXBlKiBwb2ludGVyOwot
ICAgIHR5cGVkZWYgRWxlbWVudFR5cGUmIHJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHN0ZDo6Zm9y
d2FyZF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0KLSAgICBFbGVtZW50Q2hpbGRJ
dGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpOworICAgIEVsZW1lbnRDaGlsZEl0
ZXJhdG9yKCkgPSBkZWZhdWx0OwogICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNvbnN0IENvbnRh
aW5lck5vZGUmIHBhcmVudCwgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwogICAgIEVsZW1lbnRDaGls
ZEl0ZXJhdG9yJiBvcGVyYXRvci0tKCk7CiAgICAgRWxlbWVudENoaWxkSXRlcmF0b3ImIG9wZXJh
dG9yKysoKTsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVs
ZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxl
bWVudFR5cGU+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNvbnN0IEVsZW1lbnRUeXBlIHZhbHVl
X3R5cGU7Ci0gICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVk
ZWYgY29uc3QgRWxlbWVudFR5cGUqIHBvaW50ZXI7Ci0gICAgdHlwZWRlZiBjb25zdCBFbGVtZW50
VHlwZSYgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZyBp
dGVyYXRvcl9jYXRlZ29yeTsKLQotICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IoY29uc3Qg
Q29udGFpbmVyTm9kZSYgcGFyZW50KTsKLSAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNv
bnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCwgY29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwot
ICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsKLSAgICBFbGVtZW50
Q2hpbGRDb25zdEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXIgewotcHVi
bGljOgotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2RlJiBwYXJl
bnQpOwotCi0gICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCk7Ci0g
ICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpOwotICAgIEVsZW1lbnRD
aGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbkF0KEVsZW1lbnRUeXBlJik7Ci0KLSAgICBF
bGVtZW50VHlwZSogZmlyc3QoKTsKLSAgICBFbGVtZW50VHlwZSogbGFzdCgpOwotCi1wcml2YXRl
OgotICAgIENvbnRhaW5lck5vZGUmIG1fcGFyZW50OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXIgewor
Y2xhc3MgRWxlbWVudENoaWxkUmFuZ2UgewogcHVibGljOgotICAgIEVsZW1lbnRDaGlsZENvbnN0
SXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCk7CisgICAgRWxlbWVu
dENoaWxkUmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKIAotICAgIEVsZW1lbnRD
aGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7Ci0gICAgRWxlbWVu
dENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCkgY29uc3Q7Ci0gICAgRWxlbWVu
dENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW5BdChjb25zdCBFbGVtZW50VHlw
ZSYpIGNvbnN0OworICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigp
IGNvbnN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpudWxscHRyX3QgZW5kKCkgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdp
bkF0KEVsZW1lbnRUeXBlJikgY29uc3Q7CiAKLSAgICBjb25zdCBFbGVtZW50VHlwZSogZmlyc3Qo
KSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50VHlwZSogbGFzdCgpIGNvbnN0OworICAgIEVsZW1l
bnRUeXBlKiBmaXJzdCgpIGNvbnN0OworICAgIEVsZW1lbnRUeXBlKiBsYXN0KCkgY29uc3Q7CiAK
IHByaXZhdGU6CiAgICAgY29uc3QgQ29udGFpbmVyTm9kZSYgbV9wYXJlbnQ7CiB9OwogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxF
bGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoQ29udGFpbmVyTm9kZSYpOwotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYpOwotCiAvLyBFbGVt
ZW50Q2hpbGRJdGVyYXRvcgogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxp
bmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50Q2hpbGRJdGVyYXRv
cihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpCi0gICAgOiBFbGVtZW50SXRlcmF0b3I8RWxl
bWVudFR5cGU+KCZwYXJlbnQpCi17Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KIGlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGls
ZEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCwgRWxlbWVudFR5cGUqIGN1cnJl
bnQpCiAgICAgOiBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZwYXJlbnQsIGN1cnJlbnQp
CkBAIC0xMTEsMTMyICs3MSw2MiBAQCBpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVu
dFR5cGU+OjpFbGVtZW50Q2hpbGRJdGVyYXRvcihjb25zdCBDb250YWluZXJObwogdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPiYgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvci0tKCkK
IHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5
cGU+Jj4oRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91c1NpYmxp
bmcoKSk7CisgICAgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91
c1NpYmxpbmcoKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVs
ZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCiB7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1l
bnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxpbmcoKSk7Ci19Ci0KLS8v
IEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVt
ZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCkKLSAgICA6
IEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPigmcGFyZW50KQotewotfQotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFp
bmVyTm9kZSYgcGFyZW50LCBjb25zdCBFbGVtZW50VHlwZSogY3VycmVudCkKLSAgICA6IEVsZW1l
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPigmcGFyZW50LCBjdXJyZW50KQotewotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5
cGU+OjpvcGVyYXRvci0tKCkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudENoaWxk
Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT46OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKCkpOworICAgIEVsZW1lbnRJdGVyYXRvcjxF
bGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxpbmcoKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9
CiAKKy8vIEVsZW1lbnRDaGlsZFJhbmdlCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVu
dENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQotewotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+
KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGluZygp
KTsKLX0KLQotLy8gRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyCi0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudFR5cGU+OjpFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVyTm9kZSYgcGFy
ZW50KQoraW5saW5lIEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPjo6RWxlbWVudENoaWxk
UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KQogICAgIDogbV9wYXJlbnQocGFyZW50
KQogewogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVu
dENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxF
bGVtZW50VHlwZT46OmJlZ2luKCkKK2lubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50
VHlwZT4gRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3BhcmVudCwgVHJh
dmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RDaGlsZChtX3BhcmVudCkpOwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxl
bWVudFR5cGU+IEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgp
Ci17Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3BhcmVu
dCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
VHlwZSogRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6Zmlyc3QoKQor
aW5saW5lIEVsZW1lbnRUeXBlKiBFbGVtZW50Q2hpbGRSYW5nZTxFbGVtZW50VHlwZT46OmZpcnN0
KCkgY29uc3QKIHsKICAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RDaGls
ZChtX3BhcmVudCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGlu
ZSBFbGVtZW50VHlwZSogRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6
bGFzdCgpCitpbmxpbmUgRWxlbWVudFR5cGUqIEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBl
Pjo6bGFzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxh
c3RDaGlsZChtX3BhcmVudCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkSXRl
cmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW5BdChFbGVtZW50VHlwZSYgY2hpbGQpCitp
bmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZFJhbmdl
PEVsZW1lbnRUeXBlPjo6YmVnaW5BdChFbGVtZW50VHlwZSYgY2hpbGQpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGNoaWxkLnBhcmVudE5vZGUoKSA9PSAmbV9wYXJlbnQpOwogICAgIHJldHVybiBFbGVt
ZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9wYXJlbnQsICZjaGlsZCk7CiB9CiAKLS8v
IEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46OkVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5l
ck5vZGUmIHBhcmVudCkKLSAgICA6IG1fcGFyZW50KHBhcmVudCkKLXsKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8
RWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBl
Pjo6YmVnaW4oKSBjb25zdAotewotICAgIHJldHVybiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPihtX3BhcmVudCwgVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RDaGls
ZChtX3BhcmVudCkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxp
bmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkQ29u
c3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjplbmQoKSBjb25zdAotewotICAgIHJldHVy
biBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3BhcmVudCk7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBjb25zdCBFbGVtZW50VHlw
ZSogRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpmaXJzdCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0Q2hpbGQo
bV9wYXJlbnQpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUg
Y29uc3QgRWxlbWVudFR5cGUqIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1l
bnRUeXBlPjo6bGFzdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlw
ZT46Omxhc3RDaGlsZChtX3BhcmVudCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVt
ZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2luQXQoY29uc3Qg
RWxlbWVudFR5cGUmIGNoaWxkKSBjb25zdAotewotICAgIEFTU0VSVChjaGlsZC5wYXJlbnROb2Rl
KCkgPT0gJm1fcGFyZW50KTsKLSAgICByZXR1cm4gRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxF
bGVtZW50VHlwZT4obV9wYXJlbnQsICZjaGlsZCk7Ci19Ci0KIC8vIFN0YW5kYWxvbmUgZnVuY3Rp
b25zCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hp
bGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKENvbnRhaW5lck5v
ZGUmIHBhcmVudCkKK2lubGluZSBFbGVtZW50Q2hpbGRSYW5nZTxFbGVtZW50VHlwZT4gY2hpbGRy
ZW5PZlR5cGUoQ29udGFpbmVyTm9kZSYgcGFyZW50KQogewotICAgIHJldHVybiBFbGVtZW50Q2hp
bGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KHBhcmVudCk7CisgICAgcmV0dXJuIEVsZW1l
bnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPihwYXJlbnQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8
RWxlbWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCkK
K2lubGluZSBFbGVtZW50Q2hpbGRSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5
cGUoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KQogewotICAgIHJldHVybiBFbGVtZW50Q2hp
bGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4ocGFyZW50KTsKKyAgICByZXR1cm4g
RWxlbWVudENoaWxkUmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+KHBhcmVudCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGJkYjk5YTZkZGU5
NjQ2ZGZiNDE3NDYxMjk5MThjNzM1ZWFlNDk5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAi
RWxlbWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaCIKLSNpbmNs
dWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgewotcHVi
bGljOgotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoKTsKLSAgICBleHBsaWNpdCBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yKEVsZW1lbnQqIGN1cnJlbnQpOwotCi0gICAgRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3ImIG9wZXJhdG9yLS0oKTsKLQotICAgIEVsZW1lbnQmIG9wZXJhdG9yKigpOwotICAgIEVs
ZW1lbnQqIG9wZXJhdG9yLT4oKTsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKLQotICAgIHZvaWQg
ZHJvcEFzc2VydGlvbnMoKTsKLQotcHJpdmF0ZToKLSAgICBFbGVtZW50KiBtX2N1cnJlbnQ7Ci0g
ICAgVmVjdG9yPEVsZW1lbnQqLCAxNj4gbV9hbmNlc3RvclNpYmxpbmdTdGFjazsKLQotI2lmIEFT
U0VSVF9FTkFCTEVECi0gICAgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7
Ci0jZW5kaWYKLX07Ci0KLWNsYXNzIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciB7Ci1w
dWJsaWM6Ci0gICAgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKCk7Ci0gICAgZXhwbGlj
aXQgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKGNvbnN0IEVsZW1lbnQqKTsKLQotICAg
IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotCi0gICAgY29u
c3QgRWxlbWVudCYgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAgY29uc3QgRWxlbWVudCogb3BlcmF0
b3ItPigpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKLQotICAgIHZv
aWQgZHJvcEFzc2VydGlvbnMoKTsKLQotcHJpdmF0ZToKLSAgICBjb25zdCBFbGVtZW50KiBtX2N1
cnJlbnQ7Ci0gICAgVmVjdG9yPEVsZW1lbnQqLCAxNj4gbV9hbmNlc3RvclNpYmxpbmdTdGFjazsK
LQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fz
c2VydGlvbnM7Ci0jZW5kaWYKLX07Ci0KLWNsYXNzIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JB
ZGFwdGVyIHsKLXB1YmxpYzoKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcihD
b250YWluZXJOb2RlJiByb290KTsKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGJlZ2lu
KCk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBlbmQoKTsKLSAgICBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yIGxhc3QoKTsKLQotcHJpdmF0ZToKLSAgICBDb250YWluZXJOb2RlJiBt
X3Jvb3Q7Ci19OwotCi1jbGFzcyBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVy
IHsKLXB1YmxpYzoKLSAgICBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyKGNv
bnN0IENvbnRhaW5lck5vZGUmIHJvb3QpOwotICAgIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVy
YXRvciBiZWdpbigpIGNvbnN0OwotICAgIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciBl
bmQoKSBjb25zdDsKLSAgICBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IgbGFzdCgpIGNv
bnN0OwotCi1wcml2YXRlOgotICAgIGNvbnN0IENvbnRhaW5lck5vZGUmIG1fcm9vdDsKLX07Ci0K
LUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyIGVsZW1lbnREZXNjZW5kYW50cyhDb250
YWluZXJOb2RlJik7Ci1FbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyIGVsZW1l
bnREZXNjZW5kYW50cyhjb25zdCBDb250YWluZXJOb2RlJik7Ci0KLS8vIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IKLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6OkVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IoKQotICAgIDogbV9jdXJyZW50KG51bGxwdHIpCi17Ci19Ci0KLWlu
bGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
KEVsZW1lbnQqIGN1cnJlbnQpCi0gICAgOiBtX2N1cnJlbnQoY3VycmVudCkKLSNpZiBBU1NFUlRf
RU5BQkxFRAotICAgICwgbV9hc3NlcnRpb25zKGN1cnJlbnQpCi0jZW5kaWYKLXsKLSAgICBtX2Fu
Y2VzdG9yU2libGluZ1N0YWNrLnVuY2hlY2tlZEFwcGVuZChudWxscHRyKTsKLX0KLQotaW5saW5l
IHZvaWQgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6ZHJvcEFzc2VydGlvbnMoKQotewotI2lm
IEFTU0VSVF9FTkFCTEVECi0gICAgbV9hc3NlcnRpb25zLmNsZWFyKCk7Ci0jZW5kaWYKLX0KLQot
QUxXQVlTX0lOTElORSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yOjpvcGVyYXRvcisrKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBB
U1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLQotICAgIEVsZW1lbnQq
IGZpcnN0Q2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdENoaWxkKCptX2N1cnJlbnQpOwot
ICAgIEVsZW1lbnQqIG5leHRTaWJsaW5nID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmco
Km1fY3VycmVudCk7Ci0KLSAgICBpZiAoZmlyc3RDaGlsZCkgewotICAgICAgICBpZiAobmV4dFNp
YmxpbmcpCi0gICAgICAgICAgICBtX2FuY2VzdG9yU2libGluZ1N0YWNrLmFwcGVuZChuZXh0U2li
bGluZyk7Ci0gICAgICAgIG1fY3VycmVudCA9IGZpcnN0Q2hpbGQ7Ci0gICAgICAgIHJldHVybiAq
dGhpczsKLSAgICB9Ci0KLSAgICBpZiAobmV4dFNpYmxpbmcpIHsKLSAgICAgICAgbV9jdXJyZW50
ID0gbmV4dFNpYmxpbmc7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBtX2N1
cnJlbnQgPSBtX2FuY2VzdG9yU2libGluZ1N0YWNrLnRha2VMYXN0KCk7Ci0KLSNpZiBBU1NFUlRf
RU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFj
aGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0gICAgICAgIG1fYXNzZXJ0aW9ucy5k
cm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlmCi0KLSAgICByZXR1cm4gKnRoaXM7
Ci19Ci0KLUFMV0FZU19JTkxJTkUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvcjo6b3BlcmF0b3ItLSgpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7
Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0KLSAgICBF
bGVtZW50KiBwcmV2aW91c1NpYmxpbmcgPSBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxp
bmcoKm1fY3VycmVudCk7Ci0KLSAgICBpZiAoIXByZXZpb3VzU2libGluZykgewotICAgICAgICBt
X2N1cnJlbnQgPSBtX2N1cnJlbnQtPnBhcmVudEVsZW1lbnQoKTsKLSAgICAgICAgLy8gVGhlIHN0
YWNrIG9wdGltaXplcyBmb3IgZm9yd2FyZCB0cmF2ZXJzYWwgb25seSwgdGhpcyBqdXN0IG1haW50
YWlucyBjb25zaXN0ZW5jeS4KLSAgICAgICAgaWYgKG1fY3VycmVudC0+bmV4dFNpYmxpbmcoKSAm
JiBtX2N1cnJlbnQtPm5leHRTaWJsaW5nKCkgPT0gbV9hbmNlc3RvclNpYmxpbmdTdGFjay5sYXN0
KCkpCi0gICAgICAgICAgICBtX2FuY2VzdG9yU2libGluZ1N0YWNrLnJlbW92ZUxhc3QoKTsKLSAg
ICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIEVsZW1lbnQqIGRlZXBlc3RTaWJsaW5n
ID0gcHJldmlvdXNTaWJsaW5nOwotICAgIHdoaWxlIChFbGVtZW50KiBsYXN0Q2hpbGQgPSBFbGVt
ZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQoKmRlZXBlc3RTaWJsaW5nKSkKLSAgICAgICAgZGVlcGVz
dFNpYmxpbmcgPSBsYXN0Q2hpbGQ7Ci0gICAgQVNTRVJUKGRlZXBlc3RTaWJsaW5nKTsKLQotICAg
IGlmIChkZWVwZXN0U2libGluZyAhPSBwcmV2aW91c1NpYmxpbmcpCi0gICAgICAgIG1fYW5jZXN0
b3JTaWJsaW5nU3RhY2suYXBwZW5kKG1fY3VycmVudCk7Ci0KLSAgICBtX2N1cnJlbnQgPSBkZWVw
ZXN0U2libGluZzsKLQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0
aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVu
dCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0j
ZW5kaWYKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotaW5saW5lIEVsZW1lbnQmIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3I6Om9wZXJhdG9yKigpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7
Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0
dXJuICptX2N1cnJlbnQ7Ci19Ci0KLWlubGluZSBFbGVtZW50KiBFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yOjpvcGVyYXRvci0+KCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NF
UlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gbV9jdXJy
ZW50OwotfQotCi1pbmxpbmUgYm9vbCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRv
cj09KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAg
IEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIHJldHVybiBt
X2N1cnJlbnQgPT0gb3RoZXIubV9jdXJyZW50OwotfQotCi1pbmxpbmUgYm9vbCBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvciE9KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3ImIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLX0KLQot
Ly8gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yCi0KLWlubGluZSBFbGVtZW50RGVzY2Vu
ZGFudENvbnN0SXRlcmF0b3I6OkVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcigpCi0gICAg
OiBtX2N1cnJlbnQobnVsbHB0cikKLXsKLX0KLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50Q29u
c3RJdGVyYXRvcjo6RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKGNvbnN0IEVsZW1lbnQq
IGN1cnJlbnQpCi0gICAgOiBtX2N1cnJlbnQoY3VycmVudCkKLSNpZiBBU1NFUlRfRU5BQkxFRAot
ICAgICwgbV9hc3NlcnRpb25zKGN1cnJlbnQpCi0jZW5kaWYKLXsKLSAgICBtX2FuY2VzdG9yU2li
bGluZ1N0YWNrLnVuY2hlY2tlZEFwcGVuZChudWxscHRyKTsKLX0KLQotaW5saW5lIHZvaWQgRWxl
bWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpkcm9wQXNzZXJ0aW9ucygpCi17Ci0jaWYgQVNT
RVJUX0VOQUJMRUQKLSAgICBtX2Fzc2VydGlvbnMuY2xlYXIoKTsKLSNlbmRpZgotfQotCi1BTFdB
WVNfSU5MSU5FIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYgRWxlbWVudERlc2NlbmRh
bnRDb25zdEl0ZXJhdG9yOjpvcGVyYXRvcisrKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsK
LSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLQotICAgIEVs
ZW1lbnQqIGZpcnN0Q2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdENoaWxkKCptX2N1cnJl
bnQpOwotICAgIEVsZW1lbnQqIG5leHRTaWJsaW5nID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNp
YmxpbmcoKm1fY3VycmVudCk7Ci0KLSAgICBpZiAoZmlyc3RDaGlsZCkgewotICAgICAgICBpZiAo
bmV4dFNpYmxpbmcpCi0gICAgICAgICAgICBtX2FuY2VzdG9yU2libGluZ1N0YWNrLmFwcGVuZChu
ZXh0U2libGluZyk7Ci0gICAgICAgIG1fY3VycmVudCA9IGZpcnN0Q2hpbGQ7Ci0gICAgICAgIHJl
dHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBpZiAobmV4dFNpYmxpbmcpIHsKLSAgICAgICAgbV9j
dXJyZW50ID0gbmV4dFNpYmxpbmc7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAg
ICBtX2N1cnJlbnQgPSBtX2FuY2VzdG9yU2libGluZ1N0YWNrLnRha2VMYXN0KCk7Ci0KLSNpZiBB
U1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRv
ciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0gICAgICAgIG1fYXNzZXJ0
aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlmCi0KLSAgICByZXR1cm4g
KnRoaXM7Ci19Ci0KLWlubGluZSBjb25zdCBFbGVtZW50JiBFbGVtZW50RGVzY2VuZGFudENvbnN0
SXRlcmF0b3I6Om9wZXJhdG9yKigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0g
ICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJu
ICptX2N1cnJlbnQ7Ci19Ci0KLWlubGluZSBjb25zdCBFbGVtZW50KiBFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3I6Om9wZXJhdG9yLT4oKSBjb25zdAotewotICAgIEFTU0VSVChtX2N1cnJl
bnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAg
IHJldHVybiBtX2N1cnJlbnQ7Ci19Ci0KLWlubGluZSBib29sIEVsZW1lbnREZXNjZW5kYW50Q29u
c3RJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0
b3ImIG90aGVyKSBjb25zdAotewotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNN
dXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQgPT0gb3RoZXIubV9jdXJyZW50OwotfQot
Ci1pbmxpbmUgYm9vbCBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I6Om9wZXJhdG9yIT0o
Y29uc3QgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAg
ICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci19Ci0KLS8vIEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3JBZGFwdGVyCi0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjo6
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVyTm9kZSYgcm9vdCkKLSAg
ICA6IG1fcm9vdChyb290KQotewotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ciBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjo6YmVnaW4oKQotewotICAgIHJldHVy
biBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQo
bV9yb290KSk7Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjplbmQoKQotewotICAgIHJldHVybiBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yKCk7Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjpsYXN0KCkKLXsKLSAgICByZXR1cm4g
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihFbGVtZW50VHJhdmVyc2FsOjpsYXN0V2l0aGluKG1f
cm9vdCkpOwotfQotCi0vLyBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyCi0K
LWlubGluZSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyOjpFbGVtZW50RGVz
Y2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCi0g
ICAgOiBtX3Jvb3Qocm9vdCkKLXsKLX0KLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvciBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyOjpiZWdpbigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcihFbGVtZW50
VHJhdmVyc2FsOjpmaXJzdENoaWxkKG1fcm9vdCkpOwotfQotCi1pbmxpbmUgRWxlbWVudERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI6
OmVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
cigpOwotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIEVsZW1lbnRE
ZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI6Omxhc3QoKSBjb25zdAotewotICAgIHJldHVy
biBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoRWxlbWVudFRyYXZlcnNhbDo6bGFzdFdp
dGhpbihtX3Jvb3QpKTsKLX0KLQotLy8gU3RhbmRhbG9uZSBmdW5jdGlvbnMKLQotaW5saW5lIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyIGVsZW1lbnREZXNjZW5kYW50cyhDb250YWlu
ZXJOb2RlJiByb290KQotewotICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRh
cHRlcihyb290KTsKLX0KLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFk
YXB0ZXIgZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCi17Ci0g
ICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIocm9vdCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIHN0ZCB7Ci10ZW1wbGF0ZSA8
PiBzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPFdlYkNvcmU6OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3I+IHsKLSAgICB0eXBlZGVmIFdlYkNvcmU6OkVsZW1lbnQgdmFsdWVfdHlwZTsKLX07Ci10ZW1w
bGF0ZSA8PiBzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPFdlYkNvcmU6OkVsZW1lbnREZXNjZW5kYW50
Q29uc3RJdGVyYXRvcj4gewotICAgIHR5cGVkZWYgY29uc3QgV2ViQ29yZTo6RWxlbWVudCB2YWx1
ZV90eXBlOwotfTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRl
cmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3IuaAppbmRleCAzNzRk
YmE3YTRjMjQ3OGRkZDkzYWViMmE0YzQ0ZTNkYjgyZDczYjU2Li40ZjU3OTAxOTQzYTcwYzdkNzNi
ZTM2MzJjNWFjOTFkMmFjYzRhOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvci5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM0LDE2ICszNCwxNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBFbGVtZW50SXRlcmF0b3IgeworY2xhc3MgRWxlbWVudEl0
ZXJhdG9yIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8c3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywg
RWxlbWVudFR5cGU+IHsKIHB1YmxpYzoKLSAgICBFbGVtZW50SXRlcmF0b3IoY29uc3QgQ29udGFp
bmVyTm9kZSogcm9vdCk7Ci0gICAgRWxlbWVudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUq
IHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKKyAgICBFbGVtZW50SXRlcmF0b3IoKSA9IGRl
ZmF1bHQ7CiAKICAgICBFbGVtZW50VHlwZSYgb3BlcmF0b3IqKCkgY29uc3Q7CiAgICAgRWxlbWVu
dFR5cGUqIG9wZXJhdG9yLT4oKSBjb25zdDsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBF
bGVtZW50SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
RWxlbWVudEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7CisgICAgY29uc3RleHByIG9wZXJhdG9yIGJv
b2woKSBjb25zdDsKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKKyAgICBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KHN0ZDo6bnVsbHB0cl90KSBjb25zdDsKKyAgICBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVsZW1lbnRJdGVyYXRvciYpIGNvbnN0OwogCiAg
ICAgRWxlbWVudEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHQoKTsKICAgICBFbGVtZW50SXRlcmF0b3Im
IHRyYXZlcnNlUHJldmlvdXMoKTsKQEAgLTU0LDM5ICs1NSwxMiBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGRyb3BBc3NlcnRpb25zKCk7CiAKLXByaXZhdGU6Ci0gICAgY29uc3QgQ29udGFpbmVyTm9k
ZSogbV9yb290OwotICAgIEVsZW1lbnRUeXBlKiBtX2N1cnJlbnQ7Ci0KLSNpZiBBU1NFUlRfRU5B
QkxFRAotICAgIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMgbV9hc3NlcnRpb25zOwotI2VuZGlm
Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBFbGVtZW50Q29u
c3RJdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgRWxlbWVudENvbnN0SXRlcmF0b3IoY29uc3QgQ29u
dGFpbmVyTm9kZSogcm9vdCk7Ci0gICAgRWxlbWVudENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFp
bmVyTm9kZSogcm9vdCwgY29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotCi0gICAgY29uc3Qg
RWxlbWVudFR5cGUmIG9wZXJhdG9yKigpIGNvbnN0OwotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBv
cGVyYXRvci0+KCkgY29uc3Q7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRWxlbWVudENv
bnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRWxl
bWVudENvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKLQotICAgIEVsZW1lbnRDb25zdEl0ZXJh
dG9yJiB0cmF2ZXJzZU5leHQoKTsKLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VQ
cmV2aW91cygpOwotICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRTaWJsaW5n
KCk7Ci0gICAgRWxlbWVudENvbnN0SXRlcmF0b3ImIHRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKCk7
Ci0gICAgRWxlbWVudENvbnN0SXRlcmF0b3ImIHRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4o
KTsKLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VBbmNlc3RvcigpOwotCi0gICAg
dm9pZCBkcm9wQXNzZXJ0aW9ucygpOworcHJvdGVjdGVkOgorICAgIEVsZW1lbnRJdGVyYXRvcihj
b25zdCBDb250YWluZXJOb2RlKiByb290LCBFbGVtZW50VHlwZSogY3VycmVudCk7CiAKIHByaXZh
dGU6Ci0gICAgY29uc3QgQ29udGFpbmVyTm9kZSogbV9yb290OwotICAgIGNvbnN0IEVsZW1lbnRU
eXBlKiBtX2N1cnJlbnQ7CisgICAgY29uc3QgQ29udGFpbmVyTm9kZSogbV9yb290IHsgbnVsbHB0
ciB9OworICAgIEVsZW1lbnRUeXBlKiBtX2N1cnJlbnQgeyBudWxscHRyIH07CiAKICNpZiBBU1NF
UlRfRU5BQkxFRAogICAgIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMgbV9hc3NlcnRpb25zOwpA
QCAtOTUsMTMgKzY5LDYgQEAgcHJpdmF0ZToKIAogLy8gRWxlbWVudEl0ZXJhdG9yCiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+OjpFbGVtZW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCkKLSAgICA6
IG1fcm9vdChyb290KQotICAgICwgbV9jdXJyZW50KG51bGxwdHIpCi17Ci19Ci0KIHRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+OjpFbGVtZW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwgRWxlbWVudFR5
cGUqIGN1cnJlbnQpCiAgICAgOiBtX3Jvb3Qocm9vdCkKQEAgLTIzNywxNjAgKzIwNCwyNSBAQCBp
bmxpbmUgRWxlbWVudFR5cGUqIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9y
LT4oKSBjb25zdAogICAgIHJldHVybiBtX2N1cnJlbnQ7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KLWlubGluZSBib29sIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46
Om9wZXJhdG9yPT0oY29uc3QgRWxlbWVudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICBB
U1NFUlQobV9yb290ID09IG90aGVyLm1fcm9vdCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMu
ZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuIG1fY3VycmVudCA9PSBvdGhlci5tX2N1
cnJlbnQ7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBib29s
IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIT0oY29uc3QgRWxlbWVudEl0
ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci19
Ci0KLS8vIEVsZW1lbnRDb25zdEl0ZXJhdG9yCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KLWlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRD
b25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QpCi0gICAgOiBtX3Jvb3Qocm9v
dCkKLSAgICAsIG1fY3VycmVudChudWxscHRyKQotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpF
bGVtZW50Q29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290LCBjb25zdCBFbGVt
ZW50VHlwZSogY3VycmVudCkKLSAgICA6IG1fcm9vdChyb290KQotICAgICwgbV9jdXJyZW50KGN1
cnJlbnQpCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAsIG1fYXNzZXJ0aW9ucyhjdXJyZW50KQot
I2VuZGlmCi17Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBF
bGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0KCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAg
ICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICBtX2N1cnJl
bnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0KCptX2N1cnJlbnQsIG1fcm9vdCk7Ci0j
aWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRl
cmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBtX2Fz
c2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAgIHJldHVy
biAqdGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVs
ZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxl
bWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZpb3VzKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsK
LSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICBtX2N1
cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpwcmV2aW91cygqbV9jdXJyZW50LCBtX3Jv
b3QpOwotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4g
dGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAg
ICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLSAg
ICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlu
bGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDb25zdEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGluZygpCi17Ci0gICAgQVNTRVJUKG1f
Y3VycmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7
Ci0gICAgbV9jdXJyZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFNpYmxpbmcoKm1f
Y3VycmVudCk7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24g
d2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQot
ICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRp
ZgotICAgIHJldHVybiAqdGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotaW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZpb3VzU2libGluZygpCi17Ci0gICAg
QVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011
dGF0ZWQoKSk7Ci0gICAgbV9jdXJyZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlv
dXNTaWJsaW5nKCptX2N1cnJlbnQpOwotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRHJvcCB0
aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAo
IW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0
aW9uKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4m
IEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2tpcHBpbmdD
aGlsZHJlbigpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gY29uc3RleHByIEVsZW1l
bnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIGJvb2woKSBjb25zdAogewotICAgIEFT
U0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRh
dGVkKCkpOwotICAgIG1fY3VycmVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRTa2lw
cGluZ0NoaWxkcmVuKCptX2N1cnJlbnQsIG1fcm9vdCk7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAg
ICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5k
LgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlz
cGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAgIHJldHVybiAqdGhpczsKLX0KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZUFu
Y2VzdG9yKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQobV9jdXJyZW50
ICE9IG1fcm9vdCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQo
KSk7Ci0gICAgbV9jdXJyZW50ID0gZmluZEVsZW1lbnRBbmNlc3Rvck9mVHlwZTxjb25zdCBFbGVt
ZW50VHlwZT4oKm1fY3VycmVudCk7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRo
ZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICgh
bV9jdXJyZW50KQotICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRp
b24oKTsKLSNlbmRpZgotICAgIHJldHVybiAqdGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgotaW5saW5lIHZvaWQgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5
cGU+Ojpkcm9wQXNzZXJ0aW9ucygpCi17Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2Fzc2Vy
dGlvbnMuY2xlYXIoKTsKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+Ci1pbmxpbmUgY29uc3QgRWxlbWVudFR5cGUmIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6b3BlcmF0b3IqKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAg
ICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4g
Km1fY3VycmVudDsKKyAgICByZXR1cm4gbV9jdXJyZW50OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgY29uc3QgRWxlbWVudFR5cGUqIEVsZW1lbnRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItPigpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4gY29uc3RleHByIGJvb2wgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBl
Pjo6b3BlcmF0b3IhKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NF
UlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gbV9jdXJy
ZW50OworICAgIHJldHVybiAhbV9jdXJyZW50OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+Ci1pbmxpbmUgYm9vbCBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46
Om9wZXJhdG9yPT0oY29uc3QgRWxlbWVudENvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdAordGVt
cGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNvbnN0ZXhwciBib29sIEVsZW1lbnRJdGVyYXRv
cjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIT0oc3RkOjpudWxscHRyX3QpIGNvbnN0CiB7Ci0gICAg
QVNTRVJUKG1fcm9vdCA9PSBvdGhlci5tX3Jvb3QpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25z
LmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQgPT0gb3RoZXIubV9j
dXJyZW50OworICAgIHJldHVybiAhbV9jdXJyZW50OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1pbmxpbmUgYm9vbCBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT46Om9wZXJhdG9yIT0oY29uc3QgRWxlbWVudENvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdAor
dGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNvbnN0ZXhwciBib29sIEVsZW1lbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIT0oY29uc3QgRWxlbWVudEl0ZXJhdG9yJiBvdGhl
cikgY29uc3QKIHsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgQVNTRVJUKG1f
cm9vdCA9PSBvdGhlci5tX3Jvb3QgfHwgIW1fY3VycmVudCB8fCAhb3RoZXIubV9jdXJyZW50KTsK
KyAgICByZXR1cm4gbV9jdXJyZW50ICE9IG90aGVyLm1fY3VycmVudDsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmNwcAppbmRleCBkZDBjOTk5
MTgwOWNiZjdjNzEwNjAwNTAyMTY0ZTlhMTZmZGNjMTkxLi40Nzg5MjMwMWUyOTZhYTZhNTdkOGQz
ODUzYWI3YjY4ZGU1YjljYTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5v
ZGVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmNwcApAQCAt
Miw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUu
b3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUu
b3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3Jn
KQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LTIwMDgsIDIwMTAsIDIwMTMtMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIz
LDMyICsyMywxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxpdmVOb2RlTGlz
dC5oIgogCi0jaW5jbHVkZSAiQ2xhc3NDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiRWxlbWVudC5o
IgotI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlv
bi5oIgotI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKExpdmVOb2RlTGlzdCk7Ci0KIExp
dmVOb2RlTGlzdDo6TGl2ZU5vZGVMaXN0KENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSwgTm9kZUxp
c3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUpCiAgICAgOiBtX293bmVyTm9kZShv
d25lck5vZGUpCiAgICAgLCBtX2ludmFsaWRhdGlvblR5cGUoaW52YWxpZGF0aW9uVHlwZSkKLSAg
ICAsIG1faXNSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudChmYWxzZSkKIHsKLSAg
ICBBU1NFUlQobV9pbnZhbGlkYXRpb25UeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbnZh
bGlkYXRpb25UeXBlKSk7CiB9CiAKIExpdmVOb2RlTGlzdDo6fkxpdmVOb2RlTGlzdCgpID0gZGVm
YXVsdDsKIAotQ29udGFpbmVyTm9kZSYgTGl2ZU5vZGVMaXN0Ojpyb290Tm9kZSgpIGNvbnN0Ci17
Ci0gICAgaWYgKGlzUm9vdGVkQXREb2N1bWVudCgpICYmIG93bmVyTm9kZSgpLmlzQ29ubmVjdGVk
KCkpCi0gICAgICAgIHJldHVybiBvd25lck5vZGUoKS5kb2N1bWVudCgpOwotCi0gICAgcmV0dXJu
IG93bmVyTm9kZSgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2
ZU5vZGVMaXN0LmgKaW5kZXggZjI3ZjBlZjY3NGJiZDk4MjMxNGMwYmJiMjViODUyNDIyMzRkYTU4
Zi4uMzRhM2RlZmQyZjUwYmM2YTE3MzNiZjgxNTgwZmE3NGQ4NjQwZDUyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9MaXZlTm9kZUxpc3QuaApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgIkNvbGxlY3Rpb25J
bmRleENhY2hlLmgiCiAjaW5jbHVkZSAiQ29sbGVjdGlvblRyYXZlcnNhbC5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KQEAgLTM5LDM5ICszOCwzNSBAQCBjbGFzcyBFbGVtZW50Owogc3RhdGljIGJv
b2wgc2hvdWxkSW52YWxpZGF0ZVR5cGVPbkF0dHJpYnV0ZUNoYW5nZShOb2RlTGlzdEludmFsaWRh
dGlvblR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogY2xhc3MgTGl2ZU5vZGVMaXN0IDog
cHVibGljIE5vZGVMaXN0IHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKExpdmVOb2RlTGlz
dCk7CisgICAgV1RGX01BS0VfSVNPX05PTkFMTE9DQVRBQkxFKExpdmVOb2RlTGlzdCk7CiBwdWJs
aWM6Ci0gICAgTGl2ZU5vZGVMaXN0KENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSwgTm9kZUxpc3RJ
bnZhbGlkYXRpb25UeXBlKTsKICAgICB2aXJ0dWFsIH5MaXZlTm9kZUxpc3QoKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBpc1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25zdCA9IDA7CiAKLSAgICBBTFdBWVNfSU5M
SU5FIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Tm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlPihtX2ludmFsaWRhdGlv
blR5cGUpOyB9CisgICAgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUo
KSBjb25zdCB7IHJldHVybiBtX2ludmFsaWRhdGlvblR5cGU7IH0KICAgICBDb250YWluZXJOb2Rl
JiBvd25lck5vZGUoKSBjb25zdCB7IHJldHVybiBtX293bmVyTm9kZTsgfQotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBpbnZhbGlkYXRlQ2FjaGVGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoc2hvdWxkSW52YWxpZGF0ZVR5
cGVPbkF0dHJpYnV0ZUNoYW5nZShpbnZhbGlkYXRpb25UeXBlKCksIGF0dHJOYW1lKSkKLSAgICAg
ICAgICAgIGludmFsaWRhdGVDYWNoZSgpOwotICAgIH0KKyAgICB2b2lkIGludmFsaWRhdGVDYWNo
ZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQoRG9jdW1lbnQmKSBj
b25zdCA9IDA7CiAgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoKSBjb25zdCB7IGludmFsaWRhdGVD
YWNoZUZvckRvY3VtZW50KGRvY3VtZW50KCkpOyB9CiAKICAgICBib29sIGlzUmVnaXN0ZXJlZEZv
ckludmFsaWRhdGlvbkF0RG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lzUmVnaXN0ZXJlZEZv
ckludmFsaWRhdGlvbkF0RG9jdW1lbnQ7IH0KLSAgICB2b2lkIHNldFJlZ2lzdGVyZWRGb3JJbnZh
bGlkYXRpb25BdERvY3VtZW50KGJvb2wgZikgeyBtX2lzUmVnaXN0ZXJlZEZvckludmFsaWRhdGlv
bkF0RG9jdW1lbnQgPSBmOyB9CisgICAgdm9pZCBzZXRSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9u
QXREb2N1bWVudChib29sIGlzUmVnaXN0ZXJlZCkgeyBtX2lzUmVnaXN0ZXJlZEZvckludmFsaWRh
dGlvbkF0RG9jdW1lbnQgPSBpc1JlZ2lzdGVyZWQ7IH0KIAogcHJvdGVjdGVkOgorICAgIExpdmVO
b2RlTGlzdChDb250YWluZXJOb2RlJiBvd25lck5vZGUsIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlw
ZSk7CisKICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX293bmVyTm9k
ZS0+ZG9jdW1lbnQoKTsgfQorICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKCkgY29uc3Q7CiAK
IHByaXZhdGU6CiAgICAgYm9vbCBpc0xpdmVOb2RlTGlzdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KIAotICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKCkgY29uc3Q7Ci0KICAgICBS
ZWY8Q29udGFpbmVyTm9kZT4gbV9vd25lck5vZGU7CiAKLSAgICBjb25zdCB1bnNpZ25lZCBtX2lu
dmFsaWRhdGlvblR5cGU7Ci0gICAgYm9vbCBtX2lzUmVnaXN0ZXJlZEZvckludmFsaWRhdGlvbkF0
RG9jdW1lbnQ7CisgICAgY29uc3QgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIG1faW52YWxpZGF0
aW9uVHlwZTsKKyAgICBib29sIG1faXNSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVu
dCB7IGZhbHNlIH07CiB9OwogCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgpAQCAtODEs
MTQgKzc2LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWNoZWRMaXZlTm9kZUxpc3QoKTsK
IAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW5kZXhDYWNo
ZS5ub2RlQ291bnQobm9kZUxpc3QoKSk7IH0KLSAgICBFbGVtZW50KiBpdGVtKHVuc2lnbmVkIG9m
ZnNldCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVBdChub2RlTGlz
dCgpLCBvZmZzZXQpOyB9CisgICAgRWxlbWVudCogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faW5kZXhDYWNoZS5ub2RlQXQobm9kZUxpc3QoKSwgb2Zmc2V0KTsg
fQogCiAgICAgLy8gRm9yIENvbGxlY3Rpb25JbmRleENhY2hlCi0gICAgRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvciBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBDb2xsZWN0aW9uVHJh
dmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OmJlZ2luKG5vZGVM
aXN0KCksIHJvb3ROb2RlKCkpOyB9Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xs
ZWN0aW9uTGFzdCgpIGNvbnN0IHsgcmV0dXJuIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlv
blRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6bGFzdChub2RlTGlzdCgpLCByb290Tm9kZSgp
KTsgfQotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgY29sbGVjdGlvbkVuZCgpIGNvbnN0
IHsgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoKTsgfQotICAgIHZvaWQgY29sbGVj
dGlvblRyYXZlcnNlRm9yd2FyZChFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1
bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdCB7IENvbGxlY3Rp
b25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVy
c2VGb3J3YXJkKG5vZGVMaXN0KCksIGN1cnJlbnQsIGNvdW50LCB0cmF2ZXJzZWRDb3VudCk7IH0K
LSAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KSBjb25zdCB7IENvbGxlY3Rpb25UcmF2ZXJz
YWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VCYWNrd2Fy
ZChub2RlTGlzdCgpLCBjdXJyZW50LCBjb3VudCk7IH0KKyAgICB1c2luZyBUcmF2ZXJzYWwgPSBD
b2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz47
CisgICAgdXNpbmcgSXRlcmF0b3IgPSBUcmF2ZXJzYWw6Okl0ZXJhdG9yOworICAgIGF1dG8gY29s
bGVjdGlvbkJlZ2luKCkgY29uc3QgeyByZXR1cm4gVHJhdmVyc2FsOjpiZWdpbihub2RlTGlzdCgp
LCByb290Tm9kZSgpKTsgfQorICAgIGF1dG8gY29sbGVjdGlvbkxhc3QoKSBjb25zdCB7IHJldHVy
biBUcmF2ZXJzYWw6Omxhc3Qobm9kZUxpc3QoKSwgcm9vdE5vZGUoKSk7IH0KKyAgICB2b2lkIGNv
bGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50
LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0IHsgVHJhdmVyc2FsOjp0cmF2ZXJzZUZv
cndhcmQobm9kZUxpc3QoKSwgY3VycmVudCwgY291bnQsIHRyYXZlcnNlZENvdW50KTsgfQorICAg
IHZvaWQgY29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQoSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2ln
bmVkIGNvdW50KSBjb25zdCB7IFRyYXZlcnNhbDo6dHJhdmVyc2VCYWNrd2FyZChub2RlTGlzdCgp
LCBjdXJyZW50LCBjb3VudCk7IH0KICAgICBib29sIGNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJhY2t3
YXJkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgd2lsbFZhbGlkYXRlSW5kZXhD
YWNoZSgpIGNvbnN0IHsgZG9jdW1lbnQoKS5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9u
KGNvbnN0X2Nhc3Q8Q2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT4mPigqdGhpcykpOyB9
CiAKQEAgLTEwOCw5ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIE5vZGVMaXN0VHlwZSYgbm9kZUxp
c3QoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxOb2RlTGlzdFR5cGUmPigqdGhpcyk7IH0KICAgICBj
b25zdCBOb2RlTGlzdFR5cGUmIG5vZGVMaXN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpOyB9CiAKLSAgICBDb250YWluZXJOb2RlJiByb290
Tm9kZSgpIGNvbnN0OwotCi0gICAgbXV0YWJsZSBDb2xsZWN0aW9uSW5kZXhDYWNoZTxOb2RlTGlz
dFR5cGUsIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I+IG1faW5kZXhDYWNoZTsKKyAgICBtdXRh
YmxlIENvbGxlY3Rpb25JbmRleENhY2hlPE5vZGVMaXN0VHlwZSwgSXRlcmF0b3I+IG1faW5kZXhD
YWNoZTsKIH07CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0
cmlidXRlQ2hhbmdlKE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSB0eXBlLCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKQEAgLTEzNywzNiArMTMxLDQwIEBAIEFMV0FZU19JTkxJTkUgYm9v
bCBzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmlidXRlQ2hhbmdlKE5vZGVMaXN0SW52YWxpZGF0
aW9uVHlwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitBTFdBWVNfSU5MSU5FIHZvaWQgTGl2ZU5v
ZGVMaXN0OjppbnZhbGlkYXRlQ2FjaGVGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSkgY29uc3QKK3sKKyAgICBpZiAoc2hvdWxkSW52YWxpZGF0ZVR5cGVPbkF0
dHJpYnV0ZUNoYW5nZShtX2ludmFsaWRhdGlvblR5cGUsIGF0dHJpYnV0ZU5hbWUpKQorICAgICAg
ICBpbnZhbGlkYXRlQ2FjaGUoKTsKK30KKworaW5saW5lIENvbnRhaW5lck5vZGUmIExpdmVOb2Rl
TGlzdDo6cm9vdE5vZGUoKSBjb25zdAoreworICAgIGlmIChpc1Jvb3RlZEF0RG9jdW1lbnQoKSAm
JiBtX293bmVyTm9kZS0+aXNDb25uZWN0ZWQoKSkKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50KCk7
CisKKyAgICByZXR1cm4gbV9vd25lck5vZGU7Cit9CisKIHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlz
dFR5cGU+CiBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Q2FjaGVkTGl2ZU5vZGVM
aXN0KENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGlu
dmFsaWRhdGlvblR5cGUpCiAgICAgOiBMaXZlTm9kZUxpc3Qob3duZXJOb2RlLCBpbnZhbGlkYXRp
b25UeXBlKQotICAgICwgbV9pbmRleENhY2hlKG5vZGVMaXN0KCkpCiB7CiB9CiAKIHRlbXBsYXRl
IDxjbGFzcyBOb2RlTGlzdFR5cGU+CiBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6
fkNhY2hlZExpdmVOb2RlTGlzdCgpCiB7Ci0gICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENh
Y2hlKG5vZGVMaXN0KCkpKQorICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZSgpKQog
ICAgICAgICBkb2N1bWVudCgpLnVucmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbigqdGhp
cyk7CiB9CiAKLXRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+Ci1pbmxpbmUgQ29udGFpbmVy
Tm9kZSYgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OnJvb3ROb2RlKCkgY29uc3QK
LXsKLSAgICBpZiAobm9kZUxpc3QoKS5pc1Jvb3RlZEF0RG9jdW1lbnQoKSAmJiBvd25lck5vZGUo
KS5pc0Nvbm5lY3RlZCgpKQotICAgICAgICByZXR1cm4gb3duZXJOb2RlKCkuZG9jdW1lbnQoKTsK
LQotICAgIHJldHVybiBvd25lck5vZGUoKTsKLX0KLQogdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0
VHlwZT4KIHZvaWQgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmludmFsaWRhdGVD
YWNoZUZvckRvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIHsKLSAgICBpZiAoIW1f
aW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKG5vZGVMaXN0KCkpKQorICAgIGlmICghbV9pbmRleENh
Y2hlLmhhc1ZhbGlkQ2FjaGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGRvY3VtZW50LnVucmVn
aXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbihjb25zdF9jYXN0PE5vZGVMaXN0VHlwZSY+KG5v
ZGVMaXN0KCkpKTsKLSAgICBtX2luZGV4Q2FjaGUuaW52YWxpZGF0ZShub2RlTGlzdCgpKTsKKyAg
ICBtX2luZGV4Q2FjaGUuaW52YWxpZGF0ZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuY3BwCmluZGV4IGYwYWRkMmFjMmQ1NDY2NmZhMmZl
ODU3ODk2MmNiNTQwOGZiYjczNTQuLmY0ZmEyNmZjN2U2MzYyNDQxYWMzNDM3NGVjMTJlNTI0ODlm
N2Y5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuY3BwCkBAIC0yLDcgKzIsNyBAQAog
ICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAg
ICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAg
ICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDcsIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM4LDYgKzM4LDExIEBAIE5hbWVOb2RlTGlz
dDo6TmFtZU5vZGVMaXN0KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5n
JiBuYW1lKQogewogfQogCitSZWY8TmFtZU5vZGVMaXN0PiBOYW1lTm9kZUxpc3Q6OmNyZWF0ZShD
b250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBOYW1lTm9kZUxpc3Qocm9vdE5vZGUsIG5hbWUpKTsKK30KKwog
TmFtZU5vZGVMaXN0Ojp+TmFtZU5vZGVMaXN0KCkKIHsKICAgICBvd25lck5vZGUoKS5ub2RlTGlz
dHMoKS0+cmVtb3ZlQ2FjaGVXaXRoQXRvbU5hbWUoKnRoaXMsIG1fbmFtZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TmFtZU5vZGVMaXN0LmgKaW5kZXggNzBjNWM3MDBlOTUwZTUzMTQzN2YwZmRlNTFjY2MzOGQ2ZGNi
M2FhMS4uOTQ3NWRlZmVkNGViNzg5ZGZlMzEzMTIxOTQ1NGZlMjM4NTAxZTdiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9OYW1lTm9kZUxpc3QuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5
OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRp
IEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsg
TXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LTIw
MDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0yNCwyNCArMjQsMTcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTGl2
ZU5vZGVMaXN0LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9tU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gTm9kZUxpc3Qgd2hp
Y2ggbGlzdHMgYWxsIE5vZGVzIGluIGEgRWxlbWVudCB3aXRoIGEgZ2l2ZW4gIm5hbWUiIGF0dHJp
YnV0ZQogY2xhc3MgTmFtZU5vZGVMaXN0IGZpbmFsIDogcHVibGljIENhY2hlZExpdmVOb2RlTGlz
dDxOYW1lTm9kZUxpc3Q+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE5hbWVOb2RlTGlz
dCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxOYW1lTm9kZUxpc3Q+IGNyZWF0ZShDb250YWlu
ZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE5hbWVOb2RlTGlzdChyb290Tm9kZSwgbmFtZSkpOwotICAg
IH0KLQorICAgIHN0YXRpYyBSZWY8TmFtZU5vZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYg
cm9vdE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpOwogICAgIHZpcnR1YWwgfk5hbWVOb2Rl
TGlzdCgpOwogCi0gICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCBpc1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgaXNSb290ZWRBdERvY3VtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFs
c2U7IH0KIAogcHJpdmF0ZToKICAgICBOYW1lTm9kZUxpc3QoQ29udGFpbmVyTm9kZSYgcm9vdE5v
ZGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDk4MjEyNDRk
YzkxNzQ5MzQxYjNkMjZjNTNhZTI1N2YzYWNhYWE5NTEuLmY5YzU5ZDA2NTcxMTU1ZTExMzEzYTA4
ZmQ3YTU2ZmMyMmE0NjJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MQXJlYUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MQm9keUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3Bw
CmluZGV4IGVmMDU1MjkzNDI3N2Q0M2IxMTlhNDY3NTFmZjQyOGUwYTE4MDM3OTAuLmMwNjFhM2Rl
MmJjNTU4MjVmOTVjZjcyZDQ4MDMzYTFlY2QxOWQyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0
b3JRdWVyeS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDE0IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJTZWxlY3RvclF1ZXJ5LmgiCiAKICNpbmNs
dWRlICJDU1NQYXJzZXIuaCIKLSNpbmNsdWRlICJFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgi
CisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCiAjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3QuaCIK
QEAgLTE1MCwxNSArMTUwLDEyIEBAIGJvb2wgU2VsZWN0b3JEYXRhTGlzdDo6bWF0Y2hlcyhFbGVt
ZW50JiB0YXJnZXRFbGVtZW50KSBjb25zdAogCiBFbGVtZW50KiBTZWxlY3RvckRhdGFMaXN0Ojpj
bG9zZXN0KEVsZW1lbnQmIHRhcmdldEVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgRWxlbWVudCogY3Vy
cmVudE5vZGUgPSAmdGFyZ2V0RWxlbWVudDsKLSAgICBkbyB7CisgICAgZm9yIChhdXRvJiBjdXJy
ZW50RWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4odGFyZ2V0RWxlbWVudCkpIHsKICAg
ICAgICAgZm9yIChhdXRvJiBzZWxlY3RvciA6IG1fc2VsZWN0b3JzKSB7Ci0gICAgICAgICAgICBF
bGVtZW50KiBjYW5kaWRhdGVFbGVtZW50ID0gc2VsZWN0b3JDbG9zZXN0KHNlbGVjdG9yLCAqY3Vy
cmVudE5vZGUsIHRhcmdldEVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZUVsZW1l
bnQpCisgICAgICAgICAgICBpZiAoYXV0byogY2FuZGlkYXRlRWxlbWVudCA9IHNlbGVjdG9yQ2xv
c2VzdChzZWxlY3RvciwgY3VycmVudEVsZW1lbnQsIHRhcmdldEVsZW1lbnQpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBjYW5kaWRhdGVFbGVtZW50OwogICAgICAgICB9Ci0gICAgICAgIGN1cnJl
bnROb2RlID0gY3VycmVudE5vZGUtPnBhcmVudEVsZW1lbnQoKTsKLSAgICB9IHdoaWxlIChjdXJy
ZW50Tm9kZSk7CisgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0yOTUsNyArMjky
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4KIHN0YXRpYyBpbmxp
bmUgdm9pZCBlbGVtZW50c0ZvckxvY2FsTmFtZShjb25zdCBDb250YWluZXJOb2RlJiByb290Tm9k
ZSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBsb3dlcmNh
c2VMb2NhbE5hbWUsIHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0
cHV0KQogewogICAgIGlmIChsb2NhbE5hbWUgPT0gbG93ZXJjYXNlTG9jYWxOYW1lKSB7Ci0gICAg
ICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9jYXN0PENv
bnRhaW5lck5vZGUmPihyb290Tm9kZSkpKSB7CisgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6
IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJv
b3ROb2RlKSkpIHsKICAgICAgICAgICAgIGlmIChlbGVtZW50LnRhZ1FOYW1lKCkubG9jYWxOYW1l
KCkgPT0gbG9jYWxOYW1lKSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0Ojph
cHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICAgICAgICAg
IGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAg
LTMwMyw3ICszMDAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZWxlbWVudHNGb3JMb2NhbE5hbWUo
Y29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0bwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxl
bWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4o
Y29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAgICAgICAgICAgaWYg
KGxvY2FsTmFtZU1hdGNoZXMoZWxlbWVudCwgbG9jYWxOYW1lLCBsb3dlcmNhc2VMb2NhbE5hbWUp
KSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRwdXRGb3JF
bGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChTZWxlY3RvclF1
ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAgLTMxNiw3ICszMTMsNyBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgZWxlbWVudHNGb3JMb2NhbE5hbWUoY29uc3QgQ29udGFpbmVy
Tm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0bwogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVl
cnlUcmFpdD4KIHN0YXRpYyBpbmxpbmUgdm9pZCBhbnlFbGVtZW50KGNvbnN0IENvbnRhaW5lck5v
ZGUmIHJvb3ROb2RlLCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5cGUmIG91
dHB1dCkKIHsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29u
c3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxl
bWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9k
ZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRw
dXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICBpZiAoU2VsZWN0b3JRdWVy
eVRyYWl0OjpzaG91bGRPbmx5TWF0Y2hGaXJzdEVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0zNDUsNyArMzQyLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6
OmV4ZWN1dGVTaW5nbGVUYWdOYW1lU2VsZWN0b3JEYXRhKGNvbnN0IENvbnQKICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZhbGxiYWNrOiBOYW1lc3BhY2VVUkkgaXMgc2V0LCBz
ZWxlY3RvckxvY2FsTmFtZSBtYXkgYmUgc3RhckF0b20oKS4KLSAgICAgICAgZm9yIChhdXRvJiBl
bGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJv
b3ROb2RlKSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5
cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQubmFtZXNwYWNlVVJJKCkgPT0gc2VsZWN0b3JOYW1lc3BhY2VV
UkkgJiYgbG9jYWxOYW1lTWF0Y2hlcyhlbGVtZW50LCBzZWxlY3RvckxvY2FsTmFtZSwgc2VsZWN0
b3JMb3dlcmNhc2VMb2NhbE5hbWUpKSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRy
YWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICAg
ICAgICAgIGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVu
dCkKQEAgLTM2Miw3ICszNTksNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlz
dDo6ZXhlY3V0ZVNpbmdsZUNsYXNzTmFtZVNlbGVjdG9yRGF0YShjb25zdCBDbwogICAgIEFTU0VS
VChpc1NpbmdsZUNsYXNzTmFtZVNlbGVjdG9yKCpzZWxlY3RvckRhdGEuc2VsZWN0b3IpKTsKIAog
ICAgIGNvbnN0IEF0b21TdHJpbmcmIGNsYXNzTmFtZSA9IHNlbGVjdG9yRGF0YS5zZWxlY3Rvci0+
dmFsdWUoKTsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29u
c3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxl
bWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9k
ZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAgaWYgKGVsZW1lbnQuaGFzQ2xhc3MoKSAmJiBlbGVt
ZW50LmNsYXNzTmFtZXMoKS5jb250YWlucyhjbGFzc05hbWUpKSB7CiAgICAgICAgICAgICBTZWxl
Y3RvclF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1lbnQob3V0cHV0LCAmZWxlbWVudCk7
CiAgICAgICAgICAgICBpZiAoU2VsZWN0b3JRdWVyeVRyYWl0OjpzaG91bGRPbmx5TWF0Y2hGaXJz
dEVsZW1lbnQpCkBAIC0zNzYsNyArMzczLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9y
RGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVTZWxlY3RvckRhdGEoY29uc3QgQ29udGFpbmVyTm8KIHsK
ICAgICBBU1NFUlQobV9zZWxlY3RvcnMuc2l6ZSgpID09IDEpOwogCi0gICAgZm9yIChhdXRvJiBl
bGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNl
YXJjaFJvb3ROb2RlKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09m
VHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihzZWFyY2hSb290Tm9kZSkp
KSB7CiAgICAgICAgIGlmIChzZWxlY3Rvck1hdGNoZXMoc2VsZWN0b3JEYXRhLCBlbGVtZW50LCBy
b290Tm9kZSkpIHsKICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBwZW5kT3V0cHV0
Rm9yRWxlbWVudChvdXRwdXQsICZlbGVtZW50KTsKICAgICAgICAgICAgIGlmIChTZWxlY3RvclF1
ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAgLTM4OCw3ICszODUsNyBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZVNlbGVj
dG9yRGF0YShjb25zdCBDb250YWluZXJObwogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVl
cnlUcmFpdD4KIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2lu
Z2xlTXVsdGlTZWxlY3RvckRhdGEoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIHR5cGVu
YW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0cHV0KSBjb25zdAogewotICAg
IGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9jYXN0PENvbnRh
aW5lck5vZGUmPihyb290Tm9kZSkpKSB7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2Vu
ZGFudHNPZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUp
KSkgewogICAgICAgICBmb3IgKGF1dG8mIHNlbGVjdG9yIDogbV9zZWxlY3RvcnMpIHsKICAgICAg
ICAgICAgIGlmIChzZWxlY3Rvck1hdGNoZXMoc2VsZWN0b3IsIGVsZW1lbnQsIHJvb3ROb2RlKSkg
ewogICAgICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBwZW5kT3V0cHV0Rm9yRWxl
bWVudChvdXRwdXQsICZlbGVtZW50KTsKQEAgLTQwNCw3ICs0MDEsNyBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZU11bHRpU2VsZWN0b3JEYXRhKGNv
bnN0IENvbnRhaQogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4KIEFMV0FZ
U19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29tcGlsZWRTaW1wbGVTZWxl
Y3RvckNoZWNrZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgc2VhcmNoUm9vdE5vZGUsIFNlbGVjdG9y
Q29tcGlsZXI6OlF1ZXJ5U2VsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXIgc2VsZWN0b3JDaGVj
a2VyLCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5cGUmIG91dHB1dCwgY29u
c3QgU2VsZWN0b3JEYXRhJiBzZWxlY3RvckRhdGEpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvJiBl
bGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNl
YXJjaFJvb3ROb2RlKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09m
VHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihzZWFyY2hSb290Tm9kZSkp
KSB7CiAgICAgICAgIHNlbGVjdG9yRGF0YS5jb21waWxlZFNlbGVjdG9yLndhc1VzZWQoKTsKIAog
ICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2VyKCZlbGVtZW50KSkgewpAQCAtNDIxLDcgKzQxOCw3
IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29tcGlsZWRT
ZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDCiAgICAgU2VsZWN0b3JDaGVja2VyOjpDaGVja2lu
Z0NvbnRleHQgY2hlY2tpbmdDb250ZXh0KFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6UXVlcnlpbmdS
dWxlcyk7CiAgICAgY2hlY2tpbmdDb250ZXh0LnNjb3BlID0gcm9vdE5vZGUuaXNEb2N1bWVudE5v
ZGUoKSA/IG51bGxwdHIgOiAmcm9vdE5vZGU7CiAKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBl
bGVtZW50RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4oc2VhcmNoUm9vdE5v
ZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1l
bnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNlYXJjaFJvb3ROb2RlKSkpIHsKICAgICAg
ICAgc2VsZWN0b3JEYXRhLmNvbXBpbGVkU2VsZWN0b3Iud2FzVXNlZCgpOwogCiAgICAgICAgIGlm
IChzZWxlY3RvckNoZWNrZXIoJmVsZW1lbnQsICZjaGVja2luZ0NvbnRleHQpKSB7CkBAIC00Mzcs
NyArNDM0LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVD
b21waWxlZFNpbmdsZU11bHRpU2VsZWN0b3JEYXRhKGNvbnMKIHsKICAgICBTZWxlY3RvckNoZWNr
ZXI6OkNoZWNraW5nQ29udGV4dCBjaGVja2luZ0NvbnRleHQoU2VsZWN0b3JDaGVja2VyOjpNb2Rl
OjpRdWVyeWluZ1J1bGVzKTsKICAgICBjaGVja2luZ0NvbnRleHQuc2NvcGUgPSByb290Tm9kZS5p
c0RvY3VtZW50Tm9kZSgpID8gbnVsbHB0ciA6ICZyb290Tm9kZTsKLSAgICBmb3IgKGF1dG8mIGVs
ZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9v
dE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVs
ZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAg
Zm9yIChhdXRvJiBzZWxlY3RvciA6IG1fc2VsZWN0b3JzKSB7CiAgICAgICAgICAgICBzZWxlY3Rv
ci5jb21waWxlZFNlbGVjdG9yLndhc1VzZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdu
bWVudC5jcHAKaW5kZXggNGQzZTYxOTQ3ZDNiZjhhNWFhYzRiY2U2NzdmYzcxYTMzYjg1YzZiOC4u
ZDJkMTNjYjA5MzUwZDA3YmM2MjA1N2VjOTNjZjM0ODVhNDYwZGRkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2xvdEFzc2lnbm1lbnQuY3BwCkBAIC0yNiwxMCArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlNsb3RBc3NpZ25tZW50LmgiCiAKLQorI2luY2x1ZGUgIkVsZW1lbnRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKLSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKaW5kZXggOWYzNTkzNWQ5NmM3OWU3NWI2OGQzMGMy
OGNiZTNjNWEwNDNmMDMzMy4uOWEwYjFiNWVhMjcxYTBiNWM0NjBjMDFlOTUwNjVjZDA3OTFhOTM1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI5LDI5NCArMjksMjQxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZVR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBEb3VibGVFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIERvdWJsZUVs
ZW1lbnREZXNjZW5kYW50UmFuZ2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRWxlbWVudERl
c2NlbmRhbnRSYW5nZTsKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sKGNvbnN0
IEVsZW1lbnRUeXBlJik+IGNsYXNzIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZTsKIAot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gewotcHVi
bGljOgotICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJO
b2RlJiByb290KTsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29u
dGFpbmVyTm9kZSYgcm9vdCwgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotICAgIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0
b3IgOiBwdWJsaWMgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+ICB7Ci1wdWJsaWM6
Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVy
Tm9kZSYgcm9vdCk7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29u
c3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgY29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotICAg
IFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Ci19Owor
Ly8gUmFuZ2UgZm9yIGl0ZXJhdGluZyB0aHJvdWdoIGRlc2NlbmRhbnQgZWxlbWVudHMuCit0ZW1w
bGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50
VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFpbmVyTm9kZSYpOwordGVtcGxhdGU8dHlwZW5h
bWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+
IGRlc2NlbmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUmKTsKIAotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
QWRhcHRlciB7Ci1wdWJsaWM6Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRh
cHRlcihDb250YWluZXJOb2RlJiByb290KTsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCk7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKTsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoRWxlbWVudFR5cGUmKTsKLSAgICBUeXBlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IGZyb20oRWxlbWVudCYpOworLy8gUmFu
Z2UgdGhhdCBza2lwcyBlbGVtZW50cyB3aGVyZSB0aGUgZmlsdGVyIHJldHVybnMgZmFsc2UuCit0
ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5
cGUmKT4gRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlLCBm
aWx0ZXI+IGRlc2NlbmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUmKTsKIAotICAgIEVs
ZW1lbnRUeXBlKiBmaXJzdCgpOwotICAgIEVsZW1lbnRUeXBlKiBsYXN0KCk7CisvLyBSYW5nZSBm
b3IgdXNlIHdoZW4gYm90aCBzZXRzIG9mIGRlc2NlbmRhbnRzIGFyZSBrbm93biB0byBiZSB0aGUg
c2FtZSBsZW5ndGguCisvLyBJZiB0aGV5IGFyZSBkaWZmZXJlbnQgbGVuZ3RocywgdGhpcyB3aWxs
IHN0b3Agd2hlbiB0aGUgc2hvcnRlciBvbmUgcmVhY2hlcyB0aGUgZW5kLCBidXQgYWxzbyBhbiBh
c3NlcnRpb24gd2lsbCBmYWlsLgordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IERvdWJs
ZUVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKENv
bnRhaW5lck5vZGUmIGZpcnN0Um9vdCwgQ29udGFpbmVyTm9kZSYgc2Vjb25kUm9vdCk7CiAKLXBy
aXZhdGU6Ci0gICAgQ29udGFpbmVyTm9kZSYgbV9yb290OwordGVtcGxhdGU8dHlwZW5hbWUgRWxl
bWVudFR5cGU+IGNsYXNzIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiB7CitwdWJsaWM6CisgICAgRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcigpID0gZGVmYXVsdDsKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0
IENvbnRhaW5lck5vZGUmIHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKKyAgICBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisgICAgRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvciYgb3BlcmF0b3ItLSgpOwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyIHsK
K3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBjbGFzcyBFbGVtZW50RGVzY2VuZGFudFJh
bmdlIHsKIHB1YmxpYzoKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFk
YXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7Ci0gICAgVHlwZWRF
bGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpIGNvbnN0Owot
ICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdp
bkF0KGNvbnN0IEVsZW1lbnRUeXBlJikgY29uc3Q7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGZyb20oY29uc3QgRWxlbWVudCYpIGNvbnN0Owor
ICAgIEVsZW1lbnREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7Cisg
ICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKSBjb25zdDsK
KyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6bnVsbHB0cl90IGVuZCgpIHsgcmV0dXJuIG51bGxw
dHI7IH0KKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbkF0
KEVsZW1lbnRUeXBlJikgY29uc3Q7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVt
ZW50VHlwZT4gZnJvbShFbGVtZW50JikgY29uc3Q7CiAKLSAgICBjb25zdCBFbGVtZW50VHlwZSog
Zmlyc3QoKSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50VHlwZSogbGFzdCgpIGNvbnN0OworICAg
IEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0OworICAgIEVsZW1lbnRUeXBlKiBsYXN0KCkgY29u
c3Q7CiAKIHByaXZhdGU6CiAgICAgY29uc3QgQ29udGFpbmVyTm9kZSYgbV9yb290OwogfTsKIAot
dGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZVR5cGVkRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgewordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+
IGNsYXNzIERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UgewogcHVibGljOgotICAgIHR5cGVk
ZWYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gU2lu
Z2xlQWRhcHRlcjsKLSAgICB0eXBlZGVmIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT4gSXRlcmF0b3I7CisgICAgdHlwZWRlZiBFbGVtZW50RGVzY2VuZGFu
dFJhbmdlPEVsZW1lbnRUeXBlPiBTaW5nbGVBZGFwdGVyOworICAgIHR5cGVkZWYgRG91YmxlRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gSXRlcmF0b3I7CiAKLSAgICBEb3Vi
bGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKFNpbmdsZUFkYXB0ZXImJiwg
U2luZ2xlQWRhcHRlciYmKTsKLSAgICBJdGVyYXRvciBiZWdpbigpOwotICAgIEl0ZXJhdG9yIGVu
ZCgpOworICAgIERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UoU2luZ2xlQWRhcHRlciYmLCBT
aW5nbGVBZGFwdGVyJiYpOworICAgIEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBzdGQ6Om51bGxwdHJfdCBlbmQoKSB7IHJldHVybiBudWxscHRyOyB9CiAKIHBy
aXZhdGU6CiAgICAgc3RkOjpwYWlyPFNpbmdsZUFkYXB0ZXIsIFNpbmdsZUFkYXB0ZXI+IG1fcGFp
cjsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBjbGFzcyBEb3VibGVUeXBl
ZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgewordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5
cGU+IGNsYXNzIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgewogcHVibGljOgotICAg
IHR5cGVkZWYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBTaW5n
bGVJdGVyYXRvcjsKKyAgICB0eXBlZGVmIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+IFNpbmdsZUl0ZXJhdG9yOwogICAgIHR5cGVkZWYgc3RkOjpwYWlyPEVsZW1lbnRUeXBl
JiwgRWxlbWVudFR5cGUmPiBSZWZlcmVuY2VQcm94eTsKIAotICAgIERvdWJsZVR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcihTaW5nbGVJdGVyYXRvciYmLCBTaW5nbGVJdGVyYXRvciYmKTsK
KyAgICBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKFNpbmdsZUl0ZXJhdG9yJiYsIFNp
bmdsZUl0ZXJhdG9yJiYpOwogICAgIFJlZmVyZW5jZVByb3h5IG9wZXJhdG9yKigpIGNvbnN0Owot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3ImKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRG91YmxlVHlwZWRFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yJikgY29uc3Q7Ci0gICAgRG91YmxlVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0
b3IhPShzdGQ6Om51bGxwdHJfdCkgY29uc3Q7CisgICAgRG91YmxlRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvciYgb3BlcmF0b3IrKygpOwogCiBwcml2YXRlOgogICAgIHN0ZDo6cGFpcjxTaW5nbGVJ
dGVyYXRvciwgU2luZ2xlSXRlcmF0b3I+IG1fcGFpcjsKIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFpbmVyTm9kZSYpOwotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFk
YXB0ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUm
KTsKLQotLy8gVGhpcyBtdXN0IG9ubHkgYmUgdXNlZCB3aGVuIGJvdGggc2V0cyBvZiBkZXNjZW5k
YW50cyBhcmUga25vd24gdG8gYmUgdGhlIHNhbWUgbGVuZ3RoLgotLy8gSWYgdGhleSBhcmUgZGlm
ZmVyZW50IGxlbmd0aHMsIHRoaXMgd2lsbCBzdG9wIHdoZW4gdGhlIHNob3J0ZXIgb25lIHJlYWNo
ZXMgdGhlIGVuZCwgYnV0IGFsc28gYW4gYXNzZXJ0aW9uIHdpbGwgZmFpbC4KLXRlbXBsYXRlPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPiBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JB
ZGFwdGVyPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWluZXJOb2RlJiBmaXJz
dFJvb3QsIENvbnRhaW5lck5vZGUmIHNlY29uZFJvb3QpOwotCi0vLyBUeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRl
cihjb25zdCBFbGVtZW50VHlwZSYpPiBjbGFzcyBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3IgOiBwdWJsaWMgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiB7CitwdWJsaWM6Cisg
ICAgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUm
LCBFbGVtZW50VHlwZSogPSBudWxscHRyKTsKKyAgICBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKK307CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+
OjpUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9v
dCkKLSAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnJvb3QpCi17Ci19Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUm
KT4gY2xhc3MgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlIHsKK3B1YmxpYzoKKyAgICB1
c2luZyBJdGVyYXRvciA9IEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50
VHlwZSwgZmlsdGVyPjsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5l
IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBFbGVtZW50VHlw
ZSogY3VycmVudCkKLSAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnJvb3QsIGN1
cnJlbnQpCi17Ci19CisgICAgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlKGNvbnN0IENv
bnRhaW5lck5vZGUmKTsKKyAgICBJdGVyYXRvciBiZWdpbigpIGNvbnN0OworICAgIHN0YXRpYyBj
b25zdGV4cHIgc3RkOjpudWxscHRyX3QgZW5kKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGVk
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRlcmF0b3I8
RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHQoKSk7Ci19CisgICAgRWxlbWVudFR5cGUqIGZpcnN0
KCkgY29uc3Q7CiAKLS8vIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yCitwcml2
YXRlOgorICAgIGNvbnN0IENvbnRhaW5lck5vZGUmIG1fcm9vdDsKK307CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
KGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCi0gICAgOiBFbGVtZW50Q29uc3RJdGVyYXRvcjxF
bGVtZW50VHlwZT4oJnJvb3QpCisvLyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yCiAKK3RlbXBs
YXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiBy
b290LCBFbGVtZW50VHlwZSogY3VycmVudCkKKyAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50
VHlwZT4oJnJvb3QsIGN1cnJlbnQpCiB7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5l
ck5vZGUmIHJvb3QsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVudENv
bnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZyb290LCBjdXJyZW50KQordGVtcGxhdGU8dHlwZW5h
bWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCiB7Cisg
ICAgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0KCk7CisgICAgcmV0
dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUg
VHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBUeXBlZEVs
ZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQor
dGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8
RWxlbWVudFR5cGU+JiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3Bl
cmF0b3ItLSgpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGVkRWxlbWVudERlc2NlbmRh
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6dHJhdmVyc2VOZXh0KCkpOworICAgIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT46OnRyYXZlcnNlUHJldmlvdXMoKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKLS8vIFR5cGVk
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIKKy8vIEVsZW1lbnREZXNjZW5kYW50UmFu
Z2UKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpUeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUmIHJvb3QpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZT46OkVs
ZW1lbnREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKICAgICA6IG1f
cm9vdChyb290KQogewogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxp
bmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4oKQordGVtcGxh
dGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4obV9yb290LCBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpbihtX3Jvb3QpKTsK
KyAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290
LCBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpbihtX3Jvb3QpKTsKIH0KIAotdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRh
cHRlcjxFbGVtZW50VHlwZT46OmVuZCgpCi17Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290KTsKLX0KLSAgICAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBkZXNjZW5kYW50KQordGVtcGxhdGU8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+
IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBl
JiBkZXNjZW5kYW50KSBjb25zdAogewogICAgIEFTU0VSVChkZXNjZW5kYW50LmlzRGVzY2VuZGFu
dE9mKG1fcm9vdCkpOwotICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8
RWxlbWVudFR5cGU+KG1fcm9vdCwgJmRlc2NlbmRhbnQpOworICAgIHJldHVybiBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsICZkZXNjZW5kYW50KTsKIH0KIAot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
QWRhcHRlcjxFbGVtZW50VHlwZT46OmZyb20oRWxlbWVudCYgZGVzY2VuZGFudCkKK3RlbXBsYXRl
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPiBFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPjo6ZnJvbShFbGVtZW50JiBk
ZXNjZW5kYW50KSBjb25zdAogewogICAgIEFTU0VSVChkZXNjZW5kYW50LmlzRGVzY2VuZGFudE9m
KG1fcm9vdCkpOwogICAgIGlmIChpczxFbGVtZW50VHlwZT4oZGVzY2VuZGFudCkpCi0gICAgICAg
IHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9v
dCwgZG93bmNhc3Q8RWxlbWVudFR5cGU+KCZkZXNjZW5kYW50KSk7CisgICAgICAgIHJldHVybiBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIGRvd25jYXN0PEVs
ZW1lbnRUeXBlPigmZGVzY2VuZGFudCkpOwogICAgIEVsZW1lbnRUeXBlKiBuZXh0ID0gVHJhdmVy
c2FsPEVsZW1lbnRUeXBlPjo6bmV4dChkZXNjZW5kYW50LCAmbV9yb290KTsKLSAgICByZXR1cm4g
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIG5leHQp
OworICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jv
b3QsIG5leHQpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUg
RWxlbWVudFR5cGUqIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dFR5cGU+OjpmaXJzdCgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudFR5
cGUqIEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpmaXJzdCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0aGluKG1fcm9vdCk7
CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50VHlw
ZSogVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46Omxh
c3QoKQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRUeXBlKiBFbGVtZW50
RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPjo6bGFzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RXaXRoaW4obV9yb290KTsKIH0KIAotLy8gVHlw
ZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyCisvLyBEb3VibGVFbGVtZW50
RGVzY2VuZGFudFJhbmdlCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGlu
ZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+
OjpUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFp
bmVyTm9kZSYgcm9vdCkKLSAgICA6IG1fcm9vdChyb290KQordGVtcGxhdGU8dHlwZW5hbWUgRWxl
bWVudFR5cGU+IERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpEb3Vi
bGVFbGVtZW50RGVzY2VuZGFudFJhbmdlKFNpbmdsZUFkYXB0ZXImJiBmaXJzdCwgU2luZ2xlQWRh
cHRlciYmIHNlY29uZCkKKyAgICA6IG1fcGFpcihXVEZNb3ZlKGZpcnN0KSwgV1RGTW92ZShzZWNv
bmQpKQogewogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlw
ZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2luKCkgY29u
c3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBhdXRvIERvdWJsZUVsZW1lbnREZXNj
ZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0IC0+IEl0ZXJhdG9yCiB7Ci0g
ICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBl
PihtX3Jvb3QsIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0aGluKG1fcm9vdCkpOwor
ICAgIHJldHVybiBJdGVyYXRvcihtX3BhaXIuZmlyc3QuYmVnaW4oKSwgbV9wYWlyLnNlY29uZC5i
ZWdpbigpKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5
cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1l
bnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjplbmQoKSBjb25z
dAotewotICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT4obV9yb290KTsKLX0KKy8vIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IK
IAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERl
c2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50
Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbkF0KGNvbnN0IEVsZW1lbnRU
eXBlJiBkZXNjZW5kYW50KSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IERv
dWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpEb3VibGVFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yKFNpbmdsZUl0ZXJhdG9yJiYgZmlyc3QsIFNpbmdsZUl0ZXJhdG9y
JiYgc2Vjb25kKQorICAgIDogbV9wYWlyKFdURk1vdmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29uZCkp
CiB7Ci0gICAgQVNTRVJUKGRlc2NlbmRhbnQuaXNEZXNjZW5kYW50T2YobV9yb290KSk7Ci0gICAg
cmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiht
X3Jvb3QsICZkZXNjZW5kYW50KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBl
PiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+
Ojpmcm9tKGNvbnN0IEVsZW1lbnQmIGRlc2NlbmRhbnQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4gYXV0byBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6b3BlcmF0b3IqKCkgY29uc3QgLT4gUmVmZXJlbmNlUHJveHkKIHsKLSAgICBBU1NF
UlQoZGVzY2VuZGFudC5pc0Rlc2NlbmRhbnRPZihtX3Jvb3QpKTsKLSAgICBpZiAoaXM8RWxlbWVu
dFR5cGU+KGRlc2NlbmRhbnQpKQotICAgICAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgZG93bmNhc3Q8RWxlbWVudFR5cGU+
KCZkZXNjZW5kYW50KSk7Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIG5leHQgPSBUcmF2ZXJzYWw8
RWxlbWVudFR5cGU+OjpuZXh0KGRlc2NlbmRhbnQsICZtX3Jvb3QpOwotICAgIHJldHVybiBUeXBl
ZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBuZXh0
KTsKKyAgICByZXR1cm4geyAqbV9wYWlyLmZpcnN0LCAqbV9wYWlyLnNlY29uZCB9OwogfQogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgY29uc3QgRWxlbWVudFR5cGUq
IFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46
OmZpcnN0KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBjb25zdGV4cHIg
Ym9vbCBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0
b3IhPShzdGQ6Om51bGxwdHJfdCkgY29uc3QKIHsKLSAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1l
bnRUeXBlPjo6Zmlyc3RXaXRoaW4obV9yb290KTsKKyAgICBBU1NFUlQoIW1fcGFpci5maXJzdCA9
PSAhbV9wYWlyLnNlY29uZCk7CisgICAgcmV0dXJuIG1fcGFpci5maXJzdDsKIH0KIAotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlKiBUeXBl
ZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpsYXN0
KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBEb3VibGVFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRG91YmxlRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewotICAgIHJldHVybiBUcmF2ZXJzYWw8
RWxlbWVudFR5cGU+OjpsYXN0V2l0aGluKG1fcm9vdCk7CisgICAgKyttX3BhaXIuZmlyc3Q7Cisg
ICAgKyttX3BhaXIuc2Vjb25kOworICAgIHJldHVybiAqdGhpczsKIH0KIAotLy8gRG91YmxlVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcgorLy8gRmlsdGVyZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yCiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUg
RG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46
OkRvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoU2luZ2xlQWRhcHRl
ciYmIGZpcnN0LCBTaW5nbGVBZGFwdGVyJiYgc2Vjb25kKQotICAgIDogbV9wYWlyKFdURk1vdmUo
Zmlyc3QpLCBXVEZNb3ZlKHNlY29uZCkpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZSwg
Ym9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlLCBmaWx0ZXI+OjpGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgRWxlbWVudFR5cGUqIGVsZW1lbnQp
CisgICAgOiBFbGVtZW50SXRlcmF0b3I8Y29uc3QgRWxlbWVudFR5cGU+IHsgJnJvb3QsIGVsZW1l
bnQgfQogewogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGF1dG8g
RG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46
OmJlZ2luKCkgLT4gSXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29s
IGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3I8RWxlbWVudFR5cGUsIGZpbHRlcj4mIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjxFbGVtZW50VHlwZSwgZmlsdGVyPjo6b3BlcmF0b3IrKygpCiB7Ci0gICAgcmV0dXJuIEl0
ZXJhdG9yKG1fcGFpci5maXJzdC5iZWdpbigpLCBtX3BhaXIuc2Vjb25kLmJlZ2luKCkpOwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGF1dG8gRG91YmxlVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpIC0+IEl0
ZXJhdG9yCi17Ci0gICAgcmV0dXJuIEl0ZXJhdG9yKG1fcGFpci5maXJzdC5lbmQoKSwgbV9wYWly
LnNlY29uZC5lbmQoKSk7CisgICAgZG8geworICAgICAgICBFbGVtZW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+Ojp0cmF2ZXJzZU5leHQoKTsKKyAgICB9IHdoaWxlICgqdGhpcyAmJiAhZmlsdGVyKCoq
dGhpcykpOworICAgIHJldHVybiAqdGhpczsKIH0KIAotLy8gRG91YmxlVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yCisvLyBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFuZ2UKIAotdGVt
cGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBEb3VibGVUeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IoU2luZ2xlSXRlcmF0b3ImJiBmaXJzdCwgU2luZ2xlSXRlcmF0b3ImJiBzZWNvbmQp
Ci0gICAgOiBtX3BhaXIoV1RGTW92ZShmaXJzdCksIFdURk1vdmUoc2Vjb25kKSkKK3RlbXBsYXRl
PHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBG
aWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGUsIGZpbHRlcj46OkZpbHRl
cmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZShjb25zdCBDb250YWluZXJOb2RlJiByb290KQorICAg
IDogbV9yb290IHsgcm9vdCB9CiB7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PiBpbmxpbmUgYXV0byBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+OjpvcGVyYXRvciooKSBjb25zdCAtPiBSZWZlcmVuY2VQcm94eQordGVtcGxhdGU8dHlw
ZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmlsdGVyKGNvbnN0IEVsZW1lbnRUeXBlJik+IGF1dG8g
RmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlLCBmaWx0ZXI+OjpiZWdp
bigpIGNvbnN0IC0+IEl0ZXJhdG9yCiB7Ci0gICAgcmV0dXJuIHsgKm1fcGFpci5maXJzdCwgKm1f
cGFpci5zZWNvbmQgfTsKKyAgICByZXR1cm4geyBtX3Jvb3QsIGZpcnN0KCkgfTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBib29sIERvdWJsZVR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yPT0oY29uc3QgRG91Ymxl
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKK3RlbXBsYXRlPHR5
cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBFbGVt
ZW50VHlwZSogRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlLCBmaWx0
ZXI+OjpmaXJzdCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKChtX3BhaXIuZmlyc3QgPT0gb3RoZXIu
bV9wYWlyLmZpcnN0KSA9PSAobV9wYWlyLnNlY29uZCA9PSBvdGhlci5tX3BhaXIuc2Vjb25kKSk7
Ci0gICAgcmV0dXJuIG1fcGFpci5maXJzdCA9PSBvdGhlci5tX3BhaXIuZmlyc3QgfHwgbV9wYWly
LnNlY29uZCA9PSBvdGhlci5tX3BhaXIuc2Vjb25kOworICAgIGZvciAoYXV0byogZWxlbWVudCA9
IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0aGluKG1fcm9vdCk7IGVsZW1lbnQ7IGVs
ZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0KCplbGVtZW50LCAmbV9yb290KSkg
eworICAgICAgICBpZiAoZmlsdGVyKCplbGVtZW50KSkKKyAgICAgICAgICAgIHJldHVybiBlbGVt
ZW50OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
RWxlbWVudFR5cGU+IGlubGluZSBib29sIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIT0oY29uc3QgRG91YmxlVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7Ci19CisvLyBTdGFuZGFsb25lIGZ1bmN0aW9ucwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBF
bGVtZW50VHlwZT4gaW5saW5lIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxF
bGVtZW50VHlwZT4mIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50
VHlwZT46Om9wZXJhdG9yKysoKQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1l
bnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKENvbnRhaW5l
ck5vZGUmIHJvb3QpCiB7Ci0gICAgKyttX3BhaXIuZmlyc3Q7Ci0gICAgKyttX3BhaXIuc2Vjb25k
OwotICAgIHJldHVybiAqdGhpczsKKyAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxF
bGVtZW50VHlwZT4ocm9vdCk7CiB9CiAKLS8vIFN0YW5kYWxvbmUgZnVuY3Rpb25zCi0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWluZXJO
b2RlJiByb290KQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5k
YW50UmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRh
aW5lck5vZGUmIHJvb3QpCiB7Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KHJvb3QpOworICAgIHJldHVybiBFbGVtZW50RGVzY2Vu
ZGFudFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPihyb290KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoY29uc3QgQ29udGFpbmVy
Tm9kZSYgcm9vdCkKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBEb3VibGVFbGVtZW50
RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWluZXJO
b2RlJiBmaXJzdFJvb3QsIENvbnRhaW5lck5vZGUmIHNlY29uZFJvb3QpCiB7Ci0gICAgcmV0dXJu
IFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4o
cm9vdCk7CisgICAgcmV0dXJuIHsgZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudFR5cGU+KGZpcnN0
Um9vdCksIGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnRUeXBlPihzZWNvbmRSb290KSB9OwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIERvdWJsZVR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBl
KENvbnRhaW5lck5vZGUmIGZpcnN0Um9vdCwgQ29udGFpbmVyTm9kZSYgc2Vjb25kUm9vdCkKK3Rl
bXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlw
ZSYpPiBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8Y29uc3QgRWxlbWVudFR5cGUsIGZp
bHRlcj4gZGVzY2VuZGFudHNPZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKIHsKLSAg
ICByZXR1cm4geyBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50VHlwZT4oZmlyc3RSb290KSwgZGVz
Y2VuZGFudHNPZlR5cGU8RWxlbWVudFR5cGU+KHNlY29uZFJvb3QpIH07CisgICAgcmV0dXJuIHsg
cm9vdCB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKaW5kZXggMjkxYmE2YzBjMDRjNGI2Njk4NDY2ZTEwNzUzNDg1OGU4NTlkYWEwMS4uZGIy
MGIzMDEzMjA5NjQxNmMzZTEwOTQ2ZWQyMDEwZTU0ZmM5ZjkwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnQu
aCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIu
aCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgpAQCAtNjEsNyAr
NjIsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxBdHRh
Y2htZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxCUkVsZW1lbnQuaCIKLSNpbmNsdWRlICJI
VE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCkBAIC0zNDI2LDIzICszNDI3LDE4
IEBAIHZvaWQgRWRpdG9yOjp0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShFbGVtZW50KiBlKQogCiB2
b2lkIEVkaXRvcjo6YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCkgY29uc3QKIHsKLSAg
ICBhdXRvIGNvbGxlY3Rpb24gPSBkb2N1bWVudCgpLmdldEVsZW1lbnRzQnlUYWdOYW1lKEhUTUxO
YW1lczo6Ym9keVRhZy0+bG9jYWxOYW1lKCkpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNvbGxl
Y3Rpb24tPmxlbmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkKLSAgICAgICAgYXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQoY29sbGVjdGlvbi0+aXRlbShp
KSk7Ci19Ci0KLXZvaWQgRWRpdG9yOjphcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudChFbGVtZW50
KiBlbGVtZW50KSBjb25zdAotewotICAgIEFTU0VSVCghZWxlbWVudCB8fCBpczxTdHlsZWRFbGVt
ZW50PigqZWxlbWVudCkpOwotICAgIGlmICghaXM8U3R5bGVkRWxlbWVudD4oZWxlbWVudCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00gd3JhcHBlciBz
byB3ZSBnZXQgdGhlIHNhbWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCi0gICAgYXV0byYg
c3R5bGUgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkuY3Nzb21TdHlsZSgpOwot
ICAgIHN0eWxlLnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkV3JhcCwgImJyZWFr
LXdvcmQiLCBmYWxzZSk7Ci0gICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0
eVdlYmtpdE5ic3BNb2RlLCAic3BhY2UiLCBmYWxzZSk7Ci0gICAgc3R5bGUuc2V0UHJvcGVydHlJ
bnRlcm5hbChDU1NQcm9wZXJ0eUxpbmVCcmVhaywgImFmdGVyLXdoaXRlLXNwYWNlIiwgZmFsc2Up
OworICAgIC8vIEZJWE1FOiBOb3QgY2xlYXIgaXQncyB2YWx1YWJsZSB0byBkbyB0aGlzIHRvIGFs
bCBib2R5IGVsZW1lbnRzIHJhdGhlciB0aGFuIGp1c3QgZG9pbmcgaXQgb24gdGhlIHNpbmdsZSBv
bmUgcmV0dXJuZWQgYnkgRG9jdW1lbnQ6OmJvZHkuCisgICAgVmVjdG9yPFJlZjxIVE1MQm9keUVs
ZW1lbnQ+PiBib2RpZXM7CisgICAgZm9yIChhdXRvJiBib2R5IDogZGVzY2VuZGFudHNPZlR5cGU8
SFRNTEJvZHlFbGVtZW50Pihkb2N1bWVudCgpKSkKKyAgICAgICAgYm9kaWVzLmFwcGVuZChib2R5
KTsKKworICAgIGZvciAoYXV0byYgYm9keSA6IGJvZGllcykgeworICAgICAgICAvLyBNdXRhdGUg
dXNpbmcgdGhlIENTU09NIHdyYXBwZXIgc28gd2UgZ2V0IHRoZSBzYW1lIGV2ZW50IGJlaGF2aW9y
IGFzIGEgc2NyaXB0LgorICAgICAgICBhdXRvJiBzdHlsZSA9IGJvZHktPmNzc29tU3R5bGUoKTsK
KyAgICAgICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdvcmRXcmFwLCAi
YnJlYWstd29yZCIsIGZhbHNlKTsKKyAgICAgICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChD
U1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCAic3BhY2UiLCBmYWxzZSk7CisgICAgICAgIHN0eWxl
LnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlMaW5lQnJlYWssICJhZnRlci13aGl0ZS1z
cGFjZSIsIGZhbHNlKTsKKyAgICB9CiB9CiAKIGJvb2wgRWRpdG9yOjpmaW5kU3RyaW5nKGNvbnN0
IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgKaW5kZXggNmVhODkyMmZiMDc2MmRmZTAzMmYxMGY2ZGExYWZiZDZlMzE0ZWY4Yy4uNzA5ODFk
NzQ3YTE4N2U4ZTc1ODExNWI2NjZkNzhjYTIzZDBkYTVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCkBAIC00MzEsNyArNDMxLDYgQEAgcHVibGljOgogICAgIHZvaWQgY29tcHV0ZUFuZFNldFR5
cGluZ1N0eWxlKEVkaXRpbmdTdHlsZSYgLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6VW5zcGVj
aWZpZWQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tcHV0ZUFuZFNldFR5cGluZ1N0eWxl
KFN0eWxlUHJvcGVydGllcyYgLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6VW5zcGVjaWZpZWQp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50
KCkgY29uc3Q7Ci0gICAgdm9pZCBhcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudChFbGVtZW50Kikg
Y29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IGZpcnN0UmVjdEZvclJhbmdlKFJh
bmdlKikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAK
aW5kZXggMmQ0MWI3MzJmMGRmYTk3NjYwMjk0ZWEwZWRlYmIxNWM5OGM2NmUwNi4uNWZjNjJhNzU5
Nzc3N2FkZjI5NzM2MWNjYzU1ZjMzM2E0MGY0YzdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTIzNDYsMjAgKzIzNDYsMTYgQEAgc3RhdGljIEhUTUxG
b3JtRWxlbWVudCogc2NhbkZvckZvcm0oRWxlbWVudCogc3RhcnQpCiB7CiAgICAgaWYgKCFzdGFy
dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGRlc2NlbmRhbnRzID0gZGVz
Y2VuZGFudHNPZlR5cGU8SFRNTEVsZW1lbnQ+KHN0YXJ0LT5kb2N1bWVudCgpKTsKLSAgICBmb3Ig
KGF1dG8gaXQgPSBkZXNjZW5kYW50cy5mcm9tKCpzdGFydCksIGVuZCA9IGRlc2NlbmRhbnRzLmVu
ZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgSFRNTEVsZW1lbnQmIGVsZW1lbnQgPSAq
aXQ7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTEVsZW1l
bnQ+KHN0YXJ0LT5kb2N1bWVudCgpKSkgewogICAgICAgICBpZiAoaXM8SFRNTEZvcm1FbGVtZW50
PihlbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybiAmZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50
PihlbGVtZW50KTsKICAgICAgICAgaWYgKGlzPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1l
bnQpKQogICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+
KGVsZW1lbnQpLmZvcm0oKTsKICAgICAgICAgaWYgKGlzPEhUTUxGcmFtZUVsZW1lbnRCYXNlPihl
bGVtZW50KSkgewotICAgICAgICAgICAgRG9jdW1lbnQqIGNvbnRlbnREb2N1bWVudCA9IGRvd25j
YXN0PEhUTUxGcmFtZUVsZW1lbnRCYXNlPihlbGVtZW50KS5jb250ZW50RG9jdW1lbnQoKTsKLSAg
ICAgICAgICAgIGlmICghY29udGVudERvY3VtZW50KQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgaWYgKEhUTUxGb3JtRWxlbWVudCogZnJhbWVSZXN1bHQgPSBzY2FuRm9y
Rm9ybShjb250ZW50RG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZnJhbWVSZXN1bHQ7CisgICAgICAgICAgICBpZiAoYXV0byogY29udGVudERvY3Vt
ZW50ID0gZG93bmNhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2U+KGVsZW1lbnQpLmNvbnRlbnREb2N1
bWVudCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGZyYW1lUmVzdWx0ID0gc2NhbkZv
ckZvcm0oY29udGVudERvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmcmFtZVJlc3VsdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggY2RlOWE3OGM4ZmU3ZGExMzFl
MTFmNDRmNGJiMDkxYzVmZTZmMDJmMy4uMWU3NjBkZTcyMzE2MDlkMDU5Mjk4MjhmN2UxM2YzZDIy
YmEyNTJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogCiAgICAgICAg
IFR5cGUgdHlwZSA9IFR5cGU6OkluY2x1ZGU7CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBtYXRj
aGluZ0VsZW1lbnQ7Ci0gICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnRMaW5lYWdl
KHN0YXJ0aW5nRWxlbWVudC5nZXQoKSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDog
bGluZWFnZU9mVHlwZTxFbGVtZW50Pigqc3RhcnRpbmdFbGVtZW50KSkgewogICAgICAgICAgICAg
aWYgKGF1dG8gdHlwZU9yTnVsbG9wdCA9IHR5cGVGb3JFbGVtZW50KGVsZW1lbnQpKSB7CiAgICAg
ICAgICAgICAgICAgdHlwZSA9ICp0eXBlT3JOdWxsb3B0OwogICAgICAgICAgICAgICAgIG1hdGNo
aW5nRWxlbWVudCA9ICZlbGVtZW50OwpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50
TGluZWFnZShzdGFydGluZ0VsZW1lbnQuZ2V0KCkpKSB7CisgICAgICAgIGZvciAoYXV0byYgZWxl
bWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4oKnN0YXJ0aW5nRWxlbWVudCkpIHsKICAgICAg
ICAgICAgIG1fY2FjaGUuc2V0KGVsZW1lbnQsIHR5cGUpOwogICAgICAgICAgICAgaWYgKCZlbGVt
ZW50ID09IG1hdGNoaW5nRWxlbWVudCkKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0K
aW5kZXggMzk0OTZiNjk4ODY2YzRhZWMzZjc3ZDRlNjYwYmU2ZDUwNzk5ZDlkZS4uZjdkYTBiZGI1
OGE4ZGUwYmYzNjRlYmYzNDk0NDNiMmRlYzgyNDhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTM3LDYgKzM3
LDcgQEAKICNpbXBvcnQgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW1wb3J0ICJFZGl0b3IuaCIKICNp
bXBvcnQgIkVkaXRvckNsaWVudC5oIgorI2ltcG9ydCAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW1w
b3J0ICJGaWxlLmgiCiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXIuaCIK
QEAgLTU4LDcgKzU5LDYgQEAKICNpbXBvcnQgIlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIgog
I2ltcG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQgIlNvY2tldFByb3ZpZGVyLmgiCi0jaW1wb3J0
ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGll
cy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5o
IgogI2ltcG9ydCAiV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVzb3VyY2VIYW5kbGVyLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggMTU5NTAzNTFkOTA0NzRjN2M3ODhjMzNlNjdlN2Rh
ODU4ODdmNmQ0Yy4uN2UyMmM1MjJhZGM4ZTIyN2I2MzliY2VlNmRiNDZkMGEzOTI5M2Q1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNzUsNyArNzUsNiBAQAogI2luY2x1ZGUgIlNv
Y2tldFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAi
VGV4dEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0
cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Q2FjaGVkSFRNTENvbGxlY3Rpb24uaAppbmRleCA3OWY0NzdkNzRmMjI0ZTcxYjQ2YWJhNDc3ZjZj
ZGIwZGE4OWRmNDg1Li5kYWE0MGVjMTEwMmRlYWJkNGJjODAxMTRhNGM4OGJiYzQ2YzgwYzY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oCkBAIC0yNSw3ICsy
NSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29sbGVjdGlvblRyYXZlcnNhbC5o
IgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CkBAIC01MiwxMiArNTEsMTIgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIC8vIEZvciBDb2xsZWN0aW9uSW5kZXhDYWNoZTsgZG8gbm90IHVzZSBlbHNl
d2hlcmUuCi0gICAgdXNpbmcgQ29sbGVjdGlvblRyYXZlcnNhbEl0ZXJhdG9yID0gdHlwZW5hbWUg
Q29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6SXRlcmF0b3I7Ci0gICAgQ29sbGVj
dGlvblRyYXZlcnNhbEl0ZXJhdG9yIGNvbGxlY3Rpb25CZWdpbigpIGNvbnN0IHsgcmV0dXJuIENv
bGxlY3Rpb25UcmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT46OmJlZ2luKGNvbGxlY3Rpb24oKSwgcm9v
dE5vZGUoKSk7IH0KLSAgICBDb2xsZWN0aW9uVHJhdmVyc2FsSXRlcmF0b3IgY29sbGVjdGlvbkxh
c3QoKSBjb25zdCB7IHJldHVybiBDb2xsZWN0aW9uVHJhdmVyc2FsPHRyYXZlcnNhbFR5cGU+Ojps
YXN0KGNvbGxlY3Rpb24oKSwgcm9vdE5vZGUoKSk7IH0KLSAgICBDb2xsZWN0aW9uVHJhdmVyc2Fs
SXRlcmF0b3IgY29sbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIENvbGxlY3Rpb25UcmF2ZXJz
YWw8dHJhdmVyc2FsVHlwZT46OmVuZChyb290Tm9kZSgpKTsgfQotICAgIHZvaWQgY29sbGVjdGlv
blRyYXZlcnNlRm9yd2FyZChDb2xsZWN0aW9uVHJhdmVyc2FsSXRlcmF0b3ImIGN1cnJlbnQsIHVu
c2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0IHsgQ29sbGVjdGlv
blRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6dHJhdmVyc2VGb3J3YXJkKGNvbGxlY3Rpb24oKSwg
Y3VycmVudCwgY291bnQsIHRyYXZlcnNlZENvdW50KTsgfQotICAgIHZvaWQgY29sbGVjdGlvblRy
YXZlcnNlQmFja3dhcmQoQ29sbGVjdGlvblRyYXZlcnNhbEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNp
Z25lZCBjb3VudCkgY29uc3QgeyBDb2xsZWN0aW9uVHJhdmVyc2FsPHRyYXZlcnNhbFR5cGU+Ojp0
cmF2ZXJzZUJhY2t3YXJkKGNvbGxlY3Rpb24oKSwgY3VycmVudCwgY291bnQpOyB9CisgICAgdXNp
bmcgVHJhdmVyc2FsID0gQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjsKKyAgICB1
c2luZyBJdGVyYXRvciA9IHR5cGVuYW1lIFRyYXZlcnNhbDo6SXRlcmF0b3I7CisgICAgYXV0byBj
b2xsZWN0aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBUcmF2ZXJzYWw6OmJlZ2luKGNvbGxlY3Rp
b24oKSwgcm9vdE5vZGUoKSk7IH0KKyAgICBhdXRvIGNvbGxlY3Rpb25MYXN0KCkgY29uc3QgeyBy
ZXR1cm4gVHJhdmVyc2FsOjpsYXN0KGNvbGxlY3Rpb24oKSwgcm9vdE5vZGUoKSk7IH0KKyAgICB2
b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVk
IGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0IHsgVHJhdmVyc2FsOjp0cmF2
ZXJzZUZvcndhcmQoY29sbGVjdGlvbigpLCBjdXJyZW50LCBjb3VudCwgdHJhdmVyc2VkQ291bnQp
OyB9CisgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChJdGVyYXRvciYgY3VycmVu
dCwgdW5zaWduZWQgY291bnQpIGNvbnN0IHsgVHJhdmVyc2FsOjp0cmF2ZXJzZUJhY2t3YXJkKGNv
bGxlY3Rpb24oKSwgY3VycmVudCwgY291bnQpOyB9CiAgICAgYm9vbCBjb2xsZWN0aW9uQ2FuVHJh
dmVyc2VCYWNrd2FyZCgpIGNvbnN0IHsgcmV0dXJuIHRyYXZlcnNhbFR5cGUgIT0gQ29sbGVjdGlv
blRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5OyB9CiAgICAgdm9pZCB3aWxsVmFsaWRh
dGVJbmRleENhY2hlKCkgY29uc3QgeyBkb2N1bWVudCgpLnJlZ2lzdGVyQ29sbGVjdGlvbihjb25z
dF9jYXN0PENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNh
bFR5cGU+Jj4oKnRoaXMpKTsgfQogCkBAIC02OSwxOSArNjgsMTkgQEAgcHJpdmF0ZToKICAgICBI
VE1MQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SFRN
TENvbGxlY3Rpb25DbGFzcyY+KCp0aGlzKTsgfQogICAgIGNvbnN0IEhUTUxDb2xsZWN0aW9uQ2xh
c3MmIGNvbGxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBIVE1MQ29s
bGVjdGlvbkNsYXNzJj4oKnRoaXMpOyB9CiAKLSAgICBtdXRhYmxlIENvbGxlY3Rpb25JbmRleENh
Y2hlPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxJdGVyYXRvcj4gbV9p
bmRleENhY2hlOworICAgIG11dGFibGUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8SFRNTENvbGxlY3Rp
b25DbGFzcywgSXRlcmF0b3I+IG1faW5kZXhDYWNoZTsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxU
eXBlPgogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2Fs
VHlwZT46OkNhY2hlZEhUTUxDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIGJhc2UsIENvbGxlY3Rp
b25UeXBlIGNvbGxlY3Rpb25UeXBlKQogICAgIDogSFRNTENvbGxlY3Rpb24oYmFzZSwgY29sbGVj
dGlvblR5cGUpCi0gICAgLCBtX2luZGV4Q2FjaGUoY29sbGVjdGlvbigpKQoteyB9Cit7Cit9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVy
c2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rp
b25DbGFzcywgdHJhdmVyc2FsVHlwZT46On5DYWNoZWRIVE1MQ29sbGVjdGlvbigpCiB7Ci0gICAg
aWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKGNvbGxlY3Rpb24oKSkpCisgICAgaWYgKG1f
aW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKCkpCiAgICAgICAgIGRvY3VtZW50KCkudW5yZWdpc3Rl
ckNvbGxlY3Rpb24oKnRoaXMpOwogfQogCkBAIC04OSw5ICs4OCw5IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJz
YWxUeXBlPgogdm9pZCBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0
cmF2ZXJzYWxUeXBlPjo6aW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3Vt
ZW50KQogewogICAgIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudChk
b2N1bWVudCk7Ci0gICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKGNvbGxlY3Rpb24o
KSkpIHsKKyAgICBpZiAobV9pbmRleENhY2hlLmhhc1ZhbGlkQ2FjaGUoKSkgewogICAgICAgICBk
b2N1bWVudC51bnJlZ2lzdGVyQ29sbGVjdGlvbigqdGhpcyk7Ci0gICAgICAgIG1faW5kZXhDYWNo
ZS5pbnZhbGlkYXRlKGNvbGxlY3Rpb24oKSk7CisgICAgICAgIG1faW5kZXhDYWNoZS5pbnZhbGlk
YXRlKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxl
Y3Rpb25UcmF2ZXJzYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRyYXZlcnNh
bC5oCmluZGV4IDY2ODI5MzM4ZDBiMWQxYjBjYWI1MTE3N2YwMzg3MjBjMTkyZjcxOTYuLjJhODhm
NTdlMWJkNjRiMTY4MTU4MzJiZjBiMDZlOGM0Y2FkMDZhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDggKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiQ29sbGVjdGlvblR5cGUuaCIKLSNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRv
ci5oIgotI2luY2x1ZGUgIkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJF
bGVtZW50SXRlcmF0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNiw3NiArMzUs
NjQgQEAgc3RydWN0IENvbGxlY3Rpb25UcmF2ZXJzYWwgeyB9OwogCiB0ZW1wbGF0ZSA8Pgogc3Ry
dWN0IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRh
bnRzPiB7Ci0gICAgdXNpbmcgSXRlcmF0b3IgPSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOwot
Ci0gICAgc3RhdGljIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgZW5kKENvbnRhaW5lck5vZGUm
KSB7IHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKCk7IH0KKyAgICB1c2luZyBJdGVy
YXRvciA9IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudD47CiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotICAgIHN0YXRpYyBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yIGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJv
b3ROb2RlKTsKKyAgICBzdGF0aWMgSXRlcmF0b3IgYmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNz
JiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENv
bGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBsYXN0
KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKKyAgICBz
dGF0aWMgSXRlcmF0b3IgbGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2Rl
JiByb290Tm9kZSk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgot
ICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWdu
ZWQmIHRyYXZlcnNlZENvdW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29u
c3QgQ29sbGVjdGlvbkNsYXNzJiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1
bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxl
Y3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxl
Y3Rpb25DbGFzcyYsIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVk
IGNvdW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rp
b25DbGFzcyYsIEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCk7CiB9OwogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVz
Y2VuZGFudHM+OjpiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRh
aW5lck5vZGUmIHJvb3ROb2RlKQoraW5saW5lIGF1dG8gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xs
ZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+OjpiZWdpbihjb25zdCBDb2xsZWN0aW9u
Q2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSAtPiBJdGVyYXRvcgog
ewotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBlbGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUpOwot
ICAgIGF1dG8gZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7Ci0gICAgZm9yIChhdXRvIGl0ID0gZGVz
Y2VuZGFudHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmIChjb2xsZWN0
aW9uLmVsZW1lbnRNYXRjaGVzKCppdCkpIHsKLSAgICAgICAgICAgIC8vIERyb3AgaXRlcmF0b3Ig
YXNzZXJ0aW9ucyBiZWNhdXNlIEhUTUxDb2xsZWN0aW9ucyAvIE5vZGVMaXN0IHVzZSBhIGZpbmUt
Z3JhaW5lZCBpbnZhbGlkYXRpb24gc2NoZW1lLgotICAgICAgICAgICAgaXQuZHJvcEFzc2VydGlv
bnMoKTsKLSAgICAgICAgICAgIHJldHVybiBpdDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1
cm4gZW5kOworICAgIGF1dG8gaXQgPSBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihyb290Tm9k
ZSkuYmVnaW4oKTsKKyAgICB3aGlsZSAoaXQgJiYgIWNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMo
Kml0KSkKKyAgICAgICAgKytpdDsKKyAgICAvLyBEcm9wIGl0ZXJhdG9yIGFzc2VydGlvbnMgYmVj
YXVzZSBIVE1MQ29sbGVjdGlvbnMgLyBOb2RlTGlzdCB1c2UgYSBmaW5lLWdyYWluZWQgaW52YWxp
ZGF0aW9uIHNjaGVtZS4KKyAgICBpdC5kcm9wQXNzZXJ0aW9ucygpOworICAgIHJldHVybiBpdDsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNh
bFR5cGU6OkRlc2NlbmRhbnRzPjo6bGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rp
b24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKQoraW5saW5lIGF1dG8gQ29sbGVjdGlvblRyYXZl
cnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+OjpsYXN0KGNvbnN0IENv
bGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpIC0+IEl0
ZXJhdG9yCiB7Ci0gICAgYXV0byBkZXNjZW5kYW50cyA9IGVsZW1lbnREZXNjZW5kYW50cyhyb290
Tm9kZSk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBpbnZhbGlkOwotICAgIGZvciAo
YXV0byBpdCA9IGRlc2NlbmRhbnRzLmxhc3QoKTsgaXQgIT0gaW52YWxpZDsgLS1pdCkgewotICAg
ICAgICBpZiAoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqaXQpKSB7Ci0gICAgICAgICAgICAv
LyBEcm9wIGl0ZXJhdG9yIGFzc2VydGlvbnMgYmVjYXVzZSBIVE1MQ29sbGVjdGlvbnMgLyBOb2Rl
TGlzdCB1c2UgYSBmaW5lLWdyYWluZWQgaW52YWxpZGF0aW9uIHNjaGVtZS4KLSAgICAgICAgICAg
IGl0LmRyb3BBc3NlcnRpb25zKCk7Ci0gICAgICAgICAgICByZXR1cm4gaXQ7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgcmV0dXJuIGludmFsaWQ7CisgICAgSXRlcmF0b3IgaXQgeyByb290Tm9kZSwg
RWxlbWVudFRyYXZlcnNhbDo6bGFzdFdpdGhpbihyb290Tm9kZSkgfTsKKyAgICB3aGlsZSAoaXQg
JiYgIWNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkKKyAgICAgICAgLS1pdDsKKyAgICAv
LyBEcm9wIGl0ZXJhdG9yIGFzc2VydGlvbnMgYmVjYXVzZSBIVE1MQ29sbGVjdGlvbnMgLyBOb2Rl
TGlzdCB1c2UgYSBmaW5lLWdyYWluZWQgaW52YWxpZGF0aW9uIHNjaGVtZS4KKyAgICBpdC5kcm9w
QXNzZXJ0aW9ucygpOworICAgIHJldHVybiBpdDsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENv
bGxlY3Rpb25DbGFzcz4KLWlubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlv
blRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxl
Y3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVu
dCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkKK2lubGluZSB2b2lk
IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRz
Pjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgSXRl
cmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQp
CiB7CiAgICAgQVNTRVJUKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAg
ICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGludmFsaWQ7CiAgICAgZm9yICh0cmF2ZXJzZWRD
b3VudCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKICAg
ICAgICAgZG8gewogICAgICAgICAgICAgKytjdXJyZW50OwotICAgICAgICAgICAgaWYgKGN1cnJl
bnQgPT0gaW52YWxpZCkKKyAgICAgICAgICAgIGlmICghY3VycmVudCkKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0gd2hpbGUgKCFjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpj
dXJyZW50KSk7CiAgICAgfQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgotaW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYg
Y29sbGVjdGlvbiwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQg
Y291bnQpCitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJz
YWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiBjb2xsZWN0aW9uLCBJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpCiB7CiAg
ICAgQVNTRVJUKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAgICBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yIGludmFsaWQ7CiAgICAgZm9yICg7IGNvdW50OyAtLWNvdW50
KSB7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIC0tY3VycmVudDsKLSAgICAgICAgICAgIGlm
IChjdXJyZW50ID09IGludmFsaWQpCisgICAgICAgICAgICBpZiAoIWN1cnJlbnQpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IHdoaWxlICghY29sbGVjdGlvbi5lbGVtZW50TWF0
Y2hlcygqY3VycmVudCkpOwogICAgIH0KQEAgLTExNSw3NSArMTAyLDYyIEBAIHRlbXBsYXRlIDw+
CiBzdHJ1Y3QgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hp
bGRyZW5Pbmx5PiB7CiAgICAgdXNpbmcgSXRlcmF0b3IgPSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxF
bGVtZW50PjsKIAotICAgIHN0YXRpYyBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBlbmQo
Q29udGFpbmVyTm9kZSYgcm9vdE5vZGUpIHsgcmV0dXJuIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVs
ZW1lbnQ+KHJvb3ROb2RlKTsgfQotCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25D
bGFzcz4KLSAgICBzdGF0aWMgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gYmVnaW4oY29u
c3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOworICAgIHN0YXRp
YyBJdGVyYXRvciBiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiBy
b290Tm9kZSk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotICAg
IHN0YXRpYyBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBsYXN0KGNvbnN0IENvbGxlY3Rp
b25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKKyAgICBzdGF0aWMgSXRlcmF0b3Ig
bGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CiAK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotICAgIHN0YXRpYyB2b2lk
IHRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVtZW50Q2hpbGRJdGVy
YXRvcjxFbGVtZW50PiYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJz
ZWRDb3VudCk7CisgICAgc3RhdGljIHZvaWQgdHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rp
b25DbGFzcyYsIEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRy
YXZlcnNlZENvdW50KTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+
Ci0gICAgc3RhdGljIHZvaWQgdHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3Mm
LCBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiYgY3VycmVudCwgdW5zaWduZWQgY291bnQp
OworICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNz
JiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KTsKIH07CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci1pbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxl
bWVudD4gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRy
ZW5Pbmx5Pjo6YmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWlu
ZXJOb2RlJiByb290Tm9kZSkKK2lubGluZSBhdXRvIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVj
dGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46OmJlZ2luKGNvbnN0IENvbGxlY3Rpb25D
bGFzcyYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpIC0+IEl0ZXJhdG9yCiB7
Ci0gICAgYXV0byBjaGlsZHJlbiA9IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KHJvb3ROb2RlKTsK
LSAgICBhdXRvIGVuZCA9IGNoaWxkcmVuLmVuZCgpOwotICAgIGZvciAoYXV0byBpdCA9IGNoaWxk
cmVuLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoY29sbGVjdGlvbi5l
bGVtZW50TWF0Y2hlcygqaXQpKSB7Ci0gICAgICAgICAgICAvLyBEcm9wIGl0ZXJhdG9yIGFzc2Vy
dGlvbnMgYmVjYXVzZSBIVE1MQ29sbGVjdGlvbnMgLyBOb2RlTGlzdCB1c2UgYSBmaW5lLWdyYWlu
ZWQgaW52YWxpZGF0aW9uIHNjaGVtZS4KLSAgICAgICAgICAgIGl0LmRyb3BBc3NlcnRpb25zKCk7
Ci0gICAgICAgICAgICByZXR1cm4gaXQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGVu
ZDsKKyAgICBhdXRvIGl0ID0gY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpLmJlZ2lu
KCk7CisgICAgd2hpbGUgKGl0ICYmICFjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCppdCkpCisg
ICAgICAgICsraXQ7CisgICAgLy8gRHJvcCBpdGVyYXRvciBhc3NlcnRpb25zIGJlY2F1c2UgSFRN
TENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1ncmFpbmVkIGludmFsaWRhdGlvbiBz
Y2hlbWUuCisgICAgaXQuZHJvcEFzc2VydGlvbnMoKTsKKyAgICByZXR1cm4gaXQ7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci1pbmxpbmUgRWxlbWVudENoaWxkSXRl
cmF0b3I8RWxlbWVudD4gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZTo6Q2hpbGRyZW5Pbmx5Pjo6bGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24s
IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKQoraW5saW5lIGF1dG8gQ29sbGVjdGlvblRyYXZlcnNh
bDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6bGFzdChjb25zdCBDb2xs
ZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSAtPiBJdGVy
YXRvcgogewotICAgIGF1dG8gY2hpbGRyZW4gPSBjaGlsZHJlbk9mVHlwZTxFbGVtZW50Pihyb290
Tm9kZSk7Ci0gICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gaW52YWxpZChjb2xsZWN0
aW9uLnJvb3ROb2RlKCkpOwotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGxhc3Qo
cm9vdE5vZGUsIGNoaWxkcmVuLmxhc3QoKSk7Ci0gICAgZm9yIChhdXRvIGl0ID0gbGFzdDsgaXQg
IT0gaW52YWxpZDsgLS1pdCkgewotICAgICAgICBpZiAoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hl
cygqaXQpKSB7Ci0gICAgICAgICAgICAvLyBEcm9wIGl0ZXJhdG9yIGFzc2VydGlvbnMgYmVjYXVz
ZSBIVE1MQ29sbGVjdGlvbnMgLyBOb2RlTGlzdCB1c2UgYSBmaW5lLWdyYWluZWQgaW52YWxpZGF0
aW9uIHNjaGVtZS4KLSAgICAgICAgICAgIGl0LmRyb3BBc3NlcnRpb25zKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gaXQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGludmFsaWQ7CisgICAg
YXV0byBpdCA9IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KHJvb3ROb2RlKS5iZWdpbigpOworICAg
IHdoaWxlIChpdCAmJiAhY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqaXQpKQorICAgICAgICAt
LWl0OworICAgIC8vIERyb3AgaXRlcmF0b3IgYXNzZXJ0aW9ucyBiZWNhdXNlIEhUTUxDb2xsZWN0
aW9ucyAvIE5vZGVMaXN0IHVzZSBhIGZpbmUtZ3JhaW5lZCBpbnZhbGlkYXRpb24gc2NoZW1lLgor
ICAgIGl0LmRyb3BBc3NlcnRpb25zKCk7CisgICAgcmV0dXJuIGl0OwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNh
bDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6dHJhdmVyc2VGb3J3YXJk
KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgRWxlbWVudENoaWxkSXRlcmF0b3I8
RWxlbWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291
bnQpCitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxU
eXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNz
JiBjb2xsZWN0aW9uLCBJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVk
JiB0cmF2ZXJzZWRDb3VudCkKIHsKICAgICBBU1NFUlQoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hl
cygqY3VycmVudCkpOwotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGludmFsaWQo
Y29sbGVjdGlvbi5yb290Tm9kZSgpKTsKICAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJh
dmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2ZXJzZWRDb3VudCkgewogICAgICAgICBkbyB7CiAg
ICAgICAgICAgICArK2N1cnJlbnQ7Ci0gICAgICAgICAgICBpZiAoY3VycmVudCA9PSBpbnZhbGlk
KQorICAgICAgICAgICAgaWYgKCFjdXJyZW50KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfSB3aGlsZSAoIWNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKICAg
ICB9CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci1pbmxpbmUgdm9p
ZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9u
bHk+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwg
RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KQor
aW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6
Q2hpbGRyZW5Pbmx5Pjo6dHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNv
bGxlY3Rpb24sIEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkKIHsKICAgICBBU1NF
UlQoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwotICAgIEVsZW1lbnRDaGls
ZEl0ZXJhdG9yPEVsZW1lbnQ+IGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKICAgICBm
b3IgKDsgY291bnQ7IC0tY291bnQpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgLS1jdXJy
ZW50OwotICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gaW52YWxpZCkKKyAgICAgICAgICAgIGlm
ICghY3VycmVudCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0gd2hpbGUgKCFj
b2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CiAgICAgfQpAQCAtMTkzLDcgKzE2
Nyw3IEBAIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9u
VHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk+IHsKICAgICB1c2luZyBJdGVyYXRvciA9
IEVsZW1lbnQqOwogCi0gICAgc3RhdGljIEVsZW1lbnQqIGVuZChDb250YWluZXJOb2RlJikgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgRWxlbWVudCogZW5kKENvbnRh
aW5lck5vZGUmKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q29sbGVjdGlvbkNsYXNzPgogICAgIHN0YXRpYyBFbGVtZW50KiBiZWdpbihjb25zdCBDb2xsZWN0
aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0NvbG9ySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5
cGUuY3BwCmluZGV4IGI5NDlhNjkxZjYwZmRjOTljMmQ3ZjY3ZmRmOGI3NzUzODU4ZTM5MjguLjdm
ZjMyZTU5OTdlNzA2ZDU3OWI5OWIwYzNmMjdmZDVlZmJiZDIyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQ29sb3JJbnB1dFR5cGUuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkNT
U1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDb2xvci5o
IgotI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIK
ICNpbmNsdWRlICJIVE1MRGF0YUxpc3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1l
bnQuaCIKQEAgLTI4NywxMyArMjg2LDkgQEAgVmVjdG9yPENvbG9yPiBDb2xvcklucHV0VHlwZTo6
c3VnZ2VzdGVkQ29sb3JzKCkgY29uc3QKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAg
ICBBU1NFUlQoZWxlbWVudCgpKTsKICAgICBpZiAoYXV0byBkYXRhTGlzdCA9IGVsZW1lbnQoKS0+
ZGF0YUxpc3QoKSkgewotICAgICAgICBSZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRh
TGlzdC0+b3B0aW9ucygpOwotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBvcHRpb25zLT5sZW5n
dGgoKTsKLSAgICAgICAgc3VnZ2VzdGlvbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgp
OwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IGxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICBhdXRvIHZhbHVlID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpvcHRpb25z
LT5pdGVtKGkpKS52YWx1ZSgpOwotICAgICAgICAgICAgaWYgKGlzVmFsaWRTaW1wbGVDb2xvcih2
YWx1ZSkpCi0gICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMudW5jaGVja2VkQXBwZW5kKENvbG9y
KHZhbHVlKSk7CisgICAgICAgIGZvciAoYXV0byYgb3B0aW9uIDogZGF0YUxpc3QtPnN1Z2dlc3Rp
b25zKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGNvbG9yID0gcGFyc2VTaW1wbGVDb2xvclZh
bHVlKG9wdGlvbi52YWx1ZSgpKSkKKyAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucy51bmNoZWNr
ZWRBcHBlbmQoKmNvbG9yKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwCmluZGV4IDM4
MzhmMWJkN2U0ZTY3ZjU1NzA1ZTEwMGIzZDY5NzNkMDM4OTNlNTAuLjljYjNhNjcwMjM3MmNkNGJk
MmJmZDllZTNiYTg5ZmJjYTdjOGZmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
IkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogCiAjaW5jbHVkZSAiSFRNTEFwcGxldEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MRGF0YUxpc3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TEZpZWxkU2V0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhU
TUxPYmplY3RFbGVtZW50LmgiCkBAIC02NCwxMiArNjUsNyBAQCBib29sIEdlbmVyaWNDYWNoZWRI
VE1MQ29sbGVjdGlvbjx0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYgZWxl
bWVudAogICAgIGNhc2UgU2VsZWN0ZWRPcHRpb25zOgogICAgICAgICByZXR1cm4gaXM8SFRNTE9w
dGlvbkVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVt
ZW50KS5zZWxlY3RlZCgpOwogICAgIGNhc2UgRGF0YUxpc3RPcHRpb25zOgotICAgICAgICBpZiAo
aXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBIVE1MT3B0aW9u
RWxlbWVudCYgb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpOwot
ICAgICAgICAgICAgaWYgKCFvcHRpb24uaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgIW9wdGlv
bi52YWx1ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBpczxIVE1MT3B0aW9u
RWxlbWVudD4oZWxlbWVudCk7CiAgICAgY2FzZSBNYXBBcmVhczoKICAgICAgICAgcmV0dXJuIGVs
ZW1lbnQuaGFzVGFnTmFtZShhcmVhVGFnKTsKICAgICBjYXNlIERvY0FwcGxldHM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaWRsCmluZGV4IDhmY2I2OGM2ODAwMDgzNzIz
YTU4NThmMGNlNmRiYWFiNDc1MzljM2MuLmU1YjExOTJlNDkyODg3MTNmMzMyMWJjYTBhN2MyOGE2
NzgxYWFhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rp
b24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaWRsCkBA
IC0zMSw2ICszMSw2IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVu
Z3RoOwogCiAgICAgZ2V0dGVyIEVsZW1lbnQ/ICh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBb
SW1wbGVtZW50ZWRBcz1uYW1lZEl0ZW1Pckl0ZW1zXSBnZXR0ZXIgKEhUTUxDb2xsZWN0aW9uIG9y
IEVsZW1lbnQpPyBuYW1lZEl0ZW0oRE9NU3RyaW5nIG5hbWUpOwotICAgIFtJbXBsZW1lbnRlZEFz
PW5hbWVkT3JJbmRleGVkSXRlbU9ySXRlbXNdIGxlZ2FjeWNhbGxlciAoSFRNTENvbGxlY3Rpb24g
b3IgRWxlbWVudCk/IGl0ZW0ob3B0aW9uYWwgRE9NU3RyaW5nIG5hbWVPckluZGV4KTsKKyAgICBb
SW1wbGVtZW50ZWRBcz1uYW1lZEl0ZW1Pckl0ZW1zXSBnZXR0ZXIgKEhUTUxDb2xsZWN0aW9uIG9y
IEVsZW1lbnQpPyBuYW1lZEl0ZW0oW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBET01TdHJp
bmcgbmFtZSk7CisgICAgW0ltcGxlbWVudGVkQXM9bmFtZWRPckluZGV4ZWRJdGVtT3JJdGVtc10g
bGVnYWN5Y2FsbGVyIChIVE1MQ29sbGVjdGlvbiBvciBFbGVtZW50KT8gaXRlbShvcHRpb25hbCBb
QXRvbVN0cmluZ10gRE9NU3RyaW5nIG5hbWVPckluZGV4KTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENvbGxlY3Rpb24uaWRsCmluZGV4IDZkZmFlOGJkODk0YWNkYzJkMjYwNTU2NjI2YjRjNzNi
ZGIxYzlhNWIuLmM0NTJkODllYzliYjBlMDdlYjNlNDIzMTIzYmYzMjE3MjA5NTY0MDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaWRsCkBAIC0yNyw1ICsyNyw1IEBACiBdIGlu
dGVyZmFjZSBIVE1MQ29sbGVjdGlvbiB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgbGVuZ3RoOwogICAgIGdldHRlciBFbGVtZW50PyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5k
ZXgpOwotICAgIGdldHRlciBFbGVtZW50PyBuYW1lZEl0ZW0oRE9NU3RyaW5nIG5hbWUpOworICAg
IGdldHRlciBFbGVtZW50PyBuYW1lZEl0ZW0oW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBE
T01TdHJpbmcgbmFtZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RGF0YUxpc3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxl
bWVudC5jcHAKaW5kZXggYmVjODdiMzZkMzgxNDBlMmMyY2VjMTJkNGEwYmRiZjM4NTQ4OGExOS4u
ODI2YzJjNTQ5MzUyZTU1N2E1YmI4OTU0Zjc2YTYxZjA1MmY5NzUxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM3LDYgKzM3LDcgQEAKIAogI2lu
Y2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTY1LDYgKzY2LDExIEBAIHZvaWQgSFRNTERhdGFM
aXN0RWxlbWVudDo6b3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpCiAgICAgdHJlZVNjb3Bl
KCkuaWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KCkubm90aWZ5T2JzZXJ2ZXJzKGdldElkQXR0cmli
dXRlKCkpOwogfQogCitib29sIEhUTUxEYXRhTGlzdEVsZW1lbnQ6OmlzU3VnZ2VzdGlvbihjb25z
dCBIVE1MT3B0aW9uRWxlbWVudCYgZGVzY2VuZGFudCkKK3sKKyAgICByZXR1cm4gIWRlc2NlbmRh
bnQuaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgIWRlc2NlbmRhbnQudmFsdWUoKS5pc0VtcHR5
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxp
c3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuaApp
bmRleCA4ZjcxZmE1YzkxMWM5YjUwYjJiODEwZDg1N2Y3YWMzY2YyY2NlYzAxLi43Y2Y1NzFlMjlh
NjcwY2RmMGNkNmRlNTUzNzUzYjdlYTk1MmQ4NjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEYXRhTGlzdEVsZW1lbnQuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKGMp
IDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzMsMTEgKzMzLDEzIEBACiAKICNpZiBFTkFCTEUoREFU
QUxJU1RfRUxFTUVOVCkKIAotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAi
RWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBIVE1MQ29sbGVjdGlvbjsKKwogY2xhc3MgSFRNTERhdGFMaXN0
RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChIVE1MRGF0YUxpc3RFbGVtZW50KTsKIHB1YmxpYzoKQEAgLTQ3LDYgKzQ5LDkgQEAg
cHVibGljOgogCiAgICAgdm9pZCBvcHRpb25FbGVtZW50Q2hpbGRyZW5DaGFuZ2VkKCk7CiAKKyAg
ICBzdGF0aWMgYm9vbCBpc1N1Z2dlc3Rpb24oY29uc3QgSFRNTE9wdGlvbkVsZW1lbnQmIGRlc2Nl
bmRhbnQpOworICAgIGF1dG8gc3VnZ2VzdGlvbnMoKSBjb25zdCB7IHJldHVybiBkZXNjZW5kYW50
c09mVHlwZTxIVE1MT3B0aW9uRWxlbWVudCwgaXNTdWdnZXN0aW9uPigqdGhpcyk7IH0KKwogcHJp
dmF0ZToKICAgICBIVE1MRGF0YUxpc3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggNjhjZjU1M2Fi
NDkwYWU0ZGYwN2M3ZGZiNjJiN2RkZDA2NjkwNjBlYS4uMzJlZDRhZDMxYmQzMGVjZjRjY2M0OGZi
MTQyNDRhMzIzMjRlMDRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTEs
NyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtk
ZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqIENvcHly
aWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CkBAIC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiSFRNTEJESUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MQlJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJ1dHRvbkVsZW1lbnQuaCIKLSNpbmNs
dWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkhUTUxFbGVtZW50RmFjdG9yeS5oIgogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQu
aCIKQEAgLTYwLDYgKzU5LDcgQEAKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNs
dWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAj
aW5jbHVkZSAiU2ltdWxhdGVkQ2xpY2suaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIK
QEAgLTc2NywxNCArNzY3LDE2IEBAIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogSFRNTEVsZW1lbnQ6
OmFzRm9ybUFzc29jaWF0ZWRFbGVtZW50KCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3Rh
dGljIGlubGluZSBib29sIGVsZW1lbnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkoY29uc3QgTm9kZSYg
bm9kZSkKK3N0YXRpYyBib29sIGVsZW1lbnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkoY29uc3QgSFRN
TEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgaWYgKCFpczxIVE1MRWxlbWVudD4obm9kZSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGRv
d25jYXN0PEhUTUxFbGVtZW50Pihub2RlKTsKICAgICByZXR1cm4gaXM8SFRNTEJESUVsZW1lbnQ+
KGVsZW1lbnQpIHx8IGVsZW1lbnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihk
aXJBdHRyKTsKIH0KIAorc3RhdGljIGJvb2wgZWxlbWVudEFmZmVjdHNEaXJlY3Rpb25hbGl0eShj
b25zdCBOb2RlJiBub2RlKQoreworICAgIHJldHVybiBpczxIVE1MRWxlbWVudD4obm9kZSkgJiYg
ZWxlbWVudEFmZmVjdHNEaXJlY3Rpb25hbGl0eShkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSkp
OworfQorCiBzdGF0aWMgdm9pZCBzZXRIYXNEaXJBdXRvRmxhZ1JlY3Vyc2l2ZWx5KE5vZGUqIGZp
cnN0Tm9kZSwgYm9vbCBmbGFnLCBOb2RlKiBsYXN0Tm9kZSA9IG51bGxwdHIpCiB7CiAgICAgZmly
c3ROb2RlLT5zZXRTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUoZmxhZyk7CkBAIC04
ODUsMTAgKzg4NywxMCBAQCB2b2lkIEhUTUxFbGVtZW50OjphZGp1c3REaXJlY3Rpb25hbGl0eUlm
TmVlZGVkQWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudAogICAgIHNldEhhc0RpckF1
dG9GbGFnUmVjdXJzaXZlbHkoY2hpbGQsIGZhbHNlKTsKICAgICBpZiAoIXJlbmRlcmVyKCkgfHwg
cmVuZGVyZXIoKS0+c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSB0ZXh0RGlyZWN0aW9uKQogICAgICAg
ICByZXR1cm47Ci0gICAgZm9yIChhdXRvJiBlbGVtZW50VG9BZGp1c3QgOiBlbGVtZW50TGluZWFn
ZSh0aGlzKSkgewotICAgICAgICBpZiAoZWxlbWVudEFmZmVjdHNEaXJlY3Rpb25hbGl0eShlbGVt
ZW50VG9BZGp1c3QpKSB7Ci0gICAgICAgICAgICBlbGVtZW50VG9BZGp1c3QuaW52YWxpZGF0ZVN0
eWxlRm9yU3VidHJlZSgpOwotICAgICAgICAgICAgcmV0dXJuOworICAgIGZvciAoYXV0byYgZWxl
bWVudCA6IGxpbmVhZ2VPZlR5cGU8SFRNTEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBpZiAo
ZWxlbWVudEFmZmVjdHNEaXJlY3Rpb25hbGl0eShlbGVtZW50KSkgeworICAgICAgICAgICAgZWxl
bWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCAzOTVkYjFl
NjJlZWRkMWQ5MDBlOWU3YzNlYzg4OGNiMDBjYjJhNGEzLi43ZTA3NGViNjEyODk3NjI4OTBlMTFl
ODFhZmNkNmEwOTNlN2ZkZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC0yMiwx
OSArMjIsMTcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJJbnB1dE1vZGUuaCIKKyNp
bmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCisKICNpZiBFTkFCTEUoQVVUT0NBUElUQUxJWkUpCiAj
aW5jbHVkZSAiQXV0b2NhcGl0YWxpemUuaCIKICNlbmRpZgogCi0jaW5jbHVkZSAiSW5wdXRNb2Rl
LmgiCi0jaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ7CiBj
bGFzcyBGb3JtTmFtZWRJdGVtOwotY2xhc3MgSFRNTENvbGxlY3Rpb247CiBjbGFzcyBIVE1MRm9y
bUVsZW1lbnQ7CiAKIGVudW0gY2xhc3MgRW50ZXJLZXlIaW50IDogdWludDhfdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCmluZGV4IDkxNzAxZTE0NDRlZjI4NjA4NWY3
MjEyNDBiZWYwYWI2YzI3NjE2MTIuLjIxY2I5ZDkzYzlhMzQwYTNmYjNjYjE2NjIwMGNkNjgxMDQw
ZTVhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcApAQCAtMiw3
ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3Jn
KQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3Jn
KQogICogICAgICAgICAgIChDKSAyMDAwIFN0ZWZhbiBTY2hpbWFuc2tpICgxU3RlaW5AZ214LmRl
KQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CkBAIC02NiwxNSArNjYsMTAgQEAgUmVmPEhUTUxFbWJlZEVsZW1lbnQ+IEhUTUxFbWJlZEVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAKIHN0YXRpYyBpbmxpbmUgUmVuZGVyV2lk
Z2V0KiBmaW5kV2lkZ2V0UmVuZGVyZXIoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICBpZiAoIW5v
ZGUtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgbm9kZSA9IG5vZGUt
PnBhcmVudE5vZGUoKTsKLSAgICAgICAgfSB3aGlsZSAobm9kZSAmJiAhaXM8SFRNTE9iamVjdEVs
ZW1lbnQ+KCpub2RlKSk7Ci0gICAgfQotCisgICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKQorICAg
ICAgICBub2RlID0gYW5jZXN0b3JzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50Pigqbm9kZSkuZmly
c3QoKTsKICAgICBpZiAobm9kZSAmJiBpczxSZW5kZXJXaWRnZXQ+KG5vZGUtPnJlbmRlcmVyKCkp
KQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyV2lkZ2V0Pihub2RlLT5yZW5kZXJlcigp
KTsKLQogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCBkNjExYmMxYjIyNTFmZjhmMDg4NDRmNjhk
NDI0ZmI5ZGM5NjY4MmY0Li5mZDc3ZDdiYTA0M2U5YTdjZDcyZmY5NmU4NTY4ZmI5ZWM5ODNmN2M2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAK
QEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxA
a2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9A
a2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2Rl
Lm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChh
cEBueXBvcC5jb20pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgor
I2luY2x1ZGUgIkhUTUxEYXRhTGlzdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRmllbGRTZXRF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElu
cHV0RWxlbWVudC5oIgpAQCAtNDEyLDE0ICs0MTMsMTIgQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50OjptYXRjaGVzSW52YWxpZFBzZXVkb0NsYXNzKCkgY29uc3QKIGJvb2wgSFRNTEZvcm1D
b250cm9sRWxlbWVudDo6Y29tcHV0ZVdpbGxWYWxpZGF0ZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1f
ZGF0YUxpc3RBbmNlc3RvclN0YXRlID09IFVua25vd24pIHsKLSAgICAgICAgZm9yIChDb250YWlu
ZXJOb2RlKiBhbmNlc3RvciA9IHBhcmVudE5vZGUoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5j
ZXN0b3ItPnBhcmVudE5vZGUoKSkgewotICAgICAgICAgICAgaWYgKGFuY2VzdG9yLT5oYXNUYWdO
YW1lKGRhdGFsaXN0VGFnKSkgewotICAgICAgICAgICAgICAgIG1fZGF0YUxpc3RBbmNlc3RvclN0
YXRlID0gSW5zaWRlRGF0YUxpc3Q7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlID09IFVu
a25vd24pCi0gICAgICAgICAgICBtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9IE5vdEluc2lkZURh
dGFMaXN0OworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgICAgICBtX2RhdGFMaXN0
QW5jZXN0b3JTdGF0ZSA9IGFuY2VzdG9yc09mVHlwZTxIVE1MRGF0YUxpc3RFbGVtZW50PigqdGhp
cykuZmlyc3QoKQorICAgICAgICAgICAgPyBJbnNpZGVEYXRhTGlzdCA6IE5vdEluc2lkZURhdGFM
aXN0OworI2Vsc2UKKyAgICAgICAgbV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUgPSBOb3RJbnNpZGVE
YXRhTGlzdDsKKyNlbmRpZgogICAgIH0KICAgICByZXR1cm4gbV9kYXRhTGlzdEFuY2VzdG9yU3Rh
dGUgPT0gTm90SW5zaWRlRGF0YUxpc3QgJiYgIWlzRGlzYWJsZWRPclJlYWRPbmx5KCk7CiB9CkBA
IC02NDUsMTUgKzY0NCw2IEBAIEF1dG9jYXBpdGFsaXplVHlwZSBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OjphdXRvY2FwaXRhbGl6ZVR5cGUoKSBjb25zdAogCiAjZW5kaWYKIAotSFRNTEZvcm1Db250
cm9sRWxlbWVudCogSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZW5jbG9zaW5nRm9ybUNvbnRyb2xF
bGVtZW50KE5vZGUqIG5vZGUpCi17Ci0gICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJl
bnROb2RlKCkpIHsKLSAgICAgICAgaWYgKGlzPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KCpub2Rl
KSkKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Pihu
b2RlKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIFN0cmluZyBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjphdXRvY29tcGxldGUoKSBjb25zdAogewogICAgIHJldHVybiBhdXRvZmls
bERhdGEoKS5pZGxFeHBvc2VkVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5oCmluZGV4IDYxMzQwYmZhNzNhM2E5NjZiYTYzN2FkNDRmNTZjYmQ4ZmNm
Yzk2ZjAuLjNhZGIzMTFjN2E2MWQ3OGQ4MGI5OTBhMTU2OWU2ODFkMGY2NTMwMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0xMTYsOCArMTE2
LDYgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQXV0b2ZvY3VzZWQoKSB7IHJldHVybiBtX2hhc0F1
dG9mb2N1c2VkOyB9CiAgICAgdm9pZCBzZXRBdXRvZm9jdXNlZCgpIHsgbV9oYXNBdXRvZm9jdXNl
ZCA9IHRydWU7IH0KIAotICAgIHN0YXRpYyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlbmNsb3Np
bmdGb3JtQ29udHJvbEVsZW1lbnQoTm9kZSopOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGF1dG9jb21wbGV0ZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXV0b2Nv
bXBsZXRlKGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCmluZGV4IGEyYjAwZThmODE2ZGExYzIyMWIxYzM2
NmVhNmU2ODljM2IxYzY4YjkuLjg0YTFjYjc5ZTM2MDE0M2VjM2Q0ODI5YzY1NzU3OGM4MjgzN2Qw
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24pOwog
CiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24o
Q29udGFpbmVyTm9kZSYgb3duZXJOb2RlKQotICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPEZvcm1Db250cm9s
cz46OnRyYXZlcnNhbFR5cGU+KG93bmVyTm9kZSwgRm9ybUNvbnRyb2xzKQorICAgIDogQ2FjaGVk
SFRNTENvbGxlY3Rpb24ob3duZXJOb2RlLCBGb3JtQ29udHJvbHMpCiAgICAgLCBtX2NhY2hlZEVs
ZW1lbnQobnVsbHB0cikKICAgICAsIG1fY2FjaGVkRWxlbWVudE9mZnNldEluQXJyYXkoMCkKIHsK
QEAgLTExMSw3ICsxMTEsNyBAQCBIVE1MRWxlbWVudCogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b246OmN1c3RvbUVsZW1lbnRBZnRlcihFbGVtZW50KiBjdXJyZW50KSBjbwogCiBIVE1MRm9ybUVs
ZW1lbnQmIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpvd25lck5vZGUoKSBjb25zdAogewot
ICAgIHJldHVybiBkb3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KENhY2hlZEhUTUxDb2xsZWN0aW9u
PEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxGb3JtQ29u
dHJvbHM+Ojp0cmF2ZXJzYWxUeXBlPjo6b3duZXJOb2RlKCkpOworICAgIHJldHVybiBkb3duY2Fz
dDxIVE1MRm9ybUVsZW1lbnQ+KENhY2hlZEhUTUxDb2xsZWN0aW9uOjpvd25lck5vZGUoKSk7CiB9
CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENh
Y2hlKCkgY29uc3QKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiAKIHZvaWQgSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50KERvY3VtZW50JiBk
b2N1bWVudCkKIHsKLSAgICBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8Rm9ybUNvbnRyb2xzPjo6dHJhdmVyc2FsVHlw
ZT46OmludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50KGRvY3VtZW50KTsKKyAgICBDYWNoZWRIVE1M
Q29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQoZG9jdW1lbnQpOwogICAgIG1f
Y2FjaGVkRWxlbWVudCA9IG51bGxwdHI7CiAgICAgbV9jYWNoZWRFbGVtZW50T2Zmc2V0SW5BcnJh
eSA9IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uaWRsCmluZGV4IDQzYzgzNTk5OGI0MDA1OWUzMzI3Y2U2ZDU5ZTBmODJlNmZkZDE4
MjMuLjRkODFmZmQwMzQ1NzQ3N2NiYTI0ZDJkMzNkYmI5MzFiNDhiMzVlZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsCkBAIC0y
Miw1ICsyMiw1IEBACiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsT3duZXJOb2RlUm9vdCwK
IF0gaW50ZXJmYWNlIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uIDogSFRNTENvbGxlY3Rpb24g
ewogICAgIGdldHRlciBIVE1MRWxlbWVudD8gKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtJ
bXBsZW1lbnRlZEFzPW5hbWVkSXRlbU9ySXRlbXNdIGdldHRlciAoUmFkaW9Ob2RlTGlzdCBvciBF
bGVtZW50KT8gbmFtZWRJdGVtKERPTVN0cmluZyBuYW1lKTsgLy8gc2hhZG93cyBpbmhlcml0ZWQg
bmFtZWRJdGVtKCkKKyAgICBbSW1wbGVtZW50ZWRBcz1uYW1lZEl0ZW1Pckl0ZW1zXSBnZXR0ZXIg
KFJhZGlvTm9kZUxpc3Qgb3IgRWxlbWVudCk/IG5hbWVkSXRlbShbUmVxdWlyZXNFeGlzdGluZ0F0
b21TdHJpbmddIERPTVN0cmluZyBuYW1lKTsgLy8gc2hhZG93cyBpbmhlcml0ZWQgbmFtZWRJdGVt
KCkKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggZTdlNDE0
Yzg3ZGMyNDg4YzU4NjZlMzVmMmJlZmQzNzFiZWM5YjE2MC4uMmQwOTNlZmMwNzliODJlZTE3ZmNm
NGRkMGM5ZmFiM2Y5NzNiYzc2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcApAQCAtNTA5LDE0ICs1MDksMTMgQEAgdW5zaWduZWQgSFRNTEZvcm1FbGVtZW50Ojpmb3Jt
RWxlbWVudEluZGV4KEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogYXNzb2NpYXRlZEVsZW0KICAgICBp
ZiAoIWFzc29jaWF0ZWRIVE1MRWxlbWVudC5pc0Rlc2NlbmRhbnRPZigqdGhpcykpCiAgICAgICAg
IHJldHVybiBjdXJyZW50QXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleDsKIAorICAgIGF1dG8g
ZGVzY2VuZGFudHMgPSBkZXNjZW5kYW50c09mVHlwZTxIVE1MRWxlbWVudD4oKnRoaXMpOworCiAg
ICAgLy8gQ2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhpcyBlbGVtZW50IGlzIHRo
ZSB2ZXJ5IGxhc3QgdGhpbmcgaW4KICAgICAvLyB0aGUgZm9ybSdzIHRyZWUgb2YgY2hpbGRyZW47
IHdlIGRvbid0IHdhbnQgdG8gd2FsayB0aGUgZW50aXJlIHRyZWUgaW4gdGhhdAogICAgIC8vIGNv
bW1vbiBjYXNlIHRoYXQgb2NjdXJzIGR1cmluZyBwYXJzaW5nOyBpbnN0ZWFkIHdlJ2xsIGp1c3Qg
cmV0dXJuIGEgdmFsdWUKICAgICAvLyB0aGF0IHNheXMgImFkZCB0aGlzIGZvcm0gZWxlbWVudCB0
byB0aGUgZW5kIG9mIHRoZSBhcnJheSIuCi0gICAgYXV0byBkZXNjZW5kYW50cyA9IGRlc2NlbmRh
bnRzT2ZUeXBlPEhUTUxFbGVtZW50PigqdGhpcyk7Ci0gICAgYXV0byBpdCA9IGRlc2NlbmRhbnRz
LmJlZ2luQXQoYXNzb2NpYXRlZEhUTUxFbGVtZW50KTsKLSAgICBhdXRvIGVuZCA9IGRlc2NlbmRh
bnRzLmVuZCgpOwotICAgIGlmICgrK2l0ID09IGVuZCkKKyAgICBpZiAoISsrZGVzY2VuZGFudHMu
YmVnaW5BdChhc3NvY2lhdGVkSFRNTEVsZW1lbnQpKQogICAgICAgICByZXR1cm4gY3VycmVudEFz
c29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXg7CiAKICAgICB1bnNpZ25lZCBpID0gbV9hc3NvY2lh
dGVkRWxlbWVudHNCZWZvcmVJbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lU2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNl
dEVsZW1lbnQuY3BwCmluZGV4IDgzYWM2ODBkOTA0ODc1NzE1MGI1YjZlYjM2YjY0ZDc4OGYwZWJj
NzAuLmU2YWU2ZjY4ZDg3OTg1YWY5ZmY1NGViNWQ2NzUzM2E1YjVhYjFmMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcApAQCAtMzMsNyArMzMsNiBAQAog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5o
IgogI2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJMZW5ndGguaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGRmZTE5MGE1OWRkZDFlNmFkMTUzMGM1ZjIxOTRiMDg1
N2FjN2I1ZTYuLmIzZGU4YTdkOGE0ZDYwYmFhMzA2NGQ4Y2Q5OGE0N2VhZTZkZjA2OGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMiw3ICsyLDcgQEAKICAq
IENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAg
ICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAg
ICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0
IChDKSAyMDA0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAg
ICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqIENv
cHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIChzYW1Ad2Via2l0Lm9yZykKICAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjEwNCw2
ICsyMTA0LDcgQEAgUmVuZGVyU3R5bGUgSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogfQogCiAjaWYgRU5BQkxFKERBVEVfQU5E
X1RJTUVfSU5QVVRfVFlQRVMpCisKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6c2V0dXBEYXRlVGlt
ZUNob29zZXJQYXJhbWV0ZXJzKERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CiB7CiAgICAgaWYgKCFkb2N1bWVudCgpLnZpZXcoKSkKQEAgLTIxMzYsMjAgKzIxMzcsMjQgQEAg
Ym9vbCBIVE1MSW5wdXRFbGVtZW50OjpzZXR1cERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMoRGF0
ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyYKICAgICAgICAgcGFyYW1ldGVycy5hbmNob3JSZWN0SW5S
b290VmlldyA9IEludFJlY3QoKTsKICAgICBwYXJhbWV0ZXJzLmN1cnJlbnRWYWx1ZSA9IHZhbHVl
KCk7CiAgICAgcGFyYW1ldGVycy5pc0FuY2hvckVsZW1lbnRSVEwgPSBjb21wdXRlZFN0eWxlKCkt
PmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTDsKKwogI2lmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKQogICAgIGlmIChhdXRvIGRhdGFMaXN0ID0gdGhpcy0+ZGF0YUxpc3QoKSkgewot
ICAgICAgICBSZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9ucygp
OwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+
IG9wdGlvbiA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihvcHRpb25zLT5pdGVtKGkpKTsg
KytpKSB7Ci0gICAgICAgICAgICBpZiAoIWlzVmFsaWRWYWx1ZShvcHRpb24tPnZhbHVlKCkpKQor
ICAgICAgICBmb3IgKGF1dG8mIG9wdGlvbiA6IGRhdGFMaXN0LT5zdWdnZXN0aW9ucygpKSB7Cisg
ICAgICAgICAgICBhdXRvIGxhYmVsID0gb3B0aW9uLmxhYmVsKCk7CisgICAgICAgICAgICBhdXRv
IHZhbHVlID0gb3B0aW9uLnZhbHVlKCk7CisgICAgICAgICAgICBpZiAoIWlzVmFsaWRWYWx1ZSh2
YWx1ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBwYXJhbWV0ZXJz
LnN1Z2dlc3Rpb25WYWx1ZXMuYXBwZW5kKHNhbml0aXplVmFsdWUob3B0aW9uLT52YWx1ZSgpKSk7
Ci0gICAgICAgICAgICBwYXJhbWV0ZXJzLmxvY2FsaXplZFN1Z2dlc3Rpb25WYWx1ZXMuYXBwZW5k
KGxvY2FsaXplVmFsdWUob3B0aW9uLT52YWx1ZSgpKSk7Ci0gICAgICAgICAgICBwYXJhbWV0ZXJz
LnN1Z2dlc3Rpb25MYWJlbHMuYXBwZW5kKG9wdGlvbi0+dmFsdWUoKSA9PSBvcHRpb24tPmxhYmVs
KCkgPyBTdHJpbmcoKSA6IG9wdGlvbi0+bGFiZWwoKSk7CisgICAgICAgICAgICBwYXJhbWV0ZXJz
LnN1Z2dlc3Rpb25WYWx1ZXMuYXBwZW5kKHNhbml0aXplVmFsdWUodmFsdWUpKTsKKyAgICAgICAg
ICAgIHBhcmFtZXRlcnMubG9jYWxpemVkU3VnZ2VzdGlvblZhbHVlcy5hcHBlbmQobG9jYWxpemVW
YWx1ZSh2YWx1ZSkpOworICAgICAgICAgICAgcGFyYW1ldGVycy5zdWdnZXN0aW9uTGFiZWxzLmFw
cGVuZCh2YWx1ZSA9PSBsYWJlbCA/IFN0cmluZygpIDogbGFiZWwpOwogICAgICAgICB9CiAgICAg
fQogI2VuZGlmCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KKwogI2VuZGlmCiAKIHZvaWQgSFRNTElu
cHV0RWxlbWVudDo6Y2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGE3M2JjMGI0YzJmZWViMzEzZGZlNzc1Yzg4
ZDhlYTlkMDk5YTBiZjUuLmU3N2IzNWZjNzg2MWI1YmM5NzRlZTk4ZjAzNjBkYjFjMzM3YTU4ZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDY1MCw3ICs0
NjUwLDcgQEAgVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZChDb250
ZW50VHlwZSogY29udGVudFR5cGUsIFN0cmluZyoga2UKICAgICAvLyBlYWNoIHN0aWxsIGlzIGEg
Y2hpbGQgb2YgdGhpcyBtZWRpYSBlbGVtZW50IGJlZm9yZSB1c2luZy4KICAgICBWZWN0b3I8UmVm
PEhUTUxTb3VyY2VFbGVtZW50Pj4gcG90ZW50aWFsU291cmNlTm9kZXM7CiAgICAgYXV0byBzb3Vy
Y2VzID0gY2hpbGRyZW5PZlR5cGU8SFRNTFNvdXJjZUVsZW1lbnQ+KCp0aGlzKTsKLSAgICBmb3Ig
KGF1dG8gbmV4dCA9IG1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXIgPyBzb3VyY2VzLmJlZ2luQXQo
Km1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXIpIDogc291cmNlcy5iZWdpbigpLCBlbmQgPSBzb3Vy
Y2VzLmVuZCgpOyBuZXh0ICE9IGVuZDsgKytuZXh0KQorICAgIGZvciAoYXV0byBuZXh0ID0gbV9u
ZXh0Q2hpbGROb2RlVG9Db25zaWRlciA/IHNvdXJjZXMuYmVnaW5BdCgqbV9uZXh0Q2hpbGROb2Rl
VG9Db25zaWRlcikgOiBzb3VyY2VzLmJlZ2luKCk7IG5leHQ7ICsrbmV4dCkKICAgICAgICAgcG90
ZW50aWFsU291cmNlTm9kZXMuYXBwZW5kKCpuZXh0KTsKIAogICAgIGZvciAoYXV0byYgc291cmNl
IDogcG90ZW50aWFsU291cmNlTm9kZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRH
cm91cEVsZW1lbnQuY3BwCmluZGV4IDllOGNmZmRiOTFhNTEwOTA0Mjg0NTllZmZlODY1YTQ4ZTA3
ZjQ4MDguLjY3NjhmZTEyYTFlNWU3MjIwYzUzNjkwZmU2Zjk3MzU3Y2FlN2NkYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcApAQCAtMiw3ICsyLDcgQEAK
ICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAg
ICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAg
ICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJp
Z2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
ICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCkBAIC0xMDksMTQgKzEwOSw3IEBAIFN0cmluZyBIVE1MT3B0R3JvdXBFbGVtZW50
Ojpncm91cExhYmVsVGV4dCgpIGNvbnN0CiAgICAgCiBIVE1MU2VsZWN0RWxlbWVudCogSFRNTE9w
dEdyb3VwRWxlbWVudDo6b3duZXJTZWxlY3RFbGVtZW50KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8
Q29udGFpbmVyTm9kZT4gc2VsZWN0ID0gcGFyZW50Tm9kZSgpOwotICAgIHdoaWxlIChzZWxlY3Qg
JiYgIWlzPEhUTUxTZWxlY3RFbGVtZW50Pigqc2VsZWN0KSkKLSAgICAgICAgc2VsZWN0ID0gc2Vs
ZWN0LT5wYXJlbnROb2RlKCk7Ci0gICAgCi0gICAgaWYgKCFzZWxlY3QpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIAotICAgIHJldHVybiBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4o
c2VsZWN0LmdldCgpKTsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+
KGFuY2VzdG9yc09mVHlwZTxIVE1MU2VsZWN0RWxlbWVudD4oKnRoaXMpLmZpcnN0KCkpOwogfQog
CiB2b2lkIEhUTUxPcHRHcm91cEVsZW1lbnQ6OmFjY2Vzc0tleUFjdGlvbihib29sKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAppbmRleCBjM2RkMzBkNWRjNjJiZjgz
MTcwOWU1NzAwNDY4OGQ0YTg4YjNlMmE2Li4zYzAxZTY5NWFkMTAyNjc3YWFmZjAyZGIwZjIxMWRi
ODhmNjkyODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcApA
QCAtMyw3ICszLDcgQEAKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29p
dmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxs
ZXJAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChh
cEBueXBvcC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0
eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0xNjYsOCArMTY2LDggQEAgdm9p
ZCBIVE1MT3B0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbVN0cmkKIHsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAg
ICBpZiAobmFtZSA9PSB2YWx1ZUF0dHIpIHsKLSAgICAgICAgaWYgKFJlZlB0cjxIVE1MRGF0YUxp
c3RFbGVtZW50PiBkYXRhTGlzdCA9IG93bmVyRGF0YUxpc3RFbGVtZW50KCkpCi0gICAgICAgICAg
ICBkYXRhTGlzdC0+b3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOworICAgICAgICBmb3Ig
KGF1dG8mIGRhdGFMaXN0IDogYW5jZXN0b3JzT2ZUeXBlPEhUTUxEYXRhTGlzdEVsZW1lbnQ+KCp0
aGlzKSkKKyAgICAgICAgICAgIGRhdGFMaXN0Lm9wdGlvbkVsZW1lbnRDaGlsZHJlbkNoYW5nZWQo
KTsKICAgICB9IGVsc2UKICNlbmRpZgogICAgIGlmIChuYW1lID09IGRpc2FibGVkQXR0cikgewpA
QCAtMjM4LDM5ICsyMzgsMTcgQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6c2V0U2VsZWN0ZWRT
dGF0ZShib29sIHNlbGVjdGVkKQogdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiB7CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VM
RU1FTlQpCi0gICAgaWYgKFJlZlB0cjxIVE1MRGF0YUxpc3RFbGVtZW50PiBkYXRhTGlzdCA9IG93
bmVyRGF0YUxpc3RFbGVtZW50KCkpCi0gICAgICAgIGRhdGFMaXN0LT5vcHRpb25FbGVtZW50Q2hp
bGRyZW5DaGFuZ2VkKCk7Ci0gICAgZWxzZQorICAgIGZvciAoYXV0byYgZGF0YUxpc3QgOiBhbmNl
c3RvcnNPZlR5cGU8SFRNTERhdGFMaXN0RWxlbWVudD4oKnRoaXMpKQorICAgICAgICBkYXRhTGlz
dC5vcHRpb25FbGVtZW50Q2hpbGRyZW5DaGFuZ2VkKCk7CiAjZW5kaWYKICAgICBpZiAoUmVmUHRy
PEhUTUxTZWxlY3RFbGVtZW50PiBzZWxlY3QgPSBvd25lclNlbGVjdEVsZW1lbnQoKSkKICAgICAg
ICAgc2VsZWN0LT5vcHRpb25FbGVtZW50Q2hpbGRyZW5DaGFuZ2VkKCk7CiAgICAgSFRNTEVsZW1l
bnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogfQogCi0jaWYgRU5BQkxFKERBVEFMSVNUX0VM
RU1FTlQpCi1IVE1MRGF0YUxpc3RFbGVtZW50KiBIVE1MT3B0aW9uRWxlbWVudDo6b3duZXJEYXRh
TGlzdEVsZW1lbnQoKSBjb25zdAotewotICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBkYXRhbGlz
dCA9IHBhcmVudE5vZGUoKTsKLSAgICB3aGlsZSAoZGF0YWxpc3QgJiYgIWlzPEhUTUxEYXRhTGlz
dEVsZW1lbnQ+KCpkYXRhbGlzdCkpCi0gICAgICAgIGRhdGFsaXN0ID0gZGF0YWxpc3QtPnBhcmVu
dE5vZGUoKTsKLQotICAgIGlmICghZGF0YWxpc3QpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxEYXRhTGlzdEVsZW1lbnQ+KGRhdGFsaXN0LmdldCgp
KTsKLX0KLSNlbmRpZgotCiBIVE1MU2VsZWN0RWxlbWVudCogSFRNTE9wdGlvbkVsZW1lbnQ6Om93
bmVyU2VsZWN0RWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHNl
bGVjdCA9IHBhcmVudE5vZGUoKTsKLSAgICB3aGlsZSAoc2VsZWN0ICYmICFpczxIVE1MU2VsZWN0
RWxlbWVudD4oKnNlbGVjdCkpCi0gICAgICAgIHNlbGVjdCA9IHNlbGVjdC0+cGFyZW50Tm9kZSgp
OwotCi0gICAgaWYgKCFzZWxlY3QpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0
dXJuIGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50PihzZWxlY3QuZ2V0KCkpOworICAgIHJldHVy
biBjb25zdF9jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4oYW5jZXN0b3JzT2ZUeXBlPEhUTUxTZWxl
Y3RFbGVtZW50PigqdGhpcykuZmlyc3QoKSk7CiB9CiAKIFN0cmluZyBIVE1MT3B0aW9uRWxlbWVu
dDo6bGFiZWwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCmlu
ZGV4IGYwZDk0YzhhNmI1ZjMwODMzNGVhYTExZGE5ZTQwMjFiNWMwZTU3ZTYuLjkxYzVhYmM3ZTAx
N2MxMWZhMTMyZmQzMWYwMWJlMWUzMjRlMjZiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25FbGVtZW50LmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFy
cyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2
aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxs
ZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAxMCwgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCkBAIC0yOCw3ICsyOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
SFRNTERhdGFMaXN0RWxlbWVudDsKIGNsYXNzIEhUTUxTZWxlY3RFbGVtZW50OwogCiBjbGFzcyBI
VE1MT3B0aW9uRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CkBAIC00OSw5ICs0
OCw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNlbGVjdGVkKCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZWxlY3RlZChib29sKTsKIAotI2lmIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQotICAgIFdFQkNPUkVfRVhQT1JUIEhUTUxEYXRhTGlzdEVsZW1lbnQqIG93
bmVyRGF0YUxpc3RFbGVtZW50KCkgY29uc3Q7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBI
VE1MU2VsZWN0RWxlbWVudCogb3duZXJTZWxlY3RFbGVtZW50KCkgY29uc3Q7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgbGFiZWwoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbAppbmRleCA2ZTlmYTRkMGUxNjE2MGRhMmI3Y2FiODBk
MDJhOTdhYmQ4MDYzYjA1Li5mMWM0NzdlNDg2OGUwZmU0MDU5ZmRmYzYwNTFiZWMzYTFmMmM1Y2Vj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsCkBA
IC0zMiw1ICszMiw1IEBACiAKICAgICAvLyBGSVhNRTogQ2FuIHRoZXNlIGp1c3QgYmUgaW5oZXJp
dGVkIGZyb20gSFRNTENvbGxlY3Rpb24gbGlrZSBpbiB0aGUgc3BlYz8KICAgICBnZXR0ZXIgSFRN
TE9wdGlvbkVsZW1lbnQ/IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgZ2V0dGVyIEhU
TUxPcHRpb25FbGVtZW50PyBuYW1lZEl0ZW0oRE9NU3RyaW5nIG5hbWUpOworICAgIGdldHRlciBI
VE1MT3B0aW9uRWxlbWVudD8gbmFtZWRJdGVtKFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10g
RE9NU3RyaW5nIG5hbWUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwCmluZGV4IDU2MjMxYTUwYjJhNDYwZTRhZDBiODdmMGQ4YjRhODA5NTY0
NDZjYTIuLjBmYTNjNjlkNGU5MjZiNzI5YmU3ZTVmNjMwMmJiMDIxNDc2NDliMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMjUsNiAr
MjUsNyBAQAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbW1vblZNLmgi
CiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCisjaW5jbHVkZSAiRWxlbWVudEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAgLTUwLDcgKzUxLDYgQEAKICNpbmNsdWRl
ICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3R5bGVUcmVlUmVzb2x2ZXIuaCIKICNpbmNsdWRl
ICJTdWJmcmFtZUxvYWRlci5oIgotI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQ2F0Y2hTY29wZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xv
YmFsT2JqZWN0SW5saW5lcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmlkbAppbmRleCA2MWVlNTk0ZTYwMzc3OTBlYWRmYzhhZmQxYzE1ZWNjNDZmMzhjNmM5Li5kM2Fl
ZGE5MDM1NTM4ZDk2ZjIyYmUxYTU0MGU3MzYxMDM5ZWVlYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbApAQCAtMzYsNyArMzYsNyBAQAogICAgIC8qIFtTYW1l
T2JqZWN0XSAqLyByZWFkb25seSBhdHRyaWJ1dGUgSFRNTE9wdGlvbnNDb2xsZWN0aW9uIG9wdGlv
bnM7CiAgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAg
ICAgZ2V0dGVyIEhUTUxPcHRpb25FbGVtZW50PyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOyAv
LyBGSVhNRTogVGhlIHNwZWMgaGFzIHRoaXMgcmV0dXJuaW5nIEVsZW1lbnQ/LgotICAgIEhUTUxP
cHRpb25FbGVtZW50PyBuYW1lZEl0ZW0oRE9NU3RyaW5nIG5hbWUpOworICAgIEhUTUxPcHRpb25F
bGVtZW50PyBuYW1lZEl0ZW0oW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBET01TdHJpbmcg
bmFtZSk7CiAgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBhZGQoKEhU
TUxPcHRpb25FbGVtZW50IG9yIEhUTUxPcHRHcm91cEVsZW1lbnQpIGVsZW1lbnQsIG9wdGlvbmFs
IChIVE1MRWxlbWVudCBvciBsb25nKT8gYmVmb3JlID0gbnVsbCk7CiAgICAgW0NFUmVhY3Rpb25z
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZW1vdmUoKTsgLy8gQ2hpbGROb2RlIG92ZXJsb2Fk
CiAgICAgW0NFUmVhY3Rpb25zXSB2b2lkIHJlbW92ZShsb25nIGluZGV4KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKaW5kZXggZmJmOGY3MzNlNDgwMDA0
OTFlYWQ4NjE2NzNiODYzMTkyM2Y5OTE4Ni4uYTYwMDM4ZmU5NGYyOThiMDhlYTRhYjZlZGFjZDdk
MTU1N2FhODc1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxs
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVu
dC5jcHAKQEAgLTEzMSw5ICsxMzEsOSBAQCB2b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tUwogCiBjb25z
dCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUNlbGxFbGVtZW50OjphZGRpdGlvbmFsUHJlc2Vu
dGF0aW9uQXR0cmlidXRlU3R5bGUoKSBjb25zdAogewotICAgIGlmIChSZWZQdHI8SFRNTFRhYmxl
RWxlbWVudD4gdGFibGUgPSBmaW5kUGFyZW50VGFibGUoKSkKKyAgICBpZiAoYXV0byB0YWJsZSA9
IGZpbmRQYXJlbnRUYWJsZSgpKQogICAgICAgICByZXR1cm4gdGFibGUtPmFkZGl0aW9uYWxDZWxs
U3R5bGUoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogYm9vbCBI
VE1MVGFibGVDZWxsRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRy
aWJ1dGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNv
bEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNw
cAppbmRleCA3MjhiNWYzZDJiNTUyM2IwNGIzOTlmMmNjNGI1NWFhNGY4YjFmYzc0Li5mNGQ0NDc1
ODExZThhNDBjYTMyYTY3YmNmNmIyMTZjMjUzYTdlN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgY29uc3QgU3R5bGVQ
cm9wZXJ0aWVzKiBIVE1MVGFibGVDb2xFbGVtZW50OjphZGRpdGlvbmFsUHJlc2VudGF0aW9uQXR0
cmlidXRlU3R5bGUKIHsKICAgICBpZiAoIWhhc1RhZ05hbWUoY29sZ3JvdXBUYWcpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IHRhYmxl
ID0gZmluZFBhcmVudFRhYmxlKCkpCisgICAgaWYgKGF1dG8gdGFibGUgPSBmaW5kUGFyZW50VGFi
bGUoKSkKICAgICAgICAgcmV0dXJuIHRhYmxlLT5hZGRpdGlvbmFsR3JvdXBTdHlsZShmYWxzZSk7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVt
ZW50LmNwcAppbmRleCA3NjdhM2UzOGFmNDgyZGQ5MmIxNDljOGYwZWU4Yjg2NmU3ZDRiN2JmLi5h
NWY4MGZlMGM5MWY4OGQ5NjBhYjdmZTdhZjA2OGE0OGI4OTY0NWQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKQEAgLTQ3Myw3ICs0NzMsNyBAQCBIVE1MVGFibGVF
bGVtZW50OjpDZWxsQm9yZGVycyBIVE1MVGFibGVFbGVtZW50OjpjZWxsQm9yZGVycygpIGNvbnN0
CiAgICAgcmV0dXJuIE5vQm9yZGVyczsKIH0KIAotUmVmPFN0eWxlUHJvcGVydGllcz4gSFRNTFRh
YmxlRWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCkKK1JlZjxTdHlsZVByb3BlcnRpZXM+
IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpIGNvbnN0CiB7CiAgICAg
YXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogCkBAIC01MTQs
NyArNTE0LDcgQEAgUmVmPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRl
U2hhcmVkQ2VsbFN0eWxlKCkKICAgICByZXR1cm4gc3R5bGU7CiB9CiAKLWNvbnN0IFN0eWxlUHJv
cGVydGllcyogSFRNTFRhYmxlRWxlbWVudDo6YWRkaXRpb25hbENlbGxTdHlsZSgpCitjb25zdCBT
dHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxDZWxsU3R5bGUoKSBj
b25zdAogewogICAgIGlmICghbV9zaGFyZWRDZWxsU3R5bGUpCiAgICAgICAgIG1fc2hhcmVkQ2Vs
bFN0eWxlID0gY3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCk7CkBAIC01MzgsMTEgKzUzOCwxMCBAQCBz
dGF0aWMgU3R5bGVQcm9wZXJ0aWVzKiBsZWFrR3JvdXBCb3JkZXJTdHlsZShpbnQgcm93cykKICAg
ICByZXR1cm4gJnN0eWxlLmxlYWtSZWYoKTsKIH0KIAotY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBI
VE1MVGFibGVFbGVtZW50OjphZGRpdGlvbmFsR3JvdXBTdHlsZShib29sIHJvd3MpCitjb25zdCBT
dHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxHcm91cFN0eWxlKGJv
b2wgcm93cykgY29uc3QKIHsKICAgICBpZiAobV9ydWxlc0F0dHIgIT0gR3JvdXBzUnVsZXMpCi0g
ICAgICAgIHJldHVybiAwOwotCisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChyb3dz
KSB7CiAgICAgICAgIHN0YXRpYyBTdHlsZVByb3BlcnRpZXMqIHJvd0JvcmRlclN0eWxlID0gbGVh
a0dyb3VwQm9yZGVyU3R5bGUodHJ1ZSk7CiAgICAgICAgIHJldHVybiByb3dCb3JkZXJTdHlsZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmgKaW5kZXggYjM2NTQyMDliZGE4NTc4
ODVjNjkzMWM4MWI0ZWUzZjk4NmYzODQxNi4uMzc1NmRjNjEwNzVjNGJmNzk1N2Y5MDczYjc4NzVh
NTJmMmU1NmIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmgKQEAgLTY1
LDggKzY1LDggQEAgcHVibGljOgogICAgIGNvbnN0IEF0b21TdHJpbmcmIHJ1bGVzKCkgY29uc3Q7
CiAgICAgY29uc3QgQXRvbVN0cmluZyYgc3VtbWFyeSgpIGNvbnN0OwogCi0gICAgY29uc3QgU3R5
bGVQcm9wZXJ0aWVzKiBhZGRpdGlvbmFsQ2VsbFN0eWxlKCk7Ci0gICAgY29uc3QgU3R5bGVQcm9w
ZXJ0aWVzKiBhZGRpdGlvbmFsR3JvdXBTdHlsZShib29sIHJvd3MpOworICAgIGNvbnN0IFN0eWxl
UHJvcGVydGllcyogYWRkaXRpb25hbENlbGxTdHlsZSgpIGNvbnN0OworICAgIGNvbnN0IFN0eWxl
UHJvcGVydGllcyogYWRkaXRpb25hbEdyb3VwU3R5bGUoYm9vbCByb3dzKSBjb25zdDsKIAogcHJp
dmF0ZToKICAgICBIVE1MVGFibGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOwpAQCAtODYsNyArODYsNyBAQCBwcml2YXRlOgogCiAgICAgQ2VsbEJvcmRlcnMgY2VsbEJv
cmRlcnMoKSBjb25zdDsKIAotICAgIFJlZjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENl
bGxTdHlsZSgpOworICAgIFJlZjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHls
ZSgpIGNvbnN0OwogCiAgICAgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqIGxhc3RCb2R5KCkgY29u
c3Q7CiAKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZnJhbWVBdHRyIHsg
ZmFsc2UgfTsgLy8gSW1wbGllcyBhIHRoaW4gYm9yZGVyIHdpZHRoIGlmIG5vIGJvcmRlciBpcyBz
ZXQgYW5kIHRoZW4gYSBjZXJ0YWluIHNldCBvZiBzb2xpZC9oaWRkZW4gYm9yZGVycyBiYXNlZCBv
ZmYgdGhlIHZhbHVlLgogICAgIFRhYmxlUnVsZXMgbV9ydWxlc0F0dHIgeyBVbnNldFJ1bGVzIH07
IC8vIEltcGxpZXMgYSB0aGluIGJvcmRlciB3aWR0aCwgYSBjb2xsYXBzaW5nIGJvcmRlciBtb2Rl
bCwgYW5kIGFsbCBib3JkZXJzIG9uIHRoZSB0YWJsZSBiZWNvbWluZyBzZXQgdG8gaGlkZGVuIChp
ZiBmcmFtZS9ib3JkZXIgYXJlIHByZXNlbnQsIHRvIG5vbmUgb3RoZXJ3aXNlKS4KICAgICB1bnNp
Z25lZCBzaG9ydCBtX3BhZGRpbmcgeyAxIH07Ci0gICAgUmVmUHRyPFN0eWxlUHJvcGVydGllcz4g
bV9zaGFyZWRDZWxsU3R5bGU7CisgICAgbXV0YWJsZSBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBt
X3NoYXJlZENlbGxTdHlsZTsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAKaW5kZXggMzU4NzgwMTYyMTBmY2FhZmY2MDkw
ZTY5NTM5NDE1NWM0NTVhZWE3Yy4uMzQ5YjAzNTEyYThlYzU0MDUyNDFiYmE2ZmMzZDRhOWZmNzQz
NmVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAK
QEAgLTQsNyArNCw3IEBACiAgKiAgICAgICAgICAgKEMpIDE5OTggV2FsZG8gQmFzdGlhbiAoYmFz
dGlhbkBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtk
ZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgSW5j
LgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC04NSwxMiArODUsOSBAQCB2b2lkIEhUTUxUYWJs
ZVBhcnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTgogICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0
aW9uQXR0cmlidXRlKG5hbWUsIHZhbHVlLCBzdHlsZSk7CiB9CiAKLVJlZlB0cjxIVE1MVGFibGVF
bGVtZW50PiBIVE1MVGFibGVQYXJ0RWxlbWVudDo6ZmluZFBhcmVudFRhYmxlKCkgY29uc3QKK1Jl
ZlB0cjxjb25zdCBIVE1MVGFibGVFbGVtZW50PiBIVE1MVGFibGVQYXJ0RWxlbWVudDo6ZmluZFBh
cmVudFRhYmxlKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFyZW50ID0g
cGFyZW50Tm9kZSgpOwotICAgIHdoaWxlIChwYXJlbnQgJiYgIWlzPEhUTUxUYWJsZUVsZW1lbnQ+
KCpwYXJlbnQpKQotICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE5vZGUoKTsKLSAgICBy
ZXR1cm4gZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4ocGFyZW50LmdldCgpKTsKKyAgICByZXR1
cm4gYW5jZXN0b3JzT2ZUeXBlPEhUTUxUYWJsZUVsZW1lbnQ+KCp0aGlzKS5maXJzdCgpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmgKaW5kZXggZDNi
Y2Y1MGJhZTIxYzM1OGNkZTIzZjMzNjNlNWM2OTJkNTZmMTFlNi4uMDRmOTQ3MWJhYmEyODc3Zjc1
NDU0MGM5YjFhNTgwOTcyN2JlYjU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVQYXJ0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
UGFydEVsZW1lbnQuaApAQCAtNCw3ICs0LDcgQEAKICAqICAgICAgICAgICAoQykgMTk5OCBXYWxk
byBCYXN0aWFuIChiYXN0aWFuQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgTGFycyBL
bm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0
byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwg
MjAwNiwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTQyLDcgKzQyLDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNQcmVzZW50
YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJy
aWRlOwogCi0gICAgUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IGZpbmRQYXJlbnRUYWJsZSgpIGNv
bnN0OworICAgIFJlZlB0cjxjb25zdCBIVE1MVGFibGVFbGVtZW50PiBmaW5kUGFyZW50VGFibGUo
KSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKaW5kZXggZTUxNmE4MTg0ZDFmMGY4
MzczY2QyMWE0YTdhNDA5M2NmOWJjZjJmMS4uNDk5OWMxNThlNmJhZjk4ODJiYTVlMDVkMjZmM2Rk
YTM0MThiYzNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0
aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9u
RWxlbWVudC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJIVE1MVGFibGVTZWN0aW9u
RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCi0j
aW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNs
dWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5o
IgpAQCAtOTUsNyArOTQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MVGFibGVTZWN0aW9uRWxl
bWVudDo6ZGVsZXRlUm93KGludCBpbmRleCkKIGludCBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6
bnVtUm93cygpIGNvbnN0CiB7CiAgICAgYXV0byByb3dzID0gY2hpbGRyZW5PZlR5cGU8SFRNTFRh
YmxlUm93RWxlbWVudD4oKnRoaXMpOwotICAgIHJldHVybiBzdGQ6OmRpc3RhbmNlKHJvd3MuYmVn
aW4oKSwgcm93cy5lbmQoKSk7CisgICAgcmV0dXJuIHN0ZDo6ZGlzdGFuY2Uocm93cy5iZWdpbigp
LCB7IH0pOwogfQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50
Ojpyb3dzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudC5jcHAKaW5kZXggM2M5YjMzOGZkMjYyNmQ3NGQ2ZGUwOGNlZmU0NWU1MzZiMzRhMTYw
My4uZTI3YWZiYzAwZDRlODQ1NmIwNDBhNGFjNjQzZTdhYmFhZjdhZmExNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTIs
NyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykK
LSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBv
cC5jb20pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNzYxLDM0ICs3NjEsMjQgQEAgSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQqIGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChjb25zdCBQb3NpdGlvbiYgcG9z
aXRpb24pCiAgICAgcmV0dXJuIGFuY2VzdG9yICYmIGFuY2VzdG9yLT5pc1RleHRGaWVsZCgpID8g
ZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGFuY2VzdG9yLmdldCgpKSA6IG51
bGxwdHI7CiB9CiAKLXN0YXRpYyBjb25zdCBFbGVtZW50KiBwYXJlbnRIVE1MRWxlbWVudChjb25z
dCBFbGVtZW50KiBlbGVtZW50KQotewotICAgIHdoaWxlIChlbGVtZW50KSB7Ci0gICAgICAgIGVs
ZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7Ci0gICAgICAgIGlmIChlbGVtZW50ICYm
IGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50Owot
ICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQogU3RyaW5nIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50OjpkaXJlY3Rpb25Gb3JGb3JtRGF0YSgpIGNvbnN0CiB7Ci0gICAgZm9yIChjb25zdCBFbGVt
ZW50KiBlbGVtZW50ID0gdGhpczsgZWxlbWVudDsgZWxlbWVudCA9IHBhcmVudEhUTUxFbGVtZW50
KGVsZW1lbnQpKSB7Ci0gICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIGRpckF0dHJpYnV0ZVZhbHVl
ID0gZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkaXJBdHRyKTsKLSAg
ICAgICAgaWYgKGRpckF0dHJpYnV0ZVZhbHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpckF0dHJp
YnV0ZVZhbHVlLCAicnRsIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyQXR0
cmlidXRlVmFsdWUsICJsdHIiKSkKLSAgICAgICAgICAgIHJldHVybiBkaXJBdHRyaWJ1dGVWYWx1
ZTsKLQotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyQXR0cmli
dXRlVmFsdWUsICJhdXRvIikpIHsKLSAgICAgICAgICAgIGJvb2wgaXNBdXRvOwotICAgICAgICAg
ICAgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTEVs
ZW1lbnQqPihlbGVtZW50KS0+ZGlyZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUoaXNB
dXRvKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246
OlJUTCA/ICJydGwiIDogImx0ciI7CisgICAgYXV0byBkaXJlY3Rpb24gPSBbdGhpc10geworICAg
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEhUTUxFbGVtZW50PigqdGhp
cykpIHsKKyAgICAgICAgICAgIGF1dG8mIHZhbHVlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKGRpckF0dHIpOworICAgICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAicnRsIikpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRl
eHREaXJlY3Rpb246OlJUTDsKKyAgICAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZSh2YWx1ZSwgImx0ciIpKQorICAgICAgICAgICAgICAgIHJldHVybiBUZXh0RGlyZWN0
aW9uOjpMVFI7CisgICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
dmFsdWUsICJhdXRvIikpIHsKKyAgICAgICAgICAgICAgICBib29sIGlzQXV0bzsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudC5kaXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0
ZShpc0F1dG8pOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQorICAgICAgICByZXR1
cm4gVGV4dERpcmVjdGlvbjo6TFRSOworICAgIH0oKTsKIAotICAgIHJldHVybiAibHRyIjsKKyAg
ICByZXR1cm4gZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/ICJsdHIiX3MgOiAicnRs
Il9zOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6
c2V0TWF4TGVuZ3RoKGludCBtYXhMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0xhYmVsc05vZGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxp
c3QuY3BwCmluZGV4IGQ0MTAxNzg2ZmIwMDVmMjY4N2IxOTBhZjM3MzFiY2Q1NTdkMjBlMGEuLjkx
OWEyOGVkNjA5M2ZkYmViMTFkMjkxNjA0NjQyODE2ZjFlZTExZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTGFiZWxzTm9kZUxpc3QuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAx
OTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50
dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGly
ayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDcs
IDIwMDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEwIE5va2lhIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CkBAIC0yNCw5ICsyNCw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGFiZWxz
Tm9kZUxpc3QuaCIKIAotI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTGFiZWxF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTGFiZWxhYmxlRWxl
bWVudC5oIgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CiAKQEAgLTM2LDExICszNiwxNiBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTGFiZWxzTm9kZUxpc3QpOwogCi1M
YWJlbHNOb2RlTGlzdDo6TGFiZWxzTm9kZUxpc3QoTGFiZWxhYmxlRWxlbWVudCYgZm9yTm9kZSkK
LSAgICA6IENhY2hlZExpdmVOb2RlTGlzdChmb3JOb2RlLCBJbnZhbGlkYXRlT25Gb3JUeXBlQXR0
ckNoYW5nZSkKK0xhYmVsc05vZGVMaXN0OjpMYWJlbHNOb2RlTGlzdChMYWJlbGFibGVFbGVtZW50
JiBlbGVtZW50KQorICAgIDogQ2FjaGVkTGl2ZU5vZGVMaXN0KGVsZW1lbnQsIEludmFsaWRhdGVP
bkZvclR5cGVBdHRyQ2hhbmdlKQogewogfQogCitSZWY8TGFiZWxzTm9kZUxpc3Q+IExhYmVsc05v
ZGVMaXN0OjpjcmVhdGUoTGFiZWxhYmxlRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0cmlu
ZyYpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTGFiZWxzTm9kZUxpc3QoZWxlbWVudCkp
OworfQorCiBMYWJlbHNOb2RlTGlzdDo6fkxhYmVsc05vZGVMaXN0KCkKIHsKICAgICBvd25lck5v
ZGUoKS5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVXaXRoQXRvbU5hbWUoKnRoaXMsIHN0YXJBdG9t
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oCmluZGV4IGY1MzlkNzliMGNhYTA1
MDAzMDQ4ODhkYzQ2MTc3MmFmN2RiMTYyODIuLjgwZDk3N2ZhY2Q3NjJkYWE4ZjMwOGFmMGRiM2I2
NTBlYWNjNzNlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxp
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmgKQEAgLTIsNyAr
Miw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI0LDI1ICsyNCwyMyBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIkxhYmVsYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJMaXZlTm9kZUxpc3Qu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBMYWJlbGFibGVFbGVtZW50OworCiBj
bGFzcyBMYWJlbHNOb2RlTGlzdCBmaW5hbCA6IHB1YmxpYyBDYWNoZWRMaXZlTm9kZUxpc3Q8TGFi
ZWxzTm9kZUxpc3Q+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKExhYmVsc05vZGVMaXN0
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPExhYmVsc05vZGVMaXN0PiBjcmVhdGUoTGFiZWxh
YmxlRWxlbWVudCYgZm9yTm9kZSwgY29uc3QgQXRvbVN0cmluZyYpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBMYWJlbHNOb2RlTGlzdChmb3JOb2RlKSk7Ci0gICAgfQotICAg
IH5MYWJlbHNOb2RlTGlzdCgpOworICAgIHN0YXRpYyBSZWY8TGFiZWxzTm9kZUxpc3Q+IGNyZWF0
ZShMYWJlbGFibGVFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYpOworICAgIHZpcnR1YWwgfkxh
YmVsc05vZGVMaXN0KCk7CiAKLSAgICBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25z
dCBvdmVycmlkZTsKLSAgICBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25z
dCBmaW5hbDsKKyAgICBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBMYWJlbHNOb2RlTGlzdChMYWJl
bGFibGVFbGVtZW50JiBmb3JOb2RlKTsKKyAgICBleHBsaWNpdCBMYWJlbHNOb2RlTGlzdChMYWJl
bGFibGVFbGVtZW50Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYURvY3VtZW50LmNwcAppbmRleCAwNGRlNzUxM2NhYzQ4MmJmNzYwYjRlNGM2ZmZh
MDJlYzJlNWI2N2Y3Li4yNGU0MGMyYzZkMzMxMTQ5M2I2MTdjNjVjZGYyZjU4YTg1MTIyMmRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDdXN0b21IZWFkZXJGaWVsZHMuaCIK
ICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyLmgiCkBAIC01MSw3ICs1Miw2IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9O
b2RlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuY3BwCmluZGV4
IDk0NzBlYTI5YWI1Nzc0ODgwYzYzYjNiZjQ3NGVkODliZmY3YmIzNDYuLmRkMmM4MWU0NGIzY2Fm
MTljYzJjYmVjNGI0NjY3MzU4ZmNhMmM1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUmFkaW9Ob2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVM
aXN0LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTIgTW90b3Jv
bGEgTW9iaWxpdHksIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIkhUTUxGb3JtRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVSYXJl
RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC00MywxNiArNDIs
MjEgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJhZGlvTm9kZUxpc3QpOwogUmFkaW9O
b2RlTGlzdDo6UmFkaW9Ob2RlTGlzdChDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRv
bVN0cmluZyYgbmFtZSkKICAgICA6IENhY2hlZExpdmVOb2RlTGlzdChyb290Tm9kZSwgSW52YWxp
ZGF0ZUZvckZvcm1Db250cm9scykKICAgICAsIG1fbmFtZShuYW1lKQotICAgICwgbV9pc1Jvb3Rl
ZEF0RG9jdW1lbnQoaXM8SFRNTEZvcm1FbGVtZW50Pihvd25lck5vZGUoKSkpCisgICAgLCBtX2lz
Um9vdGVkQXREb2N1bWVudChpczxIVE1MRm9ybUVsZW1lbnQ+KHJvb3ROb2RlKSkKIHsKIH0KIAor
UmVmPFJhZGlvTm9kZUxpc3Q+IFJhZGlvTm9kZUxpc3Q6OmNyZWF0ZShDb250YWluZXJOb2RlJiBy
b290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSYWRpb05vZGVMaXN0KHJvb3ROb2RlLCBuYW1lKSk7Cit9CisKIFJhZGlvTm9kZUxpc3Q6
On5SYWRpb05vZGVMaXN0KCkKIHsKICAgICBvd25lck5vZGUoKS5ub2RlTGlzdHMoKS0+cmVtb3Zl
Q2FjaGVXaXRoQXRvbU5hbWUoKnRoaXMsIG1fbmFtZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVm
UHRyPEhUTUxJbnB1dEVsZW1lbnQ+IHRvUmFkaW9CdXR0b25JbnB1dEVsZW1lbnQoSFRNTEVsZW1l
bnQmIGVsZW1lbnQpCitzdGF0aWMgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IG5vbkVtcHR5UmFk
aW9CdXR0b24oRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1l
bnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY3LDEwICs3MSwxMCBA
QCBTdHJpbmcgUmFkaW9Ob2RlTGlzdDo6dmFsdWUoKSBjb25zdAogewogICAgIGF1dG8gbGVuZ3Ro
ID0gdGhpcy0+bGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7Ci0gICAgICAgIGF1dG8gaW5wdXRFbGVtZW50ID0gdG9SYWRpb0J1dHRvbklucHV0RWxl
bWVudCgqaXRlbShpKSk7Ci0gICAgICAgIGlmICghaW5wdXRFbGVtZW50IHx8ICFpbnB1dEVsZW1l
bnQtPmNoZWNrZWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICByZXR1cm4gaW5w
dXRFbGVtZW50LT52YWx1ZSgpOworICAgICAgICBpZiAoYXV0byBidXR0b24gPSBub25FbXB0eVJh
ZGlvQnV0dG9uKCppdGVtKGkpKSkgeworICAgICAgICAgICAgaWYgKGJ1dHRvbi0+Y2hlY2tlZCgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBidXR0b24tPnZhbHVlKCk7CisgICAgICAgIH0KICAg
ICB9CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpAQCAtNzksNDAgKzgzLDM0IEBAIHZvaWQgUmFk
aW9Ob2RlTGlzdDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhdXRvIGxl
bmd0aCA9IHRoaXMtPmxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgewotICAgICAgICBhdXRvIGlucHV0RWxlbWVudCA9IHRvUmFkaW9CdXR0b25JbnB1
dEVsZW1lbnQoKml0ZW0oaSkpOwotICAgICAgICBpZiAoIWlucHV0RWxlbWVudCB8fCBpbnB1dEVs
ZW1lbnQtPnZhbHVlKCkgIT0gdmFsdWUpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
aW5wdXRFbGVtZW50LT5zZXRDaGVja2VkKHRydWUpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IGlmIChhdXRvIGJ1dHRvbiA9IG5vbkVtcHR5UmFkaW9CdXR0b24oKml0ZW0oaSkpKSB7CisgICAg
ICAgICAgICBpZiAoYnV0dG9uLT52YWx1ZSgpID09IHZhbHVlKSB7CisgICAgICAgICAgICAgICAg
YnV0dG9uLT5zZXRDaGVja2VkKHRydWUpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIH0KIAotYm9vbCBSYWRpb05vZGVMaXN0OjpjaGVj
a0VsZW1lbnRNYXRjaGVzUmFkaW9Ob2RlTGlzdEZpbHRlcihjb25zdCBFbGVtZW50JiB0ZXN0RWxl
bWVudCkgY29uc3QKK2Jvb2wgUmFkaW9Ob2RlTGlzdDo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYg
ZWxlbWVudCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaXM8SFRNTE9iamVjdEVsZW1lbnQ+KHRlc3RF
bGVtZW50KSB8fCBpczxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Pih0ZXN0RWxlbWVudCkpOworICAg
IGlmICghaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpICYmICFpczxIVE1MRm9ybUNvbnRy
b2xFbGVtZW50PihlbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlz
PEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+
KGVsZW1lbnQpLmlzSW1hZ2VCdXR0b24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
aWYgKGlzPEhUTUxGb3JtRWxlbWVudD4ob3duZXJOb2RlKCkpKSB7Ci0gICAgICAgIFJlZlB0cjxI
VE1MRm9ybUVsZW1lbnQ+IGZvcm1FbGVtZW50OwotICAgICAgICBpZiAodGVzdEVsZW1lbnQuaGFz
VGFnTmFtZShvYmplY3RUYWcpKQotICAgICAgICAgICAgZm9ybUVsZW1lbnQgPSBkb3duY2FzdDxI
VE1MT2JqZWN0RWxlbWVudD4odGVzdEVsZW1lbnQpLmZvcm0oKTsKKyAgICAgICAgUmVmUHRyPEhU
TUxGb3JtRWxlbWVudD4gZm9ybTsKKyAgICAgICAgaWYgKGlzPEhUTUxPYmplY3RFbGVtZW50Pihl
bGVtZW50KSkKKyAgICAgICAgICAgIGZvcm0gPSBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4o
ZWxlbWVudCkuZm9ybSgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmb3JtRWxlbWVudCA9
IGRvd25jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KHRlc3RFbGVtZW50KS5mb3JtKCk7Ci0g
ICAgICAgIGlmICghZm9ybUVsZW1lbnQgfHwgZm9ybUVsZW1lbnQgIT0gJm93bmVyTm9kZSgpKQor
ICAgICAgICAgICAgZm9ybSA9IGRvd25jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1l
bnQpLmZvcm0oKTsKKyAgICAgICAgaWYgKCFmb3JtIHx8IGZvcm0gIT0gJm93bmVyTm9kZSgpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiB0ZXN0RWxlbWVu
dC5nZXRJZEF0dHJpYnV0ZSgpID09IG1fbmFtZSB8fCB0ZXN0RWxlbWVudC5nZXROYW1lQXR0cmli
dXRlKCkgPT0gbV9uYW1lOworICAgIHJldHVybiBlbGVtZW50LmdldElkQXR0cmlidXRlKCkgPT0g
bV9uYW1lIHx8IGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0ZSgpID09IG1fbmFtZTsKIH0KIAotYm9v
bCBSYWRpb05vZGVMaXN0OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JiB0ZXN0RWxlbWVudCkgY29u
c3QKLXsKLSAgICBpZiAoIWlzPEhUTUxPYmplY3RFbGVtZW50Pih0ZXN0RWxlbWVudCkgJiYgIWlz
PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KHRlc3RFbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KHRlc3RFbGVtZW50KSAmJiBkb3du
Y2FzdDxIVE1MSW5wdXRFbGVtZW50Pih0ZXN0RWxlbWVudCkuaXNJbWFnZUJ1dHRvbigpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gY2hlY2tFbGVtZW50TWF0Y2hlc1JhZGlv
Tm9kZUxpc3RGaWx0ZXIodGVzdEVsZW1lbnQpOwotfQotCi19IC8vIG5hbXNwYWNlCi0KK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9O
b2RlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmgKaW5kZXggYTMw
Mjc2MzMwYzdmZGI2Y2NmNjJiMjE4ZTdiMTcyZDAyM2Q4YTZhMy4uNjQ0NzdjODEyNThmYjFiNzE3
ZjNkZDYyZjliNWQ4M2JhYWU4ZjNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9S
YWRpb05vZGVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmgK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDEyIE1vdG9yb2xhIE1vYmls
aXR5LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNiw0MSArMjYsMjYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJI
VE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkxpdmVOb2RlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSYWRpb05v
ZGVMaXN0IGZpbmFsIDogcHVibGljIENhY2hlZExpdmVOb2RlTGlzdDxSYWRpb05vZGVMaXN0PiB7
CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChSYWRpb05vZGVMaXN0KTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFJhZGlvTm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9k
ZSwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJhZGlvTm9kZUxpc3Qocm9vdE5vZGUsIG5hbWUpKTsKLSAgICB9Ci0KKyAgICBzdGF0
aWMgUmVmPFJhZGlvTm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29u
c3QgQXRvbVN0cmluZyYgbmFtZSk7CiAgICAgdmlydHVhbCB+UmFkaW9Ob2RlTGlzdCgpOwogCi0g
ICAgSFRNTEVsZW1lbnQqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCBvdmVycmlkZTsKLQog
ICAgIFN0cmluZyB2YWx1ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5n
Jik7Ci0KLSAgICBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdCBvdmVycmlkZTsK
LSAgICBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
aXNSb290ZWRBdERvY3VtZW50OyB9CisgICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50Jikg
Y29uc3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgUmFkaW9Ob2RlTGlzdChDb250YWluZXJOb2Rl
JiwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSk7Ci0gICAgYm9vbCBjaGVja0VsZW1lbnRNYXRjaGVz
UmFkaW9Ob2RlTGlzdEZpbHRlcihjb25zdCBFbGVtZW50JikgY29uc3Q7CisgICAgYm9vbCBpc1Jv
b3RlZEF0RG9jdW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzUm9vdGVkQXREb2N1bWVu
dDsgfQogCiAgICAgQXRvbVN0cmluZyBtX25hbWU7CiAgICAgYm9vbCBtX2lzUm9vdGVkQXREb2N1
bWVudDsKIH07CiAKLWlubGluZSBIVE1MRWxlbWVudCogUmFkaW9Ob2RlTGlzdDo6aXRlbSh1bnNp
Z25lZCBvZmZzZXQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxFbGVtZW50PihD
YWNoZWRMaXZlTm9kZUxpc3Q8UmFkaW9Ob2RlTGlzdD46Oml0ZW0ob2Zmc2V0KSk7Ci19Ci0KLX0g
Ly8gbmFtZXBzYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1JhZGlvTm9kZUxpc3QuaWRsCmluZGV4IDIzNGQ0NTUyZjYyNDkzNDYxZjA2ZmExZDUyNjNi
Mzg1YTYyYTY5OTEuLmYyMTcyMDg5NTM0YWJlM2VhZDEwYTQ4ZDEzNjA2MWQ3NGFjNWZiZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmlkbApAQCAtMjcsNiArMjcsNCBAQAogICAg
IEpTR2VuZXJhdGVUb0pTT2JqZWN0LAogXSBpbnRlcmZhY2UgUmFkaW9Ob2RlTGlzdCA6IE5vZGVM
aXN0IHsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhbHVlOwotCi0gICAgZ2V0dGVyIEhUTUxF
bGVtZW50ICh1bnNpZ25lZCBsb25nIGluZGV4KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRGaWVsZElucHV0VHlwZS5jcHAKaW5kZXggZmRiOGUzMGZmZWM5YmIwOWFjZTZiMjllYzZhMzAx
YTM5MGVlZDU4MS4uMDJlZmY0OGYzODhmMTgwZGJhOTRhMTE4MGNlNTFjMjI0YTIxY2NhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTg2Nyw2
ICs4NjcsOCBAQCBJbnRSZWN0IFRleHRGaWVsZElucHV0VHlwZTo6ZWxlbWVudFJlY3RJblJvb3RW
aWV3Q29vcmRpbmF0ZXMoKSBjb25zdAogCiBWZWN0b3I8U3RyaW5nPiBUZXh0RmllbGRJbnB1dFR5
cGU6OnN1Z2dlc3Rpb25zKCkKIHsKKyAgICAvLyBGSVhNRTogU3VnZ2VzdGlvbnMgYXJlICJ0eXBp
bmcgY29tcGxldGlvbnMiIGFuZCBzbyBzaG91bGQgcHJvYmFibHkgdXNlIHRoZSBmaW5kUGxhaW5U
ZXh0IGFsZ29yaXRobSByYXRoZXIgdGhhbiB0aGUgc2ltcGxpc3RpYyAiaWdub3JpbmcgQVNDSUkg
Y2FzZSIgcnVsZXMuCisKICAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uczsKICAgICBWZWN0
b3I8U3RyaW5nPiBtYXRjaGVzQ29udGFpbmluZ1ZhbHVlOwogCkBAIC04NzYsMTIgKzg3OCwxMSBA
QCBWZWN0b3I8U3RyaW5nPiBUZXh0RmllbGRJbnB1dFR5cGU6OnN1Z2dlc3Rpb25zKCkKICAgICAg
ICAgcmV0dXJuIG1fY2FjaGVkU3VnZ2VzdGlvbnMuc2Vjb25kOwogCiAgICAgaWYgKGF1dG8gZGF0
YUxpc3QgPSBlbGVtZW50KCktPmRhdGFMaXN0KCkpIHsKLSAgICAgICAgUmVmPEhUTUxDb2xsZWN0
aW9uPiBvcHRpb25zID0gZGF0YUxpc3QtPm9wdGlvbnMoKTsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgYXV0byogb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KG9wdGlv
bnMtPml0ZW0oaSkpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghZWxlbWVudCgpLT5pc1ZhbGlk
VmFsdWUob3B0aW9uLT52YWx1ZSgpKSkKKyAgICAgICAgZm9yIChhdXRvJiBvcHRpb24gOiBkYXRh
TGlzdC0+c3VnZ2VzdGlvbnMoKSkgeworICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gb3B0aW9u
LnZhbHVlKCk7CisgICAgICAgICAgICBpZiAoIWVsZW1lbnQoKS0+aXNWYWxpZFZhbHVlKHZhbHVl
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgU3RyaW5nIHZhbHVl
ID0gc2FuaXRpemVWYWx1ZShvcHRpb24tPnZhbHVlKCkpOworICAgICAgICAgICAgdmFsdWUgPSBz
YW5pdGl6ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgICAgIGlmIChlbGVtZW50VmFsdWUuaXNFbXB0
eSgpKQogICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zLmFwcGVuZCh2YWx1ZSk7CiAgICAgICAg
ICAgICBlbHNlIGlmICh2YWx1ZS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoZWxlbWVudFZh
bHVlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCBl
NWRmM2MzYjc4NjZlYTlmZDQzZGFjY2Y0YTQ2MjJiZGI2NDg5NDIyLi5mY2U1OTI2YWI1ZWZhNWRh
NWNkNDQ3NGQxNmVlYzJkODkyNzBlYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3
b3Jkcy5oIgogI2luY2x1ZGUgIkRPTVJlY3QuaCIKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1
ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAppbmRleCBlMWUyM2E3NmE0ZDk0NmY5ZWEyN2Y2MjZhMjJiMmNjNzc4
YTk0ZDMxLi40NDgzZGY3MDAzZmIxZWQ1NDk2ZGNhYmIyMzAzZWFhNTUwYzdkZmUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMzIsMTAgKzMyLDggQEAKICNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU3Bh
Y2VTcGxpdFN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTcwLDcgKzY4LDcgQEAgRXhjZXB0aW9uT3I8VmVjdG9yPFJl
ZjxOb2RlPj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0RWxlbWVudHNC
eUMKIAogICAgIFZlY3RvcjxSZWY8Tm9kZT4+IG5vZGVzOwogCi0gICAgZm9yIChFbGVtZW50JiBl
bGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGlzPENvbnRhaW5lck5vZGU+KGNvbnRhaW5lcikg
PyBkb3duY2FzdDxDb250YWluZXJOb2RlPigqY29udGFpbmVyKSA6IGRvY3VtZW50KSkgeworICAg
IGZvciAoRWxlbWVudCYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGlzPENv
bnRhaW5lck5vZGU+KGNvbnRhaW5lcikgPyBkb3duY2FzdDxDb250YWluZXJOb2RlPigqY29udGFp
bmVyKSA6IGRvY3VtZW50KSkgewogICAgICAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9
IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUoZWxlbWVudCkpIHsKICAgICAgICAgICAgIGlmIChh
eE9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCkgPT0gcm9sZSkKICAgICAgICAgICAgICAgICBu
b2Rlcy5hcHBlbmQoZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDI5MzBiNDVmOGYyMDc1MWU4NTZj
ZGEzZTA1MTg5YWE0NDRlMTg1NTEuLmFjZTVmOWFjNTNjYmUyNmZkM2M0ZDlkNGYyMjQ5NGZkODA2
NWE1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC01MDksMjAgKzUwOSwxOCBAQCB2b2lkIEluc3BlY3RvckNT
U0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGludCBubwogICAgICAgICAvLyBJbmhlcml0ZWQgc3R5bGVzLgogICAgICAgICBpZiAoIWluY2x1
ZGVJbmhlcml0ZWQgfHwgKmluY2x1ZGVJbmhlcml0ZWQpIHsKICAgICAgICAgICAgIGF1dG8gZW50
cmllcyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRT
dHlsZUVudHJ5Pjo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBFbGVtZW50KiBwYXJlbnRFbGVtZW50
ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwotICAgICAgICAgICAgd2hpbGUgKHBhcmVudEVs
ZW1lbnQpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBwYXJlbnRTdHlsZVJlc29sdmVyID0gcGFy
ZW50RWxlbWVudC0+c3R5bGVSZXNvbHZlcigpOwotICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50
TWF0Y2hlZFJ1bGVzID0gcGFyZW50U3R5bGVSZXNvbHZlci5zdHlsZVJ1bGVzRm9yRWxlbWVudChw
YXJlbnRFbGVtZW50LCBTdHlsZTo6UmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKKyAgICAgICAgICAg
IGZvciAoYXV0byYgYW5jZXN0b3IgOiBhbmNlc3RvcnNPZlR5cGU8RWxlbWVudD4oKmVsZW1lbnQp
KSB7CisgICAgICAgICAgICAgICAgYXV0byYgcGFyZW50U3R5bGVSZXNvbHZlciA9IGFuY2VzdG9y
LnN0eWxlUmVzb2x2ZXIoKTsKKyAgICAgICAgICAgICAgICBhdXRvIHBhcmVudE1hdGNoZWRSdWxl
cyA9IHBhcmVudFN0eWxlUmVzb2x2ZXIuc3R5bGVSdWxlc0ZvckVsZW1lbnQoJmFuY2VzdG9yLCBT
dHlsZTo6UmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKICAgICAgICAgICAgICAgICBhdXRvIGVudHJ5
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5OjpjcmVhdGUo
KQotICAgICAgICAgICAgICAgICAgICAuc2V0TWF0Y2hlZENTU1J1bGVzKGJ1aWxkQXJyYXlGb3JN
YXRjaGVkUnVsZUxpc3QocGFyZW50TWF0Y2hlZFJ1bGVzLCBzdHlsZVJlc29sdmVyLCAqcGFyZW50
RWxlbWVudCwgUHNldWRvSWQ6Ok5vbmUpKQorICAgICAgICAgICAgICAgICAgICAuc2V0TWF0Y2hl
ZENTU1J1bGVzKGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QocGFyZW50TWF0Y2hlZFJ1bGVz
LCBzdHlsZVJlc29sdmVyLCBhbmNlc3RvciwgUHNldWRvSWQ6Ok5vbmUpKQogICAgICAgICAgICAg
ICAgICAgICAucmVsZWFzZSgpOwotICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZWRFbGVtZW50
PigqcGFyZW50RWxlbWVudCkgJiYgZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKnBhcmVudEVsZW1l
bnQpLmNzc29tU3R5bGUoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvJiBz
dHlsZVNoZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+
KCpwYXJlbnRFbGVtZW50KSk7CisgICAgICAgICAgICAgICAgaWYgKGlzPFN0eWxlZEVsZW1lbnQ+
KGFuY2VzdG9yKSAmJiBkb3duY2FzdDxTdHlsZWRFbGVtZW50PihhbmNlc3RvcikuY3Nzb21TdHls
ZSgpLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlU2hlZXQgPSBh
c0luc3BlY3RvclN0eWxlU2hlZXQoZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oYW5jZXN0b3IpKTsK
ICAgICAgICAgICAgICAgICAgICAgZW50cnktPnNldElubGluZVN0eWxlKHN0eWxlU2hlZXQuYnVp
bGRPYmplY3RGb3JTdHlsZShzdHlsZVNoZWV0LnN0eWxlRm9ySWQoSW5zcGVjdG9yQ1NTSWQoc3R5
bGVTaGVldC5pZCgpLCAwKSkpKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICBlbnRyaWVzLT5hZGRJdGVtKFdURk1vdmUoZW50cnkpKTsKLSAgICAgICAgICAgICAgICBwYXJl
bnRFbGVtZW50ID0gcGFyZW50RWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpbmhlcml0ZWRFbnRyaWVzID0gV1RGTW92ZShlbnRyaWVzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKaW5kZXggMGY0NmEzMDMzYWVmNDAwN2Y2ZWI4MzdhNjEwNWYwNWEwYzU5MDY3Zi4uZDJj
YTViYmUxMDlhYWFkMTgyYmFlMTg1YzRkNTJkOGFhZWNkYTg0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9zZXBoIFBlY29yYXJv
CiAgKgpAQCAtMTExNCw3ICsxMTE0LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aW5zcGVj
dChOb2RlKiBpbnNwZWN0ZWROb2RlKQogICAgIFJlZlB0cjxOb2RlPiBub2RlID0gaW5zcGVjdGVk
Tm9kZTsKICAgICBzZXRTZWFyY2hpbmdGb3JOb2RlKGlnbm9yZWQsIGZhbHNlLCBudWxscHRyLCBm
YWxzZSk7CiAKLSAgICBpZiAobm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpFTEVNRU5UX05PREUg
JiYgbm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9OT0RFKQorICAgIGlmICghbm9k
ZS0+aXNFbGVtZW50Tm9kZSgpICYmICFub2RlLT5pc0RvY3VtZW50Tm9kZSgpKQogICAgICAgICBu
b2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIG1fbm9kZVRvRm9jdXMgPSBub2RlOwogCkBA
IC0xMTU5LDcgKzExNTksNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVP
dmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVucwogdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6aGlnaGxpZ2h0TW91c2VkT3Zlck5vZGUoKQogewogICAgIE5vZGUqIG5vZGUg
PSBtX21vdXNlZE92ZXJOb2RlLmdldCgpOwotICAgIHdoaWxlIChub2RlICYmIG5vZGUtPm5vZGVU
eXBlKCkgPT0gTm9kZTo6VEVYVF9OT0RFKQorICAgIGlmIChub2RlICYmIG5vZGUtPmlzVGV4dE5v
ZGUoKSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKICAgICBpZiAobm9kZSAm
JiBtX2luc3BlY3RNb2RlSGlnaGxpZ2h0Q29uZmlnKQogICAgICAgICBtX292ZXJsYXktPmhpZ2hs
aWdodE5vZGUobm9kZSwgKm1faW5zcGVjdE1vZGVIaWdobGlnaHRDb25maWcpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDNmNDY5OWNmODMyOThmMDRl
Mjc0YWUwMGVmOTVhNTU0NzVhNjVmM2QuLjA2ZjQ2ZDRhNTY5ZDBmYTBkYzE3YmQ2NTliNjU4ODE1
NTcxNmE2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAK
QEAgLTMwLDEyICszMCwxMiBAQAogI2luY2x1ZGUgIkNhY2hlZEZvbnRDbGllbnQuaCIKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogI2lu
Y2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiV09GRkZpbGVGb3JtYXQuaCIKICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdGb250LmNwcAppbmRleCAwMTJkMmYzMWZlMWNlOTlhNzdlODU1ZmM2ZWNlZmI4NmYwNzZkZWI2
Li5jOGY5YmE1MzAwNWY4ZDdiYzkzMGQwOTZkNWYyMTNjOTM4MjVhOWVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0
YS5oIgogI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCkBAIC0zNyw3ICszOCw2IEBACiAjaW5jbHVk
ZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgotI2luY2x1ZGUgIlR5cGVkRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlNWR1RvT1RGRm9udENvbnZlcnNpb24uaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cAppbmRleCBkYWQwMDJiMTk2OGFkMGI0MjZmYjEyYjdhNjVhMGYzNzM4NmJlOGJiLi4wNTlmNDVk
NjI5ZjU4ODY1YjQwN2NjYmUxYTcyYWQyZWRmNTNkNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDctMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyNjAsNiArMTI2MCwxNSBAQCB2b2lkIERyYWdDb250cm9s
bGVyOjpiZWdpbkRyYWcoRHJhZ0l0ZW0gZHJhZ0l0ZW0sIEZyYW1lJiBmcmFtZSwgY29uc3QgSW50
UG9pbnQmCiAgICAgY2xpZW50KCkuYmVnaW5EcmFnKFdURk1vdmUoZHJhZ0l0ZW0pLCBmcmFtZSwg
bW91c2VEb3duUG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMsIG1vdXNlRHJhZ2dlZFBvaW50SW5S
b290Vmlld0Nvb3JkaW5hdGVzLCBkYXRhVHJhbnNmZXIsIGRyYWdTb3VyY2VBY3Rpb24pOwogfQog
CitzdGF0aWMgUmVmUHRyPEVsZW1lbnQ+IGNvbnRhaW5pbmdMaW5rRWxlbWVudChFbGVtZW50JiBl
bGVtZW50KQoreworICAgIGZvciAoYXV0byYgY3VycmVudEVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBl
PEVsZW1lbnQ+KGVsZW1lbnQpKSB7CisgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5pc0xpbmso
KSkKKyAgICAgICAgICAgIHJldHVybiAmY3VycmVudEVsZW1lbnQ7CisgICAgfQorICAgIHJldHVy
biBudWxscHRyOworfQorCiB2b2lkIERyYWdDb250cm9sbGVyOjpkb1N5c3RlbURyYWcoRHJhZ0lt
YWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0xvYywgY29uc3QgSW50UG9pbnQmIGV2ZW50
UG9zLCBGcmFtZSYgZnJhbWUsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIFByb21pc2VkQXR0YWNo
bWVudEluZm8mJiBwcm9taXNlZEF0dGFjaG1lbnRJbmZvKQogewogICAgIG1fZGlkSW5pdGlhdGVE
cmFnID0gdHJ1ZTsKQEAgLTEyOTYsMTggKzEzMDUsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpk
b1N5c3RlbURyYWcoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0xvYywgY29u
cwogICAgICAgICAgICAgaXRlbS5kcmFnUHJldmlld0ZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVz
ID0gZWxlbWVudC0+Ym91bmRzSW5Sb290Vmlld1NwYWNlKCk7CiAgICAgICAgIH0KIAotICAgICAg
ICBSZWZQdHI8RWxlbWVudD4gbGluazsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmlzTGluaygpKQot
ICAgICAgICAgICAgbGluayA9IGVsZW1lbnQ7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
Zm9yIChhdXRvJiBjdXJyZW50RWxlbWVudCA6IGVsZW1lbnRMaW5lYWdlKGVsZW1lbnQuZ2V0KCkp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmlzTGluaygpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGxpbmsgPSAmY3VycmVudEVsZW1lbnQ7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgICAgICBpZiAobGluaykgeworICAgICAgICBpZiAoYXV0byBsaW5rID0gY29udGFpbmluZ0xp
bmtFbGVtZW50KCplbGVtZW50KSkgewogICAgICAgICAgICAgYXV0byB0aXRsZUF0dHJpYnV0ZSA9
IGxpbmstPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp0aXRsZUF0
dHIpOwogICAgICAgICAgICAgaXRlbS50aXRsZSA9IHRpdGxlQXR0cmlidXRlLmlzRW1wdHkoKSA/
IGxpbmstPmlubmVyVGV4dCgpIDogdGl0bGVBdHRyaWJ1dGUuc3RyaW5nKCk7CiAgICAgICAgICAg
ICBpdGVtLnVybCA9IGZyYW1lLmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0Fu
ZFRyYWlsaW5nSFRNTFNwYWNlcyhsaW5rLT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0
cikpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3Jv
bGxTbmFwT2Zmc2V0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Ny
b2xsU25hcE9mZnNldHMuY3BwCmluZGV4IGQyNmNlZmU0ZjIwMjM2YzdjNDNhYzVlMjVlZTcxNmVk
ZDU0MGUxMGYuLmY4MGExODU0ODk4Y2M4NGY1ZDBlMGY2NzBiZmFmMjUzMDYwYWYxODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBP
ZmZzZXRzLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkF4aXNTY3JvbGxTbmFwT2Zm
c2V0cy5oIgogCiAjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJI
VE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGVu
Z3RoLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oCmluZGV4IDdiMzJiMzNkMzE1YWI5NWQy
YTBiZTk4ZDNlMmYwYTUwYmEwYjllZDMuLjVlZDgwMjViZTc5MDI5MjdmNWQ2NTNiOTc2OWUxMTNm
MmNhZWM4Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFMaXN0U3Vn
Z2VzdGlvbnNDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhTGlzdFN1
Z2dlc3Rpb25zQ2xpZW50LmgKQEAgLTI3LDExICsyNywxMiBAQAogCiAjaWYgRU5BQkxFKERBVEFM
SVNUX0VMRU1FTlQpCiAKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgSW50UmVjdDsKKwogY2xhc3MgRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCgpID0gZGVmYXVsdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDYwOTdiNGM2YTNl
OWViZDMxOTI5MjZmZTM5MzliOGJiNWQ3ZmVlYzUuLjI2NzQzMzUyZTQ1NzFjMWU3NDBiZmRiNjNm
MGNiNjQwYmM3ZjRjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC01NCw3ICs1NCw2IEBA
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotI2luY2x1ZGUgIkhUTUxD
b2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERhdGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgpAQCAt
MTExNywxMiArMTExNiw5IEBAIHZvaWQgUmVuZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MoY29u
c3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAgICAgIHRpY2tS
ZWdpb25TaWRlTWFyZ2luID0gdHJhY2tCb3VuZHMueSgpICsgKHRodW1iU2l6ZS53aWR0aCgpIC0g
dGlja1NpemUud2lkdGgoKSAqIHpvb21GYWN0b3IpIC8gMi4wOwogICAgICAgICB0aWNrUmVnaW9u
V2lkdGggPSB0cmFja0JvdW5kcy5oZWlnaHQoKSAtIHRodW1iU2l6ZS53aWR0aCgpOwogICAgIH0K
LSAgICBSZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC5vcHRpb25zKCk7CiAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0
KCkpOwogICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKG8uc3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvcikpOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IE5vZGUqIG5vZGUgPSBvcHRpb25zLT5pdGVtKGkpOyBpKysp
IHsKLSAgICAgICAgQVNTRVJUKGlzPEhUTUxPcHRpb25FbGVtZW50Pigqbm9kZSkpOwotICAgICAg
ICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uRWxlbWVudCA9IGRvd25jYXN0PEhUTUxPcHRpb25F
bGVtZW50Pigqbm9kZSk7CisgICAgZm9yIChhdXRvJiBvcHRpb25FbGVtZW50IDogZGF0YUxpc3Qu
c3VnZ2VzdGlvbnMoKSkgewogICAgICAgICBTdHJpbmcgdmFsdWUgPSBvcHRpb25FbGVtZW50LnZh
bHVlKCk7CiAgICAgICAgIGlmICghaW5wdXQuaXNWYWxpZFZhbHVlKHZhbHVlKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyU3VwcG9ydC5jcHAKaW5kZXggODhjYTNlNTAzNzM3MzAxNWM1MjAzMGYwNTQ4YzBmYjMzMmUx
MDc2ZC4uZmNhZjAwYzUwYmJmNjAzZWYzYTNhOWZkODM0ZDNjOTllMzMzYjk1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCkBAIC02
LDYgKzYsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJr
aXQub3JnPgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5
LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggQWRvYmUg
U3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0yNiw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZH
UmVuZGVyU3VwcG9ydC5oIgogCisjaW5jbHVkZSAiRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgpAQCAtNDgxLDYgKzQ4Myw3IEBAIHZv
aWQgU1ZHUmVuZGVyU3VwcG9ydDo6c3R5bGVDaGFuZ2VkKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
LCBjb25zdCBSZW5kZXJTdHlsZSoKIH0KIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCisK
IGJvb2wgU1ZHUmVuZGVyU3VwcG9ydDo6aXNvbGF0ZXNCbGVuZGluZyhjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIHN0eWxlLnN2Z1N0eWxlKCkuaXNvbGF0ZXNCbGVuZGlu
ZygpIHx8IHN0eWxlLmhhc0ZpbHRlcigpIHx8IHN0eWxlLmhhc0JsZW5kTW9kZSgpIHx8IHN0eWxl
Lm9wYWNpdHkoKSA8IDEuMGY7CkBAIC00OTEsMjAgKzQ5NCwxNiBAQCB2b2lkIFNWR1JlbmRlclN1
cHBvcnQ6OnVwZGF0ZU1hc2tlZEFuY2VzdG9yU2hvdWxkSXNvbGF0ZUJsZW5kaW5nKGNvbnN0IFJl
bmRlckVsZQogICAgIEFTU0VSVChyZW5kZXJlci5lbGVtZW50KCkpOwogICAgIEFTU0VSVChyZW5k
ZXJlci5lbGVtZW50KCktPmlzU1ZHRWxlbWVudCgpKTsKIAotICAgIGJvb2wgbWFza2VkQW5jZXN0
b3JTaG91bGRJc29sYXRlQmxlbmRpbmcgPSByZW5kZXJlci5zdHlsZSgpLmhhc0JsZW5kTW9kZSgp
OwotICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSByZW5kZXJlci5lbGVtZW50KCktPnBhcmVudEVs
ZW1lbnQoKTsgYW5jZXN0b3IgJiYgYW5jZXN0b3ItPmlzU1ZHRWxlbWVudCgpOyBhbmNlc3RvciA9
IGFuY2VzdG9yLT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKCFkb3duY2FzdDxTVkdF
bGVtZW50PigqYW5jZXN0b3IpLmlzU1ZHR3JhcGhpY3NFbGVtZW50KCkpCi0gICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICBjb25zdCBhdXRvKiBzdHlsZSA9IGFuY2VzdG9yLT5jb21wdXRl
ZFN0eWxlKCk7CisgICAgZm9yIChhdXRvJiBhbmNlc3RvciA6IGFuY2VzdG9yc09mVHlwZTxTVkdH
cmFwaGljc0VsZW1lbnQ+KCpyZW5kZXJlci5lbGVtZW50KCkpKSB7CisgICAgICAgIGF1dG8qIHN0
eWxlID0gYW5jZXN0b3IuY29tcHV0ZWRTdHlsZSgpOwogICAgICAgICBpZiAoIXN0eWxlIHx8ICFp
c29sYXRlc0JsZW5kaW5nKCpzdHlsZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICBpZiAoYW5jZXN0b3ItPmNvbXB1dGVkU3R5bGUoKS0+c3ZnU3R5bGUoKS5oYXNNYXNrZXIoKSkK
LSAgICAgICAgICAgIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4oKmFuY2VzdG9yKS5zZXRT
aG91bGRJc29sYXRlQmxlbmRpbmcobWFza2VkQW5jZXN0b3JTaG91bGRJc29sYXRlQmxlbmRpbmcp
OwotCisgICAgICAgIGlmIChzdHlsZS0+c3ZnU3R5bGUoKS5oYXNNYXNrZXIoKSkKKyAgICAgICAg
ICAgIGFuY2VzdG9yLnNldFNob3VsZElzb2xhdGVCbGVuZGluZyhyZW5kZXJlci5zdHlsZSgpLmhh
c0JsZW5kTW9kZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KKwogI2VuZGlmCisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKaW5kZXggNWU5OWZiYmQy
ZmUwMzg0Yjc5MGMwMDMwYzE1NmFmNmNmNTc4NDM4Mi4uNmJlZjQ0OGUzYjE0NmQ1MzljMTk3MTE3
MWMzOTZmZTdlOGRiOWM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJ
bnZhbGlkYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRv
ci5jcHAKQEAgLTE3NSw4ICsxNzUsNyBAQCB2b2lkIEludmFsaWRhdG9yOjppbnZhbGlkYXRlU3R5
bGVGb3JEZXNjZW5kYW50cyhFbGVtZW50JiByb290LCBTZWxlY3RvckZpbHRlciogZgogewogICAg
IFZlY3RvcjxFbGVtZW50KiwgMjA+IHBhcmVudFN0YWNrOwogICAgIEVsZW1lbnQqIHByZXZpb3Vz
RWxlbWVudCA9ICZyb290OwotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBkZXNjZW5kYW50c09mVHlw
ZTxFbGVtZW50Pihyb290KTsKLSAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5iZWdpbigp
LCBlbmQgPSBkZXNjZW5kYW50cy5lbmQoKTsgaXQgIT0gZW5kOykgeworICAgIGZvciAoYXV0byBp
dCA9IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KHJvb3QpLmJlZ2luKCk7IGl0OyApIHsKICAg
ICAgICAgYXV0byYgZGVzY2VuZGFudCA9ICppdDsKICAgICAgICAgYXV0byogcGFyZW50ID0gZGVz
Y2VuZGFudC5wYXJlbnRFbGVtZW50KCk7CiAgICAgICAgIGlmIChwYXJlbnRTdGFjay5pc0VtcHR5
KCkgfHwgcGFyZW50U3RhY2subGFzdCgpICE9IHBhcmVudCkgewpAQCAtMjc1LDEyICsyNzQsMTAg
QEAgdm9pZCBJbnZhbGlkYXRvcjo6aW52YWxpZGF0ZVN0eWxlV2l0aE1hdGNoRWxlbWVudChFbGVt
ZW50JiBlbGVtZW50LCBNYXRjaEVsZW1lbnQKICAgICAgICAgZm9yIChhdXRvKiBzaWJsaW5nID0g
ZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmct
Pm5leHRFbGVtZW50U2libGluZygpKQogICAgICAgICAgICAgaW52YWxpZGF0ZUlmTmVlZGVkKCpz
aWJsaW5nLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNYXRjaEVsZW1lbnQ6
OkFueVNpYmxpbmc6IHsKLSAgICAgICAgYXV0byBwYXJlbnRDaGlsZHJlbiA9IGNoaWxkcmVuT2ZU
eXBlPEVsZW1lbnQ+KCplbGVtZW50LnBhcmVudE5vZGUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYg
cGFyZW50Q2hpbGQgOiBwYXJlbnRDaGlsZHJlbikKKyAgICBjYXNlIE1hdGNoRWxlbWVudDo6QW55
U2libGluZzoKKyAgICAgICAgZm9yIChhdXRvJiBwYXJlbnRDaGlsZCA6IGNoaWxkcmVuT2ZUeXBl
PEVsZW1lbnQ+KCplbGVtZW50LnBhcmVudE5vZGUoKSkpCiAgICAgICAgICAgICBpbnZhbGlkYXRl
SWZOZWVkZWQocGFyZW50Q2hpbGQsIG51bGxwdHIpOwogICAgICAgICBicmVhazsKLSAgICB9CiAg
ICAgY2FzZSBNYXRjaEVsZW1lbnQ6OlBhcmVudFNpYmxpbmc6CiAgICAgICAgIGZvciAoYXV0byog
c2libGluZyA9IGVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcg
PSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkgewogICAgICAgICAgICAgYXV0byBzaWJs
aW5nQ2hpbGRyZW4gPSBjaGlsZHJlbk9mVHlwZTxFbGVtZW50Pigqc2libGluZyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGYzZjM2MjE4M2Q1MDYxNzRhNDY2NjQ2
MWM3MTdiZTc5YjNlNjFmMTQuLjY1MWY4ZjFlMmQ3ODkyMTk5MDY1NmFmYTRmZDllNjllZGNhYzNj
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xODMsOCArMTgz
LDcgQEAgaW5saW5lIHZvaWQgUmVzb2x2ZXI6OlN0YXRlOjpzZXRQYXJlbnRTdHlsZShzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHBhcmVudFMKIAogc3RhdGljIGlubGluZSBib29sIGlzQXRT
aGFkb3dCb3VuZGFyeShjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIGF1dG8qIHBhcmVu
dE5vZGUgPSBlbGVtZW50LnBhcmVudE5vZGUoKTsKLSAgICByZXR1cm4gcGFyZW50Tm9kZSAmJiBw
YXJlbnROb2RlLT5pc1NoYWRvd1Jvb3QoKTsKKyAgICByZXR1cm4gaXM8U2hhZG93Um9vdD4oZWxl
bWVudC5wYXJlbnROb2RlKCkpOwogfQogCiBCdWlsZGVyQ29udGV4dCBSZXNvbHZlcjo6YnVpbGRl
ckNvbnRleHQoY29uc3QgU3RhdGUmIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAK
aW5kZXggOTlkYjM1OWIyMDQ2MTg0MGZjY2ExNTg4ZWUxMGY1MWVlZjE1NWY4Ni4uNmI0YjYyNTY5
MmQ3YWNhNjJmMTc5YTlhMTQzMWI5YjcyZmVlYmVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1l
bnQuY3BwCkBAIC0xMDIsOSArMTAyLDggQEAgdm9pZCBTVkdBRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIAogUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IFNWR0FFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICBpZiAocGFyZW50Tm9k
ZSgpICYmIHBhcmVudE5vZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgZG93bmNhc3Q8U1ZHRWxlbWVu
dD4oKnBhcmVudE5vZGUoKSkuaXNUZXh0Q29udGVudCgpKQorICAgIGlmIChpczxTVkdFbGVtZW50
PihwYXJlbnROb2RlKCkpICYmIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpwYXJlbnROb2RlKCkpLmlz
VGV4dENvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0lu
bGluZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKLQogICAgIHJldHVybiBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggMmZmY2JhYzUyMTFjOGEwNWFl
NDYwZDMwY2EwNDI2ZTQ2N2NlYTE4My4uMjIyNDFkYWQ0MTdmYzdlMjY4YmQ2MDdlYTUzMDdiYjJh
OTJiNDUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xhcyBa
aW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDggUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykg
MjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwOCBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSAy
MDA5IENhbWVyb24gTWNDb3JtYWNrIDxjYW1AbWNjLmlkLmF1PgogICogQ29weXJpZ2h0IChDKSAy
MDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC05MTYsMTgg
KzkxNiwxMCBAQCB2b2lkIFNWR0VsZW1lbnQ6OnVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0
aW9uKGJvb2wgaGFzUmVsYXRpdmVMZW5ndGhzLCBTVkdFbAogICAgICAgICBtX2VsZW1lbnRzV2l0
aFJlbGF0aXZlTGVuZ3Rocy5yZW1vdmUoZWxlbWVudCk7CiAgICAgfQogCi0gICAgaWYgKCFlbGVt
ZW50LT5pc1NWR0dyYXBoaWNzRWxlbWVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBG
aW5kIGZpcnN0IHN0eWxlZCBwYXJlbnQgbm9kZSwgYW5kIG5vdGlmeSBpdCB0aGF0IHdlJ3ZlIGNo
YW5nZWQgb3VyIHJlbGF0aXZlIGxlbmd0aCBzdGF0ZS4KLSAgICBhdXRvIG5vZGUgPSBtYWtlUmVm
UHRyKHBhcmVudE5vZGUoKSk7Ci0gICAgd2hpbGUgKG5vZGUpIHsKLSAgICAgICAgaWYgKCFub2Rl
LT5pc1NWR0VsZW1lbnQoKSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIC8vIFJlZ2lz
dGVyIHVzIGluIHRoZSBwYXJlbnQgZWxlbWVudCBtYXAuCi0gICAgICAgIGRvd25jYXN0PFNWR0Vs
ZW1lbnQ+KCpub2RlKS51cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihoYXNSZWxhdGl2
ZUxlbmd0aHMsIHRoaXMpOwotICAgICAgICBicmVhazsKKyAgICBpZiAoZWxlbWVudC0+aXNTVkdH
cmFwaGljc0VsZW1lbnQoKSkgeworICAgICAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFy
ZW50Tm9kZSgpKTsKKyAgICAgICAgaWYgKGlzPFNWR0VsZW1lbnQ+KHBhcmVudCkpCisgICAgICAg
ICAgICBkb3duY2FzdDxTVkdFbGVtZW50PigqcGFyZW50KS51cGRhdGVSZWxhdGl2ZUxlbmd0aHNJ
bmZvcm1hdGlvbihoYXNSZWxhdGl2ZUxlbmd0aHMsIHRoaXMpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmgKaW5kZXggOThmY2ZmYmNhNGQ3MTI2N2U3NDVmZWRiOWIzMGU4MGQwYzli
NjJjZi4uNjM5MThhYTg4YmYxOTRhMjllNjQzMGFiMWU5OTYwYjg4Y2JlZGUxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudC5oCkBAIC0xNDUsNiArMTQ1LDggQEAgcHVibGljOgogICAgIFN0cmluZyBj
bGFzc05hbWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzTmFtZS0+Y3VycmVudFZhbHVlKCk7IH0K
ICAgICBTVkdBbmltYXRlZFN0cmluZyYgY2xhc3NOYW1lQW5pbWF0ZWQoKSB7IHJldHVybiBtX2Ns
YXNzTmFtZTsgfQogCisgICAgY29uc3QgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRv
SWQgPSBQc2V1ZG9JZDo6Tm9uZSkgZmluYWw7CisKIHByb3RlY3RlZDoKICAgICBTVkdFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgflNWR0VsZW1l
bnQoKTsKQEAgLTE3Myw4ICsxNzUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB3aWxsUmVjYWxj
U3R5bGUoU3R5bGU6OkNoYW5nZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVu
ZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBQc2V1ZG9JZDo6Tm9uZSkgZmluYWw7
Ci0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJUYXJnZXQoKSB7IH0KIAogICAgIHZvaWQgYnVpbGRQ
ZW5kaW5nUmVzb3VyY2VzSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNw
cAppbmRleCAxZTc1NTMzOTBlOWI1YmRiYTgzY2EyNjgxNmMxMjJlMTNmYzFlZGE3Li45ZGIyZWQ4
MDI4YTg3YmE2ZDY2NWE4Y2UyNDM5ZGRiNDAyMDBhMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwCkBAIC0zMzEsOCArMzMxLDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlRGlzYWxs
b3dlZEVsZW1lbnRzRnJvbVN1YnRyZWUoU1ZHRWxlbWVudCYgc3VidHJlZSkKICAgICBBU1NFUlQo
IXN1YnRyZWUuaXNDb25uZWN0ZWQoKSk7CiAKICAgICBWZWN0b3I8RWxlbWVudCo+IGRpc2FsbG93
ZWRFbGVtZW50czsKLSAgICBhdXRvIGRlc2NlbmRhbnRzID0gZGVzY2VuZGFudHNPZlR5cGU8RWxl
bWVudD4oc3VidHJlZSk7Ci0gICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMuYmVnaW4oKSwg
ZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7IGl0ICE9IGVuZDsgKSB7CisgICAgZm9yIChhdXRvIGl0
ID0gZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oc3VidHJlZSkuYmVnaW4oKTsgaXQ7ICkgewog
ICAgICAgICBpZiAoaXNEaXNhbGxvd2VkRWxlbWVudCgqaXQpKSB7CiAgICAgICAgICAgICBkaXNh
bGxvd2VkRWxlbWVudHMuYXBwZW5kKCYqaXQpOwogICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0
U2tpcHBpbmdDaGlsZHJlbigpOwpAQCAtNDUyLDkgKzQ1MSw5IEBAIHN0YXRpYyB2b2lkIGNsb25l
RGF0YUFuZENoaWxkcmVuKFNWR0VsZW1lbnQmIHJlcGxhY2VtZW50Q2xvbmUsIFNWR0VsZW1lbnQm
IG9yaWdpCiB2b2lkIFNWR1VzZUVsZW1lbnQ6OmV4cGFuZFVzZUVsZW1lbnRzSW5TaGFkb3dUcmVl
KCkgY29uc3QKIHsKICAgICBhdXRvIGRlc2NlbmRhbnRzID0gZGVzY2VuZGFudHNPZlR5cGU8U1ZH
VXNlRWxlbWVudD4oKnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSk7Ci0gICAgZm9yIChhdXRvIGl0ID0g
ZGVzY2VuZGFudHMuYmVnaW4oKSwgZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7IGl0ICE9IGVuZDsg
KSB7CisgICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMuYmVnaW4oKTsgaXQ7ICkgewogICAg
ICAgICBTVkdVc2VFbGVtZW50JiBvcmlnaW5hbENsb25lID0gKml0OwotICAgICAgICBpdCA9IGVu
ZDsgLy8gRWZmaWNpZW50bHkgcXVpZXRzIGFzc2VydGlvbnMgZHVlIHRvIHRoZSBvdXRzdGFuZGlu
ZyBpdGVyYXRvci4KKyAgICAgICAgaXQgPSB7IH07IC8vIEVmZmljaWVudGx5IHF1aWV0cyBhc3Nl
cnRpb25zIGR1ZSB0byB0aGUgb3V0c3RhbmRpbmcgaXRlcmF0b3IuCiAKICAgICAgICAgYXV0byog
dGFyZ2V0ID0gb3JpZ2luYWxDbG9uZS5maW5kVGFyZ2V0KCk7CiAKQEAgLTQ4NSw5ICs0ODQsOSBA
QCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmV4cGFuZFVzZUVsZW1lbnRzSW5TaGFkb3dUcmVlKCkgY29u
c3QKIHZvaWQgU1ZHVXNlRWxlbWVudDo6ZXhwYW5kU3ltYm9sRWxlbWVudHNJblNoYWRvd1RyZWUo
KSBjb25zdAogewogICAgIGF1dG8gZGVzY2VuZGFudHMgPSBkZXNjZW5kYW50c09mVHlwZTxTVkdT
eW1ib2xFbGVtZW50PigqdXNlckFnZW50U2hhZG93Um9vdCgpKTsKLSAgICBmb3IgKGF1dG8gaXQg
PSBkZXNjZW5kYW50cy5iZWdpbigpLCBlbmQgPSBkZXNjZW5kYW50cy5lbmQoKTsgaXQgIT0gZW5k
OyApIHsKKyAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5iZWdpbigpOyBpdDsgKSB7CiAg
ICAgICAgIFNWR1N5bWJvbEVsZW1lbnQmIG9yaWdpbmFsQ2xvbmUgPSAqaXQ7Ci0gICAgICAgIGl0
ID0gZW5kOyAvLyBFZmZpY2llbnRseSBxdWlldHMgYXNzZXJ0aW9ucyBkdWUgdG8gdGhlIG91dHN0
YW5kaW5nIGl0ZXJhdG9yLgorICAgICAgICBpdCA9IHsgfTsgLy8gRWZmaWNpZW50bHkgcXVpZXRz
IGFzc2VydGlvbnMgZHVlIHRvIHRoZSBvdXRzdGFuZGluZyBpdGVyYXRvci4KIAogICAgICAgICAv
LyBTcGVjOiBUaGUgcmVmZXJlbmNlZCAnc3ltYm9sJyBhbmQgaXRzIGNvbnRlbnRzIGFyZSBkZWVw
LWNsb25lZCBpbnRvIHRoZSBnZW5lcmF0ZWQgdHJlZSwKICAgICAgICAgLy8gd2l0aCB0aGUgZXhj
ZXB0aW9uIHRoYXQgdGhlICdzeW1ib2wnIGlzIHJlcGxhY2VkIGJ5IGFuICdzdmcnLiBUaGlzIGdl
bmVyYXRlZCAnc3ZnJyB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXIuY3BwCmluZGV4IDc3ZDk0YWZlODVlYmExNjQyNmE0MTk3ZDdmOTA1NjhjM2Mz
NmQwYWQuLjNmNzIzMTMxYTIyNjIyM2FjMGRmNmI1MGMyZDk2YTAyZTJhNzc3MGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yNzQs
MjIgKzI3NCwyNCBAQCBib29sIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21l
bnQoY29uc3QgU3RyaW5nJiBjaHVuaywgRG9jdW1lbnRGcmFnbQogCiAgICAgSGFzaE1hcDxBdG9t
U3RyaW5nLCBBdG9tU3RyaW5nPiBwcmVmaXhUb05hbWVzcGFjZU1hcDsKICAgICBBdG9tU3RyaW5n
IGRlZmF1bHROYW1lc3BhY2VVUkk7Ci0gICAgYm9vbCBzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1l
c3BhY2VVUkkgPSBmYWxzZTsKLSAgICAKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50
TGluZWFnZShjb250ZXh0RWxlbWVudCkpIHsKLSAgICAgICAgaWYgKGlzPFNWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50PihlbGVtZW50KSkKLSAgICAgICAgICAgIHN0b3BMb29raW5nRm9yRGVmYXVsdE5h
bWVzcGFjZVVSSSA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYgKCFzdG9wTG9va2luZ0ZvckRlZmF1
bHROYW1lc3BhY2VVUkkpCi0gICAgICAgICAgICBkZWZhdWx0TmFtZXNwYWNlVVJJID0gZWxlbWVu
dC5uYW1lc3BhY2VVUkkoKTsKLQotICAgICAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlcygp
KQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgZm9yIChjb25zdCBBdHRyaWJ1dGUm
IGF0dHJpYnV0ZSA6IGVsZW1lbnQuYXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKLSAgICAgICAgICAg
IGlmIChhdHRyaWJ1dGUucHJlZml4KCkgPT0geG1sbnNBdG9tKCkpCi0gICAgICAgICAgICAgICAg
cHJlZml4VG9OYW1lc3BhY2VNYXAuc2V0KGF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgYXR0cmlidXRl
LnZhbHVlKCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoIXN0b3BMb29raW5nRm9yRGVmYXVsdE5h
bWVzcGFjZVVSSSAmJiBhdHRyaWJ1dGUucHJlZml4KCkgPT0geG1sbnNBdG9tKCkpCi0gICAgICAg
ICAgICAgICAgZGVmYXVsdE5hbWVzcGFjZVVSSSA9IGF0dHJpYnV0ZS52YWx1ZSgpOworICAgIGlm
IChjb250ZXh0RWxlbWVudCkgeworICAgICAgICBib29sIHN0b3BMb29raW5nRm9yRGVmYXVsdE5h
bWVzcGFjZVVSSSA9IGZhbHNlOworCisgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVh
Z2VPZlR5cGU8RWxlbWVudD4oKmNvbnRleHRFbGVtZW50KSkgeworICAgICAgICAgICAgaWYgKGlz
PFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50PihlbGVtZW50KSkKKyAgICAgICAgICAgICAgICBzdG9w
TG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkgPSB0cnVlOworICAgICAgICAgICAgZWxzZSBp
ZiAoIXN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVSSSkKKyAgICAgICAgICAgICAgICBk
ZWZhdWx0TmFtZXNwYWNlVVJJID0gZWxlbWVudC5uYW1lc3BhY2VVUkkoKTsKKworICAgICAgICAg
ICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZXMoKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICAgICAgZm9yIChjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA6IGVsZW1l
bnQuYXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRl
LnByZWZpeCgpID09IHhtbG5zQXRvbSgpKQorICAgICAgICAgICAgICAgICAgICBwcmVmaXhUb05h
bWVzcGFjZU1hcC5zZXQoYXR0cmlidXRlLmxvY2FsTmFtZSgpLCBhdHRyaWJ1dGUudmFsdWUoKSk7
CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVzcGFj
ZVVSSSAmJiBhdHRyaWJ1dGUucHJlZml4KCkgPT0geG1sbnNBdG9tKCkpCisgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHROYW1lc3BhY2VVUkkgPSBhdHRyaWJ1dGUudmFsdWUoKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNw
cAppbmRleCAzZjViNjE4MWUwNmUwYTg0Njg4YmRhOTE2ZjEwZDg3YTYxZDE0YmU3Li42YjI3NzNl
Yzk3MzUxOGEwMWUxNDU1NDA1MjcyNWU1NTk0MDZiYzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5LmNwcApAQCAtNTU5LDEyICs1NTksMTEgQEAgc3RhdGljIFdlYkNvcmU6OkVsZW1l
bnQqIGNvbnRhaW5lckVsZW1lbnRGb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQp
CiAgICAgLy8gwqcxMy4gRWxlbWVudCBTdGF0ZS4KICAgICAvLyBodHRwczovL3czYy5naXRodWIu
aW8vd2ViZHJpdmVyL3dlYmRyaXZlci1zcGVjLmh0bWwjZGZuLWNvbnRhaW5lci4KICAgICBpZiAo
aXM8V2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKSB7Ci0gICAgICAgIGF1dG8m
IG9wdGlvbkVsZW1lbnQgPSBkb3duY2FzdDxXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudD4oZWxl
bWVudCk7CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAgICAgIGlmIChhdXRvKiBw
YXJlbnRFbGVtZW50ID0gb3B0aW9uRWxlbWVudC5vd25lckRhdGFMaXN0RWxlbWVudCgpKQorICAg
ICAgICBpZiAoYXV0byogcGFyZW50RWxlbWVudCA9IFdlYkNvcmU6OmFuY2VzdG9yc09mVHlwZTxX
ZWJDb3JlOjpIVE1MRGF0YUxpc3RFbGVtZW50PihlbGVtZW50KS5maXJzdCgpKQogICAgICAgICAg
ICAgcmV0dXJuIHBhcmVudEVsZW1lbnQ7CiAjZW5kaWYKLSAgICAgICAgaWYgKGF1dG8qIHBhcmVu
dEVsZW1lbnQgPSBvcHRpb25FbGVtZW50Lm93bmVyU2VsZWN0RWxlbWVudCgpKQorICAgICAgICBp
ZiAoYXV0byogcGFyZW50RWxlbWVudCA9IGRvd25jYXN0PFdlYkNvcmU6OkhUTUxPcHRpb25FbGVt
ZW50PihlbGVtZW50KS5vd25lclNlbGVjdEVsZW1lbnQoKSkKICAgICAgICAgICAgIHJldHVybiBw
YXJlbnRFbGVtZW50OwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFn
ZXIuY3BwCmluZGV4IGY1MTk0MWU2YjRlYzEyMTlkMmJiZGEwZmE5OTU3ZGM1MzgyN2M3OGIuLmQw
Y2ZlOWQxNzNhZDk3OGI1ODY2ZGU1ZjZiZjM0NTQyOTc4MjZkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFu
YWdlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db2xvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRWxlbWVudEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GdWxsc2NyZWVuTWFu
YWdlci5oPgpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyT2JqZWN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZXR0aW5ncy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBF
TkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogI2luY2x1ZGUgIlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggOGU0YzkzNzVkN2I4Y2MxMGZm
YTAwODAzZDQ4MjE3M2JlNWEzNTU4YS4uNTNkZTE5MTViNDczYWYzM2ZhZGIwNTUwOTkwN2VhYjBj
MzVmMDI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTc5NSw3ICs3OTUsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hv
b3NlcihDb2xvckNob29zZXJDbAogCiBzdGQ6OnVuaXF1ZV9wdHI8RGF0YUxpc3RTdWdnZXN0aW9u
UGlja2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihE
YXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlx
dWU8V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyPigmbV9wYWdlLCAmY2xpZW50KTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+KG1fcGFnZSwgY2xp
ZW50KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNr
ZXIuY3BwCmluZGV4IGFlYjg3MzdhZGQ0NzNjMDNhYjZlMTE3NTJmZjBjMjI0YzhkZTA4MTguLmIy
MGIwYWNmODhhNDlmZjUwZTM1NDE1NmY0MjFiODZhMDYxMWVmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDQ3ICszNSw0NSBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNr
ZXI6OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihXZWJQYWdlKiBwYWdlLCBEYXRhTGlzdFN1
Z2dlc3Rpb25zQ2xpZW50KiBjbGllbnQpCi0gICAgOiBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGll
bnQoY2xpZW50KQorV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpXZWJEYXRhTGlzdFN1Z2dl
c3Rpb25QaWNrZXIoV2ViUGFnZSYgcGFnZSwgV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uc0Ns
aWVudCYgY2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9wYWdlKHBhZ2Up
CiB7CiB9CiAKLVdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6fldlYkRhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlcigpIHsgfQotCi12b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6aGFu
ZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKGNvbnN0IFdURjo6U3RyaW5nJiBrZXkpCit2b2lkIFdl
YkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6aGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYga2V5KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlS2V5
ZG93bkluRGF0YUxpc3Qoa2V5KSwgbV9wYWdlLT5pZGVudGlmaWVyKCkpOworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6SGFuZGxlS2V5ZG93bkluRGF0YUxpc3Qoa2V5KSwgbV9wYWdlLmlkZW50
aWZpZXIoKSk7CiB9CiAKLXZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpkaWRTZWxl
Y3RPcHRpb24oY29uc3QgV1RGOjpTdHJpbmcmIHNlbGVjdGVkT3B0aW9uKQordm9pZCBXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpZFNlbGVjdE9wdGlvbihjb25zdCBTdHJpbmcmIHNlbGVj
dGVkT3B0aW9uKQogewotICAgIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC0+ZGlkU2VsZWN0
RGF0YUxpc3RPcHRpb24oc2VsZWN0ZWRPcHRpb24pOworICAgIG1fY2xpZW50LmRpZFNlbGVjdERh
dGFMaXN0T3B0aW9uKHNlbGVjdGVkT3B0aW9uKTsKIH0KIAogdm9pZCBXZWJEYXRhTGlzdFN1Z2dl
c3Rpb25QaWNrZXI6OmRpZENsb3NlU3VnZ2VzdGlvbnMoKQogewotICAgIG1fZGF0YUxpc3RTdWdn
ZXN0aW9uc0NsaWVudC0+ZGlkQ2xvc2VTdWdnZXN0aW9ucygpOworICAgIG1fY2xpZW50LmRpZENs
b3NlU3VnZ2VzdGlvbnMoKTsKIH0KIAogdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6
OmNsb3NlKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVuZERhdGFMaXN0U3VnZ2Vz
dGlvbnMoKSwgbV9wYWdlLT5pZGVudGlmaWVyKCkpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RW5kRGF0YUxpc3RTdWdnZXN0aW9ucygpLCBtX3BhZ2UuaWRlbnRpZmllcigpKTsKIH0KIAot
dm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpc3BsYXlXaXRoQWN0aXZhdGlvblR5
cGUoRGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUgdHlwZSkKK3ZvaWQgV2ViRGF0YUxp
c3RTdWdnZXN0aW9uUGlja2VyOjpkaXNwbGF5V2l0aEFjdGl2YXRpb25UeXBlKFdlYkNvcmU6OkRh
dGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBlIHR5cGUpCiB7Ci0gICAgaWYgKCFtX2RhdGFM
aXN0U3VnZ2VzdGlvbnNDbGllbnQtPnN1Z2dlc3Rpb25zKCkuc2l6ZSgpKSB7CisgICAgYXV0byBz
dWdnZXN0aW9ucyA9IG1fY2xpZW50LnN1Z2dlc3Rpb25zKCk7CisgICAgaWYgKHN1Z2dlc3Rpb25z
LmlzRW1wdHkoKSkgewogICAgICAgICBjbG9zZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9wYWdlLT5zZXRBY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIodGhpcyk7Cisg
ICAgbV9wYWdlLnNldEFjdGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcigqdGhpcyk7CiAKLSAg
ICBEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiBpbmZvID0geyB0eXBlLCBtX2RhdGFMaXN0
U3VnZ2VzdGlvbnNDbGllbnQtPnN1Z2dlc3Rpb25zKCksIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0Ns
aWVudC0+ZWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSB9OwotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2hvd0RhdGFMaXN0U3VnZ2VzdGlvbnMoaW5mbyksIG1fcGFnZS0+aWRl
bnRpZmllcigpKTsKKyAgICBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiBp
bmZvIHsgdHlwZSwgV1RGTW92ZShzdWdnZXN0aW9ucyksIG1fY2xpZW50LmVsZW1lbnRSZWN0SW5S
b290Vmlld0Nvb3JkaW5hdGVzKCkgfTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dE
YXRhTGlzdFN1Z2dlc3Rpb25zKGluZm8pLCBtX3BhZ2UuaWRlbnRpZmllcigpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2Vy
LmgKaW5kZXggOTcwNTM1OTg5MGI3NjYxYWY2Y2E4MDcxNzBiMzUzYjU5OGM1MGY3OS4uMTM1MTA3
MzUyMTQyOWVmODdkZWQxNDJjNDk2MTQxOTBjZDg2MzA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRh
TGlzdFN1Z2dlc3Rpb25QaWNrZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgRU5BQkxFKERBVEFMSVNU
X0VMRU1FTlQpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50OwpAQCAtMzgsMTkgKzM3LDIwIEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlOwogCi1jbGFzcyBXZWJEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXIgOiBwdWJsaWMgV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uUGlja2Vy
IHsKK2NsYXNzIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlciBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIgewogcHVibGljOgotICAgIFdlYkRhdGFMaXN0
U3VnZ2VzdGlvblBpY2tlcihXZWJQYWdlKiwgV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uc0Ns
aWVudCopOwotICAgIHZpcnR1YWwgfldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcigpOworICAg
IFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihXZWJQYWdlJiwgV2ViQ29yZTo6RGF0YUxpc3RT
dWdnZXN0aW9uc0NsaWVudCYpOwogCi0gICAgdm9pZCBoYW5kbGVLZXlkb3duV2l0aElkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTZWxlY3RPcHRpb24oY29u
c3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRDbG9zZVN1Z2dlc3Rpb25zKCk7Ci0gICAgdm9pZCBj
bG9zZSgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlzcGxheVdpdGhBY3RpdmF0aW9uVHlwZShXZWJD
b3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSkgb3ZlcnJpZGU7CisKIHByaXZh
dGU6Ci0gICAgV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCogbV9kYXRhTGlzdFN1
Z2dlc3Rpb25zQ2xpZW50OwotICAgIFdlYlBhZ2UqIG1fcGFnZTsKKyAgICB2b2lkIGhhbmRsZUtl
eWRvd25XaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3Bs
YXlXaXRoQWN0aXZhdGlvblR5cGUoV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlv
blR5cGUpIGZpbmFsOworICAgIHZvaWQgY2xvc2UoKSBmaW5hbDsKKworICAgIFdlYkNvcmU6OkRh
dGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQmIG1fY2xpZW50OworICAgIFdlYlBhZ2UmIG1fcGFnZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDJlMGE0MDU2NTg5ZTI0OTBhNTg1ZGYzZmFhOGQz
YzZlZjQxMTkyZmIuLjExZTI0N2EzYTg1MTc0ZDg2NjI0MjUyMDgxYmNlMjIyYmFmNDRhNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01
NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0VsZW1lbnRDaGlsZEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9F
dmVudEhhbmRsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lLmg+CkBAIC03MSw3ICs3Miw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9KU0VsZW1l
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRmlsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNS
YW5nZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTm9kZVRyYXZlcnNhbC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRG9jdW1lbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1JlbmRlclRyZWVBc1RleHQuaD4KQEAgLTY2NiwxNyArNjY2LDggQEAgYm9v
bCBXZWJGcmFtZTo6Y29udGFpbnNBbnlGb3JtRWxlbWVudHMoKSBjb25zdAogICAgIGlmICghbV9j
b3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+ZG9j
dW1lbnRFbGVtZW50KCk7IG5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlKSkg
ewotICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KCpub2RlKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBpZiAoaXM8SFRNTEZvcm1FbGVtZW50Pigqbm9kZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8qIGRvY3VtZW50
ID0gbV9jb3JlRnJhbWUtPmRvY3VtZW50KCk7CisgICAgcmV0dXJuIGRvY3VtZW50ICYmIGNoaWxk
cmVuT2ZUeXBlPEhUTUxGb3JtRWxlbWVudD4oKmRvY3VtZW50KS5maXJzdCgpOwogfQogCiBib29s
IFdlYkZyYW1lOjpjb250YWluc0FueUZvcm1Db250cm9scygpIGNvbnN0CkBAIC02ODQsMTQgKzY3
NSwxMiBAQCBib29sIFdlYkZyYW1lOjpjb250YWluc0FueUZvcm1Db250cm9scygpIGNvbnN0CiAg
ICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IG1fY29yZUZyYW1lLT5kb2N1bWVudCgpOworICAgIGF1dG8qIGRv
Y3VtZW50ID0gbV9jb3JlRnJhbWUtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm9yIChOb2RlKiBub2RlID0gZG9jdW1lbnQtPmRv
Y3VtZW50RWxlbWVudCgpOyBub2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSkp
IHsKLSAgICAgICAgaWYgKCFpczxFbGVtZW50Pigqbm9kZSkpCi0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKSB8fCBpczxIVE1MU2Vs
ZWN0RWxlbWVudD4oKm5vZGUpIHx8IGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KCpub2RlKSkKKyAg
ICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4oKmRvY3VtZW50KSkg
eworICAgICAgICBpZiAoaXM8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGNoaWxkKSB8fCBp
czxIVE1MU2VsZWN0RWxlbWVudD4oY2hpbGQpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggODY4M2MxMDRkYmZhMmMwNWY1ZTg0YjU5NjBmZDY4MmFlMjQ1
MWRhZi4uMmQwZmE3YTAxMjVmMDVlOTBlMDZlNWI5NTRhZWQ5ODg3Y2UyMDEyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQxMDUsOSArNDEw
NSw5IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3Im
IGNvbG9yKQogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAKLXZvaWQgV2ViUGFnZTo6
c2V0QWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBp
Y2tlciogZGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKQordm9pZCBXZWJQYWdlOjpzZXRBY3RpdmVE
YXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyJiBkYXRh
TGlzdFN1Z2dlc3Rpb25QaWNrZXIpCiB7Ci0gICAgbV9hY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXIgPSBtYWtlV2Vha1B0cihkYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIpOworICAgIG1fYWN0
aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyID0gbWFrZVdlYWtQdHIoJmRhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlcik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZGlkU2VsZWN0RGF0YUxpc3RPcHRpb24o
Y29uc3QgU3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBiMzMxMTNkYzhiZGYxMjNlMWZhNjQyMTJlNWRkZDdkNDM1
Njc1M2Y1Li5mNTE2MGZhZTcyZjI5MTA3ZDRiMzFjYTM5ZjZlOTg4OGE5NWVjN2I4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00MTYsNyArNDE2LDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICB2
b2lkIHNldEFjdGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihXZWJEYXRhTGlzdFN1Z2dlc3Rp
b25QaWNrZXIqKTsKKyAgICB2b2lkIHNldEFjdGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXImKTsKICAgICB2b2lkIGRpZFNlbGVjdERhdGFMaXN0
T3B0aW9uKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlkQ2xvc2VTdWdnZXN0aW9ucygpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCmluZGV4IDQ3MzgzNTc2Y2YwMzkzZDdhNGVkM2Y1ODc3M2MzOTkzODllZWZhZTYu
LjAxYTAyOWNjZGQyNmQ2MGFmMzkyZjM4NzQ4NGE3MjA2M2RhNmU1MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yNDk4
LDExICsyNDk4LDEyIEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4
dCgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVBdXRvY29ycmVjdGlv
bkNvbnRleHQoYXV0b2NvcnJlY3Rpb25Db250ZXh0KCkpKTsKIH0KIAotc3RhdGljIEhUTUxBbmNo
b3JFbGVtZW50KiBjb250YWluaW5nTGlua0VsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKK3N0YXRp
YyBIVE1MQW5jaG9yRWxlbWVudCogY29udGFpbmluZ0xpbmtBbmNob3JFbGVtZW50KEVsZW1lbnQm
IGVsZW1lbnQpCiB7Ci0gICAgZm9yIChhdXRvJiBjdXJyZW50RWxlbWVudCA6IGVsZW1lbnRMaW5l
YWdlKGVsZW1lbnQpKSB7Ci0gICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5pc0xpbmsoKSAmJiBp
czxIVE1MQW5jaG9yRWxlbWVudD4oY3VycmVudEVsZW1lbnQpKQotICAgICAgICAgICAgcmV0dXJu
IGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PigmY3VycmVudEVsZW1lbnQpOworICAgIC8vIEZJ
WE1FOiBUaGVyZSBpcyBjb2RlIGluIHRoZSBkcmFnIGNvbnRyb2xsZXIgdGhhdCBzdXBwb3J0cyBh
bnkgbGluaywgZXZlbiBpZiBpdCdzIG5vdCBhbiBIVE1MQW5jaG9yRWxlbWVudC4gV2h5IGlzIHRo
aXMgZGlmZmVyZW50PworICAgIGZvciAoYXV0byYgY3VycmVudEVsZW1lbnQgOiBsaW5lYWdlT2ZU
eXBlPEhUTUxBbmNob3JFbGVtZW50PihlbGVtZW50KSkgeworICAgICAgICBpZiAoY3VycmVudEVs
ZW1lbnQuaXNMaW5rKCkpCisgICAgICAgICAgICByZXR1cm4gJmN1cnJlbnRFbGVtZW50OwogICAg
IH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTI2NzIsNyArMjY3Myw3IEBAIHN0YXRpYyB2
b2lkIGVsZW1lbnRQb3NpdGlvbkluZm9ybWF0aW9uKFdlYlBhZ2UmIHBhZ2UsIEVsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0IEluCiB7CiAgICAgRWxlbWVudCogbGlua0VsZW1lbnQgPSBudWxscHRyOwog
ICAgIGlmIChlbGVtZW50LnJlbmRlcmVyKCkgJiYgZWxlbWVudC5yZW5kZXJlcigpLT5pc1JlbmRl
ckltYWdlKCkpCi0gICAgICAgIGxpbmtFbGVtZW50ID0gY29udGFpbmluZ0xpbmtFbGVtZW50KCZl
bGVtZW50KTsKKyAgICAgICAgbGlua0VsZW1lbnQgPSBjb250YWluaW5nTGlua0FuY2hvckVsZW1l
bnQoZWxlbWVudCk7CiAgICAgZWxzZSBpZiAoZWxlbWVudC5pc0xpbmsoKSkKICAgICAgICAgbGlu
a0VsZW1lbnQgPSAmZWxlbWVudDsKIApAQCAtMjkzOCw3ICsyOTM5LDcgQEAgdm9pZCBXZWJQYWdl
OjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikKICAgICAgICAgaWYgKGlz
PFJlbmRlckltYWdlPigqZWxlbWVudC5yZW5kZXJlcigpKSkgewogICAgICAgICAgICAgVVJMIHVy
bDsKICAgICAgICAgICAgIFN0cmluZyB0aXRsZTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBsaW5r
RWxlbWVudCA9IGNvbnRhaW5pbmdMaW5rRWxlbWVudCgmZWxlbWVudCkpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvKiBsaW5rRWxlbWVudCA9IGNvbnRhaW5pbmdMaW5rQW5jaG9yRWxlbWVudChlbGVt
ZW50KSkgewogICAgICAgICAgICAgICAgIHVybCA9IGxpbmtFbGVtZW50LT5ocmVmKCk7CiAgICAg
ICAgICAgICAgICAgdGl0bGUgPSBsaW5rRWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihIVE1MTmFtZXM6OnRpdGxlQXR0cik7CiAgICAgICAgICAgICAgICAgaWYgKCF0aXRs
ZS5sZW5ndGgoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01E
b2N1bWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQpp
bmRleCA1YzEzZDYzN2UxZjdmZjZmODJkOTI5NDI4ZGZiODI1MDViMzhjYWM5Li5hZGNkMDE3ZDMw
NjVlMjMyYTY3Y2E0MjU1NmYzNWM1Y2RlNmVjZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTURvY3VtZW50Lm1tCkBAIC0yNSwxMyArMjUsNiBAQAogCiAjaW1wb3J0ICJET01E
b2N1bWVudEludGVybmFsLmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvQXR0ci5oPgotI2ltcG9ydCA8
V2ViQ29yZS9DREFUQVNlY3Rpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUvQ1NTUnVsZUxpc3QuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9Db21tZW50Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50RnVsbHNjcmVlbi5oPgotI2lt
cG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2ltcG9ydCAiRE9NQWJzdHJhY3RWaWV3
SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUF0dHJJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NQ0RB
VEFTZWN0aW9uSW50ZXJuYWwuaCIKQEAgLTU3LDE1ICs1MCwyMiBAQAogI2ltcG9ydCAiRE9NU3R5
bGVTaGVldExpc3RJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NVGV4dEludGVybmFsLmgiCiAjaW1w
b3J0ICJET01UcmVlV2Fsa2VySW50ZXJuYWwuaCIKLSNpbXBvcnQgPFdlYkNvcmUvRE9NV2luZG93
Lmg+CiAjaW1wb3J0ICJET01YUGF0aEV4cHJlc3Npb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9N
WFBhdGhSZXN1bHRJbnRlcm5hbC5oIgorI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKKyNp
bXBvcnQgIk9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCisjaW1wb3J0IDxXZWJDb3JlL0F0dHIu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvQ0RBVEFTZWN0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NT
U1J1bGVMaXN0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0NTU1N0eWxlRGVjbGFyYXRpb24uaD4KKyNp
bXBvcnQgPFdlYkNvcmUvQ29tbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01XaW5kb3cuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRG
cmFnbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZ1bGxzY3JlZW4uaD4KICNpbXBv
cnQgPFdlYkNvcmUvRG9jdW1lbnRUeXBlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VsZW1lbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRXZlbnQuaD4KLSNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgi
CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxDb2xsZWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hU
TUxFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxIZWFkRWxlbWVudC5oPgpAQCAtNzMs
MTIgKzczLDExIEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL05hbWVOb2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9OYXRpdmVOb2RlRmlsdGVy
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZUl0ZXJh
dG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0Lmg+Ci0jaW1wb3J0ICJPYmpDTm9kZUZp
bHRlckNvbmRpdGlvbi5oIgogI2ltcG9ydCA8V2ViQ29yZS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
aD4KICNpbXBvcnQgPFdlYkNvcmUvUmFuZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVQcm9wZXJ0aWVzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1N0eWxlU2hlZXRMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHQuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KaW5k
ZXggMDcyOTMwZTM5NThlMjBhMTJlM2NlM2M1N2UxOTk0ZmUzZGRjMTY1ZS4uY2YxYTNjMWY4NDM3
YmQ1YmU5MjBkODg0ZTM1YWMwNTNmODlmODQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KQEAgLTMyLDcgKzMyLDYgQEAKICNp
bXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRGcmFnbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9FbGVt
ZW50Lmg+CiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgotI2ltcG9ydCA8V2ViQ29yZS9I
VE1MQ29sbGVjdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9OYW1lTm9kZUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZUxpc3QuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRmllbGRTZXRF
bGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNldEVs
ZW1lbnQubW0KaW5kZXggYTRjMWI2MDhjMTZkMjFlNTg3NzEwMTUyNjc3OWJhNjQ1NTA2OTBjMy4u
ZmQ5OTRhYjViZTE0ZWNjM2IyMTRmOTQ1MjFjOGQzMDNhOTZiOTJkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW0KQEAg
LTI1LDIxICsyNSwxMCBAQAogCiAjaW1wb3J0ICJET01IVE1MRmllbGRTZXRFbGVtZW50LmgiCiAK
LSNpbXBvcnQgIkRPTUhUTUxDb2xsZWN0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUhUTUxG
b3JtRWxlbWVudEludGVybmFsLmgiCi0jaW1wb3J0ICJET01JbnRlcm5hbC5oIgotI2ltcG9ydCAi
RE9NTm9kZUludGVybmFsLmgiCi0jaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgotI2ltcG9y
dCA8V2ViQ29yZS9IVE1MQ29sbGVjdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MRmllbGRT
ZXRFbGVtZW50Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0hUTUxGb3JtRWxlbWVudC5oPgotI2ltcG9y
dCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVmFsaWRp
dHlTdGF0ZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+Ci0jaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50Kj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZlOTZkZmRhMjBjYmQw
ODNhNWU2YjNmZjlmYjg3YWM1Zjg3YTRmMDAuLjQ0NjQ2ODlhNjA1ODBiZmIxNDAxMmNkZmViOWEx
ZTdkMGI5YWI3MTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMC0wMi0xNiAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRvcnMgaW1w
bGVtZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3QtZXhwZWN0ZWQudHh0
OiBVcGRhdGVkIGV4cGVjdGF0aW9ucy4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2RhdGFsaXN0L2Rh
dGFsaXN0Lmh0bWw6IFVwZGF0ZWQgdGVzdCBzaW5jZSB0aGUgb3B0aW9ucyBjb2xsZWN0aW9uCisg
ICAgICAgIGRvZXMgbm90IGluZGljYXRlIHdoaWNoIG9wdGlvbnMgYXJlIHN1Z2dlc3Rpb25zIGFu
ZCB3aGljaCBhcmUgbm90LiBUaGUgd2ViCisgICAgICAgIHBsYXRmb3JtIHRlc3RzIGFscmVhZHkg
aGFkIHRoaXMgcmlnaHQsIHdoaWNoIGlzIHdoeSB3ZSBoYWQgYSBmYWlsaW5nIHRlc3QgdGhlcmUu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6IFJlbW92ZWQg
c29tZSBsaW5lcyBmb3IgdGVzdCB0aGF0IGRvbid0CisgICAgICAgIGV4aXN0IGF0IHRoZSBwYXRo
cyBtZW50aW9uZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL2Zhc3QvZm9ybXMvZm9y
bS1wc2V1ZG8tdmFsaWQtc3R5bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZm9ybXMvY29uc3RyYWludHMvZm9ybS12YWxpZGF0aW9uLXdpbGxWYWxpZGF0ZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9mYXN0L2Zvcm1zL2Zvcm0tcHNl
dWRvLXZhbGlkLXN0eWxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgIEV4cGVjdCBmYWls
dXJlIG9uIHRoZSBwYXJ0cyBvZiB0aGVzZSB0ZXN0cyB0aGF0IGFyZSBzcGVjaWZpYyB0byBkYXRh
bGlzdCwgc2luY2UKKyAgICAgICAgZGF0YWxpc3QgaXMgbm90IGVuYWJsZWQgaW4gdGhlc2UgY29u
ZmlndXJhdGlvbnMuIEJlZm9yZSBub3csIHRoZSBjb2RlIHdhc24ndAorICAgICAgICBwcm9wZXJs
eSBjb25kaXRpb25hbGl6ZWQgYW5kIHNvbWUgb2YgdGhlIGRhdGFsaXN0IGJlaGF2aW9yIHdvdWxk
IGJlIGFjdGl2ZSBldmVuCisgICAgICAgIHdoZW4gdGhlIGZlYXR1cmUgd2FzIGRpc2FibGVkLiBC
ZXN0IGxvbmdlciB0ZXJtIHNvbHV0aW9uIGlzIHRvIHR1cm4gdGhpcyBmZWF0dXJlCisgICAgICAg
IG9uIGZvciBtb3JlIHBsYXRmb3JtcywgcGVyaGFwcyBhbGwgb2YgdGhlbS4gRm9yIG5vdywgbGFu
ZGVkIG5ldyBleHBlY3RlZCByZXN1bHRzCisgICAgICAgIGZvciBjYXNlcyB0aGF0IEVXUyBpbmRp
Y2F0ZWQuCisKIDIwMjAtMDItMTYgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gTW9yZSBkZWJ1ZyBidWlsZCB0aW1lb3V0cyBnYXJkZW5pbmcKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDJlNTExNTM4M2NiNDM4OTQ0OGU3ZjQ4Njg2NTUy
NGRlM2UzZmY4OWMuLjYzMmI5ZTYxMWE5MTdkN2U4MDVjMjk3NmQ2ZjBiOTZhMDQ4ZjFmNjIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAyLTE2
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpc2UgRE9NIGl0
ZXJhdG9ycyBpbXBsZW1lbnRhdGlvbiBhbmQgdXNhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzgxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2Zvcm1zL3RoZS1kYXRhbGlzdC1lbGVtZW50L2RhdGFsaXN0b3B0aW9ucy1leHBlY3RlZC50
eHQ6CisgICAgICAgIEV4cGVjdCB0aGlzIHRlc3QgdG8gcGFzcyBpbnN0ZWFkIG9mIGZhaWxpbmcu
CisKIDIwMjAtMDItMTYgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgog
CiAgICAgICAgIEltcGxlbWVudCBFdmVudFRhcmdldCBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LWV4cGVjdGVkLnR4dAppbmRl
eCA0NjA5NDg5MDRjZDIwMTk5ZjFkOTEyNmI4MmMxNGQ3YjljNDA0NzZlLi5jYmE2NTA1NzI3NmY0
YWYxNTc5MDI4OTllMWYzNTZkMzRjYTAyOTI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LWV4cGVjdGVkLnR4dApAQCAtMyw4ICszLDggQEAg
VGVzdCBmb3IgdGhlIGRhdGFsaXN0IGVsZW1lbnQuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CiAKIAotUEFTUyBkYXRhbGlzdC5vcHRpb25zLmxlbmd0aCBpcyA0Ci1QQVNTIGRhdGFsaXN0Lm9w
dGlvbnMubGVuZ3RoIGlzIDMKK1BBU1MgZGF0YWxpc3Qub3B0aW9ucy5sZW5ndGggaXMgNQorUEFT
UyBkYXRhbGlzdC5vcHRpb25zLmxlbmd0aCBpcyA1CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvZGF0YWxpc3QvZGF0YWxpc3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxp
c3QvZGF0YWxpc3QuaHRtbAppbmRleCA1NjFiNjZiNWM1ZDIyMjhmODNiNWQ4MjE1OTc5ZjA1ODkx
MDE3OTM1Li5jYWMxNWVmMTJiYmVmOWI1MzYzMjFkOWRlZjQ1MDUzYjEzYWQ3M2QyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0Lmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC5odG1sCkBAIC0xLDcgKzEs
NyBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0
bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CkBA
IC0xNywxOCArMTcsMjAgQEAKIDwvZGF0YWxpc3Q+CiAKIDxzY3JpcHQ+CisKIGRlc2NyaXB0aW9u
KCdUZXN0IGZvciB0aGUgZGF0YWxpc3QgZWxlbWVudC4nKTsKIAogdmFyIGRhdGFsaXN0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsMScpOwotLy8gQW4gb3B0aW9uIGVsZW1lbnQgd2l0aCBl
bXB0eSB2YWx1ZSBpcyBub3QgaW5jbHVkZWQuCi1zaG91bGRCZSgnZGF0YWxpc3Qub3B0aW9ucy5s
ZW5ndGgnLCAnNCcpOwogCisvLyBBbiBvcHRpb24gZWxlbWVudCB3aXRoIGVtcHR5IHZhbHVlIGlz
IG5vdCBhIHN1Z2dlc3Rpb24sIGJ1dCBzdGlsbCBpcyBpbmNsdWRlZCBpbiB0aGUgb3B0aW9ucyBj
b2xsZWN0aW9uLgorc2hvdWxkQmUoJ2RhdGFsaXN0Lm9wdGlvbnMubGVuZ3RoJywgJzUnKTsKKwor
Ly8gQSBkaXNhYmxlZCBvcHRpb24gZWxlbWVudCBpcyBubyBsb25nZXIgYSBzdWdnZXN0aW9uLCBi
dXQgc3RpbGwgaXMgaW5jbHVkZWQgaW4gdGhlIG9wdGlvbnMgY29sbGVjdGlvbi4KIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdvNCcpLmRpc2FibGVkID0gdHJ1ZTsKLS8vIEEgZGlzYWJsZWQgb3B0
aW9uIGVsZW1lbnQgaXMgbm90IGluY2x1ZGVkLgotc2hvdWxkQmUoJ2RhdGFsaXN0Lm9wdGlvbnMu
bGVuZ3RoJywgJzMnKTsKLS8vIEFmdGVyIGRhdGFsaXN0IGlzIGltcGxlbWVudGVkLCB0aGUgZXhw
ZWN0ZWQgdGV4dCBzaG91bGQgbm90IGNvbnRhaW4gdGhlCi0vLyB0ZXh0IGluIHRoZSBkYXRhbGlz
dCBlbGVtZW50Lgorc2hvdWxkQmUoJ2RhdGFsaXN0Lm9wdGlvbnMubGVuZ3RoJywgJzUnKTsKKwor
Ly8gQWxzbywgdGhlIGV4cGVjdGVkIHRleHQgc2hvdWxkIG5vdCBjb250YWluIHRoZSB0ZXh0IGlu
IHRoZSBkYXRhbGlzdCBlbGVtZW50LgorCiA8L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWRhdGFsaXN0LWVsZW1lbnQvZGF0YWxpc3RvcHRpb25z
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWRhdGFsaXN0LWVsZW1lbnQvZGF0YWxpc3RvcHRp
b25zLWV4cGVjdGVkLnR4dAppbmRleCBiNWM2ZTk1MzQ0M2NlOTRiOGY3OWMzYmY4ZDNkNzViMGJj
MDAwOWNjLi4zNTQ1YTdlODk3MThjMTU5MTIyYWRhODdjOWM2NmFlM2EzMjk5NjgxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2Zvcm1zL3RoZS1kYXRhbGlzdC1lbGVtZW50L2RhdGFsaXN0b3B0aW9ucy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9mb3Jtcy90aGUtZGF0YWxpc3QtZWxlbWVudC9kYXRhbGlzdG9wdGlvbnMt
ZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAogCi1GQUlMIG9wdGlvbnMgbGFiZWwvdmFsdWUg
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgNSBidXQgZ290IDMKK1BBU1Mgb3B0aW9ucyBsYWJlbC92
YWx1ZSAKIFBBU1MgSWYgYW4gZWxlbWVudCBoYXMgYSBkYXRhbGlzdCBlbGVtZW50IGFuY2VzdG9y
LCBpdCBpcyBiYXJyZWQgZnJvbSBjb25zdHJhaW50IHZhbGlkYXRpb24gCiBOdW1iZXI6ICAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhNDcy
YzlkNzhmMzA4ZmQ5YTZlM2U5ZDVmY2QzNWI3ODM2Y2Q5MDcxLi40ZDBiNmU1NGMxY2Q3NjNjZTcw
N2M2MWNkMTdiN2E3NzQwZjE0MDNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zCkBAIC00MzAsOSArNDMwLDYgQEAgaW1wb3J0ZWQvYmxpbmsvc3Zn
L2N1c3RvbS9tYXJrZXItbGF5b3V0LWludmFsaWRhdGlvbi5odG1sIFsgUGFzcyBUaW1lb3V0IF0K
IGltcG9ydGVkL2JsaW5rL2Zhc3QvY3NzL2NyYXNoLWNvcm5lci1wcmVzZW50Lmh0bWwgWyBQYXNz
IFRpbWVvdXQgXQogaW1wb3J0ZWQvYmxpbmsvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vaWZy
YW1lLWNsaXAtcmVtb3ZlZC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAotIyBBU0FOIHRlc3Qgb25s
eSBmYWlscyBvbiBXSzE6Ci13ZWJnbC8xLjAuMy8xNTEwNTVfYXNhbi5odG1sIFsgRmFpbHVyZSBd
Ci0KICMgTGFja2luZyBXSzEgVGVzdFJ1bm5lciBBUEkgdGhhdCBldmFsdWF0ZXMgSmF2YVNjcmlw
dCB0aHJvdWdoIEpTQyBBUElzIGFuZCBub3QgV2ViQ29yZSBBUElzLgogaW5zcGVjdG9yL3Njcmlw
dC1wcm9maWxlci9ldmVudC10eXBlLUFQSS5odG1sIFsgU2tpcCBdCiAKQEAgLTc2Miw4ICs3NTks
NiBAQCB3ZWJraXQub3JnL2IvMTkwMzUwIFsgTW9qYXZlIF0gc3RvcmFnZS9pbmRleGVkZGIvZGF0
YWJhc2Utb2RkLW5hbWVzLmh0bWwgWyBGYWlsdQogCiB3ZWJraXQub3JnL2IvMTkwODMyIFsgRGVi
dWcgXSBmYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdG8tbm9uLWVkaXRlZC1jb250cm9scy5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE5MDgzMyBbIERlYnVnIF0gaW5zcGVj
dG9yL2NvZGVtaXJyb3IvcHJldHR5cHJpbnRpbmctY3NzLmh0bWwgWyBTbG93IF0KLQogd2Via2l0
Lm9yZy9iLzE5MDg0OSBodHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1v
cHRpb25zLW11bHRpcGxlLWhlYWRlcnMtc2FtZW9yaWdpbi1kZW55Lmh0bWwgWyBQYXNzIEZhaWx1
cmUgXQogCiB3ZWJraXQub3JnL2IvMTg2NDA2IFsgTW9qYXZlKyBdIGNvbXBvc2l0aW5nL2lmcmFt
ZXMvZGlzcGxheS1ub25lLXN1YmZyYW1lLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpAQCAtOTE0LDQg
KzkwOSw0IEBAIHdlYmtpdC5vcmcvYi8yMDc1NjYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWItYW5pbWF0aW9ucy90aW1pbmctbW9kZWwvCiAKIHdlYmtpdC5vcmcvYi8yMDc1Njgg
aW5zcGVjdG9yL3BhZ2Uvb3ZlcnJpZGVVc2VyQWdlbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
LXdlYmtpdC5vcmcvYi8yMDc1NjkgbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5pbWF0aW9ucy8z
ZC90cmFuc2Zvcm0tb3JpZ2luLXZzLWZ1bmN0aW9ucy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit3ZWJraXQub3JnL2IvMjA3NTY5IGxlZ2FjeS1hbmlt
YXRpb24tZW5naW5lL2FuaW1hdGlvbnMvM2QvdHJhbnNmb3JtLW9yaWdpbi12cy1mdW5jdGlvbnMu
aHRtbCBbIFBhc3MgRmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL2Zhc3QvZm9ybXMvZm9ybS1wc2V1ZG8tdmFsaWQtc3R5bGUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9mYXN0L2Zvcm1zL2Zvcm0tcHNldWRvLXZhbGlk
LXN0eWxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDNmYWE3NTE3NTMxNzJkMTJiZTk0MWQ3
Zjk4YWM4N2U1ZDY2OTYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMS9mYXN0L2Zvcm1zL2Zvcm0tcHNldWRvLXZhbGlkLXN0eWxlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDU0IEBACitDaGVjayBpZiA6dmFsaWQvOmludmFsaWQgQ1NTIHBzZXVkbyBzZWxl
Y3RvcnMgYXJlIGxpdmVseSBhcHBsaWVkIGZvciBmb3JtcworCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUmVtb3ZpbmcgYW5kIGFkZGluZyByZXF1aXJlZCB0ZXh0IGlucHV0cyBhbmQg
bW9kaWZ5aW5nIHRoZWlyIHZhbHVlIGJ5IGEgRE9NIHRyZWUgbXV0YXRpb246CitQQVNTIGJhY2tn
cm91bmRPZihmb3JtMSkgaXMgaW52YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBp
cyBzdWJJbnZhbGlkQ29sb3IKK1BBU1MgZm9ybTEucmVtb3ZlQ2hpbGQoaW5wdXQxKTsgYmFja2dy
b3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBz
dWJWYWxpZENvbG9yCitQQVNTIGZvcm0xLmFwcGVuZENoaWxkKGlucHV0MSk7IGJhY2tncm91bmRP
Zihmb3JtMSkgaXMgaW52YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJJ
bnZhbGlkQ29sb3IKK1BBU1MgaW5wdXQxLnNldEF0dHJpYnV0ZSgidmFsdWUiLCAiYSIpOyBiYWNr
Z3JvdW5kT2YoZm9ybTEpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlz
IHN1YlZhbGlkQ29sb3IKK1BBU1MgaW5wdXQyLnNldEF0dHJpYnV0ZSgidmFsdWUiLCAiIik7IGJh
Y2tncm91bmRPZihmb3JtMSkgaXMgaW52YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIx
KSBpcyBzdWJJbnZhbGlkQ29sb3IKKworRGlzYWJsaW5nIGFuZCBtYXJraW5nIGlucHV0cyByZWFk
b25seSBieSBhIERPTSB0cmVlIG11dGF0aW9uOgorUEFTUyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlz
IGludmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9y
CitQQVNTIGlucHV0MS5kaXNhYmxlZD0xOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIHZhbGlkQ29s
b3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1YlZhbGlkQ29sb3IKK1BBU1MgaW5wdXQx
LmRpc2FibGVkPTA7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgaW52YWxpZENvbG9yCitQQVNTIGJh
Y2tncm91bmRPZihzdWIxKSBpcyBzdWJJbnZhbGlkQ29sb3IKK1BBU1MgaW5wdXQxLnNldEF0dHJp
YnV0ZSgicmVhZG9ubHkiLCAiMSIpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIHZhbGlkQ29sb3IK
K1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1YlZhbGlkQ29sb3IKKworTW92ZSBlbGVtZW50
IHVuZGVyIGRhdGFsaXN0IGJ5IGEgRE9NIHRyZWUgbXV0YXRpb246CitQQVNTIGJhY2tncm91bmRP
Zihmb3JtMSkgaXMgaW52YWxpZENvbG9yCitQQVNTIHBhcmVudC5yZW1vdmVDaGlsZChpbnB1dDEp
OyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIHZhbGlkQ29sb3IKK0ZBSUwgZGwxLmFwcGVuZENoaWxk
KGlucHV0MSk7IGJhY2tncm91bmRPZihmb3JtMSkgc2hvdWxkIGJlIHJnYigwLCAyNTUsIDApLiBX
YXMgcmdiKDI1NSwgMCwgMCkuCitQQVNTIHBhcmVudC5hcHBlbmRDaGlsZChpbnB1dDEpOyBiYWNr
Z3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorCitBZGRpbmcgYSByZXF1aXJlZCB0ZXh0
IGlucHV0IHRoYXQgaXMgbm90IGEgZGlyZWN0IGNoaWxkIG9mIHRoZSBmb3JtOgorUEFTUyBiYWNr
Z3JvdW5kT2YoZm9ybTEpIGlzIHZhbGlkQ29sb3IKK1BBU1MgZGl2MS5hcHBlbmRDaGlsZChpbnB1
dDEpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorCitSZW5kZXIgbXVsdGlw
bGUgZm9ybXMgYW5kIHJlYXNzaWduIGFuIGludmFsaWQgaW5wdXQgZnJvbSBvbmUgdG8gYW5vdGhl
cjoKK1BBU1MgYmFja2dyb3VuZE9mKCQoImZvcm0xIikpIGlzIGludmFsaWRDb2xvcgorUEFTUyBi
YWNrZ3JvdW5kT2YoJCgiZm9ybTIiKSkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2Yo
JCgiZm9ybTMiKSkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2YoJCgiZm9ybTEiKSkg
aXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2YoJCgiZm9ybTMiKSkgaXMgaW52YWxpZENv
bG9yCisKK0Vuc3VyZSB0aGF0IGludmFsaWQgZXZlbnQgd2FzIG5vdCB0cmlnZ2VyZWQgb24gc3R5
bGUgZXZhbHVhdGlvbjoKK1BBU1MgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IK
K1BBU1MgdmFsIGlzICIwIgorUEFTUyBmb3JtMS5jaGVja1ZhbGlkaXR5KCk7IHZhbCBpcyAiMSIK
KworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorU29tZSB0ZXN0cyBmYWlsZWQuCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1zL2Nv
bnN0cmFpbnRzL2Zvcm0tdmFsaWRhdGlvbi13aWxsVmFsaWRhdGUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2Zvcm1zL2NvbnN0cmFpbnRzL2Zvcm0tdmFsaWRhdGlvbi13aWxsVmFs
aWRhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlZDUzNjgwNDNlOGMxN2RkZmU4ODJhMzUz
NTVhNWE0NzJmNzY1NWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9y
bXMvY29uc3RyYWludHMvZm9ybS12YWxpZGF0aW9uLXdpbGxWYWxpZGF0ZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw1NyBAQAorCitQQVNTIFtJTlBVVCBpbiBISURERU4gc3RhdHVzXSBNdXN0IGJl
IGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gCitQQVNTIFtJTlBVVCBpbiBC
VVRUT04gc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRp
b24gCitQQVNTIFtJTlBVVCBpbiBSRVNFVCBzdGF0dXNdIE11c3QgYmUgYmFycmVkIGZyb20gdGhl
IGNvbnN0cmFpbnQgdmFsaWRhdGlvbiAKK1BBU1MgW0JVVFRPTiBpbiBCVVRUT04gc3RhdHVzXSBN
dXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gCitQQVNTIFtCVVRU
T04gaW4gUkVTRVQgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZh
bGlkYXRpb24gCitQQVNTIFtmaWVsZHNldF0gIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11
c3QgYmUgZmFsc2Ugc2luY2UgRklFTERTRVQgaXMgbm90IGEgc3VibWl0dGFibGUgZWxlbWVudCAK
K1BBU1MgW291dHB1dF0gIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgZmFsc2Ug
c2luY2UgT1VUUFVUIGlzIG5vdCBhIHN1Ym1pdHRhYmxlIGVsZW1lbnQgCitQQVNTIFtvYmplY3Rd
ICBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gCitQQVNTIFtJ
TlBVVCBpbiBURVhUIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2
YWxpZGF0aW9uIGlmIGl0IGlzIGRpc2FibGVkIAorUEFTUyBbSU5QVVQgaW4gVEVYVCBzdGF0dXNd
IFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgdHJ1ZSBpZiBhbiBlbGVtZW50IGlz
IG11dGFibGUgCitQQVNTIFtJTlBVVCBpbiBURVhUIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJv
bSB0aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIHJlYWRvbmx5IAorUEFTUyBbSU5Q
VVQgaW4gVEVYVCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgZmFs
c2UgaWYgaXQgaGFzIGEgZGF0YWxpc3QgYW5jZXN0b3IgCitQQVNTIFtJTlBVVCBpbiBTRUFSQ0gg
c3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gaWYg
aXQgaXMgZGlzYWJsZWQgCitQQVNTIFtJTlBVVCBpbiBTRUFSQ0ggc3RhdHVzXSBUaGUgd2lsbFZh
bGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIHRydWUgaWYgYW4gZWxlbWVudCBpcyBtdXRhYmxlIAor
UEFTUyBbSU5QVVQgaW4gU0VBUkNIIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29u
c3RyYWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIHJlYWRvbmx5IAorUEFTUyBbSU5QVVQgaW4gU0VB
UkNIIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSBmYWxzZSBpZiBp
dCBoYXMgYSBkYXRhbGlzdCBhbmNlc3RvciAKK1BBU1MgW0lOUFVUIGluIFRFTCBzdGF0dXNdIE11
c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyBkaXNh
YmxlZCAKK1BBU1MgW0lOUFVUIGluIFRFTCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmli
dXRlIG11c3QgYmUgdHJ1ZSBpZiBhbiBlbGVtZW50IGlzIG11dGFibGUgCitQQVNTIFtJTlBVVCBp
biBURUwgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRp
b24gaWYgaXQgaXMgcmVhZG9ubHkgCitQQVNTIFtJTlBVVCBpbiBURUwgc3RhdHVzXSBUaGUgd2ls
bFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIGZhbHNlIGlmIGl0IGhhcyBhIGRhdGFsaXN0IGFu
Y2VzdG9yIAorUEFTUyBbSU5QVVQgaW4gVVJMIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0
aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIGRpc2FibGVkIAorUEFTUyBbSU5QVVQg
aW4gVVJMIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSB0cnVlIGlm
IGFuIGVsZW1lbnQgaXMgbXV0YWJsZSAKK1BBU1MgW0lOUFVUIGluIFVSTCBzdGF0dXNdIE11c3Qg
YmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyByZWFkb25s
eSAKK1BBU1MgW0lOUFVUIGluIFVSTCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRl
IG11c3QgYmUgZmFsc2UgaWYgaXQgaGFzIGEgZGF0YWxpc3QgYW5jZXN0b3IgCitQQVNTIFtJTlBV
VCBpbiBFTUFJTCBzdGF0dXNdIE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFs
aWRhdGlvbiBpZiBpdCBpcyBkaXNhYmxlZCAKK1BBU1MgW0lOUFVUIGluIEVNQUlMIHN0YXR1c10g
VGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSB0cnVlIGlmIGFuIGVsZW1lbnQgaXMg
bXV0YWJsZSAKK1BBU1MgW0lOUFVUIGluIEVNQUlMIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJv
bSB0aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIHJlYWRvbmx5IAorUEFTUyBbSU5Q
VVQgaW4gRU1BSUwgc3RhdHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIGZh
bHNlIGlmIGl0IGhhcyBhIGRhdGFsaXN0IGFuY2VzdG9yIAorUEFTUyBbSU5QVVQgaW4gUEFTU1dP
UkQgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24g
aWYgaXQgaXMgZGlzYWJsZWQgCitQQVNTIFtJTlBVVCBpbiBQQVNTV09SRCBzdGF0dXNdIFRoZSB3
aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgdHJ1ZSBpZiBhbiBlbGVtZW50IGlzIG11dGFi
bGUgCitQQVNTIFtJTlBVVCBpbiBQQVNTV09SRCBzdGF0dXNdIE11c3QgYmUgYmFycmVkIGZyb20g
dGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyByZWFkb25seSAKK1BBU1MgW0lOUFVU
IGluIFBBU1NXT1JEIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSBm
YWxzZSBpZiBpdCBoYXMgYSBkYXRhbGlzdCBhbmNlc3RvciAKK0ZBSUwgW0lOUFVUIGluIERBVEVU
SU1FLUxPQ0FMIHN0YXR1c10gVGhlIGRhdGV0aW1lLWxvY2FsIHR5cGUgbXVzdCBiZSBzdXBwb3J0
ZWQuIGFzc2VydF9lcXVhbHM6IFRoZSBkYXRldGltZS1sb2NhbCB0eXBlIHNob3VsZCBiZSBzdXBw
b3J0ZWQuIGV4cGVjdGVkICJkYXRldGltZS1sb2NhbCIgYnV0IGdvdCAidGV4dCIKK0ZBSUwgW0lO
UFVUIGluIERBVEUgc3RhdHVzXSBUaGUgZGF0ZSB0eXBlIG11c3QgYmUgc3VwcG9ydGVkLiBhc3Nl
cnRfZXF1YWxzOiBUaGUgZGF0ZSB0eXBlIHNob3VsZCBiZSBzdXBwb3J0ZWQuIGV4cGVjdGVkICJk
YXRlIiBidXQgZ290ICJ0ZXh0IgorRkFJTCBbSU5QVVQgaW4gTU9OVEggc3RhdHVzXSBUaGUgbW9u
dGggdHlwZSBtdXN0IGJlIHN1cHBvcnRlZC4gYXNzZXJ0X2VxdWFsczogVGhlIG1vbnRoIHR5cGUg
c2hvdWxkIGJlIHN1cHBvcnRlZC4gZXhwZWN0ZWQgIm1vbnRoIiBidXQgZ290ICJ0ZXh0IgorRkFJ
TCBbSU5QVVQgaW4gV0VFSyBzdGF0dXNdIFRoZSB3ZWVrIHR5cGUgbXVzdCBiZSBzdXBwb3J0ZWQu
IGFzc2VydF9lcXVhbHM6IFRoZSB3ZWVrIHR5cGUgc2hvdWxkIGJlIHN1cHBvcnRlZC4gZXhwZWN0
ZWQgIndlZWsiIGJ1dCBnb3QgInRleHQiCitGQUlMIFtJTlBVVCBpbiBUSU1FIHN0YXR1c10gVGhl
IHRpbWUgdHlwZSBtdXN0IGJlIHN1cHBvcnRlZC4gYXNzZXJ0X2VxdWFsczogVGhlIHRpbWUgdHlw
ZSBzaG91bGQgYmUgc3VwcG9ydGVkLiBleHBlY3RlZCAidGltZSIgYnV0IGdvdCAidGV4dCIKK0ZB
SUwgW0lOUFVUIGluIENPTE9SIHN0YXR1c10gVGhlIGNvbG9yIHR5cGUgbXVzdCBiZSBzdXBwb3J0
ZWQuIGFzc2VydF9lcXVhbHM6IFRoZSBjb2xvciB0eXBlIHNob3VsZCBiZSBzdXBwb3J0ZWQuIGV4
cGVjdGVkICJjb2xvciIgYnV0IGdvdCAidGV4dCIKK1BBU1MgW0lOUFVUIGluIEZJTEUgc3RhdHVz
XSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gaWYgaXQgaXMg
ZGlzYWJsZWQgCitQQVNTIFtJTlBVVCBpbiBGSUxFIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBh
dHRyaWJ1dGUgbXVzdCBiZSB0cnVlIGlmIGFuIGVsZW1lbnQgaXMgbXV0YWJsZSAKK1BBU1MgW0lO
UFVUIGluIEZJTEUgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZh
bGlkYXRpb24gaWYgaXQgaXMgcmVhZG9ubHkgCitQQVNTIFtJTlBVVCBpbiBGSUxFIHN0YXR1c10g
VGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSBmYWxzZSBpZiBpdCBoYXMgYSBkYXRh
bGlzdCBhbmNlc3RvciAKK1BBU1MgW0lOUFVUIGluIFNVQk1JVCBzdGF0dXNdIE11c3QgYmUgYmFy
cmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyBkaXNhYmxlZCAKK1BB
U1MgW0lOUFVUIGluIFNVQk1JVCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11
c3QgYmUgdHJ1ZSBpZiBhbiBlbGVtZW50IGlzIG11dGFibGUgCitQQVNTIFtJTlBVVCBpbiBTVUJN
SVQgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24g
aWYgaXQgaXMgcmVhZG9ubHkgCitQQVNTIFtJTlBVVCBpbiBTVUJNSVQgc3RhdHVzXSBUaGUgd2ls
bFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIGZhbHNlIGlmIGl0IGhhcyBhIGRhdGFsaXN0IGFu
Y2VzdG9yIAorUEFTUyBbQlVUVE9OIGluIFNVQk1JVCBzdGF0dXNdIE11c3QgYmUgYmFycmVkIGZy
b20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiAKK1BBU1MgW0JVVFRPTiBpbiBTVUJNSVQgc3Rh
dHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIHRydWUgaWYgYW4gZWxlbWVu
dCBpcyBtdXRhYmxlIAorRkFJTCBbQlVUVE9OIGluIFNVQk1JVCBzdGF0dXNdIFRoZSB3aWxsVmFs
aWRhdGUgYXR0cmlidXRlIG11c3QgYmUgZmFsc2UgaWYgaXQgaGFzIGEgZGF0YWxpc3QgYW5jZXN0
b3IgYXNzZXJ0X2ZhbHNlOiBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBzaG91bGQgYmUgZmFs
c2UuIGV4cGVjdGVkIGZhbHNlIGdvdCB0cnVlCitQQVNTIFtzZWxlY3RdICBNdXN0IGJlIGJhcnJl
ZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gCitQQVNTIFtzZWxlY3RdICBUaGUgd2ls
bFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIHRydWUgaWYgYW4gZWxlbWVudCBpcyBtdXRhYmxl
IAorRkFJTCBbc2VsZWN0XSAgVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSBmYWxz
ZSBpZiBpdCBoYXMgYSBkYXRhbGlzdCBhbmNlc3RvciBhc3NlcnRfZmFsc2U6IFRoZSB3aWxsVmFs
aWRhdGUgYXR0cmlidXRlIHNob3VsZCBiZSBmYWxzZS4gZXhwZWN0ZWQgZmFsc2UgZ290IHRydWUK
K1BBU1MgW3RleHRhcmVhXSAgTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxp
ZGF0aW9uIAorUEFTUyBbdGV4dGFyZWFdICBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0
IGJlIHRydWUgaWYgYW4gZWxlbWVudCBpcyBtdXRhYmxlIAorRkFJTCBbdGV4dGFyZWFdICBUaGUg
d2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIGZhbHNlIGlmIGl0IGhhcyBhIGRhdGFsaXN0
IGFuY2VzdG9yIGFzc2VydF9mYWxzZTogVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgc2hvdWxk
IGJlIGZhbHNlLiBleHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9mb3Jtcy9mb3JtLXBzZXVkby12YWxpZC1zdHlsZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9mb3Jtcy9mb3JtLXBzZXVk
by12YWxpZC1zdHlsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQzZmFhNzUxNzUzMTcyZDEy
YmU5NDFkN2Y5OGFjODdlNWQ2Njk2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9mYXN0L2Zvcm1zL2Zvcm0tcHNldWRvLXZhbGlkLXN0eWxlLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDU0IEBACitDaGVjayBpZiA6dmFsaWQvOmludmFsaWQgQ1NTIHBzZXVkbyBz
ZWxlY3RvcnMgYXJlIGxpdmVseSBhcHBsaWVkIGZvciBmb3JtcworCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUmVtb3ZpbmcgYW5kIGFkZGluZyByZXF1aXJlZCB0ZXh0IGlucHV0cyBh
bmQgbW9kaWZ5aW5nIHRoZWlyIHZhbHVlIGJ5IGEgRE9NIHRyZWUgbXV0YXRpb246CitQQVNTIGJh
Y2tncm91bmRPZihmb3JtMSkgaXMgaW52YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIx
KSBpcyBzdWJJbnZhbGlkQ29sb3IKK1BBU1MgZm9ybTEucmVtb3ZlQ2hpbGQoaW5wdXQxKTsgYmFj
a2dyb3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBp
cyBzdWJWYWxpZENvbG9yCitQQVNTIGZvcm0xLmFwcGVuZENoaWxkKGlucHV0MSk7IGJhY2tncm91
bmRPZihmb3JtMSkgaXMgaW52YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBz
dWJJbnZhbGlkQ29sb3IKK1BBU1MgaW5wdXQxLnNldEF0dHJpYnV0ZSgidmFsdWUiLCAiYSIpOyBi
YWNrZ3JvdW5kT2YoZm9ybTEpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEp
IGlzIHN1YlZhbGlkQ29sb3IKK1BBU1MgaW5wdXQyLnNldEF0dHJpYnV0ZSgidmFsdWUiLCAiIik7
IGJhY2tncm91bmRPZihmb3JtMSkgaXMgaW52YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihz
dWIxKSBpcyBzdWJJbnZhbGlkQ29sb3IKKworRGlzYWJsaW5nIGFuZCBtYXJraW5nIGlucHV0cyBy
ZWFkb25seSBieSBhIERPTSB0cmVlIG11dGF0aW9uOgorUEFTUyBiYWNrZ3JvdW5kT2YoZm9ybTEp
IGlzIGludmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENv
bG9yCitQQVNTIGlucHV0MS5kaXNhYmxlZD0xOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIHZhbGlk
Q29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1YlZhbGlkQ29sb3IKK1BBU1MgaW5w
dXQxLmRpc2FibGVkPTA7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgaW52YWxpZENvbG9yCitQQVNT
IGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJJbnZhbGlkQ29sb3IKK1BBU1MgaW5wdXQxLnNldEF0
dHJpYnV0ZSgicmVhZG9ubHkiLCAiMSIpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIHZhbGlkQ29s
b3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1YlZhbGlkQ29sb3IKKworTW92ZSBlbGVt
ZW50IHVuZGVyIGRhdGFsaXN0IGJ5IGEgRE9NIHRyZWUgbXV0YXRpb246CitQQVNTIGJhY2tncm91
bmRPZihmb3JtMSkgaXMgaW52YWxpZENvbG9yCitQQVNTIHBhcmVudC5yZW1vdmVDaGlsZChpbnB1
dDEpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIHZhbGlkQ29sb3IKK0ZBSUwgZGwxLmFwcGVuZENo
aWxkKGlucHV0MSk7IGJhY2tncm91bmRPZihmb3JtMSkgc2hvdWxkIGJlIHJnYigwLCAyNTUsIDAp
LiBXYXMgcmdiKDI1NSwgMCwgMCkuCitQQVNTIHBhcmVudC5hcHBlbmRDaGlsZChpbnB1dDEpOyBi
YWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorCitBZGRpbmcgYSByZXF1aXJlZCB0
ZXh0IGlucHV0IHRoYXQgaXMgbm90IGEgZGlyZWN0IGNoaWxkIG9mIHRoZSBmb3JtOgorUEFTUyBi
YWNrZ3JvdW5kT2YoZm9ybTEpIGlzIHZhbGlkQ29sb3IKK1BBU1MgZGl2MS5hcHBlbmRDaGlsZChp
bnB1dDEpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorCitSZW5kZXIgbXVs
dGlwbGUgZm9ybXMgYW5kIHJlYXNzaWduIGFuIGludmFsaWQgaW5wdXQgZnJvbSBvbmUgdG8gYW5v
dGhlcjoKK1BBU1MgYmFja2dyb3VuZE9mKCQoImZvcm0xIikpIGlzIGludmFsaWRDb2xvcgorUEFT
UyBiYWNrZ3JvdW5kT2YoJCgiZm9ybTIiKSkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5k
T2YoJCgiZm9ybTMiKSkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2YoJCgiZm9ybTEi
KSkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2YoJCgiZm9ybTMiKSkgaXMgaW52YWxp
ZENvbG9yCisKK0Vuc3VyZSB0aGF0IGludmFsaWQgZXZlbnQgd2FzIG5vdCB0cmlnZ2VyZWQgb24g
c3R5bGUgZXZhbHVhdGlvbjoKK1BBU1MgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29s
b3IKK1BBU1MgdmFsIGlzICIwIgorUEFTUyBmb3JtMS5jaGVja1ZhbGlkaXR5KCk7IHZhbCBpcyAi
MSIKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorU29tZSB0ZXN0cyBmYWlsZWQu
CisKK1RFU1QgQ09NUExFVEUKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391132</attachid>
            <date>2020-02-18 20:15:18 -0800</date>
            <delta_ts>2020-02-19 20:34:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207816-20200218201515.patch</filename>
            <type>text/plain</type>
            <size>271584</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2OTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY1M2EwMTA1YmY2ZWYy
Y2UyMWIyMGFjYjBlN2QyNTFjMGFjMGUzYS4uYzgzMzM0N2E2ZjA4ZWFkNmEyZmU4M2EyNWExYjc2
MTdjMzUxMzY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4OCBAQAorMjAyMC0wMi0xOCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRv
cnMgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZpbmVkIGVsZW1lbnQgaXRlcmF0b3IgaW1wbGVtZW50YXRp
b24gaW4gdGhlIGZvbGxvd2luZyB3YXlzOgorCisgICAgICAgIDEpIFJlbW92ZWQgdGhlIGR1cGxp
Y2F0ZSBkZXNjZW5kYW50IGl0ZXJhdG9yLCBrZWVwaW5nIHRoZSBvbmUgdGhhdCBtYXRjaGVzCisg
ICAgICAgICAgIHRoZSBzdHlsZSBvZiB0aGUgYW5jZXN0b3IgYW5kIGNoaWxkIGl0ZXJhdG9ycy4K
KyAgICAgICAgMikgUmVtb3ZlZCB0aGUgbm9uLXRlbXBsYXRlIGVsZW1lbnRBbmNlc3RvcnMsIGVs
ZW1lbnRDaGlsZHJlbiwgZWxlbWVudERlc2NlbmRhbnRzLAorICAgICAgICAgICBhbmQgZWxlbWVu
dExpbmVhZ2UgZnVuY3Rpb25zIGFuZCBjaGFuZ2VkIGNhbGxlcnMgdG8gdXNlIHh4eE9mVHlwZTxF
bGVtZW50PiBpbnN0ZWFkLgorCisgICAgICAgIEFsc28gcmVwbGFjZWQgdXNlIG9mIEhUTUxDb2xs
ZWN0aW9uIGNsYXNzZXMgaW4gV2ViS2l0IGNvZGUgZm9yIGl0ZXJhdGlvbi4KKyAgICAgICAgVGhl
eSBhcmUgZmluZSBmb3IgdXNlIGZyb20gSmF2YVNjcmlwdCwgYnV0IGludGVybmFsbHkgd2UgaGF2
ZSBtb3JlIGVmZmljaWVudAorICAgICAgICBpdGVyYXRpb24gaWRpb21zLgorCisgICAgICAgICog
SGVhZGVycy5jbWFrZTogUmVtb3ZlZCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmguCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmVkIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IuaCBhbmQKKyAgICAgICAgYWRkZWQgUmFkaW9Ob2RlTGlzdC5pZGwu
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojptb3VzZUJ1dHRvbkxp
c3RlbmVyIGNvbnN0KTogVXNlCisgICAgICAgIGxpbmVhZ2VPZlR5cGUgaW5zdGVhZCBvZiBlbGVt
ZW50TGluZWFnZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgVXNlIGFuY2Vz
dG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEgaGFuZHdyaXR0ZW4gbG9vcC4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcDogUmVtb3ZlZCB1bm5lZWRl
ZCBpbmNsdWRlIG9mCisgICAgICAgIEhUTUxDb2xsZWN0aW9uLmguCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOiBEaXR0by4KKworICAgICAgICAqIGRvbS9DaGls
ZE5vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUxpc3Q6OkNoaWxkTm9k
ZUxpc3QpOiBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIG1faW5kZXhDYWNoZQorICAgICAgICBz
aW5jZSB0aGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlcXVpcmVzIGFyZ3VtZW50cy4KKyAgICAg
ICAgKFdlYkNvcmU6OkNoaWxkTm9kZUxpc3Q6OmludmFsaWRhdGVDYWNoZSk6IFJlbW92ZWQgYXJn
dW1lbnQgdG8KKyAgICAgICAgQ29sbGVjdGlvbkluZGV4Q2FjaGU6OmludmFsaWRhdGUuCisgICAg
ICAgICogZG9tL0NoaWxkTm9kZUxpc3QuaDogUmVtb3ZlZCBjb2xsZWN0aW9uRW5kLCBzaW5jZSBp
dCdzIG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgKiBkb20vQ29sbGVjdGlvbkluZGV4Q2Fj
aGUuaDogUmVtb3ZlZCB0aGUgY29sbGVjdGlvbiBhcmd1bWVudCB0byB0aGUKKyAgICAgICAgY29u
c3RydWN0b3IsIGhhc1ZhbGlkQ2FjaGUsIGFuZCBpbnZhbGlkYXRlIGZ1bmN0aW9ucy4gVXBkYXRl
ZCBhbGdvcml0aG1zIHRvIHVzZQorICAgICAgICBudWxsIHN0eWxlIHRlcm1pbmF0aW9uIGluc3Rl
YWQgb2YgYWN0dWFsbHkgcmVseWluZyBvbiBjb21wYXJpbmcgd2l0aCBhbiBlbmQKKyAgICAgICAg
aXRlcmF0b3IsIHNpbmNlIHRoYXQgd29ya3MgZm9yIG91ciBlbGVtZW50IGl0ZXJhdG9ycy4KKwor
ICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OmNoaWxkRWxlbWVudENvdW50IGNvbnN0KTogVXNlIGFuIGVtcHR5IGluaXRpYWxp
emVyCisgICAgICAgIGxpc3QgaW5zdGVhZCBvZiB0aGUgcmVzdWx0IG9mIHRoZSBlbmQgZnVuY3Rp
b24gc2luY2Ugc3RkOjpkaXN0YW5jZSByZXF1aXJlcworICAgICAgICBib3RoIGJlZ2luIGFuZCBl
bmQgaXRlcmF0b3JzIGhhdmUgdGhlIHNhbWUgdHlwZS4KKworICAgICAgICAqIGRvbS9Db250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAgICAgICogZG9tL0N1
c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHA6IERpdHRvLgorCisgICAgICAgICogZG9tL0RvY3VtZW50
RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6Z2V0RWxl
bWVudEJ5SWQgY29uc3QpOiBVc2UKKyAgICAgICAgZGVzY2VuZGFudHNPZlR5cGUgaW5zdGVhZG9m
IGVsZW1lbnREZXNjZW5kYW50cy4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSBjb25zdCk6IFVz
ZSBsaW5lYWdlT2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2YgYSBoYW5kcndpdHRlbiBsb29wLgor
CisgICAgICAgICogZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmg6IE1vdmVkIHRoZSBkZWNs
YXJhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucworICAgICAgICB0byB0aGUgdG9wIG9mIHRoZSBmaWxl
LCBzaW5jZSB0aGUgY2xhc3NlcyBhcmUgcmVhbGx5IGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisg
ICAgICAgIFJlbW92ZWQgdGhlIHNlcGFyYXRlICJDb25zdCIgdmVyc2lvbnMgb2YgZXZlcnl0aGlu
ZyBzaW5jZSB3ZSBjYW4ganVzdCB1c2UKKyAgICAgICAgY29uc3QgaW4gdGhlIHRlbXBsYXRlIGFy
Z3VtZW50IHR5cGUgaW5zdGVhZC4gVXNlIHRoZSB0ZXJtICJSYW5nZSIgaW5zdGVhZAorICAgICAg
ICBvZiB0aGUgdGVybSAiSXRlcmF0b3JBZGFwdGVyIiBmb3IgdGhlIGNsYXNzIHRlbXBsYXRlcyBm
b3IgdXNlIGluIHJhbmdlLWJhc2VkCisgICAgICAgIGZvciBsb29wcyBzaW5jZSB0aGF0J3MgY2xv
c2VyIHRvIG1vZGVybiBDKysgdGVybWlub2xvZ3kuIFVzZSBudWxscHRyIGFzIGEKKyAgICAgICAg
c2VudGluZWwgZm9yIGVuZCwgd2hpY2ggd29ya3Mgd2VsbCB3aXRoIHJhbmdlLWJhc2VkIGZvciBs
b29wcy4gTWFkZSBtYW55IGZ1bmN0aW9uCisgICAgICAgIG1lbWJlcnMgY29uc3Qgd2hlcmUgYXBw
cm9wcmlhdGUuIFNwZWNpYWxpemVkIGxpbmVhZ2VPZlR5cGUgYW5kIGFuY2VzdG9yc09mVHlwZQor
ICAgICAgICBmb3IgRWxlbWVudCB0byBzbGlnaHRseSBvcHRpbWl6ZSB0aGF0IGNhc2UuIFVzZSBk
b3duY2FzdCBpbnN0ZWFkIG9mIHN0YXRpY19jYXN0LgorICAgICAgICBEZWxldGVkIGVsZW1lbnRM
aW5lYWdlIGFuZCBlbGVtZW50QW5jZXN0b3JzLgorCisgICAgICAgICogZG9tL0VsZW1lbnRBbmRU
ZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmg6IFJlbmFtZWQgSXRlcmF0b3JBZGFwdGVyIHRvIFJhbmdl
LgorICAgICAgICBNYWRlIG1vcmUgZnVuY3Rpb24gbWVtYmVycyBjb25zdC4KKworICAgICAgICAq
IGRvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oOiBNb3ZlZCB0aGUgZGVjbGFyYXRpb25zIG9mIHRo
ZSBmdW5jdGlvbnMKKyAgICAgICAgdG8gdGhlIHRvcCBvZiB0aGUgZmlsZSwgc2luY2UgdGhlIGNs
YXNzZXMgYXJlIHJlYWxseSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgorICAgICAgICBSZW1vdmVk
IHRoZSBzZXBhcmF0ZSAiQ29uc3QiIHZlcnNpb25zIG9mIGV2ZXJ5dGhpbmcgc2luY2Ugd2UgY2Fu
IGp1c3QgdXNlCisgICAgICAgIGNvbnN0IGluIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudCB0eXBlIGlu
c3RlYWQuIFVzZSB0aGUgdGVybSAiUmFuZ2UiIGluc3RlYWQKKyAgICAgICAgb2YgdGhlIHRlcm0g
Ikl0ZXJhdG9yQWRhcHRlciIgZm9yIHRoZSBjbGFzcyB0ZW1wbGF0ZXMgZm9yIHVzZSBpbiByYW5n
ZS1iYXNlZAorICAgICAgICBmb3IgbG9vcHMgc2luY2UgdGhhdCdzIGNsb3NlciB0byBtb2Rlcm4g
QysrIHRlcm1pbm9sb2d5LiBVc2UgbnVsbHB0ciBhcyBhCisgICAgICAgIHNlbnRpbmVsIGZvciBl
bmQsIHdoaWNoIHdvcmtzIHdlbGwgd2l0aCByYW5nZS1iYXNlZCBmb3IgbG9vcHMuIE1hZGUgbWFu
eQorICAgICAgICBmdW5jdGlvbiBtZW1iZXJzIGNvbnN0IHdoZXJlIGFwcHJvcHJpYXRlLiBEZWxl
dGVkIGVsZW1lbnRDaGlsZHJlbi4KKworICAgICAgICAqIGRvbS9FbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBkb20vRWxlbWVudEl0ZXJhdG9yLmg6IENo
YW5nZWQgRWxlbWVudEl0ZXJhdG9yIHRvIGRlcml2ZSBmcm9tIHN0ZDo6aXRlcmF0b3IKKyAgICAg
ICAgdG8gbWFrZSBpdGVyYXRvciB0cmFpdHMgd29yayBmb3IgYWxsIGNsYXNzZXMgZGVyaXZlZCBm
cm9tIGl0LiBNYWRlIGNvbnN0cnVjdG9ycworICAgICAgICBvZiBFbGVtZW50SXRlcmF0b3IgcHJp
dmF0ZSB0byBtYWtlIGl0IGNsZWFyIGl0J3MgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBhIGJhc2UK
KyAgICAgICAgY2xhc3MgYW5kIG5vdCBpbnN0YW50aWF0ZWQuIEFkZGVkIGFuIGVtcHR5IGNvbnN0
cnVjdG9yLiBEZWxldGVkIHRoZSA9PSBvcGVyYXRvci4KKyAgICAgICAgQWRkZWQgY29udmVyc2lv
bnMgdG8gYm9vbCBhbmQgb3BlcmF0b3IhIHNvIHRoZSBpdGVyYXRvciBjYW4gYmUgdXNlZCAibnVs
bCBzdHlsZSIKKyAgICAgICAgb3V0c2lkZSBvZiByYW5nZS1iYXNlZCBmb3IgbG9vcHMuIEFkZGVk
IGEgIT0gb3BlcmF0b3IgdGhhdCB3b3JrcyB3aXRoIG51bGxwdHIKKyAgICAgICAgc28gd2UgY2Fu
IHVzZSBudWxscHRyIGFzIGEgc2VudGluZWwgaW4gcmFuZ2UtYmFzZWQgZm9yIGxvb3BzLiBGb3Ig
dGhlICE9CisgICAgICAgIG9wZXJhdG9yLCByZWxheGVkIHRoZSBhc3NlcnRpb25zLCBzaW5jZSBj
b21wYXJpbmcgd2l0aCBhbm90aGVyIGl0ZXJhdG9yIHdvcmtzCisgICAgICAgIGZpbmUgZXZlbiBp
ZiB0aGUgRE9NIHRyZWUgaXMgbXV0YXRlZCwgYW5kIGEgbnVsbCBlbGVtZW50IGNhbiBiZSBjb21w
YXJlZCB3aXRoCisgICAgICAgIGFub3RoZXIgZXZlbiBpZiB0aGUgcm9vdCBlbGVtZW50IGlzIG5v
dCB0aGUgc2FtZS4gRGVsZXRlZCBFbGVtZW50Q29uc3RJdGVyYXRvci4KKworICAgICAgICAqIGRv
bS9MaXZlTm9kZUxpc3QuY3BwOiBSZW1vdmVkIHNvbWUgdW5uZWVkZWQgaW5jbHVkZXMsIGluY2x1
ZGluZyBIVE1MQ29sbGVjdGlvbi5oLgorICAgICAgICAoV2ViQ29yZTo6TGl2ZU5vZGVMaXN0OjpM
aXZlTm9kZUxpc3QpOiBTaW1wbGlmaWVkIGEgbGl0dGxlIGJpdC4KKyAgICAgICAgKFdlYkNvcmU6
OkxpdmVOb2RlTGlzdDo6cm9vdE5vZGUpOiBNb3ZlZCB0byB0aGUgaGVhZGVyLgorCisgICAgICAg
ICogZG9tL0xpdmVOb2RlTGlzdC5oOiBVcGRhdGVkIHNpbmNlIENvbGxlY3Rpb25UcmF2ZXJzYWwg
bm93IHVzZXMgdGhlCisgICAgICAgIG1vcmUgbW9kZXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IsIG5vdCB0aGUgb2xkZXIgb25lIHRoYXQgdXNlZCBhIHZlY3RvciBvZgorICAgICAgICBhbmNl
c3RvcnMgdG8gZG8gdGhlIGl0ZXJhdGlvbi4gQWxzbyB1c2UgV1RGX01BS0VfSVNPX05PTkFMTE9D
QVRBQkxFIHNpbmNlCisgICAgICAgIExpdmVOb2RlTGlzdCBpcyBhbiBhYnN0cmFjdCBjbGFzcywg
YW5kIG1hZGUgc29tZSBtZW1iZXJzIHByb3RlY3RlZC4gUmVtb3ZlZAorICAgICAgICBDYWNoZWRM
aXZlTm9kZUxpc3Q6OnJvb3ROb2RlIHNpbmNlIGl0IHdhcyBpZGVudGljYWwgdG8gTGl2ZU5vZGVM
aXN0Ojpyb290Tm9kZSwKKyAgICAgICAgYW5kIG1hZGUgTGl2ZU5vZGVMaXN0Ojpyb290Tm9kZSBw
cm90ZWN0ZWQgc28gaXQgY2FuIGJlIGNhbGxlZCBpbgorICAgICAgICBDYWNoZWRMaXZlTm9kZUxp
c3QsIGFuZCBtb3ZlZCBpdCB0byB0aGUgaGVhZGVyIHNvIGl0IHdpbGwgc3RpbGwgYmUgaW5saW5l
ZC4KKyAgICAgICAgU2ltcGxpZmllZCBDYWNoZWRMaXN0Tm9kZUxpc3QgdG8gdXNlIG1vcmUgZmlu
YWwsIHRvIG5hbWUgbG9uZyB0eXBlcyBsZXNzIGJ5CisgICAgICAgIHVzaW5nICJhdXRvIiBhbmQg
InVzaW5nIiwgYW5kIHRvIG5vdCBwYXNzIGFyZ3VtZW50cyB0byBmdW5jdGlvbnMgdGhhdCBkb24n
dAorICAgICAgICBuZWVkIHRoZW0gYW55IG1vcmUuCisKKyAgICAgICAgKiBkb20vTmFtZU5vZGVM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVOb2RlTGlzdDo6Y3JlYXRlKTogTW92ZWQg
aGVyZSBmcm9tIHRoZSBoZWFkZXIuCisgICAgICAgICogZG9tL05hbWVOb2RlTGlzdC5oOiBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGVzIGFuZCBjb21tZW50LCBtb3ZlZCBjcmVhdGUKKyAgICAgICAg
ZnVjbnRpb24gb3V0IG9mIHRoZSBoZWFkZXIuCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6IFJl
bW92ZWQgdW5uZWVkZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlvbi5oLgorCisgICAgICAgICog
ZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlz
dDo6Y2xvc2VzdCBjb25zdCk6IFVzZSBsaW5lYWdlZU9mVHlwZSBpbnN0ZWFkIG9mIGFuCisgICAg
ICAgIGV4cGxpY2l0IGxvb3AuCisgICAgICAgIChXZWJDb3JlOjplbGVtZW50c0ZvckxvY2FsTmFt
ZSk6IFVzZSBkZXNjZW5kYW50c09mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnREZXNjZW5kYW50cy4K
KyAgICAgICAgKFdlYkNvcmU6OmFueUVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVUYWdOYW1lU2VsZWN0b3JEYXRhIGNvbnN0
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2lu
Z2xlQ2xhc3NOYW1lU2VsZWN0b3JEYXRhIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlU2VsZWN0b3JEYXRhIGNvbnN0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlTXVs
dGlTZWxlY3RvckRhdGEgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
RGF0YUxpc3Q6OmV4ZWN1dGVDb21waWxlZFNpbXBsZVNlbGVjdG9yQ2hlY2tlciBjb25zdCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZUNvbXBpbGVk
U2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dCBjb25zdCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZUNvbXBpbGVkU2luZ2xlTXVsdGlT
ZWxlY3RvckRhdGEgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGRvbS9TbG90QXNzaWdubWVu
dC5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisKKyAgICAgICAgKiBkb20vVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yLmg6IE1vdmVkIHRoZSBkZWNsYXJhdGlvbnMgb2YgdGhlIGZ1bmN0aW9u
cworICAgICAgICB0byB0aGUgdG9wIG9mIHRoZSBmaWxlLCBzaW5jZSB0aGUgY2xhc3NlcyBhcmUg
cmVhbGx5IGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisgICAgICAgIFJlbmFtZWQgdGhlIGNsYXNz
ZXMgdG8gdGFrZSBvdXQgdGhlIHdvcmQgInR5cGVkIiBzaW5jZSB0aGVzZSBpdGVyYXRvcnMgYXJl
IHRoZQorICAgICAgICBzYW1lIGFzIHRoZSBhbmNlc3RvciBhbmQgY2hpbGRyZW4gaXRlcmF0b3Jz
OyB0aGlzIGdpdmVzIHRoZXNlIHRoZSBzYW1lIG5hbWUgYXMKKyAgICAgICAgdGhlIGNsYXNzZXMg
aW4gdGhlIGRlbGV0ZWQgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIGZpbGUsIGFuZCB3ZSBj
YW4gZm9sbG93CisgICAgICAgIHVwIGJ5IHJlbmFtaW5nIHRoaXMgZmlsZSB0byB0YWtlICJUeXBl
ZCIgb3V0IG9mIHRoZSBuYW1lIG9mIHRoZSBmaWxlLCB0b28uCisgICAgICAgIFJlbW92ZWQgdGhl
IHNlcGFyYXRlICJDb25zdCIgdmVyc2lvbnMgb2YgZXZlcnl0aGluZyBzaW5jZSB3ZSBjYW4ganVz
dCB1c2UKKyAgICAgICAgY29uc3QgaW4gdGhlIHRlbXBsYXRlIGFyZ3VtZW50IHR5cGUgaW5zdGVh
ZC4gVXNlIHRoZSB0ZXJtICJSYW5nZSIgaW5zdGVhZAorICAgICAgICBvZiB0aGUgdGVybSAiSXRl
cmF0b3JBZGFwdGVyIiBmb3IgdGhlIGNsYXNzIHRlbXBsYXRlcyBmb3IgdXNlIGluIHJhbmdlLWJh
c2VkCisgICAgICAgIGZvciBsb29wcyBzaW5jZSB0aGF0J3MgY2xvc2VyIHRvIG1vZGVybiBDKysg
dGVybWlub2xvZ3kuIFVzZSBudWxscHRyIGFzIGEKKyAgICAgICAgc2VudGluZWwgdmFsdWUgZm9y
IHRoZSBlbmQgZnVuY3Rpb25zLiBNYWRlIG1hbnkgZnVuY3Rpb24gbWVtYmVycyBjb25zdCB3aGVy
ZQorICAgICAgICBhcHByb3ByaWF0ZS4gQWRkZWQgYSBuZXcgc3BlY2lhbGl6YXRpb24gdGhhdCBt
YWtlcyBhIGRlc2NlbmRhbnQgaXRlcmF0b3IgdGhhdAorICAgICAgICBpcyBmaWx0ZXJlZCBiYXNl
ZCBvbiBhIGZ1bmN0aW9uLCBmb3IgdXNlIGluIGl0ZXJhdGluZyBkYXRhIGxpc3Qgc3VnZ2VzdGlv
bnMuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCBjb25zdCk6IFVzZSB0aGUgZnVu
Y3Rpb24KKyAgICAgICAgZGVzY2VuZGFudHNPZlR5cGU8SFRNTEJvZHlFbGVtZW50PiBpbnN0ZWFk
IG9mIGdldEVsZW1lbnRCeVRhZ05hbWUoYm9keVRhZykuCisgICAgICAgIEFsc28gbWVyZ2VkIGFw
cGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50IGluIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmFwcGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKworICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmg6IERlbGV0ZWQgYXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQu
CisKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNjYW5Gb3JGb3JtKTogVHdlYWtlZCB1c2FnZSBzbyB0aGVyZSdzIG5vIGV4cGxpY2l0IHVz
ZSBvZiBlbmQuCisgICAgICAgIEFsc28gY2hhbmdlZCBpZiBuZXN0aW5nIGEgbGl0dGxlIGJpdC4K
KworICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uUnVsZU1hdGNoZXI6OmlzRXhjbHVkZWQpOiBVc2UgbGlu
ZWFnZU9mVHlwZSBpbnN0ZWFkIG9mCisgICAgICAgIGVsZW1lbnRMaW5lYWdlLgorCisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06IFVwZGF0ZWQgaW5jbHVk
ZXMuCisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOiBEaXR0by4KKworICAgICAgICAqIGh0
bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDogVXBkYXRlZCBpbmNsdWRlcywgc2hvcnRlbmVkIHR5
cGUgbmFtZXMsCisgICAgICAgIGFuZCB1c2VkIGF1dG8gdG8gc2ltcGxpZnkgdGhlIGNvZGUgYSBi
aXQuIFJlbW92ZWQgdW5uZWVkZWQgY29sbGVjdGlvbiBhcmd1bWVudHMKKyAgICAgICAgZnJvbSB2
YXJpb3VzIENvbGxlY3Rpb25JbmRleENhY2hlIGZ1bmN0aW9ucy4KKworICAgICAgICAqIGh0bWwv
Q29sbGVjdGlvblRyYXZlcnNhbC5oOiBVcGRhdGVkIHRvIHVzZSB0aGUgbmV3L3R5cGVkIHZlcnNp
b24gb2YKKyAgICAgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci4gUmVtb3ZlZCBlbmQgZnVu
Y3Rpb25zLiBVc2Ugc2hvcnRlciB0eXBlIG5hbWVzLgorICAgICAgICBSZXdyb3RlIGFsZ29yaXRo
bXMgdG8gdXNlIG51bGwgdGVybWluYXRpb24gZm9yIGxvb3BzIGluc3RlYWQgb2YgZW5kIGl0ZXJh
dG9yCisgICAgICAgIHZhbHVlcy4KKworICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OnN1Z2dlc3RlZENvbG9ycyBjb25z
dCk6IFVzZSB0aGUgbmV3CisgICAgICAgIEhUTUxEYXRhTGlzdEVsZW1lbnQ6OnN1Z2dlc3Rpb25z
IGluc3RlYWQgb2YgSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBodG1sL0dlbmVyaWNDYWNo
ZWRIVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb248dHJhdmVyc2FsVHlwZT46OmVsZW1lbnRNYXRjaGVzIGNvbnN0KToKKyAgICAg
ICAgVXBkYXRlZCB0byB1c2UgSFRNTERhdGFMaXN0RWxlbWVudDo6aXNTdWdnZXN0aW9uIGFuZCBh
ZGRlZCBhIGNvbW1lbnQgZXhwbGFpbmluZworICAgICAgICB3aHkgdGhhdCBtaWdodCBub3QgYmUg
bmVjZXNzYXJ5IGlmIHdlIGNvcnJlY3QgdGhlIGltcGxlbWVudGF0aW9uIHRvIG1hdGNoIHRoZQor
ICAgICAgICBIVE1MIHNwZWNpZmljYXRpb24uCisKKyAgICAgICAgKiBodG1sL0hUTUxBbGxDb2xs
ZWN0aW9uLmlkbDogU3BlY2lmeSBbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIG9uIHRoZQor
ICAgICAgICBhcmd1bWVudCB0byBuYW1lZEl0ZW0sIGFuZCBbQXRvbVN0cmluZ10gZm9yIHRoZSBh
cmd1bWVudCB0byBpdGVtLgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaWRsOiBEaXR0
by4KKworICAgICAgICAqIGh0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRGF0YUxpc3RFbGVtZW50Ojppc1N1Z2dlc3Rpb24pOiBBZGRlZC4KKyAgICAg
ICAgKiBodG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuaDogQWRkZWQgaXNTdWdnZXN0aW9uIGFuZCBz
dWdnZXN0aW9ucyBmdW5jdGlvbnMgc28KKyAgICAgICAgbG9naWMgYWJvdXQgd2hpY2ggZGF0YSBs
aXN0IG9wdGlvbnMgYXJlIHN1Z2dlc3Rpb25zIGlzIHNoYXJlZC4KKworICAgICAgICAqIGh0bWwv
SFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWxlbWVudEFmZmVjdHNEaXJlY3Rp
b25hbGl0eSk6IFJlZmFjdG9yZWQgc28gd2UgZ2V0IGEgbW9yZSBlZmZpY2llbnQKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gd2hlbiB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudCBpcyBrbm93bi4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjphZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVk
QWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICBVc2UgbGluZWFnZU9mVHlwZSBp
bnN0ZWFkIG9mIGVsZW1lbnRMaW5lYWdlLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5o
OiBSZW1vdmVkIHNvbWUgdW5lZWVkZWQgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAg
KiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZFdpZGdl
dFJlbmRlcmVyKTogVXNlIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEgbG9vcC4KKworICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpjb21wdXRlV2lsbFZhbGlkYXRlIGNvbnN0KTogVXNl
CisgICAgICAgIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEgbG9vcC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmVuY2xvc2luZ0Zvcm1Db250cm9sRWxlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6IERl
bGV0ZWQgdW51c2VkIGVuY2xvc2luZ0Zvcm1Db250cm9sRWxlbWVudC4KKworICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKTogVXNl
CisgICAgICAgIHNob3J0IGZvcm0gQ2FjaGVkSFRNTENvbGxlY3Rpb24gaW5zdGVhZCBvZiB3cml0
aW5nIG91dCBhbGwgdGhlIHRlbXBsYXRlIGFyZ3VtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpvd25lck5vZGUgY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGVG
b3JEb2N1bWVudCk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5pZGw6IFNwZWNpZnkgW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBvbgorICAg
ICAgICB0aGUgYXJndW1lbnQgdG8gbmFtZWRJdGVtLgorCisgICAgICAgICogaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxl
bWVudEluZGV4KTogVXBkYXRlZCBjb2RlIHRoYXQgY2hlY2tzIHRoZQorICAgICAgICBmaXJzdCBl
bGVtZW50IHRvIHVzZSBvcGVyYXRvciEgaW5zdGVhZCBvZiBjb21wYXJpbmcgd2l0aCBlbmQuCisK
KyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOiBSZW1vdmVkIHVubmVlZGVk
IGluY2x1ZGUgb2YgSFRNTENvbGxlY3Rpb24uaC4KKworICAgICAgICAqIGh0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHA6IENsZWFyZWQgc3RyYXkgZXhlY3V0YWJsZSBiaXQuCisKKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6c2V0dXBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzKTogVXNlIHRoZSBuZXcKKyAgICAg
ICAgSFRNTERhdGFMaXN0RWxlbWVudDo6c3VnZ2VzdGlvbnMgaW5zdGVhZCBvZiBIVE1MQ29sbGVj
dGlvbi4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQpOiBVc2UgYSBi
b29sZWFuIHRlc3QgcmF0aGVyCisgICAgICAgIHRoYW4gY29tcGFyaW5nIHdpdGggZW5kIGluIHRo
ZSB1bnVzdWFsIGxvb3AgaGVyZS4KKworICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojpvd25lclNlbGVj
dEVsZW1lbnQgY29uc3QpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2Yg
YSBoYW5kLXdyaXR0ZW4gbG9vcC4KKworICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KTogVXNlIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mCisgICAgICAgIGNhbGxpbmcgb3duZXJE
YXRhTGlzdEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVu
dDo6b3duZXJEYXRhTGlzdEVsZW1lbnQgY29uc3QpOiBEZWxldGVkLiBTaW5jZSB0aGUKKyAgICAg
ICAgc2FtZSBvcHRpb24gY2FuIGJlIHVzZWQgYnkgbmVzdGVkIGRhdGEgbGlzdCBlbGVtZW50cywg
dGhlIGNvbmNlcHQgb2YgYSBzaW5nbGUKKyAgICAgICAgIm93bmVyIiBkYXRhIGxpc3QgZWxlbWVu
dCBpc24ndCBmdWxseSBjb3JyZWN0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1l
bnQ6Om93bmVyU2VsZWN0RWxlbWVudCBjb25zdCk6IFVzZSBhbmNlc3RvcnNPZlR5cGUKKyAgICAg
ICAgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorICAgICAgICAqIGh0bWwvSFRNTE9w
dGlvbkVsZW1lbnQuaDogRGVsZXRlZCBvd25lckRhdGFMaXN0RWxlbWVudC4KKworICAgICAgICAq
IGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbDogU3BlY2lmeSBbUmVxdWlyZXNFeGlzdGlu
Z0F0b21TdHJpbmddIG9uCisgICAgICAgIHRoZSBhcmd1bWVudCB0byBuYW1lZEl0ZW0uCisKKyAg
ICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOiBVcGRhdGVkIGluY2x1ZGVz
LgorCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGw6IFNwZWNpZnkgW1JlcXVp
cmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBvbgorICAgICAgICB0aGUgYXJndW1lbnQgdG8gbmFtZWRJ
dGVtLgorCisgICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0
dHJpYnV0ZVN0eWxlIGNvbnN0KToKKyAgICAgICAgVXNlIGF1dG8gc2luY2UgZmluZFBhcmVudFRh
YmxlIG5vdyByZXR1cm5zIGEgY29uc3QgdGFibGUgcG9pbnRlci4KKyAgICAgICAgKiBodG1sL0hU
TUxUYWJsZUNvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlQ29sRWxl
bWVudDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlIGNvbnN0KToKKyAgICAg
ICAgRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKTogTWFk
ZSBjb25zdC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxD
ZWxsU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmFk
ZGl0aW9uYWxHcm91cFN0eWxlKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVt
ZW50Lmg6IE1hZGUgdGhlIGZ1bmN0aW9ucyBjb25zdCwgYW5kIG1fc2hhcmVkQ2VsbFN0eWxlCisg
ICAgICAgIG11dGFibGUuCisKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZVBhcnRFbGVtZW50OjpmaW5kUGFyZW50VGFi
bGUgY29uc3QpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2YgYSBoYW5k
LXdyaXR0ZW4gbG9vcC4gQWxzbyByZXZpc2VkIHJldHVybiB0eXBlIHRvIGJlIGNvbnN0LWNvbnNp
c3RlbnQuCisgICAgICAgICogaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5oOiBVcGRhdGVkIHJl
dHVybiB0eXBlLgorCisgICAgICAgICogaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHA6
IFJlbW92ZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlvbi5oLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6Om51bVJvd3MgY29uc3QpOiBVc2UgYW4gZW1wdHkgaW5p
dGlhbGl6ZXIKKyAgICAgICAgbGlzdCBpbnN0ZWFkIG9mIHRoZSByZXN1bHQgb2YgdGhlIGVuZCBm
dW5jdGlvbiBzaW5jZSBzdGQ6OmRpc3RhbmNlIHJlcXVpcmVzCisgICAgICAgIGJvdGggYmVnaW4g
YW5kIGVuZCBpdGVyYXRvcnMgaGF2ZSB0aGUgc2FtZSB0eXBlLgorCisgICAgICAgICogaHRtbC9I
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRI
VE1MRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6ZGlyZWN0aW9uRm9yRm9ybURhdGEgY29uc3QpOiBVc2UKKyAgICAgICAgbGlu
ZWFnZU9mVHlwZSByYXRoZXIgdGhhbiBhIGhhbmQtd3JpdHRlbiBsb29wLiBBbHNvIGdvdCByaWQg
b2YgdGhlIG11bHRpcGxlCisgICAgICAgIHN0cmluZ3MgaW4gcmV0dXJuIHBhdGhzIHNpbmNlIHRo
ZSBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBvbmUgb2YgdHdvIHN0cmluZ3MuCisKKyAgICAgICAg
KiBodG1sL0xhYmVsc05vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxhYmVsc05vZGVM
aXN0OjpjcmVhdGUpOiBNb3ZlZCBoZXJlIGZyb20gaGVhZGVyLgorICAgICAgICAqIGh0bWwvTGFi
ZWxzTm9kZUxpc3QuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLCB0d2Vha2VkIGNvZGluZyBz
dHlsZSBhIGJpdCwKKyAgICAgICAgbW92ZWQgY3JlYXRlIGZ1bmN0aW9uIGludG8gdGhlIC5jcHAg
ZmlsZSwgcmVtb3ZlZCBvdmVycmlkZSBvZiBpc1Jvb3RlZEF0RG9jdW1lbnQuCisKKyAgICAgICAg
KiBodG1sL01lZGlhRG9jdW1lbnQuY3BwOiBVcGRhdGVkIGluY2x1ZGVzLgorCisgICAgICAgICog
aHRtbC9SYWRpb05vZGVMaXN0LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorICAgICAg
ICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6Y3JlYXRlKTogTW92ZWQgdGhpcyBoZXJlIGZyb20g
dGhlIGhlYWRlci4KKyAgICAgICAgKFdlYkNvcmU6Om5vbkVtcHR5UmFkaW9CdXR0b24pOiBSZW5h
bWVkIGZyb20gdG9SYWRpb0J1dHRvbklucHV0RWxlbWVudCB0byBtYWtlCisgICAgICAgIGEgbGl0
dGxlIGNsZWFyZXIgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcy4KKyAgICAgICAgKFdlYkNvcmU6OlJh
ZGlvTm9kZUxpc3Q6OnZhbHVlIGNvbnN0KTogVXBkYXRlZCB0byB1c2Ugbm9uRW1wdHlSYWRpb0J1
dHRvbiBhbmQKKyAgICAgICAgc3RyYWlnaHRlbiBvdXQgdGhlIGxvb3AgYSB0aW55IGJpdC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6OnNldFZhbHVlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSYWRpb05vZGVMaXN0OjpjaGVja0VsZW1lbnRNYXRjaGVzUmFkaW9Ob2RlTGlz
dEZpbHRlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSYWRpb05vZGVMaXN0
OjplbGVtZW50TWF0Y2hlcyBjb25zdCk6IE1lcmdlZCBpbiB0aGUgbG9naWMgZnJvbQorICAgICAg
ICBjaGVja0VsZW1lbnRNYXRjaGVzUmFkaW9Ob2RlTGlzdEZpbHRlciwgc2luY2UgdGhlIHNlcGFy
YXRlIGZ1bmN0aW9uIHdhc24ndCBoZWxwZnVsLgorICAgICAgICAqIGh0bWwvUmFkaW9Ob2RlTGlz
dC5oOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzLiBNb3ZlZCB0aGUgY3JlYXRlIGZ1bmN0aW9u
IG91dAorICAgICAgICBvZiB0aGUgaGVhZGVyLiBSZW1vdmVkIHVubmVlZGVkIG92ZXJyaWRlIG9m
IHRoZSBpdGVtIGZ1bmN0aW9uIHRvIHRpZ2h0ZW4gdGhlCisgICAgICAgIHJldHVybiB0eXBlOyBu
b3QgdXNlZCBpbiBXZWJDb3JlIGFuZCBub3QgaGVscGZ1bCBmb3IgYmluZGluZ3MuIE1hZGUgbW9y
ZSBwcml2YXRlLgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6aXRlbSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9SYWRpb05vZGVMaXN0LmlkbDogUmVtb3ZlZCB1bm5l
ZWRlZCBnZXR0ZXI7IHRoZSBpbmhlcml0ZWQgb25lIGZyb20gTm9kZUxpc3QKKyAgICAgICAgd29y
a3MgY29ycmVjdGx5LCBhbmQgdGhpcyBpc24ndCBtb3JlIGVmZmljaWVudCBiZWNhdXNlIG9mIGEg
bW9yZSBzcGVjaWZpYyB0eXBlLgorCisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9ucyk6
IFVzZSBIVE1MRGF0YUxpc3RFbGVtZW50OjpzdWdnZXN0aW9ucworICAgICAgICBpbnN0ZWFkIG9m
IEhUTUxDb2xsZWN0aW9uLiBBbHNvIGFkZGVkIGEgRklYTUUgYmVjYXVzZSB0aGUgY3VycmVudCBs
b2dpYyBpcworICAgICAgICBub3QgcmlnaHQgYWNyb3NzIGxhbmd1YWdlcyBhbmQgd2l0aCBub24t
QVNDSUkgY2hhcmFjdGVycy4KKworICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cDogUmVtb3ZlZCBpbmNsdWRlIG9mIEhUTUxDb2xsZWN0aW9uLmguCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0RWxlbWVudHNCeUNv
bXB1dGVkUm9sZSk6CisgICAgICAgIFVzZSBkZXNjZW5kYW50c09mVHlwZSBpbnN0ZWFkIG9mIGVs
ZW1lbnREZXNjZW5kYW50cy4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1h
dGNoZWRTdHlsZXNGb3JOb2RlKTogVXNlIGFuY2VzdG9yc09mVHlwZQorICAgICAgICBpbnN0ZWFk
IG9mIGEgaGFuZC13cml0dGVuIGxvb3AuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjppbnNwZWN0KTogVXNlIGlzRWxlbWVudE5vZGUgYW5kIGlzRG9jdW1lbnROb2RlCisgICAgICAg
IGluc3RlYWQgb2YgdGhlIG11Y2ggc2xvd2VyIG5vZGVUeXBlLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE1vdXNlZE92ZXJOb2RlKTogVXNlIGlzVGV4dE5v
ZGUgaW5zdGVhZCBvZgorICAgICAgICB0aGUgbXVjaCBzbG93ZXIgbm9kZVR5cGUuCisKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOiBEaXR0by4KKworICAgICAgICAq
IHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbmluZ0xp
bmtFbGVtZW50KTogQWRkZWQuIFVzZXMgbGluZWFnZU9mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnRM
aW5lYWdlLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyk6
IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0F4aXNT
Y3JvbGxTbmFwT2Zmc2V0cy5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlvbi5o
LgorCisgICAgICAgICogcGxhdGZvcm0vRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oOiBSZWR1
Y2VkIGluY2x1ZGVzLCB1c2UgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBh
aW50U2xpZGVyVGlja3MpOiBVc2UgSFRNTERhdGFMaXN0RWxlbWVudDo6c3VnZ2VzdGlvbnMKKyAg
ICAgICAgaW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBw
b3J0Ojp1cGRhdGVNYXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyk6CisgICAgICAg
IFVzZSBhbmNlc3RvcnNPZlR5cGUgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorCisg
ICAgICAgICogc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6SW52YWxpZGF0b3I6OmludmFsaWRhdGVTdHlsZUZvckRlc2NlbmRhbnRzKTogVXNlIG51
bGwgY2hlY2tpbmcKKyAgICAgICAgc3R5bGUgZm9yIHRoZSBmb3IgbG9vcCByYXRoZXIgdGhhbiBj
b21wYXJpbmcgd2l0aCBlbmQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SW52YWxpZGF0b3I6
OmludmFsaWRhdGVTdHlsZVdpdGhNYXRjaEVsZW1lbnQpOiBSZW1vdmUgYW4gdW5uZWVkZWQKKyAg
ICAgICAgbG9jYWwgdmFyaWFibGUgYW5kIHVubmVlZGVkIGJyYWNlcy4KKworICAgICAgICAqIHN0
eWxlL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OmlzQXRTaGFk
b3dCb3VuZGFyeSk6IFVzZSB0aGUgaXM8U2hhZG93Um9vdD4gZnVuY3Rpb24uCisKKyAgICAgICAg
KiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6IFVzZSB0aGUgaXM8U1ZHRWxlbWVudD4gZnVuY3Rpb24uCisg
ICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVu
dDo6dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24pOiBEaXR0by4KKworICAgICAgICAq
IHN2Zy9TVkdFbGVtZW50Lmg6IE1hZGUgY29tcHV0ZWRTdHlsZSBwdWJsaWMuIEF0IGxlYXN0IG9u
ZSBjYWxsIHNpdGUgbm93IGtub3dzIHRoZQorICAgICAgICBzcGVjaWZpYyB0eXBlIFNWR0VsZW1l
bnQsIGFuZCBzbyBjYW4gY2FsbCBpdCBldmVuIG1vcmUgZWZmaWNpZW50bHkgdGhhbiBiZWZvcmUu
IElmCisgICAgICAgIHdlIGxlZnQgaXQgcHJpdmF0ZSB3ZSdkIGhhdmUgdG8gY2FzdCB0byB0aGUg
YmFzZSBjbGFzcyB0byBjYWxsIGl0LCBhbmQgdGhlbiB3b3VsZCBuZWVkCisgICAgICAgIHZpcnR1
YWwgZnVuY3Rpb24gZGlzcGF0Y2guCisKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVEaXNhbGxvd2VkRWxlbWVudHNGcm9tU3VidHJlZSk6
IFVzZSBudWxsIGNoZWNraW5nIHN0eWxlIHJhdGhlciB0aGFuCisgICAgICAgIGNvbXBhcmluZyB3
aXRoIGVuZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmV4cGFuZFVzZUVsZW1l
bnRzSW5TaGFkb3dUcmVlIGNvbnN0KTogRGl0dG8uIEFsc28gYXNzaWduCisgICAgICAgIGFuIGVt
cHR5IGluaXRpYWxpemVyIGxpc3QgaW5zdGVhZCBvZiBlbmQuCisgICAgICAgIChXZWJDb3JlOjpT
VkdVc2VFbGVtZW50OjpleHBhbmRTeW1ib2xFbGVtZW50c0luU2hhZG93VHJlZSBjb25zdCk6IERp
dHRvLgorCisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KTog
VXNlIGxpbmVhZ2VPZlR5cGUgaW5zdGVhZCBvZgorICAgICAgICBlbGVtZW50TGluZWFnZS4gQWxz
byBhZGQgYSBudWxsIGNoZWNrIHRoYXQgc2VlbXMgdG8gaGF2ZSBiZWVuIG5lZWRlZCBiZWZvcmUg
dG9vLgorCiAyMDIwLTAyLTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJl
Rm9yTWVkaWEgaXMgbm90IG5lZWRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlY2MzY2JiNTNjOWZhZmM5MTg1MWU4
ZDU3Y2JlM2I1NmU0MWQyZTcyLi41ZWU5YzNiYTI0YjMwNDM1N2RjYjQxODY5YzdiOTVhN2RkMGVi
ZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTAyLTE4ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpc2UgRE9NIGl0ZXJhdG9ycyBpbXBsZW1l
bnRhdGlvbiBhbmQgdXNhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNzgxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb250YWluZXJFbGVtZW50Rm9yRWxlbWVudCk6IFVl
cyBhbmNlc3RvcnNPZlR5cGUgaW5zdGVhZCBvZiBvd25lckRhdGFMaXN0RWxlbWVudC4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHA6IFVw
ZGF0ZWQgaW5jbHVkZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3Jl
YXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKTogUGFzcyByZWZlcmVuY2VzLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OldlYkRh
dGFMaXN0U3VnZ2VzdGlvblBpY2tlcik6IFRha2UgcmVmZXJlbmNlcworICAgICAgICBpbnN0ZWFk
IG9mIHBvaW50ZXJzLCBzaW5jZSB0aGV5IG11c3QgYm90aCBiZSBub24tbnVsbC4KKyAgICAgICAg
KFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpoYW5kbGVLZXlkb3duV2l0aElk
ZW50aWZpZXIpOiBVcGRhdGVkCisgICAgICAgIHRvIHVzZSByZWZlcmVuY2UuCisgICAgICAgIChX
ZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlkU2VsZWN0T3B0aW9uKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlkQ2xv
c2VTdWdnZXN0aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dl
c3Rpb25QaWNrZXI6OmNsb3NlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0
U3VnZ2VzdGlvblBpY2tlcjo6ZGlzcGxheVdpdGhBY3RpdmF0aW9uVHlwZSk6IERpdHRvLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXIuaDogTWFya2VkIHRoZSBjbGFzcworICAgICAgICBmaW5hbCwgbWFkZSBtb3JlIGZ1bmN0
aW9ucyBwcml2YXRlLCB1c2UgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzLAorICAgICAg
ICByZW5hbWVkIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCB0byBtX2NsaWVudCBzaW5jZSB0
aGVyZSBpcyBvbmx5IG9uZQorICAgICAgICBjbGllbnQgd2UgYXJlIGRlYWxpbmcgd2l0aCBpbiB0
aGlzIGNsYXNzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9ybUVsZW1lbnRzIGNvbnN0
KTogVXNlIGNoaWxkcmVuT2ZUeXBlIGluc3RlYWQKKyAgICAgICAgb2YgYSBoYW5kLXdyaXR0ZW4g
bG9vcC4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9ybUNvbnRyb2xz
IGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEFjdGl2ZURhdGFMaXN0U3VnZ2VzdGlv
blBpY2tlcik6IFRha2UgcmVmZXJlbmNlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udGFpbmluZ0xp
bmtBbmNob3JFbGVtZW50KTogVXNlIGxpbmVhZ2VPZlR5cGUgaW5zdGVhZCBvZiBlbGVtZW50TGlu
ZWFnZS4KKyAgICAgICAgQWxzbyByZW5hbWVkIHRvIGVtcGhhc2l6ZSB0aGF0IHRoaXMgZnVuY3Rp
b24gb25seSByZXR1cm5zIEhUTUxBbmNob3JFbGVtZW50IGxpbmtzLgorICAgICAgICAoV2ViS2l0
OjplbGVtZW50UG9zaXRpb25JbmZvcm1hdGlvbik6IFVwZGF0ZWQgZm9yIG5hbWUgYW5kIHR5cGUg
Y2hhbmdlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50
KTogRGl0dG8uCisKIDIwMjAtMDItMTggIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW1dlYktpdF0gQXZvaWQgc2VnZmF1bHQgaWYgZWRpdG9yIGNsaWVudCBpcyBu
dWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMTUxZDdjZjJjNWUxZWVhMjA3MGUx
NTc4ZGRkYzkyNzlmYjNjZmRlMC4uODU4YjRmODkyNGE4ZmEzZWZjYTdkMTkyMGFmNmUxMGQ5MWVl
YWY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIw
LTAyLTE4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpc2Ug
RE9NIGl0ZXJhdG9ycyBpbXBsZW1lbnRhdGlvbiBhbmQgdXNhZ2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzgxNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOiBDdXQg
ZG93biBvbiBpbmNsdWRlcyBhbmQgcmUtc29ydGVkIHRoZW0uCisgICAgICAgICogRE9NL0RPTURv
Y3VtZW50RnJhZ21lbnQubW06IERpdHRvLgorICAgICAgICAqIERPTS9ET01IVE1MRmllbGRTZXRF
bGVtZW50Lm1tOiBEaXR0by4KKwogMjAyMC0wMi0xOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIGZyb20gImxheWVyIGZsdXNoIiB0ZXJtaW5v
bG9neSB0byAicmVuZGVyaW5nIHVwZGF0ZSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDc0MWNmMjcy
ZGFhMTk4Yjg3Njc4OGJhNWY4YWMyYzc1MzFjM2YxYWEuLmUwNmY2YzIwYzgxMzlmNmU0YjE1NTBk
NWQ0NGM4ZjY4ZWM4YWNhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMzkwLDcgKzM5MCw2IEBA
IHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBkb20vRWxlbWVudENo
aWxkSXRlcmF0b3IuaAogICAgIGRvbS9FbGVtZW50Q29udGV4dC5oCiAgICAgZG9tL0VsZW1lbnRE
YXRhLmgKLSAgICBkb20vRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oCiAgICAgZG9tL0VsZW1l
bnRJZGVudGlmaWVyLmgKICAgICBkb20vRWxlbWVudEl0ZXJhdG9yLmgKICAgICBkb20vRWxlbWVu
dEl0ZXJhdG9yQXNzZXJ0aW9ucy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzhjODM3YThjODQ5NWZkMTNiYzljNzFhZmVmZmZm
MWNjZWU2NjBmMy4uYTI4OTdmMzljYWEwNDkzNzQ5MGMzZmY5ZDIwYjc2MGQ4NTg2YWMwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjY5Miw3ICsyNjkyLDYgQEAKIAkJOTNEMTk2MzMxRDZDQUI4MjAwRkM3RTQ3IC8qIEV4Y2Vw
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNE
MTk2MzIxRDZDQUI4MjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDQzNzlGMUQ1N0IxNTMwMEFCODVFQSAv
KiBKU0V4ZWNTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOEY5MzREODMxMTg5RjFFRTAwNTA4RDVEIC8qIEpTRXhlY1N0YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENDM3QTAxRDU3QjE5
QTAwQUI4NUVBIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjU2QzlBODFDODkzMTI4MDBDNDU2REYg
LyogQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5M0Q0MzdBMTFENTdCM0Y0MDBBQjg1RUEgLyogRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQURFMTFGNEExOEQ4MzExQjAwNzg5ODNCIC8qIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5M0Q0MzdBMjFENTdCM0ZFMDBBQjg1RUEgLyogVVJMVXRpbHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkI5RENBMTg5REUxMDAwMEJC
ODQyQyAvKiBVUkxVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzRDQzN0EzMUQ1N0I3RTIwMEFCODVFQSAvKiBKU01lZGlhTGlzdEN1c3Rv
bS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ3MjZG
RTcxNkQ5RjIwNDAwM0E0RTZEIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNEOUQ1M0MwREEyN0UxODAwNzcy
MTZDIC8qIFJhbmdlQm91bmRhcnlQb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNEOUQ1M0IwREEyN0UxODAwNzcyMTZDIC8qIFJhbmdlQm91bmRh
cnlQb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xMDcyMyw2ICsxMDcyMiw3IEBACiAJCTkzODBGNDcxMDlBMTFBQjQwMDFGREIzNCAvKiBX
aWRnZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpZGdldC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzODBGNDcyMDlBMTFBQjQwMDFGREIz
NCAvKiBXaWRnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpZGdldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzgwRjQ3NzA5QTExQUNDMDAxRkRCMzQg
LyogV2lkZ2V0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdpZGdldE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM4MUI5NDEyM0Y5
QjBFMDAwNzExOEI0IC8qIFJhZGlvTm9kZUxpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJhZGlvTm9kZUxpc3QuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzgyQUFCMTBEOEMzODYxMDBGMzU3QTYg
LyogTm9kZVdpdGhJbmRleC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb2Rl
V2l0aEluZGV4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzODJERjU3MTBBOEQ1
QzkwMDkyNTY1MiAvKiBDb2xvclNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvbG9yU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM4RTY1RjAw
OUYwOTg0MDAwOEE0OEVDIC8qIEpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5Lmg7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9y
eS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtMTIyNzAsNyArMTIy
NzAsNiBAQAogCQlBRERBOTRCRjE5Njg2RjgwMDA0NTMwMjkgLyogSlNEb2N1bWVudEN1c3RvbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RvY3VtZW50Q3VzdG9tLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEREYxQUQ0MTI1N0NEOUEwMDAzQTc1OSAvKiBS
ZW5kZXJTVkdQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bmRlclNWR1BhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRERGMUFENTEy
NTdDRDlBMDAwM0E3NTkgLyogUmVuZGVyU1ZHUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW5kZXJTVkdQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUFERTExRjRBMThEODMxMUIwMDc4OTgzQiAvKiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURFMTY3MzYxODEwNTBDMzAwNDYz
QTJFIC8qIFJlbmRlclB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5k
ZXJQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURFQzc4RjcxOEVFNTMwODAw
MTMxNUMyIC8qIEpTRWxlbWVudEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0VsZW1lbnRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURG
RTJCNTQxQkQ1RjQxMjAwREFCNDU3IC8qIFJlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZVVzYWdlT3Zlcmxh
eUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIxNDAsNiArMjIxMzks
NyBAQAogCQkJCUY1NUIzRDk4MTI1MUYxMkQwMDNFRjI2OSAvKiBSYWRpb0lucHV0VHlwZS5oICov
LAogCQkJCUI2NThGRkEzMTUyMkVGQUEwMERENTU5NSAvKiBSYWRpb05vZGVMaXN0LmNwcCAqLywK
IAkJCQlCNjU4RkZBNDE1MjJFRkFBMDBERDU1OTUgLyogUmFkaW9Ob2RlTGlzdC5oICovLAorCQkJ
CTkzODFCOTQxMjNGOUIwRTAwMDcxMThCNCAvKiBSYWRpb05vZGVMaXN0LmlkbCAqLywKIAkJCQlG
NTVCM0Q5OTEyNTFGMTJEMDAzRUYyNjkgLyogUmFuZ2VJbnB1dFR5cGUuY3BwICovLAogCQkJCUY1
NUIzRDlBMTI1MUYxMkQwMDNFRjI2OSAvKiBSYW5nZUlucHV0VHlwZS5oICovLAogCQkJCUY1NUIz
RDlCMTI1MUYxMkQwMDNFRjI2OSAvKiBSZXNldElucHV0VHlwZS5jcHAgKi8sCkBAIC0yODEyMSw3
ICsyODEyMSw2IEBACiAJCQkJMzEzQkNFMUIyMzVFM0JEQjAwRkMzOUU1IC8qIEVsZW1lbnRDb250
ZXh0LmggKi8sCiAJCQkJQjVCN0ExNkYxN0MxMDgwNjAwRTRBQTBBIC8qIEVsZW1lbnREYXRhLmNw
cCAqLywKIAkJCQlCNUI3QTE2RTE3QzEwNDgwMDBFNEFBMEEgLyogRWxlbWVudERhdGEuaCAqLywK
LQkJCQlBREUxMUY0QTE4RDgzMTFCMDA3ODk4M0IgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ci5oICovLAogCQkJCTJEMkJFQjJGMjIzNEEzMzQwMDU1NDRDQSAvKiBFbGVtZW50SWRlbnRpZmll
ci5oICovLAogCQkJCUU0QUU3QzE1MTdEMUJCOTUwMDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0b3Iu
aCAqLywKIAkJCQlFNDAxQzI3NDE3Q0U1M0VDMDBDNDFBMzUgLyogRWxlbWVudEl0ZXJhdG9yQXNz
ZXJ0aW9ucy5oICovLApAQCAtMjk3ODcsNyArMjk3ODYsNiBAQAogCQkJCUU0NkEyQjFFMTdDQTc2
QjEwMDBEQkNEOCAvKiBFbGVtZW50Q2hpbGRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzEzQkNFMUMyMzVFM0JFNTAwRkMzOUU1IC8qIEVsZW1lbnRDb250ZXh0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCNUI3QTE3MTE3QzEwQUMwMDBFNEFBMEEgLyogRWxlbWVudERhdGEuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTkzRDQzN0ExMUQ1N0IzRjQwMEFCODVFQSAvKiBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDJCRUIzMTIyMzRBMzM1MDA1NTQ0Q0Eg
LyogRWxlbWVudElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUU3QzE2MTdEMUJC
OTUwMDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0MDFD
Mjc1MTdDRTUzRUMwMEM0MUEzNSAvKiBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggMjA5ZWI4ZTY1OGUwYjczNDE4ZWMyY2QwMGNk
ODBhNDE2ZmEyOTMzYS4uNDU4YTQwNTdlMmNmZmQyZjZmODVjZTgwMWNhZjlkNjFkMjgwMjlmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAKQEAgLTEwNDQsNyArMTA0NCw3IEBAIEVsZW1lbnQqIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0Ojptb3VzZUJ1dHRvbkxpc3RlbmVyKE1vdXNlQnV0dG9uTGlzdGVuZXJS
ZXN1bHRGCiAKICAgICAvLyBjaGVjayBpZiBvdXIgcGFyZW50IGlzIGEgbW91c2UgYnV0dG9uIGxp
c3RlbmVyCiAgICAgLy8gRklYTUU6IERvIHRoZSBjb250aW51YXRpb24gc2VhcmNoIGxpa2UgYW5j
aG9yRWxlbWVudCBkb2VzCi0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudExpbmVhZ2Uo
aXM8RWxlbWVudD4oKm5vZGUpID8gZG93bmNhc3Q8RWxlbWVudD4obm9kZSkgOiBub2RlLT5wYXJl
bnRFbGVtZW50KCkpKSB7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbGluZWFnZU9mVHlwZTxF
bGVtZW50PihpczxFbGVtZW50Pigqbm9kZSkgPyBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkgOiAq
bm9kZS0+cGFyZW50RWxlbWVudCgpKSkgewogICAgICAgICAvLyBJZiB3ZSd2ZSByZWFjaGVkIHRo
ZSBib2R5IGFuZCB0aGlzIGlzIG5vdCBhIGNvbnRyb2wgZWxlbWVudCwgZG8gbm90IGV4cG9zZSBw
cmVzcyBhY3Rpb24gZm9yIHRoaXMgZWxlbWVudCB1bmxlc3MgZmlsdGVyIGlzIEluY2x1ZGVCb2R5
RWxlbWVudC4KICAgICAgICAgLy8gSXQgY2FuIGNhdXNlIGZhbHNlIHBvc2l0aXZlcywgd2hlcmUg
ZXZlcnkgcGllY2Ugb2YgdGV4dCBpcyBsYWJlbGVkIGFzIGFjY2VwdGluZyBwcmVzcyBhY3Rpb25z
LgogICAgICAgICBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKGJvZHlUYWcpICYmIGlzU3RhdGljVGV4
dCgpICYmIGZpbHRlciA9PSBFeGNsdWRlQm9keUVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApp
bmRleCA5NmYzM2NiNzM0YTcwODM2OWI0ZjNiYTNkNTQ4NDg4ZTUwNDk1NzcwLi44YTgzMDBkMDk3
ZTEwZmM0ZjMzMDM3MzM0MWMxMTRhMTcxOWEzMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjM3
NSwyMSArMjM3NSwxOSBAQCBBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNTEFyZWFFbAogICAgIGlmICghYXJlYSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJl
bnQgPSBudWxscHRyOwotICAgIGZvciAoRWxlbWVudCogbWFwUGFyZW50ID0gYXJlYS0+cGFyZW50
RWxlbWVudCgpOyBtYXBQYXJlbnQ7IG1hcFBhcmVudCA9IG1hcFBhcmVudC0+cGFyZW50RWxlbWVu
dCgpKSB7Ci0gICAgICAgIGlmIChpczxIVE1MTWFwRWxlbWVudD4oKm1hcFBhcmVudCkpIHsKLSAg
ICAgICAgICAgIHBhcmVudCA9IGFjY2Vzc2liaWxpdHlQYXJlbnRGb3JJbWFnZU1hcChkb3duY2Fz
dDxIVE1MTWFwRWxlbWVudD4obWFwUGFyZW50KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgIH0KKyAgICBhdXRvKiBtYXBQYXJlbnQgPSBhbmNlc3RvcnNPZlR5cGU8SFRNTE1h
cEVsZW1lbnQ+KCphcmVhKS5maXJzdCgpOworICAgIGlmICghbWFwUGFyZW50KQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIHBhcmVudCA9IGFjY2Vzc2liaWxpdHlQYXJlbnRG
b3JJbWFnZU1hcChtYXBQYXJlbnQpOwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAKKwogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBwYXJlbnQtPmNo
aWxkcmVuKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5lbGVtZW50UmVjdCgpLmNvbnRhaW5zKHBv
aW50KSkKICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKICAgICB9Ci0gICAgCisKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCmluZGV4IGZkYzY3ZjhhYzE1
NmE1YWRiYmFhNjEzNTc2Yjg2ODJhZTYyNzE1YTEuLmZmNDc4ZmQyMzYxNzhiYTM5YmMyMmRjMTk1
YTE0OGE1NzkyZTI3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKIAog
I2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsLmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5k
ZXggMjA1MDZmOGVjZmFjNjUzZTU1YWQwNDgxZGRhNTYwZjVmZDcyYTU0ZC4uNGUwMDlmZWQ2YmQw
ZTMxMTU3YzY2NDA5YzdiMzVmY2M3ZWZmMjMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1
ZGUgIkRPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvd1dlYkRh
dGFiYXNlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5o
IgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCkBAIC0zOCw3ICszNyw2IEBACiAjaW5j
bHVkZSAiSlNFdmVudC5oIgogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUg
IkpTSFRNTEF1ZGlvRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTSFRNTENvbGxlY3Rpb24uaCIKICNp
bmNsdWRlICJKU0hUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNJREJGYWN0b3J5Lmgi
CiAjaW5jbHVkZSAiSlNSZW1vdGVET01XaW5kb3cuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGlsZE5vZGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVM
aXN0LmNwcAppbmRleCBjYmY2ZjFlNzgyNjkxMDkyNWE2NTY1MmMzM2FlMGNmZDU2NjdiMjAzLi40
N2U0NmRjYmI1NTk4ZTc4MjM3NTU2ZGI3YTdhY2ZlMjA0OThlMTA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NoaWxkTm9kZUxpc3QuY3BwCkBAIC0zOSw3ICszOSw2IEBAIEVtcHR5Tm9kZUxpc3Q6On5FbXB0
eU5vZGVMaXN0KCkKIAogQ2hpbGROb2RlTGlzdDo6Q2hpbGROb2RlTGlzdChDb250YWluZXJOb2Rl
JiBwYXJlbnQpCiAgICAgOiBtX3BhcmVudChwYXJlbnQpCi0gICAgLCBtX2luZGV4Q2FjaGUoKnRo
aXMpCiB7CiB9CiAKQEAgLTg3LDcgKzg2LDcgQEAgdm9pZCBDaGlsZE5vZGVMaXN0Ojpjb2xsZWN0
aW9uVHJhdmVyc2VCYWNrd2FyZChOb2RlKiYgY3VycmVudCwgdW5zaWduZWQgY291bnQpIGMKIAog
dm9pZCBDaGlsZE5vZGVMaXN0OjppbnZhbGlkYXRlQ2FjaGUoKQogewotICAgIG1faW5kZXhDYWNo
ZS5pbnZhbGlkYXRlKCp0aGlzKTsKKyAgICBtX2luZGV4Q2FjaGUuaW52YWxpZGF0ZSgpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hpbGROb2RlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuaAppbmRl
eCAxMTMyODJlZDk2MjJhOWQ1MDFhYTc0ZTAzMmQ4N2M2OTFjYjkzN2I2Li4xMGI5YTI4NjkwMmY2
ZGE3MzBkMWY0M2I1M2Q3NjUzZjAwNDRmMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2hpbGROb2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0
LmgKQEAgLTcyLDcgKzcyLDYgQEAgcHVibGljOgogICAgIC8vIEZvciBDb2xsZWN0aW9uSW5kZXhD
YWNoZQogICAgIE5vZGUqIGNvbGxlY3Rpb25CZWdpbigpIGNvbnN0OwogICAgIE5vZGUqIGNvbGxl
Y3Rpb25MYXN0KCkgY29uc3Q7Ci0gICAgTm9kZSogY29sbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0
dXJuIG51bGxwdHI7IH0KICAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoTm9kZSom
LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdDsKICAgICB2
b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKE5vZGUqJiwgdW5zaWduZWQgY291bnQpIGNv
bnN0OwogICAgIGJvb2wgY29sbGVjdGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29sbGVjdGlvbklu
ZGV4Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db2xsZWN0aW9uSW5kZXhDYWNoZS5oCmlu
ZGV4IDI4MDE5NDJmZGEwODhjNWM1ZjZhMTE1YTI1OTQ3ODg1YjVlZWIxZjkuLmVkM2YwYWVmMWU0
YjY3ZDRiZWQ2N2QyNTQwN2JiZDc4MmU0YzE1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db2xsZWN0aW9uSW5kZXhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db2xs
ZWN0aW9uSW5kZXhDYWNoZS5oCkBAIC0zNCwxNSArMzQsMTUgQEAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZEZvckNvbGxlY3Rpb25JbmRleENhY2hlKHNpemVf
dCk7CiB0ZW1wbGF0ZSA8Y2xhc3MgQ29sbGVjdGlvbiwgY2xhc3MgSXRlcmF0b3I+CiBjbGFzcyBD
b2xsZWN0aW9uSW5kZXhDYWNoZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQ29sbGVjdGlvbklu
ZGV4Q2FjaGUoY29uc3QgQ29sbGVjdGlvbiYpOworICAgIENvbGxlY3Rpb25JbmRleENhY2hlKCk7
CiAKICAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6
dmFsdWVfdHlwZSBOb2RlVHlwZTsKIAogICAgIHVuc2lnbmVkIG5vZGVDb3VudChjb25zdCBDb2xs
ZWN0aW9uJik7CiAgICAgTm9kZVR5cGUqIG5vZGVBdChjb25zdCBDb2xsZWN0aW9uJiwgdW5zaWdu
ZWQgaW5kZXgpOwogCi0gICAgYm9vbCBoYXNWYWxpZENhY2hlKGNvbnN0IENvbGxlY3Rpb24mIGNv
bGxlY3Rpb24pIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudCAhPSBjb2xsZWN0aW9uLmNvbGxlY3Rp
b25FbmQoKSB8fCBtX25vZGVDb3VudFZhbGlkIHx8IG1fbGlzdFZhbGlkOyB9Ci0gICAgdm9pZCBp
bnZhbGlkYXRlKGNvbnN0IENvbGxlY3Rpb24mKTsKKyAgICBib29sIGhhc1ZhbGlkQ2FjaGUoKSBj
b25zdCB7IHJldHVybiBtX2N1cnJlbnQgfHwgbV9ub2RlQ291bnRWYWxpZCB8fCBtX2xpc3RWYWxp
ZDsgfQorICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIHNpemVfdCBtZW1vcnlDb3N0KCkKICAg
ICB7CiAgICAgICAgIC8vIG1lbW9yeUNvc3QoKSBtYXkgYmUgaW52b2tlZCBjb25jdXJyZW50bHkg
ZnJvbSBhIEdDIHRocmVhZCwgYW5kIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bApAQCAtNTcsMTkgKzU3
LDE1IEBAIHByaXZhdGU6CiAgICAgTm9kZVR5cGUqIHRyYXZlcnNlRm9yd2FyZFRvKGNvbnN0IENv
bGxlY3Rpb24mLCB1bnNpZ25lZCk7CiAKICAgICBJdGVyYXRvciBtX2N1cnJlbnQ7Ci0gICAgdW5z
aWduZWQgbV9jdXJyZW50SW5kZXg7Ci0gICAgdW5zaWduZWQgbV9ub2RlQ291bnQ7CisgICAgdW5z
aWduZWQgbV9jdXJyZW50SW5kZXggeyAwIH07CisgICAgdW5zaWduZWQgbV9ub2RlQ291bnQgeyAw
IH07CiAgICAgVmVjdG9yPE5vZGVUeXBlKj4gbV9jYWNoZWRMaXN0OwogICAgIGJvb2wgbV9ub2Rl
Q291bnRWYWxpZCA6IDE7CiAgICAgYm9vbCBtX2xpc3RWYWxpZCA6IDE7CiB9OwogCi10ZW1wbGF0
ZSA8Y2xhc3MgQ29sbGVjdGlvbiwgY2xhc3MgSXRlcmF0b3I+Ci1pbmxpbmUgQ29sbGVjdGlvbklu
ZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+OjpDb2xsZWN0aW9uSW5kZXhDYWNoZShjb25z
dCBDb2xsZWN0aW9uJiBjb2xsZWN0aW9uKQotICAgIDogbV9jdXJyZW50KGNvbGxlY3Rpb24uY29s
bGVjdGlvbkVuZCgpKQotICAgICwgbV9jdXJyZW50SW5kZXgoMCkKLSAgICAsIG1fbm9kZUNvdW50
KDApCi0gICAgLCBtX25vZGVDb3VudFZhbGlkKGZhbHNlKQordGVtcGxhdGU8Y2xhc3MgQ29sbGVj
dGlvbiwgY2xhc3MgSXRlcmF0b3I+IENvbGxlY3Rpb25JbmRleENhY2hlPENvbGxlY3Rpb24sIEl0
ZXJhdG9yPjo6Q29sbGVjdGlvbkluZGV4Q2FjaGUoKQorICAgIDogbV9ub2RlQ291bnRWYWxpZChm
YWxzZSkKICAgICAsIG1fbGlzdFZhbGlkKGZhbHNlKQogewogfQpAQCAtNzgsNyArNzQsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgQ29sbGVjdGlvbiwgY2xhc3MgSXRlcmF0b3I+CiBpbmxpbmUgdW5zaWdu
ZWQgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+Ojpub2RlQ291bnQo
Y29uc3QgQ29sbGVjdGlvbiYgY29sbGVjdGlvbikKIHsKICAgICBpZiAoIW1fbm9kZUNvdW50VmFs
aWQpIHsKLSAgICAgICAgaWYgKCFoYXNWYWxpZENhY2hlKGNvbGxlY3Rpb24pKQorICAgICAgICBp
ZiAoIWhhc1ZhbGlkQ2FjaGUoKSkKICAgICAgICAgICAgIGNvbGxlY3Rpb24ud2lsbFZhbGlkYXRl
SW5kZXhDYWNoZSgpOwogICAgICAgICBtX25vZGVDb3VudCA9IGNvbXB1dGVOb2RlQ291bnRVcGRh
dGluZ0xpc3RDYWNoZShjb2xsZWN0aW9uKTsKICAgICAgICAgbV9ub2RlQ291bnRWYWxpZCA9IHRy
dWU7CkBAIC05MSwxNiArODcsMTUgQEAgdGVtcGxhdGUgPGNsYXNzIENvbGxlY3Rpb24sIGNsYXNz
IEl0ZXJhdG9yPgogdW5zaWduZWQgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRl
cmF0b3I+Ojpjb21wdXRlTm9kZUNvdW50VXBkYXRpbmdMaXN0Q2FjaGUoY29uc3QgQ29sbGVjdGlv
biYgY29sbGVjdGlvbikKIHsKICAgICBhdXRvIGN1cnJlbnQgPSBjb2xsZWN0aW9uLmNvbGxlY3Rp
b25CZWdpbigpOwotICAgIGF1dG8gZW5kID0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCk7Ci0g
ICAgaWYgKGN1cnJlbnQgPT0gZW5kKQorICAgIGlmICghY3VycmVudCkKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICB1bnNpZ25lZCBvbGRDYXBhY2l0eSA9IG1fY2FjaGVkTGlzdC5jYXBhY2l0eSgp
OwotICAgIHdoaWxlIChjdXJyZW50ICE9IGVuZCkgeworICAgIHdoaWxlIChjdXJyZW50KSB7CiAg
ICAgICAgIG1fY2FjaGVkTGlzdC5hcHBlbmQoJipjdXJyZW50KTsKICAgICAgICAgdW5zaWduZWQg
dHJhdmVyc2VkOwogICAgICAgICBjb2xsZWN0aW9uLmNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQo
Y3VycmVudCwgMSwgdHJhdmVyc2VkKTsKLSAgICAgICAgQVNTRVJUKHRyYXZlcnNlZCA9PSAoY3Vy
cmVudCAhPSBlbmQgPyAxIDogMCkpOworICAgICAgICBBU1NFUlQodHJhdmVyc2VkID09IChjdXJy
ZW50ID8gMSA6IDApKTsKICAgICB9CiAgICAgbV9saXN0VmFsaWQgPSB0cnVlOwogCkBAIC0xMTMs
NyArMTA4LDcgQEAgdW5zaWduZWQgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRl
cmF0b3I+Ojpjb21wdXRlTm9kZUNvdW50VXBkYXRpbmdMaXMKIHRlbXBsYXRlIDxjbGFzcyBDb2xs
ZWN0aW9uLCBjbGFzcyBJdGVyYXRvcj4KIGlubGluZSB0eXBlbmFtZSBDb2xsZWN0aW9uSW5kZXhD
YWNoZTxDb2xsZWN0aW9uLCBJdGVyYXRvcj46Ok5vZGVUeXBlKiBDb2xsZWN0aW9uSW5kZXhDYWNo
ZTxDb2xsZWN0aW9uLCBJdGVyYXRvcj46OnRyYXZlcnNlQmFja3dhcmRUbyhjb25zdCBDb2xsZWN0
aW9uJiBjb2xsZWN0aW9uLCB1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBBU1NFUlQobV9jdXJyZW50
ICE9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50KTsK
ICAgICBBU1NFUlQoaW5kZXggPCBtX2N1cnJlbnRJbmRleCk7CiAKICAgICBib29sIGZpcnN0SXND
bG9zZXIgPSBpbmRleCA8IG1fY3VycmVudEluZGV4IC0gaW5kZXg7CkBAIC0xMjIsNTAgKzExNyw1
MCBAQCBpbmxpbmUgdHlwZW5hbWUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRl
cmF0b3I+OjpOb2RlVHlwZSogQ29sbGVjdGlvbgogICAgICAgICBtX2N1cnJlbnRJbmRleCA9IDA7
CiAgICAgICAgIGlmIChpbmRleCkKICAgICAgICAgICAgIGNvbGxlY3Rpb24uY29sbGVjdGlvblRy
YXZlcnNlRm9yd2FyZChtX2N1cnJlbnQsIGluZGV4LCBtX2N1cnJlbnRJbmRleCk7Ci0gICAgICAg
IEFTU0VSVChtX2N1cnJlbnQgIT0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCkpOworICAgICAg
ICBBU1NFUlQobV9jdXJyZW50KTsKICAgICAgICAgcmV0dXJuICYqbV9jdXJyZW50OwogICAgIH0K
IAogICAgIGNvbGxlY3Rpb24uY29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQobV9jdXJyZW50LCBt
X2N1cnJlbnRJbmRleCAtIGluZGV4KTsKICAgICBtX2N1cnJlbnRJbmRleCA9IGluZGV4OwogCi0g
ICAgQVNTRVJUKG1fY3VycmVudCAhPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKSk7CisgICAg
QVNTRVJUKG1fY3VycmVudCk7CiAgICAgcmV0dXJuICYqbV9jdXJyZW50OwogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgQ29sbGVjdGlvbiwgY2xhc3MgSXRlcmF0b3I+CiBpbmxpbmUgdHlwZW5hbWUgQ29s
bGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+OjpOb2RlVHlwZSogQ29sbGVj
dGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+Ojp0cmF2ZXJzZUZvcndhcmRUbyhj
b25zdCBDb2xsZWN0aW9uJiBjb2xsZWN0aW9uLCB1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBBU1NF
UlQobV9jdXJyZW50ICE9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpKTsKKyAgICBBU1NFUlQo
bV9jdXJyZW50KTsKICAgICBBU1NFUlQoaW5kZXggPiBtX2N1cnJlbnRJbmRleCk7CiAgICAgQVNT
RVJUKCFtX25vZGVDb3VudFZhbGlkIHx8IGluZGV4IDwgbV9ub2RlQ291bnQpOwogCiAgICAgYm9v
bCBsYXN0SXNDbG9zZXIgPSBtX25vZGVDb3VudFZhbGlkICYmIG1fbm9kZUNvdW50IC0gaW5kZXgg
PCBpbmRleCAtIG1fY3VycmVudEluZGV4OwogICAgIGlmIChsYXN0SXNDbG9zZXIgJiYgY29sbGVj
dGlvbi5jb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCgpKSB7Ci0gICAgICAgIEFTU0VSVCho
YXNWYWxpZENhY2hlKGNvbGxlY3Rpb24pKTsKKyAgICAgICAgQVNTRVJUKGhhc1ZhbGlkQ2FjaGUo
KSk7CiAgICAgICAgIG1fY3VycmVudCA9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkxhc3QoKTsKICAg
ICAgICAgaWYgKGluZGV4IDwgbV9ub2RlQ291bnQgLSAxKQogICAgICAgICAgICAgY29sbGVjdGlv
bi5jb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChtX2N1cnJlbnQsIG1fbm9kZUNvdW50IC0gaW5k
ZXggLSAxKTsKICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBpbmRleDsKLSAgICAgICAgQVNTRVJU
KG1fY3VycmVudCAhPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKSk7CisgICAgICAgIEFTU0VS
VChtX2N1cnJlbnQpOwogICAgICAgICByZXR1cm4gJiptX2N1cnJlbnQ7CiAgICAgfQogCi0gICAg
aWYgKCFoYXNWYWxpZENhY2hlKGNvbGxlY3Rpb24pKQorICAgIGlmICghaGFzVmFsaWRDYWNoZSgp
KQogICAgICAgICBjb2xsZWN0aW9uLndpbGxWYWxpZGF0ZUluZGV4Q2FjaGUoKTsKIAogICAgIHVu
c2lnbmVkIHRyYXZlcnNlZENvdW50OwogICAgIGNvbGxlY3Rpb24uY29sbGVjdGlvblRyYXZlcnNl
Rm9yd2FyZChtX2N1cnJlbnQsIGluZGV4IC0gbV9jdXJyZW50SW5kZXgsIHRyYXZlcnNlZENvdW50
KTsKICAgICBtX2N1cnJlbnRJbmRleCA9IG1fY3VycmVudEluZGV4ICsgdHJhdmVyc2VkQ291bnQ7
CiAKLSAgICBpZiAobV9jdXJyZW50ID09IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpKSB7Cisg
ICAgaWYgKCFtX2N1cnJlbnQpIHsKICAgICAgICAgQVNTRVJUKG1fY3VycmVudEluZGV4IDwgaW5k
ZXgpOwogICAgICAgICAvLyBGYWlsZWQgdG8gZmluZCB0aGUgaW5kZXggYnV0IGF0IGxlYXN0IHdl
IG5vdyBrbm93IHRoZSBzaXplLgogICAgICAgICBtX25vZGVDb3VudCA9IG1fY3VycmVudEluZGV4
ICsgMTsKICAgICAgICAgbV9ub2RlQ291bnRWYWxpZCA9IHRydWU7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KLSAgICBBU1NFUlQoaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKSk7Cisg
ICAgQVNTRVJUKGhhc1ZhbGlkQ2FjaGUoKSk7CiAgICAgcmV0dXJuICYqbV9jdXJyZW50OwogfQog
CkBAIC0xNzgsOCArMTczLDcgQEAgaW5saW5lIHR5cGVuYW1lIENvbGxlY3Rpb25JbmRleENhY2hl
PENvbGxlY3Rpb24sIEl0ZXJhdG9yPjo6Tm9kZVR5cGUqIENvbGxlY3Rpb24KICAgICBpZiAobV9s
aXN0VmFsaWQpCiAgICAgICAgIHJldHVybiBtX2NhY2hlZExpc3RbaW5kZXhdOwogCi0gICAgYXV0
byBlbmQgPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKTsKLSAgICBpZiAobV9jdXJyZW50ICE9
IGVuZCkgeworICAgIGlmIChtX2N1cnJlbnQpIHsKICAgICAgICAgaWYgKGluZGV4ID4gbV9jdXJy
ZW50SW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VGb3J3YXJkVG8oY29sbGVjdGlv
biwgaW5kZXgpOwogICAgICAgICBpZiAoaW5kZXggPCBtX2N1cnJlbnRJbmRleCkKQEAgLTE4OSwz
OSArMTgzLDM5IEBAIGlubGluZSB0eXBlbmFtZSBDb2xsZWN0aW9uSW5kZXhDYWNoZTxDb2xsZWN0
aW9uLCBJdGVyYXRvcj46Ok5vZGVUeXBlKiBDb2xsZWN0aW9uCiAKICAgICBib29sIGxhc3RJc0Ns
b3NlciA9IG1fbm9kZUNvdW50VmFsaWQgJiYgbV9ub2RlQ291bnQgLSBpbmRleCA8IGluZGV4Owog
ICAgIGlmIChsYXN0SXNDbG9zZXIgJiYgY29sbGVjdGlvbi5jb2xsZWN0aW9uQ2FuVHJhdmVyc2VC
YWNrd2FyZCgpKSB7Ci0gICAgICAgIEFTU0VSVChoYXNWYWxpZENhY2hlKGNvbGxlY3Rpb24pKTsK
KyAgICAgICAgQVNTRVJUKGhhc1ZhbGlkQ2FjaGUoKSk7CiAgICAgICAgIG1fY3VycmVudCA9IGNv
bGxlY3Rpb24uY29sbGVjdGlvbkxhc3QoKTsKICAgICAgICAgaWYgKGluZGV4IDwgbV9ub2RlQ291
bnQgLSAxKQogICAgICAgICAgICAgY29sbGVjdGlvbi5jb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2Fy
ZChtX2N1cnJlbnQsIG1fbm9kZUNvdW50IC0gaW5kZXggLSAxKTsKICAgICAgICAgbV9jdXJyZW50
SW5kZXggPSBpbmRleDsKLSAgICAgICAgQVNTRVJUKG1fY3VycmVudCAhPSBlbmQpOworICAgICAg
ICBBU1NFUlQobV9jdXJyZW50KTsKICAgICAgICAgcmV0dXJuICYqbV9jdXJyZW50OwogICAgIH0K
IAotICAgIGlmICghaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKSkKKyAgICBpZiAoIWhhc1ZhbGlk
Q2FjaGUoKSkKICAgICAgICAgY29sbGVjdGlvbi53aWxsVmFsaWRhdGVJbmRleENhY2hlKCk7CiAK
ICAgICBtX2N1cnJlbnQgPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25CZWdpbigpOwogICAgIG1fY3Vy
cmVudEluZGV4ID0gMDsKLSAgICBib29sIHN0YXJ0SXNFbmQgPSBtX2N1cnJlbnQgPT0gZW5kOwot
ICAgIGlmIChpbmRleCAmJiAhc3RhcnRJc0VuZCkgeworICAgIGJvb2wgc3RhcnRJc0VuZCA9ICFt
X2N1cnJlbnQ7CisgICAgaWYgKGluZGV4ICYmIG1fY3VycmVudCkgewogICAgICAgICBjb2xsZWN0
aW9uLmNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQobV9jdXJyZW50LCBpbmRleCwgbV9jdXJyZW50
SW5kZXgpOwotICAgICAgICBBU1NFUlQobV9jdXJyZW50ICE9IGVuZCB8fCBtX2N1cnJlbnRJbmRl
eCA8IGluZGV4KTsKKyAgICAgICAgQVNTRVJUKG1fY3VycmVudCB8fCBtX2N1cnJlbnRJbmRleCA8
IGluZGV4KTsKICAgICB9Ci0gICAgaWYgKG1fY3VycmVudCA9PSBlbmQpIHsKKyAgICBpZiAoIW1f
Y3VycmVudCkgewogICAgICAgICAvLyBGYWlsZWQgdG8gZmluZCB0aGUgaW5kZXggYnV0IGF0IGxl
YXN0IHdlIG5vdyBrbm93IHRoZSBzaXplLgogICAgICAgICBtX25vZGVDb3VudCA9IHN0YXJ0SXNF
bmQgPyAwIDogbV9jdXJyZW50SW5kZXggKyAxOwogICAgICAgICBtX25vZGVDb3VudFZhbGlkID0g
dHJ1ZTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIEFTU0VSVChoYXNWYWxp
ZENhY2hlKGNvbGxlY3Rpb24pKTsKKyAgICBBU1NFUlQoaGFzVmFsaWRDYWNoZSgpKTsKICAgICBy
ZXR1cm4gJiptX2N1cnJlbnQ7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBDb2xsZWN0aW9uLCBjbGFz
cyBJdGVyYXRvcj4KLXZvaWQgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0
b3I+OjppbnZhbGlkYXRlKGNvbnN0IENvbGxlY3Rpb24mIGNvbGxlY3Rpb24pCit2b2lkIENvbGxl
Y3Rpb25JbmRleENhY2hlPENvbGxlY3Rpb24sIEl0ZXJhdG9yPjo6aW52YWxpZGF0ZSgpCiB7Ci0g
ICAgbV9jdXJyZW50ID0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCk7CisgICAgbV9jdXJyZW50
ID0geyB9OwogICAgIG1fbm9kZUNvdW50VmFsaWQgPSBmYWxzZTsKICAgICBtX2xpc3RWYWxpZCA9
IGZhbHNlOwogICAgIG1fY2FjaGVkTGlzdC5zaHJpbmsoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKaW5kZXggN2FlMTM4MjhjNWYwMmY0YmNmZDg5ZWE4NjAwMDQ5YTM1M2NhY2M3
Yi4uOGQ0ZWY5NmRlNzcyY2Q3YTMyMzI0MWY3OWQzMmJiMmViYTc3OTg2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtOTIzLDcgKzkyMyw3IEBAIEVsZW1lbnQqIENvbnRh
aW5lck5vZGU6Omxhc3RFbGVtZW50Q2hpbGQoKSBjb25zdAogdW5zaWduZWQgQ29udGFpbmVyTm9k
ZTo6Y2hpbGRFbGVtZW50Q291bnQoKSBjb25zdAogewogICAgIGF1dG8gY2hpbGRyZW4gPSBjaGls
ZHJlbk9mVHlwZTxFbGVtZW50PigqdGhpcyk7Ci0gICAgcmV0dXJuIHN0ZDo6ZGlzdGFuY2UoY2hp
bGRyZW4uYmVnaW4oKSwgY2hpbGRyZW4uZW5kKCkpOworICAgIHJldHVybiBzdGQ6OmRpc3RhbmNl
KGNoaWxkcmVuLmJlZ2luKCksIHsgfSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5l
ck5vZGU6OmFwcGVuZChWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIHZlY3RvcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCmluZGV4IDJhZjI3NjE4Nzc1
N2U4ODI4ODMwNTVjOTA0ZTZlODczMzRjZDRkMjMuLmU1NmI4ZmUyMWFjNTY4ZjIyMDg1NWQ4YTRl
MzVkYTAxNDQ4NTgzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlQWxnb3JpdGhtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmNwcApAQCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKIAorI2luY2x1ZGUgIkVsZW1lbnRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCIKICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1
c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5LmNwcAppbmRleCA5NDU4MmVmNDNmNmYzZDc0MmI3MDA4NzI5NjllM2Y5Mzk1Y2Rk
MjY3Li41YjA5NWFjYmYxY2Q1NDEzMDhlMWEwZmJmMDM1MDE1OTE5MTA2NTBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcApAQCAtMjksMTQgKzI5LDEy
IEBACiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCIKICNpbmNsdWRlICJE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnQuaCIK
LSNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSlNE
T01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgogI2luY2x1ZGUg
IlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSlNWYWx1ZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAppbmRleCA4ZjIxYjI3OTM1MDM3
NjE5ZWIxMDNiOTRjYzIwYzcyY2JiNzExYTE4Li4yYTI1YWIyZTVhYTc2Nzk2NTA4MzcwYWVmYTI5
MWU3MmM3YzFjNjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFn
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCkBA
IC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCisj
aW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50UGFyc2Vy
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlhNTERvY3VtZW50UGFyc2VyLmgiCkBA
IC0xMDMsNyArMTAzLDcgQEAgRWxlbWVudCogRG9jdW1lbnRGcmFnbWVudDo6Z2V0RWxlbWVudEJ5
SWQoY29uc3QgQXRvbVN0cmluZyYgaWQpIGNvbnN0CiAgICAgICAgIHJldHVybiB0cmVlU2NvcGUo
KS5nZXRFbGVtZW50QnlJZChpZCk7CiAKICAgICAvLyBPdGhlcndpc2UsIGZhbGwgYmFjayB0byBp
dGVyYXRpbmcgYWxsIG9mIHRoZSBlbGVtZW50IGRlc2NlbmRhbnRzLgotICAgIGZvciAoYXV0byYg
ZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cygqdGhpcykpIHsKKyAgICBmb3IgKGF1dG8mIGVs
ZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PigqdGhpcykpIHsKICAgICAgICAgaWYg
KGVsZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKSA9PSBpZCkKICAgICAgICAgICAgIHJldHVybiBjb25z
dF9jYXN0PEVsZW1lbnQqPigmZWxlbWVudCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IDg3MThlNmQ4NmFkN2ZlNTA4YjEzODcwNmE2NWQyOTVhZGQ0MzljNTIuLjAxMTdhMzY2YmM3
MjU3OTVhNTZmZWI5OWFlMWZlMTYyNzgzOGVlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAg
LTQsNyArNCw3IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0
LmNvbSkKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMjAwNyBEYXZpZCBTbWl0aCAoY2F0ZmlzaC5tYW5AZ21haWwu
Y29tKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA3IEVyaWMgU2VpZGVsIChlcmljQHdlYmtp
dC5vcmcpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNjAsNyArNjAsNiBAQAogI2luY2x1ZGUgIkdldEFuaW1h
dGlvbnNPcHRpb25zLmgiCiAjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTENhbnZhc0VsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1
ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxIdG1sRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxMYWJlbEVsZW1lbnQuaCIKQEAgLTM0MDAsMjYgKzMzOTksMTQgQEAgdW5zaWduZWQg
RWxlbWVudDo6cmFyZURhdGFDaGlsZEluZGV4KCkgY29uc3QKIAogQXRvbVN0cmluZyBFbGVtZW50
Ojpjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdAogewotICAgIGlmIChjb25zdCBFbGVt
ZW50RGF0YSogZWxlbWVudERhdGEgPSB0aGlzLT5lbGVtZW50RGF0YSgpKSB7Ci0gICAgICAgIGlm
IChjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnREYXRhLT5maW5kTGFuZ3VhZ2VB
dHRyaWJ1dGUoKSkKLSAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGUtPnZhbHVlKCk7Ci0gICAg
fQotCiAgICAgLy8gVGhlIGxhbmd1YWdlIHByb3BlcnR5IGlzIGluaGVyaXRlZCwgc28gd2UgaXRl
cmF0ZSBvdmVyIHRoZSBwYXJlbnRzIHRvIGZpbmQgdGhlIGZpcnN0IGxhbmd1YWdlLgotICAgIGNv
bnN0IE5vZGUqIGN1cnJlbnROb2RlID0gdGhpczsKLSAgICB3aGlsZSAoKGN1cnJlbnROb2RlID0g
Y3VycmVudE5vZGUtPnBhcmVudE5vZGUoKSkpIHsKLSAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KCpj
dXJyZW50Tm9kZSkpIHsKLSAgICAgICAgICAgIGlmIChjb25zdCBFbGVtZW50RGF0YSogZWxlbWVu
dERhdGEgPSBkb3duY2FzdDxFbGVtZW50PigqY3VycmVudE5vZGUpLmVsZW1lbnREYXRhKCkpIHsK
LSAgICAgICAgICAgICAgICBpZiAoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBlbGVtZW50
RGF0YS0+ZmluZExhbmd1YWdlQXR0cmlidXRlKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBhdHRyaWJ1dGUtPnZhbHVlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAo
aXM8RG9jdW1lbnQ+KCpjdXJyZW50Tm9kZSkpIHsKLSAgICAgICAgICAgIC8vIGNoZWNraW5nIHRo
ZSBNSU1FIGNvbnRlbnQtbGFuZ3VhZ2UKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxEb2N1
bWVudD4oKmN1cnJlbnROb2RlKS5jb250ZW50TGFuZ3VhZ2UoKTsKKyAgICBmb3IgKGF1dG8mIGVs
ZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBpZiAoYXV0
byogZWxlbWVudERhdGEgPSBlbGVtZW50LmVsZW1lbnREYXRhKCkpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvKiBhdHRyaWJ1dGUgPSBlbGVtZW50RGF0YS0+ZmluZExhbmd1YWdlQXR0cmlidXRlKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFsdWUoKTsKICAgICAgICAgfQog
ICAgIH0KLQotICAgIHJldHVybiBudWxsQXRvbSgpOworICAgIHJldHVybiBkb2N1bWVudCgpLmNv
bnRlbnRMYW5ndWFnZSgpOwogfQogCiBMb2NhbGUmIEVsZW1lbnQ6OmxvY2FsZSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oCmluZGV4IDRiNjJk
MzhiMzhmZDM4NDljNzM3YWNhODdlZjg0NTI3ZjgzNzU1ZjAuLmM5OWM3NjYyNzU3M2VkOTE2MTc4
MmZkMDdiZDFmYzY1ZjNiMjM5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50QW5jZXN0b3JJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5j
ZXN0b3JJdGVyYXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI5LDYzICsyOSwzNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRBbmNlc3Rvckl0
ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gewotcHVibGljOgot
ICAgIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yKCk7Ci0gICAgZXhwbGljaXQgRWxlbWVudEFuY2Vz
dG9ySXRlcmF0b3IoRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotICAgIEVsZW1lbnRBbmNlc3Rvckl0
ZXJhdG9yJiBvcGVyYXRvcisrKCk7Ci19OwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEVsZW1l
bnRBbmNlc3RvclJhbmdlOwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1jbGFz
cyBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRDb25zdEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPiB7Ci1wdWJsaWM6Ci0gICAgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVy
YXRvcigpOwotICAgIGV4cGxpY2l0IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3IoY29uc3Qg
RWxlbWVudFR5cGUqIGN1cnJlbnQpOwotICAgIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3Im
IG9wZXJhdG9yKysoKTsKLX07CisvLyBSYW5nZSBmb3IgaXRlcmF0aW5nIGFuIGVsZW1lbnQgYW5k
IGl0cyBhbmNlc3RvcnMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudEFu
Y2VzdG9yUmFuZ2U8RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoRWxlbWVudCYgZmlyc3QpOwor
dGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0
IEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKGNvbnN0IEVsZW1lbnQmIGZpcnN0KTsKKworLy8g
UmFuZ2UgZm9yIGl0ZXJhdGluZyBhIG5vZGUncyBlbGVtZW50IGFuY2VzdG9ycy4KK3RlbXBsYXRl
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50VHlwZT4g
YW5jZXN0b3JzT2ZUeXBlKE5vZGUmIGRlc2NlbmRhbnQpOwordGVtcGxhdGU8dHlwZW5hbWUgRWxl
bWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBhbmNlc3Rv
cnNPZlR5cGUoY29uc3QgTm9kZSYgZGVzY2VuZGFudCk7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlciB7CitjbGFz
cyBFbGVtZW50QW5jZXN0b3JJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFk
YXB0ZXIoRWxlbWVudFR5cGUqIGZpcnN0KTsKLSAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxF
bGVtZW50VHlwZT4gYmVnaW4oKTsKLSAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50
VHlwZT4gZW5kKCk7Ci0gICAgRWxlbWVudFR5cGUqIGZpcnN0KCkgeyByZXR1cm4gbV9maXJzdDsg
fQotCi1wcml2YXRlOgotICAgIEVsZW1lbnRUeXBlKiBtX2ZpcnN0OworICAgIGV4cGxpY2l0IEVs
ZW1lbnRBbmNlc3Rvckl0ZXJhdG9yKEVsZW1lbnRUeXBlKiA9IG51bGxwdHIpOworICAgIEVsZW1l
bnRBbmNlc3Rvckl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRl
ciB7CitjbGFzcyBFbGVtZW50QW5jZXN0b3JSYW5nZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
RWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgRWxlbWVudFR5cGUqIGZp
cnN0KTsKLSAgICBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdp
bigpIGNvbnN0OwotICAgIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+
IGVuZCgpIGNvbnN0OwotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fZmlyc3Q7IH0KKyAgICBleHBsaWNpdCBFbGVtZW50QW5jZXN0b3JSYW5nZShFbGVtZW50
VHlwZSogZmlyc3QpOworICAgIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBi
ZWdpbigpIGNvbnN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpudWxscHRyX3QgZW5kKCkg
eyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fZmlyc3Q7IH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBFbGVtZW50VHlwZSogbV9maXJz
dDsKKyAgICBFbGVtZW50VHlwZSogY29uc3QgbV9maXJzdDsKIH07CiAKLUVsZW1lbnRBbmNlc3Rv
ckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50TGluZWFnZShFbGVtZW50KiBmaXJzdCk7
Ci1FbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50TGlu
ZWFnZShjb25zdCBFbGVtZW50KiBmaXJzdCk7Ci1FbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0
ZXI8RWxlbWVudD4gZWxlbWVudEFuY2VzdG9ycyhFbGVtZW50KiBkZXNjZW5kYW50KTsKLUVsZW1l
bnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRBbmNlc3RvcnMo
Y29uc3QgRWxlbWVudCogZGVzY2VuZGFudCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gbGluZWFnZU9m
VHlwZShFbGVtZW50JiBmaXJzdCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVs
ZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZU
eXBlKGNvbnN0IEVsZW1lbnQmIGZpcnN0KTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNP
ZlR5cGUoTm9kZSYgZGVzY2VuZGFudCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBhbmNlc3Rv
cnNPZlR5cGUoY29uc3QgTm9kZSYgZGVzY2VuZGFudCk7Ci0KIC8vIEVsZW1lbnRBbmNlc3Rvckl0
ZXJhdG9yCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yKCkK
LSAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obnVsbHB0cikKLXsKLX0KLQogdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudEFuY2VzdG9ySXRlcmF0b3IoRWxlbWVudFR5cGUqIGN1
cnJlbnQpCiAgICAgOiBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KG51bGxwdHIsIGN1cnJl
bnQpCkBAIC05NSwxMTkgKzY5LDYyIEBAIGlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxF
bGVtZW50VHlwZT46OkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yKEVsZW1lbnRUeXBlCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8
RWxlbWVudFR5cGU+JiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJh
dG9yKysoKQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50QW5jZXN0b3JJdGVyYXRv
cjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZUFu
Y2VzdG9yKCkpOwotfQotCi0vLyBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yCi0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcigpCi0gICAg
OiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obnVsbHB0cikKLXsKLX0KLQotdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yKGNvbnN0
IEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+KG51bGxwdHIsIGN1cnJlbnQpCi17Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBl
PiYgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKyso
KQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVy
c2VBbmNlc3RvcigpKTsKKyAgICBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJz
ZUFuY2VzdG9yKCk7CisgICAgcmV0dXJuICp0aGlzOwogfQogCi0vLyBFbGVtZW50QW5jZXN0b3JJ
dGVyYXRvckFkYXB0ZXIKKy8vIEVsZW1lbnRBbmNlc3RvclJhbmdlCiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8
RWxlbWVudFR5cGU+OjpFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXIoRWxlbWVudFR5cGUq
IGZpcnN0KQoraW5saW5lIEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRUeXBlPjo6RWxlbWVu
dEFuY2VzdG9yUmFuZ2UoRWxlbWVudFR5cGUqIGZpcnN0KQogICAgIDogbV9maXJzdChmaXJzdCkK
IHsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRB
bmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0
ZXI8RWxlbWVudFR5cGU+OjpiZWdpbigpCitpbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8
RWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRUeXBlPjo6YmVnaW4oKSBj
b25zdAogewogICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4o
bV9maXJzdCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBF
bGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9ySXRlcmF0
b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkKLXsKLSAgICByZXR1cm4gRWxlbWVudEFuY2Vz
dG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+KCk7Ci19Ci0KLS8vIEVsZW1lbnRBbmNlc3RvckNvbnN0
SXRlcmF0b3JBZGFwdGVyCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGlu
ZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OkVsZW1l
bnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCkK
LSAgICA6IG1fZmlyc3QoZmlyc3QpCi17Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBF
bGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2luKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT4obV9maXJzdCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlu
bGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50QW5j
ZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KCk7Ci19
Ci0KIC8vIFN0YW5kYWxvbmUgZnVuY3Rpb25zCiAKLWlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVy
YXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudExpbmVhZ2UoRWxlbWVudCogZmlyc3QpCi17Ci0g
ICAgcmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PihmaXJzdCk7
Ci19Ci0KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50
PiBlbGVtZW50TGluZWFnZShjb25zdCBFbGVtZW50KiBmaXJzdCkKK3RlbXBsYXRlPD4gaW5saW5l
IEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnQ+IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4oRWxl
bWVudCYgZmlyc3QpCiB7Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JB
ZGFwdGVyPEVsZW1lbnQ+KGZpcnN0KTsKLX0KLQotaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50QW5jZXN0b3JzKEVsZW1lbnQqIGRlc2NlbmRhbnQp
Ci17Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50Pihk
ZXNjZW5kYW50LT5wYXJlbnRFbGVtZW50KCkpOwotfQotCi1pbmxpbmUgRWxlbWVudEFuY2VzdG9y
Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudEFuY2VzdG9ycyhjb25zdCBFbGVt
ZW50KiBkZXNjZW5kYW50KQotewotICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50PihkZXNjZW5kYW50LT5wYXJlbnRFbGVtZW50KCkpOworICAgIHJl
dHVybiBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50PigmZmlyc3QpOwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JB
ZGFwdGVyPEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKEVsZW1lbnQmIGZpcnN0KQoraW5saW5l
IEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKEVsZW1lbnQm
IGZpcnN0KQogewogICAgIGlmIChpczxFbGVtZW50VHlwZT4oZmlyc3QpKQotICAgICAgICByZXR1
cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihzdGF0aWNfY2Fz
dDxFbGVtZW50VHlwZSo+KCZmaXJzdCkpOworICAgICAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9y
UmFuZ2U8RWxlbWVudFR5cGU+KCZkb3duY2FzdDxFbGVtZW50VHlwZT4oZmlyc3QpKTsKICAgICBy
ZXR1cm4gYW5jZXN0b3JzT2ZUeXBlPEVsZW1lbnRUeXBlPihmaXJzdCk7CiB9CiAKK3RlbXBsYXRl
PD4gaW5saW5lIEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnQ+IGxpbmVhZ2VPZlR5
cGU8RWxlbWVudD4oY29uc3QgRWxlbWVudCYgZmlyc3QpCit7CisgICAgcmV0dXJuIEVsZW1lbnRB
bmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnQ+KCZmaXJzdCk7Cit9CisKIHRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRh
cHRlcjxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShjb25zdCBFbGVtZW50JiBmaXJzdCkKK2lu
bGluZSBFbGVtZW50QW5jZXN0b3JSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlw
ZShjb25zdCBFbGVtZW50JiBmaXJzdCkKIHsKICAgICBpZiAoaXM8RWxlbWVudFR5cGU+KGZpcnN0
KSkKLSAgICAgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVs
ZW1lbnRUeXBlPihzdGF0aWNfY2FzdDxjb25zdCBFbGVtZW50VHlwZSo+KCZmaXJzdCkpOworICAg
ICAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+KCZkb3du
Y2FzdDxFbGVtZW50VHlwZT4oZmlyc3QpKTsKICAgICByZXR1cm4gYW5jZXN0b3JzT2ZUeXBlPEVs
ZW1lbnRUeXBlPihmaXJzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGFuY2Vz
dG9yc09mVHlwZShOb2RlJiBkZXNjZW5kYW50KQoraW5saW5lIEVsZW1lbnRBbmNlc3RvclJhbmdl
PEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNPZlR5cGUoTm9kZSYgZGVzY2VuZGFudCkKIHsKLSAgICBF
bGVtZW50VHlwZSogZmlyc3QgPSBmaW5kRWxlbWVudEFuY2VzdG9yT2ZUeXBlPEVsZW1lbnRUeXBl
PihkZXNjZW5kYW50KTsKLSAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVy
PEVsZW1lbnRUeXBlPihmaXJzdCk7CisgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvclJhbmdlPEVs
ZW1lbnRUeXBlPihmaW5kRWxlbWVudEFuY2VzdG9yT2ZUeXBlPEVsZW1lbnRUeXBlPihkZXNjZW5k
YW50KSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVt
ZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZU
eXBlKGNvbnN0IE5vZGUmIGRlc2NlbmRhbnQpCitpbmxpbmUgRWxlbWVudEFuY2VzdG9yUmFuZ2U8
Y29uc3QgRWxlbWVudFR5cGU+IGFuY2VzdG9yc09mVHlwZShjb25zdCBOb2RlJiBkZXNjZW5kYW50
KQogewotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCA9IGZpbmRFbGVtZW50QW5jZXN0b3JP
ZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KGRlc2NlbmRhbnQpOwotICAgIHJldHVybiBFbGVtZW50
QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4oZmlyc3QpOworICAgIHJl
dHVybiBFbGVtZW50QW5jZXN0b3JSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4oZmluZEVsZW1lbnRB
bmNlc3Rvck9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oZGVzY2VuZGFudCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvci5oCmluZGV4IDQ4ZTNiMWE2MThkMmZlMGEyODc2N2Iz
NzMxZjJmYWRmOTczZWZiY2UuLmQxZGRiMGY3Mzc1MDE1NjQ1OTdiMGEwMjM0ZTJiNDYyMDFkNWRl
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5kVGV4dERlc2NlbmRh
bnRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5kVGV4dERlc2Nl
bmRhbnRJdGVyYXRvci5oCkBAIC0zNiw4ICszNiw4IEBAIGNsYXNzIEVsZW1lbnRBbmRUZXh0RGVz
Y2VuZGFudEl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJ
dGVyYXRvcigpOwogICAgIGVudW0gRmlyc3RDaGlsZFRhZyB7IEZpcnN0Q2hpbGQgfTsKLSAgICBF
bGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihDb250YWluZXJOb2RlJiByb290LCBGaXJz
dENoaWxkVGFnKTsKLSAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihDb250YWlu
ZXJOb2RlJiByb290LCBOb2RlKiBjdXJyZW50KTsKKyAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRh
bnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBGaXJzdENoaWxkVGFnKTsKKyAg
ICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiBy
b290LCBOb2RlKiBjdXJyZW50KTsKIAogICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJh
dG9yJiBvcGVyYXRvcisrKCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0KCk7IH0KIApAQCAtNjMsOSAr
NjMsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgaXNFbGVtZW50T3JU
ZXh0KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEVsZW1lbnQ+KG5vZGUpIHx8IGlzPFRl
eHQ+KG5vZGUpOyB9Ci0gICAgc3RhdGljIE5vZGUqIGZpcnN0Q2hpbGQoTm9kZSYpOwotICAgIHN0
YXRpYyBOb2RlKiBuZXh0U2libGluZyhOb2RlJik7Ci0gICAgc3RhdGljIE5vZGUqIHByZXZpb3Vz
U2libGluZyhOb2RlJik7CisgICAgc3RhdGljIE5vZGUqIGZpcnN0Q2hpbGQoY29uc3QgTm9kZSYp
OworICAgIHN0YXRpYyBOb2RlKiBuZXh0U2libGluZyhjb25zdCBOb2RlJik7CisgICAgc3RhdGlj
IE5vZGUqIHByZXZpb3VzU2libGluZyhjb25zdCBOb2RlJik7CiAKICAgICB2b2lkIHBvcEFuY2Vz
dG9yU2libGluZ1N0YWNrKCk7CiAKQEAgLTgyLDE3ICs4MiwxNyBAQCBwcml2YXRlOgogI2VuZGlm
CiB9OwogCi1jbGFzcyBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgewor
Y2xhc3MgRWxlbWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2UgewogcHVibGljOgotICAgIGV4cGxp
Y2l0IEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2Rl
JiByb290KTsKLSAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBiZWdpbigpOwot
ICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yIGVuZCgpOworICAgIGV4cGxpY2l0
IEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudFJhbmdlKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3Qp
OworICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7Cisg
ICAgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgZW5kKCkgY29uc3Q7CiAKIHByaXZh
dGU6Ci0gICAgQ29udGFpbmVyTm9kZSYgbV9yb290OworICAgIGNvbnN0IENvbnRhaW5lck5vZGUm
IG1fcm9vdDsKIH07CiAKLUVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlciBl
bGVtZW50QW5kVGV4dERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUmKTsKK0VsZW1lbnRBbmRUZXh0
RGVzY2VuZGFudFJhbmdlIGVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudHMoQ29udGFpbmVyTm9kZSYp
OwogCiAvLyBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcgogCkBAIC0xMDEsNyArMTAx
LDcgQEAgaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50QW5k
VGV4dERlc2NlbmRhbnRJdGVyYXRvcigpCiB7CiB9CiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERl
c2NlbmRhbnRJdGVyYXRvcjo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoQ29udGFp
bmVyTm9kZSYgcm9vdCwgRmlyc3RDaGlsZFRhZykKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2Nl
bmRhbnRJdGVyYXRvcjo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29u
dGFpbmVyTm9kZSYgcm9vdCwgRmlyc3RDaGlsZFRhZykKICAgICA6IG1fY3VycmVudChmaXJzdENo
aWxkKHJvb3QpKQogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLCBtX2Fzc2VydGlvbnMobV9jdXJy
ZW50KQpAQCAtMTEzLDcgKzExMyw3IEBAIGlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJ
dGVyYXRvcjo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoQ29udGFpCiAgICAgbV9k
ZXB0aCA9IDE7CiB9CiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6
RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoQ29udGFpbmVyTm9kZSYgcm9vdCwgTm9k
ZSogY3VycmVudCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6RWxl
bWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwg
Tm9kZSogY3VycmVudCkKICAgICA6IG1fY3VycmVudChjdXJyZW50KQogI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgLCBtX2Fzc2VydGlvbnMobV9jdXJyZW50KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIGlu
bGluZSB2b2lkIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpkcm9wQXNzZXJ0aW9u
cygpCiAjZW5kaWYKIH0KIAotaW5saW5lIE5vZGUqIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0
ZXJhdG9yOjpmaXJzdENoaWxkKE5vZGUmIGN1cnJlbnQpCitpbmxpbmUgTm9kZSogRWxlbWVudEFu
ZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OmZpcnN0Q2hpbGQoY29uc3QgTm9kZSYgY3VycmVudCkK
IHsKICAgICBhdXRvKiBub2RlID0gY3VycmVudC5maXJzdENoaWxkKCk7CiAgICAgd2hpbGUgKG5v
ZGUgJiYgIWlzRWxlbWVudE9yVGV4dCgqbm9kZSkpCkBAIC0xNTYsNyArMTU2LDcgQEAgaW5saW5l
IE5vZGUqIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpmaXJzdENoaWxkKE5vZGUm
IGN1cnJlbnQpCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLWlubGluZSBOb2RlKiBFbGVtZW50QW5k
VGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6bmV4dFNpYmxpbmcoTm9kZSYgY3VycmVudCkKK2lubGlu
ZSBOb2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6bmV4dFNpYmxpbmcoY29u
c3QgTm9kZSYgY3VycmVudCkKIHsKICAgICBhdXRvKiBub2RlID0gY3VycmVudC5uZXh0U2libGlu
ZygpOwogICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPclRleHQoKm5vZGUpKQpAQCAtMTY0
LDcgKzE2NCw3IEBAIGlubGluZSBOb2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRv
cjo6bmV4dFNpYmxpbmcoTm9kZSYgY3VycmVudCkKICAgICByZXR1cm4gbm9kZTsKIH0KIAotaW5s
aW5lIE5vZGUqIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpwcmV2aW91c1NpYmxp
bmcoTm9kZSYgY3VycmVudCkKK2lubGluZSBOb2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJ
dGVyYXRvcjo6cHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUmIGN1cnJlbnQpCiB7CiAgICAgYXV0
byogbm9kZSA9IGN1cnJlbnQucHJldmlvdXNTaWJsaW5nKCk7CiAgICAgd2hpbGUgKG5vZGUgJiYg
IWlzRWxlbWVudE9yVGV4dCgqbm9kZSkpCkBAIC0yOTQsMjggKzI5NCwyOCBAQCBpbmxpbmUgYm9v
bCBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBFbGVt
ZW50QW5kVGV4dERlcwogICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKIH0KIAotLy8gRWxl
bWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyCisvLyBFbGVtZW50QW5kVGV4dERl
c2NlbmRhbnRSYW5nZQogCi1pbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JB
ZGFwdGVyOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVy
Tm9kZSYgcm9vdCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZTo6RWxlbWVu
dEFuZFRleHREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKICAgICA6
IG1fcm9vdChyb290KQogewogfQogCi1pbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRl
cmF0b3IgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjpiZWdpbigpCitp
bmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgRWxlbWVudEFuZFRleHREZXNj
ZW5kYW50UmFuZ2U6OmJlZ2luKCkgY29uc3QKIHsKICAgICByZXR1cm4gRWxlbWVudEFuZFRleHRE
ZXNjZW5kYW50SXRlcmF0b3IobV9yb290LCBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRv
cjo6Rmlyc3RDaGlsZCk7CiB9CiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVy
YXRvciBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI6OmVuZCgpCitpbmxp
bmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgRWxlbWVudEFuZFRleHREZXNjZW5k
YW50UmFuZ2U6OmVuZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAogLy8gU3RhbmRh
bG9uZSBmdW5jdGlvbnMKIAotaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9y
QWRhcHRlciBlbGVtZW50QW5kVGV4dERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUmIHJvb3QpCitp
bmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2UgZWxlbWVudEFuZFRleHREZXNjZW5k
YW50cyhDb250YWluZXJOb2RlJiByb290KQogewotICAgIHJldHVybiBFbGVtZW50QW5kVGV4dERl
c2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIocm9vdCk7CisgICAgcmV0dXJuIEVsZW1lbnRBbmRUZXh0
RGVzY2VuZGFudFJhbmdlKHJvb3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENoaWxkSXRlcmF0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oCmluZGV4IDhlMzhmYjUwMzJhODIz
Nzc2ZTJhN2JjYTNhYzI1OGNiMTUwNmM0MDAuLmU2NmIyNDlmNTk1MTEwMDAzODRkODQ3MTI3N2Ez
ZjIwMjE2ZTYxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJ
dGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI5LDc5ICsyOSwzOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlPHR5cGVu
YW1lPiBjbGFzcyBFbGVtZW50Q2hpbGRSYW5nZTsKKworLy8gUmFuZ2UgZm9yIGl0ZXJhdGluZyB0
aHJvdWdoIGNoaWxkIGVsZW1lbnRzLgordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBF
bGVtZW50Q2hpbGRSYW5nZTxFbGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoQ29udGFpbmVyTm9k
ZSYpOwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRSYW5nZTxj
b25zdCBFbGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYpOwor
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBjbGFzcyBFbGVtZW50Q2hpbGRJdGVy
YXRvciA6IHB1YmxpYyBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IHsKIHB1YmxpYzoKLSAg
ICB0eXBlZGVmIEVsZW1lbnRUeXBlIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBwdHJkaWZmX3Qg
ZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgRWxlbWVudFR5cGUqIHBvaW50ZXI7Ci0gICAg
dHlwZWRlZiBFbGVtZW50VHlwZSYgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgc3RkOjpmb3J3YXJk
X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLQotICAgIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCk7CisgICAgRWxlbWVudENoaWxkSXRlcmF0
b3IoKSA9IGRlZmF1bHQ7CiAgICAgRWxlbWVudENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVy
Tm9kZSYgcGFyZW50LCBFbGVtZW50VHlwZSogY3VycmVudCk7CiAgICAgRWxlbWVudENoaWxkSXRl
cmF0b3ImIG9wZXJhdG9yLS0oKTsKICAgICBFbGVtZW50Q2hpbGRJdGVyYXRvciYgb3BlcmF0b3Ir
KygpOwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVu
dENoaWxkQ29uc3RJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT4gewotcHVibGljOgotICAgIHR5cGVkZWYgY29uc3QgRWxlbWVudFR5cGUgdmFsdWVfdHlw
ZTsKLSAgICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiBj
b25zdCBFbGVtZW50VHlwZSogcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNvbnN0IEVsZW1lbnRUeXBl
JiByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnIGl0ZXJh
dG9yX2NhdGVnb3J5OwotCi0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcihjb25zdCBDb250
YWluZXJOb2RlJiBwYXJlbnQpOwotICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IoY29uc3Qg
Q29udGFpbmVyTm9kZSYgcGFyZW50LCBjb25zdCBFbGVtZW50VHlwZSogY3VycmVudCk7Ci0gICAg
RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwotICAgIEVsZW1lbnRDaGls
ZENvbnN0SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlciB7Ci1wdWJsaWM6
Ci0gICAgRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUmIHBhcmVudCk7
Ci0KLSAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKTsKLSAgICBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCk7Ci0gICAgRWxlbWVudENoaWxk
SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoRWxlbWVudFR5cGUmKTsKLQotICAgIEVsZW1l
bnRUeXBlKiBmaXJzdCgpOwotICAgIEVsZW1lbnRUeXBlKiBsYXN0KCk7Ci0KLXByaXZhdGU6Ci0g
ICAgQ29udGFpbmVyTm9kZSYgbV9wYXJlbnQ7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+Ci1jbGFzcyBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlciB7CitjbGFz
cyBFbGVtZW50Q2hpbGRSYW5nZSB7CiBwdWJsaWM6Ci0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVy
YXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKKyAgICBFbGVtZW50Q2hp
bGRSYW5nZShjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpOwogCi0gICAgRWxlbWVudENoaWxk
Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKSBjb25zdDsKLSAgICBFbGVtZW50Q2hp
bGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKSBjb25zdDsKLSAgICBFbGVtZW50Q2hp
bGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbkF0KGNvbnN0IEVsZW1lbnRUeXBlJikg
Y29uc3Q7CisgICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29u
c3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6Om51bGxwdHJfdCBlbmQoKSB7IHJldHVybiBu
dWxscHRyOyB9CisgICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQo
RWxlbWVudFR5cGUmKSBjb25zdDsKIAotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNv
bnN0OwotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBsYXN0KCkgY29uc3Q7CisgICAgRWxlbWVudFR5
cGUqIGZpcnN0KCkgY29uc3Q7CisgICAgRWxlbWVudFR5cGUqIGxhc3QoKSBjb25zdDsKIAogcHJp
dmF0ZToKICAgICBjb25zdCBDb250YWluZXJOb2RlJiBtX3BhcmVudDsKIH07CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1l
bnRUeXBlPiBjaGlsZHJlbk9mVHlwZShDb250YWluZXJOb2RlJik7Ci10ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPiBjaGlsZHJlbk9mVHlwZShjb25zdCBDb250YWluZXJOb2RlJik7Ci0KIC8vIEVsZW1lbnRD
aGlsZEl0ZXJhdG9yCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNv
bnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCkKLSAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50
VHlwZT4oJnBhcmVudCkKLXsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgog
aW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENoaWxkSXRl
cmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50LCBFbGVtZW50VHlwZSogY3VycmVudCkK
ICAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnBhcmVudCwgY3VycmVudCkKQEAg
LTExMSwxMzIgKzcxLDYyIEBAIGlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlw
ZT46OkVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5
cGU+JiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yLS0oKQogewot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4m
PihFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZpb3VzU2libGluZygp
KTsKKyAgICBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZpb3VzU2li
bGluZygpOworICAgIHJldHVybiAqdGhpczsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPgogaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVu
dENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKIHsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxlbWVudEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGluZygpKTsKLX0KLQotLy8gRWxl
bWVudENoaWxkQ29uc3RJdGVyYXRvcgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRD
aGlsZENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KQotICAgIDogRWxl
bWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZwYXJlbnQpCi17Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPjo6RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJO
b2RlJiBwYXJlbnQsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVudENv
bnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZwYXJlbnQsIGN1cnJlbnQpCi17Ci19Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46
Om9wZXJhdG9yLS0oKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRDb25z
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBl
Pjo6dHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoKSk7CisgICAgRWxlbWVudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGluZygpOworICAgIHJldHVybiAqdGhpczsKIH0KIAor
Ly8gRWxlbWVudENoaWxkUmFuZ2UKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q2hp
bGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCi17Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxl
bWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkpOwot
fQotCi0vLyBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXIKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50
VHlwZT46OkVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2RlJiBwYXJlbnQp
CitpbmxpbmUgRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5cGU+OjpFbGVtZW50Q2hpbGRSYW5n
ZShjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpCiAgICAgOiBtX3BhcmVudChwYXJlbnQpCiB7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hp
bGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1l
bnRUeXBlPjo6YmVnaW4oKQoraW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBl
PiBFbGVtZW50Q2hpbGRSYW5nZTxFbGVtZW50VHlwZT46OmJlZ2luKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcGFyZW50LCBUcmF2ZXJz
YWw8RWxlbWVudFR5cGU+OjpmaXJzdENoaWxkKG1fcGFyZW50KSk7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50
VHlwZT4gRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkKLXsK
LSAgICByZXR1cm4gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcGFyZW50KTsK
LX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRUeXBl
KiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpmaXJzdCgpCitpbmxp
bmUgRWxlbWVudFR5cGUqIEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPjo6Zmlyc3QoKSBj
b25zdAogewogICAgIHJldHVybiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdENoaWxkKG1f
cGFyZW50KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVs
ZW1lbnRUeXBlKiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpsYXN0
KCkKK2lubGluZSBFbGVtZW50VHlwZSogRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5cGU+Ojps
YXN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bGFzdENo
aWxkKG1fcGFyZW50KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5s
aW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRJdGVyYXRv
ckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBjaGlsZCkKK2lubGlu
ZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkUmFuZ2U8RWxl
bWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBjaGlsZCkgY29uc3QKIHsKICAgICBBU1NF
UlQoY2hpbGQucGFyZW50Tm9kZSgpID09ICZtX3BhcmVudCk7CiAgICAgcmV0dXJuIEVsZW1lbnRD
aGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3BhcmVudCwgJmNoaWxkKTsKIH0KIAotLy8gRWxl
bWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXIKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPjo6RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9k
ZSYgcGFyZW50KQotICAgIDogbV9wYXJlbnQocGFyZW50KQotewotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT4gRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+Ojpi
ZWdpbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxl
bWVudFR5cGU+KG1fcGFyZW50LCBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdENoaWxkKG1f
cGFyZW50KSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBF
bGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRDb25zdEl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVs
ZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcGFyZW50KTsKLX0KLQotdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlKiBF
bGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZpcnN0KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RDaGlsZChtX3Bh
cmVudCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBjb25z
dCBFbGVtZW50VHlwZSogRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5
cGU+OjpsYXN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6
bGFzdENoaWxkKG1fcGFyZW50KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRD
aGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW5BdChjb25zdCBFbGVt
ZW50VHlwZSYgY2hpbGQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGNoaWxkLnBhcmVudE5vZGUoKSA9
PSAmbV9wYXJlbnQpOwotICAgIHJldHVybiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPihtX3BhcmVudCwgJmNoaWxkKTsKLX0KLQogLy8gU3RhbmRhbG9uZSBmdW5jdGlvbnMK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoQ29udGFpbmVyTm9kZSYg
cGFyZW50KQoraW5saW5lIEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9m
VHlwZShDb250YWluZXJOb2RlJiBwYXJlbnQpCiB7Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZEl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4ocGFyZW50KTsKKyAgICByZXR1cm4gRWxlbWVudENo
aWxkUmFuZ2U8RWxlbWVudFR5cGU+KHBhcmVudCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KQoraW5s
aW5lIEVsZW1lbnRDaGlsZFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShj
b25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpCiB7Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZENv
bnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihwYXJlbnQpOworICAgIHJldHVybiBFbGVt
ZW50Q2hpbGRSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4ocGFyZW50KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYmRiOTlhNmRkZTk2NDZk
ZmI0MTc0NjEyOTkxOGM3MzVlYWU0OTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDM2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oIgotI2luY2x1ZGUg
IkVsZW1lbnRUcmF2ZXJzYWwuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciB7Ci1wdWJsaWM6
Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcigpOwotICAgIGV4cGxpY2l0IEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IoRWxlbWVudCogY3VycmVudCk7Ci0KLSAgICBFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ciYgb3BlcmF0b3ItLSgpOwotCi0gICAgRWxlbWVudCYgb3BlcmF0b3IqKCk7Ci0gICAgRWxlbWVu
dCogb3BlcmF0b3ItPigpOwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotCi0gICAgdm9pZCBkcm9w
QXNzZXJ0aW9ucygpOwotCi1wcml2YXRlOgotICAgIEVsZW1lbnQqIG1fY3VycmVudDsKLSAgICBW
ZWN0b3I8RWxlbWVudCosIDE2PiBtX2FuY2VzdG9yU2libGluZ1N0YWNrOwotCi0jaWYgQVNTRVJU
X0VOQUJMRUQKLSAgICBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0aW9uczsKLSNl
bmRpZgotfTsKLQotY2xhc3MgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIHsKLXB1Ymxp
YzoKLSAgICBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoKTsKLSAgICBleHBsaWNpdCBF
bGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgRWxlbWVudCopOwotCi0gICAgRWxl
bWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Ci0KLSAgICBjb25zdCBF
bGVtZW50JiBvcGVyYXRvciooKSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50KiBvcGVyYXRvci0+
KCkgY29uc3Q7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRWxlbWVudERlc2NlbmRhbnRD
b25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVs
ZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotCi0gICAgdm9pZCBk
cm9wQXNzZXJ0aW9ucygpOwotCi1wcml2YXRlOgotICAgIGNvbnN0IEVsZW1lbnQqIG1fY3VycmVu
dDsKLSAgICBWZWN0b3I8RWxlbWVudCosIDE2PiBtX2FuY2VzdG9yU2libGluZ1N0YWNrOwotCi0j
aWYgQVNTRVJUX0VOQUJMRUQKLSAgICBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0
aW9uczsKLSNlbmRpZgotfTsKLQotY2xhc3MgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0
ZXIgewotcHVibGljOgotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENvbnRh
aW5lck5vZGUmIHJvb3QpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgYmVnaW4oKTsK
LSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGVuZCgpOwotICAgIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IgbGFzdCgpOwotCi1wcml2YXRlOgotICAgIENvbnRhaW5lck5vZGUmIG1fcm9v
dDsKLX07Ci0KLWNsYXNzIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIgewot
cHVibGljOgotICAgIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3Qg
Q29udGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
IGJlZ2luKCkgY29uc3Q7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIGVuZCgp
IGNvbnN0OwotICAgIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciBsYXN0KCkgY29uc3Q7
Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgQ29udGFpbmVyTm9kZSYgbV9yb290OwotfTsKLQotRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgZWxlbWVudERlc2NlbmRhbnRzKENvbnRhaW5l
ck5vZGUmKTsKLUVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIgZWxlbWVudERl
c2NlbmRhbnRzKGNvbnN0IENvbnRhaW5lck5vZGUmKTsKLQotLy8gRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcgotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6RWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcigpCi0gICAgOiBtX2N1cnJlbnQobnVsbHB0cikKLXsKLX0KLQotaW5saW5l
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoRWxl
bWVudCogY3VycmVudCkKLSAgICA6IG1fY3VycmVudChjdXJyZW50KQotI2lmIEFTU0VSVF9FTkFC
TEVECi0gICAgLCBtX2Fzc2VydGlvbnMoY3VycmVudCkKLSNlbmRpZgotewotICAgIG1fYW5jZXN0
b3JTaWJsaW5nU3RhY2sudW5jaGVja2VkQXBwZW5kKG51bGxwdHIpOwotfQotCi1pbmxpbmUgdm9p
ZCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpkcm9wQXNzZXJ0aW9ucygpCi17Ci0jaWYgQVNT
RVJUX0VOQUJMRUQKLSAgICBtX2Fzc2VydGlvbnMuY2xlYXIoKTsKLSNlbmRpZgotfQotCi1BTFdB
WVNfSU5MSU5FIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3I6Om9wZXJhdG9yKysoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VS
VCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotCi0gICAgRWxlbWVudCogZmly
c3RDaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQoKm1fY3VycmVudCk7Ci0gICAg
RWxlbWVudCogbmV4dFNpYmxpbmcgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZygqbV9j
dXJyZW50KTsKLQotICAgIGlmIChmaXJzdENoaWxkKSB7Ci0gICAgICAgIGlmIChuZXh0U2libGlu
ZykKLSAgICAgICAgICAgIG1fYW5jZXN0b3JTaWJsaW5nU3RhY2suYXBwZW5kKG5leHRTaWJsaW5n
KTsKLSAgICAgICAgbV9jdXJyZW50ID0gZmlyc3RDaGlsZDsKLSAgICAgICAgcmV0dXJuICp0aGlz
OwotICAgIH0KLQotICAgIGlmIChuZXh0U2libGluZykgewotICAgICAgICBtX2N1cnJlbnQgPSBu
ZXh0U2libGluZzsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIG1fY3VycmVu
dCA9IG1fYW5jZXN0b3JTaWJsaW5nU3RhY2sudGFrZUxhc3QoKTsKLQotI2lmIEFTU0VSVF9FTkFC
TEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMg
dGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BF
dmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiAqdGhpczsKLX0K
LQotQUxXQVlTX0lOTElORSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yOjpvcGVyYXRvci0tKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAg
ICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLQotICAgIEVsZW1l
bnQqIHByZXZpb3VzU2libGluZyA9IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZygq
bV9jdXJyZW50KTsKLQotICAgIGlmICghcHJldmlvdXNTaWJsaW5nKSB7Ci0gICAgICAgIG1fY3Vy
cmVudCA9IG1fY3VycmVudC0+cGFyZW50RWxlbWVudCgpOwotICAgICAgICAvLyBUaGUgc3RhY2sg
b3B0aW1pemVzIGZvciBmb3J3YXJkIHRyYXZlcnNhbCBvbmx5LCB0aGlzIGp1c3QgbWFpbnRhaW5z
IGNvbnNpc3RlbmN5LgotICAgICAgICBpZiAobV9jdXJyZW50LT5uZXh0U2libGluZygpICYmIG1f
Y3VycmVudC0+bmV4dFNpYmxpbmcoKSA9PSBtX2FuY2VzdG9yU2libGluZ1N0YWNrLmxhc3QoKSkK
LSAgICAgICAgICAgIG1fYW5jZXN0b3JTaWJsaW5nU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAg
ICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgRWxlbWVudCogZGVlcGVzdFNpYmxpbmcgPSBw
cmV2aW91c1NpYmxpbmc7Ci0gICAgd2hpbGUgKEVsZW1lbnQqIGxhc3RDaGlsZCA9IEVsZW1lbnRU
cmF2ZXJzYWw6Omxhc3RDaGlsZCgqZGVlcGVzdFNpYmxpbmcpKQotICAgICAgICBkZWVwZXN0U2li
bGluZyA9IGxhc3RDaGlsZDsKLSAgICBBU1NFUlQoZGVlcGVzdFNpYmxpbmcpOwotCi0gICAgaWYg
KGRlZXBlc3RTaWJsaW5nICE9IHByZXZpb3VzU2libGluZykKLSAgICAgICAgbV9hbmNlc3RvclNp
YmxpbmdTdGFjay5hcHBlbmQobV9jdXJyZW50KTsKLQotICAgIG1fY3VycmVudCA9IGRlZXBlc3RT
aWJsaW5nOwotCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24g
d2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQot
ICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRp
ZgotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi1pbmxpbmUgRWxlbWVudCYgRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjo6b3BlcmF0b3IqKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAg
ICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4g
Km1fY3VycmVudDsKLX0KLQotaW5saW5lIEVsZW1lbnQqIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3I6Om9wZXJhdG9yLT4oKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCgh
bV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQ7
Ci19Ci0KLWlubGluZSBib29sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6Om9wZXJhdG9yPT0o
Y29uc3QgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuIG1fY3Vy
cmVudCA9PSBvdGhlci5tX2N1cnJlbnQ7Ci19Ci0KLWlubGluZSBib29sIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3I6Om9wZXJhdG9yIT0oY29uc3QgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYg
b3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotfQotCi0vLyBF
bGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IKLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50
Q29uc3RJdGVyYXRvcjo6RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKCkKLSAgICA6IG1f
Y3VycmVudChudWxscHRyKQotewotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0
ZXJhdG9yOjpFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgRWxlbWVudCogY3Vy
cmVudCkKLSAgICA6IG1fY3VycmVudChjdXJyZW50KQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAg
LCBtX2Fzc2VydGlvbnMoY3VycmVudCkKLSNlbmRpZgotewotICAgIG1fYW5jZXN0b3JTaWJsaW5n
U3RhY2sudW5jaGVja2VkQXBwZW5kKG51bGxwdHIpOwotfQotCi1pbmxpbmUgdm9pZCBFbGVtZW50
RGVzY2VuZGFudENvbnN0SXRlcmF0b3I6OmRyb3BBc3NlcnRpb25zKCkKLXsKLSNpZiBBU1NFUlRf
RU5BQkxFRAotICAgIG1fYXNzZXJ0aW9ucy5jbGVhcigpOwotI2VuZGlmCi19Ci0KLUFMV0FZU19J
TkxJTkUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yJiBFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3I6Om9wZXJhdG9yKysoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAg
IEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotCi0gICAgRWxlbWVu
dCogZmlyc3RDaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQoKm1fY3VycmVudCk7
Ci0gICAgRWxlbWVudCogbmV4dFNpYmxpbmcgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGlu
ZygqbV9jdXJyZW50KTsKLQotICAgIGlmIChmaXJzdENoaWxkKSB7Ci0gICAgICAgIGlmIChuZXh0
U2libGluZykKLSAgICAgICAgICAgIG1fYW5jZXN0b3JTaWJsaW5nU3RhY2suYXBwZW5kKG5leHRT
aWJsaW5nKTsKLSAgICAgICAgbV9jdXJyZW50ID0gZmlyc3RDaGlsZDsKLSAgICAgICAgcmV0dXJu
ICp0aGlzOwotICAgIH0KLQotICAgIGlmIChuZXh0U2libGluZykgewotICAgICAgICBtX2N1cnJl
bnQgPSBuZXh0U2libGluZzsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIG1f
Y3VycmVudCA9IG1fYW5jZXN0b3JTaWJsaW5nU3RhY2sudGFrZUxhc3QoKTsKLQotI2lmIEFTU0VS
VF9FTkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJl
YWNoZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25z
LmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiAqdGhp
czsKLX0KLQotaW5saW5lIGNvbnN0IEVsZW1lbnQmIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVy
YXRvcjo6b3BlcmF0b3IqKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBB
U1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gKm1f
Y3VycmVudDsKLX0KLQotaW5saW5lIGNvbnN0IEVsZW1lbnQqIEVsZW1lbnREZXNjZW5kYW50Q29u
c3RJdGVyYXRvcjo6b3BlcmF0b3ItPigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7
Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0
dXJuIG1fY3VycmVudDsKLX0KLQotaW5saW5lIGJvb2wgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0
ZXJhdG9yOjpvcGVyYXRvcj09KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYg
b3RoZXIpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0
ZWQoKSk7Ci0gICAgcmV0dXJuIG1fY3VycmVudCA9PSBvdGhlci5tX2N1cnJlbnQ7Ci19Ci0KLWlu
bGluZSBib29sIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25z
dCBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAgIHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsKLX0KLQotLy8gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ckFkYXB0ZXIKLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjpFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2RlJiByb290KQotICAgIDog
bV9yb290KHJvb3QpCi17Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjpiZWdpbigpCi17Ci0gICAgcmV0dXJuIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGlsZChtX3Jv
b3QpKTsKLX0KLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvckFkYXB0ZXI6OmVuZCgpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IoKTsKLX0KLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI6Omxhc3QoKQotewotICAgIHJldHVybiBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yKEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RXaXRoaW4obV9yb290
KSk7Ci19Ci0KLS8vIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIKLQotaW5s
aW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI6OkVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKLSAgICA6
IG1fcm9vdChyb290KQotewotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI6OmJlZ2luKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKEVsZW1lbnRUcmF2
ZXJzYWw6OmZpcnN0Q2hpbGQobV9yb290KSk7Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3IgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjo6ZW5k
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKCk7
Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IgRWxlbWVudERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjo6bGFzdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVs
ZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcihFbGVtZW50VHJhdmVyc2FsOjpsYXN0V2l0aGlu
KG1fcm9vdCkpOwotfQotCi0vLyBTdGFuZGFsb25lIGZ1bmN0aW9ucwotCi1pbmxpbmUgRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgZWxlbWVudERlc2NlbmRhbnRzKENvbnRhaW5lck5v
ZGUmIHJvb3QpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVy
KHJvb3QpOwotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRl
ciBlbGVtZW50RGVzY2VuZGFudHMoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKLXsKLSAgICBy
ZXR1cm4gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcihyb290KTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2Ugc3RkIHsKLXRlbXBsYXRlIDw+IHN0
cnVjdCBpdGVyYXRvcl90cmFpdHM8V2ViQ29yZTo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcj4g
ewotICAgIHR5cGVkZWYgV2ViQ29yZTo6RWxlbWVudCB2YWx1ZV90eXBlOwotfTsKLXRlbXBsYXRl
IDw+IHN0cnVjdCBpdGVyYXRvcl90cmFpdHM8V2ViQ29yZTo6RWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yPiB7Ci0gICAgdHlwZWRlZiBjb25zdCBXZWJDb3JlOjpFbGVtZW50IHZhbHVlX3R5
cGU7Ci19OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvci5oCmluZGV4IDM3NGRiYTdh
NGMyNDc4ZGRkOTNhZWIyYTRjNDRlM2RiODJkNzNiNTYuLjYwMTJiYjYzMjRmMGJlMTkxNTUwMmRj
Zjk5NGFjNzdjOTRkMGRiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQs
MTYgKzM0LDE3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRJdGVyYXRvciB7CitjbGFzcyBFbGVtZW50SXRlcmF0
b3IgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBFbGVt
ZW50VHlwZT4gewogcHVibGljOgotICAgIEVsZW1lbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJO
b2RlKiByb290KTsKLSAgICBFbGVtZW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9v
dCwgRWxlbWVudFR5cGUqIGN1cnJlbnQpOworICAgIEVsZW1lbnRJdGVyYXRvcigpID0gZGVmYXVs
dDsKIAogICAgIEVsZW1lbnRUeXBlJiBvcGVyYXRvciooKSBjb25zdDsKICAgICBFbGVtZW50VHlw
ZSogb3BlcmF0b3ItPigpIGNvbnN0OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVsZW1l
bnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFbGVt
ZW50SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKKyAgICBjb25zdGV4cHIgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0OworICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yISgpIGNvbnN0OworICAgIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yIT0oc3RkOjpudWxscHRyX3QpIGNvbnN0OworICAgIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yIT0oY29uc3QgRWxlbWVudEl0ZXJhdG9yJikgY29uc3Q7CiAKICAgICBF
bGVtZW50SXRlcmF0b3ImIHRyYXZlcnNlTmV4dCgpOwogICAgIEVsZW1lbnRJdGVyYXRvciYgdHJh
dmVyc2VQcmV2aW91cygpOwpAQCAtNTQsMzkgKzU1LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
ZHJvcEFzc2VydGlvbnMoKTsKIAotcHJpdmF0ZToKLSAgICBjb25zdCBDb250YWluZXJOb2RlKiBt
X3Jvb3Q7Ci0gICAgRWxlbWVudFR5cGUqIG1fY3VycmVudDsKLQotI2lmIEFTU0VSVF9FTkFCTEVE
Ci0gICAgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7Ci0jZW5kaWYKLX07
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRDb25zdEl0
ZXJhdG9yIHsKLXB1YmxpYzoKLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvcihjb25zdCBDb250YWlu
ZXJOb2RlKiByb290KTsKLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJO
b2RlKiByb290LCBjb25zdCBFbGVtZW50VHlwZSogY3VycmVudCk7Ci0KLSAgICBjb25zdCBFbGVt
ZW50VHlwZSYgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIG9wZXJh
dG9yLT4oKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbGVtZW50Q29uc3RJ
dGVyYXRvciYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFbGVtZW50
Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotCi0gICAgRWxlbWVudENvbnN0SXRlcmF0b3Im
IHRyYXZlcnNlTmV4dCgpOwotICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZp
b3VzKCk7Ci0gICAgRWxlbWVudENvbnN0SXRlcmF0b3ImIHRyYXZlcnNlTmV4dFNpYmxpbmcoKTsK
LSAgICBFbGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoKTsKLSAg
ICBFbGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJlbigpOwot
ICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yJiB0cmF2ZXJzZUFuY2VzdG9yKCk7Ci0KLSAgICB2b2lk
IGRyb3BBc3NlcnRpb25zKCk7Citwcm90ZWN0ZWQ6CisgICAgRWxlbWVudEl0ZXJhdG9yKGNvbnN0
IENvbnRhaW5lck5vZGUqIHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKIAogcHJpdmF0ZToK
LSAgICBjb25zdCBDb250YWluZXJOb2RlKiBtX3Jvb3Q7Ci0gICAgY29uc3QgRWxlbWVudFR5cGUq
IG1fY3VycmVudDsKKyAgICBjb25zdCBDb250YWluZXJOb2RlKiBtX3Jvb3QgeyBudWxscHRyIH07
CisgICAgRWxlbWVudFR5cGUqIG1fY3VycmVudCB7IG51bGxwdHIgfTsKIAogI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7CkBAIC05
NSwxMyArNjksNiBAQCBwcml2YXRlOgogCiAvLyBFbGVtZW50SXRlcmF0b3IKIAotdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT46OkVsZW1lbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290KQotICAgIDogbV9y
b290KHJvb3QpCi0gICAgLCBtX2N1cnJlbnQobnVsbHB0cikKLXsKLX0KLQogdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46
OkVsZW1lbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290LCBFbGVtZW50VHlwZSog
Y3VycmVudCkKICAgICA6IG1fcm9vdChyb290KQpAQCAtMjM3LDE2MCArMjA0LDI1IEBAIGlubGlu
ZSBFbGVtZW50VHlwZSogRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItPigp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY3VycmVudDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIGJvb2wgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3Bl
cmF0b3I9PShjb25zdCBFbGVtZW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAgIEFTU0VS
VChtX3Jvb3QgPT0gb3RoZXIubV9yb290KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21U
cmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gbV9jdXJyZW50ID09IG90aGVyLm1fY3VycmVu
dDsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGJvb2wgRWxl
bWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBFbGVtZW50SXRlcmF0
b3ImIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLX0KLQot
Ly8gRWxlbWVudENvbnN0SXRlcmF0b3IKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotaW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENvbnN0
SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCkKLSAgICA6IG1fcm9vdChyb290KQot
ICAgICwgbV9jdXJyZW50KG51bGxwdHIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4g
Y29uc3RleHByIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIGJvb2woKSBj
b25zdAogeworICAgIHJldHVybiBtX2N1cnJlbnQ7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVs
ZW1lbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QsIGNvbnN0IEVsZW1l
bnRUeXBlKiBjdXJyZW50KQotICAgIDogbV9yb290KHJvb3QpCi0gICAgLCBtX2N1cnJlbnQoY3Vy
cmVudCkKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgICwgbV9hc3NlcnRpb25zKGN1cnJlbnQpCi0j
ZW5kaWYKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVs
ZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxl
bWVudFR5cGU+Ojp0cmF2ZXJzZU5leHQoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAg
IEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3VycmVu
dCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHQoKm1fY3VycmVudCwgbV9yb290KTsKLSNp
ZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVy
YXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0gICAgICAgIG1fYXNz
ZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlmCi0gICAgcmV0dXJu
ICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxl
bWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXMoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwot
ICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3Vy
cmVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnByZXZpb3VzKCptX2N1cnJlbnQsIG1fcm9v
dCk7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0
aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAg
ICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAg
IHJldHVybiAqdGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5s
aW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0
b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkKLXsKLSAgICBBU1NFUlQobV9j
dXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsK
LSAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0U2libGluZygqbV9j
dXJyZW50KTsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3
aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0g
ICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlm
Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
Ci1pbmxpbmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKCkKLXsKLSAgICBB
U1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0
YXRlZCgpKTsKLSAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpwcmV2aW91
c1NpYmxpbmcoKm1fY3VycmVudCk7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRo
ZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICgh
bV9jdXJyZW50KQotICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRp
b24oKTsKLSNlbmRpZgotICAgIHJldHVybiAqdGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYg
RWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTa2lwcGluZ0No
aWxkcmVuKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0
aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxl
bWVudFR5cGU+OjpuZXh0U2tpcHBpbmdDaGlsZHJlbigqbV9jdXJyZW50LCBtX3Jvb3QpOwotI2lm
IEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJh
dG9yIHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3Nl
cnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4g
KnRoaXM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVt
ZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6dHJhdmVyc2VBbmNlc3RvcigpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0g
ICAgQVNTRVJUKG1fY3VycmVudCAhPSBtX3Jvb3QpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25z
LmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3VycmVudCA9IGZpbmRFbGVtZW50QW5jZXN0
b3JPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCptX2N1cnJlbnQpOwotI2lmIEFTU0VSVF9FTkFC
TEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMg
dGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BF
dmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSB2b2lkIEVsZW1lbnRDb25z
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6ZHJvcEFzc2VydGlvbnMoKQotewotI2lmIEFTU0VSVF9F
TkFCTEVECi0gICAgbV9hc3NlcnRpb25zLmNsZWFyKCk7Ci0jZW5kaWYKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlJiBFbGVtZW50
Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKigpIGNvbnN0Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBFbGVtZW50VHlwZT4gY29uc3RleHByIGJvb2wgRWxlbWVudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6b3BlcmF0b3IhKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAg
ICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4g
Km1fY3VycmVudDsKKyAgICByZXR1cm4gIW1fY3VycmVudDsKIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlKiBFbGVtZW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yLT4oKSBjb25zdAordGVtcGxhdGU8dHlwZW5h
bWUgRWxlbWVudFR5cGU+IGNvbnN0ZXhwciBib29sIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT46Om9wZXJhdG9yIT0oc3RkOjpudWxscHRyX3QpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fY3Vy
cmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CiAg
ICAgcmV0dXJuIG1fY3VycmVudDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotaW5saW5lIGJvb2wgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRv
cj09KGNvbnN0IEVsZW1lbnRDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICBBU1NF
UlQobV9yb290ID09IG90aGVyLm1fcm9vdCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9t
VHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuIG1fY3VycmVudCA9PSBvdGhlci5tX2N1cnJl
bnQ7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBib29sIEVs
ZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBFbGVtZW50
Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4gY29uc3RleHByIGJvb2wgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3Ih
PShjb25zdCBFbGVtZW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsKKyAgICBBU1NFUlQobV9yb290ID09IG90aGVyLm1fcm9vdCB8fCAhbV9j
dXJyZW50IHx8ICFvdGhlci5tX2N1cnJlbnQpOworICAgIHJldHVybiBtX2N1cnJlbnQgIT0gb3Ro
ZXIubV9jdXJyZW50OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9M
aXZlTm9kZUxpc3QuY3BwCmluZGV4IGRkMGM5OTkxODA5Y2JmN2M3MTA2MDA1MDIxNjRlOWExNmZk
Y2MxOTEuLjQ3ODkyMzAxZTI5NmFhNmE1N2Q4ZDM4NTNhYjdiNjhkZTViOWNhN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9MaXZlTm9kZUxpc3QuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChD
KSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkg
QW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEg
RGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDYtMjAwOCwgMjAxMCwgMjAxMy0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsMzIgKzIzLDE0IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiTGl2ZU5vZGVMaXN0LmgiCiAKLSNpbmNsdWRlICJDbGFzc0NvbGxl
Y3Rpb24uaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudFRyYXZlcnNh
bC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoTGl2ZU5vZGVMaXN0KTsKLQogTGl2ZU5vZGVMaXN0OjpMaXZlTm9kZUxpc3QoQ29u
dGFpbmVyTm9kZSYgb3duZXJOb2RlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxpZGF0
aW9uVHlwZSkKICAgICA6IG1fb3duZXJOb2RlKG93bmVyTm9kZSkKICAgICAsIG1faW52YWxpZGF0
aW9uVHlwZShpbnZhbGlkYXRpb25UeXBlKQotICAgICwgbV9pc1JlZ2lzdGVyZWRGb3JJbnZhbGlk
YXRpb25BdERvY3VtZW50KGZhbHNlKQogewotICAgIEFTU0VSVChtX2ludmFsaWRhdGlvblR5cGUg
PT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludmFsaWRhdGlvblR5cGUpKTsKIH0KIAogTGl2ZU5v
ZGVMaXN0Ojp+TGl2ZU5vZGVMaXN0KCkgPSBkZWZhdWx0OwogCi1Db250YWluZXJOb2RlJiBMaXZl
Tm9kZUxpc3Q6OnJvb3ROb2RlKCkgY29uc3QKLXsKLSAgICBpZiAoaXNSb290ZWRBdERvY3VtZW50
KCkgJiYgb3duZXJOb2RlKCkuaXNDb25uZWN0ZWQoKSkKLSAgICAgICAgcmV0dXJuIG93bmVyTm9k
ZSgpLmRvY3VtZW50KCk7Ci0KLSAgICByZXR1cm4gb3duZXJOb2RlKCk7Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxp
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaAppbmRleCBmMjdmMGVmNjc0
YmJkOTgyMzE0YzBiYmIyNWI4NTI0MjIzNGRhNThmLi4zNGEzZGVmZDJmNTBiYzZhMTczM2JmODE1
ODBmYTc0ZDg2NDBkNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCkBAIC0yNiw3ICsy
Niw2IEBACiAjaW5jbHVkZSAiQ29sbGVjdGlvbkluZGV4Q2FjaGUuaCIKICNpbmNsdWRlICJDb2xs
ZWN0aW9uVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMzksMzkgKzM4LDM1
IEBAIGNsYXNzIEVsZW1lbnQ7CiBzdGF0aWMgYm9vbCBzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0
cmlidXRlQ2hhbmdlKE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogCiBjbGFzcyBMaXZlTm9kZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QgewotICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoTGl2ZU5vZGVMaXN0KTsKKyAgICBXVEZfTUFLRV9JU09fTk9OQUxM
T0NBVEFCTEUoTGl2ZU5vZGVMaXN0KTsKIHB1YmxpYzoKLSAgICBMaXZlTm9kZUxpc3QoQ29udGFp
bmVyTm9kZSYgb3duZXJOb2RlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUpOwogICAgIHZpcnR1
YWwgfkxpdmVOb2RlTGlzdCgpOwogCiAgICAgdmlydHVhbCBib29sIGVsZW1lbnRNYXRjaGVzKEVs
ZW1lbnQmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzUm9vdGVkQXREb2N1bWVudCgp
IGNvbnN0ID0gMDsKIAotICAgIEFMV0FZU19JTkxJTkUgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBl
IGludmFsaWRhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxOb2RlTGlzdElu
dmFsaWRhdGlvblR5cGU+KG1faW52YWxpZGF0aW9uVHlwZSk7IH0KKyAgICBOb2RlTGlzdEludmFs
aWRhdGlvblR5cGUgaW52YWxpZGF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faW52YWxpZGF0
aW9uVHlwZTsgfQogICAgIENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fb3duZXJOb2RlOyB9Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGludmFsaWRhdGVDYWNoZUZv
ckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIGlmIChzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmlidXRlQ2hhbmdlKGludmFsaWRh
dGlvblR5cGUoKSwgYXR0ck5hbWUpKQotICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hlKCk7Ci0g
ICAgfQorICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRl
Q2FjaGVGb3JEb2N1bWVudChEb2N1bWVudCYpIGNvbnN0ID0gMDsKICAgICB2b2lkIGludmFsaWRh
dGVDYWNoZSgpIGNvbnN0IHsgaW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQoZG9jdW1lbnQoKSk7
IH0KIAogICAgIGJvb2wgaXNSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudDsgfQot
ICAgIHZvaWQgc2V0UmVnaXN0ZXJlZEZvckludmFsaWRhdGlvbkF0RG9jdW1lbnQoYm9vbCBmKSB7
IG1faXNSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudCA9IGY7IH0KKyAgICB2b2lk
IHNldFJlZ2lzdGVyZWRGb3JJbnZhbGlkYXRpb25BdERvY3VtZW50KGJvb2wgaXNSZWdpc3RlcmVk
KSB7IG1faXNSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudCA9IGlzUmVnaXN0ZXJl
ZDsgfQogCiBwcm90ZWN0ZWQ6CisgICAgTGl2ZU5vZGVMaXN0KENvbnRhaW5lck5vZGUmIG93bmVy
Tm9kZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlKTsKKwogICAgIERvY3VtZW50JiBkb2N1bWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXJOb2RlLT5kb2N1bWVudCgpOyB9CisgICAgQ29udGFp
bmVyTm9kZSYgcm9vdE5vZGUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBib29sIGlzTGl2ZU5v
ZGVMaXN0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgQ29udGFpbmVyTm9k
ZSYgcm9vdE5vZGUoKSBjb25zdDsKLQogICAgIFJlZjxDb250YWluZXJOb2RlPiBtX293bmVyTm9k
ZTsKIAotICAgIGNvbnN0IHVuc2lnbmVkIG1faW52YWxpZGF0aW9uVHlwZTsKLSAgICBib29sIG1f
aXNSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudDsKKyAgICBjb25zdCBOb2RlTGlz
dEludmFsaWRhdGlvblR5cGUgbV9pbnZhbGlkYXRpb25UeXBlOworICAgIGJvb2wgbV9pc1JlZ2lz
dGVyZWRGb3JJbnZhbGlkYXRpb25BdERvY3VtZW50IHsgZmFsc2UgfTsKIH07CiAKIHRlbXBsYXRl
IDxjbGFzcyBOb2RlTGlzdFR5cGU+CkBAIC04MSwxNCArNzYsMTUgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgfkNhY2hlZExpdmVOb2RlTGlzdCgpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVDb3VudChub2RlTGlzdCgpKTsgfQot
ICAgIEVsZW1lbnQqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2luZGV4Q2FjaGUubm9kZUF0KG5vZGVMaXN0KCksIG9mZnNldCk7IH0KKyAgICBFbGVtZW50
KiBpdGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hl
Lm5vZGVBdChub2RlTGlzdCgpLCBvZmZzZXQpOyB9CiAKICAgICAvLyBGb3IgQ29sbGVjdGlvbklu
ZGV4Q2FjaGUKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGNvbGxlY3Rpb25CZWdpbigp
IGNvbnN0IHsgcmV0dXJuIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5
cGU6OkRlc2NlbmRhbnRzPjo6YmVnaW4obm9kZUxpc3QoKSwgcm9vdE5vZGUoKSk7IH0KLSAgICBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGNvbGxlY3Rpb25MYXN0KCkgY29uc3QgeyByZXR1cm4g
Q29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+
OjpsYXN0KG5vZGVMaXN0KCksIHJvb3ROb2RlKCkpOyB9Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvciBjb2xsZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcigpOyB9Ci0gICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJh
dmVyc2VkQ291bnQpIGNvbnN0IHsgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVy
c2FsVHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUZvcndhcmQobm9kZUxpc3QoKSwgY3VycmVu
dCwgY291bnQsIHRyYXZlcnNlZENvdW50KTsgfQotICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNl
QmFja3dhcmQoRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291
bnQpIGNvbnN0IHsgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6
RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUJhY2t3YXJkKG5vZGVMaXN0KCksIGN1cnJlbnQsIGNvdW50
KTsgfQorICAgIHVzaW5nIFRyYXZlcnNhbCA9IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlv
blRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjsKKyAgICB1c2luZyBJdGVyYXRvciA9IFRyYXZl
cnNhbDo6SXRlcmF0b3I7CisgICAgYXV0byBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdCB7IHJldHVy
biBUcmF2ZXJzYWw6OmJlZ2luKG5vZGVMaXN0KCksIHJvb3ROb2RlKCkpOyB9CisgICAgYXV0byBj
b2xsZWN0aW9uTGFzdCgpIGNvbnN0IHsgcmV0dXJuIFRyYXZlcnNhbDo6bGFzdChub2RlTGlzdCgp
LCByb290Tm9kZSgpKTsgfQorICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChJdGVy
YXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkg
Y29uc3QgeyBUcmF2ZXJzYWw6OnRyYXZlcnNlRm9yd2FyZChub2RlTGlzdCgpLCBjdXJyZW50LCBj
b3VudCwgdHJhdmVyc2VkQ291bnQpOyB9CisgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VCYWNr
d2FyZChJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpIGNvbnN0IHsgVHJhdmVyc2Fs
Ojp0cmF2ZXJzZUJhY2t3YXJkKG5vZGVMaXN0KCksIGN1cnJlbnQsIGNvdW50KTsgfQogICAgIGJv
b2wgY29sbGVjdGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAgICAgdm9pZCB3aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3QgeyBkb2N1bWVudCgpLnJl
Z2lzdGVyTm9kZUxpc3RGb3JJbnZhbGlkYXRpb24oY29uc3RfY2FzdDxDYWNoZWRMaXZlTm9kZUxp
c3Q8Tm9kZUxpc3RUeXBlPiY+KCp0aGlzKSk7IH0KIApAQCAtMTA4LDkgKzEwNCw3IEBAIHByaXZh
dGU6CiAgICAgTm9kZUxpc3RUeXBlJiBub2RlTGlzdCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE5v
ZGVMaXN0VHlwZSY+KCp0aGlzKTsgfQogICAgIGNvbnN0IE5vZGVMaXN0VHlwZSYgbm9kZUxpc3Qo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigqdGhpcyk7
IH0KIAotICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKCkgY29uc3Q7Ci0KLSAgICBtdXRhYmxl
IENvbGxlY3Rpb25JbmRleENhY2hlPE5vZGVMaXN0VHlwZSwgRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcj4gbV9pbmRleENhY2hlOworICAgIG11dGFibGUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Tm9k
ZUxpc3RUeXBlLCBJdGVyYXRvcj4gbV9pbmRleENhY2hlOwogfTsKIAogQUxXQVlTX0lOTElORSBi
b29sIHNob3VsZEludmFsaWRhdGVUeXBlT25BdHRyaWJ1dGVDaGFuZ2UoTm9kZUxpc3RJbnZhbGlk
YXRpb25UeXBlIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpAQCAtMTM3LDM2
ICsxMzEsNDAgQEAgQUxXQVlTX0lOTElORSBib29sIHNob3VsZEludmFsaWRhdGVUeXBlT25BdHRy
aWJ1dGVDaGFuZ2UoTm9kZUxpc3RJbnZhbGlkYXRpb25UeXAKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBMaXZlTm9kZUxpc3Q6OmludmFsaWRhdGVDYWNoZUZvckF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAoreworICAg
IGlmIChzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmlidXRlQ2hhbmdlKG1faW52YWxpZGF0aW9u
VHlwZSwgYXR0cmlidXRlTmFtZSkpCisgICAgICAgIGludmFsaWRhdGVDYWNoZSgpOworfQorCitp
bmxpbmUgQ29udGFpbmVyTm9kZSYgTGl2ZU5vZGVMaXN0Ojpyb290Tm9kZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKGlzUm9vdGVkQXREb2N1bWVudCgpICYmIG1fb3duZXJOb2RlLT5pc0Nvbm5lY3RlZCgp
KQorICAgICAgICByZXR1cm4gZG9jdW1lbnQoKTsKKworICAgIHJldHVybiBtX293bmVyTm9kZTsK
K30KKwogdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KIENhY2hlZExpdmVOb2RlTGlzdDxO
b2RlTGlzdFR5cGU+OjpDYWNoZWRMaXZlTm9kZUxpc3QoQ29udGFpbmVyTm9kZSYgb3duZXJOb2Rl
LCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxpZGF0aW9uVHlwZSkKICAgICA6IExpdmVO
b2RlTGlzdChvd25lck5vZGUsIGludmFsaWRhdGlvblR5cGUpCi0gICAgLCBtX2luZGV4Q2FjaGUo
bm9kZUxpc3QoKSkKIHsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KIENhY2hl
ZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojp+Q2FjaGVkTGl2ZU5vZGVMaXN0KCkKIHsKLSAg
ICBpZiAobV9pbmRleENhY2hlLmhhc1ZhbGlkQ2FjaGUobm9kZUxpc3QoKSkpCisgICAgaWYgKG1f
aW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKCkpCiAgICAgICAgIGRvY3VtZW50KCkudW5yZWdpc3Rl
ck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKCp0aGlzKTsKIH0KIAotdGVtcGxhdGUgPGNsYXNzIE5v
ZGVMaXN0VHlwZT4KLWlubGluZSBDb250YWluZXJOb2RlJiBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9k
ZUxpc3RUeXBlPjo6cm9vdE5vZGUoKSBjb25zdAotewotICAgIGlmIChub2RlTGlzdCgpLmlzUm9v
dGVkQXREb2N1bWVudCgpICYmIG93bmVyTm9kZSgpLmlzQ29ubmVjdGVkKCkpCi0gICAgICAgIHJl
dHVybiBvd25lck5vZGUoKS5kb2N1bWVudCgpOwotCi0gICAgcmV0dXJuIG93bmVyTm9kZSgpOwot
fQotCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgogdm9pZCBDYWNoZWRMaXZlTm9kZUxp
c3Q8Tm9kZUxpc3RUeXBlPjo6aW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQoRG9jdW1lbnQmIGRv
Y3VtZW50KSBjb25zdAogewotICAgIGlmICghbV9pbmRleENhY2hlLmhhc1ZhbGlkQ2FjaGUobm9k
ZUxpc3QoKSkpCisgICAgaWYgKCFtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZSgpKQogICAgICAg
ICByZXR1cm47CiAgICAgZG9jdW1lbnQudW5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9u
KGNvbnN0X2Nhc3Q8Tm9kZUxpc3RUeXBlJj4obm9kZUxpc3QoKSkpOwotICAgIG1faW5kZXhDYWNo
ZS5pbnZhbGlkYXRlKG5vZGVMaXN0KCkpOworICAgIG1faW5kZXhDYWNoZS5pbnZhbGlkYXRlKCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9OYW1lTm9kZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5j
cHAKaW5kZXggZjBhZGQyYWMyZDU0NjY2ZmEyZmU4NTc4OTYyY2I1NDA4ZmJiNzM1NC4uZjRmYTI2
ZmM3ZTYzNjI0NDFhYzM0Mzc0ZWMxMmU1MjQ4OWY3ZjkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05hbWVOb2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVO
b2RlTGlzdC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBL
bm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0
byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIg
KG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNywgMjAxNC0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtMzgsNiArMzgsMTEgQEAgTmFtZU5vZGVMaXN0OjpOYW1lTm9kZUxpc3QoQ29udGFpbmVyTm9k
ZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiB7CiB9CiAKK1JlZjxOYW1lTm9k
ZUxpc3Q+IE5hbWVOb2RlTGlzdDo6Y3JlYXRlKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25z
dCBBdG9tU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5hbWVOb2Rl
TGlzdChyb290Tm9kZSwgbmFtZSkpOworfQorCiBOYW1lTm9kZUxpc3Q6On5OYW1lTm9kZUxpc3Qo
KQogewogICAgIG93bmVyTm9kZSgpLm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZVdpdGhBdG9tTmFt
ZSgqdGhpcywgbV9uYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9k
ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuaAppbmRleCA3MGM1Yzcw
MGU5NTBlNTMxNDM3ZjBmZGU1MWNjYzM4ZDZkY2IzYWExLi45NDc1ZGVmZWQ0ZWI3ODlkZmUzMTMx
MjE5NDU0ZmUyMzg1MDFlN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5v
ZGVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5oCkBAIC0yLDcg
KzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcp
CiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcp
CiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDctMjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI0LDI0ICsyNCwxNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJMaXZlTm9kZUxpc3QuaCIKLSNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi0vLyBOb2RlTGlzdCB3aGljaCBsaXN0cyBhbGwgTm9kZXMgaW4gYSBFbGVt
ZW50IHdpdGggYSBnaXZlbiAibmFtZSIgYXR0cmlidXRlCiBjbGFzcyBOYW1lTm9kZUxpc3QgZmlu
YWwgOiBwdWJsaWMgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5hbWVOb2RlTGlzdD4gewogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoTmFtZU5vZGVMaXN0KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PE5hbWVOb2RlTGlzdD4gY3JlYXRlKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9t
U3RyaW5nJiBuYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmFtZU5v
ZGVMaXN0KHJvb3ROb2RlLCBuYW1lKSk7Ci0gICAgfQotCisgICAgc3RhdGljIFJlZjxOYW1lTm9k
ZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYg
bmFtZSk7CiAgICAgdmlydHVhbCB+TmFtZU5vZGVMaXN0KCk7CiAKLSAgICBib29sIGVsZW1lbnRN
YXRjaGVzKEVsZW1lbnQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzUm9vdGVkQXREb2N1
bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBlbGVtZW50
TWF0Y2hlcyhFbGVtZW50JikgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc1Jvb3RlZEF0RG9jdW1l
bnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgogICAgIE5hbWVO
b2RlTGlzdChDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKaW5kZXggOTgyMTI0NGRjOTE3NDkzNDFiM2QyNmM1M2FlMjU3ZjNhY2Fh
YTk1MS4uZjljNTlkMDY1NzExNTVlMTEzMTNhMDhmZDdhNTZmYzIyYTQ2MmNmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcApAQCAtNDcsNyArNDcsNiBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1
ZGUgIkhUTUxBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgotI2lu
Y2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50LmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggZWYwNTUyOTM0Mjc3ZDQzYjExOWE0
Njc1MWZmNDI4ZTBhMTgwMzc5MC4uYzA2MWEzZGUyYmM1NTgyNWY5NWNmNzJkNDgwMzNhMWVjZDE5
ZDI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1
ZGUgIlNlbGVjdG9yUXVlcnkuaCIKIAogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgotI2luY2x1ZGUg
IkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIK
ICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgpAQCAtMTUwLDE1ICsxNTAsMTIgQEAgYm9vbCBT
ZWxlY3RvckRhdGFMaXN0OjptYXRjaGVzKEVsZW1lbnQmIHRhcmdldEVsZW1lbnQpIGNvbnN0CiAK
IEVsZW1lbnQqIFNlbGVjdG9yRGF0YUxpc3Q6OmNsb3Nlc3QoRWxlbWVudCYgdGFyZ2V0RWxlbWVu
dCkgY29uc3QKIHsKLSAgICBFbGVtZW50KiBjdXJyZW50Tm9kZSA9ICZ0YXJnZXRFbGVtZW50Owot
ICAgIGRvIHsKKyAgICBmb3IgKGF1dG8mIGN1cnJlbnRFbGVtZW50IDogbGluZWFnZU9mVHlwZTxF
bGVtZW50Pih0YXJnZXRFbGVtZW50KSkgewogICAgICAgICBmb3IgKGF1dG8mIHNlbGVjdG9yIDog
bV9zZWxlY3RvcnMpIHsKLSAgICAgICAgICAgIEVsZW1lbnQqIGNhbmRpZGF0ZUVsZW1lbnQgPSBz
ZWxlY3RvckNsb3Nlc3Qoc2VsZWN0b3IsICpjdXJyZW50Tm9kZSwgdGFyZ2V0RWxlbWVudCk7Ci0g
ICAgICAgICAgICBpZiAoY2FuZGlkYXRlRWxlbWVudCkKKyAgICAgICAgICAgIGlmIChhdXRvKiBj
YW5kaWRhdGVFbGVtZW50ID0gc2VsZWN0b3JDbG9zZXN0KHNlbGVjdG9yLCBjdXJyZW50RWxlbWVu
dCwgdGFyZ2V0RWxlbWVudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUVsZW1l
bnQ7CiAgICAgICAgIH0KLSAgICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS0+cGFyZW50
RWxlbWVudCgpOwotICAgIH0gd2hpbGUgKGN1cnJlbnROb2RlKTsKKyAgICB9CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKQEAgLTI5NSw3ICsyOTIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2Vs
ZWN0b3JRdWVyeVRyYWl0Pgogc3RhdGljIGlubGluZSB2b2lkIGVsZW1lbnRzRm9yTG9jYWxOYW1l
KGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5h
bWUsIGNvbnN0IEF0b21TdHJpbmcmIGxvd2VyY2FzZUxvY2FsTmFtZSwgdHlwZW5hbWUgU2VsZWN0
b3JRdWVyeVRyYWl0OjpPdXRwdXRUeXBlJiBvdXRwdXQpCiB7CiAgICAgaWYgKGxvY2FsTmFtZSA9
PSBsb3dlcmNhc2VMb2NhbE5hbWUpIHsKLSAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxl
bWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4o
Y29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAgICAgICAgICAgaWYg
KGVsZW1lbnQudGFnUU5hbWUoKS5sb2NhbE5hbWUoKSA9PSBsb2NhbE5hbWUpIHsKICAgICAgICAg
ICAgICAgICBTZWxlY3RvclF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1lbnQob3V0cHV0
LCAmZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKFNlbGVjdG9yUXVlcnlUcmFpdDo6c2hv
dWxkT25seU1hdGNoRmlyc3RFbGVtZW50KQpAQCAtMzAzLDcgKzMwMCw3IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBlbGVtZW50c0ZvckxvY2FsTmFtZShjb25zdCBDb250YWluZXJOb2RlJiByb290Tm9k
ZSwgY29uc3QgQXRvCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAg
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29uc3RfY2FzdDxD
b250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQg
OiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihy
b290Tm9kZSkpKSB7CiAgICAgICAgICAgICBpZiAobG9jYWxOYW1lTWF0Y2hlcyhlbGVtZW50LCBs
b2NhbE5hbWUsIGxvd2VyY2FzZUxvY2FsTmFtZSkpIHsKICAgICAgICAgICAgICAgICBTZWxlY3Rv
clF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1lbnQob3V0cHV0LCAmZWxlbWVudCk7CiAg
ICAgICAgICAgICAgICAgaWYgKFNlbGVjdG9yUXVlcnlUcmFpdDo6c2hvdWxkT25seU1hdGNoRmly
c3RFbGVtZW50KQpAQCAtMzE2LDcgKzMxMyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbGVtZW50
c0ZvckxvY2FsTmFtZShjb25zdCBDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRyYWl0Pgogc3RhdGljIGlubGluZSB2b2lk
IGFueUVsZW1lbnQoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIHR5cGVuYW1lIFNlbGVj
dG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0cHV0KQogewotICAgIGZvciAoYXV0byYgZWxl
bWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihyb290
Tm9kZSkpKSB7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxl
bWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAgICAgICBT
ZWxlY3RvclF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1lbnQob3V0cHV0LCAmZWxlbWVu
dCk7CiAgICAgICAgIGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0
RWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM0NSw3ICszNDIsNyBAQCBBTFdBWVNf
SU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZVRhZ05hbWVTZWxlY3Rv
ckRhdGEoY29uc3QgQ29udAogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRmFs
bGJhY2s6IE5hbWVzcGFjZVVSSSBpcyBzZXQsIHNlbGVjdG9yTG9jYWxOYW1lIG1heSBiZSBzdGFy
QXRvbSgpLgotICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMo
Y29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgICAgICBmb3IgKGF1
dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRh
aW5lck5vZGUmPihyb290Tm9kZSkpKSB7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC5uYW1lc3Bh
Y2VVUkkoKSA9PSBzZWxlY3Rvck5hbWVzcGFjZVVSSSAmJiBsb2NhbE5hbWVNYXRjaGVzKGVsZW1l
bnQsIHNlbGVjdG9yTG9jYWxOYW1lLCBzZWxlY3Rvckxvd2VyY2FzZUxvY2FsTmFtZSkpIHsKICAg
ICAgICAgICAgICAgICBTZWxlY3RvclF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1lbnQo
b3V0cHV0LCAmZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKFNlbGVjdG9yUXVlcnlUcmFp
dDo6c2hvdWxkT25seU1hdGNoRmlyc3RFbGVtZW50KQpAQCAtMzYyLDcgKzM1OSw3IEBAIEFMV0FZ
U19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlQ2xhc3NOYW1lU2Vs
ZWN0b3JEYXRhKGNvbnN0IENvCiAgICAgQVNTRVJUKGlzU2luZ2xlQ2xhc3NOYW1lU2VsZWN0b3Io
KnNlbGVjdG9yRGF0YS5zZWxlY3RvcikpOwogCiAgICAgY29uc3QgQXRvbVN0cmluZyYgY2xhc3NO
YW1lID0gc2VsZWN0b3JEYXRhLnNlbGVjdG9yLT52YWx1ZSgpOwotICAgIGZvciAoYXV0byYgZWxl
bWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihyb290
Tm9kZSkpKSB7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxl
bWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAgICAgICBp
ZiAoZWxlbWVudC5oYXNDbGFzcygpICYmIGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKGNs
YXNzTmFtZSkpIHsKICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBwZW5kT3V0cHV0
Rm9yRWxlbWVudChvdXRwdXQsICZlbGVtZW50KTsKICAgICAgICAgICAgIGlmIChTZWxlY3RvclF1
ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAgLTM3Niw3ICszNzMsNyBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZVNlbGVj
dG9yRGF0YShjb25zdCBDb250YWluZXJObwogewogICAgIEFTU0VSVChtX3NlbGVjdG9ycy5zaXpl
KCkgPT0gMSk7CiAKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMo
Y29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4oc2VhcmNoUm9vdE5vZGUpKSkgeworICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29u
dGFpbmVyTm9kZSY+KHNlYXJjaFJvb3ROb2RlKSkpIHsKICAgICAgICAgaWYgKHNlbGVjdG9yTWF0
Y2hlcyhzZWxlY3RvckRhdGEsIGVsZW1lbnQsIHJvb3ROb2RlKSkgewogICAgICAgICAgICAgU2Vs
ZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQp
OwogICAgICAgICAgICAgaWYgKFNlbGVjdG9yUXVlcnlUcmFpdDo6c2hvdWxkT25seU1hdGNoRmly
c3RFbGVtZW50KQpAQCAtMzg4LDcgKzM4NSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3Rv
ckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlU2VsZWN0b3JEYXRhKGNvbnN0IENvbnRhaW5lck5vCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRyYWl0PgogQUxXQVlTX0lOTElORSB2b2lk
IFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVNdWx0aVNlbGVjdG9yRGF0YShjb25zdCBD
b250YWluZXJOb2RlJiByb290Tm9kZSwgdHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRyYWl0OjpPdXRw
dXRUeXBlJiBvdXRwdXQpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVu
dERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsKKyAg
ICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihjb25zdF9j
YXN0PENvbnRhaW5lck5vZGUmPihyb290Tm9kZSkpKSB7CiAgICAgICAgIGZvciAoYXV0byYgc2Vs
ZWN0b3IgOiBtX3NlbGVjdG9ycykgewogICAgICAgICAgICAgaWYgKHNlbGVjdG9yTWF0Y2hlcyhz
ZWxlY3RvciwgZWxlbWVudCwgcm9vdE5vZGUpKSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JR
dWVyeVRyYWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwpAQCAt
NDA0LDcgKzQwMSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVj
dXRlU2luZ2xlTXVsdGlTZWxlY3RvckRhdGEoY29uc3QgQ29udGFpCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgU2VsZWN0b3JRdWVyeVRyYWl0PgogQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxp
c3Q6OmV4ZWN1dGVDb21waWxlZFNpbXBsZVNlbGVjdG9yQ2hlY2tlcihjb25zdCBDb250YWluZXJO
b2RlJiBzZWFyY2hSb290Tm9kZSwgU2VsZWN0b3JDb21waWxlcjo6UXVlcnlTZWxlY3RvclNpbXBs
ZVNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIsIHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlU
cmFpdDo6T3V0cHV0VHlwZSYgb3V0cHV0LCBjb25zdCBTZWxlY3RvckRhdGEmIHNlbGVjdG9yRGF0
YSkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMo
Y29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4oc2VhcmNoUm9vdE5vZGUpKSkgeworICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29u
dGFpbmVyTm9kZSY+KHNlYXJjaFJvb3ROb2RlKSkpIHsKICAgICAgICAgc2VsZWN0b3JEYXRhLmNv
bXBpbGVkU2VsZWN0b3Iud2FzVXNlZCgpOwogCiAgICAgICAgIGlmIChzZWxlY3RvckNoZWNrZXIo
JmVsZW1lbnQpKSB7CkBAIC00MjEsNyArNDE4LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVj
dG9yRGF0YUxpc3Q6OmV4ZWN1dGVDb21waWxlZFNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0MK
ICAgICBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCBjaGVja2luZ0NvbnRleHQoU2Vs
ZWN0b3JDaGVja2VyOjpNb2RlOjpRdWVyeWluZ1J1bGVzKTsKICAgICBjaGVja2luZ0NvbnRleHQu
c2NvcGUgPSByb290Tm9kZS5pc0RvY3VtZW50Tm9kZSgpID8gbnVsbHB0ciA6ICZyb290Tm9kZTsK
IAotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9jYXN0
PENvbnRhaW5lck5vZGUmPihzZWFyY2hSb290Tm9kZSkpKSB7CisgICAgZm9yIChhdXRvJiBlbGVt
ZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2Rl
Jj4oc2VhcmNoUm9vdE5vZGUpKSkgewogICAgICAgICBzZWxlY3RvckRhdGEuY29tcGlsZWRTZWxl
Y3Rvci53YXNVc2VkKCk7CiAKICAgICAgICAgaWYgKHNlbGVjdG9yQ2hlY2tlcigmZWxlbWVudCwg
JmNoZWNraW5nQ29udGV4dCkpIHsKQEAgLTQzNyw3ICs0MzQsNyBAQCBBTFdBWVNfSU5MSU5FIHZv
aWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZUNvbXBpbGVkU2luZ2xlTXVsdGlTZWxlY3RvckRh
dGEoY29ucwogewogICAgIFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0IGNoZWNraW5n
Q29udGV4dChTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OlF1ZXJ5aW5nUnVsZXMpOwogICAgIGNoZWNr
aW5nQ29udGV4dC5zY29wZSA9IHJvb3ROb2RlLmlzRG9jdW1lbnROb2RlKCkgPyBudWxscHRyIDog
JnJvb3ROb2RlOwotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhj
b25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihyb290Tm9kZSkpKSB7CisgICAgZm9yIChhdXRvJiBl
bGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJO
b2RlJj4ocm9vdE5vZGUpKSkgewogICAgICAgICBmb3IgKGF1dG8mIHNlbGVjdG9yIDogbV9zZWxl
Y3RvcnMpIHsKICAgICAgICAgICAgIHNlbGVjdG9yLmNvbXBpbGVkU2VsZWN0b3Iud2FzVXNlZCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAppbmRleCA0ZDNlNjE5NDdkM2Jm
OGE1YWFjNGJjZTY3N2ZjNzFhMzNiODVjNmI4Li5kMmQxM2NiMDkzNTBkMDdiYzYyMDU3ZWM5M2Nm
MzQ4NWE0NjBkZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKQEAgLTI2
LDEwICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2xvdEFzc2lnbm1l
bnQuaCIKIAotCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRNTFNs
b3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaApp
bmRleCA5ZjM1OTM1ZDk2Yzc5ZTc1YjY4ZDMwYzI4Y2JlM2M1YTA0M2YwMzMzLi45YTBiMWI1ZWEy
NzFhMGI1YzQ2MGMwMWU5NTA2NWNkMDc5MWE5MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMjk0ICsyOSwy
NDEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50
VHlwZT4gY2xhc3MgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOwordGVtcGxh
dGU8dHlwZW5hbWU+IGNsYXNzIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I7Cit0ZW1w
bGF0ZTx0eXBlbmFtZT4gY2xhc3MgRG91YmxlRWxlbWVudERlc2NlbmRhbnRSYW5nZTsKK3RlbXBs
YXRlPHR5cGVuYW1lPiBjbGFzcyBFbGVtZW50RGVzY2VuZGFudFJhbmdlOwordGVtcGxhdGU8dHlw
ZW5hbWUgRWxlbWVudFR5cGUsIGJvb2woY29uc3QgRWxlbWVudFR5cGUmKT4gY2xhc3MgRmlsdGVy
ZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlOwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+Ci1jbGFzcyBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiB7Ci1wdWJsaWM6Ci0gICAgVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpOwotICAgIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBFbGVtZW50VHlw
ZSogY3VycmVudCk7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRv
cisrKCk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBUeXBl
ZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50Q29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT4gIHsKLXB1YmxpYzoKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50
Q29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290KTsKLSAgICBUeXBlZEVsZW1l
bnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBjb25z
dCBFbGVtZW50VHlwZSogY3VycmVudCk7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0
SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKLX07CisvLyBSYW5nZSBmb3IgaXRlcmF0aW5nIHRocm91
Z2ggZGVzY2VuZGFudCBlbGVtZW50cy4KK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBF
bGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250
YWluZXJOb2RlJik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudERlc2Nl
bmRhbnRSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoY29uc3QgQ29u
dGFpbmVyTm9kZSYpOwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBU
eXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyIHsKLXB1YmxpYzoKLSAgICBUeXBl
ZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUmIHJvb3QpOwot
ICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKTsK
LSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpOwot
ICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW5BdChF
bGVtZW50VHlwZSYpOwotICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50
VHlwZT4gZnJvbShFbGVtZW50Jik7CisvLyBSYW5nZSB0aGF0IHNraXBzIGVsZW1lbnRzIHdoZXJl
IHRoZSBmaWx0ZXIgcmV0dXJucyBmYWxzZS4KK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBl
LCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBGaWx0ZXJlZEVsZW1lbnREZXNjZW5k
YW50UmFuZ2U8Y29uc3QgRWxlbWVudFR5cGUsIGZpbHRlcj4gZGVzY2VuZGFudHNPZlR5cGUoY29u
c3QgQ29udGFpbmVyTm9kZSYpOwogCi0gICAgRWxlbWVudFR5cGUqIGZpcnN0KCk7Ci0gICAgRWxl
bWVudFR5cGUqIGxhc3QoKTsKKy8vIFJhbmdlIGZvciB1c2Ugd2hlbiBib3RoIHNldHMgb2YgZGVz
Y2VuZGFudHMgYXJlIGtub3duIHRvIGJlIHRoZSBzYW1lIGxlbmd0aC4KKy8vIElmIHRoZXkgYXJl
IGRpZmZlcmVudCBsZW5ndGhzLCB0aGlzIHdpbGwgc3RvcCB3aGVuIHRoZSBzaG9ydGVyIG9uZSBy
ZWFjaGVzIHRoZSBlbmQsIGJ1dCBhbHNvIGFuIGFzc2VydGlvbiB3aWxsIGZhaWwuCit0ZW1wbGF0
ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRG91YmxlRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVt
ZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFpbmVyTm9kZSYgZmlyc3RSb290LCBDb250
YWluZXJOb2RlJiBzZWNvbmRSb290KTsKIAotcHJpdmF0ZToKLSAgICBDb250YWluZXJOb2RlJiBt
X3Jvb3Q7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gY2xhc3MgRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IHsKK3B1
YmxpYzoKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKCkgPSBkZWZhdWx0OworICAgIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgRWxlbWVu
dFR5cGUqIGN1cnJlbnQpOworICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9y
KysoKTsKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvci0tKCk7CiB9Owog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBUeXBlZEVsZW1lbnREZXNj
ZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIgewordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5
cGU+IGNsYXNzIEVsZW1lbnREZXNjZW5kYW50UmFuZ2UgewogcHVibGljOgotICAgIFR5cGVkRWxl
bWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcihjb25zdCBDb250YWluZXJOb2RlJiBy
b290KTsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT4gYmVnaW4oKSBjb25zdDsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT4gZW5kKCkgY29uc3Q7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoY29uc3QgRWxlbWVudFR5cGUmKSBjb25z
dDsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4g
ZnJvbShjb25zdCBFbGVtZW50JikgY29uc3Q7CisgICAgRWxlbWVudERlc2NlbmRhbnRSYW5nZShj
b25zdCBDb250YWluZXJOb2RlJiByb290KTsKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiBiZWdpbigpIGNvbnN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpu
dWxscHRyX3QgZW5kKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoRWxlbWVudFR5cGUmKSBjb25zdDsKKyAgICBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBmcm9tKEVsZW1lbnQmKSBjb25z
dDsKIAotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0OwotICAgIGNvbnN0IEVs
ZW1lbnRUeXBlKiBsYXN0KCkgY29uc3Q7CisgICAgRWxlbWVudFR5cGUqIGZpcnN0KCkgY29uc3Q7
CisgICAgRWxlbWVudFR5cGUqIGxhc3QoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBjb25zdCBD
b250YWluZXJOb2RlJiBtX3Jvb3Q7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4gY2xhc3MgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlciB7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gY2xhc3MgRG91YmxlRWxlbWVudERlc2NlbmRh
bnRSYW5nZSB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBTaW5nbGVBZGFwdGVyOwotICAgIHR5cGVkZWYgRG91
YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBJdGVyYXRvcjsK
KyAgICB0eXBlZGVmIEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+IFNpbmdsZUFk
YXB0ZXI7CisgICAgdHlwZWRlZiBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPiBJdGVyYXRvcjsKIAotICAgIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvckFkYXB0ZXIoU2luZ2xlQWRhcHRlciYmLCBTaW5nbGVBZGFwdGVyJiYpOwotICAgIEl0ZXJh
dG9yIGJlZ2luKCk7Ci0gICAgSXRlcmF0b3IgZW5kKCk7CisgICAgRG91YmxlRWxlbWVudERlc2Nl
bmRhbnRSYW5nZShTaW5nbGVBZGFwdGVyJiYsIFNpbmdsZUFkYXB0ZXImJik7CisgICAgSXRlcmF0
b3IgYmVnaW4oKSBjb25zdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6bnVsbHB0cl90IGVu
ZCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogcHJpdmF0ZToKICAgICBzdGQ6OnBhaXI8U2luZ2xl
QWRhcHRlciwgU2luZ2xlQWRhcHRlcj4gbV9wYWlyOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUg
RWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciB7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gY2xhc3MgRG91YmxlRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBUeXBlZEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IFNpbmdsZUl0ZXJhdG9yOworICAgIHR5cGVkZWYgRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gU2luZ2xlSXRlcmF0b3I7CiAgICAg
dHlwZWRlZiBzdGQ6OnBhaXI8RWxlbWVudFR5cGUmLCBFbGVtZW50VHlwZSY+IFJlZmVyZW5jZVBy
b3h5OwogCi0gICAgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKFNpbmdsZUl0
ZXJhdG9yJiYsIFNpbmdsZUl0ZXJhdG9yJiYpOworICAgIERvdWJsZUVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IoU2luZ2xlSXRlcmF0b3ImJiwgU2luZ2xlSXRlcmF0b3ImJik7CiAgICAgUmVmZXJl
bmNlUHJveHkgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERv
dWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYpIGNvbnN0OwotICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImKSBjb25z
dDsKLSAgICBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yKyso
KTsKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KHN0ZDo6bnVsbHB0cl90KSBjb25zdDsK
KyAgICBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CiAKIHBy
aXZhdGU6CiAgICAgc3RkOjpwYWlyPFNpbmdsZUl0ZXJhdG9yLCBTaW5nbGVJdGVyYXRvcj4gbV9w
YWlyOwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShD
b250YWluZXJOb2RlJik7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IFR5cGVkRWxl
bWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFu
dHNPZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYpOwotCi0vLyBUaGlzIG11c3Qgb25seSBiZSB1
c2VkIHdoZW4gYm90aCBzZXRzIG9mIGRlc2NlbmRhbnRzIGFyZSBrbm93biB0byBiZSB0aGUgc2Ft
ZSBsZW5ndGguCi0vLyBJZiB0aGV5IGFyZSBkaWZmZXJlbnQgbGVuZ3RocywgdGhpcyB3aWxsIHN0
b3Agd2hlbiB0aGUgc2hvcnRlciBvbmUgcmVhY2hlcyB0aGUgZW5kLCBidXQgYWxzbyBhbiBhc3Nl
cnRpb24gd2lsbCBmYWlsLgotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IERvdWJsZVR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRh
bnRzT2ZUeXBlKENvbnRhaW5lck5vZGUmIGZpcnN0Um9vdCwgQ29udGFpbmVyTm9kZSYgc2Vjb25k
Um9vdCk7Ci0KLS8vIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcgordGVtcGxhdGU8dHlw
ZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmlsdGVyKGNvbnN0IEVsZW1lbnRUeXBlJik+IGNsYXNz
IEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50SXRlcmF0
b3I8RWxlbWVudFR5cGU+IHsKK3B1YmxpYzoKKyAgICBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYsIEVsZW1lbnRUeXBlKiA9IG51bGxwdHIpOwor
ICAgIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOworfTsK
IAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290KQotICAgIDogRWxlbWVudEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPigmcm9vdCkKLXsKLX0KK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBi
b29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBjbGFzcyBGaWx0ZXJlZEVsZW1lbnREZXNj
ZW5kYW50UmFuZ2UgeworcHVibGljOgorICAgIHVzaW5nIEl0ZXJhdG9yID0gRmlsdGVyZWRFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlLCBmaWx0ZXI+OwogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENv
bnRhaW5lck5vZGUmIHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVudEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPigmcm9vdCwgY3VycmVudCkKLXsKLX0KKyAgICBGaWx0ZXJlZEVs
ZW1lbnREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYpOworICAgIEl0ZXJhdG9y
IGJlZ2luKCkgY29uc3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6Om51bGxwdHJfdCBlbmQo
KSB7IHJldHVybiBudWxscHRyOyB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBUeXBl
ZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKLXsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPiY+KEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dCgp
KTsKLX0KKyAgICBFbGVtZW50VHlwZSogZmlyc3QoKSBjb25zdDsKIAotLy8gVHlwZWRFbGVtZW50
RGVzY2VuZGFudENvbnN0SXRlcmF0b3IKK3ByaXZhdGU6CisgICAgY29uc3QgQ29udGFpbmVyTm9k
ZSYgbV9yb290OworfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5l
IFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6VHlwZWRF
bGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkK
LSAgICA6IEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPigmcm9vdCkKKy8vIEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3IKIAordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KQor
ICAgIDogRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPigmcm9vdCwgY3VycmVudCkKIHsKIH0K
IAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERl
c2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6VHlwZWRFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgY29uc3QgRWxlbWVudFR5
cGUqIGN1cnJlbnQpCi0gICAgOiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnJv
b3QsIGN1cnJlbnQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxl
bWVudFR5cGU+OjpvcGVyYXRvcisrKCkKIHsKKyAgICBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+Ojp0cmF2ZXJzZU5leHQoKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT4mIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvci0tKCkKIHsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+
Jj4oRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHQoKSk7Cisg
ICAgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91cygpOworICAg
IHJldHVybiAqdGhpczsKIH0KIAotLy8gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRh
cHRlcgorLy8gRWxlbWVudERlc2NlbmRhbnRSYW5nZQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxF
bGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoQ29udGFp
bmVyTm9kZSYgcm9vdCkKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50RGVz
Y2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPjo6RWxlbWVudERlc2NlbmRhbnRSYW5nZShjb25zdCBD
b250YWluZXJOb2RlJiByb290KQogICAgIDogbV9yb290KHJvb3QpCiB7CiB9CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8
RWxlbWVudFR5cGU+OjpiZWdpbigpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRSYW5n
ZTxFbGVtZW50VHlwZT46OmJlZ2luKCkgY29uc3QKIHsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIFRyYXZlcnNhbDxFbGVtZW50
VHlwZT46OmZpcnN0V2l0aGluKG1fcm9vdCkpOworICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZp
cnN0V2l0aGluKG1fcm9vdCkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBl
ZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkKLXsK
LSAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiht
X3Jvb3QpOwotfQotICAgIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5l
IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2luQXQoRWxlbWVudFR5
cGUmIGRlc2NlbmRhbnQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVt
ZW50VHlwZT46OmJlZ2luQXQoRWxlbWVudFR5cGUmIGRlc2NlbmRhbnQpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGRlc2NlbmRhbnQuaXNEZXNjZW5kYW50T2YobV9yb290KSk7Ci0gICAgcmV0dXJuIFR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCAmZGVzY2Vu
ZGFudCk7CisgICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+
KG1fcm9vdCwgJmRlc2NlbmRhbnQpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBU
eXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZnJvbShF
bGVtZW50JiBkZXNjZW5kYW50KQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8
RWxlbWVudFR5cGU+Ojpmcm9tKEVsZW1lbnQmIGRlc2NlbmRhbnQpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGRlc2NlbmRhbnQuaXNEZXNjZW5kYW50T2YobV9yb290KSk7CiAgICAgaWYgKGlzPEVsZW1l
bnRUeXBlPihkZXNjZW5kYW50KSkKLSAgICAgICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBkb3duY2FzdDxFbGVtZW50VHlwZT4oJmRl
c2NlbmRhbnQpKTsKKyAgICAgICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxl
bWVudFR5cGU+KG1fcm9vdCwgZG93bmNhc3Q8RWxlbWVudFR5cGU+KCZkZXNjZW5kYW50KSk7CiAg
ICAgRWxlbWVudFR5cGUqIG5leHQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0KGRlc2Nl
bmRhbnQsICZtX3Jvb3QpOwotICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgbmV4dCk7CisgICAgcmV0dXJuIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgbmV4dCk7CiB9CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50VHlwZSogVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZpcnN0KCkKK3RlbXBsYXRlPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50VHlwZSogRWxlbWVudERlc2NlbmRhbnRSYW5nZTxF
bGVtZW50VHlwZT46OmZpcnN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1l
bnRUeXBlPjo6Zmlyc3RXaXRoaW4obV9yb290KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRUeXBlKiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6bGFzdCgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4gRWxlbWVudFR5cGUqIEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+
OjpsYXN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bGFz
dFdpdGhpbihtX3Jvb3QpOwogfQogCi0vLyBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVy
YXRvckFkYXB0ZXIKKy8vIERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UKIAotdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yQWRhcHRlcihjb25zdCBDb250YWluZXJOb2RlJiByb290KQotICAgIDogbV9yb290
KHJvb3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRG91YmxlRWxlbWVudERlc2Nl
bmRhbnRSYW5nZTxFbGVtZW50VHlwZT46OkRvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UoU2lu
Z2xlQWRhcHRlciYmIGZpcnN0LCBTaW5nbGVBZGFwdGVyJiYgc2Vjb25kKQorICAgIDogbV9wYWly
KFdURk1vdmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29uZCkpCiB7CiB9CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFw
dGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4oKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+IGF1dG8gRG91YmxlRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZT46OmJl
Z2luKCkgY29uc3QgLT4gSXRlcmF0b3IKIHsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgVHJhdmVyc2FsPEVsZW1lbnRU
eXBlPjo6Zmlyc3RXaXRoaW4obV9yb290KSk7CisgICAgcmV0dXJuIEl0ZXJhdG9yKG1fcGFpci5m
aXJzdC5iZWdpbigpLCBtX3BhaXIuc2Vjb25kLmJlZ2luKCkpOwogfQogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRh
cHRlcjxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QpOwotfQorLy8gRG91
YmxlRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcgogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+IFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50
VHlwZT46OmJlZ2luQXQoY29uc3QgRWxlbWVudFR5cGUmIGRlc2NlbmRhbnQpIGNvbnN0Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRG91YmxlRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
cjxFbGVtZW50VHlwZT46OkRvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoU2luZ2xlSXRl
cmF0b3ImJiBmaXJzdCwgU2luZ2xlSXRlcmF0b3ImJiBzZWNvbmQpCisgICAgOiBtX3BhaXIoV1RG
TW92ZShmaXJzdCksIFdURk1vdmUoc2Vjb25kKSkKIHsKLSAgICBBU1NFUlQoZGVzY2VuZGFudC5p
c0Rlc2NlbmRhbnRPZihtX3Jvb3QpKTsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgJmRlc2NlbmRhbnQpOwogfQogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZyb20oY29uc3QgRWxlbWVudCYgZGVzY2Vu
ZGFudCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBhdXRvIERvdWJsZUVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvciooKSBjb25zdCAt
PiBSZWZlcmVuY2VQcm94eQogewotICAgIEFTU0VSVChkZXNjZW5kYW50LmlzRGVzY2VuZGFudE9m
KG1fcm9vdCkpOwotICAgIGlmIChpczxFbGVtZW50VHlwZT4oZGVzY2VuZGFudCkpCi0gICAgICAg
IHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4o
bV9yb290LCBkb3duY2FzdDxFbGVtZW50VHlwZT4oJmRlc2NlbmRhbnQpKTsKLSAgICBjb25zdCBF
bGVtZW50VHlwZSogbmV4dCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHQoZGVzY2VuZGFu
dCwgJm1fcm9vdCk7Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIG5leHQpOworICAgIHJldHVybiB7ICptX3BhaXIuZmly
c3QsICptX3BhaXIuc2Vjb25kIH07CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWlubGluZSBjb25zdCBFbGVtZW50VHlwZSogVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6Zmlyc3QoKSBjb25zdAordGVtcGxhdGU8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+IGNvbnN0ZXhwciBib29sIERvdWJsZUVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvciE9KHN0ZDo6bnVsbHB0cl90KSBjb25zdAog
ewotICAgIHJldHVybiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpbihtX3Jvb3Qp
OworICAgIEFTU0VSVCghbV9wYWlyLmZpcnN0ID09ICFtX3BhaXIuc2Vjb25kKTsKKyAgICByZXR1
cm4gbV9wYWlyLmZpcnN0OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgY29uc3QgRWxlbWVudFR5cGUqIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT46Omxhc3QoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUg
RWxlbWVudFR5cGU+IERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+
JiBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3Ir
KygpCiB7Ci0gICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RXaXRoaW4obV9y
b290KTsKKyAgICArK21fcGFpci5maXJzdDsKKyAgICArK21fcGFpci5zZWNvbmQ7CisgICAgcmV0
dXJuICp0aGlzOwogfQogCi0vLyBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JB
ZGFwdGVyCisvLyBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IKIAotdGVtcGxhdGU8
dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6RG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yQWRhcHRlcihTaW5nbGVBZGFwdGVyJiYgZmlyc3QsIFNpbmdsZUFkYXB0ZXImJiBz
ZWNvbmQpCi0gICAgOiBtX3BhaXIoV1RGTW92ZShmaXJzdCksIFdURk1vdmUoc2Vjb25kKSkKK3Rl
bXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlw
ZSYpPiBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGUsIGZpbHRl
cj46OkZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2Rl
JiByb290LCBFbGVtZW50VHlwZSogZWxlbWVudCkKKyAgICA6IEVsZW1lbnRJdGVyYXRvcjxjb25z
dCBFbGVtZW50VHlwZT4geyAmcm9vdCwgZWxlbWVudCB9CiB7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgYXV0byBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4oKSAtPiBJdGVyYXRvcgordGVtcGxh
dGU8dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmlsdGVyKGNvbnN0IEVsZW1lbnRUeXBlJik+
IEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZSwgZmlsdGVyPiYg
RmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlLCBmaWx0ZXI+Ojpv
cGVyYXRvcisrKCkKIHsKLSAgICByZXR1cm4gSXRlcmF0b3IobV9wYWlyLmZpcnN0LmJlZ2luKCks
IG1fcGFpci5zZWNvbmQuYmVnaW4oKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPiBpbmxpbmUgYXV0byBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFw
dGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkgLT4gSXRlcmF0b3IKLXsKLSAgICByZXR1cm4gSXRlcmF0
b3IobV9wYWlyLmZpcnN0LmVuZCgpLCBtX3BhaXIuc2Vjb25kLmVuZCgpKTsKKyAgICBkbyB7Cisg
ICAgICAgIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dCgpOworICAg
IH0gd2hpbGUgKCp0aGlzICYmICFmaWx0ZXIoKip0aGlzKSk7CisgICAgcmV0dXJuICp0aGlzOwog
fQogCi0vLyBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IKKy8vIEZpbHRlcmVk
RWxlbWVudERlc2NlbmRhbnRSYW5nZQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4g
aW5saW5lIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46
OkRvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihTaW5nbGVJdGVyYXRvciYmIGZp
cnN0LCBTaW5nbGVJdGVyYXRvciYmIHNlY29uZCkKLSAgICA6IG1fcGFpcihXVEZNb3ZlKGZpcnN0
KSwgV1RGTW92ZShzZWNvbmQpKQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wg
ZmlsdGVyKGNvbnN0IEVsZW1lbnRUeXBlJik+IEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5n
ZTxFbGVtZW50VHlwZSwgZmlsdGVyPjo6RmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlKGNv
bnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCisgICAgOiBtX3Jvb3QgeyByb290IH0KIHsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBhdXRvIERvdWJsZVR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKigpIGNvbnN0IC0+
IFJlZmVyZW5jZVByb3h5Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZSwgYm9vbCBmaWx0
ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gYXV0byBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFu
Z2U8RWxlbWVudFR5cGUsIGZpbHRlcj46OmJlZ2luKCkgY29uc3QgLT4gSXRlcmF0b3IKIHsKLSAg
ICByZXR1cm4geyAqbV9wYWlyLmZpcnN0LCAqbV9wYWlyLnNlY29uZCB9OworICAgIHJldHVybiB7
IG1fcm9vdCwgZmlyc3QoKSB9OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4g
aW5saW5lIGJvb2wgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6b3BlcmF0b3I9PShjb25zdCBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3ImIG90aGVyKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmls
dGVyKGNvbnN0IEVsZW1lbnRUeXBlJik+IEVsZW1lbnRUeXBlKiBGaWx0ZXJlZEVsZW1lbnREZXNj
ZW5kYW50UmFuZ2U8RWxlbWVudFR5cGUsIGZpbHRlcj46OmZpcnN0KCkgY29uc3QKIHsKLSAgICBB
U1NFUlQoKG1fcGFpci5maXJzdCA9PSBvdGhlci5tX3BhaXIuZmlyc3QpID09IChtX3BhaXIuc2Vj
b25kID09IG90aGVyLm1fcGFpci5zZWNvbmQpKTsKLSAgICByZXR1cm4gbV9wYWlyLmZpcnN0ID09
IG90aGVyLm1fcGFpci5maXJzdCB8fCBtX3BhaXIuc2Vjb25kID09IG90aGVyLm1fcGFpci5zZWNv
bmQ7CisgICAgZm9yIChhdXRvKiBlbGVtZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmly
c3RXaXRoaW4obV9yb290KTsgZWxlbWVudDsgZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlw
ZT46Om5leHQoKmVsZW1lbnQsICZtX3Jvb3QpKSB7CisgICAgICAgIGlmIChmaWx0ZXIoKmVsZW1l
bnQpKQorICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgfQorICAgIHJldHVybiBudWxs
cHRyOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGJvb2wgRG91
YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3Ih
PShjb25zdCBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG90aGVyKSBjb25z
dAotewotICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLX0KKy8vIFN0YW5kYWxvbmUgZnVu
Y3Rpb25zCiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgRG91YmxlVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRG91YmxlVHlwZWRFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlw
ZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFpbmVyTm9kZSYgcm9vdCkKIHsKLSAgICArK21fcGFp
ci5maXJzdDsKLSAgICArK21fcGFpci5zZWNvbmQ7Ci0gICAgcmV0dXJuICp0aGlzOworICAgIHJl
dHVybiBFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPihyb290KTsKIH0KIAotLy8g
U3RhbmRhbG9uZSBmdW5jdGlvbnMKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+
IGRlc2NlbmRhbnRzT2ZUeXBlKENvbnRhaW5lck5vZGUmIHJvb3QpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4g
ZGVzY2VuZGFudHNPZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKIHsKLSAgICByZXR1
cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4ocm9v
dCk7CisgICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+
KHJvb3QpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlw
ZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBkZXNj
ZW5kYW50c09mVHlwZShjb25zdCBDb250YWluZXJOb2RlJiByb290KQordGVtcGxhdGU8dHlwZW5h
bWUgRWxlbWVudFR5cGU+IERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+
IGRlc2NlbmRhbnRzT2ZUeXBlKENvbnRhaW5lck5vZGUmIGZpcnN0Um9vdCwgQ29udGFpbmVyTm9k
ZSYgc2Vjb25kUm9vdCkKIHsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihyb290KTsKKyAgICByZXR1cm4geyBkZXNjZW5k
YW50c09mVHlwZTxFbGVtZW50VHlwZT4oZmlyc3RSb290KSwgZGVzY2VuZGFudHNPZlR5cGU8RWxl
bWVudFR5cGU+KHNlY29uZFJvb3QpIH07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPiBpbmxpbmUgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxF
bGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFpbmVyTm9kZSYgZmlyc3RSb290LCBD
b250YWluZXJOb2RlJiBzZWNvbmRSb290KQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGUs
IGJvb2wgZmlsdGVyKGNvbnN0IEVsZW1lbnRUeXBlJik+IEZpbHRlcmVkRWxlbWVudERlc2NlbmRh
bnRSYW5nZTxjb25zdCBFbGVtZW50VHlwZSwgZmlsdGVyPiBkZXNjZW5kYW50c09mVHlwZShjb25z
dCBDb250YWluZXJOb2RlJiByb290KQogewotICAgIHJldHVybiB7IGRlc2NlbmRhbnRzT2ZUeXBl
PEVsZW1lbnRUeXBlPihmaXJzdFJvb3QpLCBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50VHlwZT4o
c2Vjb25kUm9vdCkgfTsKKyAgICByZXR1cm4geyByb290IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAzOTIwYTBiNzA4MzNiZjli
NmY0M2ZjNzU4YzRiZDEzYzZiZGUxY2Y0Li42YzZkODNhNzI4ZjMwMjAzYjhlZmZjZTBmMDhiYWE0
NTVjMzI2YTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00OSw2ICs0OSw3IEBA
CiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRWRpdGlu
Zy5oIgogI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
ICNpbmNsdWRlICJGaWxlLmgiCkBAIC02MSw3ICs2Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTEJSRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAi
SFRNTEJvZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVs
ZW1lbnQuaCIKQEAgLTM0MzEsMjMgKzM0MzIsMTggQEAgdm9pZCBFZGl0b3I6OnRleHREaWRDaGFu
Z2VJblRleHRBcmVhKEVsZW1lbnQqIGUpCiAKIHZvaWQgRWRpdG9yOjphcHBseUVkaXRpbmdTdHls
ZVRvQm9keUVsZW1lbnQoKSBjb25zdAogewotICAgIGF1dG8gY29sbGVjdGlvbiA9IGRvY3VtZW50
KCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoSFRNTE5hbWVzOjpib2R5VGFnLT5sb2NhbE5hbWUoKSk7
Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gY29sbGVjdGlvbi0+bGVuZ3RoKCk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICBhcHBseUVkaXRpbmdTdHls
ZVRvRWxlbWVudChjb2xsZWN0aW9uLT5pdGVtKGkpKTsKLX0KLQotdm9pZCBFZGl0b3I6OmFwcGx5
RWRpdGluZ1N0eWxlVG9FbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUKCFlbGVtZW50IHx8IGlzPFN0eWxlZEVsZW1lbnQ+KCplbGVtZW50KSk7Ci0gICAgaWYgKCFp
czxTdHlsZWRFbGVtZW50PihlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gTXV0
YXRlIHVzaW5nIHRoZSBDU1NPTSB3cmFwcGVyIHNvIHdlIGdldCB0aGUgc2FtZSBldmVudCBiZWhh
dmlvciBhcyBhIHNjcmlwdC4KLSAgICBhdXRvJiBzdHlsZSA9IGRvd25jYXN0PFN0eWxlZEVsZW1l
bnQ+KCplbGVtZW50KS5jc3NvbVN0eWxlKCk7Ci0gICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5h
bChDU1NQcm9wZXJ0eVdvcmRXcmFwLCAiYnJlYWstd29yZCIsIGZhbHNlKTsKLSAgICBzdHlsZS5z
ZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsICJzcGFjZSIsIGZh
bHNlKTsKLSAgICBzdHlsZS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5TGluZUJyZWFr
LCAiYWZ0ZXItd2hpdGUtc3BhY2UiLCBmYWxzZSk7CisgICAgLy8gRklYTUU6IE5vdCBjbGVhciBp
dCdzIHZhbHVhYmxlIHRvIGRvIHRoaXMgdG8gYWxsIGJvZHkgZWxlbWVudHMgcmF0aGVyIHRoYW4g
anVzdCBkb2luZyBpdCBvbiB0aGUgc2luZ2xlIG9uZSByZXR1cm5lZCBieSBEb2N1bWVudDo6Ym9k
eS4KKyAgICBWZWN0b3I8UmVmPEhUTUxCb2R5RWxlbWVudD4+IGJvZGllczsKKyAgICBmb3IgKGF1
dG8mIGJvZHkgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MQm9keUVsZW1lbnQ+KGRvY3VtZW50KCkp
KQorICAgICAgICBib2RpZXMuYXBwZW5kKGJvZHkpOworCisgICAgZm9yIChhdXRvJiBib2R5IDog
Ym9kaWVzKSB7CisgICAgICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00gd3JhcHBlciBzbyB3
ZSBnZXQgdGhlIHNhbWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCisgICAgICAgIGF1dG8m
IHN0eWxlID0gYm9keS0+Y3Nzb21TdHlsZSgpOworICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eUlu
dGVybmFsKENTU1Byb3BlcnR5V29yZFdyYXAsICJicmVhay13b3JkIiwgZmFsc2UpOworICAgICAg
ICBzdHlsZS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsICJz
cGFjZSIsIGZhbHNlKTsKKyAgICAgICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9w
ZXJ0eUxpbmVCcmVhaywgImFmdGVyLXdoaXRlLXNwYWNlIiwgZmFsc2UpOworICAgIH0KIH0KIAog
Ym9vbCBFZGl0b3I6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25z
IG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAxOWM0MjA4ZDQ1ZDllYzlmNWMy
OWM5MjgxNzQ4ODBlNGYxYjk4NDEwLi5mODY3N2IzMThlOGU4MDZjMDIyYTNlNzM4NmVlZjI2MDgw
NWI0NTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTQzNSw3ICs0MzUsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUoRWRpdGluZ1N0eWxlJiAsIEVk
aXRBY3Rpb24gPSBFZGl0QWN0aW9uOjpVbnNwZWNpZmllZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUoU3R5bGVQcm9wZXJ0aWVzJiAsIEVkaXRBY3Rp
b24gPSBFZGl0QWN0aW9uOjpVbnNwZWNpZmllZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKSBjb25zdDsKLSAgICB2b2lkIGFwcGx5RWRp
dGluZ1N0eWxlVG9FbGVtZW50KEVsZW1lbnQqKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IEludFJlY3QgZmlyc3RSZWN0Rm9yUmFuZ2UoUmFuZ2UqKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCAyZDQxYjczMmYwZGZhOTc2NjAyOTRl
YTBlZGViYjE1Yzk4YzY2ZTA2Li41ZmM2MmE3NTk3Nzc3YWRmMjk3MzYxY2NjNTVmMzMzYTQwZjRj
N2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMjM0
NiwyMCArMjM0NiwxNiBAQCBzdGF0aWMgSFRNTEZvcm1FbGVtZW50KiBzY2FuRm9yRm9ybShFbGVt
ZW50KiBzdGFydCkKIHsKICAgICBpZiAoIXN0YXJ0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBkZXNjZW5kYW50c09mVHlwZTxIVE1MRWxlbWVudD4o
c3RhcnQtPmRvY3VtZW50KCkpOwotICAgIGZvciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmZyb20o
KnN0YXJ0KSwgZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9ICppdDsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQg
OiBkZXNjZW5kYW50c09mVHlwZTxIVE1MRWxlbWVudD4oc3RhcnQtPmRvY3VtZW50KCkpKSB7CiAg
ICAgICAgIGlmIChpczxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICAgICAgcmV0
dXJuICZkb3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQpOwogICAgICAgICBpZiAoaXM8
SFRNTEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgICAgICByZXR1cm4gZG93
bmNhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkuZm9ybSgpOwogICAgICAgICBp
ZiAoaXM8SFRNTEZyYW1lRWxlbWVudEJhc2U+KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBEb2N1
bWVudCogY29udGVudERvY3VtZW50ID0gZG93bmNhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2U+KGVs
ZW1lbnQpLmNvbnRlbnREb2N1bWVudCgpOwotICAgICAgICAgICAgaWYgKCFjb250ZW50RG9jdW1l
bnQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoSFRNTEZvcm1F
bGVtZW50KiBmcmFtZVJlc3VsdCA9IHNjYW5Gb3JGb3JtKGNvbnRlbnREb2N1bWVudC0+ZG9jdW1l
bnRFbGVtZW50KCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZVJlc3VsdDsKKyAgICAg
ICAgICAgIGlmIChhdXRvKiBjb250ZW50RG9jdW1lbnQgPSBkb3duY2FzdDxIVE1MRnJhbWVFbGVt
ZW50QmFzZT4oZWxlbWVudCkuY29udGVudERvY3VtZW50KCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoYXV0byogZnJhbWVSZXN1bHQgPSBzY2FuRm9yRm9ybShjb250ZW50RG9jdW1lbnQtPmRvY3Vt
ZW50RWxlbWVudCgpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lUmVzdWx0Owor
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
LmNwcAppbmRleCBjZGU5YTc4YzhmZTdkYTEzMWUxMWY0NGY0YmIwOTFjNWZlNmYwMmYzLi4xZTc2
MGRlNzIzMTYwOWQwNTkyOTgyOGY3ZTEzZjNkMjJiYTI1MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcApAQCAtNzEs
NyArNzEsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgVHlwZSB0eXBlID0gVHlwZTo6SW5jbHVkZTsK
ICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG1hdGNoaW5nRWxlbWVudDsKLSAgICAgICAgZm9yIChh
dXRvJiBlbGVtZW50IDogZWxlbWVudExpbmVhZ2Uoc3RhcnRpbmdFbGVtZW50LmdldCgpKSkgewor
ICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEVsZW1lbnQ+KCpzdGFy
dGluZ0VsZW1lbnQpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byB0eXBlT3JOdWxsb3B0ID0gdHlw
ZUZvckVsZW1lbnQoZWxlbWVudCkpIHsKICAgICAgICAgICAgICAgICB0eXBlID0gKnR5cGVPck51
bGxvcHQ7CiAgICAgICAgICAgICAgICAgbWF0Y2hpbmdFbGVtZW50ID0gJmVsZW1lbnQ7CkBAIC03
OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAg
IGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnRMaW5lYWdlKHN0YXJ0aW5nRWxlbWVudC5nZXQo
KSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbGluZWFnZU9mVHlwZTxFbGVtZW50
Pigqc3RhcnRpbmdFbGVtZW50KSkgewogICAgICAgICAgICAgbV9jYWNoZS5zZXQoZWxlbWVudCwg
dHlwZSk7CiAgICAgICAgICAgICBpZiAoJmVsZW1lbnQgPT0gbWF0Y2hpbmdFbGVtZW50KQogICAg
ICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCAzOTQ5NmI2OTg4NjZjNGFlYzNmNzdk
NGU2NjBiZTZkNTA3OTlkOWRlLi5mN2RhMGJkYjU4YThkZTBiZjM2NGViZjM0OTQ0M2IyZGVjODI0
OGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRS
ZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiRG9jdW1lbnRMb2Fk
ZXIuaCIKICNpbXBvcnQgIkVkaXRvci5oIgogI2ltcG9ydCAiRWRpdG9yQ2xpZW50LmgiCisjaW1w
b3J0ICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbXBvcnQgIkZpbGUuaCIKICNpbXBvcnQgIkZyYW1l
LmgiCiAjaW1wb3J0ICJGcmFtZUxvYWRlci5oIgpAQCAtNTgsNyArNTksNiBAQAogI2ltcG9ydCAi
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgiCiAjaW1wb3J0ICJTZXR0aW5ncy5oIgogI2ltcG9y
dCAiU29ja2V0UHJvdmlkZXIuaCIKLSNpbXBvcnQgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvci5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJBcmNoaXZlUmVz
b3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5nLmgiCiAjaW1wb3J0ICJXZWJBcmNoaXZlUmVzb3Vy
Y2VXZWJSZXNvdXJjZUhhbmRsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAx
NTk1MDM1MWQ5MDQ3NGM3Yzc4OGMzM2U2N2U3ZGE4NTg4N2Y2ZDRjLi43ZTIyYzUyMmFkYzhlMjI3
YjYzOWJjZWU2ZGI0NmQwYTM5MjkzZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBA
IC03NSw3ICs3NSw2IEBACiAjaW5jbHVkZSAiU29ja2V0UHJvdmlkZXIuaCIKICNpbmNsdWRlICJT
dHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJU
eXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oCmluZGV4
IDc5ZjQ3N2Q3NGYyMjRlNzFiNDZhYmE0NzdmNmNkYjBkYTg5ZGY0ODUuLmRhYTQwZWMxMTAyZGVh
YmQ0YmM4MDExNGE0Yzg4YmJjNDZjODBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhY2hl
ZEhUTUxDb2xsZWN0aW9uLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJDb2xsZWN0aW9uVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24u
aCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4K
QEAgLTUyLDEyICs1MSwxMiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gRm9yIENvbGxlY3Rp
b25JbmRleENhY2hlOyBkbyBub3QgdXNlIGVsc2V3aGVyZS4KLSAgICB1c2luZyBDb2xsZWN0aW9u
VHJhdmVyc2FsSXRlcmF0b3IgPSB0eXBlbmFtZSBDb2xsZWN0aW9uVHJhdmVyc2FsPHRyYXZlcnNh
bFR5cGU+OjpJdGVyYXRvcjsKLSAgICBDb2xsZWN0aW9uVHJhdmVyc2FsSXRlcmF0b3IgY29sbGVj
dGlvbkJlZ2luKCkgY29uc3QgeyByZXR1cm4gQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxU
eXBlPjo6YmVnaW4oY29sbGVjdGlvbigpLCByb290Tm9kZSgpKTsgfQotICAgIENvbGxlY3Rpb25U
cmF2ZXJzYWxJdGVyYXRvciBjb2xsZWN0aW9uTGFzdCgpIGNvbnN0IHsgcmV0dXJuIENvbGxlY3Rp
b25UcmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT46Omxhc3QoY29sbGVjdGlvbigpLCByb290Tm9kZSgp
KTsgfQotICAgIENvbGxlY3Rpb25UcmF2ZXJzYWxJdGVyYXRvciBjb2xsZWN0aW9uRW5kKCkgY29u
c3QgeyByZXR1cm4gQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6ZW5kKHJvb3RO
b2RlKCkpOyB9Ci0gICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKENvbGxlY3Rpb25U
cmF2ZXJzYWxJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2
ZXJzZWRDb3VudCkgY29uc3QgeyBDb2xsZWN0aW9uVHJhdmVyc2FsPHRyYXZlcnNhbFR5cGU+Ojp0
cmF2ZXJzZUZvcndhcmQoY29sbGVjdGlvbigpLCBjdXJyZW50LCBjb3VudCwgdHJhdmVyc2VkQ291
bnQpOyB9Ci0gICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChDb2xsZWN0aW9uVHJh
dmVyc2FsSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KSBjb25zdCB7IENvbGxlY3Rp
b25UcmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT46OnRyYXZlcnNlQmFja3dhcmQoY29sbGVjdGlvbigp
LCBjdXJyZW50LCBjb3VudCk7IH0KKyAgICB1c2luZyBUcmF2ZXJzYWwgPSBDb2xsZWN0aW9uVHJh
dmVyc2FsPHRyYXZlcnNhbFR5cGU+OworICAgIHVzaW5nIEl0ZXJhdG9yID0gdHlwZW5hbWUgVHJh
dmVyc2FsOjpJdGVyYXRvcjsKKyAgICBhdXRvIGNvbGxlY3Rpb25CZWdpbigpIGNvbnN0IHsgcmV0
dXJuIFRyYXZlcnNhbDo6YmVnaW4oY29sbGVjdGlvbigpLCByb290Tm9kZSgpKTsgfQorICAgIGF1
dG8gY29sbGVjdGlvbkxhc3QoKSBjb25zdCB7IHJldHVybiBUcmF2ZXJzYWw6Omxhc3QoY29sbGVj
dGlvbigpLCByb290Tm9kZSgpKTsgfQorICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2Fy
ZChJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRD
b3VudCkgY29uc3QgeyBUcmF2ZXJzYWw6OnRyYXZlcnNlRm9yd2FyZChjb2xsZWN0aW9uKCksIGN1
cnJlbnQsIGNvdW50LCB0cmF2ZXJzZWRDb3VudCk7IH0KKyAgICB2b2lkIGNvbGxlY3Rpb25UcmF2
ZXJzZUJhY2t3YXJkKEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkgY29uc3QgeyBU
cmF2ZXJzYWw6OnRyYXZlcnNlQmFja3dhcmQoY29sbGVjdGlvbigpLCBjdXJyZW50LCBjb3VudCk7
IH0KICAgICBib29sIGNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJhY2t3YXJkKCkgY29uc3QgeyByZXR1
cm4gdHJhdmVyc2FsVHlwZSAhPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2Fy
ZE9ubHk7IH0KICAgICB2b2lkIHdpbGxWYWxpZGF0ZUluZGV4Q2FjaGUoKSBjb25zdCB7IGRvY3Vt
ZW50KCkucmVnaXN0ZXJDb2xsZWN0aW9uKGNvbnN0X2Nhc3Q8Q2FjaGVkSFRNTENvbGxlY3Rpb248
SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT4mPigqdGhpcykpOyB9CiAKQEAgLTY5
LDE5ICs2OCwxOSBAQCBwcml2YXRlOgogICAgIEhUTUxDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rp
b24oKSB7IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MQ29sbGVjdGlvbkNsYXNzJj4oKnRoaXMpOyB9
CiAgICAgY29uc3QgSFRNTENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbigpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxDb2xsZWN0aW9uQ2xhc3MmPigqdGhpcyk7IH0KIAot
ICAgIG11dGFibGUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8SFRNTENvbGxlY3Rpb25DbGFzcywgQ29s
bGVjdGlvblRyYXZlcnNhbEl0ZXJhdG9yPiBtX2luZGV4Q2FjaGU7CisgICAgbXV0YWJsZSBDb2xs
ZWN0aW9uSW5kZXhDYWNoZTxIVE1MQ29sbGVjdGlvbkNsYXNzLCBJdGVyYXRvcj4gbV9pbmRleENh
Y2hlOwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxl
Y3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+CiBDYWNoZWRIVE1MQ29sbGVjdGlvbjxI
VE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPjo6Q2FjaGVkSFRNTENvbGxlY3Rpb24o
Q29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUpCiAgICAg
OiBIVE1MQ29sbGVjdGlvbihiYXNlLCBjb2xsZWN0aW9uVHlwZSkKLSAgICAsIG1faW5kZXhDYWNo
ZShjb2xsZWN0aW9uKCkpCi17IH0KK3sKK30KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xs
ZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+CiBDYWNo
ZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPjo6fkNh
Y2hlZEhUTUxDb2xsZWN0aW9uKCkKIHsKLSAgICBpZiAobV9pbmRleENhY2hlLmhhc1ZhbGlkQ2Fj
aGUoY29sbGVjdGlvbigpKSkKKyAgICBpZiAobV9pbmRleENhY2hlLmhhc1ZhbGlkQ2FjaGUoKSkK
ICAgICAgICAgZG9jdW1lbnQoKS51bnJlZ2lzdGVyQ29sbGVjdGlvbigqdGhpcyk7CiB9CiAKQEAg
LTg5LDkgKzg4LDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+CiB2b2lkIENhY2hlZEhUTUxDb2xs
ZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+OjppbnZhbGlkYXRlQ2Fj
aGVGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgSFRNTENvbGxlY3Rpb246
OmludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50KGRvY3VtZW50KTsKLSAgICBpZiAobV9pbmRleENh
Y2hlLmhhc1ZhbGlkQ2FjaGUoY29sbGVjdGlvbigpKSkgeworICAgIGlmIChtX2luZGV4Q2FjaGUu
aGFzVmFsaWRDYWNoZSgpKSB7CiAgICAgICAgIGRvY3VtZW50LnVucmVnaXN0ZXJDb2xsZWN0aW9u
KCp0aGlzKTsKLSAgICAgICAgbV9pbmRleENhY2hlLmludmFsaWRhdGUoY29sbGVjdGlvbigpKTsK
KyAgICAgICAgbV9pbmRleENhY2hlLmludmFsaWRhdGUoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Db2xsZWN0aW9uVHJhdmVyc2FsLmgKaW5kZXggNjY4MjkzMzhkMGIxZDFiMGNh
YjUxMTc3ZjAzODcyMGMxOTJmNzE5Ni4uMmE4OGY1N2UxYmQ2NGIxNjgxNTgzMmJmMGIwNmU4YzRj
YWQwNmFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHJhdmVy
c2FsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHJhdmVyc2FsLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYs
OCArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2xsZWN0aW9uVHlwZS5oIgot
I2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTM2LDc2ICszNSw2NCBAQCBzdHJ1Y3QgQ29sbGVjdGlvblRyYXZl
cnNhbCB7IH07CiAKIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xs
ZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+IHsKLSAgICB1c2luZyBJdGVyYXRvciA9
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I7Ci0KLSAgICBzdGF0aWMgRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvciBlbmQoQ29udGFpbmVyTm9kZSYpIHsgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IoKTsgfQorICAgIHVzaW5nIEl0ZXJhdG9yID0gRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjxFbGVtZW50PjsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+
Ci0gICAgc3RhdGljIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgYmVnaW4oY29uc3QgQ29sbGVj
dGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOworICAgIHN0YXRpYyBJdGVyYXRv
ciBiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7
CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotICAgIHN0YXRpYyBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29u
dGFpbmVyTm9kZSYgcm9vdE5vZGUpOworICAgIHN0YXRpYyBJdGVyYXRvciBsYXN0KGNvbnN0IENv
bGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKIAogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIHZvaWQgdHJhdmVyc2VGb3J3
YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1
cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpOworICAgIHN0
YXRpYyB2b2lkIHRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBJdGVyYXRv
ciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCk7CiAK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotICAgIHN0YXRpYyB2b2lk
IHRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpOworICAgIHN0YXRpYyB2b2lkIHRy
YXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgSXRlcmF0b3ImIGN1cnJlbnQs
IHVuc2lnbmVkIGNvdW50KTsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xh
c3M+Ci1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDb2xsZWN0aW9uVHJhdmVyc2Fs
PENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OmJlZ2luKGNvbnN0IENvbGxl
Y3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpCitpbmxpbmUg
YXV0byBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5k
YW50cz46OmJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgQ29udGFpbmVy
Tm9kZSYgcm9vdE5vZGUpIC0+IEl0ZXJhdG9yCiB7Ci0gICAgYXV0byBkZXNjZW5kYW50cyA9IGVs
ZW1lbnREZXNjZW5kYW50cyhyb290Tm9kZSk7Ci0gICAgYXV0byBlbmQgPSBkZXNjZW5kYW50cy5l
bmQoKTsKLSAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkgewot
ICAgICAgICAgICAgLy8gRHJvcCBpdGVyYXRvciBhc3NlcnRpb25zIGJlY2F1c2UgSFRNTENvbGxl
Y3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1ncmFpbmVkIGludmFsaWRhdGlvbiBzY2hlbWUu
Ci0gICAgICAgICAgICBpdC5kcm9wQXNzZXJ0aW9ucygpOwotICAgICAgICAgICAgcmV0dXJuIGl0
OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBlbmQ7CisgICAgYXV0byBpdCA9IGRlc2Nl
bmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KHJvb3ROb2RlKS5iZWdpbigpOworICAgIHdoaWxlIChpdCAm
JiAhY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqaXQpKQorICAgICAgICArK2l0OworICAgIC8v
IERyb3AgaXRlcmF0b3IgYXNzZXJ0aW9ucyBiZWNhdXNlIEhUTUxDb2xsZWN0aW9ucyAvIE5vZGVM
aXN0IHVzZSBhIGZpbmUtZ3JhaW5lZCBpbnZhbGlkYXRpb24gc2NoZW1lLgorICAgIGl0LmRyb3BB
c3NlcnRpb25zKCk7CisgICAgcmV0dXJuIGl0OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29s
bGVjdGlvbkNsYXNzPgotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgQ29sbGVjdGlv
blRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+OjpsYXN0KGNv
bnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUp
CitpbmxpbmUgYXV0byBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBl
OjpEZXNjZW5kYW50cz46Omxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBD
b250YWluZXJOb2RlJiByb290Tm9kZSkgLT4gSXRlcmF0b3IKIHsKLSAgICBhdXRvIGRlc2NlbmRh
bnRzID0gZWxlbWVudERlc2NlbmRhbnRzKHJvb3ROb2RlKTsKLSAgICBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yIGludmFsaWQ7Ci0gICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMubGFzdCgp
OyBpdCAhPSBpbnZhbGlkOyAtLWl0KSB7Ci0gICAgICAgIGlmIChjb2xsZWN0aW9uLmVsZW1lbnRN
YXRjaGVzKCppdCkpIHsKLSAgICAgICAgICAgIC8vIERyb3AgaXRlcmF0b3IgYXNzZXJ0aW9ucyBi
ZWNhdXNlIEhUTUxDb2xsZWN0aW9ucyAvIE5vZGVMaXN0IHVzZSBhIGZpbmUtZ3JhaW5lZCBpbnZh
bGlkYXRpb24gc2NoZW1lLgotICAgICAgICAgICAgaXQuZHJvcEFzc2VydGlvbnMoKTsKLSAgICAg
ICAgICAgIHJldHVybiBpdDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gaW52YWxpZDsK
KyAgICBJdGVyYXRvciBpdCB7IHJvb3ROb2RlLCBFbGVtZW50VHJhdmVyc2FsOjpsYXN0V2l0aGlu
KHJvb3ROb2RlKSB9OworICAgIHdoaWxlIChpdCAmJiAhY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hl
cygqaXQpKQorICAgICAgICAtLWl0OworICAgIC8vIERyb3AgaXRlcmF0b3IgYXNzZXJ0aW9ucyBi
ZWNhdXNlIEhUTUxDb2xsZWN0aW9ucyAvIE5vZGVMaXN0IHVzZSBhIGZpbmUtZ3JhaW5lZCBpbnZh
bGlkYXRpb24gc2NoZW1lLgorICAgIGl0LmRyb3BBc3NlcnRpb25zKCk7CisgICAgcmV0dXJuIGl0
OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5lIHZvaWQg
Q29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+
Ojp0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQm
IHRyYXZlcnNlZENvdW50KQoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0
aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29s
bGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291
bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkKIHsKICAgICBBU1NFUlQoY29sbGVjdGlvbi5l
bGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Ig
aW52YWxpZDsKICAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBj
b3VudDsgKyt0cmF2ZXJzZWRDb3VudCkgewogICAgICAgICBkbyB7CiAgICAgICAgICAgICArK2N1
cnJlbnQ7Ci0gICAgICAgICAgICBpZiAoY3VycmVudCA9PSBpbnZhbGlkKQorICAgICAgICAgICAg
aWYgKCFjdXJyZW50KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSB3aGlsZSAo
IWNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKICAgICB9CiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci1pbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJh
dmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNlQmFj
a3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkKK2lubGluZSB2b2lkIENvbGxlY3Rp
b25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVy
c2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEl0ZXJhdG9yJiBj
dXJyZW50LCB1bnNpZ25lZCBjb3VudCkKIHsKICAgICBBU1NFUlQoY29sbGVjdGlvbi5lbGVtZW50
TWF0Y2hlcygqY3VycmVudCkpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgaW52YWxp
ZDsKICAgICBmb3IgKDsgY291bnQ7IC0tY291bnQpIHsKICAgICAgICAgZG8gewogICAgICAgICAg
ICAgLS1jdXJyZW50OwotICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gaW52YWxpZCkKKyAgICAg
ICAgICAgIGlmICghY3VycmVudCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0g
d2hpbGUgKCFjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CiAgICAgfQpAQCAt
MTE1LDc1ICsxMDIsNjIgQEAgdGVtcGxhdGUgPD4KIHN0cnVjdCBDb2xsZWN0aW9uVHJhdmVyc2Fs
PENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+IHsKICAgICB1c2luZyBJdGVy
YXRvciA9IEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+OwogCi0gICAgc3RhdGljIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGVuZChDb250YWluZXJOb2RlJiByb290Tm9kZSkgeyBy
ZXR1cm4gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4ocm9vdE5vZGUpOyB9Ci0KICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotICAgIHN0YXRpYyBFbGVtZW50Q2hp
bGRJdGVyYXRvcjxFbGVtZW50PiBiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWlu
ZXJOb2RlJiByb290Tm9kZSk7CisgICAgc3RhdGljIEl0ZXJhdG9yIGJlZ2luKGNvbnN0IENvbGxl
Y3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKIAogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIEVsZW1lbnRDaGlsZEl0ZXJhdG9y
PEVsZW1lbnQ+IGxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYgcm9v
dE5vZGUpOworICAgIHN0YXRpYyBJdGVyYXRvciBsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYs
IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xs
ZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIHZvaWQgdHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxl
Y3Rpb25DbGFzcyYsIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNp
Z25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KTsKKyAgICBzdGF0aWMgdm9pZCB0
cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgSXRlcmF0b3ImIGN1cnJlbnQs
IHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpOwogCiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJh
Y2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1l
bnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCk7CisgICAgc3RhdGljIHZvaWQgdHJhdmVyc2VC
YWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBJdGVyYXRvciYgY3VycmVudCwgdW5zaWdu
ZWQgY291bnQpOwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLWlu
bGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBDb2xsZWN0aW9uVHJhdmVyc2FsPENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+OjpiZWdpbihjb25zdCBDb2xsZWN0
aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKQoraW5saW5lIGF1
dG8gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5P
bmx5Pjo6YmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJO
b2RlJiByb290Tm9kZSkgLT4gSXRlcmF0b3IKIHsKLSAgICBhdXRvIGNoaWxkcmVuID0gY2hpbGRy
ZW5PZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpOwotICAgIGF1dG8gZW5kID0gY2hpbGRyZW4uZW5k
KCk7Ci0gICAgZm9yIChhdXRvIGl0ID0gY2hpbGRyZW4uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgIGlmIChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCppdCkpIHsKLSAgICAg
ICAgICAgIC8vIERyb3AgaXRlcmF0b3IgYXNzZXJ0aW9ucyBiZWNhdXNlIEhUTUxDb2xsZWN0aW9u
cyAvIE5vZGVMaXN0IHVzZSBhIGZpbmUtZ3JhaW5lZCBpbnZhbGlkYXRpb24gc2NoZW1lLgotICAg
ICAgICAgICAgaXQuZHJvcEFzc2VydGlvbnMoKTsKLSAgICAgICAgICAgIHJldHVybiBpdDsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZW5kOworICAgIGF1dG8gaXQgPSBjaGlsZHJlbk9m
VHlwZTxFbGVtZW50Pihyb290Tm9kZSkuYmVnaW4oKTsKKyAgICB3aGlsZSAoaXQgJiYgIWNvbGxl
Y3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkKKyAgICAgICAgKytpdDsKKyAgICAvLyBEcm9wIGl0
ZXJhdG9yIGFzc2VydGlvbnMgYmVjYXVzZSBIVE1MQ29sbGVjdGlvbnMgLyBOb2RlTGlzdCB1c2Ug
YSBmaW5lLWdyYWluZWQgaW52YWxpZGF0aW9uIHNjaGVtZS4KKyAgICBpdC5kcm9wQXNzZXJ0aW9u
cygpOworICAgIHJldHVybiBpdDsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25D
bGFzcz4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBDb2xsZWN0aW9uVHJh
dmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+OjpsYXN0KGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpCitp
bmxpbmUgYXV0byBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpD
aGlsZHJlbk9ubHk+OjpsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgQ29u
dGFpbmVyTm9kZSYgcm9vdE5vZGUpIC0+IEl0ZXJhdG9yCiB7Ci0gICAgYXV0byBjaGlsZHJlbiA9
IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KHJvb3ROb2RlKTsKLSAgICBFbGVtZW50Q2hpbGRJdGVy
YXRvcjxFbGVtZW50PiBpbnZhbGlkKGNvbGxlY3Rpb24ucm9vdE5vZGUoKSk7Ci0gICAgRWxlbWVu
dENoaWxkSXRlcmF0b3I8RWxlbWVudD4gbGFzdChyb290Tm9kZSwgY2hpbGRyZW4ubGFzdCgpKTsK
LSAgICBmb3IgKGF1dG8gaXQgPSBsYXN0OyBpdCAhPSBpbnZhbGlkOyAtLWl0KSB7Ci0gICAgICAg
IGlmIChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCppdCkpIHsKLSAgICAgICAgICAgIC8vIERy
b3AgaXRlcmF0b3IgYXNzZXJ0aW9ucyBiZWNhdXNlIEhUTUxDb2xsZWN0aW9ucyAvIE5vZGVMaXN0
IHVzZSBhIGZpbmUtZ3JhaW5lZCBpbnZhbGlkYXRpb24gc2NoZW1lLgotICAgICAgICAgICAgaXQu
ZHJvcEFzc2VydGlvbnMoKTsKLSAgICAgICAgICAgIHJldHVybiBpdDsKLSAgICAgICAgfQotICAg
IH0KLSAgICByZXR1cm4gaW52YWxpZDsKKyAgICBhdXRvIGl0ID0gY2hpbGRyZW5PZlR5cGU8RWxl
bWVudD4ocm9vdE5vZGUpLmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICYmICFjb2xsZWN0aW9uLmVs
ZW1lbnRNYXRjaGVzKCppdCkpCisgICAgICAgIC0taXQ7CisgICAgLy8gRHJvcCBpdGVyYXRvciBh
c3NlcnRpb25zIGJlY2F1c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1n
cmFpbmVkIGludmFsaWRhdGlvbiBzY2hlbWUuCisgICAgaXQuZHJvcEFzc2VydGlvbnMoKTsKKyAg
ICByZXR1cm4gaXQ7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci1p
bmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpD
aGlsZHJlbk9ubHk+Ojp0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xs
ZWN0aW9uLCBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiYgY3VycmVudCwgdW5zaWduZWQg
Y291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkKK2lubGluZSB2b2lkIENvbGxlY3Rpb25U
cmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46OnRyYXZlcnNl
Rm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEl0ZXJhdG9yJiBjdXJy
ZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KQogewogICAgIEFT
U0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7Ci0gICAgRWxlbWVudENo
aWxkSXRlcmF0b3I8RWxlbWVudD4gaW52YWxpZChjb2xsZWN0aW9uLnJvb3ROb2RlKCkpOwogICAg
IGZvciAodHJhdmVyc2VkQ291bnQgPSAwOyB0cmF2ZXJzZWRDb3VudCA8IGNvdW50OyArK3RyYXZl
cnNlZENvdW50KSB7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgICsrY3VycmVudDsKLSAgICAg
ICAgICAgIGlmIChjdXJyZW50ID09IGludmFsaWQpCisgICAgICAgICAgICBpZiAoIWN1cnJlbnQp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IHdoaWxlICghY29sbGVjdGlvbi5l
bGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwogICAgIH0KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVj
dGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46OnRyYXZlcnNlQmFja3dhcmQoY29uc3Qg
Q29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50
PiYgY3VycmVudCwgdW5zaWduZWQgY291bnQpCitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVy
c2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2ZXJzZUJhY2t3
YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgSXRlcmF0b3ImIGN1cnJlbnQs
IHVuc2lnbmVkIGNvdW50KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVz
KCpjdXJyZW50KSk7Ci0gICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gaW52YWxpZChj
b2xsZWN0aW9uLnJvb3ROb2RlKCkpOwogICAgIGZvciAoOyBjb3VudDsgLS1jb3VudCkgewogICAg
ICAgICBkbyB7CiAgICAgICAgICAgICAtLWN1cnJlbnQ7Ci0gICAgICAgICAgICBpZiAoY3VycmVu
dCA9PSBpbnZhbGlkKQorICAgICAgICAgICAgaWYgKCFjdXJyZW50KQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfSB3aGlsZSAoIWNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1
cnJlbnQpKTsKICAgICB9CkBAIC0xOTMsNyArMTY3LDcgQEAgdGVtcGxhdGUgPD4KIHN0cnVjdCBD
b2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJk
T25seT4gewogICAgIHVzaW5nIEl0ZXJhdG9yID0gRWxlbWVudCo7CiAKLSAgICBzdGF0aWMgRWxl
bWVudCogZW5kKENvbnRhaW5lck5vZGUmKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBFbGVtZW50KiBlbmQoQ29udGFpbmVyTm9kZSYpIHsgcmV0dXJuIG51bGxwdHI7
IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CiAgICAgc3RhdGlj
IEVsZW1lbnQqIGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKaW5kZXggYjk0OWE2OTFmNjBmZGM5
OWMyZDdmNjdmZGY4Yjc3NTM4NThlMzkyOC4uN2ZmMzJlNTk5N2U3MDZkNTc5Yjk5YjBjM2YyN2Zk
NWVmYmJkMjJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKQEAgLTEs
NiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUg
IkNocm9tZS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiRWxlbWVudENoaWxkSXRl
cmF0b3IuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkhUTUxEYXRhTGlzdEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgpAQCAtMjg3LDEzICsyODYsOSBAQCBW
ZWN0b3I8Q29sb3I+IENvbG9ySW5wdXRUeXBlOjpzdWdnZXN0ZWRDb2xvcnMoKSBjb25zdAogI2lm
IEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIGlm
IChhdXRvIGRhdGFMaXN0ID0gZWxlbWVudCgpLT5kYXRhTGlzdCgpKSB7Ci0gICAgICAgIFJlZjxI
VE1MQ29sbGVjdGlvbj4gb3B0aW9ucyA9IGRhdGFMaXN0LT5vcHRpb25zKCk7Ci0gICAgICAgIHVu
c2lnbmVkIGxlbmd0aCA9IG9wdGlvbnMtPmxlbmd0aCgpOwotICAgICAgICBzdWdnZXN0aW9ucy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgIT0gbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBkb3duY2Fz
dDxIVE1MT3B0aW9uRWxlbWVudD4oKm9wdGlvbnMtPml0ZW0oaSkpLnZhbHVlKCk7Ci0gICAgICAg
ICAgICBpZiAoaXNWYWxpZFNpbXBsZUNvbG9yKHZhbHVlKSkKLSAgICAgICAgICAgICAgICBzdWdn
ZXN0aW9ucy51bmNoZWNrZWRBcHBlbmQoQ29sb3IodmFsdWUpKTsKKyAgICAgICAgZm9yIChhdXRv
JiBvcHRpb24gOiBkYXRhTGlzdC0+c3VnZ2VzdGlvbnMoKSkgeworICAgICAgICAgICAgaWYgKGF1
dG8gY29sb3IgPSBwYXJzZVNpbXBsZUNvbG9yVmFsdWUob3B0aW9uLnZhbHVlKCkpKQorICAgICAg
ICAgICAgICAgIHN1Z2dlc3Rpb25zLnVuY2hlY2tlZEFwcGVuZCgqY29sb3IpOwogICAgICAgICB9
CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWND
YWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNo
ZWRIVE1MQ29sbGVjdGlvbi5jcHAKaW5kZXggMzgzOGYxYmQ3ZTRlNjdmNTU3MDVlMTAwYjNkNjk3
M2QwMzg5M2U1MC4uOWNiM2E2NzAyMzcyY2Q0YmQyYmZkOWVlM2JhODlmYmNhN2M4ZmZhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9u
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9u
LmgiCiAKICNpbmNsdWRlICJIVE1MQXBwbGV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxEYXRh
TGlzdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKQEAgLTY0LDEy
ICs2NSw3IEBAIGJvb2wgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPHRyYXZlcnNhbFR5cGU+
OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JiBlbGVtZW50CiAgICAgY2FzZSBTZWxlY3RlZE9wdGlv
bnM6CiAgICAgICAgIHJldHVybiBpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkgJiYgZG93
bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpLnNlbGVjdGVkKCk7CiAgICAgY2FzZSBE
YXRhTGlzdE9wdGlvbnM6Ci0gICAgICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVu
dCkpIHsKLSAgICAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50JiBvcHRpb24gPSBkb3duY2FzdDxI
VE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAoIW9wdGlvbi5pc0Rp
c2FibGVkRm9ybUNvbnRyb2woKSAmJiAhb3B0aW9uLnZhbHVlKCkuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KTsKICAgICBjYXNl
IE1hcEFyZWFzOgogICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGFyZWFUYWcpOwog
ICAgIGNhc2UgRG9jQXBwbGV0czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFsbENvbGxlY3Rpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlv
bi5pZGwKaW5kZXggOGZjYjY4YzY4MDAwODM3MjNhNTg1OGYwY2U2ZGJhYWI0NzUzOWMzYy4uZTVi
MTE5MmU0OTI4ODcxM2YzMzIxYmNhMGE3YzI4YTY3ODFhYWE5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5pZGwKQEAgLTMxLDYgKzMxLDYgQEAKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAKICAgICBnZXR0ZXIgRWxlbWVudD8g
KHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtJbXBsZW1lbnRlZEFzPW5hbWVkSXRlbU9ySXRl
bXNdIGdldHRlciAoSFRNTENvbGxlY3Rpb24gb3IgRWxlbWVudCk/IG5hbWVkSXRlbShET01TdHJp
bmcgbmFtZSk7Ci0gICAgW0ltcGxlbWVudGVkQXM9bmFtZWRPckluZGV4ZWRJdGVtT3JJdGVtc10g
bGVnYWN5Y2FsbGVyIChIVE1MQ29sbGVjdGlvbiBvciBFbGVtZW50KT8gaXRlbShvcHRpb25hbCBE
T01TdHJpbmcgbmFtZU9ySW5kZXgpOworICAgIFtJbXBsZW1lbnRlZEFzPW5hbWVkSXRlbU9ySXRl
bXNdIGdldHRlciAoSFRNTENvbGxlY3Rpb24gb3IgRWxlbWVudCk/IG5hbWVkSXRlbShbUmVxdWly
ZXNFeGlzdGluZ0F0b21TdHJpbmddIERPTVN0cmluZyBuYW1lKTsKKyAgICBbSW1wbGVtZW50ZWRB
cz1uYW1lZE9ySW5kZXhlZEl0ZW1Pckl0ZW1zXSBsZWdhY3ljYWxsZXIgKEhUTUxDb2xsZWN0aW9u
IG9yIEVsZW1lbnQpPyBpdGVtKG9wdGlvbmFsIFtBdG9tU3RyaW5nXSBET01TdHJpbmcgbmFtZU9y
SW5kZXgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rp
b24uaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5pZGwKaW5kZXggNmRm
YWU4YmQ4OTRhY2RjMmQyNjA1NTY2MjZiNGM3M2JkYjFjOWE1Yi4uYzQ1MmQ4OWVjOWJiMGUwN2Vi
M2U0MjMxMjNiZjMyMTcyMDk1NjQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ29sbGVjdGlvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlv
bi5pZGwKQEAgLTI3LDUgKzI3LDUgQEAKIF0gaW50ZXJmYWNlIEhUTUxDb2xsZWN0aW9uIHsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgZ2V0dGVyIEVs
ZW1lbnQ/IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgZ2V0dGVyIEVsZW1lbnQ/IG5h
bWVkSXRlbShET01TdHJpbmcgbmFtZSk7CisgICAgZ2V0dGVyIEVsZW1lbnQ/IG5hbWVkSXRlbShb
UmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIERPTVN0cmluZyBuYW1lKTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcAppbmRleCBiZWM4N2IzNmQzODE0
MGUyYzJjZWMxMmQ0YTBiZGJmMzg1NDg4YTE5Li44MjZjMmM1NDkzNTJlNTU3YTViYjg5NTRmNzZh
NjFmMDUyZjk3NTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlz
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVu
dC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQpAQCAtMzcsNiArMzcsNyBAQAogCiAjaW5jbHVkZSAiR2VuZXJpY0NhY2hlZEhUTUxDb2xs
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTE9wdGlvbkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCIKICNpbmNsdWRl
ICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAt
NjUsNiArNjYsMTEgQEAgdm9pZCBIVE1MRGF0YUxpc3RFbGVtZW50OjpvcHRpb25FbGVtZW50Q2hp
bGRyZW5DaGFuZ2VkKCkKICAgICB0cmVlU2NvcGUoKS5pZFRhcmdldE9ic2VydmVyUmVnaXN0cnko
KS5ub3RpZnlPYnNlcnZlcnMoZ2V0SWRBdHRyaWJ1dGUoKSk7CiB9CiAKK2Jvb2wgSFRNTERhdGFM
aXN0RWxlbWVudDo6aXNTdWdnZXN0aW9uKGNvbnN0IEhUTUxPcHRpb25FbGVtZW50JiBkZXNjZW5k
YW50KQoreworICAgIHJldHVybiAhZGVzY2VuZGFudC5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSAm
JiAhZGVzY2VuZGFudC52YWx1ZSgpLmlzRW1wdHkoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5oCmluZGV4IDhmNzFmYTVjOTExYzliNTBiMmI4MTBk
ODU3ZjdhYzNjZjJjY2VjMDEuLjdjZjU3MWUyOWE2NzBjZGYwY2Q2ZGU1NTM3NTNiN2VhOTUyZDg2
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5oCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMywx
MSArMzMsMTMgQEAKIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogCi0jaW5jbHVkZSAi
SFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJIVE1MRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEhUTUxDb2xs
ZWN0aW9uOworCiBjbGFzcyBIVE1MRGF0YUxpc3RFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxF
bGVtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEhUTUxEYXRhTGlzdEVsZW1lbnQp
OwogcHVibGljOgpAQCAtNDcsNiArNDksOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG9wdGlvbkVs
ZW1lbnRDaGlsZHJlbkNoYW5nZWQoKTsKIAorICAgIHN0YXRpYyBib29sIGlzU3VnZ2VzdGlvbihj
b25zdCBIVE1MT3B0aW9uRWxlbWVudCYgZGVzY2VuZGFudCk7CisgICAgYXV0byBzdWdnZXN0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPcHRpb25FbGVtZW50LCBp
c1N1Z2dlc3Rpb24+KCp0aGlzKTsgfQorCiBwcml2YXRlOgogICAgIEhUTUxEYXRhTGlzdEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmNwcAppbmRleCA2OGNmNTUzYWI0OTBhZTRkZjA3YzdkZmI2MmI3ZGRkMDY2OTA2
MGVhLi4zMmVkNGFkMzFiZDMwZWNmNGNjYzQ4ZmIxNDI0NGEzMjMyNGUwNGI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5
OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAw
NC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3
dy50b3JjaG1vYmlsZS5jb20vKQogICogQ29weXJpZ2h0IChDKSAyMDExIE1vdG9yb2xhIE1vYmls
aXR5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRl
ICJIVE1MQkRJRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxCUkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MQnV0dG9uRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5j
bHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnRGYWN0b3J5LmgiCiAj
aW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgpAQCAtNjAsNiArNTksNyBAQAogI2luY2x1
ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTaW11bGF0ZWRDbGljay5oIgog
I2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgpAQCAtNzY3LDE0ICs3NjcsMTYgQEAgRm9ybUFz
c29jaWF0ZWRFbGVtZW50KiBIVE1MRWxlbWVudDo6YXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKQog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgZWxlbWVudEFmZmVj
dHNEaXJlY3Rpb25hbGl0eShjb25zdCBOb2RlJiBub2RlKQorc3RhdGljIGJvb2wgZWxlbWVudEFm
ZmVjdHNEaXJlY3Rpb25hbGl0eShjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBp
ZiAoIWlzPEhUTUxFbGVtZW50Pihub2RlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNv
bnN0IEhUTUxFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG5vZGUpOwog
ICAgIHJldHVybiBpczxIVE1MQkRJRWxlbWVudD4oZWxlbWVudCkgfHwgZWxlbWVudC5oYXNBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRpckF0dHIpOwogfQogCitzdGF0aWMgYm9vbCBl
bGVtZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5KGNvbnN0IE5vZGUmIG5vZGUpCit7CisgICAgcmV0
dXJuIGlzPEhUTUxFbGVtZW50Pihub2RlKSAmJiBlbGVtZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5
KGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKSk7Cit9CisKIHN0YXRpYyB2b2lkIHNldEhhc0Rp
ckF1dG9GbGFnUmVjdXJzaXZlbHkoTm9kZSogZmlyc3ROb2RlLCBib29sIGZsYWcsIE5vZGUqIGxh
c3ROb2RlID0gbnVsbHB0cikKIHsKICAgICBmaXJzdE5vZGUtPnNldFNlbGZPckFuY2VzdG9ySGFz
RGlyQXV0b0F0dHJpYnV0ZShmbGFnKTsKQEAgLTg4NSwxMCArODg3LDEwIEBAIHZvaWQgSFRNTEVs
ZW1lbnQ6OmFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkQXR0cmlidXRlQ2hh
bmdlZChFbGVtZW50CiAgICAgc2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVseShjaGlsZCwgZmFs
c2UpOwogICAgIGlmICghcmVuZGVyZXIoKSB8fCByZW5kZXJlcigpLT5zdHlsZSgpLmRpcmVjdGlv
bigpID09IHRleHREaXJlY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBmb3IgKGF1dG8mIGVs
ZW1lbnRUb0FkanVzdCA6IGVsZW1lbnRMaW5lYWdlKHRoaXMpKSB7Ci0gICAgICAgIGlmIChlbGVt
ZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5KGVsZW1lbnRUb0FkanVzdCkpIHsKLSAgICAgICAgICAg
IGVsZW1lbnRUb0FkanVzdC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Ci0gICAgICAgICAg
ICByZXR1cm47CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbGluZWFnZU9mVHlwZTxIVE1MRWxl
bWVudD4oKnRoaXMpKSB7CisgICAgICAgIGlmIChlbGVtZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5
KGVsZW1lbnQpKSB7CisgICAgICAgICAgICBlbGVtZW50LmludmFsaWRhdGVTdHlsZUZvclN1YnRy
ZWUoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5oCmluZGV4IDM5NWRiMWU2MmVlZGQxZDkwMGU5ZTdjM2VjODg4Y2IwMGNi
MmE0YTMuLjdlMDc0ZWI2MTI4OTc2Mjg5MGUxMWU4MWFmY2Q2YTA5M2U3ZmRkOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTIyLDE5ICsyMiwxNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIklucHV0TW9kZS5oIgorI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKKwog
I2lmIEVOQUJMRShBVVRPQ0FQSVRBTElaRSkKICNpbmNsdWRlICJBdXRvY2FwaXRhbGl6ZS5oIgog
I2VuZGlmCiAKLSNpbmNsdWRlICJJbnB1dE1vZGUuaCIKLSNpbmNsdWRlICJTdHlsZWRFbGVtZW50
LmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNs
YXNzIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDsKIGNsYXNzIEZvcm1OYW1lZEl0ZW07Ci1jbGFzcyBI
VE1MQ29sbGVjdGlvbjsKIGNsYXNzIEhUTUxGb3JtRWxlbWVudDsKIAogZW51bSBjbGFzcyBFbnRl
cktleUhpbnQgOiB1aW50OF90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RW1iZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5j
cHAKaW5kZXggOTE3MDFlMTQ0NGVmMjg2MDg1ZjcyMTI0MGJlZjBhYjZjMjc2MTYxMi4uMjFjYjlk
OTNjOWEzNDBhM2ZiM2NiMTY2MjAwY2Q2ODEwNDBlNWE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAx
OTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50
dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgU3Rl
ZmFuIFNjaGltYW5za2kgKDFTdGVpbkBnbXguZGUpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTY2LDE1ICs2NiwxMCBAQCBSZWY8SFRN
TEVtYmVkRWxlbWVudD4gSFRNTEVtYmVkRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCkKIAogc3RhdGljIGlubGluZSBSZW5kZXJXaWRnZXQqIGZpbmRXaWRnZXRSZW5kZXJlcihjb25z
dCBOb2RlKiBub2RlKQogewotICAgIGlmICghbm9kZS0+cmVuZGVyZXIoKSkgewotICAgICAgICBk
byB7Ci0gICAgICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwotICAgICAgICB9IHdo
aWxlIChub2RlICYmICFpczxIVE1MT2JqZWN0RWxlbWVudD4oKm5vZGUpKTsKLSAgICB9Ci0KKyAg
ICBpZiAoIW5vZGUtPnJlbmRlcmVyKCkpCisgICAgICAgIG5vZGUgPSBhbmNlc3RvcnNPZlR5cGU8
SFRNTE9iamVjdEVsZW1lbnQ+KCpub2RlKS5maXJzdCgpOwogICAgIGlmIChub2RlICYmIGlzPFJl
bmRlcldpZGdldD4obm9kZS0+cmVuZGVyZXIoKSkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxS
ZW5kZXJXaWRnZXQ+KG5vZGUtPnJlbmRlcmVyKCkpOwotCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmlu
ZGV4IGQ2MTFiYzFiMjI1MWZmOGYwODg0NGY2OGQ0MjRmYjlkYzk2NjgyZjQuLmZkNzdkN2JhMDQz
ZTlhN2NkNzJmZjk2ZTg1NjhmYjllYzk4M2Y3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdo
dCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAx
OTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAy
MDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChD
KSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSFRNTERhdGFMaXN0RWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9y
bUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCkBAIC00MTIsMTQgKzQx
MywxMiBAQCBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6Om1hdGNoZXNJbnZhbGlkUHNldWRv
Q2xhc3MoKSBjb25zdAogYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpjb21wdXRlV2lsbFZh
bGlkYXRlKCkgY29uc3QKIHsKICAgICBpZiAobV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUgPT0gVW5r
bm93bikgewotICAgICAgICBmb3IgKENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gcGFyZW50Tm9k
ZSgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50Tm9kZSgpKSB7Ci0gICAg
ICAgICAgICBpZiAoYW5jZXN0b3ItPmhhc1RhZ05hbWUoZGF0YWxpc3RUYWcpKSB7Ci0gICAgICAg
ICAgICAgICAgbV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUgPSBJbnNpZGVEYXRhTGlzdDsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAo
bV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUgPT0gVW5rbm93bikKLSAgICAgICAgICAgIG1fZGF0YUxp
c3RBbmNlc3RvclN0YXRlID0gTm90SW5zaWRlRGF0YUxpc3Q7CisjaWYgRU5BQkxFKERBVEFMSVNU
X0VMRU1FTlQpCisgICAgICAgIG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlID0gYW5jZXN0b3JzT2ZU
eXBlPEhUTUxEYXRhTGlzdEVsZW1lbnQ+KCp0aGlzKS5maXJzdCgpCisgICAgICAgICAgICA/IElu
c2lkZURhdGFMaXN0IDogTm90SW5zaWRlRGF0YUxpc3Q7CisjZWxzZQorICAgICAgICBtX2RhdGFM
aXN0QW5jZXN0b3JTdGF0ZSA9IE5vdEluc2lkZURhdGFMaXN0OworI2VuZGlmCiAgICAgfQogICAg
IHJldHVybiBtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9PSBOb3RJbnNpZGVEYXRhTGlzdCAmJiAh
aXNEaXNhYmxlZE9yUmVhZE9ubHkoKTsKIH0KQEAgLTY0NSwxNSArNjQ0LDYgQEAgQXV0b2NhcGl0
YWxpemVUeXBlIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF1dG9jYXBpdGFsaXplVHlwZSgpIGNv
bnN0CiAKICNlbmRpZgogCi1IVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50OjplbmNsb3NpbmdGb3JtQ29udHJvbEVsZW1lbnQoTm9kZSogbm9kZSkKLXsKLSAgICBm
b3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgewotICAgICAgICBpZiAoaXM8
SFRNTEZvcm1Db250cm9sRWxlbWVudD4oKm5vZGUpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25j
YXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KG5vZGUpOwotICAgIH0KLSAgICByZXR1cm4gbnVs
bHB0cjsKLX0KLQogU3RyaW5nIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF1dG9jb21wbGV0ZSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGF1dG9maWxsRGF0YSgpLmlkbEV4cG9zZWRWYWx1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggNjEzNDBi
ZmE3M2EzYTk2NmJhNjM3YWQ0NGY1NmNiZDhmY2ZjOTZmMC4uM2FkYjMxMWM3YTYxZDc4ZDgwYjk5
MGExNTY5ZTY4MWQwZjY1MzAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmgKQEAgLTExNiw4ICsxMTYsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNB
dXRvZm9jdXNlZCgpIHsgcmV0dXJuIG1faGFzQXV0b2ZvY3VzZWQ7IH0KICAgICB2b2lkIHNldEF1
dG9mb2N1c2VkKCkgeyBtX2hhc0F1dG9mb2N1c2VkID0gdHJ1ZTsgfQogCi0gICAgc3RhdGljIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQqIGVuY2xvc2luZ0Zvcm1Db250cm9sRWxlbWVudChOb2RlKik7
Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgYXV0b2NvbXBsZXRlKCkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBdXRvY29tcGxldGUoY29uc3QgU3RyaW5nJik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAK
aW5kZXggYTJiMDBlOGY4MTZkYTFjMjIxYjFjMzY2ZWE2ZTY4OWMzYjFjNjhiOS4uODRhMWNiNzll
MzYwMTQzZWMzZDQ4MjljNjU3NTc4YzgyODM3ZDBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKQEAgLTQwLDcgKzQwLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbik7CiAKIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
OjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBvd25lck5vZGUpCi0g
ICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiwgQ29s
bGVjdGlvblR5cGVUcmFpdHM8Rm9ybUNvbnRyb2xzPjo6dHJhdmVyc2FsVHlwZT4ob3duZXJOb2Rl
LCBGb3JtQ29udHJvbHMpCisgICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbihvd25lck5vZGUsIEZv
cm1Db250cm9scykKICAgICAsIG1fY2FjaGVkRWxlbWVudChudWxscHRyKQogICAgICwgbV9jYWNo
ZWRFbGVtZW50T2Zmc2V0SW5BcnJheSgwKQogewpAQCAtMTExLDcgKzExMSw3IEBAIEhUTUxFbGVt
ZW50KiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Y3VzdG9tRWxlbWVudEFmdGVyKEVsZW1l
bnQqIGN1cnJlbnQpIGNvCiAKIEhUTUxGb3JtRWxlbWVudCYgSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb246Om93bmVyTm9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxGb3Jt
RWxlbWVudD4oQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24s
IENvbGxlY3Rpb25UeXBlVHJhaXRzPEZvcm1Db250cm9scz46OnRyYXZlcnNhbFR5cGU+Ojpvd25l
ck5vZGUoKSk7CisgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxGb3JtRWxlbWVudD4oQ2FjaGVkSFRN
TENvbGxlY3Rpb246Om93bmVyTm9kZSgpKTsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdApAQCAtMTU4LDcgKzE1OCw3
IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENh
Y2hlKCkgY29uc3QKIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6aW52YWxpZGF0
ZUNhY2hlRm9yRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIENhY2hlZEhUTUxD
b2xsZWN0aW9uPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0
czxGb3JtQ29udHJvbHM+Ojp0cmF2ZXJzYWxUeXBlPjo6aW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1l
bnQoZG9jdW1lbnQpOworICAgIENhY2hlZEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGVG
b3JEb2N1bWVudChkb2N1bWVudCk7CiAgICAgbV9jYWNoZWRFbGVtZW50ID0gbnVsbHB0cjsKICAg
ICBtX2NhY2hlZEVsZW1lbnRPZmZzZXRJbkFycmF5ID0gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwKaW5kZXggNDNjODM1OTk4
YjQwMDU5ZTMzMjdjZTZkNTllMGY4MmU2ZmRkMTgyMy4uNGQ4MWZmZDAzNDU3NDc3Y2JhMjRkMmQz
M2RiYjkzMWI0OGIzNWVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwKQEAgLTIyLDUgKzIyLDUgQEAKICAgICBHZW5lcmF0ZUlz
UmVhY2hhYmxlPUltcGxPd25lck5vZGVSb290LAogXSBpbnRlcmZhY2UgSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24gOiBIVE1MQ29sbGVjdGlvbiB7CiAgICAgZ2V0dGVyIEhUTUxFbGVtZW50PyAo
dW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW0ltcGxlbWVudGVkQXM9bmFtZWRJdGVtT3JJdGVt
c10gZ2V0dGVyIChSYWRpb05vZGVMaXN0IG9yIEVsZW1lbnQpPyBuYW1lZEl0ZW0oRE9NU3RyaW5n
IG5hbWUpOyAvLyBzaGFkb3dzIGluaGVyaXRlZCBuYW1lZEl0ZW0oKQorICAgIFtJbXBsZW1lbnRl
ZEFzPW5hbWVkSXRlbU9ySXRlbXNdIGdldHRlciAoUmFkaW9Ob2RlTGlzdCBvciBFbGVtZW50KT8g
bmFtZWRJdGVtKFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gRE9NU3RyaW5nIG5hbWUpOyAv
LyBzaGFkb3dzIGluaGVyaXRlZCBuYW1lZEl0ZW0oKQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmNwcAppbmRleCBlN2U0MTRjODdkYzI0ODhjNTg2NmUzNWYyYmVmZDM3MWJl
YzliMTYwLi4yZDA5M2VmYzA3OWI4MmVlMTdmY2Y0ZGQwYzlmYWIzZjk3M2JjNzY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC01MDksMTQgKzUwOSwxMyBAQCB1
bnNpZ25lZCBIVE1MRm9ybUVsZW1lbnQ6OmZvcm1FbGVtZW50SW5kZXgoRm9ybUFzc29jaWF0ZWRF
bGVtZW50KiBhc3NvY2lhdGVkRWxlbQogICAgIGlmICghYXNzb2NpYXRlZEhUTUxFbGVtZW50Lmlz
RGVzY2VuZGFudE9mKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIGN1cnJlbnRBc3NvY2lhdGVkRWxl
bWVudHNBZnRlckluZGV4OwogCisgICAgYXV0byBkZXNjZW5kYW50cyA9IGRlc2NlbmRhbnRzT2ZU
eXBlPEhUTUxFbGVtZW50PigqdGhpcyk7CisKICAgICAvLyBDaGVjayBmb3IgdGhlIHNwZWNpYWwg
Y2FzZSB3aGVyZSB0aGlzIGVsZW1lbnQgaXMgdGhlIHZlcnkgbGFzdCB0aGluZyBpbgogICAgIC8v
IHRoZSBmb3JtJ3MgdHJlZSBvZiBjaGlsZHJlbjsgd2UgZG9uJ3Qgd2FudCB0byB3YWxrIHRoZSBl
bnRpcmUgdHJlZSBpbiB0aGF0CiAgICAgLy8gY29tbW9uIGNhc2UgdGhhdCBvY2N1cnMgZHVyaW5n
IHBhcnNpbmc7IGluc3RlYWQgd2UnbGwganVzdCByZXR1cm4gYSB2YWx1ZQogICAgIC8vIHRoYXQg
c2F5cyAiYWRkIHRoaXMgZm9ybSBlbGVtZW50IHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5Ii4KLSAg
ICBhdXRvIGRlc2NlbmRhbnRzID0gZGVzY2VuZGFudHNPZlR5cGU8SFRNTEVsZW1lbnQ+KCp0aGlz
KTsKLSAgICBhdXRvIGl0ID0gZGVzY2VuZGFudHMuYmVnaW5BdChhc3NvY2lhdGVkSFRNTEVsZW1l
bnQpOwotICAgIGF1dG8gZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7Ci0gICAgaWYgKCsraXQgPT0g
ZW5kKQorICAgIGlmICghKytkZXNjZW5kYW50cy5iZWdpbkF0KGFzc29jaWF0ZWRIVE1MRWxlbWVu
dCkpCiAgICAgICAgIHJldHVybiBjdXJyZW50QXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleDsK
IAogICAgIHVuc2lnbmVkIGkgPSBtX2Fzc29jaWF0ZWRFbGVtZW50c0JlZm9yZUluZGV4OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKaW5kZXggODNhYzY4MGQ5
MDQ4NzU3MTUwYjViNmViMzZiNjRkNzg4ZjBlYmM3MC4uZTZhZTZmNjhkODc5ODVhZjlmZjU0ZWI1
ZDY3NTMzYTViNWFiMWYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVs
ZW1lbnQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5o
IgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkxlbmd0aC5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2Rl
IDEwMDY0NApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggZjU3
M2NhMTQwNjg1Y2QyNjAyMDljZDYxOWM4YTk4MDQ5ZWNjNTE5NC4uNWQwOGU5ZTQ5NDVlMmQ5M2Nk
YjhkY2EyMDVmYzAzMzFjYmVmZjhmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25v
bGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8g
KGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyICht
dWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3Nr
dXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBXZWlu
aWcgKHNhbUB3ZWJraXQub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0yMTA0LDYgKzIxMDQsNyBAQCBSZW5kZXJTdHlsZSBIVE1M
SW5wdXRFbGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUpCiB9CiAKICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKKwogYm9vbCBI
VE1MSW5wdXRFbGVtZW50OjpzZXR1cERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMoRGF0ZVRpbWVD
aG9vc2VyUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBpZiAoIWRvY3VtZW50KCkudmll
dygpKQpAQCAtMjEzNiwyMCArMjEzNywyNCBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnNldHVw
RGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyhEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzJgogICAg
ICAgICBwYXJhbWV0ZXJzLmFuY2hvclJlY3RJblJvb3RWaWV3ID0gSW50UmVjdCgpOwogICAgIHBh
cmFtZXRlcnMuY3VycmVudFZhbHVlID0gdmFsdWUoKTsKICAgICBwYXJhbWV0ZXJzLmlzQW5jaG9y
RWxlbWVudFJUTCA9IGNvbXB1dGVkU3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlv
bjo6UlRMOworCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgaWYgKGF1dG8gZGF0
YUxpc3QgPSB0aGlzLT5kYXRhTGlzdCgpKSB7Ci0gICAgICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4g
b3B0aW9ucyA9IGRhdGFMaXN0LT5vcHRpb25zKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IFJlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlv
bkVsZW1lbnQ+KG9wdGlvbnMtPml0ZW0oaSkpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghaXNW
YWxpZFZhbHVlKG9wdGlvbi0+dmFsdWUoKSkpCisgICAgICAgIGZvciAoYXV0byYgb3B0aW9uIDog
ZGF0YUxpc3QtPnN1Z2dlc3Rpb25zKCkpIHsKKyAgICAgICAgICAgIGF1dG8gbGFiZWwgPSBvcHRp
b24ubGFiZWwoKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBvcHRpb24udmFsdWUoKTsKKyAg
ICAgICAgICAgIGlmICghaXNWYWxpZFZhbHVlKHZhbHVlKSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuc3VnZ2VzdGlvblZhbHVlcy5hcHBlbmQoc2Fu
aXRpemVWYWx1ZShvcHRpb24tPnZhbHVlKCkpKTsKLSAgICAgICAgICAgIHBhcmFtZXRlcnMubG9j
YWxpemVkU3VnZ2VzdGlvblZhbHVlcy5hcHBlbmQobG9jYWxpemVWYWx1ZShvcHRpb24tPnZhbHVl
KCkpKTsKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuc3VnZ2VzdGlvbkxhYmVscy5hcHBlbmQob3B0
aW9uLT52YWx1ZSgpID09IG9wdGlvbi0+bGFiZWwoKSA/IFN0cmluZygpIDogb3B0aW9uLT5sYWJl
bCgpKTsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuc3VnZ2VzdGlvblZhbHVlcy5hcHBlbmQoc2Fu
aXRpemVWYWx1ZSh2YWx1ZSkpOworICAgICAgICAgICAgcGFyYW1ldGVycy5sb2NhbGl6ZWRTdWdn
ZXN0aW9uVmFsdWVzLmFwcGVuZChsb2NhbGl6ZVZhbHVlKHZhbHVlKSk7CisgICAgICAgICAgICBw
YXJhbWV0ZXJzLnN1Z2dlc3Rpb25MYWJlbHMuYXBwZW5kKHZhbHVlID09IGxhYmVsID8gU3RyaW5n
KCkgOiBsYWJlbCk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKKwogICAgIHJldHVybiB0cnVl
OwogfQorCiAjZW5kaWYKIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpjYXBzTG9ja1N0YXRlTWF5
SGF2ZUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggYTczYmMwYjRjMmZlZWIzMTNkZmU3NzVjODhkOGVhOWQwOTlhMGJmNS4uZTc3YjM1ZmM3ODYx
YjViYzk3NGVlOThmMDM2MGRiMWMzMzdhNThmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC00NjUwLDcgKzQ2NTAsNyBAQCBVUkwgSFRNTE1lZGlhRWxlbWVu
dDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBlKiBjb250ZW50VHlwZSwgU3RyaW5n
KiBrZQogICAgIC8vIGVhY2ggc3RpbGwgaXMgYSBjaGlsZCBvZiB0aGlzIG1lZGlhIGVsZW1lbnQg
YmVmb3JlIHVzaW5nLgogICAgIFZlY3RvcjxSZWY8SFRNTFNvdXJjZUVsZW1lbnQ+PiBwb3RlbnRp
YWxTb3VyY2VOb2RlczsKICAgICBhdXRvIHNvdXJjZXMgPSBjaGlsZHJlbk9mVHlwZTxIVE1MU291
cmNlRWxlbWVudD4oKnRoaXMpOwotICAgIGZvciAoYXV0byBuZXh0ID0gbV9uZXh0Q2hpbGROb2Rl
VG9Db25zaWRlciA/IHNvdXJjZXMuYmVnaW5BdCgqbV9uZXh0Q2hpbGROb2RlVG9Db25zaWRlcikg
OiBzb3VyY2VzLmJlZ2luKCksIGVuZCA9IHNvdXJjZXMuZW5kKCk7IG5leHQgIT0gZW5kOyArK25l
eHQpCisgICAgZm9yIChhdXRvIG5leHQgPSBtX25leHRDaGlsZE5vZGVUb0NvbnNpZGVyID8gc291
cmNlcy5iZWdpbkF0KCptX25leHRDaGlsZE5vZGVUb0NvbnNpZGVyKSA6IHNvdXJjZXMuYmVnaW4o
KTsgbmV4dDsgKytuZXh0KQogICAgICAgICBwb3RlbnRpYWxTb3VyY2VOb2Rlcy5hcHBlbmQoKm5l
eHQpOwogCiAgICAgZm9yIChhdXRvJiBzb3VyY2UgOiBwb3RlbnRpYWxTb3VyY2VOb2Rlcykgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKaW5kZXggOWU4Y2Zm
ZGI5MWE1MTA5MDQyODQ1OWVmZmU4NjVhNDhlMDdmNDgwOC4uNjc2OGZlMTJhMWU1ZTcyMjBjNTM2
OTBmZTZmOTczNTdjYWU3Y2RiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0R3JvdXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91
cEVsZW1lbnQuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMg
S25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlz
dG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVy
IChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFBy
b3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTEwOSwxNCArMTA5LDcg
QEAgU3RyaW5nIEhUTUxPcHRHcm91cEVsZW1lbnQ6Omdyb3VwTGFiZWxUZXh0KCkgY29uc3QKICAg
ICAKIEhUTUxTZWxlY3RFbGVtZW50KiBIVE1MT3B0R3JvdXBFbGVtZW50Ojpvd25lclNlbGVjdEVs
ZW1lbnQoKSBjb25zdAogewotICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBzZWxlY3QgPSBwYXJl
bnROb2RlKCk7Ci0gICAgd2hpbGUgKHNlbGVjdCAmJiAhaXM8SFRNTFNlbGVjdEVsZW1lbnQ+KCpz
ZWxlY3QpKQotICAgICAgICBzZWxlY3QgPSBzZWxlY3QtPnBhcmVudE5vZGUoKTsKLSAgICAKLSAg
ICBpZiAoIXNlbGVjdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgcmV0dXJu
IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50PihzZWxlY3QuZ2V0KCkpOworICAgIHJldHVybiBj
b25zdF9jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4oYW5jZXN0b3JzT2ZUeXBlPEhUTUxTZWxlY3RF
bGVtZW50PigqdGhpcykuZmlyc3QoKSk7CiB9CiAKIHZvaWQgSFRNTE9wdEdyb3VwRWxlbWVudDo6
YWNjZXNzS2V5QWN0aW9uKGJvb2wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPcHRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1l
bnQuY3BwCmluZGV4IGMzZGQzMGQ1ZGM2MmJmODMxNzA5ZTU3MDA0Njg4ZDRhODhiM2UyYTYuLjNj
MDFlNjk1YWQxMDI2NzdhYWZmMDJkYjBmMjExZGI4OGY2OTI4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCkBAIC0zLDcgKzMsNyBAQAogICogICAgICAgICAg
IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAg
IChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQogICogICAgICAgICAgIChD
KSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKLSAqIENvcHlyaWdodCAo
QykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKQEAgLTE2Niw4ICsxNjYsOCBAQCB2b2lkIEhUTUxPcHRpb25FbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaQogewogI2lm
IEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIGlmIChuYW1lID09IHZhbHVlQXR0cikgewot
ICAgICAgICBpZiAoUmVmUHRyPEhUTUxEYXRhTGlzdEVsZW1lbnQ+IGRhdGFMaXN0ID0gb3duZXJE
YXRhTGlzdEVsZW1lbnQoKSkKLSAgICAgICAgICAgIGRhdGFMaXN0LT5vcHRpb25FbGVtZW50Q2hp
bGRyZW5DaGFuZ2VkKCk7CisgICAgICAgIGZvciAoYXV0byYgZGF0YUxpc3QgOiBhbmNlc3RvcnNP
ZlR5cGU8SFRNTERhdGFMaXN0RWxlbWVudD4oKnRoaXMpKQorICAgICAgICAgICAgZGF0YUxpc3Qu
b3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOwogICAgIH0gZWxzZQogI2VuZGlmCiAgICAg
aWYgKG5hbWUgPT0gZGlzYWJsZWRBdHRyKSB7CkBAIC0yMzgsMzkgKzIzOCwxNyBAQCB2b2lkIEhU
TUxPcHRpb25FbGVtZW50OjpzZXRTZWxlY3RlZFN0YXRlKGJvb2wgc2VsZWN0ZWQpCiB2b2lkIEhU
TUxPcHRpb25FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5n
ZSkKIHsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICBpZiAoUmVmUHRyPEhUTUxE
YXRhTGlzdEVsZW1lbnQ+IGRhdGFMaXN0ID0gb3duZXJEYXRhTGlzdEVsZW1lbnQoKSkKLSAgICAg
ICAgZGF0YUxpc3QtPm9wdGlvbkVsZW1lbnRDaGlsZHJlbkNoYW5nZWQoKTsKLSAgICBlbHNlCisg
ICAgZm9yIChhdXRvJiBkYXRhTGlzdCA6IGFuY2VzdG9yc09mVHlwZTxIVE1MRGF0YUxpc3RFbGVt
ZW50PigqdGhpcykpCisgICAgICAgIGRhdGFMaXN0Lm9wdGlvbkVsZW1lbnRDaGlsZHJlbkNoYW5n
ZWQoKTsKICNlbmRpZgogICAgIGlmIChSZWZQdHI8SFRNTFNlbGVjdEVsZW1lbnQ+IHNlbGVjdCA9
IG93bmVyU2VsZWN0RWxlbWVudCgpKQogICAgICAgICBzZWxlY3QtPm9wdGlvbkVsZW1lbnRDaGls
ZHJlbkNoYW5nZWQoKTsKICAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7
CiB9CiAKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLUhUTUxEYXRhTGlzdEVsZW1lbnQq
IEhUTUxPcHRpb25FbGVtZW50Ojpvd25lckRhdGFMaXN0RWxlbWVudCgpIGNvbnN0Ci17Ci0gICAg
UmVmUHRyPENvbnRhaW5lck5vZGU+IGRhdGFsaXN0ID0gcGFyZW50Tm9kZSgpOwotICAgIHdoaWxl
IChkYXRhbGlzdCAmJiAhaXM8SFRNTERhdGFMaXN0RWxlbWVudD4oKmRhdGFsaXN0KSkKLSAgICAg
ICAgZGF0YWxpc3QgPSBkYXRhbGlzdC0+cGFyZW50Tm9kZSgpOwotCi0gICAgaWYgKCFkYXRhbGlz
dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZG93bmNhc3Q8SFRNTERh
dGFMaXN0RWxlbWVudD4oZGF0YWxpc3QuZ2V0KCkpOwotfQotI2VuZGlmCi0KIEhUTUxTZWxlY3RF
bGVtZW50KiBIVE1MT3B0aW9uRWxlbWVudDo6b3duZXJTZWxlY3RFbGVtZW50KCkgY29uc3QKIHsK
LSAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gc2VsZWN0ID0gcGFyZW50Tm9kZSgpOwotICAgIHdo
aWxlIChzZWxlY3QgJiYgIWlzPEhUTUxTZWxlY3RFbGVtZW50Pigqc2VsZWN0KSkKLSAgICAgICAg
c2VsZWN0ID0gc2VsZWN0LT5wYXJlbnROb2RlKCk7Ci0KLSAgICBpZiAoIXNlbGVjdCkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFNlbGVjdEVsZW1l
bnQ+KHNlbGVjdC5nZXQoKSk7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SFRNTFNlbGVjdEVsZW1l
bnQqPihhbmNlc3RvcnNPZlR5cGU8SFRNTFNlbGVjdEVsZW1lbnQ+KCp0aGlzKS5maXJzdCgpKTsK
IH0KIAogU3RyaW5nIEhUTUxPcHRpb25FbGVtZW50OjpsYWJlbCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKaW5kZXggZjBkOTRjOGE2YjVmMzA4MzM0ZWFhMTFk
YTllNDAyMWI1YzBlNTdlNi4uOTFjNWFiYzdlMDE3YzExZmExMzJmZDMxZjAxYmUxZTMyNGUyNmIx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaApAQCAtMiw3ICsyLDcg
QEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICog
ICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICog
ICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDEwLCAyMDExLCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI4LDcgKzI4LDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MRGF0YUxpc3RFbGVtZW50OwogY2xhc3Mg
SFRNTFNlbGVjdEVsZW1lbnQ7CiAKIGNsYXNzIEhUTUxPcHRpb25FbGVtZW50IGZpbmFsIDogcHVi
bGljIEhUTUxFbGVtZW50IHsKQEAgLTQ5LDkgKzQ4LDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgc2VsZWN0ZWQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlbGVj
dGVkKGJvb2wpOwogCi0jaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAgV0VCQ09SRV9F
WFBPUlQgSFRNTERhdGFMaXN0RWxlbWVudCogb3duZXJEYXRhTGlzdEVsZW1lbnQoKSBjb25zdDsK
LSNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIEhUTUxTZWxlY3RFbGVtZW50KiBvd25lclNlbGVj
dEVsZW1lbnQoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYWJlbCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rp
b24uaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsCmlu
ZGV4IDZlOWZhNGQwZTE2MTYwZGEyYjdjYWI4MGQwMmE5N2FiZDgwNjNiMDUuLmYxYzQ3N2U0ODY4
ZTBmZTQwNTlmZGZjNjA1MWJlYzNhMWYyYzVjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGwKQEAgLTMyLDUgKzMyLDUgQEAKIAogICAgIC8vIEZJ
WE1FOiBDYW4gdGhlc2UganVzdCBiZSBpbmhlcml0ZWQgZnJvbSBIVE1MQ29sbGVjdGlvbiBsaWtl
IGluIHRoZSBzcGVjPwogICAgIGdldHRlciBIVE1MT3B0aW9uRWxlbWVudD8gaXRlbSh1bnNpZ25l
ZCBsb25nIGluZGV4KTsKLSAgICBnZXR0ZXIgSFRNTE9wdGlvbkVsZW1lbnQ/IG5hbWVkSXRlbShE
T01TdHJpbmcgbmFtZSk7CisgICAgZ2V0dGVyIEhUTUxPcHRpb25FbGVtZW50PyBuYW1lZEl0ZW0o
W1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBET01TdHJpbmcgbmFtZSk7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggYjE3NGIx
ZjI4ZmI2ZTE0ZjdjNzJmMTdiYjNkZGFiZWNjNDEzNWZiMC4uNjJmYWI3ODE0NjJjZTJlOWZhZmZm
YzBhNzYzODNmM2FlYjU4MTAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQ
b2xpY3kuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5o
IgpAQCAtNTAsNyArNTEsNiBAQAogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJT
dHlsZVRyZWVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN1YmZyYW1lTG9hZGVyLmgiCi0jaW5jbHVk
ZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1
cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYXRjaFNjb3BlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCmluZGV4IDYxZWU1OTRlNjAzNzc5MGVh
ZGZjOGFmZDFjMTVlY2M0NmYzOGM2YzkuLmQzYWVkYTkwMzU1MzhkOTZmMjJiZTFhNTQwZTczNjEw
MzllZWVjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCkBA
IC0zNiw3ICszNiw3IEBACiAgICAgLyogW1NhbWVPYmplY3RdICovIHJlYWRvbmx5IGF0dHJpYnV0
ZSBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gb3B0aW9uczsKICAgICBbQ0VSZWFjdGlvbnNdIGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBnZXR0ZXIgSFRNTE9wdGlvbkVsZW1lbnQ/
IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7IC8vIEZJWE1FOiBUaGUgc3BlYyBoYXMgdGhpcyBy
ZXR1cm5pbmcgRWxlbWVudD8uCi0gICAgSFRNTE9wdGlvbkVsZW1lbnQ/IG5hbWVkSXRlbShET01T
dHJpbmcgbmFtZSk7CisgICAgSFRNTE9wdGlvbkVsZW1lbnQ/IG5hbWVkSXRlbShbUmVxdWlyZXNF
eGlzdGluZ0F0b21TdHJpbmddIERPTVN0cmluZyBuYW1lKTsKICAgICBbQ0VSZWFjdGlvbnMsIE1h
eVRocm93RXhjZXB0aW9uXSB2b2lkIGFkZCgoSFRNTE9wdGlvbkVsZW1lbnQgb3IgSFRNTE9wdEdy
b3VwRWxlbWVudCkgZWxlbWVudCwgb3B0aW9uYWwgKEhUTUxFbGVtZW50IG9yIGxvbmcpPyBiZWZv
cmUgPSBudWxsKTsKICAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHJl
bW92ZSgpOyAvLyBDaGlsZE5vZGUgb3ZlcmxvYWQKICAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgcmVt
b3ZlKGxvbmcgaW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVDZWxsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVt
ZW50LmNwcAppbmRleCBmYmY4ZjczM2U0ODAwMDQ5MWVhZDg2MTY3M2I4NjMxOTIzZjk5MTg2Li5h
NjAwMzhmZTk0ZjI5OGIwOGVhNGFiNmVkYWNkN2QxNTU3YWE4NzU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcApAQCAtMTMxLDkgKzEzMSw5IEBAIHZv
aWQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21TCiAKIGNvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxl
Q2VsbEVsZW1lbnQ6OmFkZGl0aW9uYWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpIGNvbnN0
CiB7Ci0gICAgaWYgKFJlZlB0cjxIVE1MVGFibGVFbGVtZW50PiB0YWJsZSA9IGZpbmRQYXJlbnRU
YWJsZSgpKQorICAgIGlmIChhdXRvIHRhYmxlID0gZmluZFBhcmVudFRhYmxlKCkpCiAgICAgICAg
IHJldHVybiB0YWJsZS0+YWRkaXRpb25hbENlbGxTdHlsZSgpOwotICAgIHJldHVybiAwOworICAg
IHJldHVybiBudWxscHRyOwogfQogCiBib29sIEhUTUxUYWJsZUNlbGxFbGVtZW50Ojppc1VSTEF0
dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCmluZGV4IDcyOGI1ZjNkMmI1NTIzYjA0YjM5
OWYyY2M0YjU1YWE0ZjhiMWZjNzQuLmY0ZDQ0NzU4MTFlOGE0MGNhMzJhNjdiY2Y2YjIxNmMyNTNh
N2U3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcApA
QCAtOTIsNyArOTIsNyBAQCBjb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUNvbEVsZW1l
bnQ6OmFkZGl0aW9uYWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZQogewogICAgIGlmICghaGFz
VGFnTmFtZShjb2xncm91cFRhZykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChS
ZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gdGFibGUgPSBmaW5kUGFyZW50VGFibGUoKSkKKyAgICBp
ZiAoYXV0byB0YWJsZSA9IGZpbmRQYXJlbnRUYWJsZSgpKQogICAgICAgICByZXR1cm4gdGFibGUt
PmFkZGl0aW9uYWxHcm91cFN0eWxlKGZhbHNlKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IDc2N2EzZTM4YWY0ODJk
ZDkyYjE0OWM4ZjBlZThiODY2ZTdkNGI3YmYuLmE1ZjgwZmUwYzkxZjg4ZDk2MGFiN2ZlN2FmMDY4
YTQ4Yjg5NjQ1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcApA
QCAtNDczLDcgKzQ3Myw3IEBAIEhUTUxUYWJsZUVsZW1lbnQ6OkNlbGxCb3JkZXJzIEhUTUxUYWJs
ZUVsZW1lbnQ6OmNlbGxCb3JkZXJzKCkgY29uc3QKICAgICByZXR1cm4gTm9Cb3JkZXJzOwogfQog
Ci1SZWY8U3R5bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxs
U3R5bGUoKQorUmVmPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hh
cmVkQ2VsbFN0eWxlKCkgY29uc3QKIHsKICAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJv
cGVydGllczo6Y3JlYXRlKCk7CiAKQEAgLTUxNCw3ICs1MTQsNyBAQCBSZWY8U3R5bGVQcm9wZXJ0
aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQogICAgIHJldHVy
biBzdHlsZTsKIH0KIAotY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBIVE1MVGFibGVFbGVtZW50Ojph
ZGRpdGlvbmFsQ2VsbFN0eWxlKCkKK2NvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlRWxl
bWVudDo6YWRkaXRpb25hbENlbGxTdHlsZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NoYXJlZENl
bGxTdHlsZSkKICAgICAgICAgbV9zaGFyZWRDZWxsU3R5bGUgPSBjcmVhdGVTaGFyZWRDZWxsU3R5
bGUoKTsKQEAgLTUzOCwxMSArNTM4LDEwIEBAIHN0YXRpYyBTdHlsZVByb3BlcnRpZXMqIGxlYWtH
cm91cEJvcmRlclN0eWxlKGludCByb3dzKQogICAgIHJldHVybiAmc3R5bGUubGVha1JlZigpOwog
fQogCi1jb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxH
cm91cFN0eWxlKGJvb2wgcm93cykKK2NvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlRWxl
bWVudDo6YWRkaXRpb25hbEdyb3VwU3R5bGUoYm9vbCByb3dzKSBjb25zdAogewogICAgIGlmICht
X3J1bGVzQXR0ciAhPSBHcm91cHNSdWxlcykKLSAgICAgICAgcmV0dXJuIDA7Ci0KKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKHJvd3MpIHsKICAgICAgICAgc3RhdGljIFN0eWxlUHJv
cGVydGllcyogcm93Qm9yZGVyU3R5bGUgPSBsZWFrR3JvdXBCb3JkZXJTdHlsZSh0cnVlKTsKICAg
ICAgICAgcmV0dXJuIHJvd0JvcmRlclN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVs
ZW1lbnQuaAppbmRleCBiMzY1NDIwOWJkYTg1Nzg4NWM2OTMxYzgxYjRlZTNmOTg2ZjM4NDE2Li4z
NzU2ZGM2MTA3NWM0YmY3OTU3ZjkwNzNiNzg3NWE1MmYyZTU2YjFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUVsZW1lbnQuaApAQCAtNjUsOCArNjUsOCBAQCBwdWJsaWM6CiAgICAgY29u
c3QgQXRvbVN0cmluZyYgcnVsZXMoKSBjb25zdDsKICAgICBjb25zdCBBdG9tU3RyaW5nJiBzdW1t
YXJ5KCkgY29uc3Q7CiAKLSAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0aW9uYWxDZWxs
U3R5bGUoKTsKLSAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0aW9uYWxHcm91cFN0eWxl
KGJvb2wgcm93cyk7CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRpdGlvbmFsQ2VsbFN0
eWxlKCkgY29uc3Q7CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRpdGlvbmFsR3JvdXBT
dHlsZShib29sIHJvd3MpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIEhUTUxUYWJsZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CkBAIC04Niw3ICs4Niw3IEBAIHByaXZh
dGU6CiAKICAgICBDZWxsQm9yZGVycyBjZWxsQm9yZGVycygpIGNvbnN0OwogCi0gICAgUmVmPFN0
eWxlUHJvcGVydGllcz4gY3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCk7CisgICAgUmVmPFN0eWxlUHJv
cGVydGllcz4gY3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCkgY29uc3Q7CiAKICAgICBIVE1MVGFibGVT
ZWN0aW9uRWxlbWVudCogbGFzdEJvZHkoKSBjb25zdDsKIApAQCAtOTUsNyArOTUsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9mcmFtZUF0dHIgeyBmYWxzZSB9OyAvLyBJbXBsaWVzIGEgdGhpbiBi
b3JkZXIgd2lkdGggaWYgbm8gYm9yZGVyIGlzIHNldCBhbmQgdGhlbiBhIGNlcnRhaW4gc2V0IG9m
IHNvbGlkL2hpZGRlbiBib3JkZXJzIGJhc2VkIG9mZiB0aGUgdmFsdWUuCiAgICAgVGFibGVSdWxl
cyBtX3J1bGVzQXR0ciB7IFVuc2V0UnVsZXMgfTsgLy8gSW1wbGllcyBhIHRoaW4gYm9yZGVyIHdp
ZHRoLCBhIGNvbGxhcHNpbmcgYm9yZGVyIG1vZGVsLCBhbmQgYWxsIGJvcmRlcnMgb24gdGhlIHRh
YmxlIGJlY29taW5nIHNldCB0byBoaWRkZW4gKGlmIGZyYW1lL2JvcmRlciBhcmUgcHJlc2VudCwg
dG8gbm9uZSBvdGhlcndpc2UpLgogICAgIHVuc2lnbmVkIHNob3J0IG1fcGFkZGluZyB7IDEgfTsK
LSAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBtX3NoYXJlZENlbGxTdHlsZTsKKyAgICBtdXRh
YmxlIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IG1fc2hhcmVkQ2VsbFN0eWxlOwogfTsKIAogfSAv
L25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNw
cAppbmRleCAzNTg3ODAxNjIxMGZjYWFmZjYwOTBlNjk1Mzk0MTU1YzQ1NWFlYTdjLi4zNDliMDM1
MTJhOGVjNTQwNTI0MWJiYTZmYzNkNGE5ZmY3NDM2ZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcApAQCAtNCw3ICs0LDcgQEAKICAqICAgICAgICAg
ICAoQykgMTk5OCBXYWxkbyBCYXN0aWFuIChiYXN0aWFuQGtkZS5vcmcpCiAgKiAgICAgICAgICAg
KEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5
OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTg1LDEyICs4NSw5IEBAIHZvaWQgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZv
clByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROCiAgICAgICAgIEhUTUxFbGVt
ZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSwgdmFsdWUsIHN0
eWxlKTsKIH0KIAotUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IEhUTUxUYWJsZVBhcnRFbGVtZW50
OjpmaW5kUGFyZW50VGFibGUoKSBjb25zdAorUmVmUHRyPGNvbnN0IEhUTUxUYWJsZUVsZW1lbnQ+
IEhUTUxUYWJsZVBhcnRFbGVtZW50OjpmaW5kUGFyZW50VGFibGUoKSBjb25zdAogewotICAgIFJl
ZlB0cjxDb250YWluZXJOb2RlPiBwYXJlbnQgPSBwYXJlbnROb2RlKCk7Ci0gICAgd2hpbGUgKHBh
cmVudCAmJiAhaXM8SFRNTFRhYmxlRWxlbWVudD4oKnBhcmVudCkpCi0gICAgICAgIHBhcmVudCA9
IHBhcmVudC0+cGFyZW50Tm9kZSgpOwotICAgIHJldHVybiBkb3duY2FzdDxIVE1MVGFibGVFbGVt
ZW50PihwYXJlbnQuZ2V0KCkpOworICAgIHJldHVybiBhbmNlc3RvcnNPZlR5cGU8SFRNTFRhYmxl
RWxlbWVudD4oKnRoaXMpLmZpcnN0KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlUGFydEVsZW1lbnQuaAppbmRleCBkM2JjZjUwYmFlMjFjMzU4Y2RlMjNmMzM2M2U1YzY5
MmQ1NmYxMWU2Li4wNGY5NDcxYmFiYTI4NzdmNzU0NTQwYzliMWE1ODA5NzI3YmViNTcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5oCkBAIC00LDcgKzQsNyBA
QAogICogICAgICAgICAgIChDKSAxOTk4IFdhbGRvIEJhc3RpYW4gKGJhc3RpYW5Aa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAg
ICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDIsNyArNDIsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50
YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmLCBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8SFRNTFRhYmxl
RWxlbWVudD4gZmluZFBhcmVudFRhYmxlKCkgY29uc3Q7CisgICAgUmVmUHRyPGNvbnN0IEhUTUxU
YWJsZUVsZW1lbnQ+IGZpbmRQYXJlbnRUYWJsZSgpIGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0
aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50LmNwcAppbmRleCBlNTE2YTgxODRkMWYwZjgzNzNjZDIxYTRhN2E0MDkzY2Y5YmNmMmYxLi40
OTk5YzE1OGU2YmFmOTg4MmJhNWUwNWQyNmYzZGRhMzQxOGJjM2RhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcApAQCAtMjYsNyArMjYsNiBA
QAogI2luY2x1ZGUgIkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCiAKICNpbmNsdWRlICJHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVJvd0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCkBAIC05NSw3ICs5NCw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpkZWxldGVSb3coaW50IGluZGV4KQog
aW50IEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpudW1Sb3dzKCkgY29uc3QKIHsKICAgICBhdXRv
IHJvd3MgPSBjaGlsZHJlbk9mVHlwZTxIVE1MVGFibGVSb3dFbGVtZW50PigqdGhpcyk7Ci0gICAg
cmV0dXJuIHN0ZDo6ZGlzdGFuY2Uocm93cy5iZWdpbigpLCByb3dzLmVuZCgpKTsKKyAgICByZXR1
cm4gc3RkOjpkaXN0YW5jZShyb3dzLmJlZ2luKCksIHsgfSk7CiB9CiAKIFJlZjxIVE1MQ29sbGVj
dGlvbj4gSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnJvd3MoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCA5OWM1NmViZjVl
MDZkNzY2YmUyNzBiYWMzYWEyOTYyYmI1OWQzNDgwLi5hN2JhNDE3ZDdkNTE3MTRjMGU1NTJjMGQ1
OWEwMTFiNTE1MWIwYzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykg
MTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFu
dHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERp
cmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA2
IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC03NjQs
MzQgKzc2NCwyNCBAQCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCogZW5jbG9zaW5nVGV4dEZv
cm1Db250cm9sKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKICAgICByZXR1cm4gYW5jZXN0b3Ig
JiYgYW5jZXN0b3ItPmlzVGV4dEZpZWxkKCkgPyBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudD4oYW5jZXN0b3IuZ2V0KCkpIDogbnVsbHB0cjsKIH0KIAotc3RhdGljIGNvbnN0IEVs
ZW1lbnQqIHBhcmVudEhUTUxFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAg
d2hpbGUgKGVsZW1lbnQpIHsKLSAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1l
bnQoKTsKLSAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpKQot
ICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCiBT
dHJpbmcgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpcmVjdGlvbkZvckZvcm1EYXRhKCkg
Y29uc3QKIHsKLSAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlzOyBlbGVtZW50
OyBlbGVtZW50ID0gcGFyZW50SFRNTEVsZW1lbnQoZWxlbWVudCkpIHsKLSAgICAgICAgY29uc3Qg
QXRvbVN0cmluZyYgZGlyQXR0cmlidXRlVmFsdWUgPSBlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKGRpckF0dHIpOwotICAgICAgICBpZiAoZGlyQXR0cmlidXRlVmFsdWUu
aXNOdWxsKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyQXR0cmlidXRlVmFsdWUsICJydGwiKSB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwgImx0ciIpKQotICAgICAg
ICAgICAgcmV0dXJuIGRpckF0dHJpYnV0ZVZhbHVlOwotCi0gICAgICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwgImF1dG8iKSkgewotICAgICAg
ICAgICAgYm9vbCBpc0F1dG87Ci0gICAgICAgICAgICBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rp
b24gPSBzdGF0aWNfY2FzdDxjb25zdCBIVE1MRWxlbWVudCo+KGVsZW1lbnQpLT5kaXJlY3Rpb25h
bGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShpc0F1dG8pOwotICAgICAgICAgICAgcmV0dXJuIHRl
eHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6UlRMID8gInJ0bCIgOiAibHRyIjsKKyAgICBh
dXRvIGRpcmVjdGlvbiA9IFt0aGlzXSB7CisgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGxp
bmVhZ2VPZlR5cGU8SFRNTEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICAgICAgYXV0byYgdmFs
dWUgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGlyQXR0cik7Cisg
ICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJydGwi
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gVGV4dERpcmVjdGlvbjo6UlRMOworICAgICAgICAg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAibHRyIikpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKKyAgICAgICAgICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImF1dG8iKSkgeworICAgICAgICAg
ICAgICAgIGJvb2wgaXNBdXRvOworICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmRpcmVj
dGlvbmFsaXR5SWZoYXNEaXJBdXRvQXR0cmlidXRlKGlzQXV0byk7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICB9CisgICAgICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpMVFI7CisgICAg
fSgpOwogCi0gICAgcmV0dXJuICJsdHIiOworICAgIHJldHVybiBkaXJlY3Rpb24gPT0gVGV4dERp
cmVjdGlvbjo6TFRSID8gImx0ciJfcyA6ICJydGwiX3M7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+
IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRNYXhMZW5ndGgoaW50IG1heExlbmd0aCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAKaW5kZXggZDQxMDE3ODZmYjAwNWYy
Njg3YjE5MGFmMzczMWJjZDU1N2QyMGUwYS4uOTE5YTI4ZWQ2MDkzZmRiZWIxMWQyOTE2MDQ2NDI4
MTZmMWVlMTFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAKQEAgLTIs
NyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykK
LSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNywgMjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI0LDkgKzI0LDkgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJMYWJlbHNOb2RlTGlzdC5oIgogCi0jaW5jbHVkZSAiRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxMYWJlbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKKyNpbmNsdWRlICJMYWJlbGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVE
YXRhLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzYsMTEgKzM2
LDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChMYWJlbHNOb2RlTGlzdCk7CiAKLUxhYmVsc05vZGVMaXN0OjpMYWJlbHNOb2RlTGlz
dChMYWJlbGFibGVFbGVtZW50JiBmb3JOb2RlKQotICAgIDogQ2FjaGVkTGl2ZU5vZGVMaXN0KGZv
ck5vZGUsIEludmFsaWRhdGVPbkZvclR5cGVBdHRyQ2hhbmdlKQorTGFiZWxzTm9kZUxpc3Q6Okxh
YmVsc05vZGVMaXN0KExhYmVsYWJsZUVsZW1lbnQmIGVsZW1lbnQpCisgICAgOiBDYWNoZWRMaXZl
Tm9kZUxpc3QoZWxlbWVudCwgSW52YWxpZGF0ZU9uRm9yVHlwZUF0dHJDaGFuZ2UpCiB7CiB9CiAK
K1JlZjxMYWJlbHNOb2RlTGlzdD4gTGFiZWxzTm9kZUxpc3Q6OmNyZWF0ZShMYWJlbGFibGVFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBBdG9tU3RyaW5nJikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBMYWJlbHNOb2RlTGlzdChlbGVtZW50KSk7Cit9CisKIExhYmVsc05vZGVMaXN0Ojp+TGFi
ZWxzTm9kZUxpc3QoKQogewogICAgIG93bmVyTm9kZSgpLm5vZGVMaXN0cygpLT5yZW1vdmVDYWNo
ZVdpdGhBdG9tTmFtZSgqdGhpcywgc3RhckF0b20oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05v
ZGVMaXN0LmgKaW5kZXggZjUzOWQ3OWIwY2FhMDUwMDMwNDg4OGRjNDYxNzcyYWY3ZGIxNjI4Mi4u
ODBkOTc3ZmFjZDc2MmRhYThmMzA4YWYwZGIzYjY1MGVhY2M3M2U4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTGFiZWxzTm9kZUxpc3QuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5
OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRp
IEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsg
TXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxMCBOb2tpYSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjQs
MjUgKzI0LDIzIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTGFiZWxhYmxlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkxpdmVOb2RlTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIExhYmVsYWJsZUVsZW1lbnQ7CisKIGNsYXNzIExhYmVsc05vZGVMaXN0IGZpbmFsIDog
cHVibGljIENhY2hlZExpdmVOb2RlTGlzdDxMYWJlbHNOb2RlTGlzdD4gewogICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoTGFiZWxzTm9kZUxpc3QpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
TGFiZWxzTm9kZUxpc3Q+IGNyZWF0ZShMYWJlbGFibGVFbGVtZW50JiBmb3JOb2RlLCBjb25zdCBB
dG9tU3RyaW5nJikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExhYmVsc05v
ZGVMaXN0KGZvck5vZGUpKTsKLSAgICB9Ci0gICAgfkxhYmVsc05vZGVMaXN0KCk7CisgICAgc3Rh
dGljIFJlZjxMYWJlbHNOb2RlTGlzdD4gY3JlYXRlKExhYmVsYWJsZUVsZW1lbnQmLCBjb25zdCBB
dG9tU3RyaW5nJik7CisgICAgdmlydHVhbCB+TGFiZWxzTm9kZUxpc3QoKTsKIAotICAgIGJvb2wg
ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNSb290
ZWRBdERvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wg
ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNSb290ZWRB
dERvY3VtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAg
IGV4cGxpY2l0IExhYmVsc05vZGVMaXN0KExhYmVsYWJsZUVsZW1lbnQmIGZvck5vZGUpOworICAg
IGV4cGxpY2l0IExhYmVsc05vZGVMaXN0KExhYmVsYWJsZUVsZW1lbnQmKTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCmluZGV4
IDA0ZGU3NTEzY2FjNDgyYmY3NjBiNGU0YzZmZmEwMmVjMmU1YjY3ZjcuLjI0ZTQwYzJjNmQzMzEx
NDkzYjYxN2M2NWNkZjJmNThhODUxMjIyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3Vt
ZW50LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIkN1c3RvbUhlYWRlckZpZWxkcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgi
CisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTUxLDcgKzUy
LDYgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJUeXBl
ZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUmFkaW9Ob2RlTGlzdC5jcHAKaW5kZXggOTQ3MGVhMjlhYjU3NzQ4ODBjNjNiM2JmNDc0
ZWQ4OWJmZjdiYjM0Ni4uZGQyYzgxZTQ0YjNjYWYxOWNjMmNiZWM0YjQ2NjczNThmY2EyYzU5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoYykgMjAxMiBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNyArMjks
NiBAQAogCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0
RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPYmplY3RF
bGVtZW50LmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KQEAgLTQzLDE2ICs0MiwyMSBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoUmFkaW9Ob2RlTGlzdCk7CiBSYWRpb05vZGVMaXN0OjpSYWRpb05vZGVMaXN0KENvbnRh
aW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogICAgIDogQ2FjaGVk
TGl2ZU5vZGVMaXN0KHJvb3ROb2RlLCBJbnZhbGlkYXRlRm9yRm9ybUNvbnRyb2xzKQogICAgICwg
bV9uYW1lKG5hbWUpCi0gICAgLCBtX2lzUm9vdGVkQXREb2N1bWVudChpczxIVE1MRm9ybUVsZW1l
bnQ+KG93bmVyTm9kZSgpKSkKKyAgICAsIG1faXNSb290ZWRBdERvY3VtZW50KGlzPEhUTUxGb3Jt
RWxlbWVudD4ocm9vdE5vZGUpKQogewogfQogCitSZWY8UmFkaW9Ob2RlTGlzdD4gUmFkaW9Ob2Rl
TGlzdDo6Y3JlYXRlKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBu
YW1lKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJhZGlvTm9kZUxpc3Qocm9vdE5vZGUs
IG5hbWUpKTsKK30KKwogUmFkaW9Ob2RlTGlzdDo6flJhZGlvTm9kZUxpc3QoKQogewogICAgIG93
bmVyTm9kZSgpLm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZVdpdGhBdG9tTmFtZSgqdGhpcywgbV9u
YW1lKTsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gdG9SYWRp
b0J1dHRvbklucHV0RWxlbWVudChIVE1MRWxlbWVudCYgZWxlbWVudCkKK3N0YXRpYyBSZWZQdHI8
SFRNTElucHV0RWxlbWVudD4gbm9uRW1wdHlSYWRpb0J1dHRvbihFbGVtZW50JiBlbGVtZW50KQog
ewogICAgIGlmICghaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtNjcsMTAgKzcxLDEwIEBAIFN0cmluZyBSYWRpb05vZGVMaXN0Ojp2YWx1
ZSgpIGNvbnN0CiB7CiAgICAgYXV0byBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgYXV0byBpbnB1dEVs
ZW1lbnQgPSB0b1JhZGlvQnV0dG9uSW5wdXRFbGVtZW50KCppdGVtKGkpKTsKLSAgICAgICAgaWYg
KCFpbnB1dEVsZW1lbnQgfHwgIWlucHV0RWxlbWVudC0+Y2hlY2tlZCgpKQotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIHJldHVybiBpbnB1dEVsZW1lbnQtPnZhbHVlKCk7CisgICAgICAg
IGlmIChhdXRvIGJ1dHRvbiA9IG5vbkVtcHR5UmFkaW9CdXR0b24oKml0ZW0oaSkpKSB7CisgICAg
ICAgICAgICBpZiAoYnV0dG9uLT5jaGVja2VkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGJ1
dHRvbi0+dmFsdWUoKTsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gU3RyaW5nKCk7CiB9
CkBAIC03OSw0MCArODMsMzQgQEAgdm9pZCBSYWRpb05vZGVMaXN0OjpzZXRWYWx1ZShjb25zdCBT
dHJpbmcmIHZhbHVlKQogewogICAgIGF1dG8gbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGF1dG8gaW5w
dXRFbGVtZW50ID0gdG9SYWRpb0J1dHRvbklucHV0RWxlbWVudCgqaXRlbShpKSk7Ci0gICAgICAg
IGlmICghaW5wdXRFbGVtZW50IHx8IGlucHV0RWxlbWVudC0+dmFsdWUoKSAhPSB2YWx1ZSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpbnB1dEVsZW1lbnQtPnNldENoZWNrZWQodHJ1
ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGF1dG8gYnV0dG9uID0gbm9uRW1wdHlS
YWRpb0J1dHRvbigqaXRlbShpKSkpIHsKKyAgICAgICAgICAgIGlmIChidXR0b24tPnZhbHVlKCkg
PT0gdmFsdWUpIHsKKyAgICAgICAgICAgICAgICBidXR0b24tPnNldENoZWNrZWQodHJ1ZSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQog
fQogCi1ib29sIFJhZGlvTm9kZUxpc3Q6OmNoZWNrRWxlbWVudE1hdGNoZXNSYWRpb05vZGVMaXN0
RmlsdGVyKGNvbnN0IEVsZW1lbnQmIHRlc3RFbGVtZW50KSBjb25zdAorYm9vbCBSYWRpb05vZGVM
aXN0OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JiBlbGVtZW50KSBjb25zdAogewotICAgIEFTU0VS
VChpczxIVE1MT2JqZWN0RWxlbWVudD4odGVzdEVsZW1lbnQpIHx8IGlzPEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ+KHRlc3RFbGVtZW50KSk7CisgICAgaWYgKCFpczxIVE1MT2JqZWN0RWxlbWVudD4o
ZWxlbWVudCkgJiYgIWlzPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkg
JiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkuaXNJbWFnZUJ1dHRvbigpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoaXM8SFRNTEZvcm1FbGVtZW50Pihvd25l
ck5vZGUoKSkpIHsKLSAgICAgICAgUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gZm9ybUVsZW1lbnQ7
Ci0gICAgICAgIGlmICh0ZXN0RWxlbWVudC5oYXNUYWdOYW1lKG9iamVjdFRhZykpCi0gICAgICAg
ICAgICBmb3JtRWxlbWVudCA9IGRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50Pih0ZXN0RWxlbWVu
dCkuZm9ybSgpOworICAgICAgICBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBmb3JtOworICAgICAg
ICBpZiAoaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICAgICAgZm9ybSA9
IGRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KS5mb3JtKCk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGZvcm1FbGVtZW50ID0gZG93bmNhc3Q8SFRNTEZvcm1Db250cm9sRWxl
bWVudD4odGVzdEVsZW1lbnQpLmZvcm0oKTsKLSAgICAgICAgaWYgKCFmb3JtRWxlbWVudCB8fCBm
b3JtRWxlbWVudCAhPSAmb3duZXJOb2RlKCkpCisgICAgICAgICAgICBmb3JtID0gZG93bmNhc3Q8
SFRNTEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkuZm9ybSgpOworICAgICAgICBpZiAoIWZv
cm0gfHwgZm9ybSAhPSAmb3duZXJOb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgcmV0dXJuIHRlc3RFbGVtZW50LmdldElkQXR0cmlidXRlKCkgPT0gbV9uYW1l
IHx8IHRlc3RFbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKSA9PSBtX25hbWU7CisgICAgcmV0dXJu
IGVsZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKSA9PSBtX25hbWUgfHwgZWxlbWVudC5nZXROYW1lQXR0
cmlidXRlKCkgPT0gbV9uYW1lOwogfQogCi1ib29sIFJhZGlvTm9kZUxpc3Q6OmVsZW1lbnRNYXRj
aGVzKEVsZW1lbnQmIHRlc3RFbGVtZW50KSBjb25zdAotewotICAgIGlmICghaXM8SFRNTE9iamVj
dEVsZW1lbnQ+KHRlc3RFbGVtZW50KSAmJiAhaXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4odGVz
dEVsZW1lbnQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaXM8SFRNTElucHV0
RWxlbWVudD4odGVzdEVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KHRlc3RF
bGVtZW50KS5pc0ltYWdlQnV0dG9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJl
dHVybiBjaGVja0VsZW1lbnRNYXRjaGVzUmFkaW9Ob2RlTGlzdEZpbHRlcih0ZXN0RWxlbWVudCk7
Ci19Ci0KLX0gLy8gbmFtc3BhY2UKLQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1JhZGlvTm9kZUxpc3QuaAppbmRleCBhMzAyNzYzMzBjN2ZkYjZjY2Y2MmIyMThlN2IxNzJk
MDIzZDhhNmEzLi42NDQ3N2M4MTI1OGZiMWI3MTdmM2RkNjJmOWI1ZDgzYmFhZThmM2QyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKGMpIDIwMTIgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDQxICsyNiwyNiBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGl2
ZU5vZGVMaXN0LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJhZGlvTm9kZUxpc3QgZmluYWwgOiBwdWJsaWMgQ2FjaGVk
TGl2ZU5vZGVMaXN0PFJhZGlvTm9kZUxpc3Q+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KFJhZGlvTm9kZUxpc3QpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmFkaW9Ob2RlTGlzdD4g
Y3JlYXRlKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmFkaW9Ob2RlTGlzdChyb290Tm9k
ZSwgbmFtZSkpOwotICAgIH0KLQorICAgIHN0YXRpYyBSZWY8UmFkaW9Ob2RlTGlzdD4gY3JlYXRl
KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKTsKICAgICB2
aXJ0dWFsIH5SYWRpb05vZGVMaXN0KCk7CiAKLSAgICBIVE1MRWxlbWVudCogaXRlbSh1bnNpZ25l
ZCBvZmZzZXQpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgU3RyaW5nIHZhbHVlKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKTsKLQotICAgIGJvb2wgZWxlbWVudE1hdGNo
ZXMoRWxlbWVudCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNSb290ZWRBdERvY3VtZW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1Jvb3RlZEF0RG9jdW1lbnQ7IH0KKyAgICBi
b29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAg
ICBSYWRpb05vZGVMaXN0KENvbnRhaW5lck5vZGUmLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKTsK
LSAgICBib29sIGNoZWNrRWxlbWVudE1hdGNoZXNSYWRpb05vZGVMaXN0RmlsdGVyKGNvbnN0IEVs
ZW1lbnQmKSBjb25zdDsKKyAgICBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faXNSb290ZWRBdERvY3VtZW50OyB9CiAKICAgICBBdG9tU3RyaW5nIG1fbmFt
ZTsKICAgICBib29sIG1faXNSb290ZWRBdERvY3VtZW50OwogfTsKIAotaW5saW5lIEhUTUxFbGVt
ZW50KiBSYWRpb05vZGVMaXN0OjppdGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KENhY2hlZExpdmVOb2RlTGlzdDxSYWRpb05vZGVM
aXN0Pjo6aXRlbShvZmZzZXQpKTsKLX0KLQotfSAvLyBuYW1lcHNhY2UgV2ViQ29yZQorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05v
ZGVMaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5pZGwKaW5kZXgg
MjM0ZDQ1NTJmNjI0OTM0NjFmMDZmYTFkNTI2M2IzODVhNjJhNjk5MS4uZjIxNzIwODk1MzRhYmUz
ZWFkMTBhNDhkMTM2MDYxZDc0YWM1ZmJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9SYWRpb05vZGVMaXN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxp
c3QuaWRsCkBAIC0yNyw2ICsyNyw0IEBACiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCiBdIGlu
dGVyZmFjZSBSYWRpb05vZGVMaXN0IDogTm9kZUxpc3QgewogICAgIGF0dHJpYnV0ZSBET01TdHJp
bmcgdmFsdWU7Ci0KLSAgICBnZXR0ZXIgSFRNTEVsZW1lbnQgKHVuc2lnbmVkIGxvbmcgaW5kZXgp
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCBm
ZGI4ZTMwZmZlYzliYjA5YWNlNmIyOWVjNmEzMDFhMzkwZWVkNTgxLi4wMmVmZjQ4ZjM4OGYxODBk
YmE5NGExMTgwY2U1MWMyMjRhMjFjY2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0Rmll
bGRJbnB1dFR5cGUuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQpAQCAtODY3LDYgKzg2Nyw4IEBAIEludFJlY3QgVGV4dEZpZWxk
SW5wdXRUeXBlOjplbGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpIGNvbnN0CiAKIFZl
Y3RvcjxTdHJpbmc+IFRleHRGaWVsZElucHV0VHlwZTo6c3VnZ2VzdGlvbnMoKQogeworICAgIC8v
IEZJWE1FOiBTdWdnZXN0aW9ucyBhcmUgInR5cGluZyBjb21wbGV0aW9ucyIgYW5kIHNvIHNob3Vs
ZCBwcm9iYWJseSB1c2UgdGhlIGZpbmRQbGFpblRleHQgYWxnb3JpdGhtIHJhdGhlciB0aGFuIHRo
ZSBzaW1wbGlzdGljICJpZ25vcmluZyBBU0NJSSBjYXNlIiBydWxlcy4KKwogICAgIFZlY3RvcjxT
dHJpbmc+IHN1Z2dlc3Rpb25zOwogICAgIFZlY3RvcjxTdHJpbmc+IG1hdGNoZXNDb250YWluaW5n
VmFsdWU7CiAKQEAgLTg3NiwxMiArODc4LDExIEBAIFZlY3RvcjxTdHJpbmc+IFRleHRGaWVsZElu
cHV0VHlwZTo6c3VnZ2VzdGlvbnMoKQogICAgICAgICByZXR1cm4gbV9jYWNoZWRTdWdnZXN0aW9u
cy5zZWNvbmQ7CiAKICAgICBpZiAoYXV0byBkYXRhTGlzdCA9IGVsZW1lbnQoKS0+ZGF0YUxpc3Qo
KSkgewotICAgICAgICBSZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0
aW9ucygpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBhdXRvKiBvcHRpb24gPSBkb3du
Y2FzdDxIVE1MT3B0aW9uRWxlbWVudD4ob3B0aW9ucy0+aXRlbShpKSk7ICsraSkgewotICAgICAg
ICAgICAgaWYgKCFlbGVtZW50KCktPmlzVmFsaWRWYWx1ZShvcHRpb24tPnZhbHVlKCkpKQorICAg
ICAgICBmb3IgKGF1dG8mIG9wdGlvbiA6IGRhdGFMaXN0LT5zdWdnZXN0aW9ucygpKSB7CisgICAg
ICAgICAgICBTdHJpbmcgdmFsdWUgPSBvcHRpb24udmFsdWUoKTsKKyAgICAgICAgICAgIGlmICgh
ZWxlbWVudCgpLT5pc1ZhbGlkVmFsdWUodmFsdWUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBzYW5pdGl6ZVZhbHVlKG9wdGlvbi0+dmFs
dWUoKSk7CisgICAgICAgICAgICB2YWx1ZSA9IHNhbml0aXplVmFsdWUodmFsdWUpOwogICAgICAg
ICAgICAgaWYgKGVsZW1lbnRWYWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgc3VnZ2Vz
dGlvbnMuYXBwZW5kKHZhbHVlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLnN0YXJ0c1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZShlbGVtZW50VmFsdWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IGU1ZGYzYzNiNzg2NmVhOWZkNDNkYWNjZjRhNDYy
MmJkYjY0ODk0MjIuLmZjZTU5MjZhYjVlZmE1ZGE1Y2Q0NDc0ZDE2ZWVjMmQ4OTI3MGViMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTM4LDcgKzM4
LDYgQEAKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRE9NUmVjdC5o
IgogI2luY2x1ZGUgIkV2ZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNs
dWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGUxZTIz
YTc2YTRkOTQ2ZjllYTI3ZjYyNmEyMmIyY2M3NzhhOTRkMzEuLjQ0ODNkZjcwMDNmYjFlZDU0OTZk
Y2FiYjIzMDNlYWE1NTBjN2RmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0z
MiwxMCArMzIsOCBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCIK
ICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNs
dWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgor
I2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2lu
Y2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzAsNyAr
NjgsNyBAQCBFeGNlcHRpb25PcjxWZWN0b3I8UmVmPE5vZGU+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpnZXRFbGVtZW50c0J5QwogCiAgICAgVmVjdG9yPFJlZjxOb2RlPj4g
bm9kZXM7CiAKLSAgICBmb3IgKEVsZW1lbnQmIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMo
aXM8Q29udGFpbmVyTm9kZT4oY29udGFpbmVyKSA/IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCpj
b250YWluZXIpIDogZG9jdW1lbnQpKSB7CisgICAgZm9yIChFbGVtZW50JiBlbGVtZW50IDogZGVz
Y2VuZGFudHNPZlR5cGU8RWxlbWVudD4oaXM8Q29udGFpbmVyTm9kZT4oY29udGFpbmVyKSA/IGRv
d25jYXN0PENvbnRhaW5lck5vZGU+KCpjb250YWluZXIpIDogZG9jdW1lbnQpKSB7CiAgICAgICAg
IGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShl
bGVtZW50KSkgewogICAgICAgICAgICAgaWYgKGF4T2JqZWN0LT5jb21wdXRlZFJvbGVTdHJpbmco
KSA9PSByb2xlKQogICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChlbGVtZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAKaW5kZXggMjkzMGI0NWY4ZjIwNzUxZTg1NmNkYTNlMDUxODlhYTQ0NGUxODU1MS4uYWNlNWY5
YWM1M2NiZTI2ZmQzYzRkOWQ0ZjIyNDk0ZmQ4MDY1YTU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwOSwy
MCArNTA5LDE4IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JO
b2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vCiAgICAgICAgIC8vIEluaGVyaXRl
ZCBzdHlsZXMuCiAgICAgICAgIGlmICghaW5jbHVkZUluaGVyaXRlZCB8fCAqaW5jbHVkZUluaGVy
aXRlZCkgewogICAgICAgICAgICAgYXV0byBlbnRyaWVzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+OjpjcmVhdGUoKTsKLSAgICAg
ICAgICAgIEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7
Ci0gICAgICAgICAgICB3aGlsZSAocGFyZW50RWxlbWVudCkgewotICAgICAgICAgICAgICAgIGF1
dG8mIHBhcmVudFN0eWxlUmVzb2x2ZXIgPSBwYXJlbnRFbGVtZW50LT5zdHlsZVJlc29sdmVyKCk7
Ci0gICAgICAgICAgICAgICAgYXV0byBwYXJlbnRNYXRjaGVkUnVsZXMgPSBwYXJlbnRTdHlsZVJl
c29sdmVyLnN0eWxlUnVsZXNGb3JFbGVtZW50KHBhcmVudEVsZW1lbnQsIFN0eWxlOjpSZXNvbHZl
cjo6QWxsQ1NTUnVsZXMpOworICAgICAgICAgICAgZm9yIChhdXRvJiBhbmNlc3RvciA6IGFuY2Vz
dG9yc09mVHlwZTxFbGVtZW50PigqZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBw
YXJlbnRTdHlsZVJlc29sdmVyID0gYW5jZXN0b3Iuc3R5bGVSZXNvbHZlcigpOworICAgICAgICAg
ICAgICAgIGF1dG8gcGFyZW50TWF0Y2hlZFJ1bGVzID0gcGFyZW50U3R5bGVSZXNvbHZlci5zdHls
ZVJ1bGVzRm9yRWxlbWVudCgmYW5jZXN0b3IsIFN0eWxlOjpSZXNvbHZlcjo6QWxsQ1NTUnVsZXMp
OwogICAgICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkluaGVyaXRlZFN0eWxlRW50cnk6OmNyZWF0ZSgpCi0gICAgICAgICAgICAgICAgICAgIC5zZXRN
YXRjaGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChwYXJlbnRNYXRjaGVk
UnVsZXMsIHN0eWxlUmVzb2x2ZXIsICpwYXJlbnRFbGVtZW50LCBQc2V1ZG9JZDo6Tm9uZSkpCisg
ICAgICAgICAgICAgICAgICAgIC5zZXRNYXRjaGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZvck1hdGNo
ZWRSdWxlTGlzdChwYXJlbnRNYXRjaGVkUnVsZXMsIHN0eWxlUmVzb2x2ZXIsIGFuY2VzdG9yLCBQ
c2V1ZG9JZDo6Tm9uZSkpCiAgICAgICAgICAgICAgICAgICAgIC5yZWxlYXNlKCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKGlzPFN0eWxlZEVsZW1lbnQ+KCpwYXJlbnRFbGVtZW50KSAmJiBkb3duY2Fz
dDxTdHlsZWRFbGVtZW50PigqcGFyZW50RWxlbWVudCkuY3Nzb21TdHlsZSgpLmxlbmd0aCgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlU2hlZXQgPSBhc0luc3BlY3RvclN0eWxl
U2hlZXQoZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKnBhcmVudEVsZW1lbnQpKTsKKyAgICAgICAg
ICAgICAgICBpZiAoaXM8U3R5bGVkRWxlbWVudD4oYW5jZXN0b3IpICYmIGRvd25jYXN0PFN0eWxl
ZEVsZW1lbnQ+KGFuY2VzdG9yKS5jc3NvbVN0eWxlKCkubGVuZ3RoKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byYgc3R5bGVTaGVldCA9IGFzSW5zcGVjdG9yU3R5bGVTaGVldChkb3duY2Fz
dDxTdHlsZWRFbGVtZW50PihhbmNlc3RvcikpOwogICAgICAgICAgICAgICAgICAgICBlbnRyeS0+
c2V0SW5saW5lU3R5bGUoc3R5bGVTaGVldC5idWlsZE9iamVjdEZvclN0eWxlKHN0eWxlU2hlZXQu
c3R5bGVGb3JJZChJbnNwZWN0b3JDU1NJZChzdHlsZVNoZWV0LmlkKCksIDApKSkpOwogICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGVudHJpZXMtPmFkZEl0ZW0oV1RGTW92ZShl
bnRyeSkpOwotICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQgPSBwYXJlbnRFbGVtZW50LT5w
YXJlbnRFbGVtZW50KCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGluaGVyaXRlZEVu
dHJpZXMgPSBXVEZNb3ZlKGVudHJpZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAwZjQ2YTMwMzNhZWY0MDA3
ZjZlYjgzN2E2MTA1ZjA1YTBjNTkwNjdmLi5kMmNhNWJiZTEwOWFhYWQxODJiYWUxODVjNGQ1MmQ4
YWFlY2RhODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwOSBKb3NlcGggUGVjb3Jhcm8KICAqCkBAIC0xMTE0LDcgKzExMTQsNyBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjppbnNwZWN0KE5vZGUqIGluc3BlY3RlZE5vZGUpCiAgICAg
UmVmUHRyPE5vZGU+IG5vZGUgPSBpbnNwZWN0ZWROb2RlOwogICAgIHNldFNlYXJjaGluZ0Zvck5v
ZGUoaWdub3JlZCwgZmFsc2UsIG51bGxwdHIsIGZhbHNlKTsKIAotICAgIGlmIChub2RlLT5ub2Rl
VHlwZSgpICE9IE5vZGU6OkVMRU1FTlRfTk9ERSAmJiBub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6
OkRPQ1VNRU5UX05PREUpCisgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgIW5vZGUt
PmlzRG9jdW1lbnROb2RlKCkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAg
ICAgbV9ub2RlVG9Gb2N1cyA9IG5vZGU7CiAKQEAgLTExNTksNyArMTE1OSw3IEBAIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1
bHQmIHJlc3VsdCwgdW5zCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRNb3VzZWRP
dmVyTm9kZSgpCiB7CiAgICAgTm9kZSogbm9kZSA9IG1fbW91c2VkT3Zlck5vZGUuZ2V0KCk7Ci0g
ICAgd2hpbGUgKG5vZGUgJiYgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpURVhUX05PREUpCisg
ICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNUZXh0Tm9kZSgpKQogICAgICAgICBub2RlID0gbm9kZS0+
cGFyZW50Tm9kZSgpOwogICAgIGlmIChub2RlICYmIG1faW5zcGVjdE1vZGVIaWdobGlnaHRDb25m
aWcpCiAgICAgICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0Tm9kZShub2RlLCAqbV9pbnNwZWN0TW9k
ZUhpZ2hsaWdodENvbmZpZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAKaW5kZXggM2Y0Njk5Y2Y4MzI5OGYwNGUyNzRhZTAwZWY5NWE1NTQ3NWE2NWYzZC4uMDZm
NDZkNGE1NjlkMGZhMGRjMTdiZDY1OWI2NTg4MTU1NzE2YTZhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAjaW5jbHVk
ZSAiQ2FjaGVkRm9udENsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fs
a2VyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJFbGVt
ZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgiCiAjaW5j
bHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIu
aCIKLSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJXT0ZGRmlsZUZvcm1hdC5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IDAxMmQyZjMxZmUx
Y2U5OWE3N2U4NTVmYzZlY2VmYjg2ZjA3NmRlYjYuLmM4ZjliYTUzMDA1ZjhkN2JjOTMwZDA5NmQ1
ZjIxM2M5MzgyNWE5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lmIEVOQUJMRShTVkdfRk9OVFMpCiAK
KyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24u
aCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQu
aCIKQEAgLTM3LDcgKzM4LDYgQEAKICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIK
ICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVy
LmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGRhZDAwMmIxOTY4YWQwYjQyNmZi
MTJiN2E2NWEwZjM3Mzg2YmU4YmIuLjA1OWY0NWQ2MjlmNTg4NjViNDA3Y2NiZTFhNzJhZDJlZGY1
M2Q2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTI2MCw2
ICsxMjYwLDE1IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmJlZ2luRHJhZyhEcmFnSXRlbSBkcmFn
SXRlbSwgRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRQb2ludCYKICAgICBjbGllbnQoKS5iZWdpbkRy
YWcoV1RGTW92ZShkcmFnSXRlbSksIGZyYW1lLCBtb3VzZURvd25Qb2ludEluUm9vdFZpZXdDb29y
ZGluYXRlcywgbW91c2VEcmFnZ2VkUG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMsIGRhdGFUcmFu
c2ZlciwgZHJhZ1NvdXJjZUFjdGlvbik7CiB9CiAKK3N0YXRpYyBSZWZQdHI8RWxlbWVudD4gY29u
dGFpbmluZ0xpbmtFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgZm9yIChhdXRvJiBj
dXJyZW50RWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAg
ICAgaWYgKGN1cnJlbnRFbGVtZW50LmlzTGluaygpKQorICAgICAgICAgICAgcmV0dXJuICZjdXJy
ZW50RWxlbWVudDsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHZvaWQgRHJhZ0Nv
bnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBk
cmFnTG9jLCBjb25zdCBJbnRQb2ludCYgZXZlbnRQb3MsIEZyYW1lJiBmcmFtZSwgY29uc3QgRHJh
Z1N0YXRlJiBzdGF0ZSwgUHJvbWlzZWRBdHRhY2htZW50SW5mbyYmIHByb21pc2VkQXR0YWNobWVu
dEluZm8pCiB7CiAgICAgbV9kaWRJbml0aWF0ZURyYWcgPSB0cnVlOwpAQCAtMTI5NiwxOCArMTMw
NSw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2Us
IGNvbnN0IEludFBvaW50JiBkcmFnTG9jLCBjb25zCiAgICAgICAgICAgICBpdGVtLmRyYWdQcmV2
aWV3RnJhbWVJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBlbGVtZW50LT5ib3VuZHNJblJvb3RWaWV3
U3BhY2UoKTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxFbGVtZW50PiBsaW5rOwotICAg
ICAgICBpZiAoZWxlbWVudC0+aXNMaW5rKCkpCi0gICAgICAgICAgICBsaW5rID0gZWxlbWVudDsK
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGN1cnJlbnRFbGVtZW50IDog
ZWxlbWVudExpbmVhZ2UoZWxlbWVudC5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY3Vy
cmVudEVsZW1lbnQuaXNMaW5rKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbGluayA9ICZjdXJy
ZW50RWxlbWVudDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChsaW5rKSB7CisgICAgICAg
IGlmIChhdXRvIGxpbmsgPSBjb250YWluaW5nTGlua0VsZW1lbnQoKmVsZW1lbnQpKSB7CiAgICAg
ICAgICAgICBhdXRvIHRpdGxlQXR0cmlidXRlID0gbGluay0+YXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihIVE1MTmFtZXM6OnRpdGxlQXR0cik7CiAgICAgICAgICAgICBpdGVtLnRpdGxl
ID0gdGl0bGVBdHRyaWJ1dGUuaXNFbXB0eSgpID8gbGluay0+aW5uZXJUZXh0KCkgOiB0aXRsZUF0
dHJpYnV0ZS5zdHJpbmcoKTsKICAgICAgICAgICAgIGl0ZW0udXJsID0gZnJhbWUuZG9jdW1lbnQo
KS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGxpbmstPmdl
dEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRyKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKaW5kZXggZDI2
Y2VmZTRmMjAyMzZjN2M0M2FjNWUyNWVlNzE2ZWRkNTQwZTEwZi4uZjgwYTE4NTQ4OThjYzg0ZjVk
MGUwZjY3MGJmYWYyNTMwNjBhZjE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwCkBAIC0yNyw3ICsyNyw2IEBA
CiAjaW5jbHVkZSAiQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmgiCiAKICNpbmNsdWRlICJFbGVtZW50
Q2hpbGRJdGVyYXRvci5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAi
SFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25z
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xp
ZW50LmgKaW5kZXggN2IzMmIzM2QzMTVhYjk1ZDJhMGJlOThkM2UyZjBhNTBiYTBiOWVkMy4uNWVk
ODAyNWJlNzkwMjkyN2Y1ZDY1M2I5NzY5ZTExM2YyY2FlYzhjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQuaApAQCAtMjcsMTEg
KzI3LDEyIEBACiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKIAotI2luY2x1ZGUgIklu
dFJlY3QuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJbnRSZWN0OworCiBjbGFzcyBEYXRh
TGlzdFN1Z2dlc3Rpb25zQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EYXRhTGlzdFN1
Z2dlc3Rpb25zQ2xpZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHAKaW5kZXggNjA5N2I0YzZhM2U5ZWJkMzE5MjkyNmZlMzkzOWI4YmI1ZDdmZWVj
NS4uMjY3NDMzNTJlNDU3MWMxZTc0MGJmZGI2M2YwY2I2NDBiYzdmNGM4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKQEAgLTU0LDcgKzU0LDYgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFM
SVNUX0VMRU1FTlQpCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1M
RGF0YUxpc3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MUGFyc2VySWRpb21zLmgiCkBAIC0xMTE3LDEyICsxMTE2LDkgQEAgdm9pZCBSZW5k
ZXJUaGVtZTo6cGFpbnRTbGlkZXJUaWNrcyhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBh
aW50SW5mbyYgcGFpbnQKICAgICAgICAgdGlja1JlZ2lvblNpZGVNYXJnaW4gPSB0cmFja0JvdW5k
cy55KCkgKyAodGh1bWJTaXplLndpZHRoKCkgLSB0aWNrU2l6ZS53aWR0aCgpICogem9vbUZhY3Rv
cikgLyAyLjA7CiAgICAgICAgIHRpY2tSZWdpb25XaWR0aCA9IHRyYWNrQm91bmRzLmhlaWdodCgp
IC0gdGh1bWJTaXplLndpZHRoKCk7CiAgICAgfQotICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gb3B0
aW9ucyA9IGRhdGFMaXN0Lm9wdGlvbnMoKTsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5zZXRGaWxsQ29sb3Ioby5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZp
bHRlcihDU1NQcm9wZXJ0eUNvbG9yKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgTm9kZSog
bm9kZSA9IG9wdGlvbnMtPml0ZW0oaSk7IGkrKykgewotICAgICAgICBBU1NFUlQoaXM8SFRNTE9w
dGlvbkVsZW1lbnQ+KCpub2RlKSk7Ci0gICAgICAgIEhUTUxPcHRpb25FbGVtZW50JiBvcHRpb25F
bGVtZW50ID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpub2RlKTsKKyAgICBmb3IgKGF1
dG8mIG9wdGlvbkVsZW1lbnQgOiBkYXRhTGlzdC5zdWdnZXN0aW9ucygpKSB7CiAgICAgICAgIFN0
cmluZyB2YWx1ZSA9IG9wdGlvbkVsZW1lbnQudmFsdWUoKTsKICAgICAgICAgaWYgKCFpbnB1dC5p
c1ZhbGlkVmFsdWUodmFsdWUpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAppbmRleCA4OGNhM2U1
MDM3MzczMDE1YzUyMDMwZjA1NDhjMGZiMzMyZTEwNzZkLi5mY2FmMDBjNTBiYmY2MDNlZjNhM2E5
ZmQ4MzRkM2M5OWUzMzNiOTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKQEAgLTYsNiArNiw3IEBACiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxOCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI2LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdXBwb3J0LmgiCiAKKyNpbmNsdWRl
ICJFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5o
IgogI2luY2x1ZGUgIlJlbmRlckNoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVt
ZW50LmgiCkBAIC00ODEsNiArNDgzLDcgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0OjpzdHlsZUNo
YW5nZWQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlKgogfQogCiAj
aWYgRU5BQkxFKENTU19DT01QT1NJVElORykKKwogYm9vbCBTVkdSZW5kZXJTdXBwb3J0Ojppc29s
YXRlc0JsZW5kaW5nKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICByZXR1cm4gc3R5
bGUuc3ZnU3R5bGUoKS5pc29sYXRlc0JsZW5kaW5nKCkgfHwgc3R5bGUuaGFzRmlsdGVyKCkgfHwg
c3R5bGUuaGFzQmxlbmRNb2RlKCkgfHwgc3R5bGUub3BhY2l0eSgpIDwgMS4wZjsKQEAgLTQ5MSwy
MCArNDk0LDE2IEBAIHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6dXBkYXRlTWFza2VkQW5jZXN0b3JT
aG91bGRJc29sYXRlQmxlbmRpbmcoY29uc3QgUmVuZGVyRWxlCiAgICAgQVNTRVJUKHJlbmRlcmVy
LmVsZW1lbnQoKSk7CiAgICAgQVNTRVJUKHJlbmRlcmVyLmVsZW1lbnQoKS0+aXNTVkdFbGVtZW50
KCkpOwogCi0gICAgYm9vbCBtYXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyA9IHJl
bmRlcmVyLnN0eWxlKCkuaGFzQmxlbmRNb2RlKCk7Ci0gICAgZm9yIChhdXRvKiBhbmNlc3RvciA9
IHJlbmRlcmVyLmVsZW1lbnQoKS0+cGFyZW50RWxlbWVudCgpOyBhbmNlc3RvciAmJiBhbmNlc3Rv
ci0+aXNTVkdFbGVtZW50KCk7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudEVsZW1lbnQoKSkg
ewotICAgICAgICBpZiAoIWRvd25jYXN0PFNWR0VsZW1lbnQ+KCphbmNlc3RvcikuaXNTVkdHcmFw
aGljc0VsZW1lbnQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGNvbnN0IGF1
dG8qIHN0eWxlID0gYW5jZXN0b3ItPmNvbXB1dGVkU3R5bGUoKTsKKyAgICBmb3IgKGF1dG8mIGFu
Y2VzdG9yIDogYW5jZXN0b3JzT2ZUeXBlPFNWR0dyYXBoaWNzRWxlbWVudD4oKnJlbmRlcmVyLmVs
ZW1lbnQoKSkpIHsKKyAgICAgICAgYXV0byogc3R5bGUgPSBhbmNlc3Rvci5jb21wdXRlZFN0eWxl
KCk7CiAgICAgICAgIGlmICghc3R5bGUgfHwgIWlzb2xhdGVzQmxlbmRpbmcoKnN0eWxlKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChhbmNlc3Rvci0+Y29tcHV0ZWRTdHls
ZSgpLT5zdmdTdHlsZSgpLmhhc01hc2tlcigpKQotICAgICAgICAgICAgZG93bmNhc3Q8U1ZHR3Jh
cGhpY3NFbGVtZW50PigqYW5jZXN0b3IpLnNldFNob3VsZElzb2xhdGVCbGVuZGluZyhtYXNrZWRB
bmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyk7Ci0KKyAgICAgICAgaWYgKHN0eWxlLT5zdmdT
dHlsZSgpLmhhc01hc2tlcigpKQorICAgICAgICAgICAgYW5jZXN0b3Iuc2V0U2hvdWxkSXNvbGF0
ZUJsZW5kaW5nKHJlbmRlcmVyLnN0eWxlKCkuaGFzQmxlbmRNb2RlKCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogfQorCiAjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUlu
dmFsaWRhdG9yLmNwcAppbmRleCA1ZTk5ZmJiZDJmZTAzODRiNzkwYzAwMzBjMTU2YWY2Y2Y1Nzg0
MzgyLi42YmVmNDQ4ZTNiMTQ2ZDUzOWMxOTcxMTcxYzM5NmZlN2U4ZGI5Yzc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcApAQCAtMTc1LDggKzE3NSw3IEBAIHZv
aWQgSW52YWxpZGF0b3I6OmludmFsaWRhdGVTdHlsZUZvckRlc2NlbmRhbnRzKEVsZW1lbnQmIHJv
b3QsIFNlbGVjdG9yRmlsdGVyKiBmCiB7CiAgICAgVmVjdG9yPEVsZW1lbnQqLCAyMD4gcGFyZW50
U3RhY2s7CiAgICAgRWxlbWVudCogcHJldmlvdXNFbGVtZW50ID0gJnJvb3Q7Ci0gICAgYXV0byBk
ZXNjZW5kYW50cyA9IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KHJvb3QpOwotICAgIGZvciAo
YXV0byBpdCA9IGRlc2NlbmRhbnRzLmJlZ2luKCksIGVuZCA9IGRlc2NlbmRhbnRzLmVuZCgpOyBp
dCAhPSBlbmQ7KSB7CisgICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVu
dD4ocm9vdCkuYmVnaW4oKTsgaXQ7ICkgewogICAgICAgICBhdXRvJiBkZXNjZW5kYW50ID0gKml0
OwogICAgICAgICBhdXRvKiBwYXJlbnQgPSBkZXNjZW5kYW50LnBhcmVudEVsZW1lbnQoKTsKICAg
ICAgICAgaWYgKHBhcmVudFN0YWNrLmlzRW1wdHkoKSB8fCBwYXJlbnRTdGFjay5sYXN0KCkgIT0g
cGFyZW50KSB7CkBAIC0yNzUsMTIgKzI3NCwxMCBAQCB2b2lkIEludmFsaWRhdG9yOjppbnZhbGlk
YXRlU3R5bGVXaXRoTWF0Y2hFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE1hdGNoRWxlbWVudAog
ICAgICAgICBmb3IgKGF1dG8qIHNpYmxpbmcgPSBlbGVtZW50Lm5leHRFbGVtZW50U2libGluZygp
OyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpCiAgICAg
ICAgICAgICBpbnZhbGlkYXRlSWZOZWVkZWQoKnNpYmxpbmcsIG51bGxwdHIpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE1hdGNoRWxlbWVudDo6QW55U2libGluZzogewotICAgICAgICBhdXRv
IHBhcmVudENoaWxkcmVuID0gY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4oKmVsZW1lbnQucGFyZW50
Tm9kZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBwYXJlbnRDaGlsZCA6IHBhcmVudENoaWxkcmVu
KQorICAgIGNhc2UgTWF0Y2hFbGVtZW50OjpBbnlTaWJsaW5nOgorICAgICAgICBmb3IgKGF1dG8m
IHBhcmVudENoaWxkIDogY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4oKmVsZW1lbnQucGFyZW50Tm9k
ZSgpKSkKICAgICAgICAgICAgIGludmFsaWRhdGVJZk5lZWRlZChwYXJlbnRDaGlsZCwgbnVsbHB0
cik7CiAgICAgICAgIGJyZWFrOwotICAgIH0KICAgICBjYXNlIE1hdGNoRWxlbWVudDo6UGFyZW50
U2libGluZzoKICAgICAgICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudC5uZXh0RWxlbWVu
dFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGlu
ZygpKSB7CiAgICAgICAgICAgICBhdXRvIHNpYmxpbmdDaGlsZHJlbiA9IGNoaWxkcmVuT2ZUeXBl
PEVsZW1lbnQ+KCpzaWJsaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAK
aW5kZXggZjNmMzYyMTgzZDUwNjE3NGE0NjY2NDYxYzcxN2JlNzliM2U2MWYxNC4uNjUxZjhmMWUy
ZDc4OTIxOTkwNjU2YWZhNGZkOWU2OWVkY2FjM2MyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVSZXNvbHZlci5jcHAKQEAgLTE4Myw4ICsxODMsNyBAQCBpbmxpbmUgdm9pZCBSZXNvbHZlcjo6
U3RhdGU6OnNldFBhcmVudFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcGFyZW50
UwogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNBdFNoYWRvd0JvdW5kYXJ5KGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQpCiB7Ci0gICAgYXV0byogcGFyZW50Tm9kZSA9IGVsZW1lbnQucGFyZW50Tm9kZSgp
OwotICAgIHJldHVybiBwYXJlbnROb2RlICYmIHBhcmVudE5vZGUtPmlzU2hhZG93Um9vdCgpOwor
ICAgIHJldHVybiBpczxTaGFkb3dSb290PihlbGVtZW50LnBhcmVudE5vZGUoKSk7CiB9CiAKIEJ1
aWxkZXJDb250ZXh0IFJlc29sdmVyOjpidWlsZGVyQ29udGV4dChjb25zdCBTdGF0ZSYgc3RhdGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAppbmRleCA5OWRiMzU5YjIwNDYxODQwZmNjYTE1
ODhlZTEwZjUxZWVmMTU1Zjg2Li42YjRiNjI1NjkyZDdhY2E2MmYxNzlhOWExNDMxYjliNzJmZWVi
ZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKQEAgLTEwMiw5ICsxMDIsOCBAQCB2
b2lkIFNWR0FFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQUVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKQogewotICAgIGlmIChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc1NWR0Vs
ZW1lbnQoKSAmJiBkb3duY2FzdDxTVkdFbGVtZW50PigqcGFyZW50Tm9kZSgpKS5pc1RleHRDb250
ZW50KCkpCisgICAgaWYgKGlzPFNWR0VsZW1lbnQ+KHBhcmVudE5vZGUoKSkgJiYgZG93bmNhc3Q8
U1ZHRWxlbWVudD4oKnBhcmVudE5vZGUoKSkuaXNUZXh0Q29udGVudCgpKQogICAgICAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHSW5saW5lPigqdGhpcywgV1RGTW92ZShzdHlsZSkp
OwotCiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250
YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcAppbmRleCAyZmZjYmFjNTIxMWM4YTA1YWU0NjBkMzBjYTA0MjZlNDY3Y2VhMTgzLi4yMjI0
MWRhZDQxN2ZjN2UyNjhiZDYwN2VhNTMwN2JiMmE5MmI0NTI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IEFscCBUb2tlciA8YWxwQGF0
b2tlci5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ2FtZXJvbiBNY0Nvcm1hY2sgPGNhbUBt
Y2MuaWQuYXU+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KQEAgLTkxNiwxOCArOTE2LDEwIEBAIHZvaWQgU1ZHRWxlbWVudDo6
dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oYm9vbCBoYXNSZWxhdGl2ZUxlbmd0aHMs
IFNWR0VsCiAgICAgICAgIG1fZWxlbWVudHNXaXRoUmVsYXRpdmVMZW5ndGhzLnJlbW92ZShlbGVt
ZW50KTsKICAgICB9CiAKLSAgICBpZiAoIWVsZW1lbnQtPmlzU1ZHR3JhcGhpY3NFbGVtZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZpbmQgZmlyc3Qgc3R5bGVkIHBhcmVudCBub2Rl
LCBhbmQgbm90aWZ5IGl0IHRoYXQgd2UndmUgY2hhbmdlZCBvdXIgcmVsYXRpdmUgbGVuZ3RoIHN0
YXRlLgotICAgIGF1dG8gbm9kZSA9IG1ha2VSZWZQdHIocGFyZW50Tm9kZSgpKTsKLSAgICB3aGls
ZSAobm9kZSkgewotICAgICAgICBpZiAoIW5vZGUtPmlzU1ZHRWxlbWVudCgpKQotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgLy8gUmVnaXN0ZXIgdXMgaW4gdGhlIHBhcmVudCBlbGVtZW50
IG1hcC4KLSAgICAgICAgZG93bmNhc3Q8U1ZHRWxlbWVudD4oKm5vZGUpLnVwZGF0ZVJlbGF0aXZl
TGVuZ3Roc0luZm9ybWF0aW9uKGhhc1JlbGF0aXZlTGVuZ3RocywgdGhpcyk7Ci0gICAgICAgIGJy
ZWFrOworICAgIGlmIChlbGVtZW50LT5pc1NWR0dyYXBoaWNzRWxlbWVudCgpKSB7CisgICAgICAg
IGF1dG8gcGFyZW50ID0gbWFrZVJlZlB0cihwYXJlbnROb2RlKCkpOworICAgICAgICBpZiAoaXM8
U1ZHRWxlbWVudD4ocGFyZW50KSkKKyAgICAgICAgICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpw
YXJlbnQpLnVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKGhhc1JlbGF0aXZlTGVuZ3Ro
cywgdGhpcyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCA5OGZjZmZi
Y2E0ZDcxMjY3ZTc0NWZlZGI5YjMwZTgwZDBjOWI2MmNmLi42MzkxOGFhODhiZjE5NGEyOWU2NDMw
YWIxZTk5NjBiODhjYmVkZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTE0NSw2ICsx
NDUsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xhc3NOYW1lLT5jdXJyZW50VmFsdWUoKTsgfQogICAgIFNWR0FuaW1hdGVkU3RyaW5nJiBjbGFz
c05hbWVBbmltYXRlZCgpIHsgcmV0dXJuIG1fY2xhc3NOYW1lOyB9CiAKKyAgICBjb25zdCBSZW5k
ZXJTdHlsZSogY29tcHV0ZWRTdHlsZShQc2V1ZG9JZCA9IFBzZXVkb0lkOjpOb25lKSBmaW5hbDsK
KwogcHJvdGVjdGVkOgogICAgIFNWR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Jik7CiAgICAgdmlydHVhbCB+U1ZHRWxlbWVudCgpOwpAQCAtMTczLDggKzE3NSw2IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIHdpbGxSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKSBvdmVycmlk
ZTsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZShQc2V1
ZG9JZCA9IFBzZXVkb0lkOjpOb25lKSBmaW5hbDsKLQogICAgIHZpcnR1YWwgdm9pZCBjbGVhclRh
cmdldCgpIHsgfQogCiAgICAgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZXNJZk5lZWRlZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4IDFlNzU1MzM5MGU5YjViZGJhODNj
YTI2ODE2YzEyMmUxM2ZjMWVkYTcuLjM5YWZiZDAzYjQxZWEwZjc4NjU0ZGYzMmMwZjI1MWQyMzEx
YjBlMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTMzMSw4ICszMzEs
NyBAQCBzdGF0aWMgdm9pZCByZW1vdmVEaXNhbGxvd2VkRWxlbWVudHNGcm9tU3VidHJlZShTVkdF
bGVtZW50JiBzdWJ0cmVlKQogICAgIEFTU0VSVCghc3VidHJlZS5pc0Nvbm5lY3RlZCgpKTsKIAog
ICAgIFZlY3RvcjxFbGVtZW50Kj4gZGlzYWxsb3dlZEVsZW1lbnRzOwotICAgIGF1dG8gZGVzY2Vu
ZGFudHMgPSBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PihzdWJ0cmVlKTsKLSAgICBmb3IgKGF1
dG8gaXQgPSBkZXNjZW5kYW50cy5iZWdpbigpLCBlbmQgPSBkZXNjZW5kYW50cy5lbmQoKTsgaXQg
IT0gZW5kOyApIHsKKyAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50
PihzdWJ0cmVlKS5iZWdpbigpOyBpdDsgKSB7CiAgICAgICAgIGlmIChpc0Rpc2FsbG93ZWRFbGVt
ZW50KCppdCkpIHsKICAgICAgICAgICAgIGRpc2FsbG93ZWRFbGVtZW50cy5hcHBlbmQoJippdCk7
CiAgICAgICAgICAgICBpdC50cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7CkBAIC00NTIs
OSArNDUxLDggQEAgc3RhdGljIHZvaWQgY2xvbmVEYXRhQW5kQ2hpbGRyZW4oU1ZHRWxlbWVudCYg
cmVwbGFjZW1lbnRDbG9uZSwgU1ZHRWxlbWVudCYgb3JpZ2kKIHZvaWQgU1ZHVXNlRWxlbWVudDo6
ZXhwYW5kVXNlRWxlbWVudHNJblNoYWRvd1RyZWUoKSBjb25zdAogewogICAgIGF1dG8gZGVzY2Vu
ZGFudHMgPSBkZXNjZW5kYW50c09mVHlwZTxTVkdVc2VFbGVtZW50PigqdXNlckFnZW50U2hhZG93
Um9vdCgpKTsKLSAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5iZWdpbigpLCBlbmQgPSBk
ZXNjZW5kYW50cy5lbmQoKTsgaXQgIT0gZW5kOyApIHsKKyAgICBmb3IgKGF1dG8gaXQgPSBkZXNj
ZW5kYW50cy5iZWdpbigpOyBpdDsgKSB7CiAgICAgICAgIFNWR1VzZUVsZW1lbnQmIG9yaWdpbmFs
Q2xvbmUgPSAqaXQ7Ci0gICAgICAgIGl0ID0gZW5kOyAvLyBFZmZpY2llbnRseSBxdWlldHMgYXNz
ZXJ0aW9ucyBkdWUgdG8gdGhlIG91dHN0YW5kaW5nIGl0ZXJhdG9yLgogCiAgICAgICAgIGF1dG8q
IHRhcmdldCA9IG9yaWdpbmFsQ2xvbmUuZmluZFRhcmdldCgpOwogCkBAIC00ODUsOSArNDgzLDgg
QEAgdm9pZCBTVkdVc2VFbGVtZW50OjpleHBhbmRVc2VFbGVtZW50c0luU2hhZG93VHJlZSgpIGNv
bnN0CiB2b2lkIFNWR1VzZUVsZW1lbnQ6OmV4cGFuZFN5bWJvbEVsZW1lbnRzSW5TaGFkb3dUcmVl
KCkgY29uc3QKIHsKICAgICBhdXRvIGRlc2NlbmRhbnRzID0gZGVzY2VuZGFudHNPZlR5cGU8U1ZH
U3ltYm9sRWxlbWVudD4oKnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSk7Ci0gICAgZm9yIChhdXRvIGl0
ID0gZGVzY2VuZGFudHMuYmVnaW4oKSwgZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7IGl0ICE9IGVu
ZDsgKSB7CisgICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMuYmVnaW4oKTsgaXQ7ICkgewog
ICAgICAgICBTVkdTeW1ib2xFbGVtZW50JiBvcmlnaW5hbENsb25lID0gKml0OwotICAgICAgICBp
dCA9IGVuZDsgLy8gRWZmaWNpZW50bHkgcXVpZXRzIGFzc2VydGlvbnMgZHVlIHRvIHRoZSBvdXRz
dGFuZGluZyBpdGVyYXRvci4KIAogICAgICAgICAvLyBTcGVjOiBUaGUgcmVmZXJlbmNlZCAnc3lt
Ym9sJyBhbmQgaXRzIGNvbnRlbnRzIGFyZSBkZWVwLWNsb25lZCBpbnRvIHRoZSBnZW5lcmF0ZWQg
dHJlZSwKICAgICAgICAgLy8gd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgdGhlICdzeW1ib2wnIGlz
IHJlcGxhY2VkIGJ5IGFuICdzdmcnLiBUaGlzIGdlbmVyYXRlZCAnc3ZnJyB3aWxsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDc3ZDk0
YWZlODVlYmExNjQyNmE0MTk3ZDdmOTA1NjhjM2MzNmQwYWQuLjNmNzIzMTMxYTIyNjIyM2FjMGRm
NmI1MGMyZDk2YTAyZTJhNzc3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yNzQsMjIgKzI3NCwyNCBAQCBib29sIFhNTERvY3Vt
ZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBjaHVuaywgRG9j
dW1lbnRGcmFnbQogCiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiBwcmVmaXhU
b05hbWVzcGFjZU1hcDsKICAgICBBdG9tU3RyaW5nIGRlZmF1bHROYW1lc3BhY2VVUkk7Ci0gICAg
Ym9vbCBzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkgPSBmYWxzZTsKLSAgICAKLSAg
ICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50TGluZWFnZShjb250ZXh0RWxlbWVudCkpIHsK
LSAgICAgICAgaWYgKGlzPFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50PihlbGVtZW50KSkKLSAgICAg
ICAgICAgIHN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVSSSA9IHRydWU7Ci0gICAgICAg
IGVsc2UgaWYgKCFzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkpCi0gICAgICAgICAg
ICBkZWZhdWx0TmFtZXNwYWNlVVJJID0gZWxlbWVudC5uYW1lc3BhY2VVUkkoKTsKLQotICAgICAg
ICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlcygpKQotICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgZm9yIChjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA6IGVsZW1lbnQuYXR0cmli
dXRlc0l0ZXJhdG9yKCkpIHsKLSAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUucHJlZml4KCkgPT0g
eG1sbnNBdG9tKCkpCi0gICAgICAgICAgICAgICAgcHJlZml4VG9OYW1lc3BhY2VNYXAuc2V0KGF0
dHJpYnV0ZS5sb2NhbE5hbWUoKSwgYXR0cmlidXRlLnZhbHVlKCkpOwotICAgICAgICAgICAgZWxz
ZSBpZiAoIXN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVSSSAmJiBhdHRyaWJ1dGUucHJl
Zml4KCkgPT0geG1sbnNBdG9tKCkpCi0gICAgICAgICAgICAgICAgZGVmYXVsdE5hbWVzcGFjZVVS
SSA9IGF0dHJpYnV0ZS52YWx1ZSgpOworICAgIGlmIChjb250ZXh0RWxlbWVudCkgeworICAgICAg
ICBib29sIHN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVSSSA9IGZhbHNlOworCisgICAg
ICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4oKmNvbnRleHRF
bGVtZW50KSkgeworICAgICAgICAgICAgaWYgKGlzPFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Pihl
bGVtZW50KSkKKyAgICAgICAgICAgICAgICBzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VV
UkkgPSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAoIXN0b3BMb29raW5nRm9yRGVmYXVsdE5h
bWVzcGFjZVVSSSkKKyAgICAgICAgICAgICAgICBkZWZhdWx0TmFtZXNwYWNlVVJJID0gZWxlbWVu
dC5uYW1lc3BhY2VVUkkoKTsKKworICAgICAgICAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0
ZXMoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgZm9yIChjb25z
dCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA6IGVsZW1lbnQuYXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlLnByZWZpeCgpID09IHhtbG5zQXRvbSgpKQor
ICAgICAgICAgICAgICAgICAgICBwcmVmaXhUb05hbWVzcGFjZU1hcC5zZXQoYXR0cmlidXRlLmxv
Y2FsTmFtZSgpLCBhdHRyaWJ1dGUudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAo
IXN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVSSSAmJiBhdHRyaWJ1dGUucHJlZml4KCkg
PT0geG1sbnNBdG9tKCkpCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHROYW1lc3BhY2VVUkkg
PSBhdHRyaWJ1dGUudmFsdWUoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAppbmRleCAzZjViNjE4MWUwNmUwYTg0Njg4
YmRhOTE2ZjEwZDg3YTYxZDE0YmU3Li42YjI3NzNlYzk3MzUxOGEwMWUxNDU1NDA1MjcyNWU1NTk0
MDZiYzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtNTU5LDEyICs1
NTksMTEgQEAgc3RhdGljIFdlYkNvcmU6OkVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnRGb3JFbGVt
ZW50KFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQpCiAgICAgLy8gwqcxMy4gRWxlbWVudCBTdGF0
ZS4KICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2ViZHJpdmVyL3dlYmRyaXZlci1zcGVj
Lmh0bWwjZGZuLWNvbnRhaW5lci4KICAgICBpZiAoaXM8V2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1l
bnQ+KGVsZW1lbnQpKSB7Ci0gICAgICAgIGF1dG8mIG9wdGlvbkVsZW1lbnQgPSBkb3duY2FzdDxX
ZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCk7CiAjaWYgRU5BQkxFKERBVEFMSVNU
X0VMRU1FTlQpCi0gICAgICAgIGlmIChhdXRvKiBwYXJlbnRFbGVtZW50ID0gb3B0aW9uRWxlbWVu
dC5vd25lckRhdGFMaXN0RWxlbWVudCgpKQorICAgICAgICBpZiAoYXV0byogcGFyZW50RWxlbWVu
dCA9IFdlYkNvcmU6OmFuY2VzdG9yc09mVHlwZTxXZWJDb3JlOjpIVE1MRGF0YUxpc3RFbGVtZW50
PihlbGVtZW50KS5maXJzdCgpKQogICAgICAgICAgICAgcmV0dXJuIHBhcmVudEVsZW1lbnQ7CiAj
ZW5kaWYKLSAgICAgICAgaWYgKGF1dG8qIHBhcmVudEVsZW1lbnQgPSBvcHRpb25FbGVtZW50Lm93
bmVyU2VsZWN0RWxlbWVudCgpKQorICAgICAgICBpZiAoYXV0byogcGFyZW50RWxlbWVudCA9IGRv
d25jYXN0PFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KS5vd25lclNlbGVjdEVs
ZW1lbnQoKSkKICAgICAgICAgICAgIHJldHVybiBwYXJlbnRFbGVtZW50OwogCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Z1bGxT
Y3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCmluZGV4IGY1MTk0MWU2YjRlYzEy
MTlkMmJiZGEwZmE5OTU3ZGM1MzgyN2M3OGIuLmQwY2ZlOWQxNzNhZDk3OGI1ODY2ZGU1ZjZiZjM0
NTQyOTc4MjZkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GdWxsU2Ny
ZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAK
ICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvRWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRWxlbWVudEl0ZXJhdG9yLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GdWxsc2NyZWVuTWFuYWdlci5oPgpAQCAtNDUsNyArNDUsNiBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyT2JqZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5k
ZXJWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmg+CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01P
REUpKQogI2luY2x1ZGUgIlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKaW5kZXggOGY1MTA2N2EzOTk4Y2ZiM2FhNWZlNzAxNGYzNmI5YWQ2NzU2YjM0NC4uZmI4
Zjc2ZDU4OWU3M2E5YTJkOTU3MzBmMGQxZjVlODc2YzY1ZThjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKQEAgLTc5NSw3ICs3OTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBX
ZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbAogCiBzdGQ6
OnVuaXF1ZV9wdHI8RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50JiBj
bGllbnQpCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyPigmbV9wYWdlLCAmY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJEYXRhTGlz
dFN1Z2dlc3Rpb25QaWNrZXI+KG1fcGFnZSwgY2xpZW50KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RT
dWdnZXN0aW9uUGlja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwCmluZGV4IGFlYjg3MzdhZGQ0NzNj
MDNhYjZlMTE3NTJmZjBjMjI0YzhkZTA4MTguLmIyMGIwYWNmODhhNDlmZjUwZTM1NDE1NmY0MjFi
ODZhMDYxMWVmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM1LDQ3ICszNSw0NSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YUxpc3RTdWdnZXN0aW9u
c0NsaWVudC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi1XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBp
Y2tlcihXZWJQYWdlKiBwYWdlLCBEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50KiBjbGllbnQpCi0g
ICAgOiBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQoY2xpZW50KQorV2ViRGF0YUxpc3RTdWdn
ZXN0aW9uUGlja2VyOjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2ViUGFnZSYgcGFnZSwg
V2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCYgY2xpZW50KQorICAgIDogbV9jbGll
bnQoY2xpZW50KQogICAgICwgbV9wYWdlKHBhZ2UpCiB7CiB9CiAKLVdlYkRhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlcjo6fldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcigpIHsgfQotCi12b2lkIFdl
YkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6aGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKGNv
bnN0IFdURjo6U3RyaW5nJiBrZXkpCit2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6
aGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlS2V5ZG93bkluRGF0YUxpc3Qoa2V5KSwgbV9wYWdl
LT5pZGVudGlmaWVyKCkpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlS2V5ZG93
bkluRGF0YUxpc3Qoa2V5KSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7CiB9CiAKLXZvaWQgV2ViRGF0
YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpkaWRTZWxlY3RPcHRpb24oY29uc3QgV1RGOjpTdHJpbmcm
IHNlbGVjdGVkT3B0aW9uKQordm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpZFNl
bGVjdE9wdGlvbihjb25zdCBTdHJpbmcmIHNlbGVjdGVkT3B0aW9uKQogewotICAgIG1fZGF0YUxp
c3RTdWdnZXN0aW9uc0NsaWVudC0+ZGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oc2VsZWN0ZWRPcHRp
b24pOworICAgIG1fY2xpZW50LmRpZFNlbGVjdERhdGFMaXN0T3B0aW9uKHNlbGVjdGVkT3B0aW9u
KTsKIH0KIAogdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpZENsb3NlU3VnZ2Vz
dGlvbnMoKQogewotICAgIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC0+ZGlkQ2xvc2VTdWdn
ZXN0aW9ucygpOworICAgIG1fY2xpZW50LmRpZENsb3NlU3VnZ2VzdGlvbnMoKTsKIH0KIAogdm9p
ZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmNsb3NlKCkKIHsKLSAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkVuZERhdGFMaXN0U3VnZ2VzdGlvbnMoKSwgbV9wYWdlLT5pZGVudGlmaWVy
KCkpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kRGF0YUxpc3RTdWdnZXN0aW9ucygp
LCBtX3BhZ2UuaWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXI6OmRpc3BsYXlXaXRoQWN0aXZhdGlvblR5cGUoRGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZh
dGlvblR5cGUgdHlwZSkKK3ZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpkaXNwbGF5
V2l0aEFjdGl2YXRpb25UeXBlKFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25U
eXBlIHR5cGUpCiB7Ci0gICAgaWYgKCFtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQtPnN1Z2dl
c3Rpb25zKCkuc2l6ZSgpKSB7CisgICAgYXV0byBzdWdnZXN0aW9ucyA9IG1fY2xpZW50LnN1Z2dl
c3Rpb25zKCk7CisgICAgaWYgKHN1Z2dlc3Rpb25zLmlzRW1wdHkoKSkgewogICAgICAgICBjbG9z
ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wYWdlLT5zZXRBY3RpdmVEYXRh
TGlzdFN1Z2dlc3Rpb25QaWNrZXIodGhpcyk7CisgICAgbV9wYWdlLnNldEFjdGl2ZURhdGFMaXN0
U3VnZ2VzdGlvblBpY2tlcigqdGhpcyk7CiAKLSAgICBEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1h
dGlvbiBpbmZvID0geyB0eXBlLCBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQtPnN1Z2dlc3Rp
b25zKCksIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC0+ZWxlbWVudFJlY3RJblJvb3RWaWV3
Q29vcmRpbmF0ZXMoKSB9OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0RhdGFMaXN0
U3VnZ2VzdGlvbnMoaW5mbyksIG1fcGFnZS0+aWRlbnRpZmllcigpKTsKKyAgICBXZWJDb3JlOjpE
YXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiBpbmZvIHsgdHlwZSwgV1RGTW92ZShzdWdnZXN0
aW9ucyksIG1fY2xpZW50LmVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgfTsKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dEYXRhTGlzdFN1Z2dlc3Rpb25zKGluZm8pLCBt
X3BhZ2UuaWRlbnRpZmllcigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RT
dWdnZXN0aW9uUGlja2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmgKaW5kZXggOTcwNTM1OTg5MGI3NjYxYWY2
Y2E4MDcxNzBiMzUzYjU5OGM1MGY3OS4uMTM1MTA3MzUyMTQyOWVmODdkZWQxNDJjNDk2MTQxOTBj
ZDg2MzA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw3
ICsyOCw2IEBACiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAKICNpbmNsdWRlIDxXZWJD
b3JlL0RhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEYXRhTGlzdFN1Z2dlc3Rpb25z
Q2xpZW50OwpAQCAtMzgsMTkgKzM3LDIwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBX
ZWJQYWdlOwogCi1jbGFzcyBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIgOiBwdWJsaWMgV2Vi
Q29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyIHsKK2NsYXNzIFdlYkRhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25QaWNr
ZXIgewogcHVibGljOgotICAgIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihXZWJQYWdlKiwg
V2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCopOwotICAgIHZpcnR1YWwgfldlYkRh
dGFMaXN0U3VnZ2VzdGlvblBpY2tlcigpOworICAgIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
cihXZWJQYWdlJiwgV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCYpOwogCi0gICAg
dm9pZCBoYW5kbGVLZXlkb3duV2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRTZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRD
bG9zZVN1Z2dlc3Rpb25zKCk7Ci0gICAgdm9pZCBjbG9zZSgpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGlzcGxheVdpdGhBY3RpdmF0aW9uVHlwZShXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3Rp
dmF0aW9uVHlwZSkgb3ZlcnJpZGU7CisKIHByaXZhdGU6Ci0gICAgV2ViQ29yZTo6RGF0YUxpc3RT
dWdnZXN0aW9uc0NsaWVudCogbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50OwotICAgIFdlYlBh
Z2UqIG1fcGFnZTsKKyAgICB2b2lkIGhhbmRsZUtleWRvd25XaXRoSWRlbnRpZmllcihjb25zdCBT
dHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BsYXlXaXRoQWN0aXZhdGlvblR5cGUoV2ViQ29y
ZTo6RGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUpIGZpbmFsOworICAgIHZvaWQgY2xv
c2UoKSBmaW5hbDsKKworICAgIFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQmIG1f
Y2xpZW50OworICAgIFdlYlBhZ2UmIG1fcGFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4
IDRkODU3OGIxYTM4OTM3ZGE1YmI5YmVjNmUyNGIxZDBjZDVkZjMxNTguLjFmZGEzZWM3MTc2MDE5
ZmVjYWUyMzlhOTNlOTk4MGI5NzRhMDE0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9DaHJvbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnRDaGlsZEl0
ZXJhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CkBAIC03MSw3ICs3Miw2
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9KU0VsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pT
RmlsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNSYW5nZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
Tm9kZVRyYXZlcnNhbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGx1Z2luRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRyZWVBc1Rl
eHQuaD4KQEAgLTY2NiwxNyArNjY2LDggQEAgYm9vbCBXZWJGcmFtZTo6Y29udGFpbnNBbnlGb3Jt
RWxlbWVudHMoKSBjb25zdAogICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2NvcmVGcmFtZS0+ZG9jdW1l
bnQoKTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBm
b3IgKE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7IG5vZGU7IG5vZGUg
PSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlKSkgewotICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+
KCpub2RlKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoaXM8SFRNTEZvcm1F
bGVtZW50Pigqbm9kZSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0
dXJuIGZhbHNlOworICAgIGF1dG8qIGRvY3VtZW50ID0gbV9jb3JlRnJhbWUtPmRvY3VtZW50KCk7
CisgICAgcmV0dXJuIGRvY3VtZW50ICYmIGNoaWxkcmVuT2ZUeXBlPEhUTUxGb3JtRWxlbWVudD4o
KmRvY3VtZW50KS5maXJzdCgpOwogfQogCiBib29sIFdlYkZyYW1lOjpjb250YWluc0FueUZvcm1D
b250cm9scygpIGNvbnN0CkBAIC02ODQsMTQgKzY3NSwxMiBAQCBib29sIFdlYkZyYW1lOjpjb250
YWluc0FueUZvcm1Db250cm9scygpIGNvbnN0CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fY29yZUZy
YW1lLT5kb2N1bWVudCgpOworICAgIGF1dG8qIGRvY3VtZW50ID0gbV9jb3JlRnJhbWUtPmRvY3Vt
ZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Zm9yIChOb2RlKiBub2RlID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOyBub2RlOyBub2Rl
ID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSkpIHsKLSAgICAgICAgaWYgKCFpczxFbGVtZW50
Pigqbm9kZSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKGlzPEhUTUxJbnB1
dEVsZW1lbnQ+KCpub2RlKSB8fCBpczxIVE1MU2VsZWN0RWxlbWVudD4oKm5vZGUpIHx8IGlzPEhU
TUxUZXh0QXJlYUVsZW1lbnQ+KCpub2RlKSkKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRy
ZW5PZlR5cGU8RWxlbWVudD4oKmRvY3VtZW50KSkgeworICAgICAgICBpZiAoaXM8SFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ+KGNoaWxkKSB8fCBpczxIVE1MU2VsZWN0RWxlbWVudD4oY2hpbGQp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNWM4OWMx
ZWQxOTYwZjU1NDQzZGFmYTU5MTM4N2VmYTcyNWRiNjMwZC4uNzQwZDU3MWZiNmU0ZGUwMjM3MzE4
ODQwMGE1ZTAyZTVjN2UwMWQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTQxMDUsOSArNDEwNSw5IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ2hv
b3NlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogCiAjaWYgRU5BQkxFKERBVEFM
SVNUX0VMRU1FTlQpCiAKLXZvaWQgV2ViUGFnZTo6c2V0QWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9u
UGlja2VyKFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlciogZGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyKQordm9pZCBXZWJQYWdlOjpzZXRBY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyJiBkYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIpCiB7Ci0g
ICAgbV9hY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIgPSBtYWtlV2Vha1B0cihkYXRhTGlz
dFN1Z2dlc3Rpb25QaWNrZXIpOworICAgIG1fYWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2Vy
ID0gbWFrZVdlYWtQdHIoJmRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik7CiB9CiAKIHZvaWQgV2Vi
UGFnZTo6ZGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oY29uc3QgU3RyaW5nJiBzZWxlY3RlZE9wdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBlYWE2
ZmIyNTNkODAyMDZhNjc4NThhMmFkYzU3M2ZmNTRjZWQyMDliLi4zNWE5Zjg4MTA0MjViMmJkM2Rk
MzMwYTlkYjE2NDQ5MTY5YThjOGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC00MTYsNyArNDE2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBF
TkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICB2b2lkIHNldEFjdGl2ZURhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlcihXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIqKTsKKyAgICB2b2lkIHNldEFj
dGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIm
KTsKICAgICB2b2lkIGRpZFNlbGVjdERhdGFMaXN0T3B0aW9uKGNvbnN0IFN0cmluZyYpOwogICAg
IHZvaWQgZGlkQ2xvc2VTdWdnZXN0aW9ucygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDM4NzZjZDE1ZTNl
ZTQ5MjJiYTBiMTY3YTViYTEwZWM0NjNlNzFjYjIuLjdhZDI5NjYwNWEyOTgzOTA4MDY5ZDJhOTk3
MTA0MWRiOGM5ZTFkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yNTA1LDExICsyNTA1LDEyIEBAIHZvaWQgV2ViUGFn
ZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpCiAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpIYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQoYXV0b2NvcnJlY3Rpb25Db250
ZXh0KCkpKTsKIH0KIAotc3RhdGljIEhUTUxBbmNob3JFbGVtZW50KiBjb250YWluaW5nTGlua0Vs
ZW1lbnQoRWxlbWVudCogZWxlbWVudCkKK3N0YXRpYyBIVE1MQW5jaG9yRWxlbWVudCogY29udGFp
bmluZ0xpbmtBbmNob3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgZm9yIChhdXRv
JiBjdXJyZW50RWxlbWVudCA6IGVsZW1lbnRMaW5lYWdlKGVsZW1lbnQpKSB7Ci0gICAgICAgIGlm
IChjdXJyZW50RWxlbWVudC5pc0xpbmsoKSAmJiBpczxIVE1MQW5jaG9yRWxlbWVudD4oY3VycmVu
dEVsZW1lbnQpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50
PigmY3VycmVudEVsZW1lbnQpOworICAgIC8vIEZJWE1FOiBUaGVyZSBpcyBjb2RlIGluIHRoZSBk
cmFnIGNvbnRyb2xsZXIgdGhhdCBzdXBwb3J0cyBhbnkgbGluaywgZXZlbiBpZiBpdCdzIG5vdCBh
biBIVE1MQW5jaG9yRWxlbWVudC4gV2h5IGlzIHRoaXMgZGlmZmVyZW50PworICAgIGZvciAoYXV0
byYgY3VycmVudEVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEhUTUxBbmNob3JFbGVtZW50PihlbGVt
ZW50KSkgeworICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuaXNMaW5rKCkpCisgICAgICAgICAg
ICByZXR1cm4gJmN1cnJlbnRFbGVtZW50OwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
QEAgLTI2NzksNyArMjY4MCw3IEBAIHN0YXRpYyB2b2lkIGVsZW1lbnRQb3NpdGlvbkluZm9ybWF0
aW9uKFdlYlBhZ2UmIHBhZ2UsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEluCiB7CiAgICAgRWxl
bWVudCogbGlua0VsZW1lbnQgPSBudWxscHRyOwogICAgIGlmIChlbGVtZW50LnJlbmRlcmVyKCkg
JiYgZWxlbWVudC5yZW5kZXJlcigpLT5pc1JlbmRlckltYWdlKCkpCi0gICAgICAgIGxpbmtFbGVt
ZW50ID0gY29udGFpbmluZ0xpbmtFbGVtZW50KCZlbGVtZW50KTsKKyAgICAgICAgbGlua0VsZW1l
bnQgPSBjb250YWluaW5nTGlua0FuY2hvckVsZW1lbnQoZWxlbWVudCk7CiAgICAgZWxzZSBpZiAo
ZWxlbWVudC5pc0xpbmsoKSkKICAgICAgICAgbGlua0VsZW1lbnQgPSAmZWxlbWVudDsKIApAQCAt
Mjk0OCw3ICsyOTQ5LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVp
bnQzMl90IGFjdGlvbikKICAgICAgICAgaWYgKGlzPFJlbmRlckltYWdlPigqZWxlbWVudC5yZW5k
ZXJlcigpKSkgewogICAgICAgICAgICAgVVJMIHVybDsKICAgICAgICAgICAgIFN0cmluZyB0aXRs
ZTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBsaW5rRWxlbWVudCA9IGNvbnRhaW5pbmdMaW5rRWxl
bWVudCgmZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBsaW5rRWxlbWVudCA9IGNv
bnRhaW5pbmdMaW5rQW5jaG9yRWxlbWVudChlbGVtZW50KSkgewogICAgICAgICAgICAgICAgIHVy
bCA9IGxpbmtFbGVtZW50LT5ocmVmKCk7CiAgICAgICAgICAgICAgICAgdGl0bGUgPSBsaW5rRWxl
bWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnRpdGxlQXR0
cik7CiAgICAgICAgICAgICAgICAgaWYgKCF0aXRsZS5sZW5ndGgoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQppbmRleCA1YzEzZDYzN2UxZjdmZjZmODJkOTI5
NDI4ZGZiODI1MDViMzhjYWM5Li5hZGNkMDE3ZDMwNjVlMjMyYTY3Y2E0MjU1NmYzNWM1Y2RlNmVj
ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCkBAIC0y
NSwxMyArMjUsNiBAQAogCiAjaW1wb3J0ICJET01Eb2N1bWVudEludGVybmFsLmgiCiAKLSNpbXBv
cnQgPFdlYkNvcmUvQXR0ci5oPgotI2ltcG9ydCA8V2ViQ29yZS9DREFUQVNlY3Rpb24uaD4KLSNp
bXBvcnQgPFdlYkNvcmUvQ1NTUnVsZUxpc3QuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9Db21tZW50Lmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL0RvY3VtZW50RnVsbHNjcmVlbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bi5oPgogI2ltcG9ydCAiRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUF0
dHJJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NQ0RBVEFTZWN0aW9uSW50ZXJuYWwuaCIKQEAgLTU3
LDE1ICs1MCwyMiBAQAogI2ltcG9ydCAiRE9NU3R5bGVTaGVldExpc3RJbnRlcm5hbC5oIgogI2lt
cG9ydCAiRE9NVGV4dEludGVybmFsLmgiCiAjaW1wb3J0ICJET01UcmVlV2Fsa2VySW50ZXJuYWwu
aCIKLSNpbXBvcnQgPFdlYkNvcmUvRE9NV2luZG93Lmg+CiAjaW1wb3J0ICJET01YUGF0aEV4cHJl
c3Npb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NWFBhdGhSZXN1bHRJbnRlcm5hbC5oIgorI2lt
cG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKKyNpbXBvcnQgIk9iakNOb2RlRmlsdGVyQ29uZGl0
aW9uLmgiCisjaW1wb3J0IDxXZWJDb3JlL0F0dHIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ0RBVEFT
ZWN0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NTU1J1bGVMaXN0Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL0NTU1N0eWxlRGVjbGFyYXRpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ29tbWVudC5oPgor
I2ltcG9ydCA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRGcmFnbWVudC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9Eb2N1bWVudEZ1bGxzY3JlZW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRUeXBlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0VsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXZlbnQuaD4K
LSNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxDb2xs
ZWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0hUTUxIZWFkRWxlbWVudC5oPgpAQCAtNzMsMTIgKzczLDExIEBACiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05hbWVOb2RlTGlzdC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9OYXRpdmVOb2RlRmlsdGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL05vZGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZUl0ZXJhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05v
ZGVMaXN0Lmg+Ci0jaW1wb3J0ICJPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oIgogI2ltcG9ydCA8
V2ViQ29yZS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUmFuZ2Uu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUv
U3R5bGVQcm9wZXJ0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlU2hlZXRMaXN0Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RleHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KaW5kZXggMDcyOTMwZTM5NThlMjBhMTJlM2NlM2M1
N2UxOTk0ZmUzZGRjMTY1ZS4uY2YxYTNjMWY4NDM3YmQ1YmU5MjBkODg0ZTM1YWMwNTNmODlmODQw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJh
Z21lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJh
Z21lbnQubW0KQEAgLTMyLDcgKzMyLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRGcmFn
bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Lmg+CiAjaW1wb3J0ICJFeGNlcHRpb25I
YW5kbGVycy5oIgotI2ltcG9ydCA8V2ViQ29yZS9IVE1MQ29sbGVjdGlvbi5oPgogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OYW1lTm9kZUxpc3QuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTm9kZUxpc3QuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MRmllbGRTZXRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW0KaW5kZXggYTRjMWI2MDhjMTZk
MjFlNTg3NzEwMTUyNjc3OWJhNjQ1NTA2OTBjMy4uZmQ5OTRhYjViZTE0ZWNjM2IyMTRmOTQ1MjFj
OGQzMDNhOTZiOTJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxGaWVsZFNldEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW0KQEAgLTI1LDIxICsyNSwxMCBAQAogCiAjaW1wb3J0
ICJET01IVE1MRmllbGRTZXRFbGVtZW50LmgiCiAKLSNpbXBvcnQgIkRPTUhUTUxDb2xsZWN0aW9u
SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUhUTUxGb3JtRWxlbWVudEludGVybmFsLmgiCi0jaW1w
b3J0ICJET01JbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCi0jaW1wb3J0
ICJFeGNlcHRpb25IYW5kbGVycy5oIgotI2ltcG9ydCA8V2ViQ29yZS9IVE1MQ29sbGVjdGlvbi5o
PgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MRmllbGRTZXRFbGVtZW50Lmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL0hUTUxGb3JtRWxlbWVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVmFsaWRpdHlTdGF0ZS5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+Ci0jaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
RmllbGRTZXRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVy
bmFsKSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDY2NmE3MWM4ZTA2OTNmYjYxZDIxYjc3MmQ4OWI5ZTg3ODJmNDQ5OGYuLjQwODE2M2M0ODY1
MjM2YmRiODUzODU4NTBmMDJjZWIyMGU2NDk4MzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMi0xOCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRv
cnMgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3Bw
LnB5OgorICAgICAgICAoY2hlY2tfaW5jbHVkZV9saW5lKTogQ2hhbmdlIGluY2x1ZGUgc29ydGlu
ZyBiYWNrIHRvIGNhc2Ugc2Vuc2l0aXZlLgorCiAyMDIwLTAyLTE4ICBSeWFuIEhhZGRhZCAgPHJ5
YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
NTY4NTEuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2NwcC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5Cmlu
ZGV4IDFjMDExMTIzYzc4Njk0MTc0YjMwODg3MjQ0Zjc0NTM2OTY0YWIzNmMuLmY1ODNlNzkwODYx
MjdmOWZmNmNkYzVmZmI3MjhjZTg3ZTQ0Nzg2ZjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CkBAIC0zMjcwLDcgKzMyNzAsNyBAQCBkZWYgY2hlY2tf
aW5jbHVkZV9saW5lKGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwgY2xlYW5fbGluZXMsIGxpbmVf
bnVtYmVyLCBpbmNsdQogICAgICAgICAgICAgaWYgcHJldmlvdXNfaGVhZGVyX3R5cGUgPT0gX09U
SEVSX0hFQURFUjoKICAgICAgICAgICAgICAgICBpZiAnPCcgaW4gcHJldmlvdXNfbGluZSBhbmQg
JyInIGluIGxpbmU6CiAgICAgICAgICAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnYnVp
bGQvaW5jbHVkZV9vcmRlcicsIDQsICdCYWQgaW5jbHVkZSBvcmRlci4gTWl4aW5nIHN5c3RlbSBh
bmQgY3VzdG9tIGhlYWRlcnMuJykKLSAgICAgICAgICAgICAgICBlbGlmIHByZXZpb3VzX2xpbmUu
c3RyaXAoKS5sb3dlcigpID4gbGluZS5zdHJpcCgpLmxvd2VyKCk6CisgICAgICAgICAgICAgICAg
ZWxpZiBwcmV2aW91c19saW5lLnN0cmlwKCkgPiBsaW5lLnN0cmlwKCk6CiAgICAgICAgICAgICAg
ICAgICAgICMgVGhpcyB0eXBlIG9mIGVycm9yIGlzIHBvdGVudGlhbGx5IGEgcHJvYmxlbSB3aXRo
IHRoaXMgbGluZSBvciB0aGUgcHJldmlvdXMgb25lLAogICAgICAgICAgICAgICAgICAgICAjIHNv
IGlmIHRoZSBlcnJvciBpcyBmaWx0ZXJlZCBmb3Igb25lIGxpbmUsIHJlcG9ydCBpdCBmb3IgdGhl
IG5leHQuIFRoaXMgaXMgc28gdGhhdAogICAgICAgICAgICAgICAgICAgICAjIHdlIHByb3Blcmx5
IGhhbmRsZSBwYXRjaGVzLCBmb3Igd2hpY2ggb25seSBtb2RpZmllZCBsaW5lcyBwcm9kdWNlIGVy
cm9ycy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBhODAyNTIxYzAxMzdjNDg2NTVmNzY1MDc2NDYxYWI3NDY1YzUzZWRlLi40
NDY3YTM5ZTlkNmFiOWUwMDZjYjhkYWZmNWZhNTAzYWM4NDExZmQxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjggQEAKKzIwMjAtMDItMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlzZSBET00gaXRlcmF0b3JzIGltcGxlbWVudGF0aW9uIGFuZCB1c2FnZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3ODE2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Rh
dGFsaXN0L2RhdGFsaXN0LWV4cGVjdGVkLnR4dDogVXBkYXRlZCBleHBlY3RhdGlvbnMuCisgICAg
ICAgICogZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC5odG1sOiBVcGRhdGVkIHRlc3Qgc2lu
Y2UgdGhlIG9wdGlvbnMgY29sbGVjdGlvbgorICAgICAgICBkb2VzIG5vdCBpbmRpY2F0ZSB3aGlj
aCBvcHRpb25zIGFyZSBzdWdnZXN0aW9ucyBhbmQgd2hpY2ggYXJlIG5vdC4gVGhlIHdlYgorICAg
ICAgICBwbGF0Zm9ybSB0ZXN0cyBhbHJlYWR5IGhhZCB0aGlzIHJpZ2h0LCB3aGljaCBpcyB3aHkg
d2UgaGFkIGEgZmFpbGluZyB0ZXN0IHRoZXJlLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zOiBSZW1vdmVkIHNvbWUgbGluZXMgZm9yIHRlc3QgdGhhdCBkb24n
dAorICAgICAgICBleGlzdCBhdCB0aGUgcGF0aHMgbWVudGlvbmVkLgorCisgICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMS9mYXN0L2Zvcm1zL2Zvcm0tcHNldWRvLXZhbGlkLXN0eWxlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1zL2NvbnN0cmFpbnRzL2Zvcm0tdmFs
aWRhdGlvbi13aWxsVmFsaWRhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vZmFzdC9mb3Jtcy9mb3JtLXBzZXVkby12YWxpZC1zdHlsZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICBFeHBlY3QgZmFpbHVyZSBvbiB0aGUgcGFydHMgb2YgdGhlc2UgdGVz
dHMgdGhhdCBhcmUgc3BlY2lmaWMgdG8gZGF0YWxpc3QsIHNpbmNlCisgICAgICAgIGRhdGFsaXN0
IGlzIG5vdCBlbmFibGVkIGluIHRoZXNlIGNvbmZpZ3VyYXRpb25zLiBCZWZvcmUgbm93LCB0aGUg
Y29kZSB3YXNuJ3QKKyAgICAgICAgcHJvcGVybHkgY29uZGl0aW9uYWxpemVkIGFuZCBzb21lIG9m
IHRoZSBkYXRhbGlzdCBiZWhhdmlvciB3b3VsZCBiZSBhY3RpdmUgZXZlbgorICAgICAgICB3aGVu
IHRoZSBmZWF0dXJlIHdhcyBkaXNhYmxlZC4gQmVzdCBsb25nZXIgdGVybSBzb2x1dGlvbiBpcyB0
byB0dXJuIHRoaXMgZmVhdHVyZQorICAgICAgICBvbiBmb3IgbW9yZSBwbGF0Zm9ybXMsIHBlcmhh
cHMgYWxsIG9mIHRoZW0uIEZvciBub3csIGxhbmRlZCBuZXcgZXhwZWN0ZWQgcmVzdWx0cworICAg
ICAgICBmb3IgY2FzZXMgdGhhdCBFV1MgaW5kaWNhdGVkLgorCiAyMDIwLTAyLTE4ICBSeWFuIEhh
ZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZWQgcmVzdWx0cyBk
dWUgdG8gQU5HTEUgdXNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAyYjVmMzdl
YjFkMWNjODAzODA5MDY5MDQwMjRhNDMxZGM2NmQ4ZmYwLi4yZjM4NDQxNzQ3NmMxOGQ5OGMyZWZl
MTVjNjE0ZmZmNTYyMjRmZDQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMC0wMi0xOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRvcnMgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy90aGUtZGF0YWxpc3QtZWxlbWVudC9kYXRh
bGlzdG9wdGlvbnMtZXhwZWN0ZWQudHh0OgorICAgICAgICBFeHBlY3QgdGhpcyB0ZXN0IHRvIHBh
c3MgaW5zdGVhZCBvZiBmYWlsaW5nLgorCiAyMDIwLTAyLTE3ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgRGVmZXIgZXhlY3V0aW9uIG9mIGFzeW5jIHNjcmlwdHMg
dW50aWwgdW50aWwgdGhlIGRvY3VtZW50IGlzIGxvYWRlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LWV4cGVjdGVkLnR4dAppbmRleCA0NjA5NDg5
MDRjZDIwMTk5ZjFkOTEyNmI4MmMxNGQ3YjljNDA0NzZlLi5jYmE2NTA1NzI3NmY0YWYxNTc5MDI4
OTllMWYzNTZkMzRjYTAyOTI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Rh
dGFsaXN0L2RhdGFsaXN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2RhdGFsaXN0L2RhdGFsaXN0LWV4cGVjdGVkLnR4dApAQCAtMyw4ICszLDggQEAgVGVzdCBmb3Ig
dGhlIGRhdGFsaXN0IGVsZW1lbnQuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFT
UyBkYXRhbGlzdC5vcHRpb25zLmxlbmd0aCBpcyA0Ci1QQVNTIGRhdGFsaXN0Lm9wdGlvbnMubGVu
Z3RoIGlzIDMKK1BBU1MgZGF0YWxpc3Qub3B0aW9ucy5sZW5ndGggaXMgNQorUEFTUyBkYXRhbGlz
dC5vcHRpb25zLmxlbmd0aCBpcyA1CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAK
IFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxp
c3QvZGF0YWxpc3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxp
c3QuaHRtbAppbmRleCA1NjFiNjZiNWM1ZDIyMjhmODNiNWQ4MjE1OTc5ZjA1ODkxMDE3OTM1Li5j
YWMxNWVmMTJiYmVmOWI1MzYzMjFkOWRlZjQ1MDUzYjEzYWQ3M2QyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0Lmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC5odG1sCkBAIC0xLDcgKzEsNyBAQAogPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CkBAIC0xNywxOCAr
MTcsMjAgQEAKIDwvZGF0YWxpc3Q+CiAKIDxzY3JpcHQ+CisKIGRlc2NyaXB0aW9uKCdUZXN0IGZv
ciB0aGUgZGF0YWxpc3QgZWxlbWVudC4nKTsKIAogdmFyIGRhdGFsaXN0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2RsMScpOwotLy8gQW4gb3B0aW9uIGVsZW1lbnQgd2l0aCBlbXB0eSB2YWx1
ZSBpcyBub3QgaW5jbHVkZWQuCi1zaG91bGRCZSgnZGF0YWxpc3Qub3B0aW9ucy5sZW5ndGgnLCAn
NCcpOwogCisvLyBBbiBvcHRpb24gZWxlbWVudCB3aXRoIGVtcHR5IHZhbHVlIGlzIG5vdCBhIHN1
Z2dlc3Rpb24sIGJ1dCBzdGlsbCBpcyBpbmNsdWRlZCBpbiB0aGUgb3B0aW9ucyBjb2xsZWN0aW9u
Lgorc2hvdWxkQmUoJ2RhdGFsaXN0Lm9wdGlvbnMubGVuZ3RoJywgJzUnKTsKKworLy8gQSBkaXNh
YmxlZCBvcHRpb24gZWxlbWVudCBpcyBubyBsb25nZXIgYSBzdWdnZXN0aW9uLCBidXQgc3RpbGwg
aXMgaW5jbHVkZWQgaW4gdGhlIG9wdGlvbnMgY29sbGVjdGlvbi4KIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdvNCcpLmRpc2FibGVkID0gdHJ1ZTsKLS8vIEEgZGlzYWJsZWQgb3B0aW9uIGVsZW1l
bnQgaXMgbm90IGluY2x1ZGVkLgotc2hvdWxkQmUoJ2RhdGFsaXN0Lm9wdGlvbnMubGVuZ3RoJywg
JzMnKTsKLS8vIEFmdGVyIGRhdGFsaXN0IGlzIGltcGxlbWVudGVkLCB0aGUgZXhwZWN0ZWQgdGV4
dCBzaG91bGQgbm90IGNvbnRhaW4gdGhlCi0vLyB0ZXh0IGluIHRoZSBkYXRhbGlzdCBlbGVtZW50
Lgorc2hvdWxkQmUoJ2RhdGFsaXN0Lm9wdGlvbnMubGVuZ3RoJywgJzUnKTsKKworLy8gQWxzbywg
dGhlIGV4cGVjdGVkIHRleHQgc2hvdWxkIG5vdCBjb250YWluIHRoZSB0ZXh0IGluIHRoZSBkYXRh
bGlzdCBlbGVtZW50LgorCiA8L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZm9ybXMvdGhlLWRhdGFsaXN0LWVsZW1lbnQvZGF0YWxpc3RvcHRpb25zLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZm9ybXMvdGhlLWRhdGFsaXN0LWVsZW1lbnQvZGF0YWxpc3RvcHRpb25zLWV4cGVj
dGVkLnR4dAppbmRleCBiNWM2ZTk1MzQ0M2NlOTRiOGY3OWMzYmY4ZDNkNzViMGJjMDAwOWNjLi4z
NTQ1YTdlODk3MThjMTU5MTIyYWRhODdjOWM2NmFlM2EzMjk5NjgxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zv
cm1zL3RoZS1kYXRhbGlzdC1lbGVtZW50L2RhdGFsaXN0b3B0aW9ucy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9mb3Jtcy90aGUtZGF0YWxpc3QtZWxlbWVudC9kYXRhbGlzdG9wdGlvbnMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsNCBAQAogCi1GQUlMIG9wdGlvbnMgbGFiZWwvdmFsdWUgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgNSBidXQgZ290IDMKK1BBU1Mgb3B0aW9ucyBsYWJlbC92YWx1ZSAKIFBB
U1MgSWYgYW4gZWxlbWVudCBoYXMgYSBkYXRhbGlzdCBlbGVtZW50IGFuY2VzdG9yLCBpdCBpcyBi
YXJyZWQgZnJvbSBjb25zdHJhaW50IHZhbGlkYXRpb24gCiBOdW1iZXI6ICAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxNDRhZjI3NjJiNzg3
NWE0OGFlNjc3ZTExYTFiYzRmYTEyODBjYTE5Li5hZjdlZWUzY2Y5MzJmMGQ5MDE4NTljOGIxYjhl
YTc1ZWE4NDg4MzM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhw
ZWN0YXRpb25zCkBAIC00NDksOSArNDQ5LDYgQEAgaW1wb3J0ZWQvYmxpbmsvc3ZnL2N1c3RvbS9t
YXJrZXItbGF5b3V0LWludmFsaWRhdGlvbi5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIGltcG9ydGVk
L2JsaW5rL2Zhc3QvY3NzL2NyYXNoLWNvcm5lci1wcmVzZW50Lmh0bWwgWyBQYXNzIFRpbWVvdXQg
XQogaW1wb3J0ZWQvYmxpbmsvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vaWZyYW1lLWNsaXAt
cmVtb3ZlZC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAotIyBBU0FOIHRlc3Qgb25seSBmYWlscyBv
biBXSzE6Ci13ZWJnbC8xLjAuMy8xNTEwNTVfYXNhbi5odG1sIFsgRmFpbHVyZSBdCi0KICMgTGFj
a2luZyBXSzEgVGVzdFJ1bm5lciBBUEkgdGhhdCBldmFsdWF0ZXMgSmF2YVNjcmlwdCB0aHJvdWdo
IEpTQyBBUElzIGFuZCBub3QgV2ViQ29yZSBBUElzLgogaW5zcGVjdG9yL3NjcmlwdC1wcm9maWxl
ci9ldmVudC10eXBlLUFQSS5odG1sIFsgU2tpcCBdCiAKQEAgLTc4MSw4ICs3NzgsNiBAQCB3ZWJr
aXQub3JnL2IvMTkwMzUwIFsgTW9qYXZlIF0gc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2Utb2Rk
LW5hbWVzLmh0bWwgWyBGYWlsdQogCiB3ZWJraXQub3JnL2IvMTkwODMyIFsgRGVidWcgXSBmYXN0
L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdG8tbm9uLWVkaXRlZC1jb250cm9scy5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE5MDgzMyBbIERlYnVnIF0gaW5zcGVjdG9yL2NvZGVt
aXJyb3IvcHJldHR5cHJpbnRpbmctY3NzLmh0bWwgWyBTbG93IF0KLQogd2Via2l0Lm9yZy9iLzE5
MDg0OSBodHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLW11
bHRpcGxlLWhlYWRlcnMtc2FtZW9yaWdpbi1kZW55Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3
ZWJraXQub3JnL2IvMTg2NDA2IFsgTW9qYXZlKyBdIGNvbXBvc2l0aW5nL2lmcmFtZXMvZGlzcGxh
eS1ub25lLXN1YmZyYW1lLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9mYXN0L2Zvcm1zL2Zvcm0tcHNldWRvLXZhbGlkLXN0eWxl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvZmFzdC9mb3Jtcy9m
b3JtLXBzZXVkby12YWxpZC1zdHlsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQzZmFhNzUx
NzUzMTcyZDEyYmU5NDFkN2Y5OGFjODdlNWQ2Njk2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azEvZmFzdC9mb3Jtcy9mb3JtLXBzZXVkby12YWxpZC1zdHls
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NCBAQAorQ2hlY2sgaWYgOnZhbGlkLzppbnZhbGlk
IENTUyBwc2V1ZG8gc2VsZWN0b3JzIGFyZSBsaXZlbHkgYXBwbGllZCBmb3IgZm9ybXMKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1JlbW92aW5nIGFuZCBhZGRpbmcgcmVxdWlyZWQg
dGV4dCBpbnB1dHMgYW5kIG1vZGlmeWluZyB0aGVpciB2YWx1ZSBieSBhIERPTSB0cmVlIG11dGF0
aW9uOgorUEFTUyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyBiYWNr
Z3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCitQQVNTIGZvcm0xLnJlbW92ZUNoaWxk
KGlucHV0MSk7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3Jv
dW5kT2Yoc3ViMSkgaXMgc3ViVmFsaWRDb2xvcgorUEFTUyBmb3JtMS5hcHBlbmRDaGlsZChpbnB1
dDEpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5k
T2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCitQQVNTIGlucHV0MS5zZXRBdHRyaWJ1dGUoInZh
bHVlIiwgImEiKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tn
cm91bmRPZihzdWIxKSBpcyBzdWJWYWxpZENvbG9yCitQQVNTIGlucHV0Mi5zZXRBdHRyaWJ1dGUo
InZhbHVlIiwgIiIpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyBi
YWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCisKK0Rpc2FibGluZyBhbmQgbWFy
a2luZyBpbnB1dHMgcmVhZG9ubHkgYnkgYSBET00gdHJlZSBtdXRhdGlvbjoKK1BBU1MgYmFja2dy
b3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlz
IHN1YkludmFsaWRDb2xvcgorUEFTUyBpbnB1dDEuZGlzYWJsZWQ9MTsgYmFja2dyb3VuZE9mKGZv
cm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJWYWxpZENv
bG9yCitQQVNTIGlucHV0MS5kaXNhYmxlZD0wOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFs
aWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCitQQVNT
IGlucHV0MS5zZXRBdHRyaWJ1dGUoInJlYWRvbmx5IiwgIjEiKTsgYmFja2dyb3VuZE9mKGZvcm0x
KSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJWYWxpZENvbG9y
CisKK01vdmUgZWxlbWVudCB1bmRlciBkYXRhbGlzdCBieSBhIERPTSB0cmVlIG11dGF0aW9uOgor
UEFTUyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyBwYXJlbnQucmVt
b3ZlQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitGQUlM
IGRsMS5hcHBlbmRDaGlsZChpbnB1dDEpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIHNob3VsZCBiZSBy
Z2IoMCwgMjU1LCAwKS4gV2FzIHJnYigyNTUsIDAsIDApLgorUEFTUyBwYXJlbnQuYXBwZW5kQ2hp
bGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKKworQWRkaW5n
IGEgcmVxdWlyZWQgdGV4dCBpbnB1dCB0aGF0IGlzIG5vdCBhIGRpcmVjdCBjaGlsZCBvZiB0aGUg
Zm9ybToKK1BBU1MgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGRpdjEu
YXBwZW5kQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IK
KworUmVuZGVyIG11bHRpcGxlIGZvcm1zIGFuZCByZWFzc2lnbiBhbiBpbnZhbGlkIGlucHV0IGZy
b20gb25lIHRvIGFub3RoZXI6CitQQVNTIGJhY2tncm91bmRPZigkKCJmb3JtMSIpKSBpcyBpbnZh
bGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKCQoImZvcm0yIikpIGlzIHZhbGlkQ29sb3IKK1BB
U1MgYmFja2dyb3VuZE9mKCQoImZvcm0zIikpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3Vu
ZE9mKCQoImZvcm0xIikpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKCQoImZvcm0z
IikpIGlzIGludmFsaWRDb2xvcgorCitFbnN1cmUgdGhhdCBpbnZhbGlkIGV2ZW50IHdhcyBub3Qg
dHJpZ2dlcmVkIG9uIHN0eWxlIGV2YWx1YXRpb246CitQQVNTIGJhY2tncm91bmRPZihmb3JtMSkg
aXMgaW52YWxpZENvbG9yCitQQVNTIHZhbCBpcyAiMCIKK1BBU1MgZm9ybTEuY2hlY2tWYWxpZGl0
eSgpOyB2YWwgaXMgIjEiCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKK1NvbWUg
dGVzdHMgZmFpbGVkLgorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9mb3Jtcy9jb25zdHJhaW50cy9mb3JtLXZhbGlkYXRpb24td2lsbFZhbGlkYXRlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy9jb25zdHJhaW50cy9mb3JtLXZh
bGlkYXRpb24td2lsbFZhbGlkYXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWQ1MzY4MDQz
ZThjMTdkZGZlODgyYTM1MzU1YTVhNDcyZjc2NTVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2Zvcm1zL2NvbnN0cmFpbnRzL2Zvcm0tdmFsaWRhdGlvbi13aWxsVmFsaWRh
dGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTcgQEAKKworUEFTUyBbSU5QVVQgaW4gSElEREVO
IHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIAor
UEFTUyBbSU5QVVQgaW4gQlVUVE9OIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29u
c3RyYWludCB2YWxpZGF0aW9uIAorUEFTUyBbSU5QVVQgaW4gUkVTRVQgc3RhdHVzXSBNdXN0IGJl
IGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gCitQQVNTIFtCVVRUT04gaW4g
QlVUVE9OIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxpZGF0
aW9uIAorUEFTUyBbQlVUVE9OIGluIFJFU0VUIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0
aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIAorUEFTUyBbZmllbGRzZXRdICBUaGUgd2lsbFZhbGlk
YXRlIGF0dHJpYnV0ZSBtdXN0IGJlIGZhbHNlIHNpbmNlIEZJRUxEU0VUIGlzIG5vdCBhIHN1Ym1p
dHRhYmxlIGVsZW1lbnQgCitQQVNTIFtvdXRwdXRdICBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0
ZSBtdXN0IGJlIGZhbHNlIHNpbmNlIE9VVFBVVCBpcyBub3QgYSBzdWJtaXR0YWJsZSBlbGVtZW50
IAorUEFTUyBbb2JqZWN0XSAgTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxp
ZGF0aW9uIAorUEFTUyBbSU5QVVQgaW4gVEVYVCBzdGF0dXNdIE11c3QgYmUgYmFycmVkIGZyb20g
dGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyBkaXNhYmxlZCAKK1BBU1MgW0lOUFVU
IGluIFRFWFQgc3RhdHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIHRydWUg
aWYgYW4gZWxlbWVudCBpcyBtdXRhYmxlIAorUEFTUyBbSU5QVVQgaW4gVEVYVCBzdGF0dXNdIE11
c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyByZWFk
b25seSAKK1BBU1MgW0lOUFVUIGluIFRFWFQgc3RhdHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJp
YnV0ZSBtdXN0IGJlIGZhbHNlIGlmIGl0IGhhcyBhIGRhdGFsaXN0IGFuY2VzdG9yIAorUEFTUyBb
SU5QVVQgaW4gU0VBUkNIIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWlu
dCB2YWxpZGF0aW9uIGlmIGl0IGlzIGRpc2FibGVkIAorUEFTUyBbSU5QVVQgaW4gU0VBUkNIIHN0
YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSB0cnVlIGlmIGFuIGVsZW1l
bnQgaXMgbXV0YWJsZSAKK1BBU1MgW0lOUFVUIGluIFNFQVJDSCBzdGF0dXNdIE11c3QgYmUgYmFy
cmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyByZWFkb25seSAKK1BB
U1MgW0lOUFVUIGluIFNFQVJDSCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11
c3QgYmUgZmFsc2UgaWYgaXQgaGFzIGEgZGF0YWxpc3QgYW5jZXN0b3IgCitQQVNTIFtJTlBVVCBp
biBURUwgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRp
b24gaWYgaXQgaXMgZGlzYWJsZWQgCitQQVNTIFtJTlBVVCBpbiBURUwgc3RhdHVzXSBUaGUgd2ls
bFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIHRydWUgaWYgYW4gZWxlbWVudCBpcyBtdXRhYmxl
IAorUEFTUyBbSU5QVVQgaW4gVEVMIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29u
c3RyYWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIHJlYWRvbmx5IAorUEFTUyBbSU5QVVQgaW4gVEVM
IHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSBmYWxzZSBpZiBpdCBo
YXMgYSBkYXRhbGlzdCBhbmNlc3RvciAKK1BBU1MgW0lOUFVUIGluIFVSTCBzdGF0dXNdIE11c3Qg
YmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyBkaXNhYmxl
ZCAKK1BBU1MgW0lOUFVUIGluIFVSTCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRl
IG11c3QgYmUgdHJ1ZSBpZiBhbiBlbGVtZW50IGlzIG11dGFibGUgCitQQVNTIFtJTlBVVCBpbiBV
Ukwgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24g
aWYgaXQgaXMgcmVhZG9ubHkgCitQQVNTIFtJTlBVVCBpbiBVUkwgc3RhdHVzXSBUaGUgd2lsbFZh
bGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIGZhbHNlIGlmIGl0IGhhcyBhIGRhdGFsaXN0IGFuY2Vz
dG9yIAorUEFTUyBbSU5QVVQgaW4gRU1BSUwgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRo
ZSBjb25zdHJhaW50IHZhbGlkYXRpb24gaWYgaXQgaXMgZGlzYWJsZWQgCitQQVNTIFtJTlBVVCBp
biBFTUFJTCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgdHJ1ZSBp
ZiBhbiBlbGVtZW50IGlzIG11dGFibGUgCitQQVNTIFtJTlBVVCBpbiBFTUFJTCBzdGF0dXNdIE11
c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyByZWFk
b25seSAKK1BBU1MgW0lOUFVUIGluIEVNQUlMIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRy
aWJ1dGUgbXVzdCBiZSBmYWxzZSBpZiBpdCBoYXMgYSBkYXRhbGlzdCBhbmNlc3RvciAKK1BBU1Mg
W0lOUFVUIGluIFBBU1NXT1JEIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3Ry
YWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIGRpc2FibGVkIAorUEFTUyBbSU5QVVQgaW4gUEFTU1dP
UkQgc3RhdHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIHRydWUgaWYgYW4g
ZWxlbWVudCBpcyBtdXRhYmxlIAorUEFTUyBbSU5QVVQgaW4gUEFTU1dPUkQgc3RhdHVzXSBNdXN0
IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gaWYgaXQgaXMgcmVhZG9u
bHkgCitQQVNTIFtJTlBVVCBpbiBQQVNTV09SRCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0
cmlidXRlIG11c3QgYmUgZmFsc2UgaWYgaXQgaGFzIGEgZGF0YWxpc3QgYW5jZXN0b3IgCitGQUlM
IFtJTlBVVCBpbiBEQVRFVElNRS1MT0NBTCBzdGF0dXNdIFRoZSBkYXRldGltZS1sb2NhbCB0eXBl
IG11c3QgYmUgc3VwcG9ydGVkLiBhc3NlcnRfZXF1YWxzOiBUaGUgZGF0ZXRpbWUtbG9jYWwgdHlw
ZSBzaG91bGQgYmUgc3VwcG9ydGVkLiBleHBlY3RlZCAiZGF0ZXRpbWUtbG9jYWwiIGJ1dCBnb3Qg
InRleHQiCitGQUlMIFtJTlBVVCBpbiBEQVRFIHN0YXR1c10gVGhlIGRhdGUgdHlwZSBtdXN0IGJl
IHN1cHBvcnRlZC4gYXNzZXJ0X2VxdWFsczogVGhlIGRhdGUgdHlwZSBzaG91bGQgYmUgc3VwcG9y
dGVkLiBleHBlY3RlZCAiZGF0ZSIgYnV0IGdvdCAidGV4dCIKK0ZBSUwgW0lOUFVUIGluIE1PTlRI
IHN0YXR1c10gVGhlIG1vbnRoIHR5cGUgbXVzdCBiZSBzdXBwb3J0ZWQuIGFzc2VydF9lcXVhbHM6
IFRoZSBtb250aCB0eXBlIHNob3VsZCBiZSBzdXBwb3J0ZWQuIGV4cGVjdGVkICJtb250aCIgYnV0
IGdvdCAidGV4dCIKK0ZBSUwgW0lOUFVUIGluIFdFRUsgc3RhdHVzXSBUaGUgd2VlayB0eXBlIG11
c3QgYmUgc3VwcG9ydGVkLiBhc3NlcnRfZXF1YWxzOiBUaGUgd2VlayB0eXBlIHNob3VsZCBiZSBz
dXBwb3J0ZWQuIGV4cGVjdGVkICJ3ZWVrIiBidXQgZ290ICJ0ZXh0IgorRkFJTCBbSU5QVVQgaW4g
VElNRSBzdGF0dXNdIFRoZSB0aW1lIHR5cGUgbXVzdCBiZSBzdXBwb3J0ZWQuIGFzc2VydF9lcXVh
bHM6IFRoZSB0aW1lIHR5cGUgc2hvdWxkIGJlIHN1cHBvcnRlZC4gZXhwZWN0ZWQgInRpbWUiIGJ1
dCBnb3QgInRleHQiCitGQUlMIFtJTlBVVCBpbiBDT0xPUiBzdGF0dXNdIFRoZSBjb2xvciB0eXBl
IG11c3QgYmUgc3VwcG9ydGVkLiBhc3NlcnRfZXF1YWxzOiBUaGUgY29sb3IgdHlwZSBzaG91bGQg
YmUgc3VwcG9ydGVkLiBleHBlY3RlZCAiY29sb3IiIGJ1dCBnb3QgInRleHQiCitQQVNTIFtJTlBV
VCBpbiBGSUxFIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxp
ZGF0aW9uIGlmIGl0IGlzIGRpc2FibGVkIAorUEFTUyBbSU5QVVQgaW4gRklMRSBzdGF0dXNdIFRo
ZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgdHJ1ZSBpZiBhbiBlbGVtZW50IGlzIG11
dGFibGUgCitQQVNTIFtJTlBVVCBpbiBGSUxFIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0
aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIHJlYWRvbmx5IAorUEFTUyBbSU5QVVQg
aW4gRklMRSBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgZmFsc2Ug
aWYgaXQgaGFzIGEgZGF0YWxpc3QgYW5jZXN0b3IgCitQQVNTIFtJTlBVVCBpbiBTVUJNSVQgc3Rh
dHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gaWYgaXQg
aXMgZGlzYWJsZWQgCitQQVNTIFtJTlBVVCBpbiBTVUJNSVQgc3RhdHVzXSBUaGUgd2lsbFZhbGlk
YXRlIGF0dHJpYnV0ZSBtdXN0IGJlIHRydWUgaWYgYW4gZWxlbWVudCBpcyBtdXRhYmxlIAorUEFT
UyBbSU5QVVQgaW4gU1VCTUlUIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3Ry
YWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIHJlYWRvbmx5IAorUEFTUyBbSU5QVVQgaW4gU1VCTUlU
IHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSBmYWxzZSBpZiBpdCBo
YXMgYSBkYXRhbGlzdCBhbmNlc3RvciAKK1BBU1MgW0JVVFRPTiBpbiBTVUJNSVQgc3RhdHVzXSBN
dXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gCitQQVNTIFtCVVRU
T04gaW4gU1VCTUlUIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSB0
cnVlIGlmIGFuIGVsZW1lbnQgaXMgbXV0YWJsZSAKK0ZBSUwgW0JVVFRPTiBpbiBTVUJNSVQgc3Rh
dHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIGZhbHNlIGlmIGl0IGhhcyBh
IGRhdGFsaXN0IGFuY2VzdG9yIGFzc2VydF9mYWxzZTogVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1
dGUgc2hvdWxkIGJlIGZhbHNlLiBleHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQorUEFTUyBbc2VsZWN0
XSAgTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIAorUEFTUyBb
c2VsZWN0XSAgVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSB0cnVlIGlmIGFuIGVs
ZW1lbnQgaXMgbXV0YWJsZSAKK0ZBSUwgW3NlbGVjdF0gIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmli
dXRlIG11c3QgYmUgZmFsc2UgaWYgaXQgaGFzIGEgZGF0YWxpc3QgYW5jZXN0b3IgYXNzZXJ0X2Zh
bHNlOiBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBzaG91bGQgYmUgZmFsc2UuIGV4cGVjdGVk
IGZhbHNlIGdvdCB0cnVlCitQQVNTIFt0ZXh0YXJlYV0gIE11c3QgYmUgYmFycmVkIGZyb20gdGhl
IGNvbnN0cmFpbnQgdmFsaWRhdGlvbiAKK1BBU1MgW3RleHRhcmVhXSAgVGhlIHdpbGxWYWxpZGF0
ZSBhdHRyaWJ1dGUgbXVzdCBiZSB0cnVlIGlmIGFuIGVsZW1lbnQgaXMgbXV0YWJsZSAKK0ZBSUwg
W3RleHRhcmVhXSAgVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSBmYWxzZSBpZiBp
dCBoYXMgYSBkYXRhbGlzdCBhbmNlc3RvciBhc3NlcnRfZmFsc2U6IFRoZSB3aWxsVmFsaWRhdGUg
YXR0cmlidXRlIHNob3VsZCBiZSBmYWxzZS4gZXhwZWN0ZWQgZmFsc2UgZ290IHRydWUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvZm9ybXMvZm9ybS1wc2V1ZG8t
dmFsaWQtc3R5bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3Qv
Zm9ybXMvZm9ybS1wc2V1ZG8tdmFsaWQtc3R5bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0
M2ZhYTc1MTc1MzE3MmQxMmJlOTQxZDdmOThhYzg3ZTVkNjY5NjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9mb3Jtcy9mb3JtLXBzZXVkby12YWxpZC1z
dHlsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NCBAQAorQ2hlY2sgaWYgOnZhbGlkLzppbnZh
bGlkIENTUyBwc2V1ZG8gc2VsZWN0b3JzIGFyZSBsaXZlbHkgYXBwbGllZCBmb3IgZm9ybXMKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1JlbW92aW5nIGFuZCBhZGRpbmcgcmVxdWly
ZWQgdGV4dCBpbnB1dHMgYW5kIG1vZGlmeWluZyB0aGVpciB2YWx1ZSBieSBhIERPTSB0cmVlIG11
dGF0aW9uOgorUEFTUyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyBi
YWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCitQQVNTIGZvcm0xLnJlbW92ZUNo
aWxkKGlucHV0MSk7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNr
Z3JvdW5kT2Yoc3ViMSkgaXMgc3ViVmFsaWRDb2xvcgorUEFTUyBmb3JtMS5hcHBlbmRDaGlsZChp
bnB1dDEpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyBiYWNrZ3Jv
dW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCitQQVNTIGlucHV0MS5zZXRBdHRyaWJ1dGUo
InZhbHVlIiwgImEiKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGJh
Y2tncm91bmRPZihzdWIxKSBpcyBzdWJWYWxpZENvbG9yCitQQVNTIGlucHV0Mi5zZXRBdHRyaWJ1
dGUoInZhbHVlIiwgIiIpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFT
UyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCisKK0Rpc2FibGluZyBhbmQg
bWFya2luZyBpbnB1dHMgcmVhZG9ubHkgYnkgYSBET00gdHJlZSBtdXRhdGlvbjoKK1BBU1MgYmFj
a2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEp
IGlzIHN1YkludmFsaWRDb2xvcgorUEFTUyBpbnB1dDEuZGlzYWJsZWQ9MTsgYmFja2dyb3VuZE9m
KGZvcm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJWYWxp
ZENvbG9yCitQQVNTIGlucHV0MS5kaXNhYmxlZD0wOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGlu
dmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCitQ
QVNTIGlucHV0MS5zZXRBdHRyaWJ1dGUoInJlYWRvbmx5IiwgIjEiKTsgYmFja2dyb3VuZE9mKGZv
cm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJWYWxpZENv
bG9yCisKK01vdmUgZWxlbWVudCB1bmRlciBkYXRhbGlzdCBieSBhIERPTSB0cmVlIG11dGF0aW9u
OgorUEFTUyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyBwYXJlbnQu
cmVtb3ZlQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitG
QUlMIGRsMS5hcHBlbmRDaGlsZChpbnB1dDEpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIHNob3VsZCBi
ZSByZ2IoMCwgMjU1LCAwKS4gV2FzIHJnYigyNTUsIDAsIDApLgorUEFTUyBwYXJlbnQuYXBwZW5k
Q2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKKworQWRk
aW5nIGEgcmVxdWlyZWQgdGV4dCBpbnB1dCB0aGF0IGlzIG5vdCBhIGRpcmVjdCBjaGlsZCBvZiB0
aGUgZm9ybToKK1BBU1MgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGRp
djEuYXBwZW5kQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29s
b3IKKworUmVuZGVyIG11bHRpcGxlIGZvcm1zIGFuZCByZWFzc2lnbiBhbiBpbnZhbGlkIGlucHV0
IGZyb20gb25lIHRvIGFub3RoZXI6CitQQVNTIGJhY2tncm91bmRPZigkKCJmb3JtMSIpKSBpcyBp
bnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKCQoImZvcm0yIikpIGlzIHZhbGlkQ29sb3IK
K1BBU1MgYmFja2dyb3VuZE9mKCQoImZvcm0zIikpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dy
b3VuZE9mKCQoImZvcm0xIikpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKCQoImZv
cm0zIikpIGlzIGludmFsaWRDb2xvcgorCitFbnN1cmUgdGhhdCBpbnZhbGlkIGV2ZW50IHdhcyBu
b3QgdHJpZ2dlcmVkIG9uIHN0eWxlIGV2YWx1YXRpb246CitQQVNTIGJhY2tncm91bmRPZihmb3Jt
MSkgaXMgaW52YWxpZENvbG9yCitQQVNTIHZhbCBpcyAiMCIKK1BBU1MgZm9ybTEuY2hlY2tWYWxp
ZGl0eSgpOyB2YWwgaXMgIjEiCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKK1Nv
bWUgdGVzdHMgZmFpbGVkLgorCitURVNUIENPTVBMRVRFCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391250</attachid>
            <date>2020-02-19 20:34:20 -0800</date>
            <delta_ts>2020-02-19 20:56:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207816-20200219203419.patch</filename>
            <type>text/plain</type>
            <size>277290</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODdlNGE5N2M1YTRhYTMy
MjIwODNhMWQ3NjdhZGFhNTZkMWVkYmE5OC4uZmE5Y2M0OTU4OGY1MjZjZmI0YWQwODIwNzg2M2Rj
NjM0YWExMjFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4OCBAQAorMjAyMC0wMi0xOCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRv
cnMgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZpbmVkIGVsZW1lbnQgaXRlcmF0b3IgaW1wbGVtZW50YXRp
b24gaW4gdGhlIGZvbGxvd2luZyB3YXlzOgorCisgICAgICAgIDEpIFJlbW92ZWQgdGhlIGR1cGxp
Y2F0ZSBkZXNjZW5kYW50IGl0ZXJhdG9yLCBrZWVwaW5nIHRoZSBvbmUgdGhhdCBtYXRjaGVzCisg
ICAgICAgICAgIHRoZSBzdHlsZSBvZiB0aGUgYW5jZXN0b3IgYW5kIGNoaWxkIGl0ZXJhdG9ycy4K
KyAgICAgICAgMikgUmVtb3ZlZCB0aGUgbm9uLXRlbXBsYXRlIGVsZW1lbnRBbmNlc3RvcnMsIGVs
ZW1lbnRDaGlsZHJlbiwgZWxlbWVudERlc2NlbmRhbnRzLAorICAgICAgICAgICBhbmQgZWxlbWVu
dExpbmVhZ2UgZnVuY3Rpb25zIGFuZCBjaGFuZ2VkIGNhbGxlcnMgdG8gdXNlIHh4eE9mVHlwZTxF
bGVtZW50PiBpbnN0ZWFkLgorCisgICAgICAgIEFsc28gcmVwbGFjZWQgdXNlIG9mIEhUTUxDb2xs
ZWN0aW9uIGNsYXNzZXMgaW4gV2ViS2l0IGNvZGUgZm9yIGl0ZXJhdGlvbi4KKyAgICAgICAgVGhl
eSBhcmUgZmluZSBmb3IgdXNlIGZyb20gSmF2YVNjcmlwdCwgYnV0IGludGVybmFsbHkgd2UgaGF2
ZSBtb3JlIGVmZmljaWVudAorICAgICAgICBpdGVyYXRpb24gaWRpb21zLgorCisgICAgICAgICog
SGVhZGVycy5jbWFrZTogUmVtb3ZlZCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmguCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmVkIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IuaCBhbmQKKyAgICAgICAgYWRkZWQgUmFkaW9Ob2RlTGlzdC5pZGwu
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojptb3VzZUJ1dHRvbkxp
c3RlbmVyIGNvbnN0KTogVXNlCisgICAgICAgIGxpbmVhZ2VPZlR5cGUgaW5zdGVhZCBvZiBlbGVt
ZW50TGluZWFnZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgVXNlIGFuY2Vz
dG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEgaGFuZHdyaXR0ZW4gbG9vcC4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcDogUmVtb3ZlZCB1bm5lZWRl
ZCBpbmNsdWRlIG9mCisgICAgICAgIEhUTUxDb2xsZWN0aW9uLmguCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOiBEaXR0by4KKworICAgICAgICAqIGRvbS9DaGls
ZE5vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUxpc3Q6OkNoaWxkTm9k
ZUxpc3QpOiBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIG1faW5kZXhDYWNoZQorICAgICAgICBz
aW5jZSB0aGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlcXVpcmVzIGFyZ3VtZW50cy4KKyAgICAg
ICAgKFdlYkNvcmU6OkNoaWxkTm9kZUxpc3Q6OmludmFsaWRhdGVDYWNoZSk6IFJlbW92ZWQgYXJn
dW1lbnQgdG8KKyAgICAgICAgQ29sbGVjdGlvbkluZGV4Q2FjaGU6OmludmFsaWRhdGUuCisgICAg
ICAgICogZG9tL0NoaWxkTm9kZUxpc3QuaDogUmVtb3ZlZCBjb2xsZWN0aW9uRW5kLCBzaW5jZSBp
dCdzIG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgKiBkb20vQ29sbGVjdGlvbkluZGV4Q2Fj
aGUuaDogUmVtb3ZlZCB0aGUgY29sbGVjdGlvbiBhcmd1bWVudCB0byB0aGUKKyAgICAgICAgY29u
c3RydWN0b3IsIGhhc1ZhbGlkQ2FjaGUsIGFuZCBpbnZhbGlkYXRlIGZ1bmN0aW9ucy4gVXBkYXRl
ZCBhbGdvcml0aG1zIHRvIHVzZQorICAgICAgICBudWxsIHN0eWxlIHRlcm1pbmF0aW9uIGluc3Rl
YWQgb2YgYWN0dWFsbHkgcmVseWluZyBvbiBjb21wYXJpbmcgd2l0aCBhbiBlbmQKKyAgICAgICAg
aXRlcmF0b3IsIHNpbmNlIHRoYXQgd29ya3MgZm9yIG91ciBlbGVtZW50IGl0ZXJhdG9ycy4KKwor
ICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OmNoaWxkRWxlbWVudENvdW50IGNvbnN0KTogVXNlIGFuIGVtcHR5IGluaXRpYWxp
emVyCisgICAgICAgIGxpc3QgaW5zdGVhZCBvZiB0aGUgcmVzdWx0IG9mIHRoZSBlbmQgZnVuY3Rp
b24gc2luY2Ugc3RkOjpkaXN0YW5jZSByZXF1aXJlcworICAgICAgICBib3RoIGJlZ2luIGFuZCBl
bmQgaXRlcmF0b3JzIGhhdmUgdGhlIHNhbWUgdHlwZS4KKworICAgICAgICAqIGRvbS9Db250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAgICAgICogZG9tL0N1
c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHA6IERpdHRvLgorCisgICAgICAgICogZG9tL0RvY3VtZW50
RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6Z2V0RWxl
bWVudEJ5SWQgY29uc3QpOiBVc2UKKyAgICAgICAgZGVzY2VuZGFudHNPZlR5cGUgaW5zdGVhZG9m
IGVsZW1lbnREZXNjZW5kYW50cy4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSBjb25zdCk6IFVz
ZSBsaW5lYWdlT2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2YgYSBoYW5kcndpdHRlbiBsb29wLgor
CisgICAgICAgICogZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmg6IE1vdmVkIHRoZSBkZWNs
YXJhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucworICAgICAgICB0byB0aGUgdG9wIG9mIHRoZSBmaWxl
LCBzaW5jZSB0aGUgY2xhc3NlcyBhcmUgcmVhbGx5IGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisg
ICAgICAgIFJlbW92ZWQgdGhlIHNlcGFyYXRlICJDb25zdCIgdmVyc2lvbnMgb2YgZXZlcnl0aGlu
ZyBzaW5jZSB3ZSBjYW4ganVzdCB1c2UKKyAgICAgICAgY29uc3QgaW4gdGhlIHRlbXBsYXRlIGFy
Z3VtZW50IHR5cGUgaW5zdGVhZC4gVXNlIHRoZSB0ZXJtICJSYW5nZSIgaW5zdGVhZAorICAgICAg
ICBvZiB0aGUgdGVybSAiSXRlcmF0b3JBZGFwdGVyIiBmb3IgdGhlIGNsYXNzIHRlbXBsYXRlcyBm
b3IgdXNlIGluIHJhbmdlLWJhc2VkCisgICAgICAgIGZvciBsb29wcyBzaW5jZSB0aGF0J3MgY2xv
c2VyIHRvIG1vZGVybiBDKysgdGVybWlub2xvZ3kuIFVzZSBudWxscHRyIGFzIGEKKyAgICAgICAg
c2VudGluZWwgZm9yIGVuZCwgd2hpY2ggd29ya3Mgd2VsbCB3aXRoIHJhbmdlLWJhc2VkIGZvciBs
b29wcy4gTWFkZSBtYW55IGZ1bmN0aW9uCisgICAgICAgIG1lbWJlcnMgY29uc3Qgd2hlcmUgYXBw
cm9wcmlhdGUuIFNwZWNpYWxpemVkIGxpbmVhZ2VPZlR5cGUgYW5kIGFuY2VzdG9yc09mVHlwZQor
ICAgICAgICBmb3IgRWxlbWVudCB0byBzbGlnaHRseSBvcHRpbWl6ZSB0aGF0IGNhc2UuIFVzZSBk
b3duY2FzdCBpbnN0ZWFkIG9mIHN0YXRpY19jYXN0LgorICAgICAgICBEZWxldGVkIGVsZW1lbnRM
aW5lYWdlIGFuZCBlbGVtZW50QW5jZXN0b3JzLgorCisgICAgICAgICogZG9tL0VsZW1lbnRBbmRU
ZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmg6IFJlbmFtZWQgSXRlcmF0b3JBZGFwdGVyIHRvIFJhbmdl
LgorICAgICAgICBNYWRlIG1vcmUgZnVuY3Rpb24gbWVtYmVycyBjb25zdC4KKworICAgICAgICAq
IGRvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oOiBNb3ZlZCB0aGUgZGVjbGFyYXRpb25zIG9mIHRo
ZSBmdW5jdGlvbnMKKyAgICAgICAgdG8gdGhlIHRvcCBvZiB0aGUgZmlsZSwgc2luY2UgdGhlIGNs
YXNzZXMgYXJlIHJlYWxseSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgorICAgICAgICBSZW1vdmVk
IHRoZSBzZXBhcmF0ZSAiQ29uc3QiIHZlcnNpb25zIG9mIGV2ZXJ5dGhpbmcgc2luY2Ugd2UgY2Fu
IGp1c3QgdXNlCisgICAgICAgIGNvbnN0IGluIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudCB0eXBlIGlu
c3RlYWQuIFVzZSB0aGUgdGVybSAiUmFuZ2UiIGluc3RlYWQKKyAgICAgICAgb2YgdGhlIHRlcm0g
Ikl0ZXJhdG9yQWRhcHRlciIgZm9yIHRoZSBjbGFzcyB0ZW1wbGF0ZXMgZm9yIHVzZSBpbiByYW5n
ZS1iYXNlZAorICAgICAgICBmb3IgbG9vcHMgc2luY2UgdGhhdCdzIGNsb3NlciB0byBtb2Rlcm4g
QysrIHRlcm1pbm9sb2d5LiBVc2UgbnVsbHB0ciBhcyBhCisgICAgICAgIHNlbnRpbmVsIGZvciBl
bmQsIHdoaWNoIHdvcmtzIHdlbGwgd2l0aCByYW5nZS1iYXNlZCBmb3IgbG9vcHMuIE1hZGUgbWFu
eQorICAgICAgICBmdW5jdGlvbiBtZW1iZXJzIGNvbnN0IHdoZXJlIGFwcHJvcHJpYXRlLiBEZWxl
dGVkIGVsZW1lbnRDaGlsZHJlbi4KKworICAgICAgICAqIGRvbS9FbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBkb20vRWxlbWVudEl0ZXJhdG9yLmg6IENo
YW5nZWQgRWxlbWVudEl0ZXJhdG9yIHRvIGRlcml2ZSBmcm9tIHN0ZDo6aXRlcmF0b3IKKyAgICAg
ICAgdG8gbWFrZSBpdGVyYXRvciB0cmFpdHMgd29yayBmb3IgYWxsIGNsYXNzZXMgZGVyaXZlZCBm
cm9tIGl0LiBNYWRlIGNvbnN0cnVjdG9ycworICAgICAgICBvZiBFbGVtZW50SXRlcmF0b3IgcHJp
dmF0ZSB0byBtYWtlIGl0IGNsZWFyIGl0J3MgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBhIGJhc2UK
KyAgICAgICAgY2xhc3MgYW5kIG5vdCBpbnN0YW50aWF0ZWQuIEFkZGVkIGFuIGVtcHR5IGNvbnN0
cnVjdG9yLiBEZWxldGVkIHRoZSA9PSBvcGVyYXRvci4KKyAgICAgICAgQWRkZWQgY29udmVyc2lv
bnMgdG8gYm9vbCBhbmQgb3BlcmF0b3IhIHNvIHRoZSBpdGVyYXRvciBjYW4gYmUgdXNlZCAibnVs
bCBzdHlsZSIKKyAgICAgICAgb3V0c2lkZSBvZiByYW5nZS1iYXNlZCBmb3IgbG9vcHMuIEFkZGVk
IGEgIT0gb3BlcmF0b3IgdGhhdCB3b3JrcyB3aXRoIG51bGxwdHIKKyAgICAgICAgc28gd2UgY2Fu
IHVzZSBudWxscHRyIGFzIGEgc2VudGluZWwgaW4gcmFuZ2UtYmFzZWQgZm9yIGxvb3BzLiBGb3Ig
dGhlICE9CisgICAgICAgIG9wZXJhdG9yLCByZWxheGVkIHRoZSBhc3NlcnRpb25zLCBzaW5jZSBj
b21wYXJpbmcgd2l0aCBhbm90aGVyIGl0ZXJhdG9yIHdvcmtzCisgICAgICAgIGZpbmUgZXZlbiBp
ZiB0aGUgRE9NIHRyZWUgaXMgbXV0YXRlZCwgYW5kIGEgbnVsbCBlbGVtZW50IGNhbiBiZSBjb21w
YXJlZCB3aXRoCisgICAgICAgIGFub3RoZXIgZXZlbiBpZiB0aGUgcm9vdCBlbGVtZW50IGlzIG5v
dCB0aGUgc2FtZS4gRGVsZXRlZCBFbGVtZW50Q29uc3RJdGVyYXRvci4KKworICAgICAgICAqIGRv
bS9MaXZlTm9kZUxpc3QuY3BwOiBSZW1vdmVkIHNvbWUgdW5uZWVkZWQgaW5jbHVkZXMsIGluY2x1
ZGluZyBIVE1MQ29sbGVjdGlvbi5oLgorICAgICAgICAoV2ViQ29yZTo6TGl2ZU5vZGVMaXN0OjpM
aXZlTm9kZUxpc3QpOiBTaW1wbGlmaWVkIGEgbGl0dGxlIGJpdC4KKyAgICAgICAgKFdlYkNvcmU6
OkxpdmVOb2RlTGlzdDo6cm9vdE5vZGUpOiBNb3ZlZCB0byB0aGUgaGVhZGVyLgorCisgICAgICAg
ICogZG9tL0xpdmVOb2RlTGlzdC5oOiBVcGRhdGVkIHNpbmNlIENvbGxlY3Rpb25UcmF2ZXJzYWwg
bm93IHVzZXMgdGhlCisgICAgICAgIG1vcmUgbW9kZXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IsIG5vdCB0aGUgb2xkZXIgb25lIHRoYXQgdXNlZCBhIHZlY3RvciBvZgorICAgICAgICBhbmNl
c3RvcnMgdG8gZG8gdGhlIGl0ZXJhdGlvbi4gQWxzbyB1c2UgV1RGX01BS0VfSVNPX05PTkFMTE9D
QVRBQkxFIHNpbmNlCisgICAgICAgIExpdmVOb2RlTGlzdCBpcyBhbiBhYnN0cmFjdCBjbGFzcywg
YW5kIG1hZGUgc29tZSBtZW1iZXJzIHByb3RlY3RlZC4gUmVtb3ZlZAorICAgICAgICBDYWNoZWRM
aXZlTm9kZUxpc3Q6OnJvb3ROb2RlIHNpbmNlIGl0IHdhcyBpZGVudGljYWwgdG8gTGl2ZU5vZGVM
aXN0Ojpyb290Tm9kZSwKKyAgICAgICAgYW5kIG1hZGUgTGl2ZU5vZGVMaXN0Ojpyb290Tm9kZSBw
cm90ZWN0ZWQgc28gaXQgY2FuIGJlIGNhbGxlZCBpbgorICAgICAgICBDYWNoZWRMaXZlTm9kZUxp
c3QsIGFuZCBtb3ZlZCBpdCB0byB0aGUgaGVhZGVyIHNvIGl0IHdpbGwgc3RpbGwgYmUgaW5saW5l
ZC4KKyAgICAgICAgU2ltcGxpZmllZCBDYWNoZWRMaXN0Tm9kZUxpc3QgdG8gdXNlIG1vcmUgZmlu
YWwsIHRvIG5hbWUgbG9uZyB0eXBlcyBsZXNzIGJ5CisgICAgICAgIHVzaW5nICJhdXRvIiBhbmQg
InVzaW5nIiwgYW5kIHRvIG5vdCBwYXNzIGFyZ3VtZW50cyB0byBmdW5jdGlvbnMgdGhhdCBkb24n
dAorICAgICAgICBuZWVkIHRoZW0gYW55IG1vcmUuCisKKyAgICAgICAgKiBkb20vTmFtZU5vZGVM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVOb2RlTGlzdDo6Y3JlYXRlKTogTW92ZWQg
aGVyZSBmcm9tIHRoZSBoZWFkZXIuCisgICAgICAgICogZG9tL05hbWVOb2RlTGlzdC5oOiBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGVzIGFuZCBjb21tZW50LCBtb3ZlZCBjcmVhdGUKKyAgICAgICAg
ZnVjbnRpb24gb3V0IG9mIHRoZSBoZWFkZXIuCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6IFJl
bW92ZWQgdW5uZWVkZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlvbi5oLgorCisgICAgICAgICog
ZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlz
dDo6Y2xvc2VzdCBjb25zdCk6IFVzZSBsaW5lYWdlZU9mVHlwZSBpbnN0ZWFkIG9mIGFuCisgICAg
ICAgIGV4cGxpY2l0IGxvb3AuCisgICAgICAgIChXZWJDb3JlOjplbGVtZW50c0ZvckxvY2FsTmFt
ZSk6IFVzZSBkZXNjZW5kYW50c09mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnREZXNjZW5kYW50cy4K
KyAgICAgICAgKFdlYkNvcmU6OmFueUVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVUYWdOYW1lU2VsZWN0b3JEYXRhIGNvbnN0
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2lu
Z2xlQ2xhc3NOYW1lU2VsZWN0b3JEYXRhIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlU2VsZWN0b3JEYXRhIGNvbnN0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlTXVs
dGlTZWxlY3RvckRhdGEgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
RGF0YUxpc3Q6OmV4ZWN1dGVDb21waWxlZFNpbXBsZVNlbGVjdG9yQ2hlY2tlciBjb25zdCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZUNvbXBpbGVk
U2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dCBjb25zdCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZUNvbXBpbGVkU2luZ2xlTXVsdGlT
ZWxlY3RvckRhdGEgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGRvbS9TbG90QXNzaWdubWVu
dC5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisKKyAgICAgICAgKiBkb20vVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yLmg6IE1vdmVkIHRoZSBkZWNsYXJhdGlvbnMgb2YgdGhlIGZ1bmN0aW9u
cworICAgICAgICB0byB0aGUgdG9wIG9mIHRoZSBmaWxlLCBzaW5jZSB0aGUgY2xhc3NlcyBhcmUg
cmVhbGx5IGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisgICAgICAgIFJlbmFtZWQgdGhlIGNsYXNz
ZXMgdG8gdGFrZSBvdXQgdGhlIHdvcmQgInR5cGVkIiBzaW5jZSB0aGVzZSBpdGVyYXRvcnMgYXJl
IHRoZQorICAgICAgICBzYW1lIGFzIHRoZSBhbmNlc3RvciBhbmQgY2hpbGRyZW4gaXRlcmF0b3Jz
OyB0aGlzIGdpdmVzIHRoZXNlIHRoZSBzYW1lIG5hbWUgYXMKKyAgICAgICAgdGhlIGNsYXNzZXMg
aW4gdGhlIGRlbGV0ZWQgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIGZpbGUsIGFuZCB3ZSBj
YW4gZm9sbG93CisgICAgICAgIHVwIGJ5IHJlbmFtaW5nIHRoaXMgZmlsZSB0byB0YWtlICJUeXBl
ZCIgb3V0IG9mIHRoZSBuYW1lIG9mIHRoZSBmaWxlLCB0b28uCisgICAgICAgIFJlbW92ZWQgdGhl
IHNlcGFyYXRlICJDb25zdCIgdmVyc2lvbnMgb2YgZXZlcnl0aGluZyBzaW5jZSB3ZSBjYW4ganVz
dCB1c2UKKyAgICAgICAgY29uc3QgaW4gdGhlIHRlbXBsYXRlIGFyZ3VtZW50IHR5cGUgaW5zdGVh
ZC4gVXNlIHRoZSB0ZXJtICJSYW5nZSIgaW5zdGVhZAorICAgICAgICBvZiB0aGUgdGVybSAiSXRl
cmF0b3JBZGFwdGVyIiBmb3IgdGhlIGNsYXNzIHRlbXBsYXRlcyBmb3IgdXNlIGluIHJhbmdlLWJh
c2VkCisgICAgICAgIGZvciBsb29wcyBzaW5jZSB0aGF0J3MgY2xvc2VyIHRvIG1vZGVybiBDKysg
dGVybWlub2xvZ3kuIFVzZSBudWxscHRyIGFzIGEKKyAgICAgICAgc2VudGluZWwgdmFsdWUgZm9y
IHRoZSBlbmQgZnVuY3Rpb25zLiBNYWRlIG1hbnkgZnVuY3Rpb24gbWVtYmVycyBjb25zdCB3aGVy
ZQorICAgICAgICBhcHByb3ByaWF0ZS4gQWRkZWQgYSBuZXcgc3BlY2lhbGl6YXRpb24gdGhhdCBt
YWtlcyBhIGRlc2NlbmRhbnQgaXRlcmF0b3IgdGhhdAorICAgICAgICBpcyBmaWx0ZXJlZCBiYXNl
ZCBvbiBhIGZ1bmN0aW9uLCBmb3IgdXNlIGluIGl0ZXJhdGluZyBkYXRhIGxpc3Qgc3VnZ2VzdGlv
bnMuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCBjb25zdCk6IFVzZSB0aGUgZnVu
Y3Rpb24KKyAgICAgICAgZGVzY2VuZGFudHNPZlR5cGU8SFRNTEJvZHlFbGVtZW50PiBpbnN0ZWFk
IG9mIGdldEVsZW1lbnRCeVRhZ05hbWUoYm9keVRhZykuCisgICAgICAgIEFsc28gbWVyZ2VkIGFw
cGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50IGluIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmFwcGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKworICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmg6IERlbGV0ZWQgYXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQu
CisKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNjYW5Gb3JGb3JtKTogVHdlYWtlZCB1c2FnZSBzbyB0aGVyZSdzIG5vIGV4cGxpY2l0IHVz
ZSBvZiBlbmQuCisgICAgICAgIEFsc28gY2hhbmdlZCBpZiBuZXN0aW5nIGEgbGl0dGxlIGJpdC4K
KworICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uUnVsZU1hdGNoZXI6OmlzRXhjbHVkZWQpOiBVc2UgbGlu
ZWFnZU9mVHlwZSBpbnN0ZWFkIG9mCisgICAgICAgIGVsZW1lbnRMaW5lYWdlLgorCisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06IFVwZGF0ZWQgaW5jbHVk
ZXMuCisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOiBEaXR0by4KKworICAgICAgICAqIGh0
bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDogVXBkYXRlZCBpbmNsdWRlcywgc2hvcnRlbmVkIHR5
cGUgbmFtZXMsCisgICAgICAgIGFuZCB1c2VkIGF1dG8gdG8gc2ltcGxpZnkgdGhlIGNvZGUgYSBi
aXQuIFJlbW92ZWQgdW5uZWVkZWQgY29sbGVjdGlvbiBhcmd1bWVudHMKKyAgICAgICAgZnJvbSB2
YXJpb3VzIENvbGxlY3Rpb25JbmRleENhY2hlIGZ1bmN0aW9ucy4KKworICAgICAgICAqIGh0bWwv
Q29sbGVjdGlvblRyYXZlcnNhbC5oOiBVcGRhdGVkIHRvIHVzZSB0aGUgbmV3L3R5cGVkIHZlcnNp
b24gb2YKKyAgICAgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci4gUmVtb3ZlZCBlbmQgZnVu
Y3Rpb25zLiBVc2Ugc2hvcnRlciB0eXBlIG5hbWVzLgorICAgICAgICBSZXdyb3RlIGFsZ29yaXRo
bXMgdG8gdXNlIG51bGwgdGVybWluYXRpb24gZm9yIGxvb3BzIGluc3RlYWQgb2YgZW5kIGl0ZXJh
dG9yCisgICAgICAgIHZhbHVlcy4KKworICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OnN1Z2dlc3RlZENvbG9ycyBjb25z
dCk6IFVzZSB0aGUgbmV3CisgICAgICAgIEhUTUxEYXRhTGlzdEVsZW1lbnQ6OnN1Z2dlc3Rpb25z
IGluc3RlYWQgb2YgSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBodG1sL0dlbmVyaWNDYWNo
ZWRIVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb248dHJhdmVyc2FsVHlwZT46OmVsZW1lbnRNYXRjaGVzIGNvbnN0KToKKyAgICAg
ICAgVXBkYXRlZCB0byB1c2UgSFRNTERhdGFMaXN0RWxlbWVudDo6aXNTdWdnZXN0aW9uIGFuZCBh
ZGRlZCBhIGNvbW1lbnQgZXhwbGFpbmluZworICAgICAgICB3aHkgdGhhdCBtaWdodCBub3QgYmUg
bmVjZXNzYXJ5IGlmIHdlIGNvcnJlY3QgdGhlIGltcGxlbWVudGF0aW9uIHRvIG1hdGNoIHRoZQor
ICAgICAgICBIVE1MIHNwZWNpZmljYXRpb24uCisKKyAgICAgICAgKiBodG1sL0hUTUxBbGxDb2xs
ZWN0aW9uLmlkbDogU3BlY2lmeSBbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIG9uIHRoZQor
ICAgICAgICBhcmd1bWVudCB0byBuYW1lZEl0ZW0sIGFuZCBbQXRvbVN0cmluZ10gZm9yIHRoZSBh
cmd1bWVudCB0byBpdGVtLgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaWRsOiBEaXR0
by4KKworICAgICAgICAqIGh0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRGF0YUxpc3RFbGVtZW50Ojppc1N1Z2dlc3Rpb24pOiBBZGRlZC4KKyAgICAg
ICAgKiBodG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuaDogQWRkZWQgaXNTdWdnZXN0aW9uIGFuZCBz
dWdnZXN0aW9ucyBmdW5jdGlvbnMgc28KKyAgICAgICAgbG9naWMgYWJvdXQgd2hpY2ggZGF0YSBs
aXN0IG9wdGlvbnMgYXJlIHN1Z2dlc3Rpb25zIGlzIHNoYXJlZC4KKworICAgICAgICAqIGh0bWwv
SFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWxlbWVudEFmZmVjdHNEaXJlY3Rp
b25hbGl0eSk6IFJlZmFjdG9yZWQgc28gd2UgZ2V0IGEgbW9yZSBlZmZpY2llbnQKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gd2hlbiB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudCBpcyBrbm93bi4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjphZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVk
QWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICBVc2UgbGluZWFnZU9mVHlwZSBp
bnN0ZWFkIG9mIGVsZW1lbnRMaW5lYWdlLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5o
OiBSZW1vdmVkIHNvbWUgdW5lZWVkZWQgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAg
KiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZFdpZGdl
dFJlbmRlcmVyKTogVXNlIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEgbG9vcC4KKworICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpjb21wdXRlV2lsbFZhbGlkYXRlIGNvbnN0KTogVXNl
CisgICAgICAgIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEgbG9vcC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmVuY2xvc2luZ0Zvcm1Db250cm9sRWxlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6IERl
bGV0ZWQgdW51c2VkIGVuY2xvc2luZ0Zvcm1Db250cm9sRWxlbWVudC4KKworICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKTogVXNl
CisgICAgICAgIHNob3J0IGZvcm0gQ2FjaGVkSFRNTENvbGxlY3Rpb24gaW5zdGVhZCBvZiB3cml0
aW5nIG91dCBhbGwgdGhlIHRlbXBsYXRlIGFyZ3VtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpvd25lck5vZGUgY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGVG
b3JEb2N1bWVudCk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5pZGw6IFNwZWNpZnkgW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBvbgorICAg
ICAgICB0aGUgYXJndW1lbnQgdG8gbmFtZWRJdGVtLgorCisgICAgICAgICogaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxl
bWVudEluZGV4KTogVXBkYXRlZCBjb2RlIHRoYXQgY2hlY2tzIHRoZQorICAgICAgICBmaXJzdCBl
bGVtZW50IHRvIHVzZSBvcGVyYXRvciEgaW5zdGVhZCBvZiBjb21wYXJpbmcgd2l0aCBlbmQuCisK
KyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOiBSZW1vdmVkIHVubmVlZGVk
IGluY2x1ZGUgb2YgSFRNTENvbGxlY3Rpb24uaC4KKworICAgICAgICAqIGh0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHA6IENsZWFyZWQgc3RyYXkgZXhlY3V0YWJsZSBiaXQuCisKKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6c2V0dXBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzKTogVXNlIHRoZSBuZXcKKyAgICAg
ICAgSFRNTERhdGFMaXN0RWxlbWVudDo6c3VnZ2VzdGlvbnMgaW5zdGVhZCBvZiBIVE1MQ29sbGVj
dGlvbi4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQpOiBVc2UgYSBi
b29sZWFuIHRlc3QgcmF0aGVyCisgICAgICAgIHRoYW4gY29tcGFyaW5nIHdpdGggZW5kIGluIHRo
ZSB1bnVzdWFsIGxvb3AgaGVyZS4KKworICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojpvd25lclNlbGVj
dEVsZW1lbnQgY29uc3QpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2Yg
YSBoYW5kLXdyaXR0ZW4gbG9vcC4KKworICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KTogVXNlIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mCisgICAgICAgIGNhbGxpbmcgb3duZXJE
YXRhTGlzdEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVu
dDo6b3duZXJEYXRhTGlzdEVsZW1lbnQgY29uc3QpOiBEZWxldGVkLiBTaW5jZSB0aGUKKyAgICAg
ICAgc2FtZSBvcHRpb24gY2FuIGJlIHVzZWQgYnkgbmVzdGVkIGRhdGEgbGlzdCBlbGVtZW50cywg
dGhlIGNvbmNlcHQgb2YgYSBzaW5nbGUKKyAgICAgICAgIm93bmVyIiBkYXRhIGxpc3QgZWxlbWVu
dCBpc24ndCBmdWxseSBjb3JyZWN0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1l
bnQ6Om93bmVyU2VsZWN0RWxlbWVudCBjb25zdCk6IFVzZSBhbmNlc3RvcnNPZlR5cGUKKyAgICAg
ICAgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorICAgICAgICAqIGh0bWwvSFRNTE9w
dGlvbkVsZW1lbnQuaDogRGVsZXRlZCBvd25lckRhdGFMaXN0RWxlbWVudC4KKworICAgICAgICAq
IGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbDogU3BlY2lmeSBbUmVxdWlyZXNFeGlzdGlu
Z0F0b21TdHJpbmddIG9uCisgICAgICAgIHRoZSBhcmd1bWVudCB0byBuYW1lZEl0ZW0uCisKKyAg
ICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOiBVcGRhdGVkIGluY2x1ZGVz
LgorCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGw6IFNwZWNpZnkgW1JlcXVp
cmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBvbgorICAgICAgICB0aGUgYXJndW1lbnQgdG8gbmFtZWRJ
dGVtLgorCisgICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0
dHJpYnV0ZVN0eWxlIGNvbnN0KToKKyAgICAgICAgVXNlIGF1dG8gc2luY2UgZmluZFBhcmVudFRh
YmxlIG5vdyByZXR1cm5zIGEgY29uc3QgdGFibGUgcG9pbnRlci4KKyAgICAgICAgKiBodG1sL0hU
TUxUYWJsZUNvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlQ29sRWxl
bWVudDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlIGNvbnN0KToKKyAgICAg
ICAgRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKTogTWFk
ZSBjb25zdC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxD
ZWxsU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmFk
ZGl0aW9uYWxHcm91cFN0eWxlKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVt
ZW50Lmg6IE1hZGUgdGhlIGZ1bmN0aW9ucyBjb25zdCwgYW5kIG1fc2hhcmVkQ2VsbFN0eWxlCisg
ICAgICAgIG11dGFibGUuCisKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZVBhcnRFbGVtZW50OjpmaW5kUGFyZW50VGFi
bGUgY29uc3QpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2YgYSBoYW5k
LXdyaXR0ZW4gbG9vcC4gQWxzbyByZXZpc2VkIHJldHVybiB0eXBlIHRvIGJlIGNvbnN0LWNvbnNp
c3RlbnQuCisgICAgICAgICogaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5oOiBVcGRhdGVkIHJl
dHVybiB0eXBlLgorCisgICAgICAgICogaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHA6
IFJlbW92ZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlvbi5oLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6Om51bVJvd3MgY29uc3QpOiBVc2UgYW4gZW1wdHkgaW5p
dGlhbGl6ZXIKKyAgICAgICAgbGlzdCBpbnN0ZWFkIG9mIHRoZSByZXN1bHQgb2YgdGhlIGVuZCBm
dW5jdGlvbiBzaW5jZSBzdGQ6OmRpc3RhbmNlIHJlcXVpcmVzCisgICAgICAgIGJvdGggYmVnaW4g
YW5kIGVuZCBpdGVyYXRvcnMgaGF2ZSB0aGUgc2FtZSB0eXBlLgorCisgICAgICAgICogaHRtbC9I
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRI
VE1MRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6ZGlyZWN0aW9uRm9yRm9ybURhdGEgY29uc3QpOiBVc2UKKyAgICAgICAgbGlu
ZWFnZU9mVHlwZSByYXRoZXIgdGhhbiBhIGhhbmQtd3JpdHRlbiBsb29wLiBBbHNvIGdvdCByaWQg
b2YgdGhlIG11bHRpcGxlCisgICAgICAgIHN0cmluZ3MgaW4gcmV0dXJuIHBhdGhzIHNpbmNlIHRo
ZSBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBvbmUgb2YgdHdvIHN0cmluZ3MuCisKKyAgICAgICAg
KiBodG1sL0xhYmVsc05vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxhYmVsc05vZGVM
aXN0OjpjcmVhdGUpOiBNb3ZlZCBoZXJlIGZyb20gaGVhZGVyLgorICAgICAgICAqIGh0bWwvTGFi
ZWxzTm9kZUxpc3QuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLCB0d2Vha2VkIGNvZGluZyBz
dHlsZSBhIGJpdCwKKyAgICAgICAgbW92ZWQgY3JlYXRlIGZ1bmN0aW9uIGludG8gdGhlIC5jcHAg
ZmlsZSwgcmVtb3ZlZCBvdmVycmlkZSBvZiBpc1Jvb3RlZEF0RG9jdW1lbnQuCisKKyAgICAgICAg
KiBodG1sL01lZGlhRG9jdW1lbnQuY3BwOiBVcGRhdGVkIGluY2x1ZGVzLgorCisgICAgICAgICog
aHRtbC9SYWRpb05vZGVMaXN0LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorICAgICAg
ICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6Y3JlYXRlKTogTW92ZWQgdGhpcyBoZXJlIGZyb20g
dGhlIGhlYWRlci4KKyAgICAgICAgKFdlYkNvcmU6Om5vbkVtcHR5UmFkaW9CdXR0b24pOiBSZW5h
bWVkIGZyb20gdG9SYWRpb0J1dHRvbklucHV0RWxlbWVudCB0byBtYWtlCisgICAgICAgIGEgbGl0
dGxlIGNsZWFyZXIgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcy4KKyAgICAgICAgKFdlYkNvcmU6OlJh
ZGlvTm9kZUxpc3Q6OnZhbHVlIGNvbnN0KTogVXBkYXRlZCB0byB1c2Ugbm9uRW1wdHlSYWRpb0J1
dHRvbiBhbmQKKyAgICAgICAgc3RyYWlnaHRlbiBvdXQgdGhlIGxvb3AgYSB0aW55IGJpdC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6OnNldFZhbHVlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSYWRpb05vZGVMaXN0OjpjaGVja0VsZW1lbnRNYXRjaGVzUmFkaW9Ob2RlTGlz
dEZpbHRlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSYWRpb05vZGVMaXN0
OjplbGVtZW50TWF0Y2hlcyBjb25zdCk6IE1lcmdlZCBpbiB0aGUgbG9naWMgZnJvbQorICAgICAg
ICBjaGVja0VsZW1lbnRNYXRjaGVzUmFkaW9Ob2RlTGlzdEZpbHRlciwgc2luY2UgdGhlIHNlcGFy
YXRlIGZ1bmN0aW9uIHdhc24ndCBoZWxwZnVsLgorICAgICAgICAqIGh0bWwvUmFkaW9Ob2RlTGlz
dC5oOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzLiBNb3ZlZCB0aGUgY3JlYXRlIGZ1bmN0aW9u
IG91dAorICAgICAgICBvZiB0aGUgaGVhZGVyLiBSZW1vdmVkIHVubmVlZGVkIG92ZXJyaWRlIG9m
IHRoZSBpdGVtIGZ1bmN0aW9uIHRvIHRpZ2h0ZW4gdGhlCisgICAgICAgIHJldHVybiB0eXBlOyBu
b3QgdXNlZCBpbiBXZWJDb3JlIGFuZCBub3QgaGVscGZ1bCBmb3IgYmluZGluZ3MuIE1hZGUgbW9y
ZSBwcml2YXRlLgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6aXRlbSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9SYWRpb05vZGVMaXN0LmlkbDogUmVtb3ZlZCB1bm5l
ZWRlZCBnZXR0ZXI7IHRoZSBpbmhlcml0ZWQgb25lIGZyb20gTm9kZUxpc3QKKyAgICAgICAgd29y
a3MgY29ycmVjdGx5LCBhbmQgdGhpcyBpc24ndCBtb3JlIGVmZmljaWVudCBiZWNhdXNlIG9mIGEg
bW9yZSBzcGVjaWZpYyB0eXBlLgorCisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9ucyk6
IFVzZSBIVE1MRGF0YUxpc3RFbGVtZW50OjpzdWdnZXN0aW9ucworICAgICAgICBpbnN0ZWFkIG9m
IEhUTUxDb2xsZWN0aW9uLiBBbHNvIGFkZGVkIGEgRklYTUUgYmVjYXVzZSB0aGUgY3VycmVudCBs
b2dpYyBpcworICAgICAgICBub3QgcmlnaHQgYWNyb3NzIGxhbmd1YWdlcyBhbmQgd2l0aCBub24t
QVNDSUkgY2hhcmFjdGVycy4KKworICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cDogUmVtb3ZlZCBpbmNsdWRlIG9mIEhUTUxDb2xsZWN0aW9uLmguCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0RWxlbWVudHNCeUNv
bXB1dGVkUm9sZSk6CisgICAgICAgIFVzZSBkZXNjZW5kYW50c09mVHlwZSBpbnN0ZWFkIG9mIGVs
ZW1lbnREZXNjZW5kYW50cy4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1h
dGNoZWRTdHlsZXNGb3JOb2RlKTogVXNlIGFuY2VzdG9yc09mVHlwZQorICAgICAgICBpbnN0ZWFk
IG9mIGEgaGFuZC13cml0dGVuIGxvb3AuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjppbnNwZWN0KTogVXNlIGlzRWxlbWVudE5vZGUgYW5kIGlzRG9jdW1lbnROb2RlCisgICAgICAg
IGluc3RlYWQgb2YgdGhlIG11Y2ggc2xvd2VyIG5vZGVUeXBlLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE1vdXNlZE92ZXJOb2RlKTogVXNlIGlzVGV4dE5v
ZGUgaW5zdGVhZCBvZgorICAgICAgICB0aGUgbXVjaCBzbG93ZXIgbm9kZVR5cGUuCisKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOiBEaXR0by4KKworICAgICAgICAq
IHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbmluZ0xp
bmtFbGVtZW50KTogQWRkZWQuIFVzZXMgbGluZWFnZU9mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnRM
aW5lYWdlLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyk6
IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0F4aXNT
Y3JvbGxTbmFwT2Zmc2V0cy5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlvbi5o
LgorCisgICAgICAgICogcGxhdGZvcm0vRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oOiBSZWR1
Y2VkIGluY2x1ZGVzLCB1c2UgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBh
aW50U2xpZGVyVGlja3MpOiBVc2UgSFRNTERhdGFMaXN0RWxlbWVudDo6c3VnZ2VzdGlvbnMKKyAg
ICAgICAgaW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBw
b3J0Ojp1cGRhdGVNYXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyk6CisgICAgICAg
IFVzZSBhbmNlc3RvcnNPZlR5cGUgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorCisg
ICAgICAgICogc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6SW52YWxpZGF0b3I6OmludmFsaWRhdGVTdHlsZUZvckRlc2NlbmRhbnRzKTogVXNlIG51
bGwgY2hlY2tpbmcKKyAgICAgICAgc3R5bGUgZm9yIHRoZSBmb3IgbG9vcCByYXRoZXIgdGhhbiBj
b21wYXJpbmcgd2l0aCBlbmQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SW52YWxpZGF0b3I6
OmludmFsaWRhdGVTdHlsZVdpdGhNYXRjaEVsZW1lbnQpOiBSZW1vdmUgYW4gdW5uZWVkZWQKKyAg
ICAgICAgbG9jYWwgdmFyaWFibGUgYW5kIHVubmVlZGVkIGJyYWNlcy4KKworICAgICAgICAqIHN0
eWxlL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OmlzQXRTaGFk
b3dCb3VuZGFyeSk6IFVzZSB0aGUgaXM8U2hhZG93Um9vdD4gZnVuY3Rpb24uCisKKyAgICAgICAg
KiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6IFVzZSB0aGUgaXM8U1ZHRWxlbWVudD4gZnVuY3Rpb24uCisg
ICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVu
dDo6dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24pOiBEaXR0by4KKworICAgICAgICAq
IHN2Zy9TVkdFbGVtZW50Lmg6IE1hZGUgY29tcHV0ZWRTdHlsZSBwdWJsaWMuIEF0IGxlYXN0IG9u
ZSBjYWxsIHNpdGUgbm93IGtub3dzIHRoZQorICAgICAgICBzcGVjaWZpYyB0eXBlIFNWR0VsZW1l
bnQsIGFuZCBzbyBjYW4gY2FsbCBpdCBldmVuIG1vcmUgZWZmaWNpZW50bHkgdGhhbiBiZWZvcmUu
IElmCisgICAgICAgIHdlIGxlZnQgaXQgcHJpdmF0ZSB3ZSdkIGhhdmUgdG8gY2FzdCB0byB0aGUg
YmFzZSBjbGFzcyB0byBjYWxsIGl0LCBhbmQgdGhlbiB3b3VsZCBuZWVkCisgICAgICAgIHZpcnR1
YWwgZnVuY3Rpb24gZGlzcGF0Y2guCisKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVEaXNhbGxvd2VkRWxlbWVudHNGcm9tU3VidHJlZSk6
IFVzZSBudWxsIGNoZWNraW5nIHN0eWxlIHJhdGhlciB0aGFuCisgICAgICAgIGNvbXBhcmluZyB3
aXRoIGVuZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmV4cGFuZFVzZUVsZW1l
bnRzSW5TaGFkb3dUcmVlIGNvbnN0KTogRGl0dG8uIEFsc28gYXNzaWduCisgICAgICAgIGFuIGVt
cHR5IGluaXRpYWxpemVyIGxpc3QgaW5zdGVhZCBvZiBlbmQuCisgICAgICAgIChXZWJDb3JlOjpT
VkdVc2VFbGVtZW50OjpleHBhbmRTeW1ib2xFbGVtZW50c0luU2hhZG93VHJlZSBjb25zdCk6IERp
dHRvLgorCisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KTog
VXNlIGxpbmVhZ2VPZlR5cGUgaW5zdGVhZCBvZgorICAgICAgICBlbGVtZW50TGluZWFnZS4gQWxz
byBhZGQgYSBudWxsIGNoZWNrIHRoYXQgc2VlbXMgdG8gaGF2ZSBiZWVuIG5lZWRlZCBiZWZvcmUg
dG9vLgorCiAyMDIwLTAyLTE5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgQXVkaW9TZXNzaW9uIGhhbmRsaW5nIGluIEdQVVByb2Nl
c3MgZm9yIGNhcHR1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjg2NDJmNWMxZWUxYTRlOGYwMjdmNjM4OGEyMTM4
NGU0ODNiNjE0Zi4uZjcyNjhlZjNlMmY0ZjY0MmI2ZTI2YzkzMzRiODk3YzYxYjIzMWE2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAyMC0wMi0xOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRvcnMgaW1wbGVtZW50YXRpb24g
YW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Y29udGFpbmVyRWxlbWVudEZvckVsZW1lbnQpOiBVZXMgYW5jZXN0
b3JzT2ZUeXBlIGluc3RlYWQgb2Ygb3duZXJEYXRhTGlzdEVsZW1lbnQuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwOiBVcGRhdGVkIGlu
Y2x1ZGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlcik6IFBhc3MgcmVmZXJlbmNlcy4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpXZWJEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXIpOiBUYWtlIHJlZmVyZW5jZXMKKyAgICAgICAgaW5zdGVhZCBvZiBwb2lu
dGVycywgc2luY2UgdGhleSBtdXN0IGJvdGggYmUgbm9uLW51bGwuCisgICAgICAgIChXZWJLaXQ6
OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6aGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVy
KTogVXBkYXRlZAorICAgICAgICB0byB1c2UgcmVmZXJlbmNlLgorICAgICAgICAoV2ViS2l0OjpX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpZFNlbGVjdE9wdGlvbik6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpZENsb3NlU3VnZ2Vz
dGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyOjpjbG9zZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rp
b25QaWNrZXI6OmRpc3BsYXlXaXRoQWN0aXZhdGlvblR5cGUpOiBEaXR0by4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmg6
IE1hcmtlZCB0aGUgY2xhc3MKKyAgICAgICAgZmluYWwsIG1hZGUgbW9yZSBmdW5jdGlvbnMgcHJp
dmF0ZSwgdXNlIHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycywKKyAgICAgICAgcmVuYW1l
ZCBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQgdG8gbV9jbGllbnQgc2luY2UgdGhlcmUgaXMg
b25seSBvbmUKKyAgICAgICAgY2xpZW50IHdlIGFyZSBkZWFsaW5nIHdpdGggaW4gdGhpcyBjbGFz
cy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lOjpjb250YWluc0FueUZvcm1FbGVtZW50cyBjb25zdCk6IFVzZSBj
aGlsZHJlbk9mVHlwZSBpbnN0ZWFkCisgICAgICAgIG9mIGEgaGFuZC13cml0dGVuIGxvb3AuCisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjb250YWluc0FueUZvcm1Db250cm9scyBjb25zdCk6
IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIp
OiBUYWtlIHJlZmVyZW5jZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OmNvbnRhaW5pbmdMaW5rQW5jaG9y
RWxlbWVudCk6IFVzZSBsaW5lYWdlT2ZUeXBlIGluc3RlYWQgb2YgZWxlbWVudExpbmVhZ2UuCisg
ICAgICAgIEFsc28gcmVuYW1lZCB0byBlbXBoYXNpemUgdGhhdCB0aGlzIGZ1bmN0aW9uIG9ubHkg
cmV0dXJucyBIVE1MQW5jaG9yRWxlbWVudCBsaW5rcy4KKyAgICAgICAgKFdlYktpdDo6ZWxlbWVu
dFBvc2l0aW9uSW5mb3JtYXRpb24pOiBVcGRhdGVkIGZvciBuYW1lIGFuZCB0eXBlIGNoYW5nZS4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVudCk6IERpdHRv
LgorCiAyMDIwLTAyLTE5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgQXVkaW9TZXNzaW9uIGhhbmRsaW5nIGluIEdQVVByb2Nlc3Mg
Zm9yIGNhcHR1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBiYjZkNjdjNDNhNTJm
Zjk5NzA2ZWJlNDg3ZjE2YWM2YzIwNjk3ZDZlLi45ZTIwMTAwMjc1NTAzN2EwYzMyNDAwNTk0OTAz
NWZkMGRkMjYwZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjAtMDItMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlzZSBET00gaXRlcmF0b3JzIGltcGxlbWVudGF0aW9uIGFuZCB1c2FnZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3ODE2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NRG9jdW1lbnQu
bW06IEN1dCBkb3duIG9uIGluY2x1ZGVzIGFuZCByZS1zb3J0ZWQgdGhlbS4KKyAgICAgICAgKiBE
T00vRE9NRG9jdW1lbnRGcmFnbWVudC5tbTogRGl0dG8uCisgICAgICAgICogRE9NL0RPTUhUTUxG
aWVsZFNldEVsZW1lbnQubW06IERpdHRvLgorCiAyMDIwLTAyLTE5ICBEYW5pZWwgQmF0ZXMgIDxk
YWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtMZWdhY3lXZWJLaXRdIE92ZXJyaWRl
IEVkaXRvckNsaWVudDo6c2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9u
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDc0MWNmMjcyZGFhMTk4Yjg3Njc4OGJhNWY4YWMyYzc1
MzFjM2YxYWEuLmUwNmY2YzIwYzgxMzlmNmU0YjE1NTBkNWQ0NGM4ZjY4ZWM4YWNhMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQpAQCAtMzkwLDcgKzM5MCw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBkb20vRWxlbWVudENoaWxkSXRlcmF0b3IuaAogICAgIGRvbS9F
bGVtZW50Q29udGV4dC5oCiAgICAgZG9tL0VsZW1lbnREYXRhLmgKLSAgICBkb20vRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvci5oCiAgICAgZG9tL0VsZW1lbnRJZGVudGlmaWVyLmgKICAgICBkb20v
RWxlbWVudEl0ZXJhdG9yLmgKICAgICBkb20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNzhjODM3YThjODQ5NWZkMTNiYzljNzFhZmVmZmZmMWNjZWU2NjBmMy4uYTI4OTdmMzljYWEw
NDkzNzQ5MGMzZmY5ZDIwYjc2MGQ4NTg2YWMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjY5Miw3ICsyNjkyLDYgQEAKIAkJ
OTNEMTk2MzMxRDZDQUI4MjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNEMTk2MzIxRDZDQUI4MjAwRkM3RTQ3IC8q
IEV4Y2VwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTkzRDQzNzlGMUQ1N0IxNTMwMEFCODVFQSAvKiBKU0V4ZWNTdGF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEY5MzREODMxMTg5RjFFRTAw
NTA4RDVEIC8qIEpTRXhlY1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTNENDM3QTAxRDU3QjE5QTAwQUI4NUVBIC8qIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QjU2QzlBODFDODkzMTI4MDBDNDU2REYgLyogQ3VzdG9tRWxlbWVudFJlYWN0aW9u
UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk5M0Q0MzdBMTFENTdCM0Y0MDBBQjg1RUEgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQURFMTFGNEEx
OEQ4MzExQjAwNzg5ODNCIC8qIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q0MzdBMjFENTdCM0ZF
MDBBQjg1RUEgLyogVVJMVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1NkI5RENBMTg5REUxMDAwMEJCODQyQyAvKiBVUkxVdGlscy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDQzN0EzMUQ1
N0I3RTIwMEFCODVFQSAvKiBKU01lZGlhTGlzdEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ3MjZGRTcxNkQ5RjIwNDAwM0E0RTZEIC8qIEpT
TWVkaWFMaXN0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTNEOUQ1M0MwREEyN0UxODAwNzcyMTZDIC8qIFJhbmdlQm91bmRhcnlQb2lu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNEOUQ1
M0IwREEyN0UxODAwNzcyMTZDIC8qIFJhbmdlQm91bmRhcnlQb2ludC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDcyMyw2ICsxMDcyMiw3IEBA
CiAJCTkzODBGNDcxMDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpZGdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzODBGNDcyMDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpZGdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MzgwRjQ3NzA5QTExQUNDMDAxRkRCMzQgLyogV2lkZ2V0TWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdpZGdldE1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM4MUI5NDEyM0Y5QjBFMDAwNzExOEI0IC8qIFJhZGlvTm9k
ZUxpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFJhZGlvTm9kZUxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MzgyQUFCMTBEOEMzODYxMDBGMzU3QTYgLyogTm9kZVdpdGhJbmRleC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb2RlV2l0aEluZGV4Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzODJERjU3MTBBOEQ1QzkwMDkyNTY1MiAvKiBDb2xvclNwYWNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yU3BhY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM4RTY1RjAwOUYwOTg0MDAwOEE0OEVDIC8qIEpTSFRN
TEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwpAQCAtMTIyNzAsNyArMTIyNzAsNiBAQAogCQlBRERBOTRCRjE5Njg2
RjgwMDA0NTMwMjkgLyogSlNEb2N1bWVudEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0RvY3VtZW50Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUFEREYxQUQ0MTI1N0NEOUEwMDAzQTc1OSAvKiBSZW5kZXJTVkdQYXRoLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1BhdGguY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBRERGMUFENTEyNTdDRDlBMDAwM0E3NTkgLyogUmVuZGVy
U1ZHUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdQYXRo
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUFERTExRjRBMThEODMxMUIwMDc4OTgz
QiAvKiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQURFMTY3MzYxODEwNTBDMzAwNDYzQTJFIC8qIFJlbmRlclB0ci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJQdHIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQURFQzc4RjcxOEVFNTMwODAwMTMxNUMyIC8qIEpTRWxlbWVudEN1c3Rv
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0VsZW1lbnRDdXN0b20uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURGRTJCNTQxQkQ1RjQxMjAwREFCNDU3IC8q
IFJlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBSZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjIxNDAsNiArMjIxMzksNyBAQAogCQkJCUY1NUIzRDk4MTI1MUYx
MkQwMDNFRjI2OSAvKiBSYWRpb0lucHV0VHlwZS5oICovLAogCQkJCUI2NThGRkEzMTUyMkVGQUEw
MERENTU5NSAvKiBSYWRpb05vZGVMaXN0LmNwcCAqLywKIAkJCQlCNjU4RkZBNDE1MjJFRkFBMDBE
RDU1OTUgLyogUmFkaW9Ob2RlTGlzdC5oICovLAorCQkJCTkzODFCOTQxMjNGOUIwRTAwMDcxMThC
NCAvKiBSYWRpb05vZGVMaXN0LmlkbCAqLywKIAkJCQlGNTVCM0Q5OTEyNTFGMTJEMDAzRUYyNjkg
LyogUmFuZ2VJbnB1dFR5cGUuY3BwICovLAogCQkJCUY1NUIzRDlBMTI1MUYxMkQwMDNFRjI2OSAv
KiBSYW5nZUlucHV0VHlwZS5oICovLAogCQkJCUY1NUIzRDlCMTI1MUYxMkQwMDNFRjI2OSAvKiBS
ZXNldElucHV0VHlwZS5jcHAgKi8sCkBAIC0yODEyMSw3ICsyODEyMSw2IEBACiAJCQkJMzEzQkNF
MUIyMzVFM0JEQjAwRkMzOUU1IC8qIEVsZW1lbnRDb250ZXh0LmggKi8sCiAJCQkJQjVCN0ExNkYx
N0MxMDgwNjAwRTRBQTBBIC8qIEVsZW1lbnREYXRhLmNwcCAqLywKIAkJCQlCNUI3QTE2RTE3QzEw
NDgwMDBFNEFBMEEgLyogRWxlbWVudERhdGEuaCAqLywKLQkJCQlBREUxMUY0QTE4RDgzMTFCMDA3
ODk4M0IgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oICovLAogCQkJCTJEMkJFQjJGMjIz
NEEzMzQwMDU1NDRDQSAvKiBFbGVtZW50SWRlbnRpZmllci5oICovLAogCQkJCUU0QUU3QzE1MTdE
MUJCOTUwMDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0b3IuaCAqLywKIAkJCQlFNDAxQzI3NDE3Q0U1
M0VDMDBDNDFBMzUgLyogRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oICovLApAQCAtMjk3ODcs
NyArMjk3ODYsNiBAQAogCQkJCUU0NkEyQjFFMTdDQTc2QjEwMDBEQkNEOCAvKiBFbGVtZW50Q2hp
bGRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEzQkNFMUMyMzVFM0JFNTAwRkMzOUU1
IC8qIEVsZW1lbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCNUI3QTE3MTE3QzEwQUMw
MDBFNEFBMEEgLyogRWxlbWVudERhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzRDQzN0ExMUQ1
N0IzRjQwMEFCODVFQSAvKiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyRDJCRUIzMTIyMzRBMzM1MDA1NTQ0Q0EgLyogRWxlbWVudElkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0QUU3QzE2MTdEMUJCOTUwMDA5RkIzMSAvKiBFbGVtZW50SXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0MDFDMjc1MTdDRTUzRUMwMEM0MUEzNSAvKiBF
bGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAK
aW5kZXggMjA5ZWI4ZTY1OGUwYjczNDE4ZWMyY2QwMGNkODBhNDE2ZmEyOTMzYS4uNDU4YTQwNTdl
MmNmZmQyZjZmODVjZTgwMWNhZjlkNjFkMjgwMjlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTEw
NDQsNyArMTA0NCw3IEBAIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojptb3VzZUJ1
dHRvbkxpc3RlbmVyKE1vdXNlQnV0dG9uTGlzdGVuZXJSZXN1bHRGCiAKICAgICAvLyBjaGVjayBp
ZiBvdXIgcGFyZW50IGlzIGEgbW91c2UgYnV0dG9uIGxpc3RlbmVyCiAgICAgLy8gRklYTUU6IERv
IHRoZSBjb250aW51YXRpb24gc2VhcmNoIGxpa2UgYW5jaG9yRWxlbWVudCBkb2VzCi0gICAgZm9y
IChhdXRvJiBlbGVtZW50IDogZWxlbWVudExpbmVhZ2UoaXM8RWxlbWVudD4oKm5vZGUpID8gZG93
bmNhc3Q8RWxlbWVudD4obm9kZSkgOiBub2RlLT5wYXJlbnRFbGVtZW50KCkpKSB7CisgICAgZm9y
IChhdXRvJiBlbGVtZW50IDogbGluZWFnZU9mVHlwZTxFbGVtZW50PihpczxFbGVtZW50Pigqbm9k
ZSkgPyBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkgOiAqbm9kZS0+cGFyZW50RWxlbWVudCgpKSkg
ewogICAgICAgICAvLyBJZiB3ZSd2ZSByZWFjaGVkIHRoZSBib2R5IGFuZCB0aGlzIGlzIG5vdCBh
IGNvbnRyb2wgZWxlbWVudCwgZG8gbm90IGV4cG9zZSBwcmVzcyBhY3Rpb24gZm9yIHRoaXMgZWxl
bWVudCB1bmxlc3MgZmlsdGVyIGlzIEluY2x1ZGVCb2R5RWxlbWVudC4KICAgICAgICAgLy8gSXQg
Y2FuIGNhdXNlIGZhbHNlIHBvc2l0aXZlcywgd2hlcmUgZXZlcnkgcGllY2Ugb2YgdGV4dCBpcyBs
YWJlbGVkIGFzIGFjY2VwdGluZyBwcmVzcyBhY3Rpb25zLgogICAgICAgICBpZiAoZWxlbWVudC5o
YXNUYWdOYW1lKGJvZHlUYWcpICYmIGlzU3RhdGljVGV4dCgpICYmIGZpbHRlciA9PSBFeGNsdWRl
Qm9keUVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA5NmYzM2NiNzM0YTcwODM2OWI0
ZjNiYTNkNTQ4NDg4ZTUwNDk1NzcwLi44YTgzMDBkMDk3ZTEwZmM0ZjMzMDM3MzM0MWMxMTRhMTcx
OWEzMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqIENv
cHlyaWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoK
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjM3NSwyMSArMjM3NSwxOSBAQCBBWENvcmVP
YmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhp
dFRlc3QoSFRNTEFyZWFFbAogICAgIGlmICghYXJlYSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBudWxscHRyOwotICAgIGZvciAo
RWxlbWVudCogbWFwUGFyZW50ID0gYXJlYS0+cGFyZW50RWxlbWVudCgpOyBtYXBQYXJlbnQ7IG1h
cFBhcmVudCA9IG1hcFBhcmVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChpczxI
VE1MTWFwRWxlbWVudD4oKm1hcFBhcmVudCkpIHsKLSAgICAgICAgICAgIHBhcmVudCA9IGFjY2Vz
c2liaWxpdHlQYXJlbnRGb3JJbWFnZU1hcChkb3duY2FzdDxIVE1MTWFwRWxlbWVudD4obWFwUGFy
ZW50KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICBhdXRvKiBt
YXBQYXJlbnQgPSBhbmNlc3RvcnNPZlR5cGU8SFRNTE1hcEVsZW1lbnQ+KCphcmVhKS5maXJzdCgp
OworICAgIGlmICghbWFwUGFyZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1
dG8qIHBhcmVudCA9IGFjY2Vzc2liaWxpdHlQYXJlbnRGb3JJbWFnZU1hcChtYXBQYXJlbnQpOwog
ICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIGZv
ciAoY29uc3QgYXV0byYgY2hpbGQgOiBwYXJlbnQtPmNoaWxkcmVuKCkpIHsKICAgICAgICAgaWYg
KGNoaWxkLT5lbGVtZW50UmVjdCgpLmNvbnRhaW5zKHBvaW50KSkKICAgICAgICAgICAgIHJldHVy
biBjaGlsZC5nZXQoKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVDb2x1bW4uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4uY3BwCmluZGV4IGZkYzY3ZjhhYzE1NmE1YWRiYmFhNjEzNTc2Yjg2ODJhZTYy
NzE1YTEuLmZmNDc4ZmQyMzYxNzhiYTM5YmMyMmRjMTk1YTE0OGE1NzkyZTI3YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZUNvbHVtbi5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUu
aCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgiCi0jaW5jbHVkZSAiSFRNTENv
bGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggMjA1MDZmOGVjZmFjNjUzZTU1YWQw
NDgxZGRhNTYwZjVmZDcyYTU0ZC4uNGUwMDlmZWQ2YmQwZTMxMTU3YzY2NDA5YzdiMzVmY2M3ZWZm
MjMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcApAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgIkRPTVdpbmRvd0luZGV4ZWREYXRh
YmFzZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvd1dlYkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUVFBQ
YXJzZXJzLmgiCkBAIC0zOCw3ICszNyw2IEBACiAjaW5jbHVkZSAiSlNFdmVudC5oIgogI2luY2x1
ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkpTSFRNTEF1ZGlvRWxlbWVudC5oIgot
I2luY2x1ZGUgIkpTSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJKU0hUTUxPcHRpb25FbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSlNJREJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSlNSZW1vdGVET01X
aW5kb3cuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BbGxEZXNjZW5kYW50c0Nv
bGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24u
aAppbmRleCA4NTcyYWY1NTA4NjQ5NzU4ZmQwMzdhMzRmZTM5ZjNlMzIzMGE5NTkxLi4xMjBjZjMw
Y2U5MmU3Njg5MjMyYzJiMzk2NjA0ZDM0ZTI4YTE4NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0FsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoK
IAogcHJvdGVjdGVkOgogICAgIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbihDb250YWluZXJOb2Rl
JiByb290Tm9kZSwgQ29sbGVjdGlvblR5cGUgdHlwZSkKLSAgICAgICAgOiBDYWNoZWRIVE1MQ29s
bGVjdGlvbjxBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPEFs
bERlc2NlbmRhbnRzPjo6dHJhdmVyc2FsVHlwZT4ocm9vdE5vZGUsIHR5cGUpCisgICAgICAgIDog
Q2FjaGVkSFRNTENvbGxlY3Rpb24ocm9vdE5vZGUsIHR5cGUpCiAgICAgeyB9CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ2hpbGROb2RlTGlzdC5jcHAKaW5kZXggY2JmNmYxZTc4MjY5MTA5MjVhNjU2NTJj
MzNhZTBjZmQ1NjY3YjIwMy4uNDdlNDZkY2JiNTU5OGU3ODIzNzU1NmRiN2E3YWNmZTIwNDk4ZTEw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmNwcApAQCAtMzksNyArMzksNiBAQCBF
bXB0eU5vZGVMaXN0Ojp+RW1wdHlOb2RlTGlzdCgpCiAKIENoaWxkTm9kZUxpc3Q6OkNoaWxkTm9k
ZUxpc3QoQ29udGFpbmVyTm9kZSYgcGFyZW50KQogICAgIDogbV9wYXJlbnQocGFyZW50KQotICAg
ICwgbV9pbmRleENhY2hlKCp0aGlzKQogewogfQogCkBAIC04Nyw3ICs4Niw3IEBAIHZvaWQgQ2hp
bGROb2RlTGlzdDo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQoTm9kZSomIGN1cnJlbnQsIHVu
c2lnbmVkIGNvdW50KSBjCiAKIHZvaWQgQ2hpbGROb2RlTGlzdDo6aW52YWxpZGF0ZUNhY2hlKCkK
IHsKLSAgICBtX2luZGV4Q2FjaGUuaW52YWxpZGF0ZSgqdGhpcyk7CisgICAgbV9pbmRleENhY2hl
LmludmFsaWRhdGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGlsZE5vZGVMaXN0LmgKaW5kZXggMTEzMjgyZWQ5NjIyYTlkNTAxYWE3NGUwMzJkODdjNjkxY2I5
MzdiNi4uMTBiOWEyODY5MDJmNmRhNzMwZDFmNDNiNTNkNzY1M2YwMDQ0ZjM1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ2hpbGROb2RlTGlzdC5oCkBAIC03Miw3ICs3Miw2IEBAIHB1YmxpYzoKICAgICAvLyBG
b3IgQ29sbGVjdGlvbkluZGV4Q2FjaGUKICAgICBOb2RlKiBjb2xsZWN0aW9uQmVnaW4oKSBjb25z
dDsKICAgICBOb2RlKiBjb2xsZWN0aW9uTGFzdCgpIGNvbnN0OwotICAgIE5vZGUqIGNvbGxlY3Rp
b25FbmQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdm9pZCBjb2xsZWN0aW9uVHJh
dmVyc2VGb3J3YXJkKE5vZGUqJiwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRD
b3VudCkgY29uc3Q7CiAgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChOb2RlKiYs
IHVuc2lnbmVkIGNvdW50KSBjb25zdDsKICAgICBib29sIGNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJh
Y2t3YXJkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0NsYXNzQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsYXNzQ29sbGVj
dGlvbi5oCmluZGV4IGVjZjdmM2QyMGM2MTVjNDY4OTgyMGYxOWFhOWNmM2E4NjMyZjZiZGQuLmE2
NzVkMzA2YmRmNzVmMzhhZjlmZmU4OWE2YjRiZTg5MjNmZDRjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DbGFzc0NvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2xhc3NDb2xsZWN0aW9uLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKIH07CiAKIGlubGlu
ZSBDbGFzc0NvbGxlY3Rpb246OkNsYXNzQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiByb290Tm9k
ZSwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgY2xhc3NOYW1lcykKLSAg
ICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPENsYXNzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVU
cmFpdHM8QnlDbGFzcz46OnRyYXZlcnNhbFR5cGU+KHJvb3ROb2RlLCB0eXBlKQorICAgIDogQ2Fj
aGVkSFRNTENvbGxlY3Rpb24ocm9vdE5vZGUsIHR5cGUpCiAgICAgLCBtX2NsYXNzTmFtZXMoY2xh
c3NOYW1lcywgcm9vdE5vZGUuZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSkKICAgICAsIG1fb3Jp
Z2luYWxDbGFzc05hbWVzKGNsYXNzTmFtZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29sbGVjdGlvbkluZGV4Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db2xsZWN0
aW9uSW5kZXhDYWNoZS5oCmluZGV4IDI4MDE5NDJmZGEwODhjNWM1ZjZhMTE1YTI1OTQ3ODg1YjVl
ZWIxZjkuLjNmODFiMjNhNmRhNDUyOTU4NDIxNzYyMzVkZjQ1MmE3NTY2OTRlMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db2xsZWN0aW9uSW5kZXhDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db2xsZWN0aW9uSW5kZXhDYWNoZS5oCkBAIC0zNCwxNSArMzQsMTUgQEAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZEZvckNvbGxlY3Rp
b25JbmRleENhY2hlKHNpemVfdCk7CiB0ZW1wbGF0ZSA8Y2xhc3MgQ29sbGVjdGlvbiwgY2xhc3Mg
SXRlcmF0b3I+CiBjbGFzcyBDb2xsZWN0aW9uSW5kZXhDYWNoZSB7CiBwdWJsaWM6Ci0gICAgZXhw
bGljaXQgQ29sbGVjdGlvbkluZGV4Q2FjaGUoY29uc3QgQ29sbGVjdGlvbiYpOworICAgIENvbGxl
Y3Rpb25JbmRleENhY2hlKCk7CiAKICAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3Jf
dHJhaXRzPEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSBOb2RlVHlwZTsKIAogICAgIHVuc2lnbmVkIG5v
ZGVDb3VudChjb25zdCBDb2xsZWN0aW9uJik7CiAgICAgTm9kZVR5cGUqIG5vZGVBdChjb25zdCBD
b2xsZWN0aW9uJiwgdW5zaWduZWQgaW5kZXgpOwogCi0gICAgYm9vbCBoYXNWYWxpZENhY2hlKGNv
bnN0IENvbGxlY3Rpb24mIGNvbGxlY3Rpb24pIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudCAhPSBj
b2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKSB8fCBtX25vZGVDb3VudFZhbGlkIHx8IG1fbGlzdFZh
bGlkOyB9Ci0gICAgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IENvbGxlY3Rpb24mKTsKKyAgICBib29s
IGhhc1ZhbGlkQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnQgfHwgbV9ub2RlQ291bnRW
YWxpZCB8fCBtX2xpc3RWYWxpZDsgfQorICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIHNpemVf
dCBtZW1vcnlDb3N0KCkKICAgICB7CiAgICAgICAgIC8vIG1lbW9yeUNvc3QoKSBtYXkgYmUgaW52
b2tlZCBjb25jdXJyZW50bHkgZnJvbSBhIEdDIHRocmVhZCwgYW5kIHdlIG5lZWQgdG8gYmUgY2Fy
ZWZ1bApAQCAtNTYsMjAgKzU2LDE2IEBAIHByaXZhdGU6CiAgICAgTm9kZVR5cGUqIHRyYXZlcnNl
QmFja3dhcmRUbyhjb25zdCBDb2xsZWN0aW9uJiwgdW5zaWduZWQpOwogICAgIE5vZGVUeXBlKiB0
cmF2ZXJzZUZvcndhcmRUbyhjb25zdCBDb2xsZWN0aW9uJiwgdW5zaWduZWQpOwogCi0gICAgSXRl
cmF0b3IgbV9jdXJyZW50OwotICAgIHVuc2lnbmVkIG1fY3VycmVudEluZGV4OwotICAgIHVuc2ln
bmVkIG1fbm9kZUNvdW50OworICAgIEl0ZXJhdG9yIG1fY3VycmVudCB7IH07CisgICAgdW5zaWdu
ZWQgbV9jdXJyZW50SW5kZXggeyAwIH07CisgICAgdW5zaWduZWQgbV9ub2RlQ291bnQgeyAwIH07
CiAgICAgVmVjdG9yPE5vZGVUeXBlKj4gbV9jYWNoZWRMaXN0OwogICAgIGJvb2wgbV9ub2RlQ291
bnRWYWxpZCA6IDE7CiAgICAgYm9vbCBtX2xpc3RWYWxpZCA6IDE7CiB9OwogCi10ZW1wbGF0ZSA8
Y2xhc3MgQ29sbGVjdGlvbiwgY2xhc3MgSXRlcmF0b3I+Ci1pbmxpbmUgQ29sbGVjdGlvbkluZGV4
Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+OjpDb2xsZWN0aW9uSW5kZXhDYWNoZShjb25zdCBD
b2xsZWN0aW9uJiBjb2xsZWN0aW9uKQotICAgIDogbV9jdXJyZW50KGNvbGxlY3Rpb24uY29sbGVj
dGlvbkVuZCgpKQotICAgICwgbV9jdXJyZW50SW5kZXgoMCkKLSAgICAsIG1fbm9kZUNvdW50KDAp
Ci0gICAgLCBtX25vZGVDb3VudFZhbGlkKGZhbHNlKQordGVtcGxhdGU8Y2xhc3MgQ29sbGVjdGlv
biwgY2xhc3MgSXRlcmF0b3I+IENvbGxlY3Rpb25JbmRleENhY2hlPENvbGxlY3Rpb24sIEl0ZXJh
dG9yPjo6Q29sbGVjdGlvbkluZGV4Q2FjaGUoKQorICAgIDogbV9ub2RlQ291bnRWYWxpZChmYWxz
ZSkKICAgICAsIG1fbGlzdFZhbGlkKGZhbHNlKQogewogfQpAQCAtNzgsNyArNzQsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgQ29sbGVjdGlvbiwgY2xhc3MgSXRlcmF0b3I+CiBpbmxpbmUgdW5zaWduZWQg
Q29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+Ojpub2RlQ291bnQoY29u
c3QgQ29sbGVjdGlvbiYgY29sbGVjdGlvbikKIHsKICAgICBpZiAoIW1fbm9kZUNvdW50VmFsaWQp
IHsKLSAgICAgICAgaWYgKCFoYXNWYWxpZENhY2hlKGNvbGxlY3Rpb24pKQorICAgICAgICBpZiAo
IWhhc1ZhbGlkQ2FjaGUoKSkKICAgICAgICAgICAgIGNvbGxlY3Rpb24ud2lsbFZhbGlkYXRlSW5k
ZXhDYWNoZSgpOwogICAgICAgICBtX25vZGVDb3VudCA9IGNvbXB1dGVOb2RlQ291bnRVcGRhdGlu
Z0xpc3RDYWNoZShjb2xsZWN0aW9uKTsKICAgICAgICAgbV9ub2RlQ291bnRWYWxpZCA9IHRydWU7
CkBAIC05MSwxNiArODcsMTUgQEAgdGVtcGxhdGUgPGNsYXNzIENvbGxlY3Rpb24sIGNsYXNzIEl0
ZXJhdG9yPgogdW5zaWduZWQgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0
b3I+Ojpjb21wdXRlTm9kZUNvdW50VXBkYXRpbmdMaXN0Q2FjaGUoY29uc3QgQ29sbGVjdGlvbiYg
Y29sbGVjdGlvbikKIHsKICAgICBhdXRvIGN1cnJlbnQgPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25C
ZWdpbigpOwotICAgIGF1dG8gZW5kID0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCk7Ci0gICAg
aWYgKGN1cnJlbnQgPT0gZW5kKQorICAgIGlmICghY3VycmVudCkKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICB1bnNpZ25lZCBvbGRDYXBhY2l0eSA9IG1fY2FjaGVkTGlzdC5jYXBhY2l0eSgpOwot
ICAgIHdoaWxlIChjdXJyZW50ICE9IGVuZCkgeworICAgIHdoaWxlIChjdXJyZW50KSB7CiAgICAg
ICAgIG1fY2FjaGVkTGlzdC5hcHBlbmQoJipjdXJyZW50KTsKICAgICAgICAgdW5zaWduZWQgdHJh
dmVyc2VkOwogICAgICAgICBjb2xsZWN0aW9uLmNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoY3Vy
cmVudCwgMSwgdHJhdmVyc2VkKTsKLSAgICAgICAgQVNTRVJUKHRyYXZlcnNlZCA9PSAoY3VycmVu
dCAhPSBlbmQgPyAxIDogMCkpOworICAgICAgICBBU1NFUlQodHJhdmVyc2VkID09IChjdXJyZW50
ID8gMSA6IDApKTsKICAgICB9CiAgICAgbV9saXN0VmFsaWQgPSB0cnVlOwogCkBAIC0xMTMsNyAr
MTA4LDcgQEAgdW5zaWduZWQgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0
b3I+Ojpjb21wdXRlTm9kZUNvdW50VXBkYXRpbmdMaXMKIHRlbXBsYXRlIDxjbGFzcyBDb2xsZWN0
aW9uLCBjbGFzcyBJdGVyYXRvcj4KIGlubGluZSB0eXBlbmFtZSBDb2xsZWN0aW9uSW5kZXhDYWNo
ZTxDb2xsZWN0aW9uLCBJdGVyYXRvcj46Ok5vZGVUeXBlKiBDb2xsZWN0aW9uSW5kZXhDYWNoZTxD
b2xsZWN0aW9uLCBJdGVyYXRvcj46OnRyYXZlcnNlQmFja3dhcmRUbyhjb25zdCBDb2xsZWN0aW9u
JiBjb2xsZWN0aW9uLCB1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBBU1NFUlQobV9jdXJyZW50ICE9
IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50KTsKICAg
ICBBU1NFUlQoaW5kZXggPCBtX2N1cnJlbnRJbmRleCk7CiAKICAgICBib29sIGZpcnN0SXNDbG9z
ZXIgPSBpbmRleCA8IG1fY3VycmVudEluZGV4IC0gaW5kZXg7CkBAIC0xMjIsNTAgKzExNyw1MCBA
QCBpbmxpbmUgdHlwZW5hbWUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0
b3I+OjpOb2RlVHlwZSogQ29sbGVjdGlvbgogICAgICAgICBtX2N1cnJlbnRJbmRleCA9IDA7CiAg
ICAgICAgIGlmIChpbmRleCkKICAgICAgICAgICAgIGNvbGxlY3Rpb24uY29sbGVjdGlvblRyYXZl
cnNlRm9yd2FyZChtX2N1cnJlbnQsIGluZGV4LCBtX2N1cnJlbnRJbmRleCk7Ci0gICAgICAgIEFT
U0VSVChtX2N1cnJlbnQgIT0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCkpOworICAgICAgICBB
U1NFUlQobV9jdXJyZW50KTsKICAgICAgICAgcmV0dXJuICYqbV9jdXJyZW50OwogICAgIH0KIAog
ICAgIGNvbGxlY3Rpb24uY29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQobV9jdXJyZW50LCBtX2N1
cnJlbnRJbmRleCAtIGluZGV4KTsKICAgICBtX2N1cnJlbnRJbmRleCA9IGluZGV4OwogCi0gICAg
QVNTRVJUKG1fY3VycmVudCAhPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKSk7CisgICAgQVNT
RVJUKG1fY3VycmVudCk7CiAgICAgcmV0dXJuICYqbV9jdXJyZW50OwogfQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgQ29sbGVjdGlvbiwgY2xhc3MgSXRlcmF0b3I+CiBpbmxpbmUgdHlwZW5hbWUgQ29sbGVj
dGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+OjpOb2RlVHlwZSogQ29sbGVjdGlv
bkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+Ojp0cmF2ZXJzZUZvcndhcmRUbyhjb25z
dCBDb2xsZWN0aW9uJiBjb2xsZWN0aW9uLCB1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBBU1NFUlQo
bV9jdXJyZW50ICE9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpKTsKKyAgICBBU1NFUlQobV9j
dXJyZW50KTsKICAgICBBU1NFUlQoaW5kZXggPiBtX2N1cnJlbnRJbmRleCk7CiAgICAgQVNTRVJU
KCFtX25vZGVDb3VudFZhbGlkIHx8IGluZGV4IDwgbV9ub2RlQ291bnQpOwogCiAgICAgYm9vbCBs
YXN0SXNDbG9zZXIgPSBtX25vZGVDb3VudFZhbGlkICYmIG1fbm9kZUNvdW50IC0gaW5kZXggPCBp
bmRleCAtIG1fY3VycmVudEluZGV4OwogICAgIGlmIChsYXN0SXNDbG9zZXIgJiYgY29sbGVjdGlv
bi5jb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCgpKSB7Ci0gICAgICAgIEFTU0VSVChoYXNW
YWxpZENhY2hlKGNvbGxlY3Rpb24pKTsKKyAgICAgICAgQVNTRVJUKGhhc1ZhbGlkQ2FjaGUoKSk7
CiAgICAgICAgIG1fY3VycmVudCA9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkxhc3QoKTsKICAgICAg
ICAgaWYgKGluZGV4IDwgbV9ub2RlQ291bnQgLSAxKQogICAgICAgICAgICAgY29sbGVjdGlvbi5j
b2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChtX2N1cnJlbnQsIG1fbm9kZUNvdW50IC0gaW5kZXgg
LSAxKTsKICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBpbmRleDsKLSAgICAgICAgQVNTRVJUKG1f
Y3VycmVudCAhPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKSk7CisgICAgICAgIEFTU0VSVCht
X2N1cnJlbnQpOwogICAgICAgICByZXR1cm4gJiptX2N1cnJlbnQ7CiAgICAgfQogCi0gICAgaWYg
KCFoYXNWYWxpZENhY2hlKGNvbGxlY3Rpb24pKQorICAgIGlmICghaGFzVmFsaWRDYWNoZSgpKQog
ICAgICAgICBjb2xsZWN0aW9uLndpbGxWYWxpZGF0ZUluZGV4Q2FjaGUoKTsKIAogICAgIHVuc2ln
bmVkIHRyYXZlcnNlZENvdW50OwogICAgIGNvbGxlY3Rpb24uY29sbGVjdGlvblRyYXZlcnNlRm9y
d2FyZChtX2N1cnJlbnQsIGluZGV4IC0gbV9jdXJyZW50SW5kZXgsIHRyYXZlcnNlZENvdW50KTsK
ICAgICBtX2N1cnJlbnRJbmRleCA9IG1fY3VycmVudEluZGV4ICsgdHJhdmVyc2VkQ291bnQ7CiAK
LSAgICBpZiAobV9jdXJyZW50ID09IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpKSB7CisgICAg
aWYgKCFtX2N1cnJlbnQpIHsKICAgICAgICAgQVNTRVJUKG1fY3VycmVudEluZGV4IDwgaW5kZXgp
OwogICAgICAgICAvLyBGYWlsZWQgdG8gZmluZCB0aGUgaW5kZXggYnV0IGF0IGxlYXN0IHdlIG5v
dyBrbm93IHRoZSBzaXplLgogICAgICAgICBtX25vZGVDb3VudCA9IG1fY3VycmVudEluZGV4ICsg
MTsKICAgICAgICAgbV9ub2RlQ291bnRWYWxpZCA9IHRydWU7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KLSAgICBBU1NFUlQoaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKSk7CisgICAg
QVNTRVJUKGhhc1ZhbGlkQ2FjaGUoKSk7CiAgICAgcmV0dXJuICYqbV9jdXJyZW50OwogfQogCkBA
IC0xNzgsOCArMTczLDcgQEAgaW5saW5lIHR5cGVuYW1lIENvbGxlY3Rpb25JbmRleENhY2hlPENv
bGxlY3Rpb24sIEl0ZXJhdG9yPjo6Tm9kZVR5cGUqIENvbGxlY3Rpb24KICAgICBpZiAobV9saXN0
VmFsaWQpCiAgICAgICAgIHJldHVybiBtX2NhY2hlZExpc3RbaW5kZXhdOwogCi0gICAgYXV0byBl
bmQgPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKTsKLSAgICBpZiAobV9jdXJyZW50ICE9IGVu
ZCkgeworICAgIGlmIChtX2N1cnJlbnQpIHsKICAgICAgICAgaWYgKGluZGV4ID4gbV9jdXJyZW50
SW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VGb3J3YXJkVG8oY29sbGVjdGlvbiwg
aW5kZXgpOwogICAgICAgICBpZiAoaW5kZXggPCBtX2N1cnJlbnRJbmRleCkKQEAgLTE4OSwzOSAr
MTgzLDM5IEBAIGlubGluZSB0eXBlbmFtZSBDb2xsZWN0aW9uSW5kZXhDYWNoZTxDb2xsZWN0aW9u
LCBJdGVyYXRvcj46Ok5vZGVUeXBlKiBDb2xsZWN0aW9uCiAKICAgICBib29sIGxhc3RJc0Nsb3Nl
ciA9IG1fbm9kZUNvdW50VmFsaWQgJiYgbV9ub2RlQ291bnQgLSBpbmRleCA8IGluZGV4OwogICAg
IGlmIChsYXN0SXNDbG9zZXIgJiYgY29sbGVjdGlvbi5jb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNr
d2FyZCgpKSB7Ci0gICAgICAgIEFTU0VSVChoYXNWYWxpZENhY2hlKGNvbGxlY3Rpb24pKTsKKyAg
ICAgICAgQVNTRVJUKGhhc1ZhbGlkQ2FjaGUoKSk7CiAgICAgICAgIG1fY3VycmVudCA9IGNvbGxl
Y3Rpb24uY29sbGVjdGlvbkxhc3QoKTsKICAgICAgICAgaWYgKGluZGV4IDwgbV9ub2RlQ291bnQg
LSAxKQogICAgICAgICAgICAgY29sbGVjdGlvbi5jb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZCht
X2N1cnJlbnQsIG1fbm9kZUNvdW50IC0gaW5kZXggLSAxKTsKICAgICAgICAgbV9jdXJyZW50SW5k
ZXggPSBpbmRleDsKLSAgICAgICAgQVNTRVJUKG1fY3VycmVudCAhPSBlbmQpOworICAgICAgICBB
U1NFUlQobV9jdXJyZW50KTsKICAgICAgICAgcmV0dXJuICYqbV9jdXJyZW50OwogICAgIH0KIAot
ICAgIGlmICghaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKSkKKyAgICBpZiAoIWhhc1ZhbGlkQ2Fj
aGUoKSkKICAgICAgICAgY29sbGVjdGlvbi53aWxsVmFsaWRhdGVJbmRleENhY2hlKCk7CiAKICAg
ICBtX2N1cnJlbnQgPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25CZWdpbigpOwogICAgIG1fY3VycmVu
dEluZGV4ID0gMDsKLSAgICBib29sIHN0YXJ0SXNFbmQgPSBtX2N1cnJlbnQgPT0gZW5kOwotICAg
IGlmIChpbmRleCAmJiAhc3RhcnRJc0VuZCkgeworICAgIGJvb2wgc3RhcnRJc0VuZCA9ICFtX2N1
cnJlbnQ7CisgICAgaWYgKGluZGV4ICYmIG1fY3VycmVudCkgewogICAgICAgICBjb2xsZWN0aW9u
LmNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQobV9jdXJyZW50LCBpbmRleCwgbV9jdXJyZW50SW5k
ZXgpOwotICAgICAgICBBU1NFUlQobV9jdXJyZW50ICE9IGVuZCB8fCBtX2N1cnJlbnRJbmRleCA8
IGluZGV4KTsKKyAgICAgICAgQVNTRVJUKG1fY3VycmVudCB8fCBtX2N1cnJlbnRJbmRleCA8IGlu
ZGV4KTsKICAgICB9Ci0gICAgaWYgKG1fY3VycmVudCA9PSBlbmQpIHsKKyAgICBpZiAoIW1fY3Vy
cmVudCkgewogICAgICAgICAvLyBGYWlsZWQgdG8gZmluZCB0aGUgaW5kZXggYnV0IGF0IGxlYXN0
IHdlIG5vdyBrbm93IHRoZSBzaXplLgogICAgICAgICBtX25vZGVDb3VudCA9IHN0YXJ0SXNFbmQg
PyAwIDogbV9jdXJyZW50SW5kZXggKyAxOwogICAgICAgICBtX25vZGVDb3VudFZhbGlkID0gdHJ1
ZTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIEFTU0VSVChoYXNWYWxpZENh
Y2hlKGNvbGxlY3Rpb24pKTsKKyAgICBBU1NFUlQoaGFzVmFsaWRDYWNoZSgpKTsKICAgICByZXR1
cm4gJiptX2N1cnJlbnQ7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBDb2xsZWN0aW9uLCBjbGFzcyBJ
dGVyYXRvcj4KLXZvaWQgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+
OjppbnZhbGlkYXRlKGNvbnN0IENvbGxlY3Rpb24mIGNvbGxlY3Rpb24pCit2b2lkIENvbGxlY3Rp
b25JbmRleENhY2hlPENvbGxlY3Rpb24sIEl0ZXJhdG9yPjo6aW52YWxpZGF0ZSgpCiB7Ci0gICAg
bV9jdXJyZW50ID0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCk7CisgICAgbV9jdXJyZW50ID0g
eyB9OwogICAgIG1fbm9kZUNvdW50VmFsaWQgPSBmYWxzZTsKICAgICBtX2xpc3RWYWxpZCA9IGZh
bHNlOwogICAgIG1fY2FjaGVkTGlzdC5zaHJpbmsoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKaW5kZXggN2FlMTM4MjhjNWYwMmY0YmNmZDg5ZWE4NjAwMDQ5YTM1M2NhY2M3Yi4u
OGQ0ZWY5NmRlNzcyY2Q3YTMyMzI0MWY3OWQzMmJiMmViYTc3OTg2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcApAQCAtOTIzLDcgKzkyMyw3IEBAIEVsZW1lbnQqIENvbnRhaW5l
ck5vZGU6Omxhc3RFbGVtZW50Q2hpbGQoKSBjb25zdAogdW5zaWduZWQgQ29udGFpbmVyTm9kZTo6
Y2hpbGRFbGVtZW50Q291bnQoKSBjb25zdAogewogICAgIGF1dG8gY2hpbGRyZW4gPSBjaGlsZHJl
bk9mVHlwZTxFbGVtZW50PigqdGhpcyk7Ci0gICAgcmV0dXJuIHN0ZDo6ZGlzdGFuY2UoY2hpbGRy
ZW4uYmVnaW4oKSwgY2hpbGRyZW4uZW5kKCkpOworICAgIHJldHVybiBzdGQ6OmRpc3RhbmNlKGNo
aWxkcmVuLmJlZ2luKCksIHsgfSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5v
ZGU6OmFwcGVuZChWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIHZlY3RvcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCmluZGV4IDJhZjI3NjE4Nzc1N2U4
ODI4ODMwNTVjOTA0ZTZlODczMzRjZDRkMjMuLmU1NmI4ZmUyMWFjNTY4ZjIyMDg1NWQ4YTRlMzVk
YTAxNDQ4NTgzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
QWxnb3JpdGhtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmNwcApAQCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKIAorI2luY2x1ZGUgIkVsZW1lbnRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTaGFkb3dS
b290LmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3Rv
bUVsZW1lbnRSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5LmNwcAppbmRleCA5NDU4MmVmNDNmNmYzZDc0MmI3MDA4NzI5NjllM2Y5Mzk1Y2RkMjY3
Li41YjA5NWFjYmYxY2Q1NDEzMDhlMWEwZmJmMDM1MDE1OTE5MTA2NTBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcApAQCAtMjksMTQgKzI5LDEyIEBA
CiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCIKICNpbmNsdWRlICJET01X
aW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNp
bmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSlNET01Q
cm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgogI2luY2x1ZGUgIlF1
YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SlNWYWx1ZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAppbmRleCA4ZjIxYjI3OTM1MDM3NjE5
ZWIxMDNiOTRjYzIwYzcyY2JiNzExYTE4Li4yYTI1YWIyZTVhYTc2Nzk2NTA4MzcwYWVmYTI5MWU3
MmM3YzFjNjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCkBAIC0y
NCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCisjaW5j
bHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50UGFyc2VyLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlhNTERvY3VtZW50UGFyc2VyLmgiCkBAIC0x
MDMsNyArMTAzLDcgQEAgRWxlbWVudCogRG9jdW1lbnRGcmFnbWVudDo6Z2V0RWxlbWVudEJ5SWQo
Y29uc3QgQXRvbVN0cmluZyYgaWQpIGNvbnN0CiAgICAgICAgIHJldHVybiB0cmVlU2NvcGUoKS5n
ZXRFbGVtZW50QnlJZChpZCk7CiAKICAgICAvLyBPdGhlcndpc2UsIGZhbGwgYmFjayB0byBpdGVy
YXRpbmcgYWxsIG9mIHRoZSBlbGVtZW50IGRlc2NlbmRhbnRzLgotICAgIGZvciAoYXV0byYgZWxl
bWVudCA6IGVsZW1lbnREZXNjZW5kYW50cygqdGhpcykpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1l
bnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PigqdGhpcykpIHsKICAgICAgICAgaWYgKGVs
ZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKSA9PSBpZCkKICAgICAgICAgICAgIHJldHVybiBjb25zdF9j
YXN0PEVsZW1lbnQqPigmZWxlbWVudCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IDg3MThlNmQ4NmFkN2ZlNTA4YjEzODcwNmE2NWQyOTVhZGQ0MzljNTIuLjAxMTdhMzY2YmM3MjU3
OTVhNTZmZWI5OWFlMWZlMTYyNzgzOGVlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTQs
NyArNCw3IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNv
bSkKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMjAwNyBEYXZpZCBTbWl0aCAoY2F0ZmlzaC5tYW5AZ21haWwuY29t
KQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA3IEVyaWMgU2VpZGVsIChlcmljQHdlYmtpdC5v
cmcpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgpAQCAtNjAsNyArNjAsNiBAQAogI2luY2x1ZGUgIkdldEFuaW1hdGlv
bnNPcHRpb25zLmgiCiAjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TENhbnZhc0VsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxIdG1sRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxMYWJlbEVsZW1lbnQuaCIKQEAgLTM0MDAsMjYgKzMzOTksMTQgQEAgdW5zaWduZWQgRWxl
bWVudDo6cmFyZURhdGFDaGlsZEluZGV4KCkgY29uc3QKIAogQXRvbVN0cmluZyBFbGVtZW50Ojpj
b21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdAogewotICAgIGlmIChjb25zdCBFbGVtZW50
RGF0YSogZWxlbWVudERhdGEgPSB0aGlzLT5lbGVtZW50RGF0YSgpKSB7Ci0gICAgICAgIGlmIChj
b25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnREYXRhLT5maW5kTGFuZ3VhZ2VBdHRy
aWJ1dGUoKSkKLSAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGUtPnZhbHVlKCk7Ci0gICAgfQot
CiAgICAgLy8gVGhlIGxhbmd1YWdlIHByb3BlcnR5IGlzIGluaGVyaXRlZCwgc28gd2UgaXRlcmF0
ZSBvdmVyIHRoZSBwYXJlbnRzIHRvIGZpbmQgdGhlIGZpcnN0IGxhbmd1YWdlLgotICAgIGNvbnN0
IE5vZGUqIGN1cnJlbnROb2RlID0gdGhpczsKLSAgICB3aGlsZSAoKGN1cnJlbnROb2RlID0gY3Vy
cmVudE5vZGUtPnBhcmVudE5vZGUoKSkpIHsKLSAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KCpjdXJy
ZW50Tm9kZSkpIHsKLSAgICAgICAgICAgIGlmIChjb25zdCBFbGVtZW50RGF0YSogZWxlbWVudERh
dGEgPSBkb3duY2FzdDxFbGVtZW50PigqY3VycmVudE5vZGUpLmVsZW1lbnREYXRhKCkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBlbGVtZW50RGF0
YS0+ZmluZExhbmd1YWdlQXR0cmlidXRlKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBh
dHRyaWJ1dGUtPnZhbHVlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoaXM8
RG9jdW1lbnQ+KCpjdXJyZW50Tm9kZSkpIHsKLSAgICAgICAgICAgIC8vIGNoZWNraW5nIHRoZSBN
SU1FIGNvbnRlbnQtbGFuZ3VhZ2UKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVu
dD4oKmN1cnJlbnROb2RlKS5jb250ZW50TGFuZ3VhZ2UoKTsKKyAgICBmb3IgKGF1dG8mIGVsZW1l
bnQgOiBsaW5lYWdlT2ZUeXBlPEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBpZiAoYXV0byog
ZWxlbWVudERhdGEgPSBlbGVtZW50LmVsZW1lbnREYXRhKCkpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvKiBhdHRyaWJ1dGUgPSBlbGVtZW50RGF0YS0+ZmluZExhbmd1YWdlQXR0cmlidXRlKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFsdWUoKTsKICAgICAgICAgfQogICAg
IH0KLQotICAgIHJldHVybiBudWxsQXRvbSgpOworICAgIHJldHVybiBkb2N1bWVudCgpLmNvbnRl
bnRMYW5ndWFnZSgpOwogfQogCiBMb2NhbGUmIEVsZW1lbnQ6OmxvY2FsZSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oCmluZGV4IDRiNjJkMzhi
MzhmZDM4NDljNzM3YWNhODdlZjg0NTI3ZjgzNzU1ZjAuLmM5OWM3NjYyNzU3M2VkOTE2MTc4MmZk
MDdiZDFmYzY1ZjNiMjM5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
QW5jZXN0b3JJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0
b3JJdGVyYXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI5LDYzICsyOSwzNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yIDogcHVibGljIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gewotcHVibGljOgotICAg
IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yKCk7Ci0gICAgZXhwbGljaXQgRWxlbWVudEFuY2VzdG9y
SXRlcmF0b3IoRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotICAgIEVsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yJiBvcGVyYXRvcisrKCk7Ci19OwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEVsZW1lbnRB
bmNlc3RvclJhbmdlOwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBF
bGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRDb25zdEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiB7Ci1wdWJsaWM6Ci0gICAgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRv
cigpOwotICAgIGV4cGxpY2l0IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3IoY29uc3QgRWxl
bWVudFR5cGUqIGN1cnJlbnQpOwotICAgIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3ImIG9w
ZXJhdG9yKysoKTsKLX07CisvLyBSYW5nZSBmb3IgaXRlcmF0aW5nIGFuIGVsZW1lbnQgYW5kIGl0
cyBhbmNlc3RvcnMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudEFuY2Vz
dG9yUmFuZ2U8RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoRWxlbWVudCYgZmlyc3QpOwordGVt
cGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVs
ZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKGNvbnN0IEVsZW1lbnQmIGZpcnN0KTsKKworLy8gUmFu
Z2UgZm9yIGl0ZXJhdGluZyBhIG5vZGUncyBlbGVtZW50IGFuY2VzdG9ycy4KK3RlbXBsYXRlPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50VHlwZT4gYW5j
ZXN0b3JzT2ZUeXBlKE5vZGUmIGRlc2NlbmRhbnQpOwordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNP
ZlR5cGUoY29uc3QgTm9kZSYgZGVzY2VuZGFudCk7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlciB7CitjbGFzcyBF
bGVtZW50QW5jZXN0b3JJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0
ZXIoRWxlbWVudFR5cGUqIGZpcnN0KTsKLSAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVt
ZW50VHlwZT4gYmVnaW4oKTsKLSAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlw
ZT4gZW5kKCk7Ci0gICAgRWxlbWVudFR5cGUqIGZpcnN0KCkgeyByZXR1cm4gbV9maXJzdDsgfQot
Ci1wcml2YXRlOgotICAgIEVsZW1lbnRUeXBlKiBtX2ZpcnN0OworICAgIGV4cGxpY2l0IEVsZW1l
bnRBbmNlc3Rvckl0ZXJhdG9yKEVsZW1lbnRUeXBlKiA9IG51bGxwdHIpOworICAgIEVsZW1lbnRB
bmNlc3Rvckl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1jbGFzcyBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlciB7
CitjbGFzcyBFbGVtZW50QW5jZXN0b3JSYW5nZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRWxl
bWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgRWxlbWVudFR5cGUqIGZpcnN0
KTsKLSAgICBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigp
IGNvbnN0OwotICAgIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGVu
ZCgpIGNvbnN0OwotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZmlyc3Q7IH0KKyAgICBleHBsaWNpdCBFbGVtZW50QW5jZXN0b3JSYW5nZShFbGVtZW50VHlw
ZSogZmlyc3QpOworICAgIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdp
bigpIGNvbnN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpudWxscHRyX3QgZW5kKCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZmlyc3Q7IH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBFbGVtZW50VHlwZSogbV9maXJzdDsK
KyAgICBFbGVtZW50VHlwZSogY29uc3QgbV9maXJzdDsKIH07CiAKLUVsZW1lbnRBbmNlc3Rvckl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50TGluZWFnZShFbGVtZW50KiBmaXJzdCk7Ci1F
bGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50TGluZWFn
ZShjb25zdCBFbGVtZW50KiBmaXJzdCk7Ci1FbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8
RWxlbWVudD4gZWxlbWVudEFuY2VzdG9ycyhFbGVtZW50KiBkZXNjZW5kYW50KTsKLUVsZW1lbnRB
bmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRBbmNlc3RvcnMoY29u
c3QgRWxlbWVudCogZGVzY2VuZGFudCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlw
ZShFbGVtZW50JiBmaXJzdCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1l
bnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBl
KGNvbnN0IEVsZW1lbnQmIGZpcnN0KTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4g
RWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNPZlR5
cGUoTm9kZSYgZGVzY2VuZGFudCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVs
ZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNP
ZlR5cGUoY29uc3QgTm9kZSYgZGVzY2VuZGFudCk7Ci0KIC8vIEVsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5j
ZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yKCkKLSAg
ICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obnVsbHB0cikKLXsKLX0KLQogdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9y
PEVsZW1lbnRUeXBlPjo6RWxlbWVudEFuY2VzdG9ySXRlcmF0b3IoRWxlbWVudFR5cGUqIGN1cnJl
bnQpCiAgICAgOiBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KG51bGxwdHIsIGN1cnJlbnQp
CkBAIC05NSwxMTkgKzY5LDYyIEBAIGlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVt
ZW50VHlwZT46OkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yKEVsZW1lbnRUeXBlCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxl
bWVudFR5cGU+JiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9y
KysoKQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxF
bGVtZW50VHlwZT4mPihFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZUFuY2Vz
dG9yKCkpOwotfQotCi0vLyBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yCi0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcigpCi0gICAgOiBF
bGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obnVsbHB0cikKLXsKLX0KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRl
cmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yKGNvbnN0IEVs
ZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5
cGU+KG51bGxwdHIsIGN1cnJlbnQpCi17Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYg
RWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQot
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPiY+KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VB
bmNlc3RvcigpKTsKKyAgICBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZUFu
Y2VzdG9yKCk7CisgICAgcmV0dXJuICp0aGlzOwogfQogCi0vLyBFbGVtZW50QW5jZXN0b3JJdGVy
YXRvckFkYXB0ZXIKKy8vIEVsZW1lbnRBbmNlc3RvclJhbmdlCiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudFR5cGU+OjpFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXIoRWxlbWVudFR5cGUqIGZp
cnN0KQoraW5saW5lIEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRUeXBlPjo6RWxlbWVudEFu
Y2VzdG9yUmFuZ2UoRWxlbWVudFR5cGUqIGZpcnN0KQogICAgIDogbV9maXJzdChmaXJzdCkKIHsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNl
c3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8
RWxlbWVudFR5cGU+OjpiZWdpbigpCitpbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxl
bWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRUeXBlPjo6YmVnaW4oKSBjb25z
dAogewogICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9m
aXJzdCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVt
ZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JB
ZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkKLXsKLSAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9y
SXRlcmF0b3I8RWxlbWVudFR5cGU+KCk7Ci19Ci0KLS8vIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRl
cmF0b3JBZGFwdGVyCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBF
bGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OkVsZW1lbnRB
bmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCkKLSAg
ICA6IG1fZmlyc3QoZmlyc3QpCi17Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVt
ZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2luKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT4obV9maXJzdCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGlu
ZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0
b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KCk7Ci19Ci0K
IC8vIFN0YW5kYWxvbmUgZnVuY3Rpb25zCiAKLWlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRv
ckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudExpbmVhZ2UoRWxlbWVudCogZmlyc3QpCi17Ci0gICAg
cmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PihmaXJzdCk7Ci19
Ci0KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBl
bGVtZW50TGluZWFnZShjb25zdCBFbGVtZW50KiBmaXJzdCkKK3RlbXBsYXRlPD4gaW5saW5lIEVs
ZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnQ+IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4oRWxlbWVu
dCYgZmlyc3QpCiB7Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFw
dGVyPEVsZW1lbnQ+KGZpcnN0KTsKLX0KLQotaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9y
QWRhcHRlcjxFbGVtZW50PiBlbGVtZW50QW5jZXN0b3JzKEVsZW1lbnQqIGRlc2NlbmRhbnQpCi17
Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PihkZXNj
ZW5kYW50LT5wYXJlbnRFbGVtZW50KCkpOwotfQotCi1pbmxpbmUgRWxlbWVudEFuY2VzdG9yQ29u
c3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudEFuY2VzdG9ycyhjb25zdCBFbGVtZW50
KiBkZXNjZW5kYW50KQotewotICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9y
QWRhcHRlcjxFbGVtZW50PihkZXNjZW5kYW50LT5wYXJlbnRFbGVtZW50KCkpOworICAgIHJldHVy
biBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50PigmZmlyc3QpOwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFw
dGVyPEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKEVsZW1lbnQmIGZpcnN0KQoraW5saW5lIEVs
ZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKEVsZW1lbnQmIGZp
cnN0KQogewogICAgIGlmIChpczxFbGVtZW50VHlwZT4oZmlyc3QpKQotICAgICAgICByZXR1cm4g
RWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihzdGF0aWNfY2FzdDxF
bGVtZW50VHlwZSo+KCZmaXJzdCkpOworICAgICAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yUmFu
Z2U8RWxlbWVudFR5cGU+KCZkb3duY2FzdDxFbGVtZW50VHlwZT4oZmlyc3QpKTsKICAgICByZXR1
cm4gYW5jZXN0b3JzT2ZUeXBlPEVsZW1lbnRUeXBlPihmaXJzdCk7CiB9CiAKK3RlbXBsYXRlPD4g
aW5saW5lIEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnQ+IGxpbmVhZ2VPZlR5cGU8
RWxlbWVudD4oY29uc3QgRWxlbWVudCYgZmlyc3QpCit7CisgICAgcmV0dXJuIEVsZW1lbnRBbmNl
c3RvclJhbmdlPGNvbnN0IEVsZW1lbnQ+KCZmaXJzdCk7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRl
cjxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShjb25zdCBFbGVtZW50JiBmaXJzdCkKK2lubGlu
ZSBFbGVtZW50QW5jZXN0b3JSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShj
b25zdCBFbGVtZW50JiBmaXJzdCkKIHsKICAgICBpZiAoaXM8RWxlbWVudFR5cGU+KGZpcnN0KSkK
LSAgICAgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1l
bnRUeXBlPihzdGF0aWNfY2FzdDxjb25zdCBFbGVtZW50VHlwZSo+KCZmaXJzdCkpOworICAgICAg
ICByZXR1cm4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+KCZkb3duY2Fz
dDxFbGVtZW50VHlwZT4oZmlyc3QpKTsKICAgICByZXR1cm4gYW5jZXN0b3JzT2ZUeXBlPEVsZW1l
bnRUeXBlPihmaXJzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlu
bGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGFuY2VzdG9y
c09mVHlwZShOb2RlJiBkZXNjZW5kYW50KQoraW5saW5lIEVsZW1lbnRBbmNlc3RvclJhbmdlPEVs
ZW1lbnRUeXBlPiBhbmNlc3RvcnNPZlR5cGUoTm9kZSYgZGVzY2VuZGFudCkKIHsKLSAgICBFbGVt
ZW50VHlwZSogZmlyc3QgPSBmaW5kRWxlbWVudEFuY2VzdG9yT2ZUeXBlPEVsZW1lbnRUeXBlPihk
ZXNjZW5kYW50KTsKLSAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVs
ZW1lbnRUeXBlPihmaXJzdCk7CisgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1l
bnRUeXBlPihmaW5kRWxlbWVudEFuY2VzdG9yT2ZUeXBlPEVsZW1lbnRUeXBlPihkZXNjZW5kYW50
KSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZUeXBl
KGNvbnN0IE5vZGUmIGRlc2NlbmRhbnQpCitpbmxpbmUgRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29u
c3QgRWxlbWVudFR5cGU+IGFuY2VzdG9yc09mVHlwZShjb25zdCBOb2RlJiBkZXNjZW5kYW50KQog
ewotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCA9IGZpbmRFbGVtZW50QW5jZXN0b3JPZlR5
cGU8Y29uc3QgRWxlbWVudFR5cGU+KGRlc2NlbmRhbnQpOwotICAgIHJldHVybiBFbGVtZW50QW5j
ZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4oZmlyc3QpOworICAgIHJldHVy
biBFbGVtZW50QW5jZXN0b3JSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4oZmluZEVsZW1lbnRBbmNl
c3Rvck9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oZGVzY2VuZGFudCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFu
ZFRleHREZXNjZW5kYW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5k
VGV4dERlc2NlbmRhbnRJdGVyYXRvci5oCmluZGV4IDQ4ZTNiMWE2MThkMmZlMGEyODc2N2IzNzMx
ZjJmYWRmOTczZWZiY2UuLmQxZGRiMGY3Mzc1MDE1NjQ1OTdiMGEwMjM0ZTJiNDYyMDFkNWRlNzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJ
dGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5kVGV4dERlc2NlbmRh
bnRJdGVyYXRvci5oCkBAIC0zNiw4ICszNiw4IEBAIGNsYXNzIEVsZW1lbnRBbmRUZXh0RGVzY2Vu
ZGFudEl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVy
YXRvcigpOwogICAgIGVudW0gRmlyc3RDaGlsZFRhZyB7IEZpcnN0Q2hpbGQgfTsKLSAgICBFbGVt
ZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihDb250YWluZXJOb2RlJiByb290LCBGaXJzdENo
aWxkVGFnKTsKLSAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihDb250YWluZXJO
b2RlJiByb290LCBOb2RlKiBjdXJyZW50KTsKKyAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJ
dGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBGaXJzdENoaWxkVGFnKTsKKyAgICBF
bGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290
LCBOb2RlKiBjdXJyZW50KTsKIAogICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9y
JiBvcGVyYXRvcisrKCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0KCk7IH0KIApAQCAtNjMsOSArNjMs
OSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgaXNFbGVtZW50T3JUZXh0
KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEVsZW1lbnQ+KG5vZGUpIHx8IGlzPFRleHQ+
KG5vZGUpOyB9Ci0gICAgc3RhdGljIE5vZGUqIGZpcnN0Q2hpbGQoTm9kZSYpOwotICAgIHN0YXRp
YyBOb2RlKiBuZXh0U2libGluZyhOb2RlJik7Ci0gICAgc3RhdGljIE5vZGUqIHByZXZpb3VzU2li
bGluZyhOb2RlJik7CisgICAgc3RhdGljIE5vZGUqIGZpcnN0Q2hpbGQoY29uc3QgTm9kZSYpOwor
ICAgIHN0YXRpYyBOb2RlKiBuZXh0U2libGluZyhjb25zdCBOb2RlJik7CisgICAgc3RhdGljIE5v
ZGUqIHByZXZpb3VzU2libGluZyhjb25zdCBOb2RlJik7CiAKICAgICB2b2lkIHBvcEFuY2VzdG9y
U2libGluZ1N0YWNrKCk7CiAKQEAgLTgyLDE3ICs4MiwxNyBAQCBwcml2YXRlOgogI2VuZGlmCiB9
OwogCi1jbGFzcyBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgeworY2xh
c3MgRWxlbWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2UgewogcHVibGljOgotICAgIGV4cGxpY2l0
IEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2RlJiBy
b290KTsKLSAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBiZWdpbigpOwotICAg
IEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yIGVuZCgpOworICAgIGV4cGxpY2l0IEVs
ZW1lbnRBbmRUZXh0RGVzY2VuZGFudFJhbmdlKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpOwor
ICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CisgICAg
RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgZW5kKCkgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgQ29udGFpbmVyTm9kZSYgbV9yb290OworICAgIGNvbnN0IENvbnRhaW5lck5vZGUmIG1f
cm9vdDsKIH07CiAKLUVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlciBlbGVt
ZW50QW5kVGV4dERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUmKTsKK0VsZW1lbnRBbmRUZXh0RGVz
Y2VuZGFudFJhbmdlIGVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudHMoQ29udGFpbmVyTm9kZSYpOwog
CiAvLyBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcgogCkBAIC0xMDEsNyArMTAxLDcg
QEAgaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4
dERlc2NlbmRhbnRJdGVyYXRvcigpCiB7CiB9CiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERlc2Nl
bmRhbnRJdGVyYXRvcjo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoQ29udGFpbmVy
Tm9kZSYgcm9vdCwgRmlyc3RDaGlsZFRhZykKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRh
bnRJdGVyYXRvcjo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFp
bmVyTm9kZSYgcm9vdCwgRmlyc3RDaGlsZFRhZykKICAgICA6IG1fY3VycmVudChmaXJzdENoaWxk
KHJvb3QpKQogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLCBtX2Fzc2VydGlvbnMobV9jdXJyZW50
KQpAQCAtMTEzLDcgKzExMyw3IEBAIGlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVy
YXRvcjo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoQ29udGFpCiAgICAgbV9kZXB0
aCA9IDE7CiB9CiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6RWxl
bWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoQ29udGFpbmVyTm9kZSYgcm9vdCwgTm9kZSog
Y3VycmVudCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6RWxlbWVu
dEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgTm9k
ZSogY3VycmVudCkKICAgICA6IG1fY3VycmVudChjdXJyZW50KQogI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgLCBtX2Fzc2VydGlvbnMobV9jdXJyZW50KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIGlubGlu
ZSB2b2lkIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpkcm9wQXNzZXJ0aW9ucygp
CiAjZW5kaWYKIH0KIAotaW5saW5lIE5vZGUqIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJh
dG9yOjpmaXJzdENoaWxkKE5vZGUmIGN1cnJlbnQpCitpbmxpbmUgTm9kZSogRWxlbWVudEFuZFRl
eHREZXNjZW5kYW50SXRlcmF0b3I6OmZpcnN0Q2hpbGQoY29uc3QgTm9kZSYgY3VycmVudCkKIHsK
ICAgICBhdXRvKiBub2RlID0gY3VycmVudC5maXJzdENoaWxkKCk7CiAgICAgd2hpbGUgKG5vZGUg
JiYgIWlzRWxlbWVudE9yVGV4dCgqbm9kZSkpCkBAIC0xNTYsNyArMTU2LDcgQEAgaW5saW5lIE5v
ZGUqIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpmaXJzdENoaWxkKE5vZGUmIGN1
cnJlbnQpCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLWlubGluZSBOb2RlKiBFbGVtZW50QW5kVGV4
dERlc2NlbmRhbnRJdGVyYXRvcjo6bmV4dFNpYmxpbmcoTm9kZSYgY3VycmVudCkKK2lubGluZSBO
b2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6bmV4dFNpYmxpbmcoY29uc3Qg
Tm9kZSYgY3VycmVudCkKIHsKICAgICBhdXRvKiBub2RlID0gY3VycmVudC5uZXh0U2libGluZygp
OwogICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPclRleHQoKm5vZGUpKQpAQCAtMTY0LDcg
KzE2NCw3IEBAIGlubGluZSBOb2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6
bmV4dFNpYmxpbmcoTm9kZSYgY3VycmVudCkKICAgICByZXR1cm4gbm9kZTsKIH0KIAotaW5saW5l
IE5vZGUqIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpwcmV2aW91c1NpYmxpbmco
Tm9kZSYgY3VycmVudCkKK2lubGluZSBOb2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVy
YXRvcjo6cHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUmIGN1cnJlbnQpCiB7CiAgICAgYXV0byog
bm9kZSA9IGN1cnJlbnQucHJldmlvdXNTaWJsaW5nKCk7CiAgICAgd2hpbGUgKG5vZGUgJiYgIWlz
RWxlbWVudE9yVGV4dCgqbm9kZSkpCkBAIC0yOTQsMjggKzI5NCwyOCBAQCBpbmxpbmUgYm9vbCBF
bGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBFbGVtZW50
QW5kVGV4dERlcwogICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKIH0KIAotLy8gRWxlbWVu
dEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyCisvLyBFbGVtZW50QW5kVGV4dERlc2Nl
bmRhbnRSYW5nZQogCi1pbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFw
dGVyOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVyTm9k
ZSYgcm9vdCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZTo6RWxlbWVudEFu
ZFRleHREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKICAgICA6IG1f
cm9vdChyb290KQogewogfQogCi1pbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0
b3IgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjpiZWdpbigpCitpbmxp
bmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgRWxlbWVudEFuZFRleHREZXNjZW5k
YW50UmFuZ2U6OmJlZ2luKCkgY29uc3QKIHsKICAgICByZXR1cm4gRWxlbWVudEFuZFRleHREZXNj
ZW5kYW50SXRlcmF0b3IobV9yb290LCBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6
Rmlyc3RDaGlsZCk7CiB9CiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRv
ciBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI6OmVuZCgpCitpbmxpbmUg
RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgRWxlbWVudEFuZFRleHREZXNjZW5kYW50
UmFuZ2U6OmVuZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAogLy8gU3RhbmRhbG9u
ZSBmdW5jdGlvbnMKIAotaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRh
cHRlciBlbGVtZW50QW5kVGV4dERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUmIHJvb3QpCitpbmxp
bmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2UgZWxlbWVudEFuZFRleHREZXNjZW5kYW50
cyhDb250YWluZXJOb2RlJiByb290KQogewotICAgIHJldHVybiBFbGVtZW50QW5kVGV4dERlc2Nl
bmRhbnRJdGVyYXRvckFkYXB0ZXIocm9vdCk7CisgICAgcmV0dXJuIEVsZW1lbnRBbmRUZXh0RGVz
Y2VuZGFudFJhbmdlKHJvb3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENoaWxkSXRlcmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oCmluZGV4IDhlMzhmYjUwMzJhODIzNzc2
ZTJhN2JjYTNhYzI1OGNiMTUwNmM0MDAuLmU2NmIyNDlmNTk1MTEwMDAzODRkODQ3MTI3N2EzZjIw
MjE2ZTYxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVy
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5
LDc5ICsyOSwzOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlPHR5cGVuYW1l
PiBjbGFzcyBFbGVtZW50Q2hpbGRSYW5nZTsKKworLy8gUmFuZ2UgZm9yIGl0ZXJhdGluZyB0aHJv
dWdoIGNoaWxkIGVsZW1lbnRzLgordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVt
ZW50Q2hpbGRSYW5nZTxFbGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoQ29udGFpbmVyTm9kZSYp
OwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRSYW5nZTxjb25z
dCBFbGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYpOworCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBjbGFzcyBFbGVtZW50Q2hpbGRJdGVyYXRv
ciA6IHB1YmxpYyBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IHsKIHB1YmxpYzoKLSAgICB0
eXBlZGVmIEVsZW1lbnRUeXBlIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlm
ZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgRWxlbWVudFR5cGUqIHBvaW50ZXI7Ci0gICAgdHlw
ZWRlZiBFbGVtZW50VHlwZSYgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgc3RkOjpmb3J3YXJkX2l0
ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLQotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9y
KGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCk7CisgICAgRWxlbWVudENoaWxkSXRlcmF0b3Io
KSA9IGRlZmF1bHQ7CiAgICAgRWxlbWVudENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9k
ZSYgcGFyZW50LCBFbGVtZW50VHlwZSogY3VycmVudCk7CiAgICAgRWxlbWVudENoaWxkSXRlcmF0
b3ImIG9wZXJhdG9yLS0oKTsKICAgICBFbGVtZW50Q2hpbGRJdGVyYXRvciYgb3BlcmF0b3IrKygp
OwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVudENo
aWxkQ29uc3RJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT4gewotcHVibGljOgotICAgIHR5cGVkZWYgY29uc3QgRWxlbWVudFR5cGUgdmFsdWVfdHlwZTsK
LSAgICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiBjb25z
dCBFbGVtZW50VHlwZSogcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNvbnN0IEVsZW1lbnRUeXBlJiBy
ZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9y
X2NhdGVnb3J5OwotCi0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcihjb25zdCBDb250YWlu
ZXJOb2RlJiBwYXJlbnQpOwotICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IoY29uc3QgQ29u
dGFpbmVyTm9kZSYgcGFyZW50LCBjb25zdCBFbGVtZW50VHlwZSogY3VycmVudCk7Ci0gICAgRWxl
bWVudENoaWxkQ29uc3RJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwotICAgIEVsZW1lbnRDaGlsZENv
bnN0SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlciB7Ci1wdWJsaWM6Ci0g
ICAgRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUmIHBhcmVudCk7Ci0K
LSAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKTsKLSAgICBFbGVt
ZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCk7Ci0gICAgRWxlbWVudENoaWxkSXRl
cmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoRWxlbWVudFR5cGUmKTsKLQotICAgIEVsZW1lbnRU
eXBlKiBmaXJzdCgpOwotICAgIEVsZW1lbnRUeXBlKiBsYXN0KCk7Ci0KLXByaXZhdGU6Ci0gICAg
Q29udGFpbmVyTm9kZSYgbV9wYXJlbnQ7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+Ci1jbGFzcyBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlciB7CitjbGFzcyBF
bGVtZW50Q2hpbGRSYW5nZSB7CiBwdWJsaWM6Ci0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRv
ckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKKyAgICBFbGVtZW50Q2hpbGRS
YW5nZShjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpOwogCi0gICAgRWxlbWVudENoaWxkQ29u
c3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKSBjb25zdDsKLSAgICBFbGVtZW50Q2hpbGRD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKSBjb25zdDsKLSAgICBFbGVtZW50Q2hpbGRD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbkF0KGNvbnN0IEVsZW1lbnRUeXBlJikgY29u
c3Q7CisgICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6Om51bGxwdHJfdCBlbmQoKSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoRWxl
bWVudFR5cGUmKSBjb25zdDsKIAotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0
OwotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBsYXN0KCkgY29uc3Q7CisgICAgRWxlbWVudFR5cGUq
IGZpcnN0KCkgY29uc3Q7CisgICAgRWxlbWVudFR5cGUqIGxhc3QoKSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICBjb25zdCBDb250YWluZXJOb2RlJiBtX3BhcmVudDsKIH07CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPiBjaGlsZHJlbk9mVHlwZShDb250YWluZXJOb2RlJik7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBl
PiBjaGlsZHJlbk9mVHlwZShjb25zdCBDb250YWluZXJOb2RlJik7Ci0KIC8vIEVsZW1lbnRDaGls
ZEl0ZXJhdG9yCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVt
ZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNvbnN0
IENvbnRhaW5lck5vZGUmIHBhcmVudCkKLSAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4oJnBhcmVudCkKLXsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5s
aW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENoaWxkSXRlcmF0
b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50LCBFbGVtZW50VHlwZSogY3VycmVudCkKICAg
ICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnBhcmVudCwgY3VycmVudCkKQEAgLTEx
MSwxMzIgKzcxLDYyIEBAIGlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46
OkVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+
JiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yLS0oKQogewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihF
bGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZpb3VzU2libGluZygpKTsK
KyAgICBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZpb3VzU2libGlu
ZygpOworICAgIHJldHVybiAqdGhpczsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgogaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENo
aWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKIHsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxlbWVudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGluZygpKTsKLX0KLQotLy8gRWxlbWVu
dENoaWxkQ29uc3RJdGVyYXRvcgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGls
ZENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KQotICAgIDogRWxlbWVu
dENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZwYXJlbnQpCi17Ci19Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPjo6RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2Rl
JiBwYXJlbnQsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZwYXJlbnQsIGN1cnJlbnQpCi17Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiYgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9w
ZXJhdG9yLS0oKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6
dHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoKSk7CisgICAgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6dHJhdmVyc2VOZXh0U2libGluZygpOworICAgIHJldHVybiAqdGhpczsKIH0KIAorLy8g
RWxlbWVudENoaWxkUmFuZ2UKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5s
aW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q2hpbGRD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCi17Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxlbWVu
dENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkpOwotfQot
Ci0vLyBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXIKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlw
ZT46OkVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2RlJiBwYXJlbnQpCitp
bmxpbmUgRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5cGU+OjpFbGVtZW50Q2hpbGRSYW5nZShj
b25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpCiAgICAgOiBtX3BhcmVudChwYXJlbnQpCiB7CiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRJ
dGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPjo6YmVnaW4oKQoraW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBF
bGVtZW50Q2hpbGRSYW5nZTxFbGVtZW50VHlwZT46OmJlZ2luKCkgY29uc3QKIHsKICAgICByZXR1
cm4gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcGFyZW50LCBUcmF2ZXJzYWw8
RWxlbWVudFR5cGU+OjpmaXJzdENoaWxkKG1fcGFyZW50KSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4gRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkKLXsKLSAg
ICByZXR1cm4gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcGFyZW50KTsKLX0K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRUeXBlKiBF
bGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpmaXJzdCgpCitpbmxpbmUg
RWxlbWVudFR5cGUqIEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPjo6Zmlyc3QoKSBjb25z
dAogewogICAgIHJldHVybiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdENoaWxkKG1fcGFy
ZW50KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1l
bnRUeXBlKiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpsYXN0KCkK
K2lubGluZSBFbGVtZW50VHlwZSogRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5cGU+OjpsYXN0
KCkgY29uc3QKIHsKICAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bGFzdENoaWxk
KG1fcGFyZW50KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5l
IEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRJdGVyYXRvckFk
YXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBjaGlsZCkKK2lubGluZSBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVu
dFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBjaGlsZCkgY29uc3QKIHsKICAgICBBU1NFUlQo
Y2hpbGQucGFyZW50Tm9kZSgpID09ICZtX3BhcmVudCk7CiAgICAgcmV0dXJuIEVsZW1lbnRDaGls
ZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3BhcmVudCwgJmNoaWxkKTsKIH0KIAotLy8gRWxlbWVu
dENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXIKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBl
Pjo6RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYg
cGFyZW50KQotICAgIDogbV9wYXJlbnQocGFyZW50KQotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT4gRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdp
bigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+KG1fcGFyZW50LCBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdENoaWxkKG1fcGFy
ZW50KSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVt
ZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1l
bnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcGFyZW50KTsKLX0KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlKiBFbGVt
ZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZpcnN0KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RDaGlsZChtX3BhcmVu
dCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBjb25zdCBF
bGVtZW50VHlwZSogRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+
OjpsYXN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bGFz
dENoaWxkKG1fcGFyZW50KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRDaGls
ZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW5BdChjb25zdCBFbGVtZW50
VHlwZSYgY2hpbGQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGNoaWxkLnBhcmVudE5vZGUoKSA9PSAm
bV9wYXJlbnQpOwotICAgIHJldHVybiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPihtX3BhcmVudCwgJmNoaWxkKTsKLX0KLQogLy8gU3RhbmRhbG9uZSBmdW5jdGlvbnMKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoQ29udGFpbmVyTm9kZSYgcGFy
ZW50KQoraW5saW5lIEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlw
ZShDb250YWluZXJOb2RlJiBwYXJlbnQpCiB7Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT4ocGFyZW50KTsKKyAgICByZXR1cm4gRWxlbWVudENoaWxk
UmFuZ2U8RWxlbWVudFR5cGU+KHBhcmVudCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50
VHlwZT4gY2hpbGRyZW5PZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KQoraW5saW5l
IEVsZW1lbnRDaGlsZFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShjb25z
dCBDb250YWluZXJOb2RlJiBwYXJlbnQpCiB7Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZENvbnN0
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihwYXJlbnQpOworICAgIHJldHVybiBFbGVtZW50
Q2hpbGRSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4ocGFyZW50KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYmRiOTlhNmRkZTk2NDZkZmI0
MTc0NjEyOTkxOGM3MzVlYWU0OTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Iu
aAorKysgL2Rldi9udWxsCkBAIC0xLDM2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJFbGVtZW50
LmgiCi0jaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oIgotI2luY2x1ZGUgIkVs
ZW1lbnRUcmF2ZXJzYWwuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciB7Ci1wdWJsaWM6Ci0g
ICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcigpOwotICAgIGV4cGxpY2l0IEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IoRWxlbWVudCogY3VycmVudCk7Ci0KLSAgICBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYg
b3BlcmF0b3ItLSgpOwotCi0gICAgRWxlbWVudCYgb3BlcmF0b3IqKCk7Ci0gICAgRWxlbWVudCog
b3BlcmF0b3ItPigpOwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotCi0gICAgdm9pZCBkcm9wQXNz
ZXJ0aW9ucygpOwotCi1wcml2YXRlOgotICAgIEVsZW1lbnQqIG1fY3VycmVudDsKLSAgICBWZWN0
b3I8RWxlbWVudCosIDE2PiBtX2FuY2VzdG9yU2libGluZ1N0YWNrOwotCi0jaWYgQVNTRVJUX0VO
QUJMRUQKLSAgICBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0aW9uczsKLSNlbmRp
ZgotfTsKLQotY2xhc3MgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIHsKLXB1YmxpYzoK
LSAgICBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoKTsKLSAgICBleHBsaWNpdCBFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgRWxlbWVudCopOwotCi0gICAgRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Ci0KLSAgICBjb25zdCBFbGVt
ZW50JiBvcGVyYXRvciooKSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50KiBvcGVyYXRvci0+KCkg
Y29uc3Q7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVsZW1l
bnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotCi0gICAgdm9pZCBkcm9w
QXNzZXJ0aW9ucygpOwotCi1wcml2YXRlOgotICAgIGNvbnN0IEVsZW1lbnQqIG1fY3VycmVudDsK
LSAgICBWZWN0b3I8RWxlbWVudCosIDE2PiBtX2FuY2VzdG9yU2libGluZ1N0YWNrOwotCi0jaWYg
QVNTRVJUX0VOQUJMRUQKLSAgICBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0aW9u
czsKLSNlbmRpZgotfTsKLQotY2xhc3MgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIg
ewotcHVibGljOgotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENvbnRhaW5l
ck5vZGUmIHJvb3QpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgYmVnaW4oKTsKLSAg
ICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGVuZCgpOwotICAgIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IgbGFzdCgpOwotCi1wcml2YXRlOgotICAgIENvbnRhaW5lck5vZGUmIG1fcm9vdDsK
LX07Ci0KLWNsYXNzIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIgewotcHVi
bGljOgotICAgIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29u
dGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIGJl
Z2luKCkgY29uc3Q7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIGVuZCgpIGNv
bnN0OwotICAgIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciBsYXN0KCkgY29uc3Q7Ci0K
LXByaXZhdGU6Ci0gICAgY29uc3QgQ29udGFpbmVyTm9kZSYgbV9yb290OwotfTsKLQotRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgZWxlbWVudERlc2NlbmRhbnRzKENvbnRhaW5lck5v
ZGUmKTsKLUVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIgZWxlbWVudERlc2Nl
bmRhbnRzKGNvbnN0IENvbnRhaW5lck5vZGUmKTsKLQotLy8gRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcgotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6RWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvcigpCi0gICAgOiBtX2N1cnJlbnQobnVsbHB0cikKLXsKLX0KLQotaW5saW5lIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoRWxlbWVu
dCogY3VycmVudCkKLSAgICA6IG1fY3VycmVudChjdXJyZW50KQotI2lmIEFTU0VSVF9FTkFCTEVE
Ci0gICAgLCBtX2Fzc2VydGlvbnMoY3VycmVudCkKLSNlbmRpZgotewotICAgIG1fYW5jZXN0b3JT
aWJsaW5nU3RhY2sudW5jaGVja2VkQXBwZW5kKG51bGxwdHIpOwotfQotCi1pbmxpbmUgdm9pZCBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpkcm9wQXNzZXJ0aW9ucygpCi17Ci0jaWYgQVNTRVJU
X0VOQUJMRUQKLSAgICBtX2Fzc2VydGlvbnMuY2xlYXIoKTsKLSNlbmRpZgotfQotCi1BTFdBWVNf
SU5MSU5FIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3I6Om9wZXJhdG9yKysoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCgh
bV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotCi0gICAgRWxlbWVudCogZmlyc3RD
aGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQoKm1fY3VycmVudCk7Ci0gICAgRWxl
bWVudCogbmV4dFNpYmxpbmcgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZygqbV9jdXJy
ZW50KTsKLQotICAgIGlmIChmaXJzdENoaWxkKSB7Ci0gICAgICAgIGlmIChuZXh0U2libGluZykK
LSAgICAgICAgICAgIG1fYW5jZXN0b3JTaWJsaW5nU3RhY2suYXBwZW5kKG5leHRTaWJsaW5nKTsK
LSAgICAgICAgbV9jdXJyZW50ID0gZmlyc3RDaGlsZDsKLSAgICAgICAgcmV0dXJuICp0aGlzOwot
ICAgIH0KLQotICAgIGlmIChuZXh0U2libGluZykgewotICAgICAgICBtX2N1cnJlbnQgPSBuZXh0
U2libGluZzsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIG1fY3VycmVudCA9
IG1fYW5jZXN0b3JTaWJsaW5nU3RhY2sudGFrZUxhc3QoKTsKLQotI2lmIEFTU0VSVF9FTkFCTEVE
Ci0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhl
IGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVu
dERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQot
QUxXQVlTX0lOTElORSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yOjpvcGVyYXRvci0tKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBB
U1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLQotICAgIEVsZW1lbnQq
IHByZXZpb3VzU2libGluZyA9IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZygqbV9j
dXJyZW50KTsKLQotICAgIGlmICghcHJldmlvdXNTaWJsaW5nKSB7Ci0gICAgICAgIG1fY3VycmVu
dCA9IG1fY3VycmVudC0+cGFyZW50RWxlbWVudCgpOwotICAgICAgICAvLyBUaGUgc3RhY2sgb3B0
aW1pemVzIGZvciBmb3J3YXJkIHRyYXZlcnNhbCBvbmx5LCB0aGlzIGp1c3QgbWFpbnRhaW5zIGNv
bnNpc3RlbmN5LgotICAgICAgICBpZiAobV9jdXJyZW50LT5uZXh0U2libGluZygpICYmIG1fY3Vy
cmVudC0+bmV4dFNpYmxpbmcoKSA9PSBtX2FuY2VzdG9yU2libGluZ1N0YWNrLmxhc3QoKSkKLSAg
ICAgICAgICAgIG1fYW5jZXN0b3JTaWJsaW5nU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICBy
ZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgRWxlbWVudCogZGVlcGVzdFNpYmxpbmcgPSBwcmV2
aW91c1NpYmxpbmc7Ci0gICAgd2hpbGUgKEVsZW1lbnQqIGxhc3RDaGlsZCA9IEVsZW1lbnRUcmF2
ZXJzYWw6Omxhc3RDaGlsZCgqZGVlcGVzdFNpYmxpbmcpKQotICAgICAgICBkZWVwZXN0U2libGlu
ZyA9IGxhc3RDaGlsZDsKLSAgICBBU1NFUlQoZGVlcGVzdFNpYmxpbmcpOwotCi0gICAgaWYgKGRl
ZXBlc3RTaWJsaW5nICE9IHByZXZpb3VzU2libGluZykKLSAgICAgICAgbV9hbmNlc3RvclNpYmxp
bmdTdGFjay5hcHBlbmQobV9jdXJyZW50KTsKLQotICAgIG1fY3VycmVudCA9IGRlZXBlc3RTaWJs
aW5nOwotCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hl
biB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAg
ICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgot
Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1pbmxpbmUgRWxlbWVudCYgRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvcjo6b3BlcmF0b3IqKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBB
U1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gKm1f
Y3VycmVudDsKLX0KLQotaW5saW5lIEVsZW1lbnQqIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6
Om9wZXJhdG9yLT4oKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9h
c3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQ7Ci19
Ci0KLWlubGluZSBib29sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6Om9wZXJhdG9yPT0oY29u
c3QgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuIG1fY3VycmVu
dCA9PSBvdGhlci5tX2N1cnJlbnQ7Ci19Ci0KLWlubGluZSBib29sIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I6Om9wZXJhdG9yIT0oY29uc3QgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotfQotCi0vLyBFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IKLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50Q29u
c3RJdGVyYXRvcjo6RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKCkKLSAgICA6IG1fY3Vy
cmVudChudWxscHRyKQotewotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yOjpFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgRWxlbWVudCogY3VycmVu
dCkKLSAgICA6IG1fY3VycmVudChjdXJyZW50KQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLCBt
X2Fzc2VydGlvbnMoY3VycmVudCkKLSNlbmRpZgotewotICAgIG1fYW5jZXN0b3JTaWJsaW5nU3Rh
Y2sudW5jaGVja2VkQXBwZW5kKG51bGxwdHIpOwotfQotCi1pbmxpbmUgdm9pZCBFbGVtZW50RGVz
Y2VuZGFudENvbnN0SXRlcmF0b3I6OmRyb3BBc3NlcnRpb25zKCkKLXsKLSNpZiBBU1NFUlRfRU5B
QkxFRAotICAgIG1fYXNzZXJ0aW9ucy5jbGVhcigpOwotI2VuZGlmCi19Ci0KLUFMV0FZU19JTkxJ
TkUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yJiBFbGVtZW50RGVzY2VuZGFudENvbnN0
SXRlcmF0b3I6Om9wZXJhdG9yKysoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFT
U0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotCi0gICAgRWxlbWVudCog
Zmlyc3RDaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQoKm1fY3VycmVudCk7Ci0g
ICAgRWxlbWVudCogbmV4dFNpYmxpbmcgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZygq
bV9jdXJyZW50KTsKLQotICAgIGlmIChmaXJzdENoaWxkKSB7Ci0gICAgICAgIGlmIChuZXh0U2li
bGluZykKLSAgICAgICAgICAgIG1fYW5jZXN0b3JTaWJsaW5nU3RhY2suYXBwZW5kKG5leHRTaWJs
aW5nKTsKLSAgICAgICAgbV9jdXJyZW50ID0gZmlyc3RDaGlsZDsKLSAgICAgICAgcmV0dXJuICp0
aGlzOwotICAgIH0KLQotICAgIGlmIChuZXh0U2libGluZykgewotICAgICAgICBtX2N1cnJlbnQg
PSBuZXh0U2libGluZzsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIG1fY3Vy
cmVudCA9IG1fYW5jZXN0b3JTaWJsaW5nU3RhY2sudGFrZUxhc3QoKTsKLQotI2lmIEFTU0VSVF9F
TkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNo
ZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRy
b3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiAqdGhpczsK
LX0KLQotaW5saW5lIGNvbnN0IEVsZW1lbnQmIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
cjo6b3BlcmF0b3IqKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NF
UlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gKm1fY3Vy
cmVudDsKLX0KLQotaW5saW5lIGNvbnN0IEVsZW1lbnQqIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvcjo6b3BlcmF0b3ItPigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0g
ICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJu
IG1fY3VycmVudDsKLX0KLQotaW5saW5lIGJvb2wgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yOjpvcGVyYXRvcj09KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQo
KSk7Ci0gICAgcmV0dXJuIG1fY3VycmVudCA9PSBvdGhlci5tX2N1cnJlbnQ7Ci19Ci0KLWlubGlu
ZSBib29sIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBF
bGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAgIHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsKLX0KLQotLy8gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFk
YXB0ZXIKLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjpFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2RlJiByb290KQotICAgIDogbV9y
b290KHJvb3QpCi17Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjpiZWdpbigpCi17Ci0gICAgcmV0dXJuIEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3IoRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGlsZChtX3Jvb3Qp
KTsKLX0KLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvckFkYXB0ZXI6OmVuZCgpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IoKTsKLX0KLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI6Omxhc3QoKQotewotICAgIHJldHVybiBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yKEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RXaXRoaW4obV9yb290KSk7
Ci19Ci0KLS8vIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIKLQotaW5saW5l
IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI6OkVsZW1lbnREZXNjZW5kYW50
Q29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKLSAgICA6IG1f
cm9vdChyb290KQotewotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI6OmJlZ2luKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKEVsZW1lbnRUcmF2ZXJz
YWw6OmZpcnN0Q2hpbGQobV9yb290KSk7Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3IgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjo6ZW5kKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKCk7Ci19
Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IgRWxlbWVudERlc2NlbmRh
bnRDb25zdEl0ZXJhdG9yQWRhcHRlcjo6bGFzdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1l
bnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcihFbGVtZW50VHJhdmVyc2FsOjpsYXN0V2l0aGluKG1f
cm9vdCkpOwotfQotCi0vLyBTdGFuZGFsb25lIGZ1bmN0aW9ucwotCi1pbmxpbmUgRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgZWxlbWVudERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUm
IHJvb3QpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKHJv
b3QpOwotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlciBl
bGVtZW50RGVzY2VuZGFudHMoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKLXsKLSAgICByZXR1
cm4gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcihyb290KTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2Ugc3RkIHsKLXRlbXBsYXRlIDw+IHN0cnVj
dCBpdGVyYXRvcl90cmFpdHM8V2ViQ29yZTo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcj4gewot
ICAgIHR5cGVkZWYgV2ViQ29yZTo6RWxlbWVudCB2YWx1ZV90eXBlOwotfTsKLXRlbXBsYXRlIDw+
IHN0cnVjdCBpdGVyYXRvcl90cmFpdHM8V2ViQ29yZTo6RWxlbWVudERlc2NlbmRhbnRDb25zdEl0
ZXJhdG9yPiB7Ci0gICAgdHlwZWRlZiBjb25zdCBXZWJDb3JlOjpFbGVtZW50IHZhbHVlX3R5cGU7
Ci19OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvci5oCmluZGV4IDM3NGRiYTdhNGMy
NDc4ZGRkOTNhZWIyYTRjNDRlM2RiODJkNzNiNTYuLjYwMTJiYjYzMjRmMGJlMTkxNTUwMmRjZjk5
NGFjNzdjOTRkMGRiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRl
cmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMTYg
KzM0LDE3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRJdGVyYXRvciB7CitjbGFzcyBFbGVtZW50SXRlcmF0b3Ig
OiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBFbGVtZW50
VHlwZT4gewogcHVibGljOgotICAgIEVsZW1lbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2Rl
KiByb290KTsKLSAgICBFbGVtZW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwg
RWxlbWVudFR5cGUqIGN1cnJlbnQpOworICAgIEVsZW1lbnRJdGVyYXRvcigpID0gZGVmYXVsdDsK
IAogICAgIEVsZW1lbnRUeXBlJiBvcGVyYXRvciooKSBjb25zdDsKICAgICBFbGVtZW50VHlwZSog
b3BlcmF0b3ItPigpIGNvbnN0OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVsZW1lbnRJ
dGVyYXRvciYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFbGVtZW50
SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKKyAgICBjb25zdGV4cHIgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0OworICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yISgpIGNvbnN0OworICAgIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yIT0oc3RkOjpudWxscHRyX3QpIGNvbnN0OworICAgIGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yIT0oY29uc3QgRWxlbWVudEl0ZXJhdG9yJikgY29uc3Q7CiAKICAgICBFbGVt
ZW50SXRlcmF0b3ImIHRyYXZlcnNlTmV4dCgpOwogICAgIEVsZW1lbnRJdGVyYXRvciYgdHJhdmVy
c2VQcmV2aW91cygpOwpAQCAtNTQsMzkgKzU1LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZHJv
cEFzc2VydGlvbnMoKTsKIAotcHJpdmF0ZToKLSAgICBjb25zdCBDb250YWluZXJOb2RlKiBtX3Jv
b3Q7Ci0gICAgRWxlbWVudFR5cGUqIG1fY3VycmVudDsKLQotI2lmIEFTU0VSVF9FTkFCTEVECi0g
ICAgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7Ci0jZW5kaWYKLX07Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRDb25zdEl0ZXJh
dG9yIHsKLXB1YmxpYzoKLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJO
b2RlKiByb290KTsKLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2Rl
KiByb290LCBjb25zdCBFbGVtZW50VHlwZSogY3VycmVudCk7Ci0KLSAgICBjb25zdCBFbGVtZW50
VHlwZSYgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIG9wZXJhdG9y
LT4oKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbGVtZW50Q29uc3RJdGVy
YXRvciYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFbGVtZW50Q29u
c3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotCi0gICAgRWxlbWVudENvbnN0SXRlcmF0b3ImIHRy
YXZlcnNlTmV4dCgpOwotICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3Vz
KCk7Ci0gICAgRWxlbWVudENvbnN0SXRlcmF0b3ImIHRyYXZlcnNlTmV4dFNpYmxpbmcoKTsKLSAg
ICBFbGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoKTsKLSAgICBF
bGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJlbigpOwotICAg
IEVsZW1lbnRDb25zdEl0ZXJhdG9yJiB0cmF2ZXJzZUFuY2VzdG9yKCk7Ci0KLSAgICB2b2lkIGRy
b3BBc3NlcnRpb25zKCk7Citwcm90ZWN0ZWQ6CisgICAgRWxlbWVudEl0ZXJhdG9yKGNvbnN0IENv
bnRhaW5lck5vZGUqIHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKIAogcHJpdmF0ZToKLSAg
ICBjb25zdCBDb250YWluZXJOb2RlKiBtX3Jvb3Q7Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIG1f
Y3VycmVudDsKKyAgICBjb25zdCBDb250YWluZXJOb2RlKiBtX3Jvb3QgeyBudWxscHRyIH07Cisg
ICAgRWxlbWVudFR5cGUqIG1fY3VycmVudCB7IG51bGxwdHIgfTsKIAogI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7CkBAIC05NSwx
MyArNjksNiBAQCBwcml2YXRlOgogCiAvLyBFbGVtZW50SXRlcmF0b3IKIAotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46
OkVsZW1lbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290KQotICAgIDogbV9yb290
KHJvb3QpCi0gICAgLCBtX2N1cnJlbnQobnVsbHB0cikKLXsKLX0KLQogdGVtcGxhdGUgPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVs
ZW1lbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290LCBFbGVtZW50VHlwZSogY3Vy
cmVudCkKICAgICA6IG1fcm9vdChyb290KQpAQCAtMjM3LDE2MCArMjA0LDI1IEBAIGlubGluZSBF
bGVtZW50VHlwZSogRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItPigpIGNv
bnN0CiAgICAgcmV0dXJuIG1fY3VycmVudDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPgotaW5saW5lIGJvb2wgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0
b3I9PShjb25zdCBFbGVtZW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAgIEFTU0VSVCht
X3Jvb3QgPT0gb3RoZXIubV9yb290KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVl
SGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gbV9jdXJyZW50ID09IG90aGVyLm1fY3VycmVudDsK
LX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGJvb2wgRWxlbWVu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBFbGVtZW50SXRlcmF0b3Im
IG90aGVyKSBjb25zdAotewotICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLX0KLQotLy8g
RWxlbWVudENvbnN0SXRlcmF0b3IKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENvbnN0SXRl
cmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCkKLSAgICA6IG1fcm9vdChyb290KQotICAg
ICwgbV9jdXJyZW50KG51bGxwdHIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gY29u
c3RleHByIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIGJvb2woKSBjb25z
dAogeworICAgIHJldHVybiBtX2N1cnJlbnQ7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1l
bnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QsIGNvbnN0IEVsZW1lbnRU
eXBlKiBjdXJyZW50KQotICAgIDogbV9yb290KHJvb3QpCi0gICAgLCBtX2N1cnJlbnQoY3VycmVu
dCkKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgICwgbV9hc3NlcnRpb25zKGN1cnJlbnQpCi0jZW5k
aWYKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1l
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+Ojp0cmF2ZXJzZU5leHQoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFT
U0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3VycmVudCA9
IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHQoKm1fY3VycmVudCwgbV9yb290KTsKLSNpZiBB
U1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRv
ciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0gICAgICAgIG1fYXNzZXJ0
aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlmCi0gICAgcmV0dXJuICp0
aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVu
dENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT46OnRyYXZlcnNlUHJldmlvdXMoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAg
IEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3VycmVu
dCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnByZXZpb3VzKCptX2N1cnJlbnQsIG1fcm9vdCk7
Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUg
aXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBt
X2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAgIHJl
dHVybiAqdGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5l
IEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8
RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkKLXsKLSAgICBBU1NFUlQobV9jdXJy
ZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAg
ICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0U2libGluZygqbV9jdXJy
ZW50KTsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVu
IHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0gICAg
ICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlmCi0g
ICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKCkKLXsKLSAgICBBU1NF
UlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRl
ZCgpKTsKLSAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpwcmV2aW91c1Np
YmxpbmcoKm1fY3VycmVudCk7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBh
c3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9j
dXJyZW50KQotICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24o
KTsKLSNlbmRpZgotICAgIHJldHVybiAqdGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxl
bWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxk
cmVuKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9u
cy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVu
dFR5cGU+OjpuZXh0U2tpcHBpbmdDaGlsZHJlbigqbV9jdXJyZW50LCBtX3Jvb3QpOwotI2lmIEFT
U0VSVF9FTkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9y
IHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRp
b25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gKnRo
aXM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6dHJhdmVyc2VBbmNlc3RvcigpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAg
QVNTRVJUKG1fY3VycmVudCAhPSBtX3Jvb3QpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRv
bVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3VycmVudCA9IGZpbmRFbGVtZW50QW5jZXN0b3JP
ZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCptX2N1cnJlbnQpOwotI2lmIEFTU0VSVF9FTkFCTEVE
Ci0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhl
IGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVu
dERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSB2b2lkIEVsZW1lbnRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6ZHJvcEFzc2VydGlvbnMoKQotewotI2lmIEFTU0VSVF9FTkFC
TEVECi0gICAgbV9hc3NlcnRpb25zLmNsZWFyKCk7Ci0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlJiBFbGVtZW50Q29u
c3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKigpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBFbGVtZW50VHlwZT4gY29uc3RleHByIGJvb2wgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6b3BlcmF0b3IhKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBB
U1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gKm1f
Y3VycmVudDsKKyAgICByZXR1cm4gIW1fY3VycmVudDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlKiBFbGVtZW50Q29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yLT4oKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUg
RWxlbWVudFR5cGU+IGNvbnN0ZXhwciBib29sIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46
Om9wZXJhdG9yIT0oc3RkOjpudWxscHRyX3QpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fY3VycmVu
dCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CiAgICAg
cmV0dXJuIG1fY3VycmVudDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIGJvb2wgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcj09
KGNvbnN0IEVsZW1lbnRDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICBBU1NFUlQo
bV9yb290ID09IG90aGVyLm1fcm9vdCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJl
ZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuIG1fY3VycmVudCA9PSBvdGhlci5tX2N1cnJlbnQ7
Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBib29sIEVsZW1l
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBFbGVtZW50Q29u
c3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4g
Y29uc3RleHByIGJvb2wgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IhPShj
b25zdCBFbGVtZW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsKKyAgICBBU1NFUlQobV9yb290ID09IG90aGVyLm1fcm9vdCB8fCAhbV9jdXJy
ZW50IHx8ICFvdGhlci5tX2N1cnJlbnQpOworICAgIHJldHVybiBtX2N1cnJlbnQgIT0gb3RoZXIu
bV9jdXJyZW50OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZl
Tm9kZUxpc3QuY3BwCmluZGV4IGRkMGM5OTkxODA5Y2JmN2M3MTA2MDA1MDIxNjRlOWExNmZkY2Mx
OTEuLjQ3ODkyMzAxZTI5NmFhNmE1N2Q4ZDM4NTNhYjdiNjhkZTViOWNhN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9MaXZlTm9kZUxpc3QuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAx
OTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50
dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGly
ayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYt
MjAwOCwgMjAxMCwgMjAxMy0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsMzIgKzIzLDE0IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiTGl2ZU5vZGVMaXN0LmgiCiAKLSNpbmNsdWRlICJDbGFzc0NvbGxlY3Rp
b24uaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudFRyYXZlcnNhbC5o
IgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoTGl2ZU5vZGVMaXN0KTsKLQogTGl2ZU5vZGVMaXN0OjpMaXZlTm9kZUxpc3QoQ29udGFp
bmVyTm9kZSYgb3duZXJOb2RlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxpZGF0aW9u
VHlwZSkKICAgICA6IG1fb3duZXJOb2RlKG93bmVyTm9kZSkKICAgICAsIG1faW52YWxpZGF0aW9u
VHlwZShpbnZhbGlkYXRpb25UeXBlKQotICAgICwgbV9pc1JlZ2lzdGVyZWRGb3JJbnZhbGlkYXRp
b25BdERvY3VtZW50KGZhbHNlKQogewotICAgIEFTU0VSVChtX2ludmFsaWRhdGlvblR5cGUgPT0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludmFsaWRhdGlvblR5cGUpKTsKIH0KIAogTGl2ZU5vZGVM
aXN0Ojp+TGl2ZU5vZGVMaXN0KCkgPSBkZWZhdWx0OwogCi1Db250YWluZXJOb2RlJiBMaXZlTm9k
ZUxpc3Q6OnJvb3ROb2RlKCkgY29uc3QKLXsKLSAgICBpZiAoaXNSb290ZWRBdERvY3VtZW50KCkg
JiYgb3duZXJOb2RlKCkuaXNDb25uZWN0ZWQoKSkKLSAgICAgICAgcmV0dXJuIG93bmVyTm9kZSgp
LmRvY3VtZW50KCk7Ci0KLSAgICByZXR1cm4gb3duZXJOb2RlKCk7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaAppbmRleCBmMjdmMGVmNjc0YmJk
OTgyMzE0YzBiYmIyNWI4NTI0MjIzNGRhNThmLi40ODkxNjM2MTA3OTEzOGZkMGJjNzhlNmQ0MWFh
YWYwMzE4ZTBiYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCkBAIC0yNiw3ICsyNiw2
IEBACiAjaW5jbHVkZSAiQ29sbGVjdGlvbkluZGV4Q2FjaGUuaCIKICNpbmNsdWRlICJDb2xsZWN0
aW9uVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
Tm9kZUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMzksMzkgKzM4LDM1IEBA
IGNsYXNzIEVsZW1lbnQ7CiBzdGF0aWMgYm9vbCBzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmli
dXRlQ2hhbmdlKE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogCiBjbGFzcyBMaXZlTm9kZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QgewotICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoTGl2ZU5vZGVMaXN0KTsKKyAgICBXVEZfTUFLRV9JU09fTk9OQUxMT0NB
VEFCTEUoTGl2ZU5vZGVMaXN0KTsKIHB1YmxpYzoKLSAgICBMaXZlTm9kZUxpc3QoQ29udGFpbmVy
Tm9kZSYgb3duZXJOb2RlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUpOwogICAgIHZpcnR1YWwg
fkxpdmVOb2RlTGlzdCgpOwogCiAgICAgdmlydHVhbCBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1l
bnQmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNv
bnN0ID0gMDsKIAotICAgIEFMV0FZU19JTkxJTkUgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGlu
dmFsaWRhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxOb2RlTGlzdEludmFs
aWRhdGlvblR5cGU+KG1faW52YWxpZGF0aW9uVHlwZSk7IH0KKyAgICBOb2RlTGlzdEludmFsaWRh
dGlvblR5cGUgaW52YWxpZGF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faW52YWxpZGF0aW9u
VHlwZTsgfQogICAgIENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
b3duZXJOb2RlOyB9Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGludmFsaWRhdGVDYWNoZUZvckF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGlmIChzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmlidXRlQ2hhbmdlKGludmFsaWRhdGlv
blR5cGUoKSwgYXR0ck5hbWUpKQotICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hlKCk7Ci0gICAg
fQorICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2Fj
aGVGb3JEb2N1bWVudChEb2N1bWVudCYpIGNvbnN0ID0gMDsKICAgICB2b2lkIGludmFsaWRhdGVD
YWNoZSgpIGNvbnN0IHsgaW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQoZG9jdW1lbnQoKSk7IH0K
IAogICAgIGJvb2wgaXNSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudDsgfQotICAg
IHZvaWQgc2V0UmVnaXN0ZXJlZEZvckludmFsaWRhdGlvbkF0RG9jdW1lbnQoYm9vbCBmKSB7IG1f
aXNSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudCA9IGY7IH0KKyAgICB2b2lkIHNl
dFJlZ2lzdGVyZWRGb3JJbnZhbGlkYXRpb25BdERvY3VtZW50KGJvb2wgaXNSZWdpc3RlcmVkKSB7
IG1faXNSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudCA9IGlzUmVnaXN0ZXJlZDsg
fQogCiBwcm90ZWN0ZWQ6CisgICAgTGl2ZU5vZGVMaXN0KENvbnRhaW5lck5vZGUmIG93bmVyTm9k
ZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlKTsKKwogICAgIERvY3VtZW50JiBkb2N1bWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fb3duZXJOb2RlLT5kb2N1bWVudCgpOyB9CisgICAgQ29udGFpbmVy
Tm9kZSYgcm9vdE5vZGUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBib29sIGlzTGl2ZU5vZGVM
aXN0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgQ29udGFpbmVyTm9kZSYg
cm9vdE5vZGUoKSBjb25zdDsKLQogICAgIFJlZjxDb250YWluZXJOb2RlPiBtX293bmVyTm9kZTsK
IAotICAgIGNvbnN0IHVuc2lnbmVkIG1faW52YWxpZGF0aW9uVHlwZTsKLSAgICBib29sIG1faXNS
ZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudDsKKyAgICBjb25zdCBOb2RlTGlzdElu
dmFsaWRhdGlvblR5cGUgbV9pbnZhbGlkYXRpb25UeXBlOworICAgIGJvb2wgbV9pc1JlZ2lzdGVy
ZWRGb3JJbnZhbGlkYXRpb25BdERvY3VtZW50IHsgZmFsc2UgfTsKIH07CiAKIHRlbXBsYXRlIDxj
bGFzcyBOb2RlTGlzdFR5cGU+CkBAIC04MSwxNiArNzYsMTcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfkNhY2hlZExpdmVOb2RlTGlzdCgpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVDb3VudChub2RlTGlzdCgpKTsgfQotICAg
IEVsZW1lbnQqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2luZGV4Q2FjaGUubm9kZUF0KG5vZGVMaXN0KCksIG9mZnNldCk7IH0KKyAgICBFbGVtZW50KiBp
dGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm5v
ZGVBdChub2RlTGlzdCgpLCBvZmZzZXQpOyB9CiAKICAgICAvLyBGb3IgQ29sbGVjdGlvbkluZGV4
Q2FjaGUKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGNvbGxlY3Rpb25CZWdpbigpIGNv
bnN0IHsgcmV0dXJuIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6
OkRlc2NlbmRhbnRzPjo6YmVnaW4obm9kZUxpc3QoKSwgcm9vdE5vZGUoKSk7IH0KLSAgICBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yIGNvbGxlY3Rpb25MYXN0KCkgY29uc3QgeyByZXR1cm4gQ29s
bGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+Ojps
YXN0KG5vZGVMaXN0KCksIHJvb3ROb2RlKCkpOyB9Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvciBjb2xsZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcigpOyB9Ci0gICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVy
c2VkQ291bnQpIGNvbnN0IHsgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2Fs
VHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUZvcndhcmQobm9kZUxpc3QoKSwgY3VycmVudCwg
Y291bnQsIHRyYXZlcnNlZENvdW50KTsgfQotICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlQmFj
a3dhcmQoRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQp
IGNvbnN0IHsgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVz
Y2VuZGFudHM+Ojp0cmF2ZXJzZUJhY2t3YXJkKG5vZGVMaXN0KCksIGN1cnJlbnQsIGNvdW50KTsg
fQorICAgIHVzaW5nIFRyYXZlcnNhbCA9IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjsKKyAgICB1c2luZyBJdGVyYXRvciA9IFRyYXZlcnNh
bDo6SXRlcmF0b3I7CisgICAgYXV0byBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBU
cmF2ZXJzYWw6OmJlZ2luKG5vZGVMaXN0KCksIHJvb3ROb2RlKCkpOyB9CisgICAgYXV0byBjb2xs
ZWN0aW9uTGFzdCgpIGNvbnN0IHsgcmV0dXJuIFRyYXZlcnNhbDo6bGFzdChub2RlTGlzdCgpLCBy
b290Tm9kZSgpKTsgfQorICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChJdGVyYXRv
ciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29u
c3QgeyBUcmF2ZXJzYWw6OnRyYXZlcnNlRm9yd2FyZChub2RlTGlzdCgpLCBjdXJyZW50LCBjb3Vu
dCwgdHJhdmVyc2VkQ291bnQpOyB9CisgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2Fy
ZChJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpIGNvbnN0IHsgVHJhdmVyc2FsOjp0
cmF2ZXJzZUJhY2t3YXJkKG5vZGVMaXN0KCksIGN1cnJlbnQsIGNvdW50KTsgfQogICAgIGJvb2wg
Y29sbGVjdGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdm9pZCB3aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3QgeyBkb2N1bWVudCgpLnJlZ2lz
dGVyTm9kZUxpc3RGb3JJbnZhbGlkYXRpb24oY29uc3RfY2FzdDxDYWNoZWRMaXZlTm9kZUxpc3Q8
Tm9kZUxpc3RUeXBlPiY+KCp0aGlzKSk7IH0KKyAgICB2b2lkIHdpbGxWYWxpZGF0ZUluZGV4Q2Fj
aGUoKSBjb25zdCB7IGRvY3VtZW50KCkucmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbihj
b25zdF9jYXN0PENhY2hlZExpdmVOb2RlTGlzdCY+KCp0aGlzKSk7IH0KIAogICAgIHZvaWQgaW52
YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQoRG9jdW1lbnQmKSBjb25zdCBmaW5hbDsKICAgICBzaXpl
X3QgbWVtb3J5Q29zdCgpIGNvbnN0IGZpbmFsCkBAIC0xMDgsOSArMTA0LDcgQEAgcHJpdmF0ZToK
ICAgICBOb2RlTGlzdFR5cGUmIG5vZGVMaXN0KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Tm9kZUxp
c3RUeXBlJj4oKnRoaXMpOyB9CiAgICAgY29uc3QgTm9kZUxpc3RUeXBlJiBub2RlTGlzdCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsgfQog
Ci0gICAgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUoKSBjb25zdDsKLQotICAgIG11dGFibGUgQ29s
bGVjdGlvbkluZGV4Q2FjaGU8Tm9kZUxpc3RUeXBlLCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
PiBtX2luZGV4Q2FjaGU7CisgICAgbXV0YWJsZSBDb2xsZWN0aW9uSW5kZXhDYWNoZTxOb2RlTGlz
dFR5cGUsIEl0ZXJhdG9yPiBtX2luZGV4Q2FjaGU7CiB9OwogCiBBTFdBWVNfSU5MSU5FIGJvb2wg
c2hvdWxkSW52YWxpZGF0ZVR5cGVPbkF0dHJpYnV0ZUNoYW5nZShOb2RlTGlzdEludmFsaWRhdGlv
blR5cGUgdHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC0xMzcsMzYgKzEz
MSw0MCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgc2hvdWxkSW52YWxpZGF0ZVR5cGVPbkF0dHJpYnV0
ZUNoYW5nZShOb2RlTGlzdEludmFsaWRhdGlvblR5cAogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
QUxXQVlTX0lOTElORSB2b2lkIExpdmVOb2RlTGlzdDo6aW52YWxpZGF0ZUNhY2hlRm9yQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0Cit7CisgICAgaWYg
KHNob3VsZEludmFsaWRhdGVUeXBlT25BdHRyaWJ1dGVDaGFuZ2UobV9pbnZhbGlkYXRpb25UeXBl
LCBhdHRyaWJ1dGVOYW1lKSkKKyAgICAgICAgaW52YWxpZGF0ZUNhY2hlKCk7Cit9CisKK2lubGlu
ZSBDb250YWluZXJOb2RlJiBMaXZlTm9kZUxpc3Q6OnJvb3ROb2RlKCkgY29uc3QKK3sKKyAgICBp
ZiAoaXNSb290ZWRBdERvY3VtZW50KCkgJiYgbV9vd25lck5vZGUtPmlzQ29ubmVjdGVkKCkpCisg
ICAgICAgIHJldHVybiBkb2N1bWVudCgpOworCisgICAgcmV0dXJuIG1fb3duZXJOb2RlOworfQor
CiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgogQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVM
aXN0VHlwZT46OkNhY2hlZExpdmVOb2RlTGlzdChDb250YWluZXJOb2RlJiBvd25lck5vZGUsIE5v
ZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlKQogICAgIDogTGl2ZU5vZGVM
aXN0KG93bmVyTm9kZSwgaW52YWxpZGF0aW9uVHlwZSkKLSAgICAsIG1faW5kZXhDYWNoZShub2Rl
TGlzdCgpKQogewogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgogQ2FjaGVkTGl2
ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46On5DYWNoZWRMaXZlTm9kZUxpc3QoKQogewotICAgIGlm
IChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShub2RlTGlzdCgpKSkKKyAgICBpZiAobV9pbmRl
eENhY2hlLmhhc1ZhbGlkQ2FjaGUoKSkKICAgICAgICAgZG9jdW1lbnQoKS51bnJlZ2lzdGVyTm9k
ZUxpc3RGb3JJbnZhbGlkYXRpb24oKnRoaXMpOwogfQogCi10ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxp
c3RUeXBlPgotaW5saW5lIENvbnRhaW5lck5vZGUmIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlz
dFR5cGU+Ojpyb290Tm9kZSgpIGNvbnN0Ci17Ci0gICAgaWYgKG5vZGVMaXN0KCkuaXNSb290ZWRB
dERvY3VtZW50KCkgJiYgb3duZXJOb2RlKCkuaXNDb25uZWN0ZWQoKSkKLSAgICAgICAgcmV0dXJu
IG93bmVyTm9kZSgpLmRvY3VtZW50KCk7Ci0KLSAgICByZXR1cm4gb3duZXJOb2RlKCk7Ci19Ci0K
IHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+CiB2b2lkIENhY2hlZExpdmVOb2RlTGlzdDxO
b2RlTGlzdFR5cGU+OjppbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1l
bnQpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShub2RlTGlz
dCgpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGRvY3VtZW50LnVucmVnaXN0ZXJOb2RlTGlzdEZv
ckludmFsaWRhdGlvbihjb25zdF9jYXN0PE5vZGVMaXN0VHlwZSY+KG5vZGVMaXN0KCkpKTsKLSAg
ICBtX2luZGV4Q2FjaGUuaW52YWxpZGF0ZShub2RlTGlzdCgpKTsKKyAgICBpZiAobV9pbmRleENh
Y2hlLmhhc1ZhbGlkQ2FjaGUoKSkgeworICAgICAgICBkb2N1bWVudC51bnJlZ2lzdGVyTm9kZUxp
c3RGb3JJbnZhbGlkYXRpb24oY29uc3RfY2FzdDxOb2RlTGlzdFR5cGUmPihub2RlTGlzdCgpKSk7
CisgICAgICAgIG1faW5kZXhDYWNoZS5pbnZhbGlkYXRlKCk7CisgICAgfQogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVM
aXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuY3BwCmluZGV4IGYwYWRk
MmFjMmQ1NDY2NmZhMmZlODU3ODk2MmNiNTQwOGZiYjczNTQuLmY0ZmEyNmZjN2U2MzYyNDQxYWMz
NDM3NGVjMTJlNTI0ODlmN2Y5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1l
Tm9kZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuY3BwCkBA
IC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5v
cmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDcsIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM4LDYgKzM4LDEx
IEBAIE5hbWVOb2RlTGlzdDo6TmFtZU5vZGVMaXN0KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBj
b25zdCBBdG9tU3RyaW5nJiBuYW1lKQogewogfQogCitSZWY8TmFtZU5vZGVMaXN0PiBOYW1lTm9k
ZUxpc3Q6OmNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYg
bmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYW1lTm9kZUxpc3Qocm9vdE5vZGUs
IG5hbWUpKTsKK30KKwogTmFtZU5vZGVMaXN0Ojp+TmFtZU5vZGVMaXN0KCkKIHsKICAgICBvd25l
ck5vZGUoKS5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVXaXRoQXRvbU5hbWUoKnRoaXMsIG1fbmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmgKaW5kZXggNzBjNWM3MDBlOTUwZTUzMTQzN2Yw
ZmRlNTFjY2MzOGQ2ZGNiM2FhMS4uOTQ3NWRlZmVkNGViNzg5ZGZlMzEzMTIxOTQ1NGZlMjM4NTAx
ZTdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuaApAQCAtMiw3ICsyLDcgQEAKICAqIENv
cHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAg
IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAg
IChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA3LTIwMDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNCwyNCArMjQsMTcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiTGl2ZU5vZGVMaXN0LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Ly8gTm9kZUxpc3Qgd2hpY2ggbGlzdHMgYWxsIE5vZGVzIGluIGEgRWxlbWVudCB3aXRoIGEgZ2l2
ZW4gIm5hbWUiIGF0dHJpYnV0ZQogY2xhc3MgTmFtZU5vZGVMaXN0IGZpbmFsIDogcHVibGljIENh
Y2hlZExpdmVOb2RlTGlzdDxOYW1lTm9kZUxpc3Q+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKE5hbWVOb2RlTGlzdCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxOYW1lTm9kZUxpc3Q+
IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5hbWVOb2RlTGlzdChyb290Tm9k
ZSwgbmFtZSkpOwotICAgIH0KLQorICAgIHN0YXRpYyBSZWY8TmFtZU5vZGVMaXN0PiBjcmVhdGUo
Q29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpOwogICAgIHZp
cnR1YWwgfk5hbWVOb2RlTGlzdCgpOwogCi0gICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50
JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVu
dCYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNSb290ZWRBdERvY3VtZW50KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0ZToKICAgICBOYW1lTm9kZUxpc3QoQ29udGFp
bmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CmluZGV4IDEyNzI1MjQyMGFiN2QxZDdiNDg3NGQ1YTIyNjE2MWI0MzMwYmM0NDMuLmI3YWYxNGQx
YzBiNGNiZmRmNjg5Y2UyODQwMzAyOTk1YjRiMzQ2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTQ3
LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MQXJlYUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29s
bGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdl
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nl
bGVjdG9yUXVlcnkuY3BwCmluZGV4IGVmMDU1MjkzNDI3N2Q0M2IxMTlhNDY3NTFmZjQyOGUwYTE4
MDM3OTAuLmMwNjFhM2RlMmJjNTU4MjVmOTVjZjcyZDQ4MDMzYTFlY2QxOWQyNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDE0IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJTZWxlY3RvclF1
ZXJ5LmgiCiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKLSNpbmNsdWRlICJFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCiAjaW5jbHVkZSAiU3Rh
dGljTm9kZUxpc3QuaCIKQEAgLTE1MCwxNSArMTUwLDEyIEBAIGJvb2wgU2VsZWN0b3JEYXRhTGlz
dDo6bWF0Y2hlcyhFbGVtZW50JiB0YXJnZXRFbGVtZW50KSBjb25zdAogCiBFbGVtZW50KiBTZWxl
Y3RvckRhdGFMaXN0OjpjbG9zZXN0KEVsZW1lbnQmIHRhcmdldEVsZW1lbnQpIGNvbnN0CiB7Ci0g
ICAgRWxlbWVudCogY3VycmVudE5vZGUgPSAmdGFyZ2V0RWxlbWVudDsKLSAgICBkbyB7CisgICAg
Zm9yIChhdXRvJiBjdXJyZW50RWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4odGFyZ2V0
RWxlbWVudCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBzZWxlY3RvciA6IG1fc2VsZWN0b3JzKSB7
Ci0gICAgICAgICAgICBFbGVtZW50KiBjYW5kaWRhdGVFbGVtZW50ID0gc2VsZWN0b3JDbG9zZXN0
KHNlbGVjdG9yLCAqY3VycmVudE5vZGUsIHRhcmdldEVsZW1lbnQpOwotICAgICAgICAgICAgaWYg
KGNhbmRpZGF0ZUVsZW1lbnQpCisgICAgICAgICAgICBpZiAoYXV0byogY2FuZGlkYXRlRWxlbWVu
dCA9IHNlbGVjdG9yQ2xvc2VzdChzZWxlY3RvciwgY3VycmVudEVsZW1lbnQsIHRhcmdldEVsZW1l
bnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVFbGVtZW50OwogICAgICAgICB9
Ci0gICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUtPnBhcmVudEVsZW1lbnQoKTsKLSAg
ICB9IHdoaWxlIChjdXJyZW50Tm9kZSk7CisgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQog
CkBAIC0yOTUsNyArMjkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFp
dD4KIHN0YXRpYyBpbmxpbmUgdm9pZCBlbGVtZW50c0ZvckxvY2FsTmFtZShjb25zdCBDb250YWlu
ZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9t
U3RyaW5nJiBsb3dlcmNhc2VMb2NhbE5hbWUsIHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6
T3V0cHV0VHlwZSYgb3V0cHV0KQogewogICAgIGlmIChsb2NhbE5hbWUgPT0gbG93ZXJjYXNlTG9j
YWxOYW1lKSB7Ci0gICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50
cyhjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihyb290Tm9kZSkpKSB7CisgICAgICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29u
dGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAgICAgIGlmIChlbGVtZW50LnRhZ1FO
YW1lKCkubG9jYWxOYW1lKCkgPT0gbG9jYWxOYW1lKSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0
b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwog
ICAgICAgICAgICAgICAgIGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZp
cnN0RWxlbWVudCkKQEAgLTMwMyw3ICszMDAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZWxlbWVu
dHNGb3JMb2NhbE5hbWUoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0bwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChhdXRv
JiBlbGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+
KHJvb3ROb2RlKSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNP
ZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewog
ICAgICAgICAgICAgaWYgKGxvY2FsTmFtZU1hdGNoZXMoZWxlbWVudCwgbG9jYWxOYW1lLCBsb3dl
cmNhc2VMb2NhbE5hbWUpKSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0Ojph
cHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICAgICAgICAg
IGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAg
LTMxNiw3ICszMTMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZWxlbWVudHNGb3JMb2NhbE5hbWUo
Y29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0bwogdGVtcGxhdGUgPHR5cGVu
YW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4KIHN0YXRpYyBpbmxpbmUgdm9pZCBhbnlFbGVtZW50KGNv
bnN0IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6
Ok91dHB1dFR5cGUmIG91dHB1dCkKIHsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50
RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAg
IGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nh
c3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAgU2VsZWN0b3JRdWVyeVRy
YWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICBp
ZiAoU2VsZWN0b3JRdWVyeVRyYWl0OjpzaG91bGRPbmx5TWF0Y2hGaXJzdEVsZW1lbnQpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0zNDUsNyArMzQyLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNl
bGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVUYWdOYW1lU2VsZWN0b3JEYXRhKGNvbnN0IENv
bnQKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZhbGxiYWNrOiBOYW1lc3Bh
Y2VVUkkgaXMgc2V0LCBzZWxlY3RvckxvY2FsTmFtZSBtYXkgYmUgc3RhckF0b20oKS4KLSAgICAg
ICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29u
dGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDog
ZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9v
dE5vZGUpKSkgewogICAgICAgICAgICAgaWYgKGVsZW1lbnQubmFtZXNwYWNlVVJJKCkgPT0gc2Vs
ZWN0b3JOYW1lc3BhY2VVUkkgJiYgbG9jYWxOYW1lTWF0Y2hlcyhlbGVtZW50LCBzZWxlY3Rvckxv
Y2FsTmFtZSwgc2VsZWN0b3JMb3dlcmNhc2VMb2NhbE5hbWUpKSB7CiAgICAgICAgICAgICAgICAg
U2VsZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1l
bnQpOwogICAgICAgICAgICAgICAgIGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlN
YXRjaEZpcnN0RWxlbWVudCkKQEAgLTM2Miw3ICszNTksNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQg
U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZUNsYXNzTmFtZVNlbGVjdG9yRGF0YShjb25z
dCBDbwogICAgIEFTU0VSVChpc1NpbmdsZUNsYXNzTmFtZVNlbGVjdG9yKCpzZWxlY3RvckRhdGEu
c2VsZWN0b3IpKTsKIAogICAgIGNvbnN0IEF0b21TdHJpbmcmIGNsYXNzTmFtZSA9IHNlbGVjdG9y
RGF0YS5zZWxlY3Rvci0+dmFsdWUoKTsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50
RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAg
IGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nh
c3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAgaWYgKGVsZW1lbnQuaGFz
Q2xhc3MoKSAmJiBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucyhjbGFzc05hbWUpKSB7CiAg
ICAgICAgICAgICBTZWxlY3RvclF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1lbnQob3V0
cHV0LCAmZWxlbWVudCk7CiAgICAgICAgICAgICBpZiAoU2VsZWN0b3JRdWVyeVRyYWl0OjpzaG91
bGRPbmx5TWF0Y2hGaXJzdEVsZW1lbnQpCkBAIC0zNzYsNyArMzczLDcgQEAgQUxXQVlTX0lOTElO
RSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVTZWxlY3RvckRhdGEoY29uc3Qg
Q29udGFpbmVyTm8KIHsKICAgICBBU1NFUlQobV9zZWxlY3RvcnMuc2l6ZSgpID09IDEpOwogCi0g
ICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29u
dGFpbmVyTm9kZSY+KHNlYXJjaFJvb3ROb2RlKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQg
OiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihz
ZWFyY2hSb290Tm9kZSkpKSB7CiAgICAgICAgIGlmIChzZWxlY3Rvck1hdGNoZXMoc2VsZWN0b3JE
YXRhLCBlbGVtZW50LCByb290Tm9kZSkpIHsKICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFp
dDo6YXBwZW5kT3V0cHV0Rm9yRWxlbWVudChvdXRwdXQsICZlbGVtZW50KTsKICAgICAgICAgICAg
IGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAg
LTM4OCw3ICszODUsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhl
Y3V0ZVNpbmdsZVNlbGVjdG9yRGF0YShjb25zdCBDb250YWluZXJObwogdGVtcGxhdGUgPHR5cGVu
YW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4KIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFM
aXN0OjpleGVjdXRlU2luZ2xlTXVsdGlTZWxlY3RvckRhdGEoY29uc3QgQ29udGFpbmVyTm9kZSYg
cm9vdE5vZGUsIHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0cHV0
KSBjb25zdAogewotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhj
b25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihyb290Tm9kZSkpKSB7CisgICAgZm9yIChhdXRvJiBl
bGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJO
b2RlJj4ocm9vdE5vZGUpKSkgewogICAgICAgICBmb3IgKGF1dG8mIHNlbGVjdG9yIDogbV9zZWxl
Y3RvcnMpIHsKICAgICAgICAgICAgIGlmIChzZWxlY3Rvck1hdGNoZXMoc2VsZWN0b3IsIGVsZW1l
bnQsIHJvb3ROb2RlKSkgewogICAgICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBw
ZW5kT3V0cHV0Rm9yRWxlbWVudChvdXRwdXQsICZlbGVtZW50KTsKQEAgLTQwNCw3ICs0MDEsNyBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZU11bHRp
U2VsZWN0b3JEYXRhKGNvbnN0IENvbnRhaQogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVl
cnlUcmFpdD4KIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29t
cGlsZWRTaW1wbGVTZWxlY3RvckNoZWNrZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgc2VhcmNoUm9v
dE5vZGUsIFNlbGVjdG9yQ29tcGlsZXI6OlF1ZXJ5U2VsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNr
ZXIgc2VsZWN0b3JDaGVja2VyLCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5
cGUmIG91dHB1dCwgY29uc3QgU2VsZWN0b3JEYXRhJiBzZWxlY3RvckRhdGEpIGNvbnN0CiB7Ci0g
ICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29u
dGFpbmVyTm9kZSY+KHNlYXJjaFJvb3ROb2RlKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQg
OiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihz
ZWFyY2hSb290Tm9kZSkpKSB7CiAgICAgICAgIHNlbGVjdG9yRGF0YS5jb21waWxlZFNlbGVjdG9y
Lndhc1VzZWQoKTsKIAogICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2VyKCZlbGVtZW50KSkgewpA
QCAtNDIxLDcgKzQxOCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0Ojpl
eGVjdXRlQ29tcGlsZWRTZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDCiAgICAgU2VsZWN0b3JD
aGVja2VyOjpDaGVja2luZ0NvbnRleHQgY2hlY2tpbmdDb250ZXh0KFNlbGVjdG9yQ2hlY2tlcjo6
TW9kZTo6UXVlcnlpbmdSdWxlcyk7CiAgICAgY2hlY2tpbmdDb250ZXh0LnNjb3BlID0gcm9vdE5v
ZGUuaXNEb2N1bWVudE5vZGUoKSA/IG51bGxwdHIgOiAmcm9vdE5vZGU7CiAKLSAgICBmb3IgKGF1
dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2Rl
Jj4oc2VhcmNoUm9vdE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRh
bnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNlYXJjaFJvb3RO
b2RlKSkpIHsKICAgICAgICAgc2VsZWN0b3JEYXRhLmNvbXBpbGVkU2VsZWN0b3Iud2FzVXNlZCgp
OwogCiAgICAgICAgIGlmIChzZWxlY3RvckNoZWNrZXIoJmVsZW1lbnQsICZjaGVja2luZ0NvbnRl
eHQpKSB7CkBAIC00MzcsNyArNDM0LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0
YUxpc3Q6OmV4ZWN1dGVDb21waWxlZFNpbmdsZU11bHRpU2VsZWN0b3JEYXRhKGNvbnMKIHsKICAg
ICBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCBjaGVja2luZ0NvbnRleHQoU2VsZWN0
b3JDaGVja2VyOjpNb2RlOjpRdWVyeWluZ1J1bGVzKTsKICAgICBjaGVja2luZ0NvbnRleHQuc2Nv
cGUgPSByb290Tm9kZS5pc0RvY3VtZW50Tm9kZSgpID8gbnVsbHB0ciA6ICZyb290Tm9kZTsKLSAg
ICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250
YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2Nl
bmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2Rl
KSkpIHsKICAgICAgICAgZm9yIChhdXRvJiBzZWxlY3RvciA6IG1fc2VsZWN0b3JzKSB7CiAgICAg
ICAgICAgICBzZWxlY3Rvci5jb21waWxlZFNlbGVjdG9yLndhc1VzZWQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TbG90QXNzaWdubWVudC5jcHAKaW5kZXggNGQzZTYxOTQ3ZDNiZjhhNWFhYzRiY2U2Nzdm
YzcxYTMzYjg1YzZiOC4uZDJkMTNjYjA5MzUwZDA3YmM2MjA1N2VjOTNjZjM0ODVhNDYwZGRkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCkBAIC0yNiwxMCArMjYsOSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNsb3RBc3NpZ25tZW50LmgiCiAKLQorI2lu
Y2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgog
I2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGFnQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGFnQ29s
bGVjdGlvbi5jcHAKaW5kZXggZTA2N2YyZjFkMjk4NGNiNzg3ZmVlOWEzMDQ5MTIxNTVkYzljMzc0
NC4uMWYzMjRjYzA3N2ExYTMwMGNhYWViODVlYzQyOTM3YWRlZGZhYzEwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1RhZ0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UYWdDb2xsZWN0aW9uLmNwcApAQCAtMzQsNyArMzQsNyBAQCBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoVGFnQ29sbGVjdGlvbk5TKTsKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChIVE1MVGFnQ29sbGVjdGlvbik7CiAKIFRhZ0NvbGxlY3Rpb25OUzo6VGFnQ29sbGVjdGlvbk5T
KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkks
IGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkKLSAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9u
PFRhZ0NvbGxlY3Rpb25OUywgQ29sbGVjdGlvblR5cGVUcmFpdHM8QnlUYWc+Ojp0cmF2ZXJzYWxU
eXBlPihyb290Tm9kZSwgQnlUYWcpCisgICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbihyb290Tm9k
ZSwgQnlUYWcpCiAgICAgLCBtX25hbWVzcGFjZVVSSShuYW1lc3BhY2VVUkkpCiAgICAgLCBtX2xv
Y2FsTmFtZShsb2NhbE5hbWUpCiB7CkBAIC00Nyw3ICs0Nyw3IEBAIFRhZ0NvbGxlY3Rpb25OUzo6
flRhZ0NvbGxlY3Rpb25OUygpCiB9CiAKIFRhZ0NvbGxlY3Rpb246OlRhZ0NvbGxlY3Rpb24oQ29u
dGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpCi0g
ICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbjxUYWdDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRy
YWl0czxCeVRhZz46OnRyYXZlcnNhbFR5cGU+KHJvb3ROb2RlLCBCeVRhZykKKyAgICA6IENhY2hl
ZEhUTUxDb2xsZWN0aW9uKHJvb3ROb2RlLCBCeVRhZykKICAgICAsIG1fcXVhbGlmaWVkTmFtZShx
dWFsaWZpZWROYW1lKQogewogICAgIEFTU0VSVChxdWFsaWZpZWROYW1lICE9IHN0YXJBdG9tKCkp
OwpAQCAtNTksNyArNTksNyBAQCBUYWdDb2xsZWN0aW9uOjp+VGFnQ29sbGVjdGlvbigpCiB9CiAK
IEhUTUxUYWdDb2xsZWN0aW9uOjpIVE1MVGFnQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiByb290
Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSkKLSAgICA6IENhY2hlZEhUTUxD
b2xsZWN0aW9uPEhUTUxUYWdDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxCeUhUTUxU
YWc+Ojp0cmF2ZXJzYWxUeXBlPihyb290Tm9kZSwgQnlIVE1MVGFnKQorICAgIDogQ2FjaGVkSFRN
TENvbGxlY3Rpb24ocm9vdE5vZGUsIEJ5SFRNTFRhZykKICAgICAsIG1fcXVhbGlmaWVkTmFtZShx
dWFsaWZpZWROYW1lKQogICAgICwgbV9sb3dlcmVkUXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1l
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKaW5kZXggOWYzNTkzNWQ5NmM3OWU3
NWI2OGQzMGMyOGNiZTNjNWEwNDNmMDMzMy4uOWEwYjFiNWVhMjcxYTBiNWM0NjBjMDFlOTUwNjVj
ZDA3OTFhOTM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1R5cGVkRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDI5NCArMjksMjQxIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZVR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBE
b3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNz
IERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3Mg
RWxlbWVudERlc2NlbmRhbnRSYW5nZTsKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBi
b29sKGNvbnN0IEVsZW1lbnRUeXBlJik+IGNsYXNzIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRS
YW5nZTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4gewotcHVibGljOgotICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBD
b250YWluZXJOb2RlJiByb290KTsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Io
Y29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotICAgIFR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotfTsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+ICB7
Ci1wdWJsaWM6Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3Qg
Q29udGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgY29uc3QgRWxlbWVudFR5cGUqIGN1cnJl
bnQpOwotICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yJiBvcGVyYXRvcisr
KCk7Ci19OworLy8gUmFuZ2UgZm9yIGl0ZXJhdGluZyB0aHJvdWdoIGRlc2NlbmRhbnQgZWxlbWVu
dHMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRSYW5n
ZTxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFpbmVyTm9kZSYpOwordGVtcGxh
dGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8Y29uc3QgRWxl
bWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUmKTsKIAotdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yQWRhcHRlciB7Ci1wdWJsaWM6Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2RlJiByb290KTsKLSAgICBUeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCk7Ci0gICAgVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKTsKLSAgICBUeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoRWxlbWVudFR5cGUmKTsKLSAgICBU
eXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IGZyb20oRWxlbWVudCYp
OworLy8gUmFuZ2UgdGhhdCBza2lwcyBlbGVtZW50cyB3aGVyZSB0aGUgZmlsdGVyIHJldHVybnMg
ZmFsc2UuCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3Qg
RWxlbWVudFR5cGUmKT4gRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlPGNvbnN0IEVsZW1l
bnRUeXBlLCBmaWx0ZXI+IGRlc2NlbmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUmKTsK
IAotICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpOwotICAgIEVsZW1lbnRUeXBlKiBsYXN0KCk7Cisv
LyBSYW5nZSBmb3IgdXNlIHdoZW4gYm90aCBzZXRzIG9mIGRlc2NlbmRhbnRzIGFyZSBrbm93biB0
byBiZSB0aGUgc2FtZSBsZW5ndGguCisvLyBJZiB0aGV5IGFyZSBkaWZmZXJlbnQgbGVuZ3Rocywg
dGhpcyB3aWxsIHN0b3Agd2hlbiB0aGUgc2hvcnRlciBvbmUgcmVhY2hlcyB0aGUgZW5kLCBidXQg
YWxzbyBhbiBhc3NlcnRpb24gd2lsbCBmYWlsLgordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5
cGU+IERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRz
T2ZUeXBlKENvbnRhaW5lck5vZGUmIGZpcnN0Um9vdCwgQ29udGFpbmVyTm9kZSYgc2Vjb25kUm9v
dCk7CiAKLXByaXZhdGU6Ci0gICAgQ29udGFpbmVyTm9kZSYgbV9yb290OwordGVtcGxhdGU8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgOiBwdWJs
aWMgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiB7CitwdWJsaWM6CisgICAgRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvcigpID0gZGVmYXVsdDsKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKKyAg
ICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisgICAgRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JB
ZGFwdGVyIHsKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBjbGFzcyBFbGVtZW50RGVz
Y2VuZGFudFJhbmdlIHsKIHB1YmxpYzoKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgVHlwZWRFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7Ci0g
ICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgp
IGNvbnN0OwotICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPiBiZWdpbkF0KGNvbnN0IEVsZW1lbnRUeXBlJikgY29uc3Q7Ci0gICAgVHlwZWRFbGVtZW50
RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGZyb20oY29uc3QgRWxlbWVudCYp
IGNvbnN0OworICAgIEVsZW1lbnREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYg
cm9vdCk7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4o
KSBjb25zdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6bnVsbHB0cl90IGVuZCgpIHsgcmV0
dXJuIG51bGxwdHI7IH0KKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBl
PiBiZWdpbkF0KEVsZW1lbnRUeXBlJikgY29uc3Q7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT4gZnJvbShFbGVtZW50JikgY29uc3Q7CiAKLSAgICBjb25zdCBFbGVt
ZW50VHlwZSogZmlyc3QoKSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50VHlwZSogbGFzdCgpIGNv
bnN0OworICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0OworICAgIEVsZW1lbnRUeXBlKiBs
YXN0KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgY29uc3QgQ29udGFpbmVyTm9kZSYgbV9yb290
OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZVR5cGVk
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgewordGVtcGxhdGU8dHlwZW5hbWUgRWxl
bWVudFR5cGU+IGNsYXNzIERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UgewogcHVibGljOgot
ICAgIHR5cGVkZWYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50
VHlwZT4gU2luZ2xlQWRhcHRlcjsKLSAgICB0eXBlZGVmIERvdWJsZVR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gSXRlcmF0b3I7CisgICAgdHlwZWRlZiBFbGVtZW50
RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPiBTaW5nbGVBZGFwdGVyOworICAgIHR5cGVkZWYg
RG91YmxlRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gSXRlcmF0b3I7CiAK
LSAgICBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKFNpbmdsZUFk
YXB0ZXImJiwgU2luZ2xlQWRhcHRlciYmKTsKLSAgICBJdGVyYXRvciBiZWdpbigpOwotICAgIEl0
ZXJhdG9yIGVuZCgpOworICAgIERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UoU2luZ2xlQWRh
cHRlciYmLCBTaW5nbGVBZGFwdGVyJiYpOworICAgIEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6Om51bGxwdHJfdCBlbmQoKSB7IHJldHVybiBudWxscHRy
OyB9CiAKIHByaXZhdGU6CiAgICAgc3RkOjpwYWlyPFNpbmdsZUFkYXB0ZXIsIFNpbmdsZUFkYXB0
ZXI+IG1fcGFpcjsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBjbGFzcyBE
b3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgewordGVtcGxhdGU8dHlwZW5hbWUg
RWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgewogcHVi
bGljOgotICAgIHR5cGVkZWYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPiBTaW5nbGVJdGVyYXRvcjsKKyAgICB0eXBlZGVmIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3I8RWxlbWVudFR5cGU+IFNpbmdsZUl0ZXJhdG9yOwogICAgIHR5cGVkZWYgc3RkOjpwYWlyPEVs
ZW1lbnRUeXBlJiwgRWxlbWVudFR5cGUmPiBSZWZlcmVuY2VQcm94eTsKIAotICAgIERvdWJsZVR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihTaW5nbGVJdGVyYXRvciYmLCBTaW5nbGVJdGVy
YXRvciYmKTsKKyAgICBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKFNpbmdsZUl0ZXJh
dG9yJiYsIFNpbmdsZUl0ZXJhdG9yJiYpOwogICAgIFJlZmVyZW5jZVByb3h5IG9wZXJhdG9yKigp
IGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEb3VibGVUeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3ImKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRG91Ymxl
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJikgY29uc3Q7Ci0gICAgRG91YmxlVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisgICAgY29uc3RleHByIGJv
b2wgb3BlcmF0b3IhPShzdGQ6Om51bGxwdHJfdCkgY29uc3Q7CisgICAgRG91YmxlRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwogCiBwcml2YXRlOgogICAgIHN0ZDo6cGFp
cjxTaW5nbGVJdGVyYXRvciwgU2luZ2xlSXRlcmF0b3I+IG1fcGFpcjsKIH07CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRh
cHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFpbmVyTm9kZSYpOwotdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRh
aW5lck5vZGUmKTsKLQotLy8gVGhpcyBtdXN0IG9ubHkgYmUgdXNlZCB3aGVuIGJvdGggc2V0cyBv
ZiBkZXNjZW5kYW50cyBhcmUga25vd24gdG8gYmUgdGhlIHNhbWUgbGVuZ3RoLgotLy8gSWYgdGhl
eSBhcmUgZGlmZmVyZW50IGxlbmd0aHMsIHRoaXMgd2lsbCBzdG9wIHdoZW4gdGhlIHNob3J0ZXIg
b25lIHJlYWNoZXMgdGhlIGVuZCwgYnV0IGFsc28gYW4gYXNzZXJ0aW9uIHdpbGwgZmFpbC4KLXRl
bXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWluZXJO
b2RlJiBmaXJzdFJvb3QsIENvbnRhaW5lck5vZGUmIHNlY29uZFJvb3QpOwotCi0vLyBUeXBlZEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBi
b29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBjbGFzcyBGaWx0ZXJlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiB7Citw
dWJsaWM6CisgICAgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRh
aW5lck5vZGUmLCBFbGVtZW50VHlwZSogPSBudWxscHRyKTsKKyAgICBGaWx0ZXJlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKK307CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxl
bWVudFR5cGU+OjpUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVy
Tm9kZSYgcm9vdCkKLSAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnJvb3QpCi17
Ci19Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxl
bWVudFR5cGUmKT4gY2xhc3MgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlIHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBJdGVyYXRvciA9IEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
cjxFbGVtZW50VHlwZSwgZmlsdGVyPjsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OlR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBF
bGVtZW50VHlwZSogY3VycmVudCkKLSAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4o
JnJvb3QsIGN1cnJlbnQpCi17Ci19CisgICAgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdl
KGNvbnN0IENvbnRhaW5lck5vZGUmKTsKKyAgICBJdGVyYXRvciBiZWdpbigpIGNvbnN0OworICAg
IHN0YXRpYyBjb25zdGV4cHIgc3RkOjpudWxscHRyX3QgZW5kKCkgeyByZXR1cm4gbnVsbHB0cjsg
fQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHQoKSk7Ci19CisgICAgRWxlbWVudFR5
cGUqIGZpcnN0KCkgY29uc3Q7CiAKLS8vIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yCitwcml2YXRlOgorICAgIGNvbnN0IENvbnRhaW5lck5vZGUmIG1fcm9vdDsKK307CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCi0gICAgOiBFbGVtZW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT4oJnJvb3QpCisvLyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWlu
ZXJOb2RlJiByb290LCBFbGVtZW50VHlwZSogY3VycmVudCkKKyAgICA6IEVsZW1lbnRJdGVyYXRv
cjxFbGVtZW50VHlwZT4oJnJvb3QsIGN1cnJlbnQpCiB7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKGNvbnN0
IENvbnRhaW5lck5vZGUmIHJvb3QsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDog
RWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZyb290LCBjdXJyZW50KQordGVtcGxh
dGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+JiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3Ir
KygpCiB7CisgICAgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0KCk7
CisgICAgcmV0dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+
JiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJh
dG9yKysoKQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6b3BlcmF0b3ItLSgpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRDb25zdEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0KCkpOworICAgIEVsZW1lbnRJdGVyYXRvcjxF
bGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXMoKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAK
LS8vIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIKKy8vIEVsZW1lbnREZXNj
ZW5kYW50UmFuZ2UKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpUeXBlZEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUmIHJvb3QpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50
VHlwZT46OkVsZW1lbnREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkK
ICAgICA6IG1fcm9vdChyb290KQogewogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBU
eXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4o
KQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3I8RWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdp
bigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxF
bGVtZW50VHlwZT4obV9yb290LCBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpbiht
X3Jvb3QpKTsKKyAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4obV9yb290LCBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpbihtX3Jvb3QpKTsK
IH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpCi17Ci0gICAgcmV0dXJuIFR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290KTsKLX0KLSAgICAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFk
YXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBkZXNjZW5kYW50KQordGVt
cGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxl
bWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVs
ZW1lbnRUeXBlJiBkZXNjZW5kYW50KSBjb25zdAogewogICAgIEFTU0VSVChkZXNjZW5kYW50Lmlz
RGVzY2VuZGFudE9mKG1fcm9vdCkpOwotICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgJmRlc2NlbmRhbnQpOworICAgIHJldHVybiBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsICZkZXNjZW5kYW50
KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZyb20oRWxlbWVudCYgZGVzY2VuZGFudCkK
K3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiBFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPjo6ZnJvbShF
bGVtZW50JiBkZXNjZW5kYW50KSBjb25zdAogewogICAgIEFTU0VSVChkZXNjZW5kYW50LmlzRGVz
Y2VuZGFudE9mKG1fcm9vdCkpOwogICAgIGlmIChpczxFbGVtZW50VHlwZT4oZGVzY2VuZGFudCkp
Ci0gICAgICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+KG1fcm9vdCwgZG93bmNhc3Q8RWxlbWVudFR5cGU+KCZkZXNjZW5kYW50KSk7CisgICAgICAg
IHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIGRv
d25jYXN0PEVsZW1lbnRUeXBlPigmZGVzY2VuZGFudCkpOwogICAgIEVsZW1lbnRUeXBlKiBuZXh0
ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dChkZXNjZW5kYW50LCAmbV9yb290KTsKLSAg
ICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jv
b3QsIG5leHQpOworICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPihtX3Jvb3QsIG5leHQpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
Ci1pbmxpbmUgRWxlbWVudFR5cGUqIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0
ZXI8RWxlbWVudFR5cGU+OjpmaXJzdCgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4g
RWxlbWVudFR5cGUqIEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpmaXJzdCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0aGlu
KG1fcm9vdCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBF
bGVtZW50VHlwZSogVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50
VHlwZT46Omxhc3QoKQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRUeXBl
KiBFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPjo6bGFzdCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RXaXRoaW4obV9yb290KTsKIH0K
IAotLy8gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyCisvLyBEb3Vi
bGVFbGVtZW50RGVzY2VuZGFudFJhbmdlCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudFR5cGU+OjpUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIoY29u
c3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKLSAgICA6IG1fcm9vdChyb290KQordGVtcGxhdGU8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+IERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5
cGU+OjpEb3VibGVFbGVtZW50RGVzY2VuZGFudFJhbmdlKFNpbmdsZUFkYXB0ZXImJiBmaXJzdCwg
U2luZ2xlQWRhcHRlciYmIHNlY29uZCkKKyAgICA6IG1fcGFpcihXVEZNb3ZlKGZpcnN0KSwgV1RG
TW92ZShzZWNvbmQpKQogewogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5
cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJl
Z2luKCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBhdXRvIERvdWJsZUVs
ZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0IC0+IEl0ZXJh
dG9yCiB7Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPihtX3Jvb3QsIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0aGluKG1f
cm9vdCkpOworICAgIHJldHVybiBJdGVyYXRvcihtX3BhaXIuZmlyc3QuYmVnaW4oKSwgbV9wYWly
LnNlY29uZC5iZWdpbigpKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBU
eXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+Ojpl
bmQoKSBjb25zdAotewotICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT4obV9yb290KTsKLX0KKy8vIERvdWJsZUVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVk
RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbkF0KGNvbnN0
IEVsZW1lbnRUeXBlJiBkZXNjZW5kYW50KSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+IERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpEb3Vi
bGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKFNpbmdsZUl0ZXJhdG9yJiYgZmlyc3QsIFNpbmds
ZUl0ZXJhdG9yJiYgc2Vjb25kKQorICAgIDogbV9wYWlyKFdURk1vdmUoZmlyc3QpLCBXVEZNb3Zl
KHNlY29uZCkpCiB7Ci0gICAgQVNTRVJUKGRlc2NlbmRhbnQuaXNEZXNjZW5kYW50T2YobV9yb290
KSk7Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPihtX3Jvb3QsICZkZXNjZW5kYW50KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudFR5cGU+Ojpmcm9tKGNvbnN0IEVsZW1lbnQmIGRlc2NlbmRhbnQpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gYXV0byBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IqKCkgY29uc3QgLT4gUmVmZXJlbmNlUHJveHkKIHsK
LSAgICBBU1NFUlQoZGVzY2VuZGFudC5pc0Rlc2NlbmRhbnRPZihtX3Jvb3QpKTsKLSAgICBpZiAo
aXM8RWxlbWVudFR5cGU+KGRlc2NlbmRhbnQpKQotICAgICAgICByZXR1cm4gVHlwZWRFbGVtZW50
RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgZG93bmNhc3Q8RWxl
bWVudFR5cGU+KCZkZXNjZW5kYW50KSk7Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIG5leHQgPSBU
cmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0KGRlc2NlbmRhbnQsICZtX3Jvb3QpOwotICAgIHJl
dHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9y
b290LCBuZXh0KTsKKyAgICByZXR1cm4geyAqbV9wYWlyLmZpcnN0LCAqbV9wYWlyLnNlY29uZCB9
OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgY29uc3QgRWxl
bWVudFR5cGUqIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46OmZpcnN0KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBj
b25zdGV4cHIgYm9vbCBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBl
Pjo6b3BlcmF0b3IhPShzdGQ6Om51bGxwdHJfdCkgY29uc3QKIHsKLSAgICByZXR1cm4gVHJhdmVy
c2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RXaXRoaW4obV9yb290KTsKKyAgICBBU1NFUlQoIW1fcGFp
ci5maXJzdCA9PSAhbV9wYWlyLnNlY29uZCk7CisgICAgcmV0dXJuIG1fcGFpci5maXJzdDsKIH0K
IAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRU
eXBlKiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5
cGU+OjpsYXN0KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBEb3VibGVF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRG91YmxlRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewotICAgIHJldHVybiBU
cmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpsYXN0V2l0aGluKG1fcm9vdCk7CisgICAgKyttX3BhaXIu
Zmlyc3Q7CisgICAgKyttX3BhaXIuc2Vjb25kOworICAgIHJldHVybiAqdGhpczsKIH0KIAotLy8g
RG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcgorLy8gRmlsdGVyZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yCiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PiBpbmxpbmUgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46OkRvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoU2lu
Z2xlQWRhcHRlciYmIGZpcnN0LCBTaW5nbGVBZGFwdGVyJiYgc2Vjb25kKQotICAgIDogbV9wYWly
KFdURk1vdmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29uZCkpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVt
ZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gRmlsdGVyZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlLCBmaWx0ZXI+OjpGaWx0ZXJlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgRWxlbWVudFR5cGUq
IGVsZW1lbnQpCisgICAgOiBFbGVtZW50SXRlcmF0b3I8Y29uc3QgRWxlbWVudFR5cGU+IHsgJnJv
b3QsIGVsZW1lbnQgfQogewogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5s
aW5lIGF1dG8gRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46OmJlZ2luKCkgLT4gSXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRU
eXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBGaWx0ZXJlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGUsIGZpbHRlcj4mIEZpbHRlcmVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZSwgZmlsdGVyPjo6b3BlcmF0b3IrKygpCiB7Ci0gICAg
cmV0dXJuIEl0ZXJhdG9yKG1fcGFpci5maXJzdC5iZWdpbigpLCBtX3BhaXIuc2Vjb25kLmJlZ2lu
KCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGF1dG8gRG91
YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVu
ZCgpIC0+IEl0ZXJhdG9yCi17Ci0gICAgcmV0dXJuIEl0ZXJhdG9yKG1fcGFpci5maXJzdC5lbmQo
KSwgbV9wYWlyLnNlY29uZC5lbmQoKSk7CisgICAgZG8geworICAgICAgICBFbGVtZW50SXRlcmF0
b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHQoKTsKKyAgICB9IHdoaWxlICgqdGhpcyAmJiAh
ZmlsdGVyKCoqdGhpcykpOworICAgIHJldHVybiAqdGhpczsKIH0KIAotLy8gRG91YmxlVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yCisvLyBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFu
Z2UKIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBEb3VibGVUeXBlZEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpEb3VibGVUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IoU2luZ2xlSXRlcmF0b3ImJiBmaXJzdCwgU2luZ2xlSXRlcmF0b3Im
JiBzZWNvbmQpCi0gICAgOiBtX3BhaXIoV1RGTW92ZShmaXJzdCksIFdURk1vdmUoc2Vjb25kKSkK
K3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50
VHlwZSYpPiBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGUsIGZpbHRl
cj46OkZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZShjb25zdCBDb250YWluZXJOb2RlJiBy
b290KQorICAgIDogbV9yb290IHsgcm9vdCB9CiB7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPiBpbmxpbmUgYXV0byBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvciooKSBjb25zdCAtPiBSZWZlcmVuY2VQcm94eQordGVt
cGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmlsdGVyKGNvbnN0IEVsZW1lbnRUeXBl
Jik+IGF1dG8gRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlLCBmaWx0
ZXI+OjpiZWdpbigpIGNvbnN0IC0+IEl0ZXJhdG9yCiB7Ci0gICAgcmV0dXJuIHsgKm1fcGFpci5m
aXJzdCwgKm1fcGFpci5zZWNvbmQgfTsKKyAgICByZXR1cm4geyBtX3Jvb3QsIGZpcnN0KCkgfTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBib29sIERvdWJsZVR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yPT0oY29u
c3QgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKK3Rl
bXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlw
ZSYpPiBFbGVtZW50VHlwZSogRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRU
eXBlLCBmaWx0ZXI+OjpmaXJzdCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKChtX3BhaXIuZmlyc3Qg
PT0gb3RoZXIubV9wYWlyLmZpcnN0KSA9PSAobV9wYWlyLnNlY29uZCA9PSBvdGhlci5tX3BhaXIu
c2Vjb25kKSk7Ci0gICAgcmV0dXJuIG1fcGFpci5maXJzdCA9PSBvdGhlci5tX3BhaXIuZmlyc3Qg
fHwgbV9wYWlyLnNlY29uZCA9PSBvdGhlci5tX3BhaXIuc2Vjb25kOworICAgIGZvciAoYXV0byog
ZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0aGluKG1fcm9vdCk7IGVs
ZW1lbnQ7IGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0KCplbGVtZW50LCAm
bV9yb290KSkgeworICAgICAgICBpZiAoZmlsdGVyKCplbGVtZW50KSkKKyAgICAgICAgICAgIHJl
dHVybiBlbGVtZW50OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBib29sIERvdWJsZVR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIT0oY29uc3QgRG91YmxlVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7Ci19CisvLyBTdGFuZGFsb25lIGZ1bmN0aW9ucwogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT4mIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
cjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5
cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBl
KENvbnRhaW5lck5vZGUmIHJvb3QpCiB7Ci0gICAgKyttX3BhaXIuZmlyc3Q7Ci0gICAgKyttX3Bh
aXIuc2Vjb25kOwotICAgIHJldHVybiAqdGhpczsKKyAgICByZXR1cm4gRWxlbWVudERlc2NlbmRh
bnRSYW5nZTxFbGVtZW50VHlwZT4ocm9vdCk7CiB9CiAKLS8vIFN0YW5kYWxvbmUgZnVuY3Rpb25z
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShD
b250YWluZXJOb2RlJiByb290KQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1l
bnREZXNjZW5kYW50UmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKGNv
bnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCiB7Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KHJvb3QpOworICAgIHJldHVybiBFbGVt
ZW50RGVzY2VuZGFudFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPihyb290KTsKIH0KIAotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRD
b25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoY29uc3Qg
Q29udGFpbmVyTm9kZSYgcm9vdCkKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBEb3Vi
bGVFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShD
b250YWluZXJOb2RlJiBmaXJzdFJvb3QsIENvbnRhaW5lck5vZGUmIHNlY29uZFJvb3QpCiB7Ci0g
ICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT4ocm9vdCk7CisgICAgcmV0dXJuIHsgZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudFR5
cGU+KGZpcnN0Um9vdCksIGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnRUeXBlPihzZWNvbmRSb290
KSB9OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIERvdWJsZVR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRh
bnRzT2ZUeXBlKENvbnRhaW5lck5vZGUmIGZpcnN0Um9vdCwgQ29udGFpbmVyTm9kZSYgc2Vjb25k
Um9vdCkKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBF
bGVtZW50VHlwZSYpPiBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8Y29uc3QgRWxlbWVu
dFR5cGUsIGZpbHRlcj4gZGVzY2VuZGFudHNPZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9v
dCkKIHsKLSAgICByZXR1cm4geyBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50VHlwZT4oZmlyc3RS
b290KSwgZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudFR5cGU+KHNlY29uZFJvb3QpIH07CisgICAg
cmV0dXJuIHsgcm9vdCB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKaW5kZXggMzkyMGEwYjcwODMzYmY5YjZmNDNmYzc1OGM0YmQxM2M2YmRl
MWNmNC4uNmM2ZDgzYTcyOGYzMDIwM2I4ZWZmY2UwZjA4YmFhNDU1YzMyNmE2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50
TWFya2VyQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0
b3JDbGllbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVu
dEhhbmRsZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgpA
QCAtNjEsNyArNjIsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
IkhUTUxBdHRhY2htZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxCUkVsZW1lbnQuaCIKLSNp
bmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVP
d25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCkBAIC0zNDMxLDIz
ICszNDMyLDE4IEBAIHZvaWQgRWRpdG9yOjp0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShFbGVtZW50
KiBlKQogCiB2b2lkIEVkaXRvcjo6YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCkgY29u
c3QKIHsKLSAgICBhdXRvIGNvbGxlY3Rpb24gPSBkb2N1bWVudCgpLmdldEVsZW1lbnRzQnlUYWdO
YW1lKEhUTUxOYW1lczo6Ym9keVRhZy0+bG9jYWxOYW1lKCkpOwotICAgIHVuc2lnbmVkIGxlbmd0
aCA9IGNvbGxlY3Rpb24tPmxlbmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkKLSAgICAgICAgYXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQoY29sbGVjdGlv
bi0+aXRlbShpKSk7Ci19Ci0KLXZvaWQgRWRpdG9yOjphcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVu
dChFbGVtZW50KiBlbGVtZW50KSBjb25zdAotewotICAgIEFTU0VSVCghZWxlbWVudCB8fCBpczxT
dHlsZWRFbGVtZW50PigqZWxlbWVudCkpOwotICAgIGlmICghaXM8U3R5bGVkRWxlbWVudD4oZWxl
bWVudCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00g
d3JhcHBlciBzbyB3ZSBnZXQgdGhlIHNhbWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCi0g
ICAgYXV0byYgc3R5bGUgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkuY3Nzb21T
dHlsZSgpOwotICAgIHN0eWxlLnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkV3Jh
cCwgImJyZWFrLXdvcmQiLCBmYWxzZSk7Ci0gICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChD
U1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCAic3BhY2UiLCBmYWxzZSk7Ci0gICAgc3R5bGUuc2V0
UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUxpbmVCcmVhaywgImFmdGVyLXdoaXRlLXNwYWNl
IiwgZmFsc2UpOworICAgIC8vIEZJWE1FOiBOb3QgY2xlYXIgaXQncyB2YWx1YWJsZSB0byBkbyB0
aGlzIHRvIGFsbCBib2R5IGVsZW1lbnRzIHJhdGhlciB0aGFuIGp1c3QgZG9pbmcgaXQgb24gdGhl
IHNpbmdsZSBvbmUgcmV0dXJuZWQgYnkgRG9jdW1lbnQ6OmJvZHkuCisgICAgVmVjdG9yPFJlZjxI
VE1MQm9keUVsZW1lbnQ+PiBib2RpZXM7CisgICAgZm9yIChhdXRvJiBib2R5IDogZGVzY2VuZGFu
dHNPZlR5cGU8SFRNTEJvZHlFbGVtZW50Pihkb2N1bWVudCgpKSkKKyAgICAgICAgYm9kaWVzLmFw
cGVuZChib2R5KTsKKworICAgIGZvciAoYXV0byYgYm9keSA6IGJvZGllcykgeworICAgICAgICAv
LyBNdXRhdGUgdXNpbmcgdGhlIENTU09NIHdyYXBwZXIgc28gd2UgZ2V0IHRoZSBzYW1lIGV2ZW50
IGJlaGF2aW9yIGFzIGEgc2NyaXB0LgorICAgICAgICBhdXRvJiBzdHlsZSA9IGJvZHktPmNzc29t
U3R5bGUoKTsKKyAgICAgICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdv
cmRXcmFwLCAiYnJlYWstd29yZCIsIGZhbHNlKTsKKyAgICAgICAgc3R5bGUuc2V0UHJvcGVydHlJ
bnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCAic3BhY2UiLCBmYWxzZSk7CisgICAg
ICAgIHN0eWxlLnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlMaW5lQnJlYWssICJhZnRl
ci13aGl0ZS1zcGFjZSIsIGZhbHNlKTsKKyAgICB9CiB9CiAKIGJvb2wgRWRpdG9yOjpmaW5kU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmgKaW5kZXggMTljNDIwOGQ0NWQ5ZWM5ZjVjMjljOTI4MTc0ODgwZTRmMWI5ODQx
MC4uZjg2NzdiMzE4ZThlODA2YzAyMmEzZTczODZlZWYyNjA4MDViNDUzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oCkBAIC00MzUsNyArNDM1LDYgQEAgcHVibGljOgogICAgIHZvaWQgY29tcHV0
ZUFuZFNldFR5cGluZ1N0eWxlKEVkaXRpbmdTdHlsZSYgLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlv
bjo6VW5zcGVjaWZpZWQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tcHV0ZUFuZFNldFR5
cGluZ1N0eWxlKFN0eWxlUHJvcGVydGllcyYgLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6VW5z
cGVjaWZpZWQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHlFZGl0aW5nU3R5bGVUb0Jv
ZHlFbGVtZW50KCkgY29uc3Q7Ci0gICAgdm9pZCBhcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudChF
bGVtZW50KikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IGZpcnN0UmVjdEZv
clJhbmdlKFJhbmdlKikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5jcHAKaW5kZXggY2ZkYzM5ZjA0ZWFjNDA2ODRkMWQyNDhiN2I4NzM1NjRlMDI4Mjk2NC4u
ZDhjY2FiMDc4NDEzNzI1ZWY5MGRkMDFkMGI3ZmU0OTc1NGZhN2FjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTIzNTMsMjAgKzIzNTMsMTYgQEAgc3Rh
dGljIEhUTUxGb3JtRWxlbWVudCogc2NhbkZvckZvcm0oRWxlbWVudCogc3RhcnQpCiB7CiAgICAg
aWYgKCFzdGFydCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGRlc2NlbmRh
bnRzID0gZGVzY2VuZGFudHNPZlR5cGU8SFRNTEVsZW1lbnQ+KHN0YXJ0LT5kb2N1bWVudCgpKTsK
LSAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5mcm9tKCpzdGFydCksIGVuZCA9IGRlc2Nl
bmRhbnRzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgSFRNTEVsZW1lbnQmIGVs
ZW1lbnQgPSAqaXQ7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8
SFRNTEVsZW1lbnQ+KHN0YXJ0LT5kb2N1bWVudCgpKSkgewogICAgICAgICBpZiAoaXM8SFRNTEZv
cm1FbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybiAmZG93bmNhc3Q8SFRNTEZv
cm1FbGVtZW50PihlbGVtZW50KTsKICAgICAgICAgaWYgKGlzPEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ+KGVsZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ+KGVsZW1lbnQpLmZvcm0oKTsKICAgICAgICAgaWYgKGlzPEhUTUxGcmFtZUVsZW1l
bnRCYXNlPihlbGVtZW50KSkgewotICAgICAgICAgICAgRG9jdW1lbnQqIGNvbnRlbnREb2N1bWVu
dCA9IGRvd25jYXN0PEhUTUxGcmFtZUVsZW1lbnRCYXNlPihlbGVtZW50KS5jb250ZW50RG9jdW1l
bnQoKTsKLSAgICAgICAgICAgIGlmICghY29udGVudERvY3VtZW50KQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKEhUTUxGb3JtRWxlbWVudCogZnJhbWVSZXN1bHQg
PSBzY2FuRm9yRm9ybShjb250ZW50RG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZnJhbWVSZXN1bHQ7CisgICAgICAgICAgICBpZiAoYXV0byogY29u
dGVudERvY3VtZW50ID0gZG93bmNhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2U+KGVsZW1lbnQpLmNv
bnRlbnREb2N1bWVudCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGZyYW1lUmVzdWx0
ID0gc2NhbkZvckZvcm0oY29udGVudERvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZVJlc3VsdDsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggY2RlOWE3OGM4
ZmU3ZGExMzFlMTFmNDRmNGJiMDkxYzVmZTZmMDJmMy4uMWU3NjBkZTcyMzE2MDlkMDU5Mjk4Mjhm
N2UxM2YzZDIyYmEyNTJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgog
CiAgICAgICAgIFR5cGUgdHlwZSA9IFR5cGU6OkluY2x1ZGU7CiAgICAgICAgIFJlZlB0cjxFbGVt
ZW50PiBtYXRjaGluZ0VsZW1lbnQ7Ci0gICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1l
bnRMaW5lYWdlKHN0YXJ0aW5nRWxlbWVudC5nZXQoKSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBl
bGVtZW50IDogbGluZWFnZU9mVHlwZTxFbGVtZW50Pigqc3RhcnRpbmdFbGVtZW50KSkgewogICAg
ICAgICAgICAgaWYgKGF1dG8gdHlwZU9yTnVsbG9wdCA9IHR5cGVGb3JFbGVtZW50KGVsZW1lbnQp
KSB7CiAgICAgICAgICAgICAgICAgdHlwZSA9ICp0eXBlT3JOdWxsb3B0OwogICAgICAgICAgICAg
ICAgIG1hdGNoaW5nRWxlbWVudCA9ICZlbGVtZW50OwpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQg
OiBlbGVtZW50TGluZWFnZShzdGFydGluZ0VsZW1lbnQuZ2V0KCkpKSB7CisgICAgICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4oKnN0YXJ0aW5nRWxlbWVudCkp
IHsKICAgICAgICAgICAgIG1fY2FjaGUuc2V0KGVsZW1lbnQsIHR5cGUpOwogICAgICAgICAgICAg
aWYgKCZlbGVtZW50ID09IG1hdGNoaW5nRWxlbWVudCkKICAgICAgICAgICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KaW5kZXggMzk0OTZiNjk4ODY2YzRhZWMzZjc3ZDRlNjYwYmU2ZDUwNzk5ZDlkZS4u
ZjdkYTBiZGI1OGE4ZGUwYmYzNjRlYmYzNDk0NDNiMmRlYzgyNDhiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAg
LTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW1wb3J0ICJFZGl0
b3IuaCIKICNpbXBvcnQgIkVkaXRvckNsaWVudC5oIgorI2ltcG9ydCAiRWxlbWVudEl0ZXJhdG9y
LmgiCiAjaW1wb3J0ICJGaWxlLmgiCiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiRnJhbWVM
b2FkZXIuaCIKQEAgLTU4LDcgKzU5LDYgQEAKICNpbXBvcnQgIlNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YS5oIgogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQgIlNvY2tldFByb3ZpZGVyLmgi
Ci0jaW1wb3J0ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbXBvcnQgIlVU
SVV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRl
ZFN0cmluZy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVzb3VyY2VIYW5kbGVy
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggMTU5NTAzNTFkOTA0NzRjN2M3ODhj
MzNlNjdlN2RhODU4ODdmNmQ0Yy4uN2UyMmM1MjJhZGM4ZTIyN2I2MzliY2VlNmRiNDZkMGEzOTI5
M2Q1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNzUsNyArNzUsNiBAQAogI2lu
Y2x1ZGUgIlNvY2tldFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAj
aW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIlZp
c2libGVVbml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaAppbmRleCA3OWY0NzdkNzRmMjI0ZTcxYjQ2
YWJhNDc3ZjZjZGIwZGE4OWRmNDg1Li4wZjA2YzBiM2ExYzlmNjlkN2QxNDFiMGIyMzY0Zjk2YTE5
ZWNmZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oCkBA
IC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29sbGVjdGlvblRy
YXZlcnNhbC5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CkBAIC01MiwxNCArNTEsMTQgQEAg
cHVibGljOgogICAgIH0KIAogICAgIC8vIEZvciBDb2xsZWN0aW9uSW5kZXhDYWNoZTsgZG8gbm90
IHVzZSBlbHNld2hlcmUuCi0gICAgdXNpbmcgQ29sbGVjdGlvblRyYXZlcnNhbEl0ZXJhdG9yID0g
dHlwZW5hbWUgQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6SXRlcmF0b3I7Ci0g
ICAgQ29sbGVjdGlvblRyYXZlcnNhbEl0ZXJhdG9yIGNvbGxlY3Rpb25CZWdpbigpIGNvbnN0IHsg
cmV0dXJuIENvbGxlY3Rpb25UcmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT46OmJlZ2luKGNvbGxlY3Rp
b24oKSwgcm9vdE5vZGUoKSk7IH0KLSAgICBDb2xsZWN0aW9uVHJhdmVyc2FsSXRlcmF0b3IgY29s
bGVjdGlvbkxhc3QoKSBjb25zdCB7IHJldHVybiBDb2xsZWN0aW9uVHJhdmVyc2FsPHRyYXZlcnNh
bFR5cGU+OjpsYXN0KGNvbGxlY3Rpb24oKSwgcm9vdE5vZGUoKSk7IH0KLSAgICBDb2xsZWN0aW9u
VHJhdmVyc2FsSXRlcmF0b3IgY29sbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIENvbGxlY3Rp
b25UcmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT46OmVuZChyb290Tm9kZSgpKTsgfQotICAgIHZvaWQg
Y29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChDb2xsZWN0aW9uVHJhdmVyc2FsSXRlcmF0b3ImIGN1
cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0IHsg
Q29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6dHJhdmVyc2VGb3J3YXJkKGNvbGxl
Y3Rpb24oKSwgY3VycmVudCwgY291bnQsIHRyYXZlcnNlZENvdW50KTsgfQotICAgIHZvaWQgY29s
bGVjdGlvblRyYXZlcnNlQmFja3dhcmQoQ29sbGVjdGlvblRyYXZlcnNhbEl0ZXJhdG9yJiBjdXJy
ZW50LCB1bnNpZ25lZCBjb3VudCkgY29uc3QgeyBDb2xsZWN0aW9uVHJhdmVyc2FsPHRyYXZlcnNh
bFR5cGU+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNvbGxlY3Rpb24oKSwgY3VycmVudCwgY291bnQpOyB9
CisgICAgdXNpbmcgVHJhdmVyc2FsID0gQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBl
PjsKKyAgICB1c2luZyBJdGVyYXRvciA9IHR5cGVuYW1lIFRyYXZlcnNhbDo6SXRlcmF0b3I7Cisg
ICAgYXV0byBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBUcmF2ZXJzYWw6OmJlZ2lu
KGNvbGxlY3Rpb24oKSwgcm9vdE5vZGUoKSk7IH0KKyAgICBhdXRvIGNvbGxlY3Rpb25MYXN0KCkg
Y29uc3QgeyByZXR1cm4gVHJhdmVyc2FsOjpsYXN0KGNvbGxlY3Rpb24oKSwgcm9vdE5vZGUoKSk7
IH0KKyAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoSXRlcmF0b3ImIGN1cnJlbnQs
IHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0IHsgVHJhdmVy
c2FsOjp0cmF2ZXJzZUZvcndhcmQoY29sbGVjdGlvbigpLCBjdXJyZW50LCBjb3VudCwgdHJhdmVy
c2VkQ291bnQpOyB9CisgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChJdGVyYXRv
ciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpIGNvbnN0IHsgVHJhdmVyc2FsOjp0cmF2ZXJzZUJh
Y2t3YXJkKGNvbGxlY3Rpb24oKSwgY3VycmVudCwgY291bnQpOyB9CiAgICAgYm9vbCBjb2xsZWN0
aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCgpIGNvbnN0IHsgcmV0dXJuIHRyYXZlcnNhbFR5cGUgIT0g
Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5OyB9Ci0gICAgdm9pZCB3
aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3QgeyBkb2N1bWVudCgpLnJlZ2lzdGVyQ29sbGVj
dGlvbihjb25zdF9jYXN0PENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3Ms
IHRyYXZlcnNhbFR5cGU+Jj4oKnRoaXMpKTsgfQorICAgIHZvaWQgd2lsbFZhbGlkYXRlSW5kZXhD
YWNoZSgpIGNvbnN0IHsgZG9jdW1lbnQoKS5yZWdpc3RlckNvbGxlY3Rpb24oY29uc3RfY2FzdDxD
YWNoZWRIVE1MQ29sbGVjdGlvbiY+KCp0aGlzKSk7IH0KIAogICAgIHZvaWQgaW52YWxpZGF0ZUNh
Y2hlRm9yRG9jdW1lbnQoRG9jdW1lbnQmKSBvdmVycmlkZTsKIApAQCAtNjksMTkgKzY4LDE5IEBA
IHByaXZhdGU6CiAgICAgSFRNTENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbigpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PEhUTUxDb2xsZWN0aW9uQ2xhc3MmPigqdGhpcyk7IH0KICAgICBjb25zdCBI
VE1MQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgSFRNTENvbGxlY3Rpb25DbGFzcyY+KCp0aGlzKTsgfQogCi0gICAgbXV0YWJsZSBD
b2xsZWN0aW9uSW5kZXhDYWNoZTxIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVy
c2FsSXRlcmF0b3I+IG1faW5kZXhDYWNoZTsKKyAgICBtdXRhYmxlIENvbGxlY3Rpb25JbmRleENh
Y2hlPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIEl0ZXJhdG9yPiBtX2luZGV4Q2FjaGU7CiB9OwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNh
bFR5cGUgdHJhdmVyc2FsVHlwZT4KIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9u
Q2xhc3MsIHRyYXZlcnNhbFR5cGU+OjpDYWNoZWRIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2Rl
JiBiYXNlLCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSkKICAgICA6IEhUTUxDb2xsZWN0
aW9uKGJhc2UsIGNvbGxlY3Rpb25UeXBlKQotICAgICwgbV9pbmRleENhY2hlKGNvbGxlY3Rpb24o
KSkKLXsgfQoreworfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywg
Q29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KIENhY2hlZEhUTUxDb2xsZWN0
aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+Ojp+Q2FjaGVkSFRNTENvbGxl
Y3Rpb24oKQogewotICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9u
KCkpKQorICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZSgpKQogICAgICAgICBkb2N1
bWVudCgpLnVucmVnaXN0ZXJDb2xsZWN0aW9uKCp0aGlzKTsKIH0KIApAQCAtODksOSArODgsOSBA
QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZl
cnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KIHZvaWQgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENv
bGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT46OmludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50
KERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNh
Y2hlRm9yRG9jdW1lbnQoZG9jdW1lbnQpOwotICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRD
YWNoZShjb2xsZWN0aW9uKCkpKSB7CisgICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hl
KCkpIHsKICAgICAgICAgZG9jdW1lbnQudW5yZWdpc3RlckNvbGxlY3Rpb24oKnRoaXMpOwotICAg
ICAgICBtX2luZGV4Q2FjaGUuaW52YWxpZGF0ZShjb2xsZWN0aW9uKCkpOworICAgICAgICBtX2lu
ZGV4Q2FjaGUuaW52YWxpZGF0ZSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9Db2xsZWN0aW9uVHJhdmVyc2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Nv
bGxlY3Rpb25UcmF2ZXJzYWwuaAppbmRleCA2NjgyOTMzOGQwYjFkMWIwY2FiNTExNzdmMDM4NzIw
YzE5MmY3MTk2Li4yYTg4ZjU3ZTFiZDY0YjE2ODE1ODMyYmYwYjA2ZThjNGNhZDA2YWM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UcmF2ZXJzYWwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UcmF2ZXJzYWwuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw4ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbGxlY3Rpb25UeXBlLmgiCi0jaW5jbHVkZSAiRWxl
bWVudENoaWxkSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
LmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMzYsNzYgKzM1LDY0IEBAIHN0cnVjdCBDb2xsZWN0aW9uVHJhdmVyc2FsIHsgfTsKIAog
dGVtcGxhdGUgPD4KIHN0cnVjdCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJz
YWxUeXBlOjpEZXNjZW5kYW50cz4gewotICAgIHVzaW5nIEl0ZXJhdG9yID0gRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjsKLQotICAgIHN0YXRpYyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGVu
ZChDb250YWluZXJOb2RlJikgeyByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcigpOyB9
CisgICAgdXNpbmcgSXRlcmF0b3IgPSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnQ+
OwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBD
b250YWluZXJOb2RlJiByb290Tm9kZSk7CisgICAgc3RhdGljIEl0ZXJhdG9yIGJlZ2luKGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKIAogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IgbGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiBy
b290Tm9kZSk7CisgICAgc3RhdGljIEl0ZXJhdG9yIGxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNz
JiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENv
bGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29s
bGVjdGlvbkNsYXNzJiwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWdu
ZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCk7CisgICAgc3RhdGljIHZvaWQgdHJh
dmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEl0ZXJhdG9yJiBjdXJyZW50LCB1
bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KTsKIAogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIHZvaWQgdHJhdmVyc2VCYWNr
d2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBj
dXJyZW50LCB1bnNpZ25lZCBjb3VudCk7CisgICAgc3RhdGljIHZvaWQgdHJhdmVyc2VCYWNrd2Fy
ZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291
bnQpOwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6YmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBj
b2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK2lubGluZSBhdXRvIENvbGxlY3Rp
b25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6YmVnaW4o
Y29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9k
ZSkgLT4gSXRlcmF0b3IKIHsKLSAgICBhdXRvIGRlc2NlbmRhbnRzID0gZWxlbWVudERlc2NlbmRh
bnRzKHJvb3ROb2RlKTsKLSAgICBhdXRvIGVuZCA9IGRlc2NlbmRhbnRzLmVuZCgpOwotICAgIGZv
ciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBpZiAoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqaXQpKSB7Ci0gICAgICAgICAgICAv
LyBEcm9wIGl0ZXJhdG9yIGFzc2VydGlvbnMgYmVjYXVzZSBIVE1MQ29sbGVjdGlvbnMgLyBOb2Rl
TGlzdCB1c2UgYSBmaW5lLWdyYWluZWQgaW52YWxpZGF0aW9uIHNjaGVtZS4KLSAgICAgICAgICAg
IGl0LmRyb3BBc3NlcnRpb25zKCk7Ci0gICAgICAgICAgICByZXR1cm4gaXQ7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgcmV0dXJuIGVuZDsKKyAgICBhdXRvIGl0ID0gZGVzY2VuZGFudHNPZlR5cGU8
RWxlbWVudD4ocm9vdE5vZGUpLmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICYmICFjb2xsZWN0aW9u
LmVsZW1lbnRNYXRjaGVzKCppdCkpCisgICAgICAgICsraXQ7CisgICAgLy8gRHJvcCBpdGVyYXRv
ciBhc3NlcnRpb25zIGJlY2F1c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmlu
ZS1ncmFpbmVkIGludmFsaWRhdGlvbiBzY2hlbWUuCisgICAgaXQuZHJvcEFzc2VydGlvbnMoKTsK
KyAgICByZXR1cm4gaXQ7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+
Ci1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDb2xsZWN0aW9uVHJhdmVyc2FsPENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46Omxhc3QoY29uc3QgQ29sbGVjdGlv
bkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK2lubGluZSBhdXRv
IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRz
Pjo6bGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlKSAtPiBJdGVyYXRvcgogewotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBlbGVtZW50
RGVzY2VuZGFudHMocm9vdE5vZGUpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgaW52
YWxpZDsKLSAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5sYXN0KCk7IGl0ICE9IGludmFs
aWQ7IC0taXQpIHsKLSAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkg
ewotICAgICAgICAgICAgLy8gRHJvcCBpdGVyYXRvciBhc3NlcnRpb25zIGJlY2F1c2UgSFRNTENv
bGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1ncmFpbmVkIGludmFsaWRhdGlvbiBzY2hl
bWUuCi0gICAgICAgICAgICBpdC5kcm9wQXNzZXJ0aW9ucygpOwotICAgICAgICAgICAgcmV0dXJu
IGl0OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBpbnZhbGlkOworICAgIEl0ZXJhdG9y
IGl0IHsgcm9vdE5vZGUsIEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RXaXRoaW4ocm9vdE5vZGUpIH07
CisgICAgd2hpbGUgKGl0ICYmICFjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCppdCkpCisgICAg
ICAgIC0taXQ7CisgICAgLy8gRHJvcCBpdGVyYXRvciBhc3NlcnRpb25zIGJlY2F1c2UgSFRNTENv
bGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1ncmFpbmVkIGludmFsaWRhdGlvbiBzY2hl
bWUuCisgICAgaXQuZHJvcEFzc2VydGlvbnMoKTsKKyAgICByZXR1cm4gaXQ7CiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci1pbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJh
dmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNlRm9y
d2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291
bnQpCitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxU
eXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3Mm
IGNvbGxlY3Rpb24sIEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQm
IHRyYXZlcnNlZENvdW50KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVz
KCpjdXJyZW50KSk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBpbnZhbGlkOwogICAg
IGZvciAodHJhdmVyc2VkQ291bnQgPSAwOyB0cmF2ZXJzZWRDb3VudCA8IGNvdW50OyArK3RyYXZl
cnNlZENvdW50KSB7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgICsrY3VycmVudDsKLSAgICAg
ICAgICAgIGlmIChjdXJyZW50ID09IGludmFsaWQpCisgICAgICAgICAgICBpZiAoIWN1cnJlbnQp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IHdoaWxlICghY29sbGVjdGlvbi5l
bGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwogICAgIH0KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVj
dGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VCYWNrd2FyZChjb25zdCBD
b2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1
cnJlbnQsIHVuc2lnbmVkIGNvdW50KQoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxD
b2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNv
bnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2ln
bmVkIGNvdW50KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJy
ZW50KSk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBpbnZhbGlkOwogICAgIGZvciAo
OyBjb3VudDsgLS1jb3VudCkgewogICAgICAgICBkbyB7CiAgICAgICAgICAgICAtLWN1cnJlbnQ7
Ci0gICAgICAgICAgICBpZiAoY3VycmVudCA9PSBpbnZhbGlkKQorICAgICAgICAgICAgaWYgKCFj
dXJyZW50KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSB3aGlsZSAoIWNvbGxl
Y3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKICAgICB9CkBAIC0xMTUsNzUgKzEwMiw2
MiBAQCB0ZW1wbGF0ZSA8Pgogc3RydWN0IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT4gewogICAgIHVzaW5nIEl0ZXJhdG9yID0gRWxlbWVu
dENoaWxkSXRlcmF0b3I8RWxlbWVudD47CiAKLSAgICBzdGF0aWMgRWxlbWVudENoaWxkSXRlcmF0
b3I8RWxlbWVudD4gZW5kKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSB7IHJldHVybiBFbGVtZW50
Q2hpbGRJdGVyYXRvcjxFbGVtZW50Pihyb290Tm9kZSk7IH0KLQogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVs
ZW1lbnQ+IGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlKTsKKyAgICBzdGF0aWMgSXRlcmF0b3IgYmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwg
Q29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxl
Y3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gbGFz
dChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CisgICAg
c3RhdGljIEl0ZXJhdG9yIGxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9k
ZSYgcm9vdE5vZGUpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4K
LSAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwg
RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1
bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpOworICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlRm9yd2Fy
ZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291
bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q29sbGVjdGlvbkNsYXNzPgotICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlQmFja3dhcmQoY29uc3Qg
Q29sbGVjdGlvbkNsYXNzJiwgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQs
IHVuc2lnbmVkIGNvdW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYsIEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCk7CiB9
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5lIEVsZW1lbnRD
aGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZl
cnNhbFR5cGU6OkNoaWxkcmVuT25seT46OmJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29s
bGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpCitpbmxpbmUgYXV0byBDb2xsZWN0aW9u
VHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+OjpiZWdpbihj
b25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2Rl
KSAtPiBJdGVyYXRvcgogewotICAgIGF1dG8gY2hpbGRyZW4gPSBjaGlsZHJlbk9mVHlwZTxFbGVt
ZW50Pihyb290Tm9kZSk7Ci0gICAgYXV0byBlbmQgPSBjaGlsZHJlbi5lbmQoKTsKLSAgICBmb3Ig
KGF1dG8gaXQgPSBjaGlsZHJlbi5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAg
aWYgKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkgewotICAgICAgICAgICAgLy8gRHJv
cCBpdGVyYXRvciBhc3NlcnRpb25zIGJlY2F1c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3Qg
dXNlIGEgZmluZS1ncmFpbmVkIGludmFsaWRhdGlvbiBzY2hlbWUuCi0gICAgICAgICAgICBpdC5k
cm9wQXNzZXJ0aW9ucygpOwotICAgICAgICAgICAgcmV0dXJuIGl0OwotICAgICAgICB9Ci0gICAg
fQotICAgIHJldHVybiBlbmQ7CisgICAgYXV0byBpdCA9IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+
KHJvb3ROb2RlKS5iZWdpbigpOworICAgIHdoaWxlIChpdCAmJiAhY29sbGVjdGlvbi5lbGVtZW50
TWF0Y2hlcygqaXQpKQorICAgICAgICArK2l0OworICAgIC8vIERyb3AgaXRlcmF0b3IgYXNzZXJ0
aW9ucyBiZWNhdXNlIEhUTUxDb2xsZWN0aW9ucyAvIE5vZGVMaXN0IHVzZSBhIGZpbmUtZ3JhaW5l
ZCBpbnZhbGlkYXRpb24gc2NoZW1lLgorICAgIGl0LmRyb3BBc3NlcnRpb25zKCk7CisgICAgcmV0
dXJuIGl0OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5l
IEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVj
dGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46Omxhc3QoY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK2lubGluZSBhdXRvIENv
bGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46
Omxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiBy
b290Tm9kZSkgLT4gSXRlcmF0b3IKIHsKLSAgICBhdXRvIGNoaWxkcmVuID0gY2hpbGRyZW5PZlR5
cGU8RWxlbWVudD4ocm9vdE5vZGUpOwotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+
IGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKLSAgICBFbGVtZW50Q2hpbGRJdGVyYXRv
cjxFbGVtZW50PiBsYXN0KHJvb3ROb2RlLCBjaGlsZHJlbi5sYXN0KCkpOwotICAgIGZvciAoYXV0
byBpdCA9IGxhc3Q7IGl0ICE9IGludmFsaWQ7IC0taXQpIHsKLSAgICAgICAgaWYgKGNvbGxlY3Rp
b24uZWxlbWVudE1hdGNoZXMoKml0KSkgewotICAgICAgICAgICAgLy8gRHJvcCBpdGVyYXRvciBh
c3NlcnRpb25zIGJlY2F1c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1n
cmFpbmVkIGludmFsaWRhdGlvbiBzY2hlbWUuCi0gICAgICAgICAgICBpdC5kcm9wQXNzZXJ0aW9u
cygpOwotICAgICAgICAgICAgcmV0dXJuIGl0OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVy
biBpbnZhbGlkOworICAgIGF1dG8gaXQgPSBjaGlsZHJlbk9mVHlwZTxFbGVtZW50Pihyb290Tm9k
ZSkuYmVnaW4oKTsKKyAgICB3aGlsZSAoaXQgJiYgIWNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMo
Kml0KSkKKyAgICAgICAgLS1pdDsKKyAgICAvLyBEcm9wIGl0ZXJhdG9yIGFzc2VydGlvbnMgYmVj
YXVzZSBIVE1MQ29sbGVjdGlvbnMgLyBOb2RlTGlzdCB1c2UgYSBmaW5lLWdyYWluZWQgaW52YWxp
ZGF0aW9uIHNjaGVtZS4KKyAgICBpdC5kcm9wQXNzZXJ0aW9ucygpOworICAgIHJldHVybiBpdDsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSB2b2lkIENv
bGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46
OnRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWdu
ZWQmIHRyYXZlcnNlZENvdW50KQoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xs
ZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVk
IGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpCiB7CiAgICAgQVNTRVJUKGNvbGxlY3Rp
b24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxF
bGVtZW50PiBpbnZhbGlkKGNvbGxlY3Rpb24ucm9vdE5vZGUoKSk7CiAgICAgZm9yICh0cmF2ZXJz
ZWRDb3VudCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsK
ICAgICAgICAgZG8gewogICAgICAgICAgICAgKytjdXJyZW50OwotICAgICAgICAgICAgaWYgKGN1
cnJlbnQgPT0gaW52YWxpZCkKKyAgICAgICAgICAgIGlmICghY3VycmVudCkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0gd2hpbGUgKCFjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVz
KCpjdXJyZW50KSk7CiAgICAgfQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNs
YXNzPgotaW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2Fs
VHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6dHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xh
c3MmIGNvbGxlY3Rpb24sIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1
bnNpZ25lZCBjb3VudCkKK2lubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlv
blRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46OnRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29s
bGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291
bnQpCiB7CiAgICAgQVNTRVJUKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsK
LSAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBpbnZhbGlkKGNvbGxlY3Rpb24ucm9v
dE5vZGUoKSk7CiAgICAgZm9yICg7IGNvdW50OyAtLWNvdW50KSB7CiAgICAgICAgIGRvIHsKICAg
ICAgICAgICAgIC0tY3VycmVudDsKLSAgICAgICAgICAgIGlmIChjdXJyZW50ID09IGludmFsaWQp
CisgICAgICAgICAgICBpZiAoIWN1cnJlbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9IHdoaWxlICghY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwogICAg
IH0KQEAgLTE5Myw3ICsxNjcsNyBAQCB0ZW1wbGF0ZSA8Pgogc3RydWN0IENvbGxlY3Rpb25UcmF2
ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5PiB7CiAgICAg
dXNpbmcgSXRlcmF0b3IgPSBFbGVtZW50KjsKIAotICAgIHN0YXRpYyBFbGVtZW50KiBlbmQoQ29u
dGFpbmVyTm9kZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEVs
ZW1lbnQqIGVuZChDb250YWluZXJOb2RlJikgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KICAgICBzdGF0aWMgRWxlbWVudCogYmVn
aW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCBiOTQ5YTY5MWY2MGZkYzk5YzJkN2Y2N2ZkZjhi
Nzc1Mzg1OGUzOTI4Li43ZmYzMmU1OTk3ZTcwNmQ1NzliOTliMGMzZjI3ZmQ1ZWZiYmQyMmI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM4LDcgKzM4LDYg
QEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiSFRNTERhdGFMaXN0RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxEaXZFbGVtZW50LmgiCkBAIC0yODcsMTMgKzI4Niw5IEBAIFZlY3RvcjxDb2xvcj4g
Q29sb3JJbnB1dFR5cGU6OnN1Z2dlc3RlZENvbG9ycygpIGNvbnN0CiAjaWYgRU5BQkxFKERBVEFM
SVNUX0VMRU1FTlQpCiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgaWYgKGF1dG8gZGF0YUxp
c3QgPSBlbGVtZW50KCktPmRhdGFMaXN0KCkpIHsKLSAgICAgICAgUmVmPEhUTUxDb2xsZWN0aW9u
PiBvcHRpb25zID0gZGF0YUxpc3QtPm9wdGlvbnMoKTsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gb3B0aW9ucy0+bGVuZ3RoKCk7Ci0gICAgICAgIHN1Z2dlc3Rpb25zLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkobGVuZ3RoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBsZW5n
dGg7ICsraSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGRvd25jYXN0PEhUTUxPcHRpb25F
bGVtZW50Pigqb3B0aW9ucy0+aXRlbShpKSkudmFsdWUoKTsKLSAgICAgICAgICAgIGlmIChpc1Zh
bGlkU2ltcGxlQ29sb3IodmFsdWUpKQotICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zLnVuY2hl
Y2tlZEFwcGVuZChDb2xvcih2YWx1ZSkpOworICAgICAgICBmb3IgKGF1dG8mIG9wdGlvbiA6IGRh
dGFMaXN0LT5zdWdnZXN0aW9ucygpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBjb2xvciA9IHBh
cnNlU2ltcGxlQ29sb3JWYWx1ZShvcHRpb24udmFsdWUoKSkpCisgICAgICAgICAgICAgICAgc3Vn
Z2VzdGlvbnMudW5jaGVja2VkQXBwZW5kKCpjb2xvcik7CiAgICAgICAgIH0KICAgICB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xs
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0
aW9uLmNwcAppbmRleCAzODM4ZjFiZDdlNGU2N2Y1NTcwNWUxMDBiM2Q2OTczZDAzODkzZTUwLi45
Y2IzYTY3MDIzNzJjZDRiZDJiZmQ5ZWUzYmE4OWZiY2E3YzhmZmFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKIAogI2luY2x1
ZGUgIkhUTUxBcHBsZXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTERhdGFMaXN0RWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgpAQCAtNjQsMTIgKzY1LDcgQEAgYm9v
bCBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248dHJhdmVyc2FsVHlwZT46OmVsZW1lbnRNYXRj
aGVzKEVsZW1lbnQmIGVsZW1lbnQKICAgICBjYXNlIFNlbGVjdGVkT3B0aW9uczoKICAgICAgICAg
cmV0dXJuIGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT3B0
aW9uRWxlbWVudD4oZWxlbWVudCkuc2VsZWN0ZWQoKTsKICAgICBjYXNlIERhdGFMaXN0T3B0aW9u
czoKLSAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSkgewotICAgICAg
ICAgICAgSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbiA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVt
ZW50PihlbGVtZW50KTsKLSAgICAgICAgICAgIGlmICghb3B0aW9uLmlzRGlzYWJsZWRGb3JtQ29u
dHJvbCgpICYmICFvcHRpb24udmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpOwogICAgIGNhc2UgTWFwQXJlYXM6CiAg
ICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoYXJlYVRhZyk7CiAgICAgY2FzZSBEb2NB
cHBsZXRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xs
ZWN0aW9uLmgKaW5kZXggZDM2ZmYyMzE0ZWY5ZTIzNDg2MDI4NThlMjJlMzY4YmUwNzM4NGJkNy4u
ZTVjMDE0ZGYxODkyYzk2NThlN2I2NDA1YWUzZjkyYjNhYjczNmI1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oCkBAIC00Myw3ICs0
Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rp
b24oQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUpCi0g
ICAgICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9u
PHRyYXZlcnNhbFR5cGU+LCB0cmF2ZXJzYWxUeXBlPihiYXNlLCBjb2xsZWN0aW9uVHlwZSkKKyAg
ICAgICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbihiYXNlLCBjb2xsZWN0aW9uVHlwZSkKICAgICB7
IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaAppbmRleCAxMzU4
NDE2ZmUzODkyYTk5ODg1YTZmOWY0MDQ5Y2RlMWQ5ZDM3ZDBiLi5mNmVkMzM3YzViN2FiMTI1ZWRj
NDc4ODlhZTM5ZjEzY2M1MzRmNjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBbGxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVj
dGlvbi5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBIVE1MQWxs
TmFtZWRTdWJDb2xsZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlw
ZSwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKLSAgICAgICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlv
bjxIVE1MQWxsTmFtZWRTdWJDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVz
Y2VuZGFudHM+KGRvY3VtZW50LCB0eXBlKQorICAgICAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9u
KGRvY3VtZW50LCB0eXBlKQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgIHsKICAgICAgICAg
QVNTRVJUKHR5cGUgPT0gRG9jdW1lbnRBbGxOYW1lZEl0ZW1zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQWxsQ29sbGVjdGlvbi5pZGwKaW5kZXggOGZjYjY4YzY4MDAwODM3MjNhNTg1OGYwY2U2
ZGJhYWI0NzUzOWMzYy4uZTViMTE5MmU0OTI4ODcxM2YzMzIxYmNhMGE3YzI4YTY3ODFhYWE5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5pZGwKQEAgLTMxLDYgKzMx
LDYgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAKICAg
ICBnZXR0ZXIgRWxlbWVudD8gKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtJbXBsZW1lbnRl
ZEFzPW5hbWVkSXRlbU9ySXRlbXNdIGdldHRlciAoSFRNTENvbGxlY3Rpb24gb3IgRWxlbWVudCk/
IG5hbWVkSXRlbShET01TdHJpbmcgbmFtZSk7Ci0gICAgW0ltcGxlbWVudGVkQXM9bmFtZWRPcklu
ZGV4ZWRJdGVtT3JJdGVtc10gbGVnYWN5Y2FsbGVyIChIVE1MQ29sbGVjdGlvbiBvciBFbGVtZW50
KT8gaXRlbShvcHRpb25hbCBET01TdHJpbmcgbmFtZU9ySW5kZXgpOworICAgIFtJbXBsZW1lbnRl
ZEFzPW5hbWVkSXRlbU9ySXRlbXNdIGdldHRlciAoSFRNTENvbGxlY3Rpb24gb3IgRWxlbWVudCk/
IG5hbWVkSXRlbShbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIERPTVN0cmluZyBuYW1lKTsK
KyAgICBbSW1wbGVtZW50ZWRBcz1uYW1lZE9ySW5kZXhlZEl0ZW1Pckl0ZW1zXSBsZWdhY3ljYWxs
ZXIgKEhUTUxDb2xsZWN0aW9uIG9yIEVsZW1lbnQpPyBpdGVtKG9wdGlvbmFsIFtBdG9tU3RyaW5n
XSBET01TdHJpbmcgbmFtZU9ySW5kZXgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENvbGxlY3Rpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVj
dGlvbi5pZGwKaW5kZXggNmRmYWU4YmQ4OTRhY2RjMmQyNjA1NTY2MjZiNGM3M2JkYjFjOWE1Yi4u
YzQ1MmQ4OWVjOWJiMGUwN2ViM2U0MjMxMjNiZjMyMTcyMDk1NjQwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ29sbGVjdGlvbi5pZGwKQEAgLTI3LDUgKzI3LDUgQEAKIF0gaW50ZXJmYWNlIEhU
TUxDb2xsZWN0aW9uIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5n
dGg7CiAgICAgZ2V0dGVyIEVsZW1lbnQ/IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAg
Z2V0dGVyIEVsZW1lbnQ/IG5hbWVkSXRlbShET01TdHJpbmcgbmFtZSk7CisgICAgZ2V0dGVyIEVs
ZW1lbnQ/IG5hbWVkSXRlbShbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIERPTVN0cmluZyBu
YW1lKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcApp
bmRleCBiZWM4N2IzNmQzODE0MGUyYzJjZWMxMmQ0YTBiZGJmMzg1NDg4YTE5Li44MjZjMmM1NDkz
NTJlNTU3YTViYjg5NTRmNzZhNjFmMDUyZjk3NTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERhdGFMaXN0RWxlbWVudC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzcsNiArMzcsNyBAQAogCiAjaW5jbHVkZSAiR2Vu
ZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5j
bHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJJZFRhcmdldE9ic2VydmVyUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFs
bG9jSW5saW5lcy5oPgpAQCAtNjUsNiArNjYsMTEgQEAgdm9pZCBIVE1MRGF0YUxpc3RFbGVtZW50
OjpvcHRpb25FbGVtZW50Q2hpbGRyZW5DaGFuZ2VkKCkKICAgICB0cmVlU2NvcGUoKS5pZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkoKS5ub3RpZnlPYnNlcnZlcnMoZ2V0SWRBdHRyaWJ1dGUoKSk7CiB9
CiAKK2Jvb2wgSFRNTERhdGFMaXN0RWxlbWVudDo6aXNTdWdnZXN0aW9uKGNvbnN0IEhUTUxPcHRp
b25FbGVtZW50JiBkZXNjZW5kYW50KQoreworICAgIHJldHVybiAhZGVzY2VuZGFudC5pc0Rpc2Fi
bGVkRm9ybUNvbnRyb2woKSAmJiAhZGVzY2VuZGFudC52YWx1ZSgpLmlzRW1wdHkoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKERBVEFMSVNUX0VMRU1F
TlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5oCmluZGV4IDhmNzFm
YTVjOTExYzliNTBiMmI4MTBkODU3ZjdhYzNjZjJjY2VjMDEuLjdjZjU3MWUyOWE2NzBjZGYwY2Q2
ZGU1NTM3NTNiN2VhOTUyZDg2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERhdGFMaXN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0
RWxlbWVudC5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoYykgMjAwOSwgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCkBAIC0zMywxMSArMzMsMTMgQEAKIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVN
RU5UKQogCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJFbGVtZW50SXRl
cmF0b3IuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIEhUTUxDb2xsZWN0aW9uOworCiBjbGFzcyBIVE1MRGF0YUxpc3RFbGVtZW50IGZp
bmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEhU
TUxEYXRhTGlzdEVsZW1lbnQpOwogcHVibGljOgpAQCAtNDcsNiArNDksOSBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIG9wdGlvbkVsZW1lbnRDaGlsZHJlbkNoYW5nZWQoKTsKIAorICAgIHN0YXRpYyBi
b29sIGlzU3VnZ2VzdGlvbihjb25zdCBIVE1MT3B0aW9uRWxlbWVudCYgZGVzY2VuZGFudCk7Cisg
ICAgYXV0byBzdWdnZXN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIGRlc2NlbmRhbnRzT2ZUeXBlPEhU
TUxPcHRpb25FbGVtZW50LCBpc1N1Z2dlc3Rpb24+KCp0aGlzKTsgfQorCiBwcml2YXRlOgogICAg
IEhUTUxEYXRhTGlzdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA2OGNmNTUzYWI0OTBhZTRkZjA3
YzdkZmI2MmI3ZGRkMDY2OTA2MGVhLi4zMmVkNGFkMzFiZDMwZWNmNGNjYzQ4ZmIxNDI0NGEzMjMy
NGUwNGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMSw3ICsxLDcgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAq
ICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAq
IENvcHlyaWdodCAoQykgMjAwNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogICogQ29weXJpZ2h0IChDKSAy
MDExIE1vdG9yb2xhIE1vYmlsaXR5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQ0LDcg
KzQ0LDYgQEAKICNpbmNsdWRlICJIVE1MQkRJRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxCUkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQnV0dG9uRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxD
b2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVs
ZW1lbnRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgpAQCAtNjAs
NiArNTksNyBAQAogI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSZW5kZXJF
bGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNjcmlw
dERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJT
aW11bGF0ZWRDbGljay5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgpAQCAtNzY3LDE0
ICs3NjcsMTYgQEAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBIVE1MRWxlbWVudDo6YXNGb3JtQXNz
b2NpYXRlZEVsZW1lbnQoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgaW5saW5l
IGJvb2wgZWxlbWVudEFmZmVjdHNEaXJlY3Rpb25hbGl0eShjb25zdCBOb2RlJiBub2RlKQorc3Rh
dGljIGJvb2wgZWxlbWVudEFmZmVjdHNEaXJlY3Rpb25hbGl0eShjb25zdCBIVE1MRWxlbWVudCYg
ZWxlbWVudCkKIHsKLSAgICBpZiAoIWlzPEhUTUxFbGVtZW50Pihub2RlKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8SFRN
TEVsZW1lbnQ+KG5vZGUpOwogICAgIHJldHVybiBpczxIVE1MQkRJRWxlbWVudD4oZWxlbWVudCkg
fHwgZWxlbWVudC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRpckF0dHIpOwog
fQogCitzdGF0aWMgYm9vbCBlbGVtZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5KGNvbnN0IE5vZGUm
IG5vZGUpCit7CisgICAgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2RlKSAmJiBlbGVtZW50QWZm
ZWN0c0RpcmVjdGlvbmFsaXR5KGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKSk7Cit9CisKIHN0
YXRpYyB2b2lkIHNldEhhc0RpckF1dG9GbGFnUmVjdXJzaXZlbHkoTm9kZSogZmlyc3ROb2RlLCBi
b29sIGZsYWcsIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cikKIHsKICAgICBmaXJzdE5vZGUtPnNl
dFNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0ZShmbGFnKTsKQEAgLTg4NSwxMCArODg3
LDEwIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRl
ckNoaWxkQXR0cmlidXRlQ2hhbmdlZChFbGVtZW50CiAgICAgc2V0SGFzRGlyQXV0b0ZsYWdSZWN1
cnNpdmVseShjaGlsZCwgZmFsc2UpOwogICAgIGlmICghcmVuZGVyZXIoKSB8fCByZW5kZXJlcigp
LT5zdHlsZSgpLmRpcmVjdGlvbigpID09IHRleHREaXJlY3Rpb24pCiAgICAgICAgIHJldHVybjsK
LSAgICBmb3IgKGF1dG8mIGVsZW1lbnRUb0FkanVzdCA6IGVsZW1lbnRMaW5lYWdlKHRoaXMpKSB7
Ci0gICAgICAgIGlmIChlbGVtZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5KGVsZW1lbnRUb0FkanVz
dCkpIHsKLSAgICAgICAgICAgIGVsZW1lbnRUb0FkanVzdC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0
cmVlKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbGlu
ZWFnZU9mVHlwZTxIVE1MRWxlbWVudD4oKnRoaXMpKSB7CisgICAgICAgIGlmIChlbGVtZW50QWZm
ZWN0c0RpcmVjdGlvbmFsaXR5KGVsZW1lbnQpKSB7CisgICAgICAgICAgICBlbGVtZW50LmludmFs
aWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCmluZGV4IDM5NWRiMWU2MmVlZGQxZDkw
MGU5ZTdjM2VjODg4Y2IwMGNiMmE0YTMuLjdlMDc0ZWI2MTI4OTc2Mjg5MGUxMWU4MWFmY2Q2YTA5
M2U3ZmRkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTIyLDE5ICsyMiwxNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIklucHV0TW9kZS5oIgorI2luY2x1ZGUgIlN0
eWxlZEVsZW1lbnQuaCIKKwogI2lmIEVOQUJMRShBVVRPQ0FQSVRBTElaRSkKICNpbmNsdWRlICJB
dXRvY2FwaXRhbGl6ZS5oIgogI2VuZGlmCiAKLSNpbmNsdWRlICJJbnB1dE1vZGUuaCIKLSNpbmNs
dWRlICJTdHlsZWRFbGVtZW50LmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRG9j
dW1lbnRGcmFnbWVudDsKIGNsYXNzIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDsKIGNsYXNzIEZvcm1O
YW1lZEl0ZW07Ci1jbGFzcyBIVE1MQ29sbGVjdGlvbjsKIGNsYXNzIEhUTUxGb3JtRWxlbWVudDsK
IAogZW51bSBjbGFzcyBFbnRlcktleUhpbnQgOiB1aW50OF90OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVtYmVkRWxlbWVudC5jcHAKaW5kZXggOGNkZjkwMzA5ZjcwYjRkZjI3NTQ4NTliY2YzNDUy
NGUwMjE1YzlhZi4uM2JiY2UwODc3YWQwYTQ3NDM4Y2M0YmY3YjYwY2U3MjhlNThjZWMyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC0yLDcgKzIsNyBAQAog
ICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAg
ICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAg
ICAgICAgKEMpIDIwMDAgU3RlZmFuIFNjaGltYW5za2kgKDFTdGVpbkBnbXguZGUpCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTY2LDE1
ICs2NiwxMCBAQCBSZWY8SFRNTEVtYmVkRWxlbWVudD4gSFRNTEVtYmVkRWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50JiBkb2N1bWVudCkKIAogc3RhdGljIGlubGluZSBSZW5kZXJXaWRnZXQqIGZpbmRX
aWRnZXRSZW5kZXJlcihjb25zdCBOb2RlKiBub2RlKQogewotICAgIGlmICghbm9kZS0+cmVuZGVy
ZXIoKSkgewotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9k
ZSgpOwotICAgICAgICB9IHdoaWxlIChub2RlICYmICFpczxIVE1MT2JqZWN0RWxlbWVudD4oKm5v
ZGUpKTsKLSAgICB9Ci0KKyAgICBpZiAoIW5vZGUtPnJlbmRlcmVyKCkpCisgICAgICAgIG5vZGUg
PSBhbmNlc3RvcnNPZlR5cGU8SFRNTE9iamVjdEVsZW1lbnQ+KCpub2RlKS5maXJzdCgpOwogICAg
IGlmIChub2RlICYmIGlzPFJlbmRlcldpZGdldD4obm9kZS0+cmVuZGVyZXIoKSkpCiAgICAgICAg
IHJldHVybiBkb3duY2FzdDxSZW5kZXJXaWRnZXQ+KG5vZGUtPnJlbmRlcmVyKCkpOwotCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwCmluZGV4IGQ2MTFiYzFiMjI1MWZmOGYwODg0NGY2OGQ0MjRmYjlkYzk2
NjgyZjQuLmZkNzdkN2JhMDQzZTlhN2NkNzJmZjk2ZTg1NjhmYjllYzk4M2Y3YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMiw3ICsy
LDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQog
ICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQog
ICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICog
Q29weXJpZ2h0IChDKSAyMDA0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNv
bSkKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAi
SFRNTERhdGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50
LmgiCkBAIC00MTIsMTQgKzQxMywxMiBAQCBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6Om1h
dGNoZXNJbnZhbGlkUHNldWRvQ2xhc3MoKSBjb25zdAogYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50Ojpjb21wdXRlV2lsbFZhbGlkYXRlKCkgY29uc3QKIHsKICAgICBpZiAobV9kYXRhTGlzdEFu
Y2VzdG9yU3RhdGUgPT0gVW5rbm93bikgewotICAgICAgICBmb3IgKENvbnRhaW5lck5vZGUqIGFu
Y2VzdG9yID0gcGFyZW50Tm9kZSgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFy
ZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICBpZiAoYW5jZXN0b3ItPmhhc1RhZ05hbWUoZGF0YWxp
c3RUYWcpKSB7Ci0gICAgICAgICAgICAgICAgbV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUgPSBJbnNp
ZGVEYXRhTGlzdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICBpZiAobV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUgPT0gVW5rbm93bikKLSAg
ICAgICAgICAgIG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlID0gTm90SW5zaWRlRGF0YUxpc3Q7Cisj
aWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgICAgIG1fZGF0YUxpc3RBbmNlc3RvclN0
YXRlID0gYW5jZXN0b3JzT2ZUeXBlPEhUTUxEYXRhTGlzdEVsZW1lbnQ+KCp0aGlzKS5maXJzdCgp
CisgICAgICAgICAgICA/IEluc2lkZURhdGFMaXN0IDogTm90SW5zaWRlRGF0YUxpc3Q7CisjZWxz
ZQorICAgICAgICBtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9IE5vdEluc2lkZURhdGFMaXN0Owor
I2VuZGlmCiAgICAgfQogICAgIHJldHVybiBtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9PSBOb3RJ
bnNpZGVEYXRhTGlzdCAmJiAhaXNEaXNhYmxlZE9yUmVhZE9ubHkoKTsKIH0KQEAgLTY0NSwxNSAr
NjQ0LDYgQEAgQXV0b2NhcGl0YWxpemVUeXBlIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF1dG9j
YXBpdGFsaXplVHlwZSgpIGNvbnN0CiAKICNlbmRpZgogCi1IVE1MRm9ybUNvbnRyb2xFbGVtZW50
KiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjplbmNsb3NpbmdGb3JtQ29udHJvbEVsZW1lbnQoTm9k
ZSogbm9kZSkKLXsKLSAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkg
ewotICAgICAgICBpZiAoaXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oKm5vZGUpKQotICAgICAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KG5vZGUpOwotICAg
IH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogU3RyaW5nIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OmF1dG9jb21wbGV0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGF1dG9maWxsRGF0YSgpLmlk
bEV4cG9zZWRWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmgKaW5kZXggNjEzNDBiZmE3M2EzYTk2NmJhNjM3YWQ0NGY1NmNiZDhmY2ZjOTZmMC4uM2Fk
YjMxMWM3YTYxZDc4ZDgwYjk5MGExNTY5ZTY4MWQwZjY1MzAwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTExNiw4ICsxMTYsNiBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNBdXRvZm9jdXNlZCgpIHsgcmV0dXJuIG1faGFzQXV0b2ZvY3VzZWQ7
IH0KICAgICB2b2lkIHNldEF1dG9mb2N1c2VkKCkgeyBtX2hhc0F1dG9mb2N1c2VkID0gdHJ1ZTsg
fQogCi0gICAgc3RhdGljIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGVuY2xvc2luZ0Zvcm1Db250
cm9sRWxlbWVudChOb2RlKik7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgYXV0b2NvbXBs
ZXRlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBdXRvY29tcGxldGUoY29u
c3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbi5jcHAKaW5kZXggYTJiMDBlOGY4MTZkYTFjMjIxYjFjMzY2ZWE2ZTY4OWMz
YjFjNjhiOS4uODRhMWNiNzllMzYwMTQzZWMzZDQ4MjljNjU3NTc4YzgyODM3ZDBlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAK
QEAgLTQwLDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbik7CiAKIEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbihDb250YWluZXJO
b2RlJiBvd25lck5vZGUpCi0gICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8Rm9ybUNvbnRyb2xzPjo6dHJhdmVy
c2FsVHlwZT4ob3duZXJOb2RlLCBGb3JtQ29udHJvbHMpCisgICAgOiBDYWNoZWRIVE1MQ29sbGVj
dGlvbihvd25lck5vZGUsIEZvcm1Db250cm9scykKICAgICAsIG1fY2FjaGVkRWxlbWVudChudWxs
cHRyKQogICAgICwgbV9jYWNoZWRFbGVtZW50T2Zmc2V0SW5BcnJheSgwKQogewpAQCAtMTExLDcg
KzExMSw3IEBAIEhUTUxFbGVtZW50KiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Y3VzdG9t
RWxlbWVudEFmdGVyKEVsZW1lbnQqIGN1cnJlbnQpIGNvCiAKIEhUTUxGb3JtRWxlbWVudCYgSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om93bmVyTm9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGRvd25jYXN0PEhUTUxGb3JtRWxlbWVudD4oQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPEZvcm1Db250cm9scz46OnRy
YXZlcnNhbFR5cGU+Ojpvd25lck5vZGUoKSk7CisgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxGb3Jt
RWxlbWVudD4oQ2FjaGVkSFRNTENvbGxlY3Rpb246Om93bmVyTm9kZSgpKTsKIH0KIAogdm9pZCBI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25z
dApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVw
ZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQog
ewotICAgIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLCBD
b2xsZWN0aW9uVHlwZVRyYWl0czxGb3JtQ29udHJvbHM+Ojp0cmF2ZXJzYWxUeXBlPjo6aW52YWxp
ZGF0ZUNhY2hlRm9yRG9jdW1lbnQoZG9jdW1lbnQpOworICAgIENhY2hlZEhUTUxDb2xsZWN0aW9u
OjppbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudChkb2N1bWVudCk7CiAgICAgbV9jYWNoZWRFbGVt
ZW50ID0gbnVsbHB0cjsKICAgICBtX2NhY2hlZEVsZW1lbnRPZmZzZXRJbkFycmF5ID0gMDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaApp
bmRleCA3NzRlNTRmNTY1Y2EwMTQ5ZDRiYzYxODllNmRmM2U2MGQwNzkzYjMxLi45MDI3MzBlZjUz
NjZmNTkxYzQ4YjZlNTkzMDMxY2MxNmM3OTdkZjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZh
dGU6CiAKIGlubGluZSBIVE1MRWxlbWVudCogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Oml0
ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdAogewotICAgIHJldHVybiBkb3duY2FzdDxIVE1MRWxl
bWVudD4oQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24sIENv
bGxlY3Rpb25UeXBlVHJhaXRzPEZvcm1Db250cm9scz46OnRyYXZlcnNhbFR5cGU+OjppdGVtKG9m
ZnNldCkpOworICAgIHJldHVybiBkb3duY2FzdDxIVE1MRWxlbWVudD4oQ2FjaGVkSFRNTENvbGxl
Y3Rpb246Oml0ZW0ob2Zmc2V0KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRs
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwKaW5k
ZXggNDNjODM1OTk4YjQwMDU5ZTMzMjdjZTZkNTllMGY4MmU2ZmRkMTgyMy4uNGQ4MWZmZDAzNDU3
NDc3Y2JhMjRkMmQzM2RiYjkzMWI0OGIzNWVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwKQEAgLTIyLDUgKzIyLDUgQEAKICAg
ICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxPd25lck5vZGVSb290LAogXSBpbnRlcmZhY2UgSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24gOiBIVE1MQ29sbGVjdGlvbiB7CiAgICAgZ2V0dGVyIEhU
TUxFbGVtZW50PyAodW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW0ltcGxlbWVudGVkQXM9bmFt
ZWRJdGVtT3JJdGVtc10gZ2V0dGVyIChSYWRpb05vZGVMaXN0IG9yIEVsZW1lbnQpPyBuYW1lZEl0
ZW0oRE9NU3RyaW5nIG5hbWUpOyAvLyBzaGFkb3dzIGluaGVyaXRlZCBuYW1lZEl0ZW0oKQorICAg
IFtJbXBsZW1lbnRlZEFzPW5hbWVkSXRlbU9ySXRlbXNdIGdldHRlciAoUmFkaW9Ob2RlTGlzdCBv
ciBFbGVtZW50KT8gbmFtZWRJdGVtKFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gRE9NU3Ry
aW5nIG5hbWUpOyAvLyBzaGFkb3dzIGluaGVyaXRlZCBuYW1lZEl0ZW0oKQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCBlN2U0MTRjODdkYzI0ODhjNTg2NmUz
NWYyYmVmZDM3MWJlYzliMTYwLi4yZDA5M2VmYzA3OWI4MmVlMTdmY2Y0ZGQwYzlmYWIzZjk3M2Jj
NzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC01MDksMTQg
KzUwOSwxMyBAQCB1bnNpZ25lZCBIVE1MRm9ybUVsZW1lbnQ6OmZvcm1FbGVtZW50SW5kZXgoRm9y
bUFzc29jaWF0ZWRFbGVtZW50KiBhc3NvY2lhdGVkRWxlbQogICAgIGlmICghYXNzb2NpYXRlZEhU
TUxFbGVtZW50LmlzRGVzY2VuZGFudE9mKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIGN1cnJlbnRB
c3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4OwogCisgICAgYXV0byBkZXNjZW5kYW50cyA9IGRl
c2NlbmRhbnRzT2ZUeXBlPEhUTUxFbGVtZW50PigqdGhpcyk7CisKICAgICAvLyBDaGVjayBmb3Ig
dGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGlzIGVsZW1lbnQgaXMgdGhlIHZlcnkgbGFzdCB0aGlu
ZyBpbgogICAgIC8vIHRoZSBmb3JtJ3MgdHJlZSBvZiBjaGlsZHJlbjsgd2UgZG9uJ3Qgd2FudCB0
byB3YWxrIHRoZSBlbnRpcmUgdHJlZSBpbiB0aGF0CiAgICAgLy8gY29tbW9uIGNhc2UgdGhhdCBv
Y2N1cnMgZHVyaW5nIHBhcnNpbmc7IGluc3RlYWQgd2UnbGwganVzdCByZXR1cm4gYSB2YWx1ZQog
ICAgIC8vIHRoYXQgc2F5cyAiYWRkIHRoaXMgZm9ybSBlbGVtZW50IHRvIHRoZSBlbmQgb2YgdGhl
IGFycmF5Ii4KLSAgICBhdXRvIGRlc2NlbmRhbnRzID0gZGVzY2VuZGFudHNPZlR5cGU8SFRNTEVs
ZW1lbnQ+KCp0aGlzKTsKLSAgICBhdXRvIGl0ID0gZGVzY2VuZGFudHMuYmVnaW5BdChhc3NvY2lh
dGVkSFRNTEVsZW1lbnQpOwotICAgIGF1dG8gZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7Ci0gICAg
aWYgKCsraXQgPT0gZW5kKQorICAgIGlmICghKytkZXNjZW5kYW50cy5iZWdpbkF0KGFzc29jaWF0
ZWRIVE1MRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBjdXJyZW50QXNzb2NpYXRlZEVsZW1lbnRz
QWZ0ZXJJbmRleDsKIAogICAgIHVuc2lnbmVkIGkgPSBtX2Fzc29jaWF0ZWRFbGVtZW50c0JlZm9y
ZUluZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKaW5k
ZXggODNhYzY4MGQ5MDQ4NzU3MTUwYjViNmViMzZiNjRkNzg4ZjBlYmM3MC4uZTZhZTZmNjhkODc5
ODVhZjlmZjU0ZWI1ZDY3NTMzYTViNWFiMWYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZVNldEVsZW1lbnQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkhUTUxC
b2R5RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRN
TEZyYW1lRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkxlbmd0
aC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKb2xkIG1vZGUgMTAw
NzU1Cm5ldyBtb2RlIDEwMDY0NApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKaW5kZXggZjU3M2NhMTQwNjg1Y2QyNjAyMDljZDYxOWM4YTk4MDQ5ZWNjNTE5NC4uNWQwOGU5
ZTQ5NDVlMmQ5M2NkYjhkY2EyMDVmYzAzMzFjYmVmZjhmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAx
OTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50
dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGly
ayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYg
QWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA3
IFNhbXVlbCBXZWluaWcgKHNhbUB3ZWJraXQub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0yMTA0LDYgKzIxMDQsNyBAQCBSZW5k
ZXJTdHlsZSBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUpCiB9CiAKICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBF
UykKKwogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzZXR1cERhdGVUaW1lQ2hvb3NlclBhcmFtZXRl
cnMoRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBpZiAoIWRv
Y3VtZW50KCkudmlldygpKQpAQCAtMjEzNiwyMCArMjEzNywyNCBAQCBib29sIEhUTUxJbnB1dEVs
ZW1lbnQ6OnNldHVwRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyhEYXRlVGltZUNob29zZXJQYXJh
bWV0ZXJzJgogICAgICAgICBwYXJhbWV0ZXJzLmFuY2hvclJlY3RJblJvb3RWaWV3ID0gSW50UmVj
dCgpOwogICAgIHBhcmFtZXRlcnMuY3VycmVudFZhbHVlID0gdmFsdWUoKTsKICAgICBwYXJhbWV0
ZXJzLmlzQW5jaG9yRWxlbWVudFJUTCA9IGNvbXB1dGVkU3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0g
VGV4dERpcmVjdGlvbjo6UlRMOworCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAg
aWYgKGF1dG8gZGF0YUxpc3QgPSB0aGlzLT5kYXRhTGlzdCgpKSB7Ci0gICAgICAgIFJlZjxIVE1M
Q29sbGVjdGlvbj4gb3B0aW9ucyA9IGRhdGFMaXN0LT5vcHRpb25zKCk7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IFJlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gb3B0aW9uID0gZG93bmNh
c3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KG9wdGlvbnMtPml0ZW0oaSkpOyArK2kpIHsKLSAgICAgICAg
ICAgIGlmICghaXNWYWxpZFZhbHVlKG9wdGlvbi0+dmFsdWUoKSkpCisgICAgICAgIGZvciAoYXV0
byYgb3B0aW9uIDogZGF0YUxpc3QtPnN1Z2dlc3Rpb25zKCkpIHsKKyAgICAgICAgICAgIGF1dG8g
bGFiZWwgPSBvcHRpb24ubGFiZWwoKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBvcHRpb24u
dmFsdWUoKTsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZFZhbHVlKHZhbHVlKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuc3VnZ2VzdGlvblZhbHVl
cy5hcHBlbmQoc2FuaXRpemVWYWx1ZShvcHRpb24tPnZhbHVlKCkpKTsKLSAgICAgICAgICAgIHBh
cmFtZXRlcnMubG9jYWxpemVkU3VnZ2VzdGlvblZhbHVlcy5hcHBlbmQobG9jYWxpemVWYWx1ZShv
cHRpb24tPnZhbHVlKCkpKTsKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuc3VnZ2VzdGlvbkxhYmVs
cy5hcHBlbmQob3B0aW9uLT52YWx1ZSgpID09IG9wdGlvbi0+bGFiZWwoKSA/IFN0cmluZygpIDog
b3B0aW9uLT5sYWJlbCgpKTsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuc3VnZ2VzdGlvblZhbHVl
cy5hcHBlbmQoc2FuaXRpemVWYWx1ZSh2YWx1ZSkpOworICAgICAgICAgICAgcGFyYW1ldGVycy5s
b2NhbGl6ZWRTdWdnZXN0aW9uVmFsdWVzLmFwcGVuZChsb2NhbGl6ZVZhbHVlKHZhbHVlKSk7Cisg
ICAgICAgICAgICBwYXJhbWV0ZXJzLnN1Z2dlc3Rpb25MYWJlbHMuYXBwZW5kKHZhbHVlID09IGxh
YmVsID8gU3RyaW5nKCkgOiBsYWJlbCk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKKwogICAg
IHJldHVybiB0cnVlOwogfQorCiAjZW5kaWYKIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpjYXBz
TG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKaW5kZXggOWFjOTczZmNjZDhhMjkxYjQ4ZmJhY2E5ZTBhZjIzMWY0YzAyMGYzMS4u
ZGY3NTBmMWY5YTQ2YjNlM2NkYmM3NTY0ODY4NDdjMzBhZDZmNzM3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00NjUwLDcgKzQ2NTAsNyBAQCBVUkwgSFRN
TE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBlKiBjb250ZW50
VHlwZSwgU3RyaW5nKiBrZQogICAgIC8vIGVhY2ggc3RpbGwgaXMgYSBjaGlsZCBvZiB0aGlzIG1l
ZGlhIGVsZW1lbnQgYmVmb3JlIHVzaW5nLgogICAgIFZlY3RvcjxSZWY8SFRNTFNvdXJjZUVsZW1l
bnQ+PiBwb3RlbnRpYWxTb3VyY2VOb2RlczsKICAgICBhdXRvIHNvdXJjZXMgPSBjaGlsZHJlbk9m
VHlwZTxIVE1MU291cmNlRWxlbWVudD4oKnRoaXMpOwotICAgIGZvciAoYXV0byBuZXh0ID0gbV9u
ZXh0Q2hpbGROb2RlVG9Db25zaWRlciA/IHNvdXJjZXMuYmVnaW5BdCgqbV9uZXh0Q2hpbGROb2Rl
VG9Db25zaWRlcikgOiBzb3VyY2VzLmJlZ2luKCksIGVuZCA9IHNvdXJjZXMuZW5kKCk7IG5leHQg
IT0gZW5kOyArK25leHQpCisgICAgZm9yIChhdXRvIG5leHQgPSBtX25leHRDaGlsZE5vZGVUb0Nv
bnNpZGVyID8gc291cmNlcy5iZWdpbkF0KCptX25leHRDaGlsZE5vZGVUb0NvbnNpZGVyKSA6IHNv
dXJjZXMuYmVnaW4oKTsgbmV4dDsgKytuZXh0KQogICAgICAgICBwb3RlbnRpYWxTb3VyY2VOb2Rl
cy5hcHBlbmQoKm5leHQpOwogCiAgICAgZm9yIChhdXRvJiBzb3VyY2UgOiBwb3RlbnRpYWxTb3Vy
Y2VOb2RlcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAK
aW5kZXggOWU4Y2ZmZGI5MWE1MTA5MDQyODQ1OWVmZmU4NjVhNDhlMDdmNDgwOC4uNjc2OGZlMTJh
MWU1ZTcyMjBjNTM2OTBmZTZmOTczNTdjYWU3Y2RiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChD
KSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkg
QW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEg
RGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIw
MDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTEw
OSwxNCArMTA5LDcgQEAgU3RyaW5nIEhUTUxPcHRHcm91cEVsZW1lbnQ6Omdyb3VwTGFiZWxUZXh0
KCkgY29uc3QKICAgICAKIEhUTUxTZWxlY3RFbGVtZW50KiBIVE1MT3B0R3JvdXBFbGVtZW50Ojpv
d25lclNlbGVjdEVsZW1lbnQoKSBjb25zdAogewotICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBz
ZWxlY3QgPSBwYXJlbnROb2RlKCk7Ci0gICAgd2hpbGUgKHNlbGVjdCAmJiAhaXM8SFRNTFNlbGVj
dEVsZW1lbnQ+KCpzZWxlY3QpKQotICAgICAgICBzZWxlY3QgPSBzZWxlY3QtPnBhcmVudE5vZGUo
KTsKLSAgICAKLSAgICBpZiAoIXNlbGVjdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
Ci0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50PihzZWxlY3QuZ2V0KCkpOwor
ICAgIHJldHVybiBjb25zdF9jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4oYW5jZXN0b3JzT2ZUeXBl
PEhUTUxTZWxlY3RFbGVtZW50PigqdGhpcykuZmlyc3QoKSk7CiB9CiAKIHZvaWQgSFRNTE9wdEdy
b3VwRWxlbWVudDo6YWNjZXNzS2V5QWN0aW9uKGJvb2wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbkVsZW1lbnQuY3BwCmluZGV4IGMzZGQzMGQ1ZGM2MmJmODMxNzA5ZTU3MDA0Njg4ZDRh
ODhiM2UyYTYuLjNjMDFlNjk1YWQxMDI2NzdhYWZmMDJkYjBmMjExZGI4OGY2OTI4NDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCkBAIC0zLDcgKzMsNyBAQAog
ICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQog
ICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQogICog
ICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKLSAq
IENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKQEAgLTE2Niw4ICsxNjYsOCBAQCB2b2lkIEhUTUxPcHRpb25FbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
U3RyaQogewogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIGlmIChuYW1lID09IHZh
bHVlQXR0cikgewotICAgICAgICBpZiAoUmVmUHRyPEhUTUxEYXRhTGlzdEVsZW1lbnQ+IGRhdGFM
aXN0ID0gb3duZXJEYXRhTGlzdEVsZW1lbnQoKSkKLSAgICAgICAgICAgIGRhdGFMaXN0LT5vcHRp
b25FbGVtZW50Q2hpbGRyZW5DaGFuZ2VkKCk7CisgICAgICAgIGZvciAoYXV0byYgZGF0YUxpc3Qg
OiBhbmNlc3RvcnNPZlR5cGU8SFRNTERhdGFMaXN0RWxlbWVudD4oKnRoaXMpKQorICAgICAgICAg
ICAgZGF0YUxpc3Qub3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOwogICAgIH0gZWxzZQog
I2VuZGlmCiAgICAgaWYgKG5hbWUgPT0gZGlzYWJsZWRBdHRyKSB7CkBAIC0yMzgsMzkgKzIzOCwx
NyBAQCB2b2lkIEhUTUxPcHRpb25FbGVtZW50OjpzZXRTZWxlY3RlZFN0YXRlKGJvb2wgc2VsZWN0
ZWQpCiB2b2lkIEhUTUxPcHRpb25FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRD
aGFuZ2UmIGNoYW5nZSkKIHsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICBpZiAo
UmVmUHRyPEhUTUxEYXRhTGlzdEVsZW1lbnQ+IGRhdGFMaXN0ID0gb3duZXJEYXRhTGlzdEVsZW1l
bnQoKSkKLSAgICAgICAgZGF0YUxpc3QtPm9wdGlvbkVsZW1lbnRDaGlsZHJlbkNoYW5nZWQoKTsK
LSAgICBlbHNlCisgICAgZm9yIChhdXRvJiBkYXRhTGlzdCA6IGFuY2VzdG9yc09mVHlwZTxIVE1M
RGF0YUxpc3RFbGVtZW50PigqdGhpcykpCisgICAgICAgIGRhdGFMaXN0Lm9wdGlvbkVsZW1lbnRD
aGlsZHJlbkNoYW5nZWQoKTsKICNlbmRpZgogICAgIGlmIChSZWZQdHI8SFRNTFNlbGVjdEVsZW1l
bnQ+IHNlbGVjdCA9IG93bmVyU2VsZWN0RWxlbWVudCgpKQogICAgICAgICBzZWxlY3QtPm9wdGlv
bkVsZW1lbnRDaGlsZHJlbkNoYW5nZWQoKTsKICAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNoYW5nZSk7CiB9CiAKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLUhUTUxEYXRh
TGlzdEVsZW1lbnQqIEhUTUxPcHRpb25FbGVtZW50Ojpvd25lckRhdGFMaXN0RWxlbWVudCgpIGNv
bnN0Ci17Ci0gICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IGRhdGFsaXN0ID0gcGFyZW50Tm9kZSgp
OwotICAgIHdoaWxlIChkYXRhbGlzdCAmJiAhaXM8SFRNTERhdGFMaXN0RWxlbWVudD4oKmRhdGFs
aXN0KSkKLSAgICAgICAgZGF0YWxpc3QgPSBkYXRhbGlzdC0+cGFyZW50Tm9kZSgpOwotCi0gICAg
aWYgKCFkYXRhbGlzdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZG93
bmNhc3Q8SFRNTERhdGFMaXN0RWxlbWVudD4oZGF0YWxpc3QuZ2V0KCkpOwotfQotI2VuZGlmCi0K
IEhUTUxTZWxlY3RFbGVtZW50KiBIVE1MT3B0aW9uRWxlbWVudDo6b3duZXJTZWxlY3RFbGVtZW50
KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gc2VsZWN0ID0gcGFyZW50Tm9k
ZSgpOwotICAgIHdoaWxlIChzZWxlY3QgJiYgIWlzPEhUTUxTZWxlY3RFbGVtZW50Pigqc2VsZWN0
KSkKLSAgICAgICAgc2VsZWN0ID0gc2VsZWN0LT5wYXJlbnROb2RlKCk7Ci0KLSAgICBpZiAoIXNl
bGVjdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZG93bmNhc3Q8SFRN
TFNlbGVjdEVsZW1lbnQ+KHNlbGVjdC5nZXQoKSk7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SFRN
TFNlbGVjdEVsZW1lbnQqPihhbmNlc3RvcnNPZlR5cGU8SFRNTFNlbGVjdEVsZW1lbnQ+KCp0aGlz
KS5maXJzdCgpKTsKIH0KIAogU3RyaW5nIEhUTUxPcHRpb25FbGVtZW50OjpsYWJlbCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKaW5kZXggZjBkOTRjOGE2YjVm
MzA4MzM0ZWFhMTFkYTllNDAyMWI1YzBlNTdlNi4uOTFjNWFiYzdlMDE3YzExZmExMzJmZDMxZjAx
YmUxZTMyNGUyNmIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaApA
QCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBr
ZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0Br
ZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUu
b3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDEwLCAyMDExLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI4LDcg
KzI4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MRGF0YUxpc3RFbGVt
ZW50OwogY2xhc3MgSFRNTFNlbGVjdEVsZW1lbnQ7CiAKIGNsYXNzIEhUTUxPcHRpb25FbGVtZW50
IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKQEAgLTQ5LDkgKzQ4LDYgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2VsZWN0ZWQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFNlbGVjdGVkKGJvb2wpOwogCi0jaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0g
ICAgV0VCQ09SRV9FWFBPUlQgSFRNTERhdGFMaXN0RWxlbWVudCogb3duZXJEYXRhTGlzdEVsZW1l
bnQoKSBjb25zdDsKLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIEhUTUxTZWxlY3RFbGVtZW50
KiBvd25lclNlbGVjdEVsZW1lbnQoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBsYWJlbCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
aW9uc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxl
Y3Rpb24uY3BwCmluZGV4IGE2MDc2NmJkNzg1ODU5ODZhMjI5ZmU4NmZiNDJjNjhhZmQ5MWJhNDku
LjMwYmJjZjM2OTg0Mjc2MWRkMGI1MzQ0MTc4YjQ3MDEwNjM1NTUyMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKQEAgLTI4LDcgKzI4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEhUTUxPcHRp
b25zQ29sbGVjdGlvbik7CiAKIEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6SFRNTE9wdGlvbnNDb2xs
ZWN0aW9uKEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3QpCi0gICAgOiBDYWNoZWRIVE1MQ29sbGVj
dGlvbjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPFNlbGVjdE9w
dGlvbnM+Ojp0cmF2ZXJzYWxUeXBlPihzZWxlY3QsIFNlbGVjdE9wdGlvbnMpCisgICAgOiBDYWNo
ZWRIVE1MQ29sbGVjdGlvbihzZWxlY3QsIFNlbGVjdE9wdGlvbnMpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbAppbmRleCA2ZTlmYTRkMGUx
NjE2MGRhMmI3Y2FiODBkMDJhOTdhYmQ4MDYzYjA1Li5mMWM0NzdlNDg2OGUwZmU0MDU5ZmRmYzYw
NTFiZWMzYTFmMmM1Y2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRp
b25zQ29sbGVjdGlvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uaWRsCkBAIC0zMiw1ICszMiw1IEBACiAKICAgICAvLyBGSVhNRTogQ2FuIHRoZXNl
IGp1c3QgYmUgaW5oZXJpdGVkIGZyb20gSFRNTENvbGxlY3Rpb24gbGlrZSBpbiB0aGUgc3BlYz8K
ICAgICBnZXR0ZXIgSFRNTE9wdGlvbkVsZW1lbnQ/IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7
Ci0gICAgZ2V0dGVyIEhUTUxPcHRpb25FbGVtZW50PyBuYW1lZEl0ZW0oRE9NU3RyaW5nIG5hbWUp
OworICAgIGdldHRlciBIVE1MT3B0aW9uRWxlbWVudD8gbmFtZWRJdGVtKFtSZXF1aXJlc0V4aXN0
aW5nQXRvbVN0cmluZ10gRE9NU3RyaW5nIG5hbWUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IGIxNzRiMWYyOGZiNmUxNGY3Yzcy
ZjE3YmIzZGRhYmVjYzQxMzVmYjAuLjYyZmFiNzgxNDYyY2UyZTlmYWZmZmMwYTc2MzgzZjNhZWI1
ODEwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1
ZGUgIkNvbW1vblZNLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCisjaW5j
bHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAgLTUwLDcgKzUx
LDYgQEAKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3R5bGVUcmVlUmVzb2x2
ZXIuaCIKICNpbmNsdWRlICJTdWJmcmFtZUxvYWRlci5oIgotI2luY2x1ZGUgIlR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ2F0Y2hTY29wZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0SW5saW5lcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTZWxlY3RFbGVtZW50LmlkbAppbmRleCA2MWVlNTk0ZTYwMzc3OTBlYWRmYzhhZmQxYzE1ZWNj
NDZmMzhjNmM5Li5kM2FlZGE5MDM1NTM4ZDk2ZjIyYmUxYTU0MGU3MzYxMDM5ZWVlYzI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbApAQCAtMzYsNyArMzYsNyBA
QAogICAgIC8qIFtTYW1lT2JqZWN0XSAqLyByZWFkb25seSBhdHRyaWJ1dGUgSFRNTE9wdGlvbnND
b2xsZWN0aW9uIG9wdGlvbnM7CiAgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgdW5zaWduZWQg
bG9uZyBsZW5ndGg7CiAgICAgZ2V0dGVyIEhUTUxPcHRpb25FbGVtZW50PyBpdGVtKHVuc2lnbmVk
IGxvbmcgaW5kZXgpOyAvLyBGSVhNRTogVGhlIHNwZWMgaGFzIHRoaXMgcmV0dXJuaW5nIEVsZW1l
bnQ/LgotICAgIEhUTUxPcHRpb25FbGVtZW50PyBuYW1lZEl0ZW0oRE9NU3RyaW5nIG5hbWUpOwor
ICAgIEhUTUxPcHRpb25FbGVtZW50PyBuYW1lZEl0ZW0oW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3Ry
aW5nXSBET01TdHJpbmcgbmFtZSk7CiAgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBhZGQoKEhUTUxPcHRpb25FbGVtZW50IG9yIEhUTUxPcHRHcm91cEVsZW1lbnQpIGVs
ZW1lbnQsIG9wdGlvbmFsIChIVE1MRWxlbWVudCBvciBsb25nKT8gYmVmb3JlID0gbnVsbCk7CiAg
ICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZW1vdmUoKTsgLy8gQ2hp
bGROb2RlIG92ZXJsb2FkCiAgICAgW0NFUmVhY3Rpb25zXSB2b2lkIHJlbW92ZShsb25nIGluZGV4
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKaW5kZXgg
ZmJmOGY3MzNlNDgwMDA0OTFlYWQ4NjE2NzNiODYzMTkyM2Y5OTE4Ni4uYTYwMDM4ZmU5NGYyOThi
MDhlYTRhYjZlZGFjZDdkMTU1N2FhODc1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVDZWxsRWxlbWVudC5jcHAKQEAgLTEzMSw5ICsxMzEsOSBAQCB2b2lkIEhUTUxUYWJsZUNl
bGxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9tUwogCiBjb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUNlbGxFbGVtZW50Ojph
ZGRpdGlvbmFsUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKSBjb25zdAogewotICAgIGlmIChS
ZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gdGFibGUgPSBmaW5kUGFyZW50VGFibGUoKSkKKyAgICBp
ZiAoYXV0byB0YWJsZSA9IGZpbmRQYXJlbnRUYWJsZSgpKQogICAgICAgICByZXR1cm4gdGFibGUt
PmFkZGl0aW9uYWxDZWxsU3R5bGUoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAogYm9vbCBIVE1MVGFibGVDZWxsRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3Qg
QXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVDb2xFbGVtZW50LmNwcAppbmRleCA3MjhiNWYzZDJiNTUyM2IwNGIzOTlmMmNjNGI1NWFhNGY4
YjFmYzc0Li5mNGQ0NDc1ODExZThhNDBjYTMyYTY3YmNmNmIyMTZjMjUzYTdlN2EzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKQEAgLTkyLDcgKzkyLDcg
QEAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBIVE1MVGFibGVDb2xFbGVtZW50OjphZGRpdGlvbmFs
UHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUKIHsKICAgICBpZiAoIWhhc1RhZ05hbWUoY29sZ3Jv
dXBUYWcpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoUmVmUHRyPEhUTUxUYWJs
ZUVsZW1lbnQ+IHRhYmxlID0gZmluZFBhcmVudFRhYmxlKCkpCisgICAgaWYgKGF1dG8gdGFibGUg
PSBmaW5kUGFyZW50VGFibGUoKSkKICAgICAgICAgcmV0dXJuIHRhYmxlLT5hZGRpdGlvbmFsR3Jv
dXBTdHlsZShmYWxzZSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVFbGVtZW50LmNwcAppbmRleCA3NjdhM2UzOGFmNDgyZGQ5MmIxNDljOGYwZWU4
Yjg2NmU3ZDRiN2JmLi5hNWY4MGZlMGM5MWY4OGQ5NjBhYjdmZTdhZjA2OGE0OGI4OTY0NWQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKQEAgLTQ3Myw3ICs0NzMs
NyBAQCBIVE1MVGFibGVFbGVtZW50OjpDZWxsQm9yZGVycyBIVE1MVGFibGVFbGVtZW50OjpjZWxs
Qm9yZGVycygpIGNvbnN0CiAgICAgcmV0dXJuIE5vQm9yZGVyczsKIH0KIAotUmVmPFN0eWxlUHJv
cGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCkKK1JlZjxT
dHlsZVByb3BlcnRpZXM+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSgp
IGNvbnN0CiB7CiAgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0
ZSgpOwogCkBAIC01MTQsNyArNTE0LDcgQEAgUmVmPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxl
RWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCkKICAgICByZXR1cm4gc3R5bGU7CiB9CiAK
LWNvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlRWxlbWVudDo6YWRkaXRpb25hbENlbGxT
dHlsZSgpCitjb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9u
YWxDZWxsU3R5bGUoKSBjb25zdAogewogICAgIGlmICghbV9zaGFyZWRDZWxsU3R5bGUpCiAgICAg
ICAgIG1fc2hhcmVkQ2VsbFN0eWxlID0gY3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCk7CkBAIC01Mzgs
MTEgKzUzOCwxMCBAQCBzdGF0aWMgU3R5bGVQcm9wZXJ0aWVzKiBsZWFrR3JvdXBCb3JkZXJTdHls
ZShpbnQgcm93cykKICAgICByZXR1cm4gJnN0eWxlLmxlYWtSZWYoKTsKIH0KIAotY29uc3QgU3R5
bGVQcm9wZXJ0aWVzKiBIVE1MVGFibGVFbGVtZW50OjphZGRpdGlvbmFsR3JvdXBTdHlsZShib29s
IHJvd3MpCitjb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9u
YWxHcm91cFN0eWxlKGJvb2wgcm93cykgY29uc3QKIHsKICAgICBpZiAobV9ydWxlc0F0dHIgIT0g
R3JvdXBzUnVsZXMpCi0gICAgICAgIHJldHVybiAwOwotCisgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGlmIChyb3dzKSB7CiAgICAgICAgIHN0YXRpYyBTdHlsZVByb3BlcnRpZXMqIHJvd0Jv
cmRlclN0eWxlID0gbGVha0dyb3VwQm9yZGVyU3R5bGUodHJ1ZSk7CiAgICAgICAgIHJldHVybiBy
b3dCb3JkZXJTdHlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmgKaW5kZXgg
YjM2NTQyMDliZGE4NTc4ODVjNjkzMWM4MWI0ZWUzZjk4NmYzODQxNi4uMzc1NmRjNjEwNzVjNGJm
Nzk1N2Y5MDczYjc4NzVhNTJmMmU1NmIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVF
bGVtZW50LmgKQEAgLTY1LDggKzY1LDggQEAgcHVibGljOgogICAgIGNvbnN0IEF0b21TdHJpbmcm
IHJ1bGVzKCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgc3VtbWFyeSgpIGNvbnN0Owog
Ci0gICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRpdGlvbmFsQ2VsbFN0eWxlKCk7Ci0gICAg
Y29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRpdGlvbmFsR3JvdXBTdHlsZShib29sIHJvd3MpOwor
ICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogYWRkaXRpb25hbENlbGxTdHlsZSgpIGNvbnN0Owor
ICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogYWRkaXRpb25hbEdyb3VwU3R5bGUoYm9vbCByb3dz
KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBIVE1MVGFibGVFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtODYsNyArODYsNyBAQCBwcml2YXRlOgogCiAgICAgQ2Vs
bEJvcmRlcnMgY2VsbEJvcmRlcnMoKSBjb25zdDsKIAotICAgIFJlZjxTdHlsZVByb3BlcnRpZXM+
IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOworICAgIFJlZjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0
ZVNoYXJlZENlbGxTdHlsZSgpIGNvbnN0OwogCiAgICAgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQq
IGxhc3RCb2R5KCkgY29uc3Q7CiAKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fZnJhbWVBdHRyIHsgZmFsc2UgfTsgLy8gSW1wbGllcyBhIHRoaW4gYm9yZGVyIHdpZHRoIGlm
IG5vIGJvcmRlciBpcyBzZXQgYW5kIHRoZW4gYSBjZXJ0YWluIHNldCBvZiBzb2xpZC9oaWRkZW4g
Ym9yZGVycyBiYXNlZCBvZmYgdGhlIHZhbHVlLgogICAgIFRhYmxlUnVsZXMgbV9ydWxlc0F0dHIg
eyBVbnNldFJ1bGVzIH07IC8vIEltcGxpZXMgYSB0aGluIGJvcmRlciB3aWR0aCwgYSBjb2xsYXBz
aW5nIGJvcmRlciBtb2RlbCwgYW5kIGFsbCBib3JkZXJzIG9uIHRoZSB0YWJsZSBiZWNvbWluZyBz
ZXQgdG8gaGlkZGVuIChpZiBmcmFtZS9ib3JkZXIgYXJlIHByZXNlbnQsIHRvIG5vbmUgb3RoZXJ3
aXNlKS4KICAgICB1bnNpZ25lZCBzaG9ydCBtX3BhZGRpbmcgeyAxIH07Ci0gICAgUmVmUHRyPFN0
eWxlUHJvcGVydGllcz4gbV9zaGFyZWRDZWxsU3R5bGU7CisgICAgbXV0YWJsZSBSZWZQdHI8U3R5
bGVQcm9wZXJ0aWVzPiBtX3NoYXJlZENlbGxTdHlsZTsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAKaW5kZXggMzU4Nzgw
MTYyMTBmY2FhZmY2MDkwZTY5NTM5NDE1NWM0NTVhZWE3Yy4uMzQ5YjAzNTEyYThlYzU0MDUyNDFi
YmE2ZmMzZDRhOWZmNzQzNmVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVQYXJ0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQ
YXJ0RWxlbWVudC5jcHAKQEAgLTQsNyArNCw3IEBACiAgKiAgICAgICAgICAgKEMpIDE5OTggV2Fs
ZG8gQmFzdGlhbiAoYmFzdGlhbkBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IExhcnMg
S25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlz
dG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUs
IDIwMDYgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC04NSwxMiArODUsOSBA
QCB2b2lkIEhUTUxUYWJsZVBhcnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25B
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTgogICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0
eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKG5hbWUsIHZhbHVlLCBzdHlsZSk7CiB9CiAKLVJl
ZlB0cjxIVE1MVGFibGVFbGVtZW50PiBIVE1MVGFibGVQYXJ0RWxlbWVudDo6ZmluZFBhcmVudFRh
YmxlKCkgY29uc3QKK1JlZlB0cjxjb25zdCBIVE1MVGFibGVFbGVtZW50PiBIVE1MVGFibGVQYXJ0
RWxlbWVudDo6ZmluZFBhcmVudFRhYmxlKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8Q29udGFpbmVy
Tm9kZT4gcGFyZW50ID0gcGFyZW50Tm9kZSgpOwotICAgIHdoaWxlIChwYXJlbnQgJiYgIWlzPEhU
TUxUYWJsZUVsZW1lbnQ+KCpwYXJlbnQpKQotICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVu
dE5vZGUoKTsKLSAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4ocGFyZW50Lmdl
dCgpKTsKKyAgICByZXR1cm4gYW5jZXN0b3JzT2ZUeXBlPEhUTUxUYWJsZUVsZW1lbnQ+KCp0aGlz
KS5maXJzdCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVBhcnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVt
ZW50LmgKaW5kZXggZDNiY2Y1MGJhZTIxYzM1OGNkZTIzZjMzNjNlNWM2OTJkNTZmMTFlNi4uMDRm
OTQ3MWJhYmEyODc3Zjc1NDU0MGM5YjFhNTgwOTcyN2JlYjU3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuaApAQCAtNCw3ICs0LDcgQEAKICAqICAgICAgICAg
ICAoQykgMTk5OCBXYWxkbyBCYXN0aWFuIChiYXN0aWFuQGtkZS5vcmcpCiAgKiAgICAgICAgICAg
KEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5
OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNCwgMjAwNSwgMjAwNiwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQyLDcgKzQyLDcgQEAgcHJvdGVjdGVkOgogICAg
IGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJv
cGVydGllcyYpIG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IGZpbmRQ
YXJlbnRUYWJsZSgpIGNvbnN0OworICAgIFJlZlB0cjxjb25zdCBIVE1MVGFibGVFbGVtZW50PiBm
aW5kUGFyZW50VGFibGUoKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAKaW5kZXgg
N2E2N2I3NzNhYjM5OWViMzkyMzAwODQ2MDIxZTllYmIwOWEyOTFhYi4uMjNlZWNkYTE1NzZjNGMz
ZWM3NTQwZTNhYTA2MTZmM2YyMDUwZTJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBIVE1MVGFibGVS
b3dFbGVtZW50KiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6bGFzdFJvdyhIVE1MVGFibGVFbGVt
ZW50JiB0YWJsZSkKIH0KIAogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OkhUTUxUYWJsZVJvd3ND
b2xsZWN0aW9uKEhUTUxUYWJsZUVsZW1lbnQmIHRhYmxlKQotICAgIDogQ2FjaGVkSFRNTENvbGxl
Y3Rpb248SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPFRhYmxl
Um93cz46OnRyYXZlcnNhbFR5cGU+KHRhYmxlLCBUYWJsZVJvd3MpCisgICAgOiBDYWNoZWRIVE1M
Q29sbGVjdGlvbih0YWJsZSwgVGFibGVSb3dzKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwCmluZGV4IGU1MTZhODE4NGQxZjBmODM3
M2NkMjFhNGE3YTQwOTNjZjliY2YyZjEuLjQ5OTljMTU4ZTZiYWY5ODgyYmE1ZTA1ZDI2ZjNkZGEz
NDE4YmMzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlv
bkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQuaCIKIAogI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgotI2lu
Y2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSFRNTFRhYmxlUm93RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIK
QEAgLTk1LDcgKzk0LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTFRhYmxlU2VjdGlvbkVsZW1l
bnQ6OmRlbGV0ZVJvdyhpbnQgaW5kZXgpCiBpbnQgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6Om51
bVJvd3MoKSBjb25zdAogewogICAgIGF1dG8gcm93cyA9IGNoaWxkcmVuT2ZUeXBlPEhUTUxUYWJs
ZVJvd0VsZW1lbnQ+KCp0aGlzKTsKLSAgICByZXR1cm4gc3RkOjpkaXN0YW5jZShyb3dzLmJlZ2lu
KCksIHJvd3MuZW5kKCkpOworICAgIHJldHVybiBzdGQ6OmRpc3RhbmNlKHJvd3MuYmVnaW4oKSwg
eyB9KTsKIH0KIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6
cm93cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCmluZGV4IDk5YzU2ZWJmNWUwNmQ3NjZiZTI3MGJhYzNhYTI5NjJiYjU5ZDM0ODAu
LmE3YmE0MTdkN2Q1MTcxNGMwZTU1MmMwZDU5YTAxMWI1MTUxYjBjNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0yLDcg
KzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcp
CiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcp
CiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3Au
Y29tKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTc2NCwzNCArNzY0LDI0IEBAIEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50KiBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2woY29uc3QgUG9zaXRpb24mIHBvc2l0
aW9uKQogICAgIHJldHVybiBhbmNlc3RvciAmJiBhbmNlc3Rvci0+aXNUZXh0RmllbGQoKSA/IGRv
d25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PihhbmNlc3Rvci5nZXQoKSkgOiBudWxs
cHRyOwogfQogCi1zdGF0aWMgY29uc3QgRWxlbWVudCogcGFyZW50SFRNTEVsZW1lbnQoY29uc3Qg
RWxlbWVudCogZWxlbWVudCkKLXsKLSAgICB3aGlsZSAoZWxlbWVudCkgewotICAgICAgICBlbGVt
ZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwotICAgICAgICBpZiAoZWxlbWVudCAmJiBl
bGVtZW50LT5pc0hUTUxFbGVtZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAg
ICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIFN0cmluZyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dDo6ZGlyZWN0aW9uRm9yRm9ybURhdGEoKSBjb25zdAogewotICAgIGZvciAoY29uc3QgRWxlbWVu
dCogZWxlbWVudCA9IHRoaXM7IGVsZW1lbnQ7IGVsZW1lbnQgPSBwYXJlbnRIVE1MRWxlbWVudChl
bGVtZW50KSkgewotICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBkaXJBdHRyaWJ1dGVWYWx1ZSA9
IGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGlyQXR0cik7Ci0gICAg
ICAgIGlmIChkaXJBdHRyaWJ1dGVWYWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkaXJBdHRyaWJ1
dGVWYWx1ZSwgInJ0bCIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpckF0dHJp
YnV0ZVZhbHVlLCAibHRyIikpCi0gICAgICAgICAgICByZXR1cm4gZGlyQXR0cmlidXRlVmFsdWU7
Ci0KLSAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpckF0dHJpYnV0
ZVZhbHVlLCAiYXV0byIpKSB7Ci0gICAgICAgICAgICBib29sIGlzQXV0bzsKLSAgICAgICAgICAg
IFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxFbGVt
ZW50Kj4oZWxlbWVudCktPmRpcmVjdGlvbmFsaXR5SWZoYXNEaXJBdXRvQXR0cmlidXRlKGlzQXV0
byk7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpS
VEwgPyAicnRsIiA6ICJsdHIiOworICAgIGF1dG8gZGlyZWN0aW9uID0gW3RoaXNdIHsKKyAgICAg
ICAgZm9yIChhdXRvJiBlbGVtZW50IDogbGluZWFnZU9mVHlwZTxIVE1MRWxlbWVudD4oKnRoaXMp
KSB7CisgICAgICAgICAgICBhdXRvJiB2YWx1ZSA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihkaXJBdHRyKTsKKyAgICAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgInJ0bCIpKQorICAgICAgICAgICAgICAgIHJldHVybiBUZXh0
RGlyZWN0aW9uOjpSVEw7CisgICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UodmFsdWUsICJsdHIiKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gVGV4dERpcmVjdGlv
bjo6TFRSOworICAgICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZh
bHVlLCAiYXV0byIpKSB7CisgICAgICAgICAgICAgICAgYm9vbCBpc0F1dG87CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGVsZW1lbnQuZGlyZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUo
aXNBdXRvKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KKyAgICAgICAgcmV0dXJu
IFRleHREaXJlY3Rpb246OkxUUjsKKyAgICB9KCk7CiAKLSAgICByZXR1cm4gImx0ciI7CisgICAg
cmV0dXJuIGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJf
czsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNl
dE1heExlbmd0aChpbnQgbWF4TGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9MYWJlbHNOb2RlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0
LmNwcAppbmRleCBkNDEwMTc4NmZiMDA1ZjI2ODdiMTkwYWYzNzMxYmNkNTU3ZDIwZTBhLi45MTlh
MjhlZDYwOTNmZGJlYjExZDI5MTYwNDY0MjgxNmYxZWUxMWQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0xhYmVsc05vZGVMaXN0LmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5
OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRp
IEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsg
TXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LCAy
MDA4LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMCBOb2tpYSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpA
QCAtMjQsOSArMjQsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxhYmVsc05v
ZGVMaXN0LmgiCiAKLSNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTExhYmVsRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkxhYmVsYWJsZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
SW5saW5lcy5oPgogCkBAIC0zNiwxMSArMzYsMTYgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKExhYmVsc05vZGVMaXN0KTsKIAotTGFi
ZWxzTm9kZUxpc3Q6OkxhYmVsc05vZGVMaXN0KExhYmVsYWJsZUVsZW1lbnQmIGZvck5vZGUpCi0g
ICAgOiBDYWNoZWRMaXZlTm9kZUxpc3QoZm9yTm9kZSwgSW52YWxpZGF0ZU9uRm9yVHlwZUF0dHJD
aGFuZ2UpCitMYWJlbHNOb2RlTGlzdDo6TGFiZWxzTm9kZUxpc3QoTGFiZWxhYmxlRWxlbWVudCYg
ZWxlbWVudCkKKyAgICA6IENhY2hlZExpdmVOb2RlTGlzdChlbGVtZW50LCBJbnZhbGlkYXRlT25G
b3JUeXBlQXR0ckNoYW5nZSkKIHsKIH0KIAorUmVmPExhYmVsc05vZGVMaXN0PiBMYWJlbHNOb2Rl
TGlzdDo6Y3JlYXRlKExhYmVsYWJsZUVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21TdHJpbmcm
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExhYmVsc05vZGVMaXN0KGVsZW1lbnQpKTsK
K30KKwogTGFiZWxzTm9kZUxpc3Q6On5MYWJlbHNOb2RlTGlzdCgpCiB7CiAgICAgb3duZXJOb2Rl
KCkubm9kZUxpc3RzKCktPnJlbW92ZUNhY2hlV2l0aEF0b21OYW1lKCp0aGlzLCBzdGFyQXRvbSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuaAppbmRleCBmNTM5ZDc5YjBjYWEwNTAw
MzA0ODg4ZGM0NjE3NzJhZjdkYjE2MjgyLi44MGQ5NzdmYWNkNzYyZGFhOGYzMDhhZjBkYjNiNjUw
ZWFjYzczZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oCkBAIC0yLDcgKzIs
NyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAg
KiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAg
KiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDcsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yNCwyNSArMjQsMjMgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJMYWJlbGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGl2ZU5vZGVMaXN0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTGFiZWxhYmxlRWxlbWVudDsKKwogY2xh
c3MgTGFiZWxzTm9kZUxpc3QgZmluYWwgOiBwdWJsaWMgQ2FjaGVkTGl2ZU5vZGVMaXN0PExhYmVs
c05vZGVMaXN0PiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChMYWJlbHNOb2RlTGlzdCk7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxMYWJlbHNOb2RlTGlzdD4gY3JlYXRlKExhYmVsYWJs
ZUVsZW1lbnQmIGZvck5vZGUsIGNvbnN0IEF0b21TdHJpbmcmKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTGFiZWxzTm9kZUxpc3QoZm9yTm9kZSkpOwotICAgIH0KLSAgICB+
TGFiZWxzTm9kZUxpc3QoKTsKKyAgICBzdGF0aWMgUmVmPExhYmVsc05vZGVMaXN0PiBjcmVhdGUo
TGFiZWxhYmxlRWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmKTsKKyAgICB2aXJ0dWFsIH5MYWJl
bHNOb2RlTGlzdCgpOwogCi0gICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Qg
ZmluYWw7CisgICAgYm9vbCBpc1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTGFiZWxzTm9kZUxpc3QoTGFiZWxh
YmxlRWxlbWVudCYgZm9yTm9kZSk7CisgICAgZXhwbGljaXQgTGFiZWxzTm9kZUxpc3QoTGFiZWxh
YmxlRWxlbWVudCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFEb2N1bWVudC5jcHAKaW5kZXggMDRkZTc1MTNjYWM0ODJiZjc2MGI0ZTRjNmZmYTAy
ZWMyZTViNjdmNy4uMjRlNDBjMmM2ZDMzMTE0OTNiNjE3YzY1Y2RmMmY1OGE4NTEyMjJkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ3VzdG9tSGVhZGVyRmllbGRzLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRlci5oIgpAQCAtNTEsNyArNTIsNiBAQAogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hh
ZG93Um9vdC5oIgotI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9k
ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmNwcAppbmRleCA5
NDcwZWEyOWFiNTc3NDg4MGM2M2IzYmY0NzRlZDg5YmZmN2JiMzQ2Li5kZDJjODFlNDRiM2NhZjE5
Y2MyY2JlYzRiNDY2NzM1OGZjYTJjNTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1JhZGlvTm9kZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlz
dC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDEyIE1vdG9yb2xh
IE1vYmlsaXR5LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlUmFyZURh
dGEuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNDMsMTYgKzQyLDIx
IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSYWRpb05vZGVMaXN0KTsKIFJhZGlvTm9k
ZUxpc3Q6OlJhZGlvTm9kZUxpc3QoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21T
dHJpbmcmIG5hbWUpCiAgICAgOiBDYWNoZWRMaXZlTm9kZUxpc3Qocm9vdE5vZGUsIEludmFsaWRh
dGVGb3JGb3JtQ29udHJvbHMpCiAgICAgLCBtX25hbWUobmFtZSkKLSAgICAsIG1faXNSb290ZWRB
dERvY3VtZW50KGlzPEhUTUxGb3JtRWxlbWVudD4ob3duZXJOb2RlKCkpKQorICAgICwgbV9pc1Jv
b3RlZEF0RG9jdW1lbnQoaXM8SFRNTEZvcm1FbGVtZW50Pihyb290Tm9kZSkpCiB7CiB9CiAKK1Jl
ZjxSYWRpb05vZGVMaXN0PiBSYWRpb05vZGVMaXN0OjpjcmVhdGUoQ29udGFpbmVyTm9kZSYgcm9v
dE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUmFkaW9Ob2RlTGlzdChyb290Tm9kZSwgbmFtZSkpOworfQorCiBSYWRpb05vZGVMaXN0Ojp+
UmFkaW9Ob2RlTGlzdCgpCiB7CiAgICAgb3duZXJOb2RlKCkubm9kZUxpc3RzKCktPnJlbW92ZUNh
Y2hlV2l0aEF0b21OYW1lKCp0aGlzLCBtX25hbWUpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0
cjxIVE1MSW5wdXRFbGVtZW50PiB0b1JhZGlvQnV0dG9uSW5wdXRFbGVtZW50KEhUTUxFbGVtZW50
JiBlbGVtZW50KQorc3RhdGljIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBub25FbXB0eVJhZGlv
QnV0dG9uKEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50
PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02NywxMCArNzEsMTAgQEAg
U3RyaW5nIFJhZGlvTm9kZUxpc3Q6OnZhbHVlKCkgY29uc3QKIHsKICAgICBhdXRvIGxlbmd0aCA9
IHRoaXMtPmxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkgewotICAgICAgICBhdXRvIGlucHV0RWxlbWVudCA9IHRvUmFkaW9CdXR0b25JbnB1dEVsZW1l
bnQoKml0ZW0oaSkpOwotICAgICAgICBpZiAoIWlucHV0RWxlbWVudCB8fCAhaW5wdXRFbGVtZW50
LT5jaGVja2VkKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgcmV0dXJuIGlucHV0
RWxlbWVudC0+dmFsdWUoKTsKKyAgICAgICAgaWYgKGF1dG8gYnV0dG9uID0gbm9uRW1wdHlSYWRp
b0J1dHRvbigqaXRlbShpKSkpIHsKKyAgICAgICAgICAgIGlmIChidXR0b24tPmNoZWNrZWQoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gYnV0dG9uLT52YWx1ZSgpOworICAgICAgICB9CiAgICAg
fQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KQEAgLTc5LDQwICs4MywzNCBAQCB2b2lkIFJhZGlv
Tm9kZUxpc3Q6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgYXV0byBsZW5n
dGggPSB0aGlzLT5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgYXV0byBpbnB1dEVsZW1lbnQgPSB0b1JhZGlvQnV0dG9uSW5wdXRF
bGVtZW50KCppdGVtKGkpKTsKLSAgICAgICAgaWYgKCFpbnB1dEVsZW1lbnQgfHwgaW5wdXRFbGVt
ZW50LT52YWx1ZSgpICE9IHZhbHVlKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlu
cHV0RWxlbWVudC0+c2V0Q2hlY2tlZCh0cnVlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBp
ZiAoYXV0byBidXR0b24gPSBub25FbXB0eVJhZGlvQnV0dG9uKCppdGVtKGkpKSkgeworICAgICAg
ICAgICAgaWYgKGJ1dHRvbi0+dmFsdWUoKSA9PSB2YWx1ZSkgeworICAgICAgICAgICAgICAgIGJ1
dHRvbi0+c2V0Q2hlY2tlZCh0cnVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KICAgICB9CiB9CiAKLWJvb2wgUmFkaW9Ob2RlTGlzdDo6Y2hlY2tF
bGVtZW50TWF0Y2hlc1JhZGlvTm9kZUxpc3RGaWx0ZXIoY29uc3QgRWxlbWVudCYgdGVzdEVsZW1l
bnQpIGNvbnN0Citib29sIFJhZGlvTm9kZUxpc3Q6OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIGVs
ZW1lbnQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzPEhUTUxPYmplY3RFbGVtZW50Pih0ZXN0RWxl
bWVudCkgfHwgaXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4odGVzdEVsZW1lbnQpKTsKKyAgICBp
ZiAoIWlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSAmJiAhaXM8SFRNTEZvcm1Db250cm9s
RWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChpczxI
VE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pihl
bGVtZW50KS5pc0ltYWdlQnV0dG9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlm
IChpczxIVE1MRm9ybUVsZW1lbnQ+KG93bmVyTm9kZSgpKSkgewotICAgICAgICBSZWZQdHI8SFRN
TEZvcm1FbGVtZW50PiBmb3JtRWxlbWVudDsKLSAgICAgICAgaWYgKHRlc3RFbGVtZW50Lmhhc1Rh
Z05hbWUob2JqZWN0VGFnKSkKLSAgICAgICAgICAgIGZvcm1FbGVtZW50ID0gZG93bmNhc3Q8SFRN
TE9iamVjdEVsZW1lbnQ+KHRlc3RFbGVtZW50KS5mb3JtKCk7CisgICAgICAgIFJlZlB0cjxIVE1M
Rm9ybUVsZW1lbnQ+IGZvcm07CisgICAgICAgIGlmIChpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxl
bWVudCkpCisgICAgICAgICAgICBmb3JtID0gZG93bmNhc3Q8SFRNTE9iamVjdEVsZW1lbnQ+KGVs
ZW1lbnQpLmZvcm0oKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZm9ybUVsZW1lbnQgPSBk
b3duY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Pih0ZXN0RWxlbWVudCkuZm9ybSgpOwotICAg
ICAgICBpZiAoIWZvcm1FbGVtZW50IHx8IGZvcm1FbGVtZW50ICE9ICZvd25lck5vZGUoKSkKKyAg
ICAgICAgICAgIGZvcm0gPSBkb3duY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PihlbGVtZW50
KS5mb3JtKCk7CisgICAgICAgIGlmICghZm9ybSB8fCBmb3JtICE9ICZvd25lck5vZGUoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICByZXR1cm4gdGVzdEVsZW1lbnQu
Z2V0SWRBdHRyaWJ1dGUoKSA9PSBtX25hbWUgfHwgdGVzdEVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0
ZSgpID09IG1fbmFtZTsKKyAgICByZXR1cm4gZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpID09IG1f
bmFtZSB8fCBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKSA9PSBtX25hbWU7CiB9CiAKLWJvb2wg
UmFkaW9Ob2RlTGlzdDo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYgdGVzdEVsZW1lbnQpIGNvbnN0
Ci17Ci0gICAgaWYgKCFpczxIVE1MT2JqZWN0RWxlbWVudD4odGVzdEVsZW1lbnQpICYmICFpczxI
VE1MRm9ybUNvbnRyb2xFbGVtZW50Pih0ZXN0RWxlbWVudCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50Pih0ZXN0RWxlbWVudCkgJiYgZG93bmNh
c3Q8SFRNTElucHV0RWxlbWVudD4odGVzdEVsZW1lbnQpLmlzSW1hZ2VCdXR0b24oKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGNoZWNrRWxlbWVudE1hdGNoZXNSYWRpb05v
ZGVMaXN0RmlsdGVyKHRlc3RFbGVtZW50KTsKLX0KLQotfSAvLyBuYW1zcGFjZQotCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9k
ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5oCmluZGV4IGEzMDI3
NjMzMGM3ZmRiNmNjZjYyYjIxOGU3YjE3MmQwMjNkOGE2YTMuLjY0NDc3YzgxMjU4ZmIxYjcxN2Yz
ZGQ2MmY5YjVkODNiYWFlOGYzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFk
aW9Ob2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5oCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoYykgMjAxMiBNb3Rvcm9sYSBNb2JpbGl0
eSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjYsNDEgKzI2LDI2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSFRN
TEVsZW1lbnQuaCIKICNpbmNsdWRlICJMaXZlTm9kZUxpc3QuaCIKLSNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9tU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmFkaW9Ob2Rl
TGlzdCBmaW5hbCA6IHB1YmxpYyBDYWNoZWRMaXZlTm9kZUxpc3Q8UmFkaW9Ob2RlTGlzdD4gewog
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoUmFkaW9Ob2RlTGlzdCk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxSYWRpb05vZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUs
IGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSYWRpb05vZGVMaXN0KHJvb3ROb2RlLCBuYW1lKSk7Ci0gICAgfQotCisgICAgc3RhdGlj
IFJlZjxSYWRpb05vZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0
IEF0b21TdHJpbmcmIG5hbWUpOwogICAgIHZpcnR1YWwgflJhZGlvTm9kZUxpc3QoKTsKIAotICAg
IEhUTUxFbGVtZW50KiBpdGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICAg
ICBTdHJpbmcgdmFsdWUoKSBjb25zdDsKICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYp
OwotCi0gICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCBpc1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lz
Um9vdGVkQXREb2N1bWVudDsgfQorICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNv
bnN0IGZpbmFsOwogCiBwcml2YXRlOgogICAgIFJhZGlvTm9kZUxpc3QoQ29udGFpbmVyTm9kZSYs
IGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpOwotICAgIGJvb2wgY2hlY2tFbGVtZW50TWF0Y2hlc1Jh
ZGlvTm9kZUxpc3RGaWx0ZXIoY29uc3QgRWxlbWVudCYpIGNvbnN0OworICAgIGJvb2wgaXNSb290
ZWRBdERvY3VtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc1Jvb3RlZEF0RG9jdW1lbnQ7
IH0KIAogICAgIEF0b21TdHJpbmcgbV9uYW1lOwogICAgIGJvb2wgbV9pc1Jvb3RlZEF0RG9jdW1l
bnQ7CiB9OwogCi1pbmxpbmUgSFRNTEVsZW1lbnQqIFJhZGlvTm9kZUxpc3Q6Oml0ZW0odW5zaWdu
ZWQgb2Zmc2V0KSBjb25zdAotewotICAgIHJldHVybiBkb3duY2FzdDxIVE1MRWxlbWVudD4oQ2Fj
aGVkTGl2ZU5vZGVMaXN0PFJhZGlvTm9kZUxpc3Q+OjppdGVtKG9mZnNldCkpOwotfQotCi19IC8v
IG5hbWVwc2FjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9SYWRpb05vZGVMaXN0LmlkbAppbmRleCAyMzRkNDU1MmY2MjQ5MzQ2MWYwNmZhMWQ1MjYzYjM4
NWE2MmE2OTkxLi5mMjE3MjA4OTUzNGFiZTNlYWQxMGE0OGQxMzYwNjFkNzRhYzVmYmQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5pZGwKQEAgLTI3LDYgKzI3LDQgQEAKICAgICBK
U0dlbmVyYXRlVG9KU09iamVjdCwKIF0gaW50ZXJmYWNlIFJhZGlvTm9kZUxpc3QgOiBOb2RlTGlz
dCB7CiAgICAgYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZTsKLQotICAgIGdldHRlciBIVE1MRWxl
bWVudCAodW5zaWduZWQgbG9uZyBpbmRleCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IGZkYjhlMzBmZmVjOWJiMDlhY2U2YjI5ZWM2YTMwMWEz
OTBlZWQ1ODEuLjAyZWZmNDhmMzg4ZjE4MGRiYTk0YTExODBjZTUxYzIyNGEyMWNjYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC04NjcsNiAr
ODY3LDggQEAgSW50UmVjdCBUZXh0RmllbGRJbnB1dFR5cGU6OmVsZW1lbnRSZWN0SW5Sb290Vmll
d0Nvb3JkaW5hdGVzKCkgY29uc3QKIAogVmVjdG9yPFN0cmluZz4gVGV4dEZpZWxkSW5wdXRUeXBl
OjpzdWdnZXN0aW9ucygpCiB7CisgICAgLy8gRklYTUU6IFN1Z2dlc3Rpb25zIGFyZSAidHlwaW5n
IGNvbXBsZXRpb25zIiBhbmQgc28gc2hvdWxkIHByb2JhYmx5IHVzZSB0aGUgZmluZFBsYWluVGV4
dCBhbGdvcml0aG0gcmF0aGVyIHRoYW4gdGhlIHNpbXBsaXN0aWMgImlnbm9yaW5nIEFTQ0lJIGNh
c2UiIHJ1bGVzLgorCiAgICAgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvbnM7CiAgICAgVmVjdG9y
PFN0cmluZz4gbWF0Y2hlc0NvbnRhaW5pbmdWYWx1ZTsKIApAQCAtODc2LDEyICs4NzgsMTEgQEAg
VmVjdG9yPFN0cmluZz4gVGV4dEZpZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9ucygpCiAgICAgICAg
IHJldHVybiBtX2NhY2hlZFN1Z2dlc3Rpb25zLnNlY29uZDsKIAogICAgIGlmIChhdXRvIGRhdGFM
aXN0ID0gZWxlbWVudCgpLT5kYXRhTGlzdCgpKSB7Ci0gICAgICAgIFJlZjxIVE1MQ29sbGVjdGlv
bj4gb3B0aW9ucyA9IGRhdGFMaXN0LT5vcHRpb25zKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGF1dG8qIG9wdGlvbiA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihvcHRpb25z
LT5pdGVtKGkpKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIWVsZW1lbnQoKS0+aXNWYWxpZFZh
bHVlKG9wdGlvbi0+dmFsdWUoKSkpCisgICAgICAgIGZvciAoYXV0byYgb3B0aW9uIDogZGF0YUxp
c3QtPnN1Z2dlc3Rpb25zKCkpIHsKKyAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IG9wdGlvbi52
YWx1ZSgpOworICAgICAgICAgICAgaWYgKCFlbGVtZW50KCktPmlzVmFsaWRWYWx1ZSh2YWx1ZSkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9
IHNhbml0aXplVmFsdWUob3B0aW9uLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIHZhbHVlID0gc2Fu
aXRpemVWYWx1ZSh2YWx1ZSk7CiAgICAgICAgICAgICBpZiAoZWxlbWVudFZhbHVlLmlzRW1wdHko
KSkKICAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucy5hcHBlbmQodmFsdWUpOwogICAgICAgICAg
ICAgZWxzZSBpZiAodmFsdWUuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGVsZW1lbnRWYWx1
ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXggZTVk
ZjNjM2I3ODY2ZWE5ZmQ0M2RhY2NmNGE0NjIyYmRiNjQ4OTQyMi4uZmNlNTkyNmFiNWVmYTVkYTVj
ZDQ0NzRkMTZlZWMyZDg5MjcwZWIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlLmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29y
ZHMuaCIKICNpbmNsdWRlICJET01SZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRl
ICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKaW5kZXggZTFlMjNhNzZhNGQ5NDZmOWVhMjdmNjI2YTIyYjJjYzc3OGE5
NGQzMS4uNDQ4M2RmNzAwM2ZiMWVkNTQ5NmRjYWJiMjMwM2VhYTU1MGM3ZGZlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTMyLDEwICszMiw4IEBACiAjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eU9iamVjdEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlNwYWNl
U3BsaXRTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CkBAIC03MCw3ICs2OCw3IEBAIEV4Y2VwdGlvbk9yPFZlY3RvcjxSZWY8
Tm9kZT4+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldEVsZW1lbnRzQnlD
CiAKICAgICBWZWN0b3I8UmVmPE5vZGU+PiBub2RlczsKIAotICAgIGZvciAoRWxlbWVudCYgZWxl
bWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhpczxDb250YWluZXJOb2RlPihjb250YWluZXIpID8g
ZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4oKmNvbnRhaW5lcikgOiBkb2N1bWVudCkpIHsKKyAgICBm
b3IgKEVsZW1lbnQmIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PihpczxDb250
YWluZXJOb2RlPihjb250YWluZXIpID8gZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4oKmNvbnRhaW5l
cikgOiBkb2N1bWVudCkpIHsKICAgICAgICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBh
Y2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBpZiAoYXhP
YmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygpID09IHJvbGUpCiAgICAgICAgICAgICAgICAgbm9k
ZXMuYXBwZW5kKGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCAyOTMwYjQ1ZjhmMjA3NTFlODU2Y2Rh
M2UwNTE4OWFhNDQ0ZTE4NTUxLi5hY2U1ZjlhYzUzY2JlMjZmZDNjNGQ5ZDRmMjI0OTRmZDgwNjVh
NTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNTU0FnZW50LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTA5LDIwICs1MDksMTggQEAgdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBp
bnQgbm8KICAgICAgICAgLy8gSW5oZXJpdGVkIHN0eWxlcy4KICAgICAgICAgaWYgKCFpbmNsdWRl
SW5oZXJpdGVkIHx8ICppbmNsdWRlSW5oZXJpdGVkKSB7CiAgICAgICAgICAgICBhdXRvIGVudHJp
ZXMgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5
bGVFbnRyeT46OmNyZWF0ZSgpOwotICAgICAgICAgICAgRWxlbWVudCogcGFyZW50RWxlbWVudCA9
IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKLSAgICAgICAgICAgIHdoaWxlIChwYXJlbnRFbGVt
ZW50KSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgcGFyZW50U3R5bGVSZXNvbHZlciA9IHBhcmVu
dEVsZW1lbnQtPnN0eWxlUmVzb2x2ZXIoKTsKLSAgICAgICAgICAgICAgICBhdXRvIHBhcmVudE1h
dGNoZWRSdWxlcyA9IHBhcmVudFN0eWxlUmVzb2x2ZXIuc3R5bGVSdWxlc0ZvckVsZW1lbnQocGFy
ZW50RWxlbWVudCwgU3R5bGU6OlJlc29sdmVyOjpBbGxDU1NSdWxlcyk7CisgICAgICAgICAgICBm
b3IgKGF1dG8mIGFuY2VzdG9yIDogYW5jZXN0b3JzT2ZUeXBlPEVsZW1lbnQ+KCplbGVtZW50KSkg
eworICAgICAgICAgICAgICAgIGF1dG8mIHBhcmVudFN0eWxlUmVzb2x2ZXIgPSBhbmNlc3Rvci5z
dHlsZVJlc29sdmVyKCk7CisgICAgICAgICAgICAgICAgYXV0byBwYXJlbnRNYXRjaGVkUnVsZXMg
PSBwYXJlbnRTdHlsZVJlc29sdmVyLnN0eWxlUnVsZXNGb3JFbGVtZW50KCZhbmNlc3RvciwgU3R5
bGU6OlJlc29sdmVyOjpBbGxDU1NSdWxlcyk7CiAgICAgICAgICAgICAgICAgYXV0byBlbnRyeSA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeTo6Y3JlYXRlKCkK
LSAgICAgICAgICAgICAgICAgICAgLnNldE1hdGNoZWRDU1NSdWxlcyhidWlsZEFycmF5Rm9yTWF0
Y2hlZFJ1bGVMaXN0KHBhcmVudE1hdGNoZWRSdWxlcywgc3R5bGVSZXNvbHZlciwgKnBhcmVudEVs
ZW1lbnQsIFBzZXVkb0lkOjpOb25lKSkKKyAgICAgICAgICAgICAgICAgICAgLnNldE1hdGNoZWRD
U1NSdWxlcyhidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KHBhcmVudE1hdGNoZWRSdWxlcywg
c3R5bGVSZXNvbHZlciwgYW5jZXN0b3IsIFBzZXVkb0lkOjpOb25lKSkKICAgICAgICAgICAgICAg
ICAgICAgLnJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICBpZiAoaXM8U3R5bGVkRWxlbWVudD4o
KnBhcmVudEVsZW1lbnQpICYmIGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KCpwYXJlbnRFbGVtZW50
KS5jc3NvbVN0eWxlKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byYgc3R5
bGVTaGVldCA9IGFzSW5zcGVjdG9yU3R5bGVTaGVldChkb3duY2FzdDxTdHlsZWRFbGVtZW50Pigq
cGFyZW50RWxlbWVudCkpOworICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZWRFbGVtZW50Pihh
bmNlc3RvcikgJiYgZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oYW5jZXN0b3IpLmNzc29tU3R5bGUo
KS5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvJiBzdHlsZVNoZWV0ID0gYXNJ
bnNwZWN0b3JTdHlsZVNoZWV0KGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KGFuY2VzdG9yKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zZXRJbmxpbmVTdHlsZShzdHlsZVNoZWV0LmJ1aWxk
T2JqZWN0Rm9yU3R5bGUoc3R5bGVTaGVldC5zdHlsZUZvcklkKEluc3BlY3RvckNTU0lkKHN0eWxl
U2hlZXQuaWQoKSwgMCkpKSk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
ZW50cmllcy0+YWRkSXRlbShXVEZNb3ZlKGVudHJ5KSk7Ci0gICAgICAgICAgICAgICAgcGFyZW50
RWxlbWVudCA9IHBhcmVudEVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaW5oZXJpdGVkRW50cmllcyA9IFdURk1vdmUoZW50cmllcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCmluZGV4IDBmNDZhMzAzM2FlZjQwMDdmNmViODM3YTYxMDVmMDVhMGM1OTA2N2YuLmQyY2E1
YmJlMTA5YWFhZDE4MmJhZTE4NWM0ZDUyZDhhYWVjZGE4NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEpvc2VwaCBQZWNvcmFybwog
ICoKQEAgLTExMTQsNyArMTExNCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Omluc3BlY3Qo
Tm9kZSogaW5zcGVjdGVkTm9kZSkKICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IGluc3BlY3RlZE5v
ZGU7CiAgICAgc2V0U2VhcmNoaW5nRm9yTm9kZShpZ25vcmVkLCBmYWxzZSwgbnVsbHB0ciwgZmFs
c2UpOwogCi0gICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6RUxFTUVOVF9OT0RFICYm
IG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6RE9DVU1FTlRfTk9ERSkKKyAgICBpZiAoIW5vZGUt
PmlzRWxlbWVudE5vZGUoKSAmJiAhbm9kZS0+aXNEb2N1bWVudE5vZGUoKSkKICAgICAgICAgbm9k
ZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKICAgICBtX25vZGVUb0ZvY3VzID0gbm9kZTsKIApAQCAt
MTE1OSw3ICsxMTU5LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6bW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCB1bnMKIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OmhpZ2hsaWdodE1vdXNlZE92ZXJOb2RlKCkKIHsKICAgICBOb2RlKiBub2RlID0g
bV9tb3VzZWRPdmVyTm9kZS5nZXQoKTsKLSAgICB3aGlsZSAobm9kZSAmJiBub2RlLT5ub2RlVHlw
ZSgpID09IE5vZGU6OlRFWFRfTk9ERSkKKyAgICBpZiAobm9kZSAmJiBub2RlLT5pc1RleHROb2Rl
KCkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgaWYgKG5vZGUgJiYg
bV9pbnNwZWN0TW9kZUhpZ2hsaWdodENvbmZpZykKICAgICAgICAgbV9vdmVybGF5LT5oaWdobGln
aHROb2RlKG5vZGUsICptX2luc3BlY3RNb2RlSGlnaGxpZ2h0Q29uZmlnKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCAzZjQ2OTljZjgzMjk4ZjA0ZTI3
NGFlMDBlZjk1YTU1NDc1YTY1ZjNkLi4wNmY0NmQ0YTU2OWQwZmEwZGMxN2JkNjU5YjY1ODgxNTU3
MTZhNmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBA
IC0zMCwxMiArMzAsMTIgQEAKICNpbmNsdWRlICJDYWNoZWRGb250Q2xpZW50LmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUxvYWRlci5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNpbmNs
dWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgotI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIldPRkZGaWxlRm9ybWF0LmgiCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHAKaW5kZXggMDEyZDJmMzFmZTFjZTk5YTc3ZTg1NWZjNmVjZWZiODZmMDc2ZGViNi4u
YzhmOWJhNTMwMDVmOGQ3YmM5MzBkMDk2ZDVmMjEzYzkzODI1YTllZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtMjksNiArMjksNyBAQAog
CiAjaWYgRU5BQkxFKFNWR19GT05UUykKIAorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEu
aCIKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgpAQCAtMzcsNyArMzgsNiBAQAogI2luY2x1ZGUg
IlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKLSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJTVkdUb09URkZvbnRDb252ZXJzaW9uLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAK
aW5kZXggZGFkMDAyYjE5NjhhZDBiNDI2ZmIxMmI3YTY1YTBmMzczODZiZThiYi4uMDU5ZjQ1ZDYy
OWY1ODg2NWI0MDdjY2JlMWE3MmFkMmVkZjUzZDZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMjYwLDYgKzEyNjAsMTUgQEAgdm9pZCBEcmFnQ29udHJvbGxl
cjo6YmVnaW5EcmFnKERyYWdJdGVtIGRyYWdJdGVtLCBGcmFtZSYgZnJhbWUsIGNvbnN0IEludFBv
aW50JgogICAgIGNsaWVudCgpLmJlZ2luRHJhZyhXVEZNb3ZlKGRyYWdJdGVtKSwgZnJhbWUsIG1v
dXNlRG93blBvaW50SW5Sb290Vmlld0Nvb3JkaW5hdGVzLCBtb3VzZURyYWdnZWRQb2ludEluUm9v
dFZpZXdDb29yZGluYXRlcywgZGF0YVRyYW5zZmVyLCBkcmFnU291cmNlQWN0aW9uKTsKIH0KIAor
c3RhdGljIFJlZlB0cjxFbGVtZW50PiBjb250YWluaW5nTGlua0VsZW1lbnQoRWxlbWVudCYgZWxl
bWVudCkKK3sKKyAgICBmb3IgKGF1dG8mIGN1cnJlbnRFbGVtZW50IDogbGluZWFnZU9mVHlwZTxF
bGVtZW50PihlbGVtZW50KSkgeworICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuaXNMaW5rKCkp
CisgICAgICAgICAgICByZXR1cm4gJmN1cnJlbnRFbGVtZW50OworICAgIH0KKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogdm9pZCBEcmFnQ29udHJvbGxlcjo6ZG9TeXN0ZW1EcmFnKERyYWdJbWFn
ZSBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdMb2MsIGNvbnN0IEludFBvaW50JiBldmVudFBv
cywgRnJhbWUmIGZyYW1lLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBQcm9taXNlZEF0dGFjaG1l
bnRJbmZvJiYgcHJvbWlzZWRBdHRhY2htZW50SW5mbykKIHsKICAgICBtX2RpZEluaXRpYXRlRHJh
ZyA9IHRydWU7CkBAIC0xMjk2LDE4ICsxMzA1LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZG9T
eXN0ZW1EcmFnKERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdMb2MsIGNvbnMK
ICAgICAgICAgICAgIGl0ZW0uZHJhZ1ByZXZpZXdGcmFtZUluUm9vdFZpZXdDb29yZGluYXRlcyA9
IGVsZW1lbnQtPmJvdW5kc0luUm9vdFZpZXdTcGFjZSgpOwogICAgICAgICB9CiAKLSAgICAgICAg
UmVmUHRyPEVsZW1lbnQ+IGxpbms7Ci0gICAgICAgIGlmIChlbGVtZW50LT5pc0xpbmsoKSkKLSAg
ICAgICAgICAgIGxpbmsgPSBlbGVtZW50OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZv
ciAoYXV0byYgY3VycmVudEVsZW1lbnQgOiBlbGVtZW50TGluZWFnZShlbGVtZW50LmdldCgpKSkg
ewotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5pc0xpbmsoKSkgewotICAgICAg
ICAgICAgICAgICAgICBsaW5rID0gJmN1cnJlbnRFbGVtZW50OwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKGxpbmspIHsKKyAgICAgICAgaWYgKGF1dG8gbGluayA9IGNvbnRhaW5pbmdMaW5r
RWxlbWVudCgqZWxlbWVudCkpIHsKICAgICAgICAgICAgIGF1dG8gdGl0bGVBdHRyaWJ1dGUgPSBs
aW5rLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6dGl0bGVBdHRy
KTsKICAgICAgICAgICAgIGl0ZW0udGl0bGUgPSB0aXRsZUF0dHJpYnV0ZS5pc0VtcHR5KCkgPyBs
aW5rLT5pbm5lclRleHQoKSA6IHRpdGxlQXR0cmlidXRlLnN0cmluZygpOwogICAgICAgICAgICAg
aXRlbS51cmwgPSBmcmFtZS5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXMobGluay0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xs
U25hcE9mZnNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9s
bFNuYXBPZmZzZXRzLmNwcAppbmRleCBkMjZjZWZlNGYyMDIzNmM3YzQzYWM1ZTI1ZWU3MTZlZGQ1
NDBlMTBmLi5mODBhMTg1NDg5OGNjODRmNWQwZTBmNjcwYmZhZjI1MzA2MGFmMTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zm
c2V0cy5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJBeGlzU2Nyb2xsU25hcE9mZnNl
dHMuaCIKIAogI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSFRN
TENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkxlbmd0
aC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQuaAppbmRleCA3YjMyYjMzZDMxNWFiOTVkMmEw
YmU5OGQzZTJmMGE1MGJhMGI5ZWQzLi41ZWQ4MDI1YmU3OTAyOTI3ZjVkNjUzYjk3NjllMTEzZjJj
YWVjOGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dl
c3Rpb25zQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YUxpc3RTdWdn
ZXN0aW9uc0NsaWVudC5oCkBAIC0yNywxMSArMjcsMTIgQEAKIAogI2lmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKQogCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIEludFJlY3Q7CisKIGNsYXNzIERhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQgewogcHVibGlj
OgogICAgIHZpcnR1YWwgfkRhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQoKSA9IGRlZmF1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCA2MDk3YjRjNmEzZTll
YmQzMTkyOTI2ZmUzOTM5YjhiYjVkN2ZlZWM1Li4yNjc0MzM1MmU0NTcxYzFlNzQwYmZkYjYzZjBj
YjY0MGJjN2Y0YzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE0IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNTQsNyArNTQsNiBAQAog
I2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSNpbmNsdWRlICJIVE1MQ29s
bGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEYXRhTGlzdEVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKQEAgLTEx
MTcsMTIgKzExMTYsOSBAQCB2b2lkIFJlbmRlclRoZW1lOjpwYWludFNsaWRlclRpY2tzKGNvbnN0
IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludAogICAgICAgICB0aWNrUmVn
aW9uU2lkZU1hcmdpbiA9IHRyYWNrQm91bmRzLnkoKSArICh0aHVtYlNpemUud2lkdGgoKSAtIHRp
Y2tTaXplLndpZHRoKCkgKiB6b29tRmFjdG9yKSAvIDIuMDsKICAgICAgICAgdGlja1JlZ2lvbldp
ZHRoID0gdHJhY2tCb3VuZHMuaGVpZ2h0KCkgLSB0aHVtYlNpemUud2lkdGgoKTsKICAgICB9Ci0g
ICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBvcHRpb25zID0gZGF0YUxpc3Qub3B0aW9ucygpOwogICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgp
KTsKICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihvLnN0eWxlKCkudmlzaXRl
ZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpKTsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBOb2RlKiBub2RlID0gb3B0aW9ucy0+aXRlbShpKTsgaSsrKSB7
Ci0gICAgICAgIEFTU0VSVChpczxIVE1MT3B0aW9uRWxlbWVudD4oKm5vZGUpKTsKLSAgICAgICAg
SFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbkVsZW1lbnQgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxl
bWVudD4oKm5vZGUpOworICAgIGZvciAoYXV0byYgb3B0aW9uRWxlbWVudCA6IGRhdGFMaXN0LnN1
Z2dlc3Rpb25zKCkpIHsKICAgICAgICAgU3RyaW5nIHZhbHVlID0gb3B0aW9uRWxlbWVudC52YWx1
ZSgpOwogICAgICAgICBpZiAoIWlucHV0LmlzVmFsaWRWYWx1ZSh2YWx1ZSkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
clN1cHBvcnQuY3BwCmluZGV4IDg4Y2EzZTUwMzczNzMwMTVjNTIwMzBmMDU0OGMwZmIzMzJlMTA3
NmQuLmZjYWYwMGM1MGJiZjYwM2VmM2EzYTlmZDgzNGQzYzk5ZTMzM2I5NTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcApAQCAtNiw2
ICs2LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0
Lm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0y
MDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE4IEFkb2JlIFN5
c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtMjYsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR1Jl
bmRlclN1cHBvcnQuaCIKIAorI2luY2x1ZGUgIkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQ2hpbGRJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKQEAgLTQ4MSw2ICs0ODMsNyBAQCB2b2lk
IFNWR1JlbmRlclN1cHBvcnQ6OnN0eWxlQ2hhbmdlZChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
Y29uc3QgUmVuZGVyU3R5bGUqCiB9CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQorCiBi
b29sIFNWR1JlbmRlclN1cHBvcnQ6Omlzb2xhdGVzQmxlbmRpbmcoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlKQogewogICAgIHJldHVybiBzdHlsZS5zdmdTdHlsZSgpLmlzb2xhdGVzQmxlbmRpbmco
KSB8fCBzdHlsZS5oYXNGaWx0ZXIoKSB8fCBzdHlsZS5oYXNCbGVuZE1vZGUoKSB8fCBzdHlsZS5v
cGFjaXR5KCkgPCAxLjBmOwpAQCAtNDkxLDIwICs0OTQsMTYgQEAgdm9pZCBTVkdSZW5kZXJTdXBw
b3J0Ojp1cGRhdGVNYXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyhjb25zdCBSZW5k
ZXJFbGUKICAgICBBU1NFUlQocmVuZGVyZXIuZWxlbWVudCgpKTsKICAgICBBU1NFUlQocmVuZGVy
ZXIuZWxlbWVudCgpLT5pc1NWR0VsZW1lbnQoKSk7CiAKLSAgICBib29sIG1hc2tlZEFuY2VzdG9y
U2hvdWxkSXNvbGF0ZUJsZW5kaW5nID0gcmVuZGVyZXIuc3R5bGUoKS5oYXNCbGVuZE1vZGUoKTsK
LSAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gcmVuZGVyZXIuZWxlbWVudCgpLT5wYXJlbnRFbGVt
ZW50KCk7IGFuY2VzdG9yICYmIGFuY2VzdG9yLT5pc1NWR0VsZW1lbnQoKTsgYW5jZXN0b3IgPSBh
bmNlc3Rvci0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIGlmICghZG93bmNhc3Q8U1ZHRWxl
bWVudD4oKmFuY2VzdG9yKS5pc1NWR0dyYXBoaWNzRWxlbWVudCgpKQotICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgY29uc3QgYXV0byogc3R5bGUgPSBhbmNlc3Rvci0+Y29tcHV0ZWRT
dHlsZSgpOworICAgIGZvciAoYXV0byYgYW5jZXN0b3IgOiBhbmNlc3RvcnNPZlR5cGU8U1ZHR3Jh
cGhpY3NFbGVtZW50PigqcmVuZGVyZXIuZWxlbWVudCgpKSkgeworICAgICAgICBhdXRvKiBzdHls
ZSA9IGFuY2VzdG9yLmNvbXB1dGVkU3R5bGUoKTsKICAgICAgICAgaWYgKCFzdHlsZSB8fCAhaXNv
bGF0ZXNCbGVuZGluZygqc3R5bGUpKQogICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
aWYgKGFuY2VzdG9yLT5jb21wdXRlZFN0eWxlKCktPnN2Z1N0eWxlKCkuaGFzTWFza2VyKCkpCi0g
ICAgICAgICAgICBkb3duY2FzdDxTVkdHcmFwaGljc0VsZW1lbnQ+KCphbmNlc3Rvcikuc2V0U2hv
dWxkSXNvbGF0ZUJsZW5kaW5nKG1hc2tlZEFuY2VzdG9yU2hvdWxkSXNvbGF0ZUJsZW5kaW5nKTsK
LQorICAgICAgICBpZiAoc3R5bGUtPnN2Z1N0eWxlKCkuaGFzTWFza2VyKCkpCisgICAgICAgICAg
ICBhbmNlc3Rvci5zZXRTaG91bGRJc29sYXRlQmxlbmRpbmcocmVuZGVyZXIuc3R5bGUoKS5oYXNC
bGVuZE1vZGUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CisKICNlbmRpZgorCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwCmluZGV4IDVlOTlmYmJkMmZl
MDM4NGI3OTBjMDAzMGMxNTZhZjZjZjU3ODQzODIuLjZiZWY0NDhlM2IxNDZkNTM5YzE5NzExNzFj
Mzk2ZmU3ZThkYjljNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52
YWxpZGF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3Iu
Y3BwCkBAIC0xNzUsOCArMTc1LDcgQEAgdm9pZCBJbnZhbGlkYXRvcjo6aW52YWxpZGF0ZVN0eWxl
Rm9yRGVzY2VuZGFudHMoRWxlbWVudCYgcm9vdCwgU2VsZWN0b3JGaWx0ZXIqIGYKIHsKICAgICBW
ZWN0b3I8RWxlbWVudCosIDIwPiBwYXJlbnRTdGFjazsKICAgICBFbGVtZW50KiBwcmV2aW91c0Vs
ZW1lbnQgPSAmcm9vdDsKLSAgICBhdXRvIGRlc2NlbmRhbnRzID0gZGVzY2VuZGFudHNPZlR5cGU8
RWxlbWVudD4ocm9vdCk7Ci0gICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMuYmVnaW4oKSwg
ZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7IGl0ICE9IGVuZDspIHsKKyAgICBmb3IgKGF1dG8gaXQg
PSBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihyb290KS5iZWdpbigpOyBpdDsgKSB7CiAgICAg
ICAgIGF1dG8mIGRlc2NlbmRhbnQgPSAqaXQ7CiAgICAgICAgIGF1dG8qIHBhcmVudCA9IGRlc2Nl
bmRhbnQucGFyZW50RWxlbWVudCgpOwogICAgICAgICBpZiAocGFyZW50U3RhY2suaXNFbXB0eSgp
IHx8IHBhcmVudFN0YWNrLmxhc3QoKSAhPSBwYXJlbnQpIHsKQEAgLTI3NSwxMiArMjc0LDEwIEBA
IHZvaWQgSW52YWxpZGF0b3I6OmludmFsaWRhdGVTdHlsZVdpdGhNYXRjaEVsZW1lbnQoRWxlbWVu
dCYgZWxlbWVudCwgTWF0Y2hFbGVtZW50CiAgICAgICAgIGZvciAoYXV0byogc2libGluZyA9IGVs
ZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5u
ZXh0RWxlbWVudFNpYmxpbmcoKSkKICAgICAgICAgICAgIGludmFsaWRhdGVJZk5lZWRlZCgqc2li
bGluZywgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWF0Y2hFbGVtZW50OjpB
bnlTaWJsaW5nOiB7Ci0gICAgICAgIGF1dG8gcGFyZW50Q2hpbGRyZW4gPSBjaGlsZHJlbk9mVHlw
ZTxFbGVtZW50PigqZWxlbWVudC5wYXJlbnROb2RlKCkpOwotICAgICAgICBmb3IgKGF1dG8mIHBh
cmVudENoaWxkIDogcGFyZW50Q2hpbGRyZW4pCisgICAgY2FzZSBNYXRjaEVsZW1lbnQ6OkFueVNp
Ymxpbmc6CisgICAgICAgIGZvciAoYXV0byYgcGFyZW50Q2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxF
bGVtZW50PigqZWxlbWVudC5wYXJlbnROb2RlKCkpKQogICAgICAgICAgICAgaW52YWxpZGF0ZUlm
TmVlZGVkKHBhcmVudENoaWxkLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQogICAg
IGNhc2UgTWF0Y2hFbGVtZW50OjpQYXJlbnRTaWJsaW5nOgogICAgICAgICBmb3IgKGF1dG8qIHNp
YmxpbmcgPSBlbGVtZW50Lm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0g
c2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIGF1dG8gc2libGlu
Z0NoaWxkcmVuID0gY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4oKnNpYmxpbmcpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBmM2YzNjIxODNkNTA2MTc0YTQ2NjY0NjFj
NzE3YmU3OWIzZTYxZjE0Li42NTFmOGYxZTJkNzg5MjE5OTA2NTZhZmE0ZmQ5ZTY5ZWRjYWMzYzI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTgzLDggKzE4Myw3
IEBAIGlubGluZSB2b2lkIFJlc29sdmVyOjpTdGF0ZTo6c2V0UGFyZW50U3R5bGUoc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBwYXJlbnRTCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0F0U2hh
ZG93Qm91bmRhcnkoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBhdXRvKiBwYXJlbnRO
b2RlID0gZWxlbWVudC5wYXJlbnROb2RlKCk7Ci0gICAgcmV0dXJuIHBhcmVudE5vZGUgJiYgcGFy
ZW50Tm9kZS0+aXNTaGFkb3dSb290KCk7CisgICAgcmV0dXJuIGlzPFNoYWRvd1Jvb3Q+KGVsZW1l
bnQucGFyZW50Tm9kZSgpKTsKIH0KIAogQnVpbGRlckNvbnRleHQgUmVzb2x2ZXI6OmJ1aWxkZXJD
b250ZXh0KGNvbnN0IFN0YXRlJiBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCmlu
ZGV4IDk5ZGIzNTliMjA0NjE4NDBmY2NhMTU4OGVlMTBmNTFlZWYxNTVmODYuLjZiNGI2MjU2OTJk
N2FjYTYyZjE3OWE5YTE0MzFiOWI3MmZlZWJlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50
LmNwcApAQCAtMTAyLDkgKzEwMiw4IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAKIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBTVkdBRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYg
c3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7Ci0gICAgaWYgKHBhcmVudE5vZGUo
KSAmJiBwYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgpICYmIGRvd25jYXN0PFNWR0VsZW1lbnQ+
KCpwYXJlbnROb2RlKCkpLmlzVGV4dENvbnRlbnQoKSkKKyAgICBpZiAoaXM8U1ZHRWxlbWVudD4o
cGFyZW50Tm9kZSgpKSAmJiBkb3duY2FzdDxTVkdFbGVtZW50PigqcGFyZW50Tm9kZSgpKS5pc1Rl
eHRDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdJbmxp
bmU+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7Ci0KICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDJmZmNiYWM1MjExYzhhMDVhZTQ2
MGQzMGNhMDQyNmU0NjdjZWExODMuLjIyMjQxZGFkNDE3ZmM3ZTI2OGJkNjA3ZWE1MzA3YmIyYTky
YjQ1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA4IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAw
OSBDYW1lcm9uIE1jQ29ybWFjayA8Y2FtQG1jYy5pZC5hdT4KICAqIENvcHlyaWdodCAoQykgMjAx
MyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtOTE2LDE4ICs5
MTYsMTAgQEAgdm9pZCBTVkdFbGVtZW50Ojp1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlv
bihib29sIGhhc1JlbGF0aXZlTGVuZ3RocywgU1ZHRWwKICAgICAgICAgbV9lbGVtZW50c1dpdGhS
ZWxhdGl2ZUxlbmd0aHMucmVtb3ZlKGVsZW1lbnQpOwogICAgIH0KIAotICAgIGlmICghZWxlbWVu
dC0+aXNTVkdHcmFwaGljc0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRmlu
ZCBmaXJzdCBzdHlsZWQgcGFyZW50IG5vZGUsIGFuZCBub3RpZnkgaXQgdGhhdCB3ZSd2ZSBjaGFu
Z2VkIG91ciByZWxhdGl2ZSBsZW5ndGggc3RhdGUuCi0gICAgYXV0byBub2RlID0gbWFrZVJlZlB0
cihwYXJlbnROb2RlKCkpOwotICAgIHdoaWxlIChub2RlKSB7Ci0gICAgICAgIGlmICghbm9kZS0+
aXNTVkdFbGVtZW50KCkpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAvLyBSZWdpc3Rl
ciB1cyBpbiB0aGUgcGFyZW50IGVsZW1lbnQgbWFwLgotICAgICAgICBkb3duY2FzdDxTVkdFbGVt
ZW50Pigqbm9kZSkudXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oaGFzUmVsYXRpdmVM
ZW5ndGhzLCB0aGlzKTsKLSAgICAgICAgYnJlYWs7CisgICAgaWYgKGVsZW1lbnQtPmlzU1ZHR3Jh
cGhpY3NFbGVtZW50KCkpIHsKKyAgICAgICAgYXV0byBwYXJlbnQgPSBtYWtlUmVmUHRyKHBhcmVu
dE5vZGUoKSk7CisgICAgICAgIGlmIChpczxTVkdFbGVtZW50PihwYXJlbnQpKQorICAgICAgICAg
ICAgZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnBhcmVudCkudXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5m
b3JtYXRpb24oaGFzUmVsYXRpdmVMZW5ndGhzLCB0aGlzKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5oCmluZGV4IDk4ZmNmZmJjYTRkNzEyNjdlNzQ1ZmVkYjliMzBlODBkMGM5YjYy
Y2YuLjYzOTE4YWE4OGJmMTk0YTI5ZTY0MzBhYjFlOTk2MGI4OGNiZWRlMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaApAQCAtMTQ1LDYgKzE0NSw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgY2xh
c3NOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc05hbWUtPmN1cnJlbnRWYWx1ZSgpOyB9CiAg
ICAgU1ZHQW5pbWF0ZWRTdHJpbmcmIGNsYXNzTmFtZUFuaW1hdGVkKCkgeyByZXR1cm4gbV9jbGFz
c05hbWU7IH0KIAorICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lk
ID0gUHNldWRvSWQ6Ok5vbmUpIGZpbmFsOworCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5TVkdFbGVtZW50
KCk7CkBAIC0xNzMsOCArMTc1LDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgd2lsbFJlY2FsY1N0
eWxlKFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIGNvbnN0IFJlbmRl
clN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmUpIGZpbmFsOwot
CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVGFyZ2V0KCkgeyB9CiAKICAgICB2b2lkIGJ1aWxkUGVu
ZGluZ1Jlc291cmNlc0lmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAK
aW5kZXggMWU3NTUzMzkwZTliNWJkYmE4M2NhMjY4MTZjMTIyZTEzZmMxZWRhNy4uMzlhZmJkMDNi
NDFlYTBmNzg2NTRkZjMyYzBmMjUxZDIzMTFiMGUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VF
bGVtZW50LmNwcApAQCAtMzMxLDggKzMzMSw3IEBAIHN0YXRpYyB2b2lkIHJlbW92ZURpc2FsbG93
ZWRFbGVtZW50c0Zyb21TdWJ0cmVlKFNWR0VsZW1lbnQmIHN1YnRyZWUpCiAgICAgQVNTRVJUKCFz
dWJ0cmVlLmlzQ29ubmVjdGVkKCkpOwogCiAgICAgVmVjdG9yPEVsZW1lbnQqPiBkaXNhbGxvd2Vk
RWxlbWVudHM7Ci0gICAgYXV0byBkZXNjZW5kYW50cyA9IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1l
bnQ+KHN1YnRyZWUpOwotICAgIGZvciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmJlZ2luKCksIGVu
ZCA9IGRlc2NlbmRhbnRzLmVuZCgpOyBpdCAhPSBlbmQ7ICkgeworICAgIGZvciAoYXV0byBpdCA9
IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KHN1YnRyZWUpLmJlZ2luKCk7IGl0OyApIHsKICAg
ICAgICAgaWYgKGlzRGlzYWxsb3dlZEVsZW1lbnQoKml0KSkgewogICAgICAgICAgICAgZGlzYWxs
b3dlZEVsZW1lbnRzLmFwcGVuZCgmKml0KTsKICAgICAgICAgICAgIGl0LnRyYXZlcnNlTmV4dFNr
aXBwaW5nQ2hpbGRyZW4oKTsKQEAgLTQ1Miw5ICs0NTEsOCBAQCBzdGF0aWMgdm9pZCBjbG9uZURh
dGFBbmRDaGlsZHJlbihTVkdFbGVtZW50JiByZXBsYWNlbWVudENsb25lLCBTVkdFbGVtZW50JiBv
cmlnaQogdm9pZCBTVkdVc2VFbGVtZW50OjpleHBhbmRVc2VFbGVtZW50c0luU2hhZG93VHJlZSgp
IGNvbnN0CiB7CiAgICAgYXV0byBkZXNjZW5kYW50cyA9IGRlc2NlbmRhbnRzT2ZUeXBlPFNWR1Vz
ZUVsZW1lbnQ+KCp1c2VyQWdlbnRTaGFkb3dSb290KCkpOwotICAgIGZvciAoYXV0byBpdCA9IGRl
c2NlbmRhbnRzLmJlZ2luKCksIGVuZCA9IGRlc2NlbmRhbnRzLmVuZCgpOyBpdCAhPSBlbmQ7ICkg
eworICAgIGZvciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmJlZ2luKCk7IGl0OyApIHsKICAgICAg
ICAgU1ZHVXNlRWxlbWVudCYgb3JpZ2luYWxDbG9uZSA9ICppdDsKLSAgICAgICAgaXQgPSBlbmQ7
IC8vIEVmZmljaWVudGx5IHF1aWV0cyBhc3NlcnRpb25zIGR1ZSB0byB0aGUgb3V0c3RhbmRpbmcg
aXRlcmF0b3IuCiAKICAgICAgICAgYXV0byogdGFyZ2V0ID0gb3JpZ2luYWxDbG9uZS5maW5kVGFy
Z2V0KCk7CiAKQEAgLTQ4NSw5ICs0ODMsOCBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmV4cGFuZFVz
ZUVsZW1lbnRzSW5TaGFkb3dUcmVlKCkgY29uc3QKIHZvaWQgU1ZHVXNlRWxlbWVudDo6ZXhwYW5k
U3ltYm9sRWxlbWVudHNJblNoYWRvd1RyZWUoKSBjb25zdAogewogICAgIGF1dG8gZGVzY2VuZGFu
dHMgPSBkZXNjZW5kYW50c09mVHlwZTxTVkdTeW1ib2xFbGVtZW50PigqdXNlckFnZW50U2hhZG93
Um9vdCgpKTsKLSAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5iZWdpbigpLCBlbmQgPSBk
ZXNjZW5kYW50cy5lbmQoKTsgaXQgIT0gZW5kOyApIHsKKyAgICBmb3IgKGF1dG8gaXQgPSBkZXNj
ZW5kYW50cy5iZWdpbigpOyBpdDsgKSB7CiAgICAgICAgIFNWR1N5bWJvbEVsZW1lbnQmIG9yaWdp
bmFsQ2xvbmUgPSAqaXQ7Ci0gICAgICAgIGl0ID0gZW5kOyAvLyBFZmZpY2llbnRseSBxdWlldHMg
YXNzZXJ0aW9ucyBkdWUgdG8gdGhlIG91dHN0YW5kaW5nIGl0ZXJhdG9yLgogCiAgICAgICAgIC8v
IFNwZWM6IFRoZSByZWZlcmVuY2VkICdzeW1ib2wnIGFuZCBpdHMgY29udGVudHMgYXJlIGRlZXAt
Y2xvbmVkIGludG8gdGhlIGdlbmVyYXRlZCB0cmVlLAogICAgICAgICAvLyB3aXRoIHRoZSBleGNl
cHRpb24gdGhhdCB0aGUgJ3N5bWJvbCcgaXMgcmVwbGFjZWQgYnkgYW4gJ3N2ZycuIFRoaXMgZ2Vu
ZXJhdGVkICdzdmcnIHdpbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlci5jcHAKaW5kZXggNzdkOTRhZmU4NWViYTE2NDI2YTQxOTdkN2Y5MDU2OGMzYzM2
ZDBhZC4uM2Y3MjMxMzFhMjI2MjIzYWMwZGY2YjUwYzJkOTZhMDJlMmE3NzcwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTI3NCwy
MiArMjc0LDI0IEBAIGJvb2wgWE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVu
dChjb25zdCBTdHJpbmcmIGNodW5rLCBEb2N1bWVudEZyYWdtCiAKICAgICBIYXNoTWFwPEF0b21T
dHJpbmcsIEF0b21TdHJpbmc+IHByZWZpeFRvTmFtZXNwYWNlTWFwOwogICAgIEF0b21TdHJpbmcg
ZGVmYXVsdE5hbWVzcGFjZVVSSTsKLSAgICBib29sIHN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVz
cGFjZVVSSSA9IGZhbHNlOwotICAgIAotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnRM
aW5lYWdlKGNvbnRleHRFbGVtZW50KSkgewotICAgICAgICBpZiAoaXM8U1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQ+KGVsZW1lbnQpKQotICAgICAgICAgICAgc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFt
ZXNwYWNlVVJJID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBpZiAoIXN0b3BMb29raW5nRm9yRGVmYXVs
dE5hbWVzcGFjZVVSSSkKLSAgICAgICAgICAgIGRlZmF1bHROYW1lc3BhY2VVUkkgPSBlbGVtZW50
Lm5hbWVzcGFjZVVSSSgpOwotCi0gICAgICAgIGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGVzKCkp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYg
YXR0cmlidXRlIDogZWxlbWVudC5hdHRyaWJ1dGVzSXRlcmF0b3IoKSkgewotICAgICAgICAgICAg
aWYgKGF0dHJpYnV0ZS5wcmVmaXgoKSA9PSB4bWxuc0F0b20oKSkKLSAgICAgICAgICAgICAgICBw
cmVmaXhUb05hbWVzcGFjZU1hcC5zZXQoYXR0cmlidXRlLmxvY2FsTmFtZSgpLCBhdHRyaWJ1dGUu
dmFsdWUoKSk7Ci0gICAgICAgICAgICBlbHNlIGlmICghc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFt
ZXNwYWNlVVJJICYmIGF0dHJpYnV0ZS5wcmVmaXgoKSA9PSB4bWxuc0F0b20oKSkKLSAgICAgICAg
ICAgICAgICBkZWZhdWx0TmFtZXNwYWNlVVJJID0gYXR0cmlidXRlLnZhbHVlKCk7CisgICAgaWYg
KGNvbnRleHRFbGVtZW50KSB7CisgICAgICAgIGJvb2wgc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFt
ZXNwYWNlVVJJID0gZmFsc2U7CisKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbGluZWFn
ZU9mVHlwZTxFbGVtZW50PigqY29udGV4dEVsZW1lbnQpKSB7CisgICAgICAgICAgICBpZiAoaXM8
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICAgICAgICAgIHN0b3BM
b29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVSSSA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlm
ICghc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFtZXNwYWNlVVJJKQorICAgICAgICAgICAgICAgIGRl
ZmF1bHROYW1lc3BhY2VVUkkgPSBlbGVtZW50Lm5hbWVzcGFjZVVSSSgpOworCisgICAgICAgICAg
ICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlcygpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogZWxlbWVu
dC5hdHRyaWJ1dGVzSXRlcmF0b3IoKSkgeworICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUu
cHJlZml4KCkgPT0geG1sbnNBdG9tKCkpCisgICAgICAgICAgICAgICAgICAgIHByZWZpeFRvTmFt
ZXNwYWNlTWFwLnNldChhdHRyaWJ1dGUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZS52YWx1ZSgpKTsK
KyAgICAgICAgICAgICAgICBlbHNlIGlmICghc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFtZXNwYWNl
VVJJICYmIGF0dHJpYnV0ZS5wcmVmaXgoKSA9PSB4bWxuc0F0b20oKSkKKyAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdE5hbWVzcGFjZVVSSSA9IGF0dHJpYnV0ZS52YWx1ZSgpOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3Bw
CmluZGV4IDNmNWI2MTgxZTA2ZTBhODQ2ODhiZGE5MTZmMTBkODdhNjFkMTRiZTcuLjZiMjc3M2Vj
OTczNTE4YTAxZTE0NTU0MDUyNzI1ZTU1OTQwNmJjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuY3BwCkBAIC01NTksMTIgKzU1OSwxMSBAQCBzdGF0aWMgV2ViQ29yZTo6RWxlbWVu
dCogY29udGFpbmVyRWxlbWVudEZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkK
ICAgICAvLyDCpzEzLiBFbGVtZW50IFN0YXRlLgogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by93ZWJkcml2ZXIvd2ViZHJpdmVyLXNwZWMuaHRtbCNkZm4tY29udGFpbmVyLgogICAgIGlmIChp
czxXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkpIHsKLSAgICAgICAgYXV0byYg
b3B0aW9uRWxlbWVudCA9IGRvd25jYXN0PFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50PihlbGVt
ZW50KTsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICAgICAgaWYgKGF1dG8qIHBh
cmVudEVsZW1lbnQgPSBvcHRpb25FbGVtZW50Lm93bmVyRGF0YUxpc3RFbGVtZW50KCkpCisgICAg
ICAgIGlmIChhdXRvKiBwYXJlbnRFbGVtZW50ID0gV2ViQ29yZTo6YW5jZXN0b3JzT2ZUeXBlPFdl
YkNvcmU6OkhUTUxEYXRhTGlzdEVsZW1lbnQ+KGVsZW1lbnQpLmZpcnN0KCkpCiAgICAgICAgICAg
ICByZXR1cm4gcGFyZW50RWxlbWVudDsKICNlbmRpZgotICAgICAgICBpZiAoYXV0byogcGFyZW50
RWxlbWVudCA9IG9wdGlvbkVsZW1lbnQub3duZXJTZWxlY3RFbGVtZW50KCkpCisgICAgICAgIGlm
IChhdXRvKiBwYXJlbnRFbGVtZW50ID0gZG93bmNhc3Q8V2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1l
bnQ+KGVsZW1lbnQpLm93bmVyU2VsZWN0RWxlbWVudCgpKQogICAgICAgICAgICAgcmV0dXJuIHBh
cmVudEVsZW1lbnQ7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdl
ci5jcHAKaW5kZXggZjUxOTQxZTZiNGVjMTIxOWQyYmJkYTBmYTk5NTdkYzUzODI3Yzc4Yi4uZDBj
ZmU5ZDE3M2FkOTc4YjU4NjZkZTVmNmJmMzQ1NDI5NzgyNmQzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0NvbG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9FbGVtZW50SXRlcmF0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Z1bGxzY3JlZW5NYW5h
Z2VyLmg+CkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJPYmplY3Qu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
dHRpbmdzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9UeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IuaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAjaW5jbHVkZSAiUGxheWJhY2tTZXNzaW9u
TWFuYWdlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA4ZjUxMDY3YTM5OThjZmIzYWE1
ZmU3MDE0ZjM2YjlhZDY3NTZiMzQ0Li5mYjhmNzZkNTg5ZTczYTlhMmQ5NTczMGYwZDFmNWU4NzZj
NjVlOGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzk1LDcgKzc5NSw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxDb2xvckNob29zZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9v
c2VyKENvbG9yQ2hvb3NlckNsCiAKIHN0ZDo6dW5pcXVlX3B0cjxEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKERh
dGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1
ZTxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+KCZtX3BhZ2UsICZjbGllbnQpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4obV9wYWdlLCBjbGll
bnQpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
ci5jcHAKaW5kZXggYWViODczN2FkZDQ3M2MwM2FiNmUxMTc1MmZmMGMyMjRjOGRlMDgxOC4uYjIw
YjBhY2Y4OGE0OWZmNTBlMzU0MTU2ZjQyMWI4NmEwNjExZWYzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBp
Y2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNDcgKzM1LDQ1IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
cjo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKFdlYlBhZ2UqIHBhZ2UsIERhdGFMaXN0U3Vn
Z2VzdGlvbnNDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVu
dChjbGllbnQpCitXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OldlYkRhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlcihXZWJQYWdlJiBwYWdlLCBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xp
ZW50JiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3BhZ2UocGFnZSkK
IHsKIH0KIAotV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjp+V2ViRGF0YUxpc3RTdWdnZXN0
aW9uUGlja2VyKCkgeyB9Ci0KLXZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpoYW5k
bGVLZXlkb3duV2l0aElkZW50aWZpZXIoY29uc3QgV1RGOjpTdHJpbmcmIGtleSkKK3ZvaWQgV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpoYW5kbGVLZXlkb3duV2l0aElkZW50aWZpZXIoY29u
c3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVLZXlk
b3duSW5EYXRhTGlzdChrZXkpLCBtX3BhZ2UtPmlkZW50aWZpZXIoKSk7CisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpIYW5kbGVLZXlkb3duSW5EYXRhTGlzdChrZXkpLCBtX3BhZ2UuaWRlbnRp
ZmllcigpKTsKIH0KIAotdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpZFNlbGVj
dE9wdGlvbihjb25zdCBXVEY6OlN0cmluZyYgc2VsZWN0ZWRPcHRpb24pCit2b2lkIFdlYkRhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0
ZWRPcHRpb24pCiB7Ci0gICAgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LT5kaWRTZWxlY3RE
YXRhTGlzdE9wdGlvbihzZWxlY3RlZE9wdGlvbik7CisgICAgbV9jbGllbnQuZGlkU2VsZWN0RGF0
YUxpc3RPcHRpb24oc2VsZWN0ZWRPcHRpb24pOwogfQogCiB2b2lkIFdlYkRhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlcjo6ZGlkQ2xvc2VTdWdnZXN0aW9ucygpCiB7Ci0gICAgbV9kYXRhTGlzdFN1Z2dl
c3Rpb25zQ2xpZW50LT5kaWRDbG9zZVN1Z2dlc3Rpb25zKCk7CisgICAgbV9jbGllbnQuZGlkQ2xv
c2VTdWdnZXN0aW9ucygpOwogfQogCiB2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6
Y2xvc2UoKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kRGF0YUxpc3RTdWdnZXN0
aW9ucygpLCBtX3BhZ2UtPmlkZW50aWZpZXIoKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpFbmREYXRhTGlzdFN1Z2dlc3Rpb25zKCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwogfQogCi12
b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlzcGxheVdpdGhBY3RpdmF0aW9uVHlw
ZShEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSB0eXBlKQordm9pZCBXZWJEYXRhTGlz
dFN1Z2dlc3Rpb25QaWNrZXI6OmRpc3BsYXlXaXRoQWN0aXZhdGlvblR5cGUoV2ViQ29yZTo6RGF0
YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUgdHlwZSkKIHsKLSAgICBpZiAoIW1fZGF0YUxp
c3RTdWdnZXN0aW9uc0NsaWVudC0+c3VnZ2VzdGlvbnMoKS5zaXplKCkpIHsKKyAgICBhdXRvIHN1
Z2dlc3Rpb25zID0gbV9jbGllbnQuc3VnZ2VzdGlvbnMoKTsKKyAgICBpZiAoc3VnZ2VzdGlvbnMu
aXNFbXB0eSgpKSB7CiAgICAgICAgIGNsb3NlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX3BhZ2UtPnNldEFjdGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcih0aGlzKTsKKyAg
ICBtX3BhZ2Uuc2V0QWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKCp0aGlzKTsKIAotICAg
IERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uIGluZm8gPSB7IHR5cGUsIG1fZGF0YUxpc3RT
dWdnZXN0aW9uc0NsaWVudC0+c3VnZ2VzdGlvbnMoKSwgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xp
ZW50LT5lbGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpIH07Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTaG93RGF0YUxpc3RTdWdnZXN0aW9ucyhpbmZvKSwgbV9wYWdlLT5pZGVu
dGlmaWVyKCkpOworICAgIFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uIGlu
Zm8geyB0eXBlLCBXVEZNb3ZlKHN1Z2dlc3Rpb25zKSwgbV9jbGllbnQuZWxlbWVudFJlY3RJblJv
b3RWaWV3Q29vcmRpbmF0ZXMoKSB9OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0Rh
dGFMaXN0U3VnZ2VzdGlvbnMoaW5mbyksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIu
aAppbmRleCA5NzA1MzU5ODkwYjc2NjFhZjZjYTgwNzE3MGIzNTNiNTk4YzUwZjc5Li4xMzUxMDcz
NTIxNDI5ZWY4N2RlZDE0MmM0OTYxNDE5MGNkODYzMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKIAogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIERhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQ7CkBAIC0zOCwxOSArMzcsMjAgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2U7CiAKLWNsYXNzIFdlYkRhdGFMaXN0U3Vn
Z2VzdGlvblBpY2tlciA6IHB1YmxpYyBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIg
eworY2xhc3MgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyIGZpbmFsIDogcHVibGljIFdlYkNv
cmU6OkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlciB7CiBwdWJsaWM6Ci0gICAgV2ViRGF0YUxpc3RT
dWdnZXN0aW9uUGlja2VyKFdlYlBhZ2UqLCBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xp
ZW50Kik7Ci0gICAgdmlydHVhbCB+V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKCk7CisgICAg
V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKFdlYlBhZ2UmLCBXZWJDb3JlOjpEYXRhTGlzdFN1
Z2dlc3Rpb25zQ2xpZW50Jik7CiAKLSAgICB2b2lkIGhhbmRsZUtleWRvd25XaXRoSWRlbnRpZmll
cihjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFNlbGVjdE9wdGlvbihjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIGRpZENsb3NlU3VnZ2VzdGlvbnMoKTsKLSAgICB2b2lkIGNs
b3NlKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwbGF5V2l0aEFjdGl2YXRpb25UeXBlKFdlYkNv
cmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBlKSBvdmVycmlkZTsKKwogcHJpdmF0
ZToKLSAgICBXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50KiBtX2RhdGFMaXN0U3Vn
Z2VzdGlvbnNDbGllbnQ7Ci0gICAgV2ViUGFnZSogbV9wYWdlOworICAgIHZvaWQgaGFuZGxlS2V5
ZG93bldpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgZGlzcGxh
eVdpdGhBY3RpdmF0aW9uVHlwZShXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9u
VHlwZSkgZmluYWw7CisgICAgdm9pZCBjbG9zZSgpIGZpbmFsOworCisgICAgV2ViQ29yZTo6RGF0
YUxpc3RTdWdnZXN0aW9uc0NsaWVudCYgbV9jbGllbnQ7CisgICAgV2ViUGFnZSYgbV9wYWdlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggNzFhNzg2MGQ1OGY2ZDUyMTUxNGQzMzdiOGMwNzIx
NjY4ODJmMDZmMC4uZDQ1ZDE1MjUyOWEyMjQ4ZjIyZmZmOTlhMDMwNDBkMDczODFkZGQxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1
LDYgKzU1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvRWxlbWVudENoaWxkSXRlcmF0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V2
ZW50SGFuZGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWUuaD4KQEAgLTcxLDcgKzcyLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0pTRWxlbWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNGaWxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU1Jh
bmdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Ob2RlVHJhdmVyc2FsLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5Eb2N1bWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVuZGVyVHJlZUFzVGV4dC5oPgpAQCAtNjY2LDE3ICs2NjYsOCBAQCBib29s
IFdlYkZyYW1lOjpjb250YWluc0FueUZvcm1FbGVtZW50cygpIGNvbnN0CiAgICAgaWYgKCFtX2Nv
cmVGcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IG1fY29yZUZyYW1lLT5kb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvciAoTm9kZSogbm9kZSA9IGRvY3VtZW50LT5kb2N1
bWVudEVsZW1lbnQoKTsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUpKSB7
Ci0gICAgICAgIGlmICghaXM8RWxlbWVudD4oKm5vZGUpKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIGlmIChpczxIVE1MRm9ybUVsZW1lbnQ+KCpub2RlKSkKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byogZG9jdW1lbnQg
PSBtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQgJiYgY2hpbGRy
ZW5PZlR5cGU8SFRNTEZvcm1FbGVtZW50PigqZG9jdW1lbnQpLmZpcnN0KCk7CiB9CiAKIGJvb2wg
V2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9ybUNvbnRyb2xzKCkgY29uc3QKQEAgLTY4NCwxNCArNjc1
LDEyIEBAIGJvb2wgV2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9ybUNvbnRyb2xzKCkgY29uc3QKICAg
ICBpZiAoIW1fY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gbV9jb3JlRnJhbWUtPmRvY3VtZW50KCk7CisgICAgYXV0byogZG9j
dW1lbnQgPSBtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+ZG9j
dW1lbnRFbGVtZW50KCk7IG5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlKSkg
ewotICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KCpub2RlKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpIHx8IGlzPEhUTUxTZWxl
Y3RFbGVtZW50Pigqbm9kZSkgfHwgaXM8SFRNTFRleHRBcmVhRWxlbWVudD4oKm5vZGUpKQorICAg
IGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxFbGVtZW50PigqZG9jdW1lbnQpKSB7
CisgICAgICAgIGlmIChpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oY2hpbGQpIHx8IGlz
PEhUTUxTZWxlY3RFbGVtZW50PihjaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCBjMDU0ZDUxOTg0YzgzNjI1N2QxNWNmNzUxMWRjZjI1MjViNzZh
YmI1Li4wYzM3ZWVkNDExYjcyNGI2Y2I0NTFhYTYwZWUzODU5NjkwYzQ4Y2EzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDEwMSw5ICs0MTAx
LDkgQEAgdm9pZCBXZWJQYWdlOjpkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYg
Y29sb3IpCiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKIAotdm9pZCBXZWJQYWdlOjpz
ZXRBY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyKiBkYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIpCit2b2lkIFdlYlBhZ2U6OnNldEFjdGl2ZURh
dGFMaXN0U3VnZ2VzdGlvblBpY2tlcihXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXImIGRhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlcikKIHsKLSAgICBtX2FjdGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBp
Y2tlciA9IG1ha2VXZWFrUHRyKGRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik7CisgICAgbV9hY3Rp
dmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIgPSBtYWtlV2Vha1B0cigmZGF0YUxpc3RTdWdnZXN0
aW9uUGlja2VyKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpkaWRTZWxlY3REYXRhTGlzdE9wdGlvbihj
b25zdCBTdHJpbmcmIHNlbGVjdGVkT3B0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IGE2ODk1MzBmMzgzNmQ2ZjRjYmIwZjU2OTcyZDNmZTExMGU4
MTMyNTUuLmFjZjdlNGFjMDViMGZlYWU0NTEwNTU5ZTZjMWY5N2I5MjBjZDk4ZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQxNyw3ICs0MTcsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotICAgIHZv
aWQgc2V0QWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKFdlYkRhdGFMaXN0U3VnZ2VzdGlv
blBpY2tlciopOworICAgIHZvaWQgc2V0QWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKFdl
YkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlciYpOwogICAgIHZvaWQgZGlkU2VsZWN0RGF0YUxpc3RP
cHRpb24oY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRDbG9zZVN1Z2dlc3Rpb25zKCk7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KaW5kZXggNzg2NTMxM2UxN2IzY2UwNzUyY2QyMWY3MTlmYjI4Yjc0ZmRkY2ZkNS4u
ZjBjMjBlNDE1NDFjMGYwOTZjODBhZGI5NjI3NmE0YTdlODZjZjMxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI1MTMs
MTEgKzI1MTMsMTIgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0
KCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUF1dG9jb3JyZWN0aW9u
Q29udGV4dChhdXRvY29ycmVjdGlvbkNvbnRleHQoKSkpOwogfQogCi1zdGF0aWMgSFRNTEFuY2hv
ckVsZW1lbnQqIGNvbnRhaW5pbmdMaW5rRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQorc3RhdGlj
IEhUTUxBbmNob3JFbGVtZW50KiBjb250YWluaW5nTGlua0FuY2hvckVsZW1lbnQoRWxlbWVudCYg
ZWxlbWVudCkKIHsKLSAgICBmb3IgKGF1dG8mIGN1cnJlbnRFbGVtZW50IDogZWxlbWVudExpbmVh
Z2UoZWxlbWVudCkpIHsKLSAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmlzTGluaygpICYmIGlz
PEhUTUxBbmNob3JFbGVtZW50PihjdXJyZW50RWxlbWVudCkpCi0gICAgICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1lbnQ+KCZjdXJyZW50RWxlbWVudCk7CisgICAgLy8gRklY
TUU6IFRoZXJlIGlzIGNvZGUgaW4gdGhlIGRyYWcgY29udHJvbGxlciB0aGF0IHN1cHBvcnRzIGFu
eSBsaW5rLCBldmVuIGlmIGl0J3Mgbm90IGFuIEhUTUxBbmNob3JFbGVtZW50LiBXaHkgaXMgdGhp
cyBkaWZmZXJlbnQ/CisgICAgZm9yIChhdXRvJiBjdXJyZW50RWxlbWVudCA6IGxpbmVhZ2VPZlR5
cGU8SFRNTEFuY2hvckVsZW1lbnQ+KGVsZW1lbnQpKSB7CisgICAgICAgIGlmIChjdXJyZW50RWxl
bWVudC5pc0xpbmsoKSkKKyAgICAgICAgICAgIHJldHVybiAmY3VycmVudEVsZW1lbnQ7CiAgICAg
fQogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAtMjY4Nyw3ICsyNjg4LDcgQEAgc3RhdGljIHZv
aWQgZWxlbWVudFBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgSW4KIHsKICAgICBFbGVtZW50KiBsaW5rRWxlbWVudCA9IG51bGxwdHI7CiAg
ICAgaWYgKGVsZW1lbnQucmVuZGVyZXIoKSAmJiBlbGVtZW50LnJlbmRlcmVyKCktPmlzUmVuZGVy
SW1hZ2UoKSkKLSAgICAgICAgbGlua0VsZW1lbnQgPSBjb250YWluaW5nTGlua0VsZW1lbnQoJmVs
ZW1lbnQpOworICAgICAgICBsaW5rRWxlbWVudCA9IGNvbnRhaW5pbmdMaW5rQW5jaG9yRWxlbWVu
dChlbGVtZW50KTsKICAgICBlbHNlIGlmIChlbGVtZW50LmlzTGluaygpKQogICAgICAgICBsaW5r
RWxlbWVudCA9ICZlbGVtZW50OwogCkBAIC0yOTU2LDcgKzI5NTcsNyBAQCB2b2lkIFdlYlBhZ2U6
OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogICAgICAgICBpZiAoaXM8
UmVuZGVySW1hZ2U+KCplbGVtZW50LnJlbmRlcmVyKCkpKSB7CiAgICAgICAgICAgICBVUkwgdXJs
OwogICAgICAgICAgICAgU3RyaW5nIHRpdGxlOwotICAgICAgICAgICAgaWYgKGF1dG8qIGxpbmtF
bGVtZW50ID0gY29udGFpbmluZ0xpbmtFbGVtZW50KCZlbGVtZW50KSkgeworICAgICAgICAgICAg
aWYgKGF1dG8qIGxpbmtFbGVtZW50ID0gY29udGFpbmluZ0xpbmtBbmNob3JFbGVtZW50KGVsZW1l
bnQpKSB7CiAgICAgICAgICAgICAgICAgdXJsID0gbGlua0VsZW1lbnQtPmhyZWYoKTsKICAgICAg
ICAgICAgICAgICB0aXRsZSA9IGxpbmtFbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKEhUTUxOYW1lczo6dGl0bGVBdHRyKTsKICAgICAgICAgICAgICAgICBpZiAoIXRpdGxl
Lmxlbmd0aCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURv
Y3VtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCmlu
ZGV4IDVjMTNkNjM3ZTFmN2ZmNmY4MmQ5Mjk0MjhkZmI4MjUwNWIzOGNhYzkuLmFkY2QwMTdkMzA2
NWUyMzJhNjdjYTQyNTU2ZjM1YzVjZGU2ZWNmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NRG9jdW1lbnQubW0KQEAgLTI1LDEzICsyNSw2IEBACiAKICNpbXBvcnQgIkRPTURv
Y3VtZW50SW50ZXJuYWwuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9BdHRyLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL0NEQVRBU2VjdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9DU1NSdWxlTGlzdC5oPgot
I2ltcG9ydCA8V2ViQ29yZS9DU1NTdHlsZURlY2xhcmF0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L0NvbW1lbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRGdWxsc2NyZWVuLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW1wb3J0ICJET01BYnN0cmFjdFZpZXdJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NQXR0ckludGVybmFsLmgiCiAjaW1wb3J0ICJET01DREFU
QVNlY3Rpb25JbnRlcm5hbC5oIgpAQCAtNTcsMTUgKzUwLDIyIEBACiAjaW1wb3J0ICJET01TdHls
ZVNoZWV0TGlzdEludGVybmFsLmgiCiAjaW1wb3J0ICJET01UZXh0SW50ZXJuYWwuaCIKICNpbXBv
cnQgIkRPTVRyZWVXYWxrZXJJbnRlcm5hbC5oIgotI2ltcG9ydCA8V2ViQ29yZS9ET01XaW5kb3cu
aD4KICNpbXBvcnQgIkRPTVhQYXRoRXhwcmVzc2lvbkludGVybmFsLmgiCiAjaW1wb3J0ICJET01Y
UGF0aFJlc3VsdEludGVybmFsLmgiCisjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgorI2lt
cG9ydCAiT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCIKKyNpbXBvcnQgPFdlYkNvcmUvQXR0ci5o
PgorI2ltcG9ydCA8V2ViQ29yZS9DREFUQVNlY3Rpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ1NT
UnVsZUxpc3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oPgorI2lt
cG9ydCA8V2ViQ29yZS9Db21tZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTVdpbmRvdy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZy
YWdtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50RnVsbHNjcmVlbi5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Eb2N1bWVudFR5cGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWxlbWVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9FdmVudC5oPgotI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIK
ICNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbGxlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRN
TEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTEhlYWRFbGVtZW50Lmg+CkBAIC03Mywx
MiArNzMsMTEgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTmFtZU5vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05hdGl2ZU5vZGVGaWx0ZXIu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlSXRlcmF0
b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZUxpc3QuaD4KLSNpbXBvcnQgIk9iakNOb2RlRmls
dGVyQ29uZGl0aW9uLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5o
PgogI2ltcG9ydCA8V2ViQ29yZS9SYW5nZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvU3R5bGVTaGVldExpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dC5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnRGcmFnbWVudC5tbQppbmRl
eCAwNzI5MzBlMzk1OGUyMGExMmUzY2UzYzU3ZTE5OTRmZTNkZGMxNjVlLi5jZjFhM2MxZjg0Mzdi
ZDViZTkyMGQ4ODRlMzVhYzA1M2Y4OWY4NDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NRG9jdW1lbnRGcmFnbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NRG9jdW1lbnRGcmFnbWVudC5tbQpAQCAtMzIsNyArMzIsNiBAQAogI2lt
cG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VsZW1l
bnQuaD4KICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0hU
TUxDb2xsZWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL05hbWVOb2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNldEVs
ZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxl
bWVudC5tbQppbmRleCBhNGMxYjYwOGMxNmQyMWU1ODc3MTAxNTI2Nzc5YmE2NDU1MDY5MGMzLi5m
ZDk5NGFiNWJlMTRlY2MzYjIxNGY5NDUyMWM4ZDMwM2E5NmI5MmRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQpAQCAt
MjUsMjEgKzI1LDEwIEBACiAKICNpbXBvcnQgIkRPTUhUTUxGaWVsZFNldEVsZW1lbnQuaCIKIAot
I2ltcG9ydCAiRE9NSFRNTENvbGxlY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NSFRNTEZv
cm1FbGVtZW50SW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0jaW1wb3J0ICJE
T01Ob2RlSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCi0jaW1wb3J0
IDxXZWJDb3JlL0hUTUxDb2xsZWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxGaWVsZFNl
dEVsZW1lbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvSFRNTEZvcm1FbGVtZW50Lmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgot
I2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9WYWxpZGl0
eVN0YXRlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNp
bXBvcnQgPHd0Zi9HZXRQdHIuaD4KLSNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBM
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQqPihyZWludGVycHJldF9j
YXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjI2YTRiNWYyOGVhNjYxOGY0OTgyOTI0ODVj
MDAxNDlmMGUwNmM4Ny4uMDRlMzhhNTc4MWI2MmIzMzFiNGRlNzUxMDU4NWIxNDAzM2Y3ZDJlNiAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDIwLTAyLTE4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpc2UgRE9NIGl0ZXJhdG9ycyBpbXBsZW1lbnRhdGlvbiBhbmQgdXNhZ2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzgxNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHk6CisgICAgICAgIChjaGVja19pbmNsdWRlX2xp
bmUpOiBDaGFuZ2UgaW5jbHVkZSBzb3J0aW5nIGJhY2sgdG8gY2FzZSBzZW5zaXRpdmUuCisKIDIw
MjAtMDItMTkgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAg
ICAgICAgW1dpbl1bTWluaUJyb3dzZXJdIEFkZCAnR28gSG9tZScgbWVudSBpdGVtIGFuZCB0b29s
YmFyIGJ1dHRvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGU5MTc4MjYwZmRmNjU4Y2Y3ZDJlYTAyNTllODY4NjRkNDI3YTc1
MGMuLjNmZDI5NWEyNDgxNjdjODBlMmVlOWI0ZDQzYWY4MDk5ZWEzZGIxNTkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMC0wMi0xOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRvcnMgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9y
bXMvZGF0YWxpc3QvZGF0YWxpc3QtZXhwZWN0ZWQudHh0OiBVcGRhdGVkIGV4cGVjdGF0aW9ucy4K
KyAgICAgICAgKiBmYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0Lmh0bWw6IFVwZGF0ZWQgdGVz
dCBzaW5jZSB0aGUgb3B0aW9ucyBjb2xsZWN0aW9uCisgICAgICAgIGRvZXMgbm90IGluZGljYXRl
IHdoaWNoIG9wdGlvbnMgYXJlIHN1Z2dlc3Rpb25zIGFuZCB3aGljaCBhcmUgbm90LiBUaGUgd2Vi
CisgICAgICAgIHBsYXRmb3JtIHRlc3RzIGFscmVhZHkgaGFkIHRoaXMgcmlnaHQsIHdoaWNoIGlz
IHdoeSB3ZSBoYWQgYSBmYWlsaW5nIHRlc3QgdGhlcmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6IFJlbW92ZWQgc29tZSBsaW5lcyBmb3IgdGVzdCB0aGF0
IGRvbid0CisgICAgICAgIGV4aXN0IGF0IHRoZSBwYXRocyBtZW50aW9uZWQuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMtd2sxL2Zhc3QvZm9ybXMvZm9ybS1wc2V1ZG8tdmFsaWQtc3R5bGUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMvY29uc3RyYWludHMvZm9y
bS12YWxpZGF0aW9uLXdpbGxWYWxpZGF0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9mYXN0L2Zvcm1zL2Zvcm0tcHNldWRvLXZhbGlkLXN0eWxlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgIEV4cGVjdCBmYWlsdXJlIG9uIHRoZSBwYXJ0cyBvZiB0aGVz
ZSB0ZXN0cyB0aGF0IGFyZSBzcGVjaWZpYyB0byBkYXRhbGlzdCwgc2luY2UKKyAgICAgICAgZGF0
YWxpc3QgaXMgbm90IGVuYWJsZWQgaW4gdGhlc2UgY29uZmlndXJhdGlvbnMuIEJlZm9yZSBub3cs
IHRoZSBjb2RlIHdhc24ndAorICAgICAgICBwcm9wZXJseSBjb25kaXRpb25hbGl6ZWQgYW5kIHNv
bWUgb2YgdGhlIGRhdGFsaXN0IGJlaGF2aW9yIHdvdWxkIGJlIGFjdGl2ZSBldmVuCisgICAgICAg
IHdoZW4gdGhlIGZlYXR1cmUgd2FzIGRpc2FibGVkLiBCZXN0IGxvbmdlciB0ZXJtIHNvbHV0aW9u
IGlzIHRvIHR1cm4gdGhpcyBmZWF0dXJlCisgICAgICAgIG9uIGZvciBtb3JlIHBsYXRmb3Jtcywg
cGVyaGFwcyBhbGwgb2YgdGhlbS4gRm9yIG5vdywgbGFuZGVkIG5ldyBleHBlY3RlZCByZXN1bHRz
CisgICAgICAgIGZvciBjYXNlcyB0aGF0IEVXUyBpbmRpY2F0ZWQuCisKIDIwMjAtMDItMTkgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBBdWRpb1Nlc3Npb24gaGFuZGxpbmcgaW4gR1BVUHJvY2VzcyBmb3IgY2FwdHVyZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggYjgxMjZlYTYyNTcwYTRiMTk3ZDgwNDdjZGQwNzk5
OWIzNjgxYTZkMy4uMjIwMGVmOTg1ZmIxYmE4NWY0NjEwZWJiZGMxNDFjMGZkYzljNTQwMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDItMTgg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlzZSBET00gaXRl
cmF0b3JzIGltcGxlbWVudGF0aW9uIGFuZCB1c2FnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3ODE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZm9ybXMvdGhlLWRhdGFsaXN0LWVsZW1lbnQvZGF0YWxpc3RvcHRpb25zLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgRXhwZWN0IHRoaXMgdGVzdCB0byBwYXNzIGluc3RlYWQgb2YgZmFpbGluZy4K
KwogMjAyMC0wMi0xOSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE1h
aW4gaW1wbGVtZW50YXRpb24gZm9yIGxhenkgaW1hZ2UgbG9hZGluZwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LWV4cGVjdGVkLnR4dAppbmRleCA0
NjA5NDg5MDRjZDIwMTk5ZjFkOTEyNmI4MmMxNGQ3YjljNDA0NzZlLi5jYmE2NTA1NzI3NmY0YWYx
NTc5MDI4OTllMWYzNTZkMzRjYTAyOTI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2RhdGFsaXN0L2RhdGFsaXN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LWV4cGVjdGVkLnR4dApAQCAtMyw4ICszLDggQEAgVGVz
dCBmb3IgdGhlIGRhdGFsaXN0IGVsZW1lbnQuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAK
IAotUEFTUyBkYXRhbGlzdC5vcHRpb25zLmxlbmd0aCBpcyA0Ci1QQVNTIGRhdGFsaXN0Lm9wdGlv
bnMubGVuZ3RoIGlzIDMKK1BBU1MgZGF0YWxpc3Qub3B0aW9ucy5sZW5ndGggaXMgNQorUEFTUyBk
YXRhbGlzdC5vcHRpb25zLmxlbmd0aCBpcyA1CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
ZGF0YWxpc3QvZGF0YWxpc3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3Qv
ZGF0YWxpc3QuaHRtbAppbmRleCA1NjFiNjZiNWM1ZDIyMjhmODNiNWQ4MjE1OTc5ZjA1ODkxMDE3
OTM1Li5jYWMxNWVmMTJiYmVmOWI1MzYzMjFkOWRlZjQ1MDUzYjEzYWQ3M2QyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC5odG1sCkBAIC0xLDcgKzEsNyBA
QAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+
CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CkBAIC0x
NywxOCArMTcsMjAgQEAKIDwvZGF0YWxpc3Q+CiAKIDxzY3JpcHQ+CisKIGRlc2NyaXB0aW9uKCdU
ZXN0IGZvciB0aGUgZGF0YWxpc3QgZWxlbWVudC4nKTsKIAogdmFyIGRhdGFsaXN0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2RsMScpOwotLy8gQW4gb3B0aW9uIGVsZW1lbnQgd2l0aCBlbXB0
eSB2YWx1ZSBpcyBub3QgaW5jbHVkZWQuCi1zaG91bGRCZSgnZGF0YWxpc3Qub3B0aW9ucy5sZW5n
dGgnLCAnNCcpOwogCisvLyBBbiBvcHRpb24gZWxlbWVudCB3aXRoIGVtcHR5IHZhbHVlIGlzIG5v
dCBhIHN1Z2dlc3Rpb24sIGJ1dCBzdGlsbCBpcyBpbmNsdWRlZCBpbiB0aGUgb3B0aW9ucyBjb2xs
ZWN0aW9uLgorc2hvdWxkQmUoJ2RhdGFsaXN0Lm9wdGlvbnMubGVuZ3RoJywgJzUnKTsKKworLy8g
QSBkaXNhYmxlZCBvcHRpb24gZWxlbWVudCBpcyBubyBsb25nZXIgYSBzdWdnZXN0aW9uLCBidXQg
c3RpbGwgaXMgaW5jbHVkZWQgaW4gdGhlIG9wdGlvbnMgY29sbGVjdGlvbi4KIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdvNCcpLmRpc2FibGVkID0gdHJ1ZTsKLS8vIEEgZGlzYWJsZWQgb3B0aW9u
IGVsZW1lbnQgaXMgbm90IGluY2x1ZGVkLgotc2hvdWxkQmUoJ2RhdGFsaXN0Lm9wdGlvbnMubGVu
Z3RoJywgJzMnKTsKLS8vIEFmdGVyIGRhdGFsaXN0IGlzIGltcGxlbWVudGVkLCB0aGUgZXhwZWN0
ZWQgdGV4dCBzaG91bGQgbm90IGNvbnRhaW4gdGhlCi0vLyB0ZXh0IGluIHRoZSBkYXRhbGlzdCBl
bGVtZW50Lgorc2hvdWxkQmUoJ2RhdGFsaXN0Lm9wdGlvbnMubGVuZ3RoJywgJzUnKTsKKworLy8g
QWxzbywgdGhlIGV4cGVjdGVkIHRleHQgc2hvdWxkIG5vdCBjb250YWluIHRoZSB0ZXh0IGluIHRo
ZSBkYXRhbGlzdCBlbGVtZW50LgorCiA8L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvZm9ybXMvdGhlLWRhdGFsaXN0LWVsZW1lbnQvZGF0YWxpc3RvcHRpb25zLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWRhdGFsaXN0LWVsZW1lbnQvZGF0YWxpc3RvcHRpb25z
LWV4cGVjdGVkLnR4dAppbmRleCBiNWM2ZTk1MzQ0M2NlOTRiOGY3OWMzYmY4ZDNkNzViMGJjMDAw
OWNjLi4zNTQ1YTdlODk3MThjMTU5MTIyYWRhODdjOWM2NmFlM2EzMjk5NjgxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2Zvcm1zL3RoZS1kYXRhbGlzdC1lbGVtZW50L2RhdGFsaXN0b3B0aW9ucy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9mb3Jtcy90aGUtZGF0YWxpc3QtZWxlbWVudC9kYXRhbGlzdG9wdGlvbnMtZXhw
ZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAogCi1GQUlMIG9wdGlvbnMgbGFiZWwvdmFsdWUgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgNSBidXQgZ290IDMKK1BBU1Mgb3B0aW9ucyBsYWJlbC92YWx1
ZSAKIFBBU1MgSWYgYW4gZWxlbWVudCBoYXMgYSBkYXRhbGlzdCBlbGVtZW50IGFuY2VzdG9yLCBp
dCBpcyBiYXJyZWQgZnJvbSBjb25zdHJhaW50IHZhbGlkYXRpb24gCiBOdW1iZXI6ICAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1MTMxMGY5
YjY2MTVkNWY4ZTliNjM5ZGFlN2RkOGM1MmVmMTlmYTcyLi4xODkxODE0ODhmMTEwYTQ1ZWZkNDhi
NmVkMDIxNDc3MTk5OTFmNDViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9U
ZXN0RXhwZWN0YXRpb25zCkBAIC00NTEsOSArNDUxLDYgQEAgaW1wb3J0ZWQvYmxpbmsvc3ZnL2N1
c3RvbS9tYXJrZXItbGF5b3V0LWludmFsaWRhdGlvbi5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIGlt
cG9ydGVkL2JsaW5rL2Zhc3QvY3NzL2NyYXNoLWNvcm5lci1wcmVzZW50Lmh0bWwgWyBQYXNzIFRp
bWVvdXQgXQogaW1wb3J0ZWQvYmxpbmsvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vaWZyYW1l
LWNsaXAtcmVtb3ZlZC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAotIyBBU0FOIHRlc3Qgb25seSBm
YWlscyBvbiBXSzE6Ci13ZWJnbC8xLjAuMy8xNTEwNTVfYXNhbi5odG1sIFsgRmFpbHVyZSBdCi0K
ICMgTGFja2luZyBXSzEgVGVzdFJ1bm5lciBBUEkgdGhhdCBldmFsdWF0ZXMgSmF2YVNjcmlwdCB0
aHJvdWdoIEpTQyBBUElzIGFuZCBub3QgV2ViQ29yZSBBUElzLgogaW5zcGVjdG9yL3NjcmlwdC1w
cm9maWxlci9ldmVudC10eXBlLUFQSS5odG1sIFsgU2tpcCBdCiAKQEAgLTc4Myw4ICs3ODAsNiBA
QCB3ZWJraXQub3JnL2IvMTkwMzUwIFsgTW9qYXZlIF0gc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJh
c2Utb2RkLW5hbWVzLmh0bWwgWyBGYWlsdQogCiB3ZWJraXQub3JnL2IvMTkwODMyIFsgRGVidWcg
XSBmYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdG8tbm9uLWVkaXRlZC1jb250cm9scy5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE5MDgzMyBbIERlYnVnIF0gaW5zcGVjdG9y
L2NvZGVtaXJyb3IvcHJldHR5cHJpbnRpbmctY3NzLmh0bWwgWyBTbG93IF0KLQogd2Via2l0Lm9y
Zy9iLzE5MDg0OSBodHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRp
b25zLW11bHRpcGxlLWhlYWRlcnMtc2FtZW9yaWdpbi1kZW55Lmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQogCiB3ZWJraXQub3JnL2IvMTg2NDA2IFsgTW9qYXZlKyBdIGNvbXBvc2l0aW5nL2lmcmFtZXMv
ZGlzcGxheS1ub25lLXN1YmZyYW1lLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9mYXN0L2Zvcm1zL2Zvcm0tcHNldWRvLXZhbGlk
LXN0eWxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvZmFzdC9m
b3Jtcy9mb3JtLXBzZXVkby12YWxpZC1zdHlsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQz
ZmFhNzUxNzUzMTcyZDEyYmU5NDFkN2Y5OGFjODdlNWQ2Njk2MwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvZmFzdC9mb3Jtcy9mb3JtLXBzZXVkby12YWxp
ZC1zdHlsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NCBAQAorQ2hlY2sgaWYgOnZhbGlkLzpp
bnZhbGlkIENTUyBwc2V1ZG8gc2VsZWN0b3JzIGFyZSBsaXZlbHkgYXBwbGllZCBmb3IgZm9ybXMK
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1JlbW92aW5nIGFuZCBhZGRpbmcgcmVx
dWlyZWQgdGV4dCBpbnB1dHMgYW5kIG1vZGlmeWluZyB0aGVpciB2YWx1ZSBieSBhIERPTSB0cmVl
IG11dGF0aW9uOgorUEFTUyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFT
UyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCitQQVNTIGZvcm0xLnJlbW92
ZUNoaWxkKGlucHV0MSk7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFTUyBi
YWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViVmFsaWRDb2xvcgorUEFTUyBmb3JtMS5hcHBlbmRDaGls
ZChpbnB1dDEpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyBiYWNr
Z3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCitQQVNTIGlucHV0MS5zZXRBdHRyaWJ1
dGUoInZhbHVlIiwgImEiKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitQQVNT
IGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJWYWxpZENvbG9yCitQQVNTIGlucHV0Mi5zZXRBdHRy
aWJ1dGUoInZhbHVlIiwgIiIpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgor
UEFTUyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCisKK0Rpc2FibGluZyBh
bmQgbWFya2luZyBpbnB1dHMgcmVhZG9ubHkgYnkgYSBET00gdHJlZSBtdXRhdGlvbjoKK1BBU1Mg
YmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1
YjEpIGlzIHN1YkludmFsaWRDb2xvcgorUEFTUyBpbnB1dDEuZGlzYWJsZWQ9MTsgYmFja2dyb3Vu
ZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJW
YWxpZENvbG9yCitQQVNTIGlucHV0MS5kaXNhYmxlZD0wOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlz
IGludmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9y
CitQQVNTIGlucHV0MS5zZXRBdHRyaWJ1dGUoInJlYWRvbmx5IiwgIjEiKTsgYmFja2dyb3VuZE9m
KGZvcm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJWYWxp
ZENvbG9yCisKK01vdmUgZWxlbWVudCB1bmRlciBkYXRhbGlzdCBieSBhIERPTSB0cmVlIG11dGF0
aW9uOgorUEFTUyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyBwYXJl
bnQucmVtb3ZlQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9y
CitGQUlMIGRsMS5hcHBlbmRDaGlsZChpbnB1dDEpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIHNob3Vs
ZCBiZSByZ2IoMCwgMjU1LCAwKS4gV2FzIHJnYigyNTUsIDAsIDApLgorUEFTUyBwYXJlbnQuYXBw
ZW5kQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKKwor
QWRkaW5nIGEgcmVxdWlyZWQgdGV4dCBpbnB1dCB0aGF0IGlzIG5vdCBhIGRpcmVjdCBjaGlsZCBv
ZiB0aGUgZm9ybToKK1BBU1MgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitQQVNT
IGRpdjEuYXBwZW5kQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlk
Q29sb3IKKworUmVuZGVyIG11bHRpcGxlIGZvcm1zIGFuZCByZWFzc2lnbiBhbiBpbnZhbGlkIGlu
cHV0IGZyb20gb25lIHRvIGFub3RoZXI6CitQQVNTIGJhY2tncm91bmRPZigkKCJmb3JtMSIpKSBp
cyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKCQoImZvcm0yIikpIGlzIHZhbGlkQ29s
b3IKK1BBU1MgYmFja2dyb3VuZE9mKCQoImZvcm0zIikpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFj
a2dyb3VuZE9mKCQoImZvcm0xIikpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKCQo
ImZvcm0zIikpIGlzIGludmFsaWRDb2xvcgorCitFbnN1cmUgdGhhdCBpbnZhbGlkIGV2ZW50IHdh
cyBub3QgdHJpZ2dlcmVkIG9uIHN0eWxlIGV2YWx1YXRpb246CitQQVNTIGJhY2tncm91bmRPZihm
b3JtMSkgaXMgaW52YWxpZENvbG9yCitQQVNTIHZhbCBpcyAiMCIKK1BBU1MgZm9ybTEuY2hlY2tW
YWxpZGl0eSgpOyB2YWwgaXMgIjEiCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
K1NvbWUgdGVzdHMgZmFpbGVkLgorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9mb3Jtcy9jb25zdHJhaW50cy9mb3JtLXZhbGlkYXRpb24td2lsbFZhbGlk
YXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy9jb25zdHJhaW50cy9m
b3JtLXZhbGlkYXRpb24td2lsbFZhbGlkYXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWQ1
MzY4MDQzZThjMTdkZGZlODgyYTM1MzU1YTVhNDcyZjc2NTVlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1zL2NvbnN0cmFpbnRzL2Zvcm0tdmFsaWRhdGlvbi13aWxs
VmFsaWRhdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTcgQEAKKworUEFTUyBbSU5QVVQgaW4g
SElEREVOIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxpZGF0
aW9uIAorUEFTUyBbSU5QVVQgaW4gQlVUVE9OIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0
aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIAorUEFTUyBbSU5QVVQgaW4gUkVTRVQgc3RhdHVzXSBN
dXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gCitQQVNTIFtCVVRU
T04gaW4gQlVUVE9OIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2
YWxpZGF0aW9uIAorUEFTUyBbQlVUVE9OIGluIFJFU0VUIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQg
ZnJvbSB0aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIAorUEFTUyBbZmllbGRzZXRdICBUaGUgd2ls
bFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIGZhbHNlIHNpbmNlIEZJRUxEU0VUIGlzIG5vdCBh
IHN1Ym1pdHRhYmxlIGVsZW1lbnQgCitQQVNTIFtvdXRwdXRdICBUaGUgd2lsbFZhbGlkYXRlIGF0
dHJpYnV0ZSBtdXN0IGJlIGZhbHNlIHNpbmNlIE9VVFBVVCBpcyBub3QgYSBzdWJtaXR0YWJsZSBl
bGVtZW50IAorUEFTUyBbb2JqZWN0XSAgTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWlu
dCB2YWxpZGF0aW9uIAorUEFTUyBbSU5QVVQgaW4gVEVYVCBzdGF0dXNdIE11c3QgYmUgYmFycmVk
IGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyBkaXNhYmxlZCAKK1BBU1Mg
W0lOUFVUIGluIFRFWFQgc3RhdHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJl
IHRydWUgaWYgYW4gZWxlbWVudCBpcyBtdXRhYmxlIAorUEFTUyBbSU5QVVQgaW4gVEVYVCBzdGF0
dXNdIE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBp
cyByZWFkb25seSAKK1BBU1MgW0lOUFVUIGluIFRFWFQgc3RhdHVzXSBUaGUgd2lsbFZhbGlkYXRl
IGF0dHJpYnV0ZSBtdXN0IGJlIGZhbHNlIGlmIGl0IGhhcyBhIGRhdGFsaXN0IGFuY2VzdG9yIAor
UEFTUyBbSU5QVVQgaW4gU0VBUkNIIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29u
c3RyYWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIGRpc2FibGVkIAorUEFTUyBbSU5QVVQgaW4gU0VB
UkNIIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSB0cnVlIGlmIGFu
IGVsZW1lbnQgaXMgbXV0YWJsZSAKK1BBU1MgW0lOUFVUIGluIFNFQVJDSCBzdGF0dXNdIE11c3Qg
YmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyByZWFkb25s
eSAKK1BBU1MgW0lOUFVUIGluIFNFQVJDSCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmli
dXRlIG11c3QgYmUgZmFsc2UgaWYgaXQgaGFzIGEgZGF0YWxpc3QgYW5jZXN0b3IgCitQQVNTIFtJ
TlBVVCBpbiBURUwgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZh
bGlkYXRpb24gaWYgaXQgaXMgZGlzYWJsZWQgCitQQVNTIFtJTlBVVCBpbiBURUwgc3RhdHVzXSBU
aGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIHRydWUgaWYgYW4gZWxlbWVudCBpcyBt
dXRhYmxlIAorUEFTUyBbSU5QVVQgaW4gVEVMIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0
aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIHJlYWRvbmx5IAorUEFTUyBbSU5QVVQg
aW4gVEVMIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSBmYWxzZSBp
ZiBpdCBoYXMgYSBkYXRhbGlzdCBhbmNlc3RvciAKK1BBU1MgW0lOUFVUIGluIFVSTCBzdGF0dXNd
IE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyBk
aXNhYmxlZCAKK1BBU1MgW0lOUFVUIGluIFVSTCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0
cmlidXRlIG11c3QgYmUgdHJ1ZSBpZiBhbiBlbGVtZW50IGlzIG11dGFibGUgCitQQVNTIFtJTlBV
VCBpbiBVUkwgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlk
YXRpb24gaWYgaXQgaXMgcmVhZG9ubHkgCitQQVNTIFtJTlBVVCBpbiBVUkwgc3RhdHVzXSBUaGUg
d2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIGZhbHNlIGlmIGl0IGhhcyBhIGRhdGFsaXN0
IGFuY2VzdG9yIAorUEFTUyBbSU5QVVQgaW4gRU1BSUwgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBm
cm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gaWYgaXQgaXMgZGlzYWJsZWQgCitQQVNTIFtJ
TlBVVCBpbiBFTUFJTCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUg
dHJ1ZSBpZiBhbiBlbGVtZW50IGlzIG11dGFibGUgCitQQVNTIFtJTlBVVCBpbiBFTUFJTCBzdGF0
dXNdIE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBp
cyByZWFkb25seSAKK1BBU1MgW0lOUFVUIGluIEVNQUlMIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0
ZSBhdHRyaWJ1dGUgbXVzdCBiZSBmYWxzZSBpZiBpdCBoYXMgYSBkYXRhbGlzdCBhbmNlc3RvciAK
K1BBU1MgW0lOUFVUIGluIFBBU1NXT1JEIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUg
Y29uc3RyYWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIGRpc2FibGVkIAorUEFTUyBbSU5QVVQgaW4g
UEFTU1dPUkQgc3RhdHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIHRydWUg
aWYgYW4gZWxlbWVudCBpcyBtdXRhYmxlIAorUEFTUyBbSU5QVVQgaW4gUEFTU1dPUkQgc3RhdHVz
XSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gaWYgaXQgaXMg
cmVhZG9ubHkgCitQQVNTIFtJTlBVVCBpbiBQQVNTV09SRCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRh
dGUgYXR0cmlidXRlIG11c3QgYmUgZmFsc2UgaWYgaXQgaGFzIGEgZGF0YWxpc3QgYW5jZXN0b3Ig
CitGQUlMIFtJTlBVVCBpbiBEQVRFVElNRS1MT0NBTCBzdGF0dXNdIFRoZSBkYXRldGltZS1sb2Nh
bCB0eXBlIG11c3QgYmUgc3VwcG9ydGVkLiBhc3NlcnRfZXF1YWxzOiBUaGUgZGF0ZXRpbWUtbG9j
YWwgdHlwZSBzaG91bGQgYmUgc3VwcG9ydGVkLiBleHBlY3RlZCAiZGF0ZXRpbWUtbG9jYWwiIGJ1
dCBnb3QgInRleHQiCitGQUlMIFtJTlBVVCBpbiBEQVRFIHN0YXR1c10gVGhlIGRhdGUgdHlwZSBt
dXN0IGJlIHN1cHBvcnRlZC4gYXNzZXJ0X2VxdWFsczogVGhlIGRhdGUgdHlwZSBzaG91bGQgYmUg
c3VwcG9ydGVkLiBleHBlY3RlZCAiZGF0ZSIgYnV0IGdvdCAidGV4dCIKK0ZBSUwgW0lOUFVUIGlu
IE1PTlRIIHN0YXR1c10gVGhlIG1vbnRoIHR5cGUgbXVzdCBiZSBzdXBwb3J0ZWQuIGFzc2VydF9l
cXVhbHM6IFRoZSBtb250aCB0eXBlIHNob3VsZCBiZSBzdXBwb3J0ZWQuIGV4cGVjdGVkICJtb250
aCIgYnV0IGdvdCAidGV4dCIKK0ZBSUwgW0lOUFVUIGluIFdFRUsgc3RhdHVzXSBUaGUgd2VlayB0
eXBlIG11c3QgYmUgc3VwcG9ydGVkLiBhc3NlcnRfZXF1YWxzOiBUaGUgd2VlayB0eXBlIHNob3Vs
ZCBiZSBzdXBwb3J0ZWQuIGV4cGVjdGVkICJ3ZWVrIiBidXQgZ290ICJ0ZXh0IgorRkFJTCBbSU5Q
VVQgaW4gVElNRSBzdGF0dXNdIFRoZSB0aW1lIHR5cGUgbXVzdCBiZSBzdXBwb3J0ZWQuIGFzc2Vy
dF9lcXVhbHM6IFRoZSB0aW1lIHR5cGUgc2hvdWxkIGJlIHN1cHBvcnRlZC4gZXhwZWN0ZWQgInRp
bWUiIGJ1dCBnb3QgInRleHQiCitGQUlMIFtJTlBVVCBpbiBDT0xPUiBzdGF0dXNdIFRoZSBjb2xv
ciB0eXBlIG11c3QgYmUgc3VwcG9ydGVkLiBhc3NlcnRfZXF1YWxzOiBUaGUgY29sb3IgdHlwZSBz
aG91bGQgYmUgc3VwcG9ydGVkLiBleHBlY3RlZCAiY29sb3IiIGJ1dCBnb3QgInRleHQiCitQQVNT
IFtJTlBVVCBpbiBGSUxFIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWlu
dCB2YWxpZGF0aW9uIGlmIGl0IGlzIGRpc2FibGVkIAorUEFTUyBbSU5QVVQgaW4gRklMRSBzdGF0
dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgdHJ1ZSBpZiBhbiBlbGVtZW50
IGlzIG11dGFibGUgCitQQVNTIFtJTlBVVCBpbiBGSUxFIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQg
ZnJvbSB0aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIHJlYWRvbmx5IAorUEFTUyBb
SU5QVVQgaW4gRklMRSBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUg
ZmFsc2UgaWYgaXQgaGFzIGEgZGF0YWxpc3QgYW5jZXN0b3IgCitQQVNTIFtJTlBVVCBpbiBTVUJN
SVQgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24g
aWYgaXQgaXMgZGlzYWJsZWQgCitQQVNTIFtJTlBVVCBpbiBTVUJNSVQgc3RhdHVzXSBUaGUgd2ls
bFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIHRydWUgaWYgYW4gZWxlbWVudCBpcyBtdXRhYmxl
IAorUEFTUyBbSU5QVVQgaW4gU1VCTUlUIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUg
Y29uc3RyYWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIHJlYWRvbmx5IAorUEFTUyBbSU5QVVQgaW4g
U1VCTUlUIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSBmYWxzZSBp
ZiBpdCBoYXMgYSBkYXRhbGlzdCBhbmNlc3RvciAKK1BBU1MgW0JVVFRPTiBpbiBTVUJNSVQgc3Rh
dHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gCitQQVNT
IFtCVVRUT04gaW4gU1VCTUlUIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVz
dCBiZSB0cnVlIGlmIGFuIGVsZW1lbnQgaXMgbXV0YWJsZSAKK0ZBSUwgW0JVVFRPTiBpbiBTVUJN
SVQgc3RhdHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIGZhbHNlIGlmIGl0
IGhhcyBhIGRhdGFsaXN0IGFuY2VzdG9yIGFzc2VydF9mYWxzZTogVGhlIHdpbGxWYWxpZGF0ZSBh
dHRyaWJ1dGUgc2hvdWxkIGJlIGZhbHNlLiBleHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQorUEFTUyBb
c2VsZWN0XSAgTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIAor
UEFTUyBbc2VsZWN0XSAgVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSB0cnVlIGlm
IGFuIGVsZW1lbnQgaXMgbXV0YWJsZSAKK0ZBSUwgW3NlbGVjdF0gIFRoZSB3aWxsVmFsaWRhdGUg
YXR0cmlidXRlIG11c3QgYmUgZmFsc2UgaWYgaXQgaGFzIGEgZGF0YWxpc3QgYW5jZXN0b3IgYXNz
ZXJ0X2ZhbHNlOiBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBzaG91bGQgYmUgZmFsc2UuIGV4
cGVjdGVkIGZhbHNlIGdvdCB0cnVlCitQQVNTIFt0ZXh0YXJlYV0gIE11c3QgYmUgYmFycmVkIGZy
b20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiAKK1BBU1MgW3RleHRhcmVhXSAgVGhlIHdpbGxW
YWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSB0cnVlIGlmIGFuIGVsZW1lbnQgaXMgbXV0YWJsZSAK
K0ZBSUwgW3RleHRhcmVhXSAgVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSBmYWxz
ZSBpZiBpdCBoYXMgYSBkYXRhbGlzdCBhbmNlc3RvciBhc3NlcnRfZmFsc2U6IFRoZSB3aWxsVmFs
aWRhdGUgYXR0cmlidXRlIHNob3VsZCBiZSBmYWxzZS4gZXhwZWN0ZWQgZmFsc2UgZ290IHRydWUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvZm9ybXMvZm9ybS1w
c2V1ZG8tdmFsaWQtc3R5bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L2Zhc3QvZm9ybXMvZm9ybS1wc2V1ZG8tdmFsaWQtc3R5bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ0M2ZhYTc1MTc1MzE3MmQxMmJlOTQxZDdmOThhYzg3ZTVkNjY5NjMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9mb3Jtcy9mb3JtLXBzZXVkby12
YWxpZC1zdHlsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NCBAQAorQ2hlY2sgaWYgOnZhbGlk
LzppbnZhbGlkIENTUyBwc2V1ZG8gc2VsZWN0b3JzIGFyZSBsaXZlbHkgYXBwbGllZCBmb3IgZm9y
bXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1JlbW92aW5nIGFuZCBhZGRpbmcg
cmVxdWlyZWQgdGV4dCBpbnB1dHMgYW5kIG1vZGlmeWluZyB0aGVpciB2YWx1ZSBieSBhIERPTSB0
cmVlIG11dGF0aW9uOgorUEFTUyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgor
UEFTUyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCitQQVNTIGZvcm0xLnJl
bW92ZUNoaWxkKGlucHV0MSk7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFT
UyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViVmFsaWRDb2xvcgorUEFTUyBmb3JtMS5hcHBlbmRD
aGlsZChpbnB1dDEpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyBi
YWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCitQQVNTIGlucHV0MS5zZXRBdHRy
aWJ1dGUoInZhbHVlIiwgImEiKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitQ
QVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJWYWxpZENvbG9yCitQQVNTIGlucHV0Mi5zZXRB
dHRyaWJ1dGUoInZhbHVlIiwgIiIpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xv
cgorUEFTUyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCisKK0Rpc2FibGlu
ZyBhbmQgbWFya2luZyBpbnB1dHMgcmVhZG9ubHkgYnkgYSBET00gdHJlZSBtdXRhdGlvbjoKK1BB
U1MgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9m
KHN1YjEpIGlzIHN1YkludmFsaWRDb2xvcgorUEFTUyBpbnB1dDEuZGlzYWJsZWQ9MTsgYmFja2dy
b3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBz
dWJWYWxpZENvbG9yCitQQVNTIGlucHV0MS5kaXNhYmxlZD0wOyBiYWNrZ3JvdW5kT2YoZm9ybTEp
IGlzIGludmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENv
bG9yCitQQVNTIGlucHV0MS5zZXRBdHRyaWJ1dGUoInJlYWRvbmx5IiwgIjEiKTsgYmFja2dyb3Vu
ZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJW
YWxpZENvbG9yCisKK01vdmUgZWxlbWVudCB1bmRlciBkYXRhbGlzdCBieSBhIERPTSB0cmVlIG11
dGF0aW9uOgorUEFTUyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyBw
YXJlbnQucmVtb3ZlQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyB2YWxpZENv
bG9yCitGQUlMIGRsMS5hcHBlbmRDaGlsZChpbnB1dDEpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIHNo
b3VsZCBiZSByZ2IoMCwgMjU1LCAwKS4gV2FzIHJnYigyNTUsIDAsIDApLgorUEFTUyBwYXJlbnQu
YXBwZW5kQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IK
KworQWRkaW5nIGEgcmVxdWlyZWQgdGV4dCBpbnB1dCB0aGF0IGlzIG5vdCBhIGRpcmVjdCBjaGls
ZCBvZiB0aGUgZm9ybToKK1BBU1MgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitQ
QVNTIGRpdjEuYXBwZW5kQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZh
bGlkQ29sb3IKKworUmVuZGVyIG11bHRpcGxlIGZvcm1zIGFuZCByZWFzc2lnbiBhbiBpbnZhbGlk
IGlucHV0IGZyb20gb25lIHRvIGFub3RoZXI6CitQQVNTIGJhY2tncm91bmRPZigkKCJmb3JtMSIp
KSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKCQoImZvcm0yIikpIGlzIHZhbGlk
Q29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKCQoImZvcm0zIikpIGlzIHZhbGlkQ29sb3IKK1BBU1Mg
YmFja2dyb3VuZE9mKCQoImZvcm0xIikpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9m
KCQoImZvcm0zIikpIGlzIGludmFsaWRDb2xvcgorCitFbnN1cmUgdGhhdCBpbnZhbGlkIGV2ZW50
IHdhcyBub3QgdHJpZ2dlcmVkIG9uIHN0eWxlIGV2YWx1YXRpb246CitQQVNTIGJhY2tncm91bmRP
Zihmb3JtMSkgaXMgaW52YWxpZENvbG9yCitQQVNTIHZhbCBpcyAiMCIKK1BBU1MgZm9ybTEuY2hl
Y2tWYWxpZGl0eSgpOyB2YWwgaXMgIjEiCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKK1NvbWUgdGVzdHMgZmFpbGVkLgorCitURVNUIENPTVBMRVRFCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391253</attachid>
            <date>2020-02-19 20:56:09 -0800</date>
            <delta_ts>2020-02-20 19:35:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207816-20200219205608.patch</filename>
            <type>text/plain</type>
            <size>277398</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODdlNGE5N2M1YTRhYTMy
MjIwODNhMWQ3NjdhZGFhNTZkMWVkYmE5OC4uZmE5Y2M0OTU4OGY1MjZjZmI0YWQwODIwNzg2M2Rj
NjM0YWExMjFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4OCBAQAorMjAyMC0wMi0xOCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRv
cnMgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZpbmVkIGVsZW1lbnQgaXRlcmF0b3IgaW1wbGVtZW50YXRp
b24gaW4gdGhlIGZvbGxvd2luZyB3YXlzOgorCisgICAgICAgIDEpIFJlbW92ZWQgdGhlIGR1cGxp
Y2F0ZSBkZXNjZW5kYW50IGl0ZXJhdG9yLCBrZWVwaW5nIHRoZSBvbmUgdGhhdCBtYXRjaGVzCisg
ICAgICAgICAgIHRoZSBzdHlsZSBvZiB0aGUgYW5jZXN0b3IgYW5kIGNoaWxkIGl0ZXJhdG9ycy4K
KyAgICAgICAgMikgUmVtb3ZlZCB0aGUgbm9uLXRlbXBsYXRlIGVsZW1lbnRBbmNlc3RvcnMsIGVs
ZW1lbnRDaGlsZHJlbiwgZWxlbWVudERlc2NlbmRhbnRzLAorICAgICAgICAgICBhbmQgZWxlbWVu
dExpbmVhZ2UgZnVuY3Rpb25zIGFuZCBjaGFuZ2VkIGNhbGxlcnMgdG8gdXNlIHh4eE9mVHlwZTxF
bGVtZW50PiBpbnN0ZWFkLgorCisgICAgICAgIEFsc28gcmVwbGFjZWQgdXNlIG9mIEhUTUxDb2xs
ZWN0aW9uIGNsYXNzZXMgaW4gV2ViS2l0IGNvZGUgZm9yIGl0ZXJhdGlvbi4KKyAgICAgICAgVGhl
eSBhcmUgZmluZSBmb3IgdXNlIGZyb20gSmF2YVNjcmlwdCwgYnV0IGludGVybmFsbHkgd2UgaGF2
ZSBtb3JlIGVmZmljaWVudAorICAgICAgICBpdGVyYXRpb24gaWRpb21zLgorCisgICAgICAgICog
SGVhZGVycy5jbWFrZTogUmVtb3ZlZCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmguCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmVkIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IuaCBhbmQKKyAgICAgICAgYWRkZWQgUmFkaW9Ob2RlTGlzdC5pZGwu
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojptb3VzZUJ1dHRvbkxp
c3RlbmVyIGNvbnN0KTogVXNlCisgICAgICAgIGxpbmVhZ2VPZlR5cGUgaW5zdGVhZCBvZiBlbGVt
ZW50TGluZWFnZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgVXNlIGFuY2Vz
dG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEgaGFuZHdyaXR0ZW4gbG9vcC4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcDogUmVtb3ZlZCB1bm5lZWRl
ZCBpbmNsdWRlIG9mCisgICAgICAgIEhUTUxDb2xsZWN0aW9uLmguCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOiBEaXR0by4KKworICAgICAgICAqIGRvbS9DaGls
ZE5vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUxpc3Q6OkNoaWxkTm9k
ZUxpc3QpOiBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIG1faW5kZXhDYWNoZQorICAgICAgICBz
aW5jZSB0aGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlcXVpcmVzIGFyZ3VtZW50cy4KKyAgICAg
ICAgKFdlYkNvcmU6OkNoaWxkTm9kZUxpc3Q6OmludmFsaWRhdGVDYWNoZSk6IFJlbW92ZWQgYXJn
dW1lbnQgdG8KKyAgICAgICAgQ29sbGVjdGlvbkluZGV4Q2FjaGU6OmludmFsaWRhdGUuCisgICAg
ICAgICogZG9tL0NoaWxkTm9kZUxpc3QuaDogUmVtb3ZlZCBjb2xsZWN0aW9uRW5kLCBzaW5jZSBp
dCdzIG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgKiBkb20vQ29sbGVjdGlvbkluZGV4Q2Fj
aGUuaDogUmVtb3ZlZCB0aGUgY29sbGVjdGlvbiBhcmd1bWVudCB0byB0aGUKKyAgICAgICAgY29u
c3RydWN0b3IsIGhhc1ZhbGlkQ2FjaGUsIGFuZCBpbnZhbGlkYXRlIGZ1bmN0aW9ucy4gVXBkYXRl
ZCBhbGdvcml0aG1zIHRvIHVzZQorICAgICAgICBudWxsIHN0eWxlIHRlcm1pbmF0aW9uIGluc3Rl
YWQgb2YgYWN0dWFsbHkgcmVseWluZyBvbiBjb21wYXJpbmcgd2l0aCBhbiBlbmQKKyAgICAgICAg
aXRlcmF0b3IsIHNpbmNlIHRoYXQgd29ya3MgZm9yIG91ciBlbGVtZW50IGl0ZXJhdG9ycy4KKwor
ICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OmNoaWxkRWxlbWVudENvdW50IGNvbnN0KTogVXNlIGFuIGVtcHR5IGluaXRpYWxp
emVyCisgICAgICAgIGxpc3QgaW5zdGVhZCBvZiB0aGUgcmVzdWx0IG9mIHRoZSBlbmQgZnVuY3Rp
b24gc2luY2Ugc3RkOjpkaXN0YW5jZSByZXF1aXJlcworICAgICAgICBib3RoIGJlZ2luIGFuZCBl
bmQgaXRlcmF0b3JzIGhhdmUgdGhlIHNhbWUgdHlwZS4KKworICAgICAgICAqIGRvbS9Db250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAgICAgICogZG9tL0N1
c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHA6IERpdHRvLgorCisgICAgICAgICogZG9tL0RvY3VtZW50
RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6Z2V0RWxl
bWVudEJ5SWQgY29uc3QpOiBVc2UKKyAgICAgICAgZGVzY2VuZGFudHNPZlR5cGUgaW5zdGVhZG9m
IGVsZW1lbnREZXNjZW5kYW50cy4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSBjb25zdCk6IFVz
ZSBsaW5lYWdlT2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2YgYSBoYW5kcndpdHRlbiBsb29wLgor
CisgICAgICAgICogZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmg6IE1vdmVkIHRoZSBkZWNs
YXJhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucworICAgICAgICB0byB0aGUgdG9wIG9mIHRoZSBmaWxl
LCBzaW5jZSB0aGUgY2xhc3NlcyBhcmUgcmVhbGx5IGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisg
ICAgICAgIFJlbW92ZWQgdGhlIHNlcGFyYXRlICJDb25zdCIgdmVyc2lvbnMgb2YgZXZlcnl0aGlu
ZyBzaW5jZSB3ZSBjYW4ganVzdCB1c2UKKyAgICAgICAgY29uc3QgaW4gdGhlIHRlbXBsYXRlIGFy
Z3VtZW50IHR5cGUgaW5zdGVhZC4gVXNlIHRoZSB0ZXJtICJSYW5nZSIgaW5zdGVhZAorICAgICAg
ICBvZiB0aGUgdGVybSAiSXRlcmF0b3JBZGFwdGVyIiBmb3IgdGhlIGNsYXNzIHRlbXBsYXRlcyBm
b3IgdXNlIGluIHJhbmdlLWJhc2VkCisgICAgICAgIGZvciBsb29wcyBzaW5jZSB0aGF0J3MgY2xv
c2VyIHRvIG1vZGVybiBDKysgdGVybWlub2xvZ3kuIFVzZSBudWxscHRyIGFzIGEKKyAgICAgICAg
c2VudGluZWwgZm9yIGVuZCwgd2hpY2ggd29ya3Mgd2VsbCB3aXRoIHJhbmdlLWJhc2VkIGZvciBs
b29wcy4gTWFkZSBtYW55IGZ1bmN0aW9uCisgICAgICAgIG1lbWJlcnMgY29uc3Qgd2hlcmUgYXBw
cm9wcmlhdGUuIFNwZWNpYWxpemVkIGxpbmVhZ2VPZlR5cGUgYW5kIGFuY2VzdG9yc09mVHlwZQor
ICAgICAgICBmb3IgRWxlbWVudCB0byBzbGlnaHRseSBvcHRpbWl6ZSB0aGF0IGNhc2UuIFVzZSBk
b3duY2FzdCBpbnN0ZWFkIG9mIHN0YXRpY19jYXN0LgorICAgICAgICBEZWxldGVkIGVsZW1lbnRM
aW5lYWdlIGFuZCBlbGVtZW50QW5jZXN0b3JzLgorCisgICAgICAgICogZG9tL0VsZW1lbnRBbmRU
ZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmg6IFJlbmFtZWQgSXRlcmF0b3JBZGFwdGVyIHRvIFJhbmdl
LgorICAgICAgICBNYWRlIG1vcmUgZnVuY3Rpb24gbWVtYmVycyBjb25zdC4KKworICAgICAgICAq
IGRvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oOiBNb3ZlZCB0aGUgZGVjbGFyYXRpb25zIG9mIHRo
ZSBmdW5jdGlvbnMKKyAgICAgICAgdG8gdGhlIHRvcCBvZiB0aGUgZmlsZSwgc2luY2UgdGhlIGNs
YXNzZXMgYXJlIHJlYWxseSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgorICAgICAgICBSZW1vdmVk
IHRoZSBzZXBhcmF0ZSAiQ29uc3QiIHZlcnNpb25zIG9mIGV2ZXJ5dGhpbmcgc2luY2Ugd2UgY2Fu
IGp1c3QgdXNlCisgICAgICAgIGNvbnN0IGluIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudCB0eXBlIGlu
c3RlYWQuIFVzZSB0aGUgdGVybSAiUmFuZ2UiIGluc3RlYWQKKyAgICAgICAgb2YgdGhlIHRlcm0g
Ikl0ZXJhdG9yQWRhcHRlciIgZm9yIHRoZSBjbGFzcyB0ZW1wbGF0ZXMgZm9yIHVzZSBpbiByYW5n
ZS1iYXNlZAorICAgICAgICBmb3IgbG9vcHMgc2luY2UgdGhhdCdzIGNsb3NlciB0byBtb2Rlcm4g
QysrIHRlcm1pbm9sb2d5LiBVc2UgbnVsbHB0ciBhcyBhCisgICAgICAgIHNlbnRpbmVsIGZvciBl
bmQsIHdoaWNoIHdvcmtzIHdlbGwgd2l0aCByYW5nZS1iYXNlZCBmb3IgbG9vcHMuIE1hZGUgbWFu
eQorICAgICAgICBmdW5jdGlvbiBtZW1iZXJzIGNvbnN0IHdoZXJlIGFwcHJvcHJpYXRlLiBEZWxl
dGVkIGVsZW1lbnRDaGlsZHJlbi4KKworICAgICAgICAqIGRvbS9FbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBkb20vRWxlbWVudEl0ZXJhdG9yLmg6IENo
YW5nZWQgRWxlbWVudEl0ZXJhdG9yIHRvIGRlcml2ZSBmcm9tIHN0ZDo6aXRlcmF0b3IKKyAgICAg
ICAgdG8gbWFrZSBpdGVyYXRvciB0cmFpdHMgd29yayBmb3IgYWxsIGNsYXNzZXMgZGVyaXZlZCBm
cm9tIGl0LiBNYWRlIGNvbnN0cnVjdG9ycworICAgICAgICBvZiBFbGVtZW50SXRlcmF0b3IgcHJp
dmF0ZSB0byBtYWtlIGl0IGNsZWFyIGl0J3MgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBhIGJhc2UK
KyAgICAgICAgY2xhc3MgYW5kIG5vdCBpbnN0YW50aWF0ZWQuIEFkZGVkIGFuIGVtcHR5IGNvbnN0
cnVjdG9yLiBEZWxldGVkIHRoZSA9PSBvcGVyYXRvci4KKyAgICAgICAgQWRkZWQgY29udmVyc2lv
bnMgdG8gYm9vbCBhbmQgb3BlcmF0b3IhIHNvIHRoZSBpdGVyYXRvciBjYW4gYmUgdXNlZCAibnVs
bCBzdHlsZSIKKyAgICAgICAgb3V0c2lkZSBvZiByYW5nZS1iYXNlZCBmb3IgbG9vcHMuIEFkZGVk
IGEgIT0gb3BlcmF0b3IgdGhhdCB3b3JrcyB3aXRoIG51bGxwdHIKKyAgICAgICAgc28gd2UgY2Fu
IHVzZSBudWxscHRyIGFzIGEgc2VudGluZWwgaW4gcmFuZ2UtYmFzZWQgZm9yIGxvb3BzLiBGb3Ig
dGhlICE9CisgICAgICAgIG9wZXJhdG9yLCByZWxheGVkIHRoZSBhc3NlcnRpb25zLCBzaW5jZSBj
b21wYXJpbmcgd2l0aCBhbm90aGVyIGl0ZXJhdG9yIHdvcmtzCisgICAgICAgIGZpbmUgZXZlbiBp
ZiB0aGUgRE9NIHRyZWUgaXMgbXV0YXRlZCwgYW5kIGEgbnVsbCBlbGVtZW50IGNhbiBiZSBjb21w
YXJlZCB3aXRoCisgICAgICAgIGFub3RoZXIgZXZlbiBpZiB0aGUgcm9vdCBlbGVtZW50IGlzIG5v
dCB0aGUgc2FtZS4gRGVsZXRlZCBFbGVtZW50Q29uc3RJdGVyYXRvci4KKworICAgICAgICAqIGRv
bS9MaXZlTm9kZUxpc3QuY3BwOiBSZW1vdmVkIHNvbWUgdW5uZWVkZWQgaW5jbHVkZXMsIGluY2x1
ZGluZyBIVE1MQ29sbGVjdGlvbi5oLgorICAgICAgICAoV2ViQ29yZTo6TGl2ZU5vZGVMaXN0OjpM
aXZlTm9kZUxpc3QpOiBTaW1wbGlmaWVkIGEgbGl0dGxlIGJpdC4KKyAgICAgICAgKFdlYkNvcmU6
OkxpdmVOb2RlTGlzdDo6cm9vdE5vZGUpOiBNb3ZlZCB0byB0aGUgaGVhZGVyLgorCisgICAgICAg
ICogZG9tL0xpdmVOb2RlTGlzdC5oOiBVcGRhdGVkIHNpbmNlIENvbGxlY3Rpb25UcmF2ZXJzYWwg
bm93IHVzZXMgdGhlCisgICAgICAgIG1vcmUgbW9kZXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IsIG5vdCB0aGUgb2xkZXIgb25lIHRoYXQgdXNlZCBhIHZlY3RvciBvZgorICAgICAgICBhbmNl
c3RvcnMgdG8gZG8gdGhlIGl0ZXJhdGlvbi4gQWxzbyB1c2UgV1RGX01BS0VfSVNPX05PTkFMTE9D
QVRBQkxFIHNpbmNlCisgICAgICAgIExpdmVOb2RlTGlzdCBpcyBhbiBhYnN0cmFjdCBjbGFzcywg
YW5kIG1hZGUgc29tZSBtZW1iZXJzIHByb3RlY3RlZC4gUmVtb3ZlZAorICAgICAgICBDYWNoZWRM
aXZlTm9kZUxpc3Q6OnJvb3ROb2RlIHNpbmNlIGl0IHdhcyBpZGVudGljYWwgdG8gTGl2ZU5vZGVM
aXN0Ojpyb290Tm9kZSwKKyAgICAgICAgYW5kIG1hZGUgTGl2ZU5vZGVMaXN0Ojpyb290Tm9kZSBw
cm90ZWN0ZWQgc28gaXQgY2FuIGJlIGNhbGxlZCBpbgorICAgICAgICBDYWNoZWRMaXZlTm9kZUxp
c3QsIGFuZCBtb3ZlZCBpdCB0byB0aGUgaGVhZGVyIHNvIGl0IHdpbGwgc3RpbGwgYmUgaW5saW5l
ZC4KKyAgICAgICAgU2ltcGxpZmllZCBDYWNoZWRMaXN0Tm9kZUxpc3QgdG8gdXNlIG1vcmUgZmlu
YWwsIHRvIG5hbWUgbG9uZyB0eXBlcyBsZXNzIGJ5CisgICAgICAgIHVzaW5nICJhdXRvIiBhbmQg
InVzaW5nIiwgYW5kIHRvIG5vdCBwYXNzIGFyZ3VtZW50cyB0byBmdW5jdGlvbnMgdGhhdCBkb24n
dAorICAgICAgICBuZWVkIHRoZW0gYW55IG1vcmUuCisKKyAgICAgICAgKiBkb20vTmFtZU5vZGVM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVOb2RlTGlzdDo6Y3JlYXRlKTogTW92ZWQg
aGVyZSBmcm9tIHRoZSBoZWFkZXIuCisgICAgICAgICogZG9tL05hbWVOb2RlTGlzdC5oOiBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGVzIGFuZCBjb21tZW50LCBtb3ZlZCBjcmVhdGUKKyAgICAgICAg
ZnVjbnRpb24gb3V0IG9mIHRoZSBoZWFkZXIuCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6IFJl
bW92ZWQgdW5uZWVkZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlvbi5oLgorCisgICAgICAgICog
ZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlz
dDo6Y2xvc2VzdCBjb25zdCk6IFVzZSBsaW5lYWdlZU9mVHlwZSBpbnN0ZWFkIG9mIGFuCisgICAg
ICAgIGV4cGxpY2l0IGxvb3AuCisgICAgICAgIChXZWJDb3JlOjplbGVtZW50c0ZvckxvY2FsTmFt
ZSk6IFVzZSBkZXNjZW5kYW50c09mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnREZXNjZW5kYW50cy4K
KyAgICAgICAgKFdlYkNvcmU6OmFueUVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVUYWdOYW1lU2VsZWN0b3JEYXRhIGNvbnN0
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2lu
Z2xlQ2xhc3NOYW1lU2VsZWN0b3JEYXRhIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlU2VsZWN0b3JEYXRhIGNvbnN0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlTXVs
dGlTZWxlY3RvckRhdGEgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
RGF0YUxpc3Q6OmV4ZWN1dGVDb21waWxlZFNpbXBsZVNlbGVjdG9yQ2hlY2tlciBjb25zdCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZUNvbXBpbGVk
U2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dCBjb25zdCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZUNvbXBpbGVkU2luZ2xlTXVsdGlT
ZWxlY3RvckRhdGEgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGRvbS9TbG90QXNzaWdubWVu
dC5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisKKyAgICAgICAgKiBkb20vVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yLmg6IE1vdmVkIHRoZSBkZWNsYXJhdGlvbnMgb2YgdGhlIGZ1bmN0aW9u
cworICAgICAgICB0byB0aGUgdG9wIG9mIHRoZSBmaWxlLCBzaW5jZSB0aGUgY2xhc3NlcyBhcmUg
cmVhbGx5IGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisgICAgICAgIFJlbmFtZWQgdGhlIGNsYXNz
ZXMgdG8gdGFrZSBvdXQgdGhlIHdvcmQgInR5cGVkIiBzaW5jZSB0aGVzZSBpdGVyYXRvcnMgYXJl
IHRoZQorICAgICAgICBzYW1lIGFzIHRoZSBhbmNlc3RvciBhbmQgY2hpbGRyZW4gaXRlcmF0b3Jz
OyB0aGlzIGdpdmVzIHRoZXNlIHRoZSBzYW1lIG5hbWUgYXMKKyAgICAgICAgdGhlIGNsYXNzZXMg
aW4gdGhlIGRlbGV0ZWQgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIGZpbGUsIGFuZCB3ZSBj
YW4gZm9sbG93CisgICAgICAgIHVwIGJ5IHJlbmFtaW5nIHRoaXMgZmlsZSB0byB0YWtlICJUeXBl
ZCIgb3V0IG9mIHRoZSBuYW1lIG9mIHRoZSBmaWxlLCB0b28uCisgICAgICAgIFJlbW92ZWQgdGhl
IHNlcGFyYXRlICJDb25zdCIgdmVyc2lvbnMgb2YgZXZlcnl0aGluZyBzaW5jZSB3ZSBjYW4ganVz
dCB1c2UKKyAgICAgICAgY29uc3QgaW4gdGhlIHRlbXBsYXRlIGFyZ3VtZW50IHR5cGUgaW5zdGVh
ZC4gVXNlIHRoZSB0ZXJtICJSYW5nZSIgaW5zdGVhZAorICAgICAgICBvZiB0aGUgdGVybSAiSXRl
cmF0b3JBZGFwdGVyIiBmb3IgdGhlIGNsYXNzIHRlbXBsYXRlcyBmb3IgdXNlIGluIHJhbmdlLWJh
c2VkCisgICAgICAgIGZvciBsb29wcyBzaW5jZSB0aGF0J3MgY2xvc2VyIHRvIG1vZGVybiBDKysg
dGVybWlub2xvZ3kuIFVzZSBudWxscHRyIGFzIGEKKyAgICAgICAgc2VudGluZWwgdmFsdWUgZm9y
IHRoZSBlbmQgZnVuY3Rpb25zLiBNYWRlIG1hbnkgZnVuY3Rpb24gbWVtYmVycyBjb25zdCB3aGVy
ZQorICAgICAgICBhcHByb3ByaWF0ZS4gQWRkZWQgYSBuZXcgc3BlY2lhbGl6YXRpb24gdGhhdCBt
YWtlcyBhIGRlc2NlbmRhbnQgaXRlcmF0b3IgdGhhdAorICAgICAgICBpcyBmaWx0ZXJlZCBiYXNl
ZCBvbiBhIGZ1bmN0aW9uLCBmb3IgdXNlIGluIGl0ZXJhdGluZyBkYXRhIGxpc3Qgc3VnZ2VzdGlv
bnMuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCBjb25zdCk6IFVzZSB0aGUgZnVu
Y3Rpb24KKyAgICAgICAgZGVzY2VuZGFudHNPZlR5cGU8SFRNTEJvZHlFbGVtZW50PiBpbnN0ZWFk
IG9mIGdldEVsZW1lbnRCeVRhZ05hbWUoYm9keVRhZykuCisgICAgICAgIEFsc28gbWVyZ2VkIGFw
cGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50IGluIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmFwcGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKworICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmg6IERlbGV0ZWQgYXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQu
CisKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNjYW5Gb3JGb3JtKTogVHdlYWtlZCB1c2FnZSBzbyB0aGVyZSdzIG5vIGV4cGxpY2l0IHVz
ZSBvZiBlbmQuCisgICAgICAgIEFsc28gY2hhbmdlZCBpZiBuZXN0aW5nIGEgbGl0dGxlIGJpdC4K
KworICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uUnVsZU1hdGNoZXI6OmlzRXhjbHVkZWQpOiBVc2UgbGlu
ZWFnZU9mVHlwZSBpbnN0ZWFkIG9mCisgICAgICAgIGVsZW1lbnRMaW5lYWdlLgorCisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06IFVwZGF0ZWQgaW5jbHVk
ZXMuCisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOiBEaXR0by4KKworICAgICAgICAqIGh0
bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDogVXBkYXRlZCBpbmNsdWRlcywgc2hvcnRlbmVkIHR5
cGUgbmFtZXMsCisgICAgICAgIGFuZCB1c2VkIGF1dG8gdG8gc2ltcGxpZnkgdGhlIGNvZGUgYSBi
aXQuIFJlbW92ZWQgdW5uZWVkZWQgY29sbGVjdGlvbiBhcmd1bWVudHMKKyAgICAgICAgZnJvbSB2
YXJpb3VzIENvbGxlY3Rpb25JbmRleENhY2hlIGZ1bmN0aW9ucy4KKworICAgICAgICAqIGh0bWwv
Q29sbGVjdGlvblRyYXZlcnNhbC5oOiBVcGRhdGVkIHRvIHVzZSB0aGUgbmV3L3R5cGVkIHZlcnNp
b24gb2YKKyAgICAgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci4gUmVtb3ZlZCBlbmQgZnVu
Y3Rpb25zLiBVc2Ugc2hvcnRlciB0eXBlIG5hbWVzLgorICAgICAgICBSZXdyb3RlIGFsZ29yaXRo
bXMgdG8gdXNlIG51bGwgdGVybWluYXRpb24gZm9yIGxvb3BzIGluc3RlYWQgb2YgZW5kIGl0ZXJh
dG9yCisgICAgICAgIHZhbHVlcy4KKworICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OnN1Z2dlc3RlZENvbG9ycyBjb25z
dCk6IFVzZSB0aGUgbmV3CisgICAgICAgIEhUTUxEYXRhTGlzdEVsZW1lbnQ6OnN1Z2dlc3Rpb25z
IGluc3RlYWQgb2YgSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBodG1sL0dlbmVyaWNDYWNo
ZWRIVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb248dHJhdmVyc2FsVHlwZT46OmVsZW1lbnRNYXRjaGVzIGNvbnN0KToKKyAgICAg
ICAgVXBkYXRlZCB0byB1c2UgSFRNTERhdGFMaXN0RWxlbWVudDo6aXNTdWdnZXN0aW9uIGFuZCBh
ZGRlZCBhIGNvbW1lbnQgZXhwbGFpbmluZworICAgICAgICB3aHkgdGhhdCBtaWdodCBub3QgYmUg
bmVjZXNzYXJ5IGlmIHdlIGNvcnJlY3QgdGhlIGltcGxlbWVudGF0aW9uIHRvIG1hdGNoIHRoZQor
ICAgICAgICBIVE1MIHNwZWNpZmljYXRpb24uCisKKyAgICAgICAgKiBodG1sL0hUTUxBbGxDb2xs
ZWN0aW9uLmlkbDogU3BlY2lmeSBbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIG9uIHRoZQor
ICAgICAgICBhcmd1bWVudCB0byBuYW1lZEl0ZW0sIGFuZCBbQXRvbVN0cmluZ10gZm9yIHRoZSBh
cmd1bWVudCB0byBpdGVtLgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaWRsOiBEaXR0
by4KKworICAgICAgICAqIGh0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRGF0YUxpc3RFbGVtZW50Ojppc1N1Z2dlc3Rpb24pOiBBZGRlZC4KKyAgICAg
ICAgKiBodG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuaDogQWRkZWQgaXNTdWdnZXN0aW9uIGFuZCBz
dWdnZXN0aW9ucyBmdW5jdGlvbnMgc28KKyAgICAgICAgbG9naWMgYWJvdXQgd2hpY2ggZGF0YSBs
aXN0IG9wdGlvbnMgYXJlIHN1Z2dlc3Rpb25zIGlzIHNoYXJlZC4KKworICAgICAgICAqIGh0bWwv
SFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWxlbWVudEFmZmVjdHNEaXJlY3Rp
b25hbGl0eSk6IFJlZmFjdG9yZWQgc28gd2UgZ2V0IGEgbW9yZSBlZmZpY2llbnQKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gd2hlbiB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudCBpcyBrbm93bi4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjphZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVk
QWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICBVc2UgbGluZWFnZU9mVHlwZSBp
bnN0ZWFkIG9mIGVsZW1lbnRMaW5lYWdlLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5o
OiBSZW1vdmVkIHNvbWUgdW5lZWVkZWQgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAg
KiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZFdpZGdl
dFJlbmRlcmVyKTogVXNlIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEgbG9vcC4KKworICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpjb21wdXRlV2lsbFZhbGlkYXRlIGNvbnN0KTogVXNl
CisgICAgICAgIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEgbG9vcC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmVuY2xvc2luZ0Zvcm1Db250cm9sRWxlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6IERl
bGV0ZWQgdW51c2VkIGVuY2xvc2luZ0Zvcm1Db250cm9sRWxlbWVudC4KKworICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKTogVXNl
CisgICAgICAgIHNob3J0IGZvcm0gQ2FjaGVkSFRNTENvbGxlY3Rpb24gaW5zdGVhZCBvZiB3cml0
aW5nIG91dCBhbGwgdGhlIHRlbXBsYXRlIGFyZ3VtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpvd25lck5vZGUgY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGVG
b3JEb2N1bWVudCk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5pZGw6IFNwZWNpZnkgW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBvbgorICAg
ICAgICB0aGUgYXJndW1lbnQgdG8gbmFtZWRJdGVtLgorCisgICAgICAgICogaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxl
bWVudEluZGV4KTogVXBkYXRlZCBjb2RlIHRoYXQgY2hlY2tzIHRoZQorICAgICAgICBmaXJzdCBl
bGVtZW50IHRvIHVzZSBvcGVyYXRvciEgaW5zdGVhZCBvZiBjb21wYXJpbmcgd2l0aCBlbmQuCisK
KyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOiBSZW1vdmVkIHVubmVlZGVk
IGluY2x1ZGUgb2YgSFRNTENvbGxlY3Rpb24uaC4KKworICAgICAgICAqIGh0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHA6IENsZWFyZWQgc3RyYXkgZXhlY3V0YWJsZSBiaXQuCisKKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6c2V0dXBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzKTogVXNlIHRoZSBuZXcKKyAgICAg
ICAgSFRNTERhdGFMaXN0RWxlbWVudDo6c3VnZ2VzdGlvbnMgaW5zdGVhZCBvZiBIVE1MQ29sbGVj
dGlvbi4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQpOiBVc2UgYSBi
b29sZWFuIHRlc3QgcmF0aGVyCisgICAgICAgIHRoYW4gY29tcGFyaW5nIHdpdGggZW5kIGluIHRo
ZSB1bnVzdWFsIGxvb3AgaGVyZS4KKworICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojpvd25lclNlbGVj
dEVsZW1lbnQgY29uc3QpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2Yg
YSBoYW5kLXdyaXR0ZW4gbG9vcC4KKworICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KTogVXNlIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mCisgICAgICAgIGNhbGxpbmcgb3duZXJE
YXRhTGlzdEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVu
dDo6b3duZXJEYXRhTGlzdEVsZW1lbnQgY29uc3QpOiBEZWxldGVkLiBTaW5jZSB0aGUKKyAgICAg
ICAgc2FtZSBvcHRpb24gY2FuIGJlIHVzZWQgYnkgbmVzdGVkIGRhdGEgbGlzdCBlbGVtZW50cywg
dGhlIGNvbmNlcHQgb2YgYSBzaW5nbGUKKyAgICAgICAgIm93bmVyIiBkYXRhIGxpc3QgZWxlbWVu
dCBpc24ndCBmdWxseSBjb3JyZWN0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1l
bnQ6Om93bmVyU2VsZWN0RWxlbWVudCBjb25zdCk6IFVzZSBhbmNlc3RvcnNPZlR5cGUKKyAgICAg
ICAgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorICAgICAgICAqIGh0bWwvSFRNTE9w
dGlvbkVsZW1lbnQuaDogRGVsZXRlZCBvd25lckRhdGFMaXN0RWxlbWVudC4KKworICAgICAgICAq
IGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbDogU3BlY2lmeSBbUmVxdWlyZXNFeGlzdGlu
Z0F0b21TdHJpbmddIG9uCisgICAgICAgIHRoZSBhcmd1bWVudCB0byBuYW1lZEl0ZW0uCisKKyAg
ICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOiBVcGRhdGVkIGluY2x1ZGVz
LgorCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGw6IFNwZWNpZnkgW1JlcXVp
cmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBvbgorICAgICAgICB0aGUgYXJndW1lbnQgdG8gbmFtZWRJ
dGVtLgorCisgICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0
dHJpYnV0ZVN0eWxlIGNvbnN0KToKKyAgICAgICAgVXNlIGF1dG8gc2luY2UgZmluZFBhcmVudFRh
YmxlIG5vdyByZXR1cm5zIGEgY29uc3QgdGFibGUgcG9pbnRlci4KKyAgICAgICAgKiBodG1sL0hU
TUxUYWJsZUNvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlQ29sRWxl
bWVudDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlIGNvbnN0KToKKyAgICAg
ICAgRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKTogTWFk
ZSBjb25zdC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxD
ZWxsU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmFk
ZGl0aW9uYWxHcm91cFN0eWxlKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVt
ZW50Lmg6IE1hZGUgdGhlIGZ1bmN0aW9ucyBjb25zdCwgYW5kIG1fc2hhcmVkQ2VsbFN0eWxlCisg
ICAgICAgIG11dGFibGUuCisKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZVBhcnRFbGVtZW50OjpmaW5kUGFyZW50VGFi
bGUgY29uc3QpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2YgYSBoYW5k
LXdyaXR0ZW4gbG9vcC4gQWxzbyByZXZpc2VkIHJldHVybiB0eXBlIHRvIGJlIGNvbnN0LWNvbnNp
c3RlbnQuCisgICAgICAgICogaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5oOiBVcGRhdGVkIHJl
dHVybiB0eXBlLgorCisgICAgICAgICogaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHA6
IFJlbW92ZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlvbi5oLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6Om51bVJvd3MgY29uc3QpOiBVc2UgYW4gZW1wdHkgaW5p
dGlhbGl6ZXIKKyAgICAgICAgbGlzdCBpbnN0ZWFkIG9mIHRoZSByZXN1bHQgb2YgdGhlIGVuZCBm
dW5jdGlvbiBzaW5jZSBzdGQ6OmRpc3RhbmNlIHJlcXVpcmVzCisgICAgICAgIGJvdGggYmVnaW4g
YW5kIGVuZCBpdGVyYXRvcnMgaGF2ZSB0aGUgc2FtZSB0eXBlLgorCisgICAgICAgICogaHRtbC9I
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRI
VE1MRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6ZGlyZWN0aW9uRm9yRm9ybURhdGEgY29uc3QpOiBVc2UKKyAgICAgICAgbGlu
ZWFnZU9mVHlwZSByYXRoZXIgdGhhbiBhIGhhbmQtd3JpdHRlbiBsb29wLiBBbHNvIGdvdCByaWQg
b2YgdGhlIG11bHRpcGxlCisgICAgICAgIHN0cmluZ3MgaW4gcmV0dXJuIHBhdGhzIHNpbmNlIHRo
ZSBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBvbmUgb2YgdHdvIHN0cmluZ3MuCisKKyAgICAgICAg
KiBodG1sL0xhYmVsc05vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxhYmVsc05vZGVM
aXN0OjpjcmVhdGUpOiBNb3ZlZCBoZXJlIGZyb20gaGVhZGVyLgorICAgICAgICAqIGh0bWwvTGFi
ZWxzTm9kZUxpc3QuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLCB0d2Vha2VkIGNvZGluZyBz
dHlsZSBhIGJpdCwKKyAgICAgICAgbW92ZWQgY3JlYXRlIGZ1bmN0aW9uIGludG8gdGhlIC5jcHAg
ZmlsZSwgcmVtb3ZlZCBvdmVycmlkZSBvZiBpc1Jvb3RlZEF0RG9jdW1lbnQuCisKKyAgICAgICAg
KiBodG1sL01lZGlhRG9jdW1lbnQuY3BwOiBVcGRhdGVkIGluY2x1ZGVzLgorCisgICAgICAgICog
aHRtbC9SYWRpb05vZGVMaXN0LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorICAgICAg
ICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6Y3JlYXRlKTogTW92ZWQgdGhpcyBoZXJlIGZyb20g
dGhlIGhlYWRlci4KKyAgICAgICAgKFdlYkNvcmU6Om5vbkVtcHR5UmFkaW9CdXR0b24pOiBSZW5h
bWVkIGZyb20gdG9SYWRpb0J1dHRvbklucHV0RWxlbWVudCB0byBtYWtlCisgICAgICAgIGEgbGl0
dGxlIGNsZWFyZXIgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcy4KKyAgICAgICAgKFdlYkNvcmU6OlJh
ZGlvTm9kZUxpc3Q6OnZhbHVlIGNvbnN0KTogVXBkYXRlZCB0byB1c2Ugbm9uRW1wdHlSYWRpb0J1
dHRvbiBhbmQKKyAgICAgICAgc3RyYWlnaHRlbiBvdXQgdGhlIGxvb3AgYSB0aW55IGJpdC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6OnNldFZhbHVlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSYWRpb05vZGVMaXN0OjpjaGVja0VsZW1lbnRNYXRjaGVzUmFkaW9Ob2RlTGlz
dEZpbHRlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSYWRpb05vZGVMaXN0
OjplbGVtZW50TWF0Y2hlcyBjb25zdCk6IE1lcmdlZCBpbiB0aGUgbG9naWMgZnJvbQorICAgICAg
ICBjaGVja0VsZW1lbnRNYXRjaGVzUmFkaW9Ob2RlTGlzdEZpbHRlciwgc2luY2UgdGhlIHNlcGFy
YXRlIGZ1bmN0aW9uIHdhc24ndCBoZWxwZnVsLgorICAgICAgICAqIGh0bWwvUmFkaW9Ob2RlTGlz
dC5oOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzLiBNb3ZlZCB0aGUgY3JlYXRlIGZ1bmN0aW9u
IG91dAorICAgICAgICBvZiB0aGUgaGVhZGVyLiBSZW1vdmVkIHVubmVlZGVkIG92ZXJyaWRlIG9m
IHRoZSBpdGVtIGZ1bmN0aW9uIHRvIHRpZ2h0ZW4gdGhlCisgICAgICAgIHJldHVybiB0eXBlOyBu
b3QgdXNlZCBpbiBXZWJDb3JlIGFuZCBub3QgaGVscGZ1bCBmb3IgYmluZGluZ3MuIE1hZGUgbW9y
ZSBwcml2YXRlLgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6aXRlbSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9SYWRpb05vZGVMaXN0LmlkbDogUmVtb3ZlZCB1bm5l
ZWRlZCBnZXR0ZXI7IHRoZSBpbmhlcml0ZWQgb25lIGZyb20gTm9kZUxpc3QKKyAgICAgICAgd29y
a3MgY29ycmVjdGx5LCBhbmQgdGhpcyBpc24ndCBtb3JlIGVmZmljaWVudCBiZWNhdXNlIG9mIGEg
bW9yZSBzcGVjaWZpYyB0eXBlLgorCisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9ucyk6
IFVzZSBIVE1MRGF0YUxpc3RFbGVtZW50OjpzdWdnZXN0aW9ucworICAgICAgICBpbnN0ZWFkIG9m
IEhUTUxDb2xsZWN0aW9uLiBBbHNvIGFkZGVkIGEgRklYTUUgYmVjYXVzZSB0aGUgY3VycmVudCBs
b2dpYyBpcworICAgICAgICBub3QgcmlnaHQgYWNyb3NzIGxhbmd1YWdlcyBhbmQgd2l0aCBub24t
QVNDSUkgY2hhcmFjdGVycy4KKworICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cDogUmVtb3ZlZCBpbmNsdWRlIG9mIEhUTUxDb2xsZWN0aW9uLmguCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0RWxlbWVudHNCeUNv
bXB1dGVkUm9sZSk6CisgICAgICAgIFVzZSBkZXNjZW5kYW50c09mVHlwZSBpbnN0ZWFkIG9mIGVs
ZW1lbnREZXNjZW5kYW50cy4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1h
dGNoZWRTdHlsZXNGb3JOb2RlKTogVXNlIGFuY2VzdG9yc09mVHlwZQorICAgICAgICBpbnN0ZWFk
IG9mIGEgaGFuZC13cml0dGVuIGxvb3AuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjppbnNwZWN0KTogVXNlIGlzRWxlbWVudE5vZGUgYW5kIGlzRG9jdW1lbnROb2RlCisgICAgICAg
IGluc3RlYWQgb2YgdGhlIG11Y2ggc2xvd2VyIG5vZGVUeXBlLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE1vdXNlZE92ZXJOb2RlKTogVXNlIGlzVGV4dE5v
ZGUgaW5zdGVhZCBvZgorICAgICAgICB0aGUgbXVjaCBzbG93ZXIgbm9kZVR5cGUuCisKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOiBEaXR0by4KKworICAgICAgICAq
IHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbmluZ0xp
bmtFbGVtZW50KTogQWRkZWQuIFVzZXMgbGluZWFnZU9mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnRM
aW5lYWdlLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyk6
IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0F4aXNT
Y3JvbGxTbmFwT2Zmc2V0cy5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlvbi5o
LgorCisgICAgICAgICogcGxhdGZvcm0vRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oOiBSZWR1
Y2VkIGluY2x1ZGVzLCB1c2UgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBh
aW50U2xpZGVyVGlja3MpOiBVc2UgSFRNTERhdGFMaXN0RWxlbWVudDo6c3VnZ2VzdGlvbnMKKyAg
ICAgICAgaW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBw
b3J0Ojp1cGRhdGVNYXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyk6CisgICAgICAg
IFVzZSBhbmNlc3RvcnNPZlR5cGUgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorCisg
ICAgICAgICogc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6SW52YWxpZGF0b3I6OmludmFsaWRhdGVTdHlsZUZvckRlc2NlbmRhbnRzKTogVXNlIG51
bGwgY2hlY2tpbmcKKyAgICAgICAgc3R5bGUgZm9yIHRoZSBmb3IgbG9vcCByYXRoZXIgdGhhbiBj
b21wYXJpbmcgd2l0aCBlbmQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SW52YWxpZGF0b3I6
OmludmFsaWRhdGVTdHlsZVdpdGhNYXRjaEVsZW1lbnQpOiBSZW1vdmUgYW4gdW5uZWVkZWQKKyAg
ICAgICAgbG9jYWwgdmFyaWFibGUgYW5kIHVubmVlZGVkIGJyYWNlcy4KKworICAgICAgICAqIHN0
eWxlL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OmlzQXRTaGFk
b3dCb3VuZGFyeSk6IFVzZSB0aGUgaXM8U2hhZG93Um9vdD4gZnVuY3Rpb24uCisKKyAgICAgICAg
KiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6IFVzZSB0aGUgaXM8U1ZHRWxlbWVudD4gZnVuY3Rpb24uCisg
ICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVu
dDo6dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24pOiBEaXR0by4KKworICAgICAgICAq
IHN2Zy9TVkdFbGVtZW50Lmg6IE1hZGUgY29tcHV0ZWRTdHlsZSBwdWJsaWMuIEF0IGxlYXN0IG9u
ZSBjYWxsIHNpdGUgbm93IGtub3dzIHRoZQorICAgICAgICBzcGVjaWZpYyB0eXBlIFNWR0VsZW1l
bnQsIGFuZCBzbyBjYW4gY2FsbCBpdCBldmVuIG1vcmUgZWZmaWNpZW50bHkgdGhhbiBiZWZvcmUu
IElmCisgICAgICAgIHdlIGxlZnQgaXQgcHJpdmF0ZSB3ZSdkIGhhdmUgdG8gY2FzdCB0byB0aGUg
YmFzZSBjbGFzcyB0byBjYWxsIGl0LCBhbmQgdGhlbiB3b3VsZCBuZWVkCisgICAgICAgIHZpcnR1
YWwgZnVuY3Rpb24gZGlzcGF0Y2guCisKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVEaXNhbGxvd2VkRWxlbWVudHNGcm9tU3VidHJlZSk6
IFVzZSBudWxsIGNoZWNraW5nIHN0eWxlIHJhdGhlciB0aGFuCisgICAgICAgIGNvbXBhcmluZyB3
aXRoIGVuZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmV4cGFuZFVzZUVsZW1l
bnRzSW5TaGFkb3dUcmVlIGNvbnN0KTogRGl0dG8uIEFsc28gYXNzaWduCisgICAgICAgIGFuIGVt
cHR5IGluaXRpYWxpemVyIGxpc3QgaW5zdGVhZCBvZiBlbmQuCisgICAgICAgIChXZWJDb3JlOjpT
VkdVc2VFbGVtZW50OjpleHBhbmRTeW1ib2xFbGVtZW50c0luU2hhZG93VHJlZSBjb25zdCk6IERp
dHRvLgorCisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KTog
VXNlIGxpbmVhZ2VPZlR5cGUgaW5zdGVhZCBvZgorICAgICAgICBlbGVtZW50TGluZWFnZS4gQWxz
byBhZGQgYSBudWxsIGNoZWNrIHRoYXQgc2VlbXMgdG8gaGF2ZSBiZWVuIG5lZWRlZCBiZWZvcmUg
dG9vLgorCiAyMDIwLTAyLTE5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgQXVkaW9TZXNzaW9uIGhhbmRsaW5nIGluIEdQVVByb2Nl
c3MgZm9yIGNhcHR1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjg2NDJmNWMxZWUxYTRlOGYwMjdmNjM4OGEyMTM4
NGU0ODNiNjE0Zi4uZjcyNjhlZjNlMmY0ZjY0MmI2ZTI2YzkzMzRiODk3YzYxYjIzMWE2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAyMC0wMi0xOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRvcnMgaW1wbGVtZW50YXRpb24g
YW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Y29udGFpbmVyRWxlbWVudEZvckVsZW1lbnQpOiBVZXMgYW5jZXN0
b3JzT2ZUeXBlIGluc3RlYWQgb2Ygb3duZXJEYXRhTGlzdEVsZW1lbnQuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwOiBVcGRhdGVkIGlu
Y2x1ZGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlcik6IFBhc3MgcmVmZXJlbmNlcy4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpXZWJEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXIpOiBUYWtlIHJlZmVyZW5jZXMKKyAgICAgICAgaW5zdGVhZCBvZiBwb2lu
dGVycywgc2luY2UgdGhleSBtdXN0IGJvdGggYmUgbm9uLW51bGwuCisgICAgICAgIChXZWJLaXQ6
OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6aGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVy
KTogVXBkYXRlZAorICAgICAgICB0byB1c2UgcmVmZXJlbmNlLgorICAgICAgICAoV2ViS2l0OjpX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpZFNlbGVjdE9wdGlvbik6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpZENsb3NlU3VnZ2Vz
dGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyOjpjbG9zZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rp
b25QaWNrZXI6OmRpc3BsYXlXaXRoQWN0aXZhdGlvblR5cGUpOiBEaXR0by4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmg6
IE1hcmtlZCB0aGUgY2xhc3MKKyAgICAgICAgZmluYWwsIG1hZGUgbW9yZSBmdW5jdGlvbnMgcHJp
dmF0ZSwgdXNlIHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycywKKyAgICAgICAgcmVuYW1l
ZCBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQgdG8gbV9jbGllbnQgc2luY2UgdGhlcmUgaXMg
b25seSBvbmUKKyAgICAgICAgY2xpZW50IHdlIGFyZSBkZWFsaW5nIHdpdGggaW4gdGhpcyBjbGFz
cy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lOjpjb250YWluc0FueUZvcm1FbGVtZW50cyBjb25zdCk6IFVzZSBj
aGlsZHJlbk9mVHlwZSBpbnN0ZWFkCisgICAgICAgIG9mIGEgaGFuZC13cml0dGVuIGxvb3AuCisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjb250YWluc0FueUZvcm1Db250cm9scyBjb25zdCk6
IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIp
OiBUYWtlIHJlZmVyZW5jZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OmNvbnRhaW5pbmdMaW5rQW5jaG9y
RWxlbWVudCk6IFVzZSBsaW5lYWdlT2ZUeXBlIGluc3RlYWQgb2YgZWxlbWVudExpbmVhZ2UuCisg
ICAgICAgIEFsc28gcmVuYW1lZCB0byBlbXBoYXNpemUgdGhhdCB0aGlzIGZ1bmN0aW9uIG9ubHkg
cmV0dXJucyBIVE1MQW5jaG9yRWxlbWVudCBsaW5rcy4KKyAgICAgICAgKFdlYktpdDo6ZWxlbWVu
dFBvc2l0aW9uSW5mb3JtYXRpb24pOiBVcGRhdGVkIGZvciBuYW1lIGFuZCB0eXBlIGNoYW5nZS4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVudCk6IERpdHRv
LgorCiAyMDIwLTAyLTE5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgQXVkaW9TZXNzaW9uIGhhbmRsaW5nIGluIEdQVVByb2Nlc3Mg
Zm9yIGNhcHR1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBiYjZkNjdjNDNhNTJm
Zjk5NzA2ZWJlNDg3ZjE2YWM2YzIwNjk3ZDZlLi45ZTIwMTAwMjc1NTAzN2EwYzMyNDAwNTk0OTAz
NWZkMGRkMjYwZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjAtMDItMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlzZSBET00gaXRlcmF0b3JzIGltcGxlbWVudGF0aW9uIGFuZCB1c2FnZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3ODE2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NRG9jdW1lbnQu
bW06IEN1dCBkb3duIG9uIGluY2x1ZGVzIGFuZCByZS1zb3J0ZWQgdGhlbS4KKyAgICAgICAgKiBE
T00vRE9NRG9jdW1lbnRGcmFnbWVudC5tbTogRGl0dG8uCisgICAgICAgICogRE9NL0RPTUhUTUxG
aWVsZFNldEVsZW1lbnQubW06IERpdHRvLgorCiAyMDIwLTAyLTE5ICBEYW5pZWwgQmF0ZXMgIDxk
YWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtMZWdhY3lXZWJLaXRdIE92ZXJyaWRl
IEVkaXRvckNsaWVudDo6c2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9u
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDc0MWNmMjcyZGFhMTk4Yjg3Njc4OGJhNWY4YWMyYzc1
MzFjM2YxYWEuLmUwNmY2YzIwYzgxMzlmNmU0YjE1NTBkNWQ0NGM4ZjY4ZWM4YWNhMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQpAQCAtMzkwLDcgKzM5MCw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBkb20vRWxlbWVudENoaWxkSXRlcmF0b3IuaAogICAgIGRvbS9F
bGVtZW50Q29udGV4dC5oCiAgICAgZG9tL0VsZW1lbnREYXRhLmgKLSAgICBkb20vRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvci5oCiAgICAgZG9tL0VsZW1lbnRJZGVudGlmaWVyLmgKICAgICBkb20v
RWxlbWVudEl0ZXJhdG9yLmgKICAgICBkb20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNzhjODM3YThjODQ5NWZkMTNiYzljNzFhZmVmZmZmMWNjZWU2NjBmMy4uYTI4OTdmMzljYWEw
NDkzNzQ5MGMzZmY5ZDIwYjc2MGQ4NTg2YWMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjY5Miw3ICsyNjkyLDYgQEAKIAkJ
OTNEMTk2MzMxRDZDQUI4MjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNEMTk2MzIxRDZDQUI4MjAwRkM3RTQ3IC8q
IEV4Y2VwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTkzRDQzNzlGMUQ1N0IxNTMwMEFCODVFQSAvKiBKU0V4ZWNTdGF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEY5MzREODMxMTg5RjFFRTAw
NTA4RDVEIC8qIEpTRXhlY1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTNENDM3QTAxRDU3QjE5QTAwQUI4NUVBIC8qIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QjU2QzlBODFDODkzMTI4MDBDNDU2REYgLyogQ3VzdG9tRWxlbWVudFJlYWN0aW9u
UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk5M0Q0MzdBMTFENTdCM0Y0MDBBQjg1RUEgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQURFMTFGNEEx
OEQ4MzExQjAwNzg5ODNCIC8qIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q0MzdBMjFENTdCM0ZF
MDBBQjg1RUEgLyogVVJMVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1NkI5RENBMTg5REUxMDAwMEJCODQyQyAvKiBVUkxVdGlscy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDQzN0EzMUQ1
N0I3RTIwMEFCODVFQSAvKiBKU01lZGlhTGlzdEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ3MjZGRTcxNkQ5RjIwNDAwM0E0RTZEIC8qIEpT
TWVkaWFMaXN0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTNEOUQ1M0MwREEyN0UxODAwNzcyMTZDIC8qIFJhbmdlQm91bmRhcnlQb2lu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNEOUQ1
M0IwREEyN0UxODAwNzcyMTZDIC8qIFJhbmdlQm91bmRhcnlQb2ludC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDcyMyw2ICsxMDcyMiw3IEBA
CiAJCTkzODBGNDcxMDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpZGdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzODBGNDcyMDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpZGdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MzgwRjQ3NzA5QTExQUNDMDAxRkRCMzQgLyogV2lkZ2V0TWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdpZGdldE1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM4MUI5NDEyM0Y5QjBFMDAwNzExOEI0IC8qIFJhZGlvTm9k
ZUxpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFJhZGlvTm9kZUxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MzgyQUFCMTBEOEMzODYxMDBGMzU3QTYgLyogTm9kZVdpdGhJbmRleC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb2RlV2l0aEluZGV4Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzODJERjU3MTBBOEQ1QzkwMDkyNTY1MiAvKiBDb2xvclNwYWNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yU3BhY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM4RTY1RjAwOUYwOTg0MDAwOEE0OEVDIC8qIEpTSFRN
TEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwpAQCAtMTIyNzAsNyArMTIyNzAsNiBAQAogCQlBRERBOTRCRjE5Njg2
RjgwMDA0NTMwMjkgLyogSlNEb2N1bWVudEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0RvY3VtZW50Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUFEREYxQUQ0MTI1N0NEOUEwMDAzQTc1OSAvKiBSZW5kZXJTVkdQYXRoLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1BhdGguY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBRERGMUFENTEyNTdDRDlBMDAwM0E3NTkgLyogUmVuZGVy
U1ZHUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdQYXRo
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUFERTExRjRBMThEODMxMUIwMDc4OTgz
QiAvKiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQURFMTY3MzYxODEwNTBDMzAwNDYzQTJFIC8qIFJlbmRlclB0ci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJQdHIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQURFQzc4RjcxOEVFNTMwODAwMTMxNUMyIC8qIEpTRWxlbWVudEN1c3Rv
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0VsZW1lbnRDdXN0b20uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURGRTJCNTQxQkQ1RjQxMjAwREFCNDU3IC8q
IFJlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBSZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjIxNDAsNiArMjIxMzksNyBAQAogCQkJCUY1NUIzRDk4MTI1MUYx
MkQwMDNFRjI2OSAvKiBSYWRpb0lucHV0VHlwZS5oICovLAogCQkJCUI2NThGRkEzMTUyMkVGQUEw
MERENTU5NSAvKiBSYWRpb05vZGVMaXN0LmNwcCAqLywKIAkJCQlCNjU4RkZBNDE1MjJFRkFBMDBE
RDU1OTUgLyogUmFkaW9Ob2RlTGlzdC5oICovLAorCQkJCTkzODFCOTQxMjNGOUIwRTAwMDcxMThC
NCAvKiBSYWRpb05vZGVMaXN0LmlkbCAqLywKIAkJCQlGNTVCM0Q5OTEyNTFGMTJEMDAzRUYyNjkg
LyogUmFuZ2VJbnB1dFR5cGUuY3BwICovLAogCQkJCUY1NUIzRDlBMTI1MUYxMkQwMDNFRjI2OSAv
KiBSYW5nZUlucHV0VHlwZS5oICovLAogCQkJCUY1NUIzRDlCMTI1MUYxMkQwMDNFRjI2OSAvKiBS
ZXNldElucHV0VHlwZS5jcHAgKi8sCkBAIC0yODEyMSw3ICsyODEyMSw2IEBACiAJCQkJMzEzQkNF
MUIyMzVFM0JEQjAwRkMzOUU1IC8qIEVsZW1lbnRDb250ZXh0LmggKi8sCiAJCQkJQjVCN0ExNkYx
N0MxMDgwNjAwRTRBQTBBIC8qIEVsZW1lbnREYXRhLmNwcCAqLywKIAkJCQlCNUI3QTE2RTE3QzEw
NDgwMDBFNEFBMEEgLyogRWxlbWVudERhdGEuaCAqLywKLQkJCQlBREUxMUY0QTE4RDgzMTFCMDA3
ODk4M0IgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oICovLAogCQkJCTJEMkJFQjJGMjIz
NEEzMzQwMDU1NDRDQSAvKiBFbGVtZW50SWRlbnRpZmllci5oICovLAogCQkJCUU0QUU3QzE1MTdE
MUJCOTUwMDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0b3IuaCAqLywKIAkJCQlFNDAxQzI3NDE3Q0U1
M0VDMDBDNDFBMzUgLyogRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oICovLApAQCAtMjk3ODcs
NyArMjk3ODYsNiBAQAogCQkJCUU0NkEyQjFFMTdDQTc2QjEwMDBEQkNEOCAvKiBFbGVtZW50Q2hp
bGRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEzQkNFMUMyMzVFM0JFNTAwRkMzOUU1
IC8qIEVsZW1lbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCNUI3QTE3MTE3QzEwQUMw
MDBFNEFBMEEgLyogRWxlbWVudERhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzRDQzN0ExMUQ1
N0IzRjQwMEFCODVFQSAvKiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyRDJCRUIzMTIyMzRBMzM1MDA1NTQ0Q0EgLyogRWxlbWVudElkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0QUU3QzE2MTdEMUJCOTUwMDA5RkIzMSAvKiBFbGVtZW50SXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0MDFDMjc1MTdDRTUzRUMwMEM0MUEzNSAvKiBF
bGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAK
aW5kZXggMjA5ZWI4ZTY1OGUwYjczNDE4ZWMyY2QwMGNkODBhNDE2ZmEyOTMzYS4uNDU4YTQwNTdl
MmNmZmQyZjZmODVjZTgwMWNhZjlkNjFkMjgwMjlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTEw
NDQsNyArMTA0NCw3IEBAIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojptb3VzZUJ1
dHRvbkxpc3RlbmVyKE1vdXNlQnV0dG9uTGlzdGVuZXJSZXN1bHRGCiAKICAgICAvLyBjaGVjayBp
ZiBvdXIgcGFyZW50IGlzIGEgbW91c2UgYnV0dG9uIGxpc3RlbmVyCiAgICAgLy8gRklYTUU6IERv
IHRoZSBjb250aW51YXRpb24gc2VhcmNoIGxpa2UgYW5jaG9yRWxlbWVudCBkb2VzCi0gICAgZm9y
IChhdXRvJiBlbGVtZW50IDogZWxlbWVudExpbmVhZ2UoaXM8RWxlbWVudD4oKm5vZGUpID8gZG93
bmNhc3Q8RWxlbWVudD4obm9kZSkgOiBub2RlLT5wYXJlbnRFbGVtZW50KCkpKSB7CisgICAgZm9y
IChhdXRvJiBlbGVtZW50IDogbGluZWFnZU9mVHlwZTxFbGVtZW50PihpczxFbGVtZW50Pigqbm9k
ZSkgPyBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkgOiAqbm9kZS0+cGFyZW50RWxlbWVudCgpKSkg
ewogICAgICAgICAvLyBJZiB3ZSd2ZSByZWFjaGVkIHRoZSBib2R5IGFuZCB0aGlzIGlzIG5vdCBh
IGNvbnRyb2wgZWxlbWVudCwgZG8gbm90IGV4cG9zZSBwcmVzcyBhY3Rpb24gZm9yIHRoaXMgZWxl
bWVudCB1bmxlc3MgZmlsdGVyIGlzIEluY2x1ZGVCb2R5RWxlbWVudC4KICAgICAgICAgLy8gSXQg
Y2FuIGNhdXNlIGZhbHNlIHBvc2l0aXZlcywgd2hlcmUgZXZlcnkgcGllY2Ugb2YgdGV4dCBpcyBs
YWJlbGVkIGFzIGFjY2VwdGluZyBwcmVzcyBhY3Rpb25zLgogICAgICAgICBpZiAoZWxlbWVudC5o
YXNUYWdOYW1lKGJvZHlUYWcpICYmIGlzU3RhdGljVGV4dCgpICYmIGZpbHRlciA9PSBFeGNsdWRl
Qm9keUVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA5NmYzM2NiNzM0YTcwODM2OWI0
ZjNiYTNkNTQ4NDg4ZTUwNDk1NzcwLi44YTgzMDBkMDk3ZTEwZmM0ZjMzMDM3MzM0MWMxMTRhMTcx
OWEzMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqIENv
cHlyaWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoK
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjM3NSwyMSArMjM3NSwxOSBAQCBBWENvcmVP
YmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhp
dFRlc3QoSFRNTEFyZWFFbAogICAgIGlmICghYXJlYSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBudWxscHRyOwotICAgIGZvciAo
RWxlbWVudCogbWFwUGFyZW50ID0gYXJlYS0+cGFyZW50RWxlbWVudCgpOyBtYXBQYXJlbnQ7IG1h
cFBhcmVudCA9IG1hcFBhcmVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChpczxI
VE1MTWFwRWxlbWVudD4oKm1hcFBhcmVudCkpIHsKLSAgICAgICAgICAgIHBhcmVudCA9IGFjY2Vz
c2liaWxpdHlQYXJlbnRGb3JJbWFnZU1hcChkb3duY2FzdDxIVE1MTWFwRWxlbWVudD4obWFwUGFy
ZW50KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICBhdXRvKiBt
YXBQYXJlbnQgPSBhbmNlc3RvcnNPZlR5cGU8SFRNTE1hcEVsZW1lbnQ+KCphcmVhKS5maXJzdCgp
OworICAgIGlmICghbWFwUGFyZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1
dG8qIHBhcmVudCA9IGFjY2Vzc2liaWxpdHlQYXJlbnRGb3JJbWFnZU1hcChtYXBQYXJlbnQpOwog
ICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIGZv
ciAoY29uc3QgYXV0byYgY2hpbGQgOiBwYXJlbnQtPmNoaWxkcmVuKCkpIHsKICAgICAgICAgaWYg
KGNoaWxkLT5lbGVtZW50UmVjdCgpLmNvbnRhaW5zKHBvaW50KSkKICAgICAgICAgICAgIHJldHVy
biBjaGlsZC5nZXQoKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVDb2x1bW4uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4uY3BwCmluZGV4IGZkYzY3ZjhhYzE1NmE1YWRiYmFhNjEzNTc2Yjg2ODJhZTYy
NzE1YTEuLmZmNDc4ZmQyMzYxNzhiYTM5YmMyMmRjMTk1YTE0OGE1NzkyZTI3YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZUNvbHVtbi5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUu
aCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgiCi0jaW5jbHVkZSAiSFRNTENv
bGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggMjA1MDZmOGVjZmFjNjUzZTU1YWQw
NDgxZGRhNTYwZjVmZDcyYTU0ZC4uNGUwMDlmZWQ2YmQwZTMxMTU3YzY2NDA5YzdiMzVmY2M3ZWZm
MjMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcApAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgIkRPTVdpbmRvd0luZGV4ZWREYXRh
YmFzZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvd1dlYkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUVFBQ
YXJzZXJzLmgiCkBAIC0zOCw3ICszNyw2IEBACiAjaW5jbHVkZSAiSlNFdmVudC5oIgogI2luY2x1
ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkpTSFRNTEF1ZGlvRWxlbWVudC5oIgot
I2luY2x1ZGUgIkpTSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJKU0hUTUxPcHRpb25FbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSlNJREJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSlNSZW1vdGVET01X
aW5kb3cuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BbGxEZXNjZW5kYW50c0Nv
bGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24u
aAppbmRleCA4NTcyYWY1NTA4NjQ5NzU4ZmQwMzdhMzRmZTM5ZjNlMzIzMGE5NTkxLi4xMjBjZjMw
Y2U5MmU3Njg5MjMyYzJiMzk2NjA0ZDM0ZTI4YTE4NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0FsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoK
IAogcHJvdGVjdGVkOgogICAgIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbihDb250YWluZXJOb2Rl
JiByb290Tm9kZSwgQ29sbGVjdGlvblR5cGUgdHlwZSkKLSAgICAgICAgOiBDYWNoZWRIVE1MQ29s
bGVjdGlvbjxBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPEFs
bERlc2NlbmRhbnRzPjo6dHJhdmVyc2FsVHlwZT4ocm9vdE5vZGUsIHR5cGUpCisgICAgICAgIDog
Q2FjaGVkSFRNTENvbGxlY3Rpb24ocm9vdE5vZGUsIHR5cGUpCiAgICAgeyB9CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ2hpbGROb2RlTGlzdC5jcHAKaW5kZXggY2JmNmYxZTc4MjY5MTA5MjVhNjU2NTJj
MzNhZTBjZmQ1NjY3YjIwMy4uNDdlNDZkY2JiNTU5OGU3ODIzNzU1NmRiN2E3YWNmZTIwNDk4ZTEw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmNwcApAQCAtMzksNyArMzksNiBAQCBF
bXB0eU5vZGVMaXN0Ojp+RW1wdHlOb2RlTGlzdCgpCiAKIENoaWxkTm9kZUxpc3Q6OkNoaWxkTm9k
ZUxpc3QoQ29udGFpbmVyTm9kZSYgcGFyZW50KQogICAgIDogbV9wYXJlbnQocGFyZW50KQotICAg
ICwgbV9pbmRleENhY2hlKCp0aGlzKQogewogfQogCkBAIC04Nyw3ICs4Niw3IEBAIHZvaWQgQ2hp
bGROb2RlTGlzdDo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQoTm9kZSomIGN1cnJlbnQsIHVu
c2lnbmVkIGNvdW50KSBjCiAKIHZvaWQgQ2hpbGROb2RlTGlzdDo6aW52YWxpZGF0ZUNhY2hlKCkK
IHsKLSAgICBtX2luZGV4Q2FjaGUuaW52YWxpZGF0ZSgqdGhpcyk7CisgICAgbV9pbmRleENhY2hl
LmludmFsaWRhdGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGlsZE5vZGVMaXN0LmgKaW5kZXggMTEzMjgyZWQ5NjIyYTlkNTAxYWE3NGUwMzJkODdjNjkxY2I5
MzdiNi4uMTBiOWEyODY5MDJmNmRhNzMwZDFmNDNiNTNkNzY1M2YwMDQ0ZjM1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ2hpbGROb2RlTGlzdC5oCkBAIC03Miw3ICs3Miw2IEBAIHB1YmxpYzoKICAgICAvLyBG
b3IgQ29sbGVjdGlvbkluZGV4Q2FjaGUKICAgICBOb2RlKiBjb2xsZWN0aW9uQmVnaW4oKSBjb25z
dDsKICAgICBOb2RlKiBjb2xsZWN0aW9uTGFzdCgpIGNvbnN0OwotICAgIE5vZGUqIGNvbGxlY3Rp
b25FbmQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdm9pZCBjb2xsZWN0aW9uVHJh
dmVyc2VGb3J3YXJkKE5vZGUqJiwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRD
b3VudCkgY29uc3Q7CiAgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChOb2RlKiYs
IHVuc2lnbmVkIGNvdW50KSBjb25zdDsKICAgICBib29sIGNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJh
Y2t3YXJkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0NsYXNzQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsYXNzQ29sbGVj
dGlvbi5oCmluZGV4IGVjZjdmM2QyMGM2MTVjNDY4OTgyMGYxOWFhOWNmM2E4NjMyZjZiZGQuLmE2
NzVkMzA2YmRmNzVmMzhhZjlmZmU4OWE2YjRiZTg5MjNmZDRjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DbGFzc0NvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2xhc3NDb2xsZWN0aW9uLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKIH07CiAKIGlubGlu
ZSBDbGFzc0NvbGxlY3Rpb246OkNsYXNzQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiByb290Tm9k
ZSwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgY2xhc3NOYW1lcykKLSAg
ICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPENsYXNzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVU
cmFpdHM8QnlDbGFzcz46OnRyYXZlcnNhbFR5cGU+KHJvb3ROb2RlLCB0eXBlKQorICAgIDogQ2Fj
aGVkSFRNTENvbGxlY3Rpb24ocm9vdE5vZGUsIHR5cGUpCiAgICAgLCBtX2NsYXNzTmFtZXMoY2xh
c3NOYW1lcywgcm9vdE5vZGUuZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSkKICAgICAsIG1fb3Jp
Z2luYWxDbGFzc05hbWVzKGNsYXNzTmFtZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29sbGVjdGlvbkluZGV4Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db2xsZWN0
aW9uSW5kZXhDYWNoZS5oCmluZGV4IDI4MDE5NDJmZGEwODhjNWM1ZjZhMTE1YTI1OTQ3ODg1YjVl
ZWIxZjkuLjNmODFiMjNhNmRhNDUyOTU4NDIxNzYyMzVkZjQ1MmE3NTY2OTRlMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db2xsZWN0aW9uSW5kZXhDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db2xsZWN0aW9uSW5kZXhDYWNoZS5oCkBAIC0zNCwxNSArMzQsMTUgQEAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZEZvckNvbGxlY3Rp
b25JbmRleENhY2hlKHNpemVfdCk7CiB0ZW1wbGF0ZSA8Y2xhc3MgQ29sbGVjdGlvbiwgY2xhc3Mg
SXRlcmF0b3I+CiBjbGFzcyBDb2xsZWN0aW9uSW5kZXhDYWNoZSB7CiBwdWJsaWM6Ci0gICAgZXhw
bGljaXQgQ29sbGVjdGlvbkluZGV4Q2FjaGUoY29uc3QgQ29sbGVjdGlvbiYpOworICAgIENvbGxl
Y3Rpb25JbmRleENhY2hlKCk7CiAKICAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3Jf
dHJhaXRzPEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSBOb2RlVHlwZTsKIAogICAgIHVuc2lnbmVkIG5v
ZGVDb3VudChjb25zdCBDb2xsZWN0aW9uJik7CiAgICAgTm9kZVR5cGUqIG5vZGVBdChjb25zdCBD
b2xsZWN0aW9uJiwgdW5zaWduZWQgaW5kZXgpOwogCi0gICAgYm9vbCBoYXNWYWxpZENhY2hlKGNv
bnN0IENvbGxlY3Rpb24mIGNvbGxlY3Rpb24pIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudCAhPSBj
b2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKSB8fCBtX25vZGVDb3VudFZhbGlkIHx8IG1fbGlzdFZh
bGlkOyB9Ci0gICAgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IENvbGxlY3Rpb24mKTsKKyAgICBib29s
IGhhc1ZhbGlkQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnQgfHwgbV9ub2RlQ291bnRW
YWxpZCB8fCBtX2xpc3RWYWxpZDsgfQorICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIHNpemVf
dCBtZW1vcnlDb3N0KCkKICAgICB7CiAgICAgICAgIC8vIG1lbW9yeUNvc3QoKSBtYXkgYmUgaW52
b2tlZCBjb25jdXJyZW50bHkgZnJvbSBhIEdDIHRocmVhZCwgYW5kIHdlIG5lZWQgdG8gYmUgY2Fy
ZWZ1bApAQCAtNTYsMjAgKzU2LDE2IEBAIHByaXZhdGU6CiAgICAgTm9kZVR5cGUqIHRyYXZlcnNl
QmFja3dhcmRUbyhjb25zdCBDb2xsZWN0aW9uJiwgdW5zaWduZWQpOwogICAgIE5vZGVUeXBlKiB0
cmF2ZXJzZUZvcndhcmRUbyhjb25zdCBDb2xsZWN0aW9uJiwgdW5zaWduZWQpOwogCi0gICAgSXRl
cmF0b3IgbV9jdXJyZW50OwotICAgIHVuc2lnbmVkIG1fY3VycmVudEluZGV4OwotICAgIHVuc2ln
bmVkIG1fbm9kZUNvdW50OworICAgIEl0ZXJhdG9yIG1fY3VycmVudCB7IH07CisgICAgdW5zaWdu
ZWQgbV9jdXJyZW50SW5kZXggeyAwIH07CisgICAgdW5zaWduZWQgbV9ub2RlQ291bnQgeyAwIH07
CiAgICAgVmVjdG9yPE5vZGVUeXBlKj4gbV9jYWNoZWRMaXN0OwogICAgIGJvb2wgbV9ub2RlQ291
bnRWYWxpZCA6IDE7CiAgICAgYm9vbCBtX2xpc3RWYWxpZCA6IDE7CiB9OwogCi10ZW1wbGF0ZSA8
Y2xhc3MgQ29sbGVjdGlvbiwgY2xhc3MgSXRlcmF0b3I+Ci1pbmxpbmUgQ29sbGVjdGlvbkluZGV4
Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+OjpDb2xsZWN0aW9uSW5kZXhDYWNoZShjb25zdCBD
b2xsZWN0aW9uJiBjb2xsZWN0aW9uKQotICAgIDogbV9jdXJyZW50KGNvbGxlY3Rpb24uY29sbGVj
dGlvbkVuZCgpKQotICAgICwgbV9jdXJyZW50SW5kZXgoMCkKLSAgICAsIG1fbm9kZUNvdW50KDAp
Ci0gICAgLCBtX25vZGVDb3VudFZhbGlkKGZhbHNlKQordGVtcGxhdGU8Y2xhc3MgQ29sbGVjdGlv
biwgY2xhc3MgSXRlcmF0b3I+IENvbGxlY3Rpb25JbmRleENhY2hlPENvbGxlY3Rpb24sIEl0ZXJh
dG9yPjo6Q29sbGVjdGlvbkluZGV4Q2FjaGUoKQorICAgIDogbV9ub2RlQ291bnRWYWxpZChmYWxz
ZSkKICAgICAsIG1fbGlzdFZhbGlkKGZhbHNlKQogewogfQpAQCAtNzgsNyArNzQsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgQ29sbGVjdGlvbiwgY2xhc3MgSXRlcmF0b3I+CiBpbmxpbmUgdW5zaWduZWQg
Q29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+Ojpub2RlQ291bnQoY29u
c3QgQ29sbGVjdGlvbiYgY29sbGVjdGlvbikKIHsKICAgICBpZiAoIW1fbm9kZUNvdW50VmFsaWQp
IHsKLSAgICAgICAgaWYgKCFoYXNWYWxpZENhY2hlKGNvbGxlY3Rpb24pKQorICAgICAgICBpZiAo
IWhhc1ZhbGlkQ2FjaGUoKSkKICAgICAgICAgICAgIGNvbGxlY3Rpb24ud2lsbFZhbGlkYXRlSW5k
ZXhDYWNoZSgpOwogICAgICAgICBtX25vZGVDb3VudCA9IGNvbXB1dGVOb2RlQ291bnRVcGRhdGlu
Z0xpc3RDYWNoZShjb2xsZWN0aW9uKTsKICAgICAgICAgbV9ub2RlQ291bnRWYWxpZCA9IHRydWU7
CkBAIC05MSwxNiArODcsMTUgQEAgdGVtcGxhdGUgPGNsYXNzIENvbGxlY3Rpb24sIGNsYXNzIEl0
ZXJhdG9yPgogdW5zaWduZWQgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0
b3I+Ojpjb21wdXRlTm9kZUNvdW50VXBkYXRpbmdMaXN0Q2FjaGUoY29uc3QgQ29sbGVjdGlvbiYg
Y29sbGVjdGlvbikKIHsKICAgICBhdXRvIGN1cnJlbnQgPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25C
ZWdpbigpOwotICAgIGF1dG8gZW5kID0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCk7Ci0gICAg
aWYgKGN1cnJlbnQgPT0gZW5kKQorICAgIGlmICghY3VycmVudCkKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICB1bnNpZ25lZCBvbGRDYXBhY2l0eSA9IG1fY2FjaGVkTGlzdC5jYXBhY2l0eSgpOwot
ICAgIHdoaWxlIChjdXJyZW50ICE9IGVuZCkgeworICAgIHdoaWxlIChjdXJyZW50KSB7CiAgICAg
ICAgIG1fY2FjaGVkTGlzdC5hcHBlbmQoJipjdXJyZW50KTsKICAgICAgICAgdW5zaWduZWQgdHJh
dmVyc2VkOwogICAgICAgICBjb2xsZWN0aW9uLmNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoY3Vy
cmVudCwgMSwgdHJhdmVyc2VkKTsKLSAgICAgICAgQVNTRVJUKHRyYXZlcnNlZCA9PSAoY3VycmVu
dCAhPSBlbmQgPyAxIDogMCkpOworICAgICAgICBBU1NFUlQodHJhdmVyc2VkID09IChjdXJyZW50
ID8gMSA6IDApKTsKICAgICB9CiAgICAgbV9saXN0VmFsaWQgPSB0cnVlOwogCkBAIC0xMTMsNyAr
MTA4LDcgQEAgdW5zaWduZWQgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0
b3I+Ojpjb21wdXRlTm9kZUNvdW50VXBkYXRpbmdMaXMKIHRlbXBsYXRlIDxjbGFzcyBDb2xsZWN0
aW9uLCBjbGFzcyBJdGVyYXRvcj4KIGlubGluZSB0eXBlbmFtZSBDb2xsZWN0aW9uSW5kZXhDYWNo
ZTxDb2xsZWN0aW9uLCBJdGVyYXRvcj46Ok5vZGVUeXBlKiBDb2xsZWN0aW9uSW5kZXhDYWNoZTxD
b2xsZWN0aW9uLCBJdGVyYXRvcj46OnRyYXZlcnNlQmFja3dhcmRUbyhjb25zdCBDb2xsZWN0aW9u
JiBjb2xsZWN0aW9uLCB1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBBU1NFUlQobV9jdXJyZW50ICE9
IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50KTsKICAg
ICBBU1NFUlQoaW5kZXggPCBtX2N1cnJlbnRJbmRleCk7CiAKICAgICBib29sIGZpcnN0SXNDbG9z
ZXIgPSBpbmRleCA8IG1fY3VycmVudEluZGV4IC0gaW5kZXg7CkBAIC0xMjIsNTAgKzExNyw1MCBA
QCBpbmxpbmUgdHlwZW5hbWUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0
b3I+OjpOb2RlVHlwZSogQ29sbGVjdGlvbgogICAgICAgICBtX2N1cnJlbnRJbmRleCA9IDA7CiAg
ICAgICAgIGlmIChpbmRleCkKICAgICAgICAgICAgIGNvbGxlY3Rpb24uY29sbGVjdGlvblRyYXZl
cnNlRm9yd2FyZChtX2N1cnJlbnQsIGluZGV4LCBtX2N1cnJlbnRJbmRleCk7Ci0gICAgICAgIEFT
U0VSVChtX2N1cnJlbnQgIT0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCkpOworICAgICAgICBB
U1NFUlQobV9jdXJyZW50KTsKICAgICAgICAgcmV0dXJuICYqbV9jdXJyZW50OwogICAgIH0KIAog
ICAgIGNvbGxlY3Rpb24uY29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQobV9jdXJyZW50LCBtX2N1
cnJlbnRJbmRleCAtIGluZGV4KTsKICAgICBtX2N1cnJlbnRJbmRleCA9IGluZGV4OwogCi0gICAg
QVNTRVJUKG1fY3VycmVudCAhPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKSk7CisgICAgQVNT
RVJUKG1fY3VycmVudCk7CiAgICAgcmV0dXJuICYqbV9jdXJyZW50OwogfQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgQ29sbGVjdGlvbiwgY2xhc3MgSXRlcmF0b3I+CiBpbmxpbmUgdHlwZW5hbWUgQ29sbGVj
dGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+OjpOb2RlVHlwZSogQ29sbGVjdGlv
bkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+Ojp0cmF2ZXJzZUZvcndhcmRUbyhjb25z
dCBDb2xsZWN0aW9uJiBjb2xsZWN0aW9uLCB1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBBU1NFUlQo
bV9jdXJyZW50ICE9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpKTsKKyAgICBBU1NFUlQobV9j
dXJyZW50KTsKICAgICBBU1NFUlQoaW5kZXggPiBtX2N1cnJlbnRJbmRleCk7CiAgICAgQVNTRVJU
KCFtX25vZGVDb3VudFZhbGlkIHx8IGluZGV4IDwgbV9ub2RlQ291bnQpOwogCiAgICAgYm9vbCBs
YXN0SXNDbG9zZXIgPSBtX25vZGVDb3VudFZhbGlkICYmIG1fbm9kZUNvdW50IC0gaW5kZXggPCBp
bmRleCAtIG1fY3VycmVudEluZGV4OwogICAgIGlmIChsYXN0SXNDbG9zZXIgJiYgY29sbGVjdGlv
bi5jb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCgpKSB7Ci0gICAgICAgIEFTU0VSVChoYXNW
YWxpZENhY2hlKGNvbGxlY3Rpb24pKTsKKyAgICAgICAgQVNTRVJUKGhhc1ZhbGlkQ2FjaGUoKSk7
CiAgICAgICAgIG1fY3VycmVudCA9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkxhc3QoKTsKICAgICAg
ICAgaWYgKGluZGV4IDwgbV9ub2RlQ291bnQgLSAxKQogICAgICAgICAgICAgY29sbGVjdGlvbi5j
b2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChtX2N1cnJlbnQsIG1fbm9kZUNvdW50IC0gaW5kZXgg
LSAxKTsKICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBpbmRleDsKLSAgICAgICAgQVNTRVJUKG1f
Y3VycmVudCAhPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKSk7CisgICAgICAgIEFTU0VSVCht
X2N1cnJlbnQpOwogICAgICAgICByZXR1cm4gJiptX2N1cnJlbnQ7CiAgICAgfQogCi0gICAgaWYg
KCFoYXNWYWxpZENhY2hlKGNvbGxlY3Rpb24pKQorICAgIGlmICghaGFzVmFsaWRDYWNoZSgpKQog
ICAgICAgICBjb2xsZWN0aW9uLndpbGxWYWxpZGF0ZUluZGV4Q2FjaGUoKTsKIAogICAgIHVuc2ln
bmVkIHRyYXZlcnNlZENvdW50OwogICAgIGNvbGxlY3Rpb24uY29sbGVjdGlvblRyYXZlcnNlRm9y
d2FyZChtX2N1cnJlbnQsIGluZGV4IC0gbV9jdXJyZW50SW5kZXgsIHRyYXZlcnNlZENvdW50KTsK
ICAgICBtX2N1cnJlbnRJbmRleCA9IG1fY3VycmVudEluZGV4ICsgdHJhdmVyc2VkQ291bnQ7CiAK
LSAgICBpZiAobV9jdXJyZW50ID09IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpKSB7CisgICAg
aWYgKCFtX2N1cnJlbnQpIHsKICAgICAgICAgQVNTRVJUKG1fY3VycmVudEluZGV4IDwgaW5kZXgp
OwogICAgICAgICAvLyBGYWlsZWQgdG8gZmluZCB0aGUgaW5kZXggYnV0IGF0IGxlYXN0IHdlIG5v
dyBrbm93IHRoZSBzaXplLgogICAgICAgICBtX25vZGVDb3VudCA9IG1fY3VycmVudEluZGV4ICsg
MTsKICAgICAgICAgbV9ub2RlQ291bnRWYWxpZCA9IHRydWU7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KLSAgICBBU1NFUlQoaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKSk7CisgICAg
QVNTRVJUKGhhc1ZhbGlkQ2FjaGUoKSk7CiAgICAgcmV0dXJuICYqbV9jdXJyZW50OwogfQogCkBA
IC0xNzgsOCArMTczLDcgQEAgaW5saW5lIHR5cGVuYW1lIENvbGxlY3Rpb25JbmRleENhY2hlPENv
bGxlY3Rpb24sIEl0ZXJhdG9yPjo6Tm9kZVR5cGUqIENvbGxlY3Rpb24KICAgICBpZiAobV9saXN0
VmFsaWQpCiAgICAgICAgIHJldHVybiBtX2NhY2hlZExpc3RbaW5kZXhdOwogCi0gICAgYXV0byBl
bmQgPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKTsKLSAgICBpZiAobV9jdXJyZW50ICE9IGVu
ZCkgeworICAgIGlmIChtX2N1cnJlbnQpIHsKICAgICAgICAgaWYgKGluZGV4ID4gbV9jdXJyZW50
SW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VGb3J3YXJkVG8oY29sbGVjdGlvbiwg
aW5kZXgpOwogICAgICAgICBpZiAoaW5kZXggPCBtX2N1cnJlbnRJbmRleCkKQEAgLTE4OSwzOSAr
MTgzLDM5IEBAIGlubGluZSB0eXBlbmFtZSBDb2xsZWN0aW9uSW5kZXhDYWNoZTxDb2xsZWN0aW9u
LCBJdGVyYXRvcj46Ok5vZGVUeXBlKiBDb2xsZWN0aW9uCiAKICAgICBib29sIGxhc3RJc0Nsb3Nl
ciA9IG1fbm9kZUNvdW50VmFsaWQgJiYgbV9ub2RlQ291bnQgLSBpbmRleCA8IGluZGV4OwogICAg
IGlmIChsYXN0SXNDbG9zZXIgJiYgY29sbGVjdGlvbi5jb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNr
d2FyZCgpKSB7Ci0gICAgICAgIEFTU0VSVChoYXNWYWxpZENhY2hlKGNvbGxlY3Rpb24pKTsKKyAg
ICAgICAgQVNTRVJUKGhhc1ZhbGlkQ2FjaGUoKSk7CiAgICAgICAgIG1fY3VycmVudCA9IGNvbGxl
Y3Rpb24uY29sbGVjdGlvbkxhc3QoKTsKICAgICAgICAgaWYgKGluZGV4IDwgbV9ub2RlQ291bnQg
LSAxKQogICAgICAgICAgICAgY29sbGVjdGlvbi5jb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZCht
X2N1cnJlbnQsIG1fbm9kZUNvdW50IC0gaW5kZXggLSAxKTsKICAgICAgICAgbV9jdXJyZW50SW5k
ZXggPSBpbmRleDsKLSAgICAgICAgQVNTRVJUKG1fY3VycmVudCAhPSBlbmQpOworICAgICAgICBB
U1NFUlQobV9jdXJyZW50KTsKICAgICAgICAgcmV0dXJuICYqbV9jdXJyZW50OwogICAgIH0KIAot
ICAgIGlmICghaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKSkKKyAgICBpZiAoIWhhc1ZhbGlkQ2Fj
aGUoKSkKICAgICAgICAgY29sbGVjdGlvbi53aWxsVmFsaWRhdGVJbmRleENhY2hlKCk7CiAKICAg
ICBtX2N1cnJlbnQgPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25CZWdpbigpOwogICAgIG1fY3VycmVu
dEluZGV4ID0gMDsKLSAgICBib29sIHN0YXJ0SXNFbmQgPSBtX2N1cnJlbnQgPT0gZW5kOwotICAg
IGlmIChpbmRleCAmJiAhc3RhcnRJc0VuZCkgeworICAgIGJvb2wgc3RhcnRJc0VuZCA9ICFtX2N1
cnJlbnQ7CisgICAgaWYgKGluZGV4ICYmIG1fY3VycmVudCkgewogICAgICAgICBjb2xsZWN0aW9u
LmNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQobV9jdXJyZW50LCBpbmRleCwgbV9jdXJyZW50SW5k
ZXgpOwotICAgICAgICBBU1NFUlQobV9jdXJyZW50ICE9IGVuZCB8fCBtX2N1cnJlbnRJbmRleCA8
IGluZGV4KTsKKyAgICAgICAgQVNTRVJUKG1fY3VycmVudCB8fCBtX2N1cnJlbnRJbmRleCA8IGlu
ZGV4KTsKICAgICB9Ci0gICAgaWYgKG1fY3VycmVudCA9PSBlbmQpIHsKKyAgICBpZiAoIW1fY3Vy
cmVudCkgewogICAgICAgICAvLyBGYWlsZWQgdG8gZmluZCB0aGUgaW5kZXggYnV0IGF0IGxlYXN0
IHdlIG5vdyBrbm93IHRoZSBzaXplLgogICAgICAgICBtX25vZGVDb3VudCA9IHN0YXJ0SXNFbmQg
PyAwIDogbV9jdXJyZW50SW5kZXggKyAxOwogICAgICAgICBtX25vZGVDb3VudFZhbGlkID0gdHJ1
ZTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIEFTU0VSVChoYXNWYWxpZENh
Y2hlKGNvbGxlY3Rpb24pKTsKKyAgICBBU1NFUlQoaGFzVmFsaWRDYWNoZSgpKTsKICAgICByZXR1
cm4gJiptX2N1cnJlbnQ7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBDb2xsZWN0aW9uLCBjbGFzcyBJ
dGVyYXRvcj4KLXZvaWQgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+
OjppbnZhbGlkYXRlKGNvbnN0IENvbGxlY3Rpb24mIGNvbGxlY3Rpb24pCit2b2lkIENvbGxlY3Rp
b25JbmRleENhY2hlPENvbGxlY3Rpb24sIEl0ZXJhdG9yPjo6aW52YWxpZGF0ZSgpCiB7Ci0gICAg
bV9jdXJyZW50ID0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCk7CisgICAgbV9jdXJyZW50ID0g
eyB9OwogICAgIG1fbm9kZUNvdW50VmFsaWQgPSBmYWxzZTsKICAgICBtX2xpc3RWYWxpZCA9IGZh
bHNlOwogICAgIG1fY2FjaGVkTGlzdC5zaHJpbmsoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKaW5kZXggN2FlMTM4MjhjNWYwMmY0YmNmZDg5ZWE4NjAwMDQ5YTM1M2NhY2M3Yi4u
OGQ0ZWY5NmRlNzcyY2Q3YTMyMzI0MWY3OWQzMmJiMmViYTc3OTg2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcApAQCAtOTIzLDcgKzkyMyw3IEBAIEVsZW1lbnQqIENvbnRhaW5l
ck5vZGU6Omxhc3RFbGVtZW50Q2hpbGQoKSBjb25zdAogdW5zaWduZWQgQ29udGFpbmVyTm9kZTo6
Y2hpbGRFbGVtZW50Q291bnQoKSBjb25zdAogewogICAgIGF1dG8gY2hpbGRyZW4gPSBjaGlsZHJl
bk9mVHlwZTxFbGVtZW50PigqdGhpcyk7Ci0gICAgcmV0dXJuIHN0ZDo6ZGlzdGFuY2UoY2hpbGRy
ZW4uYmVnaW4oKSwgY2hpbGRyZW4uZW5kKCkpOworICAgIHJldHVybiBzdGQ6OmRpc3RhbmNlKGNo
aWxkcmVuLmJlZ2luKCksIHsgfSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5v
ZGU6OmFwcGVuZChWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIHZlY3RvcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCmluZGV4IDJhZjI3NjE4Nzc1N2U4
ODI4ODMwNTVjOTA0ZTZlODczMzRjZDRkMjMuLmU1NmI4ZmUyMWFjNTY4ZjIyMDg1NWQ4YTRlMzVk
YTAxNDQ4NTgzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
QWxnb3JpdGhtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmNwcApAQCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKIAorI2luY2x1ZGUgIkVsZW1lbnRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTaGFkb3dS
b290LmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3Rv
bUVsZW1lbnRSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5LmNwcAppbmRleCA5NDU4MmVmNDNmNmYzZDc0MmI3MDA4NzI5NjllM2Y5Mzk1Y2RkMjY3
Li41YjA5NWFjYmYxY2Q1NDEzMDhlMWEwZmJmMDM1MDE1OTE5MTA2NTBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcApAQCAtMjksMTQgKzI5LDEyIEBA
CiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCIKICNpbmNsdWRlICJET01X
aW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNp
bmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSlNET01Q
cm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgogI2luY2x1ZGUgIlF1
YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SlNWYWx1ZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAppbmRleCA4ZjIxYjI3OTM1MDM3NjE5
ZWIxMDNiOTRjYzIwYzcyY2JiNzExYTE4Li4yYTI1YWIyZTVhYTc2Nzk2NTA4MzcwYWVmYTI5MWU3
MmM3YzFjNjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCkBAIC0y
NCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCisjaW5j
bHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50UGFyc2VyLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlhNTERvY3VtZW50UGFyc2VyLmgiCkBAIC0x
MDMsNyArMTAzLDcgQEAgRWxlbWVudCogRG9jdW1lbnRGcmFnbWVudDo6Z2V0RWxlbWVudEJ5SWQo
Y29uc3QgQXRvbVN0cmluZyYgaWQpIGNvbnN0CiAgICAgICAgIHJldHVybiB0cmVlU2NvcGUoKS5n
ZXRFbGVtZW50QnlJZChpZCk7CiAKICAgICAvLyBPdGhlcndpc2UsIGZhbGwgYmFjayB0byBpdGVy
YXRpbmcgYWxsIG9mIHRoZSBlbGVtZW50IGRlc2NlbmRhbnRzLgotICAgIGZvciAoYXV0byYgZWxl
bWVudCA6IGVsZW1lbnREZXNjZW5kYW50cygqdGhpcykpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1l
bnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PigqdGhpcykpIHsKICAgICAgICAgaWYgKGVs
ZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKSA9PSBpZCkKICAgICAgICAgICAgIHJldHVybiBjb25zdF9j
YXN0PEVsZW1lbnQqPigmZWxlbWVudCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IDg3MThlNmQ4NmFkN2ZlNTA4YjEzODcwNmE2NWQyOTVhZGQ0MzljNTIuLjAxMTdhMzY2YmM3MjU3
OTVhNTZmZWI5OWFlMWZlMTYyNzgzOGVlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTQs
NyArNCw3IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNv
bSkKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMjAwNyBEYXZpZCBTbWl0aCAoY2F0ZmlzaC5tYW5AZ21haWwuY29t
KQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA3IEVyaWMgU2VpZGVsIChlcmljQHdlYmtpdC5v
cmcpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgpAQCAtNjAsNyArNjAsNiBAQAogI2luY2x1ZGUgIkdldEFuaW1hdGlv
bnNPcHRpb25zLmgiCiAjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TENhbnZhc0VsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxIdG1sRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxMYWJlbEVsZW1lbnQuaCIKQEAgLTM0MDAsMjYgKzMzOTksMTQgQEAgdW5zaWduZWQgRWxl
bWVudDo6cmFyZURhdGFDaGlsZEluZGV4KCkgY29uc3QKIAogQXRvbVN0cmluZyBFbGVtZW50Ojpj
b21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdAogewotICAgIGlmIChjb25zdCBFbGVtZW50
RGF0YSogZWxlbWVudERhdGEgPSB0aGlzLT5lbGVtZW50RGF0YSgpKSB7Ci0gICAgICAgIGlmIChj
b25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnREYXRhLT5maW5kTGFuZ3VhZ2VBdHRy
aWJ1dGUoKSkKLSAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGUtPnZhbHVlKCk7Ci0gICAgfQot
CiAgICAgLy8gVGhlIGxhbmd1YWdlIHByb3BlcnR5IGlzIGluaGVyaXRlZCwgc28gd2UgaXRlcmF0
ZSBvdmVyIHRoZSBwYXJlbnRzIHRvIGZpbmQgdGhlIGZpcnN0IGxhbmd1YWdlLgotICAgIGNvbnN0
IE5vZGUqIGN1cnJlbnROb2RlID0gdGhpczsKLSAgICB3aGlsZSAoKGN1cnJlbnROb2RlID0gY3Vy
cmVudE5vZGUtPnBhcmVudE5vZGUoKSkpIHsKLSAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KCpjdXJy
ZW50Tm9kZSkpIHsKLSAgICAgICAgICAgIGlmIChjb25zdCBFbGVtZW50RGF0YSogZWxlbWVudERh
dGEgPSBkb3duY2FzdDxFbGVtZW50PigqY3VycmVudE5vZGUpLmVsZW1lbnREYXRhKCkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBlbGVtZW50RGF0
YS0+ZmluZExhbmd1YWdlQXR0cmlidXRlKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBh
dHRyaWJ1dGUtPnZhbHVlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoaXM8
RG9jdW1lbnQ+KCpjdXJyZW50Tm9kZSkpIHsKLSAgICAgICAgICAgIC8vIGNoZWNraW5nIHRoZSBN
SU1FIGNvbnRlbnQtbGFuZ3VhZ2UKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVu
dD4oKmN1cnJlbnROb2RlKS5jb250ZW50TGFuZ3VhZ2UoKTsKKyAgICBmb3IgKGF1dG8mIGVsZW1l
bnQgOiBsaW5lYWdlT2ZUeXBlPEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBpZiAoYXV0byog
ZWxlbWVudERhdGEgPSBlbGVtZW50LmVsZW1lbnREYXRhKCkpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvKiBhdHRyaWJ1dGUgPSBlbGVtZW50RGF0YS0+ZmluZExhbmd1YWdlQXR0cmlidXRlKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFsdWUoKTsKICAgICAgICAgfQogICAg
IH0KLQotICAgIHJldHVybiBudWxsQXRvbSgpOworICAgIHJldHVybiBkb2N1bWVudCgpLmNvbnRl
bnRMYW5ndWFnZSgpOwogfQogCiBMb2NhbGUmIEVsZW1lbnQ6OmxvY2FsZSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oCmluZGV4IDRiNjJkMzhi
MzhmZDM4NDljNzM3YWNhODdlZjg0NTI3ZjgzNzU1ZjAuLmM5OWM3NjYyNzU3M2VkOTE2MTc4MmZk
MDdiZDFmYzY1ZjNiMjM5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
QW5jZXN0b3JJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0
b3JJdGVyYXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI5LDYzICsyOSwzNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yIDogcHVibGljIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gewotcHVibGljOgotICAg
IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yKCk7Ci0gICAgZXhwbGljaXQgRWxlbWVudEFuY2VzdG9y
SXRlcmF0b3IoRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotICAgIEVsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yJiBvcGVyYXRvcisrKCk7Ci19OwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEVsZW1lbnRB
bmNlc3RvclJhbmdlOwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBF
bGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRDb25zdEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiB7Ci1wdWJsaWM6Ci0gICAgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRv
cigpOwotICAgIGV4cGxpY2l0IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3IoY29uc3QgRWxl
bWVudFR5cGUqIGN1cnJlbnQpOwotICAgIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3ImIG9w
ZXJhdG9yKysoKTsKLX07CisvLyBSYW5nZSBmb3IgaXRlcmF0aW5nIGFuIGVsZW1lbnQgYW5kIGl0
cyBhbmNlc3RvcnMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudEFuY2Vz
dG9yUmFuZ2U8RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoRWxlbWVudCYgZmlyc3QpOwordGVt
cGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVs
ZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKGNvbnN0IEVsZW1lbnQmIGZpcnN0KTsKKworLy8gUmFu
Z2UgZm9yIGl0ZXJhdGluZyBhIG5vZGUncyBlbGVtZW50IGFuY2VzdG9ycy4KK3RlbXBsYXRlPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50VHlwZT4gYW5j
ZXN0b3JzT2ZUeXBlKE5vZGUmIGRlc2NlbmRhbnQpOwordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNP
ZlR5cGUoY29uc3QgTm9kZSYgZGVzY2VuZGFudCk7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlciB7CitjbGFzcyBF
bGVtZW50QW5jZXN0b3JJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0
ZXIoRWxlbWVudFR5cGUqIGZpcnN0KTsKLSAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVt
ZW50VHlwZT4gYmVnaW4oKTsKLSAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlw
ZT4gZW5kKCk7Ci0gICAgRWxlbWVudFR5cGUqIGZpcnN0KCkgeyByZXR1cm4gbV9maXJzdDsgfQot
Ci1wcml2YXRlOgotICAgIEVsZW1lbnRUeXBlKiBtX2ZpcnN0OworICAgIGV4cGxpY2l0IEVsZW1l
bnRBbmNlc3Rvckl0ZXJhdG9yKEVsZW1lbnRUeXBlKiA9IG51bGxwdHIpOworICAgIEVsZW1lbnRB
bmNlc3Rvckl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1jbGFzcyBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlciB7
CitjbGFzcyBFbGVtZW50QW5jZXN0b3JSYW5nZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRWxl
bWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgRWxlbWVudFR5cGUqIGZpcnN0
KTsKLSAgICBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigp
IGNvbnN0OwotICAgIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGVu
ZCgpIGNvbnN0OwotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZmlyc3Q7IH0KKyAgICBleHBsaWNpdCBFbGVtZW50QW5jZXN0b3JSYW5nZShFbGVtZW50VHlw
ZSogZmlyc3QpOworICAgIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdp
bigpIGNvbnN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpudWxscHRyX3QgZW5kKCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZmlyc3Q7IH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBFbGVtZW50VHlwZSogbV9maXJzdDsK
KyAgICBFbGVtZW50VHlwZSogY29uc3QgbV9maXJzdDsKIH07CiAKLUVsZW1lbnRBbmNlc3Rvckl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50TGluZWFnZShFbGVtZW50KiBmaXJzdCk7Ci1F
bGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50TGluZWFn
ZShjb25zdCBFbGVtZW50KiBmaXJzdCk7Ci1FbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8
RWxlbWVudD4gZWxlbWVudEFuY2VzdG9ycyhFbGVtZW50KiBkZXNjZW5kYW50KTsKLUVsZW1lbnRB
bmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRBbmNlc3RvcnMoY29u
c3QgRWxlbWVudCogZGVzY2VuZGFudCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlw
ZShFbGVtZW50JiBmaXJzdCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1l
bnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBl
KGNvbnN0IEVsZW1lbnQmIGZpcnN0KTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4g
RWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNPZlR5
cGUoTm9kZSYgZGVzY2VuZGFudCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVs
ZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNP
ZlR5cGUoY29uc3QgTm9kZSYgZGVzY2VuZGFudCk7Ci0KIC8vIEVsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5j
ZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yKCkKLSAg
ICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obnVsbHB0cikKLXsKLX0KLQogdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9y
PEVsZW1lbnRUeXBlPjo6RWxlbWVudEFuY2VzdG9ySXRlcmF0b3IoRWxlbWVudFR5cGUqIGN1cnJl
bnQpCiAgICAgOiBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KG51bGxwdHIsIGN1cnJlbnQp
CkBAIC05NSwxMTkgKzY5LDYyIEBAIGlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVt
ZW50VHlwZT46OkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yKEVsZW1lbnRUeXBlCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxl
bWVudFR5cGU+JiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9y
KysoKQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxF
bGVtZW50VHlwZT4mPihFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZUFuY2Vz
dG9yKCkpOwotfQotCi0vLyBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yCi0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcigpCi0gICAgOiBF
bGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obnVsbHB0cikKLXsKLX0KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRl
cmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yKGNvbnN0IEVs
ZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5
cGU+KG51bGxwdHIsIGN1cnJlbnQpCi17Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYg
RWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQot
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPiY+KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VB
bmNlc3RvcigpKTsKKyAgICBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZUFu
Y2VzdG9yKCk7CisgICAgcmV0dXJuICp0aGlzOwogfQogCi0vLyBFbGVtZW50QW5jZXN0b3JJdGVy
YXRvckFkYXB0ZXIKKy8vIEVsZW1lbnRBbmNlc3RvclJhbmdlCiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudFR5cGU+OjpFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXIoRWxlbWVudFR5cGUqIGZp
cnN0KQoraW5saW5lIEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRUeXBlPjo6RWxlbWVudEFu
Y2VzdG9yUmFuZ2UoRWxlbWVudFR5cGUqIGZpcnN0KQogICAgIDogbV9maXJzdChmaXJzdCkKIHsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNl
c3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8
RWxlbWVudFR5cGU+OjpiZWdpbigpCitpbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxl
bWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRUeXBlPjo6YmVnaW4oKSBjb25z
dAogewogICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9m
aXJzdCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVt
ZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JB
ZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkKLXsKLSAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9y
SXRlcmF0b3I8RWxlbWVudFR5cGU+KCk7Ci19Ci0KLS8vIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRl
cmF0b3JBZGFwdGVyCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBF
bGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OkVsZW1lbnRB
bmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCkKLSAg
ICA6IG1fZmlyc3QoZmlyc3QpCi17Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVt
ZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2luKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT4obV9maXJzdCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGlu
ZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0
b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KCk7Ci19Ci0K
IC8vIFN0YW5kYWxvbmUgZnVuY3Rpb25zCiAKLWlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRv
ckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudExpbmVhZ2UoRWxlbWVudCogZmlyc3QpCi17Ci0gICAg
cmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PihmaXJzdCk7Ci19
Ci0KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBl
bGVtZW50TGluZWFnZShjb25zdCBFbGVtZW50KiBmaXJzdCkKK3RlbXBsYXRlPD4gaW5saW5lIEVs
ZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnQ+IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4oRWxlbWVu
dCYgZmlyc3QpCiB7Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFw
dGVyPEVsZW1lbnQ+KGZpcnN0KTsKLX0KLQotaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9y
QWRhcHRlcjxFbGVtZW50PiBlbGVtZW50QW5jZXN0b3JzKEVsZW1lbnQqIGRlc2NlbmRhbnQpCi17
Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PihkZXNj
ZW5kYW50LT5wYXJlbnRFbGVtZW50KCkpOwotfQotCi1pbmxpbmUgRWxlbWVudEFuY2VzdG9yQ29u
c3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudEFuY2VzdG9ycyhjb25zdCBFbGVtZW50
KiBkZXNjZW5kYW50KQotewotICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9y
QWRhcHRlcjxFbGVtZW50PihkZXNjZW5kYW50LT5wYXJlbnRFbGVtZW50KCkpOworICAgIHJldHVy
biBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50PigmZmlyc3QpOwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFw
dGVyPEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKEVsZW1lbnQmIGZpcnN0KQoraW5saW5lIEVs
ZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKEVsZW1lbnQmIGZp
cnN0KQogewogICAgIGlmIChpczxFbGVtZW50VHlwZT4oZmlyc3QpKQotICAgICAgICByZXR1cm4g
RWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihzdGF0aWNfY2FzdDxF
bGVtZW50VHlwZSo+KCZmaXJzdCkpOworICAgICAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yUmFu
Z2U8RWxlbWVudFR5cGU+KCZkb3duY2FzdDxFbGVtZW50VHlwZT4oZmlyc3QpKTsKICAgICByZXR1
cm4gYW5jZXN0b3JzT2ZUeXBlPEVsZW1lbnRUeXBlPihmaXJzdCk7CiB9CiAKK3RlbXBsYXRlPD4g
aW5saW5lIEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnQ+IGxpbmVhZ2VPZlR5cGU8
RWxlbWVudD4oY29uc3QgRWxlbWVudCYgZmlyc3QpCit7CisgICAgcmV0dXJuIEVsZW1lbnRBbmNl
c3RvclJhbmdlPGNvbnN0IEVsZW1lbnQ+KCZmaXJzdCk7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRl
cjxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShjb25zdCBFbGVtZW50JiBmaXJzdCkKK2lubGlu
ZSBFbGVtZW50QW5jZXN0b3JSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShj
b25zdCBFbGVtZW50JiBmaXJzdCkKIHsKICAgICBpZiAoaXM8RWxlbWVudFR5cGU+KGZpcnN0KSkK
LSAgICAgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1l
bnRUeXBlPihzdGF0aWNfY2FzdDxjb25zdCBFbGVtZW50VHlwZSo+KCZmaXJzdCkpOworICAgICAg
ICByZXR1cm4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+KCZkb3duY2Fz
dDxFbGVtZW50VHlwZT4oZmlyc3QpKTsKICAgICByZXR1cm4gYW5jZXN0b3JzT2ZUeXBlPEVsZW1l
bnRUeXBlPihmaXJzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlu
bGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGFuY2VzdG9y
c09mVHlwZShOb2RlJiBkZXNjZW5kYW50KQoraW5saW5lIEVsZW1lbnRBbmNlc3RvclJhbmdlPEVs
ZW1lbnRUeXBlPiBhbmNlc3RvcnNPZlR5cGUoTm9kZSYgZGVzY2VuZGFudCkKIHsKLSAgICBFbGVt
ZW50VHlwZSogZmlyc3QgPSBmaW5kRWxlbWVudEFuY2VzdG9yT2ZUeXBlPEVsZW1lbnRUeXBlPihk
ZXNjZW5kYW50KTsKLSAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVs
ZW1lbnRUeXBlPihmaXJzdCk7CisgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1l
bnRUeXBlPihmaW5kRWxlbWVudEFuY2VzdG9yT2ZUeXBlPEVsZW1lbnRUeXBlPihkZXNjZW5kYW50
KSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZUeXBl
KGNvbnN0IE5vZGUmIGRlc2NlbmRhbnQpCitpbmxpbmUgRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29u
c3QgRWxlbWVudFR5cGU+IGFuY2VzdG9yc09mVHlwZShjb25zdCBOb2RlJiBkZXNjZW5kYW50KQog
ewotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCA9IGZpbmRFbGVtZW50QW5jZXN0b3JPZlR5
cGU8Y29uc3QgRWxlbWVudFR5cGU+KGRlc2NlbmRhbnQpOwotICAgIHJldHVybiBFbGVtZW50QW5j
ZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4oZmlyc3QpOworICAgIHJldHVy
biBFbGVtZW50QW5jZXN0b3JSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4oZmluZEVsZW1lbnRBbmNl
c3Rvck9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oZGVzY2VuZGFudCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFu
ZFRleHREZXNjZW5kYW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5k
VGV4dERlc2NlbmRhbnRJdGVyYXRvci5oCmluZGV4IDQ4ZTNiMWE2MThkMmZlMGEyODc2N2IzNzMx
ZjJmYWRmOTczZWZiY2UuLmQxZGRiMGY3Mzc1MDE1NjQ1OTdiMGEwMjM0ZTJiNDYyMDFkNWRlNzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJ
dGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5kVGV4dERlc2NlbmRh
bnRJdGVyYXRvci5oCkBAIC0zNiw4ICszNiw4IEBAIGNsYXNzIEVsZW1lbnRBbmRUZXh0RGVzY2Vu
ZGFudEl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVy
YXRvcigpOwogICAgIGVudW0gRmlyc3RDaGlsZFRhZyB7IEZpcnN0Q2hpbGQgfTsKLSAgICBFbGVt
ZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihDb250YWluZXJOb2RlJiByb290LCBGaXJzdENo
aWxkVGFnKTsKLSAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihDb250YWluZXJO
b2RlJiByb290LCBOb2RlKiBjdXJyZW50KTsKKyAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJ
dGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBGaXJzdENoaWxkVGFnKTsKKyAgICBF
bGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290
LCBOb2RlKiBjdXJyZW50KTsKIAogICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9y
JiBvcGVyYXRvcisrKCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0KCk7IH0KIApAQCAtNjMsOSArNjMs
OSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgaXNFbGVtZW50T3JUZXh0
KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEVsZW1lbnQ+KG5vZGUpIHx8IGlzPFRleHQ+
KG5vZGUpOyB9Ci0gICAgc3RhdGljIE5vZGUqIGZpcnN0Q2hpbGQoTm9kZSYpOwotICAgIHN0YXRp
YyBOb2RlKiBuZXh0U2libGluZyhOb2RlJik7Ci0gICAgc3RhdGljIE5vZGUqIHByZXZpb3VzU2li
bGluZyhOb2RlJik7CisgICAgc3RhdGljIE5vZGUqIGZpcnN0Q2hpbGQoY29uc3QgTm9kZSYpOwor
ICAgIHN0YXRpYyBOb2RlKiBuZXh0U2libGluZyhjb25zdCBOb2RlJik7CisgICAgc3RhdGljIE5v
ZGUqIHByZXZpb3VzU2libGluZyhjb25zdCBOb2RlJik7CiAKICAgICB2b2lkIHBvcEFuY2VzdG9y
U2libGluZ1N0YWNrKCk7CiAKQEAgLTgyLDE3ICs4MiwxNyBAQCBwcml2YXRlOgogI2VuZGlmCiB9
OwogCi1jbGFzcyBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgeworY2xh
c3MgRWxlbWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2UgewogcHVibGljOgotICAgIGV4cGxpY2l0
IEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2RlJiBy
b290KTsKLSAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBiZWdpbigpOwotICAg
IEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yIGVuZCgpOworICAgIGV4cGxpY2l0IEVs
ZW1lbnRBbmRUZXh0RGVzY2VuZGFudFJhbmdlKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpOwor
ICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CisgICAg
RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgZW5kKCkgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgQ29udGFpbmVyTm9kZSYgbV9yb290OworICAgIGNvbnN0IENvbnRhaW5lck5vZGUmIG1f
cm9vdDsKIH07CiAKLUVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlciBlbGVt
ZW50QW5kVGV4dERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUmKTsKK0VsZW1lbnRBbmRUZXh0RGVz
Y2VuZGFudFJhbmdlIGVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudHMoQ29udGFpbmVyTm9kZSYpOwog
CiAvLyBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcgogCkBAIC0xMDEsNyArMTAxLDcg
QEAgaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4
dERlc2NlbmRhbnRJdGVyYXRvcigpCiB7CiB9CiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERlc2Nl
bmRhbnRJdGVyYXRvcjo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoQ29udGFpbmVy
Tm9kZSYgcm9vdCwgRmlyc3RDaGlsZFRhZykKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRh
bnRJdGVyYXRvcjo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFp
bmVyTm9kZSYgcm9vdCwgRmlyc3RDaGlsZFRhZykKICAgICA6IG1fY3VycmVudChmaXJzdENoaWxk
KHJvb3QpKQogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLCBtX2Fzc2VydGlvbnMobV9jdXJyZW50
KQpAQCAtMTEzLDcgKzExMyw3IEBAIGlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVy
YXRvcjo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoQ29udGFpCiAgICAgbV9kZXB0
aCA9IDE7CiB9CiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6RWxl
bWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoQ29udGFpbmVyTm9kZSYgcm9vdCwgTm9kZSog
Y3VycmVudCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6RWxlbWVu
dEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgTm9k
ZSogY3VycmVudCkKICAgICA6IG1fY3VycmVudChjdXJyZW50KQogI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgLCBtX2Fzc2VydGlvbnMobV9jdXJyZW50KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIGlubGlu
ZSB2b2lkIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpkcm9wQXNzZXJ0aW9ucygp
CiAjZW5kaWYKIH0KIAotaW5saW5lIE5vZGUqIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJh
dG9yOjpmaXJzdENoaWxkKE5vZGUmIGN1cnJlbnQpCitpbmxpbmUgTm9kZSogRWxlbWVudEFuZFRl
eHREZXNjZW5kYW50SXRlcmF0b3I6OmZpcnN0Q2hpbGQoY29uc3QgTm9kZSYgY3VycmVudCkKIHsK
ICAgICBhdXRvKiBub2RlID0gY3VycmVudC5maXJzdENoaWxkKCk7CiAgICAgd2hpbGUgKG5vZGUg
JiYgIWlzRWxlbWVudE9yVGV4dCgqbm9kZSkpCkBAIC0xNTYsNyArMTU2LDcgQEAgaW5saW5lIE5v
ZGUqIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpmaXJzdENoaWxkKE5vZGUmIGN1
cnJlbnQpCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLWlubGluZSBOb2RlKiBFbGVtZW50QW5kVGV4
dERlc2NlbmRhbnRJdGVyYXRvcjo6bmV4dFNpYmxpbmcoTm9kZSYgY3VycmVudCkKK2lubGluZSBO
b2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6bmV4dFNpYmxpbmcoY29uc3Qg
Tm9kZSYgY3VycmVudCkKIHsKICAgICBhdXRvKiBub2RlID0gY3VycmVudC5uZXh0U2libGluZygp
OwogICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPclRleHQoKm5vZGUpKQpAQCAtMTY0LDcg
KzE2NCw3IEBAIGlubGluZSBOb2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6
bmV4dFNpYmxpbmcoTm9kZSYgY3VycmVudCkKICAgICByZXR1cm4gbm9kZTsKIH0KIAotaW5saW5l
IE5vZGUqIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpwcmV2aW91c1NpYmxpbmco
Tm9kZSYgY3VycmVudCkKK2lubGluZSBOb2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVy
YXRvcjo6cHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUmIGN1cnJlbnQpCiB7CiAgICAgYXV0byog
bm9kZSA9IGN1cnJlbnQucHJldmlvdXNTaWJsaW5nKCk7CiAgICAgd2hpbGUgKG5vZGUgJiYgIWlz
RWxlbWVudE9yVGV4dCgqbm9kZSkpCkBAIC0yOTQsMjggKzI5NCwyOCBAQCBpbmxpbmUgYm9vbCBF
bGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBFbGVtZW50
QW5kVGV4dERlcwogICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKIH0KIAotLy8gRWxlbWVu
dEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyCisvLyBFbGVtZW50QW5kVGV4dERlc2Nl
bmRhbnRSYW5nZQogCi1pbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFw
dGVyOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVyTm9k
ZSYgcm9vdCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZTo6RWxlbWVudEFu
ZFRleHREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKICAgICA6IG1f
cm9vdChyb290KQogewogfQogCi1pbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0
b3IgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjpiZWdpbigpCitpbmxp
bmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgRWxlbWVudEFuZFRleHREZXNjZW5k
YW50UmFuZ2U6OmJlZ2luKCkgY29uc3QKIHsKICAgICByZXR1cm4gRWxlbWVudEFuZFRleHREZXNj
ZW5kYW50SXRlcmF0b3IobV9yb290LCBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6
Rmlyc3RDaGlsZCk7CiB9CiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRv
ciBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI6OmVuZCgpCitpbmxpbmUg
RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgRWxlbWVudEFuZFRleHREZXNjZW5kYW50
UmFuZ2U6OmVuZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAogLy8gU3RhbmRhbG9u
ZSBmdW5jdGlvbnMKIAotaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRh
cHRlciBlbGVtZW50QW5kVGV4dERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUmIHJvb3QpCitpbmxp
bmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2UgZWxlbWVudEFuZFRleHREZXNjZW5kYW50
cyhDb250YWluZXJOb2RlJiByb290KQogewotICAgIHJldHVybiBFbGVtZW50QW5kVGV4dERlc2Nl
bmRhbnRJdGVyYXRvckFkYXB0ZXIocm9vdCk7CisgICAgcmV0dXJuIEVsZW1lbnRBbmRUZXh0RGVz
Y2VuZGFudFJhbmdlKHJvb3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENoaWxkSXRlcmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oCmluZGV4IDhlMzhmYjUwMzJhODIzNzc2
ZTJhN2JjYTNhYzI1OGNiMTUwNmM0MDAuLmU2NmIyNDlmNTk1MTEwMDAzODRkODQ3MTI3N2EzZjIw
MjE2ZTYxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVy
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5
LDc5ICsyOSwzOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlPHR5cGVuYW1l
PiBjbGFzcyBFbGVtZW50Q2hpbGRSYW5nZTsKKworLy8gUmFuZ2UgZm9yIGl0ZXJhdGluZyB0aHJv
dWdoIGNoaWxkIGVsZW1lbnRzLgordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVt
ZW50Q2hpbGRSYW5nZTxFbGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoQ29udGFpbmVyTm9kZSYp
OwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRSYW5nZTxjb25z
dCBFbGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYpOworCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBjbGFzcyBFbGVtZW50Q2hpbGRJdGVyYXRv
ciA6IHB1YmxpYyBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IHsKIHB1YmxpYzoKLSAgICB0
eXBlZGVmIEVsZW1lbnRUeXBlIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlm
ZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgRWxlbWVudFR5cGUqIHBvaW50ZXI7Ci0gICAgdHlw
ZWRlZiBFbGVtZW50VHlwZSYgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgc3RkOjpmb3J3YXJkX2l0
ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLQotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9y
KGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCk7CisgICAgRWxlbWVudENoaWxkSXRlcmF0b3Io
KSA9IGRlZmF1bHQ7CiAgICAgRWxlbWVudENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9k
ZSYgcGFyZW50LCBFbGVtZW50VHlwZSogY3VycmVudCk7CiAgICAgRWxlbWVudENoaWxkSXRlcmF0
b3ImIG9wZXJhdG9yLS0oKTsKICAgICBFbGVtZW50Q2hpbGRJdGVyYXRvciYgb3BlcmF0b3IrKygp
OwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVudENo
aWxkQ29uc3RJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT4gewotcHVibGljOgotICAgIHR5cGVkZWYgY29uc3QgRWxlbWVudFR5cGUgdmFsdWVfdHlwZTsK
LSAgICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiBjb25z
dCBFbGVtZW50VHlwZSogcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNvbnN0IEVsZW1lbnRUeXBlJiBy
ZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9y
X2NhdGVnb3J5OwotCi0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcihjb25zdCBDb250YWlu
ZXJOb2RlJiBwYXJlbnQpOwotICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IoY29uc3QgQ29u
dGFpbmVyTm9kZSYgcGFyZW50LCBjb25zdCBFbGVtZW50VHlwZSogY3VycmVudCk7Ci0gICAgRWxl
bWVudENoaWxkQ29uc3RJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwotICAgIEVsZW1lbnRDaGlsZENv
bnN0SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlciB7Ci1wdWJsaWM6Ci0g
ICAgRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUmIHBhcmVudCk7Ci0K
LSAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKTsKLSAgICBFbGVt
ZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCk7Ci0gICAgRWxlbWVudENoaWxkSXRl
cmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoRWxlbWVudFR5cGUmKTsKLQotICAgIEVsZW1lbnRU
eXBlKiBmaXJzdCgpOwotICAgIEVsZW1lbnRUeXBlKiBsYXN0KCk7Ci0KLXByaXZhdGU6Ci0gICAg
Q29udGFpbmVyTm9kZSYgbV9wYXJlbnQ7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+Ci1jbGFzcyBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlciB7CitjbGFzcyBF
bGVtZW50Q2hpbGRSYW5nZSB7CiBwdWJsaWM6Ci0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRv
ckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKKyAgICBFbGVtZW50Q2hpbGRS
YW5nZShjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpOwogCi0gICAgRWxlbWVudENoaWxkQ29u
c3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKSBjb25zdDsKLSAgICBFbGVtZW50Q2hpbGRD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKSBjb25zdDsKLSAgICBFbGVtZW50Q2hpbGRD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbkF0KGNvbnN0IEVsZW1lbnRUeXBlJikgY29u
c3Q7CisgICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6Om51bGxwdHJfdCBlbmQoKSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoRWxl
bWVudFR5cGUmKSBjb25zdDsKIAotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0
OwotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBsYXN0KCkgY29uc3Q7CisgICAgRWxlbWVudFR5cGUq
IGZpcnN0KCkgY29uc3Q7CisgICAgRWxlbWVudFR5cGUqIGxhc3QoKSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICBjb25zdCBDb250YWluZXJOb2RlJiBtX3BhcmVudDsKIH07CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPiBjaGlsZHJlbk9mVHlwZShDb250YWluZXJOb2RlJik7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBl
PiBjaGlsZHJlbk9mVHlwZShjb25zdCBDb250YWluZXJOb2RlJik7Ci0KIC8vIEVsZW1lbnRDaGls
ZEl0ZXJhdG9yCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVt
ZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNvbnN0
IENvbnRhaW5lck5vZGUmIHBhcmVudCkKLSAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4oJnBhcmVudCkKLXsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5s
aW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENoaWxkSXRlcmF0
b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50LCBFbGVtZW50VHlwZSogY3VycmVudCkKICAg
ICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnBhcmVudCwgY3VycmVudCkKQEAgLTEx
MSwxMzIgKzcxLDYyIEBAIGlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46
OkVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+
JiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yLS0oKQogewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihF
bGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZpb3VzU2libGluZygpKTsK
KyAgICBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZpb3VzU2libGlu
ZygpOworICAgIHJldHVybiAqdGhpczsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgogaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENo
aWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKIHsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxlbWVudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGluZygpKTsKLX0KLQotLy8gRWxlbWVu
dENoaWxkQ29uc3RJdGVyYXRvcgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGls
ZENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KQotICAgIDogRWxlbWVu
dENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZwYXJlbnQpCi17Ci19Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPjo6RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2Rl
JiBwYXJlbnQsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZwYXJlbnQsIGN1cnJlbnQpCi17Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiYgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9w
ZXJhdG9yLS0oKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6
dHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoKSk7CisgICAgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6dHJhdmVyc2VOZXh0U2libGluZygpOworICAgIHJldHVybiAqdGhpczsKIH0KIAorLy8g
RWxlbWVudENoaWxkUmFuZ2UKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5s
aW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q2hpbGRD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCi17Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxlbWVu
dENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkpOwotfQot
Ci0vLyBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXIKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlw
ZT46OkVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2RlJiBwYXJlbnQpCitp
bmxpbmUgRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5cGU+OjpFbGVtZW50Q2hpbGRSYW5nZShj
b25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpCiAgICAgOiBtX3BhcmVudChwYXJlbnQpCiB7CiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRJ
dGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPjo6YmVnaW4oKQoraW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBF
bGVtZW50Q2hpbGRSYW5nZTxFbGVtZW50VHlwZT46OmJlZ2luKCkgY29uc3QKIHsKICAgICByZXR1
cm4gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcGFyZW50LCBUcmF2ZXJzYWw8
RWxlbWVudFR5cGU+OjpmaXJzdENoaWxkKG1fcGFyZW50KSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4gRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkKLXsKLSAg
ICByZXR1cm4gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcGFyZW50KTsKLX0K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRUeXBlKiBF
bGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpmaXJzdCgpCitpbmxpbmUg
RWxlbWVudFR5cGUqIEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPjo6Zmlyc3QoKSBjb25z
dAogewogICAgIHJldHVybiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdENoaWxkKG1fcGFy
ZW50KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1l
bnRUeXBlKiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpsYXN0KCkK
K2lubGluZSBFbGVtZW50VHlwZSogRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5cGU+OjpsYXN0
KCkgY29uc3QKIHsKICAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bGFzdENoaWxk
KG1fcGFyZW50KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5l
IEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRJdGVyYXRvckFk
YXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBjaGlsZCkKK2lubGluZSBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVu
dFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBjaGlsZCkgY29uc3QKIHsKICAgICBBU1NFUlQo
Y2hpbGQucGFyZW50Tm9kZSgpID09ICZtX3BhcmVudCk7CiAgICAgcmV0dXJuIEVsZW1lbnRDaGls
ZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3BhcmVudCwgJmNoaWxkKTsKIH0KIAotLy8gRWxlbWVu
dENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXIKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBl
Pjo6RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYg
cGFyZW50KQotICAgIDogbV9wYXJlbnQocGFyZW50KQotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT4gRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdp
bigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+KG1fcGFyZW50LCBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdENoaWxkKG1fcGFy
ZW50KSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVt
ZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1l
bnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcGFyZW50KTsKLX0KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlKiBFbGVt
ZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZpcnN0KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RDaGlsZChtX3BhcmVu
dCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBjb25zdCBF
bGVtZW50VHlwZSogRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+
OjpsYXN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bGFz
dENoaWxkKG1fcGFyZW50KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRDaGls
ZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW5BdChjb25zdCBFbGVtZW50
VHlwZSYgY2hpbGQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGNoaWxkLnBhcmVudE5vZGUoKSA9PSAm
bV9wYXJlbnQpOwotICAgIHJldHVybiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPihtX3BhcmVudCwgJmNoaWxkKTsKLX0KLQogLy8gU3RhbmRhbG9uZSBmdW5jdGlvbnMKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoQ29udGFpbmVyTm9kZSYgcGFy
ZW50KQoraW5saW5lIEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlw
ZShDb250YWluZXJOb2RlJiBwYXJlbnQpCiB7Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT4ocGFyZW50KTsKKyAgICByZXR1cm4gRWxlbWVudENoaWxk
UmFuZ2U8RWxlbWVudFR5cGU+KHBhcmVudCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50
VHlwZT4gY2hpbGRyZW5PZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KQoraW5saW5l
IEVsZW1lbnRDaGlsZFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShjb25z
dCBDb250YWluZXJOb2RlJiBwYXJlbnQpCiB7Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZENvbnN0
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihwYXJlbnQpOworICAgIHJldHVybiBFbGVtZW50
Q2hpbGRSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4ocGFyZW50KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYmRiOTlhNmRkZTk2NDZkZmI0
MTc0NjEyOTkxOGM3MzVlYWU0OTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Iu
aAorKysgL2Rldi9udWxsCkBAIC0xLDM2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJFbGVtZW50
LmgiCi0jaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oIgotI2luY2x1ZGUgIkVs
ZW1lbnRUcmF2ZXJzYWwuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciB7Ci1wdWJsaWM6Ci0g
ICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcigpOwotICAgIGV4cGxpY2l0IEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IoRWxlbWVudCogY3VycmVudCk7Ci0KLSAgICBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYg
b3BlcmF0b3ItLSgpOwotCi0gICAgRWxlbWVudCYgb3BlcmF0b3IqKCk7Ci0gICAgRWxlbWVudCog
b3BlcmF0b3ItPigpOwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotCi0gICAgdm9pZCBkcm9wQXNz
ZXJ0aW9ucygpOwotCi1wcml2YXRlOgotICAgIEVsZW1lbnQqIG1fY3VycmVudDsKLSAgICBWZWN0
b3I8RWxlbWVudCosIDE2PiBtX2FuY2VzdG9yU2libGluZ1N0YWNrOwotCi0jaWYgQVNTRVJUX0VO
QUJMRUQKLSAgICBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0aW9uczsKLSNlbmRp
ZgotfTsKLQotY2xhc3MgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIHsKLXB1YmxpYzoK
LSAgICBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoKTsKLSAgICBleHBsaWNpdCBFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgRWxlbWVudCopOwotCi0gICAgRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Ci0KLSAgICBjb25zdCBFbGVt
ZW50JiBvcGVyYXRvciooKSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50KiBvcGVyYXRvci0+KCkg
Y29uc3Q7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVsZW1l
bnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotCi0gICAgdm9pZCBkcm9w
QXNzZXJ0aW9ucygpOwotCi1wcml2YXRlOgotICAgIGNvbnN0IEVsZW1lbnQqIG1fY3VycmVudDsK
LSAgICBWZWN0b3I8RWxlbWVudCosIDE2PiBtX2FuY2VzdG9yU2libGluZ1N0YWNrOwotCi0jaWYg
QVNTRVJUX0VOQUJMRUQKLSAgICBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0aW9u
czsKLSNlbmRpZgotfTsKLQotY2xhc3MgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIg
ewotcHVibGljOgotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENvbnRhaW5l
ck5vZGUmIHJvb3QpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgYmVnaW4oKTsKLSAg
ICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGVuZCgpOwotICAgIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IgbGFzdCgpOwotCi1wcml2YXRlOgotICAgIENvbnRhaW5lck5vZGUmIG1fcm9vdDsK
LX07Ci0KLWNsYXNzIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIgewotcHVi
bGljOgotICAgIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29u
dGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIGJl
Z2luKCkgY29uc3Q7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIGVuZCgpIGNv
bnN0OwotICAgIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciBsYXN0KCkgY29uc3Q7Ci0K
LXByaXZhdGU6Ci0gICAgY29uc3QgQ29udGFpbmVyTm9kZSYgbV9yb290OwotfTsKLQotRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgZWxlbWVudERlc2NlbmRhbnRzKENvbnRhaW5lck5v
ZGUmKTsKLUVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIgZWxlbWVudERlc2Nl
bmRhbnRzKGNvbnN0IENvbnRhaW5lck5vZGUmKTsKLQotLy8gRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcgotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6RWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvcigpCi0gICAgOiBtX2N1cnJlbnQobnVsbHB0cikKLXsKLX0KLQotaW5saW5lIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoRWxlbWVu
dCogY3VycmVudCkKLSAgICA6IG1fY3VycmVudChjdXJyZW50KQotI2lmIEFTU0VSVF9FTkFCTEVE
Ci0gICAgLCBtX2Fzc2VydGlvbnMoY3VycmVudCkKLSNlbmRpZgotewotICAgIG1fYW5jZXN0b3JT
aWJsaW5nU3RhY2sudW5jaGVja2VkQXBwZW5kKG51bGxwdHIpOwotfQotCi1pbmxpbmUgdm9pZCBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpkcm9wQXNzZXJ0aW9ucygpCi17Ci0jaWYgQVNTRVJU
X0VOQUJMRUQKLSAgICBtX2Fzc2VydGlvbnMuY2xlYXIoKTsKLSNlbmRpZgotfQotCi1BTFdBWVNf
SU5MSU5FIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3I6Om9wZXJhdG9yKysoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCgh
bV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotCi0gICAgRWxlbWVudCogZmlyc3RD
aGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQoKm1fY3VycmVudCk7Ci0gICAgRWxl
bWVudCogbmV4dFNpYmxpbmcgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZygqbV9jdXJy
ZW50KTsKLQotICAgIGlmIChmaXJzdENoaWxkKSB7Ci0gICAgICAgIGlmIChuZXh0U2libGluZykK
LSAgICAgICAgICAgIG1fYW5jZXN0b3JTaWJsaW5nU3RhY2suYXBwZW5kKG5leHRTaWJsaW5nKTsK
LSAgICAgICAgbV9jdXJyZW50ID0gZmlyc3RDaGlsZDsKLSAgICAgICAgcmV0dXJuICp0aGlzOwot
ICAgIH0KLQotICAgIGlmIChuZXh0U2libGluZykgewotICAgICAgICBtX2N1cnJlbnQgPSBuZXh0
U2libGluZzsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIG1fY3VycmVudCA9
IG1fYW5jZXN0b3JTaWJsaW5nU3RhY2sudGFrZUxhc3QoKTsKLQotI2lmIEFTU0VSVF9FTkFCTEVE
Ci0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhl
IGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVu
dERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQot
QUxXQVlTX0lOTElORSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yOjpvcGVyYXRvci0tKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBB
U1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLQotICAgIEVsZW1lbnQq
IHByZXZpb3VzU2libGluZyA9IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZygqbV9j
dXJyZW50KTsKLQotICAgIGlmICghcHJldmlvdXNTaWJsaW5nKSB7Ci0gICAgICAgIG1fY3VycmVu
dCA9IG1fY3VycmVudC0+cGFyZW50RWxlbWVudCgpOwotICAgICAgICAvLyBUaGUgc3RhY2sgb3B0
aW1pemVzIGZvciBmb3J3YXJkIHRyYXZlcnNhbCBvbmx5LCB0aGlzIGp1c3QgbWFpbnRhaW5zIGNv
bnNpc3RlbmN5LgotICAgICAgICBpZiAobV9jdXJyZW50LT5uZXh0U2libGluZygpICYmIG1fY3Vy
cmVudC0+bmV4dFNpYmxpbmcoKSA9PSBtX2FuY2VzdG9yU2libGluZ1N0YWNrLmxhc3QoKSkKLSAg
ICAgICAgICAgIG1fYW5jZXN0b3JTaWJsaW5nU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICBy
ZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgRWxlbWVudCogZGVlcGVzdFNpYmxpbmcgPSBwcmV2
aW91c1NpYmxpbmc7Ci0gICAgd2hpbGUgKEVsZW1lbnQqIGxhc3RDaGlsZCA9IEVsZW1lbnRUcmF2
ZXJzYWw6Omxhc3RDaGlsZCgqZGVlcGVzdFNpYmxpbmcpKQotICAgICAgICBkZWVwZXN0U2libGlu
ZyA9IGxhc3RDaGlsZDsKLSAgICBBU1NFUlQoZGVlcGVzdFNpYmxpbmcpOwotCi0gICAgaWYgKGRl
ZXBlc3RTaWJsaW5nICE9IHByZXZpb3VzU2libGluZykKLSAgICAgICAgbV9hbmNlc3RvclNpYmxp
bmdTdGFjay5hcHBlbmQobV9jdXJyZW50KTsKLQotICAgIG1fY3VycmVudCA9IGRlZXBlc3RTaWJs
aW5nOwotCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hl
biB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAg
ICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgot
Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1pbmxpbmUgRWxlbWVudCYgRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvcjo6b3BlcmF0b3IqKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBB
U1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gKm1f
Y3VycmVudDsKLX0KLQotaW5saW5lIEVsZW1lbnQqIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6
Om9wZXJhdG9yLT4oKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9h
c3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQ7Ci19
Ci0KLWlubGluZSBib29sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6Om9wZXJhdG9yPT0oY29u
c3QgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuIG1fY3VycmVu
dCA9PSBvdGhlci5tX2N1cnJlbnQ7Ci19Ci0KLWlubGluZSBib29sIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I6Om9wZXJhdG9yIT0oY29uc3QgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotfQotCi0vLyBFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IKLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50Q29u
c3RJdGVyYXRvcjo6RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKCkKLSAgICA6IG1fY3Vy
cmVudChudWxscHRyKQotewotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yOjpFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgRWxlbWVudCogY3VycmVu
dCkKLSAgICA6IG1fY3VycmVudChjdXJyZW50KQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLCBt
X2Fzc2VydGlvbnMoY3VycmVudCkKLSNlbmRpZgotewotICAgIG1fYW5jZXN0b3JTaWJsaW5nU3Rh
Y2sudW5jaGVja2VkQXBwZW5kKG51bGxwdHIpOwotfQotCi1pbmxpbmUgdm9pZCBFbGVtZW50RGVz
Y2VuZGFudENvbnN0SXRlcmF0b3I6OmRyb3BBc3NlcnRpb25zKCkKLXsKLSNpZiBBU1NFUlRfRU5B
QkxFRAotICAgIG1fYXNzZXJ0aW9ucy5jbGVhcigpOwotI2VuZGlmCi19Ci0KLUFMV0FZU19JTkxJ
TkUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yJiBFbGVtZW50RGVzY2VuZGFudENvbnN0
SXRlcmF0b3I6Om9wZXJhdG9yKysoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFT
U0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotCi0gICAgRWxlbWVudCog
Zmlyc3RDaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQoKm1fY3VycmVudCk7Ci0g
ICAgRWxlbWVudCogbmV4dFNpYmxpbmcgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZygq
bV9jdXJyZW50KTsKLQotICAgIGlmIChmaXJzdENoaWxkKSB7Ci0gICAgICAgIGlmIChuZXh0U2li
bGluZykKLSAgICAgICAgICAgIG1fYW5jZXN0b3JTaWJsaW5nU3RhY2suYXBwZW5kKG5leHRTaWJs
aW5nKTsKLSAgICAgICAgbV9jdXJyZW50ID0gZmlyc3RDaGlsZDsKLSAgICAgICAgcmV0dXJuICp0
aGlzOwotICAgIH0KLQotICAgIGlmIChuZXh0U2libGluZykgewotICAgICAgICBtX2N1cnJlbnQg
PSBuZXh0U2libGluZzsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIG1fY3Vy
cmVudCA9IG1fYW5jZXN0b3JTaWJsaW5nU3RhY2sudGFrZUxhc3QoKTsKLQotI2lmIEFTU0VSVF9F
TkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNo
ZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRy
b3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiAqdGhpczsK
LX0KLQotaW5saW5lIGNvbnN0IEVsZW1lbnQmIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
cjo6b3BlcmF0b3IqKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NF
UlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gKm1fY3Vy
cmVudDsKLX0KLQotaW5saW5lIGNvbnN0IEVsZW1lbnQqIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvcjo6b3BlcmF0b3ItPigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0g
ICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJu
IG1fY3VycmVudDsKLX0KLQotaW5saW5lIGJvb2wgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yOjpvcGVyYXRvcj09KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQo
KSk7Ci0gICAgcmV0dXJuIG1fY3VycmVudCA9PSBvdGhlci5tX2N1cnJlbnQ7Ci19Ci0KLWlubGlu
ZSBib29sIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBF
bGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAgIHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsKLX0KLQotLy8gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFk
YXB0ZXIKLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjpFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2RlJiByb290KQotICAgIDogbV9y
b290KHJvb3QpCi17Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjpiZWdpbigpCi17Ci0gICAgcmV0dXJuIEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3IoRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGlsZChtX3Jvb3Qp
KTsKLX0KLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvckFkYXB0ZXI6OmVuZCgpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IoKTsKLX0KLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI6Omxhc3QoKQotewotICAgIHJldHVybiBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yKEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RXaXRoaW4obV9yb290KSk7
Ci19Ci0KLS8vIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIKLQotaW5saW5l
IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI6OkVsZW1lbnREZXNjZW5kYW50
Q29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKLSAgICA6IG1f
cm9vdChyb290KQotewotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI6OmJlZ2luKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKEVsZW1lbnRUcmF2ZXJz
YWw6OmZpcnN0Q2hpbGQobV9yb290KSk7Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3IgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjo6ZW5kKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKCk7Ci19
Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IgRWxlbWVudERlc2NlbmRh
bnRDb25zdEl0ZXJhdG9yQWRhcHRlcjo6bGFzdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1l
bnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcihFbGVtZW50VHJhdmVyc2FsOjpsYXN0V2l0aGluKG1f
cm9vdCkpOwotfQotCi0vLyBTdGFuZGFsb25lIGZ1bmN0aW9ucwotCi1pbmxpbmUgRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgZWxlbWVudERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUm
IHJvb3QpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKHJv
b3QpOwotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlciBl
bGVtZW50RGVzY2VuZGFudHMoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKLXsKLSAgICByZXR1
cm4gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcihyb290KTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2Ugc3RkIHsKLXRlbXBsYXRlIDw+IHN0cnVj
dCBpdGVyYXRvcl90cmFpdHM8V2ViQ29yZTo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcj4gewot
ICAgIHR5cGVkZWYgV2ViQ29yZTo6RWxlbWVudCB2YWx1ZV90eXBlOwotfTsKLXRlbXBsYXRlIDw+
IHN0cnVjdCBpdGVyYXRvcl90cmFpdHM8V2ViQ29yZTo6RWxlbWVudERlc2NlbmRhbnRDb25zdEl0
ZXJhdG9yPiB7Ci0gICAgdHlwZWRlZiBjb25zdCBXZWJDb3JlOjpFbGVtZW50IHZhbHVlX3R5cGU7
Ci19OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvci5oCmluZGV4IDM3NGRiYTdhNGMy
NDc4ZGRkOTNhZWIyYTRjNDRlM2RiODJkNzNiNTYuLjYwMTJiYjYzMjRmMGJlMTkxNTUwMmRjZjk5
NGFjNzdjOTRkMGRiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRl
cmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMTYg
KzM0LDE3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRJdGVyYXRvciB7CitjbGFzcyBFbGVtZW50SXRlcmF0b3Ig
OiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBFbGVtZW50
VHlwZT4gewogcHVibGljOgotICAgIEVsZW1lbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2Rl
KiByb290KTsKLSAgICBFbGVtZW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwg
RWxlbWVudFR5cGUqIGN1cnJlbnQpOworICAgIEVsZW1lbnRJdGVyYXRvcigpID0gZGVmYXVsdDsK
IAogICAgIEVsZW1lbnRUeXBlJiBvcGVyYXRvciooKSBjb25zdDsKICAgICBFbGVtZW50VHlwZSog
b3BlcmF0b3ItPigpIGNvbnN0OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVsZW1lbnRJ
dGVyYXRvciYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFbGVtZW50
SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKKyAgICBjb25zdGV4cHIgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0OworICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yISgpIGNvbnN0OworICAgIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yIT0oc3RkOjpudWxscHRyX3QpIGNvbnN0OworICAgIGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yIT0oY29uc3QgRWxlbWVudEl0ZXJhdG9yJikgY29uc3Q7CiAKICAgICBFbGVt
ZW50SXRlcmF0b3ImIHRyYXZlcnNlTmV4dCgpOwogICAgIEVsZW1lbnRJdGVyYXRvciYgdHJhdmVy
c2VQcmV2aW91cygpOwpAQCAtNTQsMzkgKzU1LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZHJv
cEFzc2VydGlvbnMoKTsKIAotcHJpdmF0ZToKLSAgICBjb25zdCBDb250YWluZXJOb2RlKiBtX3Jv
b3Q7Ci0gICAgRWxlbWVudFR5cGUqIG1fY3VycmVudDsKLQotI2lmIEFTU0VSVF9FTkFCTEVECi0g
ICAgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7Ci0jZW5kaWYKLX07Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRDb25zdEl0ZXJh
dG9yIHsKLXB1YmxpYzoKLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJO
b2RlKiByb290KTsKLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2Rl
KiByb290LCBjb25zdCBFbGVtZW50VHlwZSogY3VycmVudCk7Ci0KLSAgICBjb25zdCBFbGVtZW50
VHlwZSYgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIG9wZXJhdG9y
LT4oKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbGVtZW50Q29uc3RJdGVy
YXRvciYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFbGVtZW50Q29u
c3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotCi0gICAgRWxlbWVudENvbnN0SXRlcmF0b3ImIHRy
YXZlcnNlTmV4dCgpOwotICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3Vz
KCk7Ci0gICAgRWxlbWVudENvbnN0SXRlcmF0b3ImIHRyYXZlcnNlTmV4dFNpYmxpbmcoKTsKLSAg
ICBFbGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoKTsKLSAgICBF
bGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJlbigpOwotICAg
IEVsZW1lbnRDb25zdEl0ZXJhdG9yJiB0cmF2ZXJzZUFuY2VzdG9yKCk7Ci0KLSAgICB2b2lkIGRy
b3BBc3NlcnRpb25zKCk7Citwcm90ZWN0ZWQ6CisgICAgRWxlbWVudEl0ZXJhdG9yKGNvbnN0IENv
bnRhaW5lck5vZGUqIHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKIAogcHJpdmF0ZToKLSAg
ICBjb25zdCBDb250YWluZXJOb2RlKiBtX3Jvb3Q7Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIG1f
Y3VycmVudDsKKyAgICBjb25zdCBDb250YWluZXJOb2RlKiBtX3Jvb3QgeyBudWxscHRyIH07Cisg
ICAgRWxlbWVudFR5cGUqIG1fY3VycmVudCB7IG51bGxwdHIgfTsKIAogI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7CkBAIC05NSwx
MyArNjksNiBAQCBwcml2YXRlOgogCiAvLyBFbGVtZW50SXRlcmF0b3IKIAotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46
OkVsZW1lbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290KQotICAgIDogbV9yb290
KHJvb3QpCi0gICAgLCBtX2N1cnJlbnQobnVsbHB0cikKLXsKLX0KLQogdGVtcGxhdGUgPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVs
ZW1lbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290LCBFbGVtZW50VHlwZSogY3Vy
cmVudCkKICAgICA6IG1fcm9vdChyb290KQpAQCAtMjM3LDE2MCArMjA0LDI1IEBAIGlubGluZSBF
bGVtZW50VHlwZSogRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItPigpIGNv
bnN0CiAgICAgcmV0dXJuIG1fY3VycmVudDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPgotaW5saW5lIGJvb2wgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0
b3I9PShjb25zdCBFbGVtZW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAgIEFTU0VSVCht
X3Jvb3QgPT0gb3RoZXIubV9yb290KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVl
SGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gbV9jdXJyZW50ID09IG90aGVyLm1fY3VycmVudDsK
LX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGJvb2wgRWxlbWVu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBFbGVtZW50SXRlcmF0b3Im
IG90aGVyKSBjb25zdAotewotICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLX0KLQotLy8g
RWxlbWVudENvbnN0SXRlcmF0b3IKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENvbnN0SXRl
cmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCkKLSAgICA6IG1fcm9vdChyb290KQotICAg
ICwgbV9jdXJyZW50KG51bGxwdHIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gY29u
c3RleHByIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIGJvb2woKSBjb25z
dAogeworICAgIHJldHVybiBtX2N1cnJlbnQ7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1l
bnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QsIGNvbnN0IEVsZW1lbnRU
eXBlKiBjdXJyZW50KQotICAgIDogbV9yb290KHJvb3QpCi0gICAgLCBtX2N1cnJlbnQoY3VycmVu
dCkKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgICwgbV9hc3NlcnRpb25zKGN1cnJlbnQpCi0jZW5k
aWYKLXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1l
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+Ojp0cmF2ZXJzZU5leHQoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFT
U0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3VycmVudCA9
IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHQoKm1fY3VycmVudCwgbV9yb290KTsKLSNpZiBB
U1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRv
ciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0gICAgICAgIG1fYXNzZXJ0
aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlmCi0gICAgcmV0dXJuICp0
aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVu
dENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT46OnRyYXZlcnNlUHJldmlvdXMoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAg
IEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3VycmVu
dCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnByZXZpb3VzKCptX2N1cnJlbnQsIG1fcm9vdCk7
Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUg
aXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBt
X2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAgIHJl
dHVybiAqdGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5l
IEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8
RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkKLXsKLSAgICBBU1NFUlQobV9jdXJy
ZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAg
ICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0U2libGluZygqbV9jdXJy
ZW50KTsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVu
IHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0gICAg
ICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlmCi0g
ICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKCkKLXsKLSAgICBBU1NF
UlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRl
ZCgpKTsKLSAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpwcmV2aW91c1Np
YmxpbmcoKm1fY3VycmVudCk7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBh
c3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9j
dXJyZW50KQotICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24o
KTsKLSNlbmRpZgotICAgIHJldHVybiAqdGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxl
bWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxk
cmVuKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9u
cy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVu
dFR5cGU+OjpuZXh0U2tpcHBpbmdDaGlsZHJlbigqbV9jdXJyZW50LCBtX3Jvb3QpOwotI2lmIEFT
U0VSVF9FTkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9y
IHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRp
b25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gKnRo
aXM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6dHJhdmVyc2VBbmNlc3RvcigpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAg
QVNTRVJUKG1fY3VycmVudCAhPSBtX3Jvb3QpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRv
bVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3VycmVudCA9IGZpbmRFbGVtZW50QW5jZXN0b3JP
ZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCptX2N1cnJlbnQpOwotI2lmIEFTU0VSVF9FTkFCTEVE
Ci0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhl
IGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVu
dERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSB2b2lkIEVsZW1lbnRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6ZHJvcEFzc2VydGlvbnMoKQotewotI2lmIEFTU0VSVF9FTkFC
TEVECi0gICAgbV9hc3NlcnRpb25zLmNsZWFyKCk7Ci0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlJiBFbGVtZW50Q29u
c3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKigpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBFbGVtZW50VHlwZT4gY29uc3RleHByIGJvb2wgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6b3BlcmF0b3IhKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBB
U1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gKm1f
Y3VycmVudDsKKyAgICByZXR1cm4gIW1fY3VycmVudDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlKiBFbGVtZW50Q29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yLT4oKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUg
RWxlbWVudFR5cGU+IGNvbnN0ZXhwciBib29sIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46
Om9wZXJhdG9yIT0oc3RkOjpudWxscHRyX3QpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fY3VycmVu
dCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CiAgICAg
cmV0dXJuIG1fY3VycmVudDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIGJvb2wgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcj09
KGNvbnN0IEVsZW1lbnRDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICBBU1NFUlQo
bV9yb290ID09IG90aGVyLm1fcm9vdCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJl
ZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuIG1fY3VycmVudCA9PSBvdGhlci5tX2N1cnJlbnQ7
Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBib29sIEVsZW1l
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBFbGVtZW50Q29u
c3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4g
Y29uc3RleHByIGJvb2wgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IhPShj
b25zdCBFbGVtZW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsKKyAgICBBU1NFUlQobV9yb290ID09IG90aGVyLm1fcm9vdCB8fCAhbV9jdXJy
ZW50IHx8ICFvdGhlci5tX2N1cnJlbnQpOworICAgIHJldHVybiBtX2N1cnJlbnQgIT0gb3RoZXIu
bV9jdXJyZW50OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZl
Tm9kZUxpc3QuY3BwCmluZGV4IGRkMGM5OTkxODA5Y2JmN2M3MTA2MDA1MDIxNjRlOWExNmZkY2Mx
OTEuLjQ3ODkyMzAxZTI5NmFhNmE1N2Q4ZDM4NTNhYjdiNjhkZTViOWNhN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9MaXZlTm9kZUxpc3QuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAx
OTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50
dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGly
ayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYt
MjAwOCwgMjAxMCwgMjAxMy0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsMzIgKzIzLDE0IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiTGl2ZU5vZGVMaXN0LmgiCiAKLSNpbmNsdWRlICJDbGFzc0NvbGxlY3Rp
b24uaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudFRyYXZlcnNhbC5o
IgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoTGl2ZU5vZGVMaXN0KTsKLQogTGl2ZU5vZGVMaXN0OjpMaXZlTm9kZUxpc3QoQ29udGFp
bmVyTm9kZSYgb3duZXJOb2RlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxpZGF0aW9u
VHlwZSkKICAgICA6IG1fb3duZXJOb2RlKG93bmVyTm9kZSkKICAgICAsIG1faW52YWxpZGF0aW9u
VHlwZShpbnZhbGlkYXRpb25UeXBlKQotICAgICwgbV9pc1JlZ2lzdGVyZWRGb3JJbnZhbGlkYXRp
b25BdERvY3VtZW50KGZhbHNlKQogewotICAgIEFTU0VSVChtX2ludmFsaWRhdGlvblR5cGUgPT0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludmFsaWRhdGlvblR5cGUpKTsKIH0KIAogTGl2ZU5vZGVM
aXN0Ojp+TGl2ZU5vZGVMaXN0KCkgPSBkZWZhdWx0OwogCi1Db250YWluZXJOb2RlJiBMaXZlTm9k
ZUxpc3Q6OnJvb3ROb2RlKCkgY29uc3QKLXsKLSAgICBpZiAoaXNSb290ZWRBdERvY3VtZW50KCkg
JiYgb3duZXJOb2RlKCkuaXNDb25uZWN0ZWQoKSkKLSAgICAgICAgcmV0dXJuIG93bmVyTm9kZSgp
LmRvY3VtZW50KCk7Ci0KLSAgICByZXR1cm4gb3duZXJOb2RlKCk7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaAppbmRleCBmMjdmMGVmNjc0YmJk
OTgyMzE0YzBiYmIyNWI4NTI0MjIzNGRhNThmLi40ODkxNjM2MTA3OTEzOGZkMGJjNzhlNmQ0MWFh
YWYwMzE4ZTBiYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCkBAIC0yNiw3ICsyNiw2
IEBACiAjaW5jbHVkZSAiQ29sbGVjdGlvbkluZGV4Q2FjaGUuaCIKICNpbmNsdWRlICJDb2xsZWN0
aW9uVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
Tm9kZUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMzksMzkgKzM4LDM1IEBA
IGNsYXNzIEVsZW1lbnQ7CiBzdGF0aWMgYm9vbCBzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmli
dXRlQ2hhbmdlKE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogCiBjbGFzcyBMaXZlTm9kZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QgewotICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoTGl2ZU5vZGVMaXN0KTsKKyAgICBXVEZfTUFLRV9JU09fTk9OQUxMT0NB
VEFCTEUoTGl2ZU5vZGVMaXN0KTsKIHB1YmxpYzoKLSAgICBMaXZlTm9kZUxpc3QoQ29udGFpbmVy
Tm9kZSYgb3duZXJOb2RlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUpOwogICAgIHZpcnR1YWwg
fkxpdmVOb2RlTGlzdCgpOwogCiAgICAgdmlydHVhbCBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1l
bnQmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNv
bnN0ID0gMDsKIAotICAgIEFMV0FZU19JTkxJTkUgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGlu
dmFsaWRhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxOb2RlTGlzdEludmFs
aWRhdGlvblR5cGU+KG1faW52YWxpZGF0aW9uVHlwZSk7IH0KKyAgICBOb2RlTGlzdEludmFsaWRh
dGlvblR5cGUgaW52YWxpZGF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faW52YWxpZGF0aW9u
VHlwZTsgfQogICAgIENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
b3duZXJOb2RlOyB9Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGludmFsaWRhdGVDYWNoZUZvckF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGlmIChzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmlidXRlQ2hhbmdlKGludmFsaWRhdGlv
blR5cGUoKSwgYXR0ck5hbWUpKQotICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hlKCk7Ci0gICAg
fQorICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2Fj
aGVGb3JEb2N1bWVudChEb2N1bWVudCYpIGNvbnN0ID0gMDsKICAgICB2b2lkIGludmFsaWRhdGVD
YWNoZSgpIGNvbnN0IHsgaW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQoZG9jdW1lbnQoKSk7IH0K
IAogICAgIGJvb2wgaXNSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudDsgfQotICAg
IHZvaWQgc2V0UmVnaXN0ZXJlZEZvckludmFsaWRhdGlvbkF0RG9jdW1lbnQoYm9vbCBmKSB7IG1f
aXNSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudCA9IGY7IH0KKyAgICB2b2lkIHNl
dFJlZ2lzdGVyZWRGb3JJbnZhbGlkYXRpb25BdERvY3VtZW50KGJvb2wgaXNSZWdpc3RlcmVkKSB7
IG1faXNSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudCA9IGlzUmVnaXN0ZXJlZDsg
fQogCiBwcm90ZWN0ZWQ6CisgICAgTGl2ZU5vZGVMaXN0KENvbnRhaW5lck5vZGUmIG93bmVyTm9k
ZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlKTsKKwogICAgIERvY3VtZW50JiBkb2N1bWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fb3duZXJOb2RlLT5kb2N1bWVudCgpOyB9CisgICAgQ29udGFpbmVy
Tm9kZSYgcm9vdE5vZGUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBib29sIGlzTGl2ZU5vZGVM
aXN0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgQ29udGFpbmVyTm9kZSYg
cm9vdE5vZGUoKSBjb25zdDsKLQogICAgIFJlZjxDb250YWluZXJOb2RlPiBtX293bmVyTm9kZTsK
IAotICAgIGNvbnN0IHVuc2lnbmVkIG1faW52YWxpZGF0aW9uVHlwZTsKLSAgICBib29sIG1faXNS
ZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudDsKKyAgICBjb25zdCBOb2RlTGlzdElu
dmFsaWRhdGlvblR5cGUgbV9pbnZhbGlkYXRpb25UeXBlOworICAgIGJvb2wgbV9pc1JlZ2lzdGVy
ZWRGb3JJbnZhbGlkYXRpb25BdERvY3VtZW50IHsgZmFsc2UgfTsKIH07CiAKIHRlbXBsYXRlIDxj
bGFzcyBOb2RlTGlzdFR5cGU+CkBAIC04MSwxNiArNzYsMTcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfkNhY2hlZExpdmVOb2RlTGlzdCgpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVDb3VudChub2RlTGlzdCgpKTsgfQotICAg
IEVsZW1lbnQqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2luZGV4Q2FjaGUubm9kZUF0KG5vZGVMaXN0KCksIG9mZnNldCk7IH0KKyAgICBFbGVtZW50KiBp
dGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm5v
ZGVBdChub2RlTGlzdCgpLCBvZmZzZXQpOyB9CiAKICAgICAvLyBGb3IgQ29sbGVjdGlvbkluZGV4
Q2FjaGUKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGNvbGxlY3Rpb25CZWdpbigpIGNv
bnN0IHsgcmV0dXJuIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6
OkRlc2NlbmRhbnRzPjo6YmVnaW4obm9kZUxpc3QoKSwgcm9vdE5vZGUoKSk7IH0KLSAgICBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yIGNvbGxlY3Rpb25MYXN0KCkgY29uc3QgeyByZXR1cm4gQ29s
bGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+Ojps
YXN0KG5vZGVMaXN0KCksIHJvb3ROb2RlKCkpOyB9Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvciBjb2xsZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcigpOyB9Ci0gICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVy
c2VkQ291bnQpIGNvbnN0IHsgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2Fs
VHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUZvcndhcmQobm9kZUxpc3QoKSwgY3VycmVudCwg
Y291bnQsIHRyYXZlcnNlZENvdW50KTsgfQotICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlQmFj
a3dhcmQoRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQp
IGNvbnN0IHsgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVz
Y2VuZGFudHM+Ojp0cmF2ZXJzZUJhY2t3YXJkKG5vZGVMaXN0KCksIGN1cnJlbnQsIGNvdW50KTsg
fQorICAgIHVzaW5nIFRyYXZlcnNhbCA9IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjsKKyAgICB1c2luZyBJdGVyYXRvciA9IFRyYXZlcnNh
bDo6SXRlcmF0b3I7CisgICAgYXV0byBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBU
cmF2ZXJzYWw6OmJlZ2luKG5vZGVMaXN0KCksIHJvb3ROb2RlKCkpOyB9CisgICAgYXV0byBjb2xs
ZWN0aW9uTGFzdCgpIGNvbnN0IHsgcmV0dXJuIFRyYXZlcnNhbDo6bGFzdChub2RlTGlzdCgpLCBy
b290Tm9kZSgpKTsgfQorICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChJdGVyYXRv
ciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29u
c3QgeyBUcmF2ZXJzYWw6OnRyYXZlcnNlRm9yd2FyZChub2RlTGlzdCgpLCBjdXJyZW50LCBjb3Vu
dCwgdHJhdmVyc2VkQ291bnQpOyB9CisgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2Fy
ZChJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpIGNvbnN0IHsgVHJhdmVyc2FsOjp0
cmF2ZXJzZUJhY2t3YXJkKG5vZGVMaXN0KCksIGN1cnJlbnQsIGNvdW50KTsgfQogICAgIGJvb2wg
Y29sbGVjdGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdm9pZCB3aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3QgeyBkb2N1bWVudCgpLnJlZ2lz
dGVyTm9kZUxpc3RGb3JJbnZhbGlkYXRpb24oY29uc3RfY2FzdDxDYWNoZWRMaXZlTm9kZUxpc3Q8
Tm9kZUxpc3RUeXBlPiY+KCp0aGlzKSk7IH0KKyAgICB2b2lkIHdpbGxWYWxpZGF0ZUluZGV4Q2Fj
aGUoKSBjb25zdCB7IGRvY3VtZW50KCkucmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbihj
b25zdF9jYXN0PENhY2hlZExpdmVOb2RlTGlzdCY+KCp0aGlzKSk7IH0KIAogICAgIHZvaWQgaW52
YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQoRG9jdW1lbnQmKSBjb25zdCBmaW5hbDsKICAgICBzaXpl
X3QgbWVtb3J5Q29zdCgpIGNvbnN0IGZpbmFsCkBAIC0xMDgsOSArMTA0LDcgQEAgcHJpdmF0ZToK
ICAgICBOb2RlTGlzdFR5cGUmIG5vZGVMaXN0KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Tm9kZUxp
c3RUeXBlJj4oKnRoaXMpOyB9CiAgICAgY29uc3QgTm9kZUxpc3RUeXBlJiBub2RlTGlzdCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsgfQog
Ci0gICAgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUoKSBjb25zdDsKLQotICAgIG11dGFibGUgQ29s
bGVjdGlvbkluZGV4Q2FjaGU8Tm9kZUxpc3RUeXBlLCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
PiBtX2luZGV4Q2FjaGU7CisgICAgbXV0YWJsZSBDb2xsZWN0aW9uSW5kZXhDYWNoZTxOb2RlTGlz
dFR5cGUsIEl0ZXJhdG9yPiBtX2luZGV4Q2FjaGU7CiB9OwogCiBBTFdBWVNfSU5MSU5FIGJvb2wg
c2hvdWxkSW52YWxpZGF0ZVR5cGVPbkF0dHJpYnV0ZUNoYW5nZShOb2RlTGlzdEludmFsaWRhdGlv
blR5cGUgdHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC0xMzcsMzYgKzEz
MSw0MCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgc2hvdWxkSW52YWxpZGF0ZVR5cGVPbkF0dHJpYnV0
ZUNoYW5nZShOb2RlTGlzdEludmFsaWRhdGlvblR5cAogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
QUxXQVlTX0lOTElORSB2b2lkIExpdmVOb2RlTGlzdDo6aW52YWxpZGF0ZUNhY2hlRm9yQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0Cit7CisgICAgaWYg
KHNob3VsZEludmFsaWRhdGVUeXBlT25BdHRyaWJ1dGVDaGFuZ2UobV9pbnZhbGlkYXRpb25UeXBl
LCBhdHRyaWJ1dGVOYW1lKSkKKyAgICAgICAgaW52YWxpZGF0ZUNhY2hlKCk7Cit9CisKK2lubGlu
ZSBDb250YWluZXJOb2RlJiBMaXZlTm9kZUxpc3Q6OnJvb3ROb2RlKCkgY29uc3QKK3sKKyAgICBp
ZiAoaXNSb290ZWRBdERvY3VtZW50KCkgJiYgbV9vd25lck5vZGUtPmlzQ29ubmVjdGVkKCkpCisg
ICAgICAgIHJldHVybiBkb2N1bWVudCgpOworCisgICAgcmV0dXJuIG1fb3duZXJOb2RlOworfQor
CiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgogQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVM
aXN0VHlwZT46OkNhY2hlZExpdmVOb2RlTGlzdChDb250YWluZXJOb2RlJiBvd25lck5vZGUsIE5v
ZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlKQogICAgIDogTGl2ZU5vZGVM
aXN0KG93bmVyTm9kZSwgaW52YWxpZGF0aW9uVHlwZSkKLSAgICAsIG1faW5kZXhDYWNoZShub2Rl
TGlzdCgpKQogewogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgogQ2FjaGVkTGl2
ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46On5DYWNoZWRMaXZlTm9kZUxpc3QoKQogewotICAgIGlm
IChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShub2RlTGlzdCgpKSkKKyAgICBpZiAobV9pbmRl
eENhY2hlLmhhc1ZhbGlkQ2FjaGUoKSkKICAgICAgICAgZG9jdW1lbnQoKS51bnJlZ2lzdGVyTm9k
ZUxpc3RGb3JJbnZhbGlkYXRpb24oKnRoaXMpOwogfQogCi10ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxp
c3RUeXBlPgotaW5saW5lIENvbnRhaW5lck5vZGUmIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlz
dFR5cGU+Ojpyb290Tm9kZSgpIGNvbnN0Ci17Ci0gICAgaWYgKG5vZGVMaXN0KCkuaXNSb290ZWRB
dERvY3VtZW50KCkgJiYgb3duZXJOb2RlKCkuaXNDb25uZWN0ZWQoKSkKLSAgICAgICAgcmV0dXJu
IG93bmVyTm9kZSgpLmRvY3VtZW50KCk7Ci0KLSAgICByZXR1cm4gb3duZXJOb2RlKCk7Ci19Ci0K
IHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+CiB2b2lkIENhY2hlZExpdmVOb2RlTGlzdDxO
b2RlTGlzdFR5cGU+OjppbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1l
bnQpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShub2RlTGlz
dCgpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGRvY3VtZW50LnVucmVnaXN0ZXJOb2RlTGlzdEZv
ckludmFsaWRhdGlvbihjb25zdF9jYXN0PE5vZGVMaXN0VHlwZSY+KG5vZGVMaXN0KCkpKTsKLSAg
ICBtX2luZGV4Q2FjaGUuaW52YWxpZGF0ZShub2RlTGlzdCgpKTsKKyAgICBpZiAobV9pbmRleENh
Y2hlLmhhc1ZhbGlkQ2FjaGUoKSkgeworICAgICAgICBkb2N1bWVudC51bnJlZ2lzdGVyTm9kZUxp
c3RGb3JJbnZhbGlkYXRpb24oY29uc3RfY2FzdDxOb2RlTGlzdFR5cGUmPihub2RlTGlzdCgpKSk7
CisgICAgICAgIG1faW5kZXhDYWNoZS5pbnZhbGlkYXRlKCk7CisgICAgfQogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVM
aXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuY3BwCmluZGV4IGYwYWRk
MmFjMmQ1NDY2NmZhMmZlODU3ODk2MmNiNTQwOGZiYjczNTQuLmY0ZmEyNmZjN2U2MzYyNDQxYWMz
NDM3NGVjMTJlNTI0ODlmN2Y5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1l
Tm9kZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuY3BwCkBA
IC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5v
cmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDcsIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM4LDYgKzM4LDEx
IEBAIE5hbWVOb2RlTGlzdDo6TmFtZU5vZGVMaXN0KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBj
b25zdCBBdG9tU3RyaW5nJiBuYW1lKQogewogfQogCitSZWY8TmFtZU5vZGVMaXN0PiBOYW1lTm9k
ZUxpc3Q6OmNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYg
bmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYW1lTm9kZUxpc3Qocm9vdE5vZGUs
IG5hbWUpKTsKK30KKwogTmFtZU5vZGVMaXN0Ojp+TmFtZU5vZGVMaXN0KCkKIHsKICAgICBvd25l
ck5vZGUoKS5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVXaXRoQXRvbU5hbWUoKnRoaXMsIG1fbmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmgKaW5kZXggNzBjNWM3MDBlOTUwZTUzMTQzN2Yw
ZmRlNTFjY2MzOGQ2ZGNiM2FhMS4uOTQ3NWRlZmVkNGViNzg5ZGZlMzEzMTIxOTQ1NGZlMjM4NTAx
ZTdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuaApAQCAtMiw3ICsyLDcgQEAKICAqIENv
cHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAg
IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAg
IChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA3LTIwMDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNCwyNCArMjQsMTcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiTGl2ZU5vZGVMaXN0LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Ly8gTm9kZUxpc3Qgd2hpY2ggbGlzdHMgYWxsIE5vZGVzIGluIGEgRWxlbWVudCB3aXRoIGEgZ2l2
ZW4gIm5hbWUiIGF0dHJpYnV0ZQogY2xhc3MgTmFtZU5vZGVMaXN0IGZpbmFsIDogcHVibGljIENh
Y2hlZExpdmVOb2RlTGlzdDxOYW1lTm9kZUxpc3Q+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKE5hbWVOb2RlTGlzdCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxOYW1lTm9kZUxpc3Q+
IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5hbWVOb2RlTGlzdChyb290Tm9k
ZSwgbmFtZSkpOwotICAgIH0KLQorICAgIHN0YXRpYyBSZWY8TmFtZU5vZGVMaXN0PiBjcmVhdGUo
Q29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpOwogICAgIHZp
cnR1YWwgfk5hbWVOb2RlTGlzdCgpOwogCi0gICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50
JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVu
dCYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNSb290ZWRBdERvY3VtZW50KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0ZToKICAgICBOYW1lTm9kZUxpc3QoQ29udGFp
bmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CmluZGV4IDEyNzI1MjQyMGFiN2QxZDdiNDg3NGQ1YTIyNjE2MWI0MzMwYmM0NDMuLmI3YWYxNGQx
YzBiNGNiZmRmNjg5Y2UyODQwMzAyOTk1YjRiMzQ2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTQ3
LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MQXJlYUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29s
bGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdl
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nl
bGVjdG9yUXVlcnkuY3BwCmluZGV4IGVmMDU1MjkzNDI3N2Q0M2IxMTlhNDY3NTFmZjQyOGUwYTE4
MDM3OTAuLmMwNjFhM2RlMmJjNTU4MjVmOTVjZjcyZDQ4MDMzYTFlY2QxOWQyNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDE0IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJTZWxlY3RvclF1
ZXJ5LmgiCiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKLSNpbmNsdWRlICJFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCiAjaW5jbHVkZSAiU3Rh
dGljTm9kZUxpc3QuaCIKQEAgLTE1MCwxNSArMTUwLDEyIEBAIGJvb2wgU2VsZWN0b3JEYXRhTGlz
dDo6bWF0Y2hlcyhFbGVtZW50JiB0YXJnZXRFbGVtZW50KSBjb25zdAogCiBFbGVtZW50KiBTZWxl
Y3RvckRhdGFMaXN0OjpjbG9zZXN0KEVsZW1lbnQmIHRhcmdldEVsZW1lbnQpIGNvbnN0CiB7Ci0g
ICAgRWxlbWVudCogY3VycmVudE5vZGUgPSAmdGFyZ2V0RWxlbWVudDsKLSAgICBkbyB7CisgICAg
Zm9yIChhdXRvJiBjdXJyZW50RWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4odGFyZ2V0
RWxlbWVudCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBzZWxlY3RvciA6IG1fc2VsZWN0b3JzKSB7
Ci0gICAgICAgICAgICBFbGVtZW50KiBjYW5kaWRhdGVFbGVtZW50ID0gc2VsZWN0b3JDbG9zZXN0
KHNlbGVjdG9yLCAqY3VycmVudE5vZGUsIHRhcmdldEVsZW1lbnQpOwotICAgICAgICAgICAgaWYg
KGNhbmRpZGF0ZUVsZW1lbnQpCisgICAgICAgICAgICBpZiAoYXV0byogY2FuZGlkYXRlRWxlbWVu
dCA9IHNlbGVjdG9yQ2xvc2VzdChzZWxlY3RvciwgY3VycmVudEVsZW1lbnQsIHRhcmdldEVsZW1l
bnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVFbGVtZW50OwogICAgICAgICB9
Ci0gICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUtPnBhcmVudEVsZW1lbnQoKTsKLSAg
ICB9IHdoaWxlIChjdXJyZW50Tm9kZSk7CisgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQog
CkBAIC0yOTUsNyArMjkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFp
dD4KIHN0YXRpYyBpbmxpbmUgdm9pZCBlbGVtZW50c0ZvckxvY2FsTmFtZShjb25zdCBDb250YWlu
ZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9t
U3RyaW5nJiBsb3dlcmNhc2VMb2NhbE5hbWUsIHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6
T3V0cHV0VHlwZSYgb3V0cHV0KQogewogICAgIGlmIChsb2NhbE5hbWUgPT0gbG93ZXJjYXNlTG9j
YWxOYW1lKSB7Ci0gICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50
cyhjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihyb290Tm9kZSkpKSB7CisgICAgICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29u
dGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAgICAgIGlmIChlbGVtZW50LnRhZ1FO
YW1lKCkubG9jYWxOYW1lKCkgPT0gbG9jYWxOYW1lKSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0
b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwog
ICAgICAgICAgICAgICAgIGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZp
cnN0RWxlbWVudCkKQEAgLTMwMyw3ICszMDAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZWxlbWVu
dHNGb3JMb2NhbE5hbWUoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0bwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChhdXRv
JiBlbGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+
KHJvb3ROb2RlKSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNP
ZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewog
ICAgICAgICAgICAgaWYgKGxvY2FsTmFtZU1hdGNoZXMoZWxlbWVudCwgbG9jYWxOYW1lLCBsb3dl
cmNhc2VMb2NhbE5hbWUpKSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0Ojph
cHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICAgICAgICAg
IGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAg
LTMxNiw3ICszMTMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZWxlbWVudHNGb3JMb2NhbE5hbWUo
Y29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0bwogdGVtcGxhdGUgPHR5cGVu
YW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4KIHN0YXRpYyBpbmxpbmUgdm9pZCBhbnlFbGVtZW50KGNv
bnN0IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6
Ok91dHB1dFR5cGUmIG91dHB1dCkKIHsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50
RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAg
IGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nh
c3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAgU2VsZWN0b3JRdWVyeVRy
YWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICBp
ZiAoU2VsZWN0b3JRdWVyeVRyYWl0OjpzaG91bGRPbmx5TWF0Y2hGaXJzdEVsZW1lbnQpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0zNDUsNyArMzQyLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNl
bGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVUYWdOYW1lU2VsZWN0b3JEYXRhKGNvbnN0IENv
bnQKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZhbGxiYWNrOiBOYW1lc3Bh
Y2VVUkkgaXMgc2V0LCBzZWxlY3RvckxvY2FsTmFtZSBtYXkgYmUgc3RhckF0b20oKS4KLSAgICAg
ICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29u
dGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDog
ZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9v
dE5vZGUpKSkgewogICAgICAgICAgICAgaWYgKGVsZW1lbnQubmFtZXNwYWNlVVJJKCkgPT0gc2Vs
ZWN0b3JOYW1lc3BhY2VVUkkgJiYgbG9jYWxOYW1lTWF0Y2hlcyhlbGVtZW50LCBzZWxlY3Rvckxv
Y2FsTmFtZSwgc2VsZWN0b3JMb3dlcmNhc2VMb2NhbE5hbWUpKSB7CiAgICAgICAgICAgICAgICAg
U2VsZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1l
bnQpOwogICAgICAgICAgICAgICAgIGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlN
YXRjaEZpcnN0RWxlbWVudCkKQEAgLTM2Miw3ICszNTksNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQg
U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZUNsYXNzTmFtZVNlbGVjdG9yRGF0YShjb25z
dCBDbwogICAgIEFTU0VSVChpc1NpbmdsZUNsYXNzTmFtZVNlbGVjdG9yKCpzZWxlY3RvckRhdGEu
c2VsZWN0b3IpKTsKIAogICAgIGNvbnN0IEF0b21TdHJpbmcmIGNsYXNzTmFtZSA9IHNlbGVjdG9y
RGF0YS5zZWxlY3Rvci0+dmFsdWUoKTsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50
RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAg
IGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nh
c3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAgaWYgKGVsZW1lbnQuaGFz
Q2xhc3MoKSAmJiBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucyhjbGFzc05hbWUpKSB7CiAg
ICAgICAgICAgICBTZWxlY3RvclF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1lbnQob3V0
cHV0LCAmZWxlbWVudCk7CiAgICAgICAgICAgICBpZiAoU2VsZWN0b3JRdWVyeVRyYWl0OjpzaG91
bGRPbmx5TWF0Y2hGaXJzdEVsZW1lbnQpCkBAIC0zNzYsNyArMzczLDcgQEAgQUxXQVlTX0lOTElO
RSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVTZWxlY3RvckRhdGEoY29uc3Qg
Q29udGFpbmVyTm8KIHsKICAgICBBU1NFUlQobV9zZWxlY3RvcnMuc2l6ZSgpID09IDEpOwogCi0g
ICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29u
dGFpbmVyTm9kZSY+KHNlYXJjaFJvb3ROb2RlKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQg
OiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihz
ZWFyY2hSb290Tm9kZSkpKSB7CiAgICAgICAgIGlmIChzZWxlY3Rvck1hdGNoZXMoc2VsZWN0b3JE
YXRhLCBlbGVtZW50LCByb290Tm9kZSkpIHsKICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFp
dDo6YXBwZW5kT3V0cHV0Rm9yRWxlbWVudChvdXRwdXQsICZlbGVtZW50KTsKICAgICAgICAgICAg
IGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAg
LTM4OCw3ICszODUsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhl
Y3V0ZVNpbmdsZVNlbGVjdG9yRGF0YShjb25zdCBDb250YWluZXJObwogdGVtcGxhdGUgPHR5cGVu
YW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4KIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFM
aXN0OjpleGVjdXRlU2luZ2xlTXVsdGlTZWxlY3RvckRhdGEoY29uc3QgQ29udGFpbmVyTm9kZSYg
cm9vdE5vZGUsIHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0cHV0
KSBjb25zdAogewotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhj
b25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihyb290Tm9kZSkpKSB7CisgICAgZm9yIChhdXRvJiBl
bGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJO
b2RlJj4ocm9vdE5vZGUpKSkgewogICAgICAgICBmb3IgKGF1dG8mIHNlbGVjdG9yIDogbV9zZWxl
Y3RvcnMpIHsKICAgICAgICAgICAgIGlmIChzZWxlY3Rvck1hdGNoZXMoc2VsZWN0b3IsIGVsZW1l
bnQsIHJvb3ROb2RlKSkgewogICAgICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBw
ZW5kT3V0cHV0Rm9yRWxlbWVudChvdXRwdXQsICZlbGVtZW50KTsKQEAgLTQwNCw3ICs0MDEsNyBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZU11bHRp
U2VsZWN0b3JEYXRhKGNvbnN0IENvbnRhaQogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVl
cnlUcmFpdD4KIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29t
cGlsZWRTaW1wbGVTZWxlY3RvckNoZWNrZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgc2VhcmNoUm9v
dE5vZGUsIFNlbGVjdG9yQ29tcGlsZXI6OlF1ZXJ5U2VsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNr
ZXIgc2VsZWN0b3JDaGVja2VyLCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5
cGUmIG91dHB1dCwgY29uc3QgU2VsZWN0b3JEYXRhJiBzZWxlY3RvckRhdGEpIGNvbnN0CiB7Ci0g
ICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29u
dGFpbmVyTm9kZSY+KHNlYXJjaFJvb3ROb2RlKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQg
OiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihz
ZWFyY2hSb290Tm9kZSkpKSB7CiAgICAgICAgIHNlbGVjdG9yRGF0YS5jb21waWxlZFNlbGVjdG9y
Lndhc1VzZWQoKTsKIAogICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2VyKCZlbGVtZW50KSkgewpA
QCAtNDIxLDcgKzQxOCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0Ojpl
eGVjdXRlQ29tcGlsZWRTZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDCiAgICAgU2VsZWN0b3JD
aGVja2VyOjpDaGVja2luZ0NvbnRleHQgY2hlY2tpbmdDb250ZXh0KFNlbGVjdG9yQ2hlY2tlcjo6
TW9kZTo6UXVlcnlpbmdSdWxlcyk7CiAgICAgY2hlY2tpbmdDb250ZXh0LnNjb3BlID0gcm9vdE5v
ZGUuaXNEb2N1bWVudE5vZGUoKSA/IG51bGxwdHIgOiAmcm9vdE5vZGU7CiAKLSAgICBmb3IgKGF1
dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2Rl
Jj4oc2VhcmNoUm9vdE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRh
bnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNlYXJjaFJvb3RO
b2RlKSkpIHsKICAgICAgICAgc2VsZWN0b3JEYXRhLmNvbXBpbGVkU2VsZWN0b3Iud2FzVXNlZCgp
OwogCiAgICAgICAgIGlmIChzZWxlY3RvckNoZWNrZXIoJmVsZW1lbnQsICZjaGVja2luZ0NvbnRl
eHQpKSB7CkBAIC00MzcsNyArNDM0LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0
YUxpc3Q6OmV4ZWN1dGVDb21waWxlZFNpbmdsZU11bHRpU2VsZWN0b3JEYXRhKGNvbnMKIHsKICAg
ICBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCBjaGVja2luZ0NvbnRleHQoU2VsZWN0
b3JDaGVja2VyOjpNb2RlOjpRdWVyeWluZ1J1bGVzKTsKICAgICBjaGVja2luZ0NvbnRleHQuc2Nv
cGUgPSByb290Tm9kZS5pc0RvY3VtZW50Tm9kZSgpID8gbnVsbHB0ciA6ICZyb290Tm9kZTsKLSAg
ICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250
YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2Nl
bmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2Rl
KSkpIHsKICAgICAgICAgZm9yIChhdXRvJiBzZWxlY3RvciA6IG1fc2VsZWN0b3JzKSB7CiAgICAg
ICAgICAgICBzZWxlY3Rvci5jb21waWxlZFNlbGVjdG9yLndhc1VzZWQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TbG90QXNzaWdubWVudC5jcHAKaW5kZXggNGQzZTYxOTQ3ZDNiZjhhNWFhYzRiY2U2Nzdm
YzcxYTMzYjg1YzZiOC4uZDJkMTNjYjA5MzUwZDA3YmM2MjA1N2VjOTNjZjM0ODVhNDYwZGRkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCkBAIC0yNiwxMCArMjYsOSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNsb3RBc3NpZ25tZW50LmgiCiAKLQorI2lu
Y2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgog
I2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGFnQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGFnQ29s
bGVjdGlvbi5jcHAKaW5kZXggZTA2N2YyZjFkMjk4NGNiNzg3ZmVlOWEzMDQ5MTIxNTVkYzljMzc0
NC4uMWYzMjRjYzA3N2ExYTMwMGNhYWViODVlYzQyOTM3YWRlZGZhYzEwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1RhZ0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UYWdDb2xsZWN0aW9uLmNwcApAQCAtMzQsNyArMzQsNyBAQCBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoVGFnQ29sbGVjdGlvbk5TKTsKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChIVE1MVGFnQ29sbGVjdGlvbik7CiAKIFRhZ0NvbGxlY3Rpb25OUzo6VGFnQ29sbGVjdGlvbk5T
KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkks
IGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkKLSAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9u
PFRhZ0NvbGxlY3Rpb25OUywgQ29sbGVjdGlvblR5cGVUcmFpdHM8QnlUYWc+Ojp0cmF2ZXJzYWxU
eXBlPihyb290Tm9kZSwgQnlUYWcpCisgICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbihyb290Tm9k
ZSwgQnlUYWcpCiAgICAgLCBtX25hbWVzcGFjZVVSSShuYW1lc3BhY2VVUkkpCiAgICAgLCBtX2xv
Y2FsTmFtZShsb2NhbE5hbWUpCiB7CkBAIC00Nyw3ICs0Nyw3IEBAIFRhZ0NvbGxlY3Rpb25OUzo6
flRhZ0NvbGxlY3Rpb25OUygpCiB9CiAKIFRhZ0NvbGxlY3Rpb246OlRhZ0NvbGxlY3Rpb24oQ29u
dGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpCi0g
ICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbjxUYWdDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRy
YWl0czxCeVRhZz46OnRyYXZlcnNhbFR5cGU+KHJvb3ROb2RlLCBCeVRhZykKKyAgICA6IENhY2hl
ZEhUTUxDb2xsZWN0aW9uKHJvb3ROb2RlLCBCeVRhZykKICAgICAsIG1fcXVhbGlmaWVkTmFtZShx
dWFsaWZpZWROYW1lKQogewogICAgIEFTU0VSVChxdWFsaWZpZWROYW1lICE9IHN0YXJBdG9tKCkp
OwpAQCAtNTksNyArNTksNyBAQCBUYWdDb2xsZWN0aW9uOjp+VGFnQ29sbGVjdGlvbigpCiB9CiAK
IEhUTUxUYWdDb2xsZWN0aW9uOjpIVE1MVGFnQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiByb290
Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSkKLSAgICA6IENhY2hlZEhUTUxD
b2xsZWN0aW9uPEhUTUxUYWdDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxCeUhUTUxU
YWc+Ojp0cmF2ZXJzYWxUeXBlPihyb290Tm9kZSwgQnlIVE1MVGFnKQorICAgIDogQ2FjaGVkSFRN
TENvbGxlY3Rpb24ocm9vdE5vZGUsIEJ5SFRNTFRhZykKICAgICAsIG1fcXVhbGlmaWVkTmFtZShx
dWFsaWZpZWROYW1lKQogICAgICwgbV9sb3dlcmVkUXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1l
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKaW5kZXggOWYzNTkzNWQ5NmM3OWU3
NWI2OGQzMGMyOGNiZTNjNWEwNDNmMDMzMy4uOWEwYjFiNWVhMjcxYTBiNWM0NjBjMDFlOTUwNjVj
ZDA3OTFhOTM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1R5cGVkRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDI5NCArMjksMjQxIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZVR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBE
b3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNz
IERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3Mg
RWxlbWVudERlc2NlbmRhbnRSYW5nZTsKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBi
b29sKGNvbnN0IEVsZW1lbnRUeXBlJik+IGNsYXNzIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRS
YW5nZTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4gewotcHVibGljOgotICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBD
b250YWluZXJOb2RlJiByb290KTsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Io
Y29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotICAgIFR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotfTsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+ICB7
Ci1wdWJsaWM6Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3Qg
Q29udGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgY29uc3QgRWxlbWVudFR5cGUqIGN1cnJl
bnQpOwotICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yJiBvcGVyYXRvcisr
KCk7Ci19OworLy8gUmFuZ2UgZm9yIGl0ZXJhdGluZyB0aHJvdWdoIGRlc2NlbmRhbnQgZWxlbWVu
dHMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRSYW5n
ZTxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFpbmVyTm9kZSYpOwordGVtcGxh
dGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8Y29uc3QgRWxl
bWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUmKTsKIAotdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yQWRhcHRlciB7Ci1wdWJsaWM6Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2RlJiByb290KTsKLSAgICBUeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCk7Ci0gICAgVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKTsKLSAgICBUeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoRWxlbWVudFR5cGUmKTsKLSAgICBU
eXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IGZyb20oRWxlbWVudCYp
OworLy8gUmFuZ2UgdGhhdCBza2lwcyBlbGVtZW50cyB3aGVyZSB0aGUgZmlsdGVyIHJldHVybnMg
ZmFsc2UuCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3Qg
RWxlbWVudFR5cGUmKT4gRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlPGNvbnN0IEVsZW1l
bnRUeXBlLCBmaWx0ZXI+IGRlc2NlbmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUmKTsK
IAotICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpOwotICAgIEVsZW1lbnRUeXBlKiBsYXN0KCk7Cisv
LyBSYW5nZSBmb3IgdXNlIHdoZW4gYm90aCBzZXRzIG9mIGRlc2NlbmRhbnRzIGFyZSBrbm93biB0
byBiZSB0aGUgc2FtZSBsZW5ndGguCisvLyBJZiB0aGV5IGFyZSBkaWZmZXJlbnQgbGVuZ3Rocywg
dGhpcyB3aWxsIHN0b3Agd2hlbiB0aGUgc2hvcnRlciBvbmUgcmVhY2hlcyB0aGUgZW5kLCBidXQg
YWxzbyBhbiBhc3NlcnRpb24gd2lsbCBmYWlsLgordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5
cGU+IERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRz
T2ZUeXBlKENvbnRhaW5lck5vZGUmIGZpcnN0Um9vdCwgQ29udGFpbmVyTm9kZSYgc2Vjb25kUm9v
dCk7CiAKLXByaXZhdGU6Ci0gICAgQ29udGFpbmVyTm9kZSYgbV9yb290OwordGVtcGxhdGU8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgOiBwdWJs
aWMgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiB7CitwdWJsaWM6CisgICAgRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvcigpID0gZGVmYXVsdDsKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKKyAg
ICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisgICAgRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JB
ZGFwdGVyIHsKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBjbGFzcyBFbGVtZW50RGVz
Y2VuZGFudFJhbmdlIHsKIHB1YmxpYzoKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgVHlwZWRFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7Ci0g
ICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgp
IGNvbnN0OwotICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPiBiZWdpbkF0KGNvbnN0IEVsZW1lbnRUeXBlJikgY29uc3Q7Ci0gICAgVHlwZWRFbGVtZW50
RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGZyb20oY29uc3QgRWxlbWVudCYp
IGNvbnN0OworICAgIEVsZW1lbnREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYg
cm9vdCk7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4o
KSBjb25zdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6bnVsbHB0cl90IGVuZCgpIHsgcmV0
dXJuIG51bGxwdHI7IH0KKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBl
PiBiZWdpbkF0KEVsZW1lbnRUeXBlJikgY29uc3Q7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjxFbGVtZW50VHlwZT4gZnJvbShFbGVtZW50JikgY29uc3Q7CiAKLSAgICBjb25zdCBFbGVt
ZW50VHlwZSogZmlyc3QoKSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50VHlwZSogbGFzdCgpIGNv
bnN0OworICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0OworICAgIEVsZW1lbnRUeXBlKiBs
YXN0KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgY29uc3QgQ29udGFpbmVyTm9kZSYgbV9yb290
OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZVR5cGVk
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgewordGVtcGxhdGU8dHlwZW5hbWUgRWxl
bWVudFR5cGU+IGNsYXNzIERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UgewogcHVibGljOgot
ICAgIHR5cGVkZWYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50
VHlwZT4gU2luZ2xlQWRhcHRlcjsKLSAgICB0eXBlZGVmIERvdWJsZVR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gSXRlcmF0b3I7CisgICAgdHlwZWRlZiBFbGVtZW50
RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPiBTaW5nbGVBZGFwdGVyOworICAgIHR5cGVkZWYg
RG91YmxlRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gSXRlcmF0b3I7CiAK
LSAgICBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKFNpbmdsZUFk
YXB0ZXImJiwgU2luZ2xlQWRhcHRlciYmKTsKLSAgICBJdGVyYXRvciBiZWdpbigpOwotICAgIEl0
ZXJhdG9yIGVuZCgpOworICAgIERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UoU2luZ2xlQWRh
cHRlciYmLCBTaW5nbGVBZGFwdGVyJiYpOworICAgIEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6Om51bGxwdHJfdCBlbmQoKSB7IHJldHVybiBudWxscHRy
OyB9CiAKIHByaXZhdGU6CiAgICAgc3RkOjpwYWlyPFNpbmdsZUFkYXB0ZXIsIFNpbmdsZUFkYXB0
ZXI+IG1fcGFpcjsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBjbGFzcyBE
b3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgewordGVtcGxhdGU8dHlwZW5hbWUg
RWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgewogcHVi
bGljOgotICAgIHR5cGVkZWYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPiBTaW5nbGVJdGVyYXRvcjsKKyAgICB0eXBlZGVmIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3I8RWxlbWVudFR5cGU+IFNpbmdsZUl0ZXJhdG9yOwogICAgIHR5cGVkZWYgc3RkOjpwYWlyPEVs
ZW1lbnRUeXBlJiwgRWxlbWVudFR5cGUmPiBSZWZlcmVuY2VQcm94eTsKIAotICAgIERvdWJsZVR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihTaW5nbGVJdGVyYXRvciYmLCBTaW5nbGVJdGVy
YXRvciYmKTsKKyAgICBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKFNpbmdsZUl0ZXJh
dG9yJiYsIFNpbmdsZUl0ZXJhdG9yJiYpOwogICAgIFJlZmVyZW5jZVByb3h5IG9wZXJhdG9yKigp
IGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEb3VibGVUeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3ImKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRG91Ymxl
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJikgY29uc3Q7Ci0gICAgRG91YmxlVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisgICAgY29uc3RleHByIGJv
b2wgb3BlcmF0b3IhPShzdGQ6Om51bGxwdHJfdCkgY29uc3Q7CisgICAgRG91YmxlRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwogCiBwcml2YXRlOgogICAgIHN0ZDo6cGFp
cjxTaW5nbGVJdGVyYXRvciwgU2luZ2xlSXRlcmF0b3I+IG1fcGFpcjsKIH07CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRh
cHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFpbmVyTm9kZSYpOwotdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRh
aW5lck5vZGUmKTsKLQotLy8gVGhpcyBtdXN0IG9ubHkgYmUgdXNlZCB3aGVuIGJvdGggc2V0cyBv
ZiBkZXNjZW5kYW50cyBhcmUga25vd24gdG8gYmUgdGhlIHNhbWUgbGVuZ3RoLgotLy8gSWYgdGhl
eSBhcmUgZGlmZmVyZW50IGxlbmd0aHMsIHRoaXMgd2lsbCBzdG9wIHdoZW4gdGhlIHNob3J0ZXIg
b25lIHJlYWNoZXMgdGhlIGVuZCwgYnV0IGFsc28gYW4gYXNzZXJ0aW9uIHdpbGwgZmFpbC4KLXRl
bXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWluZXJO
b2RlJiBmaXJzdFJvb3QsIENvbnRhaW5lck5vZGUmIHNlY29uZFJvb3QpOwotCi0vLyBUeXBlZEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBi
b29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBjbGFzcyBGaWx0ZXJlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiB7Citw
dWJsaWM6CisgICAgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRh
aW5lck5vZGUmLCBFbGVtZW50VHlwZSogPSBudWxscHRyKTsKKyAgICBGaWx0ZXJlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKK307CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxl
bWVudFR5cGU+OjpUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVy
Tm9kZSYgcm9vdCkKLSAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnJvb3QpCi17
Ci19Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxl
bWVudFR5cGUmKT4gY2xhc3MgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlIHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBJdGVyYXRvciA9IEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
cjxFbGVtZW50VHlwZSwgZmlsdGVyPjsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OlR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBF
bGVtZW50VHlwZSogY3VycmVudCkKLSAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4o
JnJvb3QsIGN1cnJlbnQpCi17Ci19CisgICAgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdl
KGNvbnN0IENvbnRhaW5lck5vZGUmKTsKKyAgICBJdGVyYXRvciBiZWdpbigpIGNvbnN0OworICAg
IHN0YXRpYyBjb25zdGV4cHIgc3RkOjpudWxscHRyX3QgZW5kKCkgeyByZXR1cm4gbnVsbHB0cjsg
fQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHQoKSk7Ci19CisgICAgRWxlbWVudFR5
cGUqIGZpcnN0KCkgY29uc3Q7CiAKLS8vIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yCitwcml2YXRlOgorICAgIGNvbnN0IENvbnRhaW5lck5vZGUmIG1fcm9vdDsKK307CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCi0gICAgOiBFbGVtZW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT4oJnJvb3QpCisvLyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWlu
ZXJOb2RlJiByb290LCBFbGVtZW50VHlwZSogY3VycmVudCkKKyAgICA6IEVsZW1lbnRJdGVyYXRv
cjxFbGVtZW50VHlwZT4oJnJvb3QsIGN1cnJlbnQpCiB7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKGNvbnN0
IENvbnRhaW5lck5vZGUmIHJvb3QsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDog
RWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZyb290LCBjdXJyZW50KQordGVtcGxh
dGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+JiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3Ir
KygpCiB7CisgICAgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0KCk7
CisgICAgcmV0dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+
JiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJh
dG9yKysoKQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6b3BlcmF0b3ItLSgpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRDb25zdEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0KCkpOworICAgIEVsZW1lbnRJdGVyYXRvcjxF
bGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXMoKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAK
LS8vIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIKKy8vIEVsZW1lbnREZXNj
ZW5kYW50UmFuZ2UKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpUeXBlZEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUmIHJvb3QpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50
VHlwZT46OkVsZW1lbnREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkK
ICAgICA6IG1fcm9vdChyb290KQogewogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBU
eXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4o
KQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3I8RWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdp
bigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxF
bGVtZW50VHlwZT4obV9yb290LCBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpbiht
X3Jvb3QpKTsKKyAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4obV9yb290LCBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpbihtX3Jvb3QpKTsK
IH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpCi17Ci0gICAgcmV0dXJuIFR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290KTsKLX0KLSAgICAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFk
YXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBkZXNjZW5kYW50KQordGVt
cGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxl
bWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVs
ZW1lbnRUeXBlJiBkZXNjZW5kYW50KSBjb25zdAogewogICAgIEFTU0VSVChkZXNjZW5kYW50Lmlz
RGVzY2VuZGFudE9mKG1fcm9vdCkpOwotICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgJmRlc2NlbmRhbnQpOworICAgIHJldHVybiBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsICZkZXNjZW5kYW50
KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZyb20oRWxlbWVudCYgZGVzY2VuZGFudCkK
K3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiBFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPjo6ZnJvbShF
bGVtZW50JiBkZXNjZW5kYW50KSBjb25zdAogewogICAgIEFTU0VSVChkZXNjZW5kYW50LmlzRGVz
Y2VuZGFudE9mKG1fcm9vdCkpOwogICAgIGlmIChpczxFbGVtZW50VHlwZT4oZGVzY2VuZGFudCkp
Ci0gICAgICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+KG1fcm9vdCwgZG93bmNhc3Q8RWxlbWVudFR5cGU+KCZkZXNjZW5kYW50KSk7CisgICAgICAg
IHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIGRv
d25jYXN0PEVsZW1lbnRUeXBlPigmZGVzY2VuZGFudCkpOwogICAgIEVsZW1lbnRUeXBlKiBuZXh0
ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dChkZXNjZW5kYW50LCAmbV9yb290KTsKLSAg
ICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jv
b3QsIG5leHQpOworICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPihtX3Jvb3QsIG5leHQpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
Ci1pbmxpbmUgRWxlbWVudFR5cGUqIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0
ZXI8RWxlbWVudFR5cGU+OjpmaXJzdCgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4g
RWxlbWVudFR5cGUqIEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpmaXJzdCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0aGlu
KG1fcm9vdCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBF
bGVtZW50VHlwZSogVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50
VHlwZT46Omxhc3QoKQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRUeXBl
KiBFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPjo6bGFzdCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RXaXRoaW4obV9yb290KTsKIH0K
IAotLy8gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyCisvLyBEb3Vi
bGVFbGVtZW50RGVzY2VuZGFudFJhbmdlCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudFR5cGU+OjpUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIoY29u
c3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKLSAgICA6IG1fcm9vdChyb290KQordGVtcGxhdGU8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+IERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5
cGU+OjpEb3VibGVFbGVtZW50RGVzY2VuZGFudFJhbmdlKFNpbmdsZUFkYXB0ZXImJiBmaXJzdCwg
U2luZ2xlQWRhcHRlciYmIHNlY29uZCkKKyAgICA6IG1fcGFpcihXVEZNb3ZlKGZpcnN0KSwgV1RG
TW92ZShzZWNvbmQpKQogewogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5
cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJl
Z2luKCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBhdXRvIERvdWJsZUVs
ZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0IC0+IEl0ZXJh
dG9yCiB7Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPihtX3Jvb3QsIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0aGluKG1f
cm9vdCkpOworICAgIHJldHVybiBJdGVyYXRvcihtX3BhaXIuZmlyc3QuYmVnaW4oKSwgbV9wYWly
LnNlY29uZC5iZWdpbigpKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBU
eXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+Ojpl
bmQoKSBjb25zdAotewotICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT4obV9yb290KTsKLX0KKy8vIERvdWJsZUVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVk
RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbkF0KGNvbnN0
IEVsZW1lbnRUeXBlJiBkZXNjZW5kYW50KSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+IERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpEb3Vi
bGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKFNpbmdsZUl0ZXJhdG9yJiYgZmlyc3QsIFNpbmds
ZUl0ZXJhdG9yJiYgc2Vjb25kKQorICAgIDogbV9wYWlyKFdURk1vdmUoZmlyc3QpLCBXVEZNb3Zl
KHNlY29uZCkpCiB7Ci0gICAgQVNTRVJUKGRlc2NlbmRhbnQuaXNEZXNjZW5kYW50T2YobV9yb290
KSk7Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPihtX3Jvb3QsICZkZXNjZW5kYW50KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudFR5cGU+Ojpmcm9tKGNvbnN0IEVsZW1lbnQmIGRlc2NlbmRhbnQpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gYXV0byBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IqKCkgY29uc3QgLT4gUmVmZXJlbmNlUHJveHkKIHsK
LSAgICBBU1NFUlQoZGVzY2VuZGFudC5pc0Rlc2NlbmRhbnRPZihtX3Jvb3QpKTsKLSAgICBpZiAo
aXM8RWxlbWVudFR5cGU+KGRlc2NlbmRhbnQpKQotICAgICAgICByZXR1cm4gVHlwZWRFbGVtZW50
RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgZG93bmNhc3Q8RWxl
bWVudFR5cGU+KCZkZXNjZW5kYW50KSk7Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIG5leHQgPSBU
cmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0KGRlc2NlbmRhbnQsICZtX3Jvb3QpOwotICAgIHJl
dHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9y
b290LCBuZXh0KTsKKyAgICByZXR1cm4geyAqbV9wYWlyLmZpcnN0LCAqbV9wYWlyLnNlY29uZCB9
OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgY29uc3QgRWxl
bWVudFR5cGUqIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46OmZpcnN0KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBj
b25zdGV4cHIgYm9vbCBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBl
Pjo6b3BlcmF0b3IhPShzdGQ6Om51bGxwdHJfdCkgY29uc3QKIHsKLSAgICByZXR1cm4gVHJhdmVy
c2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RXaXRoaW4obV9yb290KTsKKyAgICBBU1NFUlQoIW1fcGFp
ci5maXJzdCA9PSAhbV9wYWlyLnNlY29uZCk7CisgICAgcmV0dXJuIG1fcGFpci5maXJzdDsKIH0K
IAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRU
eXBlKiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5
cGU+OjpsYXN0KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBEb3VibGVF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRG91YmxlRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewotICAgIHJldHVybiBU
cmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpsYXN0V2l0aGluKG1fcm9vdCk7CisgICAgKyttX3BhaXIu
Zmlyc3Q7CisgICAgKyttX3BhaXIuc2Vjb25kOworICAgIHJldHVybiAqdGhpczsKIH0KIAotLy8g
RG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcgorLy8gRmlsdGVyZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yCiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PiBpbmxpbmUgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46OkRvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoU2lu
Z2xlQWRhcHRlciYmIGZpcnN0LCBTaW5nbGVBZGFwdGVyJiYgc2Vjb25kKQotICAgIDogbV9wYWly
KFdURk1vdmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29uZCkpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVt
ZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gRmlsdGVyZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlLCBmaWx0ZXI+OjpGaWx0ZXJlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgRWxlbWVudFR5cGUq
IGVsZW1lbnQpCisgICAgOiBFbGVtZW50SXRlcmF0b3I8Y29uc3QgRWxlbWVudFR5cGU+IHsgJnJv
b3QsIGVsZW1lbnQgfQogewogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5s
aW5lIGF1dG8gRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46OmJlZ2luKCkgLT4gSXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRU
eXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBGaWx0ZXJlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGUsIGZpbHRlcj4mIEZpbHRlcmVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZSwgZmlsdGVyPjo6b3BlcmF0b3IrKygpCiB7Ci0gICAg
cmV0dXJuIEl0ZXJhdG9yKG1fcGFpci5maXJzdC5iZWdpbigpLCBtX3BhaXIuc2Vjb25kLmJlZ2lu
KCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGF1dG8gRG91
YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVu
ZCgpIC0+IEl0ZXJhdG9yCi17Ci0gICAgcmV0dXJuIEl0ZXJhdG9yKG1fcGFpci5maXJzdC5lbmQo
KSwgbV9wYWlyLnNlY29uZC5lbmQoKSk7CisgICAgZG8geworICAgICAgICBFbGVtZW50SXRlcmF0
b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHQoKTsKKyAgICB9IHdoaWxlICgqdGhpcyAmJiAh
ZmlsdGVyKCoqdGhpcykpOworICAgIHJldHVybiAqdGhpczsKIH0KIAotLy8gRG91YmxlVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yCisvLyBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFu
Z2UKIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBEb3VibGVUeXBlZEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpEb3VibGVUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IoU2luZ2xlSXRlcmF0b3ImJiBmaXJzdCwgU2luZ2xlSXRlcmF0b3Im
JiBzZWNvbmQpCi0gICAgOiBtX3BhaXIoV1RGTW92ZShmaXJzdCksIFdURk1vdmUoc2Vjb25kKSkK
K3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50
VHlwZSYpPiBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGUsIGZpbHRl
cj46OkZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZShjb25zdCBDb250YWluZXJOb2RlJiBy
b290KQorICAgIDogbV9yb290IHsgcm9vdCB9CiB7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPiBpbmxpbmUgYXV0byBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvciooKSBjb25zdCAtPiBSZWZlcmVuY2VQcm94eQordGVt
cGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmlsdGVyKGNvbnN0IEVsZW1lbnRUeXBl
Jik+IGF1dG8gRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlLCBmaWx0
ZXI+OjpiZWdpbigpIGNvbnN0IC0+IEl0ZXJhdG9yCiB7Ci0gICAgcmV0dXJuIHsgKm1fcGFpci5m
aXJzdCwgKm1fcGFpci5zZWNvbmQgfTsKKyAgICByZXR1cm4geyBtX3Jvb3QsIGZpcnN0KCkgfTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBib29sIERvdWJsZVR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yPT0oY29u
c3QgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKK3Rl
bXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlw
ZSYpPiBFbGVtZW50VHlwZSogRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRU
eXBlLCBmaWx0ZXI+OjpmaXJzdCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKChtX3BhaXIuZmlyc3Qg
PT0gb3RoZXIubV9wYWlyLmZpcnN0KSA9PSAobV9wYWlyLnNlY29uZCA9PSBvdGhlci5tX3BhaXIu
c2Vjb25kKSk7Ci0gICAgcmV0dXJuIG1fcGFpci5maXJzdCA9PSBvdGhlci5tX3BhaXIuZmlyc3Qg
fHwgbV9wYWlyLnNlY29uZCA9PSBvdGhlci5tX3BhaXIuc2Vjb25kOworICAgIGZvciAoYXV0byog
ZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0aGluKG1fcm9vdCk7IGVs
ZW1lbnQ7IGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0KCplbGVtZW50LCAm
bV9yb290KSkgeworICAgICAgICBpZiAoZmlsdGVyKCplbGVtZW50KSkKKyAgICAgICAgICAgIHJl
dHVybiBlbGVtZW50OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBib29sIERvdWJsZVR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIT0oY29uc3QgRG91YmxlVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7Ci19CisvLyBTdGFuZGFsb25lIGZ1bmN0aW9ucwogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT4mIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
cjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5
cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBl
KENvbnRhaW5lck5vZGUmIHJvb3QpCiB7Ci0gICAgKyttX3BhaXIuZmlyc3Q7Ci0gICAgKyttX3Bh
aXIuc2Vjb25kOwotICAgIHJldHVybiAqdGhpczsKKyAgICByZXR1cm4gRWxlbWVudERlc2NlbmRh
bnRSYW5nZTxFbGVtZW50VHlwZT4ocm9vdCk7CiB9CiAKLS8vIFN0YW5kYWxvbmUgZnVuY3Rpb25z
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShD
b250YWluZXJOb2RlJiByb290KQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1l
bnREZXNjZW5kYW50UmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKGNv
bnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCiB7Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KHJvb3QpOworICAgIHJldHVybiBFbGVt
ZW50RGVzY2VuZGFudFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPihyb290KTsKIH0KIAotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRD
b25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoY29uc3Qg
Q29udGFpbmVyTm9kZSYgcm9vdCkKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBEb3Vi
bGVFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShD
b250YWluZXJOb2RlJiBmaXJzdFJvb3QsIENvbnRhaW5lck5vZGUmIHNlY29uZFJvb3QpCiB7Ci0g
ICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT4ocm9vdCk7CisgICAgcmV0dXJuIHsgZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudFR5
cGU+KGZpcnN0Um9vdCksIGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnRUeXBlPihzZWNvbmRSb290
KSB9OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIERvdWJsZVR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRh
bnRzT2ZUeXBlKENvbnRhaW5lck5vZGUmIGZpcnN0Um9vdCwgQ29udGFpbmVyTm9kZSYgc2Vjb25k
Um9vdCkKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBF
bGVtZW50VHlwZSYpPiBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8Y29uc3QgRWxlbWVu
dFR5cGUsIGZpbHRlcj4gZGVzY2VuZGFudHNPZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9v
dCkKIHsKLSAgICByZXR1cm4geyBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50VHlwZT4oZmlyc3RS
b290KSwgZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudFR5cGU+KHNlY29uZFJvb3QpIH07CisgICAg
cmV0dXJuIHsgcm9vdCB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKaW5kZXggMzkyMGEwYjcwODMzYmY5YjZmNDNmYzc1OGM0YmQxM2M2YmRl
MWNmNC4uNmM2ZDgzYTcyOGYzMDIwM2I4ZWZmY2UwZjA4YmFhNDU1YzMyNmE2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50
TWFya2VyQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0
b3JDbGllbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVu
dEhhbmRsZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgpA
QCAtNjEsNyArNjIsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
IkhUTUxBdHRhY2htZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxCUkVsZW1lbnQuaCIKLSNp
bmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVP
d25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCkBAIC0zNDMxLDIz
ICszNDMyLDE4IEBAIHZvaWQgRWRpdG9yOjp0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShFbGVtZW50
KiBlKQogCiB2b2lkIEVkaXRvcjo6YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCkgY29u
c3QKIHsKLSAgICBhdXRvIGNvbGxlY3Rpb24gPSBkb2N1bWVudCgpLmdldEVsZW1lbnRzQnlUYWdO
YW1lKEhUTUxOYW1lczo6Ym9keVRhZy0+bG9jYWxOYW1lKCkpOwotICAgIHVuc2lnbmVkIGxlbmd0
aCA9IGNvbGxlY3Rpb24tPmxlbmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkKLSAgICAgICAgYXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQoY29sbGVjdGlv
bi0+aXRlbShpKSk7Ci19Ci0KLXZvaWQgRWRpdG9yOjphcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVu
dChFbGVtZW50KiBlbGVtZW50KSBjb25zdAotewotICAgIEFTU0VSVCghZWxlbWVudCB8fCBpczxT
dHlsZWRFbGVtZW50PigqZWxlbWVudCkpOwotICAgIGlmICghaXM8U3R5bGVkRWxlbWVudD4oZWxl
bWVudCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00g
d3JhcHBlciBzbyB3ZSBnZXQgdGhlIHNhbWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCi0g
ICAgYXV0byYgc3R5bGUgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkuY3Nzb21T
dHlsZSgpOwotICAgIHN0eWxlLnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkV3Jh
cCwgImJyZWFrLXdvcmQiLCBmYWxzZSk7Ci0gICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChD
U1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCAic3BhY2UiLCBmYWxzZSk7Ci0gICAgc3R5bGUuc2V0
UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUxpbmVCcmVhaywgImFmdGVyLXdoaXRlLXNwYWNl
IiwgZmFsc2UpOworICAgIC8vIEZJWE1FOiBOb3QgY2xlYXIgaXQncyB2YWx1YWJsZSB0byBkbyB0
aGlzIHRvIGFsbCBib2R5IGVsZW1lbnRzIHJhdGhlciB0aGFuIGp1c3QgZG9pbmcgaXQgb24gdGhl
IHNpbmdsZSBvbmUgcmV0dXJuZWQgYnkgRG9jdW1lbnQ6OmJvZHkuCisgICAgVmVjdG9yPFJlZjxI
VE1MQm9keUVsZW1lbnQ+PiBib2RpZXM7CisgICAgZm9yIChhdXRvJiBib2R5IDogZGVzY2VuZGFu
dHNPZlR5cGU8SFRNTEJvZHlFbGVtZW50Pihkb2N1bWVudCgpKSkKKyAgICAgICAgYm9kaWVzLmFw
cGVuZChib2R5KTsKKworICAgIGZvciAoYXV0byYgYm9keSA6IGJvZGllcykgeworICAgICAgICAv
LyBNdXRhdGUgdXNpbmcgdGhlIENTU09NIHdyYXBwZXIgc28gd2UgZ2V0IHRoZSBzYW1lIGV2ZW50
IGJlaGF2aW9yIGFzIGEgc2NyaXB0LgorICAgICAgICBhdXRvJiBzdHlsZSA9IGJvZHktPmNzc29t
U3R5bGUoKTsKKyAgICAgICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdv
cmRXcmFwLCAiYnJlYWstd29yZCIsIGZhbHNlKTsKKyAgICAgICAgc3R5bGUuc2V0UHJvcGVydHlJ
bnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCAic3BhY2UiLCBmYWxzZSk7CisgICAg
ICAgIHN0eWxlLnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlMaW5lQnJlYWssICJhZnRl
ci13aGl0ZS1zcGFjZSIsIGZhbHNlKTsKKyAgICB9CiB9CiAKIGJvb2wgRWRpdG9yOjpmaW5kU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmgKaW5kZXggMTljNDIwOGQ0NWQ5ZWM5ZjVjMjljOTI4MTc0ODgwZTRmMWI5ODQx
MC4uZjg2NzdiMzE4ZThlODA2YzAyMmEzZTczODZlZWYyNjA4MDViNDUzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oCkBAIC00MzUsNyArNDM1LDYgQEAgcHVibGljOgogICAgIHZvaWQgY29tcHV0
ZUFuZFNldFR5cGluZ1N0eWxlKEVkaXRpbmdTdHlsZSYgLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlv
bjo6VW5zcGVjaWZpZWQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tcHV0ZUFuZFNldFR5
cGluZ1N0eWxlKFN0eWxlUHJvcGVydGllcyYgLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6VW5z
cGVjaWZpZWQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHlFZGl0aW5nU3R5bGVUb0Jv
ZHlFbGVtZW50KCkgY29uc3Q7Ci0gICAgdm9pZCBhcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudChF
bGVtZW50KikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IGZpcnN0UmVjdEZv
clJhbmdlKFJhbmdlKikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5jcHAKaW5kZXggY2ZkYzM5ZjA0ZWFjNDA2ODRkMWQyNDhiN2I4NzM1NjRlMDI4Mjk2NC4u
ZDhjY2FiMDc4NDEzNzI1ZWY5MGRkMDFkMGI3ZmU0OTc1NGZhN2FjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTIzNTMsMjAgKzIzNTMsMTYgQEAgc3Rh
dGljIEhUTUxGb3JtRWxlbWVudCogc2NhbkZvckZvcm0oRWxlbWVudCogc3RhcnQpCiB7CiAgICAg
aWYgKCFzdGFydCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGRlc2NlbmRh
bnRzID0gZGVzY2VuZGFudHNPZlR5cGU8SFRNTEVsZW1lbnQ+KHN0YXJ0LT5kb2N1bWVudCgpKTsK
LSAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5mcm9tKCpzdGFydCksIGVuZCA9IGRlc2Nl
bmRhbnRzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgSFRNTEVsZW1lbnQmIGVs
ZW1lbnQgPSAqaXQ7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8
SFRNTEVsZW1lbnQ+KHN0YXJ0LT5kb2N1bWVudCgpKSkgewogICAgICAgICBpZiAoaXM8SFRNTEZv
cm1FbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybiAmZG93bmNhc3Q8SFRNTEZv
cm1FbGVtZW50PihlbGVtZW50KTsKICAgICAgICAgaWYgKGlzPEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ+KGVsZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ+KGVsZW1lbnQpLmZvcm0oKTsKICAgICAgICAgaWYgKGlzPEhUTUxGcmFtZUVsZW1l
bnRCYXNlPihlbGVtZW50KSkgewotICAgICAgICAgICAgRG9jdW1lbnQqIGNvbnRlbnREb2N1bWVu
dCA9IGRvd25jYXN0PEhUTUxGcmFtZUVsZW1lbnRCYXNlPihlbGVtZW50KS5jb250ZW50RG9jdW1l
bnQoKTsKLSAgICAgICAgICAgIGlmICghY29udGVudERvY3VtZW50KQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKEhUTUxGb3JtRWxlbWVudCogZnJhbWVSZXN1bHQg
PSBzY2FuRm9yRm9ybShjb250ZW50RG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZnJhbWVSZXN1bHQ7CisgICAgICAgICAgICBpZiAoYXV0byogY29u
dGVudERvY3VtZW50ID0gZG93bmNhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2U+KGVsZW1lbnQpLmNv
bnRlbnREb2N1bWVudCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGZyYW1lUmVzdWx0
ID0gc2NhbkZvckZvcm0oY29udGVudERvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZVJlc3VsdDsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggY2RlOWE3OGM4
ZmU3ZGExMzFlMTFmNDRmNGJiMDkxYzVmZTZmMDJmMy4uMWU3NjBkZTcyMzE2MDlkMDU5Mjk4Mjhm
N2UxM2YzZDIyYmEyNTJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgog
CiAgICAgICAgIFR5cGUgdHlwZSA9IFR5cGU6OkluY2x1ZGU7CiAgICAgICAgIFJlZlB0cjxFbGVt
ZW50PiBtYXRjaGluZ0VsZW1lbnQ7Ci0gICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1l
bnRMaW5lYWdlKHN0YXJ0aW5nRWxlbWVudC5nZXQoKSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBl
bGVtZW50IDogbGluZWFnZU9mVHlwZTxFbGVtZW50Pigqc3RhcnRpbmdFbGVtZW50KSkgewogICAg
ICAgICAgICAgaWYgKGF1dG8gdHlwZU9yTnVsbG9wdCA9IHR5cGVGb3JFbGVtZW50KGVsZW1lbnQp
KSB7CiAgICAgICAgICAgICAgICAgdHlwZSA9ICp0eXBlT3JOdWxsb3B0OwogICAgICAgICAgICAg
ICAgIG1hdGNoaW5nRWxlbWVudCA9ICZlbGVtZW50OwpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQg
OiBlbGVtZW50TGluZWFnZShzdGFydGluZ0VsZW1lbnQuZ2V0KCkpKSB7CisgICAgICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4oKnN0YXJ0aW5nRWxlbWVudCkp
IHsKICAgICAgICAgICAgIG1fY2FjaGUuc2V0KGVsZW1lbnQsIHR5cGUpOwogICAgICAgICAgICAg
aWYgKCZlbGVtZW50ID09IG1hdGNoaW5nRWxlbWVudCkKICAgICAgICAgICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KaW5kZXggMzk0OTZiNjk4ODY2YzRhZWMzZjc3ZDRlNjYwYmU2ZDUwNzk5ZDlkZS4u
ZjdkYTBiZGI1OGE4ZGUwYmYzNjRlYmYzNDk0NDNiMmRlYzgyNDhiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAg
LTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW1wb3J0ICJFZGl0
b3IuaCIKICNpbXBvcnQgIkVkaXRvckNsaWVudC5oIgorI2ltcG9ydCAiRWxlbWVudEl0ZXJhdG9y
LmgiCiAjaW1wb3J0ICJGaWxlLmgiCiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiRnJhbWVM
b2FkZXIuaCIKQEAgLTU4LDcgKzU5LDYgQEAKICNpbXBvcnQgIlNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YS5oIgogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQgIlNvY2tldFByb3ZpZGVyLmgi
Ci0jaW1wb3J0ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbXBvcnQgIlVU
SVV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRl
ZFN0cmluZy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVzb3VyY2VIYW5kbGVy
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggMTU5NTAzNTFkOTA0NzRjN2M3ODhj
MzNlNjdlN2RhODU4ODdmNmQ0Yy4uN2UyMmM1MjJhZGM4ZTIyN2I2MzliY2VlNmRiNDZkMGEzOTI5
M2Q1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNzUsNyArNzUsNiBAQAogI2lu
Y2x1ZGUgIlNvY2tldFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAj
aW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIlZp
c2libGVVbml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaAppbmRleCA3OWY0NzdkNzRmMjI0ZTcxYjQ2
YWJhNDc3ZjZjZGIwZGE4OWRmNDg1Li4wZjA2YzBiM2ExYzlmNjlkN2QxNDFiMGIyMzY0Zjk2YTE5
ZWNmZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oCkBA
IC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29sbGVjdGlvblRy
YXZlcnNhbC5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CkBAIC01MiwxNCArNTEsMTQgQEAg
cHVibGljOgogICAgIH0KIAogICAgIC8vIEZvciBDb2xsZWN0aW9uSW5kZXhDYWNoZTsgZG8gbm90
IHVzZSBlbHNld2hlcmUuCi0gICAgdXNpbmcgQ29sbGVjdGlvblRyYXZlcnNhbEl0ZXJhdG9yID0g
dHlwZW5hbWUgQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6SXRlcmF0b3I7Ci0g
ICAgQ29sbGVjdGlvblRyYXZlcnNhbEl0ZXJhdG9yIGNvbGxlY3Rpb25CZWdpbigpIGNvbnN0IHsg
cmV0dXJuIENvbGxlY3Rpb25UcmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT46OmJlZ2luKGNvbGxlY3Rp
b24oKSwgcm9vdE5vZGUoKSk7IH0KLSAgICBDb2xsZWN0aW9uVHJhdmVyc2FsSXRlcmF0b3IgY29s
bGVjdGlvbkxhc3QoKSBjb25zdCB7IHJldHVybiBDb2xsZWN0aW9uVHJhdmVyc2FsPHRyYXZlcnNh
bFR5cGU+OjpsYXN0KGNvbGxlY3Rpb24oKSwgcm9vdE5vZGUoKSk7IH0KLSAgICBDb2xsZWN0aW9u
VHJhdmVyc2FsSXRlcmF0b3IgY29sbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIENvbGxlY3Rp
b25UcmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT46OmVuZChyb290Tm9kZSgpKTsgfQotICAgIHZvaWQg
Y29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChDb2xsZWN0aW9uVHJhdmVyc2FsSXRlcmF0b3ImIGN1
cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0IHsg
Q29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6dHJhdmVyc2VGb3J3YXJkKGNvbGxl
Y3Rpb24oKSwgY3VycmVudCwgY291bnQsIHRyYXZlcnNlZENvdW50KTsgfQotICAgIHZvaWQgY29s
bGVjdGlvblRyYXZlcnNlQmFja3dhcmQoQ29sbGVjdGlvblRyYXZlcnNhbEl0ZXJhdG9yJiBjdXJy
ZW50LCB1bnNpZ25lZCBjb3VudCkgY29uc3QgeyBDb2xsZWN0aW9uVHJhdmVyc2FsPHRyYXZlcnNh
bFR5cGU+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNvbGxlY3Rpb24oKSwgY3VycmVudCwgY291bnQpOyB9
CisgICAgdXNpbmcgVHJhdmVyc2FsID0gQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBl
PjsKKyAgICB1c2luZyBJdGVyYXRvciA9IHR5cGVuYW1lIFRyYXZlcnNhbDo6SXRlcmF0b3I7Cisg
ICAgYXV0byBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBUcmF2ZXJzYWw6OmJlZ2lu
KGNvbGxlY3Rpb24oKSwgcm9vdE5vZGUoKSk7IH0KKyAgICBhdXRvIGNvbGxlY3Rpb25MYXN0KCkg
Y29uc3QgeyByZXR1cm4gVHJhdmVyc2FsOjpsYXN0KGNvbGxlY3Rpb24oKSwgcm9vdE5vZGUoKSk7
IH0KKyAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoSXRlcmF0b3ImIGN1cnJlbnQs
IHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0IHsgVHJhdmVy
c2FsOjp0cmF2ZXJzZUZvcndhcmQoY29sbGVjdGlvbigpLCBjdXJyZW50LCBjb3VudCwgdHJhdmVy
c2VkQ291bnQpOyB9CisgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChJdGVyYXRv
ciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpIGNvbnN0IHsgVHJhdmVyc2FsOjp0cmF2ZXJzZUJh
Y2t3YXJkKGNvbGxlY3Rpb24oKSwgY3VycmVudCwgY291bnQpOyB9CiAgICAgYm9vbCBjb2xsZWN0
aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCgpIGNvbnN0IHsgcmV0dXJuIHRyYXZlcnNhbFR5cGUgIT0g
Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5OyB9Ci0gICAgdm9pZCB3
aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3QgeyBkb2N1bWVudCgpLnJlZ2lzdGVyQ29sbGVj
dGlvbihjb25zdF9jYXN0PENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3Ms
IHRyYXZlcnNhbFR5cGU+Jj4oKnRoaXMpKTsgfQorICAgIHZvaWQgd2lsbFZhbGlkYXRlSW5kZXhD
YWNoZSgpIGNvbnN0IHsgZG9jdW1lbnQoKS5yZWdpc3RlckNvbGxlY3Rpb24oY29uc3RfY2FzdDxD
YWNoZWRIVE1MQ29sbGVjdGlvbiY+KCp0aGlzKSk7IH0KIAogICAgIHZvaWQgaW52YWxpZGF0ZUNh
Y2hlRm9yRG9jdW1lbnQoRG9jdW1lbnQmKSBvdmVycmlkZTsKIApAQCAtNjksMTkgKzY4LDE5IEBA
IHByaXZhdGU6CiAgICAgSFRNTENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbigpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PEhUTUxDb2xsZWN0aW9uQ2xhc3MmPigqdGhpcyk7IH0KICAgICBjb25zdCBI
VE1MQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgSFRNTENvbGxlY3Rpb25DbGFzcyY+KCp0aGlzKTsgfQogCi0gICAgbXV0YWJsZSBD
b2xsZWN0aW9uSW5kZXhDYWNoZTxIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVy
c2FsSXRlcmF0b3I+IG1faW5kZXhDYWNoZTsKKyAgICBtdXRhYmxlIENvbGxlY3Rpb25JbmRleENh
Y2hlPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIEl0ZXJhdG9yPiBtX2luZGV4Q2FjaGU7CiB9OwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNh
bFR5cGUgdHJhdmVyc2FsVHlwZT4KIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9u
Q2xhc3MsIHRyYXZlcnNhbFR5cGU+OjpDYWNoZWRIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2Rl
JiBiYXNlLCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSkKICAgICA6IEhUTUxDb2xsZWN0
aW9uKGJhc2UsIGNvbGxlY3Rpb25UeXBlKQotICAgICwgbV9pbmRleENhY2hlKGNvbGxlY3Rpb24o
KSkKLXsgfQoreworfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywg
Q29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KIENhY2hlZEhUTUxDb2xsZWN0
aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+Ojp+Q2FjaGVkSFRNTENvbGxl
Y3Rpb24oKQogewotICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9u
KCkpKQorICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZSgpKQogICAgICAgICBkb2N1
bWVudCgpLnVucmVnaXN0ZXJDb2xsZWN0aW9uKCp0aGlzKTsKIH0KIApAQCAtODksOSArODgsOSBA
QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZl
cnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KIHZvaWQgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENv
bGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT46OmludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50
KERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNh
Y2hlRm9yRG9jdW1lbnQoZG9jdW1lbnQpOwotICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRD
YWNoZShjb2xsZWN0aW9uKCkpKSB7CisgICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hl
KCkpIHsKICAgICAgICAgZG9jdW1lbnQudW5yZWdpc3RlckNvbGxlY3Rpb24oKnRoaXMpOwotICAg
ICAgICBtX2luZGV4Q2FjaGUuaW52YWxpZGF0ZShjb2xsZWN0aW9uKCkpOworICAgICAgICBtX2lu
ZGV4Q2FjaGUuaW52YWxpZGF0ZSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9Db2xsZWN0aW9uVHJhdmVyc2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Nv
bGxlY3Rpb25UcmF2ZXJzYWwuaAppbmRleCA2NjgyOTMzOGQwYjFkMWIwY2FiNTExNzdmMDM4NzIw
YzE5MmY3MTk2Li4yYTg4ZjU3ZTFiZDY0YjE2ODE1ODMyYmYwYjA2ZThjNGNhZDA2YWM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UcmF2ZXJzYWwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UcmF2ZXJzYWwuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw4ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbGxlY3Rpb25UeXBlLmgiCi0jaW5jbHVkZSAiRWxl
bWVudENoaWxkSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
LmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMzYsNzYgKzM1LDY0IEBAIHN0cnVjdCBDb2xsZWN0aW9uVHJhdmVyc2FsIHsgfTsKIAog
dGVtcGxhdGUgPD4KIHN0cnVjdCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJz
YWxUeXBlOjpEZXNjZW5kYW50cz4gewotICAgIHVzaW5nIEl0ZXJhdG9yID0gRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjsKLQotICAgIHN0YXRpYyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGVu
ZChDb250YWluZXJOb2RlJikgeyByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcigpOyB9
CisgICAgdXNpbmcgSXRlcmF0b3IgPSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnQ+
OwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBD
b250YWluZXJOb2RlJiByb290Tm9kZSk7CisgICAgc3RhdGljIEl0ZXJhdG9yIGJlZ2luKGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKIAogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IgbGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiBy
b290Tm9kZSk7CisgICAgc3RhdGljIEl0ZXJhdG9yIGxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNz
JiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENv
bGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29s
bGVjdGlvbkNsYXNzJiwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWdu
ZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCk7CisgICAgc3RhdGljIHZvaWQgdHJh
dmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEl0ZXJhdG9yJiBjdXJyZW50LCB1
bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KTsKIAogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIHZvaWQgdHJhdmVyc2VCYWNr
d2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBj
dXJyZW50LCB1bnNpZ25lZCBjb3VudCk7CisgICAgc3RhdGljIHZvaWQgdHJhdmVyc2VCYWNrd2Fy
ZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291
bnQpOwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6YmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBj
b2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK2lubGluZSBhdXRvIENvbGxlY3Rp
b25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6YmVnaW4o
Y29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9k
ZSkgLT4gSXRlcmF0b3IKIHsKLSAgICBhdXRvIGRlc2NlbmRhbnRzID0gZWxlbWVudERlc2NlbmRh
bnRzKHJvb3ROb2RlKTsKLSAgICBhdXRvIGVuZCA9IGRlc2NlbmRhbnRzLmVuZCgpOwotICAgIGZv
ciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBpZiAoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqaXQpKSB7Ci0gICAgICAgICAgICAv
LyBEcm9wIGl0ZXJhdG9yIGFzc2VydGlvbnMgYmVjYXVzZSBIVE1MQ29sbGVjdGlvbnMgLyBOb2Rl
TGlzdCB1c2UgYSBmaW5lLWdyYWluZWQgaW52YWxpZGF0aW9uIHNjaGVtZS4KLSAgICAgICAgICAg
IGl0LmRyb3BBc3NlcnRpb25zKCk7Ci0gICAgICAgICAgICByZXR1cm4gaXQ7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgcmV0dXJuIGVuZDsKKyAgICBhdXRvIGl0ID0gZGVzY2VuZGFudHNPZlR5cGU8
RWxlbWVudD4ocm9vdE5vZGUpLmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICYmICFjb2xsZWN0aW9u
LmVsZW1lbnRNYXRjaGVzKCppdCkpCisgICAgICAgICsraXQ7CisgICAgLy8gRHJvcCBpdGVyYXRv
ciBhc3NlcnRpb25zIGJlY2F1c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmlu
ZS1ncmFpbmVkIGludmFsaWRhdGlvbiBzY2hlbWUuCisgICAgaXQuZHJvcEFzc2VydGlvbnMoKTsK
KyAgICByZXR1cm4gaXQ7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+
Ci1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDb2xsZWN0aW9uVHJhdmVyc2FsPENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46Omxhc3QoY29uc3QgQ29sbGVjdGlv
bkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK2lubGluZSBhdXRv
IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRz
Pjo6bGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlKSAtPiBJdGVyYXRvcgogewotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBlbGVtZW50
RGVzY2VuZGFudHMocm9vdE5vZGUpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgaW52
YWxpZDsKLSAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5sYXN0KCk7IGl0ICE9IGludmFs
aWQ7IC0taXQpIHsKLSAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkg
ewotICAgICAgICAgICAgLy8gRHJvcCBpdGVyYXRvciBhc3NlcnRpb25zIGJlY2F1c2UgSFRNTENv
bGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1ncmFpbmVkIGludmFsaWRhdGlvbiBzY2hl
bWUuCi0gICAgICAgICAgICBpdC5kcm9wQXNzZXJ0aW9ucygpOwotICAgICAgICAgICAgcmV0dXJu
IGl0OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBpbnZhbGlkOworICAgIEl0ZXJhdG9y
IGl0IHsgcm9vdE5vZGUsIEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RXaXRoaW4ocm9vdE5vZGUpIH07
CisgICAgd2hpbGUgKGl0ICYmICFjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCppdCkpCisgICAg
ICAgIC0taXQ7CisgICAgLy8gRHJvcCBpdGVyYXRvciBhc3NlcnRpb25zIGJlY2F1c2UgSFRNTENv
bGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1ncmFpbmVkIGludmFsaWRhdGlvbiBzY2hl
bWUuCisgICAgaXQuZHJvcEFzc2VydGlvbnMoKTsKKyAgICByZXR1cm4gaXQ7CiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci1pbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJh
dmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNlRm9y
d2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291
bnQpCitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxU
eXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3Mm
IGNvbGxlY3Rpb24sIEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQm
IHRyYXZlcnNlZENvdW50KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVz
KCpjdXJyZW50KSk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBpbnZhbGlkOwogICAg
IGZvciAodHJhdmVyc2VkQ291bnQgPSAwOyB0cmF2ZXJzZWRDb3VudCA8IGNvdW50OyArK3RyYXZl
cnNlZENvdW50KSB7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgICsrY3VycmVudDsKLSAgICAg
ICAgICAgIGlmIChjdXJyZW50ID09IGludmFsaWQpCisgICAgICAgICAgICBpZiAoIWN1cnJlbnQp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IHdoaWxlICghY29sbGVjdGlvbi5l
bGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwogICAgIH0KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVj
dGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VCYWNrd2FyZChjb25zdCBD
b2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1
cnJlbnQsIHVuc2lnbmVkIGNvdW50KQoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxD
b2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNv
bnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2ln
bmVkIGNvdW50KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJy
ZW50KSk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBpbnZhbGlkOwogICAgIGZvciAo
OyBjb3VudDsgLS1jb3VudCkgewogICAgICAgICBkbyB7CiAgICAgICAgICAgICAtLWN1cnJlbnQ7
Ci0gICAgICAgICAgICBpZiAoY3VycmVudCA9PSBpbnZhbGlkKQorICAgICAgICAgICAgaWYgKCFj
dXJyZW50KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSB3aGlsZSAoIWNvbGxl
Y3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKICAgICB9CkBAIC0xMTUsNzUgKzEwMiw2
MiBAQCB0ZW1wbGF0ZSA8Pgogc3RydWN0IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT4gewogICAgIHVzaW5nIEl0ZXJhdG9yID0gRWxlbWVu
dENoaWxkSXRlcmF0b3I8RWxlbWVudD47CiAKLSAgICBzdGF0aWMgRWxlbWVudENoaWxkSXRlcmF0
b3I8RWxlbWVudD4gZW5kKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSB7IHJldHVybiBFbGVtZW50
Q2hpbGRJdGVyYXRvcjxFbGVtZW50Pihyb290Tm9kZSk7IH0KLQogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVs
ZW1lbnQ+IGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlKTsKKyAgICBzdGF0aWMgSXRlcmF0b3IgYmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwg
Q29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxl
Y3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gbGFz
dChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CisgICAg
c3RhdGljIEl0ZXJhdG9yIGxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9k
ZSYgcm9vdE5vZGUpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4K
LSAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwg
RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1
bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpOworICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlRm9yd2Fy
ZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291
bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q29sbGVjdGlvbkNsYXNzPgotICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlQmFja3dhcmQoY29uc3Qg
Q29sbGVjdGlvbkNsYXNzJiwgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQs
IHVuc2lnbmVkIGNvdW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYsIEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCk7CiB9
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5lIEVsZW1lbnRD
aGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZl
cnNhbFR5cGU6OkNoaWxkcmVuT25seT46OmJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29s
bGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpCitpbmxpbmUgYXV0byBDb2xsZWN0aW9u
VHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+OjpiZWdpbihj
b25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2Rl
KSAtPiBJdGVyYXRvcgogewotICAgIGF1dG8gY2hpbGRyZW4gPSBjaGlsZHJlbk9mVHlwZTxFbGVt
ZW50Pihyb290Tm9kZSk7Ci0gICAgYXV0byBlbmQgPSBjaGlsZHJlbi5lbmQoKTsKLSAgICBmb3Ig
KGF1dG8gaXQgPSBjaGlsZHJlbi5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAg
aWYgKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkgewotICAgICAgICAgICAgLy8gRHJv
cCBpdGVyYXRvciBhc3NlcnRpb25zIGJlY2F1c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3Qg
dXNlIGEgZmluZS1ncmFpbmVkIGludmFsaWRhdGlvbiBzY2hlbWUuCi0gICAgICAgICAgICBpdC5k
cm9wQXNzZXJ0aW9ucygpOwotICAgICAgICAgICAgcmV0dXJuIGl0OwotICAgICAgICB9Ci0gICAg
fQotICAgIHJldHVybiBlbmQ7CisgICAgYXV0byBpdCA9IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+
KHJvb3ROb2RlKS5iZWdpbigpOworICAgIHdoaWxlIChpdCAmJiAhY29sbGVjdGlvbi5lbGVtZW50
TWF0Y2hlcygqaXQpKQorICAgICAgICArK2l0OworICAgIC8vIERyb3AgaXRlcmF0b3IgYXNzZXJ0
aW9ucyBiZWNhdXNlIEhUTUxDb2xsZWN0aW9ucyAvIE5vZGVMaXN0IHVzZSBhIGZpbmUtZ3JhaW5l
ZCBpbnZhbGlkYXRpb24gc2NoZW1lLgorICAgIGl0LmRyb3BBc3NlcnRpb25zKCk7CisgICAgcmV0
dXJuIGl0OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5l
IEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVj
dGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46Omxhc3QoY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK2lubGluZSBhdXRvIENv
bGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46
Omxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiBy
b290Tm9kZSkgLT4gSXRlcmF0b3IKIHsKLSAgICBhdXRvIGNoaWxkcmVuID0gY2hpbGRyZW5PZlR5
cGU8RWxlbWVudD4ocm9vdE5vZGUpOwotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+
IGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKLSAgICBFbGVtZW50Q2hpbGRJdGVyYXRv
cjxFbGVtZW50PiBsYXN0KHJvb3ROb2RlLCBjaGlsZHJlbi5sYXN0KCkpOwotICAgIGZvciAoYXV0
byBpdCA9IGxhc3Q7IGl0ICE9IGludmFsaWQ7IC0taXQpIHsKLSAgICAgICAgaWYgKGNvbGxlY3Rp
b24uZWxlbWVudE1hdGNoZXMoKml0KSkgewotICAgICAgICAgICAgLy8gRHJvcCBpdGVyYXRvciBh
c3NlcnRpb25zIGJlY2F1c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1n
cmFpbmVkIGludmFsaWRhdGlvbiBzY2hlbWUuCi0gICAgICAgICAgICBpdC5kcm9wQXNzZXJ0aW9u
cygpOwotICAgICAgICAgICAgcmV0dXJuIGl0OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVy
biBpbnZhbGlkOworICAgIGF1dG8gaXQgPSBjaGlsZHJlbk9mVHlwZTxFbGVtZW50Pihyb290Tm9k
ZSkuYmVnaW4oKTsKKyAgICB3aGlsZSAoaXQgJiYgIWNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMo
Kml0KSkKKyAgICAgICAgLS1pdDsKKyAgICAvLyBEcm9wIGl0ZXJhdG9yIGFzc2VydGlvbnMgYmVj
YXVzZSBIVE1MQ29sbGVjdGlvbnMgLyBOb2RlTGlzdCB1c2UgYSBmaW5lLWdyYWluZWQgaW52YWxp
ZGF0aW9uIHNjaGVtZS4KKyAgICBpdC5kcm9wQXNzZXJ0aW9ucygpOworICAgIHJldHVybiBpdDsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSB2b2lkIENv
bGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46
OnRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWdu
ZWQmIHRyYXZlcnNlZENvdW50KQoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xs
ZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVk
IGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpCiB7CiAgICAgQVNTRVJUKGNvbGxlY3Rp
b24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxF
bGVtZW50PiBpbnZhbGlkKGNvbGxlY3Rpb24ucm9vdE5vZGUoKSk7CiAgICAgZm9yICh0cmF2ZXJz
ZWRDb3VudCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsK
ICAgICAgICAgZG8gewogICAgICAgICAgICAgKytjdXJyZW50OwotICAgICAgICAgICAgaWYgKGN1
cnJlbnQgPT0gaW52YWxpZCkKKyAgICAgICAgICAgIGlmICghY3VycmVudCkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0gd2hpbGUgKCFjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVz
KCpjdXJyZW50KSk7CiAgICAgfQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNs
YXNzPgotaW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2Fs
VHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6dHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xh
c3MmIGNvbGxlY3Rpb24sIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1
bnNpZ25lZCBjb3VudCkKK2lubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlv
blRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46OnRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29s
bGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291
bnQpCiB7CiAgICAgQVNTRVJUKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsK
LSAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBpbnZhbGlkKGNvbGxlY3Rpb24ucm9v
dE5vZGUoKSk7CiAgICAgZm9yICg7IGNvdW50OyAtLWNvdW50KSB7CiAgICAgICAgIGRvIHsKICAg
ICAgICAgICAgIC0tY3VycmVudDsKLSAgICAgICAgICAgIGlmIChjdXJyZW50ID09IGludmFsaWQp
CisgICAgICAgICAgICBpZiAoIWN1cnJlbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9IHdoaWxlICghY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwogICAg
IH0KQEAgLTE5Myw3ICsxNjcsNyBAQCB0ZW1wbGF0ZSA8Pgogc3RydWN0IENvbGxlY3Rpb25UcmF2
ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5PiB7CiAgICAg
dXNpbmcgSXRlcmF0b3IgPSBFbGVtZW50KjsKIAotICAgIHN0YXRpYyBFbGVtZW50KiBlbmQoQ29u
dGFpbmVyTm9kZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEVs
ZW1lbnQqIGVuZChDb250YWluZXJOb2RlJikgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KICAgICBzdGF0aWMgRWxlbWVudCogYmVn
aW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCBiOTQ5YTY5MWY2MGZkYzk5YzJkN2Y2N2ZkZjhi
Nzc1Mzg1OGUzOTI4Li43ZmYzMmU1OTk3ZTcwNmQ1NzliOTliMGMzZjI3ZmQ1ZWZiYmQyMmI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM4LDcgKzM4LDYg
QEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiSFRNTERhdGFMaXN0RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxEaXZFbGVtZW50LmgiCkBAIC0yODcsMTMgKzI4Niw5IEBAIFZlY3RvcjxDb2xvcj4g
Q29sb3JJbnB1dFR5cGU6OnN1Z2dlc3RlZENvbG9ycygpIGNvbnN0CiAjaWYgRU5BQkxFKERBVEFM
SVNUX0VMRU1FTlQpCiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgaWYgKGF1dG8gZGF0YUxp
c3QgPSBlbGVtZW50KCktPmRhdGFMaXN0KCkpIHsKLSAgICAgICAgUmVmPEhUTUxDb2xsZWN0aW9u
PiBvcHRpb25zID0gZGF0YUxpc3QtPm9wdGlvbnMoKTsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gb3B0aW9ucy0+bGVuZ3RoKCk7Ci0gICAgICAgIHN1Z2dlc3Rpb25zLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkobGVuZ3RoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBsZW5n
dGg7ICsraSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGRvd25jYXN0PEhUTUxPcHRpb25F
bGVtZW50Pigqb3B0aW9ucy0+aXRlbShpKSkudmFsdWUoKTsKLSAgICAgICAgICAgIGlmIChpc1Zh
bGlkU2ltcGxlQ29sb3IodmFsdWUpKQotICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zLnVuY2hl
Y2tlZEFwcGVuZChDb2xvcih2YWx1ZSkpOworICAgICAgICBmb3IgKGF1dG8mIG9wdGlvbiA6IGRh
dGFMaXN0LT5zdWdnZXN0aW9ucygpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBjb2xvciA9IHBh
cnNlU2ltcGxlQ29sb3JWYWx1ZShvcHRpb24udmFsdWUoKSkpCisgICAgICAgICAgICAgICAgc3Vn
Z2VzdGlvbnMudW5jaGVja2VkQXBwZW5kKCpjb2xvcik7CiAgICAgICAgIH0KICAgICB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xs
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0
aW9uLmNwcAppbmRleCAzODM4ZjFiZDdlNGU2N2Y1NTcwNWUxMDBiM2Q2OTczZDAzODkzZTUwLi45
Y2IzYTY3MDIzNzJjZDRiZDJiZmQ5ZWUzYmE4OWZiY2E3YzhmZmFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKIAogI2luY2x1
ZGUgIkhUTUxBcHBsZXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTERhdGFMaXN0RWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgpAQCAtNjQsMTIgKzY1LDcgQEAgYm9v
bCBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248dHJhdmVyc2FsVHlwZT46OmVsZW1lbnRNYXRj
aGVzKEVsZW1lbnQmIGVsZW1lbnQKICAgICBjYXNlIFNlbGVjdGVkT3B0aW9uczoKICAgICAgICAg
cmV0dXJuIGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT3B0
aW9uRWxlbWVudD4oZWxlbWVudCkuc2VsZWN0ZWQoKTsKICAgICBjYXNlIERhdGFMaXN0T3B0aW9u
czoKLSAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSkgewotICAgICAg
ICAgICAgSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbiA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVt
ZW50PihlbGVtZW50KTsKLSAgICAgICAgICAgIGlmICghb3B0aW9uLmlzRGlzYWJsZWRGb3JtQ29u
dHJvbCgpICYmICFvcHRpb24udmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpOwogICAgIGNhc2UgTWFwQXJlYXM6CiAg
ICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoYXJlYVRhZyk7CiAgICAgY2FzZSBEb2NB
cHBsZXRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oCmluZGV4IDEzNTg0
MTZmZTM4OTJhOTk4ODVhNmY5ZjQwNDljZGUxZDlkMzdkMGIuLmY2ZWQzMzdjNWI3YWIxMjVlZGM0
Nzg4OWFlMzlmMTNjYzUzNGY2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFsbENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0
aW9uLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEhUTUxBbGxO
YW1lZFN1YkNvbGxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQotICAgICAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9u
PEhUTUxBbGxOYW1lZFN1YkNvbGxlY3Rpb24sIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNj
ZW5kYW50cz4oZG9jdW1lbnQsIHR5cGUpCisgICAgICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb24o
ZG9jdW1lbnQsIHR5cGUpCiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgewogICAgICAgICBB
U1NFUlQodHlwZSA9PSBEb2N1bWVudEFsbE5hbWVkSXRlbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbGxDb2xsZWN0aW9uLmlkbAppbmRleCA4ZmNiNjhjNjgwMDA4MzcyM2E1ODU4ZjBjZTZk
YmFhYjQ3NTM5YzNjLi5lNWIxMTkyZTQ5Mjg4NzEzZjMzMjFiY2EwYTdjMjhhNjc4MWFhYTk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmlkbApAQCAtMzEsNiArMzEs
NiBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKIAogICAg
IGdldHRlciBFbGVtZW50PyAodW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW0ltcGxlbWVudGVk
QXM9bmFtZWRJdGVtT3JJdGVtc10gZ2V0dGVyIChIVE1MQ29sbGVjdGlvbiBvciBFbGVtZW50KT8g
bmFtZWRJdGVtKERPTVN0cmluZyBuYW1lKTsKLSAgICBbSW1wbGVtZW50ZWRBcz1uYW1lZE9ySW5k
ZXhlZEl0ZW1Pckl0ZW1zXSBsZWdhY3ljYWxsZXIgKEhUTUxDb2xsZWN0aW9uIG9yIEVsZW1lbnQp
PyBpdGVtKG9wdGlvbmFsIERPTVN0cmluZyBuYW1lT3JJbmRleCk7CisgICAgW0ltcGxlbWVudGVk
QXM9bmFtZWRJdGVtT3JJdGVtc10gZ2V0dGVyIChIVE1MQ29sbGVjdGlvbiBvciBFbGVtZW50KT8g
bmFtZWRJdGVtKFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gRE9NU3RyaW5nIG5hbWUpOwor
ICAgIFtJbXBsZW1lbnRlZEFzPW5hbWVkT3JJbmRleGVkSXRlbU9ySXRlbXNdIGxlZ2FjeWNhbGxl
ciAoSFRNTENvbGxlY3Rpb24gb3IgRWxlbWVudCk/IGl0ZW0ob3B0aW9uYWwgW0F0b21TdHJpbmdd
IERPTVN0cmluZyBuYW1lT3JJbmRleCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ29sbGVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0
aW9uLmlkbAppbmRleCA2ZGZhZThiZDg5NGFjZGMyZDI2MDU1NjYyNmI0YzczYmRiMWM5YTViLi5j
NDUyZDg5ZWM5YmIwZTA3ZWIzZTQyMzEyM2JmMzIxNzIwOTU2NDA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDb2xsZWN0aW9uLmlkbApAQCAtMjcsNSArMjcsNSBAQAogXSBpbnRlcmZhY2UgSFRN
TENvbGxlY3Rpb24gewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0
aDsKICAgICBnZXR0ZXIgRWxlbWVudD8gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBn
ZXR0ZXIgRWxlbWVudD8gbmFtZWRJdGVtKERPTVN0cmluZyBuYW1lKTsKKyAgICBnZXR0ZXIgRWxl
bWVudD8gbmFtZWRJdGVtKFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gRE9NU3RyaW5nIG5h
bWUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwCmlu
ZGV4IGJlYzg3YjM2ZDM4MTQwZTJjMmNlYzEyZDRhMGJkYmYzODU0ODhhMTkuLjgyNmMyYzU0OTM1
MmU1NTdhNWJiODk1NGY3NmE2MWYwNTJmOTc1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRGF0YUxpc3RFbGVtZW50LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNyw2ICszNyw3IEBACiAKICNpbmNsdWRlICJHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNs
dWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIklkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeS5oIgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CkBAIC02NSw2ICs2NiwxMSBAQCB2b2lkIEhUTUxEYXRhTGlzdEVsZW1lbnQ6
Om9wdGlvbkVsZW1lbnRDaGlsZHJlbkNoYW5nZWQoKQogICAgIHRyZWVTY29wZSgpLmlkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeSgpLm5vdGlmeU9ic2VydmVycyhnZXRJZEF0dHJpYnV0ZSgpKTsKIH0K
IAorYm9vbCBIVE1MRGF0YUxpc3RFbGVtZW50Ojppc1N1Z2dlc3Rpb24oY29uc3QgSFRNTE9wdGlv
bkVsZW1lbnQmIGRlc2NlbmRhbnQpCit7CisgICAgcmV0dXJuICFkZXNjZW5kYW50LmlzRGlzYWJs
ZWRGb3JtQ29udHJvbCgpICYmICFkZXNjZW5kYW50LnZhbHVlKCkuaXNFbXB0eSgpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoREFUQUxJU1RfRUxFTUVO
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmgKaW5kZXggOGY3MWZh
NWM5MTFjOWI1MGIyYjgxMGQ4NTdmN2FjM2NmMmNjZWMwMS4uN2NmNTcxZTI5YTY3MGNkZjBjZDZk
ZTU1Mzc1M2I3ZWE5NTJkODY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RGF0YUxpc3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RF
bGVtZW50LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTMzLDExICszMywxMyBAQAogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1F
TlQpCiAKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgSFRNTENvbGxlY3Rpb247CisKIGNsYXNzIEhUTUxEYXRhTGlzdEVsZW1lbnQgZmlu
YWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRN
TERhdGFMaXN0RWxlbWVudCk7CiBwdWJsaWM6CkBAIC00Nyw2ICs0OSw5IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgb3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOwogCisgICAgc3RhdGljIGJv
b2wgaXNTdWdnZXN0aW9uKGNvbnN0IEhUTUxPcHRpb25FbGVtZW50JiBkZXNjZW5kYW50KTsKKyAg
ICBhdXRvIHN1Z2dlc3Rpb25zKCkgY29uc3QgeyByZXR1cm4gZGVzY2VuZGFudHNPZlR5cGU8SFRN
TE9wdGlvbkVsZW1lbnQsIGlzU3VnZ2VzdGlvbj4oKnRoaXMpOyB9CisKIHByaXZhdGU6CiAgICAg
SFRNTERhdGFMaXN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDY4Y2Y1NTNhYjQ5MGFlNGRmMDdj
N2RmYjYyYjdkZGQwNjY5MDYwZWEuLjMyZWQ0YWQzMWJkMzBlY2Y0Y2NjNDhmYjE0MjQ0YTMyMzI0
ZTA0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICog
ICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICog
Q29weXJpZ2h0IChDKSAyMDA0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgTW90b3JvbGEgTW9iaWxpdHkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDQsNyAr
NDQsNiBAQAogI2luY2x1ZGUgIkhUTUxCRElFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJSRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxCdXR0b25FbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENv
bGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxl
bWVudEZhY3RvcnkuaCIKICNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCkBAIC02MCw2
ICs1OSw3IEBACiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlJlbmRlckVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2NyaXB0
RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlNp
bXVsYXRlZENsaWNrLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCkBAIC03NjcsMTQg
Kzc2NywxNiBAQCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIEhUTUxFbGVtZW50Ojphc0Zvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
Ym9vbCBlbGVtZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5KGNvbnN0IE5vZGUmIG5vZGUpCitzdGF0
aWMgYm9vbCBlbGVtZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5KGNvbnN0IEhUTUxFbGVtZW50JiBl
bGVtZW50KQogewotICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KG5vZGUpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1M
RWxlbWVudD4obm9kZSk7CiAgICAgcmV0dXJuIGlzPEhUTUxCRElFbGVtZW50PihlbGVtZW50KSB8
fCBlbGVtZW50Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGlyQXR0cik7CiB9
CiAKK3N0YXRpYyBib29sIGVsZW1lbnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkoY29uc3QgTm9kZSYg
bm9kZSkKK3sKKyAgICByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGVsZW1lbnRBZmZl
Y3RzRGlyZWN0aW9uYWxpdHkoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG5vZGUpKTsKK30KKwogc3Rh
dGljIHZvaWQgc2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVseShOb2RlKiBmaXJzdE5vZGUsIGJv
b2wgZmxhZywgTm9kZSogbGFzdE5vZGUgPSBudWxscHRyKQogewogICAgIGZpcnN0Tm9kZS0+c2V0
U2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKGZsYWcpOwpAQCAtODg1LDEwICs4ODcs
MTAgQEAgdm9pZCBIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVy
Q2hpbGRBdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnQKICAgICBzZXRIYXNEaXJBdXRvRmxhZ1JlY3Vy
c2l2ZWx5KGNoaWxkLCBmYWxzZSk7CiAgICAgaWYgKCFyZW5kZXJlcigpIHx8IHJlbmRlcmVyKCkt
PnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gdGV4dERpcmVjdGlvbikKICAgICAgICAgcmV0dXJuOwot
ICAgIGZvciAoYXV0byYgZWxlbWVudFRvQWRqdXN0IDogZWxlbWVudExpbmVhZ2UodGhpcykpIHsK
LSAgICAgICAgaWYgKGVsZW1lbnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkoZWxlbWVudFRvQWRqdXN0
KSkgewotICAgICAgICAgICAgZWxlbWVudFRvQWRqdXN0LmludmFsaWRhdGVTdHlsZUZvclN1YnRy
ZWUoKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBsaW5l
YWdlT2ZUeXBlPEhUTUxFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKGVsZW1lbnRBZmZl
Y3RzRGlyZWN0aW9uYWxpdHkoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGVsZW1lbnQuaW52YWxp
ZGF0ZVN0eWxlRm9yU3VidHJlZSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggMzk1ZGIxZTYyZWVkZDFkOTAw
ZTllN2MzZWM4ODhjYjAwY2IyYTRhMy4uN2UwNzRlYjYxMjg5NzYyODkwZTExZTgxYWZjZDZhMDkz
ZTdmZGQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtMjIsMTkgKzIyLDE3IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiSW5wdXRNb2RlLmgiCisjaW5jbHVkZSAiU3R5
bGVkRWxlbWVudC5oIgorCiAjaWYgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKQogI2luY2x1ZGUgIkF1
dG9jYXBpdGFsaXplLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgIklucHV0TW9kZS5oIgotI2luY2x1
ZGUgIlN0eWxlZEVsZW1lbnQuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEb2N1
bWVudEZyYWdtZW50OwogY2xhc3MgRm9ybUFzc29jaWF0ZWRFbGVtZW50OwogY2xhc3MgRm9ybU5h
bWVkSXRlbTsKLWNsYXNzIEhUTUxDb2xsZWN0aW9uOwogY2xhc3MgSFRNTEZvcm1FbGVtZW50Owog
CiBlbnVtIGNsYXNzIEVudGVyS2V5SGludCA6IHVpbnQ4X3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCA4Y2RmOTAzMDlmNzBiNGRmMjc1NDg1OWJjZjM0NTI0
ZTAyMTVjOWFmLi4zYmJjZTA4NzdhZDBhNDc0MzhjYzRiZjdiNjBjZTcyOGU1OGNlYzJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAg
KiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAg
ICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAg
ICAgICAoQykgMjAwMCBTdGVmYW4gU2NoaW1hbnNraSAoMVN0ZWluQGdteC5kZSkKLSAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNjYsMTUg
KzY2LDEwIEBAIFJlZjxIVE1MRW1iZWRFbGVtZW50PiBIVE1MRW1iZWRFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50KQogCiBzdGF0aWMgaW5saW5lIFJlbmRlcldpZGdldCogZmluZFdp
ZGdldFJlbmRlcmVyKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKCFub2RlLT5yZW5kZXJl
cigpKSB7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2Rl
KCk7Ci0gICAgICAgIH0gd2hpbGUgKG5vZGUgJiYgIWlzPEhUTUxPYmplY3RFbGVtZW50Pigqbm9k
ZSkpOwotICAgIH0KLQorICAgIGlmICghbm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgbm9kZSA9
IGFuY2VzdG9yc09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oKm5vZGUpLmZpcnN0KCk7CiAgICAg
aWYgKG5vZGUgJiYgaXM8UmVuZGVyV2lkZ2V0Pihub2RlLT5yZW5kZXJlcigpKSkKICAgICAgICAg
cmV0dXJuIGRvd25jYXN0PFJlbmRlcldpZGdldD4obm9kZS0+cmVuZGVyZXIoKSk7Ci0KICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5jcHAKaW5kZXggZDYxMWJjMWIyMjUxZmY4ZjA4ODQ0ZjY4ZDQyNGZiOWRjOTY2
ODJmNC4uZmQ3N2Q3YmEwNDNlOWE3Y2Q3MmZmOTZlODU2OGZiOWVjOTgzZjdjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0yLDcgKzIs
NyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAg
KiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAg
KiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29t
KQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJI
VE1MRGF0YUxpc3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQu
aCIKQEAgLTQxMiwxNCArNDEzLDEyIEBAIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6bWF0
Y2hlc0ludmFsaWRQc2V1ZG9DbGFzcygpIGNvbnN0CiBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OmNvbXB1dGVXaWxsVmFsaWRhdGUoKSBjb25zdAogewogICAgIGlmIChtX2RhdGFMaXN0QW5j
ZXN0b3JTdGF0ZSA9PSBVbmtub3duKSB7Ci0gICAgICAgIGZvciAoQ29udGFpbmVyTm9kZSogYW5j
ZXN0b3IgPSBwYXJlbnROb2RlKCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJl
bnROb2RlKCkpIHsKLSAgICAgICAgICAgIGlmIChhbmNlc3Rvci0+aGFzVGFnTmFtZShkYXRhbGlz
dFRhZykpIHsKLSAgICAgICAgICAgICAgICBtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9IEluc2lk
ZURhdGFMaXN0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGlmIChtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9PSBVbmtub3duKQotICAg
ICAgICAgICAgbV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUgPSBOb3RJbnNpZGVEYXRhTGlzdDsKKyNp
ZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICAgICAgbV9kYXRhTGlzdEFuY2VzdG9yU3Rh
dGUgPSBhbmNlc3RvcnNPZlR5cGU8SFRNTERhdGFMaXN0RWxlbWVudD4oKnRoaXMpLmZpcnN0KCkK
KyAgICAgICAgICAgID8gSW5zaWRlRGF0YUxpc3QgOiBOb3RJbnNpZGVEYXRhTGlzdDsKKyNlbHNl
CisgICAgICAgIG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlID0gTm90SW5zaWRlRGF0YUxpc3Q7Cisj
ZW5kaWYKICAgICB9CiAgICAgcmV0dXJuIG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlID09IE5vdElu
c2lkZURhdGFMaXN0ICYmICFpc0Rpc2FibGVkT3JSZWFkT25seSgpOwogfQpAQCAtNjQ1LDE1ICs2
NDQsNiBAQCBBdXRvY2FwaXRhbGl6ZVR5cGUgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXV0b2Nh
cGl0YWxpemVUeXBlKCkgY29uc3QKIAogI2VuZGlmCiAKLUhUTUxGb3JtQ29udHJvbEVsZW1lbnQq
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmVuY2xvc2luZ0Zvcm1Db250cm9sRWxlbWVudChOb2Rl
KiBub2RlKQotewotICAgIGZvciAoOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7
Ci0gICAgICAgIGlmIChpczxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Pigqbm9kZSkpCi0gICAgICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudD4obm9kZSk7Ci0gICAg
fQotICAgIHJldHVybiBudWxscHRyOwotfQotCiBTdHJpbmcgSFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6YXV0b2NvbXBsZXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gYXV0b2ZpbGxEYXRhKCkuaWRs
RXhwb3NlZFZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuaAppbmRleCA2MTM0MGJmYTczYTNhOTY2YmE2MzdhZDQ0ZjU2Y2JkOGZjZmM5NmYwLi4zYWRi
MzExYzdhNjFkNzhkODBiOTkwYTE1NjllNjgxZDBmNjUzMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMTE2LDggKzExNiw2IEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc0F1dG9mb2N1c2VkKCkgeyByZXR1cm4gbV9oYXNBdXRvZm9jdXNlZDsg
fQogICAgIHZvaWQgc2V0QXV0b2ZvY3VzZWQoKSB7IG1faGFzQXV0b2ZvY3VzZWQgPSB0cnVlOyB9
CiAKLSAgICBzdGF0aWMgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZW5jbG9zaW5nRm9ybUNvbnRy
b2xFbGVtZW50KE5vZGUqKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdXRvY29tcGxl
dGUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1dG9jb21wbGV0ZShjb25z
dCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmNwcAppbmRleCBhMmIwMGU4ZjgxNmRhMWMyMjFiMWMzNjZlYTZlNjg5YzNi
MWM2OGI5Li44NGExY2I3OWUzNjAxNDNlYzNkNDgyOWM2NTc1NzhjODI4MzdkMGU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcApA
QCAtNDAsNyArNDAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKTsKIAogSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb246OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKENvbnRhaW5lck5v
ZGUmIG93bmVyTm9kZSkKLSAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxGb3JtQ29udHJvbHM+Ojp0cmF2ZXJz
YWxUeXBlPihvd25lck5vZGUsIEZvcm1Db250cm9scykKKyAgICA6IENhY2hlZEhUTUxDb2xsZWN0
aW9uKG93bmVyTm9kZSwgRm9ybUNvbnRyb2xzKQogICAgICwgbV9jYWNoZWRFbGVtZW50KG51bGxw
dHIpCiAgICAgLCBtX2NhY2hlZEVsZW1lbnRPZmZzZXRJbkFycmF5KDApCiB7CkBAIC0xMTEsNyAr
MTExLDcgQEAgSFRNTEVsZW1lbnQqIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpjdXN0b21F
bGVtZW50QWZ0ZXIoRWxlbWVudCogY3VycmVudCkgY28KIAogSFRNTEZvcm1FbGVtZW50JiBIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6b3duZXJOb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
ZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50PihDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8Rm9ybUNvbnRyb2xzPjo6dHJh
dmVyc2FsVHlwZT46Om93bmVyTm9kZSgpKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEZvcm1F
bGVtZW50PihDYWNoZWRIVE1MQ29sbGVjdGlvbjo6b3duZXJOb2RlKCkpOwogfQogCiB2b2lkIEhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0
CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBk
YXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdAogCiB2b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiB7
Ci0gICAgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24sIENv
bGxlY3Rpb25UeXBlVHJhaXRzPEZvcm1Db250cm9scz46OnRyYXZlcnNhbFR5cGU+OjppbnZhbGlk
YXRlQ2FjaGVGb3JEb2N1bWVudChkb2N1bWVudCk7CisgICAgQ2FjaGVkSFRNTENvbGxlY3Rpb246
OmludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50KGRvY3VtZW50KTsKICAgICBtX2NhY2hlZEVsZW1l
bnQgPSBudWxscHRyOwogICAgIG1fY2FjaGVkRWxlbWVudE9mZnNldEluQXJyYXkgPSAwOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCmlu
ZGV4IDc3NGU1NGY1NjVjYTAxNDlkNGJjNjE4OWU2ZGYzZTYwZDA3OTNiMzEuLjkwMjczMGVmNTM2
NmY1OTFjNDhiNmU1OTMwMzFjYzE2Yzc5N2RmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0
ZToKIAogaW5saW5lIEhUTUxFbGVtZW50KiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6aXRl
bSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxFbGVt
ZW50PihDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiwgQ29s
bGVjdGlvblR5cGVUcmFpdHM8Rm9ybUNvbnRyb2xzPjo6dHJhdmVyc2FsVHlwZT46Oml0ZW0ob2Zm
c2V0KSk7CisgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxFbGVtZW50PihDYWNoZWRIVE1MQ29sbGVj
dGlvbjo6aXRlbShvZmZzZXQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbAppbmRl
eCA0M2M4MzU5OThiNDAwNTllMzMyN2NlNmQ1OWUwZjgyZTZmZGQxODIzLi40ZDgxZmZkMDM0NTc0
NzdjYmEyNGQyZDMzZGJiOTMxYjQ4YjM1ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbApAQCAtMjIsNSArMjIsNSBAQAogICAg
IEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbE93bmVyTm9kZVJvb3QsCiBdIGludGVyZmFjZSBIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbiA6IEhUTUxDb2xsZWN0aW9uIHsKICAgICBnZXR0ZXIgSFRN
TEVsZW1lbnQ/ICh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbSW1wbGVtZW50ZWRBcz1uYW1l
ZEl0ZW1Pckl0ZW1zXSBnZXR0ZXIgKFJhZGlvTm9kZUxpc3Qgb3IgRWxlbWVudCk/IG5hbWVkSXRl
bShET01TdHJpbmcgbmFtZSk7IC8vIHNoYWRvd3MgaW5oZXJpdGVkIG5hbWVkSXRlbSgpCisgICAg
W0ltcGxlbWVudGVkQXM9bmFtZWRJdGVtT3JJdGVtc10gZ2V0dGVyIChSYWRpb05vZGVMaXN0IG9y
IEVsZW1lbnQpPyBuYW1lZEl0ZW0oW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBET01TdHJp
bmcgbmFtZSk7IC8vIHNoYWRvd3MgaW5oZXJpdGVkIG5hbWVkSXRlbSgpCiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IGU3ZTQxNGM4N2RjMjQ4OGM1ODY2ZTM1
ZjJiZWZkMzcxYmVjOWIxNjAuLjJkMDkzZWZjMDc5YjgyZWUxN2ZjZjRkZDBjOWZhYjNmOTczYmM3
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTUwOSwxNCAr
NTA5LDEzIEBAIHVuc2lnbmVkIEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleChGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQqIGFzc29jaWF0ZWRFbGVtCiAgICAgaWYgKCFhc3NvY2lhdGVkSFRN
TEVsZW1lbnQuaXNEZXNjZW5kYW50T2YoKnRoaXMpKQogICAgICAgICByZXR1cm4gY3VycmVudEFz
c29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXg7CiAKKyAgICBhdXRvIGRlc2NlbmRhbnRzID0gZGVz
Y2VuZGFudHNPZlR5cGU8SFRNTEVsZW1lbnQ+KCp0aGlzKTsKKwogICAgIC8vIENoZWNrIGZvciB0
aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoaXMgZWxlbWVudCBpcyB0aGUgdmVyeSBsYXN0IHRoaW5n
IGluCiAgICAgLy8gdGhlIGZvcm0ncyB0cmVlIG9mIGNoaWxkcmVuOyB3ZSBkb24ndCB3YW50IHRv
IHdhbGsgdGhlIGVudGlyZSB0cmVlIGluIHRoYXQKICAgICAvLyBjb21tb24gY2FzZSB0aGF0IG9j
Y3VycyBkdXJpbmcgcGFyc2luZzsgaW5zdGVhZCB3ZSdsbCBqdXN0IHJldHVybiBhIHZhbHVlCiAg
ICAgLy8gdGhhdCBzYXlzICJhZGQgdGhpcyBmb3JtIGVsZW1lbnQgdG8gdGhlIGVuZCBvZiB0aGUg
YXJyYXkiLgotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBkZXNjZW5kYW50c09mVHlwZTxIVE1MRWxl
bWVudD4oKnRoaXMpOwotICAgIGF1dG8gaXQgPSBkZXNjZW5kYW50cy5iZWdpbkF0KGFzc29jaWF0
ZWRIVE1MRWxlbWVudCk7Ci0gICAgYXV0byBlbmQgPSBkZXNjZW5kYW50cy5lbmQoKTsKLSAgICBp
ZiAoKytpdCA9PSBlbmQpCisgICAgaWYgKCErK2Rlc2NlbmRhbnRzLmJlZ2luQXQoYXNzb2NpYXRl
ZEhUTUxFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGN1cnJlbnRBc3NvY2lhdGVkRWxlbWVudHNB
ZnRlckluZGV4OwogCiAgICAgdW5zaWduZWQgaSA9IG1fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3Jl
SW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAppbmRl
eCA4M2FjNjgwZDkwNDg3NTcxNTBiNWI2ZWIzNmI2NGQ3ODhmMGViYzcwLi5lNmFlNmY2OGQ4Nzk4
NWFmOWZmNTRlYjVkNjc1MzNhNWI1YWIxZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lU2V0RWxlbWVudC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJGcmFtZUxv
YWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJv
ZHlFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1M
RnJhbWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTGVuZ3Ro
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApvbGQgbW9kZSAxMDA3
NTUKbmV3IG1vZGUgMTAwNjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAppbmRleCBmNTczY2ExNDA2ODVjZDI2MDIwOWNkNjE5YzhhOTgwNDllY2M1MTk0Li41ZDA4ZTll
NDk0NWUyZDkzY2RiOGRjYTIwNWZjMDMzMWNiZWZmOGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5
OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0
aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJr
IE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBB
bGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcg
U2FtdWVsIFdlaW5pZyAoc2FtQHdlYmtpdC5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTIxMDQsNiArMjEwNCw3IEBAIFJlbmRl
clN0eWxlIEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKIH0KIAogI2lmIEVOQUJMRShEQVRFX0FORF9USU1FX0lOUFVUX1RZUEVT
KQorCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnNldHVwRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVy
cyhEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGlmICghZG9j
dW1lbnQoKS52aWV3KCkpCkBAIC0yMTM2LDIwICsyMTM3LDI0IEBAIGJvb2wgSFRNTElucHV0RWxl
bWVudDo6c2V0dXBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzKERhdGVUaW1lQ2hvb3NlclBhcmFt
ZXRlcnMmCiAgICAgICAgIHBhcmFtZXRlcnMuYW5jaG9yUmVjdEluUm9vdFZpZXcgPSBJbnRSZWN0
KCk7CiAgICAgcGFyYW1ldGVycy5jdXJyZW50VmFsdWUgPSB2YWx1ZSgpOwogICAgIHBhcmFtZXRl
cnMuaXNBbmNob3JFbGVtZW50UlRMID0gY29tcHV0ZWRTdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBU
ZXh0RGlyZWN0aW9uOjpSVEw7CisKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICBp
ZiAoYXV0byBkYXRhTGlzdCA9IHRoaXMtPmRhdGFMaXN0KCkpIHsKLSAgICAgICAgUmVmPEhUTUxD
b2xsZWN0aW9uPiBvcHRpb25zID0gZGF0YUxpc3QtPm9wdGlvbnMoKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBvcHRpb24gPSBkb3duY2Fz
dDxIVE1MT3B0aW9uRWxlbWVudD4ob3B0aW9ucy0+aXRlbShpKSk7ICsraSkgewotICAgICAgICAg
ICAgaWYgKCFpc1ZhbGlkVmFsdWUob3B0aW9uLT52YWx1ZSgpKSkKKyAgICAgICAgZm9yIChhdXRv
JiBvcHRpb24gOiBkYXRhTGlzdC0+c3VnZ2VzdGlvbnMoKSkgeworICAgICAgICAgICAgYXV0byBs
YWJlbCA9IG9wdGlvbi5sYWJlbCgpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IG9wdGlvbi52
YWx1ZSgpOworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkVmFsdWUodmFsdWUpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcGFyYW1ldGVycy5zdWdnZXN0aW9uVmFsdWVz
LmFwcGVuZChzYW5pdGl6ZVZhbHVlKG9wdGlvbi0+dmFsdWUoKSkpOwotICAgICAgICAgICAgcGFy
YW1ldGVycy5sb2NhbGl6ZWRTdWdnZXN0aW9uVmFsdWVzLmFwcGVuZChsb2NhbGl6ZVZhbHVlKG9w
dGlvbi0+dmFsdWUoKSkpOwotICAgICAgICAgICAgcGFyYW1ldGVycy5zdWdnZXN0aW9uTGFiZWxz
LmFwcGVuZChvcHRpb24tPnZhbHVlKCkgPT0gb3B0aW9uLT5sYWJlbCgpID8gU3RyaW5nKCkgOiBv
cHRpb24tPmxhYmVsKCkpOworICAgICAgICAgICAgcGFyYW1ldGVycy5zdWdnZXN0aW9uVmFsdWVz
LmFwcGVuZChzYW5pdGl6ZVZhbHVlKHZhbHVlKSk7CisgICAgICAgICAgICBwYXJhbWV0ZXJzLmxv
Y2FsaXplZFN1Z2dlc3Rpb25WYWx1ZXMuYXBwZW5kKGxvY2FsaXplVmFsdWUodmFsdWUpKTsKKyAg
ICAgICAgICAgIHBhcmFtZXRlcnMuc3VnZ2VzdGlvbkxhYmVscy5hcHBlbmQodmFsdWUgPT0gbGFi
ZWwgPyBTdHJpbmcoKSA6IGxhYmVsKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgorCiAgICAg
cmV0dXJuIHRydWU7CiB9CisKICNlbmRpZgogCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmNhcHNM
b2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAppbmRleCA5YWM5NzNmY2NkOGEyOTFiNDhmYmFjYTllMGFmMjMxZjRjMDIwZjMxLi5k
Zjc1MGYxZjlhNDZiM2UzY2RiYzc1NjQ4Njg0N2MzMGFkNmY3MzdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTQ2NTAsNyArNDY1MCw3IEBAIFVSTCBIVE1M
TWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQoQ29udGVudFR5cGUqIGNvbnRlbnRU
eXBlLCBTdHJpbmcqIGtlCiAgICAgLy8gZWFjaCBzdGlsbCBpcyBhIGNoaWxkIG9mIHRoaXMgbWVk
aWEgZWxlbWVudCBiZWZvcmUgdXNpbmcuCiAgICAgVmVjdG9yPFJlZjxIVE1MU291cmNlRWxlbWVu
dD4+IHBvdGVudGlhbFNvdXJjZU5vZGVzOwogICAgIGF1dG8gc291cmNlcyA9IGNoaWxkcmVuT2ZU
eXBlPEhUTUxTb3VyY2VFbGVtZW50PigqdGhpcyk7Ci0gICAgZm9yIChhdXRvIG5leHQgPSBtX25l
eHRDaGlsZE5vZGVUb0NvbnNpZGVyID8gc291cmNlcy5iZWdpbkF0KCptX25leHRDaGlsZE5vZGVU
b0NvbnNpZGVyKSA6IHNvdXJjZXMuYmVnaW4oKSwgZW5kID0gc291cmNlcy5lbmQoKTsgbmV4dCAh
PSBlbmQ7ICsrbmV4dCkKKyAgICBmb3IgKGF1dG8gbmV4dCA9IG1fbmV4dENoaWxkTm9kZVRvQ29u
c2lkZXIgPyBzb3VyY2VzLmJlZ2luQXQoKm1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXIpIDogc291
cmNlcy5iZWdpbigpOyBuZXh0OyArK25leHQpCiAgICAgICAgIHBvdGVudGlhbFNvdXJjZU5vZGVz
LmFwcGVuZCgqbmV4dCk7CiAKICAgICBmb3IgKGF1dG8mIHNvdXJjZSA6IHBvdGVudGlhbFNvdXJj
ZU5vZGVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcApp
bmRleCA5ZThjZmZkYjkxYTUxMDkwNDI4NDU5ZWZmZTg2NWE0OGUwN2Y0ODA4Li42NzY4ZmUxMmEx
ZTVlNzIyMGM1MzY5MGZlNmY5NzM1N2NhZTdjZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMp
IDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBB
bnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBE
aXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAw
NiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMTA5
LDE0ICsxMDksNyBAQCBTdHJpbmcgSFRNTE9wdEdyb3VwRWxlbWVudDo6Z3JvdXBMYWJlbFRleHQo
KSBjb25zdAogICAgIAogSFRNTFNlbGVjdEVsZW1lbnQqIEhUTUxPcHRHcm91cEVsZW1lbnQ6Om93
bmVyU2VsZWN0RWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHNl
bGVjdCA9IHBhcmVudE5vZGUoKTsKLSAgICB3aGlsZSAoc2VsZWN0ICYmICFpczxIVE1MU2VsZWN0
RWxlbWVudD4oKnNlbGVjdCkpCi0gICAgICAgIHNlbGVjdCA9IHNlbGVjdC0+cGFyZW50Tm9kZSgp
OwotICAgIAotICAgIGlmICghc2VsZWN0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAK
LSAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFNlbGVjdEVsZW1lbnQ+KHNlbGVjdC5nZXQoKSk7Cisg
ICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPihhbmNlc3RvcnNPZlR5cGU8
SFRNTFNlbGVjdEVsZW1lbnQ+KCp0aGlzKS5maXJzdCgpKTsKIH0KIAogdm9pZCBIVE1MT3B0R3Jv
dXBFbGVtZW50OjphY2Nlc3NLZXlBY3Rpb24oYm9vbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uRWxlbWVudC5jcHAKaW5kZXggYzNkZDMwZDVkYzYyYmY4MzE3MDllNTcwMDQ2ODhkNGE4
OGIzZTJhNi4uM2MwMWU2OTVhZDEwMjY3N2FhZmYwMmRiMGYyMTFkYjg4ZjY5Mjg0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTMsNyArMyw3IEBACiAg
KiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAg
KiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQotICog
Q29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMTY2LDggKzE2Niw4IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21T
dHJpCiB7CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgaWYgKG5hbWUgPT0gdmFs
dWVBdHRyKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8SFRNTERhdGFMaXN0RWxlbWVudD4gZGF0YUxp
c3QgPSBvd25lckRhdGFMaXN0RWxlbWVudCgpKQotICAgICAgICAgICAgZGF0YUxpc3QtPm9wdGlv
bkVsZW1lbnRDaGlsZHJlbkNoYW5nZWQoKTsKKyAgICAgICAgZm9yIChhdXRvJiBkYXRhTGlzdCA6
IGFuY2VzdG9yc09mVHlwZTxIVE1MRGF0YUxpc3RFbGVtZW50PigqdGhpcykpCisgICAgICAgICAg
ICBkYXRhTGlzdC5vcHRpb25FbGVtZW50Q2hpbGRyZW5DaGFuZ2VkKCk7CiAgICAgfSBlbHNlCiAj
ZW5kaWYKICAgICBpZiAobmFtZSA9PSBkaXNhYmxlZEF0dHIpIHsKQEAgLTIzOCwzOSArMjM4LDE3
IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnNldFNlbGVjdGVkU3RhdGUoYm9vbCBzZWxlY3Rl
ZCkKIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENo
YW5nZSYgY2hhbmdlKQogewogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotICAgIGlmIChS
ZWZQdHI8SFRNTERhdGFMaXN0RWxlbWVudD4gZGF0YUxpc3QgPSBvd25lckRhdGFMaXN0RWxlbWVu
dCgpKQotICAgICAgICBkYXRhTGlzdC0+b3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOwot
ICAgIGVsc2UKKyAgICBmb3IgKGF1dG8mIGRhdGFMaXN0IDogYW5jZXN0b3JzT2ZUeXBlPEhUTUxE
YXRhTGlzdEVsZW1lbnQ+KCp0aGlzKSkKKyAgICAgICAgZGF0YUxpc3Qub3B0aW9uRWxlbWVudENo
aWxkcmVuQ2hhbmdlZCgpOwogI2VuZGlmCiAgICAgaWYgKFJlZlB0cjxIVE1MU2VsZWN0RWxlbWVu
dD4gc2VsZWN0ID0gb3duZXJTZWxlY3RFbGVtZW50KCkpCiAgICAgICAgIHNlbGVjdC0+b3B0aW9u
RWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOwogICAgIEhUTUxFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQoY2hhbmdlKTsKIH0KIAotI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotSFRNTERhdGFM
aXN0RWxlbWVudCogSFRNTE9wdGlvbkVsZW1lbnQ6Om93bmVyRGF0YUxpc3RFbGVtZW50KCkgY29u
c3QKLXsKLSAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gZGF0YWxpc3QgPSBwYXJlbnROb2RlKCk7
Ci0gICAgd2hpbGUgKGRhdGFsaXN0ICYmICFpczxIVE1MRGF0YUxpc3RFbGVtZW50PigqZGF0YWxp
c3QpKQotICAgICAgICBkYXRhbGlzdCA9IGRhdGFsaXN0LT5wYXJlbnROb2RlKCk7Ci0KLSAgICBp
ZiAoIWRhdGFsaXN0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBkb3du
Y2FzdDxIVE1MRGF0YUxpc3RFbGVtZW50PihkYXRhbGlzdC5nZXQoKSk7Ci19Ci0jZW5kaWYKLQog
SFRNTFNlbGVjdEVsZW1lbnQqIEhUTUxPcHRpb25FbGVtZW50Ojpvd25lclNlbGVjdEVsZW1lbnQo
KSBjb25zdAogewotICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBzZWxlY3QgPSBwYXJlbnROb2Rl
KCk7Ci0gICAgd2hpbGUgKHNlbGVjdCAmJiAhaXM8SFRNTFNlbGVjdEVsZW1lbnQ+KCpzZWxlY3Qp
KQotICAgICAgICBzZWxlY3QgPSBzZWxlY3QtPnBhcmVudE5vZGUoKTsKLQotICAgIGlmICghc2Vs
ZWN0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBkb3duY2FzdDxIVE1M
U2VsZWN0RWxlbWVudD4oc2VsZWN0LmdldCgpKTsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxIVE1M
U2VsZWN0RWxlbWVudCo+KGFuY2VzdG9yc09mVHlwZTxIVE1MU2VsZWN0RWxlbWVudD4oKnRoaXMp
LmZpcnN0KCkpOwogfQogCiBTdHJpbmcgSFRNTE9wdGlvbkVsZW1lbnQ6OmxhYmVsKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAppbmRleCBmMGQ5NGM4YTZiNWYz
MDgzMzRlYWExMWRhOWU0MDIxYjVjMGU1N2U2Li45MWM1YWJjN2UwMTdjMTFmYTEzMmZkMzFmMDFi
ZTFlMzI0ZTI2YjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25F
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCkBA
IC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5v
cmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMTAsIDIwMTEsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjgsNyAr
MjgsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxEYXRhTGlzdEVsZW1l
bnQ7CiBjbGFzcyBIVE1MU2VsZWN0RWxlbWVudDsKIAogY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQg
ZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewpAQCAtNDksOSArNDgsNiBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZWxlY3RlZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0U2VsZWN0ZWQoYm9vbCk7CiAKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAg
ICBXRUJDT1JFX0VYUE9SVCBIVE1MRGF0YUxpc3RFbGVtZW50KiBvd25lckRhdGFMaXN0RWxlbWVu
dCgpIGNvbnN0OwotI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgSFRNTFNlbGVjdEVsZW1lbnQq
IG93bmVyU2VsZWN0RWxlbWVudCgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGxhYmVsKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRp
b25zQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVj
dGlvbi5jcHAKaW5kZXggYTYwNzY2YmQ3ODU4NTk4NmEyMjlmZTg2ZmI0MmM2OGFmZDkxYmE0OS4u
MzBiYmNmMzY5ODQyNzYxZGQwYjUzNDQxNzhiNDcwMTA2MzU1NTIyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcApAQCAtMjgsNyArMjgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSFRNTE9wdGlv
bnNDb2xsZWN0aW9uKTsKIAogSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24oSFRNTFNlbGVjdEVsZW1lbnQmIHNlbGVjdCkKLSAgICA6IENhY2hlZEhUTUxDb2xsZWN0
aW9uPEhUTUxPcHRpb25zQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8U2VsZWN0T3B0
aW9ucz46OnRyYXZlcnNhbFR5cGU+KHNlbGVjdCwgU2VsZWN0T3B0aW9ucykKKyAgICA6IENhY2hl
ZEhUTUxDb2xsZWN0aW9uKHNlbGVjdCwgU2VsZWN0T3B0aW9ucykKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsCmluZGV4IDZlOWZhNGQwZTE2
MTYwZGEyYjdjYWI4MGQwMmE5N2FiZDgwNjNiMDUuLmYxYzQ3N2U0ODY4ZTBmZTQwNTlmZGZjNjA1
MWJlYzNhMWYyYzVjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29s
bGVjdGlvbi5pZGwKQEAgLTMyLDUgKzMyLDUgQEAKIAogICAgIC8vIEZJWE1FOiBDYW4gdGhlc2Ug
anVzdCBiZSBpbmhlcml0ZWQgZnJvbSBIVE1MQ29sbGVjdGlvbiBsaWtlIGluIHRoZSBzcGVjPwog
ICAgIGdldHRlciBIVE1MT3B0aW9uRWxlbWVudD8gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsK
LSAgICBnZXR0ZXIgSFRNTE9wdGlvbkVsZW1lbnQ/IG5hbWVkSXRlbShET01TdHJpbmcgbmFtZSk7
CisgICAgZ2V0dGVyIEhUTUxPcHRpb25FbGVtZW50PyBuYW1lZEl0ZW0oW1JlcXVpcmVzRXhpc3Rp
bmdBdG9tU3RyaW5nXSBET01TdHJpbmcgbmFtZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggYjE3NGIxZjI4ZmI2ZTE0ZjdjNzJm
MTdiYjNkZGFiZWNjNDEzNWZiMC4uNjJmYWI3ODE0NjJjZTJlOWZhZmZmYzBhNzYzODNmM2FlYjU4
MTAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQu
Y3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiQ29tbW9uVk0uaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKKyNpbmNs
dWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgpAQCAtNTAsNyArNTEs
NiBAQAogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdHlsZVRyZWVSZXNvbHZl
ci5oIgogI2luY2x1ZGUgIlN1YmZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYXRjaFNjb3BlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNlbGVjdEVsZW1lbnQuaWRsCmluZGV4IDYxZWU1OTRlNjAzNzc5MGVhZGZjOGFmZDFjMTVlY2M0
NmYzOGM2YzkuLmQzYWVkYTkwMzU1MzhkOTZmMjJiZTFhNTQwZTczNjEwMzllZWVjMjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCkBAIC0zNiw3ICszNiw3IEBA
CiAgICAgLyogW1NhbWVPYmplY3RdICovIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MT3B0aW9uc0Nv
bGxlY3Rpb24gb3B0aW9uczsKICAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIGxlbmd0aDsKICAgICBnZXR0ZXIgSFRNTE9wdGlvbkVsZW1lbnQ/IGl0ZW0odW5zaWduZWQg
bG9uZyBpbmRleCk7IC8vIEZJWE1FOiBUaGUgc3BlYyBoYXMgdGhpcyByZXR1cm5pbmcgRWxlbWVu
dD8uCi0gICAgSFRNTE9wdGlvbkVsZW1lbnQ/IG5hbWVkSXRlbShET01TdHJpbmcgbmFtZSk7Cisg
ICAgSFRNTE9wdGlvbkVsZW1lbnQ/IG5hbWVkSXRlbShbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJp
bmddIERPTVN0cmluZyBuYW1lKTsKICAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9u
XSB2b2lkIGFkZCgoSFRNTE9wdGlvbkVsZW1lbnQgb3IgSFRNTE9wdEdyb3VwRWxlbWVudCkgZWxl
bWVudCwgb3B0aW9uYWwgKEhUTUxFbGVtZW50IG9yIGxvbmcpPyBiZWZvcmUgPSBudWxsKTsKICAg
ICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbW92ZSgpOyAvLyBDaGls
ZE5vZGUgb3ZlcmxvYWQKICAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgcmVtb3ZlKGxvbmcgaW5kZXgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAppbmRleCBm
YmY4ZjczM2U0ODAwMDQ5MWVhZDg2MTY3M2I4NjMxOTIzZjk5MTg2Li5hNjAwMzhmZTk0ZjI5OGIw
OGVhNGFiNmVkYWNkN2QxNTU3YWE4NzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUNlbGxFbGVtZW50LmNwcApAQCAtMTMxLDkgKzEzMSw5IEBAIHZvaWQgSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21TCiAKIGNvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmFk
ZGl0aW9uYWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKFJl
ZlB0cjxIVE1MVGFibGVFbGVtZW50PiB0YWJsZSA9IGZpbmRQYXJlbnRUYWJsZSgpKQorICAgIGlm
IChhdXRvIHRhYmxlID0gZmluZFBhcmVudFRhYmxlKCkpCiAgICAgICAgIHJldHVybiB0YWJsZS0+
YWRkaXRpb25hbENlbGxTdHlsZSgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiBib29sIEhUTUxUYWJsZUNlbGxFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShjb25zdCBB
dHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUNvbEVsZW1lbnQuY3BwCmluZGV4IDcyOGI1ZjNkMmI1NTIzYjA0YjM5OWYyY2M0YjU1YWE0Zjhi
MWZjNzQuLmY0ZDQ0NzU4MTFlOGE0MGNhMzJhNjdiY2Y2YjIxNmMyNTNhN2U3YTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcApAQCAtOTIsNyArOTIsNyBA
QCBjb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUNvbEVsZW1lbnQ6OmFkZGl0aW9uYWxQ
cmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZQogewogICAgIGlmICghaGFzVGFnTmFtZShjb2xncm91
cFRhZykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChSZWZQdHI8SFRNTFRhYmxl
RWxlbWVudD4gdGFibGUgPSBmaW5kUGFyZW50VGFibGUoKSkKKyAgICBpZiAoYXV0byB0YWJsZSA9
IGZpbmRQYXJlbnRUYWJsZSgpKQogICAgICAgICByZXR1cm4gdGFibGUtPmFkZGl0aW9uYWxHcm91
cFN0eWxlKGZhbHNlKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IDc2N2EzZTM4YWY0ODJkZDkyYjE0OWM4ZjBlZThi
ODY2ZTdkNGI3YmYuLmE1ZjgwZmUwYzkxZjg4ZDk2MGFiN2ZlN2FmMDY4YTQ4Yjg5NjQ1ZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcApAQCAtNDczLDcgKzQ3Myw3
IEBAIEhUTUxUYWJsZUVsZW1lbnQ6OkNlbGxCb3JkZXJzIEhUTUxUYWJsZUVsZW1lbnQ6OmNlbGxC
b3JkZXJzKCkgY29uc3QKICAgICByZXR1cm4gTm9Cb3JkZXJzOwogfQogCi1SZWY8U3R5bGVQcm9w
ZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQorUmVmPFN0
eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCkg
Y29uc3QKIHsKICAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRl
KCk7CiAKQEAgLTUxNCw3ICs1MTQsNyBAQCBSZWY8U3R5bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVF
bGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQogICAgIHJldHVybiBzdHlsZTsKIH0KIAot
Y29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBIVE1MVGFibGVFbGVtZW50OjphZGRpdGlvbmFsQ2VsbFN0
eWxlKCkKK2NvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlRWxlbWVudDo6YWRkaXRpb25h
bENlbGxTdHlsZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NoYXJlZENlbGxTdHlsZSkKICAgICAg
ICAgbV9zaGFyZWRDZWxsU3R5bGUgPSBjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKTsKQEAgLTUzOCwx
MSArNTM4LDEwIEBAIHN0YXRpYyBTdHlsZVByb3BlcnRpZXMqIGxlYWtHcm91cEJvcmRlclN0eWxl
KGludCByb3dzKQogICAgIHJldHVybiAmc3R5bGUubGVha1JlZigpOwogfQogCi1jb25zdCBTdHls
ZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxHcm91cFN0eWxlKGJvb2wg
cm93cykKK2NvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlRWxlbWVudDo6YWRkaXRpb25h
bEdyb3VwU3R5bGUoYm9vbCByb3dzKSBjb25zdAogewogICAgIGlmIChtX3J1bGVzQXR0ciAhPSBH
cm91cHNSdWxlcykKLSAgICAgICAgcmV0dXJuIDA7Ci0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgaWYgKHJvd3MpIHsKICAgICAgICAgc3RhdGljIFN0eWxlUHJvcGVydGllcyogcm93Qm9y
ZGVyU3R5bGUgPSBsZWFrR3JvdXBCb3JkZXJTdHlsZSh0cnVlKTsKICAgICAgICAgcmV0dXJuIHJv
d0JvcmRlclN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAppbmRleCBi
MzY1NDIwOWJkYTg1Nzg4NWM2OTMxYzgxYjRlZTNmOTg2ZjM4NDE2Li4zNzU2ZGM2MTA3NWM0YmY3
OTU3ZjkwNzNiNzg3NWE1MmYyZTU2YjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVs
ZW1lbnQuaApAQCAtNjUsOCArNjUsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgQXRvbVN0cmluZyYg
cnVsZXMoKSBjb25zdDsKICAgICBjb25zdCBBdG9tU3RyaW5nJiBzdW1tYXJ5KCkgY29uc3Q7CiAK
LSAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0aW9uYWxDZWxsU3R5bGUoKTsKLSAgICBj
b25zdCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0aW9uYWxHcm91cFN0eWxlKGJvb2wgcm93cyk7Cisg
ICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRpdGlvbmFsQ2VsbFN0eWxlKCkgY29uc3Q7Cisg
ICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRpdGlvbmFsR3JvdXBTdHlsZShib29sIHJvd3Mp
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIEhUTUxUYWJsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7CkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAKICAgICBDZWxs
Qm9yZGVycyBjZWxsQm9yZGVycygpIGNvbnN0OwogCi0gICAgUmVmPFN0eWxlUHJvcGVydGllcz4g
Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCk7CisgICAgUmVmPFN0eWxlUHJvcGVydGllcz4gY3JlYXRl
U2hhcmVkQ2VsbFN0eWxlKCkgY29uc3Q7CiAKICAgICBIVE1MVGFibGVTZWN0aW9uRWxlbWVudCog
bGFzdEJvZHkoKSBjb25zdDsKIApAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9mcmFtZUF0dHIgeyBmYWxzZSB9OyAvLyBJbXBsaWVzIGEgdGhpbiBib3JkZXIgd2lkdGggaWYg
bm8gYm9yZGVyIGlzIHNldCBhbmQgdGhlbiBhIGNlcnRhaW4gc2V0IG9mIHNvbGlkL2hpZGRlbiBi
b3JkZXJzIGJhc2VkIG9mZiB0aGUgdmFsdWUuCiAgICAgVGFibGVSdWxlcyBtX3J1bGVzQXR0ciB7
IFVuc2V0UnVsZXMgfTsgLy8gSW1wbGllcyBhIHRoaW4gYm9yZGVyIHdpZHRoLCBhIGNvbGxhcHNp
bmcgYm9yZGVyIG1vZGVsLCBhbmQgYWxsIGJvcmRlcnMgb24gdGhlIHRhYmxlIGJlY29taW5nIHNl
dCB0byBoaWRkZW4gKGlmIGZyYW1lL2JvcmRlciBhcmUgcHJlc2VudCwgdG8gbm9uZSBvdGhlcndp
c2UpLgogICAgIHVuc2lnbmVkIHNob3J0IG1fcGFkZGluZyB7IDEgfTsKLSAgICBSZWZQdHI8U3R5
bGVQcm9wZXJ0aWVzPiBtX3NoYXJlZENlbGxTdHlsZTsKKyAgICBtdXRhYmxlIFJlZlB0cjxTdHls
ZVByb3BlcnRpZXM+IG1fc2hhcmVkQ2VsbFN0eWxlOwogfTsKIAogfSAvL25hbWVzcGFjZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcAppbmRleCAzNTg3ODAx
NjIxMGZjYWFmZjYwOTBlNjk1Mzk0MTU1YzQ1NWFlYTdjLi4zNDliMDM1MTJhOGVjNTQwNTI0MWJi
YTZmYzNkNGE5ZmY3NDM2ZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVBhcnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBh
cnRFbGVtZW50LmNwcApAQCAtNCw3ICs0LDcgQEAKICAqICAgICAgICAgICAoQykgMTk5OCBXYWxk
byBCYXN0aWFuIChiYXN0aWFuQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgTGFycyBL
bm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0
byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwg
MjAwNiBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTg1LDEyICs4NSw5IEBA
IHZvaWQgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROCiAgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSwgdmFsdWUsIHN0eWxlKTsKIH0KIAotUmVm
UHRyPEhUTUxUYWJsZUVsZW1lbnQ+IEhUTUxUYWJsZVBhcnRFbGVtZW50OjpmaW5kUGFyZW50VGFi
bGUoKSBjb25zdAorUmVmUHRyPGNvbnN0IEhUTUxUYWJsZUVsZW1lbnQ+IEhUTUxUYWJsZVBhcnRF
bGVtZW50OjpmaW5kUGFyZW50VGFibGUoKSBjb25zdAogewotICAgIFJlZlB0cjxDb250YWluZXJO
b2RlPiBwYXJlbnQgPSBwYXJlbnROb2RlKCk7Ci0gICAgd2hpbGUgKHBhcmVudCAmJiAhaXM8SFRN
TFRhYmxlRWxlbWVudD4oKnBhcmVudCkpCi0gICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50
Tm9kZSgpOwotICAgIHJldHVybiBkb3duY2FzdDxIVE1MVGFibGVFbGVtZW50PihwYXJlbnQuZ2V0
KCkpOworICAgIHJldHVybiBhbmNlc3RvcnNPZlR5cGU8SFRNTFRhYmxlRWxlbWVudD4oKnRoaXMp
LmZpcnN0KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlUGFydEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1l
bnQuaAppbmRleCBkM2JjZjUwYmFlMjFjMzU4Y2RlMjNmMzM2M2U1YzY5MmQ1NmYxMWU2Li4wNGY5
NDcxYmFiYTI4NzdmNzU0NTQwYzliMWE1ODA5NzI3YmViNTcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5oCkBAIC00LDcgKzQsNyBAQAogICogICAgICAgICAg
IChDKSAxOTk4IFdhbGRvIEJhc3RpYW4gKGJhc3RpYW5Aa2RlLm9yZykKICAqICAgICAgICAgICAo
QykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5
IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA0LCAyMDA1LCAyMDA2LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDIsNyArNDIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ym9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzJikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gZmluZFBh
cmVudFRhYmxlKCkgY29uc3Q7CisgICAgUmVmUHRyPGNvbnN0IEhUTUxUYWJsZUVsZW1lbnQ+IGZp
bmRQYXJlbnRUYWJsZSgpIGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcAppbmRleCA3
YTY3Yjc3M2FiMzk5ZWIzOTIzMDA4NDYwMjFlOWViYjA5YTI5MWFiLi4yM2VlY2RhMTU3NmM0YzNl
Yzc1NDBlM2FhMDYxNmYzZjIwNTBlMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIEhUTUxUYWJsZVJv
d0VsZW1lbnQqIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpsYXN0Um93KEhUTUxUYWJsZUVsZW1l
bnQmIHRhYmxlKQogfQogCiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6SFRNTFRhYmxlUm93c0Nv
bGxlY3Rpb24oSFRNTFRhYmxlRWxlbWVudCYgdGFibGUpCi0gICAgOiBDYWNoZWRIVE1MQ29sbGVj
dGlvbjxIVE1MVGFibGVSb3dzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8VGFibGVS
b3dzPjo6dHJhdmVyc2FsVHlwZT4odGFibGUsIFRhYmxlUm93cykKKyAgICA6IENhY2hlZEhUTUxD
b2xsZWN0aW9uKHRhYmxlLCBUYWJsZVJvd3MpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKaW5kZXggZTUxNmE4MTg0ZDFmMGY4Mzcz
Y2QyMWE0YTdhNDA5M2NmOWJjZjJmMS4uNDk5OWMxNThlNmJhZjk4ODJiYTVlMDVkMjZmM2RkYTM0
MThiYzNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9u
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxl
bWVudC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJIVE1MVGFibGVTZWN0aW9uRWxl
bWVudC5oIgogCiAjaW5jbHVkZSAiR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCi0jaW5j
bHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgpA
QCAtOTUsNyArOTQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MVGFibGVTZWN0aW9uRWxlbWVu
dDo6ZGVsZXRlUm93KGludCBpbmRleCkKIGludCBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6bnVt
Um93cygpIGNvbnN0CiB7CiAgICAgYXV0byByb3dzID0gY2hpbGRyZW5PZlR5cGU8SFRNTFRhYmxl
Um93RWxlbWVudD4oKnRoaXMpOwotICAgIHJldHVybiBzdGQ6OmRpc3RhbmNlKHJvd3MuYmVnaW4o
KSwgcm93cy5lbmQoKSk7CisgICAgcmV0dXJuIHN0ZDo6ZGlzdGFuY2Uocm93cy5iZWdpbigpLCB7
IH0pOwogfQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Ojpy
b3dzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5jcHAKaW5kZXggOTljNTZlYmY1ZTA2ZDc2NmJlMjcwYmFjM2FhMjk2MmJiNTlkMzQ4MC4u
YTdiYTQxN2Q3ZDUxNzE0YzBlNTUyYzBkNTlhMDExYjUxNTFiMGM2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTIsNyAr
Miw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAq
IENvcHlyaWdodCAoQykgMjAwNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5j
b20pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgpAQCAtNzY0LDM0ICs3NjQsMjQgQEAgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQqIGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChjb25zdCBQb3NpdGlvbiYgcG9zaXRp
b24pCiAgICAgcmV0dXJuIGFuY2VzdG9yICYmIGFuY2VzdG9yLT5pc1RleHRGaWVsZCgpID8gZG93
bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGFuY2VzdG9yLmdldCgpKSA6IG51bGxw
dHI7CiB9CiAKLXN0YXRpYyBjb25zdCBFbGVtZW50KiBwYXJlbnRIVE1MRWxlbWVudChjb25zdCBF
bGVtZW50KiBlbGVtZW50KQotewotICAgIHdoaWxlIChlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7Ci0gICAgICAgIGlmIChlbGVtZW50ICYmIGVs
ZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwotICAg
IH0KLSAgICByZXR1cm4gMDsKLX0KLQogU3RyaW5nIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjpkaXJlY3Rpb25Gb3JGb3JtRGF0YSgpIGNvbnN0CiB7Ci0gICAgZm9yIChjb25zdCBFbGVtZW50
KiBlbGVtZW50ID0gdGhpczsgZWxlbWVudDsgZWxlbWVudCA9IHBhcmVudEhUTUxFbGVtZW50KGVs
ZW1lbnQpKSB7Ci0gICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIGRpckF0dHJpYnV0ZVZhbHVlID0g
ZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkaXJBdHRyKTsKLSAgICAg
ICAgaWYgKGRpckF0dHJpYnV0ZVZhbHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpckF0dHJpYnV0
ZVZhbHVlLCAicnRsIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyQXR0cmli
dXRlVmFsdWUsICJsdHIiKSkKLSAgICAgICAgICAgIHJldHVybiBkaXJBdHRyaWJ1dGVWYWx1ZTsK
LQotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyQXR0cmlidXRl
VmFsdWUsICJhdXRvIikpIHsKLSAgICAgICAgICAgIGJvb2wgaXNBdXRvOwotICAgICAgICAgICAg
VGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTEVsZW1l
bnQqPihlbGVtZW50KS0+ZGlyZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUoaXNBdXRv
KTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJU
TCA/ICJydGwiIDogImx0ciI7CisgICAgYXV0byBkaXJlY3Rpb24gPSBbdGhpc10geworICAgICAg
ICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEhUTUxFbGVtZW50PigqdGhpcykp
IHsKKyAgICAgICAgICAgIGF1dG8mIHZhbHVlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGRpckF0dHIpOworICAgICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHZhbHVlLCAicnRsIikpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRleHRE
aXJlY3Rpb246OlJUTDsKKyAgICAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZSh2YWx1ZSwgImx0ciIpKQorICAgICAgICAgICAgICAgIHJldHVybiBUZXh0RGlyZWN0aW9u
OjpMVFI7CisgICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFs
dWUsICJhdXRvIikpIHsKKyAgICAgICAgICAgICAgICBib29sIGlzQXV0bzsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZWxlbWVudC5kaXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShp
c0F1dG8pOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQorICAgICAgICByZXR1cm4g
VGV4dERpcmVjdGlvbjo6TFRSOworICAgIH0oKTsKIAotICAgIHJldHVybiAibHRyIjsKKyAgICBy
ZXR1cm4gZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/ICJsdHIiX3MgOiAicnRsIl9z
OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0
TWF4TGVuZ3RoKGludCBtYXhMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0xhYmVsc05vZGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3Qu
Y3BwCmluZGV4IGQ0MTAxNzg2ZmIwMDVmMjY4N2IxOTBhZjM3MzFiY2Q1NTdkMjBlMGEuLjkxOWEy
OGVkNjA5M2ZkYmViMTFkMjkxNjA0NjQyODE2ZjFlZTExZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TGFiZWxzTm9kZUxpc3QuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkg
S29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBN
dWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDcsIDIw
MDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDEwIE5va2lhIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBA
IC0yNCw5ICsyNCw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGFiZWxzTm9k
ZUxpc3QuaCIKIAotI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTGFiZWxFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTGFiZWxhYmxlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJ
bmxpbmVzLmg+CiAKQEAgLTM2LDExICszNiwxNiBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTGFiZWxzTm9kZUxpc3QpOwogCi1MYWJl
bHNOb2RlTGlzdDo6TGFiZWxzTm9kZUxpc3QoTGFiZWxhYmxlRWxlbWVudCYgZm9yTm9kZSkKLSAg
ICA6IENhY2hlZExpdmVOb2RlTGlzdChmb3JOb2RlLCBJbnZhbGlkYXRlT25Gb3JUeXBlQXR0ckNo
YW5nZSkKK0xhYmVsc05vZGVMaXN0OjpMYWJlbHNOb2RlTGlzdChMYWJlbGFibGVFbGVtZW50JiBl
bGVtZW50KQorICAgIDogQ2FjaGVkTGl2ZU5vZGVMaXN0KGVsZW1lbnQsIEludmFsaWRhdGVPbkZv
clR5cGVBdHRyQ2hhbmdlKQogewogfQogCitSZWY8TGFiZWxzTm9kZUxpc3Q+IExhYmVsc05vZGVM
aXN0OjpjcmVhdGUoTGFiZWxhYmxlRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyYp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTGFiZWxzTm9kZUxpc3QoZWxlbWVudCkpOwor
fQorCiBMYWJlbHNOb2RlTGlzdDo6fkxhYmVsc05vZGVMaXN0KCkKIHsKICAgICBvd25lck5vZGUo
KS5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVXaXRoQXRvbU5hbWUoKnRoaXMsIHN0YXJBdG9tKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oCmluZGV4IGY1MzlkNzliMGNhYTA1MDAz
MDQ4ODhkYzQ2MTc3MmFmN2RiMTYyODIuLjgwZDk3N2ZhY2Q3NjJkYWE4ZjMwOGFmMGRiM2I2NTBl
YWNjNzNlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmgKQEAgLTIsNyArMiw3
IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAq
ICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAq
ICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI0LDI1ICsyNCwyMyBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIkxhYmVsYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJMaXZlTm9kZUxpc3QuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBMYWJlbGFibGVFbGVtZW50OworCiBjbGFz
cyBMYWJlbHNOb2RlTGlzdCBmaW5hbCA6IHB1YmxpYyBDYWNoZWRMaXZlTm9kZUxpc3Q8TGFiZWxz
Tm9kZUxpc3Q+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKExhYmVsc05vZGVMaXN0KTsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPExhYmVsc05vZGVMaXN0PiBjcmVhdGUoTGFiZWxhYmxl
RWxlbWVudCYgZm9yTm9kZSwgY29uc3QgQXRvbVN0cmluZyYpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBMYWJlbHNOb2RlTGlzdChmb3JOb2RlKSk7Ci0gICAgfQotICAgIH5M
YWJlbHNOb2RlTGlzdCgpOworICAgIHN0YXRpYyBSZWY8TGFiZWxzTm9kZUxpc3Q+IGNyZWF0ZShM
YWJlbGFibGVFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYpOworICAgIHZpcnR1YWwgfkxhYmVs
c05vZGVMaXN0KCk7CiAKLSAgICBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdCBv
dmVycmlkZTsKLSAgICBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KKyAgICBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdCBm
aW5hbDsKKyAgICBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBMYWJlbHNOb2RlTGlzdChMYWJlbGFi
bGVFbGVtZW50JiBmb3JOb2RlKTsKKyAgICBleHBsaWNpdCBMYWJlbHNOb2RlTGlzdChMYWJlbGFi
bGVFbGVtZW50Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYURvY3VtZW50LmNwcAppbmRleCAwNGRlNzUxM2NhYzQ4MmJmNzYwYjRlNGM2ZmZhMDJl
YzJlNWI2N2Y3Li4yNGU0MGMyYzZkMzMxMTQ5M2I2MTdjNjVjZGYyZjU4YTg1MTIyMmRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDdXN0b21IZWFkZXJGaWVsZHMuaCIKICNp
bmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCkBAIC01MSw3ICs1Miw2IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2Rl
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuY3BwCmluZGV4IDk0
NzBlYTI5YWI1Nzc0ODgwYzYzYjNiZjQ3NGVkODliZmY3YmIzNDYuLmRkMmM4MWU0NGIzY2FmMTlj
YzJjYmVjNGI0NjY3MzU4ZmNhMmM1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFkaW9Ob2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0
LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTIgTW90b3JvbGEg
TW9iaWxpdHksIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0
YS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC00MywxNiArNDIsMjEg
QEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJhZGlvTm9kZUxpc3QpOwogUmFkaW9Ob2Rl
TGlzdDo6UmFkaW9Ob2RlTGlzdChDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0
cmluZyYgbmFtZSkKICAgICA6IENhY2hlZExpdmVOb2RlTGlzdChyb290Tm9kZSwgSW52YWxpZGF0
ZUZvckZvcm1Db250cm9scykKICAgICAsIG1fbmFtZShuYW1lKQotICAgICwgbV9pc1Jvb3RlZEF0
RG9jdW1lbnQoaXM8SFRNTEZvcm1FbGVtZW50Pihvd25lck5vZGUoKSkpCisgICAgLCBtX2lzUm9v
dGVkQXREb2N1bWVudChpczxIVE1MRm9ybUVsZW1lbnQ+KHJvb3ROb2RlKSkKIHsKIH0KIAorUmVm
PFJhZGlvTm9kZUxpc3Q+IFJhZGlvTm9kZUxpc3Q6OmNyZWF0ZShDb250YWluZXJOb2RlJiByb290
Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSYWRpb05vZGVMaXN0KHJvb3ROb2RlLCBuYW1lKSk7Cit9CisKIFJhZGlvTm9kZUxpc3Q6On5S
YWRpb05vZGVMaXN0KCkKIHsKICAgICBvd25lck5vZGUoKS5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2Fj
aGVXaXRoQXRvbU5hbWUoKnRoaXMsIG1fbmFtZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRy
PEhUTUxJbnB1dEVsZW1lbnQ+IHRvUmFkaW9CdXR0b25JbnB1dEVsZW1lbnQoSFRNTEVsZW1lbnQm
IGVsZW1lbnQpCitzdGF0aWMgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IG5vbkVtcHR5UmFkaW9C
dXR0b24oRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+
KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY3LDEwICs3MSwxMCBAQCBT
dHJpbmcgUmFkaW9Ob2RlTGlzdDo6dmFsdWUoKSBjb25zdAogewogICAgIGF1dG8gbGVuZ3RoID0g
dGhpcy0+bGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytp
KSB7Ci0gICAgICAgIGF1dG8gaW5wdXRFbGVtZW50ID0gdG9SYWRpb0J1dHRvbklucHV0RWxlbWVu
dCgqaXRlbShpKSk7Ci0gICAgICAgIGlmICghaW5wdXRFbGVtZW50IHx8ICFpbnB1dEVsZW1lbnQt
PmNoZWNrZWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICByZXR1cm4gaW5wdXRF
bGVtZW50LT52YWx1ZSgpOworICAgICAgICBpZiAoYXV0byBidXR0b24gPSBub25FbXB0eVJhZGlv
QnV0dG9uKCppdGVtKGkpKSkgeworICAgICAgICAgICAgaWYgKGJ1dHRvbi0+Y2hlY2tlZCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBidXR0b24tPnZhbHVlKCk7CisgICAgICAgIH0KICAgICB9
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpAQCAtNzksNDAgKzgzLDM0IEBAIHZvaWQgUmFkaW9O
b2RlTGlzdDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhdXRvIGxlbmd0
aCA9IHRoaXMtPmxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgewotICAgICAgICBhdXRvIGlucHV0RWxlbWVudCA9IHRvUmFkaW9CdXR0b25JbnB1dEVs
ZW1lbnQoKml0ZW0oaSkpOwotICAgICAgICBpZiAoIWlucHV0RWxlbWVudCB8fCBpbnB1dEVsZW1l
bnQtPnZhbHVlKCkgIT0gdmFsdWUpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaW5w
dXRFbGVtZW50LT5zZXRDaGVja2VkKHRydWUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIGlm
IChhdXRvIGJ1dHRvbiA9IG5vbkVtcHR5UmFkaW9CdXR0b24oKml0ZW0oaSkpKSB7CisgICAgICAg
ICAgICBpZiAoYnV0dG9uLT52YWx1ZSgpID09IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgYnV0
dG9uLT5zZXRDaGVja2VkKHRydWUpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQogICAgIH0KIH0KIAotYm9vbCBSYWRpb05vZGVMaXN0OjpjaGVja0Vs
ZW1lbnRNYXRjaGVzUmFkaW9Ob2RlTGlzdEZpbHRlcihjb25zdCBFbGVtZW50JiB0ZXN0RWxlbWVu
dCkgY29uc3QKK2Jvb2wgUmFkaW9Ob2RlTGlzdDo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYgZWxl
bWVudCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaXM8SFRNTE9iamVjdEVsZW1lbnQ+KHRlc3RFbGVt
ZW50KSB8fCBpczxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Pih0ZXN0RWxlbWVudCkpOworICAgIGlm
ICghaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpICYmICFpczxIVE1MRm9ybUNvbnRyb2xF
bGVtZW50PihlbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlzPEhU
TUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGVs
ZW1lbnQpLmlzSW1hZ2VCdXR0b24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYg
KGlzPEhUTUxGb3JtRWxlbWVudD4ob3duZXJOb2RlKCkpKSB7Ci0gICAgICAgIFJlZlB0cjxIVE1M
Rm9ybUVsZW1lbnQ+IGZvcm1FbGVtZW50OwotICAgICAgICBpZiAodGVzdEVsZW1lbnQuaGFzVGFn
TmFtZShvYmplY3RUYWcpKQotICAgICAgICAgICAgZm9ybUVsZW1lbnQgPSBkb3duY2FzdDxIVE1M
T2JqZWN0RWxlbWVudD4odGVzdEVsZW1lbnQpLmZvcm0oKTsKKyAgICAgICAgUmVmUHRyPEhUTUxG
b3JtRWxlbWVudD4gZm9ybTsKKyAgICAgICAgaWYgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVt
ZW50KSkKKyAgICAgICAgICAgIGZvcm0gPSBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oZWxl
bWVudCkuZm9ybSgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmb3JtRWxlbWVudCA9IGRv
d25jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KHRlc3RFbGVtZW50KS5mb3JtKCk7Ci0gICAg
ICAgIGlmICghZm9ybUVsZW1lbnQgfHwgZm9ybUVsZW1lbnQgIT0gJm93bmVyTm9kZSgpKQorICAg
ICAgICAgICAgZm9ybSA9IGRvd25jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQp
LmZvcm0oKTsKKyAgICAgICAgaWYgKCFmb3JtIHx8IGZvcm0gIT0gJm93bmVyTm9kZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiB0ZXN0RWxlbWVudC5n
ZXRJZEF0dHJpYnV0ZSgpID09IG1fbmFtZSB8fCB0ZXN0RWxlbWVudC5nZXROYW1lQXR0cmlidXRl
KCkgPT0gbV9uYW1lOworICAgIHJldHVybiBlbGVtZW50LmdldElkQXR0cmlidXRlKCkgPT0gbV9u
YW1lIHx8IGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0ZSgpID09IG1fbmFtZTsKIH0KIAotYm9vbCBS
YWRpb05vZGVMaXN0OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JiB0ZXN0RWxlbWVudCkgY29uc3QK
LXsKLSAgICBpZiAoIWlzPEhUTUxPYmplY3RFbGVtZW50Pih0ZXN0RWxlbWVudCkgJiYgIWlzPEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ+KHRlc3RFbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KHRlc3RFbGVtZW50KSAmJiBkb3duY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Pih0ZXN0RWxlbWVudCkuaXNJbWFnZUJ1dHRvbigpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gY2hlY2tFbGVtZW50TWF0Y2hlc1JhZGlvTm9k
ZUxpc3RGaWx0ZXIodGVzdEVsZW1lbnQpOwotfQotCi19IC8vIG5hbXNwYWNlCi0KK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2Rl
TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmgKaW5kZXggYTMwMjc2
MzMwYzdmZGI2Y2NmNjJiMjE4ZTdiMTcyZDAyM2Q4YTZhMy4uNjQ0NzdjODEyNThmYjFiNzE3ZjNk
ZDYyZjliNWQ4M2JhYWU4ZjNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRp
b05vZGVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmgKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDEyIE1vdG9yb2xhIE1vYmlsaXR5
LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNiw0MSArMjYsMjYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJIVE1M
RWxlbWVudC5oIgogI2luY2x1ZGUgIkxpdmVOb2RlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSYWRpb05vZGVM
aXN0IGZpbmFsIDogcHVibGljIENhY2hlZExpdmVOb2RlTGlzdDxSYWRpb05vZGVMaXN0PiB7CiAg
ICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChSYWRpb05vZGVMaXN0KTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFJhZGlvTm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwg
Y29uc3QgQXRvbVN0cmluZyYgbmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFJhZGlvTm9kZUxpc3Qocm9vdE5vZGUsIG5hbWUpKTsKLSAgICB9Ci0KKyAgICBzdGF0aWMg
UmVmPFJhZGlvTm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3Qg
QXRvbVN0cmluZyYgbmFtZSk7CiAgICAgdmlydHVhbCB+UmFkaW9Ob2RlTGlzdCgpOwogCi0gICAg
SFRNTEVsZW1lbnQqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCBvdmVycmlkZTsKLQogICAg
IFN0cmluZyB2YWx1ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7
Ci0KLSAgICBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNS
b290ZWRBdERvY3VtZW50OyB9CisgICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29u
c3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgUmFkaW9Ob2RlTGlzdChDb250YWluZXJOb2RlJiwg
Y29uc3QgQXRvbVN0cmluZyYgbmFtZSk7Ci0gICAgYm9vbCBjaGVja0VsZW1lbnRNYXRjaGVzUmFk
aW9Ob2RlTGlzdEZpbHRlcihjb25zdCBFbGVtZW50JikgY29uc3Q7CisgICAgYm9vbCBpc1Jvb3Rl
ZEF0RG9jdW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzUm9vdGVkQXREb2N1bWVudDsg
fQogCiAgICAgQXRvbVN0cmluZyBtX25hbWU7CiAgICAgYm9vbCBtX2lzUm9vdGVkQXREb2N1bWVu
dDsKIH07CiAKLWlubGluZSBIVE1MRWxlbWVudCogUmFkaW9Ob2RlTGlzdDo6aXRlbSh1bnNpZ25l
ZCBvZmZzZXQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxFbGVtZW50PihDYWNo
ZWRMaXZlTm9kZUxpc3Q8UmFkaW9Ob2RlTGlzdD46Oml0ZW0ob2Zmc2V0KSk7Ci19Ci0KLX0gLy8g
bmFtZXBzYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1JhZGlvTm9kZUxpc3QuaWRsCmluZGV4IDIzNGQ0NTUyZjYyNDkzNDYxZjA2ZmExZDUyNjNiMzg1
YTYyYTY5OTEuLmYyMTcyMDg5NTM0YWJlM2VhZDEwYTQ4ZDEzNjA2MWQ3NGFjNWZiZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmlkbApAQCAtMjcsNiArMjcsNCBAQAogICAgIEpT
R2VuZXJhdGVUb0pTT2JqZWN0LAogXSBpbnRlcmZhY2UgUmFkaW9Ob2RlTGlzdCA6IE5vZGVMaXN0
IHsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhbHVlOwotCi0gICAgZ2V0dGVyIEhUTUxFbGVt
ZW50ICh1bnNpZ25lZCBsb25nIGluZGV4KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRG
aWVsZElucHV0VHlwZS5jcHAKaW5kZXggZmRiOGUzMGZmZWM5YmIwOWFjZTZiMjllYzZhMzAxYTM5
MGVlZDU4MS4uMDJlZmY0OGYzODhmMTgwZGJhOTRhMTE4MGNlNTFjMjI0YTIxY2NhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTg2Nyw2ICs4
NjcsOCBAQCBJbnRSZWN0IFRleHRGaWVsZElucHV0VHlwZTo6ZWxlbWVudFJlY3RJblJvb3RWaWV3
Q29vcmRpbmF0ZXMoKSBjb25zdAogCiBWZWN0b3I8U3RyaW5nPiBUZXh0RmllbGRJbnB1dFR5cGU6
OnN1Z2dlc3Rpb25zKCkKIHsKKyAgICAvLyBGSVhNRTogU3VnZ2VzdGlvbnMgYXJlICJ0eXBpbmcg
Y29tcGxldGlvbnMiIGFuZCBzbyBzaG91bGQgcHJvYmFibHkgdXNlIHRoZSBmaW5kUGxhaW5UZXh0
IGFsZ29yaXRobSByYXRoZXIgdGhhbiB0aGUgc2ltcGxpc3RpYyAiaWdub3JpbmcgQVNDSUkgY2Fz
ZSIgcnVsZXMuCisKICAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uczsKICAgICBWZWN0b3I8
U3RyaW5nPiBtYXRjaGVzQ29udGFpbmluZ1ZhbHVlOwogCkBAIC04NzYsMTIgKzg3OCwxMSBAQCBW
ZWN0b3I8U3RyaW5nPiBUZXh0RmllbGRJbnB1dFR5cGU6OnN1Z2dlc3Rpb25zKCkKICAgICAgICAg
cmV0dXJuIG1fY2FjaGVkU3VnZ2VzdGlvbnMuc2Vjb25kOwogCiAgICAgaWYgKGF1dG8gZGF0YUxp
c3QgPSBlbGVtZW50KCktPmRhdGFMaXN0KCkpIHsKLSAgICAgICAgUmVmPEhUTUxDb2xsZWN0aW9u
PiBvcHRpb25zID0gZGF0YUxpc3QtPm9wdGlvbnMoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgYXV0byogb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KG9wdGlvbnMt
Pml0ZW0oaSkpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghZWxlbWVudCgpLT5pc1ZhbGlkVmFs
dWUob3B0aW9uLT52YWx1ZSgpKSkKKyAgICAgICAgZm9yIChhdXRvJiBvcHRpb24gOiBkYXRhTGlz
dC0+c3VnZ2VzdGlvbnMoKSkgeworICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gb3B0aW9uLnZh
bHVlKCk7CisgICAgICAgICAgICBpZiAoIWVsZW1lbnQoKS0+aXNWYWxpZFZhbHVlKHZhbHVlKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0g
c2FuaXRpemVWYWx1ZShvcHRpb24tPnZhbHVlKCkpOworICAgICAgICAgICAgdmFsdWUgPSBzYW5p
dGl6ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgICAgIGlmIChlbGVtZW50VmFsdWUuaXNFbXB0eSgp
KQogICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zLmFwcGVuZCh2YWx1ZSk7CiAgICAgICAgICAg
ICBlbHNlIGlmICh2YWx1ZS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoZWxlbWVudFZhbHVl
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCBlNWRm
M2MzYjc4NjZlYTlmZDQzZGFjY2Y0YTQ2MjJiZGI2NDg5NDIyLi5mY2U1OTI2YWI1ZWZhNWRhNWNk
NDQ3NGQxNmVlYzJkODkyNzBlYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jk
cy5oIgogI2luY2x1ZGUgIkRPTVJlY3QuaCIKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUg
IkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcAppbmRleCBlMWUyM2E3NmE0ZDk0NmY5ZWEyN2Y2MjZhMjJiMmNjNzc4YTk0
ZDMxLi40NDgzZGY3MDAzZmIxZWQ1NDk2ZGNhYmIyMzAzZWFhNTUwYzdkZmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMzIsMTAgKzMyLDggQEAKICNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU3BhY2VT
cGxpdFN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTcwLDcgKzY4LDcgQEAgRXhjZXB0aW9uT3I8VmVjdG9yPFJlZjxO
b2RlPj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0RWxlbWVudHNCeUMK
IAogICAgIFZlY3RvcjxSZWY8Tm9kZT4+IG5vZGVzOwogCi0gICAgZm9yIChFbGVtZW50JiBlbGVt
ZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGlzPENvbnRhaW5lck5vZGU+KGNvbnRhaW5lcikgPyBk
b3duY2FzdDxDb250YWluZXJOb2RlPigqY29udGFpbmVyKSA6IGRvY3VtZW50KSkgeworICAgIGZv
ciAoRWxlbWVudCYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGlzPENvbnRh
aW5lck5vZGU+KGNvbnRhaW5lcikgPyBkb3duY2FzdDxDb250YWluZXJOb2RlPigqY29udGFpbmVy
KSA6IGRvY3VtZW50KSkgewogICAgICAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFj
Y2Vzc2libGl0eU9iamVjdEZvck5vZGUoZWxlbWVudCkpIHsKICAgICAgICAgICAgIGlmIChheE9i
amVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCkgPT0gcm9sZSkKICAgICAgICAgICAgICAgICBub2Rl
cy5hcHBlbmQoZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDI5MzBiNDVmOGYyMDc1MWU4NTZjZGEz
ZTA1MTg5YWE0NDRlMTg1NTEuLmFjZTVmOWFjNTNjYmUyNmZkM2M0ZDlkNGYyMjQ5NGZkODA2NWE1
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC01MDksMjAgKzUwOSwxOCBAQCB2b2lkIEluc3BlY3RvckNTU0Fn
ZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGlu
dCBubwogICAgICAgICAvLyBJbmhlcml0ZWQgc3R5bGVzLgogICAgICAgICBpZiAoIWluY2x1ZGVJ
bmhlcml0ZWQgfHwgKmluY2x1ZGVJbmhlcml0ZWQpIHsKICAgICAgICAgICAgIGF1dG8gZW50cmll
cyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHls
ZUVudHJ5Pjo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0g
ZWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwotICAgICAgICAgICAgd2hpbGUgKHBhcmVudEVsZW1l
bnQpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBwYXJlbnRTdHlsZVJlc29sdmVyID0gcGFyZW50
RWxlbWVudC0+c3R5bGVSZXNvbHZlcigpOwotICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50TWF0
Y2hlZFJ1bGVzID0gcGFyZW50U3R5bGVSZXNvbHZlci5zdHlsZVJ1bGVzRm9yRWxlbWVudChwYXJl
bnRFbGVtZW50LCBTdHlsZTo6UmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKKyAgICAgICAgICAgIGZv
ciAoYXV0byYgYW5jZXN0b3IgOiBhbmNlc3RvcnNPZlR5cGU8RWxlbWVudD4oKmVsZW1lbnQpKSB7
CisgICAgICAgICAgICAgICAgYXV0byYgcGFyZW50U3R5bGVSZXNvbHZlciA9IGFuY2VzdG9yLnN0
eWxlUmVzb2x2ZXIoKTsKKyAgICAgICAgICAgICAgICBhdXRvIHBhcmVudE1hdGNoZWRSdWxlcyA9
IHBhcmVudFN0eWxlUmVzb2x2ZXIuc3R5bGVSdWxlc0ZvckVsZW1lbnQoJmFuY2VzdG9yLCBTdHls
ZTo6UmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKICAgICAgICAgICAgICAgICBhdXRvIGVudHJ5ID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5OjpjcmVhdGUoKQot
ICAgICAgICAgICAgICAgICAgICAuc2V0TWF0Y2hlZENTU1J1bGVzKGJ1aWxkQXJyYXlGb3JNYXRj
aGVkUnVsZUxpc3QocGFyZW50TWF0Y2hlZFJ1bGVzLCBzdHlsZVJlc29sdmVyLCAqcGFyZW50RWxl
bWVudCwgUHNldWRvSWQ6Ok5vbmUpKQorICAgICAgICAgICAgICAgICAgICAuc2V0TWF0Y2hlZENT
U1J1bGVzKGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QocGFyZW50TWF0Y2hlZFJ1bGVzLCBz
dHlsZVJlc29sdmVyLCBhbmNlc3RvciwgUHNldWRvSWQ6Ok5vbmUpKQogICAgICAgICAgICAgICAg
ICAgICAucmVsZWFzZSgpOwotICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZWRFbGVtZW50Pigq
cGFyZW50RWxlbWVudCkgJiYgZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKnBhcmVudEVsZW1lbnQp
LmNzc29tU3R5bGUoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvJiBzdHls
ZVNoZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KCpw
YXJlbnRFbGVtZW50KSk7CisgICAgICAgICAgICAgICAgaWYgKGlzPFN0eWxlZEVsZW1lbnQ+KGFu
Y2VzdG9yKSAmJiBkb3duY2FzdDxTdHlsZWRFbGVtZW50PihhbmNlc3RvcikuY3Nzb21TdHlsZSgp
Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlU2hlZXQgPSBhc0lu
c3BlY3RvclN0eWxlU2hlZXQoZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oYW5jZXN0b3IpKTsKICAg
ICAgICAgICAgICAgICAgICAgZW50cnktPnNldElubGluZVN0eWxlKHN0eWxlU2hlZXQuYnVpbGRP
YmplY3RGb3JTdHlsZShzdHlsZVNoZWV0LnN0eWxlRm9ySWQoSW5zcGVjdG9yQ1NTSWQoc3R5bGVT
aGVldC5pZCgpLCAwKSkpKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBl
bnRyaWVzLT5hZGRJdGVtKFdURk1vdmUoZW50cnkpKTsKLSAgICAgICAgICAgICAgICBwYXJlbnRF
bGVtZW50ID0gcGFyZW50RWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpbmhlcml0ZWRFbnRyaWVzID0gV1RGTW92ZShlbnRyaWVzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5j
cHAKaW5kZXggMGY0NmEzMDMzYWVmNDAwN2Y2ZWI4MzdhNjEwNWYwNWEwYzU5MDY3Zi4uZDJjYTVi
YmUxMDlhYWFkMTgyYmFlMTg1YzRkNTJkOGFhZWNkYTg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9zZXBoIFBlY29yYXJvCiAg
KgpAQCAtMTExNCw3ICsxMTE0LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aW5zcGVjdChO
b2RlKiBpbnNwZWN0ZWROb2RlKQogICAgIFJlZlB0cjxOb2RlPiBub2RlID0gaW5zcGVjdGVkTm9k
ZTsKICAgICBzZXRTZWFyY2hpbmdGb3JOb2RlKGlnbm9yZWQsIGZhbHNlLCBudWxscHRyLCBmYWxz
ZSk7CiAKLSAgICBpZiAobm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpFTEVNRU5UX05PREUgJiYg
bm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9OT0RFKQorICAgIGlmICghbm9kZS0+
aXNFbGVtZW50Tm9kZSgpICYmICFub2RlLT5pc0RvY3VtZW50Tm9kZSgpKQogICAgICAgICBub2Rl
ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIG1fbm9kZVRvRm9jdXMgPSBub2RlOwogCkBAIC0x
MTU5LDcgKzExNTksNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVPdmVy
RWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVucwogdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6aGlnaGxpZ2h0TW91c2VkT3Zlck5vZGUoKQogewogICAgIE5vZGUqIG5vZGUgPSBt
X21vdXNlZE92ZXJOb2RlLmdldCgpOwotICAgIHdoaWxlIChub2RlICYmIG5vZGUtPm5vZGVUeXBl
KCkgPT0gTm9kZTo6VEVYVF9OT0RFKQorICAgIGlmIChub2RlICYmIG5vZGUtPmlzVGV4dE5vZGUo
KSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKICAgICBpZiAobm9kZSAmJiBt
X2luc3BlY3RNb2RlSGlnaGxpZ2h0Q29uZmlnKQogICAgICAgICBtX292ZXJsYXktPmhpZ2hsaWdo
dE5vZGUobm9kZSwgKm1faW5zcGVjdE1vZGVIaWdobGlnaHRDb25maWcpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDNmNDY5OWNmODMyOThmMDRlMjc0
YWUwMGVmOTVhNTU0NzVhNjVmM2QuLjA2ZjQ2ZDRhNTY5ZDBmYTBkYzE3YmQ2NTliNjU4ODE1NTcx
NmE2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAg
LTMwLDEyICszMCwxMiBAQAogI2luY2x1ZGUgIkNhY2hlZEZvbnRDbGllbnQuaCIKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
TG9hZGVyLmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogI2luY2x1
ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiV09GRkZpbGVGb3JtYXQuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdG
b250LmNwcAppbmRleCAwMTJkMmYzMWZlMWNlOTlhNzdlODU1ZmM2ZWNlZmI4NmYwNzZkZWI2Li5j
OGY5YmE1MzAwNWY4ZDdiYzkzMGQwOTZkNWYyMTNjOTM4MjVhOWVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAK
ICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5o
IgogI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCkBAIC0zNyw3ICszOCw2IEBACiAjaW5jbHVkZSAi
U2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgotI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlNWR1RvT1RGRm9udENvbnZlcnNpb24uaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApp
bmRleCBkYWQwMDJiMTk2OGFkMGI0MjZmYjEyYjdhNjVhMGYzNzM4NmJlOGJiLi4wNTlmNDVkNjI5
ZjU4ODY1YjQwN2NjYmUxYTcyYWQyZWRmNTNkNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTEyNjAsNiArMTI2MCwxNSBAQCB2b2lkIERyYWdDb250cm9sbGVy
OjpiZWdpbkRyYWcoRHJhZ0l0ZW0gZHJhZ0l0ZW0sIEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UG9p
bnQmCiAgICAgY2xpZW50KCkuYmVnaW5EcmFnKFdURk1vdmUoZHJhZ0l0ZW0pLCBmcmFtZSwgbW91
c2VEb3duUG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMsIG1vdXNlRHJhZ2dlZFBvaW50SW5Sb290
Vmlld0Nvb3JkaW5hdGVzLCBkYXRhVHJhbnNmZXIsIGRyYWdTb3VyY2VBY3Rpb24pOwogfQogCitz
dGF0aWMgUmVmUHRyPEVsZW1lbnQ+IGNvbnRhaW5pbmdMaW5rRWxlbWVudChFbGVtZW50JiBlbGVt
ZW50KQoreworICAgIGZvciAoYXV0byYgY3VycmVudEVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEVs
ZW1lbnQ+KGVsZW1lbnQpKSB7CisgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5pc0xpbmsoKSkK
KyAgICAgICAgICAgIHJldHVybiAmY3VycmVudEVsZW1lbnQ7CisgICAgfQorICAgIHJldHVybiBu
dWxscHRyOworfQorCiB2b2lkIERyYWdDb250cm9sbGVyOjpkb1N5c3RlbURyYWcoRHJhZ0ltYWdl
IGltYWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0xvYywgY29uc3QgSW50UG9pbnQmIGV2ZW50UG9z
LCBGcmFtZSYgZnJhbWUsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIFByb21pc2VkQXR0YWNobWVu
dEluZm8mJiBwcm9taXNlZEF0dGFjaG1lbnRJbmZvKQogewogICAgIG1fZGlkSW5pdGlhdGVEcmFn
ID0gdHJ1ZTsKQEAgLTEyOTYsMTggKzEzMDUsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpkb1N5
c3RlbURyYWcoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0xvYywgY29ucwog
ICAgICAgICAgICAgaXRlbS5kcmFnUHJldmlld0ZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzID0g
ZWxlbWVudC0+Ym91bmRzSW5Sb290Vmlld1NwYWNlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBS
ZWZQdHI8RWxlbWVudD4gbGluazsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmlzTGluaygpKQotICAg
ICAgICAgICAgbGluayA9IGVsZW1lbnQ7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZm9y
IChhdXRvJiBjdXJyZW50RWxlbWVudCA6IGVsZW1lbnRMaW5lYWdlKGVsZW1lbnQuZ2V0KCkpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmlzTGluaygpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGxpbmsgPSAmY3VycmVudEVsZW1lbnQ7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBpZiAobGluaykgeworICAgICAgICBpZiAoYXV0byBsaW5rID0gY29udGFpbmluZ0xpbmtF
bGVtZW50KCplbGVtZW50KSkgewogICAgICAgICAgICAgYXV0byB0aXRsZUF0dHJpYnV0ZSA9IGxp
bmstPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp0aXRsZUF0dHIp
OwogICAgICAgICAgICAgaXRlbS50aXRsZSA9IHRpdGxlQXR0cmlidXRlLmlzRW1wdHkoKSA/IGxp
bmstPmlubmVyVGV4dCgpIDogdGl0bGVBdHRyaWJ1dGUuc3RyaW5nKCk7CiAgICAgICAgICAgICBp
dGVtLnVybCA9IGZyYW1lLmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRy
YWlsaW5nSFRNTFNwYWNlcyhsaW5rLT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0cikp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxT
bmFwT2Zmc2V0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xs
U25hcE9mZnNldHMuY3BwCmluZGV4IGQyNmNlZmU0ZjIwMjM2YzdjNDNhYzVlMjVlZTcxNmVkZDU0
MGUxMGYuLmY4MGExODU0ODk4Y2M4NGY1ZDBlMGY2NzBiZmFmMjUzMDYwYWYxODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZz
ZXRzLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkF4aXNTY3JvbGxTbmFwT2Zmc2V0
cy5oIgogCiAjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJIVE1M
Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGVuZ3Ro
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oCmluZGV4IDdiMzJiMzNkMzE1YWI5NWQyYTBi
ZTk4ZDNlMmYwYTUwYmEwYjllZDMuLjVlZDgwMjViZTc5MDI5MjdmNWQ2NTNiOTc2OWUxMTNmMmNh
ZWM4Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFMaXN0U3VnZ2Vz
dGlvbnNDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dl
c3Rpb25zQ2xpZW50LmgKQEAgLTI3LDExICsyNywxMiBAQAogCiAjaWYgRU5BQkxFKERBVEFMSVNU
X0VMRU1FTlQpCiAKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgSW50UmVjdDsKKwogY2xhc3MgRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCgpID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDYwOTdiNGM2YTNlOWVi
ZDMxOTI5MjZmZTM5MzliOGJiNWQ3ZmVlYzUuLjI2NzQzMzUyZTQ1NzFjMWU3NDBiZmRiNjNmMGNi
NjQwYmM3ZjRjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC01NCw3ICs1NCw2IEBACiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotI2luY2x1ZGUgIkhUTUxDb2xs
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERhdGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgpAQCAtMTEx
NywxMiArMTExNiw5IEBAIHZvaWQgUmVuZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MoY29uc3Qg
UmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAgICAgIHRpY2tSZWdp
b25TaWRlTWFyZ2luID0gdHJhY2tCb3VuZHMueSgpICsgKHRodW1iU2l6ZS53aWR0aCgpIC0gdGlj
a1NpemUud2lkdGgoKSAqIHpvb21GYWN0b3IpIC8gMi4wOwogICAgICAgICB0aWNrUmVnaW9uV2lk
dGggPSB0cmFja0JvdW5kcy5oZWlnaHQoKSAtIHRodW1iU2l6ZS53aWR0aCgpOwogICAgIH0KLSAg
ICBSZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC5vcHRpb25zKCk7CiAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkp
OwogICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKG8uc3R5bGUoKS52aXNpdGVk
RGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvcikpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IE5vZGUqIG5vZGUgPSBvcHRpb25zLT5pdGVtKGkpOyBpKyspIHsK
LSAgICAgICAgQVNTRVJUKGlzPEhUTUxPcHRpb25FbGVtZW50Pigqbm9kZSkpOwotICAgICAgICBI
VE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uRWxlbWVudCA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVt
ZW50Pigqbm9kZSk7CisgICAgZm9yIChhdXRvJiBvcHRpb25FbGVtZW50IDogZGF0YUxpc3Quc3Vn
Z2VzdGlvbnMoKSkgewogICAgICAgICBTdHJpbmcgdmFsdWUgPSBvcHRpb25FbGVtZW50LnZhbHVl
KCk7CiAgICAgICAgIGlmICghaW5wdXQuaXNWYWxpZFZhbHVlKHZhbHVlKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
U3VwcG9ydC5jcHAKaW5kZXggODhjYTNlNTAzNzM3MzAxNWM1MjAzMGYwNTQ4YzBmYjMzMmUxMDc2
ZC4uZmNhZjAwYzUwYmJmNjAzZWYzYTNhOWZkODM0ZDNjOTllMzMzYjk1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCkBAIC02LDYg
KzYsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQu
b3JnPgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIw
MTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggQWRvYmUgU3lz
dGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0yNiw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHUmVu
ZGVyU3VwcG9ydC5oIgogCisjaW5jbHVkZSAiRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCIKICNp
bmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgpAQCAtNDgxLDYgKzQ4Myw3IEBAIHZvaWQg
U1ZHUmVuZGVyU3VwcG9ydDo6c3R5bGVDaGFuZ2VkKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBj
b25zdCBSZW5kZXJTdHlsZSoKIH0KIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCisKIGJv
b2wgU1ZHUmVuZGVyU3VwcG9ydDo6aXNvbGF0ZXNCbGVuZGluZyhjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUpCiB7CiAgICAgcmV0dXJuIHN0eWxlLnN2Z1N0eWxlKCkuaXNvbGF0ZXNCbGVuZGluZygp
IHx8IHN0eWxlLmhhc0ZpbHRlcigpIHx8IHN0eWxlLmhhc0JsZW5kTW9kZSgpIHx8IHN0eWxlLm9w
YWNpdHkoKSA8IDEuMGY7CkBAIC00OTEsMjAgKzQ5NCwxNiBAQCB2b2lkIFNWR1JlbmRlclN1cHBv
cnQ6OnVwZGF0ZU1hc2tlZEFuY2VzdG9yU2hvdWxkSXNvbGF0ZUJsZW5kaW5nKGNvbnN0IFJlbmRl
ckVsZQogICAgIEFTU0VSVChyZW5kZXJlci5lbGVtZW50KCkpOwogICAgIEFTU0VSVChyZW5kZXJl
ci5lbGVtZW50KCktPmlzU1ZHRWxlbWVudCgpKTsKIAotICAgIGJvb2wgbWFza2VkQW5jZXN0b3JT
aG91bGRJc29sYXRlQmxlbmRpbmcgPSByZW5kZXJlci5zdHlsZSgpLmhhc0JsZW5kTW9kZSgpOwot
ICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSByZW5kZXJlci5lbGVtZW50KCktPnBhcmVudEVsZW1l
bnQoKTsgYW5jZXN0b3IgJiYgYW5jZXN0b3ItPmlzU1ZHRWxlbWVudCgpOyBhbmNlc3RvciA9IGFu
Y2VzdG9yLT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKCFkb3duY2FzdDxTVkdFbGVt
ZW50PigqYW5jZXN0b3IpLmlzU1ZHR3JhcGhpY3NFbGVtZW50KCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICBjb25zdCBhdXRvKiBzdHlsZSA9IGFuY2VzdG9yLT5jb21wdXRlZFN0
eWxlKCk7CisgICAgZm9yIChhdXRvJiBhbmNlc3RvciA6IGFuY2VzdG9yc09mVHlwZTxTVkdHcmFw
aGljc0VsZW1lbnQ+KCpyZW5kZXJlci5lbGVtZW50KCkpKSB7CisgICAgICAgIGF1dG8qIHN0eWxl
ID0gYW5jZXN0b3IuY29tcHV0ZWRTdHlsZSgpOwogICAgICAgICBpZiAoIXN0eWxlIHx8ICFpc29s
YXRlc0JsZW5kaW5nKCpzdHlsZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBp
ZiAoYW5jZXN0b3ItPmNvbXB1dGVkU3R5bGUoKS0+c3ZnU3R5bGUoKS5oYXNNYXNrZXIoKSkKLSAg
ICAgICAgICAgIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4oKmFuY2VzdG9yKS5zZXRTaG91
bGRJc29sYXRlQmxlbmRpbmcobWFza2VkQW5jZXN0b3JTaG91bGRJc29sYXRlQmxlbmRpbmcpOwot
CisgICAgICAgIGlmIChzdHlsZS0+c3ZnU3R5bGUoKS5oYXNNYXNrZXIoKSkKKyAgICAgICAgICAg
IGFuY2VzdG9yLnNldFNob3VsZElzb2xhdGVCbGVuZGluZyhyZW5kZXJlci5zdHlsZSgpLmhhc0Js
ZW5kTW9kZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KKwogI2VuZGlmCisKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKaW5kZXggNWU5OWZiYmQyZmUw
Mzg0Yjc5MGMwMDMwYzE1NmFmNmNmNTc4NDM4Mi4uNmJlZjQ0OGUzYjE0NmQ1MzljMTk3MTE3MWMz
OTZmZTdlOGRiOWM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZh
bGlkYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5j
cHAKQEAgLTE3NSw4ICsxNzUsNyBAQCB2b2lkIEludmFsaWRhdG9yOjppbnZhbGlkYXRlU3R5bGVG
b3JEZXNjZW5kYW50cyhFbGVtZW50JiByb290LCBTZWxlY3RvckZpbHRlciogZgogewogICAgIFZl
Y3RvcjxFbGVtZW50KiwgMjA+IHBhcmVudFN0YWNrOwogICAgIEVsZW1lbnQqIHByZXZpb3VzRWxl
bWVudCA9ICZyb290OwotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBkZXNjZW5kYW50c09mVHlwZTxF
bGVtZW50Pihyb290KTsKLSAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5iZWdpbigpLCBl
bmQgPSBkZXNjZW5kYW50cy5lbmQoKTsgaXQgIT0gZW5kOykgeworICAgIGZvciAoYXV0byBpdCA9
IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KHJvb3QpLmJlZ2luKCk7IGl0OyApIHsKICAgICAg
ICAgYXV0byYgZGVzY2VuZGFudCA9ICppdDsKICAgICAgICAgYXV0byogcGFyZW50ID0gZGVzY2Vu
ZGFudC5wYXJlbnRFbGVtZW50KCk7CiAgICAgICAgIGlmIChwYXJlbnRTdGFjay5pc0VtcHR5KCkg
fHwgcGFyZW50U3RhY2subGFzdCgpICE9IHBhcmVudCkgewpAQCAtMjc1LDEyICsyNzQsMTAgQEAg
dm9pZCBJbnZhbGlkYXRvcjo6aW52YWxpZGF0ZVN0eWxlV2l0aE1hdGNoRWxlbWVudChFbGVtZW50
JiBlbGVtZW50LCBNYXRjaEVsZW1lbnQKICAgICAgICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxl
bWVudC5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5l
eHRFbGVtZW50U2libGluZygpKQogICAgICAgICAgICAgaW52YWxpZGF0ZUlmTmVlZGVkKCpzaWJs
aW5nLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNYXRjaEVsZW1lbnQ6OkFu
eVNpYmxpbmc6IHsKLSAgICAgICAgYXV0byBwYXJlbnRDaGlsZHJlbiA9IGNoaWxkcmVuT2ZUeXBl
PEVsZW1lbnQ+KCplbGVtZW50LnBhcmVudE5vZGUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYgcGFy
ZW50Q2hpbGQgOiBwYXJlbnRDaGlsZHJlbikKKyAgICBjYXNlIE1hdGNoRWxlbWVudDo6QW55U2li
bGluZzoKKyAgICAgICAgZm9yIChhdXRvJiBwYXJlbnRDaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPEVs
ZW1lbnQ+KCplbGVtZW50LnBhcmVudE5vZGUoKSkpCiAgICAgICAgICAgICBpbnZhbGlkYXRlSWZO
ZWVkZWQocGFyZW50Q2hpbGQsIG51bGxwdHIpOwogICAgICAgICBicmVhazsKLSAgICB9CiAgICAg
Y2FzZSBNYXRjaEVsZW1lbnQ6OlBhcmVudFNpYmxpbmc6CiAgICAgICAgIGZvciAoYXV0byogc2li
bGluZyA9IGVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBz
aWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkgewogICAgICAgICAgICAgYXV0byBzaWJsaW5n
Q2hpbGRyZW4gPSBjaGlsZHJlbk9mVHlwZTxFbGVtZW50Pigqc2libGluZyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGYzZjM2MjE4M2Q1MDYxNzRhNDY2NjQ2MWM3
MTdiZTc5YjNlNjFmMTQuLjY1MWY4ZjFlMmQ3ODkyMTk5MDY1NmFmYTRmZDllNjllZGNhYzNjMjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xODMsOCArMTgzLDcg
QEAgaW5saW5lIHZvaWQgUmVzb2x2ZXI6OlN0YXRlOjpzZXRQYXJlbnRTdHlsZShzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHBhcmVudFMKIAogc3RhdGljIGlubGluZSBib29sIGlzQXRTaGFk
b3dCb3VuZGFyeShjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIGF1dG8qIHBhcmVudE5v
ZGUgPSBlbGVtZW50LnBhcmVudE5vZGUoKTsKLSAgICByZXR1cm4gcGFyZW50Tm9kZSAmJiBwYXJl
bnROb2RlLT5pc1NoYWRvd1Jvb3QoKTsKKyAgICByZXR1cm4gaXM8U2hhZG93Um9vdD4oZWxlbWVu
dC5wYXJlbnROb2RlKCkpOwogfQogCiBCdWlsZGVyQ29udGV4dCBSZXNvbHZlcjo6YnVpbGRlckNv
bnRleHQoY29uc3QgU3RhdGUmIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKaW5k
ZXggOTlkYjM1OWIyMDQ2MTg0MGZjY2ExNTg4ZWUxMGY1MWVlZjE1NWY4Ni4uNmI0YjYyNTY5MmQ3
YWNhNjJmMTc5YTlhMTQzMWI5YjcyZmVlYmVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQu
Y3BwCkBAIC0xMDIsOSArMTAyLDggQEAgdm9pZCBTVkdBRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIAogUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFNWR0FFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBz
dHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICBpZiAocGFyZW50Tm9kZSgp
ICYmIHBhcmVudE5vZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgZG93bmNhc3Q8U1ZHRWxlbWVudD4o
KnBhcmVudE5vZGUoKSkuaXNUZXh0Q29udGVudCgpKQorICAgIGlmIChpczxTVkdFbGVtZW50Pihw
YXJlbnROb2RlKCkpICYmIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpwYXJlbnROb2RlKCkpLmlzVGV4
dENvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0lubGlu
ZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKLQogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggMmZmY2JhYzUyMTFjOGEwNWFlNDYw
ZDMwY2EwNDI2ZTQ2N2NlYTE4My4uMjIyNDFkYWQ0MTdmYzdlMjY4YmQ2MDdlYTUzMDdiYjJhOTJi
NDUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1t
ZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDggUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAw
OC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwOCBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA5
IENhbWVyb24gTWNDb3JtYWNrIDxjYW1AbWNjLmlkLmF1PgogICogQ29weXJpZ2h0IChDKSAyMDEz
IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC05MTYsMTggKzkx
NiwxMCBAQCB2b2lkIFNWR0VsZW1lbnQ6OnVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9u
KGJvb2wgaGFzUmVsYXRpdmVMZW5ndGhzLCBTVkdFbAogICAgICAgICBtX2VsZW1lbnRzV2l0aFJl
bGF0aXZlTGVuZ3Rocy5yZW1vdmUoZWxlbWVudCk7CiAgICAgfQogCi0gICAgaWYgKCFlbGVtZW50
LT5pc1NWR0dyYXBoaWNzRWxlbWVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGaW5k
IGZpcnN0IHN0eWxlZCBwYXJlbnQgbm9kZSwgYW5kIG5vdGlmeSBpdCB0aGF0IHdlJ3ZlIGNoYW5n
ZWQgb3VyIHJlbGF0aXZlIGxlbmd0aCBzdGF0ZS4KLSAgICBhdXRvIG5vZGUgPSBtYWtlUmVmUHRy
KHBhcmVudE5vZGUoKSk7Ci0gICAgd2hpbGUgKG5vZGUpIHsKLSAgICAgICAgaWYgKCFub2RlLT5p
c1NWR0VsZW1lbnQoKSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIC8vIFJlZ2lzdGVy
IHVzIGluIHRoZSBwYXJlbnQgZWxlbWVudCBtYXAuCi0gICAgICAgIGRvd25jYXN0PFNWR0VsZW1l
bnQ+KCpub2RlKS51cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihoYXNSZWxhdGl2ZUxl
bmd0aHMsIHRoaXMpOwotICAgICAgICBicmVhazsKKyAgICBpZiAoZWxlbWVudC0+aXNTVkdHcmFw
aGljc0VsZW1lbnQoKSkgeworICAgICAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50
Tm9kZSgpKTsKKyAgICAgICAgaWYgKGlzPFNWR0VsZW1lbnQ+KHBhcmVudCkpCisgICAgICAgICAg
ICBkb3duY2FzdDxTVkdFbGVtZW50PigqcGFyZW50KS51cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZv
cm1hdGlvbihoYXNSZWxhdGl2ZUxlbmd0aHMsIHRoaXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmgKaW5kZXggOThmY2ZmYmNhNGQ3MTI2N2U3NDVmZWRiOWIzMGU4MGQwYzliNjJj
Zi4uNjM5MThhYTg4YmYxOTRhMjllNjQzMGFiMWU5OTYwYjg4Y2JlZGUxMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5oCkBAIC0xNDUsNiArMTQ1LDggQEAgcHVibGljOgogICAgIFN0cmluZyBjbGFz
c05hbWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzTmFtZS0+Y3VycmVudFZhbHVlKCk7IH0KICAg
ICBTVkdBbmltYXRlZFN0cmluZyYgY2xhc3NOYW1lQW5pbWF0ZWQoKSB7IHJldHVybiBtX2NsYXNz
TmFtZTsgfQogCisgICAgY29uc3QgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQg
PSBQc2V1ZG9JZDo6Tm9uZSkgZmluYWw7CisKIHByb3RlY3RlZDoKICAgICBTVkdFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgflNWR0VsZW1lbnQo
KTsKQEAgLTE3Myw4ICsxNzUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB3aWxsUmVjYWxjU3R5
bGUoU3R5bGU6OkNoYW5nZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVuZGVy
U3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBQc2V1ZG9JZDo6Tm9uZSkgZmluYWw7Ci0K
ICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJUYXJnZXQoKSB7IH0KIAogICAgIHZvaWQgYnVpbGRQZW5k
aW5nUmVzb3VyY2VzSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApp
bmRleCAxZTc1NTMzOTBlOWI1YmRiYTgzY2EyNjgxNmMxMjJlMTNmYzFlZGE3Li4zOWFmYmQwM2I0
MWVhMGY3ODY1NGRmMzJjMGYyNTFkMjMxMWIwZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVs
ZW1lbnQuY3BwCkBAIC0zMzEsOCArMzMxLDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlRGlzYWxsb3dl
ZEVsZW1lbnRzRnJvbVN1YnRyZWUoU1ZHRWxlbWVudCYgc3VidHJlZSkKICAgICBBU1NFUlQoIXN1
YnRyZWUuaXNDb25uZWN0ZWQoKSk7CiAKICAgICBWZWN0b3I8RWxlbWVudCo+IGRpc2FsbG93ZWRF
bGVtZW50czsKLSAgICBhdXRvIGRlc2NlbmRhbnRzID0gZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVu
dD4oc3VidHJlZSk7Ci0gICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMuYmVnaW4oKSwgZW5k
ID0gZGVzY2VuZGFudHMuZW5kKCk7IGl0ICE9IGVuZDsgKSB7CisgICAgZm9yIChhdXRvIGl0ID0g
ZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oc3VidHJlZSkuYmVnaW4oKTsgaXQ7ICkgewogICAg
ICAgICBpZiAoaXNEaXNhbGxvd2VkRWxlbWVudCgqaXQpKSB7CiAgICAgICAgICAgICBkaXNhbGxv
d2VkRWxlbWVudHMuYXBwZW5kKCYqaXQpOwogICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tp
cHBpbmdDaGlsZHJlbigpOwpAQCAtNDUyLDkgKzQ1MSw4IEBAIHN0YXRpYyB2b2lkIGNsb25lRGF0
YUFuZENoaWxkcmVuKFNWR0VsZW1lbnQmIHJlcGxhY2VtZW50Q2xvbmUsIFNWR0VsZW1lbnQmIG9y
aWdpCiB2b2lkIFNWR1VzZUVsZW1lbnQ6OmV4cGFuZFVzZUVsZW1lbnRzSW5TaGFkb3dUcmVlKCkg
Y29uc3QKIHsKICAgICBhdXRvIGRlc2NlbmRhbnRzID0gZGVzY2VuZGFudHNPZlR5cGU8U1ZHVXNl
RWxlbWVudD4oKnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSk7Ci0gICAgZm9yIChhdXRvIGl0ID0gZGVz
Y2VuZGFudHMuYmVnaW4oKSwgZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7IGl0ICE9IGVuZDsgKSB7
CisgICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMuYmVnaW4oKTsgaXQ7ICkgewogICAgICAg
ICBTVkdVc2VFbGVtZW50JiBvcmlnaW5hbENsb25lID0gKml0OwotICAgICAgICBpdCA9IGVuZDsg
Ly8gRWZmaWNpZW50bHkgcXVpZXRzIGFzc2VydGlvbnMgZHVlIHRvIHRoZSBvdXRzdGFuZGluZyBp
dGVyYXRvci4KIAogICAgICAgICBhdXRvKiB0YXJnZXQgPSBvcmlnaW5hbENsb25lLmZpbmRUYXJn
ZXQoKTsKIApAQCAtNDg1LDkgKzQ4Myw4IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6ZXhwYW5kVXNl
RWxlbWVudHNJblNoYWRvd1RyZWUoKSBjb25zdAogdm9pZCBTVkdVc2VFbGVtZW50OjpleHBhbmRT
eW1ib2xFbGVtZW50c0luU2hhZG93VHJlZSgpIGNvbnN0CiB7CiAgICAgYXV0byBkZXNjZW5kYW50
cyA9IGRlc2NlbmRhbnRzT2ZUeXBlPFNWR1N5bWJvbEVsZW1lbnQ+KCp1c2VyQWdlbnRTaGFkb3dS
b290KCkpOwotICAgIGZvciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmJlZ2luKCksIGVuZCA9IGRl
c2NlbmRhbnRzLmVuZCgpOyBpdCAhPSBlbmQ7ICkgeworICAgIGZvciAoYXV0byBpdCA9IGRlc2Nl
bmRhbnRzLmJlZ2luKCk7IGl0OyApIHsKICAgICAgICAgU1ZHU3ltYm9sRWxlbWVudCYgb3JpZ2lu
YWxDbG9uZSA9ICppdDsKLSAgICAgICAgaXQgPSBlbmQ7IC8vIEVmZmljaWVudGx5IHF1aWV0cyBh
c3NlcnRpb25zIGR1ZSB0byB0aGUgb3V0c3RhbmRpbmcgaXRlcmF0b3IuCiAKICAgICAgICAgLy8g
U3BlYzogVGhlIHJlZmVyZW5jZWQgJ3N5bWJvbCcgYW5kIGl0cyBjb250ZW50cyBhcmUgZGVlcC1j
bG9uZWQgaW50byB0aGUgZ2VuZXJhdGVkIHRyZWUsCiAgICAgICAgIC8vIHdpdGggdGhlIGV4Y2Vw
dGlvbiB0aGF0IHRoZSAnc3ltYm9sJyBpcyByZXBsYWNlZCBieSBhbiAnc3ZnJy4gVGhpcyBnZW5l
cmF0ZWQgJ3N2Zycgd2lsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyLmNwcAppbmRleCA3N2Q5NGFmZTg1ZWJhMTY0MjZhNDE5N2Q3ZjkwNTY4YzNjMzZk
MGFkLi4zZjcyMzEzMWEyMjYyMjNhYzBkZjZiNTBjMmQ5NmEwMmUyYTc3NzBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjc0LDIy
ICsyNzQsMjQgQEAgYm9vbCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50
KGNvbnN0IFN0cmluZyYgY2h1bmssIERvY3VtZW50RnJhZ20KIAogICAgIEhhc2hNYXA8QXRvbVN0
cmluZywgQXRvbVN0cmluZz4gcHJlZml4VG9OYW1lc3BhY2VNYXA7CiAgICAgQXRvbVN0cmluZyBk
ZWZhdWx0TmFtZXNwYWNlVVJJOwotICAgIGJvb2wgc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFtZXNw
YWNlVVJJID0gZmFsc2U7Ci0gICAgCi0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudExp
bmVhZ2UoY29udGV4dEVsZW1lbnQpKSB7Ci0gICAgICAgIGlmIChpczxTVkdGb3JlaWduT2JqZWN0
RWxlbWVudD4oZWxlbWVudCkpCi0gICAgICAgICAgICBzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1l
c3BhY2VVUkkgPSB0cnVlOwotICAgICAgICBlbHNlIGlmICghc3RvcExvb2tpbmdGb3JEZWZhdWx0
TmFtZXNwYWNlVVJJKQotICAgICAgICAgICAgZGVmYXVsdE5hbWVzcGFjZVVSSSA9IGVsZW1lbnQu
bmFtZXNwYWNlVVJJKCk7Ci0KLSAgICAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZXMoKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBh
dHRyaWJ1dGUgOiBlbGVtZW50LmF0dHJpYnV0ZXNJdGVyYXRvcigpKSB7Ci0gICAgICAgICAgICBp
ZiAoYXR0cmlidXRlLnByZWZpeCgpID09IHhtbG5zQXRvbSgpKQotICAgICAgICAgICAgICAgIHBy
ZWZpeFRvTmFtZXNwYWNlTWFwLnNldChhdHRyaWJ1dGUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZS52
YWx1ZSgpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1l
c3BhY2VVUkkgJiYgYXR0cmlidXRlLnByZWZpeCgpID09IHhtbG5zQXRvbSgpKQotICAgICAgICAg
ICAgICAgIGRlZmF1bHROYW1lc3BhY2VVUkkgPSBhdHRyaWJ1dGUudmFsdWUoKTsKKyAgICBpZiAo
Y29udGV4dEVsZW1lbnQpIHsKKyAgICAgICAgYm9vbCBzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1l
c3BhY2VVUkkgPSBmYWxzZTsKKworICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBsaW5lYWdl
T2ZUeXBlPEVsZW1lbnQ+KCpjb250ZXh0RWxlbWVudCkpIHsKKyAgICAgICAgICAgIGlmIChpczxT
VkdGb3JlaWduT2JqZWN0RWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICAgICAgICAgc3RvcExv
b2tpbmdGb3JEZWZhdWx0TmFtZXNwYWNlVVJJID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KCFzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkpCisgICAgICAgICAgICAgICAgZGVm
YXVsdE5hbWVzcGFjZVVSSSA9IGVsZW1lbnQubmFtZXNwYWNlVVJJKCk7CisKKyAgICAgICAgICAg
IGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGVzKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUgOiBlbGVtZW50
LmF0dHJpYnV0ZXNJdGVyYXRvcigpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZS5w
cmVmaXgoKSA9PSB4bWxuc0F0b20oKSkKKyAgICAgICAgICAgICAgICAgICAgcHJlZml4VG9OYW1l
c3BhY2VNYXAuc2V0KGF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgYXR0cmlidXRlLnZhbHVlKCkpOwor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VV
UkkgJiYgYXR0cmlidXRlLnByZWZpeCgpID09IHhtbG5zQXRvbSgpKQorICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0TmFtZXNwYWNlVVJJID0gYXR0cmlidXRlLnZhbHVlKCk7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAK
aW5kZXggM2Y1YjYxODFlMDZlMGE4NDY4OGJkYTkxNmYxMGQ4N2E2MWQxNGJlNy4uNmIyNzczZWM5
NzM1MThhMDFlMTQ1NTQwNTI3MjVlNTU5NDA2YmMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eS5jcHAKQEAgLTU1OSwxMiArNTU5LDExIEBAIHN0YXRpYyBXZWJDb3JlOjpFbGVtZW50
KiBjb250YWluZXJFbGVtZW50Rm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50KQog
ICAgIC8vIMKnMTMuIEVsZW1lbnQgU3RhdGUuCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L3dlYmRyaXZlci93ZWJkcml2ZXItc3BlYy5odG1sI2Rmbi1jb250YWluZXIuCiAgICAgaWYgKGlz
PFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSkgewotICAgICAgICBhdXRvJiBv
cHRpb25FbGVtZW50ID0gZG93bmNhc3Q8V2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1l
bnQpOwogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotICAgICAgICBpZiAoYXV0byogcGFy
ZW50RWxlbWVudCA9IG9wdGlvbkVsZW1lbnQub3duZXJEYXRhTGlzdEVsZW1lbnQoKSkKKyAgICAg
ICAgaWYgKGF1dG8qIHBhcmVudEVsZW1lbnQgPSBXZWJDb3JlOjphbmNlc3RvcnNPZlR5cGU8V2Vi
Q29yZTo6SFRNTERhdGFMaXN0RWxlbWVudD4oZWxlbWVudCkuZmlyc3QoKSkKICAgICAgICAgICAg
IHJldHVybiBwYXJlbnRFbGVtZW50OwogI2VuZGlmCi0gICAgICAgIGlmIChhdXRvKiBwYXJlbnRF
bGVtZW50ID0gb3B0aW9uRWxlbWVudC5vd25lclNlbGVjdEVsZW1lbnQoKSkKKyAgICAgICAgaWYg
KGF1dG8qIHBhcmVudEVsZW1lbnQgPSBkb3duY2FzdDxXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVu
dD4oZWxlbWVudCkub3duZXJTZWxlY3RFbGVtZW50KCkpCiAgICAgICAgICAgICByZXR1cm4gcGFy
ZW50RWxlbWVudDsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2Vy
LmNwcAppbmRleCBmNTE5NDFlNmI0ZWMxMjE5ZDJiYmRhMGZhOTk1N2RjNTM4MjdjNzhiLi5kMGNm
ZTlkMTczYWQ5NzhiNTg2NmRlNWY2YmYzNDU0Mjk3ODI2ZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFn
ZXIuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Q29sb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0VsZW1lbnRJdGVyYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnVsbHNjcmVlbk1hbmFn
ZXIuaD4KQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlck9iamVjdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0
dGluZ3MuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICNpbmNsdWRlICJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDhmNTEwNjdhMzk5OGNmYjNhYTVm
ZTcwMTRmMzZiOWFkNjc1NmIzNDQuLmZiOGY3NmQ1ODllNzNhOWEyZDk1NzMwZjBkMWY1ZTg3NmM2
NWU4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC03OTUsNyArNzk1LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPENvbG9yQ2hvb3Nlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29z
ZXIoQ29sb3JDaG9vc2VyQ2wKIAogc3RkOjp1bmlxdWVfcHRyPERhdGFMaXN0U3VnZ2VzdGlvblBp
Y2tlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoRGF0
YUxpc3RTdWdnZXN0aW9uc0NsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4oJm1fcGFnZSwgJmNsaWVudCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyPihtX3BhZ2UsIGNsaWVu
dCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2Vy
LmNwcAppbmRleCBhZWI4NzM3YWRkNDczYzAzYWI2ZTExNzUyZmYwYzIyNGM4ZGUwODE4Li5iMjBi
MGFjZjg4YTQ5ZmY1MGUzNTQxNTZmNDIxYjg2YTA2MTFlZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw0NyArMzUsNDUgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2Vy
OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2ViUGFnZSogcGFnZSwgRGF0YUxpc3RTdWdn
ZXN0aW9uc0NsaWVudCogY2xpZW50KQotICAgIDogbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50
KGNsaWVudCkKK1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6V2ViRGF0YUxpc3RTdWdnZXN0
aW9uUGlja2VyKFdlYlBhZ2UmIHBhZ2UsIFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbnNDbGll
bnQmIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fcGFnZShwYWdlKQog
ewogfQogCi1XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6On5XZWJEYXRhTGlzdFN1Z2dlc3Rp
b25QaWNrZXIoKSB7IH0KLQotdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmhhbmRs
ZUtleWRvd25XaXRoSWRlbnRpZmllcihjb25zdCBXVEY6OlN0cmluZyYga2V5KQordm9pZCBXZWJE
YXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmhhbmRsZUtleWRvd25XaXRoSWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIGtleSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUtleWRv
d25JbkRhdGFMaXN0KGtleSksIG1fcGFnZS0+aWRlbnRpZmllcigpKTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkhhbmRsZUtleWRvd25JbkRhdGFMaXN0KGtleSksIG1fcGFnZS5pZGVudGlm
aWVyKCkpOwogfQogCi12b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlkU2VsZWN0
T3B0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKK3ZvaWQgV2ViRGF0YUxp
c3RTdWdnZXN0aW9uUGlja2VyOjpkaWRTZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJiBzZWxlY3Rl
ZE9wdGlvbikKIHsKLSAgICBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQtPmRpZFNlbGVjdERh
dGFMaXN0T3B0aW9uKHNlbGVjdGVkT3B0aW9uKTsKKyAgICBtX2NsaWVudC5kaWRTZWxlY3REYXRh
TGlzdE9wdGlvbihzZWxlY3RlZE9wdGlvbik7CiB9CiAKIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0
aW9uUGlja2VyOjpkaWRDbG9zZVN1Z2dlc3Rpb25zKCkKIHsKLSAgICBtX2RhdGFMaXN0U3VnZ2Vz
dGlvbnNDbGllbnQtPmRpZENsb3NlU3VnZ2VzdGlvbnMoKTsKKyAgICBtX2NsaWVudC5kaWRDbG9z
ZVN1Z2dlc3Rpb25zKCk7CiB9CiAKIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpj
bG9zZSgpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFbmREYXRhTGlzdFN1Z2dlc3Rp
b25zKCksIG1fcGFnZS0+aWRlbnRpZmllcigpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkVuZERhdGFMaXN0U3VnZ2VzdGlvbnMoKSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7CiB9CiAKLXZv
aWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpkaXNwbGF5V2l0aEFjdGl2YXRpb25UeXBl
KERhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBlIHR5cGUpCit2b2lkIFdlYkRhdGFMaXN0
U3VnZ2VzdGlvblBpY2tlcjo6ZGlzcGxheVdpdGhBY3RpdmF0aW9uVHlwZShXZWJDb3JlOjpEYXRh
TGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSB0eXBlKQogewotICAgIGlmICghbV9kYXRhTGlz
dFN1Z2dlc3Rpb25zQ2xpZW50LT5zdWdnZXN0aW9ucygpLnNpemUoKSkgeworICAgIGF1dG8gc3Vn
Z2VzdGlvbnMgPSBtX2NsaWVudC5zdWdnZXN0aW9ucygpOworICAgIGlmIChzdWdnZXN0aW9ucy5p
c0VtcHR5KCkpIHsKICAgICAgICAgY2xvc2UoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fcGFnZS0+c2V0QWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKHRoaXMpOworICAg
IG1fcGFnZS5zZXRBY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoKnRoaXMpOwogCi0gICAg
RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24gaW5mbyA9IHsgdHlwZSwgbV9kYXRhTGlzdFN1
Z2dlc3Rpb25zQ2xpZW50LT5zdWdnZXN0aW9ucygpLCBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGll
bnQtPmVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgfTsKLSAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNob3dEYXRhTGlzdFN1Z2dlc3Rpb25zKGluZm8pLCBtX3BhZ2UtPmlkZW50
aWZpZXIoKSk7CisgICAgV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24gaW5m
byB7IHR5cGUsIFdURk1vdmUoc3VnZ2VzdGlvbnMpLCBtX2NsaWVudC5lbGVtZW50UmVjdEluUm9v
dFZpZXdDb29yZGluYXRlcygpIH07CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93RGF0
YUxpc3RTdWdnZXN0aW9ucyhpbmZvKSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5o
CmluZGV4IDk3MDUzNTk4OTBiNzY2MWFmNmNhODA3MTcwYjM1M2I1OThjNTBmNzkuLjEzNTEwNzM1
MjE0MjllZjg3ZGVkMTQyYzQ5NjE0MTkwY2Q4NjMwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxp
c3RTdWdnZXN0aW9uUGlja2VyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShEQVRBTElTVF9F
TEVNRU5UKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudDsKQEAgLTM4LDE5ICszNywyMCBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgV2ViRGF0YUxpc3RTdWdn
ZXN0aW9uUGlja2VyIDogcHVibGljIFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlciB7
CitjbGFzcyBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyIHsKIHB1YmxpYzoKLSAgICBXZWJEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXIoV2ViUGFnZSosIFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbnNDbGll
bnQqKTsKLSAgICB2aXJ0dWFsIH5XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoKTsKKyAgICBX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2ViUGFnZSYsIFdlYkNvcmU6OkRhdGFMaXN0U3Vn
Z2VzdGlvbnNDbGllbnQmKTsKIAotICAgIHZvaWQgaGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU2VsZWN0T3B0aW9uKGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgZGlkQ2xvc2VTdWdnZXN0aW9ucygpOwotICAgIHZvaWQgY2xv
c2UoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpc3BsYXlXaXRoQWN0aXZhdGlvblR5cGUoV2ViQ29y
ZTo6RGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUpIG92ZXJyaWRlOworCiBwcml2YXRl
OgotICAgIFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQqIG1fZGF0YUxpc3RTdWdn
ZXN0aW9uc0NsaWVudDsKLSAgICBXZWJQYWdlKiBtX3BhZ2U7CisgICAgdm9pZCBoYW5kbGVLZXlk
b3duV2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBkaXNwbGF5
V2l0aEFjdGl2YXRpb25UeXBlKFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25U
eXBlKSBmaW5hbDsKKyAgICB2b2lkIGNsb3NlKCkgZmluYWw7CisKKyAgICBXZWJDb3JlOjpEYXRh
TGlzdFN1Z2dlc3Rpb25zQ2xpZW50JiBtX2NsaWVudDsKKyAgICBXZWJQYWdlJiBtX3BhZ2U7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA3MWE3ODYwZDU4ZjZkNTIxNTE0ZDMzN2I4YzA3MjE2
Njg4MmYwNmYwLi5kNDVkMTUyNTI5YTIyNDhmMjJmZmY5OWEwMzA0MGQwNzM4MWRkZDE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUs
NiArNTUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Eb2N1bWVudExvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXZl
bnRIYW5kbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZS5oPgpAQCAtNzEsNyArNzIsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSlNFbGVtZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0ZpbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTUmFu
Z2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL05vZGVUcmF2ZXJzYWwuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRvY3VtZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZW5kZXJUcmVlQXNUZXh0Lmg+CkBAIC02NjYsMTcgKzY2Niw4IEBAIGJvb2wg
V2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9ybUVsZW1lbnRzKCkgY29uc3QKICAgICBpZiAoIW1fY29y
ZUZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gbV9jb3JlRnJhbWUtPmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZm9yIChOb2RlKiBub2RlID0gZG9jdW1lbnQtPmRvY3Vt
ZW50RWxlbWVudCgpOyBub2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSkpIHsK
LSAgICAgICAgaWYgKCFpczxFbGVtZW50Pigqbm9kZSkpCi0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgaWYgKGlzPEhUTUxGb3JtRWxlbWVudD4oKm5vZGUpKQotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvKiBkb2N1bWVudCA9
IG1fY29yZUZyYW1lLT5kb2N1bWVudCgpOworICAgIHJldHVybiBkb2N1bWVudCAmJiBjaGlsZHJl
bk9mVHlwZTxIVE1MRm9ybUVsZW1lbnQ+KCpkb2N1bWVudCkuZmlyc3QoKTsKIH0KIAogYm9vbCBX
ZWJGcmFtZTo6Y29udGFpbnNBbnlGb3JtQ29udHJvbHMoKSBjb25zdApAQCAtNjg0LDE0ICs2NzUs
MTIgQEAgYm9vbCBXZWJGcmFtZTo6Y29udGFpbnNBbnlGb3JtQ29udHJvbHMoKSBjb25zdAogICAg
IGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBhdXRvKiBkb2N1
bWVudCA9IG1fY29yZUZyYW1lLT5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGZvciAoTm9kZSogbm9kZSA9IGRvY3VtZW50LT5kb2N1
bWVudEVsZW1lbnQoKTsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUpKSB7
Ci0gICAgICAgIGlmICghaXM8RWxlbWVudD4oKm5vZGUpKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSkgfHwgaXM8SFRNTFNlbGVj
dEVsZW1lbnQ+KCpub2RlKSB8fCBpczxIVE1MVGV4dEFyZWFFbGVtZW50Pigqbm9kZSkpCisgICAg
Zm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KCpkb2N1bWVudCkpIHsK
KyAgICAgICAgaWYgKGlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PihjaGlsZCkgfHwgaXM8
SFRNTFNlbGVjdEVsZW1lbnQ+KGNoaWxkKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IGMwNTRkNTE5ODRjODM2MjU3ZDE1Y2Y3NTExZGNmMjUyNWI3NmFi
YjUuLjBjMzdlZWQ0MTFiNzI0YjZjYjQ1MWFhNjBlZTM4NTk2OTBjNDhjYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00MTAxLDkgKzQxMDEs
OSBAQCB2b2lkIFdlYlBhZ2U6OmRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBj
b2xvcikKIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogCi12b2lkIFdlYlBhZ2U6OnNl
dEFjdGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNr
ZXIqIGRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcikKK3ZvaWQgV2ViUGFnZTo6c2V0QWN0aXZlRGF0
YUxpc3RTdWdnZXN0aW9uUGlja2VyKFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlciYgZGF0YUxp
c3RTdWdnZXN0aW9uUGlja2VyKQogewotICAgIG1fYWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyID0gbWFrZVdlYWtQdHIoZGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKTsKKyAgICBtX2FjdGl2
ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlciA9IG1ha2VXZWFrUHRyKCZkYXRhTGlzdFN1Z2dlc3Rp
b25QaWNrZXIpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmRpZFNlbGVjdERhdGFMaXN0T3B0aW9uKGNv
bnN0IFN0cmluZyYgc2VsZWN0ZWRPcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggYTY4OTUzMGYzODM2ZDZmNGNiYjBmNTY5NzJkM2ZlMTEwZTgx
MzI1NS4uYWNmN2U0YWMwNWIwZmVhZTQ1MTA1NTllNmMxZjk3YjkyMGNkOThlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDE3LDcgKzQxNyw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAgdm9p
ZCBzZXRBY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2ViRGF0YUxpc3RTdWdnZXN0aW9u
UGlja2VyKik7CisgICAgdm9pZCBzZXRBY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyJik7CiAgICAgdm9pZCBkaWRTZWxlY3REYXRhTGlzdE9w
dGlvbihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRpZENsb3NlU3VnZ2VzdGlvbnMoKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQppbmRleCA3ODY1MzEzZTE3YjNjZTA3NTJjZDIxZjcxOWZiMjhiNzRmZGRjZmQ1Li5m
MGMyMGU0MTU0MWMwZjA5NmM4MGFkYjk2Mjc2YTRhN2U4NmNmMzE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjUxMywx
MSArMjUxMywxMiBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQo
KQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rpb25D
b250ZXh0KGF1dG9jb3JyZWN0aW9uQ29udGV4dCgpKSk7CiB9CiAKLXN0YXRpYyBIVE1MQW5jaG9y
RWxlbWVudCogY29udGFpbmluZ0xpbmtFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCitzdGF0aWMg
SFRNTEFuY2hvckVsZW1lbnQqIGNvbnRhaW5pbmdMaW5rQW5jaG9yRWxlbWVudChFbGVtZW50JiBl
bGVtZW50KQogewotICAgIGZvciAoYXV0byYgY3VycmVudEVsZW1lbnQgOiBlbGVtZW50TGluZWFn
ZShlbGVtZW50KSkgewotICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuaXNMaW5rKCkgJiYgaXM8
SFRNTEFuY2hvckVsZW1lbnQ+KGN1cnJlbnRFbGVtZW50KSkKLSAgICAgICAgICAgIHJldHVybiBk
b3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oJmN1cnJlbnRFbGVtZW50KTsKKyAgICAvLyBGSVhN
RTogVGhlcmUgaXMgY29kZSBpbiB0aGUgZHJhZyBjb250cm9sbGVyIHRoYXQgc3VwcG9ydHMgYW55
IGxpbmssIGV2ZW4gaWYgaXQncyBub3QgYW4gSFRNTEFuY2hvckVsZW1lbnQuIFdoeSBpcyB0aGlz
IGRpZmZlcmVudD8KKyAgICBmb3IgKGF1dG8mIGN1cnJlbnRFbGVtZW50IDogbGluZWFnZU9mVHlw
ZTxIVE1MQW5jaG9yRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRFbGVt
ZW50LmlzTGluaygpKQorICAgICAgICAgICAgcmV0dXJuICZjdXJyZW50RWxlbWVudDsKICAgICB9
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0yNjg3LDcgKzI2ODgsNyBAQCBzdGF0aWMgdm9p
ZCBlbGVtZW50UG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBJbgogewogICAgIEVsZW1lbnQqIGxpbmtFbGVtZW50ID0gbnVsbHB0cjsKICAg
ICBpZiAoZWxlbWVudC5yZW5kZXJlcigpICYmIGVsZW1lbnQucmVuZGVyZXIoKS0+aXNSZW5kZXJJ
bWFnZSgpKQotICAgICAgICBsaW5rRWxlbWVudCA9IGNvbnRhaW5pbmdMaW5rRWxlbWVudCgmZWxl
bWVudCk7CisgICAgICAgIGxpbmtFbGVtZW50ID0gY29udGFpbmluZ0xpbmtBbmNob3JFbGVtZW50
KGVsZW1lbnQpOwogICAgIGVsc2UgaWYgKGVsZW1lbnQuaXNMaW5rKCkpCiAgICAgICAgIGxpbmtF
bGVtZW50ID0gJmVsZW1lbnQ7CiAKQEAgLTI5NTYsNyArMjk1Nyw3IEBAIHZvaWQgV2ViUGFnZTo6
cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCiAgICAgICAgIGlmIChpczxS
ZW5kZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIoKSkpIHsKICAgICAgICAgICAgIFVSTCB1cmw7
CiAgICAgICAgICAgICBTdHJpbmcgdGl0bGU7Ci0gICAgICAgICAgICBpZiAoYXV0byogbGlua0Vs
ZW1lbnQgPSBjb250YWluaW5nTGlua0VsZW1lbnQoJmVsZW1lbnQpKSB7CisgICAgICAgICAgICBp
ZiAoYXV0byogbGlua0VsZW1lbnQgPSBjb250YWluaW5nTGlua0FuY2hvckVsZW1lbnQoZWxlbWVu
dCkpIHsKICAgICAgICAgICAgICAgICB1cmwgPSBsaW5rRWxlbWVudC0+aHJlZigpOwogICAgICAg
ICAgICAgICAgIHRpdGxlID0gbGlua0VsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oSFRNTE5hbWVzOjp0aXRsZUF0dHIpOwogICAgICAgICAgICAgICAgIGlmICghdGl0bGUu
bGVuZ3RoKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9j
dW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KaW5k
ZXggNWMxM2Q2MzdlMWY3ZmY2ZjgyZDkyOTQyOGRmYjgyNTA1YjM4Y2FjOS4uYWRjZDAxN2QzMDY1
ZTIzMmE2N2NhNDI1NTZmMzVjNWNkZTZlY2YwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01Eb2N1bWVudC5tbQpAQCAtMjUsMTMgKzI1LDYgQEAKIAogI2ltcG9ydCAiRE9NRG9j
dW1lbnRJbnRlcm5hbC5oIgogCi0jaW1wb3J0IDxXZWJDb3JlL0F0dHIuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvQ0RBVEFTZWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0NTU1J1bGVMaXN0Lmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL0NTU1N0eWxlRGVjbGFyYXRpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUv
Q29tbWVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZ1bGxzY3JlZW4uaD4KLSNpbXBv
cnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgIkRPTUFic3RyYWN0Vmlld0lu
dGVybmFsLmgiCiAjaW1wb3J0ICJET01BdHRySW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUNEQVRB
U2VjdGlvbkludGVybmFsLmgiCkBAIC01NywxNSArNTAsMjIgQEAKICNpbXBvcnQgIkRPTVN0eWxl
U2hlZXRMaXN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVRleHRJbnRlcm5hbC5oIgogI2ltcG9y
dCAiRE9NVHJlZVdhbGtlckludGVybmFsLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0RPTVdpbmRvdy5o
PgogI2ltcG9ydCAiRE9NWFBhdGhFeHByZXNzaW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVhQ
YXRoUmVzdWx0SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCisjaW1w
b3J0ICJPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oIgorI2ltcG9ydCA8V2ViQ29yZS9BdHRyLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0NEQVRBU2VjdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9DU1NS
dWxlTGlzdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9DU1NTdHlsZURlY2xhcmF0aW9uLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0NvbW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NV2luZG93Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50RnJh
Z21lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRGdWxsc2NyZWVuLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RvY3VtZW50VHlwZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0V2ZW50Lmg+Ci0jaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MQ29sbGVjdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1M
RWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MSGVhZEVsZW1lbnQuaD4KQEAgLTczLDEy
ICs3MywxMSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9OYW1lTm9kZUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvTmF0aXZlTm9kZUZpbHRlci5o
PgotI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVJdGVyYXRv
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgotI2ltcG9ydCAiT2JqQ05vZGVGaWx0
ZXJDb25kaXRpb24uaCIKICNpbXBvcnQgPFdlYkNvcmUvUHJvY2Vzc2luZ0luc3RydWN0aW9uLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1JhbmdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TdHlsZVNoZWV0TGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0Lmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnRGcmFnbWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tCmluZGV4
IDA3MjkzMGUzOTU4ZTIwYTEyZTNjZTNjNTdlMTk5NGZlM2RkYzE2NWUuLmNmMWEzYzFmODQzN2Jk
NWJlOTIwZDg4NGUzNWFjMDUzZjg5Zjg0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tCkBAIC0zMiw3ICszMiw2IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0RvY3VtZW50RnJhZ21lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWxlbWVu
dC5oPgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKLSNpbXBvcnQgPFdlYkNvcmUvSFRN
TENvbGxlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvTmFtZU5vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0Lmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxl
bWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRmllbGRTZXRFbGVt
ZW50Lm1tCmluZGV4IGE0YzFiNjA4YzE2ZDIxZTU4NzcxMDE1MjY3NzliYTY0NTUwNjkwYzMuLmZk
OTk0YWI1YmUxNGVjYzNiMjE0Zjk0NTIxYzhkMzAzYTk2YjkyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRmllbGRTZXRFbGVtZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRmllbGRTZXRFbGVtZW50Lm1tCkBAIC0y
NSwyMSArMjUsMTAgQEAKIAogI2ltcG9ydCAiRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogCi0j
aW1wb3J0ICJET01IVE1MQ29sbGVjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJET01IVE1MRm9y
bUVsZW1lbnRJbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRP
TU5vZGVJbnRlcm5hbC5oIgotI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKLSNpbXBvcnQg
PFdlYkNvcmUvSFRNTENvbGxlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTEZpZWxkU2V0
RWxlbWVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9IVE1MRm9ybUVsZW1lbnQuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1ZhbGlkaXR5
U3RhdGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgotI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0KaW5kZXggNWM1MWQ0OGZlMzI2OTM3NTlh
ODQ1ZTJkNGM3ZTgzNDFjNGEyMDZhZS4uNjZiYWU2OWY0NTU3MDRmNTdjNDNiYThhNDMxYjc1MmYy
NzY4N2MxOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0KKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIubW0KQEAgLTI5LDEyICsyOSwxMyBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaCIKKworI2ltcG9y
dCAiQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIgorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oIgogI2ltcG9ydCAiSW5qZWN0ZWRCdW5kbGUuaCIKICNpbXBvcnQgIkluamVjdGVkQnVu
ZGxlUGFnZS5oIgogI2ltcG9ydCAiSlNXcmFwcGVyLmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5
Tm90aWZpY2F0aW9uSGFuZGxlci5oIgotI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
IgotCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgogI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3Ry
aW5nUmVmQ0YuaD4KQEAgLTQ2LDE5ICs0Nyw2IEBAIEBpbnRlcmZhY2UgTlNPYmplY3QgKFdlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQWRkaXRpb25zKQogKyAodm9pZClhY2Nlc3NpYmlsaXR5
U2V0U2hvdWxkUmVwb3N0Tm90aWZpY2F0aW9uczooQk9PTClyZXBvc3Q7CiBAZW5kCiAKLUBpbnRl
cmZhY2UgTlNTdHJpbmcgKEpTU3RyaW5nUmVmQWRkaXRpb25zKQotLSAoSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+KWNyZWF0ZUpTU3RyaW5nUmVmOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gTlNT
dHJpbmcgKEpTU3RyaW5nUmVmQWRkaXRpb25zKQotCi0tIChKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4pY3JlYXRlSlNTdHJpbmdSZWYKLXsKLSAgICByZXR1cm4gYWRvcHQoSlNTdHJpbmdDcmVhdGVX
aXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXNlbGYpKTsKLX0KLQotQGVuZAotCiBA
aW1wbGVtZW50YXRpb24gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIKIAogLSAoaWQp
aW5pdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGU5MTc4MjYwZmRmNjU4Y2Y3ZDJlYTAyNTllODY4NjRkNDI3YTc1MGMuLjNm
ZDI5NWEyNDgxNjdjODBlMmVlOWI0ZDQzYWY4MDk5ZWEzZGIxNTkgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
OCBAQAorMjAyMC0wMi0xOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aXNlIERPTSBpdGVyYXRvcnMgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvZGF0
YWxpc3QvZGF0YWxpc3QtZXhwZWN0ZWQudHh0OiBVcGRhdGVkIGV4cGVjdGF0aW9ucy4KKyAgICAg
ICAgKiBmYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0Lmh0bWw6IFVwZGF0ZWQgdGVzdCBzaW5j
ZSB0aGUgb3B0aW9ucyBjb2xsZWN0aW9uCisgICAgICAgIGRvZXMgbm90IGluZGljYXRlIHdoaWNo
IG9wdGlvbnMgYXJlIHN1Z2dlc3Rpb25zIGFuZCB3aGljaCBhcmUgbm90LiBUaGUgd2ViCisgICAg
ICAgIHBsYXRmb3JtIHRlc3RzIGFscmVhZHkgaGFkIHRoaXMgcmlnaHQsIHdoaWNoIGlzIHdoeSB3
ZSBoYWQgYSBmYWlsaW5nIHRlc3QgdGhlcmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnM6IFJlbW92ZWQgc29tZSBsaW5lcyBmb3IgdGVzdCB0aGF0IGRvbid0
CisgICAgICAgIGV4aXN0IGF0IHRoZSBwYXRocyBtZW50aW9uZWQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMtd2sxL2Zhc3QvZm9ybXMvZm9ybS1wc2V1ZG8tdmFsaWQtc3R5bGUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMvY29uc3RyYWludHMvZm9ybS12YWxp
ZGF0aW9uLXdpbGxWYWxpZGF0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9mYXN0L2Zvcm1zL2Zvcm0tcHNldWRvLXZhbGlkLXN0eWxlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgIEV4cGVjdCBmYWlsdXJlIG9uIHRoZSBwYXJ0cyBvZiB0aGVzZSB0ZXN0
cyB0aGF0IGFyZSBzcGVjaWZpYyB0byBkYXRhbGlzdCwgc2luY2UKKyAgICAgICAgZGF0YWxpc3Qg
aXMgbm90IGVuYWJsZWQgaW4gdGhlc2UgY29uZmlndXJhdGlvbnMuIEJlZm9yZSBub3csIHRoZSBj
b2RlIHdhc24ndAorICAgICAgICBwcm9wZXJseSBjb25kaXRpb25hbGl6ZWQgYW5kIHNvbWUgb2Yg
dGhlIGRhdGFsaXN0IGJlaGF2aW9yIHdvdWxkIGJlIGFjdGl2ZSBldmVuCisgICAgICAgIHdoZW4g
dGhlIGZlYXR1cmUgd2FzIGRpc2FibGVkLiBCZXN0IGxvbmdlciB0ZXJtIHNvbHV0aW9uIGlzIHRv
IHR1cm4gdGhpcyBmZWF0dXJlCisgICAgICAgIG9uIGZvciBtb3JlIHBsYXRmb3JtcywgcGVyaGFw
cyBhbGwgb2YgdGhlbS4gRm9yIG5vdywgbGFuZGVkIG5ldyBleHBlY3RlZCByZXN1bHRzCisgICAg
ICAgIGZvciBjYXNlcyB0aGF0IEVXUyBpbmRpY2F0ZWQuCisKIDIwMjAtMDItMTkgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBBdWRp
b1Nlc3Npb24gaGFuZGxpbmcgaW4gR1BVUHJvY2VzcyBmb3IgY2FwdHVyZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cKaW5kZXggYjgxMjZlYTYyNTcwYTRiMTk3ZDgwNDdjZGQwNzk5OWIzNjgx
YTZkMy4uMjIwMGVmOTg1ZmIxYmE4NWY0NjEwZWJiZGMxNDFjMGZkYzljNTQwMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDItMTggIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlzZSBET00gaXRlcmF0b3Jz
IGltcGxlbWVudGF0aW9uIGFuZCB1c2FnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA3ODE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9y
bXMvdGhlLWRhdGFsaXN0LWVsZW1lbnQvZGF0YWxpc3RvcHRpb25zLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgRXhwZWN0IHRoaXMgdGVzdCB0byBwYXNzIGluc3RlYWQgb2YgZmFpbGluZy4KKwogMjAy
MC0wMi0xOSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE1haW4gaW1w
bGVtZW50YXRpb24gZm9yIGxhenkgaW1hZ2UgbG9hZGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LWV4cGVjdGVkLnR4dAppbmRleCA0NjA5NDg5
MDRjZDIwMTk5ZjFkOTEyNmI4MmMxNGQ3YjljNDA0NzZlLi5jYmE2NTA1NzI3NmY0YWYxNTc5MDI4
OTllMWYzNTZkMzRjYTAyOTI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Rh
dGFsaXN0L2RhdGFsaXN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2RhdGFsaXN0L2RhdGFsaXN0LWV4cGVjdGVkLnR4dApAQCAtMyw4ICszLDggQEAgVGVzdCBmb3Ig
dGhlIGRhdGFsaXN0IGVsZW1lbnQuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFT
UyBkYXRhbGlzdC5vcHRpb25zLmxlbmd0aCBpcyA0Ci1QQVNTIGRhdGFsaXN0Lm9wdGlvbnMubGVu
Z3RoIGlzIDMKK1BBU1MgZGF0YWxpc3Qub3B0aW9ucy5sZW5ndGggaXMgNQorUEFTUyBkYXRhbGlz
dC5vcHRpb25zLmxlbmd0aCBpcyA1CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAK
IFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxp
c3QvZGF0YWxpc3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxp
c3QuaHRtbAppbmRleCA1NjFiNjZiNWM1ZDIyMjhmODNiNWQ4MjE1OTc5ZjA1ODkxMDE3OTM1Li5j
YWMxNWVmMTJiYmVmOWI1MzYzMjFkOWRlZjQ1MDUzYjEzYWQ3M2QyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0Lmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC5odG1sCkBAIC0xLDcgKzEsNyBAQAogPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CkBAIC0xNywxOCAr
MTcsMjAgQEAKIDwvZGF0YWxpc3Q+CiAKIDxzY3JpcHQ+CisKIGRlc2NyaXB0aW9uKCdUZXN0IGZv
ciB0aGUgZGF0YWxpc3QgZWxlbWVudC4nKTsKIAogdmFyIGRhdGFsaXN0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2RsMScpOwotLy8gQW4gb3B0aW9uIGVsZW1lbnQgd2l0aCBlbXB0eSB2YWx1
ZSBpcyBub3QgaW5jbHVkZWQuCi1zaG91bGRCZSgnZGF0YWxpc3Qub3B0aW9ucy5sZW5ndGgnLCAn
NCcpOwogCisvLyBBbiBvcHRpb24gZWxlbWVudCB3aXRoIGVtcHR5IHZhbHVlIGlzIG5vdCBhIHN1
Z2dlc3Rpb24sIGJ1dCBzdGlsbCBpcyBpbmNsdWRlZCBpbiB0aGUgb3B0aW9ucyBjb2xsZWN0aW9u
Lgorc2hvdWxkQmUoJ2RhdGFsaXN0Lm9wdGlvbnMubGVuZ3RoJywgJzUnKTsKKworLy8gQSBkaXNh
YmxlZCBvcHRpb24gZWxlbWVudCBpcyBubyBsb25nZXIgYSBzdWdnZXN0aW9uLCBidXQgc3RpbGwg
aXMgaW5jbHVkZWQgaW4gdGhlIG9wdGlvbnMgY29sbGVjdGlvbi4KIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdvNCcpLmRpc2FibGVkID0gdHJ1ZTsKLS8vIEEgZGlzYWJsZWQgb3B0aW9uIGVsZW1l
bnQgaXMgbm90IGluY2x1ZGVkLgotc2hvdWxkQmUoJ2RhdGFsaXN0Lm9wdGlvbnMubGVuZ3RoJywg
JzMnKTsKLS8vIEFmdGVyIGRhdGFsaXN0IGlzIGltcGxlbWVudGVkLCB0aGUgZXhwZWN0ZWQgdGV4
dCBzaG91bGQgbm90IGNvbnRhaW4gdGhlCi0vLyB0ZXh0IGluIHRoZSBkYXRhbGlzdCBlbGVtZW50
Lgorc2hvdWxkQmUoJ2RhdGFsaXN0Lm9wdGlvbnMubGVuZ3RoJywgJzUnKTsKKworLy8gQWxzbywg
dGhlIGV4cGVjdGVkIHRleHQgc2hvdWxkIG5vdCBjb250YWluIHRoZSB0ZXh0IGluIHRoZSBkYXRh
bGlzdCBlbGVtZW50LgorCiA8L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZm9ybXMvdGhlLWRhdGFsaXN0LWVsZW1lbnQvZGF0YWxpc3RvcHRpb25zLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZm9ybXMvdGhlLWRhdGFsaXN0LWVsZW1lbnQvZGF0YWxpc3RvcHRpb25zLWV4cGVj
dGVkLnR4dAppbmRleCBiNWM2ZTk1MzQ0M2NlOTRiOGY3OWMzYmY4ZDNkNzViMGJjMDAwOWNjLi4z
NTQ1YTdlODk3MThjMTU5MTIyYWRhODdjOWM2NmFlM2EzMjk5NjgxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zv
cm1zL3RoZS1kYXRhbGlzdC1lbGVtZW50L2RhdGFsaXN0b3B0aW9ucy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9mb3Jtcy90aGUtZGF0YWxpc3QtZWxlbWVudC9kYXRhbGlzdG9wdGlvbnMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsNCBAQAogCi1GQUlMIG9wdGlvbnMgbGFiZWwvdmFsdWUgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgNSBidXQgZ290IDMKK1BBU1Mgb3B0aW9ucyBsYWJlbC92YWx1ZSAKIFBB
U1MgSWYgYW4gZWxlbWVudCBoYXMgYSBkYXRhbGlzdCBlbGVtZW50IGFuY2VzdG9yLCBpdCBpcyBi
YXJyZWQgZnJvbSBjb25zdHJhaW50IHZhbGlkYXRpb24gCiBOdW1iZXI6ICAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1MTMxMGY5YjY2MTVk
NWY4ZTliNjM5ZGFlN2RkOGM1MmVmMTlmYTcyLi4xODkxODE0ODhmMTEwYTQ1ZWZkNDhiNmVkMDIx
NDc3MTk5OTFmNDViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhw
ZWN0YXRpb25zCkBAIC00NTEsOSArNDUxLDYgQEAgaW1wb3J0ZWQvYmxpbmsvc3ZnL2N1c3RvbS9t
YXJrZXItbGF5b3V0LWludmFsaWRhdGlvbi5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIGltcG9ydGVk
L2JsaW5rL2Zhc3QvY3NzL2NyYXNoLWNvcm5lci1wcmVzZW50Lmh0bWwgWyBQYXNzIFRpbWVvdXQg
XQogaW1wb3J0ZWQvYmxpbmsvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vaWZyYW1lLWNsaXAt
cmVtb3ZlZC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAotIyBBU0FOIHRlc3Qgb25seSBmYWlscyBv
biBXSzE6Ci13ZWJnbC8xLjAuMy8xNTEwNTVfYXNhbi5odG1sIFsgRmFpbHVyZSBdCi0KICMgTGFj
a2luZyBXSzEgVGVzdFJ1bm5lciBBUEkgdGhhdCBldmFsdWF0ZXMgSmF2YVNjcmlwdCB0aHJvdWdo
IEpTQyBBUElzIGFuZCBub3QgV2ViQ29yZSBBUElzLgogaW5zcGVjdG9yL3NjcmlwdC1wcm9maWxl
ci9ldmVudC10eXBlLUFQSS5odG1sIFsgU2tpcCBdCiAKQEAgLTc4Myw4ICs3ODAsNiBAQCB3ZWJr
aXQub3JnL2IvMTkwMzUwIFsgTW9qYXZlIF0gc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2Utb2Rk
LW5hbWVzLmh0bWwgWyBGYWlsdQogCiB3ZWJraXQub3JnL2IvMTkwODMyIFsgRGVidWcgXSBmYXN0
L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdG8tbm9uLWVkaXRlZC1jb250cm9scy5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE5MDgzMyBbIERlYnVnIF0gaW5zcGVjdG9yL2NvZGVt
aXJyb3IvcHJldHR5cHJpbnRpbmctY3NzLmh0bWwgWyBTbG93IF0KLQogd2Via2l0Lm9yZy9iLzE5
MDg0OSBodHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLW11
bHRpcGxlLWhlYWRlcnMtc2FtZW9yaWdpbi1kZW55Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3
ZWJraXQub3JnL2IvMTg2NDA2IFsgTW9qYXZlKyBdIGNvbXBvc2l0aW5nL2lmcmFtZXMvZGlzcGxh
eS1ub25lLXN1YmZyYW1lLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9mYXN0L2Zvcm1zL2Zvcm0tcHNldWRvLXZhbGlkLXN0eWxl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvZmFzdC9mb3Jtcy9m
b3JtLXBzZXVkby12YWxpZC1zdHlsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQzZmFhNzUx
NzUzMTcyZDEyYmU5NDFkN2Y5OGFjODdlNWQ2Njk2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azEvZmFzdC9mb3Jtcy9mb3JtLXBzZXVkby12YWxpZC1zdHls
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NCBAQAorQ2hlY2sgaWYgOnZhbGlkLzppbnZhbGlk
IENTUyBwc2V1ZG8gc2VsZWN0b3JzIGFyZSBsaXZlbHkgYXBwbGllZCBmb3IgZm9ybXMKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1JlbW92aW5nIGFuZCBhZGRpbmcgcmVxdWlyZWQg
dGV4dCBpbnB1dHMgYW5kIG1vZGlmeWluZyB0aGVpciB2YWx1ZSBieSBhIERPTSB0cmVlIG11dGF0
aW9uOgorUEFTUyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyBiYWNr
Z3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCitQQVNTIGZvcm0xLnJlbW92ZUNoaWxk
KGlucHV0MSk7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3Jv
dW5kT2Yoc3ViMSkgaXMgc3ViVmFsaWRDb2xvcgorUEFTUyBmb3JtMS5hcHBlbmRDaGlsZChpbnB1
dDEpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5k
T2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCitQQVNTIGlucHV0MS5zZXRBdHRyaWJ1dGUoInZh
bHVlIiwgImEiKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tn
cm91bmRPZihzdWIxKSBpcyBzdWJWYWxpZENvbG9yCitQQVNTIGlucHV0Mi5zZXRBdHRyaWJ1dGUo
InZhbHVlIiwgIiIpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyBi
YWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCisKK0Rpc2FibGluZyBhbmQgbWFy
a2luZyBpbnB1dHMgcmVhZG9ubHkgYnkgYSBET00gdHJlZSBtdXRhdGlvbjoKK1BBU1MgYmFja2dy
b3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlz
IHN1YkludmFsaWRDb2xvcgorUEFTUyBpbnB1dDEuZGlzYWJsZWQ9MTsgYmFja2dyb3VuZE9mKGZv
cm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJWYWxpZENv
bG9yCitQQVNTIGlucHV0MS5kaXNhYmxlZD0wOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFs
aWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCitQQVNT
IGlucHV0MS5zZXRBdHRyaWJ1dGUoInJlYWRvbmx5IiwgIjEiKTsgYmFja2dyb3VuZE9mKGZvcm0x
KSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJWYWxpZENvbG9y
CisKK01vdmUgZWxlbWVudCB1bmRlciBkYXRhbGlzdCBieSBhIERPTSB0cmVlIG11dGF0aW9uOgor
UEFTUyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyBwYXJlbnQucmVt
b3ZlQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitGQUlM
IGRsMS5hcHBlbmRDaGlsZChpbnB1dDEpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIHNob3VsZCBiZSBy
Z2IoMCwgMjU1LCAwKS4gV2FzIHJnYigyNTUsIDAsIDApLgorUEFTUyBwYXJlbnQuYXBwZW5kQ2hp
bGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKKworQWRkaW5n
IGEgcmVxdWlyZWQgdGV4dCBpbnB1dCB0aGF0IGlzIG5vdCBhIGRpcmVjdCBjaGlsZCBvZiB0aGUg
Zm9ybToKK1BBU1MgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGRpdjEu
YXBwZW5kQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IK
KworUmVuZGVyIG11bHRpcGxlIGZvcm1zIGFuZCByZWFzc2lnbiBhbiBpbnZhbGlkIGlucHV0IGZy
b20gb25lIHRvIGFub3RoZXI6CitQQVNTIGJhY2tncm91bmRPZigkKCJmb3JtMSIpKSBpcyBpbnZh
bGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKCQoImZvcm0yIikpIGlzIHZhbGlkQ29sb3IKK1BB
U1MgYmFja2dyb3VuZE9mKCQoImZvcm0zIikpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3Vu
ZE9mKCQoImZvcm0xIikpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKCQoImZvcm0z
IikpIGlzIGludmFsaWRDb2xvcgorCitFbnN1cmUgdGhhdCBpbnZhbGlkIGV2ZW50IHdhcyBub3Qg
dHJpZ2dlcmVkIG9uIHN0eWxlIGV2YWx1YXRpb246CitQQVNTIGJhY2tncm91bmRPZihmb3JtMSkg
aXMgaW52YWxpZENvbG9yCitQQVNTIHZhbCBpcyAiMCIKK1BBU1MgZm9ybTEuY2hlY2tWYWxpZGl0
eSgpOyB2YWwgaXMgIjEiCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKK1NvbWUg
dGVzdHMgZmFpbGVkLgorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9mb3Jtcy9jb25zdHJhaW50cy9mb3JtLXZhbGlkYXRpb24td2lsbFZhbGlkYXRlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy9jb25zdHJhaW50cy9mb3JtLXZh
bGlkYXRpb24td2lsbFZhbGlkYXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWQ1MzY4MDQz
ZThjMTdkZGZlODgyYTM1MzU1YTVhNDcyZjc2NTVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2Zvcm1zL2NvbnN0cmFpbnRzL2Zvcm0tdmFsaWRhdGlvbi13aWxsVmFsaWRh
dGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTcgQEAKKworUEFTUyBbSU5QVVQgaW4gSElEREVO
IHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIAor
UEFTUyBbSU5QVVQgaW4gQlVUVE9OIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29u
c3RyYWludCB2YWxpZGF0aW9uIAorUEFTUyBbSU5QVVQgaW4gUkVTRVQgc3RhdHVzXSBNdXN0IGJl
IGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gCitQQVNTIFtCVVRUT04gaW4g
QlVUVE9OIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxpZGF0
aW9uIAorUEFTUyBbQlVUVE9OIGluIFJFU0VUIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0
aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIAorUEFTUyBbZmllbGRzZXRdICBUaGUgd2lsbFZhbGlk
YXRlIGF0dHJpYnV0ZSBtdXN0IGJlIGZhbHNlIHNpbmNlIEZJRUxEU0VUIGlzIG5vdCBhIHN1Ym1p
dHRhYmxlIGVsZW1lbnQgCitQQVNTIFtvdXRwdXRdICBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0
ZSBtdXN0IGJlIGZhbHNlIHNpbmNlIE9VVFBVVCBpcyBub3QgYSBzdWJtaXR0YWJsZSBlbGVtZW50
IAorUEFTUyBbb2JqZWN0XSAgTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxp
ZGF0aW9uIAorUEFTUyBbSU5QVVQgaW4gVEVYVCBzdGF0dXNdIE11c3QgYmUgYmFycmVkIGZyb20g
dGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyBkaXNhYmxlZCAKK1BBU1MgW0lOUFVU
IGluIFRFWFQgc3RhdHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIHRydWUg
aWYgYW4gZWxlbWVudCBpcyBtdXRhYmxlIAorUEFTUyBbSU5QVVQgaW4gVEVYVCBzdGF0dXNdIE11
c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyByZWFk
b25seSAKK1BBU1MgW0lOUFVUIGluIFRFWFQgc3RhdHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJp
YnV0ZSBtdXN0IGJlIGZhbHNlIGlmIGl0IGhhcyBhIGRhdGFsaXN0IGFuY2VzdG9yIAorUEFTUyBb
SU5QVVQgaW4gU0VBUkNIIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWlu
dCB2YWxpZGF0aW9uIGlmIGl0IGlzIGRpc2FibGVkIAorUEFTUyBbSU5QVVQgaW4gU0VBUkNIIHN0
YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSB0cnVlIGlmIGFuIGVsZW1l
bnQgaXMgbXV0YWJsZSAKK1BBU1MgW0lOUFVUIGluIFNFQVJDSCBzdGF0dXNdIE11c3QgYmUgYmFy
cmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyByZWFkb25seSAKK1BB
U1MgW0lOUFVUIGluIFNFQVJDSCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11
c3QgYmUgZmFsc2UgaWYgaXQgaGFzIGEgZGF0YWxpc3QgYW5jZXN0b3IgCitQQVNTIFtJTlBVVCBp
biBURUwgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRp
b24gaWYgaXQgaXMgZGlzYWJsZWQgCitQQVNTIFtJTlBVVCBpbiBURUwgc3RhdHVzXSBUaGUgd2ls
bFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIHRydWUgaWYgYW4gZWxlbWVudCBpcyBtdXRhYmxl
IAorUEFTUyBbSU5QVVQgaW4gVEVMIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29u
c3RyYWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIHJlYWRvbmx5IAorUEFTUyBbSU5QVVQgaW4gVEVM
IHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSBmYWxzZSBpZiBpdCBo
YXMgYSBkYXRhbGlzdCBhbmNlc3RvciAKK1BBU1MgW0lOUFVUIGluIFVSTCBzdGF0dXNdIE11c3Qg
YmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyBkaXNhYmxl
ZCAKK1BBU1MgW0lOUFVUIGluIFVSTCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRl
IG11c3QgYmUgdHJ1ZSBpZiBhbiBlbGVtZW50IGlzIG11dGFibGUgCitQQVNTIFtJTlBVVCBpbiBV
Ukwgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24g
aWYgaXQgaXMgcmVhZG9ubHkgCitQQVNTIFtJTlBVVCBpbiBVUkwgc3RhdHVzXSBUaGUgd2lsbFZh
bGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIGZhbHNlIGlmIGl0IGhhcyBhIGRhdGFsaXN0IGFuY2Vz
dG9yIAorUEFTUyBbSU5QVVQgaW4gRU1BSUwgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRo
ZSBjb25zdHJhaW50IHZhbGlkYXRpb24gaWYgaXQgaXMgZGlzYWJsZWQgCitQQVNTIFtJTlBVVCBp
biBFTUFJTCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgdHJ1ZSBp
ZiBhbiBlbGVtZW50IGlzIG11dGFibGUgCitQQVNTIFtJTlBVVCBpbiBFTUFJTCBzdGF0dXNdIE11
c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyByZWFk
b25seSAKK1BBU1MgW0lOUFVUIGluIEVNQUlMIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRy
aWJ1dGUgbXVzdCBiZSBmYWxzZSBpZiBpdCBoYXMgYSBkYXRhbGlzdCBhbmNlc3RvciAKK1BBU1Mg
W0lOUFVUIGluIFBBU1NXT1JEIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3Ry
YWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIGRpc2FibGVkIAorUEFTUyBbSU5QVVQgaW4gUEFTU1dP
UkQgc3RhdHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIHRydWUgaWYgYW4g
ZWxlbWVudCBpcyBtdXRhYmxlIAorUEFTUyBbSU5QVVQgaW4gUEFTU1dPUkQgc3RhdHVzXSBNdXN0
IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gaWYgaXQgaXMgcmVhZG9u
bHkgCitQQVNTIFtJTlBVVCBpbiBQQVNTV09SRCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0
cmlidXRlIG11c3QgYmUgZmFsc2UgaWYgaXQgaGFzIGEgZGF0YWxpc3QgYW5jZXN0b3IgCitGQUlM
IFtJTlBVVCBpbiBEQVRFVElNRS1MT0NBTCBzdGF0dXNdIFRoZSBkYXRldGltZS1sb2NhbCB0eXBl
IG11c3QgYmUgc3VwcG9ydGVkLiBhc3NlcnRfZXF1YWxzOiBUaGUgZGF0ZXRpbWUtbG9jYWwgdHlw
ZSBzaG91bGQgYmUgc3VwcG9ydGVkLiBleHBlY3RlZCAiZGF0ZXRpbWUtbG9jYWwiIGJ1dCBnb3Qg
InRleHQiCitGQUlMIFtJTlBVVCBpbiBEQVRFIHN0YXR1c10gVGhlIGRhdGUgdHlwZSBtdXN0IGJl
IHN1cHBvcnRlZC4gYXNzZXJ0X2VxdWFsczogVGhlIGRhdGUgdHlwZSBzaG91bGQgYmUgc3VwcG9y
dGVkLiBleHBlY3RlZCAiZGF0ZSIgYnV0IGdvdCAidGV4dCIKK0ZBSUwgW0lOUFVUIGluIE1PTlRI
IHN0YXR1c10gVGhlIG1vbnRoIHR5cGUgbXVzdCBiZSBzdXBwb3J0ZWQuIGFzc2VydF9lcXVhbHM6
IFRoZSBtb250aCB0eXBlIHNob3VsZCBiZSBzdXBwb3J0ZWQuIGV4cGVjdGVkICJtb250aCIgYnV0
IGdvdCAidGV4dCIKK0ZBSUwgW0lOUFVUIGluIFdFRUsgc3RhdHVzXSBUaGUgd2VlayB0eXBlIG11
c3QgYmUgc3VwcG9ydGVkLiBhc3NlcnRfZXF1YWxzOiBUaGUgd2VlayB0eXBlIHNob3VsZCBiZSBz
dXBwb3J0ZWQuIGV4cGVjdGVkICJ3ZWVrIiBidXQgZ290ICJ0ZXh0IgorRkFJTCBbSU5QVVQgaW4g
VElNRSBzdGF0dXNdIFRoZSB0aW1lIHR5cGUgbXVzdCBiZSBzdXBwb3J0ZWQuIGFzc2VydF9lcXVh
bHM6IFRoZSB0aW1lIHR5cGUgc2hvdWxkIGJlIHN1cHBvcnRlZC4gZXhwZWN0ZWQgInRpbWUiIGJ1
dCBnb3QgInRleHQiCitGQUlMIFtJTlBVVCBpbiBDT0xPUiBzdGF0dXNdIFRoZSBjb2xvciB0eXBl
IG11c3QgYmUgc3VwcG9ydGVkLiBhc3NlcnRfZXF1YWxzOiBUaGUgY29sb3IgdHlwZSBzaG91bGQg
YmUgc3VwcG9ydGVkLiBleHBlY3RlZCAiY29sb3IiIGJ1dCBnb3QgInRleHQiCitQQVNTIFtJTlBV
VCBpbiBGSUxFIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxp
ZGF0aW9uIGlmIGl0IGlzIGRpc2FibGVkIAorUEFTUyBbSU5QVVQgaW4gRklMRSBzdGF0dXNdIFRo
ZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgdHJ1ZSBpZiBhbiBlbGVtZW50IGlzIG11
dGFibGUgCitQQVNTIFtJTlBVVCBpbiBGSUxFIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0
aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIHJlYWRvbmx5IAorUEFTUyBbSU5QVVQg
aW4gRklMRSBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgZmFsc2Ug
aWYgaXQgaGFzIGEgZGF0YWxpc3QgYW5jZXN0b3IgCitQQVNTIFtJTlBVVCBpbiBTVUJNSVQgc3Rh
dHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gaWYgaXQg
aXMgZGlzYWJsZWQgCitQQVNTIFtJTlBVVCBpbiBTVUJNSVQgc3RhdHVzXSBUaGUgd2lsbFZhbGlk
YXRlIGF0dHJpYnV0ZSBtdXN0IGJlIHRydWUgaWYgYW4gZWxlbWVudCBpcyBtdXRhYmxlIAorUEFT
UyBbSU5QVVQgaW4gU1VCTUlUIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3Ry
YWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIHJlYWRvbmx5IAorUEFTUyBbSU5QVVQgaW4gU1VCTUlU
IHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSBmYWxzZSBpZiBpdCBo
YXMgYSBkYXRhbGlzdCBhbmNlc3RvciAKK1BBU1MgW0JVVFRPTiBpbiBTVUJNSVQgc3RhdHVzXSBN
dXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gCitQQVNTIFtCVVRU
T04gaW4gU1VCTUlUIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSB0
cnVlIGlmIGFuIGVsZW1lbnQgaXMgbXV0YWJsZSAKK0ZBSUwgW0JVVFRPTiBpbiBTVUJNSVQgc3Rh
dHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIGZhbHNlIGlmIGl0IGhhcyBh
IGRhdGFsaXN0IGFuY2VzdG9yIGFzc2VydF9mYWxzZTogVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1
dGUgc2hvdWxkIGJlIGZhbHNlLiBleHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQorUEFTUyBbc2VsZWN0
XSAgTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIAorUEFTUyBb
c2VsZWN0XSAgVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSB0cnVlIGlmIGFuIGVs
ZW1lbnQgaXMgbXV0YWJsZSAKK0ZBSUwgW3NlbGVjdF0gIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmli
dXRlIG11c3QgYmUgZmFsc2UgaWYgaXQgaGFzIGEgZGF0YWxpc3QgYW5jZXN0b3IgYXNzZXJ0X2Zh
bHNlOiBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBzaG91bGQgYmUgZmFsc2UuIGV4cGVjdGVk
IGZhbHNlIGdvdCB0cnVlCitQQVNTIFt0ZXh0YXJlYV0gIE11c3QgYmUgYmFycmVkIGZyb20gdGhl
IGNvbnN0cmFpbnQgdmFsaWRhdGlvbiAKK1BBU1MgW3RleHRhcmVhXSAgVGhlIHdpbGxWYWxpZGF0
ZSBhdHRyaWJ1dGUgbXVzdCBiZSB0cnVlIGlmIGFuIGVsZW1lbnQgaXMgbXV0YWJsZSAKK0ZBSUwg
W3RleHRhcmVhXSAgVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSBmYWxzZSBpZiBp
dCBoYXMgYSBkYXRhbGlzdCBhbmNlc3RvciBhc3NlcnRfZmFsc2U6IFRoZSB3aWxsVmFsaWRhdGUg
YXR0cmlidXRlIHNob3VsZCBiZSBmYWxzZS4gZXhwZWN0ZWQgZmFsc2UgZ290IHRydWUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvZm9ybXMvZm9ybS1wc2V1ZG8t
dmFsaWQtc3R5bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3Qv
Zm9ybXMvZm9ybS1wc2V1ZG8tdmFsaWQtc3R5bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0
M2ZhYTc1MTc1MzE3MmQxMmJlOTQxZDdmOThhYzg3ZTVkNjY5NjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9mb3Jtcy9mb3JtLXBzZXVkby12YWxpZC1z
dHlsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NCBAQAorQ2hlY2sgaWYgOnZhbGlkLzppbnZh
bGlkIENTUyBwc2V1ZG8gc2VsZWN0b3JzIGFyZSBsaXZlbHkgYXBwbGllZCBmb3IgZm9ybXMKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1JlbW92aW5nIGFuZCBhZGRpbmcgcmVxdWly
ZWQgdGV4dCBpbnB1dHMgYW5kIG1vZGlmeWluZyB0aGVpciB2YWx1ZSBieSBhIERPTSB0cmVlIG11
dGF0aW9uOgorUEFTUyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyBi
YWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCitQQVNTIGZvcm0xLnJlbW92ZUNo
aWxkKGlucHV0MSk7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNr
Z3JvdW5kT2Yoc3ViMSkgaXMgc3ViVmFsaWRDb2xvcgorUEFTUyBmb3JtMS5hcHBlbmRDaGlsZChp
bnB1dDEpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyBiYWNrZ3Jv
dW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCitQQVNTIGlucHV0MS5zZXRBdHRyaWJ1dGUo
InZhbHVlIiwgImEiKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGJh
Y2tncm91bmRPZihzdWIxKSBpcyBzdWJWYWxpZENvbG9yCitQQVNTIGlucHV0Mi5zZXRBdHRyaWJ1
dGUoInZhbHVlIiwgIiIpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFT
UyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCisKK0Rpc2FibGluZyBhbmQg
bWFya2luZyBpbnB1dHMgcmVhZG9ubHkgYnkgYSBET00gdHJlZSBtdXRhdGlvbjoKK1BBU1MgYmFj
a2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEp
IGlzIHN1YkludmFsaWRDb2xvcgorUEFTUyBpbnB1dDEuZGlzYWJsZWQ9MTsgYmFja2dyb3VuZE9m
KGZvcm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJWYWxp
ZENvbG9yCitQQVNTIGlucHV0MS5kaXNhYmxlZD0wOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGlu
dmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViSW52YWxpZENvbG9yCitQ
QVNTIGlucHV0MS5zZXRBdHRyaWJ1dGUoInJlYWRvbmx5IiwgIjEiKTsgYmFja2dyb3VuZE9mKGZv
cm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJWYWxpZENv
bG9yCisKK01vdmUgZWxlbWVudCB1bmRlciBkYXRhbGlzdCBieSBhIERPTSB0cmVlIG11dGF0aW9u
OgorUEFTUyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyBwYXJlbnQu
cmVtb3ZlQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitG
QUlMIGRsMS5hcHBlbmRDaGlsZChpbnB1dDEpOyBiYWNrZ3JvdW5kT2YoZm9ybTEpIHNob3VsZCBi
ZSByZ2IoMCwgMjU1LCAwKS4gV2FzIHJnYigyNTUsIDAsIDApLgorUEFTUyBwYXJlbnQuYXBwZW5k
Q2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKKworQWRk
aW5nIGEgcmVxdWlyZWQgdGV4dCBpbnB1dCB0aGF0IGlzIG5vdCBhIGRpcmVjdCBjaGlsZCBvZiB0
aGUgZm9ybToKK1BBU1MgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyB2YWxpZENvbG9yCitQQVNTIGRp
djEuYXBwZW5kQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29s
b3IKKworUmVuZGVyIG11bHRpcGxlIGZvcm1zIGFuZCByZWFzc2lnbiBhbiBpbnZhbGlkIGlucHV0
IGZyb20gb25lIHRvIGFub3RoZXI6CitQQVNTIGJhY2tncm91bmRPZigkKCJmb3JtMSIpKSBpcyBp
bnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKCQoImZvcm0yIikpIGlzIHZhbGlkQ29sb3IK
K1BBU1MgYmFja2dyb3VuZE9mKCQoImZvcm0zIikpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dy
b3VuZE9mKCQoImZvcm0xIikpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKCQoImZv
cm0zIikpIGlzIGludmFsaWRDb2xvcgorCitFbnN1cmUgdGhhdCBpbnZhbGlkIGV2ZW50IHdhcyBu
b3QgdHJpZ2dlcmVkIG9uIHN0eWxlIGV2YWx1YXRpb246CitQQVNTIGJhY2tncm91bmRPZihmb3Jt
MSkgaXMgaW52YWxpZENvbG9yCitQQVNTIHZhbCBpcyAiMCIKK1BBU1MgZm9ybTEuY2hlY2tWYWxp
ZGl0eSgpOyB2YWwgaXMgIjEiCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKK1Nv
bWUgdGVzdHMgZmFpbGVkLgorCitURVNUIENPTVBMRVRFCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391374</attachid>
            <date>2020-02-20 19:35:53 -0800</date>
            <delta_ts>2020-02-22 09:11:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207816-20200220193548.patch</filename>
            <type>text/plain</type>
            <size>277429</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjdlNDEwZDE2MjgyMThi
OGJiM2M3ZWZlOTQxNzdlMDVmZmRhZmMyYS4uY2RhYTk2OGZjZDRjMDkzYTJmODJiZWRmZDY0OWEx
NjczMDhmNDdhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4OCBAQAorMjAyMC0wMi0xOCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRv
cnMgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZpbmVkIGVsZW1lbnQgaXRlcmF0b3IgaW1wbGVtZW50YXRp
b24gaW4gdGhlIGZvbGxvd2luZyB3YXlzOgorCisgICAgICAgIDEpIFJlbW92ZWQgdGhlIGR1cGxp
Y2F0ZSBkZXNjZW5kYW50IGl0ZXJhdG9yLCBrZWVwaW5nIHRoZSBvbmUgdGhhdCBtYXRjaGVzCisg
ICAgICAgICAgIHRoZSBzdHlsZSBvZiB0aGUgYW5jZXN0b3IgYW5kIGNoaWxkIGl0ZXJhdG9ycy4K
KyAgICAgICAgMikgUmVtb3ZlZCB0aGUgbm9uLXRlbXBsYXRlIGVsZW1lbnRBbmNlc3RvcnMsIGVs
ZW1lbnRDaGlsZHJlbiwgZWxlbWVudERlc2NlbmRhbnRzLAorICAgICAgICAgICBhbmQgZWxlbWVu
dExpbmVhZ2UgZnVuY3Rpb25zIGFuZCBjaGFuZ2VkIGNhbGxlcnMgdG8gdXNlIHh4eE9mVHlwZTxF
bGVtZW50PiBpbnN0ZWFkLgorCisgICAgICAgIEFsc28gcmVwbGFjZWQgdXNlIG9mIEhUTUxDb2xs
ZWN0aW9uIGNsYXNzZXMgaW4gV2ViS2l0IGNvZGUgZm9yIGl0ZXJhdGlvbi4KKyAgICAgICAgVGhl
eSBhcmUgZmluZSBmb3IgdXNlIGZyb20gSmF2YVNjcmlwdCwgYnV0IGludGVybmFsbHkgd2UgaGF2
ZSBtb3JlIGVmZmljaWVudAorICAgICAgICBpdGVyYXRpb24gaWRpb21zLgorCisgICAgICAgICog
SGVhZGVycy5jbWFrZTogUmVtb3ZlZCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmguCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmVkIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IuaCBhbmQKKyAgICAgICAgYWRkZWQgUmFkaW9Ob2RlTGlzdC5pZGwu
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojptb3VzZUJ1dHRvbkxp
c3RlbmVyIGNvbnN0KTogVXNlCisgICAgICAgIGxpbmVhZ2VPZlR5cGUgaW5zdGVhZCBvZiBlbGVt
ZW50TGluZWFnZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgVXNlIGFuY2Vz
dG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEgaGFuZHdyaXR0ZW4gbG9vcC4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcDogUmVtb3ZlZCB1bm5lZWRl
ZCBpbmNsdWRlIG9mCisgICAgICAgIEhUTUxDb2xsZWN0aW9uLmguCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOiBEaXR0by4KKworICAgICAgICAqIGRvbS9DaGls
ZE5vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUxpc3Q6OkNoaWxkTm9k
ZUxpc3QpOiBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIG1faW5kZXhDYWNoZQorICAgICAgICBz
aW5jZSB0aGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlcXVpcmVzIGFyZ3VtZW50cy4KKyAgICAg
ICAgKFdlYkNvcmU6OkNoaWxkTm9kZUxpc3Q6OmludmFsaWRhdGVDYWNoZSk6IFJlbW92ZWQgYXJn
dW1lbnQgdG8KKyAgICAgICAgQ29sbGVjdGlvbkluZGV4Q2FjaGU6OmludmFsaWRhdGUuCisgICAg
ICAgICogZG9tL0NoaWxkTm9kZUxpc3QuaDogUmVtb3ZlZCBjb2xsZWN0aW9uRW5kLCBzaW5jZSBp
dCdzIG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgKiBkb20vQ29sbGVjdGlvbkluZGV4Q2Fj
aGUuaDogUmVtb3ZlZCB0aGUgY29sbGVjdGlvbiBhcmd1bWVudCB0byB0aGUKKyAgICAgICAgY29u
c3RydWN0b3IsIGhhc1ZhbGlkQ2FjaGUsIGFuZCBpbnZhbGlkYXRlIGZ1bmN0aW9ucy4gVXBkYXRl
ZCBhbGdvcml0aG1zIHRvIHVzZQorICAgICAgICBudWxsIHN0eWxlIHRlcm1pbmF0aW9uIGluc3Rl
YWQgb2YgYWN0dWFsbHkgcmVseWluZyBvbiBjb21wYXJpbmcgd2l0aCBhbiBlbmQKKyAgICAgICAg
aXRlcmF0b3IsIHNpbmNlIHRoYXQgd29ya3MgZm9yIG91ciBlbGVtZW50IGl0ZXJhdG9ycy4KKwor
ICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OmNoaWxkRWxlbWVudENvdW50IGNvbnN0KTogVXNlIGFuIGVtcHR5IGluaXRpYWxp
emVyCisgICAgICAgIGxpc3QgaW5zdGVhZCBvZiB0aGUgcmVzdWx0IG9mIHRoZSBlbmQgZnVuY3Rp
b24gc2luY2Ugc3RkOjpkaXN0YW5jZSByZXF1aXJlcworICAgICAgICBib3RoIGJlZ2luIGFuZCBl
bmQgaXRlcmF0b3JzIGhhdmUgdGhlIHNhbWUgdHlwZS4KKworICAgICAgICAqIGRvbS9Db250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAgICAgICogZG9tL0N1
c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHA6IERpdHRvLgorCisgICAgICAgICogZG9tL0RvY3VtZW50
RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6Z2V0RWxl
bWVudEJ5SWQgY29uc3QpOiBVc2UKKyAgICAgICAgZGVzY2VuZGFudHNPZlR5cGUgaW5zdGVhZG9m
IGVsZW1lbnREZXNjZW5kYW50cy4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSBjb25zdCk6IFVz
ZSBsaW5lYWdlT2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2YgYSBoYW5kcndpdHRlbiBsb29wLgor
CisgICAgICAgICogZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmg6IE1vdmVkIHRoZSBkZWNs
YXJhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucworICAgICAgICB0byB0aGUgdG9wIG9mIHRoZSBmaWxl
LCBzaW5jZSB0aGUgY2xhc3NlcyBhcmUgcmVhbGx5IGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisg
ICAgICAgIFJlbW92ZWQgdGhlIHNlcGFyYXRlICJDb25zdCIgdmVyc2lvbnMgb2YgZXZlcnl0aGlu
ZyBzaW5jZSB3ZSBjYW4ganVzdCB1c2UKKyAgICAgICAgY29uc3QgaW4gdGhlIHRlbXBsYXRlIGFy
Z3VtZW50IHR5cGUgaW5zdGVhZC4gVXNlIHRoZSB0ZXJtICJSYW5nZSIgaW5zdGVhZAorICAgICAg
ICBvZiB0aGUgdGVybSAiSXRlcmF0b3JBZGFwdGVyIiBmb3IgdGhlIGNsYXNzIHRlbXBsYXRlcyBm
b3IgdXNlIGluIHJhbmdlLWJhc2VkCisgICAgICAgIGZvciBsb29wcyBzaW5jZSB0aGF0J3MgY2xv
c2VyIHRvIG1vZGVybiBDKysgdGVybWlub2xvZ3kuIFVzZSBudWxscHRyIGFzIGEKKyAgICAgICAg
c2VudGluZWwgZm9yIGVuZCwgd2hpY2ggd29ya3Mgd2VsbCB3aXRoIHJhbmdlLWJhc2VkIGZvciBs
b29wcy4gTWFkZSBtYW55IGZ1bmN0aW9uCisgICAgICAgIG1lbWJlcnMgY29uc3Qgd2hlcmUgYXBw
cm9wcmlhdGUuIFNwZWNpYWxpemVkIGxpbmVhZ2VPZlR5cGUgYW5kIGFuY2VzdG9yc09mVHlwZQor
ICAgICAgICBmb3IgRWxlbWVudCB0byBzbGlnaHRseSBvcHRpbWl6ZSB0aGF0IGNhc2UuIFVzZSBk
b3duY2FzdCBpbnN0ZWFkIG9mIHN0YXRpY19jYXN0LgorICAgICAgICBEZWxldGVkIGVsZW1lbnRM
aW5lYWdlIGFuZCBlbGVtZW50QW5jZXN0b3JzLgorCisgICAgICAgICogZG9tL0VsZW1lbnRBbmRU
ZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmg6IFJlbmFtZWQgSXRlcmF0b3JBZGFwdGVyIHRvIFJhbmdl
LgorICAgICAgICBNYWRlIG1vcmUgZnVuY3Rpb24gbWVtYmVycyBjb25zdC4KKworICAgICAgICAq
IGRvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oOiBNb3ZlZCB0aGUgZGVjbGFyYXRpb25zIG9mIHRo
ZSBmdW5jdGlvbnMKKyAgICAgICAgdG8gdGhlIHRvcCBvZiB0aGUgZmlsZSwgc2luY2UgdGhlIGNs
YXNzZXMgYXJlIHJlYWxseSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgorICAgICAgICBSZW1vdmVk
IHRoZSBzZXBhcmF0ZSAiQ29uc3QiIHZlcnNpb25zIG9mIGV2ZXJ5dGhpbmcgc2luY2Ugd2UgY2Fu
IGp1c3QgdXNlCisgICAgICAgIGNvbnN0IGluIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudCB0eXBlIGlu
c3RlYWQuIFVzZSB0aGUgdGVybSAiUmFuZ2UiIGluc3RlYWQKKyAgICAgICAgb2YgdGhlIHRlcm0g
Ikl0ZXJhdG9yQWRhcHRlciIgZm9yIHRoZSBjbGFzcyB0ZW1wbGF0ZXMgZm9yIHVzZSBpbiByYW5n
ZS1iYXNlZAorICAgICAgICBmb3IgbG9vcHMgc2luY2UgdGhhdCdzIGNsb3NlciB0byBtb2Rlcm4g
QysrIHRlcm1pbm9sb2d5LiBVc2UgbnVsbHB0ciBhcyBhCisgICAgICAgIHNlbnRpbmVsIGZvciBl
bmQsIHdoaWNoIHdvcmtzIHdlbGwgd2l0aCByYW5nZS1iYXNlZCBmb3IgbG9vcHMuIE1hZGUgbWFu
eQorICAgICAgICBmdW5jdGlvbiBtZW1iZXJzIGNvbnN0IHdoZXJlIGFwcHJvcHJpYXRlLiBEZWxl
dGVkIGVsZW1lbnRDaGlsZHJlbi4KKworICAgICAgICAqIGRvbS9FbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBkb20vRWxlbWVudEl0ZXJhdG9yLmg6IENo
YW5nZWQgRWxlbWVudEl0ZXJhdG9yIHRvIGRlcml2ZSBmcm9tIHN0ZDo6aXRlcmF0b3IKKyAgICAg
ICAgdG8gbWFrZSBpdGVyYXRvciB0cmFpdHMgd29yayBmb3IgYWxsIGNsYXNzZXMgZGVyaXZlZCBm
cm9tIGl0LiBNYWRlIGNvbnN0cnVjdG9ycworICAgICAgICBvZiBFbGVtZW50SXRlcmF0b3IgcHJp
dmF0ZSB0byBtYWtlIGl0IGNsZWFyIGl0J3MgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBhIGJhc2UK
KyAgICAgICAgY2xhc3MgYW5kIG5vdCBpbnN0YW50aWF0ZWQuIEFkZGVkIGFuIGVtcHR5IGNvbnN0
cnVjdG9yLiBEZWxldGVkIHRoZSA9PSBvcGVyYXRvci4KKyAgICAgICAgQWRkZWQgY29udmVyc2lv
bnMgdG8gYm9vbCBhbmQgb3BlcmF0b3IhIHNvIHRoZSBpdGVyYXRvciBjYW4gYmUgdXNlZCAibnVs
bCBzdHlsZSIKKyAgICAgICAgb3V0c2lkZSBvZiByYW5nZS1iYXNlZCBmb3IgbG9vcHMuIEFkZGVk
IGEgIT0gb3BlcmF0b3IgdGhhdCB3b3JrcyB3aXRoIG51bGxwdHIKKyAgICAgICAgc28gd2UgY2Fu
IHVzZSBudWxscHRyIGFzIGEgc2VudGluZWwgaW4gcmFuZ2UtYmFzZWQgZm9yIGxvb3BzLiBGb3Ig
dGhlICE9CisgICAgICAgIG9wZXJhdG9yLCByZWxheGVkIHRoZSBhc3NlcnRpb25zLCBzaW5jZSBj
b21wYXJpbmcgd2l0aCBhbm90aGVyIGl0ZXJhdG9yIHdvcmtzCisgICAgICAgIGZpbmUgZXZlbiBp
ZiB0aGUgRE9NIHRyZWUgaXMgbXV0YXRlZCwgYW5kIGEgbnVsbCBlbGVtZW50IGNhbiBiZSBjb21w
YXJlZCB3aXRoCisgICAgICAgIGFub3RoZXIgZXZlbiBpZiB0aGUgcm9vdCBlbGVtZW50IGlzIG5v
dCB0aGUgc2FtZS4gRGVsZXRlZCBFbGVtZW50Q29uc3RJdGVyYXRvci4KKworICAgICAgICAqIGRv
bS9MaXZlTm9kZUxpc3QuY3BwOiBSZW1vdmVkIHNvbWUgdW5uZWVkZWQgaW5jbHVkZXMsIGluY2x1
ZGluZyBIVE1MQ29sbGVjdGlvbi5oLgorICAgICAgICAoV2ViQ29yZTo6TGl2ZU5vZGVMaXN0OjpM
aXZlTm9kZUxpc3QpOiBTaW1wbGlmaWVkIGEgbGl0dGxlIGJpdC4KKyAgICAgICAgKFdlYkNvcmU6
OkxpdmVOb2RlTGlzdDo6cm9vdE5vZGUpOiBNb3ZlZCB0byB0aGUgaGVhZGVyLgorCisgICAgICAg
ICogZG9tL0xpdmVOb2RlTGlzdC5oOiBVcGRhdGVkIHNpbmNlIENvbGxlY3Rpb25UcmF2ZXJzYWwg
bm93IHVzZXMgdGhlCisgICAgICAgIG1vcmUgbW9kZXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IsIG5vdCB0aGUgb2xkZXIgb25lIHRoYXQgdXNlZCBhIHZlY3RvciBvZgorICAgICAgICBhbmNl
c3RvcnMgdG8gZG8gdGhlIGl0ZXJhdGlvbi4gQWxzbyB1c2UgV1RGX01BS0VfSVNPX05PTkFMTE9D
QVRBQkxFIHNpbmNlCisgICAgICAgIExpdmVOb2RlTGlzdCBpcyBhbiBhYnN0cmFjdCBjbGFzcywg
YW5kIG1hZGUgc29tZSBtZW1iZXJzIHByb3RlY3RlZC4gUmVtb3ZlZAorICAgICAgICBDYWNoZWRM
aXZlTm9kZUxpc3Q6OnJvb3ROb2RlIHNpbmNlIGl0IHdhcyBpZGVudGljYWwgdG8gTGl2ZU5vZGVM
aXN0Ojpyb290Tm9kZSwKKyAgICAgICAgYW5kIG1hZGUgTGl2ZU5vZGVMaXN0Ojpyb290Tm9kZSBw
cm90ZWN0ZWQgc28gaXQgY2FuIGJlIGNhbGxlZCBpbgorICAgICAgICBDYWNoZWRMaXZlTm9kZUxp
c3QsIGFuZCBtb3ZlZCBpdCB0byB0aGUgaGVhZGVyIHNvIGl0IHdpbGwgc3RpbGwgYmUgaW5saW5l
ZC4KKyAgICAgICAgU2ltcGxpZmllZCBDYWNoZWRMaXN0Tm9kZUxpc3QgdG8gdXNlIG1vcmUgZmlu
YWwsIHRvIG5hbWUgbG9uZyB0eXBlcyBsZXNzIGJ5CisgICAgICAgIHVzaW5nICJhdXRvIiBhbmQg
InVzaW5nIiwgYW5kIHRvIG5vdCBwYXNzIGFyZ3VtZW50cyB0byBmdW5jdGlvbnMgdGhhdCBkb24n
dAorICAgICAgICBuZWVkIHRoZW0gYW55IG1vcmUuCisKKyAgICAgICAgKiBkb20vTmFtZU5vZGVM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVOb2RlTGlzdDo6Y3JlYXRlKTogTW92ZWQg
aGVyZSBmcm9tIHRoZSBoZWFkZXIuCisgICAgICAgICogZG9tL05hbWVOb2RlTGlzdC5oOiBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGVzIGFuZCBjb21tZW50LCBtb3ZlZCBjcmVhdGUKKyAgICAgICAg
ZnVjbnRpb24gb3V0IG9mIHRoZSBoZWFkZXIuCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6IFJl
bW92ZWQgdW5uZWVkZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlvbi5oLgorCisgICAgICAgICog
ZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlz
dDo6Y2xvc2VzdCBjb25zdCk6IFVzZSBsaW5lYWdlZU9mVHlwZSBpbnN0ZWFkIG9mIGFuCisgICAg
ICAgIGV4cGxpY2l0IGxvb3AuCisgICAgICAgIChXZWJDb3JlOjplbGVtZW50c0ZvckxvY2FsTmFt
ZSk6IFVzZSBkZXNjZW5kYW50c09mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnREZXNjZW5kYW50cy4K
KyAgICAgICAgKFdlYkNvcmU6OmFueUVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVUYWdOYW1lU2VsZWN0b3JEYXRhIGNvbnN0
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2lu
Z2xlQ2xhc3NOYW1lU2VsZWN0b3JEYXRhIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlU2VsZWN0b3JEYXRhIGNvbnN0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlTXVs
dGlTZWxlY3RvckRhdGEgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
RGF0YUxpc3Q6OmV4ZWN1dGVDb21waWxlZFNpbXBsZVNlbGVjdG9yQ2hlY2tlciBjb25zdCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZUNvbXBpbGVk
U2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dCBjb25zdCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZUNvbXBpbGVkU2luZ2xlTXVsdGlT
ZWxlY3RvckRhdGEgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGRvbS9TbG90QXNzaWdubWVu
dC5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisKKyAgICAgICAgKiBkb20vVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yLmg6IE1vdmVkIHRoZSBkZWNsYXJhdGlvbnMgb2YgdGhlIGZ1bmN0aW9u
cworICAgICAgICB0byB0aGUgdG9wIG9mIHRoZSBmaWxlLCBzaW5jZSB0aGUgY2xhc3NlcyBhcmUg
cmVhbGx5IGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisgICAgICAgIFJlbmFtZWQgdGhlIGNsYXNz
ZXMgdG8gdGFrZSBvdXQgdGhlIHdvcmQgInR5cGVkIiBzaW5jZSB0aGVzZSBpdGVyYXRvcnMgYXJl
IHRoZQorICAgICAgICBzYW1lIGFzIHRoZSBhbmNlc3RvciBhbmQgY2hpbGRyZW4gaXRlcmF0b3Jz
OyB0aGlzIGdpdmVzIHRoZXNlIHRoZSBzYW1lIG5hbWUgYXMKKyAgICAgICAgdGhlIGNsYXNzZXMg
aW4gdGhlIGRlbGV0ZWQgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIGZpbGUsIGFuZCB3ZSBj
YW4gZm9sbG93CisgICAgICAgIHVwIGJ5IHJlbmFtaW5nIHRoaXMgZmlsZSB0byB0YWtlICJUeXBl
ZCIgb3V0IG9mIHRoZSBuYW1lIG9mIHRoZSBmaWxlLCB0b28uCisgICAgICAgIFJlbW92ZWQgdGhl
IHNlcGFyYXRlICJDb25zdCIgdmVyc2lvbnMgb2YgZXZlcnl0aGluZyBzaW5jZSB3ZSBjYW4ganVz
dCB1c2UKKyAgICAgICAgY29uc3QgaW4gdGhlIHRlbXBsYXRlIGFyZ3VtZW50IHR5cGUgaW5zdGVh
ZC4gVXNlIHRoZSB0ZXJtICJSYW5nZSIgaW5zdGVhZAorICAgICAgICBvZiB0aGUgdGVybSAiSXRl
cmF0b3JBZGFwdGVyIiBmb3IgdGhlIGNsYXNzIHRlbXBsYXRlcyBmb3IgdXNlIGluIHJhbmdlLWJh
c2VkCisgICAgICAgIGZvciBsb29wcyBzaW5jZSB0aGF0J3MgY2xvc2VyIHRvIG1vZGVybiBDKysg
dGVybWlub2xvZ3kuIFVzZSBudWxscHRyIGFzIGEKKyAgICAgICAgc2VudGluZWwgdmFsdWUgZm9y
IHRoZSBlbmQgZnVuY3Rpb25zLiBNYWRlIG1hbnkgZnVuY3Rpb24gbWVtYmVycyBjb25zdCB3aGVy
ZQorICAgICAgICBhcHByb3ByaWF0ZS4gQWRkZWQgYSBuZXcgc3BlY2lhbGl6YXRpb24gdGhhdCBt
YWtlcyBhIGRlc2NlbmRhbnQgaXRlcmF0b3IgdGhhdAorICAgICAgICBpcyBmaWx0ZXJlZCBiYXNl
ZCBvbiBhIGZ1bmN0aW9uLCBmb3IgdXNlIGluIGl0ZXJhdGluZyBkYXRhIGxpc3Qgc3VnZ2VzdGlv
bnMuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCBjb25zdCk6IFVzZSB0aGUgZnVu
Y3Rpb24KKyAgICAgICAgZGVzY2VuZGFudHNPZlR5cGU8SFRNTEJvZHlFbGVtZW50PiBpbnN0ZWFk
IG9mIGdldEVsZW1lbnRCeVRhZ05hbWUoYm9keVRhZykuCisgICAgICAgIEFsc28gbWVyZ2VkIGFw
cGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50IGluIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmFwcGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKworICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmg6IERlbGV0ZWQgYXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQu
CisKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNjYW5Gb3JGb3JtKTogVHdlYWtlZCB1c2FnZSBzbyB0aGVyZSdzIG5vIGV4cGxpY2l0IHVz
ZSBvZiBlbmQuCisgICAgICAgIEFsc28gY2hhbmdlZCBpZiBuZXN0aW5nIGEgbGl0dGxlIGJpdC4K
KworICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uUnVsZU1hdGNoZXI6OmlzRXhjbHVkZWQpOiBVc2UgbGlu
ZWFnZU9mVHlwZSBpbnN0ZWFkIG9mCisgICAgICAgIGVsZW1lbnRMaW5lYWdlLgorCisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06IFVwZGF0ZWQgaW5jbHVk
ZXMuCisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOiBEaXR0by4KKworICAgICAgICAqIGh0
bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDogVXBkYXRlZCBpbmNsdWRlcywgc2hvcnRlbmVkIHR5
cGUgbmFtZXMsCisgICAgICAgIGFuZCB1c2VkIGF1dG8gdG8gc2ltcGxpZnkgdGhlIGNvZGUgYSBi
aXQuIFJlbW92ZWQgdW5uZWVkZWQgY29sbGVjdGlvbiBhcmd1bWVudHMKKyAgICAgICAgZnJvbSB2
YXJpb3VzIENvbGxlY3Rpb25JbmRleENhY2hlIGZ1bmN0aW9ucy4KKworICAgICAgICAqIGh0bWwv
Q29sbGVjdGlvblRyYXZlcnNhbC5oOiBVcGRhdGVkIHRvIHVzZSB0aGUgbmV3L3R5cGVkIHZlcnNp
b24gb2YKKyAgICAgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci4gUmVtb3ZlZCBlbmQgZnVu
Y3Rpb25zLiBVc2Ugc2hvcnRlciB0eXBlIG5hbWVzLgorICAgICAgICBSZXdyb3RlIGFsZ29yaXRo
bXMgdG8gdXNlIG51bGwgdGVybWluYXRpb24gZm9yIGxvb3BzIGluc3RlYWQgb2YgZW5kIGl0ZXJh
dG9yCisgICAgICAgIHZhbHVlcy4KKworICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OnN1Z2dlc3RlZENvbG9ycyBjb25z
dCk6IFVzZSB0aGUgbmV3CisgICAgICAgIEhUTUxEYXRhTGlzdEVsZW1lbnQ6OnN1Z2dlc3Rpb25z
IGluc3RlYWQgb2YgSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBodG1sL0dlbmVyaWNDYWNo
ZWRIVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb248dHJhdmVyc2FsVHlwZT46OmVsZW1lbnRNYXRjaGVzIGNvbnN0KToKKyAgICAg
ICAgVXBkYXRlZCB0byB1c2UgSFRNTERhdGFMaXN0RWxlbWVudDo6aXNTdWdnZXN0aW9uIGFuZCBh
ZGRlZCBhIGNvbW1lbnQgZXhwbGFpbmluZworICAgICAgICB3aHkgdGhhdCBtaWdodCBub3QgYmUg
bmVjZXNzYXJ5IGlmIHdlIGNvcnJlY3QgdGhlIGltcGxlbWVudGF0aW9uIHRvIG1hdGNoIHRoZQor
ICAgICAgICBIVE1MIHNwZWNpZmljYXRpb24uCisKKyAgICAgICAgKiBodG1sL0hUTUxBbGxDb2xs
ZWN0aW9uLmlkbDogU3BlY2lmeSBbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIG9uIHRoZQor
ICAgICAgICBhcmd1bWVudCB0byBuYW1lZEl0ZW0sIGFuZCBbQXRvbVN0cmluZ10gZm9yIHRoZSBh
cmd1bWVudCB0byBpdGVtLgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaWRsOiBEaXR0
by4KKworICAgICAgICAqIGh0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRGF0YUxpc3RFbGVtZW50Ojppc1N1Z2dlc3Rpb24pOiBBZGRlZC4KKyAgICAg
ICAgKiBodG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuaDogQWRkZWQgaXNTdWdnZXN0aW9uIGFuZCBz
dWdnZXN0aW9ucyBmdW5jdGlvbnMgc28KKyAgICAgICAgbG9naWMgYWJvdXQgd2hpY2ggZGF0YSBs
aXN0IG9wdGlvbnMgYXJlIHN1Z2dlc3Rpb25zIGlzIHNoYXJlZC4KKworICAgICAgICAqIGh0bWwv
SFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWxlbWVudEFmZmVjdHNEaXJlY3Rp
b25hbGl0eSk6IFJlZmFjdG9yZWQgc28gd2UgZ2V0IGEgbW9yZSBlZmZpY2llbnQKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gd2hlbiB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudCBpcyBrbm93bi4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjphZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVk
QWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICBVc2UgbGluZWFnZU9mVHlwZSBp
bnN0ZWFkIG9mIGVsZW1lbnRMaW5lYWdlLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5o
OiBSZW1vdmVkIHNvbWUgdW5lZWVkZWQgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAg
KiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZFdpZGdl
dFJlbmRlcmVyKTogVXNlIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEgbG9vcC4KKworICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpjb21wdXRlV2lsbFZhbGlkYXRlIGNvbnN0KTogVXNl
CisgICAgICAgIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEgbG9vcC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmVuY2xvc2luZ0Zvcm1Db250cm9sRWxlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6IERl
bGV0ZWQgdW51c2VkIGVuY2xvc2luZ0Zvcm1Db250cm9sRWxlbWVudC4KKworICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKTogVXNl
CisgICAgICAgIHNob3J0IGZvcm0gQ2FjaGVkSFRNTENvbGxlY3Rpb24gaW5zdGVhZCBvZiB3cml0
aW5nIG91dCBhbGwgdGhlIHRlbXBsYXRlIGFyZ3VtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpvd25lck5vZGUgY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGVG
b3JEb2N1bWVudCk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5pZGw6IFNwZWNpZnkgW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBvbgorICAg
ICAgICB0aGUgYXJndW1lbnQgdG8gbmFtZWRJdGVtLgorCisgICAgICAgICogaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxl
bWVudEluZGV4KTogVXBkYXRlZCBjb2RlIHRoYXQgY2hlY2tzIHRoZQorICAgICAgICBmaXJzdCBl
bGVtZW50IHRvIHVzZSBvcGVyYXRvciEgaW5zdGVhZCBvZiBjb21wYXJpbmcgd2l0aCBlbmQuCisK
KyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOiBSZW1vdmVkIHVubmVlZGVk
IGluY2x1ZGUgb2YgSFRNTENvbGxlY3Rpb24uaC4KKworICAgICAgICAqIGh0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHA6IENsZWFyZWQgc3RyYXkgZXhlY3V0YWJsZSBiaXQuCisKKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6c2V0dXBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzKTogVXNlIHRoZSBuZXcKKyAgICAg
ICAgSFRNTERhdGFMaXN0RWxlbWVudDo6c3VnZ2VzdGlvbnMgaW5zdGVhZCBvZiBIVE1MQ29sbGVj
dGlvbi4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQpOiBVc2UgYSBi
b29sZWFuIHRlc3QgcmF0aGVyCisgICAgICAgIHRoYW4gY29tcGFyaW5nIHdpdGggZW5kIGluIHRo
ZSB1bnVzdWFsIGxvb3AgaGVyZS4KKworICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojpvd25lclNlbGVj
dEVsZW1lbnQgY29uc3QpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2Yg
YSBoYW5kLXdyaXR0ZW4gbG9vcC4KKworICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KTogVXNlIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mCisgICAgICAgIGNhbGxpbmcgb3duZXJE
YXRhTGlzdEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVu
dDo6b3duZXJEYXRhTGlzdEVsZW1lbnQgY29uc3QpOiBEZWxldGVkLiBTaW5jZSB0aGUKKyAgICAg
ICAgc2FtZSBvcHRpb24gY2FuIGJlIHVzZWQgYnkgbmVzdGVkIGRhdGEgbGlzdCBlbGVtZW50cywg
dGhlIGNvbmNlcHQgb2YgYSBzaW5nbGUKKyAgICAgICAgIm93bmVyIiBkYXRhIGxpc3QgZWxlbWVu
dCBpc24ndCBmdWxseSBjb3JyZWN0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1l
bnQ6Om93bmVyU2VsZWN0RWxlbWVudCBjb25zdCk6IFVzZSBhbmNlc3RvcnNPZlR5cGUKKyAgICAg
ICAgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorICAgICAgICAqIGh0bWwvSFRNTE9w
dGlvbkVsZW1lbnQuaDogRGVsZXRlZCBvd25lckRhdGFMaXN0RWxlbWVudC4KKworICAgICAgICAq
IGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbDogU3BlY2lmeSBbUmVxdWlyZXNFeGlzdGlu
Z0F0b21TdHJpbmddIG9uCisgICAgICAgIHRoZSBhcmd1bWVudCB0byBuYW1lZEl0ZW0uCisKKyAg
ICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOiBVcGRhdGVkIGluY2x1ZGVz
LgorCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGw6IFNwZWNpZnkgW1JlcXVp
cmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBvbgorICAgICAgICB0aGUgYXJndW1lbnQgdG8gbmFtZWRJ
dGVtLgorCisgICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0
dHJpYnV0ZVN0eWxlIGNvbnN0KToKKyAgICAgICAgVXNlIGF1dG8gc2luY2UgZmluZFBhcmVudFRh
YmxlIG5vdyByZXR1cm5zIGEgY29uc3QgdGFibGUgcG9pbnRlci4KKyAgICAgICAgKiBodG1sL0hU
TUxUYWJsZUNvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlQ29sRWxl
bWVudDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlIGNvbnN0KToKKyAgICAg
ICAgRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKTogTWFk
ZSBjb25zdC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxD
ZWxsU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmFk
ZGl0aW9uYWxHcm91cFN0eWxlKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVt
ZW50Lmg6IE1hZGUgdGhlIGZ1bmN0aW9ucyBjb25zdCwgYW5kIG1fc2hhcmVkQ2VsbFN0eWxlCisg
ICAgICAgIG11dGFibGUuCisKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZVBhcnRFbGVtZW50OjpmaW5kUGFyZW50VGFi
bGUgY29uc3QpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2YgYSBoYW5k
LXdyaXR0ZW4gbG9vcC4gQWxzbyByZXZpc2VkIHJldHVybiB0eXBlIHRvIGJlIGNvbnN0LWNvbnNp
c3RlbnQuCisgICAgICAgICogaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5oOiBVcGRhdGVkIHJl
dHVybiB0eXBlLgorCisgICAgICAgICogaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHA6
IFJlbW92ZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlvbi5oLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6Om51bVJvd3MgY29uc3QpOiBVc2UgYW4gZW1wdHkgaW5p
dGlhbGl6ZXIKKyAgICAgICAgbGlzdCBpbnN0ZWFkIG9mIHRoZSByZXN1bHQgb2YgdGhlIGVuZCBm
dW5jdGlvbiBzaW5jZSBzdGQ6OmRpc3RhbmNlIHJlcXVpcmVzCisgICAgICAgIGJvdGggYmVnaW4g
YW5kIGVuZCBpdGVyYXRvcnMgaGF2ZSB0aGUgc2FtZSB0eXBlLgorCisgICAgICAgICogaHRtbC9I
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRI
VE1MRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6ZGlyZWN0aW9uRm9yRm9ybURhdGEgY29uc3QpOiBVc2UKKyAgICAgICAgbGlu
ZWFnZU9mVHlwZSByYXRoZXIgdGhhbiBhIGhhbmQtd3JpdHRlbiBsb29wLiBBbHNvIGdvdCByaWQg
b2YgdGhlIG11bHRpcGxlCisgICAgICAgIHN0cmluZ3MgaW4gcmV0dXJuIHBhdGhzIHNpbmNlIHRo
ZSBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBvbmUgb2YgdHdvIHN0cmluZ3MuCisKKyAgICAgICAg
KiBodG1sL0xhYmVsc05vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxhYmVsc05vZGVM
aXN0OjpjcmVhdGUpOiBNb3ZlZCBoZXJlIGZyb20gaGVhZGVyLgorICAgICAgICAqIGh0bWwvTGFi
ZWxzTm9kZUxpc3QuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLCB0d2Vha2VkIGNvZGluZyBz
dHlsZSBhIGJpdCwKKyAgICAgICAgbW92ZWQgY3JlYXRlIGZ1bmN0aW9uIGludG8gdGhlIC5jcHAg
ZmlsZSwgcmVtb3ZlZCBvdmVycmlkZSBvZiBpc1Jvb3RlZEF0RG9jdW1lbnQuCisKKyAgICAgICAg
KiBodG1sL01lZGlhRG9jdW1lbnQuY3BwOiBVcGRhdGVkIGluY2x1ZGVzLgorCisgICAgICAgICog
aHRtbC9SYWRpb05vZGVMaXN0LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorICAgICAg
ICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6Y3JlYXRlKTogTW92ZWQgdGhpcyBoZXJlIGZyb20g
dGhlIGhlYWRlci4KKyAgICAgICAgKFdlYkNvcmU6Om5vbkVtcHR5UmFkaW9CdXR0b24pOiBSZW5h
bWVkIGZyb20gdG9SYWRpb0J1dHRvbklucHV0RWxlbWVudCB0byBtYWtlCisgICAgICAgIGEgbGl0
dGxlIGNsZWFyZXIgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcy4KKyAgICAgICAgKFdlYkNvcmU6OlJh
ZGlvTm9kZUxpc3Q6OnZhbHVlIGNvbnN0KTogVXBkYXRlZCB0byB1c2Ugbm9uRW1wdHlSYWRpb0J1
dHRvbiBhbmQKKyAgICAgICAgc3RyYWlnaHRlbiBvdXQgdGhlIGxvb3AgYSB0aW55IGJpdC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6OnNldFZhbHVlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSYWRpb05vZGVMaXN0OjpjaGVja0VsZW1lbnRNYXRjaGVzUmFkaW9Ob2RlTGlz
dEZpbHRlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSYWRpb05vZGVMaXN0
OjplbGVtZW50TWF0Y2hlcyBjb25zdCk6IE1lcmdlZCBpbiB0aGUgbG9naWMgZnJvbQorICAgICAg
ICBjaGVja0VsZW1lbnRNYXRjaGVzUmFkaW9Ob2RlTGlzdEZpbHRlciwgc2luY2UgdGhlIHNlcGFy
YXRlIGZ1bmN0aW9uIHdhc24ndCBoZWxwZnVsLgorICAgICAgICAqIGh0bWwvUmFkaW9Ob2RlTGlz
dC5oOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzLiBNb3ZlZCB0aGUgY3JlYXRlIGZ1bmN0aW9u
IG91dAorICAgICAgICBvZiB0aGUgaGVhZGVyLiBSZW1vdmVkIHVubmVlZGVkIG92ZXJyaWRlIG9m
IHRoZSBpdGVtIGZ1bmN0aW9uIHRvIHRpZ2h0ZW4gdGhlCisgICAgICAgIHJldHVybiB0eXBlOyBu
b3QgdXNlZCBpbiBXZWJDb3JlIGFuZCBub3QgaGVscGZ1bCBmb3IgYmluZGluZ3MuIE1hZGUgbW9y
ZSBwcml2YXRlLgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6aXRlbSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9SYWRpb05vZGVMaXN0LmlkbDogUmVtb3ZlZCB1bm5l
ZWRlZCBnZXR0ZXI7IHRoZSBpbmhlcml0ZWQgb25lIGZyb20gTm9kZUxpc3QKKyAgICAgICAgd29y
a3MgY29ycmVjdGx5LCBhbmQgdGhpcyBpc24ndCBtb3JlIGVmZmljaWVudCBiZWNhdXNlIG9mIGEg
bW9yZSBzcGVjaWZpYyB0eXBlLgorCisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9ucyk6
IFVzZSBIVE1MRGF0YUxpc3RFbGVtZW50OjpzdWdnZXN0aW9ucworICAgICAgICBpbnN0ZWFkIG9m
IEhUTUxDb2xsZWN0aW9uLiBBbHNvIGFkZGVkIGEgRklYTUUgYmVjYXVzZSB0aGUgY3VycmVudCBs
b2dpYyBpcworICAgICAgICBub3QgcmlnaHQgYWNyb3NzIGxhbmd1YWdlcyBhbmQgd2l0aCBub24t
QVNDSUkgY2hhcmFjdGVycy4KKworICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cDogUmVtb3ZlZCBpbmNsdWRlIG9mIEhUTUxDb2xsZWN0aW9uLmguCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0RWxlbWVudHNCeUNv
bXB1dGVkUm9sZSk6CisgICAgICAgIFVzZSBkZXNjZW5kYW50c09mVHlwZSBpbnN0ZWFkIG9mIGVs
ZW1lbnREZXNjZW5kYW50cy4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1h
dGNoZWRTdHlsZXNGb3JOb2RlKTogVXNlIGFuY2VzdG9yc09mVHlwZQorICAgICAgICBpbnN0ZWFk
IG9mIGEgaGFuZC13cml0dGVuIGxvb3AuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjppbnNwZWN0KTogVXNlIGlzRWxlbWVudE5vZGUgYW5kIGlzRG9jdW1lbnROb2RlCisgICAgICAg
IGluc3RlYWQgb2YgdGhlIG11Y2ggc2xvd2VyIG5vZGVUeXBlLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE1vdXNlZE92ZXJOb2RlKTogVXNlIGlzVGV4dE5v
ZGUgaW5zdGVhZCBvZgorICAgICAgICB0aGUgbXVjaCBzbG93ZXIgbm9kZVR5cGUuCisKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOiBEaXR0by4KKworICAgICAgICAq
IHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbmluZ0xp
bmtFbGVtZW50KTogQWRkZWQuIFVzZXMgbGluZWFnZU9mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnRM
aW5lYWdlLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyk6
IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0F4aXNT
Y3JvbGxTbmFwT2Zmc2V0cy5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlvbi5o
LgorCisgICAgICAgICogcGxhdGZvcm0vRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oOiBSZWR1
Y2VkIGluY2x1ZGVzLCB1c2UgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBh
aW50U2xpZGVyVGlja3MpOiBVc2UgSFRNTERhdGFMaXN0RWxlbWVudDo6c3VnZ2VzdGlvbnMKKyAg
ICAgICAgaW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBw
b3J0Ojp1cGRhdGVNYXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyk6CisgICAgICAg
IFVzZSBhbmNlc3RvcnNPZlR5cGUgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorCisg
ICAgICAgICogc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6SW52YWxpZGF0b3I6OmludmFsaWRhdGVTdHlsZUZvckRlc2NlbmRhbnRzKTogVXNlIG51
bGwgY2hlY2tpbmcKKyAgICAgICAgc3R5bGUgZm9yIHRoZSBmb3IgbG9vcCByYXRoZXIgdGhhbiBj
b21wYXJpbmcgd2l0aCBlbmQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SW52YWxpZGF0b3I6
OmludmFsaWRhdGVTdHlsZVdpdGhNYXRjaEVsZW1lbnQpOiBSZW1vdmUgYW4gdW5uZWVkZWQKKyAg
ICAgICAgbG9jYWwgdmFyaWFibGUgYW5kIHVubmVlZGVkIGJyYWNlcy4KKworICAgICAgICAqIHN0
eWxlL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OmlzQXRTaGFk
b3dCb3VuZGFyeSk6IFVzZSB0aGUgaXM8U2hhZG93Um9vdD4gZnVuY3Rpb24uCisKKyAgICAgICAg
KiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6IFVzZSB0aGUgaXM8U1ZHRWxlbWVudD4gZnVuY3Rpb24uCisg
ICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVu
dDo6dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24pOiBEaXR0by4KKworICAgICAgICAq
IHN2Zy9TVkdFbGVtZW50Lmg6IE1hZGUgY29tcHV0ZWRTdHlsZSBwdWJsaWMuIEF0IGxlYXN0IG9u
ZSBjYWxsIHNpdGUgbm93IGtub3dzIHRoZQorICAgICAgICBzcGVjaWZpYyB0eXBlIFNWR0VsZW1l
bnQsIGFuZCBzbyBjYW4gY2FsbCBpdCBldmVuIG1vcmUgZWZmaWNpZW50bHkgdGhhbiBiZWZvcmUu
IElmCisgICAgICAgIHdlIGxlZnQgaXQgcHJpdmF0ZSB3ZSdkIGhhdmUgdG8gY2FzdCB0byB0aGUg
YmFzZSBjbGFzcyB0byBjYWxsIGl0LCBhbmQgdGhlbiB3b3VsZCBuZWVkCisgICAgICAgIHZpcnR1
YWwgZnVuY3Rpb24gZGlzcGF0Y2guCisKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVEaXNhbGxvd2VkRWxlbWVudHNGcm9tU3VidHJlZSk6
IFVzZSBudWxsIGNoZWNraW5nIHN0eWxlIHJhdGhlciB0aGFuCisgICAgICAgIGNvbXBhcmluZyB3
aXRoIGVuZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmV4cGFuZFVzZUVsZW1l
bnRzSW5TaGFkb3dUcmVlIGNvbnN0KTogRGl0dG8uIEFsc28gYXNzaWduCisgICAgICAgIGFuIGVt
cHR5IGluaXRpYWxpemVyIGxpc3QgaW5zdGVhZCBvZiBlbmQuCisgICAgICAgIChXZWJDb3JlOjpT
VkdVc2VFbGVtZW50OjpleHBhbmRTeW1ib2xFbGVtZW50c0luU2hhZG93VHJlZSBjb25zdCk6IERp
dHRvLgorCisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KTog
VXNlIGxpbmVhZ2VPZlR5cGUgaW5zdGVhZCBvZgorICAgICAgICBlbGVtZW50TGluZWFnZS4gQWxz
byBhZGQgYSBudWxsIGNoZWNrIHRoYXQgc2VlbXMgdG8gaGF2ZSBiZWVuIG5lZWRlZCBiZWZvcmUg
dG9vLgorCiAyMDIwLTAyLTIwICBTdW5ueSBIZSAgPHN1bm55X2hlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaXggY3Jhc2ggaW4gUGFnZTo6dXBkYXRlUmVuZGVyaW5nIHdoZW4gZG9jdW1lbnQgaGFz
IG5vIGRvbVdpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MjAzZjAxNWFhNjQ2N2UzZjQ5NTU1NjMxNzRmOTA0
YzRmNmRlNGI1Li41MWNjNTVkMzJlMjhiZTNjZDQ0ODkyMTllZmY3ZWQ5ZWU0NzRkNmYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTAyLTE4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpc2UgRE9NIGl0ZXJhdG9ycyBpbXBsZW1lbnRhdGlvbiBh
bmQgdXNhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNzgxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0Ojpjb250YWluZXJFbGVtZW50Rm9yRWxlbWVudCk6IFVlcyBhbmNlc3Rv
cnNPZlR5cGUgaW5zdGVhZCBvZiBvd25lckRhdGFMaXN0RWxlbWVudC4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHA6IFVwZGF0ZWQgaW5j
bHVkZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlRGF0YUxp
c3RTdWdnZXN0aW9uUGlja2VyKTogUGFzcyByZWZlcmVuY2VzLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OldlYkRhdGFMaXN0U3Vn
Z2VzdGlvblBpY2tlcik6IFRha2UgcmVmZXJlbmNlcworICAgICAgICBpbnN0ZWFkIG9mIHBvaW50
ZXJzLCBzaW5jZSB0aGV5IG11c3QgYm90aCBiZSBub24tbnVsbC4KKyAgICAgICAgKFdlYktpdDo6
V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpoYW5kbGVLZXlkb3duV2l0aElkZW50aWZpZXIp
OiBVcGRhdGVkCisgICAgICAgIHRvIHVzZSByZWZlcmVuY2UuCisgICAgICAgIChXZWJLaXQ6Oldl
YkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlkU2VsZWN0T3B0aW9uKTogRGl0dG8uCisgICAg
ICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlkQ2xvc2VTdWdnZXN0
aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNr
ZXI6OmNsb3NlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlv
blBpY2tlcjo6ZGlzcGxheVdpdGhBY3RpdmF0aW9uVHlwZSk6IERpdHRvLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaDog
TWFya2VkIHRoZSBjbGFzcworICAgICAgICBmaW5hbCwgbWFkZSBtb3JlIGZ1bmN0aW9ucyBwcml2
YXRlLCB1c2UgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzLAorICAgICAgICByZW5hbWVk
IG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCB0byBtX2NsaWVudCBzaW5jZSB0aGVyZSBpcyBv
bmx5IG9uZQorICAgICAgICBjbGllbnQgd2UgYXJlIGRlYWxpbmcgd2l0aCBpbiB0aGlzIGNsYXNz
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9ybUVsZW1lbnRzIGNvbnN0KTogVXNlIGNo
aWxkcmVuT2ZUeXBlIGluc3RlYWQKKyAgICAgICAgb2YgYSBoYW5kLXdyaXR0ZW4gbG9vcC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9ybUNvbnRyb2xzIGNvbnN0KTog
RGl0dG8uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEFjdGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik6
IFRha2UgcmVmZXJlbmNlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6
IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udGFpbmluZ0xpbmtBbmNob3JF
bGVtZW50KTogVXNlIGxpbmVhZ2VPZlR5cGUgaW5zdGVhZCBvZiBlbGVtZW50TGluZWFnZS4KKyAg
ICAgICAgQWxzbyByZW5hbWVkIHRvIGVtcGhhc2l6ZSB0aGF0IHRoaXMgZnVuY3Rpb24gb25seSBy
ZXR1cm5zIEhUTUxBbmNob3JFbGVtZW50IGxpbmtzLgorICAgICAgICAoV2ViS2l0OjplbGVtZW50
UG9zaXRpb25JbmZvcm1hdGlvbik6IFVwZGF0ZWQgZm9yIG5hbWUgYW5kIHR5cGUgY2hhbmdlLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KTogRGl0dG8u
CisKIDIwMjAtMDItMjAgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGZpZGVsaXR5LmNvbSB0byB0aGUgZGVza3RvcCBjbGFzcyBxdWlya3MgbGlzdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1ZDk0ZjYyYTk0ZTg0ZjZiMDI0ZDA3M2U2
MGM4NmJiNjQyOWY1MzUuLjNjMDJmN2M4YmVmMWEwY2VhZDRiMzBiMWNhZjUxODEwMTcxODE3ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMi0x
OCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBp
dGVyYXRvcnMgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01Eb2N1bWVudC5tbTogQ3V0IGRvd24g
b24gaW5jbHVkZXMgYW5kIHJlLXNvcnRlZCB0aGVtLgorICAgICAgICAqIERPTS9ET01Eb2N1bWVu
dEZyYWdtZW50Lm1tOiBEaXR0by4KKyAgICAgICAgKiBET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVu
dC5tbTogRGl0dG8uCisKIDIwMjAtMDItMjAgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBvc2UgY2FyZXQgY29sb3IgZm9yIGNsaWVudHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCmluZGV4IDc0MWNmMjcyZGFhMTk4Yjg3Njc4OGJhNWY4YWMyYzc1MzFjM2Yx
YWEuLmUwNmY2YzIwYzgxMzlmNmU0YjE1NTBkNWQ0NGM4ZjY4ZWM4YWNhMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQpAQCAtMzkwLDcgKzM5MCw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JL
X0hFQURFUlMKICAgICBkb20vRWxlbWVudENoaWxkSXRlcmF0b3IuaAogICAgIGRvbS9FbGVtZW50
Q29udGV4dC5oCiAgICAgZG9tL0VsZW1lbnREYXRhLmgKLSAgICBkb20vRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvci5oCiAgICAgZG9tL0VsZW1lbnRJZGVudGlmaWVyLmgKICAgICBkb20vRWxlbWVu
dEl0ZXJhdG9yLmgKICAgICBkb20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzhj
ODM3YThjODQ5NWZkMTNiYzljNzFhZmVmZmZmMWNjZWU2NjBmMy4uYTI4OTdmMzljYWEwNDkzNzQ5
MGMzZmY5ZDIwYjc2MGQ4NTg2YWMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjY5Miw3ICsyNjkyLDYgQEAKIAkJOTNEMTk2
MzMxRDZDQUI4MjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNEMTk2MzIxRDZDQUI4MjAwRkM3RTQ3IC8qIEV4Y2Vw
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTkzRDQzNzlGMUQ1N0IxNTMwMEFCODVFQSAvKiBKU0V4ZWNTdGF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEY5MzREODMxMTg5RjFFRTAwNTA4RDVE
IC8qIEpTRXhlY1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTNENDM3QTAxRDU3QjE5QTAwQUI4NUVBIC8qIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5QjU2QzlBODFDODkzMTI4MDBDNDU2REYgLyogQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5M0Q0
MzdBMTFENTdCM0Y0MDBBQjg1RUEgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQURFMTFGNEExOEQ4MzEx
QjAwNzg5ODNCIC8qIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q0MzdBMjFENTdCM0ZFMDBBQjg1
RUEgLyogVVJMVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1NkI5RENBMTg5REUxMDAwMEJCODQyQyAvKiBVUkxVdGlscy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDQzN0EzMUQ1N0I3RTIw
MEFCODVFQSAvKiBKU01lZGlhTGlzdEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ3MjZGRTcxNkQ5RjIwNDAwM0E0RTZEIC8qIEpTTWVkaWFM
aXN0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNEOUQ1M0MwREEyN0UxODAwNzcyMTZDIC8qIFJhbmdlQm91bmRhcnlQb2ludC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNEOUQ1M0IwREEy
N0UxODAwNzcyMTZDIC8qIFJhbmdlQm91bmRhcnlQb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDcyMyw2ICsxMDcyMiw3IEBACiAJCTkz
ODBGNDcxMDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdpZGdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzODBGNDcyMDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdpZGdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5MzgwRjQ3NzA5QTExQUNDMDAxRkRCMzQgLyogV2lkZ2V0TWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdpZGdldE1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTM4MUI5NDEyM0Y5QjBFMDAwNzExOEI0IC8qIFJhZGlvTm9kZUxpc3Qu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFJhZGlvTm9kZUxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5MzgyQUFCMTBEOEMzODYxMDBGMzU3QTYgLyogTm9kZVdpdGhJbmRleC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOb2RlV2l0aEluZGV4Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzODJERjU3MTBBOEQ1QzkwMDkyNTY1MiAvKiBDb2xvclNwYWNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yU3BhY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTM4RTY1RjAwOUYwOTg0MDAwOEE0OEVDIC8qIEpTSFRNTEVsZW1l
bnRXcmFwcGVyRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNI
VE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwpAQCAtMTIyNzAsNyArMTIyNzAsNiBAQAogCQlBRERBOTRCRjE5Njg2RjgwMDA0
NTMwMjkgLyogSlNEb2N1bWVudEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0RvY3VtZW50Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFE
REYxQUQ0MTI1N0NEOUEwMDAzQTc1OSAvKiBSZW5kZXJTVkdQYXRoLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1BhdGguY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBRERGMUFENTEyNTdDRDlBMDAwM0E3NTkgLyogUmVuZGVyU1ZHUGF0
aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdQYXRoLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUFERTExRjRBMThEODMxMUIwMDc4OTgzQiAvKiBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQURFMTY3MzYxODEwNTBDMzAwNDYzQTJFIC8qIFJlbmRlclB0ci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQURFQzc4RjcxOEVFNTMwODAwMTMxNUMyIC8qIEpTRWxlbWVudEN1c3RvbS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0VsZW1lbnRDdXN0b20uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURGRTJCNTQxQkQ1RjQxMjAwREFCNDU3IC8qIFJlc291
cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBSZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjIxNDAsNiArMjIxMzksNyBAQAogCQkJCUY1NUIzRDk4MTI1MUYxMkQwMDNF
RjI2OSAvKiBSYWRpb0lucHV0VHlwZS5oICovLAogCQkJCUI2NThGRkEzMTUyMkVGQUEwMERENTU5
NSAvKiBSYWRpb05vZGVMaXN0LmNwcCAqLywKIAkJCQlCNjU4RkZBNDE1MjJFRkFBMDBERDU1OTUg
LyogUmFkaW9Ob2RlTGlzdC5oICovLAorCQkJCTkzODFCOTQxMjNGOUIwRTAwMDcxMThCNCAvKiBS
YWRpb05vZGVMaXN0LmlkbCAqLywKIAkJCQlGNTVCM0Q5OTEyNTFGMTJEMDAzRUYyNjkgLyogUmFu
Z2VJbnB1dFR5cGUuY3BwICovLAogCQkJCUY1NUIzRDlBMTI1MUYxMkQwMDNFRjI2OSAvKiBSYW5n
ZUlucHV0VHlwZS5oICovLAogCQkJCUY1NUIzRDlCMTI1MUYxMkQwMDNFRjI2OSAvKiBSZXNldElu
cHV0VHlwZS5jcHAgKi8sCkBAIC0yODEyMSw3ICsyODEyMSw2IEBACiAJCQkJMzEzQkNFMUIyMzVF
M0JEQjAwRkMzOUU1IC8qIEVsZW1lbnRDb250ZXh0LmggKi8sCiAJCQkJQjVCN0ExNkYxN0MxMDgw
NjAwRTRBQTBBIC8qIEVsZW1lbnREYXRhLmNwcCAqLywKIAkJCQlCNUI3QTE2RTE3QzEwNDgwMDBF
NEFBMEEgLyogRWxlbWVudERhdGEuaCAqLywKLQkJCQlBREUxMUY0QTE4RDgzMTFCMDA3ODk4M0Ig
LyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oICovLAogCQkJCTJEMkJFQjJGMjIzNEEzMzQw
MDU1NDRDQSAvKiBFbGVtZW50SWRlbnRpZmllci5oICovLAogCQkJCUU0QUU3QzE1MTdEMUJCOTUw
MDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0b3IuaCAqLywKIAkJCQlFNDAxQzI3NDE3Q0U1M0VDMDBD
NDFBMzUgLyogRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oICovLApAQCAtMjk3ODcsNyArMjk3
ODYsNiBAQAogCQkJCUU0NkEyQjFFMTdDQTc2QjEwMDBEQkNEOCAvKiBFbGVtZW50Q2hpbGRJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEzQkNFMUMyMzVFM0JFNTAwRkMzOUU1IC8qIEVs
ZW1lbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCNUI3QTE3MTE3QzEwQUMwMDBFNEFB
MEEgLyogRWxlbWVudERhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzRDQzN0ExMUQ1N0IzRjQw
MEFCODVFQSAvKiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyRDJCRUIzMTIyMzRBMzM1MDA1NTQ0Q0EgLyogRWxlbWVudElkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0QUU3QzE2MTdEMUJCOTUwMDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUU0MDFDMjc1MTdDRTUzRUMwMEM0MUEzNSAvKiBFbGVtZW50
SXRlcmF0b3JBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXgg
MjA5ZWI4ZTY1OGUwYjczNDE4ZWMyY2QwMGNkODBhNDE2ZmEyOTMzYS4uNDU4YTQwNTdlMmNmZmQy
ZjZmODVjZTgwMWNhZjlkNjFkMjgwMjlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTEwNDQsNyAr
MTA0NCw3IEBAIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojptb3VzZUJ1dHRvbkxp
c3RlbmVyKE1vdXNlQnV0dG9uTGlzdGVuZXJSZXN1bHRGCiAKICAgICAvLyBjaGVjayBpZiBvdXIg
cGFyZW50IGlzIGEgbW91c2UgYnV0dG9uIGxpc3RlbmVyCiAgICAgLy8gRklYTUU6IERvIHRoZSBj
b250aW51YXRpb24gc2VhcmNoIGxpa2UgYW5jaG9yRWxlbWVudCBkb2VzCi0gICAgZm9yIChhdXRv
JiBlbGVtZW50IDogZWxlbWVudExpbmVhZ2UoaXM8RWxlbWVudD4oKm5vZGUpID8gZG93bmNhc3Q8
RWxlbWVudD4obm9kZSkgOiBub2RlLT5wYXJlbnRFbGVtZW50KCkpKSB7CisgICAgZm9yIChhdXRv
JiBlbGVtZW50IDogbGluZWFnZU9mVHlwZTxFbGVtZW50PihpczxFbGVtZW50Pigqbm9kZSkgPyBk
b3duY2FzdDxFbGVtZW50Pigqbm9kZSkgOiAqbm9kZS0+cGFyZW50RWxlbWVudCgpKSkgewogICAg
ICAgICAvLyBJZiB3ZSd2ZSByZWFjaGVkIHRoZSBib2R5IGFuZCB0aGlzIGlzIG5vdCBhIGNvbnRy
b2wgZWxlbWVudCwgZG8gbm90IGV4cG9zZSBwcmVzcyBhY3Rpb24gZm9yIHRoaXMgZWxlbWVudCB1
bmxlc3MgZmlsdGVyIGlzIEluY2x1ZGVCb2R5RWxlbWVudC4KICAgICAgICAgLy8gSXQgY2FuIGNh
dXNlIGZhbHNlIHBvc2l0aXZlcywgd2hlcmUgZXZlcnkgcGllY2Ugb2YgdGV4dCBpcyBsYWJlbGVk
IGFzIGFjY2VwdGluZyBwcmVzcyBhY3Rpb25zLgogICAgICAgICBpZiAoZWxlbWVudC5oYXNUYWdO
YW1lKGJvZHlUYWcpICYmIGlzU3RhdGljVGV4dCgpICYmIGZpbHRlciA9PSBFeGNsdWRlQm9keUVs
ZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA5NmYzM2NiNzM0YTcwODM2OWI0ZjNiYTNk
NTQ4NDg4ZTUwNDk1NzcwLi44YTgzMDBkMDk3ZTEwZmM0ZjMzMDM3MzM0MWMxMTRhMTcxOWEzMDAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotKiBDb3B5cmlnaHQg
KEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjM3NSwyMSArMjM3NSwxOSBAQCBBWENvcmVPYmplY3Qq
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3Qo
SFRNTEFyZWFFbAogICAgIGlmICghYXJlYSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBudWxscHRyOwotICAgIGZvciAoRWxlbWVu
dCogbWFwUGFyZW50ID0gYXJlYS0+cGFyZW50RWxlbWVudCgpOyBtYXBQYXJlbnQ7IG1hcFBhcmVu
dCA9IG1hcFBhcmVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChpczxIVE1MTWFw
RWxlbWVudD4oKm1hcFBhcmVudCkpIHsKLSAgICAgICAgICAgIHBhcmVudCA9IGFjY2Vzc2liaWxp
dHlQYXJlbnRGb3JJbWFnZU1hcChkb3duY2FzdDxIVE1MTWFwRWxlbWVudD4obWFwUGFyZW50KSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICBhdXRvKiBtYXBQYXJl
bnQgPSBhbmNlc3RvcnNPZlR5cGU8SFRNTE1hcEVsZW1lbnQ+KCphcmVhKS5maXJzdCgpOworICAg
IGlmICghbWFwUGFyZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIHBh
cmVudCA9IGFjY2Vzc2liaWxpdHlQYXJlbnRGb3JJbWFnZU1hcChtYXBQYXJlbnQpOwogICAgIGlm
ICghcGFyZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIGZvciAoY29u
c3QgYXV0byYgY2hpbGQgOiBwYXJlbnQtPmNoaWxkcmVuKCkpIHsKICAgICAgICAgaWYgKGNoaWxk
LT5lbGVtZW50UmVjdCgpLmNvbnRhaW5zKHBvaW50KSkKICAgICAgICAgICAgIHJldHVybiBjaGls
ZC5nZXQoKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1
bW4uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVD
b2x1bW4uY3BwCmluZGV4IGZkYzY3ZjhhYzE1NmE1YWRiYmFhNjEzNTc2Yjg2ODJhZTYyNzE1YTEu
LmZmNDc4ZmQyMzYxNzhiYTM5YmMyMmRjMTk1YTE0OGE1NzkyZTI3YjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVt
bi5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rp
b24uaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgog
I2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggMjA1MDZmOGVjZmFjNjUzZTU1YWQwNDgxZGRh
NTYwZjVmZDcyYTU0ZC4uNGUwMDlmZWQ2YmQwZTMxMTU3YzY2NDA5YzdiMzVmY2M3ZWZmMjMyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cApAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgIkRPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5o
IgogI2luY2x1ZGUgIkRPTVdpbmRvd1dlYkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
LSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJz
LmgiCkBAIC0zOCw3ICszNyw2IEBACiAjaW5jbHVkZSAiSlNFdmVudC5oIgogI2luY2x1ZGUgIkpT
RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkpTSFRNTEF1ZGlvRWxlbWVudC5oIgotI2luY2x1
ZGUgIkpTSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJKU0hUTUxPcHRpb25FbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSlNJREJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSlNSZW1vdGVET01XaW5kb3cu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BbGxEZXNjZW5kYW50c0NvbGxlY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaAppbmRl
eCA4NTcyYWY1NTA4NjQ5NzU4ZmQwMzdhMzRmZTM5ZjNlMzIzMGE5NTkxLi4xMjBjZjMwY2U5MmU3
Njg5MjMyYzJiMzk2NjA0ZDM0ZTI4YTE4NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Fs
bERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogcHJv
dGVjdGVkOgogICAgIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiByb290
Tm9kZSwgQ29sbGVjdGlvblR5cGUgdHlwZSkKLSAgICAgICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlv
bjxBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPEFsbERlc2Nl
bmRhbnRzPjo6dHJhdmVyc2FsVHlwZT4ocm9vdE5vZGUsIHR5cGUpCisgICAgICAgIDogQ2FjaGVk
SFRNTENvbGxlY3Rpb24ocm9vdE5vZGUsIHR5cGUpCiAgICAgeyB9CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2hpbGROb2RlTGlzdC5jcHAKaW5kZXggY2JmNmYxZTc4MjY5MTA5MjVhNjU2NTJjMzNhZTBj
ZmQ1NjY3YjIwMy4uNDdlNDZkY2JiNTU5OGU3ODIzNzU1NmRiN2E3YWNmZTIwNDk4ZTEwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmNwcApAQCAtMzksNyArMzksNiBAQCBFbXB0eU5v
ZGVMaXN0Ojp+RW1wdHlOb2RlTGlzdCgpCiAKIENoaWxkTm9kZUxpc3Q6OkNoaWxkTm9kZUxpc3Qo
Q29udGFpbmVyTm9kZSYgcGFyZW50KQogICAgIDogbV9wYXJlbnQocGFyZW50KQotICAgICwgbV9p
bmRleENhY2hlKCp0aGlzKQogewogfQogCkBAIC04Nyw3ICs4Niw3IEBAIHZvaWQgQ2hpbGROb2Rl
TGlzdDo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQoTm9kZSomIGN1cnJlbnQsIHVuc2lnbmVk
IGNvdW50KSBjCiAKIHZvaWQgQ2hpbGROb2RlTGlzdDo6aW52YWxpZGF0ZUNhY2hlKCkKIHsKLSAg
ICBtX2luZGV4Q2FjaGUuaW52YWxpZGF0ZSgqdGhpcyk7CisgICAgbV9pbmRleENhY2hlLmludmFs
aWRhdGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5v
ZGVMaXN0LmgKaW5kZXggMTEzMjgyZWQ5NjIyYTlkNTAxYWE3NGUwMzJkODdjNjkxY2I5MzdiNi4u
MTBiOWEyODY5MDJmNmRhNzMwZDFmNDNiNTNkNzY1M2YwMDQ0ZjM1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hpbGROb2RlTGlzdC5oCkBAIC03Miw3ICs3Miw2IEBAIHB1YmxpYzoKICAgICAvLyBGb3IgQ29s
bGVjdGlvbkluZGV4Q2FjaGUKICAgICBOb2RlKiBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdDsKICAg
ICBOb2RlKiBjb2xsZWN0aW9uTGFzdCgpIGNvbnN0OwotICAgIE5vZGUqIGNvbGxlY3Rpb25FbmQo
KSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VG
b3J3YXJkKE5vZGUqJiwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkg
Y29uc3Q7CiAgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChOb2RlKiYsIHVuc2ln
bmVkIGNvdW50KSBjb25zdDsKICAgICBib29sIGNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJhY2t3YXJk
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0NsYXNzQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsYXNzQ29sbGVjdGlvbi5o
CmluZGV4IGVjZjdmM2QyMGM2MTVjNDY4OTgyMGYxOWFhOWNmM2E4NjMyZjZiZGQuLmE2NzVkMzA2
YmRmNzVmMzhhZjlmZmU4OWE2YjRiZTg5MjNmZDRjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DbGFzc0NvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xhc3ND
b2xsZWN0aW9uLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKIH07CiAKIGlubGluZSBDbGFz
c0NvbGxlY3Rpb246OkNsYXNzQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiByb290Tm9kZSwgQ29s
bGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgY2xhc3NOYW1lcykKLSAgICA6IENh
Y2hlZEhUTUxDb2xsZWN0aW9uPENsYXNzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8
QnlDbGFzcz46OnRyYXZlcnNhbFR5cGU+KHJvb3ROb2RlLCB0eXBlKQorICAgIDogQ2FjaGVkSFRN
TENvbGxlY3Rpb24ocm9vdE5vZGUsIHR5cGUpCiAgICAgLCBtX2NsYXNzTmFtZXMoY2xhc3NOYW1l
cywgcm9vdE5vZGUuZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSkKICAgICAsIG1fb3JpZ2luYWxD
bGFzc05hbWVzKGNsYXNzTmFtZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29sbGVjdGlvbkluZGV4Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db2xsZWN0aW9uSW5k
ZXhDYWNoZS5oCmluZGV4IDI4MDE5NDJmZGEwODhjNWM1ZjZhMTE1YTI1OTQ3ODg1YjVlZWIxZjku
LjNmODFiMjNhNmRhNDUyOTU4NDIxNzYyMzVkZjQ1MmE3NTY2OTRlMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db2xsZWN0aW9uSW5kZXhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db2xsZWN0aW9uSW5kZXhDYWNoZS5oCkBAIC0zNCwxNSArMzQsMTUgQEAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZEZvckNvbGxlY3Rpb25JbmRl
eENhY2hlKHNpemVfdCk7CiB0ZW1wbGF0ZSA8Y2xhc3MgQ29sbGVjdGlvbiwgY2xhc3MgSXRlcmF0
b3I+CiBjbGFzcyBDb2xsZWN0aW9uSW5kZXhDYWNoZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
Q29sbGVjdGlvbkluZGV4Q2FjaGUoY29uc3QgQ29sbGVjdGlvbiYpOworICAgIENvbGxlY3Rpb25J
bmRleENhY2hlKCk7CiAKICAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRz
PEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSBOb2RlVHlwZTsKIAogICAgIHVuc2lnbmVkIG5vZGVDb3Vu
dChjb25zdCBDb2xsZWN0aW9uJik7CiAgICAgTm9kZVR5cGUqIG5vZGVBdChjb25zdCBDb2xsZWN0
aW9uJiwgdW5zaWduZWQgaW5kZXgpOwogCi0gICAgYm9vbCBoYXNWYWxpZENhY2hlKGNvbnN0IENv
bGxlY3Rpb24mIGNvbGxlY3Rpb24pIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudCAhPSBjb2xsZWN0
aW9uLmNvbGxlY3Rpb25FbmQoKSB8fCBtX25vZGVDb3VudFZhbGlkIHx8IG1fbGlzdFZhbGlkOyB9
Ci0gICAgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IENvbGxlY3Rpb24mKTsKKyAgICBib29sIGhhc1Zh
bGlkQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnQgfHwgbV9ub2RlQ291bnRWYWxpZCB8
fCBtX2xpc3RWYWxpZDsgfQorICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIHNpemVfdCBtZW1v
cnlDb3N0KCkKICAgICB7CiAgICAgICAgIC8vIG1lbW9yeUNvc3QoKSBtYXkgYmUgaW52b2tlZCBj
b25jdXJyZW50bHkgZnJvbSBhIEdDIHRocmVhZCwgYW5kIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bApA
QCAtNTYsMjAgKzU2LDE2IEBAIHByaXZhdGU6CiAgICAgTm9kZVR5cGUqIHRyYXZlcnNlQmFja3dh
cmRUbyhjb25zdCBDb2xsZWN0aW9uJiwgdW5zaWduZWQpOwogICAgIE5vZGVUeXBlKiB0cmF2ZXJz
ZUZvcndhcmRUbyhjb25zdCBDb2xsZWN0aW9uJiwgdW5zaWduZWQpOwogCi0gICAgSXRlcmF0b3Ig
bV9jdXJyZW50OwotICAgIHVuc2lnbmVkIG1fY3VycmVudEluZGV4OwotICAgIHVuc2lnbmVkIG1f
bm9kZUNvdW50OworICAgIEl0ZXJhdG9yIG1fY3VycmVudCB7IH07CisgICAgdW5zaWduZWQgbV9j
dXJyZW50SW5kZXggeyAwIH07CisgICAgdW5zaWduZWQgbV9ub2RlQ291bnQgeyAwIH07CiAgICAg
VmVjdG9yPE5vZGVUeXBlKj4gbV9jYWNoZWRMaXN0OwogICAgIGJvb2wgbV9ub2RlQ291bnRWYWxp
ZCA6IDE7CiAgICAgYm9vbCBtX2xpc3RWYWxpZCA6IDE7CiB9OwogCi10ZW1wbGF0ZSA8Y2xhc3Mg
Q29sbGVjdGlvbiwgY2xhc3MgSXRlcmF0b3I+Ci1pbmxpbmUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8
Q29sbGVjdGlvbiwgSXRlcmF0b3I+OjpDb2xsZWN0aW9uSW5kZXhDYWNoZShjb25zdCBDb2xsZWN0
aW9uJiBjb2xsZWN0aW9uKQotICAgIDogbV9jdXJyZW50KGNvbGxlY3Rpb24uY29sbGVjdGlvbkVu
ZCgpKQotICAgICwgbV9jdXJyZW50SW5kZXgoMCkKLSAgICAsIG1fbm9kZUNvdW50KDApCi0gICAg
LCBtX25vZGVDb3VudFZhbGlkKGZhbHNlKQordGVtcGxhdGU8Y2xhc3MgQ29sbGVjdGlvbiwgY2xh
c3MgSXRlcmF0b3I+IENvbGxlY3Rpb25JbmRleENhY2hlPENvbGxlY3Rpb24sIEl0ZXJhdG9yPjo6
Q29sbGVjdGlvbkluZGV4Q2FjaGUoKQorICAgIDogbV9ub2RlQ291bnRWYWxpZChmYWxzZSkKICAg
ICAsIG1fbGlzdFZhbGlkKGZhbHNlKQogewogfQpAQCAtNzgsNyArNzQsNyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgQ29sbGVjdGlvbiwgY2xhc3MgSXRlcmF0b3I+CiBpbmxpbmUgdW5zaWduZWQgQ29sbGVj
dGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+Ojpub2RlQ291bnQoY29uc3QgQ29s
bGVjdGlvbiYgY29sbGVjdGlvbikKIHsKICAgICBpZiAoIW1fbm9kZUNvdW50VmFsaWQpIHsKLSAg
ICAgICAgaWYgKCFoYXNWYWxpZENhY2hlKGNvbGxlY3Rpb24pKQorICAgICAgICBpZiAoIWhhc1Zh
bGlkQ2FjaGUoKSkKICAgICAgICAgICAgIGNvbGxlY3Rpb24ud2lsbFZhbGlkYXRlSW5kZXhDYWNo
ZSgpOwogICAgICAgICBtX25vZGVDb3VudCA9IGNvbXB1dGVOb2RlQ291bnRVcGRhdGluZ0xpc3RD
YWNoZShjb2xsZWN0aW9uKTsKICAgICAgICAgbV9ub2RlQ291bnRWYWxpZCA9IHRydWU7CkBAIC05
MSwxNiArODcsMTUgQEAgdGVtcGxhdGUgPGNsYXNzIENvbGxlY3Rpb24sIGNsYXNzIEl0ZXJhdG9y
PgogdW5zaWduZWQgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+Ojpj
b21wdXRlTm9kZUNvdW50VXBkYXRpbmdMaXN0Q2FjaGUoY29uc3QgQ29sbGVjdGlvbiYgY29sbGVj
dGlvbikKIHsKICAgICBhdXRvIGN1cnJlbnQgPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25CZWdpbigp
OwotICAgIGF1dG8gZW5kID0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCk7Ci0gICAgaWYgKGN1
cnJlbnQgPT0gZW5kKQorICAgIGlmICghY3VycmVudCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICB1bnNpZ25lZCBvbGRDYXBhY2l0eSA9IG1fY2FjaGVkTGlzdC5jYXBhY2l0eSgpOwotICAgIHdo
aWxlIChjdXJyZW50ICE9IGVuZCkgeworICAgIHdoaWxlIChjdXJyZW50KSB7CiAgICAgICAgIG1f
Y2FjaGVkTGlzdC5hcHBlbmQoJipjdXJyZW50KTsKICAgICAgICAgdW5zaWduZWQgdHJhdmVyc2Vk
OwogICAgICAgICBjb2xsZWN0aW9uLmNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoY3VycmVudCwg
MSwgdHJhdmVyc2VkKTsKLSAgICAgICAgQVNTRVJUKHRyYXZlcnNlZCA9PSAoY3VycmVudCAhPSBl
bmQgPyAxIDogMCkpOworICAgICAgICBBU1NFUlQodHJhdmVyc2VkID09IChjdXJyZW50ID8gMSA6
IDApKTsKICAgICB9CiAgICAgbV9saXN0VmFsaWQgPSB0cnVlOwogCkBAIC0xMTMsNyArMTA4LDcg
QEAgdW5zaWduZWQgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+Ojpj
b21wdXRlTm9kZUNvdW50VXBkYXRpbmdMaXMKIHRlbXBsYXRlIDxjbGFzcyBDb2xsZWN0aW9uLCBj
bGFzcyBJdGVyYXRvcj4KIGlubGluZSB0eXBlbmFtZSBDb2xsZWN0aW9uSW5kZXhDYWNoZTxDb2xs
ZWN0aW9uLCBJdGVyYXRvcj46Ok5vZGVUeXBlKiBDb2xsZWN0aW9uSW5kZXhDYWNoZTxDb2xsZWN0
aW9uLCBJdGVyYXRvcj46OnRyYXZlcnNlQmFja3dhcmRUbyhjb25zdCBDb2xsZWN0aW9uJiBjb2xs
ZWN0aW9uLCB1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBBU1NFUlQobV9jdXJyZW50ICE9IGNvbGxl
Y3Rpb24uY29sbGVjdGlvbkVuZCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50KTsKICAgICBBU1NF
UlQoaW5kZXggPCBtX2N1cnJlbnRJbmRleCk7CiAKICAgICBib29sIGZpcnN0SXNDbG9zZXIgPSBp
bmRleCA8IG1fY3VycmVudEluZGV4IC0gaW5kZXg7CkBAIC0xMjIsNTAgKzExNyw1MCBAQCBpbmxp
bmUgdHlwZW5hbWUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+OjpO
b2RlVHlwZSogQ29sbGVjdGlvbgogICAgICAgICBtX2N1cnJlbnRJbmRleCA9IDA7CiAgICAgICAg
IGlmIChpbmRleCkKICAgICAgICAgICAgIGNvbGxlY3Rpb24uY29sbGVjdGlvblRyYXZlcnNlRm9y
d2FyZChtX2N1cnJlbnQsIGluZGV4LCBtX2N1cnJlbnRJbmRleCk7Ci0gICAgICAgIEFTU0VSVCht
X2N1cnJlbnQgIT0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCkpOworICAgICAgICBBU1NFUlQo
bV9jdXJyZW50KTsKICAgICAgICAgcmV0dXJuICYqbV9jdXJyZW50OwogICAgIH0KIAogICAgIGNv
bGxlY3Rpb24uY29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQobV9jdXJyZW50LCBtX2N1cnJlbnRJ
bmRleCAtIGluZGV4KTsKICAgICBtX2N1cnJlbnRJbmRleCA9IGluZGV4OwogCi0gICAgQVNTRVJU
KG1fY3VycmVudCAhPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKSk7CisgICAgQVNTRVJUKG1f
Y3VycmVudCk7CiAgICAgcmV0dXJuICYqbV9jdXJyZW50OwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3Mg
Q29sbGVjdGlvbiwgY2xhc3MgSXRlcmF0b3I+CiBpbmxpbmUgdHlwZW5hbWUgQ29sbGVjdGlvbklu
ZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+OjpOb2RlVHlwZSogQ29sbGVjdGlvbkluZGV4
Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+Ojp0cmF2ZXJzZUZvcndhcmRUbyhjb25zdCBDb2xs
ZWN0aW9uJiBjb2xsZWN0aW9uLCB1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBBU1NFUlQobV9jdXJy
ZW50ICE9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50
KTsKICAgICBBU1NFUlQoaW5kZXggPiBtX2N1cnJlbnRJbmRleCk7CiAgICAgQVNTRVJUKCFtX25v
ZGVDb3VudFZhbGlkIHx8IGluZGV4IDwgbV9ub2RlQ291bnQpOwogCiAgICAgYm9vbCBsYXN0SXND
bG9zZXIgPSBtX25vZGVDb3VudFZhbGlkICYmIG1fbm9kZUNvdW50IC0gaW5kZXggPCBpbmRleCAt
IG1fY3VycmVudEluZGV4OwogICAgIGlmIChsYXN0SXNDbG9zZXIgJiYgY29sbGVjdGlvbi5jb2xs
ZWN0aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCgpKSB7Ci0gICAgICAgIEFTU0VSVChoYXNWYWxpZENh
Y2hlKGNvbGxlY3Rpb24pKTsKKyAgICAgICAgQVNTRVJUKGhhc1ZhbGlkQ2FjaGUoKSk7CiAgICAg
ICAgIG1fY3VycmVudCA9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkxhc3QoKTsKICAgICAgICAgaWYg
KGluZGV4IDwgbV9ub2RlQ291bnQgLSAxKQogICAgICAgICAgICAgY29sbGVjdGlvbi5jb2xsZWN0
aW9uVHJhdmVyc2VCYWNrd2FyZChtX2N1cnJlbnQsIG1fbm9kZUNvdW50IC0gaW5kZXggLSAxKTsK
ICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBpbmRleDsKLSAgICAgICAgQVNTRVJUKG1fY3VycmVu
dCAhPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKSk7CisgICAgICAgIEFTU0VSVChtX2N1cnJl
bnQpOwogICAgICAgICByZXR1cm4gJiptX2N1cnJlbnQ7CiAgICAgfQogCi0gICAgaWYgKCFoYXNW
YWxpZENhY2hlKGNvbGxlY3Rpb24pKQorICAgIGlmICghaGFzVmFsaWRDYWNoZSgpKQogICAgICAg
ICBjb2xsZWN0aW9uLndpbGxWYWxpZGF0ZUluZGV4Q2FjaGUoKTsKIAogICAgIHVuc2lnbmVkIHRy
YXZlcnNlZENvdW50OwogICAgIGNvbGxlY3Rpb24uY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZCht
X2N1cnJlbnQsIGluZGV4IC0gbV9jdXJyZW50SW5kZXgsIHRyYXZlcnNlZENvdW50KTsKICAgICBt
X2N1cnJlbnRJbmRleCA9IG1fY3VycmVudEluZGV4ICsgdHJhdmVyc2VkQ291bnQ7CiAKLSAgICBp
ZiAobV9jdXJyZW50ID09IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpKSB7CisgICAgaWYgKCFt
X2N1cnJlbnQpIHsKICAgICAgICAgQVNTRVJUKG1fY3VycmVudEluZGV4IDwgaW5kZXgpOwogICAg
ICAgICAvLyBGYWlsZWQgdG8gZmluZCB0aGUgaW5kZXggYnV0IGF0IGxlYXN0IHdlIG5vdyBrbm93
IHRoZSBzaXplLgogICAgICAgICBtX25vZGVDb3VudCA9IG1fY3VycmVudEluZGV4ICsgMTsKICAg
ICAgICAgbV9ub2RlQ291bnRWYWxpZCA9IHRydWU7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KLSAgICBBU1NFUlQoaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKSk7CisgICAgQVNTRVJU
KGhhc1ZhbGlkQ2FjaGUoKSk7CiAgICAgcmV0dXJuICYqbV9jdXJyZW50OwogfQogCkBAIC0xNzgs
OCArMTczLDcgQEAgaW5saW5lIHR5cGVuYW1lIENvbGxlY3Rpb25JbmRleENhY2hlPENvbGxlY3Rp
b24sIEl0ZXJhdG9yPjo6Tm9kZVR5cGUqIENvbGxlY3Rpb24KICAgICBpZiAobV9saXN0VmFsaWQp
CiAgICAgICAgIHJldHVybiBtX2NhY2hlZExpc3RbaW5kZXhdOwogCi0gICAgYXV0byBlbmQgPSBj
b2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKTsKLSAgICBpZiAobV9jdXJyZW50ICE9IGVuZCkgewor
ICAgIGlmIChtX2N1cnJlbnQpIHsKICAgICAgICAgaWYgKGluZGV4ID4gbV9jdXJyZW50SW5kZXgp
CiAgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VGb3J3YXJkVG8oY29sbGVjdGlvbiwgaW5kZXgp
OwogICAgICAgICBpZiAoaW5kZXggPCBtX2N1cnJlbnRJbmRleCkKQEAgLTE4OSwzOSArMTgzLDM5
IEBAIGlubGluZSB0eXBlbmFtZSBDb2xsZWN0aW9uSW5kZXhDYWNoZTxDb2xsZWN0aW9uLCBJdGVy
YXRvcj46Ok5vZGVUeXBlKiBDb2xsZWN0aW9uCiAKICAgICBib29sIGxhc3RJc0Nsb3NlciA9IG1f
bm9kZUNvdW50VmFsaWQgJiYgbV9ub2RlQ291bnQgLSBpbmRleCA8IGluZGV4OwogICAgIGlmIChs
YXN0SXNDbG9zZXIgJiYgY29sbGVjdGlvbi5jb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCgp
KSB7Ci0gICAgICAgIEFTU0VSVChoYXNWYWxpZENhY2hlKGNvbGxlY3Rpb24pKTsKKyAgICAgICAg
QVNTRVJUKGhhc1ZhbGlkQ2FjaGUoKSk7CiAgICAgICAgIG1fY3VycmVudCA9IGNvbGxlY3Rpb24u
Y29sbGVjdGlvbkxhc3QoKTsKICAgICAgICAgaWYgKGluZGV4IDwgbV9ub2RlQ291bnQgLSAxKQog
ICAgICAgICAgICAgY29sbGVjdGlvbi5jb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChtX2N1cnJl
bnQsIG1fbm9kZUNvdW50IC0gaW5kZXggLSAxKTsKICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBp
bmRleDsKLSAgICAgICAgQVNTRVJUKG1fY3VycmVudCAhPSBlbmQpOworICAgICAgICBBU1NFUlQo
bV9jdXJyZW50KTsKICAgICAgICAgcmV0dXJuICYqbV9jdXJyZW50OwogICAgIH0KIAotICAgIGlm
ICghaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKSkKKyAgICBpZiAoIWhhc1ZhbGlkQ2FjaGUoKSkK
ICAgICAgICAgY29sbGVjdGlvbi53aWxsVmFsaWRhdGVJbmRleENhY2hlKCk7CiAKICAgICBtX2N1
cnJlbnQgPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25CZWdpbigpOwogICAgIG1fY3VycmVudEluZGV4
ID0gMDsKLSAgICBib29sIHN0YXJ0SXNFbmQgPSBtX2N1cnJlbnQgPT0gZW5kOwotICAgIGlmIChp
bmRleCAmJiAhc3RhcnRJc0VuZCkgeworICAgIGJvb2wgc3RhcnRJc0VuZCA9ICFtX2N1cnJlbnQ7
CisgICAgaWYgKGluZGV4ICYmIG1fY3VycmVudCkgewogICAgICAgICBjb2xsZWN0aW9uLmNvbGxl
Y3Rpb25UcmF2ZXJzZUZvcndhcmQobV9jdXJyZW50LCBpbmRleCwgbV9jdXJyZW50SW5kZXgpOwot
ICAgICAgICBBU1NFUlQobV9jdXJyZW50ICE9IGVuZCB8fCBtX2N1cnJlbnRJbmRleCA8IGluZGV4
KTsKKyAgICAgICAgQVNTRVJUKG1fY3VycmVudCB8fCBtX2N1cnJlbnRJbmRleCA8IGluZGV4KTsK
ICAgICB9Ci0gICAgaWYgKG1fY3VycmVudCA9PSBlbmQpIHsKKyAgICBpZiAoIW1fY3VycmVudCkg
ewogICAgICAgICAvLyBGYWlsZWQgdG8gZmluZCB0aGUgaW5kZXggYnV0IGF0IGxlYXN0IHdlIG5v
dyBrbm93IHRoZSBzaXplLgogICAgICAgICBtX25vZGVDb3VudCA9IHN0YXJ0SXNFbmQgPyAwIDog
bV9jdXJyZW50SW5kZXggKyAxOwogICAgICAgICBtX25vZGVDb3VudFZhbGlkID0gdHJ1ZTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIEFTU0VSVChoYXNWYWxpZENhY2hlKGNv
bGxlY3Rpb24pKTsKKyAgICBBU1NFUlQoaGFzVmFsaWRDYWNoZSgpKTsKICAgICByZXR1cm4gJipt
X2N1cnJlbnQ7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBDb2xsZWN0aW9uLCBjbGFzcyBJdGVyYXRv
cj4KLXZvaWQgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+OjppbnZh
bGlkYXRlKGNvbnN0IENvbGxlY3Rpb24mIGNvbGxlY3Rpb24pCit2b2lkIENvbGxlY3Rpb25JbmRl
eENhY2hlPENvbGxlY3Rpb24sIEl0ZXJhdG9yPjo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgbV9jdXJy
ZW50ID0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCk7CisgICAgbV9jdXJyZW50ID0geyB9Owog
ICAgIG1fbm9kZUNvdW50VmFsaWQgPSBmYWxzZTsKICAgICBtX2xpc3RWYWxpZCA9IGZhbHNlOwog
ICAgIG1fY2FjaGVkTGlzdC5zaHJpbmsoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5j
cHAKaW5kZXggN2FlMTM4MjhjNWYwMmY0YmNmZDg5ZWE4NjAwMDQ5YTM1M2NhY2M3Yi4uOGQ0ZWY5
NmRlNzcyY2Q3YTMyMzI0MWY3OWQzMmJiMmViYTc3OTg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmNwcApAQCAtOTIzLDcgKzkyMyw3IEBAIEVsZW1lbnQqIENvbnRhaW5lck5vZGU6
Omxhc3RFbGVtZW50Q2hpbGQoKSBjb25zdAogdW5zaWduZWQgQ29udGFpbmVyTm9kZTo6Y2hpbGRF
bGVtZW50Q291bnQoKSBjb25zdAogewogICAgIGF1dG8gY2hpbGRyZW4gPSBjaGlsZHJlbk9mVHlw
ZTxFbGVtZW50PigqdGhpcyk7Ci0gICAgcmV0dXJuIHN0ZDo6ZGlzdGFuY2UoY2hpbGRyZW4uYmVn
aW4oKSwgY2hpbGRyZW4uZW5kKCkpOworICAgIHJldHVybiBzdGQ6OmRpc3RhbmNlKGNoaWxkcmVu
LmJlZ2luKCksIHsgfSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OmFw
cGVuZChWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIHZlY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCmluZGV4IDJhZjI3NjE4Nzc1N2U4ODI4ODMw
NTVjOTA0ZTZlODczMzRjZDRkMjMuLmU1NmI4ZmUyMWFjNTY4ZjIyMDg1NWQ4YTRlMzVkYTAxNDQ4
NTgzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3Jp
dGhtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1z
LmNwcApAQCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Q29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKIAorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0
QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNp
bmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290Lmgi
Ci0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1l
bnRSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
LmNwcAppbmRleCA5NDU4MmVmNDNmNmYzZDc0MmI3MDA4NzI5NjllM2Y5Mzk1Y2RkMjY3Li41YjA5
NWFjYmYxY2Q1NDEzMDhlMWEwZmJmMDM1MDE1OTE5MTA2NTBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcApAQCAtMjksMTQgKzI5LDEyIEBACiAjaW5j
bHVkZSAiQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCIKICNpbmNsdWRlICJET01XaW5kb3cu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRl
ICJFbGVtZW50VHJhdmVyc2FsLmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNl
RGVmZXJyZWQuaCIKICNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgogI2luY2x1ZGUgIlF1YWxpZmll
ZE5hbWUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1
ZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAppbmRleCA4ZjIxYjI3OTM1MDM3NjE5ZWIxMDNi
OTRjYzIwYzcyY2JiNzExYTE4Li4yYTI1YWIyZTVhYTc2Nzk2NTA4MzcwYWVmYTI5MWU3MmM3YzFj
Njc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCkBAIC0yNCw3ICsy
NCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKLSNpbmNsdWRlICJFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAi
RWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50UGFyc2VyLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlhNTERvY3VtZW50UGFyc2VyLmgiCkBAIC0xMDMsNyAr
MTAzLDcgQEAgRWxlbWVudCogRG9jdW1lbnRGcmFnbWVudDo6Z2V0RWxlbWVudEJ5SWQoY29uc3Qg
QXRvbVN0cmluZyYgaWQpIGNvbnN0CiAgICAgICAgIHJldHVybiB0cmVlU2NvcGUoKS5nZXRFbGVt
ZW50QnlJZChpZCk7CiAKICAgICAvLyBPdGhlcndpc2UsIGZhbGwgYmFjayB0byBpdGVyYXRpbmcg
YWxsIG9mIHRoZSBlbGVtZW50IGRlc2NlbmRhbnRzLgotICAgIGZvciAoYXV0byYgZWxlbWVudCA6
IGVsZW1lbnREZXNjZW5kYW50cygqdGhpcykpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBk
ZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PigqdGhpcykpIHsKICAgICAgICAgaWYgKGVsZW1lbnQu
Z2V0SWRBdHRyaWJ1dGUoKSA9PSBpZCkKICAgICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PEVs
ZW1lbnQqPigmZWxlbWVudCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDg3MThl
NmQ4NmFkN2ZlNTA4YjEzODcwNmE2NWQyOTVhZGQ0MzljNTIuLjAxMTdhMzY2YmM3MjU3OTVhNTZm
ZWI5OWFlMWZlMTYyNzgzOGVlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTQsNyArNCw3
IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAq
ICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKICAqICAg
ICAgICAgICAoQykgMjAwNyBEYXZpZCBTbWl0aCAoY2F0ZmlzaC5tYW5AZ21haWwuY29tKQotICog
Q29weXJpZ2h0IChDKSAyMDA0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogICAgICAgICAgIChDKSAyMDA3IEVyaWMgU2VpZGVsIChlcmljQHdlYmtpdC5vcmcpCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgpAQCAtNjAsNyArNjAsNiBAQAogI2luY2x1ZGUgIkdldEFuaW1hdGlvbnNPcHRp
b25zLmgiCiAjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZh
c0VsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxIdG1sRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxM
YWJlbEVsZW1lbnQuaCIKQEAgLTM0MDAsMjYgKzMzOTksMTQgQEAgdW5zaWduZWQgRWxlbWVudDo6
cmFyZURhdGFDaGlsZEluZGV4KCkgY29uc3QKIAogQXRvbVN0cmluZyBFbGVtZW50Ojpjb21wdXRl
SW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdAogewotICAgIGlmIChjb25zdCBFbGVtZW50RGF0YSog
ZWxlbWVudERhdGEgPSB0aGlzLT5lbGVtZW50RGF0YSgpKSB7Ci0gICAgICAgIGlmIChjb25zdCBB
dHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnREYXRhLT5maW5kTGFuZ3VhZ2VBdHRyaWJ1dGUo
KSkKLSAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGUtPnZhbHVlKCk7Ci0gICAgfQotCiAgICAg
Ly8gVGhlIGxhbmd1YWdlIHByb3BlcnR5IGlzIGluaGVyaXRlZCwgc28gd2UgaXRlcmF0ZSBvdmVy
IHRoZSBwYXJlbnRzIHRvIGZpbmQgdGhlIGZpcnN0IGxhbmd1YWdlLgotICAgIGNvbnN0IE5vZGUq
IGN1cnJlbnROb2RlID0gdGhpczsKLSAgICB3aGlsZSAoKGN1cnJlbnROb2RlID0gY3VycmVudE5v
ZGUtPnBhcmVudE5vZGUoKSkpIHsKLSAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KCpjdXJyZW50Tm9k
ZSkpIHsKLSAgICAgICAgICAgIGlmIChjb25zdCBFbGVtZW50RGF0YSogZWxlbWVudERhdGEgPSBk
b3duY2FzdDxFbGVtZW50PigqY3VycmVudE5vZGUpLmVsZW1lbnREYXRhKCkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBlbGVtZW50RGF0YS0+Zmlu
ZExhbmd1YWdlQXR0cmlidXRlKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1
dGUtPnZhbHVlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoaXM8RG9jdW1l
bnQ+KCpjdXJyZW50Tm9kZSkpIHsKLSAgICAgICAgICAgIC8vIGNoZWNraW5nIHRoZSBNSU1FIGNv
bnRlbnQtbGFuZ3VhZ2UKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oKmN1
cnJlbnROb2RlKS5jb250ZW50TGFuZ3VhZ2UoKTsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBs
aW5lYWdlT2ZUeXBlPEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBpZiAoYXV0byogZWxlbWVu
dERhdGEgPSBlbGVtZW50LmVsZW1lbnREYXRhKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBh
dHRyaWJ1dGUgPSBlbGVtZW50RGF0YS0+ZmluZExhbmd1YWdlQXR0cmlidXRlKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFsdWUoKTsKICAgICAgICAgfQogICAgIH0KLQot
ICAgIHJldHVybiBudWxsQXRvbSgpOworICAgIHJldHVybiBkb2N1bWVudCgpLmNvbnRlbnRMYW5n
dWFnZSgpOwogfQogCiBMb2NhbGUmIEVsZW1lbnQ6OmxvY2FsZSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oCmluZGV4IDRiNjJkMzhiMzhmZDM4
NDljNzM3YWNhODdlZjg0NTI3ZjgzNzU1ZjAuLmM5OWM3NjYyNzU3M2VkOTE2MTc4MmZkMDdiZDFm
YzY1ZjNiMjM5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0
b3JJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0b3JJdGVy
YXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI5LDYzICsyOSwzNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yIDog
cHVibGljIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gewotcHVibGljOgotICAgIEVsZW1l
bnRBbmNlc3Rvckl0ZXJhdG9yKCk7Ci0gICAgZXhwbGljaXQgRWxlbWVudEFuY2VzdG9ySXRlcmF0
b3IoRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotICAgIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yJiBv
cGVyYXRvcisrKCk7Ci19OwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEVsZW1lbnRBbmNlc3Rv
clJhbmdlOwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBFbGVtZW50
QW5jZXN0b3JDb25zdEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPiB7Ci1wdWJsaWM6Ci0gICAgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcigpOwot
ICAgIGV4cGxpY2l0IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3IoY29uc3QgRWxlbWVudFR5
cGUqIGN1cnJlbnQpOwotICAgIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3ImIG9wZXJhdG9y
KysoKTsKLX07CisvLyBSYW5nZSBmb3IgaXRlcmF0aW5nIGFuIGVsZW1lbnQgYW5kIGl0cyBhbmNl
c3RvcnMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9yUmFu
Z2U8RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoRWxlbWVudCYgZmlyc3QpOwordGVtcGxhdGU8
dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnRU
eXBlPiBsaW5lYWdlT2ZUeXBlKGNvbnN0IEVsZW1lbnQmIGZpcnN0KTsKKworLy8gUmFuZ2UgZm9y
IGl0ZXJhdGluZyBhIG5vZGUncyBlbGVtZW50IGFuY2VzdG9ycy4KK3RlbXBsYXRlPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50VHlwZT4gYW5jZXN0b3Jz
T2ZUeXBlKE5vZGUmIGRlc2NlbmRhbnQpOwordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+
IEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNPZlR5cGUo
Y29uc3QgTm9kZSYgZGVzY2VuZGFudCk7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWNsYXNzIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlciB7CitjbGFzcyBFbGVtZW50
QW5jZXN0b3JJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IHsK
IHB1YmxpYzoKLSAgICBleHBsaWNpdCBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXIoRWxl
bWVudFR5cGUqIGZpcnN0KTsKLSAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlw
ZT4gYmVnaW4oKTsKLSAgICBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5k
KCk7Ci0gICAgRWxlbWVudFR5cGUqIGZpcnN0KCkgeyByZXR1cm4gbV9maXJzdDsgfQotCi1wcml2
YXRlOgotICAgIEVsZW1lbnRUeXBlKiBtX2ZpcnN0OworICAgIGV4cGxpY2l0IEVsZW1lbnRBbmNl
c3Rvckl0ZXJhdG9yKEVsZW1lbnRUeXBlKiA9IG51bGxwdHIpOworICAgIEVsZW1lbnRBbmNlc3Rv
ckl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+Ci1jbGFzcyBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlciB7CitjbGFz
cyBFbGVtZW50QW5jZXN0b3JSYW5nZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRWxlbWVudEFu
Y2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgRWxlbWVudFR5cGUqIGZpcnN0KTsKLSAg
ICBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpIGNvbnN0
OwotICAgIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpIGNv
bnN0OwotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmly
c3Q7IH0KKyAgICBleHBsaWNpdCBFbGVtZW50QW5jZXN0b3JSYW5nZShFbGVtZW50VHlwZSogZmly
c3QpOworICAgIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpIGNv
bnN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpudWxscHRyX3QgZW5kKCkgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmly
c3Q7IH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBFbGVtZW50VHlwZSogbV9maXJzdDsKKyAgICBF
bGVtZW50VHlwZSogY29uc3QgbV9maXJzdDsKIH07CiAKLUVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9y
QWRhcHRlcjxFbGVtZW50PiBlbGVtZW50TGluZWFnZShFbGVtZW50KiBmaXJzdCk7Ci1FbGVtZW50
QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50TGluZWFnZShjb25z
dCBFbGVtZW50KiBmaXJzdCk7Ci1FbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dD4gZWxlbWVudEFuY2VzdG9ycyhFbGVtZW50KiBkZXNjZW5kYW50KTsKLUVsZW1lbnRBbmNlc3Rv
ckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRBbmNlc3RvcnMoY29uc3QgRWxl
bWVudCogZGVzY2VuZGFudCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1l
bnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShFbGVt
ZW50JiBmaXJzdCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRBbmNl
c3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKGNvbnN0
IEVsZW1lbnQmIGZpcnN0KTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVu
dEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNPZlR5cGUoTm9k
ZSYgZGVzY2VuZGFudCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRB
bmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNPZlR5cGUo
Y29uc3QgTm9kZSYgZGVzY2VuZGFudCk7Ci0KIC8vIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yCiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JJ
dGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yKCkKLSAgICA6IEVs
ZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obnVsbHB0cikKLXsKLX0KLQogdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6RWxlbWVudEFuY2VzdG9ySXRlcmF0b3IoRWxlbWVudFR5cGUqIGN1cnJlbnQpCiAg
ICAgOiBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KG51bGxwdHIsIGN1cnJlbnQpCkBAIC05
NSwxMTkgKzY5LDYyIEBAIGlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlw
ZT46OkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yKEVsZW1lbnRUeXBlCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5
cGU+JiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQog
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50
VHlwZT4mPihFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZUFuY2VzdG9yKCkp
OwotfQotCi0vLyBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yCi0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPjo6RWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcigpCi0gICAgOiBFbGVtZW50
Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obnVsbHB0cikKLXsKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8
RWxlbWVudFR5cGU+OjpFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yKGNvbnN0IEVsZW1lbnRU
eXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG51
bGxwdHIsIGN1cnJlbnQpCi17Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVu
dEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQotewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPiY+KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VBbmNlc3Rv
cigpKTsKKyAgICBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZUFuY2VzdG9y
KCk7CisgICAgcmV0dXJuICp0aGlzOwogfQogCi0vLyBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFk
YXB0ZXIKKy8vIEVsZW1lbnRBbmNlc3RvclJhbmdlCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5
cGU+OjpFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXIoRWxlbWVudFR5cGUqIGZpcnN0KQor
aW5saW5lIEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRUeXBlPjo6RWxlbWVudEFuY2VzdG9y
UmFuZ2UoRWxlbWVudFR5cGUqIGZpcnN0KQogICAgIDogbV9maXJzdChmaXJzdCkKIHsKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dFR5cGU+OjpiZWdpbigpCitpbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5
cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRUeXBlPjo6YmVnaW4oKSBjb25zdAogewog
ICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9maXJzdCk7
CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5j
ZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVy
PEVsZW1lbnRUeXBlPjo6ZW5kKCkKLXsKLSAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0
b3I8RWxlbWVudFR5cGU+KCk7Ci19Ci0KLS8vIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JB
ZGFwdGVyCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OkVsZW1lbnRBbmNlc3Rv
ckNvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCkKLSAgICA6IG1f
Zmlyc3QoZmlyc3QpCi17Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlu
bGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50QW5j
ZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2luKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9m
aXJzdCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVt
ZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JDb25z
dEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KCk7Ci19Ci0KIC8vIFN0
YW5kYWxvbmUgZnVuY3Rpb25zCiAKLWlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0
ZXI8RWxlbWVudD4gZWxlbWVudExpbmVhZ2UoRWxlbWVudCogZmlyc3QpCi17Ci0gICAgcmV0dXJu
IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PihmaXJzdCk7Ci19Ci0KLWlu
bGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50
TGluZWFnZShjb25zdCBFbGVtZW50KiBmaXJzdCkKK3RlbXBsYXRlPD4gaW5saW5lIEVsZW1lbnRB
bmNlc3RvclJhbmdlPEVsZW1lbnQ+IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4oRWxlbWVudCYgZmly
c3QpCiB7Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVs
ZW1lbnQ+KGZpcnN0KTsKLX0KLQotaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRl
cjxFbGVtZW50PiBlbGVtZW50QW5jZXN0b3JzKEVsZW1lbnQqIGRlc2NlbmRhbnQpCi17Ci0gICAg
cmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PihkZXNjZW5kYW50
LT5wYXJlbnRFbGVtZW50KCkpOwotfQotCi1pbmxpbmUgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVy
YXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudEFuY2VzdG9ycyhjb25zdCBFbGVtZW50KiBkZXNj
ZW5kYW50KQotewotICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRl
cjxFbGVtZW50PihkZXNjZW5kYW50LT5wYXJlbnRFbGVtZW50KCkpOworICAgIHJldHVybiBFbGVt
ZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50PigmZmlyc3QpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVs
ZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKEVsZW1lbnQmIGZpcnN0KQoraW5saW5lIEVsZW1lbnRB
bmNlc3RvclJhbmdlPEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKEVsZW1lbnQmIGZpcnN0KQog
ewogICAgIGlmIChpczxFbGVtZW50VHlwZT4oZmlyc3QpKQotICAgICAgICByZXR1cm4gRWxlbWVu
dEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihzdGF0aWNfY2FzdDxFbGVtZW50
VHlwZSo+KCZmaXJzdCkpOworICAgICAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8RWxl
bWVudFR5cGU+KCZkb3duY2FzdDxFbGVtZW50VHlwZT4oZmlyc3QpKTsKICAgICByZXR1cm4gYW5j
ZXN0b3JzT2ZUeXBlPEVsZW1lbnRUeXBlPihmaXJzdCk7CiB9CiAKK3RlbXBsYXRlPD4gaW5saW5l
IEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnQ+IGxpbmVhZ2VPZlR5cGU8RWxlbWVu
dD4oY29uc3QgRWxlbWVudCYgZmlyc3QpCit7CisgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvclJh
bmdlPGNvbnN0IEVsZW1lbnQ+KCZmaXJzdCk7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT4gbGluZWFnZU9mVHlwZShjb25zdCBFbGVtZW50JiBmaXJzdCkKK2lubGluZSBFbGVt
ZW50QW5jZXN0b3JSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShjb25zdCBF
bGVtZW50JiBmaXJzdCkKIHsKICAgICBpZiAoaXM8RWxlbWVudFR5cGU+KGZpcnN0KSkKLSAgICAg
ICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBl
PihzdGF0aWNfY2FzdDxjb25zdCBFbGVtZW50VHlwZSo+KCZmaXJzdCkpOworICAgICAgICByZXR1
cm4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+KCZkb3duY2FzdDxFbGVt
ZW50VHlwZT4oZmlyc3QpKTsKICAgICByZXR1cm4gYW5jZXN0b3JzT2ZUeXBlPEVsZW1lbnRUeXBl
PihmaXJzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBF
bGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGFuY2VzdG9yc09mVHlw
ZShOb2RlJiBkZXNjZW5kYW50KQoraW5saW5lIEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRU
eXBlPiBhbmNlc3RvcnNPZlR5cGUoTm9kZSYgZGVzY2VuZGFudCkKIHsKLSAgICBFbGVtZW50VHlw
ZSogZmlyc3QgPSBmaW5kRWxlbWVudEFuY2VzdG9yT2ZUeXBlPEVsZW1lbnRUeXBlPihkZXNjZW5k
YW50KTsKLSAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPihmaXJzdCk7CisgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnRUeXBl
PihmaW5kRWxlbWVudEFuY2VzdG9yT2ZUeXBlPEVsZW1lbnRUeXBlPihkZXNjZW5kYW50KSk7CiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5jZXN0
b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZUeXBlKGNvbnN0
IE5vZGUmIGRlc2NlbmRhbnQpCitpbmxpbmUgRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29uc3QgRWxl
bWVudFR5cGU+IGFuY2VzdG9yc09mVHlwZShjb25zdCBOb2RlJiBkZXNjZW5kYW50KQogewotICAg
IGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCA9IGZpbmRFbGVtZW50QW5jZXN0b3JPZlR5cGU8Y29u
c3QgRWxlbWVudFR5cGU+KGRlc2NlbmRhbnQpOwotICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JD
b25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4oZmlyc3QpOworICAgIHJldHVybiBFbGVt
ZW50QW5jZXN0b3JSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4oZmluZEVsZW1lbnRBbmNlc3Rvck9m
VHlwZTxjb25zdCBFbGVtZW50VHlwZT4oZGVzY2VuZGFudCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuZFRleHRE
ZXNjZW5kYW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5kVGV4dERl
c2NlbmRhbnRJdGVyYXRvci5oCmluZGV4IDQ4ZTNiMWE2MThkMmZlMGEyODc2N2IzNzMxZjJmYWRm
OTczZWZiY2UuLmQxZGRiMGY3Mzc1MDE1NjQ1OTdiMGEwMjM0ZTJiNDYyMDFkNWRlNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVy
YXRvci5oCkBAIC0zNiw4ICszNiw4IEBAIGNsYXNzIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0
ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcigp
OwogICAgIGVudW0gRmlyc3RDaGlsZFRhZyB7IEZpcnN0Q2hpbGQgfTsKLSAgICBFbGVtZW50QW5k
VGV4dERlc2NlbmRhbnRJdGVyYXRvcihDb250YWluZXJOb2RlJiByb290LCBGaXJzdENoaWxkVGFn
KTsKLSAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihDb250YWluZXJOb2RlJiBy
b290LCBOb2RlKiBjdXJyZW50KTsKKyAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRv
cihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBGaXJzdENoaWxkVGFnKTsKKyAgICBFbGVtZW50
QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBOb2Rl
KiBjdXJyZW50KTsKIAogICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVy
YXRvcisrKCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0KCk7IH0KIApAQCAtNjMsOSArNjMsOSBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgaXNFbGVtZW50T3JUZXh0KGNvbnN0
IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEVsZW1lbnQ+KG5vZGUpIHx8IGlzPFRleHQ+KG5vZGUp
OyB9Ci0gICAgc3RhdGljIE5vZGUqIGZpcnN0Q2hpbGQoTm9kZSYpOwotICAgIHN0YXRpYyBOb2Rl
KiBuZXh0U2libGluZyhOb2RlJik7Ci0gICAgc3RhdGljIE5vZGUqIHByZXZpb3VzU2libGluZyhO
b2RlJik7CisgICAgc3RhdGljIE5vZGUqIGZpcnN0Q2hpbGQoY29uc3QgTm9kZSYpOworICAgIHN0
YXRpYyBOb2RlKiBuZXh0U2libGluZyhjb25zdCBOb2RlJik7CisgICAgc3RhdGljIE5vZGUqIHBy
ZXZpb3VzU2libGluZyhjb25zdCBOb2RlJik7CiAKICAgICB2b2lkIHBvcEFuY2VzdG9yU2libGlu
Z1N0YWNrKCk7CiAKQEAgLTgyLDE3ICs4MiwxNyBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1j
bGFzcyBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgeworY2xhc3MgRWxl
bWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2UgewogcHVibGljOgotICAgIGV4cGxpY2l0IEVsZW1l
bnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2RlJiByb290KTsK
LSAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBiZWdpbigpOwotICAgIEVsZW1l
bnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yIGVuZCgpOworICAgIGV4cGxpY2l0IEVsZW1lbnRB
bmRUZXh0RGVzY2VuZGFudFJhbmdlKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpOworICAgIEVs
ZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CisgICAgRWxlbWVu
dEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgZW5kKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAg
Q29udGFpbmVyTm9kZSYgbV9yb290OworICAgIGNvbnN0IENvbnRhaW5lck5vZGUmIG1fcm9vdDsK
IH07CiAKLUVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlciBlbGVtZW50QW5k
VGV4dERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUmKTsKK0VsZW1lbnRBbmRUZXh0RGVzY2VuZGFu
dFJhbmdlIGVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudHMoQ29udGFpbmVyTm9kZSYpOwogCiAvLyBF
bGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcgogCkBAIC0xMDEsNyArMTAxLDcgQEAgaW5s
aW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2Nl
bmRhbnRJdGVyYXRvcigpCiB7CiB9CiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJ
dGVyYXRvcjo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoQ29udGFpbmVyTm9kZSYg
cm9vdCwgRmlyc3RDaGlsZFRhZykKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVy
YXRvcjo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9k
ZSYgcm9vdCwgRmlyc3RDaGlsZFRhZykKICAgICA6IG1fY3VycmVudChmaXJzdENoaWxkKHJvb3Qp
KQogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLCBtX2Fzc2VydGlvbnMobV9jdXJyZW50KQpAQCAt
MTEzLDcgKzExMyw3IEBAIGlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6
RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoQ29udGFpCiAgICAgbV9kZXB0aCA9IDE7
CiB9CiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6RWxlbWVudEFu
ZFRleHREZXNjZW5kYW50SXRlcmF0b3IoQ29udGFpbmVyTm9kZSYgcm9vdCwgTm9kZSogY3VycmVu
dCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6RWxlbWVudEFuZFRl
eHREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgTm9kZSogY3Vy
cmVudCkKICAgICA6IG1fY3VycmVudChjdXJyZW50KQogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
LCBtX2Fzc2VydGlvbnMobV9jdXJyZW50KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIGlubGluZSB2b2lk
IEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpkcm9wQXNzZXJ0aW9ucygpCiAjZW5k
aWYKIH0KIAotaW5saW5lIE5vZGUqIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpm
aXJzdENoaWxkKE5vZGUmIGN1cnJlbnQpCitpbmxpbmUgTm9kZSogRWxlbWVudEFuZFRleHREZXNj
ZW5kYW50SXRlcmF0b3I6OmZpcnN0Q2hpbGQoY29uc3QgTm9kZSYgY3VycmVudCkKIHsKICAgICBh
dXRvKiBub2RlID0gY3VycmVudC5maXJzdENoaWxkKCk7CiAgICAgd2hpbGUgKG5vZGUgJiYgIWlz
RWxlbWVudE9yVGV4dCgqbm9kZSkpCkBAIC0xNTYsNyArMTU2LDcgQEAgaW5saW5lIE5vZGUqIEVs
ZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpmaXJzdENoaWxkKE5vZGUmIGN1cnJlbnQp
CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLWlubGluZSBOb2RlKiBFbGVtZW50QW5kVGV4dERlc2Nl
bmRhbnRJdGVyYXRvcjo6bmV4dFNpYmxpbmcoTm9kZSYgY3VycmVudCkKK2lubGluZSBOb2RlKiBF
bGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6bmV4dFNpYmxpbmcoY29uc3QgTm9kZSYg
Y3VycmVudCkKIHsKICAgICBhdXRvKiBub2RlID0gY3VycmVudC5uZXh0U2libGluZygpOwogICAg
IHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPclRleHQoKm5vZGUpKQpAQCAtMTY0LDcgKzE2NCw3
IEBAIGlubGluZSBOb2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6bmV4dFNp
YmxpbmcoTm9kZSYgY3VycmVudCkKICAgICByZXR1cm4gbm9kZTsKIH0KIAotaW5saW5lIE5vZGUq
IEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpwcmV2aW91c1NpYmxpbmcoTm9kZSYg
Y3VycmVudCkKK2lubGluZSBOb2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6
cHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUmIGN1cnJlbnQpCiB7CiAgICAgYXV0byogbm9kZSA9
IGN1cnJlbnQucHJldmlvdXNTaWJsaW5nKCk7CiAgICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVu
dE9yVGV4dCgqbm9kZSkpCkBAIC0yOTQsMjggKzI5NCwyOCBAQCBpbmxpbmUgYm9vbCBFbGVtZW50
QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBFbGVtZW50QW5kVGV4
dERlcwogICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKIH0KIAotLy8gRWxlbWVudEFuZFRl
eHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyCisvLyBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRS
YW5nZQogCi1pbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjpF
bGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVyTm9kZSYgcm9v
dCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZTo6RWxlbWVudEFuZFRleHRE
ZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKICAgICA6IG1fcm9vdChy
b290KQogewogfQogCi1pbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgRWxl
bWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjpiZWdpbigpCitpbmxpbmUgRWxl
bWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgRWxlbWVudEFuZFRleHREZXNjZW5kYW50UmFu
Z2U6OmJlZ2luKCkgY29uc3QKIHsKICAgICByZXR1cm4gRWxlbWVudEFuZFRleHREZXNjZW5kYW50
SXRlcmF0b3IobV9yb290LCBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6Rmlyc3RD
aGlsZCk7CiB9CiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBFbGVt
ZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI6OmVuZCgpCitpbmxpbmUgRWxlbWVu
dEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgRWxlbWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2U6
OmVuZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAogLy8gU3RhbmRhbG9uZSBmdW5j
dGlvbnMKIAotaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlciBl
bGVtZW50QW5kVGV4dERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUmIHJvb3QpCitpbmxpbmUgRWxl
bWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2UgZWxlbWVudEFuZFRleHREZXNjZW5kYW50cyhDb250
YWluZXJOb2RlJiByb290KQogewotICAgIHJldHVybiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJ
dGVyYXRvckFkYXB0ZXIocm9vdCk7CisgICAgcmV0dXJuIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFu
dFJhbmdlKHJvb3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENoaWxkSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oCmluZGV4IDhlMzhmYjUwMzJhODIzNzc2ZTJhN2Jj
YTNhYzI1OGNiMTUwNmM0MDAuLmU2NmIyNDlmNTk1MTEwMDAzODRkODQ3MTI3N2EzZjIwMjE2ZTYx
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDc5ICsy
OSwzOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFz
cyBFbGVtZW50Q2hpbGRSYW5nZTsKKworLy8gUmFuZ2UgZm9yIGl0ZXJhdGluZyB0aHJvdWdoIGNo
aWxkIGVsZW1lbnRzLgordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hp
bGRSYW5nZTxFbGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoQ29udGFpbmVyTm9kZSYpOwordGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRSYW5nZTxjb25zdCBFbGVt
ZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYpOworCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBjbGFzcyBFbGVtZW50Q2hpbGRJdGVyYXRvciA6IHB1
YmxpYyBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVm
IEVsZW1lbnRUeXBlIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5j
ZV90eXBlOwotICAgIHR5cGVkZWYgRWxlbWVudFR5cGUqIHBvaW50ZXI7Ci0gICAgdHlwZWRlZiBF
bGVtZW50VHlwZSYgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgc3RkOjpmb3J3YXJkX2l0ZXJhdG9y
X3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLQotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNvbnN0
IENvbnRhaW5lck5vZGUmIHBhcmVudCk7CisgICAgRWxlbWVudENoaWxkSXRlcmF0b3IoKSA9IGRl
ZmF1bHQ7CiAgICAgRWxlbWVudENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFy
ZW50LCBFbGVtZW50VHlwZSogY3VycmVudCk7CiAgICAgRWxlbWVudENoaWxkSXRlcmF0b3ImIG9w
ZXJhdG9yLS0oKTsKICAgICBFbGVtZW50Q2hpbGRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwogfTsK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVudENoaWxkQ29u
c3RJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gewot
cHVibGljOgotICAgIHR5cGVkZWYgY29uc3QgRWxlbWVudFR5cGUgdmFsdWVfdHlwZTsKLSAgICB0
eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiBjb25zdCBFbGVt
ZW50VHlwZSogcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNvbnN0IEVsZW1lbnRUeXBlJiByZWZlcmVu
Y2U7Ci0gICAgdHlwZWRlZiBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVn
b3J5OwotCi0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2Rl
JiBwYXJlbnQpOwotICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVy
Tm9kZSYgcGFyZW50LCBjb25zdCBFbGVtZW50VHlwZSogY3VycmVudCk7Ci0gICAgRWxlbWVudENo
aWxkQ29uc3RJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwotICAgIEVsZW1lbnRDaGlsZENvbnN0SXRl
cmF0b3ImIG9wZXJhdG9yKysoKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWNsYXNzIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlciB7Ci1wdWJsaWM6Ci0gICAgRWxl
bWVudENoaWxkSXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUmIHBhcmVudCk7Ci0KLSAgICBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKTsKLSAgICBFbGVtZW50Q2hp
bGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCk7Ci0gICAgRWxlbWVudENoaWxkSXRlcmF0b3I8
RWxlbWVudFR5cGU+IGJlZ2luQXQoRWxlbWVudFR5cGUmKTsKLQotICAgIEVsZW1lbnRUeXBlKiBm
aXJzdCgpOwotICAgIEVsZW1lbnRUeXBlKiBsYXN0KCk7Ci0KLXByaXZhdGU6Ci0gICAgQ29udGFp
bmVyTm9kZSYgbV9wYXJlbnQ7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
Ci1jbGFzcyBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlciB7CitjbGFzcyBFbGVtZW50
Q2hpbGRSYW5nZSB7CiBwdWJsaWM6Ci0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0
ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKKyAgICBFbGVtZW50Q2hpbGRSYW5nZShj
b25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpOwogCi0gICAgRWxlbWVudENoaWxkQ29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKSBjb25zdDsKLSAgICBFbGVtZW50Q2hpbGRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKSBjb25zdDsKLSAgICBFbGVtZW50Q2hpbGRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbkF0KGNvbnN0IEVsZW1lbnRUeXBlJikgY29uc3Q7Cisg
ICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBzdGQ6Om51bGxwdHJfdCBlbmQoKSB7IHJldHVybiBudWxscHRyOyB9
CisgICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoRWxlbWVudFR5
cGUmKSBjb25zdDsKIAotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0OwotICAg
IGNvbnN0IEVsZW1lbnRUeXBlKiBsYXN0KCkgY29uc3Q7CisgICAgRWxlbWVudFR5cGUqIGZpcnN0
KCkgY29uc3Q7CisgICAgRWxlbWVudFR5cGUqIGxhc3QoKSBjb25zdDsKIAogcHJpdmF0ZToKICAg
ICBjb25zdCBDb250YWluZXJOb2RlJiBtX3BhcmVudDsKIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBj
aGlsZHJlbk9mVHlwZShDb250YWluZXJOb2RlJik7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+IEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBjaGls
ZHJlbk9mVHlwZShjb25zdCBDb250YWluZXJOb2RlJik7Ci0KIC8vIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hp
bGRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNvbnN0IENvbnRh
aW5lck5vZGUmIHBhcmVudCkKLSAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnBh
cmVudCkKLXsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVs
ZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENoaWxkSXRlcmF0b3IoY29u
c3QgQ29udGFpbmVyTm9kZSYgcGFyZW50LCBFbGVtZW50VHlwZSogY3VycmVudCkKICAgICA6IEVs
ZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnBhcmVudCwgY3VycmVudCkKQEAgLTExMSwxMzIg
KzcxLDYyIEBAIGlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1l
bnRDaGlsZEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVt
ZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yLS0oKQogewotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZpb3VzU2libGluZygpKTsKKyAgICBF
bGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZpb3VzU2libGluZygpOwor
ICAgIHJldHVybiAqdGhpczsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgog
aW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENoaWxkSXRl
cmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxlbWVudEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGluZygpKTsKLX0KLQotLy8gRWxlbWVudENoaWxk
Q29uc3RJdGVyYXRvcgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUg
RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZENvbnN0
SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KQotICAgIDogRWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZwYXJlbnQpCi17Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiBwYXJl
bnQsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVudENvbnN0SXRlcmF0
b3I8RWxlbWVudFR5cGU+KCZwYXJlbnQsIGN1cnJlbnQpCi17Ci19Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPiYgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9y
LS0oKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVy
c2VQcmV2aW91c1NpYmxpbmcoKSk7CisgICAgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6
dHJhdmVyc2VOZXh0U2libGluZygpOworICAgIHJldHVybiAqdGhpczsKIH0KIAorLy8gRWxlbWVu
dENoaWxkUmFuZ2UKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVs
ZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q2hpbGRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkpOwotfQotCi0vLyBF
bGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXIKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OkVs
ZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2RlJiBwYXJlbnQpCitpbmxpbmUg
RWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5cGU+OjpFbGVtZW50Q2hpbGRSYW5nZShjb25zdCBD
b250YWluZXJOb2RlJiBwYXJlbnQpCiAgICAgOiBtX3BhcmVudChwYXJlbnQpCiB7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRv
cjxFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6
YmVnaW4oKQoraW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50
Q2hpbGRSYW5nZTxFbGVtZW50VHlwZT46OmJlZ2luKCkgY29uc3QKIHsKICAgICByZXR1cm4gRWxl
bWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcGFyZW50LCBUcmF2ZXJzYWw8RWxlbWVu
dFR5cGU+OjpmaXJzdENoaWxkKG1fcGFyZW50KSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxl
bWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkKLXsKLSAgICByZXR1
cm4gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcGFyZW50KTsKLX0KLQotdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRUeXBlKiBFbGVtZW50
Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpmaXJzdCgpCitpbmxpbmUgRWxlbWVu
dFR5cGUqIEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPjo6Zmlyc3QoKSBjb25zdAogewog
ICAgIHJldHVybiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdENoaWxkKG1fcGFyZW50KTsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRUeXBl
KiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpsYXN0KCkKK2lubGlu
ZSBFbGVtZW50VHlwZSogRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5cGU+OjpsYXN0KCkgY29u
c3QKIHsKICAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bGFzdENoaWxkKG1fcGFy
ZW50KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8
RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBjaGlsZCkKK2lubGluZSBFbGVtZW50
Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5cGU+
OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBjaGlsZCkgY29uc3QKIHsKICAgICBBU1NFUlQoY2hpbGQu
cGFyZW50Tm9kZSgpID09ICZtX3BhcmVudCk7CiAgICAgcmV0dXJuIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPihtX3BhcmVudCwgJmNoaWxkKTsKIH0KIAotLy8gRWxlbWVudENoaWxk
Q29uc3RJdGVyYXRvckFkYXB0ZXIKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6RWxl
bWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50
KQotICAgIDogbV9wYXJlbnQocGFyZW50KQotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4g
RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+
KG1fcGFyZW50LCBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdENoaWxkKG1fcGFyZW50KSk7
Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hp
bGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRh
cHRlcjxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGls
ZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcGFyZW50KTsKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlKiBFbGVtZW50Q2hp
bGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZpcnN0KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RDaGlsZChtX3BhcmVudCk7Ci19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBjb25zdCBFbGVtZW50
VHlwZSogRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpsYXN0
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bGFzdENoaWxk
KG1fcGFyZW50KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5l
IEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZENvbnN0
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW5BdChjb25zdCBFbGVtZW50VHlwZSYg
Y2hpbGQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGNoaWxkLnBhcmVudE5vZGUoKSA9PSAmbV9wYXJl
bnQpOwotICAgIHJldHVybiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiht
X3BhcmVudCwgJmNoaWxkKTsKLX0KLQogLy8gU3RhbmRhbG9uZSBmdW5jdGlvbnMKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRh
cHRlcjxFbGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoQ29udGFpbmVyTm9kZSYgcGFyZW50KQor
aW5saW5lIEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShDb250
YWluZXJOb2RlJiBwYXJlbnQpCiB7Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRh
cHRlcjxFbGVtZW50VHlwZT4ocGFyZW50KTsKKyAgICByZXR1cm4gRWxlbWVudENoaWxkUmFuZ2U8
RWxlbWVudFR5cGU+KHBhcmVudCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4g
Y2hpbGRyZW5PZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KQoraW5saW5lIEVsZW1l
bnRDaGlsZFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShjb25zdCBDb250
YWluZXJOb2RlJiBwYXJlbnQpCiB7Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0
b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihwYXJlbnQpOworICAgIHJldHVybiBFbGVtZW50Q2hpbGRS
YW5nZTxjb25zdCBFbGVtZW50VHlwZT4ocGFyZW50KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYmRiOTlhNmRkZTk2NDZkZmI0MTc0NjEy
OTkxOGM3MzVlYWU0OTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaAorKysg
L2Rldi9udWxsCkBAIC0xLDM2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJFbGVtZW50LmgiCi0j
aW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oIgotI2luY2x1ZGUgIkVsZW1lbnRU
cmF2ZXJzYWwuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcigpOwotICAgIGV4cGxpY2l0IEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IoRWxlbWVudCogY3VycmVudCk7Ci0KLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yJiBvcGVyYXRvcisrKCk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0
b3ItLSgpOwotCi0gICAgRWxlbWVudCYgb3BlcmF0b3IqKCk7Ci0gICAgRWxlbWVudCogb3BlcmF0
b3ItPigpOwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3ImIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotCi0gICAgdm9pZCBkcm9wQXNzZXJ0aW9u
cygpOwotCi1wcml2YXRlOgotICAgIEVsZW1lbnQqIG1fY3VycmVudDsKLSAgICBWZWN0b3I8RWxl
bWVudCosIDE2PiBtX2FuY2VzdG9yU2libGluZ1N0YWNrOwotCi0jaWYgQVNTRVJUX0VOQUJMRUQK
LSAgICBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0aW9uczsKLSNlbmRpZgotfTsK
LQotY2xhc3MgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIHsKLXB1YmxpYzoKLSAgICBF
bGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoKTsKLSAgICBleHBsaWNpdCBFbGVtZW50RGVz
Y2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgRWxlbWVudCopOwotCi0gICAgRWxlbWVudERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Ci0KLSAgICBjb25zdCBFbGVtZW50JiBv
cGVyYXRvciooKSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50KiBvcGVyYXRvci0+KCkgY29uc3Q7
Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVsZW1lbnREZXNj
ZW5kYW50Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotCi0gICAgdm9pZCBkcm9wQXNzZXJ0
aW9ucygpOwotCi1wcml2YXRlOgotICAgIGNvbnN0IEVsZW1lbnQqIG1fY3VycmVudDsKLSAgICBW
ZWN0b3I8RWxlbWVudCosIDE2PiBtX2FuY2VzdG9yU2libGluZ1N0YWNrOwotCi0jaWYgQVNTRVJU
X0VOQUJMRUQKLSAgICBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0aW9uczsKLSNl
bmRpZgotfTsKLQotY2xhc3MgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgewotcHVi
bGljOgotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUm
IHJvb3QpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgYmVnaW4oKTsKLSAgICBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yIGVuZCgpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IgbGFzdCgpOwotCi1wcml2YXRlOgotICAgIENvbnRhaW5lck5vZGUmIG1fcm9vdDsKLX07Ci0K
LWNsYXNzIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIgewotcHVibGljOgot
ICAgIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVy
Tm9kZSYgcm9vdCk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIGJlZ2luKCkg
Y29uc3Q7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIGVuZCgpIGNvbnN0Owot
ICAgIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciBsYXN0KCkgY29uc3Q7Ci0KLXByaXZh
dGU6Ci0gICAgY29uc3QgQ29udGFpbmVyTm9kZSYgbV9yb290OwotfTsKLQotRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvckFkYXB0ZXIgZWxlbWVudERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUmKTsK
LUVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIgZWxlbWVudERlc2NlbmRhbnRz
KGNvbnN0IENvbnRhaW5lck5vZGUmKTsKLQotLy8gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcgot
Ci1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6RWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcigpCi0gICAgOiBtX2N1cnJlbnQobnVsbHB0cikKLXsKLX0KLQotaW5saW5lIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3I6OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoRWxlbWVudCogY3Vy
cmVudCkKLSAgICA6IG1fY3VycmVudChjdXJyZW50KQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAg
LCBtX2Fzc2VydGlvbnMoY3VycmVudCkKLSNlbmRpZgotewotICAgIG1fYW5jZXN0b3JTaWJsaW5n
U3RhY2sudW5jaGVja2VkQXBwZW5kKG51bGxwdHIpOwotfQotCi1pbmxpbmUgdm9pZCBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yOjpkcm9wQXNzZXJ0aW9ucygpCi17Ci0jaWYgQVNTRVJUX0VOQUJM
RUQKLSAgICBtX2Fzc2VydGlvbnMuY2xlYXIoKTsKLSNlbmRpZgotfQotCi1BTFdBWVNfSU5MSU5F
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6Om9w
ZXJhdG9yKysoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3Nl
cnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotCi0gICAgRWxlbWVudCogZmlyc3RDaGlsZCA9
IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQoKm1fY3VycmVudCk7Ci0gICAgRWxlbWVudCog
bmV4dFNpYmxpbmcgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZygqbV9jdXJyZW50KTsK
LQotICAgIGlmIChmaXJzdENoaWxkKSB7Ci0gICAgICAgIGlmIChuZXh0U2libGluZykKLSAgICAg
ICAgICAgIG1fYW5jZXN0b3JTaWJsaW5nU3RhY2suYXBwZW5kKG5leHRTaWJsaW5nKTsKLSAgICAg
ICAgbV9jdXJyZW50ID0gZmlyc3RDaGlsZDsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0K
LQotICAgIGlmIChuZXh0U2libGluZykgewotICAgICAgICBtX2N1cnJlbnQgPSBuZXh0U2libGlu
ZzsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIG1fY3VycmVudCA9IG1fYW5j
ZXN0b3JTaWJsaW5nU3RhY2sudGFrZUxhc3QoKTsKLQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAg
Ly8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4K
LSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3Bh
dGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotQUxXQVlT
X0lOTElORSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yOjpvcGVyYXRvci0tKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQo
IW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLQotICAgIEVsZW1lbnQqIHByZXZp
b3VzU2libGluZyA9IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZygqbV9jdXJyZW50
KTsKLQotICAgIGlmICghcHJldmlvdXNTaWJsaW5nKSB7Ci0gICAgICAgIG1fY3VycmVudCA9IG1f
Y3VycmVudC0+cGFyZW50RWxlbWVudCgpOwotICAgICAgICAvLyBUaGUgc3RhY2sgb3B0aW1pemVz
IGZvciBmb3J3YXJkIHRyYXZlcnNhbCBvbmx5LCB0aGlzIGp1c3QgbWFpbnRhaW5zIGNvbnNpc3Rl
bmN5LgotICAgICAgICBpZiAobV9jdXJyZW50LT5uZXh0U2libGluZygpICYmIG1fY3VycmVudC0+
bmV4dFNpYmxpbmcoKSA9PSBtX2FuY2VzdG9yU2libGluZ1N0YWNrLmxhc3QoKSkKLSAgICAgICAg
ICAgIG1fYW5jZXN0b3JTaWJsaW5nU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICByZXR1cm4g
KnRoaXM7Ci0gICAgfQotCi0gICAgRWxlbWVudCogZGVlcGVzdFNpYmxpbmcgPSBwcmV2aW91c1Np
Ymxpbmc7Ci0gICAgd2hpbGUgKEVsZW1lbnQqIGxhc3RDaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6
Omxhc3RDaGlsZCgqZGVlcGVzdFNpYmxpbmcpKQotICAgICAgICBkZWVwZXN0U2libGluZyA9IGxh
c3RDaGlsZDsKLSAgICBBU1NFUlQoZGVlcGVzdFNpYmxpbmcpOwotCi0gICAgaWYgKGRlZXBlc3RT
aWJsaW5nICE9IHByZXZpb3VzU2libGluZykKLSAgICAgICAgbV9hbmNlc3RvclNpYmxpbmdTdGFj
ay5hcHBlbmQobV9jdXJyZW50KTsKLQotICAgIG1fY3VycmVudCA9IGRlZXBlc3RTaWJsaW5nOwot
Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUg
aXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBt
X2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotCi0gICAg
cmV0dXJuICp0aGlzOwotfQotCi1pbmxpbmUgRWxlbWVudCYgRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjo6b3BlcmF0b3IqKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQo
IW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gKm1fY3VycmVu
dDsKLX0KLQotaW5saW5lIEVsZW1lbnQqIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6Om9wZXJh
dG9yLT4oKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRp
b25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQ7Ci19Ci0KLWlu
bGluZSBib29sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFtX2Fz
c2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuIG1fY3VycmVudCA9PSBv
dGhlci5tX2N1cnJlbnQ7Ci19Ci0KLWlubGluZSBib29sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3I6Om9wZXJhdG9yIT0oY29uc3QgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3RoZXIpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotfQotCi0vLyBFbGVtZW50RGVz
Y2VuZGFudENvbnN0SXRlcmF0b3IKLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVy
YXRvcjo6RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKCkKLSAgICA6IG1fY3VycmVudChu
dWxscHRyKQotewotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpF
bGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgRWxlbWVudCogY3VycmVudCkKLSAg
ICA6IG1fY3VycmVudChjdXJyZW50KQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLCBtX2Fzc2Vy
dGlvbnMoY3VycmVudCkKLSNlbmRpZgotewotICAgIG1fYW5jZXN0b3JTaWJsaW5nU3RhY2sudW5j
aGVja2VkQXBwZW5kKG51bGxwdHIpOwotfQotCi1pbmxpbmUgdm9pZCBFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3I6OmRyb3BBc3NlcnRpb25zKCkKLXsKLSNpZiBBU1NFUlRfRU5BQkxFRAot
ICAgIG1fYXNzZXJ0aW9ucy5jbGVhcigpOwotI2VuZGlmCi19Ci0KLUFMV0FZU19JTkxJTkUgRWxl
bWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yJiBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0
b3I6Om9wZXJhdG9yKysoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCgh
bV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotCi0gICAgRWxlbWVudCogZmlyc3RD
aGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQoKm1fY3VycmVudCk7Ci0gICAgRWxl
bWVudCogbmV4dFNpYmxpbmcgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZygqbV9jdXJy
ZW50KTsKLQotICAgIGlmIChmaXJzdENoaWxkKSB7Ci0gICAgICAgIGlmIChuZXh0U2libGluZykK
LSAgICAgICAgICAgIG1fYW5jZXN0b3JTaWJsaW5nU3RhY2suYXBwZW5kKG5leHRTaWJsaW5nKTsK
LSAgICAgICAgbV9jdXJyZW50ID0gZmlyc3RDaGlsZDsKLSAgICAgICAgcmV0dXJuICp0aGlzOwot
ICAgIH0KLQotICAgIGlmIChuZXh0U2libGluZykgewotICAgICAgICBtX2N1cnJlbnQgPSBuZXh0
U2libGluZzsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIG1fY3VycmVudCA9
IG1fYW5jZXN0b3JTaWJsaW5nU3RhY2sudGFrZUxhc3QoKTsKLQotI2lmIEFTU0VSVF9FTkFCTEVE
Ci0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhl
IGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVu
dERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQot
aW5saW5lIGNvbnN0IEVsZW1lbnQmIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6b3Bl
cmF0b3IqKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1f
YXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gKm1fY3VycmVudDsK
LX0KLQotaW5saW5lIGNvbnN0IEVsZW1lbnQqIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
cjo6b3BlcmF0b3ItPigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNT
RVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0dXJuIG1fY3Vy
cmVudDsKLX0KLQotaW5saW5lIGJvb2wgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpv
cGVyYXRvcj09KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNv
bnN0Ci17Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0g
ICAgcmV0dXJuIG1fY3VycmVudCA9PSBvdGhlci5tX2N1cnJlbnQ7Ci19Ci0KLWlubGluZSBib29s
IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBFbGVtZW50
RGVzY2VuZGFudENvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsKLX0KLQotLy8gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIK
LQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyOjpFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2RlJiByb290KQotICAgIDogbV9yb290KHJv
b3QpCi17Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3JBZGFwdGVyOjpiZWdpbigpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IoRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGlsZChtX3Jvb3QpKTsKLX0K
LQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvckFkYXB0ZXI6OmVuZCgpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IoKTsKLX0KLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvckFkYXB0ZXI6Omxhc3QoKQotewotICAgIHJldHVybiBFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yKEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RXaXRoaW4obV9yb290KSk7Ci19Ci0K
LS8vIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIKLQotaW5saW5lIEVsZW1l
bnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI6OkVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKLSAgICA6IG1fcm9vdChy
b290KQotewotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yIEVsZW1l
bnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI6OmJlZ2luKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKEVsZW1lbnRUcmF2ZXJzYWw6OmZp
cnN0Q2hpbGQobV9yb290KSk7Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3IgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjo6ZW5kKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKCk7Ci19Ci0KLWlu
bGluZSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IgRWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yQWRhcHRlcjo6bGFzdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNj
ZW5kYW50Q29uc3RJdGVyYXRvcihFbGVtZW50VHJhdmVyc2FsOjpsYXN0V2l0aGluKG1fcm9vdCkp
OwotfQotCi0vLyBTdGFuZGFsb25lIGZ1bmN0aW9ucwotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvckFkYXB0ZXIgZWxlbWVudERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUmIHJvb3Qp
Ci17Ci0gICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKHJvb3QpOwot
fQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlciBlbGVtZW50
RGVzY2VuZGFudHMoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKLXsKLSAgICByZXR1cm4gRWxl
bWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcihyb290KTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2Ugc3RkIHsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpdGVy
YXRvcl90cmFpdHM8V2ViQ29yZTo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcj4gewotICAgIHR5
cGVkZWYgV2ViQ29yZTo6RWxlbWVudCB2YWx1ZV90eXBlOwotfTsKLXRlbXBsYXRlIDw+IHN0cnVj
dCBpdGVyYXRvcl90cmFpdHM8V2ViQ29yZTo6RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
PiB7Ci0gICAgdHlwZWRlZiBjb25zdCBXZWJDb3JlOjpFbGVtZW50IHZhbHVlX3R5cGU7Ci19Owot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvci5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvci5oCmluZGV4IDM3NGRiYTdhNGMyNDc4ZGRk
OTNhZWIyYTRjNDRlM2RiODJkNzNiNTYuLjYwMTJiYjYzMjRmMGJlMTkxNTUwMmRjZjk5NGFjNzdj
OTRkMGRiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMTYgKzM0LDE3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWNsYXNzIEVsZW1lbnRJdGVyYXRvciB7CitjbGFzcyBFbGVtZW50SXRlcmF0b3IgOiBwdWJs
aWMgc3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBFbGVtZW50VHlwZT4g
ewogcHVibGljOgotICAgIEVsZW1lbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290
KTsKLSAgICBFbGVtZW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwgRWxlbWVu
dFR5cGUqIGN1cnJlbnQpOworICAgIEVsZW1lbnRJdGVyYXRvcigpID0gZGVmYXVsdDsKIAogICAg
IEVsZW1lbnRUeXBlJiBvcGVyYXRvciooKSBjb25zdDsKICAgICBFbGVtZW50VHlwZSogb3BlcmF0
b3ItPigpIGNvbnN0OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVsZW1lbnRJdGVyYXRv
ciYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFbGVtZW50SXRlcmF0
b3ImIG90aGVyKSBjb25zdDsKKyAgICBjb25zdGV4cHIgb3BlcmF0b3IgYm9vbCgpIGNvbnN0Owor
ICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yISgpIGNvbnN0OworICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yIT0oc3RkOjpudWxscHRyX3QpIGNvbnN0OworICAgIGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yIT0oY29uc3QgRWxlbWVudEl0ZXJhdG9yJikgY29uc3Q7CiAKICAgICBFbGVtZW50SXRl
cmF0b3ImIHRyYXZlcnNlTmV4dCgpOwogICAgIEVsZW1lbnRJdGVyYXRvciYgdHJhdmVyc2VQcmV2
aW91cygpOwpAQCAtNTQsMzkgKzU1LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZHJvcEFzc2Vy
dGlvbnMoKTsKIAotcHJpdmF0ZToKLSAgICBjb25zdCBDb250YWluZXJOb2RlKiBtX3Jvb3Q7Ci0g
ICAgRWxlbWVudFR5cGUqIG1fY3VycmVudDsKLQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgRWxl
bWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7Ci0jZW5kaWYKLX07Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRDb25zdEl0ZXJhdG9yIHsK
LXB1YmxpYzoKLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiBy
b290KTsKLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290
LCBjb25zdCBFbGVtZW50VHlwZSogY3VycmVudCk7Ci0KLSAgICBjb25zdCBFbGVtZW50VHlwZSYg
b3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIG9wZXJhdG9yLT4oKSBj
b25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbGVtZW50Q29uc3RJdGVyYXRvciYg
b3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFbGVtZW50Q29uc3RJdGVy
YXRvciYgb3RoZXIpIGNvbnN0OwotCi0gICAgRWxlbWVudENvbnN0SXRlcmF0b3ImIHRyYXZlcnNl
TmV4dCgpOwotICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzKCk7Ci0g
ICAgRWxlbWVudENvbnN0SXRlcmF0b3ImIHRyYXZlcnNlTmV4dFNpYmxpbmcoKTsKLSAgICBFbGVt
ZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoKTsKLSAgICBFbGVtZW50
Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJlbigpOwotICAgIEVsZW1l
bnRDb25zdEl0ZXJhdG9yJiB0cmF2ZXJzZUFuY2VzdG9yKCk7Ci0KLSAgICB2b2lkIGRyb3BBc3Nl
cnRpb25zKCk7Citwcm90ZWN0ZWQ6CisgICAgRWxlbWVudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5l
ck5vZGUqIHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKIAogcHJpdmF0ZToKLSAgICBjb25z
dCBDb250YWluZXJOb2RlKiBtX3Jvb3Q7Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIG1fY3VycmVu
dDsKKyAgICBjb25zdCBDb250YWluZXJOb2RlKiBtX3Jvb3QgeyBudWxscHRyIH07CisgICAgRWxl
bWVudFR5cGUqIG1fY3VycmVudCB7IG51bGxwdHIgfTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7CkBAIC05NSwxMyArNjks
NiBAQCBwcml2YXRlOgogCiAvLyBFbGVtZW50SXRlcmF0b3IKIAotdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1l
bnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290KQotICAgIDogbV9yb290KHJvb3Qp
Ci0gICAgLCBtX2N1cnJlbnQobnVsbHB0cikKLXsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRJ
dGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290LCBFbGVtZW50VHlwZSogY3VycmVudCkK
ICAgICA6IG1fcm9vdChyb290KQpAQCAtMjM3LDE2MCArMjA0LDI1IEBAIGlubGluZSBFbGVtZW50
VHlwZSogRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItPigpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fY3VycmVudDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotaW5saW5lIGJvb2wgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3I9PShj
b25zdCBFbGVtZW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAgIEFTU0VSVChtX3Jvb3Qg
PT0gb3RoZXIubV9yb290KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0
YXRlZCgpKTsKLSAgICByZXR1cm4gbV9jdXJyZW50ID09IG90aGVyLm1fY3VycmVudDsKLX0KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGJvb2wgRWxlbWVudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBFbGVtZW50SXRlcmF0b3ImIG90aGVy
KSBjb25zdAotewotICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLX0KLQotLy8gRWxlbWVu
dENvbnN0SXRlcmF0b3IKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5l
IEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENvbnN0SXRlcmF0b3Io
Y29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCkKLSAgICA6IG1fcm9vdChyb290KQotICAgICwgbV9j
dXJyZW50KG51bGxwdHIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gY29uc3RleHBy
IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIGJvb2woKSBjb25zdAogewor
ICAgIHJldHVybiBtX2N1cnJlbnQ7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDb25z
dEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QsIGNvbnN0IEVsZW1lbnRUeXBlKiBj
dXJyZW50KQotICAgIDogbV9yb290KHJvb3QpCi0gICAgLCBtX2N1cnJlbnQoY3VycmVudCkKLSNp
ZiBBU1NFUlRfRU5BQkxFRAotICAgICwgbV9hc3NlcnRpb25zKGN1cnJlbnQpCi0jZW5kaWYKLXsK
LX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDb25z
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+
Ojp0cmF2ZXJzZU5leHQoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCgh
bV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3VycmVudCA9IFRyYXZl
cnNhbDxFbGVtZW50VHlwZT46Om5leHQoKm1fY3VycmVudCwgbV9yb290KTsKLSNpZiBBU1NFUlRf
RU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFj
aGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0gICAgICAgIG1fYXNzZXJ0aW9ucy5k
cm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlmCi0gICAgcmV0dXJuICp0aGlzOwot
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46
OnRyYXZlcnNlUHJldmlvdXMoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VS
VCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3VycmVudCA9IFRy
YXZlcnNhbDxFbGVtZW50VHlwZT46OnByZXZpb3VzKCptX2N1cnJlbnQsIG1fcm9vdCk7Ci0jaWYg
QVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0
b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBtX2Fzc2Vy
dGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAgIHJldHVybiAq
dGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1l
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsK
LSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICBtX2N1
cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0U2libGluZygqbV9jdXJyZW50KTsK
LSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBp
dGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0gICAgICAgIG1f
YXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlmCi0gICAgcmV0
dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUg
RWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q29uc3RJdGVyYXRvcjxF
bGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKCkKLXsKLSAgICBBU1NFUlQobV9j
dXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsK
LSAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpwcmV2aW91c1NpYmxpbmco
Km1fY3VycmVudCk7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRp
b24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50
KQotICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNl
bmRpZgotICAgIHJldHVybiAqdGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgotaW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENv
bnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCkK
LXsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21U
cmVlSGFzTXV0YXRlZCgpKTsKLSAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+
OjpuZXh0U2tpcHBpbmdDaGlsZHJlbigqbV9jdXJyZW50LCBtX3Jvb3QpOwotI2lmIEFTU0VSVF9F
TkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNo
ZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRy
b3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gKnRoaXM7Ci19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6
dHJhdmVyc2VBbmNlc3RvcigpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0gICAgQVNTRVJU
KG1fY3VycmVudCAhPSBtX3Jvb3QpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVI
YXNNdXRhdGVkKCkpOwotICAgIG1fY3VycmVudCA9IGZpbmRFbGVtZW50QW5jZXN0b3JPZlR5cGU8
Y29uc3QgRWxlbWVudFR5cGU+KCptX2N1cnJlbnQpOwotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAg
Ly8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4K
LSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3Bh
dGNoQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSB2b2lkIEVsZW1lbnRDb25zdEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPjo6ZHJvcEFzc2VydGlvbnMoKQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0g
ICAgbV9hc3NlcnRpb25zLmNsZWFyKCk7Ci0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlJiBFbGVtZW50Q29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKigpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBF
bGVtZW50VHlwZT4gY29uc3RleHByIGJvb2wgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6
b3BlcmF0b3IhKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQo
IW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gKm1fY3VycmVu
dDsKKyAgICByZXR1cm4gIW1fY3VycmVudDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlKiBFbGVtZW50Q29uc3RJdGVyYXRvcjxF
bGVtZW50VHlwZT46Om9wZXJhdG9yLT4oKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+IGNvbnN0ZXhwciBib29sIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJh
dG9yIT0oc3RkOjpudWxscHRyX3QpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7Ci0g
ICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CiAgICAgcmV0dXJu
IG1fY3VycmVudDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5l
IGJvb2wgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcj09KGNvbnN0
IEVsZW1lbnRDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICBBU1NFUlQobV9yb290
ID09IG90aGVyLm1fcm9vdCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011
dGF0ZWQoKSk7Ci0gICAgcmV0dXJuIG1fY3VycmVudCA9PSBvdGhlci5tX2N1cnJlbnQ7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBib29sIEVsZW1lbnRDb25z
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBFbGVtZW50Q29uc3RJdGVy
YXRvciYgb3RoZXIpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gY29uc3Rl
eHByIGJvb2wgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBF
bGVtZW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsKKyAgICBBU1NFUlQobV9yb290ID09IG90aGVyLm1fcm9vdCB8fCAhbV9jdXJyZW50IHx8
ICFvdGhlci5tX2N1cnJlbnQpOworICAgIHJldHVybiBtX2N1cnJlbnQgIT0gb3RoZXIubV9jdXJy
ZW50OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTGl2ZU5vZGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxp
c3QuY3BwCmluZGV4IGRkMGM5OTkxODA5Y2JmN2M3MTA2MDA1MDIxNjRlOWExNmZkY2MxOTEuLjQ3
ODkyMzAxZTI5NmFhNmE1N2Q4ZDM4NTNhYjdiNjhkZTViOWNhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9M
aXZlTm9kZUxpc3QuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExh
cnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29p
dmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVs
bGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYtMjAwOCwg
MjAxMCwgMjAxMy0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtMjMsMzIgKzIzLDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiTGl2ZU5vZGVMaXN0LmgiCiAKLSNpbmNsdWRlICJDbGFzc0NvbGxlY3Rpb24uaCIK
LSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudFRyYXZlcnNhbC5oIgotI2lu
Y2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
TGl2ZU5vZGVMaXN0KTsKLQogTGl2ZU5vZGVMaXN0OjpMaXZlTm9kZUxpc3QoQ29udGFpbmVyTm9k
ZSYgb3duZXJOb2RlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxpZGF0aW9uVHlwZSkK
ICAgICA6IG1fb3duZXJOb2RlKG93bmVyTm9kZSkKICAgICAsIG1faW52YWxpZGF0aW9uVHlwZShp
bnZhbGlkYXRpb25UeXBlKQotICAgICwgbV9pc1JlZ2lzdGVyZWRGb3JJbnZhbGlkYXRpb25BdERv
Y3VtZW50KGZhbHNlKQogewotICAgIEFTU0VSVChtX2ludmFsaWRhdGlvblR5cGUgPT0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGludmFsaWRhdGlvblR5cGUpKTsKIH0KIAogTGl2ZU5vZGVMaXN0Ojp+
TGl2ZU5vZGVMaXN0KCkgPSBkZWZhdWx0OwogCi1Db250YWluZXJOb2RlJiBMaXZlTm9kZUxpc3Q6
OnJvb3ROb2RlKCkgY29uc3QKLXsKLSAgICBpZiAoaXNSb290ZWRBdERvY3VtZW50KCkgJiYgb3du
ZXJOb2RlKCkuaXNDb25uZWN0ZWQoKSkKLSAgICAgICAgcmV0dXJuIG93bmVyTm9kZSgpLmRvY3Vt
ZW50KCk7Ci0KLSAgICByZXR1cm4gb3duZXJOb2RlKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaAppbmRleCBmMjdmMGVmNjc0YmJkOTgyMzE0
YzBiYmIyNWI4NTI0MjIzNGRhNThmLi40ODkxNjM2MTA3OTEzOGZkMGJjNzhlNmQ0MWFhYWYwMzE4
ZTBiYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCkBAIC0yNiw3ICsyNiw2IEBACiAj
aW5jbHVkZSAiQ29sbGVjdGlvbkluZGV4Q2FjaGUuaCIKICNpbmNsdWRlICJDb2xsZWN0aW9uVHJh
dmVyc2FsLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTm9kZUxp
c3QuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMzksMzkgKzM4LDM1IEBAIGNsYXNz
IEVsZW1lbnQ7CiBzdGF0aWMgYm9vbCBzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmlidXRlQ2hh
bmdlKE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiBj
bGFzcyBMaXZlTm9kZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QgewotICAgIFdURl9NQUtFX0lTT19B
TExPQ0FURUQoTGl2ZU5vZGVMaXN0KTsKKyAgICBXVEZfTUFLRV9JU09fTk9OQUxMT0NBVEFCTEUo
TGl2ZU5vZGVMaXN0KTsKIHB1YmxpYzoKLSAgICBMaXZlTm9kZUxpc3QoQ29udGFpbmVyTm9kZSYg
b3duZXJOb2RlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUpOwogICAgIHZpcnR1YWwgfkxpdmVO
b2RlTGlzdCgpOwogCiAgICAgdmlydHVhbCBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0ID0g
MDsKIAotICAgIEFMV0FZU19JTkxJTkUgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRh
dGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxOb2RlTGlzdEludmFsaWRhdGlv
blR5cGU+KG1faW52YWxpZGF0aW9uVHlwZSk7IH0KKyAgICBOb2RlTGlzdEludmFsaWRhdGlvblR5
cGUgaW52YWxpZGF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faW52YWxpZGF0aW9uVHlwZTsg
fQogICAgIENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXJO
b2RlOyB9Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGludmFsaWRhdGVDYWNoZUZvckF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlm
IChzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmlidXRlQ2hhbmdlKGludmFsaWRhdGlvblR5cGUo
KSwgYXR0ck5hbWUpKQotICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hlKCk7Ci0gICAgfQorICAg
IHZvaWQgaW52YWxpZGF0ZUNhY2hlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2FjaGVGb3JE
b2N1bWVudChEb2N1bWVudCYpIGNvbnN0ID0gMDsKICAgICB2b2lkIGludmFsaWRhdGVDYWNoZSgp
IGNvbnN0IHsgaW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQoZG9jdW1lbnQoKSk7IH0KIAogICAg
IGJvb2wgaXNSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudDsgfQotICAgIHZvaWQg
c2V0UmVnaXN0ZXJlZEZvckludmFsaWRhdGlvbkF0RG9jdW1lbnQoYm9vbCBmKSB7IG1faXNSZWdp
c3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudCA9IGY7IH0KKyAgICB2b2lkIHNldFJlZ2lz
dGVyZWRGb3JJbnZhbGlkYXRpb25BdERvY3VtZW50KGJvb2wgaXNSZWdpc3RlcmVkKSB7IG1faXNS
ZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudCA9IGlzUmVnaXN0ZXJlZDsgfQogCiBw
cm90ZWN0ZWQ6CisgICAgTGl2ZU5vZGVMaXN0KENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSwgTm9k
ZUxpc3RJbnZhbGlkYXRpb25UeXBlKTsKKwogICAgIERvY3VtZW50JiBkb2N1bWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fb3duZXJOb2RlLT5kb2N1bWVudCgpOyB9CisgICAgQ29udGFpbmVyTm9kZSYg
cm9vdE5vZGUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBib29sIGlzTGl2ZU5vZGVMaXN0KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgQ29udGFpbmVyTm9kZSYgcm9vdE5v
ZGUoKSBjb25zdDsKLQogICAgIFJlZjxDb250YWluZXJOb2RlPiBtX293bmVyTm9kZTsKIAotICAg
IGNvbnN0IHVuc2lnbmVkIG1faW52YWxpZGF0aW9uVHlwZTsKLSAgICBib29sIG1faXNSZWdpc3Rl
cmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudDsKKyAgICBjb25zdCBOb2RlTGlzdEludmFsaWRh
dGlvblR5cGUgbV9pbnZhbGlkYXRpb25UeXBlOworICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRGb3JJ
bnZhbGlkYXRpb25BdERvY3VtZW50IHsgZmFsc2UgfTsKIH07CiAKIHRlbXBsYXRlIDxjbGFzcyBO
b2RlTGlzdFR5cGU+CkBAIC04MSwxNiArNzYsMTcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNh
Y2hlZExpdmVOb2RlTGlzdCgpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVDb3VudChub2RlTGlzdCgpKTsgfQotICAgIEVsZW1l
bnQqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2luZGV4
Q2FjaGUubm9kZUF0KG5vZGVMaXN0KCksIG9mZnNldCk7IH0KKyAgICBFbGVtZW50KiBpdGVtKHVu
c2lnbmVkIG9mZnNldCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVBdChu
b2RlTGlzdCgpLCBvZmZzZXQpOyB9CiAKICAgICAvLyBGb3IgQ29sbGVjdGlvbkluZGV4Q2FjaGUK
LSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGNvbGxlY3Rpb25CZWdpbigpIGNvbnN0IHsg
cmV0dXJuIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2Nl
bmRhbnRzPjo6YmVnaW4obm9kZUxpc3QoKSwgcm9vdE5vZGUoKSk7IH0KLSAgICBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yIGNvbGxlY3Rpb25MYXN0KCkgY29uc3QgeyByZXR1cm4gQ29sbGVjdGlv
blRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+OjpsYXN0KG5v
ZGVMaXN0KCksIHJvb3ROb2RlKCkpOyB9Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBj
b2xsZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcigp
OyB9Ci0gICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291
bnQpIGNvbnN0IHsgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6
RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUZvcndhcmQobm9kZUxpc3QoKSwgY3VycmVudCwgY291bnQs
IHRyYXZlcnNlZENvdW50KTsgfQotICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQo
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpIGNvbnN0
IHsgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFu
dHM+Ojp0cmF2ZXJzZUJhY2t3YXJkKG5vZGVMaXN0KCksIGN1cnJlbnQsIGNvdW50KTsgfQorICAg
IHVzaW5nIFRyYXZlcnNhbCA9IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNh
bFR5cGU6OkRlc2NlbmRhbnRzPjsKKyAgICB1c2luZyBJdGVyYXRvciA9IFRyYXZlcnNhbDo6SXRl
cmF0b3I7CisgICAgYXV0byBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBUcmF2ZXJz
YWw6OmJlZ2luKG5vZGVMaXN0KCksIHJvb3ROb2RlKCkpOyB9CisgICAgYXV0byBjb2xsZWN0aW9u
TGFzdCgpIGNvbnN0IHsgcmV0dXJuIFRyYXZlcnNhbDo6bGFzdChub2RlTGlzdCgpLCByb290Tm9k
ZSgpKTsgfQorICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChJdGVyYXRvciYgY3Vy
cmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3QgeyBU
cmF2ZXJzYWw6OnRyYXZlcnNlRm9yd2FyZChub2RlTGlzdCgpLCBjdXJyZW50LCBjb3VudCwgdHJh
dmVyc2VkQ291bnQpOyB9CisgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChJdGVy
YXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpIGNvbnN0IHsgVHJhdmVyc2FsOjp0cmF2ZXJz
ZUJhY2t3YXJkKG5vZGVMaXN0KCksIGN1cnJlbnQsIGNvdW50KTsgfQogICAgIGJvb2wgY29sbGVj
dGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9p
ZCB3aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3QgeyBkb2N1bWVudCgpLnJlZ2lzdGVyTm9k
ZUxpc3RGb3JJbnZhbGlkYXRpb24oY29uc3RfY2FzdDxDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxp
c3RUeXBlPiY+KCp0aGlzKSk7IH0KKyAgICB2b2lkIHdpbGxWYWxpZGF0ZUluZGV4Q2FjaGUoKSBj
b25zdCB7IGRvY3VtZW50KCkucmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbihjb25zdF9j
YXN0PENhY2hlZExpdmVOb2RlTGlzdCY+KCp0aGlzKSk7IH0KIAogICAgIHZvaWQgaW52YWxpZGF0
ZUNhY2hlRm9yRG9jdW1lbnQoRG9jdW1lbnQmKSBjb25zdCBmaW5hbDsKICAgICBzaXplX3QgbWVt
b3J5Q29zdCgpIGNvbnN0IGZpbmFsCkBAIC0xMDgsOSArMTA0LDcgQEAgcHJpdmF0ZToKICAgICBO
b2RlTGlzdFR5cGUmIG5vZGVMaXN0KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Tm9kZUxpc3RUeXBl
Jj4oKnRoaXMpOyB9CiAgICAgY29uc3QgTm9kZUxpc3RUeXBlJiBub2RlTGlzdCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsgfQogCi0gICAg
Q29udGFpbmVyTm9kZSYgcm9vdE5vZGUoKSBjb25zdDsKLQotICAgIG11dGFibGUgQ29sbGVjdGlv
bkluZGV4Q2FjaGU8Tm9kZUxpc3RUeXBlLCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPiBtX2lu
ZGV4Q2FjaGU7CisgICAgbXV0YWJsZSBDb2xsZWN0aW9uSW5kZXhDYWNoZTxOb2RlTGlzdFR5cGUs
IEl0ZXJhdG9yPiBtX2luZGV4Q2FjaGU7CiB9OwogCiBBTFdBWVNfSU5MSU5FIGJvb2wgc2hvdWxk
SW52YWxpZGF0ZVR5cGVPbkF0dHJpYnV0ZUNoYW5nZShOb2RlTGlzdEludmFsaWRhdGlvblR5cGUg
dHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC0xMzcsMzYgKzEzMSw0MCBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgc2hvdWxkSW52YWxpZGF0ZVR5cGVPbkF0dHJpYnV0ZUNoYW5n
ZShOb2RlTGlzdEludmFsaWRhdGlvblR5cAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorQUxXQVlT
X0lOTElORSB2b2lkIExpdmVOb2RlTGlzdDo6aW52YWxpZGF0ZUNhY2hlRm9yQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0Cit7CisgICAgaWYgKHNob3Vs
ZEludmFsaWRhdGVUeXBlT25BdHRyaWJ1dGVDaGFuZ2UobV9pbnZhbGlkYXRpb25UeXBlLCBhdHRy
aWJ1dGVOYW1lKSkKKyAgICAgICAgaW52YWxpZGF0ZUNhY2hlKCk7Cit9CisKK2lubGluZSBDb250
YWluZXJOb2RlJiBMaXZlTm9kZUxpc3Q6OnJvb3ROb2RlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNS
b290ZWRBdERvY3VtZW50KCkgJiYgbV9vd25lck5vZGUtPmlzQ29ubmVjdGVkKCkpCisgICAgICAg
IHJldHVybiBkb2N1bWVudCgpOworCisgICAgcmV0dXJuIG1fb3duZXJOb2RlOworfQorCiB0ZW1w
bGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgogQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlw
ZT46OkNhY2hlZExpdmVOb2RlTGlzdChDb250YWluZXJOb2RlJiBvd25lck5vZGUsIE5vZGVMaXN0
SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlKQogICAgIDogTGl2ZU5vZGVMaXN0KG93
bmVyTm9kZSwgaW52YWxpZGF0aW9uVHlwZSkKLSAgICAsIG1faW5kZXhDYWNoZShub2RlTGlzdCgp
KQogewogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgogQ2FjaGVkTGl2ZU5vZGVM
aXN0PE5vZGVMaXN0VHlwZT46On5DYWNoZWRMaXZlTm9kZUxpc3QoKQogewotICAgIGlmIChtX2lu
ZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShub2RlTGlzdCgpKSkKKyAgICBpZiAobV9pbmRleENhY2hl
Lmhhc1ZhbGlkQ2FjaGUoKSkKICAgICAgICAgZG9jdW1lbnQoKS51bnJlZ2lzdGVyTm9kZUxpc3RG
b3JJbnZhbGlkYXRpb24oKnRoaXMpOwogfQogCi10ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBl
PgotaW5saW5lIENvbnRhaW5lck5vZGUmIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+
Ojpyb290Tm9kZSgpIGNvbnN0Ci17Ci0gICAgaWYgKG5vZGVMaXN0KCkuaXNSb290ZWRBdERvY3Vt
ZW50KCkgJiYgb3duZXJOb2RlKCkuaXNDb25uZWN0ZWQoKSkKLSAgICAgICAgcmV0dXJuIG93bmVy
Tm9kZSgpLmRvY3VtZW50KCk7Ci0KLSAgICByZXR1cm4gb3duZXJOb2RlKCk7Ci19Ci0KIHRlbXBs
YXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+CiB2b2lkIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlz
dFR5cGU+OjppbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShub2RlTGlzdCgpKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIGRvY3VtZW50LnVucmVnaXN0ZXJOb2RlTGlzdEZvckludmFs
aWRhdGlvbihjb25zdF9jYXN0PE5vZGVMaXN0VHlwZSY+KG5vZGVMaXN0KCkpKTsKLSAgICBtX2lu
ZGV4Q2FjaGUuaW52YWxpZGF0ZShub2RlTGlzdCgpKTsKKyAgICBpZiAobV9pbmRleENhY2hlLmhh
c1ZhbGlkQ2FjaGUoKSkgeworICAgICAgICBkb2N1bWVudC51bnJlZ2lzdGVyTm9kZUxpc3RGb3JJ
bnZhbGlkYXRpb24oY29uc3RfY2FzdDxOb2RlTGlzdFR5cGUmPihub2RlTGlzdCgpKSk7CisgICAg
ICAgIG1faW5kZXhDYWNoZS5pbnZhbGlkYXRlKCk7CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuY3BwCmluZGV4IGYwYWRkMmFjMmQ1
NDY2NmZhMmZlODU3ODk2MmNiNTQwOGZiYjczNTQuLmY0ZmEyNmZjN2U2MzYyNDQxYWMzNDM3NGVj
MTJlNTI0ODlmN2Y5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxp
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuY3BwCkBAIC0yLDcg
KzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcp
CiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcp
CiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDcsIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM4LDYgKzM4LDExIEBAIE5h
bWVOb2RlTGlzdDo6TmFtZU5vZGVMaXN0KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBB
dG9tU3RyaW5nJiBuYW1lKQogewogfQogCitSZWY8TmFtZU5vZGVMaXN0PiBOYW1lTm9kZUxpc3Q6
OmNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYW1lTm9kZUxpc3Qocm9vdE5vZGUsIG5hbWUp
KTsKK30KKwogTmFtZU5vZGVMaXN0Ojp+TmFtZU5vZGVMaXN0KCkKIHsKICAgICBvd25lck5vZGUo
KS5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVXaXRoQXRvbU5hbWUoKnRoaXMsIG1fbmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTmFtZU5vZGVMaXN0LmgKaW5kZXggNzBjNWM3MDBlOTUwZTUzMTQzN2YwZmRlNTFj
Y2MzOGQ2ZGNiM2FhMS4uOTQ3NWRlZmVkNGViNzg5ZGZlMzEzMTIxOTQ1NGZlMjM4NTAxZTdiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdo
dCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAx
OTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAy
MDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA3LTIwMDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0yNCwyNCArMjQsMTcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiTGl2ZU5vZGVMaXN0LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gTm9k
ZUxpc3Qgd2hpY2ggbGlzdHMgYWxsIE5vZGVzIGluIGEgRWxlbWVudCB3aXRoIGEgZ2l2ZW4gIm5h
bWUiIGF0dHJpYnV0ZQogY2xhc3MgTmFtZU5vZGVMaXN0IGZpbmFsIDogcHVibGljIENhY2hlZExp
dmVOb2RlTGlzdDxOYW1lTm9kZUxpc3Q+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE5h
bWVOb2RlTGlzdCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxOYW1lTm9kZUxpc3Q+IGNyZWF0
ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5hbWVOb2RlTGlzdChyb290Tm9kZSwgbmFt
ZSkpOwotICAgIH0KLQorICAgIHN0YXRpYyBSZWY8TmFtZU5vZGVMaXN0PiBjcmVhdGUoQ29udGFp
bmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpOwogICAgIHZpcnR1YWwg
fk5hbWVOb2RlTGlzdCgpOwogCi0gICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgaXNSb290ZWRBdERvY3VtZW50KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0ZToKICAgICBOYW1lTm9kZUxpc3QoQ29udGFpbmVyTm9k
ZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4
IDEyNzI1MjQyMGFiN2QxZDdiNDg3NGQ1YTIyNjE2MWI0MzMwYmM0NDMuLmI3YWYxNGQxYzBiNGNi
ZmRmNjg5Y2UyODQwMzAyOTk1YjRiMzQ2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTQ3LDcgKzQ3
LDYgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MQXJlYUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlv
bi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuY3BwCmluZGV4IGVmMDU1MjkzNDI3N2Q0M2IxMTlhNDY3NTFmZjQyOGUwYTE4MDM3OTAu
LmMwNjFhM2RlMmJjNTU4MjVmOTVjZjcyZDQ4MDMzYTFlY2QxOWQyNmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2VsZWN0b3JRdWVyeS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDE0IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJTZWxlY3RvclF1ZXJ5Lmgi
CiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKLSNpbmNsdWRlICJFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yLmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCiAjaW5jbHVkZSAiU3RhdGljTm9k
ZUxpc3QuaCIKQEAgLTE1MCwxNSArMTUwLDEyIEBAIGJvb2wgU2VsZWN0b3JEYXRhTGlzdDo6bWF0
Y2hlcyhFbGVtZW50JiB0YXJnZXRFbGVtZW50KSBjb25zdAogCiBFbGVtZW50KiBTZWxlY3RvckRh
dGFMaXN0OjpjbG9zZXN0KEVsZW1lbnQmIHRhcmdldEVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgRWxl
bWVudCogY3VycmVudE5vZGUgPSAmdGFyZ2V0RWxlbWVudDsKLSAgICBkbyB7CisgICAgZm9yIChh
dXRvJiBjdXJyZW50RWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4odGFyZ2V0RWxlbWVu
dCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBzZWxlY3RvciA6IG1fc2VsZWN0b3JzKSB7Ci0gICAg
ICAgICAgICBFbGVtZW50KiBjYW5kaWRhdGVFbGVtZW50ID0gc2VsZWN0b3JDbG9zZXN0KHNlbGVj
dG9yLCAqY3VycmVudE5vZGUsIHRhcmdldEVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKGNhbmRp
ZGF0ZUVsZW1lbnQpCisgICAgICAgICAgICBpZiAoYXV0byogY2FuZGlkYXRlRWxlbWVudCA9IHNl
bGVjdG9yQ2xvc2VzdChzZWxlY3RvciwgY3VycmVudEVsZW1lbnQsIHRhcmdldEVsZW1lbnQpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVFbGVtZW50OwogICAgICAgICB9Ci0gICAg
ICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUtPnBhcmVudEVsZW1lbnQoKTsKLSAgICB9IHdo
aWxlIChjdXJyZW50Tm9kZSk7CisgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0y
OTUsNyArMjkyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4KIHN0
YXRpYyBpbmxpbmUgdm9pZCBlbGVtZW50c0ZvckxvY2FsTmFtZShjb25zdCBDb250YWluZXJOb2Rl
JiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9tU3RyaW5n
JiBsb3dlcmNhc2VMb2NhbE5hbWUsIHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6T3V0cHV0
VHlwZSYgb3V0cHV0KQogewogICAgIGlmIChsb2NhbE5hbWUgPT0gbG93ZXJjYXNlTG9jYWxOYW1l
KSB7Ci0gICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25z
dF9jYXN0PENvbnRhaW5lck5vZGUmPihyb290Tm9kZSkpKSB7CisgICAgICAgIGZvciAoYXV0byYg
ZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVy
Tm9kZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAgICAgIGlmIChlbGVtZW50LnRhZ1FOYW1lKCku
bG9jYWxOYW1lKCkgPT0gbG9jYWxOYW1lKSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JRdWVy
eVRyYWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAg
ICAgICAgICAgIGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxl
bWVudCkKQEAgLTMwMyw3ICszMDAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZWxlbWVudHNGb3JM
b2NhbE5hbWUoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0bwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChhdXRvJiBlbGVt
ZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3RO
b2RlKSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8
RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAgICAg
ICAgICAgaWYgKGxvY2FsTmFtZU1hdGNoZXMoZWxlbWVudCwgbG9jYWxOYW1lLCBsb3dlcmNhc2VM
b2NhbE5hbWUpKSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRP
dXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChT
ZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAgLTMxNiw3
ICszMTMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZWxlbWVudHNGb3JMb2NhbE5hbWUoY29uc3Qg
Q29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0bwogdGVtcGxhdGUgPHR5cGVuYW1lIFNl
bGVjdG9yUXVlcnlUcmFpdD4KIHN0YXRpYyBpbmxpbmUgdm9pZCBhbnlFbGVtZW50KGNvbnN0IENv
bnRhaW5lck5vZGUmIHJvb3ROb2RlLCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6Ok91dHB1
dFR5cGUmIG91dHB1dCkKIHsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2Vu
ZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29u
dGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0Ojph
cHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwogICAgICAgICBpZiAoU2Vs
ZWN0b3JRdWVyeVRyYWl0OjpzaG91bGRPbmx5TWF0Y2hGaXJzdEVsZW1lbnQpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0zNDUsNyArMzQyLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9y
RGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVUYWdOYW1lU2VsZWN0b3JEYXRhKGNvbnN0IENvbnQKICAg
ICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZhbGxiYWNrOiBOYW1lc3BhY2VVUkkg
aXMgc2V0LCBzZWxlY3RvckxvY2FsTmFtZSBtYXkgYmUgc3RhckF0b20oKS4KLSAgICAgICAgZm9y
IChhdXRvJiBlbGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVy
Tm9kZSY+KHJvb3ROb2RlKSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2Vu
ZGFudHNPZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUp
KSkgewogICAgICAgICAgICAgaWYgKGVsZW1lbnQubmFtZXNwYWNlVVJJKCkgPT0gc2VsZWN0b3JO
YW1lc3BhY2VVUkkgJiYgbG9jYWxOYW1lTWF0Y2hlcyhlbGVtZW50LCBzZWxlY3RvckxvY2FsTmFt
ZSwgc2VsZWN0b3JMb3dlcmNhc2VMb2NhbE5hbWUpKSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0
b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwog
ICAgICAgICAgICAgICAgIGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZp
cnN0RWxlbWVudCkKQEAgLTM2Miw3ICszNTksNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0
b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZUNsYXNzTmFtZVNlbGVjdG9yRGF0YShjb25zdCBDbwog
ICAgIEFTU0VSVChpc1NpbmdsZUNsYXNzTmFtZVNlbGVjdG9yKCpzZWxlY3RvckRhdGEuc2VsZWN0
b3IpKTsKIAogICAgIGNvbnN0IEF0b21TdHJpbmcmIGNsYXNzTmFtZSA9IHNlbGVjdG9yRGF0YS5z
ZWxlY3Rvci0+dmFsdWUoKTsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2Vu
ZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29u
dGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAgaWYgKGVsZW1lbnQuaGFzQ2xhc3Mo
KSAmJiBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucyhjbGFzc05hbWUpKSB7CiAgICAgICAg
ICAgICBTZWxlY3RvclF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1lbnQob3V0cHV0LCAm
ZWxlbWVudCk7CiAgICAgICAgICAgICBpZiAoU2VsZWN0b3JRdWVyeVRyYWl0OjpzaG91bGRPbmx5
TWF0Y2hGaXJzdEVsZW1lbnQpCkBAIC0zNzYsNyArMzczLDcgQEAgQUxXQVlTX0lOTElORSB2b2lk
IFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVTZWxlY3RvckRhdGEoY29uc3QgQ29udGFp
bmVyTm8KIHsKICAgICBBU1NFUlQobV9zZWxlY3RvcnMuc2l6ZSgpID09IDEpOwogCi0gICAgZm9y
IChhdXRvJiBlbGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVy
Tm9kZSY+KHNlYXJjaFJvb3ROb2RlKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNj
ZW5kYW50c09mVHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihzZWFyY2hS
b290Tm9kZSkpKSB7CiAgICAgICAgIGlmIChzZWxlY3Rvck1hdGNoZXMoc2VsZWN0b3JEYXRhLCBl
bGVtZW50LCByb290Tm9kZSkpIHsKICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBw
ZW5kT3V0cHV0Rm9yRWxlbWVudChvdXRwdXQsICZlbGVtZW50KTsKICAgICAgICAgICAgIGlmIChT
ZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAgLTM4OCw3
ICszODUsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNp
bmdsZVNlbGVjdG9yRGF0YShjb25zdCBDb250YWluZXJObwogdGVtcGxhdGUgPHR5cGVuYW1lIFNl
bGVjdG9yUXVlcnlUcmFpdD4KIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0Ojpl
eGVjdXRlU2luZ2xlTXVsdGlTZWxlY3RvckRhdGEoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5v
ZGUsIHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0cHV0KSBjb25z
dAogewotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9j
YXN0PENvbnRhaW5lck5vZGUmPihyb290Tm9kZSkpKSB7CisgICAgZm9yIChhdXRvJiBlbGVtZW50
IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4o
cm9vdE5vZGUpKSkgewogICAgICAgICBmb3IgKGF1dG8mIHNlbGVjdG9yIDogbV9zZWxlY3RvcnMp
IHsKICAgICAgICAgICAgIGlmIChzZWxlY3Rvck1hdGNoZXMoc2VsZWN0b3IsIGVsZW1lbnQsIHJv
b3ROb2RlKSkgewogICAgICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBwZW5kT3V0
cHV0Rm9yRWxlbWVudChvdXRwdXQsICZlbGVtZW50KTsKQEAgLTQwNCw3ICs0MDEsNyBAQCBBTFdB
WVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZU11bHRpU2VsZWN0
b3JEYXRhKGNvbnN0IENvbnRhaQogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFp
dD4KIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29tcGlsZWRT
aW1wbGVTZWxlY3RvckNoZWNrZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgc2VhcmNoUm9vdE5vZGUs
IFNlbGVjdG9yQ29tcGlsZXI6OlF1ZXJ5U2VsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXIgc2Vs
ZWN0b3JDaGVja2VyLCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5cGUmIG91
dHB1dCwgY29uc3QgU2VsZWN0b3JEYXRhJiBzZWxlY3RvckRhdGEpIGNvbnN0CiB7Ci0gICAgZm9y
IChhdXRvJiBlbGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVy
Tm9kZSY+KHNlYXJjaFJvb3ROb2RlKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNj
ZW5kYW50c09mVHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihzZWFyY2hS
b290Tm9kZSkpKSB7CiAgICAgICAgIHNlbGVjdG9yRGF0YS5jb21waWxlZFNlbGVjdG9yLndhc1Vz
ZWQoKTsKIAogICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2VyKCZlbGVtZW50KSkgewpAQCAtNDIx
LDcgKzQxOCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRl
Q29tcGlsZWRTZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDCiAgICAgU2VsZWN0b3JDaGVja2Vy
OjpDaGVja2luZ0NvbnRleHQgY2hlY2tpbmdDb250ZXh0KFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6
UXVlcnlpbmdSdWxlcyk7CiAgICAgY2hlY2tpbmdDb250ZXh0LnNjb3BlID0gcm9vdE5vZGUuaXNE
b2N1bWVudE5vZGUoKSA/IG51bGxwdHIgOiAmcm9vdE5vZGU7CiAKLSAgICBmb3IgKGF1dG8mIGVs
ZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4oc2Vh
cmNoUm9vdE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZU
eXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNlYXJjaFJvb3ROb2RlKSkp
IHsKICAgICAgICAgc2VsZWN0b3JEYXRhLmNvbXBpbGVkU2VsZWN0b3Iud2FzVXNlZCgpOwogCiAg
ICAgICAgIGlmIChzZWxlY3RvckNoZWNrZXIoJmVsZW1lbnQsICZjaGVja2luZ0NvbnRleHQpKSB7
CkBAIC00MzcsNyArNDM0LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6
OmV4ZWN1dGVDb21waWxlZFNpbmdsZU11bHRpU2VsZWN0b3JEYXRhKGNvbnMKIHsKICAgICBTZWxl
Y3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCBjaGVja2luZ0NvbnRleHQoU2VsZWN0b3JDaGVj
a2VyOjpNb2RlOjpRdWVyeWluZ1J1bGVzKTsKICAgICBjaGVja2luZ0NvbnRleHQuc2NvcGUgPSBy
b290Tm9kZS5pc0RvY3VtZW50Tm9kZSgpID8gbnVsbHB0ciA6ICZyb290Tm9kZTsKLSAgICBmb3Ig
KGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJO
b2RlJj4ocm9vdE5vZGUpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRz
T2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsK
ICAgICAgICAgZm9yIChhdXRvJiBzZWxlY3RvciA6IG1fc2VsZWN0b3JzKSB7CiAgICAgICAgICAg
ICBzZWxlY3Rvci5jb21waWxlZFNlbGVjdG9yLndhc1VzZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
bG90QXNzaWdubWVudC5jcHAKaW5kZXggNGQzZTYxOTQ3ZDNiZjhhNWFhYzRiY2U2NzdmYzcxYTMz
Yjg1YzZiOC4uZDJkMTNjYjA5MzUwZDA3YmM2MjA1N2VjOTNjZjM0ODVhNDYwZGRkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCkBAIC0yNiwxMCArMjYsOSBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNsb3RBc3NpZ25tZW50LmgiCiAKLQorI2luY2x1ZGUg
IkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgogI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVGFnQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGFnQ29sbGVjdGlv
bi5jcHAKaW5kZXggZTA2N2YyZjFkMjk4NGNiNzg3ZmVlOWEzMDQ5MTIxNTVkYzljMzc0NC4uMWYz
MjRjYzA3N2ExYTMwMGNhYWViODVlYzQyOTM3YWRlZGZhYzEwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1RhZ0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
YWdDb2xsZWN0aW9uLmNwcApAQCAtMzQsNyArMzQsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoVGFnQ29sbGVjdGlvbk5TKTsKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChIVE1M
VGFnQ29sbGVjdGlvbik7CiAKIFRhZ0NvbGxlY3Rpb25OUzo6VGFnQ29sbGVjdGlvbk5TKENvbnRh
aW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0
IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkKLSAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPFRhZ0Nv
bGxlY3Rpb25OUywgQ29sbGVjdGlvblR5cGVUcmFpdHM8QnlUYWc+Ojp0cmF2ZXJzYWxUeXBlPihy
b290Tm9kZSwgQnlUYWcpCisgICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbihyb290Tm9kZSwgQnlU
YWcpCiAgICAgLCBtX25hbWVzcGFjZVVSSShuYW1lc3BhY2VVUkkpCiAgICAgLCBtX2xvY2FsTmFt
ZShsb2NhbE5hbWUpCiB7CkBAIC00Nyw3ICs0Nyw3IEBAIFRhZ0NvbGxlY3Rpb25OUzo6flRhZ0Nv
bGxlY3Rpb25OUygpCiB9CiAKIFRhZ0NvbGxlY3Rpb246OlRhZ0NvbGxlY3Rpb24oQ29udGFpbmVy
Tm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpCi0gICAgOiBD
YWNoZWRIVE1MQ29sbGVjdGlvbjxUYWdDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxC
eVRhZz46OnRyYXZlcnNhbFR5cGU+KHJvb3ROb2RlLCBCeVRhZykKKyAgICA6IENhY2hlZEhUTUxD
b2xsZWN0aW9uKHJvb3ROb2RlLCBCeVRhZykKICAgICAsIG1fcXVhbGlmaWVkTmFtZShxdWFsaWZp
ZWROYW1lKQogewogICAgIEFTU0VSVChxdWFsaWZpZWROYW1lICE9IHN0YXJBdG9tKCkpOwpAQCAt
NTksNyArNTksNyBAQCBUYWdDb2xsZWN0aW9uOjp+VGFnQ29sbGVjdGlvbigpCiB9CiAKIEhUTUxU
YWdDb2xsZWN0aW9uOjpIVE1MVGFnQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiByb290Tm9kZSwg
Y29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSkKLSAgICA6IENhY2hlZEhUTUxDb2xsZWN0
aW9uPEhUTUxUYWdDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxCeUhUTUxUYWc+Ojp0
cmF2ZXJzYWxUeXBlPihyb290Tm9kZSwgQnlIVE1MVGFnKQorICAgIDogQ2FjaGVkSFRNTENvbGxl
Y3Rpb24ocm9vdE5vZGUsIEJ5SFRNTFRhZykKICAgICAsIG1fcXVhbGlmaWVkTmFtZShxdWFsaWZp
ZWROYW1lKQogICAgICwgbV9sb3dlcmVkUXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1lLmNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlKCkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKaW5kZXggOWYzNTkzNWQ5NmM3OWU3NWI2OGQz
MGMyOGNiZTNjNWEwNDNmMDMzMy4uOWEwYjFiNWVhMjcxYTBiNWM0NjBjMDFlOTUwNjVjZDA3OTFh
OTM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1R5cGVkRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDI5NCArMjksMjQxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZVR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBEb3VibGVF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIERvdWJs
ZUVsZW1lbnREZXNjZW5kYW50UmFuZ2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRWxlbWVu
dERlc2NlbmRhbnRSYW5nZTsKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sKGNv
bnN0IEVsZW1lbnRUeXBlJik+IGNsYXNzIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZTsK
IAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gewot
cHVibGljOgotICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWlu
ZXJOb2RlJiByb290KTsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3Qg
Q29udGFpbmVyTm9kZSYgcm9vdCwgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwotICAgIFR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotfTsKLQotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3IgOiBwdWJsaWMgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+ICB7Ci1wdWJs
aWM6Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFp
bmVyTm9kZSYgcm9vdCk7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3Io
Y29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgY29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpOwot
ICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Ci19
OworLy8gUmFuZ2UgZm9yIGl0ZXJhdGluZyB0aHJvdWdoIGRlc2NlbmRhbnQgZWxlbWVudHMuCit0
ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVt
ZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFpbmVyTm9kZSYpOwordGVtcGxhdGU8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8Y29uc3QgRWxlbWVudFR5
cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUmKTsKIAotdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yQWRhcHRlciB7Ci1wdWJsaWM6Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
QWRhcHRlcihDb250YWluZXJOb2RlJiByb290KTsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCk7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKTsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoRWxlbWVudFR5cGUmKTsKLSAgICBUeXBlZEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IGZyb20oRWxlbWVudCYpOworLy8g
UmFuZ2UgdGhhdCBza2lwcyBlbGVtZW50cyB3aGVyZSB0aGUgZmlsdGVyIHJldHVybnMgZmFsc2Uu
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVu
dFR5cGUmKT4gRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBl
LCBmaWx0ZXI+IGRlc2NlbmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUmKTsKIAotICAg
IEVsZW1lbnRUeXBlKiBmaXJzdCgpOwotICAgIEVsZW1lbnRUeXBlKiBsYXN0KCk7CisvLyBSYW5n
ZSBmb3IgdXNlIHdoZW4gYm90aCBzZXRzIG9mIGRlc2NlbmRhbnRzIGFyZSBrbm93biB0byBiZSB0
aGUgc2FtZSBsZW5ndGguCisvLyBJZiB0aGV5IGFyZSBkaWZmZXJlbnQgbGVuZ3RocywgdGhpcyB3
aWxsIHN0b3Agd2hlbiB0aGUgc2hvcnRlciBvbmUgcmVhY2hlcyB0aGUgZW5kLCBidXQgYWxzbyBh
biBhc3NlcnRpb24gd2lsbCBmYWlsLgordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IERv
dWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBl
KENvbnRhaW5lck5vZGUmIGZpcnN0Um9vdCwgQ29udGFpbmVyTm9kZSYgc2Vjb25kUm9vdCk7CiAK
LXByaXZhdGU6Ci0gICAgQ29udGFpbmVyTm9kZSYgbV9yb290OwordGVtcGxhdGU8dHlwZW5hbWUg
RWxlbWVudFR5cGU+IGNsYXNzIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgOiBwdWJsaWMgRWxl
bWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiB7CitwdWJsaWM6CisgICAgRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvcigpID0gZGVmYXVsdDsKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNv
bnN0IENvbnRhaW5lck5vZGUmIHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKKyAgICBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisgICAgRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPgotY2xhc3MgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVy
IHsKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBjbGFzcyBFbGVtZW50RGVzY2VuZGFu
dFJhbmdlIHsKIHB1YmxpYzoKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
ckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgVHlwZWRFbGVtZW50RGVz
Y2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7Ci0gICAgVHlw
ZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpIGNvbnN0
OwotICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBi
ZWdpbkF0KGNvbnN0IEVsZW1lbnRUeXBlJikgY29uc3Q7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGZyb20oY29uc3QgRWxlbWVudCYpIGNvbnN0
OworICAgIEVsZW1lbnREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7
CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKSBjb25z
dDsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6bnVsbHB0cl90IGVuZCgpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdp
bkF0KEVsZW1lbnRUeXBlJikgY29uc3Q7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxF
bGVtZW50VHlwZT4gZnJvbShFbGVtZW50JikgY29uc3Q7CiAKLSAgICBjb25zdCBFbGVtZW50VHlw
ZSogZmlyc3QoKSBjb25zdDsKLSAgICBjb25zdCBFbGVtZW50VHlwZSogbGFzdCgpIGNvbnN0Owor
ICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0OworICAgIEVsZW1lbnRUeXBlKiBsYXN0KCkg
Y29uc3Q7CiAKIHByaXZhdGU6CiAgICAgY29uc3QgQ29udGFpbmVyTm9kZSYgbV9yb290OwogfTsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGNsYXNzIERvdWJsZVR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgewordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5
cGU+IGNsYXNzIERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UgewogcHVibGljOgotICAgIHR5
cGVkZWYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4g
U2luZ2xlQWRhcHRlcjsKLSAgICB0eXBlZGVmIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT4gSXRlcmF0b3I7CisgICAgdHlwZWRlZiBFbGVtZW50RGVzY2Vu
ZGFudFJhbmdlPEVsZW1lbnRUeXBlPiBTaW5nbGVBZGFwdGVyOworICAgIHR5cGVkZWYgRG91Ymxl
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gSXRlcmF0b3I7CiAKLSAgICBE
b3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKFNpbmdsZUFkYXB0ZXIm
JiwgU2luZ2xlQWRhcHRlciYmKTsKLSAgICBJdGVyYXRvciBiZWdpbigpOwotICAgIEl0ZXJhdG9y
IGVuZCgpOworICAgIERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UoU2luZ2xlQWRhcHRlciYm
LCBTaW5nbGVBZGFwdGVyJiYpOworICAgIEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBzdGQ6Om51bGxwdHJfdCBlbmQoKSB7IHJldHVybiBudWxscHRyOyB9CiAK
IHByaXZhdGU6CiAgICAgc3RkOjpwYWlyPFNpbmdsZUFkYXB0ZXIsIFNpbmdsZUFkYXB0ZXI+IG1f
cGFpcjsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBjbGFzcyBEb3VibGVU
eXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgewordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+IGNsYXNzIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgewogcHVibGljOgot
ICAgIHR5cGVkZWYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBT
aW5nbGVJdGVyYXRvcjsKKyAgICB0eXBlZGVmIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxl
bWVudFR5cGU+IFNpbmdsZUl0ZXJhdG9yOwogICAgIHR5cGVkZWYgc3RkOjpwYWlyPEVsZW1lbnRU
eXBlJiwgRWxlbWVudFR5cGUmPiBSZWZlcmVuY2VQcm94eTsKIAotICAgIERvdWJsZVR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcihTaW5nbGVJdGVyYXRvciYmLCBTaW5nbGVJdGVyYXRvciYm
KTsKKyAgICBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKFNpbmdsZUl0ZXJhdG9yJiYs
IFNpbmdsZUl0ZXJhdG9yJiYpOwogICAgIFJlZmVyZW5jZVByb3h5IG9wZXJhdG9yKigpIGNvbnN0
OwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3ImKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRG91YmxlVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJikgY29uc3Q7Ci0gICAgRG91YmxlVHlwZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisgICAgY29uc3RleHByIGJvb2wgb3Bl
cmF0b3IhPShzdGQ6Om51bGxwdHJfdCkgY29uc3Q7CisgICAgRG91YmxlRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwogCiBwcml2YXRlOgogICAgIHN0ZDo6cGFpcjxTaW5n
bGVJdGVyYXRvciwgU2luZ2xlSXRlcmF0b3I+IG1fcGFpcjsKIH07CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxF
bGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFpbmVyTm9kZSYpOwotdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
ckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5v
ZGUmKTsKLQotLy8gVGhpcyBtdXN0IG9ubHkgYmUgdXNlZCB3aGVuIGJvdGggc2V0cyBvZiBkZXNj
ZW5kYW50cyBhcmUga25vd24gdG8gYmUgdGhlIHNhbWUgbGVuZ3RoLgotLy8gSWYgdGhleSBhcmUg
ZGlmZmVyZW50IGxlbmd0aHMsIHRoaXMgd2lsbCBzdG9wIHdoZW4gdGhlIHNob3J0ZXIgb25lIHJl
YWNoZXMgdGhlIGVuZCwgYnV0IGFsc28gYW4gYXNzZXJ0aW9uIHdpbGwgZmFpbC4KLXRlbXBsYXRl
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWluZXJOb2RlJiBm
aXJzdFJvb3QsIENvbnRhaW5lck5vZGUmIHNlY29uZFJvb3QpOwotCi0vLyBUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZp
bHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBjbGFzcyBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiB7CitwdWJsaWM6
CisgICAgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5v
ZGUmLCBFbGVtZW50VHlwZSogPSBudWxscHRyKTsKKyAgICBGaWx0ZXJlZEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKK307CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+OjpUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYg
cm9vdCkKLSAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnJvb3QpCi17Ci19Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5
cGUmKT4gY2xhc3MgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlIHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBJdGVyYXRvciA9IEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVt
ZW50VHlwZSwgZmlsdGVyPjsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5s
aW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OlR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBFbGVtZW50
VHlwZSogY3VycmVudCkKLSAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnJvb3Qs
IGN1cnJlbnQpCi17Ci19CisgICAgRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlKGNvbnN0
IENvbnRhaW5lck5vZGUmKTsKKyAgICBJdGVyYXRvciBiZWdpbigpIGNvbnN0OworICAgIHN0YXRp
YyBjb25zdGV4cHIgc3RkOjpudWxscHRyX3QgZW5kKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRlcmF0
b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHQoKSk7Ci19CisgICAgRWxlbWVudFR5cGUqIGZp
cnN0KCkgY29uc3Q7CiAKLS8vIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yCitw
cml2YXRlOgorICAgIGNvbnN0IENvbnRhaW5lck5vZGUmIG1fcm9vdDsKK307CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29u
c3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpCi0gICAgOiBFbGVtZW50Q29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT4oJnJvb3QpCisvLyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yCiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPjo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2Rl
JiByb290LCBFbGVtZW50VHlwZSogY3VycmVudCkKKyAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVt
ZW50VHlwZT4oJnJvb3QsIGN1cnJlbnQpCiB7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRh
aW5lck5vZGUmIHJvb3QsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVu
dENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KCZyb290LCBjdXJyZW50KQordGVtcGxhdGU8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+
JiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCiB7
CisgICAgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0KCk7CisgICAg
cmV0dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxp
bmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBUeXBl
ZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKyso
KQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6
b3BlcmF0b3ItLSgpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0KCkpOworICAgIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50
VHlwZT46OnRyYXZlcnNlUHJldmlvdXMoKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKLS8vIFR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIKKy8vIEVsZW1lbnREZXNjZW5kYW50
UmFuZ2UKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUmIHJvb3QpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZT46
OkVsZW1lbnREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKICAgICA6
IG1fcm9vdChyb290KQogewogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4oKQordGVt
cGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxl
bWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50
VHlwZT4obV9yb290LCBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpbihtX3Jvb3Qp
KTsKKyAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9y
b290LCBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpbihtX3Jvb3QpKTsKIH0KIAot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
QWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpCi17Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290KTsKLX0KLSAgICAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8
RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBkZXNjZW5kYW50KQordGVtcGxhdGU8
dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRU
eXBlJiBkZXNjZW5kYW50KSBjb25zdAogewogICAgIEFTU0VSVChkZXNjZW5kYW50LmlzRGVzY2Vu
ZGFudE9mKG1fcm9vdCkpOwotICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgJmRlc2NlbmRhbnQpOworICAgIHJldHVybiBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsICZkZXNjZW5kYW50KTsKIH0K
IAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZyb20oRWxlbWVudCYgZGVzY2VuZGFudCkKK3RlbXBs
YXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPiBFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPjo6ZnJvbShFbGVtZW50
JiBkZXNjZW5kYW50KSBjb25zdAogewogICAgIEFTU0VSVChkZXNjZW5kYW50LmlzRGVzY2VuZGFu
dE9mKG1fcm9vdCkpOwogICAgIGlmIChpczxFbGVtZW50VHlwZT4oZGVzY2VuZGFudCkpCi0gICAg
ICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1f
cm9vdCwgZG93bmNhc3Q8RWxlbWVudFR5cGU+KCZkZXNjZW5kYW50KSk7CisgICAgICAgIHJldHVy
biBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIGRvd25jYXN0
PEVsZW1lbnRUeXBlPigmZGVzY2VuZGFudCkpOwogICAgIEVsZW1lbnRUeXBlKiBuZXh0ID0gVHJh
dmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dChkZXNjZW5kYW50LCAmbV9yb290KTsKLSAgICByZXR1
cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIG5l
eHQpOworICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiht
X3Jvb3QsIG5leHQpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxp
bmUgRWxlbWVudFR5cGUqIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudFR5cGU+OjpmaXJzdCgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVu
dFR5cGUqIEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpmaXJzdCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0aGluKG1fcm9v
dCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50
VHlwZSogVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46
Omxhc3QoKQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRUeXBlKiBFbGVt
ZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPjo6bGFzdCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RXaXRoaW4obV9yb290KTsKIH0KIAotLy8g
VHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyCisvLyBEb3VibGVFbGVt
ZW50RGVzY2VuZGFudFJhbmdlCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlu
bGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5
cGU+OjpUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29u
dGFpbmVyTm9kZSYgcm9vdCkKLSAgICA6IG1fcm9vdChyb290KQordGVtcGxhdGU8dHlwZW5hbWUg
RWxlbWVudFR5cGU+IERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpE
b3VibGVFbGVtZW50RGVzY2VuZGFudFJhbmdlKFNpbmdsZUFkYXB0ZXImJiBmaXJzdCwgU2luZ2xl
QWRhcHRlciYmIHNlY29uZCkKKyAgICA6IG1fcGFpcihXVEZNb3ZlKGZpcnN0KSwgV1RGTW92ZShz
ZWNvbmQpKQogewogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUg
VHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxl
bWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2luKCkg
Y29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBhdXRvIERvdWJsZUVsZW1lbnRE
ZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0IC0+IEl0ZXJhdG9yCiB7
Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPihtX3Jvb3QsIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0aGluKG1fcm9vdCkp
OworICAgIHJldHVybiBJdGVyYXRvcihtX3BhaXIuZmlyc3QuYmVnaW4oKSwgbV9wYWlyLnNlY29u
ZC5iZWdpbigpKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5l
IFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVs
ZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjplbmQoKSBj
b25zdAotewotICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxF
bGVtZW50VHlwZT4obV9yb290KTsKLX0KKy8vIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbkF0KGNvbnN0IEVsZW1l
bnRUeXBlJiBkZXNjZW5kYW50KSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+
IERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpEb3VibGVFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yKFNpbmdsZUl0ZXJhdG9yJiYgZmlyc3QsIFNpbmdsZUl0ZXJh
dG9yJiYgc2Vjb25kKQorICAgIDogbV9wYWlyKFdURk1vdmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29u
ZCkpCiB7Ci0gICAgQVNTRVJUKGRlc2NlbmRhbnQuaXNEZXNjZW5kYW50T2YobV9yb290KSk7Ci0g
ICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBl
PihtX3Jvb3QsICZkZXNjZW5kYW50KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5
cGU+Ojpmcm9tKGNvbnN0IEVsZW1lbnQmIGRlc2NlbmRhbnQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBFbGVtZW50VHlwZT4gYXV0byBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPjo6b3BlcmF0b3IqKCkgY29uc3QgLT4gUmVmZXJlbmNlUHJveHkKIHsKLSAgICBB
U1NFUlQoZGVzY2VuZGFudC5pc0Rlc2NlbmRhbnRPZihtX3Jvb3QpKTsKLSAgICBpZiAoaXM8RWxl
bWVudFR5cGU+KGRlc2NlbmRhbnQpKQotICAgICAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgZG93bmNhc3Q8RWxlbWVudFR5
cGU+KCZkZXNjZW5kYW50KSk7Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIG5leHQgPSBUcmF2ZXJz
YWw8RWxlbWVudFR5cGU+OjpuZXh0KGRlc2NlbmRhbnQsICZtX3Jvb3QpOwotICAgIHJldHVybiBU
eXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBu
ZXh0KTsKKyAgICByZXR1cm4geyAqbV9wYWlyLmZpcnN0LCAqbV9wYWlyLnNlY29uZCB9OwogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgY29uc3QgRWxlbWVudFR5
cGUqIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlw
ZT46OmZpcnN0KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBjb25zdGV4
cHIgYm9vbCBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3Bl
cmF0b3IhPShzdGQ6Om51bGxwdHJfdCkgY29uc3QKIHsKLSAgICByZXR1cm4gVHJhdmVyc2FsPEVs
ZW1lbnRUeXBlPjo6Zmlyc3RXaXRoaW4obV9yb290KTsKKyAgICBBU1NFUlQoIW1fcGFpci5maXJz
dCA9PSAhbV9wYWlyLnNlY29uZCk7CisgICAgcmV0dXJuIG1fcGFpci5maXJzdDsKIH0KIAotdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlKiBU
eXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+Ojps
YXN0KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBEb3VibGVFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRG91YmxlRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewotICAgIHJldHVybiBUcmF2ZXJz
YWw8RWxlbWVudFR5cGU+OjpsYXN0V2l0aGluKG1fcm9vdCk7CisgICAgKyttX3BhaXIuZmlyc3Q7
CisgICAgKyttX3BhaXIuc2Vjb25kOworICAgIHJldHVybiAqdGhpczsKIH0KIAotLy8gRG91Ymxl
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcgorLy8gRmlsdGVyZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yCiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxp
bmUgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlw
ZT46OkRvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoU2luZ2xlQWRh
cHRlciYmIGZpcnN0LCBTaW5nbGVBZGFwdGVyJiYgc2Vjb25kKQotICAgIDogbV9wYWlyKFdURk1v
dmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29uZCkpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlw
ZSwgYm9vbCBmaWx0ZXIoY29uc3QgRWxlbWVudFR5cGUmKT4gRmlsdGVyZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlLCBmaWx0ZXI+OjpGaWx0ZXJlZEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgRWxlbWVudFR5cGUqIGVsZW1l
bnQpCisgICAgOiBFbGVtZW50SXRlcmF0b3I8Y29uc3QgRWxlbWVudFR5cGU+IHsgJnJvb3QsIGVs
ZW1lbnQgfQogewogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGF1
dG8gRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlw
ZT46OmJlZ2luKCkgLT4gSXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBi
b29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudFR5cGUsIGZpbHRlcj4mIEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZSwgZmlsdGVyPjo6b3BlcmF0b3IrKygpCiB7Ci0gICAgcmV0dXJu
IEl0ZXJhdG9yKG1fcGFpci5maXJzdC5iZWdpbigpLCBtX3BhaXIuc2Vjb25kLmJlZ2luKCkpOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGF1dG8gRG91YmxlVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpIC0+
IEl0ZXJhdG9yCi17Ci0gICAgcmV0dXJuIEl0ZXJhdG9yKG1fcGFpci5maXJzdC5lbmQoKSwgbV9w
YWlyLnNlY29uZC5lbmQoKSk7CisgICAgZG8geworICAgICAgICBFbGVtZW50SXRlcmF0b3I8RWxl
bWVudFR5cGU+Ojp0cmF2ZXJzZU5leHQoKTsKKyAgICB9IHdoaWxlICgqdGhpcyAmJiAhZmlsdGVy
KCoqdGhpcykpOworICAgIHJldHVybiAqdGhpczsKIH0KIAotLy8gRG91YmxlVHlwZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yCisvLyBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFuZ2UKIAot
dGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBEb3VibGVUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IoU2luZ2xlSXRlcmF0b3ImJiBmaXJzdCwgU2luZ2xlSXRlcmF0b3ImJiBzZWNv
bmQpCi0gICAgOiBtX3BhaXIoV1RGTW92ZShmaXJzdCksIFdURk1vdmUoc2Vjb25kKSkKK3RlbXBs
YXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYp
PiBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGUsIGZpbHRlcj46OkZp
bHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZShjb25zdCBDb250YWluZXJOb2RlJiByb290KQor
ICAgIDogbV9yb290IHsgcm9vdCB9CiB7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPiBpbmxpbmUgYXV0byBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxl
bWVudFR5cGU+OjpvcGVyYXRvciooKSBjb25zdCAtPiBSZWZlcmVuY2VQcm94eQordGVtcGxhdGU8
dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmlsdGVyKGNvbnN0IEVsZW1lbnRUeXBlJik+IGF1
dG8gRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlLCBmaWx0ZXI+Ojpi
ZWdpbigpIGNvbnN0IC0+IEl0ZXJhdG9yCiB7Ci0gICAgcmV0dXJuIHsgKm1fcGFpci5maXJzdCwg
Km1fcGFpci5zZWNvbmQgfTsKKyAgICByZXR1cm4geyBtX3Jvb3QsIGZpcnN0KCkgfTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBib29sIERvdWJsZVR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yPT0oY29uc3QgRG91
YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKK3RlbXBsYXRl
PHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBF
bGVtZW50VHlwZSogRmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlLCBm
aWx0ZXI+OjpmaXJzdCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKChtX3BhaXIuZmlyc3QgPT0gb3Ro
ZXIubV9wYWlyLmZpcnN0KSA9PSAobV9wYWlyLnNlY29uZCA9PSBvdGhlci5tX3BhaXIuc2Vjb25k
KSk7Ci0gICAgcmV0dXJuIG1fcGFpci5maXJzdCA9PSBvdGhlci5tX3BhaXIuZmlyc3QgfHwgbV9w
YWlyLnNlY29uZCA9PSBvdGhlci5tX3BhaXIuc2Vjb25kOworICAgIGZvciAoYXV0byogZWxlbWVu
dCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0V2l0aGluKG1fcm9vdCk7IGVsZW1lbnQ7
IGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0KCplbGVtZW50LCAmbV9yb290
KSkgeworICAgICAgICBpZiAoZmlsdGVyKCplbGVtZW50KSkKKyAgICAgICAgICAgIHJldHVybiBl
bGVtZW50OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgRWxlbWVudFR5cGU+IGlubGluZSBib29sIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yIT0oY29uc3QgRG91YmxlVHlwZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7Ci19CisvLyBTdGFuZGFsb25lIGZ1bmN0aW9ucwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4gaW5saW5lIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
cjxFbGVtZW50VHlwZT4mIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVt
ZW50VHlwZT46Om9wZXJhdG9yKysoKQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVs
ZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKENvbnRh
aW5lck5vZGUmIHJvb3QpCiB7Ci0gICAgKyttX3BhaXIuZmlyc3Q7Ci0gICAgKyttX3BhaXIuc2Vj
b25kOwotICAgIHJldHVybiAqdGhpczsKKyAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRSYW5n
ZTxFbGVtZW50VHlwZT4ocm9vdCk7CiB9CiAKLS8vIFN0YW5kYWxvbmUgZnVuY3Rpb25zCi0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWlu
ZXJOb2RlJiByb290KQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnREZXNj
ZW5kYW50UmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZUeXBlKGNvbnN0IENv
bnRhaW5lck5vZGUmIHJvb3QpCiB7Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KHJvb3QpOworICAgIHJldHVybiBFbGVtZW50RGVz
Y2VuZGFudFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPihyb290KTsKIH0KIAotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoY29uc3QgQ29udGFp
bmVyTm9kZSYgcm9vdCkKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBEb3VibGVFbGVt
ZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWlu
ZXJOb2RlJiBmaXJzdFJvb3QsIENvbnRhaW5lck5vZGUmIHNlY29uZFJvb3QpCiB7Ci0gICAgcmV0
dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlw
ZT4ocm9vdCk7CisgICAgcmV0dXJuIHsgZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudFR5cGU+KGZp
cnN0Um9vdCksIGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnRUeXBlPihzZWNvbmRSb290KSB9Owog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIERvdWJsZVR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRzT2ZU
eXBlKENvbnRhaW5lck5vZGUmIGZpcnN0Um9vdCwgQ29udGFpbmVyTm9kZSYgc2Vjb25kUm9vdCkK
K3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50
VHlwZSYpPiBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8Y29uc3QgRWxlbWVudFR5cGUs
IGZpbHRlcj4gZGVzY2VuZGFudHNPZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKIHsK
LSAgICByZXR1cm4geyBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50VHlwZT4oZmlyc3RSb290KSwg
ZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudFR5cGU+KHNlY29uZFJvb3QpIH07CisgICAgcmV0dXJu
IHsgcm9vdCB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKaW5kZXggMzkyMGEwYjcwODMzYmY5YjZmNDNmYzc1OGM0YmQxM2M2YmRlMWNmNC4u
NmM2ZDgzYTcyOGYzMDIwM2I4ZWZmY2UwZjA4YmFhNDU1YzMyNmE2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0b3JDbGll
bnQuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudEhhbmRs
ZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgpAQCAtNjEs
NyArNjIsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxB
dHRhY2htZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxCUkVsZW1lbnQuaCIKLSNpbmNsdWRl
ICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCkBAIC0zNDMxLDIzICszNDMy
LDE4IEBAIHZvaWQgRWRpdG9yOjp0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShFbGVtZW50KiBlKQog
CiB2b2lkIEVkaXRvcjo6YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCkgY29uc3QKIHsK
LSAgICBhdXRvIGNvbGxlY3Rpb24gPSBkb2N1bWVudCgpLmdldEVsZW1lbnRzQnlUYWdOYW1lKEhU
TUxOYW1lczo6Ym9keVRhZy0+bG9jYWxOYW1lKCkpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNv
bGxlY3Rpb24tPmxlbmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkKLSAgICAgICAgYXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQoY29sbGVjdGlvbi0+aXRl
bShpKSk7Ci19Ci0KLXZvaWQgRWRpdG9yOjphcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudChFbGVt
ZW50KiBlbGVtZW50KSBjb25zdAotewotICAgIEFTU0VSVCghZWxlbWVudCB8fCBpczxTdHlsZWRF
bGVtZW50PigqZWxlbWVudCkpOwotICAgIGlmICghaXM8U3R5bGVkRWxlbWVudD4oZWxlbWVudCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00gd3JhcHBl
ciBzbyB3ZSBnZXQgdGhlIHNhbWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCi0gICAgYXV0
byYgc3R5bGUgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkuY3Nzb21TdHlsZSgp
OwotICAgIHN0eWxlLnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkV3JhcCwgImJy
ZWFrLXdvcmQiLCBmYWxzZSk7Ci0gICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdE5ic3BNb2RlLCAic3BhY2UiLCBmYWxzZSk7Ci0gICAgc3R5bGUuc2V0UHJvcGVy
dHlJbnRlcm5hbChDU1NQcm9wZXJ0eUxpbmVCcmVhaywgImFmdGVyLXdoaXRlLXNwYWNlIiwgZmFs
c2UpOworICAgIC8vIEZJWE1FOiBOb3QgY2xlYXIgaXQncyB2YWx1YWJsZSB0byBkbyB0aGlzIHRv
IGFsbCBib2R5IGVsZW1lbnRzIHJhdGhlciB0aGFuIGp1c3QgZG9pbmcgaXQgb24gdGhlIHNpbmds
ZSBvbmUgcmV0dXJuZWQgYnkgRG9jdW1lbnQ6OmJvZHkuCisgICAgVmVjdG9yPFJlZjxIVE1MQm9k
eUVsZW1lbnQ+PiBib2RpZXM7CisgICAgZm9yIChhdXRvJiBib2R5IDogZGVzY2VuZGFudHNPZlR5
cGU8SFRNTEJvZHlFbGVtZW50Pihkb2N1bWVudCgpKSkKKyAgICAgICAgYm9kaWVzLmFwcGVuZChi
b2R5KTsKKworICAgIGZvciAoYXV0byYgYm9keSA6IGJvZGllcykgeworICAgICAgICAvLyBNdXRh
dGUgdXNpbmcgdGhlIENTU09NIHdyYXBwZXIgc28gd2UgZ2V0IHRoZSBzYW1lIGV2ZW50IGJlaGF2
aW9yIGFzIGEgc2NyaXB0LgorICAgICAgICBhdXRvJiBzdHlsZSA9IGJvZHktPmNzc29tU3R5bGUo
KTsKKyAgICAgICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdvcmRXcmFw
LCAiYnJlYWstd29yZCIsIGZhbHNlKTsKKyAgICAgICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCAic3BhY2UiLCBmYWxzZSk7CisgICAgICAgIHN0
eWxlLnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlMaW5lQnJlYWssICJhZnRlci13aGl0
ZS1zcGFjZSIsIGZhbHNlKTsKKyAgICB9CiB9CiAKIGJvb2wgRWRpdG9yOjpmaW5kU3RyaW5nKGNv
bnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKaW5kZXggMTljNDIwOGQ0NWQ5ZWM5ZjVjMjljOTI4MTc0ODgwZTRmMWI5ODQxMC4uZjg2
NzdiMzE4ZThlODA2YzAyMmEzZTczODZlZWYyNjA4MDViNDUzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oCkBAIC00MzUsNyArNDM1LDYgQEAgcHVibGljOgogICAgIHZvaWQgY29tcHV0ZUFuZFNl
dFR5cGluZ1N0eWxlKEVkaXRpbmdTdHlsZSYgLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6VW5z
cGVjaWZpZWQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tcHV0ZUFuZFNldFR5cGluZ1N0
eWxlKFN0eWxlUHJvcGVydGllcyYgLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6VW5zcGVjaWZp
ZWQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVt
ZW50KCkgY29uc3Q7Ci0gICAgdm9pZCBhcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudChFbGVtZW50
KikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IGZpcnN0UmVjdEZvclJhbmdl
KFJhbmdlKikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJh
bWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5j
cHAKaW5kZXggY2ZkYzM5ZjA0ZWFjNDA2ODRkMWQyNDhiN2I4NzM1NjRlMDI4Mjk2NC4uZDhjY2Fi
MDc4NDEzNzI1ZWY5MGRkMDFkMGI3ZmU0OTc1NGZhN2FjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTIzNTMsMjAgKzIzNTMsMTYgQEAgc3RhdGljIEhU
TUxGb3JtRWxlbWVudCogc2NhbkZvckZvcm0oRWxlbWVudCogc3RhcnQpCiB7CiAgICAgaWYgKCFz
dGFydCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGRlc2NlbmRhbnRzID0g
ZGVzY2VuZGFudHNPZlR5cGU8SFRNTEVsZW1lbnQ+KHN0YXJ0LT5kb2N1bWVudCgpKTsKLSAgICBm
b3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5mcm9tKCpzdGFydCksIGVuZCA9IGRlc2NlbmRhbnRz
LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgSFRNTEVsZW1lbnQmIGVsZW1lbnQg
PSAqaXQ7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTEVs
ZW1lbnQ+KHN0YXJ0LT5kb2N1bWVudCgpKSkgewogICAgICAgICBpZiAoaXM8SFRNTEZvcm1FbGVt
ZW50PihlbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybiAmZG93bmNhc3Q8SFRNTEZvcm1FbGVt
ZW50PihlbGVtZW50KTsKICAgICAgICAgaWYgKGlzPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KGVs
ZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ+KGVsZW1lbnQpLmZvcm0oKTsKICAgICAgICAgaWYgKGlzPEhUTUxGcmFtZUVsZW1lbnRCYXNl
PihlbGVtZW50KSkgewotICAgICAgICAgICAgRG9jdW1lbnQqIGNvbnRlbnREb2N1bWVudCA9IGRv
d25jYXN0PEhUTUxGcmFtZUVsZW1lbnRCYXNlPihlbGVtZW50KS5jb250ZW50RG9jdW1lbnQoKTsK
LSAgICAgICAgICAgIGlmICghY29udGVudERvY3VtZW50KQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgaWYgKEhUTUxGb3JtRWxlbWVudCogZnJhbWVSZXN1bHQgPSBzY2Fu
Rm9yRm9ybShjb250ZW50RG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZnJhbWVSZXN1bHQ7CisgICAgICAgICAgICBpZiAoYXV0byogY29udGVudERv
Y3VtZW50ID0gZG93bmNhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2U+KGVsZW1lbnQpLmNvbnRlbnRE
b2N1bWVudCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGZyYW1lUmVzdWx0ID0gc2Nh
bkZvckZvcm0oY29udGVudERvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmcmFtZVJlc3VsdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggY2RlOWE3OGM4ZmU3ZGEx
MzFlMTFmNDRmNGJiMDkxYzVmZTZmMDJmMy4uMWU3NjBkZTcyMzE2MDlkMDU5Mjk4MjhmN2UxM2Yz
ZDIyYmEyNTJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogCiAgICAg
ICAgIFR5cGUgdHlwZSA9IFR5cGU6OkluY2x1ZGU7CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBt
YXRjaGluZ0VsZW1lbnQ7Ci0gICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnRMaW5l
YWdlKHN0YXJ0aW5nRWxlbWVudC5nZXQoKSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50
IDogbGluZWFnZU9mVHlwZTxFbGVtZW50Pigqc3RhcnRpbmdFbGVtZW50KSkgewogICAgICAgICAg
ICAgaWYgKGF1dG8gdHlwZU9yTnVsbG9wdCA9IHR5cGVGb3JFbGVtZW50KGVsZW1lbnQpKSB7CiAg
ICAgICAgICAgICAgICAgdHlwZSA9ICp0eXBlT3JOdWxsb3B0OwogICAgICAgICAgICAgICAgIG1h
dGNoaW5nRWxlbWVudCA9ICZlbGVtZW50OwpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVt
ZW50TGluZWFnZShzdGFydGluZ0VsZW1lbnQuZ2V0KCkpKSB7CisgICAgICAgIGZvciAoYXV0byYg
ZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4oKnN0YXJ0aW5nRWxlbWVudCkpIHsKICAg
ICAgICAgICAgIG1fY2FjaGUuc2V0KGVsZW1lbnQsIHR5cGUpOwogICAgICAgICAgICAgaWYgKCZl
bGVtZW50ID09IG1hdGNoaW5nRWxlbWVudCkKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0KaW5kZXggMzk0OTZiNjk4ODY2YzRhZWMzZjc3ZDRlNjYwYmU2ZDUwNzk5ZDlkZS4uZjdkYTBi
ZGI1OGE4ZGUwYmYzNjRlYmYzNDk0NDNiMmRlYzgyNDhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTM3LDYg
KzM3LDcgQEAKICNpbXBvcnQgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW1wb3J0ICJFZGl0b3IuaCIK
ICNpbXBvcnQgIkVkaXRvckNsaWVudC5oIgorI2ltcG9ydCAiRWxlbWVudEl0ZXJhdG9yLmgiCiAj
aW1wb3J0ICJGaWxlLmgiCiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXIu
aCIKQEAgLTU4LDcgKzU5LDYgQEAKICNpbXBvcnQgIlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5o
IgogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQgIlNvY2tldFByb3ZpZGVyLmgiCi0jaW1w
b3J0ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbXBvcnQgIlVUSVV0aWxp
dGllcy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmlu
Zy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVzb3VyY2VIYW5kbGVyLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggMTU5NTAzNTFkOTA0NzRjN2M3ODhjMzNlNjdl
N2RhODU4ODdmNmQ0Yy4uN2UyMmM1MjJhZGM4ZTIyN2I2MzliY2VlNmRiNDZkMGEzOTI5M2Q1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNzUsNyArNzUsNiBAQAogI2luY2x1ZGUg
IlNvY2tldFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVk
ZSAiVGV4dEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIlZpc2libGVV
bml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaAppbmRleCA3OWY0NzdkNzRmMjI0ZTcxYjQ2YWJhNDc3
ZjZjZGIwZGE4OWRmNDg1Li4wZjA2YzBiM2ExYzlmNjlkN2QxNDFiMGIyMzY0Zjk2YTE5ZWNmZGMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oCkBAIC0yNSw3
ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29sbGVjdGlvblRyYXZlcnNh
bC5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQu
aCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CkBAIC01MiwxNCArNTEsMTQgQEAgcHVibGlj
OgogICAgIH0KIAogICAgIC8vIEZvciBDb2xsZWN0aW9uSW5kZXhDYWNoZTsgZG8gbm90IHVzZSBl
bHNld2hlcmUuCi0gICAgdXNpbmcgQ29sbGVjdGlvblRyYXZlcnNhbEl0ZXJhdG9yID0gdHlwZW5h
bWUgQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6SXRlcmF0b3I7Ci0gICAgQ29s
bGVjdGlvblRyYXZlcnNhbEl0ZXJhdG9yIGNvbGxlY3Rpb25CZWdpbigpIGNvbnN0IHsgcmV0dXJu
IENvbGxlY3Rpb25UcmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT46OmJlZ2luKGNvbGxlY3Rpb24oKSwg
cm9vdE5vZGUoKSk7IH0KLSAgICBDb2xsZWN0aW9uVHJhdmVyc2FsSXRlcmF0b3IgY29sbGVjdGlv
bkxhc3QoKSBjb25zdCB7IHJldHVybiBDb2xsZWN0aW9uVHJhdmVyc2FsPHRyYXZlcnNhbFR5cGU+
OjpsYXN0KGNvbGxlY3Rpb24oKSwgcm9vdE5vZGUoKSk7IH0KLSAgICBDb2xsZWN0aW9uVHJhdmVy
c2FsSXRlcmF0b3IgY29sbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIENvbGxlY3Rpb25UcmF2
ZXJzYWw8dHJhdmVyc2FsVHlwZT46OmVuZChyb290Tm9kZSgpKTsgfQotICAgIHZvaWQgY29sbGVj
dGlvblRyYXZlcnNlRm9yd2FyZChDb2xsZWN0aW9uVHJhdmVyc2FsSXRlcmF0b3ImIGN1cnJlbnQs
IHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0IHsgQ29sbGVj
dGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6dHJhdmVyc2VGb3J3YXJkKGNvbGxlY3Rpb24o
KSwgY3VycmVudCwgY291bnQsIHRyYXZlcnNlZENvdW50KTsgfQotICAgIHZvaWQgY29sbGVjdGlv
blRyYXZlcnNlQmFja3dhcmQoQ29sbGVjdGlvblRyYXZlcnNhbEl0ZXJhdG9yJiBjdXJyZW50LCB1
bnNpZ25lZCBjb3VudCkgY29uc3QgeyBDb2xsZWN0aW9uVHJhdmVyc2FsPHRyYXZlcnNhbFR5cGU+
Ojp0cmF2ZXJzZUJhY2t3YXJkKGNvbGxlY3Rpb24oKSwgY3VycmVudCwgY291bnQpOyB9CisgICAg
dXNpbmcgVHJhdmVyc2FsID0gQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjsKKyAg
ICB1c2luZyBJdGVyYXRvciA9IHR5cGVuYW1lIFRyYXZlcnNhbDo6SXRlcmF0b3I7CisgICAgYXV0
byBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBUcmF2ZXJzYWw6OmJlZ2luKGNvbGxl
Y3Rpb24oKSwgcm9vdE5vZGUoKSk7IH0KKyAgICBhdXRvIGNvbGxlY3Rpb25MYXN0KCkgY29uc3Qg
eyByZXR1cm4gVHJhdmVyc2FsOjpsYXN0KGNvbGxlY3Rpb24oKSwgcm9vdE5vZGUoKSk7IH0KKyAg
ICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2ln
bmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0IHsgVHJhdmVyc2FsOjp0
cmF2ZXJzZUZvcndhcmQoY29sbGVjdGlvbigpLCBjdXJyZW50LCBjb3VudCwgdHJhdmVyc2VkQ291
bnQpOyB9CisgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChJdGVyYXRvciYgY3Vy
cmVudCwgdW5zaWduZWQgY291bnQpIGNvbnN0IHsgVHJhdmVyc2FsOjp0cmF2ZXJzZUJhY2t3YXJk
KGNvbGxlY3Rpb24oKSwgY3VycmVudCwgY291bnQpOyB9CiAgICAgYm9vbCBjb2xsZWN0aW9uQ2Fu
VHJhdmVyc2VCYWNrd2FyZCgpIGNvbnN0IHsgcmV0dXJuIHRyYXZlcnNhbFR5cGUgIT0gQ29sbGVj
dGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5OyB9Ci0gICAgdm9pZCB3aWxsVmFs
aWRhdGVJbmRleENhY2hlKCkgY29uc3QgeyBkb2N1bWVudCgpLnJlZ2lzdGVyQ29sbGVjdGlvbihj
b25zdF9jYXN0PENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZl
cnNhbFR5cGU+Jj4oKnRoaXMpKTsgfQorICAgIHZvaWQgd2lsbFZhbGlkYXRlSW5kZXhDYWNoZSgp
IGNvbnN0IHsgZG9jdW1lbnQoKS5yZWdpc3RlckNvbGxlY3Rpb24oY29uc3RfY2FzdDxDYWNoZWRI
VE1MQ29sbGVjdGlvbiY+KCp0aGlzKSk7IH0KIAogICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlRm9y
RG9jdW1lbnQoRG9jdW1lbnQmKSBvdmVycmlkZTsKIApAQCAtNjksMTkgKzY4LDE5IEBAIHByaXZh
dGU6CiAgICAgSFRNTENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbigpIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEhUTUxDb2xsZWN0aW9uQ2xhc3MmPigqdGhpcyk7IH0KICAgICBjb25zdCBIVE1MQ29s
bGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSFRNTENvbGxlY3Rpb25DbGFzcyY+KCp0aGlzKTsgfQogCi0gICAgbXV0YWJsZSBDb2xsZWN0
aW9uSW5kZXhDYWNoZTxIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsSXRl
cmF0b3I+IG1faW5kZXhDYWNoZTsKKyAgICBtdXRhYmxlIENvbGxlY3Rpb25JbmRleENhY2hlPEhU
TUxDb2xsZWN0aW9uQ2xhc3MsIEl0ZXJhdG9yPiBtX2luZGV4Q2FjaGU7CiB9OwogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUg
dHJhdmVyc2FsVHlwZT4KIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3Ms
IHRyYXZlcnNhbFR5cGU+OjpDYWNoZWRIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBiYXNl
LCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSkKICAgICA6IEhUTUxDb2xsZWN0aW9uKGJh
c2UsIGNvbGxlY3Rpb25UeXBlKQotICAgICwgbV9pbmRleENhY2hlKGNvbGxlY3Rpb24oKSkKLXsg
fQoreworfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVj
dGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhU
TUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+Ojp+Q2FjaGVkSFRNTENvbGxlY3Rpb24o
KQogewotICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKCkpKQor
ICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZSgpKQogICAgICAgICBkb2N1bWVudCgp
LnVucmVnaXN0ZXJDb2xsZWN0aW9uKCp0aGlzKTsKIH0KIApAQCAtODksOSArODgsOSBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5
cGUgdHJhdmVyc2FsVHlwZT4KIHZvaWQgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rp
b25DbGFzcywgdHJhdmVyc2FsVHlwZT46OmludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50KERvY3Vt
ZW50JiBkb2N1bWVudCkKIHsKICAgICBIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlRm9y
RG9jdW1lbnQoZG9jdW1lbnQpOwotICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShj
b2xsZWN0aW9uKCkpKSB7CisgICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKCkpIHsK
ICAgICAgICAgZG9jdW1lbnQudW5yZWdpc3RlckNvbGxlY3Rpb24oKnRoaXMpOwotICAgICAgICBt
X2luZGV4Q2FjaGUuaW52YWxpZGF0ZShjb2xsZWN0aW9uKCkpOworICAgICAgICBtX2luZGV4Q2Fj
aGUuaW52YWxpZGF0ZSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9Db2xsZWN0aW9uVHJhdmVyc2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rp
b25UcmF2ZXJzYWwuaAppbmRleCA2NjgyOTMzOGQwYjFkMWIwY2FiNTExNzdmMDM4NzIwYzE5MmY3
MTk2Li4yYTg4ZjU3ZTFiZDY0YjE2ODE1ODMyYmYwYjA2ZThjNGNhZDA2YWM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UcmF2ZXJzYWwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UcmF2ZXJzYWwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw4ICsyNiw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkNvbGxlY3Rpb25UeXBlLmgiCi0jaW5jbHVkZSAiRWxlbWVudENo
aWxkSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCisj
aW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MzYsNzYgKzM1LDY0IEBAIHN0cnVjdCBDb2xsZWN0aW9uVHJhdmVyc2FsIHsgfTsKIAogdGVtcGxh
dGUgPD4KIHN0cnVjdCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBl
OjpEZXNjZW5kYW50cz4gewotICAgIHVzaW5nIEl0ZXJhdG9yID0gRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcjsKLQotICAgIHN0YXRpYyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGVuZChDb250
YWluZXJOb2RlJikgeyByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcigpOyB9CisgICAg
dXNpbmcgSXRlcmF0b3IgPSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnQ+OwogCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvciBiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWlu
ZXJOb2RlJiByb290Tm9kZSk7CisgICAgc3RhdGljIEl0ZXJhdG9yIGJlZ2luKGNvbnN0IENvbGxl
Y3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKIAogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3IgbGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9k
ZSk7CisgICAgc3RhdGljIEl0ZXJhdG9yIGxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29u
dGFpbmVyTm9kZSYgcm9vdE5vZGUpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rp
b25DbGFzcz4KLSAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlv
bkNsYXNzJiwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291
bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCk7CisgICAgc3RhdGljIHZvaWQgdHJhdmVyc2VG
b3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25l
ZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KTsKIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIHZvaWQgdHJhdmVyc2VCYWNrd2FyZChj
b25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50
LCB1bnNpZ25lZCBjb3VudCk7CisgICAgc3RhdGljIHZvaWQgdHJhdmVyc2VCYWNrd2FyZChjb25z
dCBDb2xsZWN0aW9uQ2xhc3MmLCBJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpOwog
fTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNh
bFR5cGU6OkRlc2NlbmRhbnRzPjo6YmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0
aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK2lubGluZSBhdXRvIENvbGxlY3Rpb25UcmF2
ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6YmVnaW4oY29uc3Qg
Q29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkgLT4g
SXRlcmF0b3IKIHsKLSAgICBhdXRvIGRlc2NlbmRhbnRzID0gZWxlbWVudERlc2NlbmRhbnRzKHJv
b3ROb2RlKTsKLSAgICBhdXRvIGVuZCA9IGRlc2NlbmRhbnRzLmVuZCgpOwotICAgIGZvciAoYXV0
byBpdCA9IGRlc2NlbmRhbnRzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBp
ZiAoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqaXQpKSB7Ci0gICAgICAgICAgICAvLyBEcm9w
IGl0ZXJhdG9yIGFzc2VydGlvbnMgYmVjYXVzZSBIVE1MQ29sbGVjdGlvbnMgLyBOb2RlTGlzdCB1
c2UgYSBmaW5lLWdyYWluZWQgaW52YWxpZGF0aW9uIHNjaGVtZS4KLSAgICAgICAgICAgIGl0LmRy
b3BBc3NlcnRpb25zKCk7Ci0gICAgICAgICAgICByZXR1cm4gaXQ7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgcmV0dXJuIGVuZDsKKyAgICBhdXRvIGl0ID0gZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVu
dD4ocm9vdE5vZGUpLmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICYmICFjb2xsZWN0aW9uLmVsZW1l
bnRNYXRjaGVzKCppdCkpCisgICAgICAgICsraXQ7CisgICAgLy8gRHJvcCBpdGVyYXRvciBhc3Nl
cnRpb25zIGJlY2F1c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1ncmFp
bmVkIGludmFsaWRhdGlvbiBzY2hlbWUuCisgICAgaXQuZHJvcEFzc2VydGlvbnMoKTsKKyAgICBy
ZXR1cm4gaXQ7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci1pbmxp
bmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rp
b25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46Omxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNz
JiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK2lubGluZSBhdXRvIENvbGxl
Y3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6bGFz
dChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlKSAtPiBJdGVyYXRvcgogewotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBlbGVtZW50RGVzY2Vu
ZGFudHMocm9vdE5vZGUpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgaW52YWxpZDsK
LSAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5sYXN0KCk7IGl0ICE9IGludmFsaWQ7IC0t
aXQpIHsKLSAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkgewotICAg
ICAgICAgICAgLy8gRHJvcCBpdGVyYXRvciBhc3NlcnRpb25zIGJlY2F1c2UgSFRNTENvbGxlY3Rp
b25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1ncmFpbmVkIGludmFsaWRhdGlvbiBzY2hlbWUuCi0g
ICAgICAgICAgICBpdC5kcm9wQXNzZXJ0aW9ucygpOwotICAgICAgICAgICAgcmV0dXJuIGl0Owot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBpbnZhbGlkOworICAgIEl0ZXJhdG9yIGl0IHsg
cm9vdE5vZGUsIEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RXaXRoaW4ocm9vdE5vZGUpIH07CisgICAg
d2hpbGUgKGl0ICYmICFjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCppdCkpCisgICAgICAgIC0t
aXQ7CisgICAgLy8gRHJvcCBpdGVyYXRvciBhc3NlcnRpb25zIGJlY2F1c2UgSFRNTENvbGxlY3Rp
b25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1ncmFpbmVkIGludmFsaWRhdGlvbiBzY2hlbWUuCisg
ICAgaXQuZHJvcEFzc2VydGlvbnMoKTsKKyAgICByZXR1cm4gaXQ7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci1pbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2Fs
PENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNlRm9yd2FyZChj
b25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpCitp
bmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpE
ZXNjZW5kYW50cz46OnRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxl
Y3Rpb24sIEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZl
cnNlZENvdW50KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJy
ZW50KSk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBpbnZhbGlkOwogICAgIGZvciAo
dHJhdmVyc2VkQ291bnQgPSAwOyB0cmF2ZXJzZWRDb3VudCA8IGNvdW50OyArK3RyYXZlcnNlZENv
dW50KSB7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgICsrY3VycmVudDsKLSAgICAgICAgICAg
IGlmIChjdXJyZW50ID09IGludmFsaWQpCisgICAgICAgICAgICBpZiAoIWN1cnJlbnQpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IHdoaWxlICghY29sbGVjdGlvbi5lbGVtZW50
TWF0Y2hlcygqY3VycmVudCkpOwogICAgIH0KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxl
Y3Rpb25DbGFzcz4KLWlubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0
aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQs
IHVuc2lnbmVkIGNvdW50KQoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0
aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENv
bGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNv
dW50KQogewogICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7
Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBpbnZhbGlkOwogICAgIGZvciAoOyBjb3Vu
dDsgLS1jb3VudCkgewogICAgICAgICBkbyB7CiAgICAgICAgICAgICAtLWN1cnJlbnQ7Ci0gICAg
ICAgICAgICBpZiAoY3VycmVudCA9PSBpbnZhbGlkKQorICAgICAgICAgICAgaWYgKCFjdXJyZW50
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSB3aGlsZSAoIWNvbGxlY3Rpb24u
ZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKICAgICB9CkBAIC0xMTUsNzUgKzEwMiw2MiBAQCB0
ZW1wbGF0ZSA8Pgogc3RydWN0IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNh
bFR5cGU6OkNoaWxkcmVuT25seT4gewogICAgIHVzaW5nIEl0ZXJhdG9yID0gRWxlbWVudENoaWxk
SXRlcmF0b3I8RWxlbWVudD47CiAKLSAgICBzdGF0aWMgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxl
bWVudD4gZW5kKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSB7IHJldHVybiBFbGVtZW50Q2hpbGRJ
dGVyYXRvcjxFbGVtZW50Pihyb290Tm9kZSk7IH0KLQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBD
b2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+
IGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsK
KyAgICBzdGF0aWMgSXRlcmF0b3IgYmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFp
bmVyTm9kZSYgcm9vdE5vZGUpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25D
bGFzcz4KLSAgICBzdGF0aWMgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gbGFzdChjb25z
dCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CisgICAgc3RhdGlj
IEl0ZXJhdG9yIGxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYgcm9v
dE5vZGUpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLSAgICBz
dGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgRWxlbWVu
dENoaWxkSXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25l
ZCYgdHJhdmVyc2VkQ291bnQpOworICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlRm9yd2FyZChjb25z
dCBDb2xsZWN0aW9uQ2xhc3MmLCBJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVu
c2lnbmVkJiB0cmF2ZXJzZWRDb3VudCk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVj
dGlvbkNsYXNzPgotICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVj
dGlvbkNsYXNzJiwgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQsIHVuc2ln
bmVkIGNvdW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxl
Y3Rpb25DbGFzcyYsIEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCk7CiB9OwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0
ZXJhdG9yPEVsZW1lbnQ+IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5
cGU6OkNoaWxkcmVuT25seT46OmJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlv
biwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpCitpbmxpbmUgYXV0byBDb2xsZWN0aW9uVHJhdmVy
c2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+OjpiZWdpbihjb25zdCBD
b2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSAtPiBJ
dGVyYXRvcgogewotICAgIGF1dG8gY2hpbGRyZW4gPSBjaGlsZHJlbk9mVHlwZTxFbGVtZW50Pihy
b290Tm9kZSk7Ci0gICAgYXV0byBlbmQgPSBjaGlsZHJlbi5lbmQoKTsKLSAgICBmb3IgKGF1dG8g
aXQgPSBjaGlsZHJlbi5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKGNv
bGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkgewotICAgICAgICAgICAgLy8gRHJvcCBpdGVy
YXRvciBhc3NlcnRpb25zIGJlY2F1c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEg
ZmluZS1ncmFpbmVkIGludmFsaWRhdGlvbiBzY2hlbWUuCi0gICAgICAgICAgICBpdC5kcm9wQXNz
ZXJ0aW9ucygpOwotICAgICAgICAgICAgcmV0dXJuIGl0OwotICAgICAgICB9Ci0gICAgfQotICAg
IHJldHVybiBlbmQ7CisgICAgYXV0byBpdCA9IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KHJvb3RO
b2RlKS5iZWdpbigpOworICAgIHdoaWxlIChpdCAmJiAhY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hl
cygqaXQpKQorICAgICAgICArK2l0OworICAgIC8vIERyb3AgaXRlcmF0b3IgYXNzZXJ0aW9ucyBi
ZWNhdXNlIEhUTUxDb2xsZWN0aW9ucyAvIE5vZGVMaXN0IHVzZSBhIGZpbmUtZ3JhaW5lZCBpbnZh
bGlkYXRpb24gc2NoZW1lLgorICAgIGl0LmRyb3BBc3NlcnRpb25zKCk7CisgICAgcmV0dXJuIGl0
OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5lIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46Omxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBj
b2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK2lubGluZSBhdXRvIENvbGxlY3Rp
b25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46Omxhc3Qo
Y29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9k
ZSkgLT4gSXRlcmF0b3IKIHsKLSAgICBhdXRvIGNoaWxkcmVuID0gY2hpbGRyZW5PZlR5cGU8RWxl
bWVudD4ocm9vdE5vZGUpOwotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGludmFs
aWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKLSAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVt
ZW50PiBsYXN0KHJvb3ROb2RlLCBjaGlsZHJlbi5sYXN0KCkpOwotICAgIGZvciAoYXV0byBpdCA9
IGxhc3Q7IGl0ICE9IGludmFsaWQ7IC0taXQpIHsKLSAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxl
bWVudE1hdGNoZXMoKml0KSkgewotICAgICAgICAgICAgLy8gRHJvcCBpdGVyYXRvciBhc3NlcnRp
b25zIGJlY2F1c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1ncmFpbmVk
IGludmFsaWRhdGlvbiBzY2hlbWUuCi0gICAgICAgICAgICBpdC5kcm9wQXNzZXJ0aW9ucygpOwot
ICAgICAgICAgICAgcmV0dXJuIGl0OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBpbnZh
bGlkOworICAgIGF1dG8gaXQgPSBjaGlsZHJlbk9mVHlwZTxFbGVtZW50Pihyb290Tm9kZSkuYmVn
aW4oKTsKKyAgICB3aGlsZSAoaXQgJiYgIWNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkK
KyAgICAgICAgLS1pdDsKKyAgICAvLyBEcm9wIGl0ZXJhdG9yIGFzc2VydGlvbnMgYmVjYXVzZSBI
VE1MQ29sbGVjdGlvbnMgLyBOb2RlTGlzdCB1c2UgYSBmaW5lLWdyYWluZWQgaW52YWxpZGF0aW9u
IHNjaGVtZS4KKyAgICBpdC5kcm9wQXNzZXJ0aW9ucygpOworICAgIHJldHVybiBpdDsKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSB2b2lkIENvbGxlY3Rp
b25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46OnRyYXZl
cnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnRDaGls
ZEl0ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRy
YXZlcnNlZENvdW50KQoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9u
VHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxl
Y3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50
LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpCiB7CiAgICAgQVNTRVJUKGNvbGxlY3Rpb24uZWxl
bWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50
PiBpbnZhbGlkKGNvbGxlY3Rpb24ucm9vdE5vZGUoKSk7CiAgICAgZm9yICh0cmF2ZXJzZWRDb3Vu
dCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKICAgICAg
ICAgZG8gewogICAgICAgICAgICAgKytjdXJyZW50OwotICAgICAgICAgICAgaWYgKGN1cnJlbnQg
PT0gaW52YWxpZCkKKyAgICAgICAgICAgIGlmICghY3VycmVudCkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0gd2hpbGUgKCFjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJy
ZW50KSk7CiAgICAgfQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgot
aW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6
Q2hpbGRyZW5Pbmx5Pjo6dHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNv
bGxlY3Rpb24sIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25l
ZCBjb3VudCkKK2lubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZl
cnNhbFR5cGU6OkNoaWxkcmVuT25seT46OnRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlv
bkNsYXNzJiBjb2xsZWN0aW9uLCBJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpCiB7
CiAgICAgQVNTRVJUKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAgICBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBpbnZhbGlkKGNvbGxlY3Rpb24ucm9vdE5vZGUo
KSk7CiAgICAgZm9yICg7IGNvdW50OyAtLWNvdW50KSB7CiAgICAgICAgIGRvIHsKICAgICAgICAg
ICAgIC0tY3VycmVudDsKLSAgICAgICAgICAgIGlmIChjdXJyZW50ID09IGludmFsaWQpCisgICAg
ICAgICAgICBpZiAoIWN1cnJlbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
IHdoaWxlICghY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwogICAgIH0KQEAg
LTE5Myw3ICsxNjcsNyBAQCB0ZW1wbGF0ZSA8Pgogc3RydWN0IENvbGxlY3Rpb25UcmF2ZXJzYWw8
Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5PiB7CiAgICAgdXNpbmcg
SXRlcmF0b3IgPSBFbGVtZW50KjsKIAotICAgIHN0YXRpYyBFbGVtZW50KiBlbmQoQ29udGFpbmVy
Tm9kZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEVsZW1lbnQq
IGVuZChDb250YWluZXJOb2RlJikgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KICAgICBzdGF0aWMgRWxlbWVudCogYmVnaW4oY29u
c3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Nv
bG9ySW5wdXRUeXBlLmNwcAppbmRleCBiOTQ5YTY5MWY2MGZkYzk5YzJkN2Y2N2ZkZjhiNzc1Mzg1
OGUzOTI4Li43ZmYzMmU1OTk3ZTcwNmQ1NzliOTliMGMzZjI3ZmQ1ZWZiYmQyMmI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM4LDcgKzM4LDYgQEAKICNp
bmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVk
ZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgogI2luY2x1ZGUg
IkV2ZW50LmgiCiAjaW5jbHVkZSAiSFRNTERhdGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxEaXZFbGVtZW50LmgiCkBAIC0yODcsMTMgKzI4Niw5IEBAIFZlY3RvcjxDb2xvcj4gQ29sb3JJ
bnB1dFR5cGU6OnN1Z2dlc3RlZENvbG9ycygpIGNvbnN0CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VM
RU1FTlQpCiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgaWYgKGF1dG8gZGF0YUxpc3QgPSBl
bGVtZW50KCktPmRhdGFMaXN0KCkpIHsKLSAgICAgICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBvcHRp
b25zID0gZGF0YUxpc3QtPm9wdGlvbnMoKTsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gb3B0
aW9ucy0+bGVuZ3RoKCk7Ci0gICAgICAgIHN1Z2dlc3Rpb25zLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobGVuZ3RoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBsZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50
Pigqb3B0aW9ucy0+aXRlbShpKSkudmFsdWUoKTsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkU2lt
cGxlQ29sb3IodmFsdWUpKQotICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zLnVuY2hlY2tlZEFw
cGVuZChDb2xvcih2YWx1ZSkpOworICAgICAgICBmb3IgKGF1dG8mIG9wdGlvbiA6IGRhdGFMaXN0
LT5zdWdnZXN0aW9ucygpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBjb2xvciA9IHBhcnNlU2lt
cGxlQ29sb3JWYWx1ZShvcHRpb24udmFsdWUoKSkpCisgICAgICAgICAgICAgICAgc3VnZ2VzdGlv
bnMudW5jaGVja2VkQXBwZW5kKCpjb2xvcik7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNw
cAppbmRleCAzODM4ZjFiZDdlNGU2N2Y1NTcwNWUxMDBiM2Q2OTczZDAzODkzZTUwLi45Y2IzYTY3
MDIzNzJjZDRiZDJiZmQ5ZWUzYmE4OWZiY2E3YzhmZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKIAogI2luY2x1ZGUgIkhU
TUxBcHBsZXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTERhdGFMaXN0RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgpAQCAtNjQsMTIgKzY1LDcgQEAgYm9vbCBHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb248dHJhdmVyc2FsVHlwZT46OmVsZW1lbnRNYXRjaGVzKEVs
ZW1lbnQmIGVsZW1lbnQKICAgICBjYXNlIFNlbGVjdGVkT3B0aW9uczoKICAgICAgICAgcmV0dXJu
IGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT3B0aW9uRWxl
bWVudD4oZWxlbWVudCkuc2VsZWN0ZWQoKTsKICAgICBjYXNlIERhdGFMaXN0T3B0aW9uczoKLSAg
ICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSkgewotICAgICAgICAgICAg
SFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbiA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50Pihl
bGVtZW50KTsKLSAgICAgICAgICAgIGlmICghb3B0aW9uLmlzRGlzYWJsZWRGb3JtQ29udHJvbCgp
ICYmICFvcHRpb24udmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gaXM8
SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpOwogICAgIGNhc2UgTWFwQXJlYXM6CiAgICAgICAg
IHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoYXJlYVRhZyk7CiAgICAgY2FzZSBEb2NBcHBsZXRz
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oCmluZGV4IDEzNTg0MTZmZTM4
OTJhOTk4ODVhNmY5ZjQwNDljZGUxZDlkMzdkMGIuLmY2ZWQzMzdjNWI3YWIxMjVlZGM0Nzg4OWFl
MzlmMTNjYzUzNGY2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENv
bGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgK
QEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEhUTUxBbGxOYW1lZFN1
YkNvbGxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25z
dCBBdG9tU3RyaW5nJiBuYW1lKQotICAgICAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxB
bGxOYW1lZFN1YkNvbGxlY3Rpb24sIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50
cz4oZG9jdW1lbnQsIHR5cGUpCisgICAgICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb24oZG9jdW1l
bnQsIHR5cGUpCiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgewogICAgICAgICBBU1NFUlQo
dHlwZSA9PSBEb2N1bWVudEFsbE5hbWVkSXRlbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
bGxDb2xsZWN0aW9uLmlkbAppbmRleCA4ZmNiNjhjNjgwMDA4MzcyM2E1ODU4ZjBjZTZkYmFhYjQ3
NTM5YzNjLi5lNWIxMTkyZTQ5Mjg4NzEzZjMzMjFiY2EwYTdjMjhhNjc4MWFhYTk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmlkbApAQCAtMzEsNiArMzEsNiBAQAog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKIAogICAgIGdldHRl
ciBFbGVtZW50PyAodW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW0ltcGxlbWVudGVkQXM9bmFt
ZWRJdGVtT3JJdGVtc10gZ2V0dGVyIChIVE1MQ29sbGVjdGlvbiBvciBFbGVtZW50KT8gbmFtZWRJ
dGVtKERPTVN0cmluZyBuYW1lKTsKLSAgICBbSW1wbGVtZW50ZWRBcz1uYW1lZE9ySW5kZXhlZEl0
ZW1Pckl0ZW1zXSBsZWdhY3ljYWxsZXIgKEhUTUxDb2xsZWN0aW9uIG9yIEVsZW1lbnQpPyBpdGVt
KG9wdGlvbmFsIERPTVN0cmluZyBuYW1lT3JJbmRleCk7CisgICAgW0ltcGxlbWVudGVkQXM9bmFt
ZWRJdGVtT3JJdGVtc10gZ2V0dGVyIChIVE1MQ29sbGVjdGlvbiBvciBFbGVtZW50KT8gbmFtZWRJ
dGVtKFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gRE9NU3RyaW5nIG5hbWUpOworICAgIFtJ
bXBsZW1lbnRlZEFzPW5hbWVkT3JJbmRleGVkSXRlbU9ySXRlbXNdIGxlZ2FjeWNhbGxlciAoSFRN
TENvbGxlY3Rpb24gb3IgRWxlbWVudCk/IGl0ZW0ob3B0aW9uYWwgW0F0b21TdHJpbmddIERPTVN0
cmluZyBuYW1lT3JJbmRleCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ29sbGVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmlk
bAppbmRleCA2ZGZhZThiZDg5NGFjZGMyZDI2MDU1NjYyNmI0YzczYmRiMWM5YTViLi5jNDUyZDg5
ZWM5YmIwZTA3ZWIzZTQyMzEyM2JmMzIxNzIwOTU2NDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDb2xsZWN0aW9uLmlkbApAQCAtMjcsNSArMjcsNSBAQAogXSBpbnRlcmZhY2UgSFRNTENvbGxl
Y3Rpb24gewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAg
ICBnZXR0ZXIgRWxlbWVudD8gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBnZXR0ZXIg
RWxlbWVudD8gbmFtZWRJdGVtKERPTVN0cmluZyBuYW1lKTsKKyAgICBnZXR0ZXIgRWxlbWVudD8g
bmFtZWRJdGVtKFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gRE9NU3RyaW5nIG5hbWUpOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwCmluZGV4IGJl
Yzg3YjM2ZDM4MTQwZTJjMmNlYzEyZDRhMGJkYmYzODU0ODhhMTkuLjgyNmMyYzU0OTM1MmU1NTdh
NWJiODk1NGY3NmE2MWYwNTJmOTc1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERhdGFMaXN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0
YUxpc3RFbGVtZW50LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCkBAIC0zNyw2ICszNyw3IEBACiAKICNpbmNsdWRlICJHZW5lcmljQ2Fj
aGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJI
VE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5o
IgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxp
bmVzLmg+CkBAIC02NSw2ICs2NiwxMSBAQCB2b2lkIEhUTUxEYXRhTGlzdEVsZW1lbnQ6Om9wdGlv
bkVsZW1lbnRDaGlsZHJlbkNoYW5nZWQoKQogICAgIHRyZWVTY29wZSgpLmlkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeSgpLm5vdGlmeU9ic2VydmVycyhnZXRJZEF0dHJpYnV0ZSgpKTsKIH0KIAorYm9v
bCBIVE1MRGF0YUxpc3RFbGVtZW50Ojppc1N1Z2dlc3Rpb24oY29uc3QgSFRNTE9wdGlvbkVsZW1l
bnQmIGRlc2NlbmRhbnQpCit7CisgICAgcmV0dXJuICFkZXNjZW5kYW50LmlzRGlzYWJsZWRGb3Jt
Q29udHJvbCgpICYmICFkZXNjZW5kYW50LnZhbHVlKCkuaXNFbXB0eSgpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmgKaW5kZXggOGY3MWZhNWM5MTFj
OWI1MGIyYjgxMGQ4NTdmN2FjM2NmMmNjZWMwMS4uN2NmNTcxZTI5YTY3MGNkZjBjZDZkZTU1Mzc1
M2I3ZWE5NTJkODY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxp
c3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50
LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKQEAgLTMzLDExICszMywxMyBAQAogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAK
LSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgSFRNTENvbGxlY3Rpb247CisKIGNsYXNzIEhUTUxEYXRhTGlzdEVsZW1lbnQgZmluYWwgOiBw
dWJsaWMgSFRNTEVsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTERhdGFM
aXN0RWxlbWVudCk7CiBwdWJsaWM6CkBAIC00Nyw2ICs0OSw5IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgb3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOwogCisgICAgc3RhdGljIGJvb2wgaXNT
dWdnZXN0aW9uKGNvbnN0IEhUTUxPcHRpb25FbGVtZW50JiBkZXNjZW5kYW50KTsKKyAgICBhdXRv
IHN1Z2dlc3Rpb25zKCkgY29uc3QgeyByZXR1cm4gZGVzY2VuZGFudHNPZlR5cGU8SFRNTE9wdGlv
bkVsZW1lbnQsIGlzU3VnZ2VzdGlvbj4oKnRoaXMpOyB9CisKIHByaXZhdGU6CiAgICAgSFRNTERh
dGFMaXN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDY4Y2Y1NTNhYjQ5MGFlNGRmMDdjN2RmYjYy
YjdkZGQwNjY5MDYwZWEuLjMyZWQ0YWQzMWJkMzBlY2Y0Y2NjNDhmYjE0MjQ0YTMyMzI0ZTA0Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAg
ICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJp
Z2h0IChDKSAyMDA0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
IChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90
b3JvbGEgTW9iaWxpdHkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDQsNyArNDQsNiBA
QAogI2luY2x1ZGUgIkhUTUxCRElFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJSRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxCdXR0b25FbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rp
b24uaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudEZh
Y3RvcnkuaCIKICNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCkBAIC02MCw2ICs1OSw3
IEBACiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQu
aCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RGlzYWxs
b3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlNpbXVsYXRl
ZENsaWNrLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCkBAIC03NjcsMTQgKzc2Nywx
NiBAQCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIEhUTUxFbGVtZW50Ojphc0Zvcm1Bc3NvY2lhdGVk
RWxlbWVudCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBl
bGVtZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5KGNvbnN0IE5vZGUmIG5vZGUpCitzdGF0aWMgYm9v
bCBlbGVtZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50
KQogewotICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KG5vZGUpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVu
dD4obm9kZSk7CiAgICAgcmV0dXJuIGlzPEhUTUxCRElFbGVtZW50PihlbGVtZW50KSB8fCBlbGVt
ZW50Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGlyQXR0cik7CiB9CiAKK3N0
YXRpYyBib29sIGVsZW1lbnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkoY29uc3QgTm9kZSYgbm9kZSkK
K3sKKyAgICByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGVsZW1lbnRBZmZlY3RzRGly
ZWN0aW9uYWxpdHkoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG5vZGUpKTsKK30KKwogc3RhdGljIHZv
aWQgc2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVseShOb2RlKiBmaXJzdE5vZGUsIGJvb2wgZmxh
ZywgTm9kZSogbGFzdE5vZGUgPSBudWxscHRyKQogewogICAgIGZpcnN0Tm9kZS0+c2V0U2VsZk9y
QW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKGZsYWcpOwpAQCAtODg1LDEwICs4ODcsMTAgQEAg
dm9pZCBIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hpbGRB
dHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnQKICAgICBzZXRIYXNEaXJBdXRvRmxhZ1JlY3Vyc2l2ZWx5
KGNoaWxkLCBmYWxzZSk7CiAgICAgaWYgKCFyZW5kZXJlcigpIHx8IHJlbmRlcmVyKCktPnN0eWxl
KCkuZGlyZWN0aW9uKCkgPT0gdGV4dERpcmVjdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIGZv
ciAoYXV0byYgZWxlbWVudFRvQWRqdXN0IDogZWxlbWVudExpbmVhZ2UodGhpcykpIHsKLSAgICAg
ICAgaWYgKGVsZW1lbnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkoZWxlbWVudFRvQWRqdXN0KSkgewot
ICAgICAgICAgICAgZWxlbWVudFRvQWRqdXN0LmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsK
LSAgICAgICAgICAgIHJldHVybjsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZU
eXBlPEhUTUxFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKGVsZW1lbnRBZmZlY3RzRGly
ZWN0aW9uYWxpdHkoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGVsZW1lbnQuaW52YWxpZGF0ZVN0
eWxlRm9yU3VidHJlZSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggMzk1ZGIxZTYyZWVkZDFkOTAwZTllN2Mz
ZWM4ODhjYjAwY2IyYTRhMy4uN2UwNzRlYjYxMjg5NzYyODkwZTExZTgxYWZjZDZhMDkzZTdmZGQ4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtMjIsMTkgKzIyLDE3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiSW5wdXRNb2RlLmgiCisjaW5jbHVkZSAiU3R5bGVkRWxl
bWVudC5oIgorCiAjaWYgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKQogI2luY2x1ZGUgIkF1dG9jYXBp
dGFsaXplLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgIklucHV0TW9kZS5oIgotI2luY2x1ZGUgIlN0
eWxlZEVsZW1lbnQuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEb2N1bWVudEZy
YWdtZW50OwogY2xhc3MgRm9ybUFzc29jaWF0ZWRFbGVtZW50OwogY2xhc3MgRm9ybU5hbWVkSXRl
bTsKLWNsYXNzIEhUTUxDb2xsZWN0aW9uOwogY2xhc3MgSFRNTEZvcm1FbGVtZW50OwogCiBlbnVt
IGNsYXNzIEVudGVyS2V5SGludCA6IHVpbnQ4X3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmNwcAppbmRleCA4Y2RmOTAzMDlmNzBiNGRmMjc1NDg1OWJjZjM0NTI0ZTAyMTVj
OWFmLi4zYmJjZTA4NzdhZDBhNDc0MzhjYzRiZjdiNjBjZTcyOGU1OGNlYzJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5
cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAo
QykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAo
QykgMjAwMCBTdGVmYW4gU2NoaW1hbnNraSAoMVN0ZWluQGdteC5kZSkKLSAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNjYsMTUgKzY2LDEw
IEBAIFJlZjxIVE1MRW1iZWRFbGVtZW50PiBIVE1MRW1iZWRFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQmIGRvY3VtZW50KQogCiBzdGF0aWMgaW5saW5lIFJlbmRlcldpZGdldCogZmluZFdpZGdldFJl
bmRlcmVyKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKSB7
Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7Ci0g
ICAgICAgIH0gd2hpbGUgKG5vZGUgJiYgIWlzPEhUTUxPYmplY3RFbGVtZW50Pigqbm9kZSkpOwot
ICAgIH0KLQorICAgIGlmICghbm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgbm9kZSA9IGFuY2Vz
dG9yc09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oKm5vZGUpLmZpcnN0KCk7CiAgICAgaWYgKG5v
ZGUgJiYgaXM8UmVuZGVyV2lkZ2V0Pihub2RlLT5yZW5kZXJlcigpKSkKICAgICAgICAgcmV0dXJu
IGRvd25jYXN0PFJlbmRlcldpZGdldD4obm9kZS0+cmVuZGVyZXIoKSk7Ci0KICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5jcHAKaW5kZXggZDYxMWJjMWIyMjUxZmY4ZjA4ODQ0ZjY4ZDQyNGZiOWRjOTY2ODJmNC4u
ZmQ3N2Q3YmEwNDNlOWE3Y2Q3MmZmOTZlODU2OGZiOWVjOTgzZjdjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0yLDcgKzIsNyBAQAog
ICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAg
ICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAg
ICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAg
ICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1MRGF0
YUxpc3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKQEAg
LTQxMiwxNCArNDEzLDEyIEBAIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6bWF0Y2hlc0lu
dmFsaWRQc2V1ZG9DbGFzcygpIGNvbnN0CiBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNv
bXB1dGVXaWxsVmFsaWRhdGUoKSBjb25zdAogewogICAgIGlmIChtX2RhdGFMaXN0QW5jZXN0b3JT
dGF0ZSA9PSBVbmtub3duKSB7Ci0gICAgICAgIGZvciAoQ29udGFpbmVyTm9kZSogYW5jZXN0b3Ig
PSBwYXJlbnROb2RlKCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnROb2Rl
KCkpIHsKLSAgICAgICAgICAgIGlmIChhbmNlc3Rvci0+aGFzVGFnTmFtZShkYXRhbGlzdFRhZykp
IHsKLSAgICAgICAgICAgICAgICBtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9IEluc2lkZURhdGFM
aXN0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGlmIChtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9PSBVbmtub3duKQotICAgICAgICAg
ICAgbV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUgPSBOb3RJbnNpZGVEYXRhTGlzdDsKKyNpZiBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICAgICAgbV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUgPSBh
bmNlc3RvcnNPZlR5cGU8SFRNTERhdGFMaXN0RWxlbWVudD4oKnRoaXMpLmZpcnN0KCkKKyAgICAg
ICAgICAgID8gSW5zaWRlRGF0YUxpc3QgOiBOb3RJbnNpZGVEYXRhTGlzdDsKKyNlbHNlCisgICAg
ICAgIG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlID0gTm90SW5zaWRlRGF0YUxpc3Q7CisjZW5kaWYK
ICAgICB9CiAgICAgcmV0dXJuIG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlID09IE5vdEluc2lkZURh
dGFMaXN0ICYmICFpc0Rpc2FibGVkT3JSZWFkT25seSgpOwogfQpAQCAtNjQ1LDE1ICs2NDQsNiBA
QCBBdXRvY2FwaXRhbGl6ZVR5cGUgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXV0b2NhcGl0YWxp
emVUeXBlKCkgY29uc3QKIAogI2VuZGlmCiAKLUhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OmVuY2xvc2luZ0Zvcm1Db250cm9sRWxlbWVudChOb2RlKiBub2Rl
KQotewotICAgIGZvciAoOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAg
ICAgIGlmIChpczxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Pigqbm9kZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudD4obm9kZSk7Ci0gICAgfQotICAg
IHJldHVybiBudWxscHRyOwotfQotCiBTdHJpbmcgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXV0
b2NvbXBsZXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gYXV0b2ZpbGxEYXRhKCkuaWRsRXhwb3Nl
ZFZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApp
bmRleCA2MTM0MGJmYTczYTNhOTY2YmE2MzdhZDQ0ZjU2Y2JkOGZjZmM5NmYwLi4zYWRiMzExYzdh
NjFkNzhkODBiOTkwYTE1NjllNjgxZDBmNjUzMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMTE2LDggKzExNiw2IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc0F1dG9mb2N1c2VkKCkgeyByZXR1cm4gbV9oYXNBdXRvZm9jdXNlZDsgfQogICAg
IHZvaWQgc2V0QXV0b2ZvY3VzZWQoKSB7IG1faGFzQXV0b2ZvY3VzZWQgPSB0cnVlOyB9CiAKLSAg
ICBzdGF0aWMgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZW5jbG9zaW5nRm9ybUNvbnRyb2xFbGVt
ZW50KE5vZGUqKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdXRvY29tcGxldGUoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1dG9jb21wbGV0ZShjb25zdCBTdHJp
bmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmNwcAppbmRleCBhMmIwMGU4ZjgxNmRhMWMyMjFiMWMzNjZlYTZlNjg5YzNiMWM2OGI5
Li44NGExY2I3OWUzNjAxNDNlYzNkNDgyOWM2NTc1NzhjODI4MzdkMGU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcApAQCAtNDAs
NyArNDAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKTsKIAogSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb246OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIG93
bmVyTm9kZSkKLSAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxGb3JtQ29udHJvbHM+Ojp0cmF2ZXJzYWxUeXBl
Pihvd25lck5vZGUsIEZvcm1Db250cm9scykKKyAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uKG93
bmVyTm9kZSwgRm9ybUNvbnRyb2xzKQogICAgICwgbV9jYWNoZWRFbGVtZW50KG51bGxwdHIpCiAg
ICAgLCBtX2NhY2hlZEVsZW1lbnRPZmZzZXRJbkFycmF5KDApCiB7CkBAIC0xMTEsNyArMTExLDcg
QEAgSFRNTEVsZW1lbnQqIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpjdXN0b21FbGVtZW50
QWZ0ZXIoRWxlbWVudCogY3VycmVudCkgY28KIAogSFRNTEZvcm1FbGVtZW50JiBIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbjo6b3duZXJOb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG93bmNh
c3Q8SFRNTEZvcm1FbGVtZW50PihDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8Rm9ybUNvbnRyb2xzPjo6dHJhdmVyc2Fs
VHlwZT46Om93bmVyTm9kZSgpKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50
PihDYWNoZWRIVE1MQ29sbGVjdGlvbjo6b3duZXJOb2RlKCkpOwogfQogCiB2b2lkIEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0CkBAIC0x
NTgsNyArMTU4LDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFt
ZWRFbGVtZW50Q2FjaGUoKSBjb25zdAogCiB2b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
OjppbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAg
Q2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24sIENvbGxlY3Rp
b25UeXBlVHJhaXRzPEZvcm1Db250cm9scz46OnRyYXZlcnNhbFR5cGU+OjppbnZhbGlkYXRlQ2Fj
aGVGb3JEb2N1bWVudChkb2N1bWVudCk7CisgICAgQ2FjaGVkSFRNTENvbGxlY3Rpb246OmludmFs
aWRhdGVDYWNoZUZvckRvY3VtZW50KGRvY3VtZW50KTsKICAgICBtX2NhY2hlZEVsZW1lbnQgPSBu
dWxscHRyOwogICAgIG1fY2FjaGVkRWxlbWVudE9mZnNldEluQXJyYXkgPSAwOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCmluZGV4IDc3
NGU1NGY1NjVjYTAxNDlkNGJjNjE4OWU2ZGYzZTYwZDA3OTNiMzEuLjkwMjczMGVmNTM2NmY1OTFj
NDhiNmU1OTMwMzFjYzE2Yzc5N2RmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKIAog
aW5saW5lIEhUTUxFbGVtZW50KiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6aXRlbSh1bnNp
Z25lZCBvZmZzZXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxFbGVtZW50PihD
YWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiwgQ29sbGVjdGlv
blR5cGVUcmFpdHM8Rm9ybUNvbnRyb2xzPjo6dHJhdmVyc2FsVHlwZT46Oml0ZW0ob2Zmc2V0KSk7
CisgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxFbGVtZW50PihDYWNoZWRIVE1MQ29sbGVjdGlvbjo6
aXRlbShvZmZzZXQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbAppbmRleCA0M2M4
MzU5OThiNDAwNTllMzMyN2NlNmQ1OWUwZjgyZTZmZGQxODIzLi40ZDgxZmZkMDM0NTc0NzdjYmEy
NGQyZDMzZGJiOTMxYjQ4YjM1ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbApAQCAtMjIsNSArMjIsNSBAQAogICAgIEdlbmVy
YXRlSXNSZWFjaGFibGU9SW1wbE93bmVyTm9kZVJvb3QsCiBdIGludGVyZmFjZSBIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbiA6IEhUTUxDb2xsZWN0aW9uIHsKICAgICBnZXR0ZXIgSFRNTEVsZW1l
bnQ/ICh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbSW1wbGVtZW50ZWRBcz1uYW1lZEl0ZW1P
ckl0ZW1zXSBnZXR0ZXIgKFJhZGlvTm9kZUxpc3Qgb3IgRWxlbWVudCk/IG5hbWVkSXRlbShET01T
dHJpbmcgbmFtZSk7IC8vIHNoYWRvd3MgaW5oZXJpdGVkIG5hbWVkSXRlbSgpCisgICAgW0ltcGxl
bWVudGVkQXM9bmFtZWRJdGVtT3JJdGVtc10gZ2V0dGVyIChSYWRpb05vZGVMaXN0IG9yIEVsZW1l
bnQpPyBuYW1lZEl0ZW0oW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBET01TdHJpbmcgbmFt
ZSk7IC8vIHNoYWRvd3MgaW5oZXJpdGVkIG5hbWVkSXRlbSgpCiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IGU3ZTQxNGM4N2RjMjQ4OGM1ODY2ZTM1ZjJiZWZk
MzcxYmVjOWIxNjAuLjJkMDkzZWZjMDc5YjgyZWUxN2ZjZjRkZDBjOWZhYjNmOTczYmM3NjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTUwOSwxNCArNTA5LDEz
IEBAIHVuc2lnbmVkIEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleChGb3JtQXNzb2Np
YXRlZEVsZW1lbnQqIGFzc29jaWF0ZWRFbGVtCiAgICAgaWYgKCFhc3NvY2lhdGVkSFRNTEVsZW1l
bnQuaXNEZXNjZW5kYW50T2YoKnRoaXMpKQogICAgICAgICByZXR1cm4gY3VycmVudEFzc29jaWF0
ZWRFbGVtZW50c0FmdGVySW5kZXg7CiAKKyAgICBhdXRvIGRlc2NlbmRhbnRzID0gZGVzY2VuZGFu
dHNPZlR5cGU8SFRNTEVsZW1lbnQ+KCp0aGlzKTsKKwogICAgIC8vIENoZWNrIGZvciB0aGUgc3Bl
Y2lhbCBjYXNlIHdoZXJlIHRoaXMgZWxlbWVudCBpcyB0aGUgdmVyeSBsYXN0IHRoaW5nIGluCiAg
ICAgLy8gdGhlIGZvcm0ncyB0cmVlIG9mIGNoaWxkcmVuOyB3ZSBkb24ndCB3YW50IHRvIHdhbGsg
dGhlIGVudGlyZSB0cmVlIGluIHRoYXQKICAgICAvLyBjb21tb24gY2FzZSB0aGF0IG9jY3VycyBk
dXJpbmcgcGFyc2luZzsgaW5zdGVhZCB3ZSdsbCBqdXN0IHJldHVybiBhIHZhbHVlCiAgICAgLy8g
dGhhdCBzYXlzICJhZGQgdGhpcyBmb3JtIGVsZW1lbnQgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXki
LgotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBkZXNjZW5kYW50c09mVHlwZTxIVE1MRWxlbWVudD4o
KnRoaXMpOwotICAgIGF1dG8gaXQgPSBkZXNjZW5kYW50cy5iZWdpbkF0KGFzc29jaWF0ZWRIVE1M
RWxlbWVudCk7Ci0gICAgYXV0byBlbmQgPSBkZXNjZW5kYW50cy5lbmQoKTsKLSAgICBpZiAoKytp
dCA9PSBlbmQpCisgICAgaWYgKCErK2Rlc2NlbmRhbnRzLmJlZ2luQXQoYXNzb2NpYXRlZEhUTUxF
bGVtZW50KSkKICAgICAgICAgcmV0dXJuIGN1cnJlbnRBc3NvY2lhdGVkRWxlbWVudHNBZnRlcklu
ZGV4OwogCiAgICAgdW5zaWduZWQgaSA9IG1fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXg7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAppbmRleCA4M2Fj
NjgwZDkwNDg3NTcxNTBiNWI2ZWIzNmI2NGQ3ODhmMGViYzcwLi5lNmFlNmY2OGQ4Nzk4NWFmOWZm
NTRlYjVkNjc1MzNhNWI1YWIxZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZVNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
U2V0RWxlbWVudC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5o
IgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJvZHlFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRnJhbWVF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApvbGQgbW9kZSAxMDA3NTUKbmV3
IG1vZGUgMTAwNjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRl
eCBmNTczY2ExNDA2ODVjZDI2MDIwOWNkNjE5YzhhOTgwNDllY2M1MTk0Li41ZDA4ZTllNDk0NWUy
ZDkzY2RiOGRjYTIwNWZjMDMzMWNiZWZmOGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFy
cyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2
aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxs
ZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkg
UHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVs
IFdlaW5pZyAoc2FtQHdlYmtpdC5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTIxMDQsNiArMjEwNCw3IEBAIFJlbmRlclN0eWxl
IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkKIH0KIAogI2lmIEVOQUJMRShEQVRFX0FORF9USU1FX0lOUFVUX1RZUEVTKQorCiBi
b29sIEhUTUxJbnB1dEVsZW1lbnQ6OnNldHVwRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyhEYXRl
VGltZUNob29zZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGlmICghZG9jdW1lbnQo
KS52aWV3KCkpCkBAIC0yMTM2LDIwICsyMTM3LDI0IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6
c2V0dXBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzKERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMm
CiAgICAgICAgIHBhcmFtZXRlcnMuYW5jaG9yUmVjdEluUm9vdFZpZXcgPSBJbnRSZWN0KCk7CiAg
ICAgcGFyYW1ldGVycy5jdXJyZW50VmFsdWUgPSB2YWx1ZSgpOwogICAgIHBhcmFtZXRlcnMuaXNB
bmNob3JFbGVtZW50UlRMID0gY29tcHV0ZWRTdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBUZXh0RGly
ZWN0aW9uOjpSVEw7CisKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICBpZiAoYXV0
byBkYXRhTGlzdCA9IHRoaXMtPmRhdGFMaXN0KCkpIHsKLSAgICAgICAgUmVmPEhUTUxDb2xsZWN0
aW9uPiBvcHRpb25zID0gZGF0YUxpc3QtPm9wdGlvbnMoKTsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBvcHRpb24gPSBkb3duY2FzdDxIVE1M
T3B0aW9uRWxlbWVudD4ob3B0aW9ucy0+aXRlbShpKSk7ICsraSkgewotICAgICAgICAgICAgaWYg
KCFpc1ZhbGlkVmFsdWUob3B0aW9uLT52YWx1ZSgpKSkKKyAgICAgICAgZm9yIChhdXRvJiBvcHRp
b24gOiBkYXRhTGlzdC0+c3VnZ2VzdGlvbnMoKSkgeworICAgICAgICAgICAgYXV0byBsYWJlbCA9
IG9wdGlvbi5sYWJlbCgpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IG9wdGlvbi52YWx1ZSgp
OworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkVmFsdWUodmFsdWUpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgcGFyYW1ldGVycy5zdWdnZXN0aW9uVmFsdWVzLmFwcGVu
ZChzYW5pdGl6ZVZhbHVlKG9wdGlvbi0+dmFsdWUoKSkpOwotICAgICAgICAgICAgcGFyYW1ldGVy
cy5sb2NhbGl6ZWRTdWdnZXN0aW9uVmFsdWVzLmFwcGVuZChsb2NhbGl6ZVZhbHVlKG9wdGlvbi0+
dmFsdWUoKSkpOwotICAgICAgICAgICAgcGFyYW1ldGVycy5zdWdnZXN0aW9uTGFiZWxzLmFwcGVu
ZChvcHRpb24tPnZhbHVlKCkgPT0gb3B0aW9uLT5sYWJlbCgpID8gU3RyaW5nKCkgOiBvcHRpb24t
PmxhYmVsKCkpOworICAgICAgICAgICAgcGFyYW1ldGVycy5zdWdnZXN0aW9uVmFsdWVzLmFwcGVu
ZChzYW5pdGl6ZVZhbHVlKHZhbHVlKSk7CisgICAgICAgICAgICBwYXJhbWV0ZXJzLmxvY2FsaXpl
ZFN1Z2dlc3Rpb25WYWx1ZXMuYXBwZW5kKGxvY2FsaXplVmFsdWUodmFsdWUpKTsKKyAgICAgICAg
ICAgIHBhcmFtZXRlcnMuc3VnZ2VzdGlvbkxhYmVscy5hcHBlbmQodmFsdWUgPT0gbGFiZWwgPyBT
dHJpbmcoKSA6IGxhYmVsKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgorCiAgICAgcmV0dXJu
IHRydWU7CiB9CisKICNlbmRpZgogCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmNhcHNMb2NrU3Rh
dGVNYXlIYXZlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAppbmRleCA5YWM5NzNmY2NkOGEyOTFiNDhmYmFjYTllMGFmMjMxZjRjMDIwZjMxLi5kZjc1MGYx
ZjlhNDZiM2UzY2RiYzc1NjQ4Njg0N2MzMGFkNmY3MzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTQ2NTAsNyArNDY1MCw3IEBAIFVSTCBIVE1MTWVkaWFF
bGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQoQ29udGVudFR5cGUqIGNvbnRlbnRUeXBlLCBT
dHJpbmcqIGtlCiAgICAgLy8gZWFjaCBzdGlsbCBpcyBhIGNoaWxkIG9mIHRoaXMgbWVkaWEgZWxl
bWVudCBiZWZvcmUgdXNpbmcuCiAgICAgVmVjdG9yPFJlZjxIVE1MU291cmNlRWxlbWVudD4+IHBv
dGVudGlhbFNvdXJjZU5vZGVzOwogICAgIGF1dG8gc291cmNlcyA9IGNoaWxkcmVuT2ZUeXBlPEhU
TUxTb3VyY2VFbGVtZW50PigqdGhpcyk7Ci0gICAgZm9yIChhdXRvIG5leHQgPSBtX25leHRDaGls
ZE5vZGVUb0NvbnNpZGVyID8gc291cmNlcy5iZWdpbkF0KCptX25leHRDaGlsZE5vZGVUb0NvbnNp
ZGVyKSA6IHNvdXJjZXMuYmVnaW4oKSwgZW5kID0gc291cmNlcy5lbmQoKTsgbmV4dCAhPSBlbmQ7
ICsrbmV4dCkKKyAgICBmb3IgKGF1dG8gbmV4dCA9IG1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXIg
PyBzb3VyY2VzLmJlZ2luQXQoKm1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXIpIDogc291cmNlcy5i
ZWdpbigpOyBuZXh0OyArK25leHQpCiAgICAgICAgIHBvdGVudGlhbFNvdXJjZU5vZGVzLmFwcGVu
ZCgqbmV4dCk7CiAKICAgICBmb3IgKGF1dG8mIHNvdXJjZSA6IHBvdGVudGlhbFNvdXJjZU5vZGVz
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAppbmRleCA5
ZThjZmZkYjkxYTUxMDkwNDI4NDU5ZWZmZTg2NWE0OGUwN2Y0ODA4Li42NzY4ZmUxMmExZTVlNzIy
MGM1MzY5MGZlNmY5NzM1N2NhZTdjZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dEdyb3VwRWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkg
TGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBL
b2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11
ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4
ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMTA5LDE0ICsx
MDksNyBAQCBTdHJpbmcgSFRNTE9wdEdyb3VwRWxlbWVudDo6Z3JvdXBMYWJlbFRleHQoKSBjb25z
dAogICAgIAogSFRNTFNlbGVjdEVsZW1lbnQqIEhUTUxPcHRHcm91cEVsZW1lbnQ6Om93bmVyU2Vs
ZWN0RWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHNlbGVjdCA9
IHBhcmVudE5vZGUoKTsKLSAgICB3aGlsZSAoc2VsZWN0ICYmICFpczxIVE1MU2VsZWN0RWxlbWVu
dD4oKnNlbGVjdCkpCi0gICAgICAgIHNlbGVjdCA9IHNlbGVjdC0+cGFyZW50Tm9kZSgpOwotICAg
IAotICAgIGlmICghc2VsZWN0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBy
ZXR1cm4gZG93bmNhc3Q8SFRNTFNlbGVjdEVsZW1lbnQ+KHNlbGVjdC5nZXQoKSk7CisgICAgcmV0
dXJuIGNvbnN0X2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPihhbmNlc3RvcnNPZlR5cGU8SFRNTFNl
bGVjdEVsZW1lbnQ+KCp0aGlzKS5maXJzdCgpKTsKIH0KIAogdm9pZCBIVE1MT3B0R3JvdXBFbGVt
ZW50OjphY2Nlc3NLZXlBY3Rpb24oYm9vbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
RWxlbWVudC5jcHAKaW5kZXggYzNkZDMwZDVkYzYyYmY4MzE3MDllNTcwMDQ2ODhkNGE4OGIzZTJh
Ni4uM2MwMWU2OTVhZDEwMjY3N2FhZmYwMmRiMGYyMTFkYjg4ZjY5Mjg0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTMsNyArMyw3IEBACiAgKiAgICAg
ICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAg
ICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgKiAgICAgICAg
ICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQotICogQ29weXJp
Z2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgpAQCAtMTY2LDggKzE2Niw4IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpCiB7
CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgaWYgKG5hbWUgPT0gdmFsdWVBdHRy
KSB7Ci0gICAgICAgIGlmIChSZWZQdHI8SFRNTERhdGFMaXN0RWxlbWVudD4gZGF0YUxpc3QgPSBv
d25lckRhdGFMaXN0RWxlbWVudCgpKQotICAgICAgICAgICAgZGF0YUxpc3QtPm9wdGlvbkVsZW1l
bnRDaGlsZHJlbkNoYW5nZWQoKTsKKyAgICAgICAgZm9yIChhdXRvJiBkYXRhTGlzdCA6IGFuY2Vz
dG9yc09mVHlwZTxIVE1MRGF0YUxpc3RFbGVtZW50PigqdGhpcykpCisgICAgICAgICAgICBkYXRh
TGlzdC5vcHRpb25FbGVtZW50Q2hpbGRyZW5DaGFuZ2VkKCk7CiAgICAgfSBlbHNlCiAjZW5kaWYK
ICAgICBpZiAobmFtZSA9PSBkaXNhYmxlZEF0dHIpIHsKQEAgLTIzOCwzOSArMjM4LDE3IEBAIHZv
aWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnNldFNlbGVjdGVkU3RhdGUoYm9vbCBzZWxlY3RlZCkKIHZv
aWQgSFRNTE9wdGlvbkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYg
Y2hhbmdlKQogewogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotICAgIGlmIChSZWZQdHI8
SFRNTERhdGFMaXN0RWxlbWVudD4gZGF0YUxpc3QgPSBvd25lckRhdGFMaXN0RWxlbWVudCgpKQot
ICAgICAgICBkYXRhTGlzdC0+b3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOwotICAgIGVs
c2UKKyAgICBmb3IgKGF1dG8mIGRhdGFMaXN0IDogYW5jZXN0b3JzT2ZUeXBlPEhUTUxEYXRhTGlz
dEVsZW1lbnQ+KCp0aGlzKSkKKyAgICAgICAgZGF0YUxpc3Qub3B0aW9uRWxlbWVudENoaWxkcmVu
Q2hhbmdlZCgpOwogI2VuZGlmCiAgICAgaWYgKFJlZlB0cjxIVE1MU2VsZWN0RWxlbWVudD4gc2Vs
ZWN0ID0gb3duZXJTZWxlY3RFbGVtZW50KCkpCiAgICAgICAgIHNlbGVjdC0+b3B0aW9uRWxlbWVu
dENoaWxkcmVuQ2hhbmdlZCgpOwogICAgIEhUTUxFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hh
bmdlKTsKIH0KIAotI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotSFRNTERhdGFMaXN0RWxl
bWVudCogSFRNTE9wdGlvbkVsZW1lbnQ6Om93bmVyRGF0YUxpc3RFbGVtZW50KCkgY29uc3QKLXsK
LSAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gZGF0YWxpc3QgPSBwYXJlbnROb2RlKCk7Ci0gICAg
d2hpbGUgKGRhdGFsaXN0ICYmICFpczxIVE1MRGF0YUxpc3RFbGVtZW50PigqZGF0YWxpc3QpKQot
ICAgICAgICBkYXRhbGlzdCA9IGRhdGFsaXN0LT5wYXJlbnROb2RlKCk7Ci0KLSAgICBpZiAoIWRh
dGFsaXN0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBkb3duY2FzdDxI
VE1MRGF0YUxpc3RFbGVtZW50PihkYXRhbGlzdC5nZXQoKSk7Ci19Ci0jZW5kaWYKLQogSFRNTFNl
bGVjdEVsZW1lbnQqIEhUTUxPcHRpb25FbGVtZW50Ojpvd25lclNlbGVjdEVsZW1lbnQoKSBjb25z
dAogewotICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBzZWxlY3QgPSBwYXJlbnROb2RlKCk7Ci0g
ICAgd2hpbGUgKHNlbGVjdCAmJiAhaXM8SFRNTFNlbGVjdEVsZW1lbnQ+KCpzZWxlY3QpKQotICAg
ICAgICBzZWxlY3QgPSBzZWxlY3QtPnBhcmVudE5vZGUoKTsKLQotICAgIGlmICghc2VsZWN0KQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBkb3duY2FzdDxIVE1MU2VsZWN0
RWxlbWVudD4oc2VsZWN0LmdldCgpKTsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxIVE1MU2VsZWN0
RWxlbWVudCo+KGFuY2VzdG9yc09mVHlwZTxIVE1MU2VsZWN0RWxlbWVudD4oKnRoaXMpLmZpcnN0
KCkpOwogfQogCiBTdHJpbmcgSFRNTE9wdGlvbkVsZW1lbnQ6OmxhYmVsKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAppbmRleCBmMGQ5NGM4YTZiNWYzMDgzMzRl
YWExMWRhOWU0MDIxYjVjMGU1N2U2Li45MWM1YWJjN2UwMTdjMTFmYTEzMmZkMzFmMDFiZTFlMzI0
ZTI2YjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCkBAIC0yLDcg
KzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcp
CiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcp
CiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMTAsIDIwMTEsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjgsNyArMjgsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxEYXRhTGlzdEVsZW1lbnQ7CiBj
bGFzcyBIVE1MU2VsZWN0RWxlbWVudDsKIAogY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQgZmluYWwg
OiBwdWJsaWMgSFRNTEVsZW1lbnQgewpAQCAtNDksOSArNDgsNiBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBzZWxlY3RlZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U2VsZWN0ZWQoYm9vbCk7CiAKLSNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICBXRUJD
T1JFX0VYUE9SVCBIVE1MRGF0YUxpc3RFbGVtZW50KiBvd25lckRhdGFMaXN0RWxlbWVudCgpIGNv
bnN0OwotI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgSFRNTFNlbGVjdEVsZW1lbnQqIG93bmVy
U2VsZWN0RWxlbWVudCgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxhYmVs
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29s
bGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5j
cHAKaW5kZXggYTYwNzY2YmQ3ODU4NTk4NmEyMjlmZTg2ZmI0MmM2OGFmZDkxYmE0OS4uMzBiYmNm
MzY5ODQyNzYxZGQwYjUzNDQxNzhiNDcwMTA2MzU1NTIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcApAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uKTsKIAogSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb24o
SFRNTFNlbGVjdEVsZW1lbnQmIHNlbGVjdCkKLSAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPEhU
TUxPcHRpb25zQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8U2VsZWN0T3B0aW9ucz46
OnRyYXZlcnNhbFR5cGU+KHNlbGVjdCwgU2VsZWN0T3B0aW9ucykKKyAgICA6IENhY2hlZEhUTUxD
b2xsZWN0aW9uKHNlbGVjdCwgU2VsZWN0T3B0aW9ucykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsCmluZGV4IDZlOWZhNGQwZTE2MTYwZGEy
YjdjYWI4MGQwMmE5N2FiZDgwNjNiMDUuLmYxYzQ3N2U0ODY4ZTBmZTQwNTlmZGZjNjA1MWJlYzNh
MWYyYzVjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlv
bi5pZGwKQEAgLTMyLDUgKzMyLDUgQEAKIAogICAgIC8vIEZJWE1FOiBDYW4gdGhlc2UganVzdCBi
ZSBpbmhlcml0ZWQgZnJvbSBIVE1MQ29sbGVjdGlvbiBsaWtlIGluIHRoZSBzcGVjPwogICAgIGdl
dHRlciBIVE1MT3B0aW9uRWxlbWVudD8gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBn
ZXR0ZXIgSFRNTE9wdGlvbkVsZW1lbnQ/IG5hbWVkSXRlbShET01TdHJpbmcgbmFtZSk7CisgICAg
Z2V0dGVyIEhUTUxPcHRpb25FbGVtZW50PyBuYW1lZEl0ZW0oW1JlcXVpcmVzRXhpc3RpbmdBdG9t
U3RyaW5nXSBET01TdHJpbmcgbmFtZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggYjE3NGIxZjI4ZmI2ZTE0ZjdjNzJmMTdiYjNk
ZGFiZWNjNDEzNWZiMC4uNjJmYWI3ODE0NjJjZTJlOWZhZmZmYzBhNzYzODNmM2FlYjU4MTAyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBA
IC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29t
bW9uVk0uaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKKyNpbmNsdWRlICJF
bGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgpAQCAtNTAsNyArNTEsNiBAQAog
I2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdHlsZVRyZWVSZXNvbHZlci5oIgog
I2luY2x1ZGUgIlN1YmZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9DYXRjaFNjb3BlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuaWRsCmluZGV4IDYxZWU1OTRlNjAzNzc5MGVhZGZjOGFmZDFjMTVlY2M0NmYzOGM2
YzkuLmQzYWVkYTkwMzU1MzhkOTZmMjJiZTFhNTQwZTczNjEwMzllZWVjMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCkBAIC0zNiw3ICszNiw3IEBACiAgICAg
LyogW1NhbWVPYmplY3RdICovIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MT3B0aW9uc0NvbGxlY3Rp
b24gb3B0aW9uczsKICAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxl
bmd0aDsKICAgICBnZXR0ZXIgSFRNTE9wdGlvbkVsZW1lbnQ/IGl0ZW0odW5zaWduZWQgbG9uZyBp
bmRleCk7IC8vIEZJWE1FOiBUaGUgc3BlYyBoYXMgdGhpcyByZXR1cm5pbmcgRWxlbWVudD8uCi0g
ICAgSFRNTE9wdGlvbkVsZW1lbnQ/IG5hbWVkSXRlbShET01TdHJpbmcgbmFtZSk7CisgICAgSFRN
TE9wdGlvbkVsZW1lbnQ/IG5hbWVkSXRlbShbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIERP
TVN0cmluZyBuYW1lKTsKICAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lk
IGFkZCgoSFRNTE9wdGlvbkVsZW1lbnQgb3IgSFRNTE9wdEdyb3VwRWxlbWVudCkgZWxlbWVudCwg
b3B0aW9uYWwgKEhUTUxFbGVtZW50IG9yIGxvbmcpPyBiZWZvcmUgPSBudWxsKTsKICAgICBbQ0VS
ZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbW92ZSgpOyAvLyBDaGlsZE5vZGUg
b3ZlcmxvYWQKICAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgcmVtb3ZlKGxvbmcgaW5kZXgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAppbmRleCBmYmY4Zjcz
M2U0ODAwMDQ5MWVhZDg2MTY3M2I4NjMxOTIzZjk5MTg2Li5hNjAwMzhmZTk0ZjI5OGIwOGVhNGFi
NmVkYWNkN2QxNTU3YWE4NzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUNlbGxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNl
bGxFbGVtZW50LmNwcApAQCAtMTMxLDkgKzEzMSw5IEBAIHZvaWQgSFRNTFRhYmxlQ2VsbEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21T
CiAKIGNvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmFkZGl0aW9u
YWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKFJlZlB0cjxI
VE1MVGFibGVFbGVtZW50PiB0YWJsZSA9IGZpbmRQYXJlbnRUYWJsZSgpKQorICAgIGlmIChhdXRv
IHRhYmxlID0gZmluZFBhcmVudFRhYmxlKCkpCiAgICAgICAgIHJldHVybiB0YWJsZS0+YWRkaXRp
b25hbENlbGxTdHlsZSgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQog
CiBib29sIEhUTUxUYWJsZUNlbGxFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1
dGUmIGF0dHJpYnV0ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlQ29sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVs
ZW1lbnQuY3BwCmluZGV4IDcyOGI1ZjNkMmI1NTIzYjA0YjM5OWYyY2M0YjU1YWE0ZjhiMWZjNzQu
LmY0ZDQ0NzU4MTFlOGE0MGNhMzJhNjdiY2Y2YjIxNmMyNTNhN2U3YTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcApAQCAtOTIsNyArOTIsNyBAQCBjb25z
dCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUNvbEVsZW1lbnQ6OmFkZGl0aW9uYWxQcmVzZW50
YXRpb25BdHRyaWJ1dGVTdHlsZQogewogICAgIGlmICghaGFzVGFnTmFtZShjb2xncm91cFRhZykp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChSZWZQdHI8SFRNTFRhYmxlRWxlbWVu
dD4gdGFibGUgPSBmaW5kUGFyZW50VGFibGUoKSkKKyAgICBpZiAoYXV0byB0YWJsZSA9IGZpbmRQ
YXJlbnRUYWJsZSgpKQogICAgICAgICByZXR1cm4gdGFibGUtPmFkZGl0aW9uYWxHcm91cFN0eWxl
KGZhbHNlKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwCmluZGV4IDc2N2EzZTM4YWY0ODJkZDkyYjE0OWM4ZjBlZThiODY2ZTdk
NGI3YmYuLmE1ZjgwZmUwYzkxZjg4ZDk2MGFiN2ZlN2FmMDY4YTQ4Yjg5NjQ1ZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcApAQCAtNDczLDcgKzQ3Myw3IEBAIEhU
TUxUYWJsZUVsZW1lbnQ6OkNlbGxCb3JkZXJzIEhUTUxUYWJsZUVsZW1lbnQ6OmNlbGxCb3JkZXJz
KCkgY29uc3QKICAgICByZXR1cm4gTm9Cb3JkZXJzOwogfQogCi1SZWY8U3R5bGVQcm9wZXJ0aWVz
PiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQorUmVmPFN0eWxlUHJv
cGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCkgY29uc3QK
IHsKICAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAK
QEAgLTUxNCw3ICs1MTQsNyBAQCBSZWY8U3R5bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50
OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQogICAgIHJldHVybiBzdHlsZTsKIH0KIAotY29uc3Qg
U3R5bGVQcm9wZXJ0aWVzKiBIVE1MVGFibGVFbGVtZW50OjphZGRpdGlvbmFsQ2VsbFN0eWxlKCkK
K2NvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlRWxlbWVudDo6YWRkaXRpb25hbENlbGxT
dHlsZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NoYXJlZENlbGxTdHlsZSkKICAgICAgICAgbV9z
aGFyZWRDZWxsU3R5bGUgPSBjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKTsKQEAgLTUzOCwxMSArNTM4
LDEwIEBAIHN0YXRpYyBTdHlsZVByb3BlcnRpZXMqIGxlYWtHcm91cEJvcmRlclN0eWxlKGludCBy
b3dzKQogICAgIHJldHVybiAmc3R5bGUubGVha1JlZigpOwogfQogCi1jb25zdCBTdHlsZVByb3Bl
cnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxHcm91cFN0eWxlKGJvb2wgcm93cykK
K2NvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlRWxlbWVudDo6YWRkaXRpb25hbEdyb3Vw
U3R5bGUoYm9vbCByb3dzKSBjb25zdAogewogICAgIGlmIChtX3J1bGVzQXR0ciAhPSBHcm91cHNS
dWxlcykKLSAgICAgICAgcmV0dXJuIDA7Ci0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
aWYgKHJvd3MpIHsKICAgICAgICAgc3RhdGljIFN0eWxlUHJvcGVydGllcyogcm93Qm9yZGVyU3R5
bGUgPSBsZWFrR3JvdXBCb3JkZXJTdHlsZSh0cnVlKTsKICAgICAgICAgcmV0dXJuIHJvd0JvcmRl
clN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAppbmRleCBiMzY1NDIw
OWJkYTg1Nzg4NWM2OTMxYzgxYjRlZTNmOTg2ZjM4NDE2Li4zNzU2ZGM2MTA3NWM0YmY3OTU3Zjkw
NzNiNzg3NWE1MmYyZTU2YjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQu
aApAQCAtNjUsOCArNjUsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgQXRvbVN0cmluZyYgcnVsZXMo
KSBjb25zdDsKICAgICBjb25zdCBBdG9tU3RyaW5nJiBzdW1tYXJ5KCkgY29uc3Q7CiAKLSAgICBj
b25zdCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0aW9uYWxDZWxsU3R5bGUoKTsKLSAgICBjb25zdCBT
dHlsZVByb3BlcnRpZXMqIGFkZGl0aW9uYWxHcm91cFN0eWxlKGJvb2wgcm93cyk7CisgICAgY29u
c3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRpdGlvbmFsQ2VsbFN0eWxlKCkgY29uc3Q7CisgICAgY29u
c3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRpdGlvbmFsR3JvdXBTdHlsZShib29sIHJvd3MpIGNvbnN0
OwogCiBwcml2YXRlOgogICAgIEhUTUxUYWJsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAKICAgICBDZWxsQm9yZGVy
cyBjZWxsQm9yZGVycygpIGNvbnN0OwogCi0gICAgUmVmPFN0eWxlUHJvcGVydGllcz4gY3JlYXRl
U2hhcmVkQ2VsbFN0eWxlKCk7CisgICAgUmVmPFN0eWxlUHJvcGVydGllcz4gY3JlYXRlU2hhcmVk
Q2VsbFN0eWxlKCkgY29uc3Q7CiAKICAgICBIVE1MVGFibGVTZWN0aW9uRWxlbWVudCogbGFzdEJv
ZHkoKSBjb25zdDsKIApAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9mcmFt
ZUF0dHIgeyBmYWxzZSB9OyAvLyBJbXBsaWVzIGEgdGhpbiBib3JkZXIgd2lkdGggaWYgbm8gYm9y
ZGVyIGlzIHNldCBhbmQgdGhlbiBhIGNlcnRhaW4gc2V0IG9mIHNvbGlkL2hpZGRlbiBib3JkZXJz
IGJhc2VkIG9mZiB0aGUgdmFsdWUuCiAgICAgVGFibGVSdWxlcyBtX3J1bGVzQXR0ciB7IFVuc2V0
UnVsZXMgfTsgLy8gSW1wbGllcyBhIHRoaW4gYm9yZGVyIHdpZHRoLCBhIGNvbGxhcHNpbmcgYm9y
ZGVyIG1vZGVsLCBhbmQgYWxsIGJvcmRlcnMgb24gdGhlIHRhYmxlIGJlY29taW5nIHNldCB0byBo
aWRkZW4gKGlmIGZyYW1lL2JvcmRlciBhcmUgcHJlc2VudCwgdG8gbm9uZSBvdGhlcndpc2UpLgog
ICAgIHVuc2lnbmVkIHNob3J0IG1fcGFkZGluZyB7IDEgfTsKLSAgICBSZWZQdHI8U3R5bGVQcm9w
ZXJ0aWVzPiBtX3NoYXJlZENlbGxTdHlsZTsKKyAgICBtdXRhYmxlIFJlZlB0cjxTdHlsZVByb3Bl
cnRpZXM+IG1fc2hhcmVkQ2VsbFN0eWxlOwogfTsKIAogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcAppbmRleCAzNTg3ODAxNjIxMGZj
YWFmZjYwOTBlNjk1Mzk0MTU1YzQ1NWFlYTdjLi4zNDliMDM1MTJhOGVjNTQwNTI0MWJiYTZmYzNk
NGE5ZmY3NDM2ZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBh
cnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVt
ZW50LmNwcApAQCAtNCw3ICs0LDcgQEAKICAqICAgICAgICAgICAoQykgMTk5OCBXYWxkbyBCYXN0
aWFuIChiYXN0aWFuQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgTGFycyBLbm9sbCAo
a25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29p
dmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiBB
cHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTg1LDEyICs4NSw5IEBAIHZvaWQg
SFRNTFRhYmxlUGFydEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROCiAgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSwgdmFsdWUsIHN0eWxlKTsKIH0KIAotUmVmUHRyPEhU
TUxUYWJsZUVsZW1lbnQ+IEhUTUxUYWJsZVBhcnRFbGVtZW50OjpmaW5kUGFyZW50VGFibGUoKSBj
b25zdAorUmVmUHRyPGNvbnN0IEhUTUxUYWJsZUVsZW1lbnQ+IEhUTUxUYWJsZVBhcnRFbGVtZW50
OjpmaW5kUGFyZW50VGFibGUoKSBjb25zdAogewotICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBw
YXJlbnQgPSBwYXJlbnROb2RlKCk7Ci0gICAgd2hpbGUgKHBhcmVudCAmJiAhaXM8SFRNTFRhYmxl
RWxlbWVudD4oKnBhcmVudCkpCi0gICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50Tm9kZSgp
OwotICAgIHJldHVybiBkb3duY2FzdDxIVE1MVGFibGVFbGVtZW50PihwYXJlbnQuZ2V0KCkpOwor
ICAgIHJldHVybiBhbmNlc3RvcnNPZlR5cGU8SFRNTFRhYmxlRWxlbWVudD4oKnRoaXMpLmZpcnN0
KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFy
dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuaApp
bmRleCBkM2JjZjUwYmFlMjFjMzU4Y2RlMjNmMzM2M2U1YzY5MmQ1NmYxMWU2Li4wNGY5NDcxYmFi
YTI4NzdmNzU0NTQwYzliMWE1ODA5NzI3YmViNTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVQYXJ0RWxlbWVudC5oCkBAIC00LDcgKzQsNyBAQAogICogICAgICAgICAgIChDKSAx
OTk4IFdhbGRvIEJhc3RpYW4gKGJhc3RpYW5Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5
OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRp
IEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0
LCAyMDA1LCAyMDA2LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtNDIsNyArNDIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBp
c1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
Jikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gZmluZFBhcmVudFRh
YmxlKCkgY29uc3Q7CisgICAgUmVmUHRyPGNvbnN0IEhUTUxUYWJsZUVsZW1lbnQ+IGZpbmRQYXJl
bnRUYWJsZSgpIGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcAppbmRleCA3YTY3Yjc3
M2FiMzk5ZWIzOTIzMDA4NDYwMjFlOWViYjA5YTI5MWFiLi4yM2VlY2RhMTU3NmM0YzNlYzc1NDBl
M2FhMDYxNmYzZjIwNTBlMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVJvd3NDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZVJvd3NDb2xsZWN0aW9uLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIEhUTUxUYWJsZVJvd0VsZW1l
bnQqIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpsYXN0Um93KEhUTUxUYWJsZUVsZW1lbnQmIHRh
YmxlKQogfQogCiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6SFRNTFRhYmxlUm93c0NvbGxlY3Rp
b24oSFRNTFRhYmxlRWxlbWVudCYgdGFibGUpCi0gICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbjxI
VE1MVGFibGVSb3dzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8VGFibGVSb3dzPjo6
dHJhdmVyc2FsVHlwZT4odGFibGUsIFRhYmxlUm93cykKKyAgICA6IENhY2hlZEhUTUxDb2xsZWN0
aW9uKHRhYmxlLCBUYWJsZVJvd3MpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKaW5kZXggZTUxNmE4MTg0ZDFmMGY4MzczY2QyMWE0
YTdhNDA5M2NmOWJjZjJmMS4uNDk5OWMxNThlNmJhZjk4ODJiYTVlMDVkMjZmM2RkYTM0MThiYzNk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5j
cHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJIVE1MVGFibGVTZWN0aW9uRWxlbWVudC5o
IgogCiAjaW5jbHVkZSAiR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAi
SFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1M
VGFibGVSb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgpAQCAtOTUs
NyArOTQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6ZGVs
ZXRlUm93KGludCBpbmRleCkKIGludCBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6bnVtUm93cygp
IGNvbnN0CiB7CiAgICAgYXV0byByb3dzID0gY2hpbGRyZW5PZlR5cGU8SFRNTFRhYmxlUm93RWxl
bWVudD4oKnRoaXMpOwotICAgIHJldHVybiBzdGQ6OmRpc3RhbmNlKHJvd3MuYmVnaW4oKSwgcm93
cy5lbmQoKSk7CisgICAgcmV0dXJuIHN0ZDo6ZGlzdGFuY2Uocm93cy5iZWdpbigpLCB7IH0pOwog
fQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Ojpyb3dzKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAKaW5kZXggOTljNTZlYmY1ZTA2ZDc2NmJlMjcwYmFjM2FhMjk2MmJiNTlkMzQ4MC4uYTdiYTQx
N2Q3ZDUxNzE0YzBlNTUyYzBkNTlhMDExYjUxNTFiMGM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBA
CiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAg
ICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAg
ICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHly
aWdodCAoQykgMjAwNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
ICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgpAQCAtNzY0LDM0ICs3NjQsMjQgQEAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQqIGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiAg
ICAgcmV0dXJuIGFuY2VzdG9yICYmIGFuY2VzdG9yLT5pc1RleHRGaWVsZCgpID8gZG93bmNhc3Q8
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGFuY2VzdG9yLmdldCgpKSA6IG51bGxwdHI7CiB9
CiAKLXN0YXRpYyBjb25zdCBFbGVtZW50KiBwYXJlbnRIVE1MRWxlbWVudChjb25zdCBFbGVtZW50
KiBlbGVtZW50KQotewotICAgIHdoaWxlIChlbGVtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50LT5wYXJlbnRFbGVtZW50KCk7Ci0gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQt
PmlzSFRNTEVsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwotICAgIH0KLSAg
ICByZXR1cm4gMDsKLX0KLQogU3RyaW5nIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaXJl
Y3Rpb25Gb3JGb3JtRGF0YSgpIGNvbnN0CiB7Ci0gICAgZm9yIChjb25zdCBFbGVtZW50KiBlbGVt
ZW50ID0gdGhpczsgZWxlbWVudDsgZWxlbWVudCA9IHBhcmVudEhUTUxFbGVtZW50KGVsZW1lbnQp
KSB7Ci0gICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIGRpckF0dHJpYnV0ZVZhbHVlID0gZWxlbWVu
dC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkaXJBdHRyKTsKLSAgICAgICAgaWYg
KGRpckF0dHJpYnV0ZVZhbHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpckF0dHJpYnV0ZVZhbHVl
LCAicnRsIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyQXR0cmlidXRlVmFs
dWUsICJsdHIiKSkKLSAgICAgICAgICAgIHJldHVybiBkaXJBdHRyaWJ1dGVWYWx1ZTsKLQotICAg
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyQXR0cmlidXRlVmFsdWUs
ICJhdXRvIikpIHsKLSAgICAgICAgICAgIGJvb2wgaXNBdXRvOwotICAgICAgICAgICAgVGV4dERp
cmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTEVsZW1lbnQqPihl
bGVtZW50KS0+ZGlyZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUoaXNBdXRvKTsKLSAg
ICAgICAgICAgIHJldHVybiB0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJUTCA/ICJy
dGwiIDogImx0ciI7CisgICAgYXV0byBkaXJlY3Rpb24gPSBbdGhpc10geworICAgICAgICBmb3Ig
KGF1dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEhUTUxFbGVtZW50PigqdGhpcykpIHsKKyAg
ICAgICAgICAgIGF1dG8mIHZhbHVlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKGRpckF0dHIpOworICAgICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHZhbHVlLCAicnRsIikpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rp
b246OlJUTDsKKyAgICAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2
YWx1ZSwgImx0ciIpKQorICAgICAgICAgICAgICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpMVFI7
CisgICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJh
dXRvIikpIHsKKyAgICAgICAgICAgICAgICBib29sIGlzQXV0bzsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZWxlbWVudC5kaXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShpc0F1dG8p
OworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQorICAgICAgICByZXR1cm4gVGV4dERp
cmVjdGlvbjo6TFRSOworICAgIH0oKTsKIAotICAgIHJldHVybiAibHRyIjsKKyAgICByZXR1cm4g
ZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/ICJsdHIiX3MgOiAicnRsIl9zOwogfQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0TWF4TGVu
Z3RoKGludCBtYXhMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVs
c05vZGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuY3BwCmlu
ZGV4IGQ0MTAxNzg2ZmIwMDVmMjY4N2IxOTBhZjM3MzFiY2Q1NTdkMjBlMGEuLjkxOWEyOGVkNjA5
M2ZkYmViMTFkMjkxNjA0NjQyODE2ZjFlZTExZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTGFiZWxzTm9kZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxz
Tm9kZUxpc3QuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMg
S25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlz
dG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVy
IChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDcsIDIwMDgsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEwIE5va2lhIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yNCw5
ICsyNCw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGFiZWxzTm9kZUxpc3Qu
aCIKIAotI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTGFiZWxFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTGFiZWxhYmxlRWxlbWVudC5oIgog
I2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAKQEAgLTM2LDExICszNiwxNiBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTGFiZWxzTm9kZUxpc3QpOwogCi1MYWJlbHNOb2Rl
TGlzdDo6TGFiZWxzTm9kZUxpc3QoTGFiZWxhYmxlRWxlbWVudCYgZm9yTm9kZSkKLSAgICA6IENh
Y2hlZExpdmVOb2RlTGlzdChmb3JOb2RlLCBJbnZhbGlkYXRlT25Gb3JUeXBlQXR0ckNoYW5nZSkK
K0xhYmVsc05vZGVMaXN0OjpMYWJlbHNOb2RlTGlzdChMYWJlbGFibGVFbGVtZW50JiBlbGVtZW50
KQorICAgIDogQ2FjaGVkTGl2ZU5vZGVMaXN0KGVsZW1lbnQsIEludmFsaWRhdGVPbkZvclR5cGVB
dHRyQ2hhbmdlKQogewogfQogCitSZWY8TGFiZWxzTm9kZUxpc3Q+IExhYmVsc05vZGVMaXN0Ojpj
cmVhdGUoTGFiZWxhYmxlRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyYpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTGFiZWxzTm9kZUxpc3QoZWxlbWVudCkpOworfQorCiBM
YWJlbHNOb2RlTGlzdDo6fkxhYmVsc05vZGVMaXN0KCkKIHsKICAgICBvd25lck5vZGUoKS5ub2Rl
TGlzdHMoKS0+cmVtb3ZlQ2FjaGVXaXRoQXRvbU5hbWUoKnRoaXMsIHN0YXJBdG9tKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oCmluZGV4IGY1MzlkNzliMGNhYTA1MDAzMDQ4ODhk
YzQ2MTc3MmFmN2RiMTYyODIuLjgwZDk3N2ZhY2Q3NjJkYWE4ZjMwOGFmMGRiM2I2NTBlYWNjNzNl
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmgKQEAgLTIsNyArMiw3IEBACiAg
KiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAg
ICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAg
ICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKQEAgLTI0LDI1ICsyNCwyMyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIkxhYmVsYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJMaXZlTm9kZUxpc3QuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBMYWJlbGFibGVFbGVtZW50OworCiBjbGFzcyBMYWJl
bHNOb2RlTGlzdCBmaW5hbCA6IHB1YmxpYyBDYWNoZWRMaXZlTm9kZUxpc3Q8TGFiZWxzTm9kZUxp
c3Q+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKExhYmVsc05vZGVMaXN0KTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPExhYmVsc05vZGVMaXN0PiBjcmVhdGUoTGFiZWxhYmxlRWxlbWVu
dCYgZm9yTm9kZSwgY29uc3QgQXRvbVN0cmluZyYpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBMYWJlbHNOb2RlTGlzdChmb3JOb2RlKSk7Ci0gICAgfQotICAgIH5MYWJlbHNO
b2RlTGlzdCgpOworICAgIHN0YXRpYyBSZWY8TGFiZWxzTm9kZUxpc3Q+IGNyZWF0ZShMYWJlbGFi
bGVFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYpOworICAgIHZpcnR1YWwgfkxhYmVsc05vZGVM
aXN0KCk7CiAKLSAgICBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdCBmaW5hbDsK
KyAgICBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBMYWJlbHNOb2RlTGlzdChMYWJlbGFibGVFbGVt
ZW50JiBmb3JOb2RlKTsKKyAgICBleHBsaWNpdCBMYWJlbHNOb2RlTGlzdChMYWJlbGFibGVFbGVt
ZW50Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YURvY3VtZW50LmNwcAppbmRleCAwNGRlNzUxM2NhYzQ4MmJmNzYwYjRlNGM2ZmZhMDJlYzJlNWI2
N2Y3Li4yNGU0MGMyYzZkMzMxMTQ5M2I2MTdjNjVjZGYyZjU4YTg1MTIyMmRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJD
aHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDdXN0b21IZWFkZXJGaWVsZHMuaCIKICNpbmNsdWRl
ICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyLmgiCkBAIC01MSw3ICs1Miw2IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTaGFkb3dSb290
LmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuY3BwCmluZGV4IDk0NzBlYTI5
YWI1Nzc0ODgwYzYzYjNiZjQ3NGVkODliZmY3YmIzNDYuLmRkMmM4MWU0NGIzY2FmMTljYzJjYmVj
NGI0NjY3MzU4ZmNhMmM1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9O
b2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmNwcApA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTIgTW90b3JvbGEgTW9iaWxp
dHksIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC00MywxNiArNDIsMjEgQEAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJhZGlvTm9kZUxpc3QpOwogUmFkaW9Ob2RlTGlzdDo6
UmFkaW9Ob2RlTGlzdChDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYg
bmFtZSkKICAgICA6IENhY2hlZExpdmVOb2RlTGlzdChyb290Tm9kZSwgSW52YWxpZGF0ZUZvckZv
cm1Db250cm9scykKICAgICAsIG1fbmFtZShuYW1lKQotICAgICwgbV9pc1Jvb3RlZEF0RG9jdW1l
bnQoaXM8SFRNTEZvcm1FbGVtZW50Pihvd25lck5vZGUoKSkpCisgICAgLCBtX2lzUm9vdGVkQXRE
b2N1bWVudChpczxIVE1MRm9ybUVsZW1lbnQ+KHJvb3ROb2RlKSkKIHsKIH0KIAorUmVmPFJhZGlv
Tm9kZUxpc3Q+IFJhZGlvTm9kZUxpc3Q6OmNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwg
Y29uc3QgQXRvbVN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSYWRp
b05vZGVMaXN0KHJvb3ROb2RlLCBuYW1lKSk7Cit9CisKIFJhZGlvTm9kZUxpc3Q6On5SYWRpb05v
ZGVMaXN0KCkKIHsKICAgICBvd25lck5vZGUoKS5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVXaXRo
QXRvbU5hbWUoKnRoaXMsIG1fbmFtZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPEhUTUxJ
bnB1dEVsZW1lbnQ+IHRvUmFkaW9CdXR0b25JbnB1dEVsZW1lbnQoSFRNTEVsZW1lbnQmIGVsZW1l
bnQpCitzdGF0aWMgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IG5vbkVtcHR5UmFkaW9CdXR0b24o
RWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1l
bnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY3LDEwICs3MSwxMCBAQCBTdHJpbmcg
UmFkaW9Ob2RlTGlzdDo6dmFsdWUoKSBjb25zdAogewogICAgIGF1dG8gbGVuZ3RoID0gdGhpcy0+
bGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgIGF1dG8gaW5wdXRFbGVtZW50ID0gdG9SYWRpb0J1dHRvbklucHV0RWxlbWVudCgqaXRl
bShpKSk7Ci0gICAgICAgIGlmICghaW5wdXRFbGVtZW50IHx8ICFpbnB1dEVsZW1lbnQtPmNoZWNr
ZWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICByZXR1cm4gaW5wdXRFbGVtZW50
LT52YWx1ZSgpOworICAgICAgICBpZiAoYXV0byBidXR0b24gPSBub25FbXB0eVJhZGlvQnV0dG9u
KCppdGVtKGkpKSkgeworICAgICAgICAgICAgaWYgKGJ1dHRvbi0+Y2hlY2tlZCgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBidXR0b24tPnZhbHVlKCk7CisgICAgICAgIH0KICAgICB9CiAgICAg
cmV0dXJuIFN0cmluZygpOwogfQpAQCAtNzksNDAgKzgzLDM0IEBAIHZvaWQgUmFkaW9Ob2RlTGlz
dDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhdXRvIGxlbmd0aCA9IHRo
aXMtPmxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
ewotICAgICAgICBhdXRvIGlucHV0RWxlbWVudCA9IHRvUmFkaW9CdXR0b25JbnB1dEVsZW1lbnQo
Kml0ZW0oaSkpOwotICAgICAgICBpZiAoIWlucHV0RWxlbWVudCB8fCBpbnB1dEVsZW1lbnQtPnZh
bHVlKCkgIT0gdmFsdWUpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaW5wdXRFbGVt
ZW50LT5zZXRDaGVja2VkKHRydWUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChhdXRv
IGJ1dHRvbiA9IG5vbkVtcHR5UmFkaW9CdXR0b24oKml0ZW0oaSkpKSB7CisgICAgICAgICAgICBp
ZiAoYnV0dG9uLT52YWx1ZSgpID09IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgYnV0dG9uLT5z
ZXRDaGVja2VkKHRydWUpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQogICAgIH0KIH0KIAotYm9vbCBSYWRpb05vZGVMaXN0OjpjaGVja0VsZW1lbnRN
YXRjaGVzUmFkaW9Ob2RlTGlzdEZpbHRlcihjb25zdCBFbGVtZW50JiB0ZXN0RWxlbWVudCkgY29u
c3QKK2Jvb2wgUmFkaW9Ob2RlTGlzdDo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYgZWxlbWVudCkg
Y29uc3QKIHsKLSAgICBBU1NFUlQoaXM8SFRNTE9iamVjdEVsZW1lbnQ+KHRlc3RFbGVtZW50KSB8
fCBpczxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Pih0ZXN0RWxlbWVudCkpOworICAgIGlmICghaXM8
SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpICYmICFpczxIVE1MRm9ybUNvbnRyb2xFbGVtZW50
PihlbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlzPEhUTUxJbnB1
dEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQp
LmlzSW1hZ2VCdXR0b24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKGlzPEhU
TUxGb3JtRWxlbWVudD4ob3duZXJOb2RlKCkpKSB7Ci0gICAgICAgIFJlZlB0cjxIVE1MRm9ybUVs
ZW1lbnQ+IGZvcm1FbGVtZW50OwotICAgICAgICBpZiAodGVzdEVsZW1lbnQuaGFzVGFnTmFtZShv
YmplY3RUYWcpKQotICAgICAgICAgICAgZm9ybUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MT2JqZWN0
RWxlbWVudD4odGVzdEVsZW1lbnQpLmZvcm0oKTsKKyAgICAgICAgUmVmUHRyPEhUTUxGb3JtRWxl
bWVudD4gZm9ybTsKKyAgICAgICAgaWYgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSkK
KyAgICAgICAgICAgIGZvcm0gPSBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCku
Zm9ybSgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmb3JtRWxlbWVudCA9IGRvd25jYXN0
PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KHRlc3RFbGVtZW50KS5mb3JtKCk7Ci0gICAgICAgIGlm
ICghZm9ybUVsZW1lbnQgfHwgZm9ybUVsZW1lbnQgIT0gJm93bmVyTm9kZSgpKQorICAgICAgICAg
ICAgZm9ybSA9IGRvd25jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQpLmZvcm0o
KTsKKyAgICAgICAgaWYgKCFmb3JtIHx8IGZvcm0gIT0gJm93bmVyTm9kZSgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiB0ZXN0RWxlbWVudC5nZXRJZEF0
dHJpYnV0ZSgpID09IG1fbmFtZSB8fCB0ZXN0RWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkgPT0g
bV9uYW1lOworICAgIHJldHVybiBlbGVtZW50LmdldElkQXR0cmlidXRlKCkgPT0gbV9uYW1lIHx8
IGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0ZSgpID09IG1fbmFtZTsKIH0KIAotYm9vbCBSYWRpb05v
ZGVMaXN0OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JiB0ZXN0RWxlbWVudCkgY29uc3QKLXsKLSAg
ICBpZiAoIWlzPEhUTUxPYmplY3RFbGVtZW50Pih0ZXN0RWxlbWVudCkgJiYgIWlzPEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ+KHRlc3RFbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KHRlc3RFbGVtZW50KSAmJiBkb3duY2FzdDxIVE1M
SW5wdXRFbGVtZW50Pih0ZXN0RWxlbWVudCkuaXNJbWFnZUJ1dHRvbigpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gY2hlY2tFbGVtZW50TWF0Y2hlc1JhZGlvTm9kZUxpc3RG
aWx0ZXIodGVzdEVsZW1lbnQpOwotfQotCi19IC8vIG5hbXNwYWNlCi0KK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmgKaW5kZXggYTMwMjc2MzMwYzdm
ZGI2Y2NmNjJiMjE4ZTdiMTcyZDAyM2Q4YTZhMy4uNjQ0NzdjODEyNThmYjFiNzE3ZjNkZDYyZjli
NWQ4M2JhYWU4ZjNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmgKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDEyIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNiw0MSArMjYsMjYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJIVE1MRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkxpdmVOb2RlTGlzdC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21T
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSYWRpb05vZGVMaXN0IGZp
bmFsIDogcHVibGljIENhY2hlZExpdmVOb2RlTGlzdDxSYWRpb05vZGVMaXN0PiB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChSYWRpb05vZGVMaXN0KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFJhZGlvTm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3Qg
QXRvbVN0cmluZyYgbmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJh
ZGlvTm9kZUxpc3Qocm9vdE5vZGUsIG5hbWUpKTsKLSAgICB9Ci0KKyAgICBzdGF0aWMgUmVmPFJh
ZGlvTm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0
cmluZyYgbmFtZSk7CiAgICAgdmlydHVhbCB+UmFkaW9Ob2RlTGlzdCgpOwogCi0gICAgSFRNTEVs
ZW1lbnQqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCBvdmVycmlkZTsKLQogICAgIFN0cmlu
ZyB2YWx1ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7Ci0KLSAg
ICBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29s
IGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNSb290ZWRB
dERvY3VtZW50OyB9CisgICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3QgZmlu
YWw7CiAKIHByaXZhdGU6CiAgICAgUmFkaW9Ob2RlTGlzdChDb250YWluZXJOb2RlJiwgY29uc3Qg
QXRvbVN0cmluZyYgbmFtZSk7Ci0gICAgYm9vbCBjaGVja0VsZW1lbnRNYXRjaGVzUmFkaW9Ob2Rl
TGlzdEZpbHRlcihjb25zdCBFbGVtZW50JikgY29uc3Q7CisgICAgYm9vbCBpc1Jvb3RlZEF0RG9j
dW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzUm9vdGVkQXREb2N1bWVudDsgfQogCiAg
ICAgQXRvbVN0cmluZyBtX25hbWU7CiAgICAgYm9vbCBtX2lzUm9vdGVkQXREb2N1bWVudDsKIH07
CiAKLWlubGluZSBIVE1MRWxlbWVudCogUmFkaW9Ob2RlTGlzdDo6aXRlbSh1bnNpZ25lZCBvZmZz
ZXQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxFbGVtZW50PihDYWNoZWRMaXZl
Tm9kZUxpc3Q8UmFkaW9Ob2RlTGlzdD46Oml0ZW0ob2Zmc2V0KSk7Ci19Ci0KLX0gLy8gbmFtZXBz
YWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlv
Tm9kZUxpc3QuaWRsCmluZGV4IDIzNGQ0NTUyZjYyNDkzNDYxZjA2ZmExZDUyNjNiMzg1YTYyYTY5
OTEuLmYyMTcyMDg5NTM0YWJlM2VhZDEwYTQ4ZDEzNjA2MWQ3NGFjNWZiZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9SYWRpb05vZGVMaXN0LmlkbApAQCAtMjcsNiArMjcsNCBAQAogICAgIEpTR2VuZXJh
dGVUb0pTT2JqZWN0LAogXSBpbnRlcmZhY2UgUmFkaW9Ob2RlTGlzdCA6IE5vZGVMaXN0IHsKICAg
ICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhbHVlOwotCi0gICAgZ2V0dGVyIEhUTUxFbGVtZW50ICh1
bnNpZ25lZCBsb25nIGluZGV4KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5jcHAKaW5kZXggZmRiOGUzMGZmZWM5YmIwOWFjZTZiMjllYzZhMzAxYTM5MGVlZDU4
MS4uMDJlZmY0OGYzODhmMTgwZGJhOTRhMTE4MGNlNTFjMjI0YTIxY2NhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTg2Nyw2ICs4NjcsOCBA
QCBJbnRSZWN0IFRleHRGaWVsZElucHV0VHlwZTo6ZWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRp
bmF0ZXMoKSBjb25zdAogCiBWZWN0b3I8U3RyaW5nPiBUZXh0RmllbGRJbnB1dFR5cGU6OnN1Z2dl
c3Rpb25zKCkKIHsKKyAgICAvLyBGSVhNRTogU3VnZ2VzdGlvbnMgYXJlICJ0eXBpbmcgY29tcGxl
dGlvbnMiIGFuZCBzbyBzaG91bGQgcHJvYmFibHkgdXNlIHRoZSBmaW5kUGxhaW5UZXh0IGFsZ29y
aXRobSByYXRoZXIgdGhhbiB0aGUgc2ltcGxpc3RpYyAiaWdub3JpbmcgQVNDSUkgY2FzZSIgcnVs
ZXMuCisKICAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uczsKICAgICBWZWN0b3I8U3RyaW5n
PiBtYXRjaGVzQ29udGFpbmluZ1ZhbHVlOwogCkBAIC04NzYsMTIgKzg3OCwxMSBAQCBWZWN0b3I8
U3RyaW5nPiBUZXh0RmllbGRJbnB1dFR5cGU6OnN1Z2dlc3Rpb25zKCkKICAgICAgICAgcmV0dXJu
IG1fY2FjaGVkU3VnZ2VzdGlvbnMuc2Vjb25kOwogCiAgICAgaWYgKGF1dG8gZGF0YUxpc3QgPSBl
bGVtZW50KCktPmRhdGFMaXN0KCkpIHsKLSAgICAgICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBvcHRp
b25zID0gZGF0YUxpc3QtPm9wdGlvbnMoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
YXV0byogb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KG9wdGlvbnMtPml0ZW0o
aSkpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghZWxlbWVudCgpLT5pc1ZhbGlkVmFsdWUob3B0
aW9uLT52YWx1ZSgpKSkKKyAgICAgICAgZm9yIChhdXRvJiBvcHRpb24gOiBkYXRhTGlzdC0+c3Vn
Z2VzdGlvbnMoKSkgeworICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gb3B0aW9uLnZhbHVlKCk7
CisgICAgICAgICAgICBpZiAoIWVsZW1lbnQoKS0+aXNWYWxpZFZhbHVlKHZhbHVlKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gc2FuaXRp
emVWYWx1ZShvcHRpb24tPnZhbHVlKCkpOworICAgICAgICAgICAgdmFsdWUgPSBzYW5pdGl6ZVZh
bHVlKHZhbHVlKTsKICAgICAgICAgICAgIGlmIChlbGVtZW50VmFsdWUuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgIHN1Z2dlc3Rpb25zLmFwcGVuZCh2YWx1ZSk7CiAgICAgICAgICAgICBlbHNl
IGlmICh2YWx1ZS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoZWxlbWVudFZhbHVlKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCBlNWRmM2MzYjc4
NjZlYTlmZDQzZGFjY2Y0YTQ2MjJiZGI2NDg5NDIyLi5mY2U1OTI2YWI1ZWZhNWRhNWNkNDQ3NGQx
NmVlYzJkODkyNzBlYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgog
I2luY2x1ZGUgIkRPTVJlY3QuaCIKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkhUTUxD
b2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
U3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcAppbmRleCBlMWUyM2E3NmE0ZDk0NmY5ZWEyN2Y2MjZhMjJiMmNjNzc4YTk0ZDMxLi40
NDgzZGY3MDAzZmIxZWQ1NDk2ZGNhYmIyMzAzZWFhNTUwYzdkZmUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcApAQCAtMzIsMTAgKzMyLDggQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU3BhY2VTcGxpdFN0
cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KQEAgLTcwLDcgKzY4LDcgQEAgRXhjZXB0aW9uT3I8VmVjdG9yPFJlZjxOb2RlPj4+
IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0RWxlbWVudHNCeUMKIAogICAg
IFZlY3RvcjxSZWY8Tm9kZT4+IG5vZGVzOwogCi0gICAgZm9yIChFbGVtZW50JiBlbGVtZW50IDog
ZWxlbWVudERlc2NlbmRhbnRzKGlzPENvbnRhaW5lck5vZGU+KGNvbnRhaW5lcikgPyBkb3duY2Fz
dDxDb250YWluZXJOb2RlPigqY29udGFpbmVyKSA6IGRvY3VtZW50KSkgeworICAgIGZvciAoRWxl
bWVudCYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGlzPENvbnRhaW5lck5v
ZGU+KGNvbnRhaW5lcikgPyBkb3duY2FzdDxDb250YWluZXJOb2RlPigqY29udGFpbmVyKSA6IGRv
Y3VtZW50KSkgewogICAgICAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2li
bGl0eU9iamVjdEZvck5vZGUoZWxlbWVudCkpIHsKICAgICAgICAgICAgIGlmIChheE9iamVjdC0+
Y29tcHV0ZWRSb2xlU3RyaW5nKCkgPT0gcm9sZSkKICAgICAgICAgICAgICAgICBub2Rlcy5hcHBl
bmQoZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDI5MzBiNDVmOGYyMDc1MWU4NTZjZGEzZTA1MTg5
YWE0NDRlMTg1NTEuLmFjZTVmOWFjNTNjYmUyNmZkM2M0ZDlkNGYyMjQ5NGZkODA2NWE1OTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC01MDksMjAgKzUwOSwxOCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpn
ZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBubwog
ICAgICAgICAvLyBJbmhlcml0ZWQgc3R5bGVzLgogICAgICAgICBpZiAoIWluY2x1ZGVJbmhlcml0
ZWQgfHwgKmluY2x1ZGVJbmhlcml0ZWQpIHsKICAgICAgICAgICAgIGF1dG8gZW50cmllcyA9IEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5
Pjo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVu
dC0+cGFyZW50RWxlbWVudCgpOwotICAgICAgICAgICAgd2hpbGUgKHBhcmVudEVsZW1lbnQpIHsK
LSAgICAgICAgICAgICAgICBhdXRvJiBwYXJlbnRTdHlsZVJlc29sdmVyID0gcGFyZW50RWxlbWVu
dC0+c3R5bGVSZXNvbHZlcigpOwotICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50TWF0Y2hlZFJ1
bGVzID0gcGFyZW50U3R5bGVSZXNvbHZlci5zdHlsZVJ1bGVzRm9yRWxlbWVudChwYXJlbnRFbGVt
ZW50LCBTdHlsZTo6UmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKKyAgICAgICAgICAgIGZvciAoYXV0
byYgYW5jZXN0b3IgOiBhbmNlc3RvcnNPZlR5cGU8RWxlbWVudD4oKmVsZW1lbnQpKSB7CisgICAg
ICAgICAgICAgICAgYXV0byYgcGFyZW50U3R5bGVSZXNvbHZlciA9IGFuY2VzdG9yLnN0eWxlUmVz
b2x2ZXIoKTsKKyAgICAgICAgICAgICAgICBhdXRvIHBhcmVudE1hdGNoZWRSdWxlcyA9IHBhcmVu
dFN0eWxlUmVzb2x2ZXIuc3R5bGVSdWxlc0ZvckVsZW1lbnQoJmFuY2VzdG9yLCBTdHlsZTo6UmVz
b2x2ZXI6OkFsbENTU1J1bGVzKTsKICAgICAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5OjpjcmVhdGUoKQotICAgICAg
ICAgICAgICAgICAgICAuc2V0TWF0Y2hlZENTU1J1bGVzKGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVs
ZUxpc3QocGFyZW50TWF0Y2hlZFJ1bGVzLCBzdHlsZVJlc29sdmVyLCAqcGFyZW50RWxlbWVudCwg
UHNldWRvSWQ6Ok5vbmUpKQorICAgICAgICAgICAgICAgICAgICAuc2V0TWF0Y2hlZENTU1J1bGVz
KGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QocGFyZW50TWF0Y2hlZFJ1bGVzLCBzdHlsZVJl
c29sdmVyLCBhbmNlc3RvciwgUHNldWRvSWQ6Ok5vbmUpKQogICAgICAgICAgICAgICAgICAgICAu
cmVsZWFzZSgpOwotICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZWRFbGVtZW50PigqcGFyZW50
RWxlbWVudCkgJiYgZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKnBhcmVudEVsZW1lbnQpLmNzc29t
U3R5bGUoKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvJiBzdHlsZVNoZWV0
ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KCpwYXJlbnRF
bGVtZW50KSk7CisgICAgICAgICAgICAgICAgaWYgKGlzPFN0eWxlZEVsZW1lbnQ+KGFuY2VzdG9y
KSAmJiBkb3duY2FzdDxTdHlsZWRFbGVtZW50PihhbmNlc3RvcikuY3Nzb21TdHlsZSgpLmxlbmd0
aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlU2hlZXQgPSBhc0luc3BlY3Rv
clN0eWxlU2hlZXQoZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oYW5jZXN0b3IpKTsKICAgICAgICAg
ICAgICAgICAgICAgZW50cnktPnNldElubGluZVN0eWxlKHN0eWxlU2hlZXQuYnVpbGRPYmplY3RG
b3JTdHlsZShzdHlsZVNoZWV0LnN0eWxlRm9ySWQoSW5zcGVjdG9yQ1NTSWQoc3R5bGVTaGVldC5p
ZCgpLCAwKSkpKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBlbnRyaWVz
LT5hZGRJdGVtKFdURk1vdmUoZW50cnkpKTsKLSAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50
ID0gcGFyZW50RWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBpbmhlcml0ZWRFbnRyaWVzID0gV1RGTW92ZShlbnRyaWVzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5k
ZXggMGY0NmEzMDMzYWVmNDAwN2Y2ZWI4MzdhNjEwNWYwNWEwYzU5MDY3Zi4uZDJjYTViYmUxMDlh
YWFkMTgyYmFlMTg1YzRkNTJkOGFhZWNkYTg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9zZXBoIFBlY29yYXJvCiAgKgpAQCAt
MTExNCw3ICsxMTE0LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aW5zcGVjdChOb2RlKiBp
bnNwZWN0ZWROb2RlKQogICAgIFJlZlB0cjxOb2RlPiBub2RlID0gaW5zcGVjdGVkTm9kZTsKICAg
ICBzZXRTZWFyY2hpbmdGb3JOb2RlKGlnbm9yZWQsIGZhbHNlLCBudWxscHRyLCBmYWxzZSk7CiAK
LSAgICBpZiAobm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpFTEVNRU5UX05PREUgJiYgbm9kZS0+
bm9kZVR5cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9OT0RFKQorICAgIGlmICghbm9kZS0+aXNFbGVt
ZW50Tm9kZSgpICYmICFub2RlLT5pc0RvY3VtZW50Tm9kZSgpKQogICAgICAgICBub2RlID0gbm9k
ZS0+cGFyZW50Tm9kZSgpOwogICAgIG1fbm9kZVRvRm9jdXMgPSBub2RlOwogCkBAIC0xMTU5LDcg
KzExNTksNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVu
dChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVucwogdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6aGlnaGxpZ2h0TW91c2VkT3Zlck5vZGUoKQogewogICAgIE5vZGUqIG5vZGUgPSBtX21vdXNl
ZE92ZXJOb2RlLmdldCgpOwotICAgIHdoaWxlIChub2RlICYmIG5vZGUtPm5vZGVUeXBlKCkgPT0g
Tm9kZTo6VEVYVF9OT0RFKQorICAgIGlmIChub2RlICYmIG5vZGUtPmlzVGV4dE5vZGUoKSkKICAg
ICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKICAgICBpZiAobm9kZSAmJiBtX2luc3Bl
Y3RNb2RlSGlnaGxpZ2h0Q29uZmlnKQogICAgICAgICBtX292ZXJsYXktPmhpZ2hsaWdodE5vZGUo
bm9kZSwgKm1faW5zcGVjdE1vZGVIaWdobGlnaHRDb25maWcpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDNmNDY5OWNmODMyOThmMDRlMjc0YWUwMGVm
OTVhNTU0NzVhNjVmM2QuLjA2ZjQ2ZDRhNTY5ZDBmYTBkYzE3YmQ2NTliNjU4ODE1NTcxNmE2YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTMwLDEy
ICszMCwxMiBAQAogI2luY2x1ZGUgIkNhY2hlZEZvbnRDbGllbnQuaCIKICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVy
LmgiCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIkZv
bnRQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJU
ZXh0UmVzb3VyY2VEZWNvZGVyLmgiCi0jaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiV09GRkZpbGVGb3JtYXQuaCIKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNw
cAppbmRleCAwMTJkMmYzMWZlMWNlOTlhNzdlODU1ZmM2ZWNlZmI4NmYwNzZkZWI2Li5jOGY5YmE1
MzAwNWY4ZDdiYzkzMGQwOTZkNWYyMTNjOTM4MjVhOWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBF
TkFCTEUoU1ZHX0ZPTlRTKQogCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2lu
Y2x1ZGUgIlNWR0RvY3VtZW50LmgiCkBAIC0zNyw3ICszOCw2IEBACiAjaW5jbHVkZSAiU2NyaXB0
RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAi
VGV4dFJlc291cmNlRGVjb2Rlci5oIgotI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIlNWR1RvT1RGRm9udENvbnZlcnNpb24uaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBk
YWQwMDJiMTk2OGFkMGI0MjZmYjEyYjdhNjVhMGYzNzM4NmJlOGJiLi4wNTlmNDVkNjI5ZjU4ODY1
YjQwN2NjYmUxYTcyYWQyZWRmNTNkNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTEyNjAsNiArMTI2MCwxNSBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpiZWdp
bkRyYWcoRHJhZ0l0ZW0gZHJhZ0l0ZW0sIEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UG9pbnQmCiAg
ICAgY2xpZW50KCkuYmVnaW5EcmFnKFdURk1vdmUoZHJhZ0l0ZW0pLCBmcmFtZSwgbW91c2VEb3du
UG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMsIG1vdXNlRHJhZ2dlZFBvaW50SW5Sb290Vmlld0Nv
b3JkaW5hdGVzLCBkYXRhVHJhbnNmZXIsIGRyYWdTb3VyY2VBY3Rpb24pOwogfQogCitzdGF0aWMg
UmVmUHRyPEVsZW1lbnQ+IGNvbnRhaW5pbmdMaW5rRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQor
eworICAgIGZvciAoYXV0byYgY3VycmVudEVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEVsZW1lbnQ+
KGVsZW1lbnQpKSB7CisgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5pc0xpbmsoKSkKKyAgICAg
ICAgICAgIHJldHVybiAmY3VycmVudEVsZW1lbnQ7CisgICAgfQorICAgIHJldHVybiBudWxscHRy
OworfQorCiB2b2lkIERyYWdDb250cm9sbGVyOjpkb1N5c3RlbURyYWcoRHJhZ0ltYWdlIGltYWdl
LCBjb25zdCBJbnRQb2ludCYgZHJhZ0xvYywgY29uc3QgSW50UG9pbnQmIGV2ZW50UG9zLCBGcmFt
ZSYgZnJhbWUsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIFByb21pc2VkQXR0YWNobWVudEluZm8m
JiBwcm9taXNlZEF0dGFjaG1lbnRJbmZvKQogewogICAgIG1fZGlkSW5pdGlhdGVEcmFnID0gdHJ1
ZTsKQEAgLTEyOTYsMTggKzEzMDUsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpkb1N5c3RlbURy
YWcoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0xvYywgY29ucwogICAgICAg
ICAgICAgaXRlbS5kcmFnUHJldmlld0ZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gZWxlbWVu
dC0+Ym91bmRzSW5Sb290Vmlld1NwYWNlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8
RWxlbWVudD4gbGluazsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmlzTGluaygpKQotICAgICAgICAg
ICAgbGluayA9IGVsZW1lbnQ7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZm9yIChhdXRv
JiBjdXJyZW50RWxlbWVudCA6IGVsZW1lbnRMaW5lYWdlKGVsZW1lbnQuZ2V0KCkpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmlzTGluaygpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGxpbmsgPSAmY3VycmVudEVsZW1lbnQ7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBp
ZiAobGluaykgeworICAgICAgICBpZiAoYXV0byBsaW5rID0gY29udGFpbmluZ0xpbmtFbGVtZW50
KCplbGVtZW50KSkgewogICAgICAgICAgICAgYXV0byB0aXRsZUF0dHJpYnV0ZSA9IGxpbmstPmF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp0aXRsZUF0dHIpOwogICAg
ICAgICAgICAgaXRlbS50aXRsZSA9IHRpdGxlQXR0cmlidXRlLmlzRW1wdHkoKSA/IGxpbmstPmlu
bmVyVGV4dCgpIDogdGl0bGVBdHRyaWJ1dGUuc3RyaW5nKCk7CiAgICAgICAgICAgICBpdGVtLnVy
bCA9IGZyYW1lLmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcyhsaW5rLT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0cikpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zm
c2V0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9m
ZnNldHMuY3BwCmluZGV4IGQyNmNlZmU0ZjIwMjM2YzdjNDNhYzVlMjVlZTcxNmVkZDU0MGUxMGYu
LmY4MGExODU0ODk4Y2M4NGY1ZDBlMGY2NzBiZmFmMjUzMDYwYWYxODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNw
cApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkF4aXNTY3JvbGxTbmFwT2Zmc2V0cy5oIgog
CiAjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVj
dGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0
YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oCmluZGV4IDdiMzJiMzNkMzE1YWI5NWQyYTBiZTk4ZDNl
MmYwYTUwYmEwYjllZDMuLjVlZDgwMjViZTc5MDI5MjdmNWQ2NTNiOTc2OWUxMTNmMmNhZWM4Y2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFMaXN0U3VnZ2VzdGlvbnND
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25z
Q2xpZW50LmgKQEAgLTI3LDExICsyNywxMiBAQAogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1F
TlQpCiAKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSW50
UmVjdDsKKwogY2xhc3MgRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCgpID0gZGVmYXVsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDYwOTdiNGM2YTNlOWViZDMxOTI5
MjZmZTM5MzliOGJiNWQ3ZmVlYzUuLjI2NzQzMzUyZTQ1NzFjMWU3NDBiZmRiNjNmMGNiNjQwYmM3
ZjRjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC01NCw3ICs1NCw2IEBACiAjZW5kaWYK
IAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiSFRNTERhdGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxPcHRp
b25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgpAQCAtMTExNywxMiAr
MTExNiw5IEBAIHZvaWQgUmVuZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MoY29uc3QgUmVuZGVy
T2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAgICAgIHRpY2tSZWdpb25TaWRl
TWFyZ2luID0gdHJhY2tCb3VuZHMueSgpICsgKHRodW1iU2l6ZS53aWR0aCgpIC0gdGlja1NpemUu
d2lkdGgoKSAqIHpvb21GYWN0b3IpIC8gMi4wOwogICAgICAgICB0aWNrUmVnaW9uV2lkdGggPSB0
cmFja0JvdW5kcy5oZWlnaHQoKSAtIHRodW1iU2l6ZS53aWR0aCgpOwogICAgIH0KLSAgICBSZWY8
SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC5vcHRpb25zKCk7CiAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAg
IHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKG8uc3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvcikpOwotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IE5vZGUqIG5vZGUgPSBvcHRpb25zLT5pdGVtKGkpOyBpKyspIHsKLSAgICAg
ICAgQVNTRVJUKGlzPEhUTUxPcHRpb25FbGVtZW50Pigqbm9kZSkpOwotICAgICAgICBIVE1MT3B0
aW9uRWxlbWVudCYgb3B0aW9uRWxlbWVudCA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50Pigq
bm9kZSk7CisgICAgZm9yIChhdXRvJiBvcHRpb25FbGVtZW50IDogZGF0YUxpc3Quc3VnZ2VzdGlv
bnMoKSkgewogICAgICAgICBTdHJpbmcgdmFsdWUgPSBvcHRpb25FbGVtZW50LnZhbHVlKCk7CiAg
ICAgICAgIGlmICghaW5wdXQuaXNWYWxpZFZhbHVlKHZhbHVlKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJT
dXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9y
dC5jcHAKaW5kZXggODhjYTNlNTAzNzM3MzAxNWM1MjAzMGYwNTQ4YzBmYjMzMmUxMDc2ZC4uZmNh
ZjAwYzUwYmJmNjAzZWYzYTNhOWZkODM0ZDNjOTllMzMzYjk1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCkBAIC02LDYgKzYsNyBA
QAogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgog
ICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggQWRvYmUgU3lzdGVtcyBJ
bmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0y
Niw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3Vw
cG9ydC5oIgogCisjaW5jbHVkZSAiRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgpAQCAtNDgxLDYgKzQ4Myw3IEBAIHZvaWQgU1ZHUmVu
ZGVyU3VwcG9ydDo6c3R5bGVDaGFuZ2VkKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBS
ZW5kZXJTdHlsZSoKIH0KIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCisKIGJvb2wgU1ZH
UmVuZGVyU3VwcG9ydDo6aXNvbGF0ZXNCbGVuZGluZyhjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUp
CiB7CiAgICAgcmV0dXJuIHN0eWxlLnN2Z1N0eWxlKCkuaXNvbGF0ZXNCbGVuZGluZygpIHx8IHN0
eWxlLmhhc0ZpbHRlcigpIHx8IHN0eWxlLmhhc0JsZW5kTW9kZSgpIHx8IHN0eWxlLm9wYWNpdHko
KSA8IDEuMGY7CkBAIC00OTEsMjAgKzQ5NCwxNiBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OnVw
ZGF0ZU1hc2tlZEFuY2VzdG9yU2hvdWxkSXNvbGF0ZUJsZW5kaW5nKGNvbnN0IFJlbmRlckVsZQog
ICAgIEFTU0VSVChyZW5kZXJlci5lbGVtZW50KCkpOwogICAgIEFTU0VSVChyZW5kZXJlci5lbGVt
ZW50KCktPmlzU1ZHRWxlbWVudCgpKTsKIAotICAgIGJvb2wgbWFza2VkQW5jZXN0b3JTaG91bGRJ
c29sYXRlQmxlbmRpbmcgPSByZW5kZXJlci5zdHlsZSgpLmhhc0JsZW5kTW9kZSgpOwotICAgIGZv
ciAoYXV0byogYW5jZXN0b3IgPSByZW5kZXJlci5lbGVtZW50KCktPnBhcmVudEVsZW1lbnQoKTsg
YW5jZXN0b3IgJiYgYW5jZXN0b3ItPmlzU1ZHRWxlbWVudCgpOyBhbmNlc3RvciA9IGFuY2VzdG9y
LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKCFkb3duY2FzdDxTVkdFbGVtZW50Pigq
YW5jZXN0b3IpLmlzU1ZHR3JhcGhpY3NFbGVtZW50KCkpCi0gICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICBjb25zdCBhdXRvKiBzdHlsZSA9IGFuY2VzdG9yLT5jb21wdXRlZFN0eWxlKCk7
CisgICAgZm9yIChhdXRvJiBhbmNlc3RvciA6IGFuY2VzdG9yc09mVHlwZTxTVkdHcmFwaGljc0Vs
ZW1lbnQ+KCpyZW5kZXJlci5lbGVtZW50KCkpKSB7CisgICAgICAgIGF1dG8qIHN0eWxlID0gYW5j
ZXN0b3IuY29tcHV0ZWRTdHlsZSgpOwogICAgICAgICBpZiAoIXN0eWxlIHx8ICFpc29sYXRlc0Js
ZW5kaW5nKCpzdHlsZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoYW5j
ZXN0b3ItPmNvbXB1dGVkU3R5bGUoKS0+c3ZnU3R5bGUoKS5oYXNNYXNrZXIoKSkKLSAgICAgICAg
ICAgIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4oKmFuY2VzdG9yKS5zZXRTaG91bGRJc29s
YXRlQmxlbmRpbmcobWFza2VkQW5jZXN0b3JTaG91bGRJc29sYXRlQmxlbmRpbmcpOwotCisgICAg
ICAgIGlmIChzdHlsZS0+c3ZnU3R5bGUoKS5oYXNNYXNrZXIoKSkKKyAgICAgICAgICAgIGFuY2Vz
dG9yLnNldFNob3VsZElzb2xhdGVCbGVuZGluZyhyZW5kZXJlci5zdHlsZSgpLmhhc0JsZW5kTW9k
ZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KKwogI2VuZGlmCisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKaW5kZXggNWU5OWZiYmQyZmUwMzg0Yjc5
MGMwMDMwYzE1NmFmNmNmNTc4NDM4Mi4uNmJlZjQ0OGUzYjE0NmQ1MzljMTk3MTE3MWMzOTZmZTdl
OGRiOWM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKQEAg
LTE3NSw4ICsxNzUsNyBAQCB2b2lkIEludmFsaWRhdG9yOjppbnZhbGlkYXRlU3R5bGVGb3JEZXNj
ZW5kYW50cyhFbGVtZW50JiByb290LCBTZWxlY3RvckZpbHRlciogZgogewogICAgIFZlY3RvcjxF
bGVtZW50KiwgMjA+IHBhcmVudFN0YWNrOwogICAgIEVsZW1lbnQqIHByZXZpb3VzRWxlbWVudCA9
ICZyb290OwotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50
Pihyb290KTsKLSAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5iZWdpbigpLCBlbmQgPSBk
ZXNjZW5kYW50cy5lbmQoKTsgaXQgIT0gZW5kOykgeworICAgIGZvciAoYXV0byBpdCA9IGRlc2Nl
bmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KHJvb3QpLmJlZ2luKCk7IGl0OyApIHsKICAgICAgICAgYXV0
byYgZGVzY2VuZGFudCA9ICppdDsKICAgICAgICAgYXV0byogcGFyZW50ID0gZGVzY2VuZGFudC5w
YXJlbnRFbGVtZW50KCk7CiAgICAgICAgIGlmIChwYXJlbnRTdGFjay5pc0VtcHR5KCkgfHwgcGFy
ZW50U3RhY2subGFzdCgpICE9IHBhcmVudCkgewpAQCAtMjc1LDEyICsyNzQsMTAgQEAgdm9pZCBJ
bnZhbGlkYXRvcjo6aW52YWxpZGF0ZVN0eWxlV2l0aE1hdGNoRWxlbWVudChFbGVtZW50JiBlbGVt
ZW50LCBNYXRjaEVsZW1lbnQKICAgICAgICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudC5u
ZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVt
ZW50U2libGluZygpKQogICAgICAgICAgICAgaW52YWxpZGF0ZUlmTmVlZGVkKCpzaWJsaW5nLCBu
dWxscHRyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNYXRjaEVsZW1lbnQ6OkFueVNpYmxp
bmc6IHsKLSAgICAgICAgYXV0byBwYXJlbnRDaGlsZHJlbiA9IGNoaWxkcmVuT2ZUeXBlPEVsZW1l
bnQ+KCplbGVtZW50LnBhcmVudE5vZGUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYgcGFyZW50Q2hp
bGQgOiBwYXJlbnRDaGlsZHJlbikKKyAgICBjYXNlIE1hdGNoRWxlbWVudDo6QW55U2libGluZzoK
KyAgICAgICAgZm9yIChhdXRvJiBwYXJlbnRDaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+
KCplbGVtZW50LnBhcmVudE5vZGUoKSkpCiAgICAgICAgICAgICBpbnZhbGlkYXRlSWZOZWVkZWQo
cGFyZW50Q2hpbGQsIG51bGxwdHIpOwogICAgICAgICBicmVhazsKLSAgICB9CiAgICAgY2FzZSBN
YXRjaEVsZW1lbnQ6OlBhcmVudFNpYmxpbmc6CiAgICAgICAgIGZvciAoYXV0byogc2libGluZyA9
IGVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5n
LT5uZXh0RWxlbWVudFNpYmxpbmcoKSkgewogICAgICAgICAgICAgYXV0byBzaWJsaW5nQ2hpbGRy
ZW4gPSBjaGlsZHJlbk9mVHlwZTxFbGVtZW50Pigqc2libGluZyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGYzZjM2MjE4M2Q1MDYxNzRhNDY2NjQ2MWM3MTdiZTc5
YjNlNjFmMTQuLjY1MWY4ZjFlMmQ3ODkyMTk5MDY1NmFmYTRmZDllNjllZGNhYzNjMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xODMsOCArMTgzLDcgQEAgaW5s
aW5lIHZvaWQgUmVzb2x2ZXI6OlN0YXRlOjpzZXRQYXJlbnRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHBhcmVudFMKIAogc3RhdGljIGlubGluZSBib29sIGlzQXRTaGFkb3dCb3Vu
ZGFyeShjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIGF1dG8qIHBhcmVudE5vZGUgPSBl
bGVtZW50LnBhcmVudE5vZGUoKTsKLSAgICByZXR1cm4gcGFyZW50Tm9kZSAmJiBwYXJlbnROb2Rl
LT5pc1NoYWRvd1Jvb3QoKTsKKyAgICByZXR1cm4gaXM8U2hhZG93Um9vdD4oZWxlbWVudC5wYXJl
bnROb2RlKCkpOwogfQogCiBCdWlsZGVyQ29udGV4dCBSZXNvbHZlcjo6YnVpbGRlckNvbnRleHQo
Y29uc3QgU3RhdGUmIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKaW5kZXggOTlk
YjM1OWIyMDQ2MTg0MGZjY2ExNTg4ZWUxMGY1MWVlZjE1NWY4Ni4uNmI0YjYyNTY5MmQ3YWNhNjJm
MTc5YTlhMTQzMWI5YjcyZmVlYmVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCkBA
IC0xMDIsOSArMTAyLDggQEAgdm9pZCBTVkdBRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IFNWR0FFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICBpZiAocGFyZW50Tm9kZSgpICYmIHBh
cmVudE5vZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnBhcmVu
dE5vZGUoKSkuaXNUZXh0Q29udGVudCgpKQorICAgIGlmIChpczxTVkdFbGVtZW50PihwYXJlbnRO
b2RlKCkpICYmIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpwYXJlbnROb2RlKCkpLmlzVGV4dENvbnRl
bnQoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0lubGluZT4oKnRo
aXMsIFdURk1vdmUoc3R5bGUpKTsKLQogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJT
VkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggMmZmY2JhYzUyMTFjOGEwNWFlNDYwZDMwY2Ew
NDI2ZTQ2N2NlYTE4My4uMjIyNDFkYWQ0MTdmYzdlMjY4YmQ2MDdlYTUzMDdiYjJhOTJiNDUyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5u
IDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDggUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAw
OCBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA5IENhbWVy
b24gTWNDb3JtYWNrIDxjYW1AbWNjLmlkLmF1PgogICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1
bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC05MTYsMTggKzkxNiwxMCBA
QCB2b2lkIFNWR0VsZW1lbnQ6OnVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKGJvb2wg
aGFzUmVsYXRpdmVMZW5ndGhzLCBTVkdFbAogICAgICAgICBtX2VsZW1lbnRzV2l0aFJlbGF0aXZl
TGVuZ3Rocy5yZW1vdmUoZWxlbWVudCk7CiAgICAgfQogCi0gICAgaWYgKCFlbGVtZW50LT5pc1NW
R0dyYXBoaWNzRWxlbWVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGaW5kIGZpcnN0
IHN0eWxlZCBwYXJlbnQgbm9kZSwgYW5kIG5vdGlmeSBpdCB0aGF0IHdlJ3ZlIGNoYW5nZWQgb3Vy
IHJlbGF0aXZlIGxlbmd0aCBzdGF0ZS4KLSAgICBhdXRvIG5vZGUgPSBtYWtlUmVmUHRyKHBhcmVu
dE5vZGUoKSk7Ci0gICAgd2hpbGUgKG5vZGUpIHsKLSAgICAgICAgaWYgKCFub2RlLT5pc1NWR0Vs
ZW1lbnQoKSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIC8vIFJlZ2lzdGVyIHVzIGlu
IHRoZSBwYXJlbnQgZWxlbWVudCBtYXAuCi0gICAgICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpu
b2RlKS51cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihoYXNSZWxhdGl2ZUxlbmd0aHMs
IHRoaXMpOwotICAgICAgICBicmVhazsKKyAgICBpZiAoZWxlbWVudC0+aXNTVkdHcmFwaGljc0Vs
ZW1lbnQoKSkgeworICAgICAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50Tm9kZSgp
KTsKKyAgICAgICAgaWYgKGlzPFNWR0VsZW1lbnQ+KHBhcmVudCkpCisgICAgICAgICAgICBkb3du
Y2FzdDxTVkdFbGVtZW50PigqcGFyZW50KS51cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlv
bihoYXNSZWxhdGl2ZUxlbmd0aHMsIHRoaXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmgKaW5kZXggOThmY2ZmYmNhNGQ3MTI2N2U3NDVmZWRiOWIzMGU4MGQwYzliNjJjZi4uNjM5
MThhYTg4YmYxOTRhMjllNjQzMGFiMWU5OTYwYjg4Y2JlZGUxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5oCkBAIC0xNDUsNiArMTQ1LDggQEAgcHVibGljOgogICAgIFN0cmluZyBjbGFzc05hbWUo
KSBjb25zdCB7IHJldHVybiBtX2NsYXNzTmFtZS0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBTVkdB
bmltYXRlZFN0cmluZyYgY2xhc3NOYW1lQW5pbWF0ZWQoKSB7IHJldHVybiBtX2NsYXNzTmFtZTsg
fQogCisgICAgY29uc3QgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBQc2V1
ZG9JZDo6Tm9uZSkgZmluYWw7CisKIHByb3RlY3RlZDoKICAgICBTVkdFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgflNWR0VsZW1lbnQoKTsKQEAg
LTE3Myw4ICsxNzUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB3aWxsUmVjYWxjU3R5bGUoU3R5
bGU6OkNoYW5nZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUq
IGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBQc2V1ZG9JZDo6Tm9uZSkgZmluYWw7Ci0KICAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJUYXJnZXQoKSB7IH0KIAogICAgIHZvaWQgYnVpbGRQZW5kaW5nUmVz
b3VyY2VzSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCAx
ZTc1NTMzOTBlOWI1YmRiYTgzY2EyNjgxNmMxMjJlMTNmYzFlZGE3Li5jNjk3NDVkNTg0NzI4NGQz
YzE2MmQ5NzQ4NWYwYTBkN2Q4NzFhNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQu
Y3BwCkBAIC0zMzEsOCArMzMxLDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlRGlzYWxsb3dlZEVsZW1l
bnRzRnJvbVN1YnRyZWUoU1ZHRWxlbWVudCYgc3VidHJlZSkKICAgICBBU1NFUlQoIXN1YnRyZWUu
aXNDb25uZWN0ZWQoKSk7CiAKICAgICBWZWN0b3I8RWxlbWVudCo+IGRpc2FsbG93ZWRFbGVtZW50
czsKLSAgICBhdXRvIGRlc2NlbmRhbnRzID0gZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oc3Vi
dHJlZSk7Ci0gICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMuYmVnaW4oKSwgZW5kID0gZGVz
Y2VuZGFudHMuZW5kKCk7IGl0ICE9IGVuZDsgKSB7CisgICAgZm9yIChhdXRvIGl0ID0gZGVzY2Vu
ZGFudHNPZlR5cGU8RWxlbWVudD4oc3VidHJlZSkuYmVnaW4oKTsgaXQ7ICkgewogICAgICAgICBp
ZiAoaXNEaXNhbGxvd2VkRWxlbWVudCgqaXQpKSB7CiAgICAgICAgICAgICBkaXNhbGxvd2VkRWxl
bWVudHMuYXBwZW5kKCYqaXQpOwogICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tpcHBpbmdD
aGlsZHJlbigpOwpAQCAtNDUyLDkgKzQ1MSw5IEBAIHN0YXRpYyB2b2lkIGNsb25lRGF0YUFuZENo
aWxkcmVuKFNWR0VsZW1lbnQmIHJlcGxhY2VtZW50Q2xvbmUsIFNWR0VsZW1lbnQmIG9yaWdpCiB2
b2lkIFNWR1VzZUVsZW1lbnQ6OmV4cGFuZFVzZUVsZW1lbnRzSW5TaGFkb3dUcmVlKCkgY29uc3QK
IHsKICAgICBhdXRvIGRlc2NlbmRhbnRzID0gZGVzY2VuZGFudHNPZlR5cGU8U1ZHVXNlRWxlbWVu
dD4oKnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSk7Ci0gICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFu
dHMuYmVnaW4oKSwgZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7IGl0ICE9IGVuZDsgKSB7CisgICAg
Zm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMuYmVnaW4oKTsgaXQ7ICkgewogICAgICAgICBTVkdV
c2VFbGVtZW50JiBvcmlnaW5hbENsb25lID0gKml0OwotICAgICAgICBpdCA9IGVuZDsgLy8gRWZm
aWNpZW50bHkgcXVpZXRzIGFzc2VydGlvbnMgZHVlIHRvIHRoZSBvdXRzdGFuZGluZyBpdGVyYXRv
ci4KKyAgICAgICAgaXQuZHJvcEFzc2VydGlvbnMoKTsKIAogICAgICAgICBhdXRvKiB0YXJnZXQg
PSBvcmlnaW5hbENsb25lLmZpbmRUYXJnZXQoKTsKIApAQCAtNDg1LDkgKzQ4NCw5IEBAIHZvaWQg
U1ZHVXNlRWxlbWVudDo6ZXhwYW5kVXNlRWxlbWVudHNJblNoYWRvd1RyZWUoKSBjb25zdAogdm9p
ZCBTVkdVc2VFbGVtZW50OjpleHBhbmRTeW1ib2xFbGVtZW50c0luU2hhZG93VHJlZSgpIGNvbnN0
CiB7CiAgICAgYXV0byBkZXNjZW5kYW50cyA9IGRlc2NlbmRhbnRzT2ZUeXBlPFNWR1N5bWJvbEVs
ZW1lbnQ+KCp1c2VyQWdlbnRTaGFkb3dSb290KCkpOwotICAgIGZvciAoYXV0byBpdCA9IGRlc2Nl
bmRhbnRzLmJlZ2luKCksIGVuZCA9IGRlc2NlbmRhbnRzLmVuZCgpOyBpdCAhPSBlbmQ7ICkgewor
ICAgIGZvciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmJlZ2luKCk7IGl0OyApIHsKICAgICAgICAg
U1ZHU3ltYm9sRWxlbWVudCYgb3JpZ2luYWxDbG9uZSA9ICppdDsKLSAgICAgICAgaXQgPSBlbmQ7
IC8vIEVmZmljaWVudGx5IHF1aWV0cyBhc3NlcnRpb25zIGR1ZSB0byB0aGUgb3V0c3RhbmRpbmcg
aXRlcmF0b3IuCisgICAgICAgIGl0LmRyb3BBc3NlcnRpb25zKCk7CiAKICAgICAgICAgLy8gU3Bl
YzogVGhlIHJlZmVyZW5jZWQgJ3N5bWJvbCcgYW5kIGl0cyBjb250ZW50cyBhcmUgZGVlcC1jbG9u
ZWQgaW50byB0aGUgZ2VuZXJhdGVkIHRyZWUsCiAgICAgICAgIC8vIHdpdGggdGhlIGV4Y2VwdGlv
biB0aGF0IHRoZSAnc3ltYm9sJyBpcyByZXBsYWNlZCBieSBhbiAnc3ZnJy4gVGhpcyBnZW5lcmF0
ZWQgJ3N2Zycgd2lsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcAppbmRleCA3N2Q5NGFmZTg1ZWJhMTY0MjZhNDE5N2Q3ZjkwNTY4YzNjMzZkMGFk
Li4zZjcyMzEzMWEyMjYyMjNhYzBkZjZiNTBjMmQ5NmEwMmUyYTc3NzBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjc0LDIyICsy
NzQsMjQgQEAgYm9vbCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KGNv
bnN0IFN0cmluZyYgY2h1bmssIERvY3VtZW50RnJhZ20KIAogICAgIEhhc2hNYXA8QXRvbVN0cmlu
ZywgQXRvbVN0cmluZz4gcHJlZml4VG9OYW1lc3BhY2VNYXA7CiAgICAgQXRvbVN0cmluZyBkZWZh
dWx0TmFtZXNwYWNlVVJJOwotICAgIGJvb2wgc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFtZXNwYWNl
VVJJID0gZmFsc2U7Ci0gICAgCi0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudExpbmVh
Z2UoY29udGV4dEVsZW1lbnQpKSB7Ci0gICAgICAgIGlmIChpczxTVkdGb3JlaWduT2JqZWN0RWxl
bWVudD4oZWxlbWVudCkpCi0gICAgICAgICAgICBzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3Bh
Y2VVUkkgPSB0cnVlOwotICAgICAgICBlbHNlIGlmICghc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFt
ZXNwYWNlVVJJKQotICAgICAgICAgICAgZGVmYXVsdE5hbWVzcGFjZVVSSSA9IGVsZW1lbnQubmFt
ZXNwYWNlVVJJKCk7Ci0KLSAgICAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZXMoKSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBhdHRy
aWJ1dGUgOiBlbGVtZW50LmF0dHJpYnV0ZXNJdGVyYXRvcigpKSB7Ci0gICAgICAgICAgICBpZiAo
YXR0cmlidXRlLnByZWZpeCgpID09IHhtbG5zQXRvbSgpKQotICAgICAgICAgICAgICAgIHByZWZp
eFRvTmFtZXNwYWNlTWFwLnNldChhdHRyaWJ1dGUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZS52YWx1
ZSgpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3Bh
Y2VVUkkgJiYgYXR0cmlidXRlLnByZWZpeCgpID09IHhtbG5zQXRvbSgpKQotICAgICAgICAgICAg
ICAgIGRlZmF1bHROYW1lc3BhY2VVUkkgPSBhdHRyaWJ1dGUudmFsdWUoKTsKKyAgICBpZiAoY29u
dGV4dEVsZW1lbnQpIHsKKyAgICAgICAgYm9vbCBzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3Bh
Y2VVUkkgPSBmYWxzZTsKKworICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZU
eXBlPEVsZW1lbnQ+KCpjb250ZXh0RWxlbWVudCkpIHsKKyAgICAgICAgICAgIGlmIChpczxTVkdG
b3JlaWduT2JqZWN0RWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICAgICAgICAgc3RvcExvb2tp
bmdGb3JEZWZhdWx0TmFtZXNwYWNlVVJJID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCFz
dG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkpCisgICAgICAgICAgICAgICAgZGVmYXVs
dE5hbWVzcGFjZVVSSSA9IGVsZW1lbnQubmFtZXNwYWNlVVJJKCk7CisKKyAgICAgICAgICAgIGlm
ICghZWxlbWVudC5oYXNBdHRyaWJ1dGVzKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUgOiBlbGVtZW50LmF0
dHJpYnV0ZXNJdGVyYXRvcigpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZS5wcmVm
aXgoKSA9PSB4bWxuc0F0b20oKSkKKyAgICAgICAgICAgICAgICAgICAgcHJlZml4VG9OYW1lc3Bh
Y2VNYXAuc2V0KGF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgYXR0cmlidXRlLnZhbHVlKCkpOworICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKCFzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkg
JiYgYXR0cmlidXRlLnByZWZpeCgpID09IHhtbG5zQXRvbSgpKQorICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0TmFtZXNwYWNlVVJJID0gYXR0cmlidXRlLnZhbHVlKCk7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5k
ZXggM2Y1YjYxODFlMDZlMGE4NDY4OGJkYTkxNmYxMGQ4N2E2MWQxNGJlNy4uNmIyNzczZWM5NzM1
MThhMDFlMTQ1NTQwNTI3MjVlNTU5NDA2YmMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5jcHAKQEAgLTU1OSwxMiArNTU5LDExIEBAIHN0YXRpYyBXZWJDb3JlOjpFbGVtZW50KiBj
b250YWluZXJFbGVtZW50Rm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50KQogICAg
IC8vIMKnMTMuIEVsZW1lbnQgU3RhdGUuCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dl
YmRyaXZlci93ZWJkcml2ZXItc3BlYy5odG1sI2Rmbi1jb250YWluZXIuCiAgICAgaWYgKGlzPFdl
YkNvcmU6OkhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSkgewotICAgICAgICBhdXRvJiBvcHRp
b25FbGVtZW50ID0gZG93bmNhc3Q8V2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQp
OwogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotICAgICAgICBpZiAoYXV0byogcGFyZW50
RWxlbWVudCA9IG9wdGlvbkVsZW1lbnQub3duZXJEYXRhTGlzdEVsZW1lbnQoKSkKKyAgICAgICAg
aWYgKGF1dG8qIHBhcmVudEVsZW1lbnQgPSBXZWJDb3JlOjphbmNlc3RvcnNPZlR5cGU8V2ViQ29y
ZTo6SFRNTERhdGFMaXN0RWxlbWVudD4oZWxlbWVudCkuZmlyc3QoKSkKICAgICAgICAgICAgIHJl
dHVybiBwYXJlbnRFbGVtZW50OwogI2VuZGlmCi0gICAgICAgIGlmIChhdXRvKiBwYXJlbnRFbGVt
ZW50ID0gb3B0aW9uRWxlbWVudC5vd25lclNlbGVjdEVsZW1lbnQoKSkKKyAgICAgICAgaWYgKGF1
dG8qIHBhcmVudEVsZW1lbnQgPSBkb3duY2FzdDxXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudD4o
ZWxlbWVudCkub3duZXJTZWxlY3RFbGVtZW50KCkpCiAgICAgICAgICAgICByZXR1cm4gcGFyZW50
RWxlbWVudDsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNw
cAppbmRleCBmNTE5NDFlNmI0ZWMxMjE5ZDJiYmRhMGZhOTk1N2RjNTM4MjdjNzhiLi5kMGNmZTlk
MTczYWQ5NzhiNTg2NmRlNWY2YmYzNDU0Mjk3ODI2ZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIu
Y3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29s
b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Vs
ZW1lbnRJdGVyYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnVsbHNjcmVlbk1hbmFnZXIu
aD4KQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGlu
Z3MuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5o
PgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICNpbmNsdWRlICJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDhmNTEwNjdhMzk5OGNmYjNhYTVmZTcw
MTRmMzZiOWFkNjc1NmIzNDQuLmZiOGY3NmQ1ODllNzNhOWEyZDk1NzMwZjBkMWY1ZTg3NmM2NWU4
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC03OTUsNyArNzk1LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPENvbG9yQ2hvb3Nlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIo
Q29sb3JDaG9vc2VyQ2wKIAogc3RkOjp1bmlxdWVfcHRyPERhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
cj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoRGF0YUxp
c3RTdWdnZXN0aW9uc0NsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBtYWtlVW5pcXVlPFdl
YkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4oJm1fcGFnZSwgJmNsaWVudCk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyPihtX3BhZ2UsIGNsaWVudCk7
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNw
cAppbmRleCBhZWI4NzM3YWRkNDczYzAzYWI2ZTExNzUyZmYwYzIyNGM4ZGUwODE4Li5iMjBiMGFj
Zjg4YTQ5ZmY1MGUzNTQxNTZmNDIxYjg2YTA2MTFlZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0
YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw0NyArMzUsNDUgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2ViUGFnZSogcGFnZSwgRGF0YUxpc3RTdWdnZXN0
aW9uc0NsaWVudCogY2xpZW50KQotICAgIDogbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50KGNs
aWVudCkKK1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6V2ViRGF0YUxpc3RTdWdnZXN0aW9u
UGlja2VyKFdlYlBhZ2UmIHBhZ2UsIFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQm
IGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fcGFnZShwYWdlKQogewog
fQogCi1XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6On5XZWJEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXIoKSB7IH0KLQotdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmhhbmRsZUtl
eWRvd25XaXRoSWRlbnRpZmllcihjb25zdCBXVEY6OlN0cmluZyYga2V5KQordm9pZCBXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmhhbmRsZUtleWRvd25XaXRoSWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIGtleSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUtleWRvd25J
bkRhdGFMaXN0KGtleSksIG1fcGFnZS0+aWRlbnRpZmllcigpKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkhhbmRsZUtleWRvd25JbkRhdGFMaXN0KGtleSksIG1fcGFnZS5pZGVudGlmaWVy
KCkpOwogfQogCi12b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlkU2VsZWN0T3B0
aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKK3ZvaWQgV2ViRGF0YUxpc3RT
dWdnZXN0aW9uUGlja2VyOjpkaWRTZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJiBzZWxlY3RlZE9w
dGlvbikKIHsKLSAgICBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQtPmRpZFNlbGVjdERhdGFM
aXN0T3B0aW9uKHNlbGVjdGVkT3B0aW9uKTsKKyAgICBtX2NsaWVudC5kaWRTZWxlY3REYXRhTGlz
dE9wdGlvbihzZWxlY3RlZE9wdGlvbik7CiB9CiAKIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9u
UGlja2VyOjpkaWRDbG9zZVN1Z2dlc3Rpb25zKCkKIHsKLSAgICBtX2RhdGFMaXN0U3VnZ2VzdGlv
bnNDbGllbnQtPmRpZENsb3NlU3VnZ2VzdGlvbnMoKTsKKyAgICBtX2NsaWVudC5kaWRDbG9zZVN1
Z2dlc3Rpb25zKCk7CiB9CiAKIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpjbG9z
ZSgpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFbmREYXRhTGlzdFN1Z2dlc3Rpb25z
KCksIG1fcGFnZS0+aWRlbnRpZmllcigpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVu
ZERhdGFMaXN0U3VnZ2VzdGlvbnMoKSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7CiB9CiAKLXZvaWQg
V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpkaXNwbGF5V2l0aEFjdGl2YXRpb25UeXBlKERh
dGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBlIHR5cGUpCit2b2lkIFdlYkRhdGFMaXN0U3Vn
Z2VzdGlvblBpY2tlcjo6ZGlzcGxheVdpdGhBY3RpdmF0aW9uVHlwZShXZWJDb3JlOjpEYXRhTGlz
dFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSB0eXBlKQogewotICAgIGlmICghbV9kYXRhTGlzdFN1
Z2dlc3Rpb25zQ2xpZW50LT5zdWdnZXN0aW9ucygpLnNpemUoKSkgeworICAgIGF1dG8gc3VnZ2Vz
dGlvbnMgPSBtX2NsaWVudC5zdWdnZXN0aW9ucygpOworICAgIGlmIChzdWdnZXN0aW9ucy5pc0Vt
cHR5KCkpIHsKICAgICAgICAgY2xvc2UoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fcGFnZS0+c2V0QWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKHRoaXMpOworICAgIG1f
cGFnZS5zZXRBY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoKnRoaXMpOwogCi0gICAgRGF0
YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24gaW5mbyA9IHsgdHlwZSwgbV9kYXRhTGlzdFN1Z2dl
c3Rpb25zQ2xpZW50LT5zdWdnZXN0aW9ucygpLCBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQt
PmVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgfTsKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlNob3dEYXRhTGlzdFN1Z2dlc3Rpb25zKGluZm8pLCBtX3BhZ2UtPmlkZW50aWZp
ZXIoKSk7CisgICAgV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24gaW5mbyB7
IHR5cGUsIFdURk1vdmUoc3VnZ2VzdGlvbnMpLCBtX2NsaWVudC5lbGVtZW50UmVjdEluUm9vdFZp
ZXdDb29yZGluYXRlcygpIH07CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93RGF0YUxp
c3RTdWdnZXN0aW9ucyhpbmZvKSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5oCmlu
ZGV4IDk3MDUzNTk4OTBiNzY2MWFmNmNhODA3MTcwYjM1M2I1OThjNTBmNzkuLjEzNTEwNzM1MjE0
MjllZjg3ZGVkMTQyYzQ5NjE0MTkwY2Q4NjMwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RT
dWdnZXN0aW9uUGlja2VyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVN
RU5UKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudDsKQEAgLTM4LDE5ICszNywyMCBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgV2ViRGF0YUxpc3RTdWdnZXN0
aW9uUGlja2VyIDogcHVibGljIFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlciB7Citj
bGFzcyBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6
RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyIHsKIHB1YmxpYzoKLSAgICBXZWJEYXRhTGlzdFN1Z2dl
c3Rpb25QaWNrZXIoV2ViUGFnZSosIFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQq
KTsKLSAgICB2aXJ0dWFsIH5XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoKTsKKyAgICBXZWJE
YXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2ViUGFnZSYsIFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2Vz
dGlvbnNDbGllbnQmKTsKIAotICAgIHZvaWQgaGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgZGlkQ2xvc2VTdWdnZXN0aW9ucygpOwotICAgIHZvaWQgY2xvc2Uo
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpc3BsYXlXaXRoQWN0aXZhdGlvblR5cGUoV2ViQ29yZTo6
RGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUpIG92ZXJyaWRlOworCiBwcml2YXRlOgot
ICAgIFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQqIG1fZGF0YUxpc3RTdWdnZXN0
aW9uc0NsaWVudDsKLSAgICBXZWJQYWdlKiBtX3BhZ2U7CisgICAgdm9pZCBoYW5kbGVLZXlkb3du
V2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBkaXNwbGF5V2l0
aEFjdGl2YXRpb25UeXBlKFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBl
KSBmaW5hbDsKKyAgICB2b2lkIGNsb3NlKCkgZmluYWw7CisKKyAgICBXZWJDb3JlOjpEYXRhTGlz
dFN1Z2dlc3Rpb25zQ2xpZW50JiBtX2NsaWVudDsKKyAgICBXZWJQYWdlJiBtX3BhZ2U7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcAppbmRleCA3MWE3ODYwZDU4ZjZkNTIxNTE0ZDMzN2I4YzA3MjE2Njg4
MmYwNmYwLi5kNDVkMTUyNTI5YTIyNDhmMjJmZmY5OWEwMzA0MGQwNzM4MWRkZDE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUsNiAr
NTUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
b2N1bWVudExvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRI
YW5kbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZS5oPgpAQCAtNzEsNyArNzIsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSlNFbGVtZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0ZpbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTUmFuZ2Uu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL05vZGVUcmF2ZXJzYWwuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRvY3VtZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZW5kZXJUcmVlQXNUZXh0Lmg+CkBAIC02NjYsMTcgKzY2Niw4IEBAIGJvb2wgV2Vi
RnJhbWU6OmNvbnRhaW5zQW55Rm9ybUVsZW1lbnRzKCkgY29uc3QKICAgICBpZiAoIW1fY29yZUZy
YW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gbV9jb3JlRnJhbWUtPmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgZm9yIChOb2RlKiBub2RlID0gZG9jdW1lbnQtPmRvY3VtZW50
RWxlbWVudCgpOyBub2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSkpIHsKLSAg
ICAgICAgaWYgKCFpczxFbGVtZW50Pigqbm9kZSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgaWYgKGlzPEhUTUxGb3JtRWxlbWVudD4oKm5vZGUpKQotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvKiBkb2N1bWVudCA9IG1f
Y29yZUZyYW1lLT5kb2N1bWVudCgpOworICAgIHJldHVybiBkb2N1bWVudCAmJiBjaGlsZHJlbk9m
VHlwZTxIVE1MRm9ybUVsZW1lbnQ+KCpkb2N1bWVudCkuZmlyc3QoKTsKIH0KIAogYm9vbCBXZWJG
cmFtZTo6Y29udGFpbnNBbnlGb3JtQ29udHJvbHMoKSBjb25zdApAQCAtNjg0LDE0ICs2NzUsMTIg
QEAgYm9vbCBXZWJGcmFtZTo6Y29udGFpbnNBbnlGb3JtQ29udHJvbHMoKSBjb25zdAogICAgIGlm
ICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBhdXRvKiBkb2N1bWVu
dCA9IG1fY29yZUZyYW1lLT5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGZvciAoTm9kZSogbm9kZSA9IGRvY3VtZW50LT5kb2N1bWVu
dEVsZW1lbnQoKTsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUpKSB7Ci0g
ICAgICAgIGlmICghaXM8RWxlbWVudD4oKm5vZGUpKQotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSkgfHwgaXM8SFRNTFNlbGVjdEVs
ZW1lbnQ+KCpub2RlKSB8fCBpczxIVE1MVGV4dEFyZWFFbGVtZW50Pigqbm9kZSkpCisgICAgZm9y
IChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KCpkb2N1bWVudCkpIHsKKyAg
ICAgICAgaWYgKGlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PihjaGlsZCkgfHwgaXM8SFRN
TFNlbGVjdEVsZW1lbnQ+KGNoaWxkKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IGMwNTRkNTE5ODRjODM2MjU3ZDE1Y2Y3NTExZGNmMjUyNWI3NmFiYjUu
LjBjMzdlZWQ0MTFiNzI0YjZjYjQ1MWFhNjBlZTM4NTk2OTBjNDhjYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00MTAxLDkgKzQxMDEsOSBA
QCB2b2lkIFdlYlBhZ2U6OmRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xv
cikKIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogCi12b2lkIFdlYlBhZ2U6OnNldEFj
dGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIq
IGRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcikKK3ZvaWQgV2ViUGFnZTo6c2V0QWN0aXZlRGF0YUxp
c3RTdWdnZXN0aW9uUGlja2VyKFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlciYgZGF0YUxpc3RT
dWdnZXN0aW9uUGlja2VyKQogewotICAgIG1fYWN0aXZlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2Vy
ID0gbWFrZVdlYWtQdHIoZGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKTsKKyAgICBtX2FjdGl2ZURh
dGFMaXN0U3VnZ2VzdGlvblBpY2tlciA9IG1ha2VXZWFrUHRyKCZkYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXIpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmRpZFNlbGVjdERhdGFMaXN0T3B0aW9uKGNvbnN0
IFN0cmluZyYgc2VsZWN0ZWRPcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKaW5kZXggYTY4OTUzMGYzODM2ZDZmNGNiYjBmNTY5NzJkM2ZlMTEwZTgxMzI1
NS4uYWNmN2U0YWMwNWIwZmVhZTQ1MTA1NTllNmMxZjk3YjkyMGNkOThlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDE3LDcgKzQxNyw3IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAgdm9pZCBz
ZXRBY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyKik7CisgICAgdm9pZCBzZXRBY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoV2ViRGF0
YUxpc3RTdWdnZXN0aW9uUGlja2VyJik7CiAgICAgdm9pZCBkaWRTZWxlY3REYXRhTGlzdE9wdGlv
bihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRpZENsb3NlU3VnZ2VzdGlvbnMoKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQppbmRleCA3ODY1MzEzZTE3YjNjZTA3NTJjZDIxZjcxOWZiMjhiNzRmZGRjZmQ1Li5mMGMy
MGU0MTU0MWMwZjA5NmM4MGFkYjk2Mjc2YTRhN2U4NmNmMzE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjUxMywxMSAr
MjUxMywxMiBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoKQog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlQXV0b2NvcnJlY3Rpb25Db250
ZXh0KGF1dG9jb3JyZWN0aW9uQ29udGV4dCgpKSk7CiB9CiAKLXN0YXRpYyBIVE1MQW5jaG9yRWxl
bWVudCogY29udGFpbmluZ0xpbmtFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCitzdGF0aWMgSFRN
TEFuY2hvckVsZW1lbnQqIGNvbnRhaW5pbmdMaW5rQW5jaG9yRWxlbWVudChFbGVtZW50JiBlbGVt
ZW50KQogewotICAgIGZvciAoYXV0byYgY3VycmVudEVsZW1lbnQgOiBlbGVtZW50TGluZWFnZShl
bGVtZW50KSkgewotICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuaXNMaW5rKCkgJiYgaXM8SFRN
TEFuY2hvckVsZW1lbnQ+KGN1cnJlbnRFbGVtZW50KSkKLSAgICAgICAgICAgIHJldHVybiBkb3du
Y2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oJmN1cnJlbnRFbGVtZW50KTsKKyAgICAvLyBGSVhNRTog
VGhlcmUgaXMgY29kZSBpbiB0aGUgZHJhZyBjb250cm9sbGVyIHRoYXQgc3VwcG9ydHMgYW55IGxp
bmssIGV2ZW4gaWYgaXQncyBub3QgYW4gSFRNTEFuY2hvckVsZW1lbnQuIFdoeSBpcyB0aGlzIGRp
ZmZlcmVudD8KKyAgICBmb3IgKGF1dG8mIGN1cnJlbnRFbGVtZW50IDogbGluZWFnZU9mVHlwZTxI
VE1MQW5jaG9yRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50
LmlzTGluaygpKQorICAgICAgICAgICAgcmV0dXJuICZjdXJyZW50RWxlbWVudDsKICAgICB9CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0yNjg3LDcgKzI2ODgsNyBAQCBzdGF0aWMgdm9pZCBl
bGVtZW50UG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBFbGVtZW50JiBlbGVtZW50
LCBjb25zdCBJbgogewogICAgIEVsZW1lbnQqIGxpbmtFbGVtZW50ID0gbnVsbHB0cjsKICAgICBp
ZiAoZWxlbWVudC5yZW5kZXJlcigpICYmIGVsZW1lbnQucmVuZGVyZXIoKS0+aXNSZW5kZXJJbWFn
ZSgpKQotICAgICAgICBsaW5rRWxlbWVudCA9IGNvbnRhaW5pbmdMaW5rRWxlbWVudCgmZWxlbWVu
dCk7CisgICAgICAgIGxpbmtFbGVtZW50ID0gY29udGFpbmluZ0xpbmtBbmNob3JFbGVtZW50KGVs
ZW1lbnQpOwogICAgIGVsc2UgaWYgKGVsZW1lbnQuaXNMaW5rKCkpCiAgICAgICAgIGxpbmtFbGVt
ZW50ID0gJmVsZW1lbnQ7CiAKQEAgLTI5NTYsNyArMjk1Nyw3IEBAIHZvaWQgV2ViUGFnZTo6cGVy
Zm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCiAgICAgICAgIGlmIChpczxSZW5k
ZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIoKSkpIHsKICAgICAgICAgICAgIFVSTCB1cmw7CiAg
ICAgICAgICAgICBTdHJpbmcgdGl0bGU7Ci0gICAgICAgICAgICBpZiAoYXV0byogbGlua0VsZW1l
bnQgPSBjb250YWluaW5nTGlua0VsZW1lbnQoJmVsZW1lbnQpKSB7CisgICAgICAgICAgICBpZiAo
YXV0byogbGlua0VsZW1lbnQgPSBjb250YWluaW5nTGlua0FuY2hvckVsZW1lbnQoZWxlbWVudCkp
IHsKICAgICAgICAgICAgICAgICB1cmwgPSBsaW5rRWxlbWVudC0+aHJlZigpOwogICAgICAgICAg
ICAgICAgIHRpdGxlID0gbGlua0VsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjp0aXRsZUF0dHIpOwogICAgICAgICAgICAgICAgIGlmICghdGl0bGUubGVu
Z3RoKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KaW5kZXgg
NWMxM2Q2MzdlMWY3ZmY2ZjgyZDkyOTQyOGRmYjgyNTA1YjM4Y2FjOS4uYWRjZDAxN2QzMDY1ZTIz
MmE2N2NhNDI1NTZmMzVjNWNkZTZlY2YwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01Eb2N1bWVudC5tbQpAQCAtMjUsMTMgKzI1LDYgQEAKIAogI2ltcG9ydCAiRE9NRG9jdW1l
bnRJbnRlcm5hbC5oIgogCi0jaW1wb3J0IDxXZWJDb3JlL0F0dHIuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvQ0RBVEFTZWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0NTU1J1bGVMaXN0Lmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL0NTU1N0eWxlRGVjbGFyYXRpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUvQ29t
bWVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZ1bGxzY3JlZW4uaD4KLSNpbXBvcnQg
PFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgIkRPTUFic3RyYWN0Vmlld0ludGVy
bmFsLmgiCiAjaW1wb3J0ICJET01BdHRySW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUNEQVRBU2Vj
dGlvbkludGVybmFsLmgiCkBAIC01NywxNSArNTAsMjIgQEAKICNpbXBvcnQgIkRPTVN0eWxlU2hl
ZXRMaXN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVRleHRJbnRlcm5hbC5oIgogI2ltcG9ydCAi
RE9NVHJlZVdhbGtlckludGVybmFsLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0RPTVdpbmRvdy5oPgog
I2ltcG9ydCAiRE9NWFBhdGhFeHByZXNzaW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVhQYXRo
UmVzdWx0SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCisjaW1wb3J0
ICJPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oIgorI2ltcG9ydCA8V2ViQ29yZS9BdHRyLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0NEQVRBU2VjdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9DU1NSdWxl
TGlzdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9DU1NTdHlsZURlY2xhcmF0aW9uLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0NvbW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NV2luZG93Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50RnJhZ21l
bnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRGdWxsc2NyZWVuLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0RvY3VtZW50VHlwZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0V2ZW50Lmg+Ci0jaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2lt
cG9ydCA8V2ViQ29yZS9IVE1MQ29sbGVjdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MRWxl
bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MSGVhZEVsZW1lbnQuaD4KQEAgLTczLDEyICs3
MywxMSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9OYW1lTm9kZUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvTmF0aXZlTm9kZUZpbHRlci5oPgot
I2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVJdGVyYXRvci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgotI2ltcG9ydCAiT2JqQ05vZGVGaWx0ZXJD
b25kaXRpb24uaCIKICNpbXBvcnQgPFdlYkNvcmUvUHJvY2Vzc2luZ0luc3RydWN0aW9uLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1JhbmdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TdHlsZVNoZWV0TGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0Lmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnRGcmFnbWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tCmluZGV4IDA3
MjkzMGUzOTU4ZTIwYTEyZTNjZTNjNTdlMTk5NGZlM2RkYzE2NWUuLmNmMWEzYzFmODQzN2JkNWJl
OTIwZDg4NGUzNWFjMDUzZjg5Zjg0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tCkBAIC0zMiw3ICszMiw2IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0RvY3VtZW50RnJhZ21lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWxlbWVudC5o
PgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKLSNpbXBvcnQgPFdlYkNvcmUvSFRNTENv
bGxlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTmFtZU5vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0Lmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRmllbGRTZXRFbGVtZW50
Lm1tCmluZGV4IGE0YzFiNjA4YzE2ZDIxZTU4NzcxMDE1MjY3NzliYTY0NTUwNjkwYzMuLmZkOTk0
YWI1YmUxNGVjYzNiMjE0Zjk0NTIxYzhkMzAzYTk2YjkyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRmllbGRTZXRFbGVtZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRmllbGRTZXRFbGVtZW50Lm1tCkBAIC0yNSwy
MSArMjUsMTAgQEAKIAogI2ltcG9ydCAiRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogCi0jaW1w
b3J0ICJET01IVE1MQ29sbGVjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJET01IVE1MRm9ybUVs
ZW1lbnRJbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTU5v
ZGVJbnRlcm5hbC5oIgotI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKLSNpbXBvcnQgPFdl
YkNvcmUvSFRNTENvbGxlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTEZpZWxkU2V0RWxl
bWVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9IVE1MRm9ybUVsZW1lbnQuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1ZhbGlkaXR5U3Rh
dGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9y
dCA8d3RmL0dldFB0ci5oPgotI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0KaW5kZXggNWM1MWQ0OGZlMzI2OTM3NTlhODQ1
ZTJkNGM3ZTgzNDFjNGEyMDZhZS4uNjZiYWU2OWY0NTU3MDRmNTdjNDNiYThhNDMxYjc1MmYyNzY4
N2MxOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9t
YWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0KKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhh
bmRsZXIubW0KQEAgLTI5LDEyICsyOSwxMyBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaCIKKworI2ltcG9ydCAi
QWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIgorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oIgogI2ltcG9ydCAiSW5qZWN0ZWRCdW5kbGUuaCIKICNpbXBvcnQgIkluamVjdGVkQnVuZGxl
UGFnZS5oIgogI2ltcG9ydCAiSlNXcmFwcGVyLmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlci5oIgotI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgot
CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgogI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5n
UmVmQ0YuaD4KQEAgLTQ2LDE5ICs0Nyw2IEBAIEBpbnRlcmZhY2UgTlNPYmplY3QgKFdlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQWRkaXRpb25zKQogKyAodm9pZClhY2Nlc3NpYmlsaXR5U2V0
U2hvdWxkUmVwb3N0Tm90aWZpY2F0aW9uczooQk9PTClyZXBvc3Q7CiBAZW5kCiAKLUBpbnRlcmZh
Y2UgTlNTdHJpbmcgKEpTU3RyaW5nUmVmQWRkaXRpb25zKQotLSAoSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+KWNyZWF0ZUpTU3RyaW5nUmVmOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gTlNTdHJp
bmcgKEpTU3RyaW5nUmVmQWRkaXRpb25zKQotCi0tIChKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4p
Y3JlYXRlSlNTdHJpbmdSZWYKLXsKLSAgICByZXR1cm4gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRo
Q0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXNlbGYpKTsKLX0KLQotQGVuZAotCiBAaW1w
bGVtZW50YXRpb24gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIKIAogLSAoaWQpaW5p
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGQ4NzIzYWIzYWI4NTk2ZmM5MDVmZmM2NGY0YWY3OGUxYWNjZjFiYzguLmE5NDUy
ODIyMzc1NjYxNWI3MjY0YmJkMzIyN2MzNmE4NjUzZTUzZTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBA
QAorMjAyMC0wMi0xOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aXNlIERPTSBpdGVyYXRvcnMgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvZGF0YWxp
c3QvZGF0YWxpc3QtZXhwZWN0ZWQudHh0OiBVcGRhdGVkIGV4cGVjdGF0aW9ucy4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0Lmh0bWw6IFVwZGF0ZWQgdGVzdCBzaW5jZSB0
aGUgb3B0aW9ucyBjb2xsZWN0aW9uCisgICAgICAgIGRvZXMgbm90IGluZGljYXRlIHdoaWNoIG9w
dGlvbnMgYXJlIHN1Z2dlc3Rpb25zIGFuZCB3aGljaCBhcmUgbm90LiBUaGUgd2ViCisgICAgICAg
IHBsYXRmb3JtIHRlc3RzIGFscmVhZHkgaGFkIHRoaXMgcmlnaHQsIHdoaWNoIGlzIHdoeSB3ZSBo
YWQgYSBmYWlsaW5nIHRlc3QgdGhlcmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnM6IFJlbW92ZWQgc29tZSBsaW5lcyBmb3IgdGVzdCB0aGF0IGRvbid0Cisg
ICAgICAgIGV4aXN0IGF0IHRoZSBwYXRocyBtZW50aW9uZWQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMtd2sxL2Zhc3QvZm9ybXMvZm9ybS1wc2V1ZG8tdmFsaWQtc3R5bGUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMvY29uc3RyYWludHMvZm9ybS12YWxpZGF0
aW9uLXdpbGxWYWxpZGF0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9mYXN0L2Zvcm1zL2Zvcm0tcHNldWRvLXZhbGlkLXN0eWxlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgIEV4cGVjdCBmYWlsdXJlIG9uIHRoZSBwYXJ0cyBvZiB0aGVzZSB0ZXN0cyB0
aGF0IGFyZSBzcGVjaWZpYyB0byBkYXRhbGlzdCwgc2luY2UKKyAgICAgICAgZGF0YWxpc3QgaXMg
bm90IGVuYWJsZWQgaW4gdGhlc2UgY29uZmlndXJhdGlvbnMuIEJlZm9yZSBub3csIHRoZSBjb2Rl
IHdhc24ndAorICAgICAgICBwcm9wZXJseSBjb25kaXRpb25hbGl6ZWQgYW5kIHNvbWUgb2YgdGhl
IGRhdGFsaXN0IGJlaGF2aW9yIHdvdWxkIGJlIGFjdGl2ZSBldmVuCisgICAgICAgIHdoZW4gdGhl
IGZlYXR1cmUgd2FzIGRpc2FibGVkLiBCZXN0IGxvbmdlciB0ZXJtIHNvbHV0aW9uIGlzIHRvIHR1
cm4gdGhpcyBmZWF0dXJlCisgICAgICAgIG9uIGZvciBtb3JlIHBsYXRmb3JtcywgcGVyaGFwcyBh
bGwgb2YgdGhlbS4gRm9yIG5vdywgbGFuZGVkIG5ldyBleHBlY3RlZCByZXN1bHRzCisgICAgICAg
IGZvciBjYXNlcyB0aGF0IEVXUyBpbmRpY2F0ZWQuCisKIDIwMjAtMDItMjAgIEphc29uIExhd3Jl
bmNlICA8bGF3cmVuY2UuakBhcHBsZS5jb20+CiAKICAgICAgICAgWyBpT1Mgd2syIF0gaHR0cC93
cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1wdXQta2V5cy5odHRwcy5hbnkud29ya2VyLmh0bWwgaXMg
Zmxha3kgZmFpbGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGVmMDE0Nzg3
YjA2ZDY2NzFlN2ViNzFlYjY3ZjViMTVhZjkzOWEyODIuLjQ5ZGM3N2ZjNmI5YTMxYThlYjU2NTRj
ZDI2YTAwYzUwZDNmMjc0MjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDIwLTAyLTE4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpc2UgRE9NIGl0ZXJhdG9ycyBpbXBsZW1lbnRhdGlvbiBhbmQgdXNhZ2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzgxNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS1kYXRhbGlzdC1lbGVtZW50L2RhdGFs
aXN0b3B0aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgIEV4cGVjdCB0aGlzIHRlc3QgdG8gcGFz
cyBpbnN0ZWFkIG9mIGZhaWxpbmcuCisKIDIwMjAtMDItMjAgIFJvYiBCdWlzICA8cmJ1aXNAaWdh
bGlhLmNvbT4KIAogICAgICAgICBMYXp5IGxvYWQgaW1hZ2VzIHVzaW5nIGJhc2UgdXJsIGF0IHBh
cnNlIHRpbWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0
YWxpc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRh
bGlzdC1leHBlY3RlZC50eHQKaW5kZXggNDYwOTQ4OTA0Y2QyMDE5OWYxZDkxMjZiODJjMTRkN2I5
YzQwNDc2ZS4uY2JhNjUwNTcyNzZmNGFmMTU3OTAyODk5ZTFmMzU2ZDM0Y2EwMjkyNyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1leHBlY3Rl
ZC50eHQKQEAgLTMsOCArMyw4IEBAIFRlc3QgZm9yIHRoZSBkYXRhbGlzdCBlbGVtZW50LgogT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgZGF0YWxpc3Qub3B0aW9ucy5sZW5ndGgg
aXMgNAotUEFTUyBkYXRhbGlzdC5vcHRpb25zLmxlbmd0aCBpcyAzCitQQVNTIGRhdGFsaXN0Lm9w
dGlvbnMubGVuZ3RoIGlzIDUKK1BBU1MgZGF0YWxpc3Qub3B0aW9ucy5sZW5ndGggaXMgNQogUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0Lmh0bWwKaW5kZXggNTYxYjY2YjVjNWQy
MjI4ZjgzYjVkODIxNTk3OWYwNTg5MTAxNzkzNS4uY2FjMTVlZjEyYmJlZjliNTM2MzIxZDlkZWY0
NTA1M2IxM2FkNzNkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlz
dC9kYXRhbGlzdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0
YWxpc3QuaHRtbApAQCAtMSw3ICsxLDcgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KIDxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgpAQCAtMTcsMTggKzE3LDIwIEBACiA8L2RhdGFsaXN0PgogCiA8
c2NyaXB0PgorCiBkZXNjcmlwdGlvbignVGVzdCBmb3IgdGhlIGRhdGFsaXN0IGVsZW1lbnQuJyk7
CiAKIHZhciBkYXRhbGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkbDEnKTsKLS8vIEFu
IG9wdGlvbiBlbGVtZW50IHdpdGggZW1wdHkgdmFsdWUgaXMgbm90IGluY2x1ZGVkLgotc2hvdWxk
QmUoJ2RhdGFsaXN0Lm9wdGlvbnMubGVuZ3RoJywgJzQnKTsKIAorLy8gQW4gb3B0aW9uIGVsZW1l
bnQgd2l0aCBlbXB0eSB2YWx1ZSBpcyBub3QgYSBzdWdnZXN0aW9uLCBidXQgc3RpbGwgaXMgaW5j
bHVkZWQgaW4gdGhlIG9wdGlvbnMgY29sbGVjdGlvbi4KK3Nob3VsZEJlKCdkYXRhbGlzdC5vcHRp
b25zLmxlbmd0aCcsICc1Jyk7CisKKy8vIEEgZGlzYWJsZWQgb3B0aW9uIGVsZW1lbnQgaXMgbm8g
bG9uZ2VyIGEgc3VnZ2VzdGlvbiwgYnV0IHN0aWxsIGlzIGluY2x1ZGVkIGluIHRoZSBvcHRpb25z
IGNvbGxlY3Rpb24uCiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbzQnKS5kaXNhYmxlZCA9IHRy
dWU7Ci0vLyBBIGRpc2FibGVkIG9wdGlvbiBlbGVtZW50IGlzIG5vdCBpbmNsdWRlZC4KLXNob3Vs
ZEJlKCdkYXRhbGlzdC5vcHRpb25zLmxlbmd0aCcsICczJyk7Ci0vLyBBZnRlciBkYXRhbGlzdCBp
cyBpbXBsZW1lbnRlZCwgdGhlIGV4cGVjdGVkIHRleHQgc2hvdWxkIG5vdCBjb250YWluIHRoZQot
Ly8gdGV4dCBpbiB0aGUgZGF0YWxpc3QgZWxlbWVudC4KK3Nob3VsZEJlKCdkYXRhbGlzdC5vcHRp
b25zLmxlbmd0aCcsICc1Jyk7CisKKy8vIEFsc28sIHRoZSBleHBlY3RlZCB0ZXh0IHNob3VsZCBu
b3QgY29udGFpbiB0aGUgdGV4dCBpbiB0aGUgZGF0YWxpc3QgZWxlbWVudC4KKwogPC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS1kYXRhbGlzdC1l
bGVtZW50L2RhdGFsaXN0b3B0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS1kYXRhbGlz
dC1lbGVtZW50L2RhdGFsaXN0b3B0aW9ucy1leHBlY3RlZC50eHQKaW5kZXggYjVjNmU5NTM0NDNj
ZTk0YjhmNzljM2JmOGQzZDc1YjBiYzAwMDljYy4uMzU0NWE3ZTg5NzE4YzE1OTEyMmFkYTg3Yzlj
NjZhZTNhMzI5OTY4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy90aGUtZGF0YWxpc3QtZWxlbWVudC9k
YXRhbGlzdG9wdGlvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWRhdGFsaXN0LWVs
ZW1lbnQvZGF0YWxpc3RvcHRpb25zLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIAotRkFJ
TCBvcHRpb25zIGxhYmVsL3ZhbHVlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDUgYnV0IGdvdCAz
CitQQVNTIG9wdGlvbnMgbGFiZWwvdmFsdWUgCiBQQVNTIElmIGFuIGVsZW1lbnQgaGFzIGEgZGF0
YWxpc3QgZWxlbWVudCBhbmNlc3RvciwgaXQgaXMgYmFycmVkIGZyb20gY29uc3RyYWludCB2YWxp
ZGF0aW9uIAogTnVtYmVyOiAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggMjBlZDYwM2M5MTQ1YWVmM2ZjN2FhMWQ1NmQ2MTEzZWQ2MGY0Nzlj
ZS4uMDBiNGQzZTRhY2IyYjhkYjQ2NWRhNGRmODY5NWQ5MzI4ZWUxYWE0OSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDUxLDkgKzQ1MSw2
IEBAIGltcG9ydGVkL2JsaW5rL3N2Zy9jdXN0b20vbWFya2VyLWxheW91dC1pbnZhbGlkYXRpb24u
aHRtbCBbIFBhc3MgVGltZW91dCBdCiBpbXBvcnRlZC9ibGluay9mYXN0L2Nzcy9jcmFzaC1jb3Ju
ZXItcHJlc2VudC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIGltcG9ydGVkL2JsaW5rL2NvbXBvc2l0
aW5nL2xheWVyLWNyZWF0aW9uL2lmcmFtZS1jbGlwLXJlbW92ZWQuaHRtbCBbIFBhc3MgVGltZW91
dCBdCiAKLSMgQVNBTiB0ZXN0IG9ubHkgZmFpbHMgb24gV0sxOgotd2ViZ2wvMS4wLjMvMTUxMDU1
X2FzYW4uaHRtbCBbIEZhaWx1cmUgXQotCiAjIExhY2tpbmcgV0sxIFRlc3RSdW5uZXIgQVBJIHRo
YXQgZXZhbHVhdGVzIEphdmFTY3JpcHQgdGhyb3VnaCBKU0MgQVBJcyBhbmQgbm90IFdlYkNvcmUg
QVBJcy4KIGluc3BlY3Rvci9zY3JpcHQtcHJvZmlsZXIvZXZlbnQtdHlwZS1BUEkuaHRtbCBbIFNr
aXAgXQogCkBAIC03ODMsOCArNzgwLDYgQEAgd2Via2l0Lm9yZy9iLzE5MDM1MCBbIE1vamF2ZSBd
IHN0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLW9kZC1uYW1lcy5odG1sIFsgRmFpbHUKIAogd2Vi
a2l0Lm9yZy9iLzE5MDgzMiBbIERlYnVnIF0gZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXRvLW5v
bi1lZGl0ZWQtY29udHJvbHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8x
OTA4MzMgWyBEZWJ1ZyBdIGluc3BlY3Rvci9jb2RlbWlycm9yL3ByZXR0eXByaW50aW5nLWNzcy5o
dG1sIFsgU2xvdyBdCi0KIHdlYmtpdC5vcmcvYi8xOTA4NDkgaHR0cC90ZXN0cy9zZWN1cml0eS9Y
RnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1tdWx0aXBsZS1oZWFkZXJzLXNhbWVvcmlnaW4t
ZGVueS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE4NjQwNiBbIE1vamF2
ZSsgXSBjb21wb3NpdGluZy9pZnJhbWVzL2Rpc3BsYXktbm9uZS1zdWJmcmFtZS5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvZmFz
dC9mb3Jtcy9mb3JtLXBzZXVkby12YWxpZC1zdHlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2sxL2Zhc3QvZm9ybXMvZm9ybS1wc2V1ZG8tdmFsaWQtc3R5bGUtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0M2ZhYTc1MTc1MzE3MmQxMmJlOTQxZDdmOThhYzg3ZTVk
NjY5NjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2Zh
c3QvZm9ybXMvZm9ybS1wc2V1ZG8tdmFsaWQtc3R5bGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NTQgQEAKK0NoZWNrIGlmIDp2YWxpZC86aW52YWxpZCBDU1MgcHNldWRvIHNlbGVjdG9ycyBhcmUg
bGl2ZWx5IGFwcGxpZWQgZm9yIGZvcm1zCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitSZW1vdmluZyBhbmQgYWRkaW5nIHJlcXVpcmVkIHRleHQgaW5wdXRzIGFuZCBtb2RpZnlpbmcg
dGhlaXIgdmFsdWUgYnkgYSBET00gdHJlZSBtdXRhdGlvbjoKK1BBU1MgYmFja2dyb3VuZE9mKGZv
cm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1YkludmFs
aWRDb2xvcgorUEFTUyBmb3JtMS5yZW1vdmVDaGlsZChpbnB1dDEpOyBiYWNrZ3JvdW5kT2YoZm9y
bTEpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1YlZhbGlkQ29s
b3IKK1BBU1MgZm9ybTEuYXBwZW5kQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0xKSBp
cyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1YkludmFsaWRDb2xv
cgorUEFTUyBpbnB1dDEuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsICJhIik7IGJhY2tncm91bmRPZihm
b3JtMSkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViVmFsaWRD
b2xvcgorUEFTUyBpbnB1dDIuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsICIiKTsgYmFja2dyb3VuZE9m
KGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1Yklu
dmFsaWRDb2xvcgorCitEaXNhYmxpbmcgYW5kIG1hcmtpbmcgaW5wdXRzIHJlYWRvbmx5IGJ5IGEg
RE9NIHRyZWUgbXV0YXRpb246CitQQVNTIGJhY2tncm91bmRPZihmb3JtMSkgaXMgaW52YWxpZENv
bG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJJbnZhbGlkQ29sb3IKK1BBU1MgaW5w
dXQxLmRpc2FibGVkPTE7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFTUyBi
YWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViVmFsaWRDb2xvcgorUEFTUyBpbnB1dDEuZGlzYWJsZWQ9
MDsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9m
KHN1YjEpIGlzIHN1YkludmFsaWRDb2xvcgorUEFTUyBpbnB1dDEuc2V0QXR0cmlidXRlKCJyZWFk
b25seSIsICIxIik7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNr
Z3JvdW5kT2Yoc3ViMSkgaXMgc3ViVmFsaWRDb2xvcgorCitNb3ZlIGVsZW1lbnQgdW5kZXIgZGF0
YWxpc3QgYnkgYSBET00gdHJlZSBtdXRhdGlvbjoKK1BBU1MgYmFja2dyb3VuZE9mKGZvcm0xKSBp
cyBpbnZhbGlkQ29sb3IKK1BBU1MgcGFyZW50LnJlbW92ZUNoaWxkKGlucHV0MSk7IGJhY2tncm91
bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorRkFJTCBkbDEuYXBwZW5kQ2hpbGQoaW5wdXQxKTsg
YmFja2dyb3VuZE9mKGZvcm0xKSBzaG91bGQgYmUgcmdiKDAsIDI1NSwgMCkuIFdhcyByZ2IoMjU1
LCAwLCAwKS4KK1BBU1MgcGFyZW50LmFwcGVuZENoaWxkKGlucHV0MSk7IGJhY2tncm91bmRPZihm
b3JtMSkgaXMgaW52YWxpZENvbG9yCisKK0FkZGluZyBhIHJlcXVpcmVkIHRleHQgaW5wdXQgdGhh
dCBpcyBub3QgYSBkaXJlY3QgY2hpbGQgb2YgdGhlIGZvcm06CitQQVNTIGJhY2tncm91bmRPZihm
b3JtMSkgaXMgdmFsaWRDb2xvcgorUEFTUyBkaXYxLmFwcGVuZENoaWxkKGlucHV0MSk7IGJhY2tn
cm91bmRPZihmb3JtMSkgaXMgaW52YWxpZENvbG9yCisKK1JlbmRlciBtdWx0aXBsZSBmb3JtcyBh
bmQgcmVhc3NpZ24gYW4gaW52YWxpZCBpbnB1dCBmcm9tIG9uZSB0byBhbm90aGVyOgorUEFTUyBi
YWNrZ3JvdW5kT2YoJCgiZm9ybTEiKSkgaXMgaW52YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRP
ZigkKCJmb3JtMiIpKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZigkKCJmb3JtMyIp
KSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZigkKCJmb3JtMSIpKSBpcyB2YWxpZENv
bG9yCitQQVNTIGJhY2tncm91bmRPZigkKCJmb3JtMyIpKSBpcyBpbnZhbGlkQ29sb3IKKworRW5z
dXJlIHRoYXQgaW52YWxpZCBldmVudCB3YXMgbm90IHRyaWdnZXJlZCBvbiBzdHlsZSBldmFsdWF0
aW9uOgorUEFTUyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyB2YWwg
aXMgIjAiCitQQVNTIGZvcm0xLmNoZWNrVmFsaWRpdHkoKTsgdmFsIGlzICIxIgorCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCitTb21lIHRlc3RzIGZhaWxlZC4KKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMvY29uc3RyYWludHMv
Zm9ybS12YWxpZGF0aW9uLXdpbGxWYWxpZGF0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZm9ybXMvY29uc3RyYWludHMvZm9ybS12YWxpZGF0aW9uLXdpbGxWYWxpZGF0ZS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2VkNTM2ODA0M2U4YzE3ZGRmZTg4MmEzNTM1NWE1YTQ3MmY3
NjU1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy9jb25zdHJh
aW50cy9mb3JtLXZhbGlkYXRpb24td2lsbFZhbGlkYXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDU3IEBACisKK1BBU1MgW0lOUFVUIGluIEhJRERFTiBzdGF0dXNdIE11c3QgYmUgYmFycmVkIGZy
b20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiAKK1BBU1MgW0lOUFVUIGluIEJVVFRPTiBzdGF0
dXNdIE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiAKK1BBU1Mg
W0lOUFVUIGluIFJFU0VUIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWlu
dCB2YWxpZGF0aW9uIAorUEFTUyBbQlVUVE9OIGluIEJVVFRPTiBzdGF0dXNdIE11c3QgYmUgYmFy
cmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiAKK1BBU1MgW0JVVFRPTiBpbiBSRVNF
VCBzdGF0dXNdIE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiAK
K1BBU1MgW2ZpZWxkc2V0XSAgVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSBmYWxz
ZSBzaW5jZSBGSUVMRFNFVCBpcyBub3QgYSBzdWJtaXR0YWJsZSBlbGVtZW50IAorUEFTUyBbb3V0
cHV0XSAgVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSBmYWxzZSBzaW5jZSBPVVRQ
VVQgaXMgbm90IGEgc3VibWl0dGFibGUgZWxlbWVudCAKK1BBU1MgW29iamVjdF0gIE11c3QgYmUg
YmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiAKK1BBU1MgW0lOUFVUIGluIFRF
WFQgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24g
aWYgaXQgaXMgZGlzYWJsZWQgCitQQVNTIFtJTlBVVCBpbiBURVhUIHN0YXR1c10gVGhlIHdpbGxW
YWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSB0cnVlIGlmIGFuIGVsZW1lbnQgaXMgbXV0YWJsZSAK
K1BBU1MgW0lOUFVUIGluIFRFWFQgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25z
dHJhaW50IHZhbGlkYXRpb24gaWYgaXQgaXMgcmVhZG9ubHkgCitQQVNTIFtJTlBVVCBpbiBURVhU
IHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSBmYWxzZSBpZiBpdCBo
YXMgYSBkYXRhbGlzdCBhbmNlc3RvciAKK1BBU1MgW0lOUFVUIGluIFNFQVJDSCBzdGF0dXNdIE11
c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyBkaXNh
YmxlZCAKK1BBU1MgW0lOUFVUIGluIFNFQVJDSCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0
cmlidXRlIG11c3QgYmUgdHJ1ZSBpZiBhbiBlbGVtZW50IGlzIG11dGFibGUgCitQQVNTIFtJTlBV
VCBpbiBTRUFSQ0ggc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZh
bGlkYXRpb24gaWYgaXQgaXMgcmVhZG9ubHkgCitQQVNTIFtJTlBVVCBpbiBTRUFSQ0ggc3RhdHVz
XSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIGZhbHNlIGlmIGl0IGhhcyBhIGRh
dGFsaXN0IGFuY2VzdG9yIAorUEFTUyBbSU5QVVQgaW4gVEVMIHN0YXR1c10gTXVzdCBiZSBiYXJy
ZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIGRpc2FibGVkIAorUEFT
UyBbSU5QVVQgaW4gVEVMIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBi
ZSB0cnVlIGlmIGFuIGVsZW1lbnQgaXMgbXV0YWJsZSAKK1BBU1MgW0lOUFVUIGluIFRFTCBzdGF0
dXNdIE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBp
cyByZWFkb25seSAKK1BBU1MgW0lOUFVUIGluIFRFTCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUg
YXR0cmlidXRlIG11c3QgYmUgZmFsc2UgaWYgaXQgaGFzIGEgZGF0YWxpc3QgYW5jZXN0b3IgCitQ
QVNTIFtJTlBVVCBpbiBVUkwgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJh
aW50IHZhbGlkYXRpb24gaWYgaXQgaXMgZGlzYWJsZWQgCitQQVNTIFtJTlBVVCBpbiBVUkwgc3Rh
dHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIHRydWUgaWYgYW4gZWxlbWVu
dCBpcyBtdXRhYmxlIAorUEFTUyBbSU5QVVQgaW4gVVJMIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQg
ZnJvbSB0aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIHJlYWRvbmx5IAorUEFTUyBb
SU5QVVQgaW4gVVJMIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSBm
YWxzZSBpZiBpdCBoYXMgYSBkYXRhbGlzdCBhbmNlc3RvciAKK1BBU1MgW0lOUFVUIGluIEVNQUlM
IHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIGlm
IGl0IGlzIGRpc2FibGVkIAorUEFTUyBbSU5QVVQgaW4gRU1BSUwgc3RhdHVzXSBUaGUgd2lsbFZh
bGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIHRydWUgaWYgYW4gZWxlbWVudCBpcyBtdXRhYmxlIAor
UEFTUyBbSU5QVVQgaW4gRU1BSUwgc3RhdHVzXSBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25z
dHJhaW50IHZhbGlkYXRpb24gaWYgaXQgaXMgcmVhZG9ubHkgCitQQVNTIFtJTlBVVCBpbiBFTUFJ
TCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgZmFsc2UgaWYgaXQg
aGFzIGEgZGF0YWxpc3QgYW5jZXN0b3IgCitQQVNTIFtJTlBVVCBpbiBQQVNTV09SRCBzdGF0dXNd
IE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyBk
aXNhYmxlZCAKK1BBU1MgW0lOUFVUIGluIFBBU1NXT1JEIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0
ZSBhdHRyaWJ1dGUgbXVzdCBiZSB0cnVlIGlmIGFuIGVsZW1lbnQgaXMgbXV0YWJsZSAKK1BBU1Mg
W0lOUFVUIGluIFBBU1NXT1JEIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29uc3Ry
YWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIHJlYWRvbmx5IAorUEFTUyBbSU5QVVQgaW4gUEFTU1dP
UkQgc3RhdHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIGZhbHNlIGlmIGl0
IGhhcyBhIGRhdGFsaXN0IGFuY2VzdG9yIAorRkFJTCBbSU5QVVQgaW4gREFURVRJTUUtTE9DQUwg
c3RhdHVzXSBUaGUgZGF0ZXRpbWUtbG9jYWwgdHlwZSBtdXN0IGJlIHN1cHBvcnRlZC4gYXNzZXJ0
X2VxdWFsczogVGhlIGRhdGV0aW1lLWxvY2FsIHR5cGUgc2hvdWxkIGJlIHN1cHBvcnRlZC4gZXhw
ZWN0ZWQgImRhdGV0aW1lLWxvY2FsIiBidXQgZ290ICJ0ZXh0IgorRkFJTCBbSU5QVVQgaW4gREFU
RSBzdGF0dXNdIFRoZSBkYXRlIHR5cGUgbXVzdCBiZSBzdXBwb3J0ZWQuIGFzc2VydF9lcXVhbHM6
IFRoZSBkYXRlIHR5cGUgc2hvdWxkIGJlIHN1cHBvcnRlZC4gZXhwZWN0ZWQgImRhdGUiIGJ1dCBn
b3QgInRleHQiCitGQUlMIFtJTlBVVCBpbiBNT05USCBzdGF0dXNdIFRoZSBtb250aCB0eXBlIG11
c3QgYmUgc3VwcG9ydGVkLiBhc3NlcnRfZXF1YWxzOiBUaGUgbW9udGggdHlwZSBzaG91bGQgYmUg
c3VwcG9ydGVkLiBleHBlY3RlZCAibW9udGgiIGJ1dCBnb3QgInRleHQiCitGQUlMIFtJTlBVVCBp
biBXRUVLIHN0YXR1c10gVGhlIHdlZWsgdHlwZSBtdXN0IGJlIHN1cHBvcnRlZC4gYXNzZXJ0X2Vx
dWFsczogVGhlIHdlZWsgdHlwZSBzaG91bGQgYmUgc3VwcG9ydGVkLiBleHBlY3RlZCAid2VlayIg
YnV0IGdvdCAidGV4dCIKK0ZBSUwgW0lOUFVUIGluIFRJTUUgc3RhdHVzXSBUaGUgdGltZSB0eXBl
IG11c3QgYmUgc3VwcG9ydGVkLiBhc3NlcnRfZXF1YWxzOiBUaGUgdGltZSB0eXBlIHNob3VsZCBi
ZSBzdXBwb3J0ZWQuIGV4cGVjdGVkICJ0aW1lIiBidXQgZ290ICJ0ZXh0IgorRkFJTCBbSU5QVVQg
aW4gQ09MT1Igc3RhdHVzXSBUaGUgY29sb3IgdHlwZSBtdXN0IGJlIHN1cHBvcnRlZC4gYXNzZXJ0
X2VxdWFsczogVGhlIGNvbG9yIHR5cGUgc2hvdWxkIGJlIHN1cHBvcnRlZC4gZXhwZWN0ZWQgImNv
bG9yIiBidXQgZ290ICJ0ZXh0IgorUEFTUyBbSU5QVVQgaW4gRklMRSBzdGF0dXNdIE11c3QgYmUg
YmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyBkaXNhYmxlZCAK
K1BBU1MgW0lOUFVUIGluIEZJTEUgc3RhdHVzXSBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBt
dXN0IGJlIHRydWUgaWYgYW4gZWxlbWVudCBpcyBtdXRhYmxlIAorUEFTUyBbSU5QVVQgaW4gRklM
RSBzdGF0dXNdIE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBp
ZiBpdCBpcyByZWFkb25seSAKK1BBU1MgW0lOUFVUIGluIEZJTEUgc3RhdHVzXSBUaGUgd2lsbFZh
bGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIGZhbHNlIGlmIGl0IGhhcyBhIGRhdGFsaXN0IGFuY2Vz
dG9yIAorUEFTUyBbSU5QVVQgaW4gU1VCTUlUIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0
aGUgY29uc3RyYWludCB2YWxpZGF0aW9uIGlmIGl0IGlzIGRpc2FibGVkIAorUEFTUyBbSU5QVVQg
aW4gU1VCTUlUIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRyaWJ1dGUgbXVzdCBiZSB0cnVl
IGlmIGFuIGVsZW1lbnQgaXMgbXV0YWJsZSAKK1BBU1MgW0lOUFVUIGluIFNVQk1JVCBzdGF0dXNd
IE11c3QgYmUgYmFycmVkIGZyb20gdGhlIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBpZiBpdCBpcyBy
ZWFkb25seSAKK1BBU1MgW0lOUFVUIGluIFNVQk1JVCBzdGF0dXNdIFRoZSB3aWxsVmFsaWRhdGUg
YXR0cmlidXRlIG11c3QgYmUgZmFsc2UgaWYgaXQgaGFzIGEgZGF0YWxpc3QgYW5jZXN0b3IgCitQ
QVNTIFtCVVRUT04gaW4gU1VCTUlUIHN0YXR1c10gTXVzdCBiZSBiYXJyZWQgZnJvbSB0aGUgY29u
c3RyYWludCB2YWxpZGF0aW9uIAorUEFTUyBbQlVUVE9OIGluIFNVQk1JVCBzdGF0dXNdIFRoZSB3
aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgdHJ1ZSBpZiBhbiBlbGVtZW50IGlzIG11dGFi
bGUgCitGQUlMIFtCVVRUT04gaW4gU1VCTUlUIHN0YXR1c10gVGhlIHdpbGxWYWxpZGF0ZSBhdHRy
aWJ1dGUgbXVzdCBiZSBmYWxzZSBpZiBpdCBoYXMgYSBkYXRhbGlzdCBhbmNlc3RvciBhc3NlcnRf
ZmFsc2U6IFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIHNob3VsZCBiZSBmYWxzZS4gZXhwZWN0
ZWQgZmFsc2UgZ290IHRydWUKK1BBU1MgW3NlbGVjdF0gIE11c3QgYmUgYmFycmVkIGZyb20gdGhl
IGNvbnN0cmFpbnQgdmFsaWRhdGlvbiAKK1BBU1MgW3NlbGVjdF0gIFRoZSB3aWxsVmFsaWRhdGUg
YXR0cmlidXRlIG11c3QgYmUgdHJ1ZSBpZiBhbiBlbGVtZW50IGlzIG11dGFibGUgCitGQUlMIFtz
ZWxlY3RdICBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBtdXN0IGJlIGZhbHNlIGlmIGl0IGhh
cyBhIGRhdGFsaXN0IGFuY2VzdG9yIGFzc2VydF9mYWxzZTogVGhlIHdpbGxWYWxpZGF0ZSBhdHRy
aWJ1dGUgc2hvdWxkIGJlIGZhbHNlLiBleHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQorUEFTUyBbdGV4
dGFyZWFdICBNdXN0IGJlIGJhcnJlZCBmcm9tIHRoZSBjb25zdHJhaW50IHZhbGlkYXRpb24gCitQ
QVNTIFt0ZXh0YXJlYV0gIFRoZSB3aWxsVmFsaWRhdGUgYXR0cmlidXRlIG11c3QgYmUgdHJ1ZSBp
ZiBhbiBlbGVtZW50IGlzIG11dGFibGUgCitGQUlMIFt0ZXh0YXJlYV0gIFRoZSB3aWxsVmFsaWRh
dGUgYXR0cmlidXRlIG11c3QgYmUgZmFsc2UgaWYgaXQgaGFzIGEgZGF0YWxpc3QgYW5jZXN0b3Ig
YXNzZXJ0X2ZhbHNlOiBUaGUgd2lsbFZhbGlkYXRlIGF0dHJpYnV0ZSBzaG91bGQgYmUgZmFsc2Uu
IGV4cGVjdGVkIGZhbHNlIGdvdCB0cnVlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9mYXN0L2Zvcm1zL2Zvcm0tcHNldWRvLXZhbGlkLXN0eWxlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2Zvcm1zL2Zvcm0tcHNldWRvLXZhbGlkLXN0
eWxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDNmYWE3NTE3NTMxNzJkMTJiZTk0MWQ3Zjk4
YWM4N2U1ZDY2OTYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L2Zhc3QvZm9ybXMvZm9ybS1wc2V1ZG8tdmFsaWQtc3R5bGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNTQgQEAKK0NoZWNrIGlmIDp2YWxpZC86aW52YWxpZCBDU1MgcHNldWRvIHNlbGVjdG9ycyBh
cmUgbGl2ZWx5IGFwcGxpZWQgZm9yIGZvcm1zCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitSZW1vdmluZyBhbmQgYWRkaW5nIHJlcXVpcmVkIHRleHQgaW5wdXRzIGFuZCBtb2RpZnlp
bmcgdGhlaXIgdmFsdWUgYnkgYSBET00gdHJlZSBtdXRhdGlvbjoKK1BBU1MgYmFja2dyb3VuZE9m
KGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1Yklu
dmFsaWRDb2xvcgorUEFTUyBmb3JtMS5yZW1vdmVDaGlsZChpbnB1dDEpOyBiYWNrZ3JvdW5kT2Yo
Zm9ybTEpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1YlZhbGlk
Q29sb3IKK1BBU1MgZm9ybTEuYXBwZW5kQ2hpbGQoaW5wdXQxKTsgYmFja2dyb3VuZE9mKGZvcm0x
KSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1YkludmFsaWRD
b2xvcgorUEFTUyBpbnB1dDEuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsICJhIik7IGJhY2tncm91bmRP
Zihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViVmFs
aWRDb2xvcgorUEFTUyBpbnB1dDIuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsICIiKTsgYmFja2dyb3Vu
ZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKHN1YjEpIGlzIHN1
YkludmFsaWRDb2xvcgorCitEaXNhYmxpbmcgYW5kIG1hcmtpbmcgaW5wdXRzIHJlYWRvbmx5IGJ5
IGEgRE9NIHRyZWUgbXV0YXRpb246CitQQVNTIGJhY2tncm91bmRPZihmb3JtMSkgaXMgaW52YWxp
ZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihzdWIxKSBpcyBzdWJJbnZhbGlkQ29sb3IKK1BBU1Mg
aW5wdXQxLmRpc2FibGVkPTE7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFT
UyBiYWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViVmFsaWRDb2xvcgorUEFTUyBpbnB1dDEuZGlzYWJs
ZWQ9MDsgYmFja2dyb3VuZE9mKGZvcm0xKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3Vu
ZE9mKHN1YjEpIGlzIHN1YkludmFsaWRDb2xvcgorUEFTUyBpbnB1dDEuc2V0QXR0cmlidXRlKCJy
ZWFkb25seSIsICIxIik7IGJhY2tncm91bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFTUyBi
YWNrZ3JvdW5kT2Yoc3ViMSkgaXMgc3ViVmFsaWRDb2xvcgorCitNb3ZlIGVsZW1lbnQgdW5kZXIg
ZGF0YWxpc3QgYnkgYSBET00gdHJlZSBtdXRhdGlvbjoKK1BBU1MgYmFja2dyb3VuZE9mKGZvcm0x
KSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgcGFyZW50LnJlbW92ZUNoaWxkKGlucHV0MSk7IGJhY2tn
cm91bmRPZihmb3JtMSkgaXMgdmFsaWRDb2xvcgorRkFJTCBkbDEuYXBwZW5kQ2hpbGQoaW5wdXQx
KTsgYmFja2dyb3VuZE9mKGZvcm0xKSBzaG91bGQgYmUgcmdiKDAsIDI1NSwgMCkuIFdhcyByZ2Io
MjU1LCAwLCAwKS4KK1BBU1MgcGFyZW50LmFwcGVuZENoaWxkKGlucHV0MSk7IGJhY2tncm91bmRP
Zihmb3JtMSkgaXMgaW52YWxpZENvbG9yCisKK0FkZGluZyBhIHJlcXVpcmVkIHRleHQgaW5wdXQg
dGhhdCBpcyBub3QgYSBkaXJlY3QgY2hpbGQgb2YgdGhlIGZvcm06CitQQVNTIGJhY2tncm91bmRP
Zihmb3JtMSkgaXMgdmFsaWRDb2xvcgorUEFTUyBkaXYxLmFwcGVuZENoaWxkKGlucHV0MSk7IGJh
Y2tncm91bmRPZihmb3JtMSkgaXMgaW52YWxpZENvbG9yCisKK1JlbmRlciBtdWx0aXBsZSBmb3Jt
cyBhbmQgcmVhc3NpZ24gYW4gaW52YWxpZCBpbnB1dCBmcm9tIG9uZSB0byBhbm90aGVyOgorUEFT
UyBiYWNrZ3JvdW5kT2YoJCgiZm9ybTEiKSkgaXMgaW52YWxpZENvbG9yCitQQVNTIGJhY2tncm91
bmRPZigkKCJmb3JtMiIpKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZigkKCJmb3Jt
MyIpKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZigkKCJmb3JtMSIpKSBpcyB2YWxp
ZENvbG9yCitQQVNTIGJhY2tncm91bmRPZigkKCJmb3JtMyIpKSBpcyBpbnZhbGlkQ29sb3IKKwor
RW5zdXJlIHRoYXQgaW52YWxpZCBldmVudCB3YXMgbm90IHRyaWdnZXJlZCBvbiBzdHlsZSBldmFs
dWF0aW9uOgorUEFTUyBiYWNrZ3JvdW5kT2YoZm9ybTEpIGlzIGludmFsaWRDb2xvcgorUEFTUyB2
YWwgaXMgIjAiCitQQVNTIGZvcm0xLmNoZWNrVmFsaWRpdHkoKTsgdmFsIGlzICIxIgorCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCitTb21lIHRlc3RzIGZhaWxlZC4KKworVEVTVCBD
T01QTEVURQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391461</attachid>
            <date>2020-02-22 09:11:40 -0800</date>
            <delta_ts>2020-02-23 08:01:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207816-20200222091137.patch</filename>
            <type>text/plain</type>
            <size>239900</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzNTg4NDNkZWE5MTBi
Y2VhZDkxNzFhYzZjMzI3Zjg4MTI3MmZlOC4uM2JjMzhjNDhiNDg3OGZlYWZkMTBjY2JjYzc4NmUx
MmVkZTYwNjY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzNSBAQAorMjAyMC0wMi0xOCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aXNlIERPTSBpdGVyYXRv
cnMgaW1wbGVtZW50YXRpb24gYW5kIHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZpbmVkIGVsZW1lbnQgaXRlcmF0b3IgaW1wbGVtZW50YXRp
b246CisKKyAgICAgICAgLSBSZW1vdmVkIHRoZSBkdXBsaWNhdGUgZGVzY2VuZGFudCBpdGVyYXRv
ciwga2VlcGluZyB0aGUgb25lIHRoYXQgbWF0Y2hlcworICAgICAgICAgIHRoZSBzdHlsZSBvZiB0
aGUgYW5jZXN0b3IgYW5kIGNoaWxkIGl0ZXJhdG9ycy4KKyAgICAgICAgLSBSZW1vdmVkIHRoZSBu
b24tdGVtcGxhdGUgZWxlbWVudEFuY2VzdG9ycywgZWxlbWVudENoaWxkcmVuLCBlbGVtZW50RGVz
Y2VuZGFudHMsCisgICAgICAgICAgYW5kIGVsZW1lbnRMaW5lYWdlIGZ1bmN0aW9ucyBhbmQgY2hh
bmdlZCBjYWxsZXJzIHRvIHVzZSB4eHhPZlR5cGU8RWxlbWVudD4gaW5zdGVhZC4KKyAgICAgICAg
LSBSZW5hbWVkICJJdGVyYXRvckFkYXB0ZXIiIHRlbXBsYXRlcyB0byAiUmFuZ2UiLCBjaG9vc2lu
ZyB0aGF0IHRlcm0gdG8gbWF0Y2ggdGhlCisgICAgICAgICAgdXBjb21pbmcgQysrMjAgUmFuZ2Vz
IGxpYnJhcnkgYW5kIHJhbmdlLWJhc2VkIGZvciBsb29wcy4KKyAgICAgICAgLSBDaGFuZ2VkIHRo
ZSBpdGVyYXRvcnMgdG8gdXNlIGFuIGFjdHVhbCAibnVsbHB0ciIgZm9yIGVuZCwgZm9sbG93aW5n
IHRoZSAic2VudGluZWwiCisgICAgICAgICAgZGVzaWduIHBhdHRlcm4gZnJvbSB0aGUgUmFuZ2Vz
IGxpYnJhcnkuIFN0aWxsIGtlcHQgYSB0aW55IGJpdCBvZiB1c2luZyBhbiBpdGVyYXRvcgorICAg
ICAgICAgIGZvciBlbmQgYXJvdW5kLCBvbmx5IHNvIHdlIGNhbiB1c2UgaXRlcmF0b3IgbGlicmFy
eSBmdW5jdGlvbnMgbGlrZSBzdGQ6OmRpc3RhbmNlCisgICAgICAgICAgd2hpbGUgd2FpdGluZyBm
b3Igc3RkOjpyYW5nZXM6OmRpc3RhbmNlLCB3aGljaCBpcyBjb21wYXRpYmxlIHdpdGggc2VudGlu
ZWxzLgorICAgICAgICAtIEltcGxlbWVudGVkIGNvbnN0IGNvcnJlY3RuZXNzIGJ5IHVzaW5nIGNv
bnN0IHR5cGVzIGluc3RlYWQgb2Ygc2VwYXJhdGUgIkNvbnN0IgorICAgICAgICAgIGNsYXNzIHRl
bXBsYXRlcy4gVGhpcyBjdXQgZG93biBvbiBzb3VyY2UgY29kZSBzaXplIGEgbG90LiBUaGVzZSBl
bGVtZW50IGl0ZXJhdG9ycworICAgICAgICAgIGRvbid0IG5lZWQgd2hvbGUgc2VwYXJhdGUgdGVt
cGxhdGVzIHRvIGltcGxlbWVudCB0aGUgY29uc3QgY29ycmVjdG5lc3MgdGhlIHdheQorICAgICAg
ICAgIGNvbGxlY3Rpb24gY2xhc3NlcyBsaWtlIEhhc2hNYXAgZG8uCisgICAgICAgIC0gSW1wcm92
ZWQgc29tZSBvdGhlciBkZXRhaWxzLCBsaWtlIHVzaW5nIG1vcmUgY29uc3QgYW5kIGNvbnN0ZXhw
ciBvbiBtZW1iZXJzLgorICAgICAgICAgIEFsbCB0aGUgZnVuY3Rpb25zIG9uIGEgcmFuZ2UgYXJl
IGNvbnN0LCBiZWNhdXNlIHRoZSByYW5nZSBpdHNlbGYgZG9lc24ndCBldmVyCisgICAgICAgICAg
Z2V0IG1vZGlmaWVkLCBhbmQgYWxsIGZ1bmN0aW9ucyBvbiBhbiBpdGVyYXRvciBhcmUgYWxzbyBj
b25zdCwgYmVjYXVzZSBvbmx5CisgICAgICAgICAgb3BlcmF0aW9ucyBsaWtlICsrIGFuZCAtLSBh
Y3R1YWxseSBtb2RpZnkgdGhlIGl0ZXJhdG9yLgorICAgICAgICAtIEZvciBub3cgYXQgbGVhc3Qs
IHJlbW92ZWQgZXh0cmEgY29kZSB3ZSBkb24ndCBuZWVkIGluIHByYWN0aWNlLiBXZSBuZXZlciBu
ZWVkIHRvCisgICAgICAgICAgY29tcGFyZSBpdGVyYXRvcnMgdG8gZWFjaCBvdGhlciBleGNlcHQg
d2hlbiBpdGVyYXRpbmcgYSByYW5nZSwgZm9yIGV4YW1wbGUsIHNvCisgICAgICAgICAga2VwdCB0
aGUgIT0gdXNlZCBmb3IgcmFuZ2UgaXRlcmF0aW9uIGJ1dCBub3QgPT0uCisgICAgICAgIC0gU2lt
cGxpZmllZCB0aGUgSFRNTENvbGxlY3Rpb24gaW1wbGVtZW50YXRpb25zIGJ5IHRha2luZyBhZHZh
bnRhZ2Ugb2YgdGhlIG51bGwtCisgICAgICAgICAgYmFzZWQgYW5kIHNlbnRpbmVsIGRlc2lnbnMu
IFRoZXJlIGFyZSB2YXJpb3VzIHBsYWNlcyB3aGVyZSB3ZSBjYW4gd3JpdGUKKyAgICAgICAgICBz
aW1wbGVyIGNvZGUgYW5kIHBhc3MgYXJvdW5kIGZld2VyIGFyZ3VtZW50cy4KKyAgICAgICAgLSBB
ZGRlZCBhIG5ldyBkZXNjZW5kYW50c09mVHlwZSB0ZW1wbGF0ZSB0aGF0IHRha2VzIGEgcHJlZGlj
YXRlIGFuZCBmaWx0ZXJzIHRvIG9ubHkKKyAgICAgICAgICB0aGUgZWxlbWVudHMgdGhhdCBtYXRj
aCB0aGF0IHByZWRpY2F0ZS4gU2ltaWxhciBjb25jZXB0IHRvIGhvdyB3ZSBpbXBsZW1lbnQgSFRN
TAorICAgICAgICAgIGNvbGxlY3Rpb25zLCBhbmQgcG9zc2libHkgY291bGQgYmUgdXNlZCBldmVu
IG1vcmUgZXZlbnR1YWxseS4KKyAgICAgICAgLSBVc2Ugc3RkOjppdGVyYXRvciBpbiBFbGVtZW50
SXRlcmF0b3Igc28gd2UgZG9uJ3QgbmVlZCB0byBkbyB0aGF0IGluIGRlcml2ZWQKKyAgICAgICAg
ICBjbGFzc2VzLiBBbHNvIG1hZGUgbW9yZSBvZiBFbGVtZW50SXRlcmF0b3IgcHJvdGVjdGVkIHRv
IG1ha2UgaXQgbW9yZSBleHBsaWNpdAorICAgICAgICAgIHRoYXQgaXQncyBhbiBhYnN0cmFjdCBj
bGFzcyB0ZW1wbGF0ZSBhbmQgbm90IHNvbWV0aGluZyB0byBiZSB1c2VkIGRpcmVjdGx5LgorCisg
ICAgICAgIFJlZmluZWQgZWxlbWVudCBpdGVyYXRvciB1c2VzOgorCisgICAgICAgIC0gQWRkZWQg
dXNlcyBvZiB0aGUgaXRlcmF0b3JzIGluIG1hbnkgcGxhY2VzIHRoYXQgaGFkIGhhbmQtd3JpdHRl
biBsb29wcy4KKyAgICAgICAgLSBFbGltaW5hdGVkIHVzZXMgb2YgZWxlbWVudERlc2NlbmRhbnRz
LCB3aGljaCB1c2VkIGFuIGl0ZXJhdGlvbiBhbGdvcml0aG0gdGhhdAorICAgICAgICAgIGludm9s
dmVkIGtlZXBpbmcgdmVjdG9yIHdpdGggYSBzdGFjayBvZiBwYXJlbnQgcG9pbnRlcnMgaW4gaXQu
IFdhcyBhYmxlIHRvCisgICAgICAgICAgbWFrZSB0aGVzZSBjYWxsIHNpdGVzIGFsbCB1c2UgZGVz
Y2VuZGFudHNPZlR5cGU8RWxlbWVudD4sIHdoaWNoIHVzZXMgdGhlCisgICAgICAgICAgc2ltcGxl
ciwgbW9yZSB0cmFkaXRpb25hbCB0cmF2ZXJzYWwgYWxnb3JpdGhtIHRoYXQgZm9sbG93cyB0aGUg
cGFyZW50CisgICAgICAgICAgcG9pbnRlcnMgaW4gdGhlIGVsZW1lbnRzIHRoZW1zZWx2ZXMuCisg
ICAgICAgIC0gUmVwbGFjZWQgYSBmZXcgdXNlcyBvZiBIVE1MQ29sbGVjdGlvbiBjbGFzc2VzIGlu
IFdlYktpdCBjb2RlIGZvciBpdGVyYXRpb24uCisgICAgICAgICAgUHJlc3VtYWJseSB0aGUgSFRN
TENvbGxlY3Rpb24gaW1wbGVtZW50YXRpb25zIGFyZSB3ZWxsIG9wdGltaXplZCBmb3IgdXNlIGZy
b20KKyAgICAgICAgICBKYXZhU2NyaXB0LCBidXQgaW50ZXJuYWxseSB3ZSBoYXZlIG11Y2ggZWZm
aWNpZW50IGl0ZXJhdGlvbiBpZGlvbXMgdGhhdCBkb24ndAorICAgICAgICAgIHNwZW5kIHNvIG11
Y2ggdGltZSBjcmVhdGluZ2EgYW5kIGRlc3Ryb3lpbmcgb2JqZWN0cyBhbmQgY2FjaGVzLCBiZWNh
dXNlIHdlIGRvbid0CisgICAgICAgICAgbmVlZCB0byBzdXBwb3J0IHRoaW5ncyBsaWtlIGluZGV4
aW5nIGludG8gdGhlIGNvbGxlY3Rpb25zIGJ5IGluZGV4LgorICAgICAgICAgIChOZWVkIHRvIGRv
IGV2ZW4gbW9yZSBvZiB0aGlzOyBzYXcgYSBsb3Qgb2YgaW5lZmZpY2llbmN5IHdoaWxlIGRlYnVn
Z2luZy4pCisgICAgICAgIC0gQWRkZWQgSFRNTERhdGFMaXN0RWxlbWVudDo6c3VnZ2VzdGlvbnMs
IHdoaWNoIHJldHVybnMgdGhlIHN1Z2dlc3RlZCBvcHRpb24KKyAgICAgICAgICBlbGVtZW50cyBh
cyBhIHJhbmdlIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBhIGZvciBsb29wLCBhbmQgdXNlIGluc3Rl
YWQgb2YKKyAgICAgICAgICBIVE1MRGF0YUxpc3Q6Om9wdGlvbnMuCisKKyAgICAgICAgRml4ZWQg
dGhlIEhUTUxEYXRhTGlzdEVsZW1lbnQgb3B0aW9ucyBjb2xsZWN0aW9uIHRvIGNvcnJlY3RseSBp
dGVyYXRlIGFsbCBvcHRpb24KKyAgICAgICAgZWxlbWVudHMgaW5zaWRlIHRoZSBkYXRhIGxpc3Qg
YXMgZG9jdW1lbnRlZCBpbiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgaW4gd2ViIHBsYXRmb3JtCisg
ICAgICAgIHRlc3RzLCByYXRoZXIgdGhhbiBvbmx5IHRoZSAic3VnZ2VzdGVkIiBvbmVzIHRoYXQg
YXBwZWFyIHdoZW4gdGhlIGRhdGEgbGlzdCBpcyB1c2VkLgorICAgICAgICBUaGlzIHJlcXVpcmVk
IG5vdCB1c2luZyB0aGUgb3B0aW9ucyBjb2xsZWN0aW9uIHdoZW4gaXRlcmF0aW5nIHNpbmNlIHRo
ZSBjb2RlIHdhcworICAgICAgICByZWx5aW5nIG9uIHRoaXMgaW5jb3JyZWN0IGJlaGF2aW9yLiBB
bHNvIGZpeGVkIG9uZSBjYXNlIHdoZXJlIHRoZSBjb2RlIGhhbmRsZWQKKyAgICAgICAgbmVzdGVk
IGRhdGEgbGlzdHMgZGlmZmVyZW50bHkgdGhhbiB3aGF0IHRoZSBzcGVjaWZpY2F0aW9uIGFza3Mg
Zm9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZTogUmVtb3ZlZCBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yLmguCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OiBSZW1vdmVkIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCBhbmQKKyAgICAgICAgYWRkZWQg
UmFkaW9Ob2RlTGlzdC5pZGwuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0Ojptb3VzZUJ1dHRvbkxpc3RlbmVyIGNvbnN0KTogVXNlCisgICAgICAgIGxpbmVhZ2VPZlR5
cGUgaW5zdGVhZCBvZiBlbGVtZW50TGluZWFnZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0IGNvbnN0KToK
KyAgICAgICAgVXNlIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEgaGFuZHdyaXR0ZW4gbG9v
cC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNw
cDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlIG9mCisgICAgICAgIEhUTUxDb2xsZWN0aW9uLmgu
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOiBEaXR0by4KKwor
ICAgICAgICAqIGRvbS9DaGlsZE5vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxk
Tm9kZUxpc3Q6OkNoaWxkTm9kZUxpc3QpOiBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIG1faW5k
ZXhDYWNoZQorICAgICAgICBzaW5jZSB0aGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlcXVpcmVz
IGFyZ3VtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUxpc3Q6OmludmFsaWRhdGVD
YWNoZSk6IFJlbW92ZWQgYXJndW1lbnQgdG8KKyAgICAgICAgQ29sbGVjdGlvbkluZGV4Q2FjaGU6
OmludmFsaWRhdGUuCisgICAgICAgICogZG9tL0NoaWxkTm9kZUxpc3QuaDogUmVtb3ZlZCBjb2xs
ZWN0aW9uRW5kLCBzaW5jZSBpdCdzIG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgKiBkb20v
Q29sbGVjdGlvbkluZGV4Q2FjaGUuaDogUmVtb3ZlZCB0aGUgY29sbGVjdGlvbiBhcmd1bWVudCB0
byB0aGUKKyAgICAgICAgY29uc3RydWN0b3IsIGhhc1ZhbGlkQ2FjaGUsIGFuZCBpbnZhbGlkYXRl
IGZ1bmN0aW9ucy4gVXBkYXRlZCBhbGdvcml0aG1zIHRvIHVzZQorICAgICAgICBudWxsIHN0eWxl
IHRlcm1pbmF0aW9uIGluc3RlYWQgb2YgYWN0dWFsbHkgcmVseWluZyBvbiBjb21wYXJpbmcgd2l0
aCBhbiBlbmQKKyAgICAgICAgaXRlcmF0b3IsIHNpbmNlIHRoYXQgd29ya3MgZm9yIG91ciBlbGVt
ZW50IGl0ZXJhdG9ycy4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmNoaWxkRWxlbWVudENvdW50IGNvbnN0KTogVXNl
IGFuIGVtcHR5IGluaXRpYWxpemVyCisgICAgICAgIGxpc3QgaW5zdGVhZCBvZiB0aGUgcmVzdWx0
IG9mIHRoZSBlbmQgZnVuY3Rpb24gc2luY2Ugc3RkOjpkaXN0YW5jZSByZXF1aXJlcworICAgICAg
ICBib3RoIGJlZ2luIGFuZCBlbmQgaXRlcmF0b3JzIGhhdmUgdGhlIHNhbWUgdHlwZS4KKworICAg
ICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMu
CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHA6IERpdHRvLgorCisgICAg
ICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRGcmFnbWVudDo6Z2V0RWxlbWVudEJ5SWQgY29uc3QpOiBVc2UKKyAgICAgICAgZGVzY2VuZGFu
dHNPZlR5cGUgaW5zdGVhZG9mIGVsZW1lbnREZXNjZW5kYW50cy4KKworICAgICAgICAqIGRvbS9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvbXB1dGVJbmhlcml0ZWRM
YW5ndWFnZSBjb25zdCk6IFVzZSBsaW5lYWdlT2ZUeXBlCisgICAgICAgIGluc3RlYWQgb2YgYSBo
YW5kcndpdHRlbiBsb29wLgorCisgICAgICAgICogZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9y
Lmg6IE1vdmVkIHRoZSBkZWNsYXJhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucworICAgICAgICB0byB0
aGUgdG9wIG9mIHRoZSBmaWxlLCBzaW5jZSB0aGUgY2xhc3NlcyBhcmUgcmVhbGx5IGltcGxlbWVu
dGF0aW9uIGRldGFpbHMuCisgICAgICAgIFJlbW92ZWQgdGhlIHNlcGFyYXRlICJDb25zdCIgdmVy
c2lvbnMgb2YgZXZlcnl0aGluZyBzaW5jZSB3ZSBjYW4ganVzdCB1c2UKKyAgICAgICAgY29uc3Qg
aW4gdGhlIHRlbXBsYXRlIGFyZ3VtZW50IHR5cGUgaW5zdGVhZC4gVXNlIHRoZSB0ZXJtICJSYW5n
ZSIgaW5zdGVhZAorICAgICAgICBvZiB0aGUgdGVybSAiSXRlcmF0b3JBZGFwdGVyIiBmb3IgdGhl
IGNsYXNzIHRlbXBsYXRlcyBmb3IgdXNlIGluIHJhbmdlLWJhc2VkCisgICAgICAgIGZvciBsb29w
cyBzaW5jZSB0aGF0J3MgY2xvc2VyIHRvIG1vZGVybiBDKysgdGVybWlub2xvZ3kuIFVzZSBudWxs
cHRyIGFzIGEKKyAgICAgICAgc2VudGluZWwgZm9yIGVuZCwgd2hpY2ggd29ya3Mgd2VsbCB3aXRo
IHJhbmdlLWJhc2VkIGZvciBsb29wcy4gTWFkZSBtYW55IGZ1bmN0aW9uCisgICAgICAgIG1lbWJl
cnMgY29uc3Qgd2hlcmUgYXBwcm9wcmlhdGUuIFNwZWNpYWxpemVkIGxpbmVhZ2VPZlR5cGUgYW5k
IGFuY2VzdG9yc09mVHlwZQorICAgICAgICBmb3IgRWxlbWVudCB0byBzbGlnaHRseSBvcHRpbWl6
ZSB0aGF0IGNhc2UuIFVzZSBkb3duY2FzdCBpbnN0ZWFkIG9mIHN0YXRpY19jYXN0LgorICAgICAg
ICBEZWxldGVkIGVsZW1lbnRMaW5lYWdlIGFuZCBlbGVtZW50QW5jZXN0b3JzLgorCisgICAgICAg
ICogZG9tL0VsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmg6IFJlbmFtZWQgSXRlcmF0
b3JBZGFwdGVyIHRvIFJhbmdlLgorICAgICAgICBNYWRlIG1vcmUgZnVuY3Rpb24gbWVtYmVycyBj
b25zdC4KKworICAgICAgICAqIGRvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oOiBNb3ZlZCB0aGUg
ZGVjbGFyYXRpb25zIG9mIHRoZSBmdW5jdGlvbnMKKyAgICAgICAgdG8gdGhlIHRvcCBvZiB0aGUg
ZmlsZSwgc2luY2UgdGhlIGNsYXNzZXMgYXJlIHJlYWxseSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxz
LgorICAgICAgICBSZW1vdmVkIHRoZSBzZXBhcmF0ZSAiQ29uc3QiIHZlcnNpb25zIG9mIGV2ZXJ5
dGhpbmcgc2luY2Ugd2UgY2FuIGp1c3QgdXNlCisgICAgICAgIGNvbnN0IGluIHRoZSB0ZW1wbGF0
ZSBhcmd1bWVudCB0eXBlIGluc3RlYWQuIFVzZSB0aGUgdGVybSAiUmFuZ2UiIGluc3RlYWQKKyAg
ICAgICAgb2YgdGhlIHRlcm0gIkl0ZXJhdG9yQWRhcHRlciIgZm9yIHRoZSBjbGFzcyB0ZW1wbGF0
ZXMgZm9yIHVzZSBpbiByYW5nZS1iYXNlZAorICAgICAgICBmb3IgbG9vcHMgc2luY2UgdGhhdCdz
IGNsb3NlciB0byBtb2Rlcm4gQysrIHRlcm1pbm9sb2d5LiBVc2UgbnVsbHB0ciBhcyBhCisgICAg
ICAgIHNlbnRpbmVsIGZvciBlbmQsIHdoaWNoIHdvcmtzIHdlbGwgd2l0aCByYW5nZS1iYXNlZCBm
b3IgbG9vcHMuIE1hZGUgbWFueQorICAgICAgICBmdW5jdGlvbiBtZW1iZXJzIGNvbnN0IHdoZXJl
IGFwcHJvcHJpYXRlLiBEZWxldGVkIGVsZW1lbnRDaGlsZHJlbi4KKworICAgICAgICAqIGRvbS9F
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBkb20vRWxl
bWVudEl0ZXJhdG9yLmg6IENoYW5nZWQgRWxlbWVudEl0ZXJhdG9yIHRvIGRlcml2ZSBmcm9tIHN0
ZDo6aXRlcmF0b3IKKyAgICAgICAgdG8gbWFrZSBpdGVyYXRvciB0cmFpdHMgd29yayBmb3IgYWxs
IGNsYXNzZXMgZGVyaXZlZCBmcm9tIGl0LiBNYWRlIGNvbnN0cnVjdG9ycworICAgICAgICBvZiBF
bGVtZW50SXRlcmF0b3IgcHJpdmF0ZSB0byBtYWtlIGl0IGNsZWFyIGl0J3MgaW50ZW5kZWQgdG8g
YmUgdXNlZCBhcyBhIGJhc2UKKyAgICAgICAgY2xhc3MgYW5kIG5vdCBpbnN0YW50aWF0ZWQuIEFk
ZGVkIGFuIGVtcHR5IGNvbnN0cnVjdG9yLiBEZWxldGVkIHRoZSA9PSBvcGVyYXRvci4KKyAgICAg
ICAgQWRkZWQgY29udmVyc2lvbnMgdG8gYm9vbCBhbmQgb3BlcmF0b3IhIHNvIHRoZSBpdGVyYXRv
ciBjYW4gYmUgdXNlZCAibnVsbCBzdHlsZSIKKyAgICAgICAgb3V0c2lkZSBvZiByYW5nZS1iYXNl
ZCBmb3IgbG9vcHMuIEFkZGVkIGEgIT0gb3BlcmF0b3IgdGhhdCB3b3JrcyB3aXRoIG51bGxwdHIK
KyAgICAgICAgc28gd2UgY2FuIHVzZSBudWxscHRyIGFzIGEgc2VudGluZWwgaW4gcmFuZ2UtYmFz
ZWQgZm9yIGxvb3BzLiBGb3IgdGhlICE9CisgICAgICAgIG9wZXJhdG9yLCByZWxheGVkIHRoZSBh
c3NlcnRpb25zLCBzaW5jZSBjb21wYXJpbmcgd2l0aCBhbm90aGVyIGl0ZXJhdG9yIHdvcmtzCisg
ICAgICAgIGZpbmUgZXZlbiBpZiB0aGUgRE9NIHRyZWUgaXMgbXV0YXRlZCwgYW5kIGEgbnVsbCBl
bGVtZW50IGNhbiBiZSBjb21wYXJlZCB3aXRoCisgICAgICAgIGFub3RoZXIgZXZlbiBpZiB0aGUg
cm9vdCBlbGVtZW50IGlzIG5vdCB0aGUgc2FtZS4gRGVsZXRlZCBFbGVtZW50Q29uc3RJdGVyYXRv
ci4KKworICAgICAgICAqIGRvbS9MaXZlTm9kZUxpc3QuY3BwOiBSZW1vdmVkIHNvbWUgdW5uZWVk
ZWQgaW5jbHVkZXMsIGluY2x1ZGluZyBIVE1MQ29sbGVjdGlvbi5oLgorICAgICAgICAoV2ViQ29y
ZTo6TGl2ZU5vZGVMaXN0OjpMaXZlTm9kZUxpc3QpOiBTaW1wbGlmaWVkIGEgbGl0dGxlIGJpdC4K
KyAgICAgICAgKFdlYkNvcmU6OkxpdmVOb2RlTGlzdDo6cm9vdE5vZGUpOiBNb3ZlZCB0byB0aGUg
aGVhZGVyLgorCisgICAgICAgICogZG9tL0xpdmVOb2RlTGlzdC5oOiBVcGRhdGVkIHNpbmNlIENv
bGxlY3Rpb25UcmF2ZXJzYWwgbm93IHVzZXMgdGhlCisgICAgICAgIG1vcmUgbW9kZXJuIEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3IsIG5vdCB0aGUgb2xkZXIgb25lIHRoYXQgdXNlZCBhIHZlY3Rv
ciBvZgorICAgICAgICBhbmNlc3RvcnMgdG8gZG8gdGhlIGl0ZXJhdGlvbi4gQWxzbyB1c2UgV1RG
X01BS0VfSVNPX05PTkFMTE9DQVRBQkxFIHNpbmNlCisgICAgICAgIExpdmVOb2RlTGlzdCBpcyBh
biBhYnN0cmFjdCBjbGFzcywgYW5kIG1hZGUgc29tZSBtZW1iZXJzIHByb3RlY3RlZC4gUmVtb3Zl
ZAorICAgICAgICBDYWNoZWRMaXZlTm9kZUxpc3Q6OnJvb3ROb2RlIHNpbmNlIGl0IHdhcyBpZGVu
dGljYWwgdG8gTGl2ZU5vZGVMaXN0Ojpyb290Tm9kZSwKKyAgICAgICAgYW5kIG1hZGUgTGl2ZU5v
ZGVMaXN0Ojpyb290Tm9kZSBwcm90ZWN0ZWQgc28gaXQgY2FuIGJlIGNhbGxlZCBpbgorICAgICAg
ICBDYWNoZWRMaXZlTm9kZUxpc3QsIGFuZCBtb3ZlZCBpdCB0byB0aGUgaGVhZGVyIHNvIGl0IHdp
bGwgc3RpbGwgYmUgaW5saW5lZC4KKyAgICAgICAgU2ltcGxpZmllZCBDYWNoZWRMaXN0Tm9kZUxp
c3QgdG8gdXNlIG1vcmUgZmluYWwsIHRvIG5hbWUgbG9uZyB0eXBlcyBsZXNzIGJ5CisgICAgICAg
IHVzaW5nICJhdXRvIiBhbmQgInVzaW5nIiwgYW5kIHRvIG5vdCBwYXNzIGFyZ3VtZW50cyB0byBm
dW5jdGlvbnMgdGhhdCBkb24ndAorICAgICAgICBuZWVkIHRoZW0gYW55IG1vcmUuCisKKyAgICAg
ICAgKiBkb20vTmFtZU5vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVOb2RlTGlz
dDo6Y3JlYXRlKTogTW92ZWQgaGVyZSBmcm9tIHRoZSBoZWFkZXIuCisgICAgICAgICogZG9tL05h
bWVOb2RlTGlzdC5oOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzIGFuZCBjb21tZW50LCBtb3Zl
ZCBjcmVhdGUKKyAgICAgICAgZnVjbnRpb24gb3V0IG9mIHRoZSBoZWFkZXIuCisKKyAgICAgICAg
KiBkb20vTm9kZS5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlv
bi5oLgorCisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JEYXRhTGlzdDo6Y2xvc2VzdCBjb25zdCk6IFVzZSBsaW5lYWdlZU9mVHlwZSBp
bnN0ZWFkIG9mIGFuCisgICAgICAgIGV4cGxpY2l0IGxvb3AuCisgICAgICAgIChXZWJDb3JlOjpl
bGVtZW50c0ZvckxvY2FsTmFtZSk6IFVzZSBkZXNjZW5kYW50c09mVHlwZSBpbnN0ZWFkIG9mIGVs
ZW1lbnREZXNjZW5kYW50cy4KKyAgICAgICAgKFdlYkNvcmU6OmFueUVsZW1lbnQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVUYWdOYW1l
U2VsZWN0b3JEYXRhIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRh
dGFMaXN0OjpleGVjdXRlU2luZ2xlQ2xhc3NOYW1lU2VsZWN0b3JEYXRhIGNvbnN0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlU2VsZWN0
b3JEYXRhIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0
OjpleGVjdXRlU2luZ2xlTXVsdGlTZWxlY3RvckRhdGEgY29uc3QpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVDb21waWxlZFNpbXBsZVNlbGVjdG9y
Q2hlY2tlciBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlz
dDo6ZXhlY3V0ZUNvbXBpbGVkU2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dCBjb25z
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZUNv
bXBpbGVkU2luZ2xlTXVsdGlTZWxlY3RvckRhdGEgY29uc3QpOiBEaXR0by4KKworICAgICAgICAq
IGRvbS9TbG90QXNzaWdubWVudC5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisKKyAgICAgICAgKiBk
b20vVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmg6IE1vdmVkIHRoZSBkZWNsYXJhdGlv
bnMgb2YgdGhlIGZ1bmN0aW9ucworICAgICAgICB0byB0aGUgdG9wIG9mIHRoZSBmaWxlLCBzaW5j
ZSB0aGUgY2xhc3NlcyBhcmUgcmVhbGx5IGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisgICAgICAg
IFJlbmFtZWQgdGhlIGNsYXNzZXMgdG8gdGFrZSBvdXQgdGhlIHdvcmQgInR5cGVkIiBzaW5jZSB0
aGVzZSBpdGVyYXRvcnMgYXJlIHRoZQorICAgICAgICBzYW1lIGFzIHRoZSBhbmNlc3RvciBhbmQg
Y2hpbGRyZW4gaXRlcmF0b3JzOyB0aGlzIGdpdmVzIHRoZXNlIHRoZSBzYW1lIG5hbWUgYXMKKyAg
ICAgICAgdGhlIGNsYXNzZXMgaW4gdGhlIGRlbGV0ZWQgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ci5oIGZpbGUsIGFuZCB3ZSBjYW4gZm9sbG93CisgICAgICAgIHVwIGJ5IHJlbmFtaW5nIHRoaXMg
ZmlsZSB0byB0YWtlICJUeXBlZCIgb3V0IG9mIHRoZSBuYW1lIG9mIHRoZSBmaWxlLCB0b28uCisg
ICAgICAgIFJlbW92ZWQgdGhlIHNlcGFyYXRlICJDb25zdCIgdmVyc2lvbnMgb2YgZXZlcnl0aGlu
ZyBzaW5jZSB3ZSBjYW4ganVzdCB1c2UKKyAgICAgICAgY29uc3QgaW4gdGhlIHRlbXBsYXRlIGFy
Z3VtZW50IHR5cGUgaW5zdGVhZC4gVXNlIHRoZSB0ZXJtICJSYW5nZSIgaW5zdGVhZAorICAgICAg
ICBvZiB0aGUgdGVybSAiSXRlcmF0b3JBZGFwdGVyIiBmb3IgdGhlIGNsYXNzIHRlbXBsYXRlcyBm
b3IgdXNlIGluIHJhbmdlLWJhc2VkCisgICAgICAgIGZvciBsb29wcyBzaW5jZSB0aGF0J3MgY2xv
c2VyIHRvIG1vZGVybiBDKysgdGVybWlub2xvZ3kuIFVzZSBudWxscHRyIGFzIGEKKyAgICAgICAg
c2VudGluZWwgdmFsdWUgZm9yIHRoZSBlbmQgZnVuY3Rpb25zLiBNYWRlIG1hbnkgZnVuY3Rpb24g
bWVtYmVycyBjb25zdCB3aGVyZQorICAgICAgICBhcHByb3ByaWF0ZS4gQWRkZWQgYSBuZXcgc3Bl
Y2lhbGl6YXRpb24gdGhhdCBtYWtlcyBhIGRlc2NlbmRhbnQgaXRlcmF0b3IgdGhhdAorICAgICAg
ICBpcyBmaWx0ZXJlZCBiYXNlZCBvbiBhIGZ1bmN0aW9uLCBmb3IgdXNlIGluIGl0ZXJhdGluZyBk
YXRhIGxpc3Qgc3VnZ2VzdGlvbnMuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCBj
b25zdCk6IFVzZSB0aGUgZnVuY3Rpb24KKyAgICAgICAgZGVzY2VuZGFudHNPZlR5cGU8SFRNTEJv
ZHlFbGVtZW50PiBpbnN0ZWFkIG9mIGdldEVsZW1lbnRCeVRhZ05hbWUoYm9keVRhZykuCisgICAg
ICAgIEFsc28gbWVyZ2VkIGFwcGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50IGluIGhlcmUuCisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OmFwcGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50IGNvbnN0KTog
RGVsZXRlZC4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6IERlbGV0ZWQgYXBwbHlFZGl0
aW5nU3R5bGVUb0VsZW1lbnQuCisKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnNjYW5Gb3JGb3JtKTogVHdlYWtlZCB1c2FnZSBzbyB0aGVy
ZSdzIG5vIGV4cGxpY2l0IHVzZSBvZiBlbmQuCisgICAgICAgIEFsc28gY2hhbmdlZCBpZiBuZXN0
aW5nIGEgbGl0dGxlIGJpdC4KKworICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uUnVsZU1hdGNoZXI6Omlz
RXhjbHVkZWQpOiBVc2UgbGluZWFnZU9mVHlwZSBpbnN0ZWFkIG9mCisgICAgICAgIGVsZW1lbnRM
aW5lYWdlLgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW06IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOiBEaXR0
by4KKworICAgICAgICAqIGh0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDogVXBkYXRlZCBpbmNs
dWRlcywgc2hvcnRlbmVkIHR5cGUgbmFtZXMsCisgICAgICAgIGFuZCB1c2VkIGF1dG8gdG8gc2lt
cGxpZnkgdGhlIGNvZGUgYSBiaXQuIFJlbW92ZWQgdW5uZWVkZWQgY29sbGVjdGlvbiBhcmd1bWVu
dHMKKyAgICAgICAgZnJvbSB2YXJpb3VzIENvbGxlY3Rpb25JbmRleENhY2hlIGZ1bmN0aW9ucy4K
KworICAgICAgICAqIGh0bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oOiBVcGRhdGVkIHRvIHVzZSB0
aGUgbmV3L3R5cGVkIHZlcnNpb24gb2YKKyAgICAgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ci4gUmVtb3ZlZCBlbmQgZnVuY3Rpb25zLiBVc2Ugc2hvcnRlciB0eXBlIG5hbWVzLgorICAgICAg
ICBSZXdyb3RlIGFsZ29yaXRobXMgdG8gdXNlIG51bGwgdGVybWluYXRpb24gZm9yIGxvb3BzIGlu
c3RlYWQgb2YgZW5kIGl0ZXJhdG9yCisgICAgICAgIHZhbHVlcy4KKworICAgICAgICAqIGh0bWwv
Q29sb3JJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OnN1
Z2dlc3RlZENvbG9ycyBjb25zdCk6IFVzZSB0aGUgbmV3CisgICAgICAgIEhUTUxEYXRhTGlzdEVs
ZW1lbnQ6OnN1Z2dlc3Rpb25zIGluc3RlYWQgb2YgSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAg
KiBodG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248dHJhdmVyc2FsVHlwZT46OmVsZW1lbnRNYXRj
aGVzIGNvbnN0KToKKyAgICAgICAgVXBkYXRlZCB0byB1c2UgSFRNTERhdGFMaXN0RWxlbWVudDo6
aXNTdWdnZXN0aW9uIGFuZCBhZGRlZCBhIGNvbW1lbnQgZXhwbGFpbmluZworICAgICAgICB3aHkg
dGhhdCBtaWdodCBub3QgYmUgbmVjZXNzYXJ5IGlmIHdlIGNvcnJlY3QgdGhlIGltcGxlbWVudGF0
aW9uIHRvIG1hdGNoIHRoZQorICAgICAgICBIVE1MIHNwZWNpZmljYXRpb24uCisKKyAgICAgICAg
KiBodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmlkbDogU3BlY2lmeSBbUmVxdWlyZXNFeGlzdGluZ0F0
b21TdHJpbmddIG9uIHRoZQorICAgICAgICBhcmd1bWVudCB0byBuYW1lZEl0ZW0sIGFuZCBbQXRv
bVN0cmluZ10gZm9yIHRoZSBhcmd1bWVudCB0byBpdGVtLgorICAgICAgICAqIGh0bWwvSFRNTENv
bGxlY3Rpb24uaWRsOiBEaXR0by4KKworICAgICAgICAqIGh0bWwvSFRNTERhdGFMaXN0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGF0YUxpc3RFbGVtZW50Ojppc1N1Z2dlc3Rp
b24pOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuaDogQWRkZWQg
aXNTdWdnZXN0aW9uIGFuZCBzdWdnZXN0aW9ucyBmdW5jdGlvbnMgc28KKyAgICAgICAgbG9naWMg
YWJvdXQgd2hpY2ggZGF0YSBsaXN0IG9wdGlvbnMgYXJlIHN1Z2dlc3Rpb25zIGlzIHNoYXJlZC4K
KworICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWxl
bWVudEFmZmVjdHNEaXJlY3Rpb25hbGl0eSk6IFJlZmFjdG9yZWQgc28gd2UgZ2V0IGEgbW9yZSBl
ZmZpY2llbnQKKyAgICAgICAgaW1wbGVtZW50YXRpb24gd2hlbiB0aGUgdHlwZSBvZiB0aGUgZWxl
bWVudCBpcyBrbm93bi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjphZGp1c3REaXJl
Y3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICBV
c2UgbGluZWFnZU9mVHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnRMaW5lYWdlLgorCisgICAgICAgICog
aHRtbC9IVE1MRWxlbWVudC5oOiBSZW1vdmVkIHNvbWUgdW5lZWVkZWQgZm9yd2FyZCBkZWNsYXJh
dGlvbnMuCisKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZmluZFdpZGdldFJlbmRlcmVyKTogVXNlIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFk
IG9mIGEgbG9vcC4KKworICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpjb21wdXRlV2lsbFZh
bGlkYXRlIGNvbnN0KTogVXNlCisgICAgICAgIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mIGEg
bG9vcC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmVuY2xvc2lu
Z0Zvcm1Db250cm9sRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50Lmg6IERlbGV0ZWQgdW51c2VkIGVuY2xvc2luZ0Zvcm1Db250cm9sRWxlbWVu
dC4KKworICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uKTogVXNlCisgICAgICAgIHNob3J0IGZvcm0gQ2FjaGVkSFRNTENvbGxlY3Rp
b24gaW5zdGVhZCBvZiB3cml0aW5nIG91dCBhbGwgdGhlIHRlbXBsYXRlIGFyZ3VtZW50cy4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpvd25lck5vZGUgY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
OjppbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudCk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9I
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGw6IFNwZWNpZnkgW1JlcXVpcmVzRXhpc3RpbmdB
dG9tU3RyaW5nXSBvbgorICAgICAgICB0aGUgYXJndW1lbnQgdG8gbmFtZWRJdGVtLgorCisgICAg
ICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZv
cm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4KTogVXBkYXRlZCBjb2RlIHRoYXQgY2hlY2tzIHRo
ZQorICAgICAgICBmaXJzdCBlbGVtZW50IHRvIHVzZSBvcGVyYXRvciEgaW5zdGVhZCBvZiBjb21w
YXJpbmcgd2l0aCBlbmQuCisKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3Bw
OiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgSFRNTENvbGxlY3Rpb24uaC4KKworICAgICAg
ICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6IENsZWFyZWQgc3RyYXkgZXhlY3V0YWJsZSBi
aXQuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0dXBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzKTog
VXNlIHRoZSBuZXcKKyAgICAgICAgSFRNTERhdGFMaXN0RWxlbWVudDo6c3VnZ2VzdGlvbnMgaW5z
dGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291
cmNlQ2hpbGQpOiBVc2UgYSBib29sZWFuIHRlc3QgcmF0aGVyCisgICAgICAgIHRoYW4gY29tcGFy
aW5nIHdpdGggZW5kIGluIHRoZSB1bnVzdWFsIGxvb3AgaGVyZS4KKworICAgICAgICAqIGh0bWwv
SFRNTE9wdEdyb3VwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBF
bGVtZW50Ojpvd25lclNlbGVjdEVsZW1lbnQgY29uc3QpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlCisg
ICAgICAgIGluc3RlYWQgb2YgYSBoYW5kLXdyaXR0ZW4gbG9vcC4KKworICAgICAgICAqIGh0bWwv
SFRNTE9wdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKTogVXNlIGFuY2VzdG9yc09mVHlwZSBpbnN0ZWFkIG9mCisgICAg
ICAgIGNhbGxpbmcgb3duZXJEYXRhTGlzdEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
T3B0aW9uRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MT3B0aW9uRWxlbWVudDo6b3duZXJEYXRhTGlzdEVsZW1lbnQgY29uc3QpOiBEZWxldGVk
LiBTaW5jZSB0aGUKKyAgICAgICAgc2FtZSBvcHRpb24gY2FuIGJlIHVzZWQgYnkgbmVzdGVkIGRh
dGEgbGlzdCBlbGVtZW50cywgdGhlIGNvbmNlcHQgb2YgYSBzaW5nbGUKKyAgICAgICAgIm93bmVy
IiBkYXRhIGxpc3QgZWxlbWVudCBpc24ndCBmdWxseSBjb3JyZWN0LgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE9wdGlvbkVsZW1lbnQ6Om93bmVyU2VsZWN0RWxlbWVudCBjb25zdCk6IFVzZSBhbmNl
c3RvcnNPZlR5cGUKKyAgICAgICAgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorICAg
ICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaDogRGVsZXRlZCBvd25lckRhdGFMaXN0RWxl
bWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbDogU3BlY2lm
eSBbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIG9uCisgICAgICAgIHRoZSBhcmd1bWVudCB0
byBuYW1lZEl0ZW0uCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3Bw
OiBVcGRhdGVkIGluY2x1ZGVzLgorCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5p
ZGw6IFNwZWNpZnkgW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBvbgorICAgICAgICB0aGUg
YXJndW1lbnQgdG8gbmFtZWRJdGVtLgorCisgICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxsRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudDo6YWRkaXRp
b25hbFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlIGNvbnN0KToKKyAgICAgICAgVXNlIGF1dG8g
c2luY2UgZmluZFBhcmVudFRhYmxlIG5vdyByZXR1cm5zIGEgY29uc3QgdGFibGUgcG9pbnRlci4K
KyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRhYmxlQ29sRWxlbWVudDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0
eWxlIGNvbnN0KToKKyAgICAgICAgRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hh
cmVkQ2VsbFN0eWxlKTogTWFkZSBjb25zdC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVs
ZW1lbnQ6OmFkZGl0aW9uYWxDZWxsU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxHcm91cFN0eWxlKTogRGl0dG8uCisgICAgICAgICog
aHRtbC9IVE1MVGFibGVFbGVtZW50Lmg6IE1hZGUgdGhlIGZ1bmN0aW9ucyBjb25zdCwgYW5kIG1f
c2hhcmVkQ2VsbFN0eWxlCisgICAgICAgIG11dGFibGUuCisKKyAgICAgICAgKiBodG1sL0hUTUxU
YWJsZVBhcnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZVBhcnRFbGVt
ZW50OjpmaW5kUGFyZW50VGFibGUgY29uc3QpOiBVc2UgYW5jZXN0b3JzT2ZUeXBlCisgICAgICAg
IGluc3RlYWQgb2YgYSBoYW5kLXdyaXR0ZW4gbG9vcC4gQWxzbyByZXZpc2VkIHJldHVybiB0eXBl
IHRvIGJlIGNvbnN0LWNvbnNpc3RlbnQuCisgICAgICAgICogaHRtbC9IVE1MVGFibGVQYXJ0RWxl
bWVudC5oOiBVcGRhdGVkIHJldHVybiB0eXBlLgorCisgICAgICAgICogaHRtbC9IVE1MVGFibGVT
ZWN0aW9uRWxlbWVudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBIVE1MQ29sbGVjdGlvbi5oLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6Om51bVJvd3MgY29uc3Qp
OiBVc2UgYW4gZW1wdHkgaW5pdGlhbGl6ZXIKKyAgICAgICAgbGlzdCBpbnN0ZWFkIG9mIHRoZSBy
ZXN1bHQgb2YgdGhlIGVuZCBmdW5jdGlvbiBzaW5jZSBzdGQ6OmRpc3RhbmNlIHJlcXVpcmVzCisg
ICAgICAgIGJvdGggYmVnaW4gYW5kIGVuZCBpdGVyYXRvcnMgaGF2ZSB0aGUgc2FtZSB0eXBlLgor
CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwYXJlbnRIVE1MRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlyZWN0aW9uRm9yRm9ybURhdGEgY29uc3Qp
OiBVc2UKKyAgICAgICAgbGluZWFnZU9mVHlwZSByYXRoZXIgdGhhbiBhIGhhbmQtd3JpdHRlbiBs
b29wLiBBbHNvIGdvdCByaWQgb2YgdGhlIG11bHRpcGxlCisgICAgICAgIHN0cmluZ3MgaW4gcmV0
dXJuIHBhdGhzIHNpbmNlIHRoZSBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBvbmUgb2YgdHdvIHN0
cmluZ3MuCisKKyAgICAgICAgKiBodG1sL0xhYmVsc05vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxhYmVsc05vZGVMaXN0OjpjcmVhdGUpOiBNb3ZlZCBoZXJlIGZyb20gaGVhZGVyLgor
ICAgICAgICAqIGh0bWwvTGFiZWxzTm9kZUxpc3QuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRl
LCB0d2Vha2VkIGNvZGluZyBzdHlsZSBhIGJpdCwKKyAgICAgICAgbW92ZWQgY3JlYXRlIGZ1bmN0
aW9uIGludG8gdGhlIC5jcHAgZmlsZSwgcmVtb3ZlZCBvdmVycmlkZSBvZiBpc1Jvb3RlZEF0RG9j
dW1lbnQuCisKKyAgICAgICAgKiBodG1sL01lZGlhRG9jdW1lbnQuY3BwOiBVcGRhdGVkIGluY2x1
ZGVzLgorCisgICAgICAgICogaHRtbC9SYWRpb05vZGVMaXN0LmNwcDogUmVtb3ZlZCB1bm5lZWRl
ZCBpbmNsdWRlLgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6Y3JlYXRlKTogTW92
ZWQgdGhpcyBoZXJlIGZyb20gdGhlIGhlYWRlci4KKyAgICAgICAgKFdlYkNvcmU6Om5vbkVtcHR5
UmFkaW9CdXR0b24pOiBSZW5hbWVkIGZyb20gdG9SYWRpb0J1dHRvbklucHV0RWxlbWVudCB0byBt
YWtlCisgICAgICAgIGEgbGl0dGxlIGNsZWFyZXIgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcy4KKyAg
ICAgICAgKFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6OnZhbHVlIGNvbnN0KTogVXBkYXRlZCB0byB1
c2Ugbm9uRW1wdHlSYWRpb0J1dHRvbiBhbmQKKyAgICAgICAgc3RyYWlnaHRlbiBvdXQgdGhlIGxv
b3AgYSB0aW55IGJpdC4KKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6OnNldFZhbHVl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSYWRpb05vZGVMaXN0OjpjaGVja0VsZW1lbnRN
YXRjaGVzUmFkaW9Ob2RlTGlzdEZpbHRlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpSYWRpb05vZGVMaXN0OjplbGVtZW50TWF0Y2hlcyBjb25zdCk6IE1lcmdlZCBpbiB0aGUg
bG9naWMgZnJvbQorICAgICAgICBjaGVja0VsZW1lbnRNYXRjaGVzUmFkaW9Ob2RlTGlzdEZpbHRl
ciwgc2luY2UgdGhlIHNlcGFyYXRlIGZ1bmN0aW9uIHdhc24ndCBoZWxwZnVsLgorICAgICAgICAq
IGh0bWwvUmFkaW9Ob2RlTGlzdC5oOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzLiBNb3ZlZCB0
aGUgY3JlYXRlIGZ1bmN0aW9uIG91dAorICAgICAgICBvZiB0aGUgaGVhZGVyLiBSZW1vdmVkIHVu
bmVlZGVkIG92ZXJyaWRlIG9mIHRoZSBpdGVtIGZ1bmN0aW9uIHRvIHRpZ2h0ZW4gdGhlCisgICAg
ICAgIHJldHVybiB0eXBlOyBub3QgdXNlZCBpbiBXZWJDb3JlIGFuZCBub3QgaGVscGZ1bCBmb3Ig
YmluZGluZ3MuIE1hZGUgbW9yZSBwcml2YXRlLgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9Ob2Rl
TGlzdDo6aXRlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9SYWRpb05vZGVMaXN0
LmlkbDogUmVtb3ZlZCB1bm5lZWRlZCBnZXR0ZXI7IHRoZSBpbmhlcml0ZWQgb25lIGZyb20gTm9k
ZUxpc3QKKyAgICAgICAgd29ya3MgY29ycmVjdGx5LCBhbmQgdGhpcyBpc24ndCBtb3JlIGVmZmlj
aWVudCBiZWNhdXNlIG9mIGEgbW9yZSBzcGVjaWZpYyB0eXBlLgorCisgICAgICAgICogaHRtbC9U
ZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRU
eXBlOjpzdWdnZXN0aW9ucyk6IFVzZSBIVE1MRGF0YUxpc3RFbGVtZW50OjpzdWdnZXN0aW9ucwor
ICAgICAgICBpbnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLiBBbHNvIGFkZGVkIGEgRklYTUUgYmVj
YXVzZSB0aGUgY3VycmVudCBsb2dpYyBpcworICAgICAgICBub3QgcmlnaHQgYWNyb3NzIGxhbmd1
YWdlcyBhbmQgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVycy4KKworICAgICAgICAqIGh0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIEhUTUxDb2xsZWN0aW9uLmgu
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVj
dDo6Z2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZSk6CisgICAgICAgIFVzZSBkZXNjZW5kYW50c09m
VHlwZSBpbnN0ZWFkIG9mIGVsZW1lbnREZXNjZW5kYW50cy4KKworICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKTogVXNlIGFuY2VzdG9yc09mVHlw
ZQorICAgICAgICBpbnN0ZWFkIG9mIGEgaGFuZC13cml0dGVuIGxvb3AuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjppbnNwZWN0KTogVXNlIGlzRWxlbWVudE5vZGUgYW5kIGlzRG9j
dW1lbnROb2RlCisgICAgICAgIGluc3RlYWQgb2YgdGhlIG11Y2ggc2xvd2VyIG5vZGVUeXBlLgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE1vdXNlZE92ZXJO
b2RlKTogVXNlIGlzVGV4dE5vZGUgaW5zdGVhZCBvZgorICAgICAgICB0aGUgbXVjaCBzbG93ZXIg
bm9kZVR5cGUuCisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6IFVwZGF0
ZWQgaW5jbHVkZXMuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOiBE
aXR0by4KKworICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udGFpbmluZ0xpbmtFbGVtZW50KTogQWRkZWQuIFVzZXMgbGluZWFnZU9mVHlwZSBp
bnN0ZWFkIG9mIGVsZW1lbnRMaW5lYWdlLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OmRvU3lzdGVtRHJhZyk6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHA6IFJlbW92ZWQgaW5jbHVkZSBv
ZiBIVE1MQ29sbGVjdGlvbi5oLgorCisgICAgICAgICogcGxhdGZvcm0vRGF0YUxpc3RTdWdnZXN0
aW9uc0NsaWVudC5oOiBSZWR1Y2VkIGluY2x1ZGVzLCB1c2UgZm9yd2FyZCBkZWNsYXJhdGlvbnMu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MpOiBVc2UgSFRNTERhdGFMaXN0RWxlbWVu
dDo6c3VnZ2VzdGlvbnMKKyAgICAgICAgaW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojp1cGRhdGVNYXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVC
bGVuZGluZyk6CisgICAgICAgIFVzZSBhbmNlc3RvcnNPZlR5cGUgaW5zdGVhZCBvZiBhIGhhbmQt
d3JpdHRlbiBsb29wLgorCisgICAgICAgICogc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SW52YWxpZGF0b3I6OmludmFsaWRhdGVTdHlsZUZvckRl
c2NlbmRhbnRzKTogVXNlIG51bGwgY2hlY2tpbmcKKyAgICAgICAgc3R5bGUgZm9yIHRoZSBmb3Ig
bG9vcCByYXRoZXIgdGhhbiBjb21wYXJpbmcgd2l0aCBlbmQuCisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6SW52YWxpZGF0b3I6OmludmFsaWRhdGVTdHlsZVdpdGhNYXRjaEVsZW1lbnQpOiBSZW1v
dmUgYW4gdW5uZWVkZWQKKyAgICAgICAgbG9jYWwgdmFyaWFibGUgYW5kIHVubmVlZGVkIGJyYWNl
cy4KKworICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OmlzQXRTaGFkb3dCb3VuZGFyeSk6IFVzZSB0aGUgaXM8U2hhZG93Um9vdD4gZnVu
Y3Rpb24uCisKKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6IFVzZSB0aGUgaXM8U1ZHRWxl
bWVudD4gZnVuY3Rpb24uCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRWxlbWVudDo6dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24pOiBE
aXR0by4KKworICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6IE1hZGUgY29tcHV0ZWRTdHlsZSBw
dWJsaWMuIEF0IGxlYXN0IG9uZSBjYWxsIHNpdGUgbm93IGtub3dzIHRoZQorICAgICAgICBzcGVj
aWZpYyB0eXBlIFNWR0VsZW1lbnQsIGFuZCBzbyBjYW4gY2FsbCBpdCBldmVuIG1vcmUgZWZmaWNp
ZW50bHkgdGhhbiBiZWZvcmUuIElmCisgICAgICAgIHdlIGxlZnQgaXQgcHJpdmF0ZSB3ZSdkIGhh
dmUgdG8gY2FzdCB0byB0aGUgYmFzZSBjbGFzcyB0byBjYWxsIGl0LCBhbmQgdGhlbiB3b3VsZCBu
ZWVkCisgICAgICAgIHZpcnR1YWwgZnVuY3Rpb24gZGlzcGF0Y2guCisKKyAgICAgICAgKiBzdmcv
U1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVEaXNhbGxvd2VkRWxl
bWVudHNGcm9tU3VidHJlZSk6IFVzZSBudWxsIGNoZWNraW5nIHN0eWxlIHJhdGhlciB0aGFuCisg
ICAgICAgIGNvbXBhcmluZyB3aXRoIGVuZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1l
bnQ6OmV4cGFuZFVzZUVsZW1lbnRzSW5TaGFkb3dUcmVlIGNvbnN0KTogRGl0dG8uIEFsc28gYXNz
aWduCisgICAgICAgIGFuIGVtcHR5IGluaXRpYWxpemVyIGxpc3QgaW5zdGVhZCBvZiBlbmQuCisg
ICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpleHBhbmRTeW1ib2xFbGVtZW50c0luU2hh
ZG93VHJlZSBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VE
b2N1bWVudEZyYWdtZW50KTogVXNlIGxpbmVhZ2VPZlR5cGUgaW5zdGVhZCBvZgorICAgICAgICBl
bGVtZW50TGluZWFnZS4gQWxzbyBhZGQgYSBudWxsIGNoZWNrIHRoYXQgc2VlbXMgdG8gaGF2ZSBi
ZWVuIG5lZWRlZCBiZWZvcmUgdG9vLgorCiAyMDIwLTAyLTIxICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhbiB1bnVzZWQgbG9jYWwgdmFy
aWFibGUgYWZ0ZXIgcjI1NjgwOApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYWQ0ZjcxZDdjNGI0OTY5
MTAzMjE2MzNjYWFmYzM4ZDYwZjYyY2YxZC4uNTMzNzQ4Y2ZlN2Q2NTU1MWMzMDI5ODlmOGU2NTUw
NGJkM2MxZDY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0zOTAsNyArMzkwLDYgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGRvbS9FbGVtZW50Q2hpbGRJdGVy
YXRvci5oCiAgICAgZG9tL0VsZW1lbnRDb250ZXh0LmgKICAgICBkb20vRWxlbWVudERhdGEuaAot
ICAgIGRvbS9FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKICAgICBkb20vRWxlbWVudElkZW50
aWZpZXIuaAogICAgIGRvbS9FbGVtZW50SXRlcmF0b3IuaAogICAgIGRvbS9FbGVtZW50SXRlcmF0
b3JBc3NlcnRpb25zLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA3YjE4YTUwYTQ0ZjZhOGU2M2QxNGMzMjg4NDMzNTY3OTAxZDEx
MjBiLi40Yzc3MjU2NDdhOWZiY2U0MDMxYTdmYzkyNTQ4ZTM5NmQ2NzU0NjM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjkz
LDcgKzI2OTMsNiBAQAogCQk5M0QxOTYzMzFENkNBQjgyMDBGQzdFNDcgLyogRXhjZXB0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0QxOTYzMjFE
NkNBQjgyMDBGQzdFNDcgLyogRXhjZXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENDM3OUYxRDU3QjE1MzAwQUI4NUVBIC8qIEpTRXhl
Y1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
RjkzNEQ4MzExODlGMUVFMDA1MDhENUQgLyogSlNFeGVjU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q0MzdBMDFENTdCMTlBMDBBQjg1
RUEgLyogQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNTZDOUE4MUM4OTMxMjgwMEM0NTZERiAvKiBDdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTkzRDQzN0ExMUQ1N0IzRjQwMEFCODVFQSAvKiBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBREUxMUY0QTE4RDgzMTFCMDA3ODk4M0IgLyogRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTkzRDQzN0EyMUQ1N0IzRkUwMEFCODVFQSAvKiBVUkxVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2QjlEQ0ExODlERTEwMDAwQkI4NDJDIC8q
IFVSTFV0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNENDM3QTMxRDU3QjdFMjAwQUI4NUVBIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDcyNkZFNzE2RDlG
MjA0MDAzQTRFNkQgLyogSlNNZWRpYUxpc3RDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q5RDUzQzBEQTI3RTE4MDA3NzIxNkMgLyog
UmFuZ2VCb3VuZGFyeVBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0Q5RDUzQjBEQTI3RTE4MDA3NzIxNkMgLyogUmFuZ2VCb3VuZGFyeVBvaW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEw
NzI5LDYgKzEwNzI4LDcgQEAKIAkJOTM4MEY0NzEwOUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2lkZ2V0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM4MEY0NzIwOUExMUFCNDAwMUZEQjM0IC8qIFdp
ZGdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2lkZ2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzODBGNDc3MDlBMTFBQ0MwMDFGREIzNCAvKiBXaWRn
ZXRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2lkZ2V0
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzgxQjk0MTIzRjlCMEUwMDA3
MTE4QjQgLyogUmFkaW9Ob2RlTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmFkaW9Ob2RlTGlzdC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzODJBQUIxMEQ4QzM4NjEwMEYzNTdBNiAvKiBOb2Rl
V2l0aEluZGV4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vZGVXaXRoSW5k
ZXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM4MkRGNTcxMEE4RDVDOTAwOTI1
NjUyIC8qIENvbG9yU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29s
b3JTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzhFNjVGMDA5RjA5ODQw
MDA4QTQ4RUMgLyogSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaDsgcGF0aCA9
IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5Lmg7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0xMjI3Niw3ICsxMjI3Niw2IEBA
CiAJCUFEREE5NEJGMTk2ODZGODAwMDQ1MzAyOSAvKiBKU0RvY3VtZW50Q3VzdG9tLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRG9jdW1lbnRDdXN0b20uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURERjFBRDQxMjU3Q0Q5QTAwMDNBNzU5IC8qIFJlbmRlclNW
R1BhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZH
UGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEREYxQUQ1MTI1N0NEOUEw
MDAzQTc1OSAvKiBSZW5kZXJTVkdQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbmRlclNWR1BhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQURFMTFG
NEExOEQ4MzExQjAwNzg5ODNCIC8qIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBREUxNjczNjE4MTA1MEMzMDA0NjNBMkUgLyog
UmVuZGVyUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclB0ci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBREVDNzhGNzE4RUU1MzA4MDAxMzE1QzIg
LyogSlNFbGVtZW50Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RWxlbWVudEN1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBREZFMkI1NDFC
RDVGNDEyMDBEQUI0NTcgLyogUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlVXNhZ2VPdmVybGF5Q29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjE0OSw2ICsyMjE0OCw3IEBACiAJ
CQkJRjU1QjNEOTgxMjUxRjEyRDAwM0VGMjY5IC8qIFJhZGlvSW5wdXRUeXBlLmggKi8sCiAJCQkJ
QjY1OEZGQTMxNTIyRUZBQTAwREQ1NTk1IC8qIFJhZGlvTm9kZUxpc3QuY3BwICovLAogCQkJCUI2
NThGRkE0MTUyMkVGQUEwMERENTU5NSAvKiBSYWRpb05vZGVMaXN0LmggKi8sCisJCQkJOTM4MUI5
NDEyM0Y5QjBFMDAwNzExOEI0IC8qIFJhZGlvTm9kZUxpc3QuaWRsICovLAogCQkJCUY1NUIzRDk5
MTI1MUYxMkQwMDNFRjI2OSAvKiBSYW5nZUlucHV0VHlwZS5jcHAgKi8sCiAJCQkJRjU1QjNEOUEx
MjUxRjEyRDAwM0VGMjY5IC8qIFJhbmdlSW5wdXRUeXBlLmggKi8sCiAJCQkJRjU1QjNEOUIxMjUx
RjEyRDAwM0VGMjY5IC8qIFJlc2V0SW5wdXRUeXBlLmNwcCAqLywKQEAgLTI4MTMyLDcgKzI4MTMy
LDYgQEAKIAkJCQkzMTNCQ0UxQjIzNUUzQkRCMDBGQzM5RTUgLyogRWxlbWVudENvbnRleHQuaCAq
LywKIAkJCQlCNUI3QTE2RjE3QzEwODA2MDBFNEFBMEEgLyogRWxlbWVudERhdGEuY3BwICovLAog
CQkJCUI1QjdBMTZFMTdDMTA0ODAwMEU0QUEwQSAvKiBFbGVtZW50RGF0YS5oICovLAotCQkJCUFE
RTExRjRBMThEODMxMUIwMDc4OTgzQiAvKiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggKi8s
CiAJCQkJMkQyQkVCMkYyMjM0QTMzNDAwNTU0NENBIC8qIEVsZW1lbnRJZGVudGlmaWVyLmggKi8s
CiAJCQkJRTRBRTdDMTUxN0QxQkI5NTAwMDlGQjMxIC8qIEVsZW1lbnRJdGVyYXRvci5oICovLAog
CQkJCUU0MDFDMjc0MTdDRTUzRUMwMEM0MUEzNSAvKiBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25z
LmggKi8sCkBAIC0yOTc5OCw3ICsyOTc5Nyw2IEBACiAJCQkJRTQ2QTJCMUUxN0NBNzZCMTAwMERC
Q0Q4IC8qIEVsZW1lbnRDaGlsZEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTNCQ0Ux
QzIzNUUzQkU1MDBGQzM5RTUgLyogRWxlbWVudENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUI1QjdBMTcxMTdDMTBBQzAwMEU0QUEwQSAvKiBFbGVtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJOTNENDM3QTExRDU3QjNGNDAwQUI4NUVBIC8qIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMkJFQjMxMjIzNEEzMzUwMDU1NDRDQSAvKiBFbGVt
ZW50SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBRTdDMTYxN0QxQkI5NTAwMDlG
QjMxIC8qIEVsZW1lbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQwMUMyNzUxN0NF
NTNFQzAwQzQxQTM1IC8qIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0LmNwcAppbmRleCAyMDllYjhlNjU4ZTBiNzM0MThlYzJjZDAwY2Q4MGE0MTZm
YTI5MzNhLi40NThhNDA1N2UyY2ZmZDJmNmY4NWNlODAxY2FmOWQ2MWQyODAyOWY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0LmNwcApAQCAtMTA0NCw3ICsxMDQ0LDcgQEAgRWxlbWVudCogQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6Om1vdXNlQnV0dG9uTGlzdGVuZXIoTW91c2VCdXR0b25MaXN0ZW5lclJlc3VsdEYK
IAogICAgIC8vIGNoZWNrIGlmIG91ciBwYXJlbnQgaXMgYSBtb3VzZSBidXR0b24gbGlzdGVuZXIK
ICAgICAvLyBGSVhNRTogRG8gdGhlIGNvbnRpbnVhdGlvbiBzZWFyY2ggbGlrZSBhbmNob3JFbGVt
ZW50IGRvZXMKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50TGluZWFnZShpczxFbGVt
ZW50Pigqbm9kZSkgPyBkb3duY2FzdDxFbGVtZW50Pihub2RlKSA6IG5vZGUtPnBhcmVudEVsZW1l
bnQoKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEVsZW1lbnQ+
KGlzPEVsZW1lbnQ+KCpub2RlKSA/IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKSA6ICpub2RlLT5w
YXJlbnRFbGVtZW50KCkpKSB7CiAgICAgICAgIC8vIElmIHdlJ3ZlIHJlYWNoZWQgdGhlIGJvZHkg
YW5kIHRoaXMgaXMgbm90IGEgY29udHJvbCBlbGVtZW50LCBkbyBub3QgZXhwb3NlIHByZXNzIGFj
dGlvbiBmb3IgdGhpcyBlbGVtZW50IHVubGVzcyBmaWx0ZXIgaXMgSW5jbHVkZUJvZHlFbGVtZW50
LgogICAgICAgICAvLyBJdCBjYW4gY2F1c2UgZmFsc2UgcG9zaXRpdmVzLCB3aGVyZSBldmVyeSBw
aWVjZSBvZiB0ZXh0IGlzIGxhYmVsZWQgYXMgYWNjZXB0aW5nIHByZXNzIGFjdGlvbnMuCiAgICAg
ICAgIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUoYm9keVRhZykgJiYgaXNTdGF0aWNUZXh0KCkgJiYg
ZmlsdGVyID09IEV4Y2x1ZGVCb2R5RWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDk2
ZjMzY2I3MzRhNzA4MzY5YjRmM2JhM2Q1NDg0ODhlNTA0OTU3NzAuLjhhODMwMGQwOTdlMTBmYzRm
MzMwMzczMzQxYzExNGExNzE5YTMwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0qIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMzc1LDIxICsy
Mzc1LDE5IEBAIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNz
aWJpbGl0eUltYWdlTWFwSGl0VGVzdChIVE1MQXJlYUVsCiAgICAgaWYgKCFhcmVhKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IG51
bGxwdHI7Ci0gICAgZm9yIChFbGVtZW50KiBtYXBQYXJlbnQgPSBhcmVhLT5wYXJlbnRFbGVtZW50
KCk7IG1hcFBhcmVudDsgbWFwUGFyZW50ID0gbWFwUGFyZW50LT5wYXJlbnRFbGVtZW50KCkpIHsK
LSAgICAgICAgaWYgKGlzPEhUTUxNYXBFbGVtZW50PigqbWFwUGFyZW50KSkgewotICAgICAgICAg
ICAgcGFyZW50ID0gYWNjZXNzaWJpbGl0eVBhcmVudEZvckltYWdlTWFwKGRvd25jYXN0PEhUTUxN
YXBFbGVtZW50PihtYXBQYXJlbnQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgfQorICAgIGF1dG8qIG1hcFBhcmVudCA9IGFuY2VzdG9yc09mVHlwZTxIVE1MTWFwRWxlbWVu
dD4oKmFyZWEpLmZpcnN0KCk7CisgICAgaWYgKCFtYXBQYXJlbnQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgYXV0byogcGFyZW50ID0gYWNjZXNzaWJpbGl0eVBhcmVudEZvckltYWdl
TWFwKG1hcFBhcmVudCk7CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIAorCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IHBhcmVudC0+Y2hpbGRyZW4o
KSkgewogICAgICAgICBpZiAoY2hpbGQtPmVsZW1lbnRSZWN0KCkuY29udGFpbnMocG9pbnQpKQog
ICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVy
biBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKaW5kZXggZmRjNjdmOGFjMTU2YTVhZGJi
YWE2MTM1NzZiODY4MmFlNjI3MTVhMS4uZmY0NzhmZDIzNjE3OGJhMzliYzIyZGMxOTVhMTQ4YTU3
OTJlMjdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcApAQCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVk
ZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCIK
LSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAyMDUw
NmY4ZWNmYWM2NTNlNTVhZDA0ODFkZGE1NjBmNWZkNzJhNTRkLi40ZTAwOWZlZDZiZDBlMzExNTdj
NjY0MDljN2IzNWZjYzdlZmYyMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAiRE9N
V2luZG93SW5kZXhlZERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93V2ViRGF0YWJhc2Uu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5j
bHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKQEAgLTM4LDcgKzM3LDYgQEAKICNpbmNsdWRlICJK
U0V2ZW50LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSlNIVE1M
QXVkaW9FbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkpTSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0lEQkZhY3RvcnkuaCIKICNpbmNs
dWRlICJKU1JlbW90ZURPTVdpbmRvdy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0FsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0FsbERlc2Nl
bmRhbnRzQ29sbGVjdGlvbi5oCmluZGV4IDg1NzJhZjU1MDg2NDk3NThmZDAzN2EzNGZlMzlmM2Uz
MjMwYTk1OTEuLjEyMGNmMzBjZTkyZTc2ODkyMzJjMmIzOTY2MDRkMzRlMjhhMTg0MWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmgKQEAgLTQyLDcg
KzQyLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgQWxsRGVzY2VuZGFudHNDb2xsZWN0
aW9uKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBDb2xsZWN0aW9uVHlwZSB0eXBlKQotICAgICAg
ICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbiwgQ29sbGVj
dGlvblR5cGVUcmFpdHM8QWxsRGVzY2VuZGFudHM+Ojp0cmF2ZXJzYWxUeXBlPihyb290Tm9kZSwg
dHlwZSkKKyAgICAgICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbihyb290Tm9kZSwgdHlwZSkKICAg
ICB7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmNwcAppbmRleCBjYmY2ZjFl
NzgyNjkxMDkyNWE2NTY1MmMzM2FlMGNmZDU2NjdiMjAzLi40N2U0NmRjYmI1NTk4ZTc4MjM3NTU2
ZGI3YTdhY2ZlMjA0OThlMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRO
b2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuY3BwCkBA
IC0zOSw3ICszOSw2IEBAIEVtcHR5Tm9kZUxpc3Q6On5FbXB0eU5vZGVMaXN0KCkKIAogQ2hpbGRO
b2RlTGlzdDo6Q2hpbGROb2RlTGlzdChDb250YWluZXJOb2RlJiBwYXJlbnQpCiAgICAgOiBtX3Bh
cmVudChwYXJlbnQpCi0gICAgLCBtX2luZGV4Q2FjaGUoKnRoaXMpCiB7CiB9CiAKQEAgLTg3LDcg
Kzg2LDcgQEAgdm9pZCBDaGlsZE5vZGVMaXN0Ojpjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChO
b2RlKiYgY3VycmVudCwgdW5zaWduZWQgY291bnQpIGMKIAogdm9pZCBDaGlsZE5vZGVMaXN0Ojpp
bnZhbGlkYXRlQ2FjaGUoKQogewotICAgIG1faW5kZXhDYWNoZS5pbnZhbGlkYXRlKCp0aGlzKTsK
KyAgICBtX2luZGV4Q2FjaGUuaW52YWxpZGF0ZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuaAppbmRleCAxMTMyODJlZDk2MjJhOWQ1MDFh
YTc0ZTAzMmQ4N2M2OTFjYjkzN2I2Li4xMGI5YTI4NjkwMmY2ZGE3MzBkMWY0M2I1M2Q3NjUzZjAw
NDRmMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmgKQEAgLTcyLDcgKzcyLDYgQEAg
cHVibGljOgogICAgIC8vIEZvciBDb2xsZWN0aW9uSW5kZXhDYWNoZQogICAgIE5vZGUqIGNvbGxl
Y3Rpb25CZWdpbigpIGNvbnN0OwogICAgIE5vZGUqIGNvbGxlY3Rpb25MYXN0KCkgY29uc3Q7Ci0g
ICAgTm9kZSogY29sbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2
b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoTm9kZSomLCB1bnNpZ25lZCBjb3VudCwgdW5z
aWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdDsKICAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJz
ZUJhY2t3YXJkKE5vZGUqJiwgdW5zaWduZWQgY291bnQpIGNvbnN0OwogICAgIGJvb2wgY29sbGVj
dGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xhc3NDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ2xhc3NDb2xsZWN0aW9uLmgKaW5kZXggZWNmN2YzZDIwYzYxNWM0Njg5ODIwZjE5YWE5
Y2YzYTg2MzJmNmJkZC4uYTY3NWQzMDZiZGY3NWYzOGFmOWZmZTg5YTZiNGJlODkyM2ZkNGM0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NsYXNzQ29sbGVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DbGFzc0NvbGxlY3Rpb24uaApAQCAtNTIsNyArNTIsNyBAQCBwcml2
YXRlOgogfTsKIAogaW5saW5lIENsYXNzQ29sbGVjdGlvbjo6Q2xhc3NDb2xsZWN0aW9uKENvbnRh
aW5lck5vZGUmIHJvb3ROb2RlLCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBjbGFzc05hbWVzKQotICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248Q2xhc3NDb2xsZWN0aW9u
LCBDb2xsZWN0aW9uVHlwZVRyYWl0czxCeUNsYXNzPjo6dHJhdmVyc2FsVHlwZT4ocm9vdE5vZGUs
IHR5cGUpCisgICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbihyb290Tm9kZSwgdHlwZSkKICAgICAs
IG1fY2xhc3NOYW1lcyhjbGFzc05hbWVzLCByb290Tm9kZS5kb2N1bWVudCgpLmluUXVpcmtzTW9k
ZSgpKQogICAgICwgbV9vcmlnaW5hbENsYXNzTmFtZXMoY2xhc3NOYW1lcykKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db2xsZWN0aW9uSW5kZXhDYWNoZS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbGxlY3Rpb25JbmRleENhY2hlLmgKaW5kZXggMjgwMTk0MmZkYTA4OGM1YzVm
NmExMTVhMjU5NDc4ODViNWVlYjFmOS4uM2Y4MWIyM2E2ZGE0NTI5NTg0MjE3NjIzNWRmNDUyYTc1
NjY5NGUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbGxlY3Rpb25JbmRleENh
Y2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbGxlY3Rpb25JbmRleENhY2hlLmgKQEAg
LTM0LDE1ICszNCwxNSBAQCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5QWxs
b2NhdGVkRm9yQ29sbGVjdGlvbkluZGV4Q2FjaGUoc2l6ZV90KTsKIHRlbXBsYXRlIDxjbGFzcyBD
b2xsZWN0aW9uLCBjbGFzcyBJdGVyYXRvcj4KIGNsYXNzIENvbGxlY3Rpb25JbmRleENhY2hlIHsK
IHB1YmxpYzoKLSAgICBleHBsaWNpdCBDb2xsZWN0aW9uSW5kZXhDYWNoZShjb25zdCBDb2xsZWN0
aW9uJik7CisgICAgQ29sbGVjdGlvbkluZGV4Q2FjaGUoKTsKIAogICAgIHR5cGVkZWYgdHlwZW5h
bWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ojp2YWx1ZV90eXBlIE5vZGVUeXBlOwog
CiAgICAgdW5zaWduZWQgbm9kZUNvdW50KGNvbnN0IENvbGxlY3Rpb24mKTsKICAgICBOb2RlVHlw
ZSogbm9kZUF0KGNvbnN0IENvbGxlY3Rpb24mLCB1bnNpZ25lZCBpbmRleCk7CiAKLSAgICBib29s
IGhhc1ZhbGlkQ2FjaGUoY29uc3QgQ29sbGVjdGlvbiYgY29sbGVjdGlvbikgY29uc3QgeyByZXR1
cm4gbV9jdXJyZW50ICE9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpIHx8IG1fbm9kZUNvdW50
VmFsaWQgfHwgbV9saXN0VmFsaWQ7IH0KLSAgICB2b2lkIGludmFsaWRhdGUoY29uc3QgQ29sbGVj
dGlvbiYpOworICAgIGJvb2wgaGFzVmFsaWRDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVu
dCB8fCBtX25vZGVDb3VudFZhbGlkIHx8IG1fbGlzdFZhbGlkOyB9CisgICAgdm9pZCBpbnZhbGlk
YXRlKCk7CiAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKQogICAgIHsKICAgICAgICAgLy8gbWVtb3J5
Q29zdCgpIG1heSBiZSBpbnZva2VkIGNvbmN1cnJlbnRseSBmcm9tIGEgR0MgdGhyZWFkLCBhbmQg
d2UgbmVlZCB0byBiZSBjYXJlZnVsCkBAIC01NiwyMCArNTYsMTYgQEAgcHJpdmF0ZToKICAgICBO
b2RlVHlwZSogdHJhdmVyc2VCYWNrd2FyZFRvKGNvbnN0IENvbGxlY3Rpb24mLCB1bnNpZ25lZCk7
CiAgICAgTm9kZVR5cGUqIHRyYXZlcnNlRm9yd2FyZFRvKGNvbnN0IENvbGxlY3Rpb24mLCB1bnNp
Z25lZCk7CiAKLSAgICBJdGVyYXRvciBtX2N1cnJlbnQ7Ci0gICAgdW5zaWduZWQgbV9jdXJyZW50
SW5kZXg7Ci0gICAgdW5zaWduZWQgbV9ub2RlQ291bnQ7CisgICAgSXRlcmF0b3IgbV9jdXJyZW50
IHsgfTsKKyAgICB1bnNpZ25lZCBtX2N1cnJlbnRJbmRleCB7IDAgfTsKKyAgICB1bnNpZ25lZCBt
X25vZGVDb3VudCB7IDAgfTsKICAgICBWZWN0b3I8Tm9kZVR5cGUqPiBtX2NhY2hlZExpc3Q7CiAg
ICAgYm9vbCBtX25vZGVDb3VudFZhbGlkIDogMTsKICAgICBib29sIG1fbGlzdFZhbGlkIDogMTsK
IH07CiAKLXRlbXBsYXRlIDxjbGFzcyBDb2xsZWN0aW9uLCBjbGFzcyBJdGVyYXRvcj4KLWlubGlu
ZSBDb2xsZWN0aW9uSW5kZXhDYWNoZTxDb2xsZWN0aW9uLCBJdGVyYXRvcj46OkNvbGxlY3Rpb25J
bmRleENhY2hlKGNvbnN0IENvbGxlY3Rpb24mIGNvbGxlY3Rpb24pCi0gICAgOiBtX2N1cnJlbnQo
Y29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCkpCi0gICAgLCBtX2N1cnJlbnRJbmRleCgwKQotICAg
ICwgbV9ub2RlQ291bnQoMCkKLSAgICAsIG1fbm9kZUNvdW50VmFsaWQoZmFsc2UpCit0ZW1wbGF0
ZTxjbGFzcyBDb2xsZWN0aW9uLCBjbGFzcyBJdGVyYXRvcj4gQ29sbGVjdGlvbkluZGV4Q2FjaGU8
Q29sbGVjdGlvbiwgSXRlcmF0b3I+OjpDb2xsZWN0aW9uSW5kZXhDYWNoZSgpCisgICAgOiBtX25v
ZGVDb3VudFZhbGlkKGZhbHNlKQogICAgICwgbV9saXN0VmFsaWQoZmFsc2UpCiB7CiB9CkBAIC03
OCw3ICs3NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBDb2xsZWN0aW9uLCBjbGFzcyBJdGVyYXRvcj4K
IGlubGluZSB1bnNpZ25lZCBDb2xsZWN0aW9uSW5kZXhDYWNoZTxDb2xsZWN0aW9uLCBJdGVyYXRv
cj46Om5vZGVDb3VudChjb25zdCBDb2xsZWN0aW9uJiBjb2xsZWN0aW9uKQogewogICAgIGlmICgh
bV9ub2RlQ291bnRWYWxpZCkgewotICAgICAgICBpZiAoIWhhc1ZhbGlkQ2FjaGUoY29sbGVjdGlv
bikpCisgICAgICAgIGlmICghaGFzVmFsaWRDYWNoZSgpKQogICAgICAgICAgICAgY29sbGVjdGlv
bi53aWxsVmFsaWRhdGVJbmRleENhY2hlKCk7CiAgICAgICAgIG1fbm9kZUNvdW50ID0gY29tcHV0
ZU5vZGVDb3VudFVwZGF0aW5nTGlzdENhY2hlKGNvbGxlY3Rpb24pOwogICAgICAgICBtX25vZGVD
b3VudFZhbGlkID0gdHJ1ZTsKQEAgLTkxLDE2ICs4NywxNSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgQ29s
bGVjdGlvbiwgY2xhc3MgSXRlcmF0b3I+CiB1bnNpZ25lZCBDb2xsZWN0aW9uSW5kZXhDYWNoZTxD
b2xsZWN0aW9uLCBJdGVyYXRvcj46OmNvbXB1dGVOb2RlQ291bnRVcGRhdGluZ0xpc3RDYWNoZShj
b25zdCBDb2xsZWN0aW9uJiBjb2xsZWN0aW9uKQogewogICAgIGF1dG8gY3VycmVudCA9IGNvbGxl
Y3Rpb24uY29sbGVjdGlvbkJlZ2luKCk7Ci0gICAgYXV0byBlbmQgPSBjb2xsZWN0aW9uLmNvbGxl
Y3Rpb25FbmQoKTsKLSAgICBpZiAoY3VycmVudCA9PSBlbmQpCisgICAgaWYgKCFjdXJyZW50KQog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIHVuc2lnbmVkIG9sZENhcGFjaXR5ID0gbV9jYWNoZWRM
aXN0LmNhcGFjaXR5KCk7Ci0gICAgd2hpbGUgKGN1cnJlbnQgIT0gZW5kKSB7CisgICAgd2hpbGUg
KGN1cnJlbnQpIHsKICAgICAgICAgbV9jYWNoZWRMaXN0LmFwcGVuZCgmKmN1cnJlbnQpOwogICAg
ICAgICB1bnNpZ25lZCB0cmF2ZXJzZWQ7CiAgICAgICAgIGNvbGxlY3Rpb24uY29sbGVjdGlvblRy
YXZlcnNlRm9yd2FyZChjdXJyZW50LCAxLCB0cmF2ZXJzZWQpOwotICAgICAgICBBU1NFUlQodHJh
dmVyc2VkID09IChjdXJyZW50ICE9IGVuZCA/IDEgOiAwKSk7CisgICAgICAgIEFTU0VSVCh0cmF2
ZXJzZWQgPT0gKGN1cnJlbnQgPyAxIDogMCkpOwogICAgIH0KICAgICBtX2xpc3RWYWxpZCA9IHRy
dWU7CiAKQEAgLTExMyw3ICsxMDgsNyBAQCB1bnNpZ25lZCBDb2xsZWN0aW9uSW5kZXhDYWNoZTxD
b2xsZWN0aW9uLCBJdGVyYXRvcj46OmNvbXB1dGVOb2RlQ291bnRVcGRhdGluZ0xpcwogdGVtcGxh
dGUgPGNsYXNzIENvbGxlY3Rpb24sIGNsYXNzIEl0ZXJhdG9yPgogaW5saW5lIHR5cGVuYW1lIENv
bGxlY3Rpb25JbmRleENhY2hlPENvbGxlY3Rpb24sIEl0ZXJhdG9yPjo6Tm9kZVR5cGUqIENvbGxl
Y3Rpb25JbmRleENhY2hlPENvbGxlY3Rpb24sIEl0ZXJhdG9yPjo6dHJhdmVyc2VCYWNrd2FyZFRv
KGNvbnN0IENvbGxlY3Rpb24mIGNvbGxlY3Rpb24sIHVuc2lnbmVkIGluZGV4KQogewotICAgIEFT
U0VSVChtX2N1cnJlbnQgIT0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCkpOworICAgIEFTU0VS
VChtX2N1cnJlbnQpOwogICAgIEFTU0VSVChpbmRleCA8IG1fY3VycmVudEluZGV4KTsKIAogICAg
IGJvb2wgZmlyc3RJc0Nsb3NlciA9IGluZGV4IDwgbV9jdXJyZW50SW5kZXggLSBpbmRleDsKQEAg
LTEyMiw1MCArMTE3LDUwIEBAIGlubGluZSB0eXBlbmFtZSBDb2xsZWN0aW9uSW5kZXhDYWNoZTxD
b2xsZWN0aW9uLCBJdGVyYXRvcj46Ok5vZGVUeXBlKiBDb2xsZWN0aW9uCiAgICAgICAgIG1fY3Vy
cmVudEluZGV4ID0gMDsKICAgICAgICAgaWYgKGluZGV4KQogICAgICAgICAgICAgY29sbGVjdGlv
bi5jb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKG1fY3VycmVudCwgaW5kZXgsIG1fY3VycmVudElu
ZGV4KTsKLSAgICAgICAgQVNTRVJUKG1fY3VycmVudCAhPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25F
bmQoKSk7CisgICAgICAgIEFTU0VSVChtX2N1cnJlbnQpOwogICAgICAgICByZXR1cm4gJiptX2N1
cnJlbnQ7CiAgICAgfQogCiAgICAgY29sbGVjdGlvbi5jb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2Fy
ZChtX2N1cnJlbnQsIG1fY3VycmVudEluZGV4IC0gaW5kZXgpOwogICAgIG1fY3VycmVudEluZGV4
ID0gaW5kZXg7CiAKLSAgICBBU1NFUlQobV9jdXJyZW50ICE9IGNvbGxlY3Rpb24uY29sbGVjdGlv
bkVuZCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50KTsKICAgICByZXR1cm4gJiptX2N1cnJlbnQ7
CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBDb2xsZWN0aW9uLCBjbGFzcyBJdGVyYXRvcj4KIGlubGlu
ZSB0eXBlbmFtZSBDb2xsZWN0aW9uSW5kZXhDYWNoZTxDb2xsZWN0aW9uLCBJdGVyYXRvcj46Ok5v
ZGVUeXBlKiBDb2xsZWN0aW9uSW5kZXhDYWNoZTxDb2xsZWN0aW9uLCBJdGVyYXRvcj46OnRyYXZl
cnNlRm9yd2FyZFRvKGNvbnN0IENvbGxlY3Rpb24mIGNvbGxlY3Rpb24sIHVuc2lnbmVkIGluZGV4
KQogewotICAgIEFTU0VSVChtX2N1cnJlbnQgIT0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCkp
OworICAgIEFTU0VSVChtX2N1cnJlbnQpOwogICAgIEFTU0VSVChpbmRleCA+IG1fY3VycmVudElu
ZGV4KTsKICAgICBBU1NFUlQoIW1fbm9kZUNvdW50VmFsaWQgfHwgaW5kZXggPCBtX25vZGVDb3Vu
dCk7CiAKICAgICBib29sIGxhc3RJc0Nsb3NlciA9IG1fbm9kZUNvdW50VmFsaWQgJiYgbV9ub2Rl
Q291bnQgLSBpbmRleCA8IGluZGV4IC0gbV9jdXJyZW50SW5kZXg7CiAgICAgaWYgKGxhc3RJc0Ns
b3NlciAmJiBjb2xsZWN0aW9uLmNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJhY2t3YXJkKCkpIHsKLSAg
ICAgICAgQVNTRVJUKGhhc1ZhbGlkQ2FjaGUoY29sbGVjdGlvbikpOworICAgICAgICBBU1NFUlQo
aGFzVmFsaWRDYWNoZSgpKTsKICAgICAgICAgbV9jdXJyZW50ID0gY29sbGVjdGlvbi5jb2xsZWN0
aW9uTGFzdCgpOwogICAgICAgICBpZiAoaW5kZXggPCBtX25vZGVDb3VudCAtIDEpCiAgICAgICAg
ICAgICBjb2xsZWN0aW9uLmNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKG1fY3VycmVudCwgbV9u
b2RlQ291bnQgLSBpbmRleCAtIDEpOwogICAgICAgICBtX2N1cnJlbnRJbmRleCA9IGluZGV4Owot
ICAgICAgICBBU1NFUlQobV9jdXJyZW50ICE9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpKTsK
KyAgICAgICAgQVNTRVJUKG1fY3VycmVudCk7CiAgICAgICAgIHJldHVybiAmKm1fY3VycmVudDsK
ICAgICB9CiAKLSAgICBpZiAoIWhhc1ZhbGlkQ2FjaGUoY29sbGVjdGlvbikpCisgICAgaWYgKCFo
YXNWYWxpZENhY2hlKCkpCiAgICAgICAgIGNvbGxlY3Rpb24ud2lsbFZhbGlkYXRlSW5kZXhDYWNo
ZSgpOwogCiAgICAgdW5zaWduZWQgdHJhdmVyc2VkQ291bnQ7CiAgICAgY29sbGVjdGlvbi5jb2xs
ZWN0aW9uVHJhdmVyc2VGb3J3YXJkKG1fY3VycmVudCwgaW5kZXggLSBtX2N1cnJlbnRJbmRleCwg
dHJhdmVyc2VkQ291bnQpOwogICAgIG1fY3VycmVudEluZGV4ID0gbV9jdXJyZW50SW5kZXggKyB0
cmF2ZXJzZWRDb3VudDsKIAotICAgIGlmIChtX2N1cnJlbnQgPT0gY29sbGVjdGlvbi5jb2xsZWN0
aW9uRW5kKCkpIHsKKyAgICBpZiAoIW1fY3VycmVudCkgewogICAgICAgICBBU1NFUlQobV9jdXJy
ZW50SW5kZXggPCBpbmRleCk7CiAgICAgICAgIC8vIEZhaWxlZCB0byBmaW5kIHRoZSBpbmRleCBi
dXQgYXQgbGVhc3Qgd2Ugbm93IGtub3cgdGhlIHNpemUuCiAgICAgICAgIG1fbm9kZUNvdW50ID0g
bV9jdXJyZW50SW5kZXggKyAxOwogICAgICAgICBtX25vZGVDb3VudFZhbGlkID0gdHJ1ZTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIEFTU0VSVChoYXNWYWxpZENhY2hlKGNv
bGxlY3Rpb24pKTsKKyAgICBBU1NFUlQoaGFzVmFsaWRDYWNoZSgpKTsKICAgICByZXR1cm4gJipt
X2N1cnJlbnQ7CiB9CiAKQEAgLTE3OCw4ICsxNzMsNyBAQCBpbmxpbmUgdHlwZW5hbWUgQ29sbGVj
dGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+OjpOb2RlVHlwZSogQ29sbGVjdGlv
bgogICAgIGlmIChtX2xpc3RWYWxpZCkKICAgICAgICAgcmV0dXJuIG1fY2FjaGVkTGlzdFtpbmRl
eF07CiAKLSAgICBhdXRvIGVuZCA9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpOwotICAgIGlm
IChtX2N1cnJlbnQgIT0gZW5kKSB7CisgICAgaWYgKG1fY3VycmVudCkgewogICAgICAgICBpZiAo
aW5kZXggPiBtX2N1cnJlbnRJbmRleCkKICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZUZvcndh
cmRUbyhjb2xsZWN0aW9uLCBpbmRleCk7CiAgICAgICAgIGlmIChpbmRleCA8IG1fY3VycmVudElu
ZGV4KQpAQCAtMTg5LDM5ICsxODMsMzkgQEAgaW5saW5lIHR5cGVuYW1lIENvbGxlY3Rpb25JbmRl
eENhY2hlPENvbGxlY3Rpb24sIEl0ZXJhdG9yPjo6Tm9kZVR5cGUqIENvbGxlY3Rpb24KIAogICAg
IGJvb2wgbGFzdElzQ2xvc2VyID0gbV9ub2RlQ291bnRWYWxpZCAmJiBtX25vZGVDb3VudCAtIGlu
ZGV4IDwgaW5kZXg7CiAgICAgaWYgKGxhc3RJc0Nsb3NlciAmJiBjb2xsZWN0aW9uLmNvbGxlY3Rp
b25DYW5UcmF2ZXJzZUJhY2t3YXJkKCkpIHsKLSAgICAgICAgQVNTRVJUKGhhc1ZhbGlkQ2FjaGUo
Y29sbGVjdGlvbikpOworICAgICAgICBBU1NFUlQoaGFzVmFsaWRDYWNoZSgpKTsKICAgICAgICAg
bV9jdXJyZW50ID0gY29sbGVjdGlvbi5jb2xsZWN0aW9uTGFzdCgpOwogICAgICAgICBpZiAoaW5k
ZXggPCBtX25vZGVDb3VudCAtIDEpCiAgICAgICAgICAgICBjb2xsZWN0aW9uLmNvbGxlY3Rpb25U
cmF2ZXJzZUJhY2t3YXJkKG1fY3VycmVudCwgbV9ub2RlQ291bnQgLSBpbmRleCAtIDEpOwogICAg
ICAgICBtX2N1cnJlbnRJbmRleCA9IGluZGV4OwotICAgICAgICBBU1NFUlQobV9jdXJyZW50ICE9
IGVuZCk7CisgICAgICAgIEFTU0VSVChtX2N1cnJlbnQpOwogICAgICAgICByZXR1cm4gJiptX2N1
cnJlbnQ7CiAgICAgfQogCi0gICAgaWYgKCFoYXNWYWxpZENhY2hlKGNvbGxlY3Rpb24pKQorICAg
IGlmICghaGFzVmFsaWRDYWNoZSgpKQogICAgICAgICBjb2xsZWN0aW9uLndpbGxWYWxpZGF0ZUlu
ZGV4Q2FjaGUoKTsKIAogICAgIG1fY3VycmVudCA9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkJlZ2lu
KCk7CiAgICAgbV9jdXJyZW50SW5kZXggPSAwOwotICAgIGJvb2wgc3RhcnRJc0VuZCA9IG1fY3Vy
cmVudCA9PSBlbmQ7Ci0gICAgaWYgKGluZGV4ICYmICFzdGFydElzRW5kKSB7CisgICAgYm9vbCBz
dGFydElzRW5kID0gIW1fY3VycmVudDsKKyAgICBpZiAoaW5kZXggJiYgbV9jdXJyZW50KSB7CiAg
ICAgICAgIGNvbGxlY3Rpb24uY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChtX2N1cnJlbnQsIGlu
ZGV4LCBtX2N1cnJlbnRJbmRleCk7Ci0gICAgICAgIEFTU0VSVChtX2N1cnJlbnQgIT0gZW5kIHx8
IG1fY3VycmVudEluZGV4IDwgaW5kZXgpOworICAgICAgICBBU1NFUlQobV9jdXJyZW50IHx8IG1f
Y3VycmVudEluZGV4IDwgaW5kZXgpOwogICAgIH0KLSAgICBpZiAobV9jdXJyZW50ID09IGVuZCkg
eworICAgIGlmICghbV9jdXJyZW50KSB7CiAgICAgICAgIC8vIEZhaWxlZCB0byBmaW5kIHRoZSBp
bmRleCBidXQgYXQgbGVhc3Qgd2Ugbm93IGtub3cgdGhlIHNpemUuCiAgICAgICAgIG1fbm9kZUNv
dW50ID0gc3RhcnRJc0VuZCA/IDAgOiBtX2N1cnJlbnRJbmRleCArIDE7CiAgICAgICAgIG1fbm9k
ZUNvdW50VmFsaWQgPSB0cnVlOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAg
QVNTRVJUKGhhc1ZhbGlkQ2FjaGUoY29sbGVjdGlvbikpOworICAgIEFTU0VSVChoYXNWYWxpZENh
Y2hlKCkpOwogICAgIHJldHVybiAmKm1fY3VycmVudDsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIENv
bGxlY3Rpb24sIGNsYXNzIEl0ZXJhdG9yPgotdm9pZCBDb2xsZWN0aW9uSW5kZXhDYWNoZTxDb2xs
ZWN0aW9uLCBJdGVyYXRvcj46OmludmFsaWRhdGUoY29uc3QgQ29sbGVjdGlvbiYgY29sbGVjdGlv
bikKK3ZvaWQgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Q29sbGVjdGlvbiwgSXRlcmF0b3I+OjppbnZh
bGlkYXRlKCkKIHsKLSAgICBtX2N1cnJlbnQgPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKTsK
KyAgICBtX2N1cnJlbnQgPSB7IH07CiAgICAgbV9ub2RlQ291bnRWYWxpZCA9IGZhbHNlOwogICAg
IG1fbGlzdFZhbGlkID0gZmFsc2U7CiAgICAgbV9jYWNoZWRMaXN0LnNocmluaygwKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCA3YWUxMzgyOGM1ZjAyZjRiY2ZkODllYTg2
MDAwNDlhMzUzY2FjYzdiLi44ZDRlZjk2ZGU3NzJjZDdhMzIzMjQxZjc5ZDMyYmIyZWJhNzc5ODY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC05MjMsNyArOTIzLDcgQEAg
RWxlbWVudCogQ29udGFpbmVyTm9kZTo6bGFzdEVsZW1lbnRDaGlsZCgpIGNvbnN0CiB1bnNpZ25l
ZCBDb250YWluZXJOb2RlOjpjaGlsZEVsZW1lbnRDb3VudCgpIGNvbnN0CiB7CiAgICAgYXV0byBj
aGlsZHJlbiA9IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KCp0aGlzKTsKLSAgICByZXR1cm4gc3Rk
OjpkaXN0YW5jZShjaGlsZHJlbi5iZWdpbigpLCBjaGlsZHJlbi5lbmQoKSk7CisgICAgcmV0dXJu
IHN0ZDo6ZGlzdGFuY2UoY2hpbGRyZW4uYmVnaW4oKSwgeyB9KTsKIH0KIAogRXhjZXB0aW9uT3I8
dm9pZD4gQ29udGFpbmVyTm9kZTo6YXBwZW5kKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgdmVjdG9y
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKaW5k
ZXggMmFmMjc2MTg3NzU3ZTg4Mjg4MzA1NWM5MDRlNmU4NzMzNGNkNGQyMy4uZTU2YjhmZTIxYWM1
NjhmMjIwODU1ZDhhNGUzNWRhMDE0NDg1ODNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oIgogCisjaW5j
bHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgog
I2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCmluZGV4IDk0NTgyZWY0M2Y2ZjNkNzQyYjcwMDg3
Mjk2OWUzZjkzOTVjZGQyNjcuLjViMDk1YWNiZjFjZDU0MTMwOGUxYTBmYmYwMzUwMTU5MTkxMDY1
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCkBA
IC0yOSwxNCArMjksMTIgQEAKICNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5o
IgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVk
ZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKKyNpbmNsdWRlICJF
bGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIK
ICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIk1hdGhNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIK
LSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21TdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJh
Z21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCmluZGV4
IDhmMjFiMjc5MzUwMzc2MTllYjEwM2I5NGNjMjBjNzJjYmI3MTFhMTguLjJhMjVhYjJlNWFhNzY3
OTY1MDgzNzBhZWZhMjkxZTcyYzdjMWM2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudEZyYWdtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRG
cmFnbWVudC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50
LmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJIVE1M
RG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1l
bnRQYXJzZXIuaCIKQEAgLTEwMyw3ICsxMDMsNyBAQCBFbGVtZW50KiBEb2N1bWVudEZyYWdtZW50
OjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9tU3RyaW5nJiBpZCkgY29uc3QKICAgICAgICAgcmV0
dXJuIHRyZWVTY29wZSgpLmdldEVsZW1lbnRCeUlkKGlkKTsKIAogICAgIC8vIE90aGVyd2lzZSwg
ZmFsbCBiYWNrIHRvIGl0ZXJhdGluZyBhbGwgb2YgdGhlIGVsZW1lbnQgZGVzY2VuZGFudHMuCi0g
ICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKCp0aGlzKSkgeworICAg
IGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KCp0aGlzKSkg
ewogICAgICAgICBpZiAoZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpID09IGlkKQogICAgICAgICAg
ICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RWxlbWVudCo+KCZlbGVtZW50KTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKaW5kZXggNjJhOWZiODA5NTMzZjZiNTRmMTZkOWExZjVmMzI2OWQzZDMzMzUw
NC4uY2UyZDcxYWVjZDk2NmQ4NWJlYTFhNGE3MDNjNjEzOGYwNDNkMzk5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcApAQCAtNCw3ICs0LDcgQEAKICAqICAgICAgICAgICAoQykgMjAwMSBQZXRlciBL
ZWxseSAocG1rQHBvc3QuY29tKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAo
bXVlbGxlckBrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDA3IERhdmlkIFNtaXRoIChjYXRm
aXNoLm1hbkBnbWFpbC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDcgRXJpYyBTZWlk
ZWwgKGVyaWNAd2Via2l0Lm9yZykKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC02MCw3ICs2MCw2IEBACiAjaW5j
bHVkZSAiR2V0QW5pbWF0aW9uc09wdGlvbnMuaCIKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEh0bWxFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTExhYmVsRWxlbWVudC5oIgpAQCAtMzQwMSwyNiArMzQwMCwx
NCBAQCB1bnNpZ25lZCBFbGVtZW50OjpyYXJlRGF0YUNoaWxkSW5kZXgoKSBjb25zdAogCiBBdG9t
U3RyaW5nIEVsZW1lbnQ6OmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpIGNvbnN0CiB7Ci0gICAg
aWYgKGNvbnN0IEVsZW1lbnREYXRhKiBlbGVtZW50RGF0YSA9IHRoaXMtPmVsZW1lbnREYXRhKCkp
IHsKLSAgICAgICAgaWYgKGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZWxlbWVudERhdGEt
PmZpbmRMYW5ndWFnZUF0dHJpYnV0ZSgpKQotICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+
dmFsdWUoKTsKLSAgICB9Ci0KICAgICAvLyBUaGUgbGFuZ3VhZ2UgcHJvcGVydHkgaXMgaW5oZXJp
dGVkLCBzbyB3ZSBpdGVyYXRlIG92ZXIgdGhlIHBhcmVudHMgdG8gZmluZCB0aGUgZmlyc3QgbGFu
Z3VhZ2UuCi0gICAgY29uc3QgTm9kZSogY3VycmVudE5vZGUgPSB0aGlzOwotICAgIHdoaWxlICgo
Y3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS0+cGFyZW50Tm9kZSgpKSkgewotICAgICAgICBpZiAo
aXM8RWxlbWVudD4oKmN1cnJlbnROb2RlKSkgewotICAgICAgICAgICAgaWYgKGNvbnN0IEVsZW1l
bnREYXRhKiBlbGVtZW50RGF0YSA9IGRvd25jYXN0PEVsZW1lbnQ+KCpjdXJyZW50Tm9kZSkuZWxl
bWVudERhdGEoKSkgewotICAgICAgICAgICAgICAgIGlmIChjb25zdCBBdHRyaWJ1dGUqIGF0dHJp
YnV0ZSA9IGVsZW1lbnREYXRhLT5maW5kTGFuZ3VhZ2VBdHRyaWJ1dGUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFsdWUoKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlIGlmIChpczxEb2N1bWVudD4oKmN1cnJlbnROb2RlKSkgewotICAgICAgICAgICAg
Ly8gY2hlY2tpbmcgdGhlIE1JTUUgY29udGVudC1sYW5ndWFnZQotICAgICAgICAgICAgcmV0dXJu
IGRvd25jYXN0PERvY3VtZW50PigqY3VycmVudE5vZGUpLmNvbnRlbnRMYW5ndWFnZSgpOworICAg
IGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4oKnRoaXMpKSB7Cisg
ICAgICAgIGlmIChhdXRvKiBlbGVtZW50RGF0YSA9IGVsZW1lbnQuZWxlbWVudERhdGEoKSkgewor
ICAgICAgICAgICAgaWYgKGF1dG8qIGF0dHJpYnV0ZSA9IGVsZW1lbnREYXRhLT5maW5kTGFuZ3Vh
Z2VBdHRyaWJ1dGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlLT52YWx1ZSgp
OwogICAgICAgICB9CiAgICAgfQotCi0gICAgcmV0dXJuIG51bGxBdG9tKCk7CisgICAgcmV0dXJu
IGRvY3VtZW50KCkuY29udGVudExhbmd1YWdlKCk7CiB9CiAKIExvY2FsZSYgRWxlbWVudDo6bG9j
YWxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0
b3JJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9y
LmgKaW5kZXggNGI2MmQzOGIzOGZkMzg0OWM3MzdhY2E4N2VmODQ1MjdmODM3NTVmMC4uYzk5Yzc2
NjI3NTczZWQ5MTYxNzgyZmQwN2JkMWZjNjVmM2IyMzk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNjMgKzI5LDM3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxl
bWVudEFuY2VzdG9ySXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBl
PiB7Ci1wdWJsaWM6Ci0gICAgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IoKTsKLSAgICBleHBsaWNp
dCBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcihFbGVtZW50VHlwZSogY3VycmVudCk7Ci0gICAgRWxl
bWVudEFuY2VzdG9ySXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKLX07Cit0ZW1wbGF0ZTx0eXBlbmFt
ZT4gY2xhc3MgRWxlbWVudEFuY2VzdG9yUmFuZ2U7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3IgOiBwdWJsaWMgRWxl
bWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IHsKLXB1YmxpYzoKLSAgICBFbGVtZW50QW5j
ZXN0b3JDb25zdEl0ZXJhdG9yKCk7Ci0gICAgZXhwbGljaXQgRWxlbWVudEFuY2VzdG9yQ29uc3RJ
dGVyYXRvcihjb25zdCBFbGVtZW50VHlwZSogY3VycmVudCk7Ci0gICAgRWxlbWVudEFuY2VzdG9y
Q29uc3RJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotfTsKKy8vIFJhbmdlIGZvciBpdGVyYXRpbmcg
YW4gZWxlbWVudCBhbmQgaXRzIGFuY2VzdG9ycy4KK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPiBFbGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShFbGVt
ZW50JiBmaXJzdCk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudEFuY2Vz
dG9yUmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoY29uc3QgRWxlbWVudCYg
Zmlyc3QpOworCisvLyBSYW5nZSBmb3IgaXRlcmF0aW5nIGEgbm9kZSdzIGVsZW1lbnQgYW5jZXN0
b3JzLgordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvclJhbmdl
PEVsZW1lbnRUeXBlPiBhbmNlc3RvcnNPZlR5cGUoTm9kZSYgZGVzY2VuZGFudCk7Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29uc3QgRWxlbWVu
dFR5cGU+IGFuY2VzdG9yc09mVHlwZShjb25zdCBOb2RlJiBkZXNjZW5kYW50KTsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JB
ZGFwdGVyIHsKK2NsYXNzIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT4gewogcHVibGljOgotICAgIGV4cGxpY2l0IEVsZW1lbnRBbmNl
c3Rvckl0ZXJhdG9yQWRhcHRlcihFbGVtZW50VHlwZSogZmlyc3QpOwotICAgIEVsZW1lbnRBbmNl
c3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpOwotICAgIEVsZW1lbnRBbmNlc3Rvckl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKTsKLSAgICBFbGVtZW50VHlwZSogZmlyc3QoKSB7IHJl
dHVybiBtX2ZpcnN0OyB9Ci0KLXByaXZhdGU6Ci0gICAgRWxlbWVudFR5cGUqIG1fZmlyc3Q7Cisg
ICAgZXhwbGljaXQgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IoRWxlbWVudFR5cGUqID0gbnVsbHB0
cik7CisgICAgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKIH07CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRBbmNlc3RvckNvbnN0
SXRlcmF0b3JBZGFwdGVyIHsKK2NsYXNzIEVsZW1lbnRBbmNlc3RvclJhbmdlIHsKIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcihjb25zdCBF
bGVtZW50VHlwZSogZmlyc3QpOwotICAgIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxl
bWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7Ci0gICAgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT4gZW5kKCkgY29uc3Q7Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIGZpcnN0
KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdDsgfQorICAgIGV4cGxpY2l0IEVsZW1lbnRBbmNlc3Rv
clJhbmdlKEVsZW1lbnRUeXBlKiBmaXJzdCk7CisgICAgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8
RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6Om51
bGxwdHJfdCBlbmQoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgRWxlbWVudFR5cGUqIGZpcnN0
KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdDsgfQogCiBwcml2YXRlOgotICAgIGNvbnN0IEVsZW1l
bnRUeXBlKiBtX2ZpcnN0OworICAgIEVsZW1lbnRUeXBlKiBjb25zdCBtX2ZpcnN0OwogfTsKIAot
RWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRMaW5lYWdlKEVs
ZW1lbnQqIGZpcnN0KTsKLUVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1l
bnQ+IGVsZW1lbnRMaW5lYWdlKGNvbnN0IEVsZW1lbnQqIGZpcnN0KTsKLUVsZW1lbnRBbmNlc3Rv
ckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50QW5jZXN0b3JzKEVsZW1lbnQqIGRlc2Nl
bmRhbnQpOwotRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxl
bWVudEFuY2VzdG9ycyhjb25zdCBFbGVtZW50KiBkZXNjZW5kYW50KTsKLXRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPiBsaW5lYWdlT2ZUeXBlKEVsZW1lbnQmIGZpcnN0KTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5
cGU+IGxpbmVhZ2VPZlR5cGUoY29uc3QgRWxlbWVudCYgZmlyc3QpOwotdGVtcGxhdGUgPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5
cGU+IGFuY2VzdG9yc09mVHlwZShOb2RlJiBkZXNjZW5kYW50KTsKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVu
dFR5cGU+IGFuY2VzdG9yc09mVHlwZShjb25zdCBOb2RlJiBkZXNjZW5kYW50KTsKLQogLy8gRWxl
bWVudEFuY2VzdG9ySXRlcmF0b3IKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudEFuY2Vz
dG9ySXRlcmF0b3IoKQotICAgIDogRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihudWxscHRy
KQotewotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVu
dEFuY2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50QW5jZXN0b3JJdGVyYXRvcihF
bGVtZW50VHlwZSogY3VycmVudCkKICAgICA6IEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4o
bnVsbHB0ciwgY3VycmVudCkKQEAgLTk1LDExOSArNjksNjIgQEAgaW5saW5lIEVsZW1lbnRBbmNl
c3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudEFuY2VzdG9ySXRlcmF0b3IoRWxlbWVu
dFR5cGUKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50QW5j
ZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6b3BlcmF0b3IrKygpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRB
bmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT46OnRyYXZlcnNlQW5jZXN0b3IoKSk7Ci19Ci0KLS8vIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRl
cmF0b3IKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRB
bmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50QW5jZXN0b3JDb25zdEl0
ZXJhdG9yKCkKLSAgICA6IEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihudWxscHRy
KQotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVu
dEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRBbmNlc3RvckNvbnN0
SXRlcmF0b3IoY29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpCi0gICAgOiBFbGVtZW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT4obnVsbHB0ciwgY3VycmVudCkKLXsKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0
b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBl
Pjo6b3BlcmF0b3IrKygpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRBbmNlc3Rv
ckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+Ojp0cmF2ZXJzZUFuY2VzdG9yKCkpOworICAgIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50
VHlwZT46OnRyYXZlcnNlQW5jZXN0b3IoKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKLS8vIEVs
ZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcgorLy8gRWxlbWVudEFuY2VzdG9yUmFuZ2UKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRl
cihFbGVtZW50VHlwZSogZmlyc3QpCitpbmxpbmUgRWxlbWVudEFuY2VzdG9yUmFuZ2U8RWxlbWVu
dFR5cGU+OjpFbGVtZW50QW5jZXN0b3JSYW5nZShFbGVtZW50VHlwZSogZmlyc3QpCiAgICAgOiBt
X2ZpcnN0KGZpcnN0KQogewogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3Rv
ckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2luKCkKK2lubGluZSBFbGVtZW50QW5j
ZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8RWxlbWVudFR5
cGU+OjpiZWdpbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9y
PEVsZW1lbnRUeXBlPihtX2ZpcnN0KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50
QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjplbmQoKQotewotICAgIHJldHVy
biBFbGVtZW50QW5jZXN0b3JJdGVyYXRvcjxFbGVtZW50VHlwZT4oKTsKLX0KLQotLy8gRWxlbWVu
dEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXIKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1l
bnRUeXBlPjo6RWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgRWxlbWVu
dFR5cGUqIGZpcnN0KQotICAgIDogbV9maXJzdChmaXJzdCkKLXsKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8
RWxlbWVudFR5cGU+IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPjo6YmVnaW4oKSBjb25zdAotewotICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPihtX2ZpcnN0KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3I8RWxlbWVudFR5
cGU+IEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5k
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT4oKTsKLX0KLQogLy8gU3RhbmRhbG9uZSBmdW5jdGlvbnMKIAotaW5saW5lIEVsZW1l
bnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50TGluZWFnZShFbGVtZW50
KiBmaXJzdCkKLXsKLSAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVs
ZW1lbnQ+KGZpcnN0KTsKLX0KLQotaW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JB
ZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRMaW5lYWdlKGNvbnN0IEVsZW1lbnQqIGZpcnN0KQordGVt
cGxhdGU8PiBpbmxpbmUgRWxlbWVudEFuY2VzdG9yUmFuZ2U8RWxlbWVudD4gbGluZWFnZU9mVHlw
ZTxFbGVtZW50PihFbGVtZW50JiBmaXJzdCkKIHsKLSAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9y
Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4oZmlyc3QpOwotfQotCi1pbmxpbmUgRWxlbWVu
dEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRBbmNlc3RvcnMoRWxlbWVu
dCogZGVzY2VuZGFudCkKLXsKLSAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFw
dGVyPEVsZW1lbnQ+KGRlc2NlbmRhbnQtPnBhcmVudEVsZW1lbnQoKSk7Ci19Ci0KLWlubGluZSBF
bGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50QW5jZXN0
b3JzKGNvbnN0IEVsZW1lbnQqIGRlc2NlbmRhbnQpCi17Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNl
c3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+KGRlc2NlbmRhbnQtPnBhcmVudEVsZW1l
bnQoKSk7CisgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvclJhbmdlPEVsZW1lbnQ+KCZmaXJzdCk7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50QW5j
ZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoRWxlbWVudCYg
Zmlyc3QpCitpbmxpbmUgRWxlbWVudEFuY2VzdG9yUmFuZ2U8RWxlbWVudFR5cGU+IGxpbmVhZ2VP
ZlR5cGUoRWxlbWVudCYgZmlyc3QpCiB7CiAgICAgaWYgKGlzPEVsZW1lbnRUeXBlPihmaXJzdCkp
Ci0gICAgICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5
cGU+KHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4oJmZpcnN0KSk7CisgICAgICAgIHJldHVybiBF
bGVtZW50QW5jZXN0b3JSYW5nZTxFbGVtZW50VHlwZT4oJmRvd25jYXN0PEVsZW1lbnRUeXBlPihm
aXJzdCkpOwogICAgIHJldHVybiBhbmNlc3RvcnNPZlR5cGU8RWxlbWVudFR5cGU+KGZpcnN0KTsK
IH0KIAordGVtcGxhdGU8PiBpbmxpbmUgRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29uc3QgRWxlbWVu
dD4gbGluZWFnZU9mVHlwZTxFbGVtZW50Pihjb25zdCBFbGVtZW50JiBmaXJzdCkKK3sKKyAgICBy
ZXR1cm4gRWxlbWVudEFuY2VzdG9yUmFuZ2U8Y29uc3QgRWxlbWVudD4oJmZpcnN0KTsKK30KKwog
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3RvckNv
bnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKGNvbnN0IEVsZW1l
bnQmIGZpcnN0KQoraW5saW5lIEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnRUeXBl
PiBsaW5lYWdlT2ZUeXBlKGNvbnN0IEVsZW1lbnQmIGZpcnN0KQogewogICAgIGlmIChpczxFbGVt
ZW50VHlwZT4oZmlyc3QpKQotICAgICAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVy
YXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KHN0YXRpY19jYXN0PGNvbnN0IEVsZW1lbnRUeXBlKj4o
JmZpcnN0KSk7CisgICAgICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JSYW5nZTxjb25zdCBFbGVt
ZW50VHlwZT4oJmRvd25jYXN0PEVsZW1lbnRUeXBlPihmaXJzdCkpOwogICAgIHJldHVybiBhbmNl
c3RvcnNPZlR5cGU8RWxlbWVudFR5cGU+KGZpcnN0KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT4gYW5jZXN0b3JzT2ZUeXBlKE5vZGUmIGRlc2NlbmRhbnQpCitpbmxpbmUgRWxlbWVu
dEFuY2VzdG9yUmFuZ2U8RWxlbWVudFR5cGU+IGFuY2VzdG9yc09mVHlwZShOb2RlJiBkZXNjZW5k
YW50KQogewotICAgIEVsZW1lbnRUeXBlKiBmaXJzdCA9IGZpbmRFbGVtZW50QW5jZXN0b3JPZlR5
cGU8RWxlbWVudFR5cGU+KGRlc2NlbmRhbnQpOwotICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JJ
dGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KGZpcnN0KTsKKyAgICByZXR1cm4gRWxlbWVudEFu
Y2VzdG9yUmFuZ2U8RWxlbWVudFR5cGU+KGZpbmRFbGVtZW50QW5jZXN0b3JPZlR5cGU8RWxlbWVu
dFR5cGU+KGRlc2NlbmRhbnQpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotaW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBl
PiBhbmNlc3RvcnNPZlR5cGUoY29uc3QgTm9kZSYgZGVzY2VuZGFudCkKK2lubGluZSBFbGVtZW50
QW5jZXN0b3JSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4gYW5jZXN0b3JzT2ZUeXBlKGNvbnN0IE5v
ZGUmIGRlc2NlbmRhbnQpCiB7Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIGZpcnN0ID0gZmluZEVs
ZW1lbnRBbmNlc3Rvck9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oZGVzY2VuZGFudCk7Ci0gICAg
cmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihm
aXJzdCk7CisgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvclJhbmdlPGNvbnN0IEVsZW1lbnRUeXBl
PihmaW5kRWxlbWVudEFuY2VzdG9yT2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPihkZXNjZW5kYW50
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmgKaW5kZXggNDhlM2IxYTYx
OGQyZmUwYTI4NzY3YjM3MzFmMmZhZGY5NzNlZmJjZS4uZDFkZGIwZjczNzUwMTU2NDU5N2IwYTAy
MzRlMmI0NjIwMWQ1ZGU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRB
bmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmgKQEAgLTM2LDggKzM2LDggQEAgY2xhc3MgRWxl
bWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgewogcHVibGljOgogICAgIEVsZW1lbnRBbmRU
ZXh0RGVzY2VuZGFudEl0ZXJhdG9yKCk7CiAgICAgZW51bSBGaXJzdENoaWxkVGFnIHsgRmlyc3RD
aGlsZCB9OwotICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKENvbnRhaW5lck5v
ZGUmIHJvb3QsIEZpcnN0Q2hpbGRUYWcpOwotICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0
ZXJhdG9yKENvbnRhaW5lck5vZGUmIHJvb3QsIE5vZGUqIGN1cnJlbnQpOworICAgIEVsZW1lbnRB
bmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QsIEZpcnN0
Q2hpbGRUYWcpOworICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENv
bnRhaW5lck5vZGUmIHJvb3QsIE5vZGUqIGN1cnJlbnQpOwogCiAgICAgRWxlbWVudEFuZFRleHRE
ZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IHJldHVybiB0cmF2ZXJzZU5leHQoKTsg
fQogCkBAIC02Myw5ICs2Myw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9v
bCBpc0VsZW1lbnRPclRleHQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8RWxlbWVudD4o
bm9kZSkgfHwgaXM8VGV4dD4obm9kZSk7IH0KLSAgICBzdGF0aWMgTm9kZSogZmlyc3RDaGlsZChO
b2RlJik7Ci0gICAgc3RhdGljIE5vZGUqIG5leHRTaWJsaW5nKE5vZGUmKTsKLSAgICBzdGF0aWMg
Tm9kZSogcHJldmlvdXNTaWJsaW5nKE5vZGUmKTsKKyAgICBzdGF0aWMgTm9kZSogZmlyc3RDaGls
ZChjb25zdCBOb2RlJik7CisgICAgc3RhdGljIE5vZGUqIG5leHRTaWJsaW5nKGNvbnN0IE5vZGUm
KTsKKyAgICBzdGF0aWMgTm9kZSogcHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUmKTsKIAogICAg
IHZvaWQgcG9wQW5jZXN0b3JTaWJsaW5nU3RhY2soKTsKIApAQCAtODIsMTcgKzgyLDE3IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIH07CiAKLWNsYXNzIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJh
dG9yQWRhcHRlciB7CitjbGFzcyBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZSB7CiBwdWJs
aWM6Ci0gICAgZXhwbGljaXQgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVy
KENvbnRhaW5lck5vZGUmIHJvb3QpOwotICAgIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJh
dG9yIGJlZ2luKCk7Ci0gICAgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgZW5kKCk7
CisgICAgZXhwbGljaXQgRWxlbWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFp
bmVyTm9kZSYgcm9vdCk7CisgICAgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IgYmVn
aW4oKSBjb25zdDsKKyAgICBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBlbmQoKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICBDb250YWluZXJOb2RlJiBtX3Jvb3Q7CisgICAgY29uc3Qg
Q29udGFpbmVyTm9kZSYgbV9yb290OwogfTsKIAotRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRl
cmF0b3JBZGFwdGVyIGVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudHMoQ29udGFpbmVyTm9kZSYpOwor
RWxlbWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2UgZWxlbWVudEFuZFRleHREZXNjZW5kYW50cyhD
b250YWluZXJOb2RlJik7CiAKIC8vIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yCiAK
QEAgLTEwMSw3ICsxMDEsNyBAQCBpbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0
b3I6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKCkKIHsKIH0KIAotaW5saW5lIEVs
ZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJ
dGVyYXRvcihDb250YWluZXJOb2RlJiByb290LCBGaXJzdENoaWxkVGFnKQoraW5saW5lIEVsZW1l
bnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVy
YXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBGaXJzdENoaWxkVGFnKQogICAgIDogbV9j
dXJyZW50KGZpcnN0Q2hpbGQocm9vdCkpCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAsIG1fYXNz
ZXJ0aW9ucyhtX2N1cnJlbnQpCkBAIC0xMTMsNyArMTEzLDcgQEAgaW5saW5lIEVsZW1lbnRBbmRU
ZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihD
b250YWkKICAgICBtX2RlcHRoID0gMTsKIH0KIAotaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2Vu
ZGFudEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihDb250YWluZXJO
b2RlJiByb290LCBOb2RlKiBjdXJyZW50KQoraW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFu
dEl0ZXJhdG9yOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWlu
ZXJOb2RlJiByb290LCBOb2RlKiBjdXJyZW50KQogICAgIDogbV9jdXJyZW50KGN1cnJlbnQpCiAj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICAsIG1fYXNzZXJ0aW9ucyhtX2N1cnJlbnQpCkBAIC0xNDgs
NyArMTQ4LDcgQEAgaW5saW5lIHZvaWQgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6
OmRyb3BBc3NlcnRpb25zKCkKICNlbmRpZgogfQogCi1pbmxpbmUgTm9kZSogRWxlbWVudEFuZFRl
eHREZXNjZW5kYW50SXRlcmF0b3I6OmZpcnN0Q2hpbGQoTm9kZSYgY3VycmVudCkKK2lubGluZSBO
b2RlKiBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6Zmlyc3RDaGlsZChjb25zdCBO
b2RlJiBjdXJyZW50KQogewogICAgIGF1dG8qIG5vZGUgPSBjdXJyZW50LmZpcnN0Q2hpbGQoKTsK
ICAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T3JUZXh0KCpub2RlKSkKQEAgLTE1Niw3ICsx
NTYsNyBAQCBpbmxpbmUgTm9kZSogRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OmZp
cnN0Q2hpbGQoTm9kZSYgY3VycmVudCkKICAgICByZXR1cm4gbm9kZTsKIH0KIAotaW5saW5lIE5v
ZGUqIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpuZXh0U2libGluZyhOb2RlJiBj
dXJyZW50KQoraW5saW5lIE5vZGUqIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpu
ZXh0U2libGluZyhjb25zdCBOb2RlJiBjdXJyZW50KQogewogICAgIGF1dG8qIG5vZGUgPSBjdXJy
ZW50Lm5leHRTaWJsaW5nKCk7CiAgICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9yVGV4dCgq
bm9kZSkpCkBAIC0xNjQsNyArMTY0LDcgQEAgaW5saW5lIE5vZGUqIEVsZW1lbnRBbmRUZXh0RGVz
Y2VuZGFudEl0ZXJhdG9yOjpuZXh0U2libGluZyhOb2RlJiBjdXJyZW50KQogICAgIHJldHVybiBu
b2RlOwogfQogCi1pbmxpbmUgTm9kZSogRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6
OnByZXZpb3VzU2libGluZyhOb2RlJiBjdXJyZW50KQoraW5saW5lIE5vZGUqIEVsZW1lbnRBbmRU
ZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpwcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSYgY3VycmVu
dCkKIHsKICAgICBhdXRvKiBub2RlID0gY3VycmVudC5wcmV2aW91c1NpYmxpbmcoKTsKICAgICB3
aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T3JUZXh0KCpub2RlKSkKQEAgLTI5NCwyOCArMjk0LDI4
IEBAIGlubGluZSBib29sIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRv
ciE9KGNvbnN0IEVsZW1lbnRBbmRUZXh0RGVzCiAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OwogfQogCi0vLyBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIKKy8vIEVs
ZW1lbnRBbmRUZXh0RGVzY2VuZGFudFJhbmdlCiAKLWlubGluZSBFbGVtZW50QW5kVGV4dERlc2Nl
bmRhbnRJdGVyYXRvckFkYXB0ZXI6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRh
cHRlcihDb250YWluZXJOb2RlJiByb290KQoraW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFu
dFJhbmdlOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZShjb25zdCBDb250YWluZXJOb2Rl
JiByb290KQogICAgIDogbV9yb290KHJvb3QpCiB7CiB9CiAKLWlubGluZSBFbGVtZW50QW5kVGV4
dERlc2NlbmRhbnRJdGVyYXRvciBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0
ZXI6OmJlZ2luKCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBFbGVt
ZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZTo6YmVnaW4oKSBjb25zdAogewogICAgIHJldHVybiBF
bGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcihtX3Jvb3QsIEVsZW1lbnRBbmRUZXh0RGVz
Y2VuZGFudEl0ZXJhdG9yOjpGaXJzdENoaWxkKTsKIH0KIAotaW5saW5lIEVsZW1lbnRBbmRUZXh0
RGVzY2VuZGFudEl0ZXJhdG9yIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRl
cjo6ZW5kKCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciBFbGVtZW50
QW5kVGV4dERlc2NlbmRhbnRSYW5nZTo6ZW5kKCkgY29uc3QKIHsKICAgICByZXR1cm4geyB9Owog
fQogCiAvLyBTdGFuZGFsb25lIGZ1bmN0aW9ucwogCi1pbmxpbmUgRWxlbWVudEFuZFRleHREZXNj
ZW5kYW50SXRlcmF0b3JBZGFwdGVyIGVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudHMoQ29udGFpbmVy
Tm9kZSYgcm9vdCkKK2lubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZSBlbGVtZW50
QW5kVGV4dERlc2NlbmRhbnRzKENvbnRhaW5lck5vZGUmIHJvb3QpCiB7Ci0gICAgcmV0dXJuIEVs
ZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcihyb290KTsKKyAgICByZXR1cm4g
RWxlbWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2Uocm9vdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVy
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0ZXJhdG9yLmgKaW5kZXgg
OGUzOGZiNTAzMmE4MjM3NzZlMmE3YmNhM2FjMjU4Y2IxNTA2YzQwMC4uZTY2YjI0OWY1OTUxMTAw
MDM4NGQ4NDcxMjc3YTNmMjAyMTZlNjFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRDaGlsZEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRD
aGlsZEl0ZXJhdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjksNzkgKzI5LDM5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
dGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEVsZW1lbnRDaGlsZFJhbmdlOworCisvLyBSYW5nZSBm
b3IgaXRlcmF0aW5nIHRocm91Z2ggY2hpbGQgZWxlbWVudHMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlw
ZShDb250YWluZXJOb2RlJik7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1l
bnRDaGlsZFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShjb25zdCBDb250
YWluZXJOb2RlJik7CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGNsYXNzIEVs
ZW1lbnRDaGlsZEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4g
ewogcHVibGljOgotICAgIHR5cGVkZWYgRWxlbWVudFR5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBl
ZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiBFbGVtZW50VHlwZSog
cG9pbnRlcjsKLSAgICB0eXBlZGVmIEVsZW1lbnRUeXBlJiByZWZlcmVuY2U7Ci0gICAgdHlwZWRl
ZiBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwotCi0gICAgRWxl
bWVudENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKKyAgICBFbGVt
ZW50Q2hpbGRJdGVyYXRvcigpID0gZGVmYXVsdDsKICAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcihj
b25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQsIEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKICAgICBF
bGVtZW50Q2hpbGRJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwogICAgIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yJiBvcGVyYXRvcisrKCk7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
Ci1jbGFzcyBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yIDogcHVibGljIEVsZW1lbnRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjb25zdCBFbGVtZW50
VHlwZSB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgcHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsK
LSAgICB0eXBlZGVmIGNvbnN0IEVsZW1lbnRUeXBlKiBwb2ludGVyOwotICAgIHR5cGVkZWYgY29u
c3QgRWxlbWVudFR5cGUmIHJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHN0ZDo6Zm9yd2FyZF9pdGVy
YXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0KLSAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJh
dG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCk7Ci0gICAgRWxlbWVudENoaWxkQ29uc3RJ
dGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQsIGNvbnN0IEVsZW1lbnRUeXBlKiBj
dXJyZW50KTsKLSAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yJiBvcGVyYXRvci0tKCk7Ci0g
ICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotfTsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVudENoaWxkSXRlcmF0b3JBZGFw
dGVyIHsKLXB1YmxpYzoKLSAgICBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVy
Tm9kZSYgcGFyZW50KTsKLQotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBi
ZWdpbigpOwotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKTsKLSAg
ICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW5BdChFbGVtZW50VHlwZSYp
OwotCi0gICAgRWxlbWVudFR5cGUqIGZpcnN0KCk7Ci0gICAgRWxlbWVudFR5cGUqIGxhc3QoKTsK
LQotcHJpdmF0ZToKLSAgICBDb250YWluZXJOb2RlJiBtX3BhcmVudDsKLX07Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JB
ZGFwdGVyIHsKK2NsYXNzIEVsZW1lbnRDaGlsZFJhbmdlIHsKIHB1YmxpYzoKLSAgICBFbGVtZW50
Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQpOwor
ICAgIEVsZW1lbnRDaGlsZFJhbmdlKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCk7CiAKLSAg
ICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpIGNvbnN0Owot
ICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpIGNvbnN0Owot
ICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoY29uc3Qg
RWxlbWVudFR5cGUmKSBjb25zdDsKKyAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4gYmVnaW4oKSBjb25zdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6bnVsbHB0cl90IGVu
ZCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50
VHlwZT4gYmVnaW5BdChFbGVtZW50VHlwZSYpIGNvbnN0OwogCi0gICAgY29uc3QgRWxlbWVudFR5
cGUqIGZpcnN0KCkgY29uc3Q7Ci0gICAgY29uc3QgRWxlbWVudFR5cGUqIGxhc3QoKSBjb25zdDsK
KyAgICBFbGVtZW50VHlwZSogZmlyc3QoKSBjb25zdDsKKyAgICBFbGVtZW50VHlwZSogbGFzdCgp
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIGNvbnN0IENvbnRhaW5lck5vZGUmIG1fcGFyZW50Owog
fTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRJdGVyYXRv
ckFkYXB0ZXI8RWxlbWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKENvbnRhaW5lck5vZGUmKTsKLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFk
YXB0ZXI8RWxlbWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUmKTsK
LQogLy8gRWxlbWVudENoaWxkSXRlcmF0b3IKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENo
aWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KQotICAgIDogRWxlbWVudEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPigmcGFyZW50KQotewotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+OjpF
bGVtZW50Q2hpbGRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQsIEVsZW1lbnRU
eXBlKiBjdXJyZW50KQogICAgIDogRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPigmcGFyZW50
LCBjdXJyZW50KQpAQCAtMTExLDEzMiArNzEsNjIgQEAgaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm8K
IHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50Q2hpbGRJdGVy
YXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3Bl
cmF0b3ItLSgpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRDaGlsZEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJl
dmlvdXNTaWJsaW5nKCkpOworICAgIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZl
cnNlUHJldmlvdXNTaWJsaW5nKCk7CisgICAgcmV0dXJuICp0aGlzOwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVu
dFR5cGU+JiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQog
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4mPihFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkp
OwotfQotCi0vLyBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yCi0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiBwYXJl
bnQpCi0gICAgOiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnBhcmVudCkKLXsK
LX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGls
ZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNv
bnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCwgY29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpCi0g
ICAgOiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnBhcmVudCwgY3VycmVudCkK
LXsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRD
aGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItLSgpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVs
ZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxlbWVudENvbnN0SXRlcmF0
b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZpb3VzU2libGluZygpKTsKKyAgICBFbGVtZW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCk7CisgICAgcmV0dXJu
ICp0aGlzOwogfQogCisvLyBFbGVtZW50Q2hpbGRSYW5nZQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT4mIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkK
LXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT4mPihFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4
dFNpYmxpbmcoKSk7Ci19Ci0KLS8vIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcgotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3JB
ZGFwdGVyPEVsZW1lbnRUeXBlPjo6RWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyKENvbnRhaW5l
ck5vZGUmIHBhcmVudCkKK2lubGluZSBFbGVtZW50Q2hpbGRSYW5nZTxFbGVtZW50VHlwZT46OkVs
ZW1lbnRDaGlsZFJhbmdlKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCkKICAgICA6IG1fcGFy
ZW50KHBhcmVudCkKIHsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5s
aW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRJdGVyYXRv
ckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbigpCitpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0
b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZFJhbmdlPEVsZW1lbnRUeXBlPjo6YmVnaW4oKSBj
b25zdAogewogICAgIHJldHVybiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9w
YXJlbnQsIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0Q2hpbGQobV9wYXJlbnQpKTsKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5
cGU+OjplbmQoKQotewotICAgIHJldHVybiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4obV9wYXJlbnQpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxp
bmUgRWxlbWVudFR5cGUqIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46
OmZpcnN0KCkKK2lubGluZSBFbGVtZW50VHlwZSogRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5
cGU+OjpmaXJzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46
OmZpcnN0Q2hpbGQobV9wYXJlbnQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+Ci1pbmxpbmUgRWxlbWVudFR5cGUqIEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46Omxhc3QoKQoraW5saW5lIEVsZW1lbnRUeXBlKiBFbGVtZW50Q2hpbGRSYW5nZTxF
bGVtZW50VHlwZT46Omxhc3QoKSBjb25zdAogewogICAgIHJldHVybiBUcmF2ZXJzYWw8RWxlbWVu
dFR5cGU+OjpsYXN0Q2hpbGQobV9wYXJlbnQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1l
bnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2luQXQoRWxlbWVudFR5cGUm
IGNoaWxkKQoraW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50
Q2hpbGRSYW5nZTxFbGVtZW50VHlwZT46OmJlZ2luQXQoRWxlbWVudFR5cGUmIGNoaWxkKSBjb25z
dAogewogICAgIEFTU0VSVChjaGlsZC5wYXJlbnROb2RlKCkgPT0gJm1fcGFyZW50KTsKICAgICBy
ZXR1cm4gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcGFyZW50LCAmY2hpbGQp
OwogfQogCi0vLyBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcgotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFk
YXB0ZXI8RWxlbWVudFR5cGU+OjpFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcihjb25z
dCBDb250YWluZXJOb2RlJiBwYXJlbnQpCi0gICAgOiBtX3BhcmVudChwYXJlbnQpCi17Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRDb25z
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxF
bGVtZW50VHlwZT46OmJlZ2luKCkgY29uc3QKLXsKLSAgICByZXR1cm4gRWxlbWVudENoaWxkQ29u
c3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9wYXJlbnQsIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46
OmZpcnN0Q2hpbGQobV9wYXJlbnQpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1l
bnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9wYXJl
bnQpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgY29uc3Qg
RWxlbWVudFR5cGUqIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBl
Pjo6Zmlyc3QoKSBjb25zdAotewotICAgIHJldHVybiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+Ojpm
aXJzdENoaWxkKG1fcGFyZW50KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotaW5saW5lIGNvbnN0IEVsZW1lbnRUeXBlKiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRh
cHRlcjxFbGVtZW50VHlwZT46Omxhc3QoKSBjb25zdAotewotICAgIHJldHVybiBUcmF2ZXJzYWw8
RWxlbWVudFR5cGU+OjpsYXN0Q2hpbGQobV9wYXJlbnQpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT4gRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdp
bkF0KGNvbnN0IEVsZW1lbnRUeXBlJiBjaGlsZCkgY29uc3QKLXsKLSAgICBBU1NFUlQoY2hpbGQu
cGFyZW50Tm9kZSgpID09ICZtX3BhcmVudCk7Ci0gICAgcmV0dXJuIEVsZW1lbnRDaGlsZENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcGFyZW50LCAmY2hpbGQpOwotfQotCiAvLyBTdGFuZGFs
b25lIGZ1bmN0aW9ucwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUg
RWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShD
b250YWluZXJOb2RlJiBwYXJlbnQpCitpbmxpbmUgRWxlbWVudENoaWxkUmFuZ2U8RWxlbWVudFR5
cGU+IGNoaWxkcmVuT2ZUeXBlKENvbnRhaW5lck5vZGUmIHBhcmVudCkKIHsKLSAgICByZXR1cm4g
RWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihwYXJlbnQpOworICAgIHJl
dHVybiBFbGVtZW50Q2hpbGRSYW5nZTxFbGVtZW50VHlwZT4ocGFyZW50KTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0
b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBjaGlsZHJlbk9mVHlwZShjb25zdCBDb250YWluZXJOb2Rl
JiBwYXJlbnQpCitpbmxpbmUgRWxlbWVudENoaWxkUmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+IGNo
aWxkcmVuT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCkKIHsKLSAgICByZXR1cm4g
RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KHBhcmVudCk7Cisg
ICAgcmV0dXJuIEVsZW1lbnRDaGlsZFJhbmdlPGNvbnN0IEVsZW1lbnRUeXBlPihwYXJlbnQpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRi
ZGI5OWE2ZGRlOTY0NmRmYjQxNzQ2MTI5OTE4YzczNWVhZTQ5OS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzY2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25z
LmgiCi0jaW5jbHVkZSAiRWxlbWVudFRyYXZlcnNhbC5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yIHsKLXB1YmxpYzoKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKCk7Ci0gICAgZXhw
bGljaXQgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihFbGVtZW50KiBjdXJyZW50KTsKLQotICAg
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKLSAgICBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvci0tKCk7Ci0KLSAgICBFbGVtZW50JiBvcGVyYXRvcioo
KTsKLSAgICBFbGVtZW50KiBvcGVyYXRvci0+KCk7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7Ci0K
LSAgICB2b2lkIGRyb3BBc3NlcnRpb25zKCk7Ci0KLXByaXZhdGU6Ci0gICAgRWxlbWVudCogbV9j
dXJyZW50OwotICAgIFZlY3RvcjxFbGVtZW50KiwgMTY+IG1fYW5jZXN0b3JTaWJsaW5nU3RhY2s7
Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMgbV9h
c3NlcnRpb25zOwotI2VuZGlmCi19OwotCi1jbGFzcyBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3IgewotcHVibGljOgotICAgIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcigpOwot
ICAgIGV4cGxpY2l0IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcihjb25zdCBFbGVtZW50
Kik7Ci0KLSAgICBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsK
LQotICAgIGNvbnN0IEVsZW1lbnQmIG9wZXJhdG9yKigpIGNvbnN0OwotICAgIGNvbnN0IEVsZW1l
bnQqIG9wZXJhdG9yLT4oKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7
Ci0KLSAgICB2b2lkIGRyb3BBc3NlcnRpb25zKCk7Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgRWxl
bWVudCogbV9jdXJyZW50OwotICAgIFZlY3RvcjxFbGVtZW50KiwgMTY+IG1fYW5jZXN0b3JTaWJs
aW5nU3RhY2s7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIEVsZW1lbnRJdGVyYXRvckFzc2Vy
dGlvbnMgbV9hc3NlcnRpb25zOwotI2VuZGlmCi19OwotCi1jbGFzcyBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yQWRhcHRlciB7Ci1wdWJsaWM6Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ckFkYXB0ZXIoQ29udGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvciBiZWdpbigpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgZW5kKCk7Ci0gICAg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBsYXN0KCk7Ci0KLXByaXZhdGU6Ci0gICAgQ29udGFp
bmVyTm9kZSYgbV9yb290OwotfTsKLQotY2xhc3MgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yQWRhcHRlciB7Ci1wdWJsaWM6Ci0gICAgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
QWRhcHRlcihjb25zdCBDb250YWluZXJOb2RlJiByb290KTsKLSAgICBFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKLSAgICBFbGVtZW50RGVzY2VuZGFudENvbnN0
SXRlcmF0b3IgZW5kKCkgY29uc3Q7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
IGxhc3QoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBjb25zdCBDb250YWluZXJOb2RlJiBtX3Jv
b3Q7Ci19OwotCi1FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlciBlbGVtZW50RGVzY2Vu
ZGFudHMoQ29udGFpbmVyTm9kZSYpOwotRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRh
cHRlciBlbGVtZW50RGVzY2VuZGFudHMoY29uc3QgQ29udGFpbmVyTm9kZSYpOwotCi0vLyBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yCi0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
OjpFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKCkKLSAgICA6IG1fY3VycmVudChudWxscHRyKQot
ewotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6RWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvcihFbGVtZW50KiBjdXJyZW50KQotICAgIDogbV9jdXJyZW50KGN1cnJlbnQpCi0j
aWYgQVNTRVJUX0VOQUJMRUQKLSAgICAsIG1fYXNzZXJ0aW9ucyhjdXJyZW50KQotI2VuZGlmCi17
Ci0gICAgbV9hbmNlc3RvclNpYmxpbmdTdGFjay51bmNoZWNrZWRBcHBlbmQobnVsbHB0cik7Ci19
Ci0KLWlubGluZSB2b2lkIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6OmRyb3BBc3NlcnRpb25z
KCkKLXsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG1fYXNzZXJ0aW9ucy5jbGVhcigpOwotI2Vu
ZGlmCi19Ci0KLUFMV0FZU19JTkxJTkUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjo6b3BlcmF0b3IrKygpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVu
dCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0KLSAg
ICBFbGVtZW50KiBmaXJzdENoaWxkID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGlsZCgqbV9j
dXJyZW50KTsKLSAgICBFbGVtZW50KiBuZXh0U2libGluZyA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5l
eHRTaWJsaW5nKCptX2N1cnJlbnQpOwotCi0gICAgaWYgKGZpcnN0Q2hpbGQpIHsKLSAgICAgICAg
aWYgKG5leHRTaWJsaW5nKQotICAgICAgICAgICAgbV9hbmNlc3RvclNpYmxpbmdTdGFjay5hcHBl
bmQobmV4dFNpYmxpbmcpOwotICAgICAgICBtX2N1cnJlbnQgPSBmaXJzdENoaWxkOwotICAgICAg
ICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgaWYgKG5leHRTaWJsaW5nKSB7Ci0gICAgICAg
IG1fY3VycmVudCA9IG5leHRTaWJsaW5nOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQot
Ci0gICAgbV9jdXJyZW50ID0gbV9hbmNlc3RvclNpYmxpbmdTdGFjay50YWtlTGFzdCgpOwotCi0j
aWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRl
cmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBtX2Fz
c2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotCi0gICAgcmV0
dXJuICp0aGlzOwotfQotCi1BTFdBWVNfSU5MSU5FIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Im
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6Om9wZXJhdG9yLS0oKQotewotICAgIEFTU0VSVCht
X2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkp
OwotCi0gICAgRWxlbWVudCogcHJldmlvdXNTaWJsaW5nID0gRWxlbWVudFRyYXZlcnNhbDo6cHJl
dmlvdXNTaWJsaW5nKCptX2N1cnJlbnQpOwotCi0gICAgaWYgKCFwcmV2aW91c1NpYmxpbmcpIHsK
LSAgICAgICAgbV9jdXJyZW50ID0gbV9jdXJyZW50LT5wYXJlbnRFbGVtZW50KCk7Ci0gICAgICAg
IC8vIFRoZSBzdGFjayBvcHRpbWl6ZXMgZm9yIGZvcndhcmQgdHJhdmVyc2FsIG9ubHksIHRoaXMg
anVzdCBtYWludGFpbnMgY29uc2lzdGVuY3kuCi0gICAgICAgIGlmIChtX2N1cnJlbnQtPm5leHRT
aWJsaW5nKCkgJiYgbV9jdXJyZW50LT5uZXh0U2libGluZygpID09IG1fYW5jZXN0b3JTaWJsaW5n
U3RhY2subGFzdCgpKQotICAgICAgICAgICAgbV9hbmNlc3RvclNpYmxpbmdTdGFjay5yZW1vdmVM
YXN0KCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBFbGVtZW50KiBkZWVw
ZXN0U2libGluZyA9IHByZXZpb3VzU2libGluZzsKLSAgICB3aGlsZSAoRWxlbWVudCogbGFzdENo
aWxkID0gRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKCpkZWVwZXN0U2libGluZykpCi0gICAg
ICAgIGRlZXBlc3RTaWJsaW5nID0gbGFzdENoaWxkOwotICAgIEFTU0VSVChkZWVwZXN0U2libGlu
Zyk7Ci0KLSAgICBpZiAoZGVlcGVzdFNpYmxpbmcgIT0gcHJldmlvdXNTaWJsaW5nKQotICAgICAg
ICBtX2FuY2VzdG9yU2libGluZ1N0YWNrLmFwcGVuZChtX2N1cnJlbnQpOwotCi0gICAgbV9jdXJy
ZW50ID0gZGVlcGVzdFNpYmxpbmc7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3Ag
dGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYg
KCFtX2N1cnJlbnQpCi0gICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2Vy
dGlvbigpOwotI2VuZGlmCi0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLWlubGluZSBFbGVtZW50
JiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvciooKQotewotICAgIEFTU0VSVCht
X2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkp
OwotICAgIHJldHVybiAqbV9jdXJyZW50OwotfQotCi1pbmxpbmUgRWxlbWVudCogRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvcjo6b3BlcmF0b3ItPigpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudCk7
Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgcmV0
dXJuIG1fY3VycmVudDsKLX0KLQotaW5saW5lIGJvb2wgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
cjo6b3BlcmF0b3I9PShjb25zdCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29u
c3QKLXsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAg
ICByZXR1cm4gbV9jdXJyZW50ID09IG90aGVyLm1fY3VycmVudDsKLX0KLQotaW5saW5lIGJvb2wg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7Ci19Ci0KLS8vIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcgotCi1pbmxpbmUgRWxl
bWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0
b3IoKQotICAgIDogbV9jdXJyZW50KG51bGxwdHIpCi17Ci19Ci0KLWlubGluZSBFbGVtZW50RGVz
Y2VuZGFudENvbnN0SXRlcmF0b3I6OkVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcihjb25z
dCBFbGVtZW50KiBjdXJyZW50KQotICAgIDogbV9jdXJyZW50KGN1cnJlbnQpCi0jaWYgQVNTRVJU
X0VOQUJMRUQKLSAgICAsIG1fYXNzZXJ0aW9ucyhjdXJyZW50KQotI2VuZGlmCi17Ci0gICAgbV9h
bmNlc3RvclNpYmxpbmdTdGFjay51bmNoZWNrZWRBcHBlbmQobnVsbHB0cik7Ci19Ci0KLWlubGlu
ZSB2b2lkIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6ZHJvcEFzc2VydGlvbnMoKQot
ewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9hc3NlcnRpb25zLmNsZWFyKCk7Ci0jZW5kaWYK
LX0KLQotQUxXQVlTX0lOTElORSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3ImIEVsZW1l
bnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6b3BlcmF0b3IrKygpCi17Ci0gICAgQVNTRVJUKG1f
Y3VycmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7
Ci0KLSAgICBFbGVtZW50KiBmaXJzdENoaWxkID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGls
ZCgqbV9jdXJyZW50KTsKLSAgICBFbGVtZW50KiBuZXh0U2libGluZyA9IEVsZW1lbnRUcmF2ZXJz
YWw6Om5leHRTaWJsaW5nKCptX2N1cnJlbnQpOwotCi0gICAgaWYgKGZpcnN0Q2hpbGQpIHsKLSAg
ICAgICAgaWYgKG5leHRTaWJsaW5nKQotICAgICAgICAgICAgbV9hbmNlc3RvclNpYmxpbmdTdGFj
ay5hcHBlbmQobmV4dFNpYmxpbmcpOwotICAgICAgICBtX2N1cnJlbnQgPSBmaXJzdENoaWxkOwot
ICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgaWYgKG5leHRTaWJsaW5nKSB7Ci0g
ICAgICAgIG1fY3VycmVudCA9IG5leHRTaWJsaW5nOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0g
ICAgfQotCi0gICAgbV9jdXJyZW50ID0gbV9hbmNlc3RvclNpYmxpbmdTdGFjay50YWtlTGFzdCgp
OwotCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0
aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAg
ICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotCi0g
ICAgcmV0dXJuICp0aGlzOwotfQotCi1pbmxpbmUgY29uc3QgRWxlbWVudCYgRWxlbWVudERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yOjpvcGVyYXRvciooKSBjb25zdAotewotICAgIEFTU0VSVChtX2N1
cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwot
ICAgIHJldHVybiAqbV9jdXJyZW50OwotfQotCi1pbmxpbmUgY29uc3QgRWxlbWVudCogRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpvcGVyYXRvci0+KCkgY29uc3QKLXsKLSAgICBBU1NF
UlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRl
ZCgpKTsKLSAgICByZXR1cm4gbV9jdXJyZW50OwotfQotCi1pbmxpbmUgYm9vbCBFbGVtZW50RGVz
Y2VuZGFudENvbnN0SXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgRWxlbWVudERlc2NlbmRhbnRD
b25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5k
b21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gbV9jdXJyZW50ID09IG90aGVyLm1fY3Vy
cmVudDsKLX0KLQotaW5saW5lIGJvb2wgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpv
cGVyYXRvciE9KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotfQotCi0vLyBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yQWRhcHRlcgotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ckFkYXB0ZXI6OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUm
IHJvb3QpCi0gICAgOiBtX3Jvb3Qocm9vdCkKLXsKLX0KLQotaW5saW5lIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI6OmJlZ2luKCkKLXsK
LSAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihFbGVtZW50VHJhdmVyc2FsOjpm
aXJzdENoaWxkKG1fcm9vdCkpOwotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ciBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjo6ZW5kKCkKLXsKLSAgICByZXR1cm4g
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcigpOwotfQotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvciBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjo6bGFzdCgpCi17Ci0g
ICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoRWxlbWVudFRyYXZlcnNhbDo6bGFz
dFdpdGhpbihtX3Jvb3QpKTsKLX0KLQotLy8gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
QWRhcHRlcgotCi1pbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjo6
RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcihjb25zdCBDb250YWluZXJOb2Rl
JiByb290KQotICAgIDogbV9yb290KHJvb3QpCi17Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2Vu
ZGFudENvbnN0SXRlcmF0b3IgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjo6
YmVnaW4oKSBjb25zdAotewotICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0
b3IoRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGlsZChtX3Jvb3QpKTsKLX0KLQotaW5saW5lIEVs
ZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0
b3JBZGFwdGVyOjplbmQoKSBjb25zdAotewotICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3IoKTsKLX0KLQotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
ciBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyOjpsYXN0KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKEVsZW1lbnRUcmF2ZXJz
YWw6Omxhc3RXaXRoaW4obV9yb290KSk7Ci19Ci0KLS8vIFN0YW5kYWxvbmUgZnVuY3Rpb25zCi0K
LWlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlciBlbGVtZW50RGVzY2VuZGFu
dHMoQ29udGFpbmVyTm9kZSYgcm9vdCkKLXsKLSAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvckFkYXB0ZXIocm9vdCk7Ci19Ci0KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudENvbnN0
SXRlcmF0b3JBZGFwdGVyIGVsZW1lbnREZXNjZW5kYW50cyhjb25zdCBDb250YWluZXJOb2RlJiBy
b290KQotewotICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVy
KHJvb3QpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBzdGQgewot
dGVtcGxhdGUgPD4gc3RydWN0IGl0ZXJhdG9yX3RyYWl0czxXZWJDb3JlOjpFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yPiB7Ci0gICAgdHlwZWRlZiBXZWJDb3JlOjpFbGVtZW50IHZhbHVlX3R5cGU7
Ci19OwotdGVtcGxhdGUgPD4gc3RydWN0IGl0ZXJhdG9yX3RyYWl0czxXZWJDb3JlOjpFbGVtZW50
RGVzY2VuZGFudENvbnN0SXRlcmF0b3I+IHsKLSAgICB0eXBlZGVmIGNvbnN0IFdlYkNvcmU6OkVs
ZW1lbnQgdmFsdWVfdHlwZTsKLX07Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yLmgK
aW5kZXggMzc0ZGJhN2E0YzI0NzhkZGQ5M2FlYjJhNGM0NGUzZGI4MmQ3M2I1Ni4uNjAxMmJiNjMy
NGYwYmUxOTE1NTAyZGNmOTk0YWM3N2M5NGQwZGJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
SXRlcmF0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNCwxNiArMzQsMTcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgRWxlbWVudEl0ZXJhdG9yIHsKK2NsYXNz
IEVsZW1lbnRJdGVyYXRvciA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPHN0ZDo6Zm9yd2FyZF9pdGVy
YXRvcl90YWcsIEVsZW1lbnRUeXBlPiB7CiBwdWJsaWM6Ci0gICAgRWxlbWVudEl0ZXJhdG9yKGNv
bnN0IENvbnRhaW5lck5vZGUqIHJvb3QpOwotICAgIEVsZW1lbnRJdGVyYXRvcihjb25zdCBDb250
YWluZXJOb2RlKiByb290LCBFbGVtZW50VHlwZSogY3VycmVudCk7CisgICAgRWxlbWVudEl0ZXJh
dG9yKCkgPSBkZWZhdWx0OwogCiAgICAgRWxlbWVudFR5cGUmIG9wZXJhdG9yKigpIGNvbnN0Owog
ICAgIEVsZW1lbnRUeXBlKiBvcGVyYXRvci0+KCkgY29uc3Q7CiAKLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgRWxlbWVudEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEVsZW1lbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0OworICAgIGNvbnN0ZXhwciBv
cGVyYXRvciBib29sKCkgY29uc3Q7CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhKCkgY29u
c3Q7CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShzdGQ6Om51bGxwdHJfdCkgY29uc3Q7
CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFbGVtZW50SXRlcmF0b3ImKSBj
b25zdDsKIAogICAgIEVsZW1lbnRJdGVyYXRvciYgdHJhdmVyc2VOZXh0KCk7CiAgICAgRWxlbWVu
dEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzKCk7CkBAIC01NCwzOSArNTUsMTIgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBkcm9wQXNzZXJ0aW9ucygpOwogCi1wcml2YXRlOgotICAgIGNvbnN0IENv
bnRhaW5lck5vZGUqIG1fcm9vdDsKLSAgICBFbGVtZW50VHlwZSogbV9jdXJyZW50OwotCi0jaWYg
QVNTRVJUX0VOQUJMRUQKLSAgICBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0aW9u
czsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3Mg
RWxlbWVudENvbnN0SXRlcmF0b3IgewotcHVibGljOgotICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9y
KGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QpOwotICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yKGNv
bnN0IENvbnRhaW5lck5vZGUqIHJvb3QsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKLQot
ICAgIGNvbnN0IEVsZW1lbnRUeXBlJiBvcGVyYXRvciooKSBjb25zdDsKLSAgICBjb25zdCBFbGVt
ZW50VHlwZSogb3BlcmF0b3ItPigpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEVsZW1lbnRDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEVsZW1lbnRDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7Ci0KLSAgICBFbGVtZW50
Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VOZXh0KCk7Ci0gICAgRWxlbWVudENvbnN0SXRlcmF0b3Im
IHRyYXZlcnNlUHJldmlvdXMoKTsKLSAgICBFbGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VO
ZXh0U2libGluZygpOwotICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3Vz
U2libGluZygpOwotICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRTa2lwcGlu
Z0NoaWxkcmVuKCk7Ci0gICAgRWxlbWVudENvbnN0SXRlcmF0b3ImIHRyYXZlcnNlQW5jZXN0b3Io
KTsKLQotICAgIHZvaWQgZHJvcEFzc2VydGlvbnMoKTsKK3Byb3RlY3RlZDoKKyAgICBFbGVtZW50
SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwgRWxlbWVudFR5cGUqIGN1cnJlbnQp
OwogCiBwcml2YXRlOgotICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIG1fcm9vdDsKLSAgICBjb25z
dCBFbGVtZW50VHlwZSogbV9jdXJyZW50OworICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIG1fcm9v
dCB7IG51bGxwdHIgfTsKKyAgICBFbGVtZW50VHlwZSogbV9jdXJyZW50IHsgbnVsbHB0ciB9Owog
CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNz
ZXJ0aW9uczsKQEAgLTk1LDEzICs2OSw2IEBAIHByaXZhdGU6CiAKIC8vIEVsZW1lbnRJdGVyYXRv
cgogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJv
b3QpCi0gICAgOiBtX3Jvb3Qocm9vdCkKLSAgICAsIG1fY3VycmVudChudWxscHRyKQotewotfQot
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPjo6RWxlbWVudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3Qs
IEVsZW1lbnRUeXBlKiBjdXJyZW50KQogICAgIDogbV9yb290KHJvb3QpCkBAIC0yMzcsMTYwICsy
MDQsMjUgQEAgaW5saW5lIEVsZW1lbnRUeXBlKiBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+
OjpvcGVyYXRvci0+KCkgY29uc3QKICAgICByZXR1cm4gbV9jdXJyZW50OwogfQogCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgYm9vbCBFbGVtZW50SXRlcmF0b3I8RWxl
bWVudFR5cGU+OjpvcGVyYXRvcj09KGNvbnN0IEVsZW1lbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0
Ci17Ci0gICAgQVNTRVJUKG1fcm9vdCA9PSBvdGhlci5tX3Jvb3QpOwotICAgIEFTU0VSVCghbV9h
c3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIHJldHVybiBtX2N1cnJlbnQgPT0g
b3RoZXIubV9jdXJyZW50OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgYm9vbCBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvciE9KGNvbnN0
IEVsZW1lbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOwotfQotCi0vLyBFbGVtZW50Q29uc3RJdGVyYXRvcgotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+
OjpFbGVtZW50Q29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlKiByb290KQotICAgIDog
bV9yb290KHJvb3QpCi0gICAgLCBtX2N1cnJlbnQobnVsbHB0cikKK3RlbXBsYXRlPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPiBjb25zdGV4cHIgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3Bl
cmF0b3IgYm9vbCgpIGNvbnN0CiB7CisgICAgcmV0dXJuIG1fY3VycmVudDsKIH0KIAotdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPjo6RWxlbWVudENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9v
dCwgY29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpCi0gICAgOiBtX3Jvb3Qocm9vdCkKLSAgICAs
IG1fY3VycmVudChjdXJyZW50KQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLCBtX2Fzc2VydGlv
bnMoY3VycmVudCkKLSNlbmRpZgotewotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+Ci1pbmxpbmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q29u
c3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dCgpCi17Ci0gICAgQVNTRVJUKG1f
Y3VycmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7
Ci0gICAgbV9jdXJyZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dCgqbV9jdXJyZW50
LCBtX3Jvb3QpOwotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9u
IHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAoIW1fY3VycmVudCkK
LSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7Ci0jZW5k
aWYKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDb25z
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91cygpCi17Ci0gICAgQVNTRVJU
KG1fY3VycmVudCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQo
KSk7Ci0gICAgbV9jdXJyZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXMoKm1f
Y3VycmVudCwgbV9yb290KTsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIERyb3AgdGhlIGFz
c2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCi0gICAgaWYgKCFtX2N1
cnJlbnQpCi0gICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigp
OwotI2VuZGlmCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVt
ZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxpbmcoKQotewot
ICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVI
YXNNdXRhdGVkKCkpOwotICAgIG1fY3VycmVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5l
eHRTaWJsaW5nKCptX2N1cnJlbnQpOwotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRHJvcCB0
aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KLSAgICBpZiAo
IW1fY3VycmVudCkKLSAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0
aW9uKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4m
IEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91c1NpYmxp
bmcoKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25z
LmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3VycmVudCA9IFRyYXZlcnNhbDxFbGVtZW50
VHlwZT46OnByZXZpb3VzU2libGluZygqbV9jdXJyZW50KTsKLSNpZiBBU1NFUlRfRU5BQkxFRAot
ICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBl
bmQuCi0gICAgaWYgKCFtX2N1cnJlbnQpCi0gICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnRE
aXNwYXRjaEFzc2VydGlvbigpOwotI2VuZGlmCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVudENvbnN0SXRlcmF0b3I8
RWxlbWVudFR5cGU+JiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNl
TmV4dFNraXBwaW5nQ2hpbGRyZW4oKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQpOwotICAgIEFT
U0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkpOwotICAgIG1fY3VycmVudCA9
IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRTa2lwcGluZ0NoaWxkcmVuKCptX2N1cnJlbnQs
IG1fcm9vdCk7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24g
d2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQot
ICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRp
ZgotICAgIHJldHVybiAqdGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgotaW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZUFuY2VzdG9yKCkKLXsKLSAgICBBU1NFUlQo
bV9jdXJyZW50KTsKLSAgICBBU1NFUlQobV9jdXJyZW50ICE9IG1fcm9vdCk7Ci0gICAgQVNTRVJU
KCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7Ci0gICAgbV9jdXJyZW50ID0gZmlu
ZEVsZW1lbnRBbmNlc3Rvck9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm1fY3VycmVudCk7Ci0j
aWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRl
cmF0b3IgcmVhY2hlcyB0aGUgZW5kLgotICAgIGlmICghbV9jdXJyZW50KQotICAgICAgICBtX2Fz
c2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKLSNlbmRpZgotICAgIHJldHVy
biAqdGhpczsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIHZv
aWQgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojpkcm9wQXNzZXJ0aW9ucygpCi17
Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2Fzc2VydGlvbnMuY2xlYXIoKTsKLSNlbmRpZgot
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgY29uc3QgRWxlbWVu
dFR5cGUmIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IqKCkgY29u
c3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBjb25zdGV4cHIgYm9vbCBFbGVtZW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvciEoKSBjb25zdAogewotICAgIEFTU0VSVCht
X2N1cnJlbnQpOwotICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRhdGVkKCkp
OwotICAgIHJldHVybiAqbV9jdXJyZW50OworICAgIHJldHVybiAhbV9jdXJyZW50OwogfQogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgY29uc3QgRWxlbWVudFR5cGUq
IEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItPigpIGNvbnN0Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gY29uc3RleHByIGJvb2wgRWxlbWVudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IhPShzdGQ6Om51bGxwdHJfdCkgY29uc3QKIHsKLSAg
ICBBU1NFUlQobV9jdXJyZW50KTsKLSAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFz
TXV0YXRlZCgpKTsKICAgICByZXR1cm4gbV9jdXJyZW50OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgYm9vbCBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT46Om9wZXJhdG9yPT0oY29uc3QgRWxlbWVudENvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25z
dAotewotICAgIEFTU0VSVChtX3Jvb3QgPT0gb3RoZXIubV9yb290KTsKLSAgICBBU1NFUlQoIW1f
YXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKLSAgICByZXR1cm4gbV9jdXJyZW50ID09
IG90aGVyLm1fY3VycmVudDsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgot
aW5saW5lIGJvb2wgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvciE9
KGNvbnN0IEVsZW1lbnRDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKK3RlbXBsYXRlPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPiBjb25zdGV4cHIgYm9vbCBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+OjpvcGVyYXRvciE9KGNvbnN0IEVsZW1lbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIEFTU0VSVChtX3Jvb3QgPT0gb3RoZXIu
bV9yb290IHx8ICFtX2N1cnJlbnQgfHwgIW90aGVyLm1fY3VycmVudCk7CisgICAgcmV0dXJuIG1f
Y3VycmVudCAhPSBvdGhlci5tX2N1cnJlbnQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5jcHAKaW5kZXggZGQwYzk5OTE4MDljYmY3YzcxMDYw
MDUwMjE2NGU5YTE2ZmRjYzE5MS4uNDc4OTIzMDFlMjk2YWE2YTU3ZDhkMzg1M2FiN2I2OGRlNWI5
Y2E3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5jcHAKQEAgLTIsNyArMiw3IEBACiAg
KiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAg
ICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAg
ICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNi0yMDA4LCAyMDEwLCAyMDEzLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMywzMiArMjMsMTQgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMaXZlTm9kZUxpc3QuaCIKIAotI2luY2x1
ZGUgIkNsYXNzQ29sbGVjdGlvbi5oIgotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJF
bGVtZW50VHJhdmVyc2FsLmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKLSNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChMaXZlTm9kZUxpc3QpOwotCiBMaXZlTm9kZUxpc3Q6Okxp
dmVOb2RlTGlzdChDb250YWluZXJOb2RlJiBvd25lck5vZGUsIE5vZGVMaXN0SW52YWxpZGF0aW9u
VHlwZSBpbnZhbGlkYXRpb25UeXBlKQogICAgIDogbV9vd25lck5vZGUob3duZXJOb2RlKQogICAg
ICwgbV9pbnZhbGlkYXRpb25UeXBlKGludmFsaWRhdGlvblR5cGUpCi0gICAgLCBtX2lzUmVnaXN0
ZXJlZEZvckludmFsaWRhdGlvbkF0RG9jdW1lbnQoZmFsc2UpCiB7Ci0gICAgQVNTRVJUKG1faW52
YWxpZGF0aW9uVHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW52YWxpZGF0aW9uVHlwZSkp
OwogfQogCiBMaXZlTm9kZUxpc3Q6On5MaXZlTm9kZUxpc3QoKSA9IGRlZmF1bHQ7CiAKLUNvbnRh
aW5lck5vZGUmIExpdmVOb2RlTGlzdDo6cm9vdE5vZGUoKSBjb25zdAotewotICAgIGlmIChpc1Jv
b3RlZEF0RG9jdW1lbnQoKSAmJiBvd25lck5vZGUoKS5pc0Nvbm5lY3RlZCgpKQotICAgICAgICBy
ZXR1cm4gb3duZXJOb2RlKCkuZG9jdW1lbnQoKTsKLQotICAgIHJldHVybiBvd25lck5vZGUoKTsK
LX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0xpdmVOb2RlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCmlu
ZGV4IGYyN2YwZWY2NzRiYmQ5ODIzMTRjMGJiYjI1Yjg1MjQyMjM0ZGE1OGYuLjQ4OTE2MzYxMDc5
MTM4ZmQwYmM3OGU2ZDQxYWFhZjAzMThlMGJhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9MaXZlTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0
LmgKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJDb2xsZWN0aW9uSW5kZXhDYWNoZS5oIgog
I2luY2x1ZGUgIkNvbGxlY3Rpb25UcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgot
I2luY2x1ZGUgIkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBA
IC0zOSwzOSArMzgsMzUgQEAgY2xhc3MgRWxlbWVudDsKIHN0YXRpYyBib29sIHNob3VsZEludmFs
aWRhdGVUeXBlT25BdHRyaWJ1dGVDaGFuZ2UoTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlLCBjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAKIGNsYXNzIExpdmVOb2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlz
dCB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChMaXZlTm9kZUxpc3QpOworICAgIFdURl9N
QUtFX0lTT19OT05BTExPQ0FUQUJMRShMaXZlTm9kZUxpc3QpOwogcHVibGljOgotICAgIExpdmVO
b2RlTGlzdChDb250YWluZXJOb2RlJiBvd25lck5vZGUsIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlw
ZSk7CiAgICAgdmlydHVhbCB+TGl2ZU5vZGVMaXN0KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZWxl
bWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNSb290
ZWRBdERvY3VtZW50KCkgY29uc3QgPSAwOwogCi0gICAgQUxXQVlTX0lOTElORSBOb2RlTGlzdElu
dmFsaWRhdGlvblR5cGUgaW52YWxpZGF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZT4obV9pbnZhbGlkYXRpb25UeXBlKTsgfQorICAg
IE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9pbnZhbGlkYXRpb25UeXBlOyB9CiAgICAgQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9vd25lck5vZGU7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaW52
YWxpZGF0ZUNhY2hlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBj
b25zdAotICAgIHsKLSAgICAgICAgaWYgKHNob3VsZEludmFsaWRhdGVUeXBlT25BdHRyaWJ1dGVD
aGFuZ2UoaW52YWxpZGF0aW9uVHlwZSgpLCBhdHRyTmFtZSkpCi0gICAgICAgICAgICBpbnZhbGlk
YXRlQ2FjaGUoKTsKLSAgICB9CisgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGVGb3JBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIGludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50KERvY3VtZW50JikgY29uc3QgPSAwOwogICAg
IHZvaWQgaW52YWxpZGF0ZUNhY2hlKCkgY29uc3QgeyBpbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVu
dChkb2N1bWVudCgpKTsgfQogCiAgICAgYm9vbCBpc1JlZ2lzdGVyZWRGb3JJbnZhbGlkYXRpb25B
dERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1JlZ2lzdGVyZWRGb3JJbnZhbGlkYXRpb25B
dERvY3VtZW50OyB9Ci0gICAgdm9pZCBzZXRSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1
bWVudChib29sIGYpIHsgbV9pc1JlZ2lzdGVyZWRGb3JJbnZhbGlkYXRpb25BdERvY3VtZW50ID0g
ZjsgfQorICAgIHZvaWQgc2V0UmVnaXN0ZXJlZEZvckludmFsaWRhdGlvbkF0RG9jdW1lbnQoYm9v
bCBpc1JlZ2lzdGVyZWQpIHsgbV9pc1JlZ2lzdGVyZWRGb3JJbnZhbGlkYXRpb25BdERvY3VtZW50
ID0gaXNSZWdpc3RlcmVkOyB9CiAKIHByb3RlY3RlZDoKKyAgICBMaXZlTm9kZUxpc3QoQ29udGFp
bmVyTm9kZSYgb3duZXJOb2RlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUpOworCiAgICAgRG9j
dW1lbnQmIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9vd25lck5vZGUtPmRvY3VtZW50KCk7
IH0KKyAgICBDb250YWluZXJOb2RlJiByb290Tm9kZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IGJvb2wgaXNMaXZlTm9kZUxpc3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAg
ICBDb250YWluZXJOb2RlJiByb290Tm9kZSgpIGNvbnN0OwotCiAgICAgUmVmPENvbnRhaW5lck5v
ZGU+IG1fb3duZXJOb2RlOwogCi0gICAgY29uc3QgdW5zaWduZWQgbV9pbnZhbGlkYXRpb25UeXBl
OwotICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRGb3JJbnZhbGlkYXRpb25BdERvY3VtZW50OworICAg
IGNvbnN0IE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBtX2ludmFsaWRhdGlvblR5cGU7CisgICAg
Ym9vbCBtX2lzUmVnaXN0ZXJlZEZvckludmFsaWRhdGlvbkF0RG9jdW1lbnQgeyBmYWxzZSB9Owog
fTsKIAogdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KQEAgLTgxLDE2ICs3NiwxNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+Q2FjaGVkTGl2ZU5vZGVMaXN0KCk7CiAKICAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUNvdW50KG5v
ZGVMaXN0KCkpOyB9Ci0gICAgRWxlbWVudCogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1faW5kZXhDYWNoZS5ub2RlQXQobm9kZUxpc3QoKSwgb2Zmc2V0KTsg
fQorICAgIEVsZW1lbnQqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2luZGV4Q2FjaGUubm9kZUF0KG5vZGVMaXN0KCksIG9mZnNldCk7IH0KIAogICAgIC8vIEZv
ciBDb2xsZWN0aW9uSW5kZXhDYWNoZQotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgY29s
bGVjdGlvbkJlZ2luKCkgY29uc3QgeyByZXR1cm4gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0
aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+OjpiZWdpbihub2RlTGlzdCgpLCByb290Tm9k
ZSgpKTsgfQotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgY29sbGVjdGlvbkxhc3QoKSBj
b25zdCB7IHJldHVybiBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBl
OjpEZXNjZW5kYW50cz46Omxhc3Qobm9kZUxpc3QoKSwgcm9vdE5vZGUoKSk7IH0KLSAgICBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yIGNvbGxlY3Rpb25FbmQoKSBjb25zdCB7IHJldHVybiBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yKCk7IH0KLSAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUZv
cndhcmQoRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQs
IHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3QgeyBDb2xsZWN0aW9uVHJhdmVyc2FsPENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNlRm9yd2FyZChub2Rl
TGlzdCgpLCBjdXJyZW50LCBjb3VudCwgdHJhdmVyc2VkQ291bnQpOyB9Ci0gICAgdm9pZCBjb2xs
ZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50
LCB1bnNpZ25lZCBjb3VudCkgY29uc3QgeyBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25U
cmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNlQmFja3dhcmQobm9kZUxpc3QoKSwg
Y3VycmVudCwgY291bnQpOyB9CisgICAgdXNpbmcgVHJhdmVyc2FsID0gQ29sbGVjdGlvblRyYXZl
cnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+OworICAgIHVzaW5nIEl0
ZXJhdG9yID0gVHJhdmVyc2FsOjpJdGVyYXRvcjsKKyAgICBhdXRvIGNvbGxlY3Rpb25CZWdpbigp
IGNvbnN0IHsgcmV0dXJuIFRyYXZlcnNhbDo6YmVnaW4obm9kZUxpc3QoKSwgcm9vdE5vZGUoKSk7
IH0KKyAgICBhdXRvIGNvbGxlY3Rpb25MYXN0KCkgY29uc3QgeyByZXR1cm4gVHJhdmVyc2FsOjps
YXN0KG5vZGVMaXN0KCksIHJvb3ROb2RlKCkpOyB9CisgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVy
c2VGb3J3YXJkKEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRy
YXZlcnNlZENvdW50KSBjb25zdCB7IFRyYXZlcnNhbDo6dHJhdmVyc2VGb3J3YXJkKG5vZGVMaXN0
KCksIGN1cnJlbnQsIGNvdW50LCB0cmF2ZXJzZWRDb3VudCk7IH0KKyAgICB2b2lkIGNvbGxlY3Rp
b25UcmF2ZXJzZUJhY2t3YXJkKEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkgY29u
c3QgeyBUcmF2ZXJzYWw6OnRyYXZlcnNlQmFja3dhcmQobm9kZUxpc3QoKSwgY3VycmVudCwgY291
bnQpOyB9CiAgICAgYm9vbCBjb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHdpbGxWYWxpZGF0ZUluZGV4Q2FjaGUoKSBjb25zdCB7
IGRvY3VtZW50KCkucmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbihjb25zdF9jYXN0PENh
Y2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Jj4oKnRoaXMpKTsgfQorICAgIHZvaWQgd2ls
bFZhbGlkYXRlSW5kZXhDYWNoZSgpIGNvbnN0IHsgZG9jdW1lbnQoKS5yZWdpc3Rlck5vZGVMaXN0
Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Q2FjaGVkTGl2ZU5vZGVMaXN0Jj4oKnRoaXMpKTsg
fQogCiAgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudChEb2N1bWVudCYpIGNvbnN0
IGZpbmFsOwogICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3QgZmluYWwKQEAgLTEwOCw5ICsx
MDQsNyBAQCBwcml2YXRlOgogICAgIE5vZGVMaXN0VHlwZSYgbm9kZUxpc3QoKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxOb2RlTGlzdFR5cGUmPigqdGhpcyk7IH0KICAgICBjb25zdCBOb2RlTGlzdFR5
cGUmIG5vZGVMaXN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RU
eXBlJj4oKnRoaXMpOyB9CiAKLSAgICBDb250YWluZXJOb2RlJiByb290Tm9kZSgpIGNvbnN0Owot
Ci0gICAgbXV0YWJsZSBDb2xsZWN0aW9uSW5kZXhDYWNoZTxOb2RlTGlzdFR5cGUsIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3I+IG1faW5kZXhDYWNoZTsKKyAgICBtdXRhYmxlIENvbGxlY3Rpb25J
bmRleENhY2hlPE5vZGVMaXN0VHlwZSwgSXRlcmF0b3I+IG1faW5kZXhDYWNoZTsKIH07CiAKIEFM
V0FZU19JTkxJTkUgYm9vbCBzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmlidXRlQ2hhbmdlKE5v
ZGVMaXN0SW52YWxpZGF0aW9uVHlwZSB0eXBlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKQEAgLTEzNywzNiArMTMxLDQwIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBzaG91bGRJbnZhbGlk
YXRlVHlwZU9uQXR0cmlidXRlQ2hhbmdlKE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCitBTFdBWVNfSU5MSU5FIHZvaWQgTGl2ZU5vZGVMaXN0OjppbnZhbGlk
YXRlQ2FjaGVGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkg
Y29uc3QKK3sKKyAgICBpZiAoc2hvdWxkSW52YWxpZGF0ZVR5cGVPbkF0dHJpYnV0ZUNoYW5nZSht
X2ludmFsaWRhdGlvblR5cGUsIGF0dHJpYnV0ZU5hbWUpKQorICAgICAgICBpbnZhbGlkYXRlQ2Fj
aGUoKTsKK30KKworaW5saW5lIENvbnRhaW5lck5vZGUmIExpdmVOb2RlTGlzdDo6cm9vdE5vZGUo
KSBjb25zdAoreworICAgIGlmIChpc1Jvb3RlZEF0RG9jdW1lbnQoKSAmJiBtX293bmVyTm9kZS0+
aXNDb25uZWN0ZWQoKSkKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50KCk7CisKKyAgICByZXR1cm4g
bV9vd25lck5vZGU7Cit9CisKIHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+CiBDYWNoZWRM
aXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Q2FjaGVkTGl2ZU5vZGVMaXN0KENvbnRhaW5lck5v
ZGUmIG93bmVyTm9kZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUp
CiAgICAgOiBMaXZlTm9kZUxpc3Qob3duZXJOb2RlLCBpbnZhbGlkYXRpb25UeXBlKQotICAgICwg
bV9pbmRleENhY2hlKG5vZGVMaXN0KCkpCiB7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlz
dFR5cGU+CiBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6fkNhY2hlZExpdmVOb2Rl
TGlzdCgpCiB7Ci0gICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKG5vZGVMaXN0KCkp
KQorICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZSgpKQogICAgICAgICBkb2N1bWVu
dCgpLnVucmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbigqdGhpcyk7CiB9CiAKLXRlbXBs
YXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+Ci1pbmxpbmUgQ29udGFpbmVyTm9kZSYgQ2FjaGVkTGl2
ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OnJvb3ROb2RlKCkgY29uc3QKLXsKLSAgICBpZiAobm9k
ZUxpc3QoKS5pc1Jvb3RlZEF0RG9jdW1lbnQoKSAmJiBvd25lck5vZGUoKS5pc0Nvbm5lY3RlZCgp
KQotICAgICAgICByZXR1cm4gb3duZXJOb2RlKCkuZG9jdW1lbnQoKTsKLQotICAgIHJldHVybiBv
d25lck5vZGUoKTsKLX0KLQogdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KIHZvaWQgQ2Fj
aGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50
KERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIHsKLSAgICBpZiAoIW1faW5kZXhDYWNoZS5oYXNW
YWxpZENhY2hlKG5vZGVMaXN0KCkpKQotICAgICAgICByZXR1cm47Ci0gICAgZG9jdW1lbnQudW5y
ZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Tm9kZUxpc3RUeXBlJj4o
bm9kZUxpc3QoKSkpOwotICAgIG1faW5kZXhDYWNoZS5pbnZhbGlkYXRlKG5vZGVMaXN0KCkpOwor
ICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZSgpKSB7CisgICAgICAgIGRvY3VtZW50
LnVucmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbihjb25zdF9jYXN0PE5vZGVMaXN0VHlw
ZSY+KG5vZGVMaXN0KCkpKTsKKyAgICAgICAgbV9pbmRleENhY2hlLmludmFsaWRhdGUoKTsKKyAg
ICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9OYW1lTm9kZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVOb2RlTGlz
dC5jcHAKaW5kZXggZjBhZGQyYWMyZDU0NjY2ZmEyZmU4NTc4OTYyY2I1NDA4ZmJiNzM1NC4uZjRm
YTI2ZmM3ZTYzNjI0NDFhYzM0Mzc0ZWMxMmU1MjQ4OWY3ZjkzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05h
bWVOb2RlTGlzdC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFy
cyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2
aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxs
ZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNywgMjAxNC0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtMzgsNiArMzgsMTEgQEAgTmFtZU5vZGVMaXN0OjpOYW1lTm9kZUxpc3QoQ29udGFpbmVy
Tm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiB7CiB9CiAKK1JlZjxOYW1l
Tm9kZUxpc3Q+IE5hbWVOb2RlTGlzdDo6Y3JlYXRlKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBj
b25zdCBBdG9tU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5hbWVO
b2RlTGlzdChyb290Tm9kZSwgbmFtZSkpOworfQorCiBOYW1lTm9kZUxpc3Q6On5OYW1lTm9kZUxp
c3QoKQogewogICAgIG93bmVyTm9kZSgpLm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZVdpdGhBdG9t
TmFtZSgqdGhpcywgbV9uYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1l
Tm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuaAppbmRleCA3MGM1
YzcwMGU5NTBlNTMxNDM3ZjBmZGU1MWNjYzM4ZDZkY2IzYWExLi45NDc1ZGVmZWQ0ZWI3ODlkZmUz
MTMxMjE5NDU0ZmUyMzg1MDFlN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFt
ZU5vZGVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5oCkBAIC0y
LDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5v
cmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5v
cmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcp
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDctMjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI0LDI0ICsyNCwxNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJMaXZlTm9kZUxpc3QuaCIKLSNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0vLyBOb2RlTGlzdCB3aGljaCBsaXN0cyBhbGwgTm9kZXMgaW4gYSBF
bGVtZW50IHdpdGggYSBnaXZlbiAibmFtZSIgYXR0cmlidXRlCiBjbGFzcyBOYW1lTm9kZUxpc3Qg
ZmluYWwgOiBwdWJsaWMgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5hbWVOb2RlTGlzdD4gewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoTmFtZU5vZGVMaXN0KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPE5hbWVOb2RlTGlzdD4gY3JlYXRlKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBB
dG9tU3RyaW5nJiBuYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmFt
ZU5vZGVMaXN0KHJvb3ROb2RlLCBuYW1lKSk7Ci0gICAgfQotCisgICAgc3RhdGljIFJlZjxOYW1l
Tm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmlu
ZyYgbmFtZSk7CiAgICAgdmlydHVhbCB+TmFtZU5vZGVMaXN0KCk7CiAKLSAgICBib29sIGVsZW1l
bnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzUm9vdGVkQXRE
b2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBlbGVt
ZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc1Jvb3RlZEF0RG9j
dW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgogICAgIE5h
bWVOb2RlTGlzdChDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgbmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKaW5kZXggMTI3MjUyNDIwYWI3ZDFkN2I0ODc0ZDVhMjI2MTYxYjQz
MzBiYzQ0My4uYjdhZjE0ZDFjMGI0Y2JmZGY2ODljZTI4NDAzMDI5OTViNGIzNDY0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcApAQCAtNDcsNyArNDcsNiBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2lu
Y2x1ZGUgIkhUTUxBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgot
I2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggZWYwNTUyOTM0Mjc3ZDQzYjEx
OWE0Njc1MWZmNDI4ZTBhMTgwMzc5MC4uYzA2MWEzZGUyYmM1NTgyNWY5NWNmNzJkNDgwMzNhMWVj
ZDE5ZDI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgWXVzdWtlIFN1enVraSA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjgsNyArMjgsNyBAQAogI2lu
Y2x1ZGUgIlNlbGVjdG9yUXVlcnkuaCIKIAogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgotI2luY2x1
ZGUgIkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0
b3IuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIu
aCIKICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgpAQCAtMTUwLDE1ICsxNTAsMTIgQEAgYm9v
bCBTZWxlY3RvckRhdGFMaXN0OjptYXRjaGVzKEVsZW1lbnQmIHRhcmdldEVsZW1lbnQpIGNvbnN0
CiAKIEVsZW1lbnQqIFNlbGVjdG9yRGF0YUxpc3Q6OmNsb3Nlc3QoRWxlbWVudCYgdGFyZ2V0RWxl
bWVudCkgY29uc3QKIHsKLSAgICBFbGVtZW50KiBjdXJyZW50Tm9kZSA9ICZ0YXJnZXRFbGVtZW50
OwotICAgIGRvIHsKKyAgICBmb3IgKGF1dG8mIGN1cnJlbnRFbGVtZW50IDogbGluZWFnZU9mVHlw
ZTxFbGVtZW50Pih0YXJnZXRFbGVtZW50KSkgewogICAgICAgICBmb3IgKGF1dG8mIHNlbGVjdG9y
IDogbV9zZWxlY3RvcnMpIHsKLSAgICAgICAgICAgIEVsZW1lbnQqIGNhbmRpZGF0ZUVsZW1lbnQg
PSBzZWxlY3RvckNsb3Nlc3Qoc2VsZWN0b3IsICpjdXJyZW50Tm9kZSwgdGFyZ2V0RWxlbWVudCk7
Ci0gICAgICAgICAgICBpZiAoY2FuZGlkYXRlRWxlbWVudCkKKyAgICAgICAgICAgIGlmIChhdXRv
KiBjYW5kaWRhdGVFbGVtZW50ID0gc2VsZWN0b3JDbG9zZXN0KHNlbGVjdG9yLCBjdXJyZW50RWxl
bWVudCwgdGFyZ2V0RWxlbWVudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUVs
ZW1lbnQ7CiAgICAgICAgIH0KLSAgICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS0+cGFy
ZW50RWxlbWVudCgpOwotICAgIH0gd2hpbGUgKGN1cnJlbnROb2RlKTsKKyAgICB9CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKQEAgLTI5NSw3ICsyOTIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
U2VsZWN0b3JRdWVyeVRyYWl0Pgogc3RhdGljIGlubGluZSB2b2lkIGVsZW1lbnRzRm9yTG9jYWxO
YW1lKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBsb2Nh
bE5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGxvd2VyY2FzZUxvY2FsTmFtZSwgdHlwZW5hbWUgU2Vs
ZWN0b3JRdWVyeVRyYWl0OjpPdXRwdXRUeXBlJiBvdXRwdXQpCiB7CiAgICAgaWYgKGxvY2FsTmFt
ZSA9PSBsb3dlcmNhc2VMb2NhbE5hbWUpIHsKLSAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDog
ZWxlbWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVu
dD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAgICAgICAgICAg
aWYgKGVsZW1lbnQudGFnUU5hbWUoKS5sb2NhbE5hbWUoKSA9PSBsb2NhbE5hbWUpIHsKICAgICAg
ICAgICAgICAgICBTZWxlY3RvclF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1lbnQob3V0
cHV0LCAmZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKFNlbGVjdG9yUXVlcnlUcmFpdDo6
c2hvdWxkT25seU1hdGNoRmlyc3RFbGVtZW50KQpAQCAtMzAzLDcgKzMwMCw3IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBlbGVtZW50c0ZvckxvY2FsTmFtZShjb25zdCBDb250YWluZXJOb2RlJiByb290
Tm9kZSwgY29uc3QgQXRvCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2Ugewot
ICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29uc3RfY2Fz
dDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgICAgICBmb3IgKGF1dG8mIGVsZW1l
bnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5lck5vZGUm
Pihyb290Tm9kZSkpKSB7CiAgICAgICAgICAgICBpZiAobG9jYWxOYW1lTWF0Y2hlcyhlbGVtZW50
LCBsb2NhbE5hbWUsIGxvd2VyY2FzZUxvY2FsTmFtZSkpIHsKICAgICAgICAgICAgICAgICBTZWxl
Y3RvclF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1lbnQob3V0cHV0LCAmZWxlbWVudCk7
CiAgICAgICAgICAgICAgICAgaWYgKFNlbGVjdG9yUXVlcnlUcmFpdDo6c2hvdWxkT25seU1hdGNo
Rmlyc3RFbGVtZW50KQpAQCAtMzE2LDcgKzMxMyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbGVt
ZW50c0ZvckxvY2FsTmFtZShjb25zdCBDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRv
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRyYWl0Pgogc3RhdGljIGlubGluZSB2
b2lkIGFueUVsZW1lbnQoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIHR5cGVuYW1lIFNl
bGVjdG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0cHV0KQogewotICAgIGZvciAoYXV0byYg
ZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihy
b290Tm9kZSkpKSB7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8
RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAgICAg
ICBTZWxlY3RvclF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1lbnQob3V0cHV0LCAmZWxl
bWVudCk7CiAgICAgICAgIGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZp
cnN0RWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM0NSw3ICszNDIsNyBAQCBBTFdB
WVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZVRhZ05hbWVTZWxl
Y3RvckRhdGEoY29uc3QgQ29udAogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8g
RmFsbGJhY2s6IE5hbWVzcGFjZVVSSSBpcyBzZXQsIHNlbGVjdG9yTG9jYWxOYW1lIG1heSBiZSBz
dGFyQXRvbSgpLgotICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFu
dHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgeworICAgICAgICBmb3Ig
KGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENv
bnRhaW5lck5vZGUmPihyb290Tm9kZSkpKSB7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC5uYW1l
c3BhY2VVUkkoKSA9PSBzZWxlY3Rvck5hbWVzcGFjZVVSSSAmJiBsb2NhbE5hbWVNYXRjaGVzKGVs
ZW1lbnQsIHNlbGVjdG9yTG9jYWxOYW1lLCBzZWxlY3Rvckxvd2VyY2FzZUxvY2FsTmFtZSkpIHsK
ICAgICAgICAgICAgICAgICBTZWxlY3RvclF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1l
bnQob3V0cHV0LCAmZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKFNlbGVjdG9yUXVlcnlU
cmFpdDo6c2hvdWxkT25seU1hdGNoRmlyc3RFbGVtZW50KQpAQCAtMzYyLDcgKzM1OSw3IEBAIEFM
V0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlQ2xhc3NOYW1l
U2VsZWN0b3JEYXRhKGNvbnN0IENvCiAgICAgQVNTRVJUKGlzU2luZ2xlQ2xhc3NOYW1lU2VsZWN0
b3IoKnNlbGVjdG9yRGF0YS5zZWxlY3RvcikpOwogCiAgICAgY29uc3QgQXRvbVN0cmluZyYgY2xh
c3NOYW1lID0gc2VsZWN0b3JEYXRhLnNlbGVjdG9yLT52YWx1ZSgpOwotICAgIGZvciAoYXV0byYg
ZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihy
b290Tm9kZSkpKSB7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8
RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAgICAg
ICBpZiAoZWxlbWVudC5oYXNDbGFzcygpICYmIGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5z
KGNsYXNzTmFtZSkpIHsKICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBwZW5kT3V0
cHV0Rm9yRWxlbWVudChvdXRwdXQsICZlbGVtZW50KTsKICAgICAgICAgICAgIGlmIChTZWxlY3Rv
clF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKQEAgLTM3Niw3ICszNzMs
NyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZVNl
bGVjdG9yRGF0YShjb25zdCBDb250YWluZXJObwogewogICAgIEFTU0VSVChtX3NlbGVjdG9ycy5z
aXplKCkgPT0gMSk7CiAKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFu
dHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4oc2VhcmNoUm9vdE5vZGUpKSkgeworICAgIGZv
ciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8
Q29udGFpbmVyTm9kZSY+KHNlYXJjaFJvb3ROb2RlKSkpIHsKICAgICAgICAgaWYgKHNlbGVjdG9y
TWF0Y2hlcyhzZWxlY3RvckRhdGEsIGVsZW1lbnQsIHJvb3ROb2RlKSkgewogICAgICAgICAgICAg
U2VsZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1l
bnQpOwogICAgICAgICAgICAgaWYgKFNlbGVjdG9yUXVlcnlUcmFpdDo6c2hvdWxkT25seU1hdGNo
Rmlyc3RFbGVtZW50KQpAQCAtMzg4LDcgKzM4NSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxl
Y3RvckRhdGFMaXN0OjpleGVjdXRlU2luZ2xlU2VsZWN0b3JEYXRhKGNvbnN0IENvbnRhaW5lck5v
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRyYWl0PgogQUxXQVlTX0lOTElORSB2
b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVNdWx0aVNlbGVjdG9yRGF0YShjb25z
dCBDb250YWluZXJOb2RlJiByb290Tm9kZSwgdHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRyYWl0OjpP
dXRwdXRUeXBlJiBvdXRwdXQpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxl
bWVudERlc2NlbmRhbnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsK
KyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihjb25z
dF9jYXN0PENvbnRhaW5lck5vZGUmPihyb290Tm9kZSkpKSB7CiAgICAgICAgIGZvciAoYXV0byYg
c2VsZWN0b3IgOiBtX3NlbGVjdG9ycykgewogICAgICAgICAgICAgaWYgKHNlbGVjdG9yTWF0Y2hl
cyhzZWxlY3RvciwgZWxlbWVudCwgcm9vdE5vZGUpKSB7CiAgICAgICAgICAgICAgICAgU2VsZWN0
b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwpA
QCAtNDA0LDcgKzQwMSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0Ojpl
eGVjdXRlU2luZ2xlTXVsdGlTZWxlY3RvckRhdGEoY29uc3QgQ29udGFpCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgU2VsZWN0b3JRdWVyeVRyYWl0PgogQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0
YUxpc3Q6OmV4ZWN1dGVDb21waWxlZFNpbXBsZVNlbGVjdG9yQ2hlY2tlcihjb25zdCBDb250YWlu
ZXJOb2RlJiBzZWFyY2hSb290Tm9kZSwgU2VsZWN0b3JDb21waWxlcjo6UXVlcnlTZWxlY3RvclNp
bXBsZVNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIsIHR5cGVuYW1lIFNlbGVjdG9yUXVl
cnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0cHV0LCBjb25zdCBTZWxlY3RvckRhdGEmIHNlbGVjdG9y
RGF0YSkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFu
dHMoY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4oc2VhcmNoUm9vdE5vZGUpKSkgeworICAgIGZv
ciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8
Q29udGFpbmVyTm9kZSY+KHNlYXJjaFJvb3ROb2RlKSkpIHsKICAgICAgICAgc2VsZWN0b3JEYXRh
LmNvbXBpbGVkU2VsZWN0b3Iud2FzVXNlZCgpOwogCiAgICAgICAgIGlmIChzZWxlY3RvckNoZWNr
ZXIoJmVsZW1lbnQpKSB7CkBAIC00MjEsNyArNDE4LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNl
bGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVDb21waWxlZFNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2lu
Z0MKICAgICBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCBjaGVja2luZ0NvbnRleHQo
U2VsZWN0b3JDaGVja2VyOjpNb2RlOjpRdWVyeWluZ1J1bGVzKTsKICAgICBjaGVja2luZ0NvbnRl
eHQuc2NvcGUgPSByb290Tm9kZS5pc0RvY3VtZW50Tm9kZSgpID8gbnVsbHB0ciA6ICZyb290Tm9k
ZTsKIAotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9j
YXN0PENvbnRhaW5lck5vZGUmPihzZWFyY2hSb290Tm9kZSkpKSB7CisgICAgZm9yIChhdXRvJiBl
bGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJO
b2RlJj4oc2VhcmNoUm9vdE5vZGUpKSkgewogICAgICAgICBzZWxlY3RvckRhdGEuY29tcGlsZWRT
ZWxlY3Rvci53YXNVc2VkKCk7CiAKICAgICAgICAgaWYgKHNlbGVjdG9yQ2hlY2tlcigmZWxlbWVu
dCwgJmNoZWNraW5nQ29udGV4dCkpIHsKQEAgLTQzNyw3ICs0MzQsNyBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZUNvbXBpbGVkU2luZ2xlTXVsdGlTZWxlY3Rv
ckRhdGEoY29ucwogewogICAgIFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0IGNoZWNr
aW5nQ29udGV4dChTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OlF1ZXJ5aW5nUnVsZXMpOwogICAgIGNo
ZWNraW5nQ29udGV4dC5zY29wZSA9IHJvb3ROb2RlLmlzRG9jdW1lbnROb2RlKCkgPyBudWxscHRy
IDogJnJvb3ROb2RlOwotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50
cyhjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihyb290Tm9kZSkpKSB7CisgICAgZm9yIChhdXRv
JiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWlu
ZXJOb2RlJj4ocm9vdE5vZGUpKSkgewogICAgICAgICBmb3IgKGF1dG8mIHNlbGVjdG9yIDogbV9z
ZWxlY3RvcnMpIHsKICAgICAgICAgICAgIHNlbGVjdG9yLmNvbXBpbGVkU2VsZWN0b3Iud2FzVXNl
ZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAppbmRleCA0ZDNlNjE5NDdk
M2JmOGE1YWFjNGJjZTY3N2ZjNzFhMzNiODVjNmI4Li5kMmQxM2NiMDkzNTBkMDdiYzYyMDU3ZWM5
M2NmMzQ4NWE0NjBkZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2ln
bm1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKQEAg
LTI2LDEwICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2xvdEFzc2ln
bm1lbnQuaCIKIAotCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRN
TFNsb3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlR5cGVk
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UYWdDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UYWdDb2xsZWN0aW9uLmNwcAppbmRleCBlMDY3ZjJmMWQyOTg0Y2I3ODdmZWU5
YTMwNDkxMjE1NWRjOWMzNzQ0Li4xZjMyNGNjMDc3YTFhMzAwY2FhZWI4NWVjNDI5MzdhZGVkZmFj
MTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGFnQ29sbGVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RhZ0NvbGxlY3Rpb24uY3BwCkBAIC0zNCw3ICszNCw3IEBA
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChUYWdDb2xsZWN0aW9uTlMpOwogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEhUTUxUYWdDb2xsZWN0aW9uKTsKIAogVGFnQ29sbGVjdGlvbk5T
OjpUYWdDb2xsZWN0aW9uTlMoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21TdHJp
bmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKQotICAgIDogQ2Fj
aGVkSFRNTENvbGxlY3Rpb248VGFnQ29sbGVjdGlvbk5TLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxC
eVRhZz46OnRyYXZlcnNhbFR5cGU+KHJvb3ROb2RlLCBCeVRhZykKKyAgICA6IENhY2hlZEhUTUxD
b2xsZWN0aW9uKHJvb3ROb2RlLCBCeVRhZykKICAgICAsIG1fbmFtZXNwYWNlVVJJKG5hbWVzcGFj
ZVVSSSkKICAgICAsIG1fbG9jYWxOYW1lKGxvY2FsTmFtZSkKIHsKQEAgLTQ3LDcgKzQ3LDcgQEAg
VGFnQ29sbGVjdGlvbk5TOjp+VGFnQ29sbGVjdGlvbk5TKCkKIH0KIAogVGFnQ29sbGVjdGlvbjo6
VGFnQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYg
cXVhbGlmaWVkTmFtZSkKLSAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPFRhZ0NvbGxlY3Rpb24s
IENvbGxlY3Rpb25UeXBlVHJhaXRzPEJ5VGFnPjo6dHJhdmVyc2FsVHlwZT4ocm9vdE5vZGUsIEJ5
VGFnKQorICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb24ocm9vdE5vZGUsIEJ5VGFnKQogICAgICwg
bV9xdWFsaWZpZWROYW1lKHF1YWxpZmllZE5hbWUpCiB7CiAgICAgQVNTRVJUKHF1YWxpZmllZE5h
bWUgIT0gc3RhckF0b20oKSk7CkBAIC01OSw3ICs1OSw3IEBAIFRhZ0NvbGxlY3Rpb246On5UYWdD
b2xsZWN0aW9uKCkKIH0KIAogSFRNTFRhZ0NvbGxlY3Rpb246OkhUTUxUYWdDb2xsZWN0aW9uKENv
bnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWROYW1lKQot
ICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTFRhZ0NvbGxlY3Rpb24sIENvbGxlY3Rpb25U
eXBlVHJhaXRzPEJ5SFRNTFRhZz46OnRyYXZlcnNhbFR5cGU+KHJvb3ROb2RlLCBCeUhUTUxUYWcp
CisgICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbihyb290Tm9kZSwgQnlIVE1MVGFnKQogICAgICwg
bV9xdWFsaWZpZWROYW1lKHF1YWxpZmllZE5hbWUpCiAgICAgLCBtX2xvd2VyZWRRdWFsaWZpZWRO
YW1lKHF1YWxpZmllZE5hbWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaAppbmRl
eCA5ZjM1OTM1ZDk2Yzc5ZTc1YjY4ZDMwYzI4Y2JlM2M1YTA0M2YwMzMzLi45YTBiMWI1ZWEyNzFh
MGI1YzQ2MGMwMWU5NTA2NWNkMDc5MWE5MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMjk0ICsyOSwyNDEg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4gY2xhc3MgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOwordGVtcGxhdGU8
dHlwZW5hbWU+IGNsYXNzIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I7Cit0ZW1wbGF0
ZTx0eXBlbmFtZT4gY2xhc3MgRG91YmxlRWxlbWVudERlc2NlbmRhbnRSYW5nZTsKK3RlbXBsYXRl
PHR5cGVuYW1lPiBjbGFzcyBFbGVtZW50RGVzY2VuZGFudFJhbmdlOwordGVtcGxhdGU8dHlwZW5h
bWUgRWxlbWVudFR5cGUsIGJvb2woY29uc3QgRWxlbWVudFR5cGUmKT4gY2xhc3MgRmlsdGVyZWRF
bGVtZW50RGVzY2VuZGFudFJhbmdlOwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
Ci1jbGFzcyBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgOiBwdWJsaWMgRWxlbWVudEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiB7Ci1wdWJsaWM6Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QpOwotICAgIFR5cGVkRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBFbGVtZW50VHlwZSog
Y3VycmVudCk7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisr
KCk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBUeXBlZEVs
ZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50Q29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT4gIHsKLXB1YmxpYzoKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29u
c3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290KTsKLSAgICBUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50Q29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiByb290LCBjb25zdCBF
bGVtZW50VHlwZSogY3VycmVudCk7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3ImIG9wZXJhdG9yKysoKTsKLX07CisvLyBSYW5nZSBmb3IgaXRlcmF0aW5nIHRocm91Z2gg
ZGVzY2VuZGFudCBlbGVtZW50cy4KK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVt
ZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250YWlu
ZXJOb2RlJik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRh
bnRSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoY29uc3QgQ29udGFp
bmVyTm9kZSYpOwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBUeXBl
ZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyIHsKLXB1YmxpYzoKLSAgICBUeXBlZEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUmIHJvb3QpOwotICAg
IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKTsKLSAg
ICBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpOwotICAg
IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW5BdChFbGVt
ZW50VHlwZSYpOwotICAgIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4gZnJvbShFbGVtZW50Jik7CisvLyBSYW5nZSB0aGF0IHNraXBzIGVsZW1lbnRzIHdoZXJlIHRo
ZSBmaWx0ZXIgcmV0dXJucyBmYWxzZS4KK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBi
b29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50
UmFuZ2U8Y29uc3QgRWxlbWVudFR5cGUsIGZpbHRlcj4gZGVzY2VuZGFudHNPZlR5cGUoY29uc3Qg
Q29udGFpbmVyTm9kZSYpOwogCi0gICAgRWxlbWVudFR5cGUqIGZpcnN0KCk7Ci0gICAgRWxlbWVu
dFR5cGUqIGxhc3QoKTsKKy8vIFJhbmdlIGZvciB1c2Ugd2hlbiBib3RoIHNldHMgb2YgZGVzY2Vu
ZGFudHMgYXJlIGtub3duIHRvIGJlIHRoZSBzYW1lIGxlbmd0aC4KKy8vIElmIHRoZXkgYXJlIGRp
ZmZlcmVudCBsZW5ndGhzLCB0aGlzIHdpbGwgc3RvcCB3aGVuIHRoZSBzaG9ydGVyIG9uZSByZWFj
aGVzIHRoZSBlbmQsIGJ1dCBhbHNvIGFuIGFzc2VydGlvbiB3aWxsIGZhaWwuCit0ZW1wbGF0ZTx0
eXBlbmFtZSBFbGVtZW50VHlwZT4gRG91YmxlRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50
VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFpbmVyTm9kZSYgZmlyc3RSb290LCBDb250YWlu
ZXJOb2RlJiBzZWNvbmRSb290KTsKIAotcHJpdmF0ZToKLSAgICBDb250YWluZXJOb2RlJiBtX3Jv
b3Q7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gY2xhc3MgRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IHsKK3B1Ymxp
YzoKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKCkgPSBkZWZhdWx0OworICAgIEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgRWxlbWVudFR5
cGUqIGN1cnJlbnQpOworICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yKyso
KTsKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvci0tKCk7CiB9OwogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1jbGFzcyBUeXBlZEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvckFkYXB0ZXIgewordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+
IGNsYXNzIEVsZW1lbnREZXNjZW5kYW50UmFuZ2UgewogcHVibGljOgotICAgIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcihjb25zdCBDb250YWluZXJOb2RlJiByb290
KTsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4g
YmVnaW4oKSBjb25zdDsKLSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxF
bGVtZW50VHlwZT4gZW5kKCkgY29uc3Q7Ci0gICAgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoY29uc3QgRWxlbWVudFR5cGUmKSBjb25zdDsK
LSAgICBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gZnJv
bShjb25zdCBFbGVtZW50JikgY29uc3Q7CisgICAgRWxlbWVudERlc2NlbmRhbnRSYW5nZShjb25z
dCBDb250YWluZXJOb2RlJiByb290KTsKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPiBiZWdpbigpIGNvbnN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpudWxs
cHRyX3QgZW5kKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luQXQoRWxlbWVudFR5cGUmKSBjb25zdDsKKyAgICBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBmcm9tKEVsZW1lbnQmKSBjb25zdDsK
IAotICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBmaXJzdCgpIGNvbnN0OwotICAgIGNvbnN0IEVsZW1l
bnRUeXBlKiBsYXN0KCkgY29uc3Q7CisgICAgRWxlbWVudFR5cGUqIGZpcnN0KCkgY29uc3Q7Cisg
ICAgRWxlbWVudFR5cGUqIGxhc3QoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBjb25zdCBDb250
YWluZXJOb2RlJiBtX3Jvb3Q7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4g
Y2xhc3MgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlciB7Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gY2xhc3MgRG91YmxlRWxlbWVudERlc2NlbmRhbnRS
YW5nZSB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBTaW5nbGVBZGFwdGVyOwotICAgIHR5cGVkZWYgRG91Ymxl
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBJdGVyYXRvcjsKKyAg
ICB0eXBlZGVmIEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+IFNpbmdsZUFkYXB0
ZXI7CisgICAgdHlwZWRlZiBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPiBJdGVyYXRvcjsKIAotICAgIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ckFkYXB0ZXIoU2luZ2xlQWRhcHRlciYmLCBTaW5nbGVBZGFwdGVyJiYpOwotICAgIEl0ZXJhdG9y
IGJlZ2luKCk7Ci0gICAgSXRlcmF0b3IgZW5kKCk7CisgICAgRG91YmxlRWxlbWVudERlc2NlbmRh
bnRSYW5nZShTaW5nbGVBZGFwdGVyJiYsIFNpbmdsZUFkYXB0ZXImJik7CisgICAgSXRlcmF0b3Ig
YmVnaW4oKSBjb25zdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6bnVsbHB0cl90IGVuZCgp
IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogcHJpdmF0ZToKICAgICBzdGQ6OnBhaXI8U2luZ2xlQWRh
cHRlciwgU2luZ2xlQWRhcHRlcj4gbV9wYWlyOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxl
bWVudFR5cGU+IGNsYXNzIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciB7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gY2xhc3MgRG91YmxlRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBUeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+IFNpbmdsZUl0ZXJhdG9yOworICAgIHR5cGVkZWYgRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gU2luZ2xlSXRlcmF0b3I7CiAgICAgdHlw
ZWRlZiBzdGQ6OnBhaXI8RWxlbWVudFR5cGUmLCBFbGVtZW50VHlwZSY+IFJlZmVyZW5jZVByb3h5
OwogCi0gICAgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKFNpbmdsZUl0ZXJh
dG9yJiYsIFNpbmdsZUl0ZXJhdG9yJiYpOworICAgIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3IoU2luZ2xlSXRlcmF0b3ImJiwgU2luZ2xlSXRlcmF0b3ImJik7CiAgICAgUmVmZXJlbmNl
UHJveHkgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERvdWJs
ZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImKSBjb25zdDsK
LSAgICBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsK
KyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KHN0ZDo6bnVsbHB0cl90KSBjb25zdDsKKyAg
ICBEb3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CiAKIHByaXZh
dGU6CiAgICAgc3RkOjpwYWlyPFNpbmdsZUl0ZXJhdG9yLCBTaW5nbGVJdGVyYXRvcj4gbV9wYWly
OwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShDb250
YWluZXJOb2RlJik7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gZGVzY2VuZGFudHNP
ZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYpOwotCi0vLyBUaGlzIG11c3Qgb25seSBiZSB1c2Vk
IHdoZW4gYm90aCBzZXRzIG9mIGRlc2NlbmRhbnRzIGFyZSBrbm93biB0byBiZSB0aGUgc2FtZSBs
ZW5ndGguCi0vLyBJZiB0aGV5IGFyZSBkaWZmZXJlbnQgbGVuZ3RocywgdGhpcyB3aWxsIHN0b3Ag
d2hlbiB0aGUgc2hvcnRlciBvbmUgcmVhY2hlcyB0aGUgZW5kLCBidXQgYWxzbyBhbiBhc3NlcnRp
b24gd2lsbCBmYWlsLgotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IERvdWJsZVR5cGVk
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRhbnRz
T2ZUeXBlKENvbnRhaW5lck5vZGUmIGZpcnN0Um9vdCwgQ29udGFpbmVyTm9kZSYgc2Vjb25kUm9v
dCk7Ci0KLS8vIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcgordGVtcGxhdGU8dHlwZW5h
bWUgRWxlbWVudFR5cGUsIGJvb2wgZmlsdGVyKGNvbnN0IEVsZW1lbnRUeXBlJik+IGNsYXNzIEZp
bHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciA6IHB1YmxpYyBFbGVtZW50SXRlcmF0b3I8
RWxlbWVudFR5cGU+IHsKK3B1YmxpYzoKKyAgICBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYsIEVsZW1lbnRUeXBlKiA9IG51bGxwdHIpOworICAg
IEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOworfTsKIAot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
cihjb25zdCBDb250YWluZXJOb2RlJiByb290KQotICAgIDogRWxlbWVudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPigmcm9vdCkKLXsKLX0KK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29s
IGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYpPiBjbGFzcyBGaWx0ZXJlZEVsZW1lbnREZXNjZW5k
YW50UmFuZ2UgeworcHVibGljOgorICAgIHVzaW5nIEl0ZXJhdG9yID0gRmlsdGVyZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlLCBmaWx0ZXI+OwogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPjo6VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRh
aW5lck5vZGUmIHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KQotICAgIDogRWxlbWVudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPigmcm9vdCwgY3VycmVudCkKLXsKLX0KKyAgICBGaWx0ZXJlZEVsZW1l
bnREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYpOworICAgIEl0ZXJhdG9yIGJl
Z2luKCkgY29uc3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6Om51bGxwdHJfdCBlbmQoKSB7
IHJldHVybiBudWxscHRyOyB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlu
bGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBUeXBlZEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKLXsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPiY+KEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dCgpKTsK
LX0KKyAgICBFbGVtZW50VHlwZSogZmlyc3QoKSBjb25zdDsKIAotLy8gVHlwZWRFbGVtZW50RGVz
Y2VuZGFudENvbnN0SXRlcmF0b3IKK3ByaXZhdGU6CisgICAgY29uc3QgQ29udGFpbmVyTm9kZSYg
bV9yb290OworfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5
cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6VHlwZWRFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKLSAg
ICA6IEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPigmcm9vdCkKKy8vIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IKIAordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3QsIEVsZW1lbnRUeXBlKiBjdXJyZW50KQorICAg
IDogRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPigmcm9vdCwgY3VycmVudCkKIHsKIH0KIAot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6VHlwZWRFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCwgY29uc3QgRWxlbWVudFR5cGUq
IGN1cnJlbnQpCi0gICAgOiBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4oJnJvb3Qs
IGN1cnJlbnQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+OjpvcGVyYXRvcisrKCkKIHsKKyAgICBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+
Ojp0cmF2ZXJzZU5leHQoKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT4mIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4g
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvci0tKCkKIHsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8VHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4o
RWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHQoKSk7CisgICAg
RWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91cygpOworICAgIHJl
dHVybiAqdGhpczsKIH0KIAotLy8gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRl
cgorLy8gRWxlbWVudERlc2NlbmRhbnRSYW5nZQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVy
Tm9kZSYgcm9vdCkKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50RGVzY2Vu
ZGFudFJhbmdlPEVsZW1lbnRUeXBlPjo6RWxlbWVudERlc2NlbmRhbnRSYW5nZShjb25zdCBDb250
YWluZXJOb2RlJiByb290KQogICAgIDogbV9yb290KHJvb3QpCiB7CiB9CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudFR5cGU+OjpiZWdpbigpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxF
bGVtZW50VHlwZT46OmJlZ2luKCkgY29uc3QKIHsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIFRyYXZlcnNhbDxFbGVtZW50VHlw
ZT46OmZpcnN0V2l0aGluKG1fcm9vdCkpOworICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0
V2l0aGluKG1fcm9vdCkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1p
bmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZW5kKCkKLXsKLSAg
ICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jv
b3QpOwotfQotICAgIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmJlZ2luQXQoRWxlbWVudFR5cGUm
IGRlc2NlbmRhbnQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50
VHlwZT46OmJlZ2luQXQoRWxlbWVudFR5cGUmIGRlc2NlbmRhbnQpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGRlc2NlbmRhbnQuaXNEZXNjZW5kYW50T2YobV9yb290KSk7Ci0gICAgcmV0dXJuIFR5cGVk
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCAmZGVzY2VuZGFu
dCk7CisgICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1f
cm9vdCwgJmRlc2NlbmRhbnQpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBl
ZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZnJvbShFbGVt
ZW50JiBkZXNjZW5kYW50KQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxl
bWVudFR5cGU+Ojpmcm9tKEVsZW1lbnQmIGRlc2NlbmRhbnQpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGRlc2NlbmRhbnQuaXNEZXNjZW5kYW50T2YobV9yb290KSk7CiAgICAgaWYgKGlzPEVsZW1lbnRU
eXBlPihkZXNjZW5kYW50KSkKLSAgICAgICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBkb3duY2FzdDxFbGVtZW50VHlwZT4oJmRlc2Nl
bmRhbnQpKTsKKyAgICAgICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+KG1fcm9vdCwgZG93bmNhc3Q8RWxlbWVudFR5cGU+KCZkZXNjZW5kYW50KSk7CiAgICAg
RWxlbWVudFR5cGUqIG5leHQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0KGRlc2NlbmRh
bnQsICZtX3Jvb3QpOwotICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8
RWxlbWVudFR5cGU+KG1fcm9vdCwgbmV4dCk7CisgICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgbmV4dCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50VHlwZSogVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZpcnN0KCkKK3RlbXBsYXRlPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPiBFbGVtZW50VHlwZSogRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVt
ZW50VHlwZT46OmZpcnN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1lbnRU
eXBlPjo6Zmlyc3RXaXRoaW4obV9yb290KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPgotaW5saW5lIEVsZW1lbnRUeXBlKiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6bGFzdCgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50
VHlwZT4gRWxlbWVudFR5cGUqIEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+Ojps
YXN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bGFzdFdp
dGhpbihtX3Jvb3QpOwogfQogCi0vLyBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
ckFkYXB0ZXIKKy8vIERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UKIAotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OlR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0
ZXJhdG9yQWRhcHRlcihjb25zdCBDb250YWluZXJOb2RlJiByb290KQotICAgIDogbV9yb290KHJv
b3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRG91YmxlRWxlbWVudERlc2NlbmRh
bnRSYW5nZTxFbGVtZW50VHlwZT46OkRvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2UoU2luZ2xl
QWRhcHRlciYmIGZpcnN0LCBTaW5nbGVBZGFwdGVyJiYgc2Vjb25kKQorICAgIDogbV9wYWlyKFdU
Rk1vdmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29uZCkpCiB7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KLWlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVy
PEVsZW1lbnRUeXBlPjo6YmVnaW4oKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5
cGU+IGF1dG8gRG91YmxlRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZT46OmJlZ2lu
KCkgY29uc3QgLT4gSXRlcmF0b3IKIHsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgVHJhdmVyc2FsPEVsZW1lbnRUeXBl
Pjo6Zmlyc3RXaXRoaW4obV9yb290KSk7CisgICAgcmV0dXJuIEl0ZXJhdG9yKG1fcGFpci5maXJz
dC5iZWdpbigpLCBtX3BhaXIuc2Vjb25kLmJlZ2luKCkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0
b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRl
cjxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVudERl
c2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QpOwotfQorLy8gRG91Ymxl
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcgogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5
cGU+IFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlw
ZT46OmJlZ2luQXQoY29uc3QgRWxlbWVudFR5cGUmIGRlc2NlbmRhbnQpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gRG91YmxlRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxF
bGVtZW50VHlwZT46OkRvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoU2luZ2xlSXRlcmF0
b3ImJiBmaXJzdCwgU2luZ2xlSXRlcmF0b3ImJiBzZWNvbmQpCisgICAgOiBtX3BhaXIoV1RGTW92
ZShmaXJzdCksIFdURk1vdmUoc2Vjb25kKSkKIHsKLSAgICBBU1NFUlQoZGVzY2VuZGFudC5pc0Rl
c2NlbmRhbnRPZihtX3Jvb3QpKTsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgJmRlc2NlbmRhbnQpOwogfQogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZyb20oY29uc3QgRWxlbWVudCYgZGVzY2VuZGFu
dCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBhdXRvIERvdWJsZUVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvciooKSBjb25zdCAtPiBS
ZWZlcmVuY2VQcm94eQogewotICAgIEFTU0VSVChkZXNjZW5kYW50LmlzRGVzY2VuZGFudE9mKG1f
cm9vdCkpOwotICAgIGlmIChpczxFbGVtZW50VHlwZT4oZGVzY2VuZGFudCkpCi0gICAgICAgIHJl
dHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9y
b290LCBkb3duY2FzdDxFbGVtZW50VHlwZT4oJmRlc2NlbmRhbnQpKTsKLSAgICBjb25zdCBFbGVt
ZW50VHlwZSogbmV4dCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHQoZGVzY2VuZGFudCwg
Jm1fcm9vdCk7Ci0gICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
PEVsZW1lbnRUeXBlPihtX3Jvb3QsIG5leHQpOworICAgIHJldHVybiB7ICptX3BhaXIuZmlyc3Qs
ICptX3BhaXIuc2Vjb25kIH07CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWlubGluZSBjb25zdCBFbGVtZW50VHlwZSogVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6Zmlyc3QoKSBjb25zdAordGVtcGxhdGU8dHlwZW5h
bWUgRWxlbWVudFR5cGU+IGNvbnN0ZXhwciBib29sIERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvciE9KHN0ZDo6bnVsbHB0cl90KSBjb25zdAogewot
ICAgIHJldHVybiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpbihtX3Jvb3QpOwor
ICAgIEFTU0VSVCghbV9wYWlyLmZpcnN0ID09ICFtX3BhaXIuc2Vjb25kKTsKKyAgICByZXR1cm4g
bV9wYWlyLmZpcnN0OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxp
bmUgY29uc3QgRWxlbWVudFR5cGUqIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
QWRhcHRlcjxFbGVtZW50VHlwZT46Omxhc3QoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgRWxl
bWVudFR5cGU+IERvdWJsZUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBE
b3VibGVFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygp
CiB7Ci0gICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RXaXRoaW4obV9yb290
KTsKKyAgICArK21fcGFpci5maXJzdDsKKyAgICArK21fcGFpci5zZWNvbmQ7CisgICAgcmV0dXJu
ICp0aGlzOwogfQogCi0vLyBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFw
dGVyCisvLyBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IKIAotdGVtcGxhdGU8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6RG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yQWRhcHRlcihTaW5nbGVBZGFwdGVyJiYgZmlyc3QsIFNpbmdsZUFkYXB0ZXImJiBzZWNv
bmQpCi0gICAgOiBtX3BhaXIoV1RGTW92ZShmaXJzdCksIFdURk1vdmUoc2Vjb25kKSkKK3RlbXBs
YXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBib29sIGZpbHRlcihjb25zdCBFbGVtZW50VHlwZSYp
PiBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGUsIGZpbHRlcj46
OkZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiBy
b290LCBFbGVtZW50VHlwZSogZWxlbWVudCkKKyAgICA6IEVsZW1lbnRJdGVyYXRvcjxjb25zdCBF
bGVtZW50VHlwZT4geyAmcm9vdCwgZWxlbWVudCB9CiB7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPiBpbmxpbmUgYXV0byBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6YmVnaW4oKSAtPiBJdGVyYXRvcgordGVtcGxhdGU8
dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmlsdGVyKGNvbnN0IEVsZW1lbnRUeXBlJik+IEZp
bHRlcmVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZSwgZmlsdGVyPiYgRmls
dGVyZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlLCBmaWx0ZXI+OjpvcGVy
YXRvcisrKCkKIHsKLSAgICByZXR1cm4gSXRlcmF0b3IobV9wYWlyLmZpcnN0LmJlZ2luKCksIG1f
cGFpci5zZWNvbmQuYmVnaW4oKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PiBpbmxpbmUgYXV0byBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVy
PEVsZW1lbnRUeXBlPjo6ZW5kKCkgLT4gSXRlcmF0b3IKLXsKLSAgICByZXR1cm4gSXRlcmF0b3Io
bV9wYWlyLmZpcnN0LmVuZCgpLCBtX3BhaXIuc2Vjb25kLmVuZCgpKTsKKyAgICBkbyB7CisgICAg
ICAgIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dCgpOworICAgIH0g
d2hpbGUgKCp0aGlzICYmICFmaWx0ZXIoKip0aGlzKSk7CisgICAgcmV0dXJuICp0aGlzOwogfQog
Ci0vLyBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IKKy8vIEZpbHRlcmVkRWxl
bWVudERlc2NlbmRhbnRSYW5nZQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5s
aW5lIERvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkRv
dWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihTaW5nbGVJdGVyYXRvciYmIGZpcnN0
LCBTaW5nbGVJdGVyYXRvciYmIHNlY29uZCkKLSAgICA6IG1fcGFpcihXVEZNb3ZlKGZpcnN0KSwg
V1RGTW92ZShzZWNvbmQpKQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmls
dGVyKGNvbnN0IEVsZW1lbnRUeXBlJik+IEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRSYW5nZTxF
bGVtZW50VHlwZSwgZmlsdGVyPjo6RmlsdGVyZWRFbGVtZW50RGVzY2VuZGFudFJhbmdlKGNvbnN0
IENvbnRhaW5lck5vZGUmIHJvb3QpCisgICAgOiBtX3Jvb3QgeyByb290IH0KIHsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+IGlubGluZSBhdXRvIERvdWJsZVR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKigpIGNvbnN0IC0+IFJl
ZmVyZW5jZVByb3h5Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZSwgYm9vbCBmaWx0ZXIo
Y29uc3QgRWxlbWVudFR5cGUmKT4gYXV0byBGaWx0ZXJlZEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8
RWxlbWVudFR5cGUsIGZpbHRlcj46OmJlZ2luKCkgY29uc3QgLT4gSXRlcmF0b3IKIHsKLSAgICBy
ZXR1cm4geyAqbV9wYWlyLmZpcnN0LCAqbV9wYWlyLnNlY29uZCB9OworICAgIHJldHVybiB7IG1f
cm9vdCwgZmlyc3QoKSB9OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5s
aW5lIGJvb2wgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBl
Pjo6b3BlcmF0b3I9PShjb25zdCBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Im
IG90aGVyKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJvb2wgZmlsdGVy
KGNvbnN0IEVsZW1lbnRUeXBlJik+IEVsZW1lbnRUeXBlKiBGaWx0ZXJlZEVsZW1lbnREZXNjZW5k
YW50UmFuZ2U8RWxlbWVudFR5cGUsIGZpbHRlcj46OmZpcnN0KCkgY29uc3QKIHsKLSAgICBBU1NF
UlQoKG1fcGFpci5maXJzdCA9PSBvdGhlci5tX3BhaXIuZmlyc3QpID09IChtX3BhaXIuc2Vjb25k
ID09IG90aGVyLm1fcGFpci5zZWNvbmQpKTsKLSAgICByZXR1cm4gbV9wYWlyLmZpcnN0ID09IG90
aGVyLm1fcGFpci5maXJzdCB8fCBtX3BhaXIuc2Vjb25kID09IG90aGVyLm1fcGFpci5zZWNvbmQ7
CisgICAgZm9yIChhdXRvKiBlbGVtZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RX
aXRoaW4obV9yb290KTsgZWxlbWVudDsgZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46
Om5leHQoKmVsZW1lbnQsICZtX3Jvb3QpKSB7CisgICAgICAgIGlmIChmaWx0ZXIoKmVsZW1lbnQp
KQorICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgfQorICAgIHJldHVybiBudWxscHRy
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4gaW5saW5lIGJvb2wgRG91Ymxl
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IhPShj
b25zdCBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAot
ewotICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLX0KKy8vIFN0YW5kYWxvbmUgZnVuY3Rp
b25zCiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgRG91YmxlVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRG91YmxlVHlwZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBFbGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxFbGVtZW50VHlwZT4g
ZGVzY2VuZGFudHNPZlR5cGUoQ29udGFpbmVyTm9kZSYgcm9vdCkKIHsKLSAgICArK21fcGFpci5m
aXJzdDsKLSAgICArK21fcGFpci5zZWNvbmQ7Ci0gICAgcmV0dXJuICp0aGlzOworICAgIHJldHVy
biBFbGVtZW50RGVzY2VuZGFudFJhbmdlPEVsZW1lbnRUeXBlPihyb290KTsKIH0KIAotLy8gU3Rh
bmRhbG9uZSBmdW5jdGlvbnMKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotaW5s
aW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRl
c2NlbmRhbnRzT2ZUeXBlKENvbnRhaW5lck5vZGUmIHJvb3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBF
bGVtZW50VHlwZT4gRWxlbWVudERlc2NlbmRhbnRSYW5nZTxjb25zdCBFbGVtZW50VHlwZT4gZGVz
Y2VuZGFudHNPZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKIHsKLSAgICByZXR1cm4g
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4ocm9vdCk7
CisgICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50UmFuZ2U8Y29uc3QgRWxlbWVudFR5cGU+KHJv
b3QpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgVHlwZWRF
bGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBkZXNjZW5k
YW50c09mVHlwZShjb25zdCBDb250YWluZXJOb2RlJiByb290KQordGVtcGxhdGU8dHlwZW5hbWUg
RWxlbWVudFR5cGU+IERvdWJsZUVsZW1lbnREZXNjZW5kYW50UmFuZ2U8RWxlbWVudFR5cGU+IGRl
c2NlbmRhbnRzT2ZUeXBlKENvbnRhaW5lck5vZGUmIGZpcnN0Um9vdCwgQ29udGFpbmVyTm9kZSYg
c2Vjb25kUm9vdCkKIHsKLSAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihyb290KTsKKyAgICByZXR1cm4geyBkZXNjZW5kYW50
c09mVHlwZTxFbGVtZW50VHlwZT4oZmlyc3RSb290KSwgZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVu
dFR5cGU+KHNlY29uZFJvb3QpIH07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PiBpbmxpbmUgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT4gZGVzY2VuZGFudHNPZlR5cGUoQ29udGFpbmVyTm9kZSYgZmlyc3RSb290LCBDb250
YWluZXJOb2RlJiBzZWNvbmRSb290KQordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGUsIGJv
b2wgZmlsdGVyKGNvbnN0IEVsZW1lbnRUeXBlJik+IEZpbHRlcmVkRWxlbWVudERlc2NlbmRhbnRS
YW5nZTxjb25zdCBFbGVtZW50VHlwZSwgZmlsdGVyPiBkZXNjZW5kYW50c09mVHlwZShjb25zdCBD
b250YWluZXJOb2RlJiByb290KQogewotICAgIHJldHVybiB7IGRlc2NlbmRhbnRzT2ZUeXBlPEVs
ZW1lbnRUeXBlPihmaXJzdFJvb3QpLCBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50VHlwZT4oc2Vj
b25kUm9vdCkgfTsKKyAgICByZXR1cm4geyByb290IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAzOTIwYTBiNzA4MzNiZjliNmY0
M2ZjNzU4YzRiZDEzYzZiZGUxY2Y0Li42YzZkODNhNzI4ZjMwMjAzYjhlZmZjZTBmMDhiYWE0NTVj
MzI2YTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAj
aW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRWRpdGluZy5o
IgogI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNp
bmNsdWRlICJGaWxlLmgiCkBAIC02MSw3ICs2Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TEJSRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRN
TEJvZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1l
bnQuaCIKQEAgLTM0MzEsMjMgKzM0MzIsMTggQEAgdm9pZCBFZGl0b3I6OnRleHREaWRDaGFuZ2VJ
blRleHRBcmVhKEVsZW1lbnQqIGUpCiAKIHZvaWQgRWRpdG9yOjphcHBseUVkaXRpbmdTdHlsZVRv
Qm9keUVsZW1lbnQoKSBjb25zdAogewotICAgIGF1dG8gY29sbGVjdGlvbiA9IGRvY3VtZW50KCku
Z2V0RWxlbWVudHNCeVRhZ05hbWUoSFRNTE5hbWVzOjpib2R5VGFnLT5sb2NhbE5hbWUoKSk7Ci0g
ICAgdW5zaWduZWQgbGVuZ3RoID0gY29sbGVjdGlvbi0+bGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICBhcHBseUVkaXRpbmdTdHlsZVRv
RWxlbWVudChjb2xsZWN0aW9uLT5pdGVtKGkpKTsKLX0KLQotdm9pZCBFZGl0b3I6OmFwcGx5RWRp
dGluZ1N0eWxlVG9FbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KCFlbGVtZW50IHx8IGlzPFN0eWxlZEVsZW1lbnQ+KCplbGVtZW50KSk7Ci0gICAgaWYgKCFpczxT
dHlsZWRFbGVtZW50PihlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gTXV0YXRl
IHVzaW5nIHRoZSBDU1NPTSB3cmFwcGVyIHNvIHdlIGdldCB0aGUgc2FtZSBldmVudCBiZWhhdmlv
ciBhcyBhIHNjcmlwdC4KLSAgICBhdXRvJiBzdHlsZSA9IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+
KCplbGVtZW50KS5jc3NvbVN0eWxlKCk7Ci0gICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChD
U1NQcm9wZXJ0eVdvcmRXcmFwLCAiYnJlYWstd29yZCIsIGZhbHNlKTsKLSAgICBzdHlsZS5zZXRQ
cm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsICJzcGFjZSIsIGZhbHNl
KTsKLSAgICBzdHlsZS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5TGluZUJyZWFrLCAi
YWZ0ZXItd2hpdGUtc3BhY2UiLCBmYWxzZSk7CisgICAgLy8gRklYTUU6IE5vdCBjbGVhciBpdCdz
IHZhbHVhYmxlIHRvIGRvIHRoaXMgdG8gYWxsIGJvZHkgZWxlbWVudHMgcmF0aGVyIHRoYW4ganVz
dCBkb2luZyBpdCBvbiB0aGUgc2luZ2xlIG9uZSByZXR1cm5lZCBieSBEb2N1bWVudDo6Ym9keS4K
KyAgICBWZWN0b3I8UmVmPEhUTUxCb2R5RWxlbWVudD4+IGJvZGllczsKKyAgICBmb3IgKGF1dG8m
IGJvZHkgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MQm9keUVsZW1lbnQ+KGRvY3VtZW50KCkpKQor
ICAgICAgICBib2RpZXMuYXBwZW5kKGJvZHkpOworCisgICAgZm9yIChhdXRvJiBib2R5IDogYm9k
aWVzKSB7CisgICAgICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00gd3JhcHBlciBzbyB3ZSBn
ZXQgdGhlIHNhbWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCisgICAgICAgIGF1dG8mIHN0
eWxlID0gYm9keS0+Y3Nzb21TdHlsZSgpOworICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eUludGVy
bmFsKENTU1Byb3BlcnR5V29yZFdyYXAsICJicmVhay13b3JkIiwgZmFsc2UpOworICAgICAgICBz
dHlsZS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsICJzcGFj
ZSIsIGZhbHNlKTsKKyAgICAgICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0
eUxpbmVCcmVhaywgImFmdGVyLXdoaXRlLXNwYWNlIiwgZmFsc2UpOworICAgIH0KIH0KIAogYm9v
bCBFZGl0b3I6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9w
dGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAxOWM0MjA4ZDQ1ZDllYzlmNWMyOWM5
MjgxNzQ4ODBlNGYxYjk4NDEwLi5mODY3N2IzMThlOGU4MDZjMDIyYTNlNzM4NmVlZjI2MDgwNWI0
NTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTQzNSw3ICs0MzUsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUoRWRpdGluZ1N0eWxlJiAsIEVkaXRB
Y3Rpb24gPSBFZGl0QWN0aW9uOjpVbnNwZWNpZmllZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUoU3R5bGVQcm9wZXJ0aWVzJiAsIEVkaXRBY3Rpb24g
PSBFZGl0QWN0aW9uOjpVbnNwZWNpZmllZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBs
eUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKSBjb25zdDsKLSAgICB2b2lkIGFwcGx5RWRpdGlu
Z1N0eWxlVG9FbGVtZW50KEVsZW1lbnQqKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIElu
dFJlY3QgZmlyc3RSZWN0Rm9yUmFuZ2UoUmFuZ2UqKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCBjZmRjMzlmMDRlYWM0MDY4NGQxZDI0OGI3
Yjg3MzU2NGUwMjgyOTY0Li5kOGNjYWIwNzg0MTM3MjVlZjkwZGQwMWQwYjdmZTQ5NzU0ZmE3YWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMjM1Mywy
MCArMjM1MywxNiBAQCBzdGF0aWMgSFRNTEZvcm1FbGVtZW50KiBzY2FuRm9yRm9ybShFbGVtZW50
KiBzdGFydCkKIHsKICAgICBpZiAoIXN0YXJ0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIGF1dG8gZGVzY2VuZGFudHMgPSBkZXNjZW5kYW50c09mVHlwZTxIVE1MRWxlbWVudD4oc3Rh
cnQtPmRvY3VtZW50KCkpOwotICAgIGZvciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmZyb20oKnN0
YXJ0KSwgZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICBIVE1MRWxlbWVudCYgZWxlbWVudCA9ICppdDsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBk
ZXNjZW5kYW50c09mVHlwZTxIVE1MRWxlbWVudD4oc3RhcnQtPmRvY3VtZW50KCkpKSB7CiAgICAg
ICAgIGlmIChpczxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJu
ICZkb3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQpOwogICAgICAgICBpZiAoaXM8SFRN
TEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgICAgICByZXR1cm4gZG93bmNh
c3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkuZm9ybSgpOwogICAgICAgICBpZiAo
aXM8SFRNTEZyYW1lRWxlbWVudEJhc2U+KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBEb2N1bWVu
dCogY29udGVudERvY3VtZW50ID0gZG93bmNhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2U+KGVsZW1l
bnQpLmNvbnRlbnREb2N1bWVudCgpOwotICAgICAgICAgICAgaWYgKCFjb250ZW50RG9jdW1lbnQp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoSFRNTEZvcm1FbGVt
ZW50KiBmcmFtZVJlc3VsdCA9IHNjYW5Gb3JGb3JtKGNvbnRlbnREb2N1bWVudC0+ZG9jdW1lbnRF
bGVtZW50KCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZVJlc3VsdDsKKyAgICAgICAg
ICAgIGlmIChhdXRvKiBjb250ZW50RG9jdW1lbnQgPSBkb3duY2FzdDxIVE1MRnJhbWVFbGVtZW50
QmFzZT4oZWxlbWVudCkuY29udGVudERvY3VtZW50KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
YXV0byogZnJhbWVSZXN1bHQgPSBzY2FuRm9yRm9ybShjb250ZW50RG9jdW1lbnQtPmRvY3VtZW50
RWxlbWVudCgpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lUmVzdWx0OworICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNw
cAppbmRleCBjZGU5YTc4YzhmZTdkYTEzMWUxMWY0NGY0YmIwOTFjNWZlNmYwMmYzLi4xZTc2MGRl
NzIzMTYwOWQwNTkyOTgyOGY3ZTEzZjNkMjJiYTI1MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcApAQCAtNzEsNyAr
NzEsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgVHlwZSB0eXBlID0gVHlwZTo6SW5jbHVkZTsKICAg
ICAgICAgUmVmUHRyPEVsZW1lbnQ+IG1hdGNoaW5nRWxlbWVudDsKLSAgICAgICAgZm9yIChhdXRv
JiBlbGVtZW50IDogZWxlbWVudExpbmVhZ2Uoc3RhcnRpbmdFbGVtZW50LmdldCgpKSkgeworICAg
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEVsZW1lbnQ+KCpzdGFydGlu
Z0VsZW1lbnQpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byB0eXBlT3JOdWxsb3B0ID0gdHlwZUZv
ckVsZW1lbnQoZWxlbWVudCkpIHsKICAgICAgICAgICAgICAgICB0eXBlID0gKnR5cGVPck51bGxv
cHQ7CiAgICAgICAgICAgICAgICAgbWF0Y2hpbmdFbGVtZW50ID0gJmVsZW1lbnQ7CkBAIC03OSw3
ICs3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGZv
ciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnRMaW5lYWdlKHN0YXJ0aW5nRWxlbWVudC5nZXQoKSkp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbGluZWFnZU9mVHlwZTxFbGVtZW50Pigq
c3RhcnRpbmdFbGVtZW50KSkgewogICAgICAgICAgICAgbV9jYWNoZS5zZXQoZWxlbWVudCwgdHlw
ZSk7CiAgICAgICAgICAgICBpZiAoJmVsZW1lbnQgPT0gbWF0Y2hpbmdFbGVtZW50KQogICAgICAg
ICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCAzOTQ5NmI2OTg4NjZjNGFlYzNmNzdkNGU2
NjBiZTZkNTA3OTlkOWRlLi5mN2RhMGJkYjU4YThkZTBiZjM2NGViZjM0OTQ0M2IyZGVjODI0OGI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFk
ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRS
ZWFkZXJDb2NvYS5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiRG9jdW1lbnRMb2FkZXIu
aCIKICNpbXBvcnQgIkVkaXRvci5oIgogI2ltcG9ydCAiRWRpdG9yQ2xpZW50LmgiCisjaW1wb3J0
ICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbXBvcnQgIkZpbGUuaCIKICNpbXBvcnQgIkZyYW1lLmgi
CiAjaW1wb3J0ICJGcmFtZUxvYWRlci5oIgpAQCAtNTgsNyArNTksNiBAQAogI2ltcG9ydCAiU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhLmgiCiAjaW1wb3J0ICJTZXR0aW5ncy5oIgogI2ltcG9ydCAi
U29ja2V0UHJvdmlkZXIuaCIKLSNpbXBvcnQgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ci5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJBcmNoaXZlUmVzb3Vy
Y2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5nLmgiCiAjaW1wb3J0ICJXZWJBcmNoaXZlUmVzb3VyY2VX
ZWJSZXNvdXJjZUhhbmRsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAxNTk1
MDM1MWQ5MDQ3NGM3Yzc4OGMzM2U2N2U3ZGE4NTg4N2Y2ZDRjLi43ZTIyYzUyMmFkYzhlMjI3YjYz
OWJjZWU2ZGI0NmQwYTM5MjkzZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC03
NSw3ICs3NSw2IEBACiAjaW5jbHVkZSAiU29ja2V0UHJvdmlkZXIuaCIKICNpbmNsdWRlICJTdHls
ZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJUeXBl
ZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oCmluZGV4IDc5
ZjQ3N2Q3NGYyMjRlNzFiNDZhYmE0NzdmNmNkYjBkYTg5ZGY0ODUuLjBmMDZjMGIzYTFjOWY2OWQ3
ZDE0MWIwYjIzNjRmOTZhMTllY2ZkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Q2FjaGVkSFRNTENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhU
TUxDb2xsZWN0aW9uLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJDb2xsZWN0aW9uVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIK
ICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KQEAg
LTUyLDE0ICs1MSwxNCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gRm9yIENvbGxlY3Rpb25J
bmRleENhY2hlOyBkbyBub3QgdXNlIGVsc2V3aGVyZS4KLSAgICB1c2luZyBDb2xsZWN0aW9uVHJh
dmVyc2FsSXRlcmF0b3IgPSB0eXBlbmFtZSBDb2xsZWN0aW9uVHJhdmVyc2FsPHRyYXZlcnNhbFR5
cGU+OjpJdGVyYXRvcjsKLSAgICBDb2xsZWN0aW9uVHJhdmVyc2FsSXRlcmF0b3IgY29sbGVjdGlv
bkJlZ2luKCkgY29uc3QgeyByZXR1cm4gQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBl
Pjo6YmVnaW4oY29sbGVjdGlvbigpLCByb290Tm9kZSgpKTsgfQotICAgIENvbGxlY3Rpb25UcmF2
ZXJzYWxJdGVyYXRvciBjb2xsZWN0aW9uTGFzdCgpIGNvbnN0IHsgcmV0dXJuIENvbGxlY3Rpb25U
cmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT46Omxhc3QoY29sbGVjdGlvbigpLCByb290Tm9kZSgpKTsg
fQotICAgIENvbGxlY3Rpb25UcmF2ZXJzYWxJdGVyYXRvciBjb2xsZWN0aW9uRW5kKCkgY29uc3Qg
eyByZXR1cm4gQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6ZW5kKHJvb3ROb2Rl
KCkpOyB9Ci0gICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKENvbGxlY3Rpb25UcmF2
ZXJzYWxJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJz
ZWRDb3VudCkgY29uc3QgeyBDb2xsZWN0aW9uVHJhdmVyc2FsPHRyYXZlcnNhbFR5cGU+Ojp0cmF2
ZXJzZUZvcndhcmQoY29sbGVjdGlvbigpLCBjdXJyZW50LCBjb3VudCwgdHJhdmVyc2VkQ291bnQp
OyB9Ci0gICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChDb2xsZWN0aW9uVHJhdmVy
c2FsSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KSBjb25zdCB7IENvbGxlY3Rpb25U
cmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT46OnRyYXZlcnNlQmFja3dhcmQoY29sbGVjdGlvbigpLCBj
dXJyZW50LCBjb3VudCk7IH0KKyAgICB1c2luZyBUcmF2ZXJzYWwgPSBDb2xsZWN0aW9uVHJhdmVy
c2FsPHRyYXZlcnNhbFR5cGU+OworICAgIHVzaW5nIEl0ZXJhdG9yID0gdHlwZW5hbWUgVHJhdmVy
c2FsOjpJdGVyYXRvcjsKKyAgICBhdXRvIGNvbGxlY3Rpb25CZWdpbigpIGNvbnN0IHsgcmV0dXJu
IFRyYXZlcnNhbDo6YmVnaW4oY29sbGVjdGlvbigpLCByb290Tm9kZSgpKTsgfQorICAgIGF1dG8g
Y29sbGVjdGlvbkxhc3QoKSBjb25zdCB7IHJldHVybiBUcmF2ZXJzYWw6Omxhc3QoY29sbGVjdGlv
bigpLCByb290Tm9kZSgpKTsgfQorICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChJ
dGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3Vu
dCkgY29uc3QgeyBUcmF2ZXJzYWw6OnRyYXZlcnNlRm9yd2FyZChjb2xsZWN0aW9uKCksIGN1cnJl
bnQsIGNvdW50LCB0cmF2ZXJzZWRDb3VudCk7IH0KKyAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJz
ZUJhY2t3YXJkKEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkgY29uc3QgeyBUcmF2
ZXJzYWw6OnRyYXZlcnNlQmFja3dhcmQoY29sbGVjdGlvbigpLCBjdXJyZW50LCBjb3VudCk7IH0K
ICAgICBib29sIGNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJhY2t3YXJkKCkgY29uc3QgeyByZXR1cm4g
dHJhdmVyc2FsVHlwZSAhPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9u
bHk7IH0KLSAgICB2b2lkIHdpbGxWYWxpZGF0ZUluZGV4Q2FjaGUoKSBjb25zdCB7IGRvY3VtZW50
KCkucmVnaXN0ZXJDb2xsZWN0aW9uKGNvbnN0X2Nhc3Q8Q2FjaGVkSFRNTENvbGxlY3Rpb248SFRN
TENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT4mPigqdGhpcykpOyB9CisgICAgdm9pZCB3
aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3QgeyBkb2N1bWVudCgpLnJlZ2lzdGVyQ29sbGVj
dGlvbihjb25zdF9jYXN0PENhY2hlZEhUTUxDb2xsZWN0aW9uJj4oKnRoaXMpKTsgfQogCiAgICAg
dm9pZCBpbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudChEb2N1bWVudCYpIG92ZXJyaWRlOwogCkBA
IC02OSwxOSArNjgsMTkgQEAgcHJpdmF0ZToKICAgICBIVE1MQ29sbGVjdGlvbkNsYXNzJiBjb2xs
ZWN0aW9uKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTENvbGxlY3Rpb25DbGFzcyY+KCp0aGlz
KTsgfQogICAgIGNvbnN0IEhUTUxDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24oKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBIVE1MQ29sbGVjdGlvbkNsYXNzJj4oKnRoaXMpOyB9
CiAKLSAgICBtdXRhYmxlIENvbGxlY3Rpb25JbmRleENhY2hlPEhUTUxDb2xsZWN0aW9uQ2xhc3Ms
IENvbGxlY3Rpb25UcmF2ZXJzYWxJdGVyYXRvcj4gbV9pbmRleENhY2hlOworICAgIG11dGFibGUg
Q29sbGVjdGlvbkluZGV4Q2FjaGU8SFRNTENvbGxlY3Rpb25DbGFzcywgSXRlcmF0b3I+IG1faW5k
ZXhDYWNoZTsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBD
b2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgogQ2FjaGVkSFRNTENvbGxlY3Rp
b248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT46OkNhY2hlZEhUTUxDb2xsZWN0
aW9uKENvbnRhaW5lck5vZGUmIGJhc2UsIENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlKQog
ICAgIDogSFRNTENvbGxlY3Rpb24oYmFzZSwgY29sbGVjdGlvblR5cGUpCi0gICAgLCBtX2luZGV4
Q2FjaGUoY29sbGVjdGlvbigpKQoteyB9Cit7Cit9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBIVE1M
Q29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgog
Q2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT46
On5DYWNoZWRIVE1MQ29sbGVjdGlvbigpCiB7Ci0gICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxp
ZENhY2hlKGNvbGxlY3Rpb24oKSkpCisgICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hl
KCkpCiAgICAgICAgIGRvY3VtZW50KCkudW5yZWdpc3RlckNvbGxlY3Rpb24oKnRoaXMpOwogfQog
CkBAIC04OSw5ICs4OCw5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNz
LCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgogdm9pZCBDYWNoZWRIVE1M
Q29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPjo6aW52YWxpZGF0
ZUNhY2hlRm9yRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIEhUTUxDb2xsZWN0
aW9uOjppbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudChkb2N1bWVudCk7Ci0gICAgaWYgKG1faW5k
ZXhDYWNoZS5oYXNWYWxpZENhY2hlKGNvbGxlY3Rpb24oKSkpIHsKKyAgICBpZiAobV9pbmRleENh
Y2hlLmhhc1ZhbGlkQ2FjaGUoKSkgewogICAgICAgICBkb2N1bWVudC51bnJlZ2lzdGVyQ29sbGVj
dGlvbigqdGhpcyk7Ci0gICAgICAgIG1faW5kZXhDYWNoZS5pbnZhbGlkYXRlKGNvbGxlY3Rpb24o
KSk7CisgICAgICAgIG1faW5kZXhDYWNoZS5pbnZhbGlkYXRlKCk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UcmF2ZXJzYWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oCmluZGV4IDY2ODI5MzM4ZDBiMWQx
YjBjYWI1MTE3N2YwMzg3MjBjMTkyZjcxOTYuLjJhODhmNTdlMWJkNjRiMTY4MTU4MzJiZjBiMDZl
OGM0Y2FkMDZhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRy
YXZlcnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDggKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29sbGVjdGlvblR5cGUu
aCIKLSNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgotI2luY2x1ZGUgIkVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNiw3NiArMzUsNjQgQEAgc3RydWN0IENvbGxlY3Rpb25U
cmF2ZXJzYWwgeyB9OwogCiB0ZW1wbGF0ZSA8Pgogc3RydWN0IENvbGxlY3Rpb25UcmF2ZXJzYWw8
Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPiB7Ci0gICAgdXNpbmcgSXRlcmF0
b3IgPSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOwotCi0gICAgc3RhdGljIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IgZW5kKENvbnRhaW5lck5vZGUmKSB7IHJldHVybiBFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yKCk7IH0KKyAgICB1c2luZyBJdGVyYXRvciA9IEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3I8RWxlbWVudD47CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNs
YXNzPgotICAgIHN0YXRpYyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGJlZ2luKGNvbnN0IENv
bGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKKyAgICBzdGF0aWMgSXRl
cmF0b3IgYmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5v
ZGUpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0
aWMgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYs
IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKKyAgICBzdGF0aWMgSXRlcmF0b3IgbGFzdChjb25z
dCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CiAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNl
Rm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KTsKKyAg
ICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgSXRl
cmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQp
OwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMg
dm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KTsKKyAgICBzdGF0aWMgdm9p
ZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEl0ZXJhdG9yJiBjdXJy
ZW50LCB1bnNpZ25lZCBjb3VudCk7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlv
bkNsYXNzPgotaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgQ29sbGVjdGlvblRyYXZl
cnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+OjpiZWdpbihjb25zdCBD
b2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKQoraW5s
aW5lIGF1dG8gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVz
Y2VuZGFudHM+OjpiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRh
aW5lck5vZGUmIHJvb3ROb2RlKSAtPiBJdGVyYXRvcgogewotICAgIGF1dG8gZGVzY2VuZGFudHMg
PSBlbGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUpOwotICAgIGF1dG8gZW5kID0gZGVzY2VuZGFu
dHMuZW5kKCk7Ci0gICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmIChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCppdCkp
IHsKLSAgICAgICAgICAgIC8vIERyb3AgaXRlcmF0b3IgYXNzZXJ0aW9ucyBiZWNhdXNlIEhUTUxD
b2xsZWN0aW9ucyAvIE5vZGVMaXN0IHVzZSBhIGZpbmUtZ3JhaW5lZCBpbnZhbGlkYXRpb24gc2No
ZW1lLgotICAgICAgICAgICAgaXQuZHJvcEFzc2VydGlvbnMoKTsKLSAgICAgICAgICAgIHJldHVy
biBpdDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZW5kOworICAgIGF1dG8gaXQgPSBk
ZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihyb290Tm9kZSkuYmVnaW4oKTsKKyAgICB3aGlsZSAo
aXQgJiYgIWNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkKKyAgICAgICAgKytpdDsKKyAg
ICAvLyBEcm9wIGl0ZXJhdG9yIGFzc2VydGlvbnMgYmVjYXVzZSBIVE1MQ29sbGVjdGlvbnMgLyBO
b2RlTGlzdCB1c2UgYSBmaW5lLWdyYWluZWQgaW52YWxpZGF0aW9uIHNjaGVtZS4KKyAgICBpdC5k
cm9wQXNzZXJ0aW9ucygpOworICAgIHJldHVybiBpdDsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIENvbGxl
Y3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6bGFz
dChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlKQoraW5saW5lIGF1dG8gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2Fs
VHlwZTo6RGVzY2VuZGFudHM+OjpsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlv
biwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpIC0+IEl0ZXJhdG9yCiB7Ci0gICAgYXV0byBkZXNj
ZW5kYW50cyA9IGVsZW1lbnREZXNjZW5kYW50cyhyb290Tm9kZSk7Ci0gICAgRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvciBpbnZhbGlkOwotICAgIGZvciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmxh
c3QoKTsgaXQgIT0gaW52YWxpZDsgLS1pdCkgewotICAgICAgICBpZiAoY29sbGVjdGlvbi5lbGVt
ZW50TWF0Y2hlcygqaXQpKSB7Ci0gICAgICAgICAgICAvLyBEcm9wIGl0ZXJhdG9yIGFzc2VydGlv
bnMgYmVjYXVzZSBIVE1MQ29sbGVjdGlvbnMgLyBOb2RlTGlzdCB1c2UgYSBmaW5lLWdyYWluZWQg
aW52YWxpZGF0aW9uIHNjaGVtZS4KLSAgICAgICAgICAgIGl0LmRyb3BBc3NlcnRpb25zKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gaXQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGludmFs
aWQ7CisgICAgSXRlcmF0b3IgaXQgeyByb290Tm9kZSwgRWxlbWVudFRyYXZlcnNhbDo6bGFzdFdp
dGhpbihyb290Tm9kZSkgfTsKKyAgICB3aGlsZSAoaXQgJiYgIWNvbGxlY3Rpb24uZWxlbWVudE1h
dGNoZXMoKml0KSkKKyAgICAgICAgLS1pdDsKKyAgICAvLyBEcm9wIGl0ZXJhdG9yIGFzc2VydGlv
bnMgYmVjYXVzZSBIVE1MQ29sbGVjdGlvbnMgLyBOb2RlTGlzdCB1c2UgYSBmaW5lLWdyYWluZWQg
aW52YWxpZGF0aW9uIHNjaGVtZS4KKyAgICBpdC5kcm9wQXNzZXJ0aW9ucygpOworICAgIHJldHVy
biBpdDsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSB2
b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRh
bnRzPjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2ln
bmVkJiB0cmF2ZXJzZWRDb3VudCkKK2lubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29s
bGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVk
IGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpCiB7CiAgICAgQVNTRVJUKGNvbGxlY3Rp
b24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yIGludmFsaWQ7CiAgICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9IDA7IHRyYXZlcnNlZENvdW50
IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAg
KytjdXJyZW50OwotICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gaW52YWxpZCkKKyAgICAgICAg
ICAgIGlmICghY3VycmVudCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0gd2hp
bGUgKCFjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CiAgICAgfQogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5lIHZvaWQgQ29sbGVjdGlv
blRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJz
ZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpCitpbmxpbmUgdm9pZCBDb2xs
ZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRy
YXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBJdGVyYXRv
ciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpCiB7CiAgICAgQVNTRVJUKGNvbGxlY3Rpb24uZWxl
bWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGlu
dmFsaWQ7CiAgICAgZm9yICg7IGNvdW50OyAtLWNvdW50KSB7CiAgICAgICAgIGRvIHsKICAgICAg
ICAgICAgIC0tY3VycmVudDsKLSAgICAgICAgICAgIGlmIChjdXJyZW50ID09IGludmFsaWQpCisg
ICAgICAgICAgICBpZiAoIWN1cnJlbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9IHdoaWxlICghY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwogICAgIH0K
QEAgLTExNSw3NSArMTAyLDYyIEBAIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgQ29sbGVjdGlvblRyYXZl
cnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5PiB7CiAgICAgdXNpbmcg
SXRlcmF0b3IgPSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PjsKIAotICAgIHN0YXRpYyBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBlbmQoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUp
IHsgcmV0dXJuIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+KHJvb3ROb2RlKTsgfQotCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgRWxlbWVu
dENoaWxkSXRlcmF0b3I8RWxlbWVudD4gYmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29u
dGFpbmVyTm9kZSYgcm9vdE5vZGUpOworICAgIHN0YXRpYyBJdGVyYXRvciBiZWdpbihjb25zdCBD
b2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotICAgIHN0YXRpYyBFbGVtZW50Q2hpbGRJdGVy
YXRvcjxFbGVtZW50PiBsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlKTsKKyAgICBzdGF0aWMgSXRlcmF0b3IgbGFzdChjb25zdCBDb2xsZWN0aW9uQ2xh
c3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q29sbGVjdGlvbkNsYXNzPgotICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlRm9yd2FyZChjb25zdCBD
b2xsZWN0aW9uQ2xhc3MmLCBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiYgY3VycmVudCwg
dW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCk7CisgICAgc3RhdGljIHZv
aWQgdHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEl0ZXJhdG9yJiBjdXJy
ZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KTsKIAogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIHZvaWQgdHJhdmVy
c2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVtZW50Q2hpbGRJdGVyYXRvcjxF
bGVtZW50PiYgY3VycmVudCwgdW5zaWduZWQgY291bnQpOworICAgIHN0YXRpYyB2b2lkIHRyYXZl
cnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgSXRlcmF0b3ImIGN1cnJlbnQsIHVu
c2lnbmVkIGNvdW50KTsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+
Ci1pbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gQ29sbGVjdGlvblRyYXZlcnNh
bDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6YmVnaW4oY29uc3QgQ29s
bGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK2lubGlu
ZSBhdXRvIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxk
cmVuT25seT46OmJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgQ29udGFp
bmVyTm9kZSYgcm9vdE5vZGUpIC0+IEl0ZXJhdG9yCiB7Ci0gICAgYXV0byBjaGlsZHJlbiA9IGNo
aWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KHJvb3ROb2RlKTsKLSAgICBhdXRvIGVuZCA9IGNoaWxkcmVu
LmVuZCgpOwotICAgIGZvciAoYXV0byBpdCA9IGNoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgewotICAgICAgICBpZiAoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqaXQpKSB7Ci0g
ICAgICAgICAgICAvLyBEcm9wIGl0ZXJhdG9yIGFzc2VydGlvbnMgYmVjYXVzZSBIVE1MQ29sbGVj
dGlvbnMgLyBOb2RlTGlzdCB1c2UgYSBmaW5lLWdyYWluZWQgaW52YWxpZGF0aW9uIHNjaGVtZS4K
LSAgICAgICAgICAgIGl0LmRyb3BBc3NlcnRpb25zKCk7Ci0gICAgICAgICAgICByZXR1cm4gaXQ7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGVuZDsKKyAgICBhdXRvIGl0ID0gY2hpbGRy
ZW5PZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpLmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICYmICFj
b2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCppdCkpCisgICAgICAgICsraXQ7CisgICAgLy8gRHJv
cCBpdGVyYXRvciBhc3NlcnRpb25zIGJlY2F1c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3Qg
dXNlIGEgZmluZS1ncmFpbmVkIGludmFsaWRhdGlvbiBzY2hlbWUuCisgICAgaXQuZHJvcEFzc2Vy
dGlvbnMoKTsKKyAgICByZXR1cm4gaXQ7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0
aW9uQ2xhc3M+Ci1pbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gQ29sbGVjdGlv
blRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6bGFzdChj
b25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2Rl
KQoraW5saW5lIGF1dG8gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZTo6Q2hpbGRyZW5Pbmx5Pjo6bGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24s
IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSAtPiBJdGVyYXRvcgogewotICAgIGF1dG8gY2hpbGRy
ZW4gPSBjaGlsZHJlbk9mVHlwZTxFbGVtZW50Pihyb290Tm9kZSk7Ci0gICAgRWxlbWVudENoaWxk
SXRlcmF0b3I8RWxlbWVudD4gaW52YWxpZChjb2xsZWN0aW9uLnJvb3ROb2RlKCkpOwotICAgIEVs
ZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGxhc3Qocm9vdE5vZGUsIGNoaWxkcmVuLmxhc3Qo
KSk7Ci0gICAgZm9yIChhdXRvIGl0ID0gbGFzdDsgaXQgIT0gaW52YWxpZDsgLS1pdCkgewotICAg
ICAgICBpZiAoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqaXQpKSB7Ci0gICAgICAgICAgICAv
LyBEcm9wIGl0ZXJhdG9yIGFzc2VydGlvbnMgYmVjYXVzZSBIVE1MQ29sbGVjdGlvbnMgLyBOb2Rl
TGlzdCB1c2UgYSBmaW5lLWdyYWluZWQgaW52YWxpZGF0aW9uIHNjaGVtZS4KLSAgICAgICAgICAg
IGl0LmRyb3BBc3NlcnRpb25zKCk7Ci0gICAgICAgICAgICByZXR1cm4gaXQ7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgcmV0dXJuIGludmFsaWQ7CisgICAgYXV0byBpdCA9IGNoaWxkcmVuT2ZUeXBl
PEVsZW1lbnQ+KHJvb3ROb2RlKS5iZWdpbigpOworICAgIHdoaWxlIChpdCAmJiAhY29sbGVjdGlv
bi5lbGVtZW50TWF0Y2hlcygqaXQpKQorICAgICAgICAtLWl0OworICAgIC8vIERyb3AgaXRlcmF0
b3IgYXNzZXJ0aW9ucyBiZWNhdXNlIEhUTUxDb2xsZWN0aW9ucyAvIE5vZGVMaXN0IHVzZSBhIGZp
bmUtZ3JhaW5lZCBpbnZhbGlkYXRpb24gc2NoZW1lLgorICAgIGl0LmRyb3BBc3NlcnRpb25zKCk7
CisgICAgcmV0dXJuIGl0OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgotaW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZTo6Q2hpbGRyZW5Pbmx5Pjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYg
Y29sbGVjdGlvbiwgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQsIHVuc2ln
bmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpCitpbmxpbmUgdm9pZCBDb2xsZWN0
aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2
ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBJdGVyYXRvciYg
Y3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkKIHsKICAg
ICBBU1NFUlQoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwotICAgIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsK
ICAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0
cmF2ZXJzZWRDb3VudCkgewogICAgICAgICBkbyB7CiAgICAgICAgICAgICArK2N1cnJlbnQ7Ci0g
ICAgICAgICAgICBpZiAoY3VycmVudCA9PSBpbnZhbGlkKQorICAgICAgICAgICAgaWYgKCFjdXJy
ZW50KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSB3aGlsZSAoIWNvbGxlY3Rp
b24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKICAgICB9CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci1pbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNv
bnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxl
bWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KQoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRy
YXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6dHJhdmVyc2VC
YWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEl0ZXJhdG9yJiBjdXJy
ZW50LCB1bnNpZ25lZCBjb3VudCkKIHsKICAgICBBU1NFUlQoY29sbGVjdGlvbi5lbGVtZW50TWF0
Y2hlcygqY3VycmVudCkpOwotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGludmFs
aWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKICAgICBmb3IgKDsgY291bnQ7IC0tY291bnQpIHsK
ICAgICAgICAgZG8gewogICAgICAgICAgICAgLS1jdXJyZW50OwotICAgICAgICAgICAgaWYgKGN1
cnJlbnQgPT0gaW52YWxpZCkKKyAgICAgICAgICAgIGlmICghY3VycmVudCkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0gd2hpbGUgKCFjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVz
KCpjdXJyZW50KSk7CiAgICAgfQpAQCAtMTkzLDcgKzE2Nyw3IEBAIHRlbXBsYXRlIDw+CiBzdHJ1
Y3QgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9y
d2FyZE9ubHk+IHsKICAgICB1c2luZyBJdGVyYXRvciA9IEVsZW1lbnQqOwogCi0gICAgc3RhdGlj
IEVsZW1lbnQqIGVuZChDb250YWluZXJOb2RlJikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHN0
YXRpYyBjb25zdGV4cHIgRWxlbWVudCogZW5kKENvbnRhaW5lck5vZGUmKSB7IHJldHVybiBudWxs
cHRyOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgogICAgIHN0
YXRpYyBFbGVtZW50KiBiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2Rl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCmluZGV4IGI5NDlhNjkxZjYw
ZmRjOTljMmQ3ZjY3ZmRmOGI3NzUzODU4ZTM5MjguLjdmZjMyZTU5OTdlNzA2ZDU3OWI5OWIwYzNm
MjdmZDVlZmJiZDIyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQpAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNs
dWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUgIkVsZW1lbnRDaGls
ZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJIVE1MRGF0YUxpc3RF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKQEAgLTI4NywxMyArMjg2LDkg
QEAgVmVjdG9yPENvbG9yPiBDb2xvcklucHV0VHlwZTo6c3VnZ2VzdGVkQ29sb3JzKCkgY29uc3QK
ICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKICAg
ICBpZiAoYXV0byBkYXRhTGlzdCA9IGVsZW1lbnQoKS0+ZGF0YUxpc3QoKSkgewotICAgICAgICBS
ZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9ucygpOwotICAgICAg
ICB1bnNpZ25lZCBsZW5ndGggPSBvcHRpb25zLT5sZW5ndGgoKTsKLSAgICAgICAgc3VnZ2VzdGlv
bnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpICE9IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gZG93
bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpvcHRpb25zLT5pdGVtKGkpKS52YWx1ZSgpOwotICAg
ICAgICAgICAgaWYgKGlzVmFsaWRTaW1wbGVDb2xvcih2YWx1ZSkpCi0gICAgICAgICAgICAgICAg
c3VnZ2VzdGlvbnMudW5jaGVja2VkQXBwZW5kKENvbG9yKHZhbHVlKSk7CisgICAgICAgIGZvciAo
YXV0byYgb3B0aW9uIDogZGF0YUxpc3QtPnN1Z2dlc3Rpb25zKCkpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvIGNvbG9yID0gcGFyc2VTaW1wbGVDb2xvclZhbHVlKG9wdGlvbi52YWx1ZSgpKSkKKyAg
ICAgICAgICAgICAgICBzdWdnZXN0aW9ucy51bmNoZWNrZWRBcHBlbmQoKmNvbG9yKTsKICAgICAg
ICAgfQogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9HZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmlj
Q2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwCmluZGV4IDM4MzhmMWJkN2U0ZTY3ZjU1NzA1ZTEwMGIz
ZDY5NzNkMDM4OTNlNTAuLjljYjNhNjcwMjM3MmNkNGJkMmJmZDllZTNiYTg5ZmJjYTdjOGZmYWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVj
dGlvbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVj
dGlvbi5oIgogCiAjaW5jbHVkZSAiSFRNTEFwcGxldEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1M
RGF0YUxpc3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCkBAIC02
NCwxMiArNjUsNyBAQCBib29sIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjx0cmF2ZXJzYWxU
eXBlPjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYgZWxlbWVudAogICAgIGNhc2UgU2VsZWN0ZWRP
cHRpb25zOgogICAgICAgICByZXR1cm4gaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpICYm
IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KS5zZWxlY3RlZCgpOwogICAgIGNh
c2UgRGF0YUxpc3RPcHRpb25zOgotICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVs
ZW1lbnQpKSB7Ci0gICAgICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uID0gZG93bmNh
c3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKCFvcHRpb24u
aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgIW9wdGlvbi52YWx1ZSgpLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiBpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCk7CiAgICAg
Y2FzZSBNYXBBcmVhczoKICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShhcmVhVGFn
KTsKICAgICBjYXNlIERvY0FwcGxldHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbGxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0
aW9uLmgKaW5kZXggMTM1ODQxNmZlMzg5MmE5OTg4NWE2ZjlmNDA0OWNkZTFkOWQzN2QwYi4uZjZl
ZDMzN2M1YjdhYjEyNWVkYzQ3ODg5YWUzOWYxM2NjNTM0ZjYzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFsbENvbGxlY3Rpb24uaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgSFRNTEFsbE5hbWVkU3ViQ29sbGVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIENv
bGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCi0gICAgICAgIDogQ2Fj
aGVkSFRNTENvbGxlY3Rpb248SFRNTEFsbE5hbWVkU3ViQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPihkb2N1bWVudCwgdHlwZSkKKyAgICAgICAgOiBDYWNo
ZWRIVE1MQ29sbGVjdGlvbihkb2N1bWVudCwgdHlwZSkKICAgICAgICAgLCBtX25hbWUobmFtZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVCh0eXBlID09IERvY3VtZW50QWxsTmFtZWRJdGVtcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaWRsCmluZGV4IDhmY2I2OGM2ODAw
MDgzNzIzYTU4NThmMGNlNmRiYWFiNDc1MzljM2MuLmU1YjExOTJlNDkyODg3MTNmMzMyMWJjYTBh
N2MyOGE2NzgxYWFhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENv
bGxlY3Rpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24u
aWRsCkBAIC0zMSw2ICszMSw2IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgbGVuZ3RoOwogCiAgICAgZ2V0dGVyIEVsZW1lbnQ/ICh1bnNpZ25lZCBsb25nIGluZGV4KTsK
LSAgICBbSW1wbGVtZW50ZWRBcz1uYW1lZEl0ZW1Pckl0ZW1zXSBnZXR0ZXIgKEhUTUxDb2xsZWN0
aW9uIG9yIEVsZW1lbnQpPyBuYW1lZEl0ZW0oRE9NU3RyaW5nIG5hbWUpOwotICAgIFtJbXBsZW1l
bnRlZEFzPW5hbWVkT3JJbmRleGVkSXRlbU9ySXRlbXNdIGxlZ2FjeWNhbGxlciAoSFRNTENvbGxl
Y3Rpb24gb3IgRWxlbWVudCk/IGl0ZW0ob3B0aW9uYWwgRE9NU3RyaW5nIG5hbWVPckluZGV4KTsK
KyAgICBbSW1wbGVtZW50ZWRBcz1uYW1lZEl0ZW1Pckl0ZW1zXSBnZXR0ZXIgKEhUTUxDb2xsZWN0
aW9uIG9yIEVsZW1lbnQpPyBuYW1lZEl0ZW0oW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBE
T01TdHJpbmcgbmFtZSk7CisgICAgW0ltcGxlbWVudGVkQXM9bmFtZWRPckluZGV4ZWRJdGVtT3JJ
dGVtc10gbGVnYWN5Y2FsbGVyIChIVE1MQ29sbGVjdGlvbiBvciBFbGVtZW50KT8gaXRlbShvcHRp
b25hbCBbQXRvbVN0cmluZ10gRE9NU3RyaW5nIG5hbWVPckluZGV4KTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENvbGxlY3Rpb24uaWRsCmluZGV4IDZkZmFlOGJkODk0YWNkYzJkMjYwNTU2NjI2
YjRjNzNiZGIxYzlhNWIuLmM0NTJkODllYzliYjBlMDdlYjNlNDIzMTIzYmYzMjE3MjA5NTY0MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaWRsCkBAIC0yNyw1ICsyNyw1IEBA
CiBdIGludGVyZmFjZSBIVE1MQ29sbGVjdGlvbiB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIGdldHRlciBFbGVtZW50PyBpdGVtKHVuc2lnbmVkIGxv
bmcgaW5kZXgpOwotICAgIGdldHRlciBFbGVtZW50PyBuYW1lZEl0ZW0oRE9NU3RyaW5nIG5hbWUp
OworICAgIGdldHRlciBFbGVtZW50PyBuYW1lZEl0ZW0oW1JlcXVpcmVzRXhpc3RpbmdBdG9tU3Ry
aW5nXSBET01TdHJpbmcgbmFtZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFM
aXN0RWxlbWVudC5jcHAKaW5kZXggYmVjODdiMzZkMzgxNDBlMmMyY2VjMTJkNGEwYmRiZjM4NTQ4
OGExOS4uODI2YzJjNTQ5MzUyZTU1N2E1YmI4OTU0Zjc2YTYxZjA1MmY5NzUxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM3LDYgKzM3LDcgQEAK
IAogI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTY1LDYgKzY2LDExIEBAIHZvaWQgSFRN
TERhdGFMaXN0RWxlbWVudDo6b3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpCiAgICAgdHJl
ZVNjb3BlKCkuaWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KCkubm90aWZ5T2JzZXJ2ZXJzKGdldElk
QXR0cmlidXRlKCkpOwogfQogCitib29sIEhUTUxEYXRhTGlzdEVsZW1lbnQ6OmlzU3VnZ2VzdGlv
bihjb25zdCBIVE1MT3B0aW9uRWxlbWVudCYgZGVzY2VuZGFudCkKK3sKKyAgICByZXR1cm4gIWRl
c2NlbmRhbnQuaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgIWRlc2NlbmRhbnQudmFsdWUoKS5p
c0VtcHR5KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShEQVRBTElTVF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RGF0YUxpc3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1l
bnQuaAppbmRleCA4ZjcxZmE1YzkxMWM5YjUwYjJiODEwZDg1N2Y3YWMzY2YyY2NlYzAxLi43Y2Y1
NzFlMjlhNjcwY2RmMGNkNmRlNTUzNzUzYjdlYTk1MmQ4NjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzMsMTEgKzMzLDEzIEBACiAKICNpZiBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkKIAotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5j
bHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBIVE1MQ29sbGVjdGlvbjsKKwogY2xhc3MgSFRNTERh
dGFMaXN0RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChIVE1MRGF0YUxpc3RFbGVtZW50KTsKIHB1YmxpYzoKQEAgLTQ3LDYgKzQ5
LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBvcHRpb25FbGVtZW50Q2hpbGRyZW5DaGFuZ2VkKCk7
CiAKKyAgICBzdGF0aWMgYm9vbCBpc1N1Z2dlc3Rpb24oY29uc3QgSFRNTE9wdGlvbkVsZW1lbnQm
IGRlc2NlbmRhbnQpOworICAgIGF1dG8gc3VnZ2VzdGlvbnMoKSBjb25zdCB7IHJldHVybiBkZXNj
ZW5kYW50c09mVHlwZTxIVE1MT3B0aW9uRWxlbWVudCwgaXNTdWdnZXN0aW9uPigqdGhpcyk7IH0K
KwogcHJpdmF0ZToKICAgICBIVE1MRGF0YUxpc3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggNjhj
ZjU1M2FiNDkwYWU0ZGYwN2M3ZGZiNjJiN2RkZDA2NjkwNjBlYS4uMzJlZDRhZDMxYmQzMGVjZjRj
Y2M0OGZiMTQyNDRhMzIzMjRlMDRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
QEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZp
c3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAq
IENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eS4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCkBAIC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiSFRNTEJESUVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MQlJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJ1dHRvbkVsZW1lbnQuaCIK
LSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkhUTUxFbGVtZW50RmFjdG9yeS5oIgogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVs
ZW1lbnQuaCIKQEAgLTYwLDYgKzU5LDcgQEAKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAj
aW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
KyNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290
LmgiCiAjaW5jbHVkZSAiU2ltdWxhdGVkQ2xpY2suaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRp
ZXMuaCIKQEAgLTc2NywxNCArNzY3LDE2IEBAIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogSFRNTEVs
ZW1lbnQ6OmFzRm9ybUFzc29jaWF0ZWRFbGVtZW50KCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotc3RhdGljIGlubGluZSBib29sIGVsZW1lbnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkoY29uc3Qg
Tm9kZSYgbm9kZSkKK3N0YXRpYyBib29sIGVsZW1lbnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkoY29u
c3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgaWYgKCFpczxIVE1MRWxlbWVudD4obm9k
ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVu
dCA9IGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKTsKICAgICByZXR1cm4gaXM8SFRNTEJESUVs
ZW1lbnQ+KGVsZW1lbnQpIHx8IGVsZW1lbnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihkaXJBdHRyKTsKIH0KIAorc3RhdGljIGJvb2wgZWxlbWVudEFmZmVjdHNEaXJlY3Rpb25h
bGl0eShjb25zdCBOb2RlJiBub2RlKQoreworICAgIHJldHVybiBpczxIVE1MRWxlbWVudD4obm9k
ZSkgJiYgZWxlbWVudEFmZmVjdHNEaXJlY3Rpb25hbGl0eShkb3duY2FzdDxIVE1MRWxlbWVudD4o
bm9kZSkpOworfQorCiBzdGF0aWMgdm9pZCBzZXRIYXNEaXJBdXRvRmxhZ1JlY3Vyc2l2ZWx5KE5v
ZGUqIGZpcnN0Tm9kZSwgYm9vbCBmbGFnLCBOb2RlKiBsYXN0Tm9kZSA9IG51bGxwdHIpCiB7CiAg
ICAgZmlyc3ROb2RlLT5zZXRTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUoZmxhZyk7
CkBAIC04ODUsMTAgKzg4NywxMCBAQCB2b2lkIEhUTUxFbGVtZW50OjphZGp1c3REaXJlY3Rpb25h
bGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudAogICAgIHNldEhh
c0RpckF1dG9GbGFnUmVjdXJzaXZlbHkoY2hpbGQsIGZhbHNlKTsKICAgICBpZiAoIXJlbmRlcmVy
KCkgfHwgcmVuZGVyZXIoKS0+c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSB0ZXh0RGlyZWN0aW9uKQog
ICAgICAgICByZXR1cm47Ci0gICAgZm9yIChhdXRvJiBlbGVtZW50VG9BZGp1c3QgOiBlbGVtZW50
TGluZWFnZSh0aGlzKSkgewotICAgICAgICBpZiAoZWxlbWVudEFmZmVjdHNEaXJlY3Rpb25hbGl0
eShlbGVtZW50VG9BZGp1c3QpKSB7Ci0gICAgICAgICAgICBlbGVtZW50VG9BZGp1c3QuaW52YWxp
ZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwotICAgICAgICAgICAgcmV0dXJuOworICAgIGZvciAoYXV0
byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8SFRNTEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAg
ICBpZiAoZWxlbWVudEFmZmVjdHNEaXJlY3Rpb25hbGl0eShlbGVtZW50KSkgeworICAgICAgICAg
ICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCAz
OTVkYjFlNjJlZWRkMWQ5MDBlOWU3YzNlYzg4OGNiMDBjYjJhNGEzLi43ZTA3NGViNjEyODk3NjI4
OTBlMTFlODFhZmNkNmEwOTNlN2ZkZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBA
IC0yMiwxOSArMjIsMTcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJJbnB1dE1vZGUu
aCIKKyNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCisKICNpZiBFTkFCTEUoQVVUT0NBUElUQUxJ
WkUpCiAjaW5jbHVkZSAiQXV0b2NhcGl0YWxpemUuaCIKICNlbmRpZgogCi0jaW5jbHVkZSAiSW5w
dXRNb2RlLmgiCi0jaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBGb3JtQXNzb2NpYXRlZEVsZW1l
bnQ7CiBjbGFzcyBGb3JtTmFtZWRJdGVtOwotY2xhc3MgSFRNTENvbGxlY3Rpb247CiBjbGFzcyBI
VE1MRm9ybUVsZW1lbnQ7CiAKIGVudW0gY2xhc3MgRW50ZXJLZXlIaW50IDogdWludDhfdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCmluZGV4IDhjZGY5MDMwOWY3MGI0
ZGYyNzU0ODU5YmNmMzQ1MjRlMDIxNWM5YWYuLjNiYmNlMDg3N2FkMGE0NzQzOGNjNGJmN2I2MGNl
NzI4ZTU4Y2VjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcApA
QCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBr
ZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0Br
ZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIFN0ZWZhbiBTY2hpbWFuc2tpICgxU3RlaW5A
Z214LmRlKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCkBAIC02NiwxNSArNjYsMTAgQEAgUmVmPEhUTUxFbWJlZEVsZW1lbnQ+IEhUTUxFbWJl
ZEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAKIHN0YXRpYyBpbmxpbmUgUmVu
ZGVyV2lkZ2V0KiBmaW5kV2lkZ2V0UmVuZGVyZXIoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICBp
ZiAoIW5vZGUtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgbm9kZSA9
IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgfSB3aGlsZSAobm9kZSAmJiAhaXM8SFRNTE9i
amVjdEVsZW1lbnQ+KCpub2RlKSk7Ci0gICAgfQotCisgICAgaWYgKCFub2RlLT5yZW5kZXJlcigp
KQorICAgICAgICBub2RlID0gYW5jZXN0b3JzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50Pigqbm9k
ZSkuZmlyc3QoKTsKICAgICBpZiAobm9kZSAmJiBpczxSZW5kZXJXaWRnZXQ+KG5vZGUtPnJlbmRl
cmVyKCkpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyV2lkZ2V0Pihub2RlLT5yZW5k
ZXJlcigpKTsKLQogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCBkNjExYmMxYjIyNTFmZjhmMDg4
NDRmNjhkNDI0ZmI5ZGM5NjY4MmY0Li5mZDc3ZDdiYTA0M2U5YTdjZDcyZmY5NmU4NTY4ZmI5ZWM5
ODNmN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAo
a25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29p
dmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxs
ZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlh
a292IChhcEBueXBvcC5jb20pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgorI2luY2x1ZGUgIkhUTUxEYXRhTGlzdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRmll
bGRTZXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTElucHV0RWxlbWVudC5oIgpAQCAtNDEyLDE0ICs0MTMsMTIgQEAgYm9vbCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjptYXRjaGVzSW52YWxpZFBzZXVkb0NsYXNzKCkgY29uc3QKIGJvb2wgSFRN
TEZvcm1Db250cm9sRWxlbWVudDo6Y29tcHV0ZVdpbGxWYWxpZGF0ZSgpIGNvbnN0CiB7CiAgICAg
aWYgKG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlID09IFVua25vd24pIHsKLSAgICAgICAgZm9yIChD
b250YWluZXJOb2RlKiBhbmNlc3RvciA9IHBhcmVudE5vZGUoKTsgYW5jZXN0b3I7IGFuY2VzdG9y
ID0gYW5jZXN0b3ItPnBhcmVudE5vZGUoKSkgewotICAgICAgICAgICAgaWYgKGFuY2VzdG9yLT5o
YXNUYWdOYW1lKGRhdGFsaXN0VGFnKSkgewotICAgICAgICAgICAgICAgIG1fZGF0YUxpc3RBbmNl
c3RvclN0YXRlID0gSW5zaWRlRGF0YUxpc3Q7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1fZGF0YUxpc3RBbmNlc3RvclN0YXRl
ID09IFVua25vd24pCi0gICAgICAgICAgICBtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9IE5vdElu
c2lkZURhdGFMaXN0OworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgICAgICBtX2Rh
dGFMaXN0QW5jZXN0b3JTdGF0ZSA9IGFuY2VzdG9yc09mVHlwZTxIVE1MRGF0YUxpc3RFbGVtZW50
PigqdGhpcykuZmlyc3QoKQorICAgICAgICAgICAgPyBJbnNpZGVEYXRhTGlzdCA6IE5vdEluc2lk
ZURhdGFMaXN0OworI2Vsc2UKKyAgICAgICAgbV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUgPSBOb3RJ
bnNpZGVEYXRhTGlzdDsKKyNlbmRpZgogICAgIH0KICAgICByZXR1cm4gbV9kYXRhTGlzdEFuY2Vz
dG9yU3RhdGUgPT0gTm90SW5zaWRlRGF0YUxpc3QgJiYgIWlzRGlzYWJsZWRPclJlYWRPbmx5KCk7
CiB9CkBAIC02NDUsMTUgKzY0NCw2IEBAIEF1dG9jYXBpdGFsaXplVHlwZSBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjphdXRvY2FwaXRhbGl6ZVR5cGUoKSBjb25zdAogCiAjZW5kaWYKIAotSFRNTEZv
cm1Db250cm9sRWxlbWVudCogSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZW5jbG9zaW5nRm9ybUNv
bnRyb2xFbGVtZW50KE5vZGUqIG5vZGUpCi17Ci0gICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2Rl
LT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKGlzPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+
KCpub2RlKSkKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50Pihub2RlKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIFN0cmluZyBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50OjphdXRvY29tcGxldGUoKSBjb25zdAogewogICAgIHJldHVybiBh
dXRvZmlsbERhdGEoKS5pZGxFeHBvc2VkVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IDYxMzQwYmZhNzNhM2E5NjZiYTYzN2FkNDRmNTZj
YmQ4ZmNmYzk2ZjAuLjNhZGIzMTFjN2E2MWQ3OGQ4MGI5OTBhMTU2OWU2ODFkMGY2NTMwMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0xMTYs
OCArMTE2LDYgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQXV0b2ZvY3VzZWQoKSB7IHJldHVybiBt
X2hhc0F1dG9mb2N1c2VkOyB9CiAgICAgdm9pZCBzZXRBdXRvZm9jdXNlZCgpIHsgbV9oYXNBdXRv
Zm9jdXNlZCA9IHRydWU7IH0KIAotICAgIHN0YXRpYyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBl
bmNsb3NpbmdGb3JtQ29udHJvbEVsZW1lbnQoTm9kZSopOwotCiAgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIGF1dG9jb21wbGV0ZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
QXV0b2NvbXBsZXRlKGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCmluZGV4IGEyYjAwZThmODE2ZGExYzIy
MWIxYzM2NmVhNmU2ODljM2IxYzY4YjkuLjg0YTFjYjc5ZTM2MDE0M2VjM2Q0ODI5YzY1NzU3OGM4
MjgzN2QwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24pOwogCiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6SFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24oQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlKQotICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rp
b248SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPEZvcm1D
b250cm9scz46OnRyYXZlcnNhbFR5cGU+KG93bmVyTm9kZSwgRm9ybUNvbnRyb2xzKQorICAgIDog
Q2FjaGVkSFRNTENvbGxlY3Rpb24ob3duZXJOb2RlLCBGb3JtQ29udHJvbHMpCiAgICAgLCBtX2Nh
Y2hlZEVsZW1lbnQobnVsbHB0cikKICAgICAsIG1fY2FjaGVkRWxlbWVudE9mZnNldEluQXJyYXko
MCkKIHsKQEAgLTExMSw3ICsxMTEsNyBAQCBIVE1MRWxlbWVudCogSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb246OmN1c3RvbUVsZW1lbnRBZnRlcihFbGVtZW50KiBjdXJyZW50KSBjbwogCiBIVE1M
Rm9ybUVsZW1lbnQmIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpvd25lck5vZGUoKSBjb25z
dAogewotICAgIHJldHVybiBkb3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KENhY2hlZEhUTUxDb2xs
ZWN0aW9uPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxG
b3JtQ29udHJvbHM+Ojp0cmF2ZXJzYWxUeXBlPjo6b3duZXJOb2RlKCkpOworICAgIHJldHVybiBk
b3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KENhY2hlZEhUTUxDb2xsZWN0aW9uOjpvd25lck5vZGUo
KSk7CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxl
bWVudENhY2hlKCkgY29uc3QKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiAKIHZvaWQgSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50KERvY3Vt
ZW50JiBkb2N1bWVudCkKIHsKLSAgICBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8Rm9ybUNvbnRyb2xzPjo6dHJhdmVy
c2FsVHlwZT46OmludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50KGRvY3VtZW50KTsKKyAgICBDYWNo
ZWRIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQoZG9jdW1lbnQpOwog
ICAgIG1fY2FjaGVkRWxlbWVudCA9IG51bGxwdHI7CiAgICAgbV9jYWNoZWRFbGVtZW50T2Zmc2V0
SW5BcnJheSA9IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmgKaW5kZXggNzc0ZTU0ZjU2NWNhMDE0OWQ0YmM2MTg5ZTZkZjNlNjBkMDc5
M2IzMS4uOTAyNzMwZWY1MzY2ZjU5MWM0OGI2ZTU5MzAzMWNjMTZjNzk3ZGY5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaApAQCAtNjMs
NyArNjMsNyBAQCBwcml2YXRlOgogCiBpbmxpbmUgSFRNTEVsZW1lbnQqIEhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uOjppdGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3QKIHsKLSAgICByZXR1cm4g
ZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxGb3JtQ29udHJvbHM+Ojp0cmF2ZXJz
YWxUeXBlPjo6aXRlbShvZmZzZXQpKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+
KENhY2hlZEhUTUxDb2xsZWN0aW9uOjppdGVtKG9mZnNldCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uaWRsCmluZGV4IDQzYzgzNTk5OGI0MDA1OWUzMzI3Y2U2ZDU5ZTBmODJlNmZkZDE4
MjMuLjRkODFmZmQwMzQ1NzQ3N2NiYTI0ZDJkMzNkYmI5MzFiNDhiMzVlZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsCkBAIC0y
Miw1ICsyMiw1IEBACiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsT3duZXJOb2RlUm9vdCwK
IF0gaW50ZXJmYWNlIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uIDogSFRNTENvbGxlY3Rpb24g
ewogICAgIGdldHRlciBIVE1MRWxlbWVudD8gKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtJ
bXBsZW1lbnRlZEFzPW5hbWVkSXRlbU9ySXRlbXNdIGdldHRlciAoUmFkaW9Ob2RlTGlzdCBvciBF
bGVtZW50KT8gbmFtZWRJdGVtKERPTVN0cmluZyBuYW1lKTsgLy8gc2hhZG93cyBpbmhlcml0ZWQg
bmFtZWRJdGVtKCkKKyAgICBbSW1wbGVtZW50ZWRBcz1uYW1lZEl0ZW1Pckl0ZW1zXSBnZXR0ZXIg
KFJhZGlvTm9kZUxpc3Qgb3IgRWxlbWVudCk/IG5hbWVkSXRlbShbUmVxdWlyZXNFeGlzdGluZ0F0
b21TdHJpbmddIERPTVN0cmluZyBuYW1lKTsgLy8gc2hhZG93cyBpbmhlcml0ZWQgbmFtZWRJdGVt
KCkKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggZTdlNDE0
Yzg3ZGMyNDg4YzU4NjZlMzVmMmJlZmQzNzFiZWM5YjE2MC4uMmQwOTNlZmMwNzliODJlZTE3ZmNm
NGRkMGM5ZmFiM2Y5NzNiYzc2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcApAQCAtNTA5LDE0ICs1MDksMTMgQEAgdW5zaWduZWQgSFRNTEZvcm1FbGVtZW50Ojpmb3Jt
RWxlbWVudEluZGV4KEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogYXNzb2NpYXRlZEVsZW0KICAgICBp
ZiAoIWFzc29jaWF0ZWRIVE1MRWxlbWVudC5pc0Rlc2NlbmRhbnRPZigqdGhpcykpCiAgICAgICAg
IHJldHVybiBjdXJyZW50QXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleDsKIAorICAgIGF1dG8g
ZGVzY2VuZGFudHMgPSBkZXNjZW5kYW50c09mVHlwZTxIVE1MRWxlbWVudD4oKnRoaXMpOworCiAg
ICAgLy8gQ2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhpcyBlbGVtZW50IGlzIHRo
ZSB2ZXJ5IGxhc3QgdGhpbmcgaW4KICAgICAvLyB0aGUgZm9ybSdzIHRyZWUgb2YgY2hpbGRyZW47
IHdlIGRvbid0IHdhbnQgdG8gd2FsayB0aGUgZW50aXJlIHRyZWUgaW4gdGhhdAogICAgIC8vIGNv
bW1vbiBjYXNlIHRoYXQgb2NjdXJzIGR1cmluZyBwYXJzaW5nOyBpbnN0ZWFkIHdlJ2xsIGp1c3Qg
cmV0dXJuIGEgdmFsdWUKICAgICAvLyB0aGF0IHNheXMgImFkZCB0aGlzIGZvcm0gZWxlbWVudCB0
byB0aGUgZW5kIG9mIHRoZSBhcnJheSIuCi0gICAgYXV0byBkZXNjZW5kYW50cyA9IGRlc2NlbmRh
bnRzT2ZUeXBlPEhUTUxFbGVtZW50PigqdGhpcyk7Ci0gICAgYXV0byBpdCA9IGRlc2NlbmRhbnRz
LmJlZ2luQXQoYXNzb2NpYXRlZEhUTUxFbGVtZW50KTsKLSAgICBhdXRvIGVuZCA9IGRlc2NlbmRh
bnRzLmVuZCgpOwotICAgIGlmICgrK2l0ID09IGVuZCkKKyAgICBpZiAoISsrZGVzY2VuZGFudHMu
YmVnaW5BdChhc3NvY2lhdGVkSFRNTEVsZW1lbnQpKQogICAgICAgICByZXR1cm4gY3VycmVudEFz
c29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXg7CiAKICAgICB1bnNpZ25lZCBpID0gbV9hc3NvY2lh
dGVkRWxlbWVudHNCZWZvcmVJbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lU2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNl
dEVsZW1lbnQuY3BwCmluZGV4IDgzYWM2ODBkOTA0ODc1NzE1MGI1YjZlYjM2YjY0ZDc4OGYwZWJj
NzAuLmU2YWU2ZjY4ZDg3OTg1YWY5ZmY1NGViNWQ2NzUzM2E1YjVhYjFmMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcApAQCAtMzMsNyArMzMsNiBAQAog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5o
IgogI2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJMZW5ndGguaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGY1NzNjYTE0MDY4NWNkMjYwMjA5Y2Q2MTljOGE5ODA0
OWVjYzUxOTQuLjVkMDhlOWU0OTQ1ZTJkOTNjZGI4ZGNhMjA1ZmMwMzMxY2JlZmY4ZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMiw3ICsyLDcgQEAKICAq
IENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAg
ICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAg
ICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0
IChDKSAyMDA0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAg
ICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqIENv
cHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIChzYW1Ad2Via2l0Lm9yZykKICAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjEwNCw2
ICsyMTA0LDcgQEAgUmVuZGVyU3R5bGUgSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogfQogCiAjaWYgRU5BQkxFKERBVEVfQU5E
X1RJTUVfSU5QVVRfVFlQRVMpCisKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6c2V0dXBEYXRlVGlt
ZUNob29zZXJQYXJhbWV0ZXJzKERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CiB7CiAgICAgaWYgKCFkb2N1bWVudCgpLnZpZXcoKSkKQEAgLTIxMzYsMjAgKzIxMzcsMjQgQEAg
Ym9vbCBIVE1MSW5wdXRFbGVtZW50OjpzZXR1cERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMoRGF0
ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyYKICAgICAgICAgcGFyYW1ldGVycy5hbmNob3JSZWN0SW5S
b290VmlldyA9IEludFJlY3QoKTsKICAgICBwYXJhbWV0ZXJzLmN1cnJlbnRWYWx1ZSA9IHZhbHVl
KCk7CiAgICAgcGFyYW1ldGVycy5pc0FuY2hvckVsZW1lbnRSVEwgPSBjb21wdXRlZFN0eWxlKCkt
PmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTDsKKwogI2lmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKQogICAgIGlmIChhdXRvIGRhdGFMaXN0ID0gdGhpcy0+ZGF0YUxpc3QoKSkgewot
ICAgICAgICBSZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9ucygp
OwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+
IG9wdGlvbiA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihvcHRpb25zLT5pdGVtKGkpKTsg
KytpKSB7Ci0gICAgICAgICAgICBpZiAoIWlzVmFsaWRWYWx1ZShvcHRpb24tPnZhbHVlKCkpKQor
ICAgICAgICBmb3IgKGF1dG8mIG9wdGlvbiA6IGRhdGFMaXN0LT5zdWdnZXN0aW9ucygpKSB7Cisg
ICAgICAgICAgICBhdXRvIGxhYmVsID0gb3B0aW9uLmxhYmVsKCk7CisgICAgICAgICAgICBhdXRv
IHZhbHVlID0gb3B0aW9uLnZhbHVlKCk7CisgICAgICAgICAgICBpZiAoIWlzVmFsaWRWYWx1ZSh2
YWx1ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBwYXJhbWV0ZXJz
LnN1Z2dlc3Rpb25WYWx1ZXMuYXBwZW5kKHNhbml0aXplVmFsdWUob3B0aW9uLT52YWx1ZSgpKSk7
Ci0gICAgICAgICAgICBwYXJhbWV0ZXJzLmxvY2FsaXplZFN1Z2dlc3Rpb25WYWx1ZXMuYXBwZW5k
KGxvY2FsaXplVmFsdWUob3B0aW9uLT52YWx1ZSgpKSk7Ci0gICAgICAgICAgICBwYXJhbWV0ZXJz
LnN1Z2dlc3Rpb25MYWJlbHMuYXBwZW5kKG9wdGlvbi0+dmFsdWUoKSA9PSBvcHRpb24tPmxhYmVs
KCkgPyBTdHJpbmcoKSA6IG9wdGlvbi0+bGFiZWwoKSk7CisgICAgICAgICAgICBwYXJhbWV0ZXJz
LnN1Z2dlc3Rpb25WYWx1ZXMuYXBwZW5kKHNhbml0aXplVmFsdWUodmFsdWUpKTsKKyAgICAgICAg
ICAgIHBhcmFtZXRlcnMubG9jYWxpemVkU3VnZ2VzdGlvblZhbHVlcy5hcHBlbmQobG9jYWxpemVW
YWx1ZSh2YWx1ZSkpOworICAgICAgICAgICAgcGFyYW1ldGVycy5zdWdnZXN0aW9uTGFiZWxzLmFw
cGVuZCh2YWx1ZSA9PSBsYWJlbCA/IFN0cmluZygpIDogbGFiZWwpOwogICAgICAgICB9CiAgICAg
fQogI2VuZGlmCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KKwogI2VuZGlmCiAKIHZvaWQgSFRNTElu
cHV0RWxlbWVudDo6Y2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDRlOWY4ZWEyMDVjODBjZmEyOTg1ZmVmMTg1
YmZlZmUwYzEyMjgyYjguLmFiNzQ0NDI4NTc0YzEzNmFjYjQ2OTg4YjcyY2IwYjYwNGYxYjJjYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDY1Myw3ICs0
NjUzLDcgQEAgVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZChDb250
ZW50VHlwZSogY29udGVudFR5cGUsIFN0cmluZyoga2UKICAgICAvLyBlYWNoIHN0aWxsIGlzIGEg
Y2hpbGQgb2YgdGhpcyBtZWRpYSBlbGVtZW50IGJlZm9yZSB1c2luZy4KICAgICBWZWN0b3I8UmVm
PEhUTUxTb3VyY2VFbGVtZW50Pj4gcG90ZW50aWFsU291cmNlTm9kZXM7CiAgICAgYXV0byBzb3Vy
Y2VzID0gY2hpbGRyZW5PZlR5cGU8SFRNTFNvdXJjZUVsZW1lbnQ+KCp0aGlzKTsKLSAgICBmb3Ig
KGF1dG8gbmV4dCA9IG1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXIgPyBzb3VyY2VzLmJlZ2luQXQo
Km1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXIpIDogc291cmNlcy5iZWdpbigpLCBlbmQgPSBzb3Vy
Y2VzLmVuZCgpOyBuZXh0ICE9IGVuZDsgKytuZXh0KQorICAgIGZvciAoYXV0byBuZXh0ID0gbV9u
ZXh0Q2hpbGROb2RlVG9Db25zaWRlciA/IHNvdXJjZXMuYmVnaW5BdCgqbV9uZXh0Q2hpbGROb2Rl
VG9Db25zaWRlcikgOiBzb3VyY2VzLmJlZ2luKCk7IG5leHQ7ICsrbmV4dCkKICAgICAgICAgcG90
ZW50aWFsU291cmNlTm9kZXMuYXBwZW5kKCpuZXh0KTsKIAogICAgIGZvciAoYXV0byYgc291cmNl
IDogcG90ZW50aWFsU291cmNlTm9kZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRH
cm91cEVsZW1lbnQuY3BwCmluZGV4IDllOGNmZmRiOTFhNTEwOTA0Mjg0NTllZmZlODY1YTQ4ZTA3
ZjQ4MDguLjY3NjhmZTEyYTFlNWU3MjIwYzUzNjkwZmU2Zjk3MzU3Y2FlN2NkYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcApAQCAtMiw3ICsyLDcgQEAK
ICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAg
ICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAg
ICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJp
Z2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
ICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCkBAIC0xMDksMTQgKzEwOSw3IEBAIFN0cmluZyBIVE1MT3B0R3JvdXBFbGVtZW50
Ojpncm91cExhYmVsVGV4dCgpIGNvbnN0CiAgICAgCiBIVE1MU2VsZWN0RWxlbWVudCogSFRNTE9w
dEdyb3VwRWxlbWVudDo6b3duZXJTZWxlY3RFbGVtZW50KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8
Q29udGFpbmVyTm9kZT4gc2VsZWN0ID0gcGFyZW50Tm9kZSgpOwotICAgIHdoaWxlIChzZWxlY3Qg
JiYgIWlzPEhUTUxTZWxlY3RFbGVtZW50Pigqc2VsZWN0KSkKLSAgICAgICAgc2VsZWN0ID0gc2Vs
ZWN0LT5wYXJlbnROb2RlKCk7Ci0gICAgCi0gICAgaWYgKCFzZWxlY3QpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIAotICAgIHJldHVybiBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4o
c2VsZWN0LmdldCgpKTsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+
KGFuY2VzdG9yc09mVHlwZTxIVE1MU2VsZWN0RWxlbWVudD4oKnRoaXMpLmZpcnN0KCkpOwogfQog
CiB2b2lkIEhUTUxPcHRHcm91cEVsZW1lbnQ6OmFjY2Vzc0tleUFjdGlvbihib29sKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAppbmRleCBjM2RkMzBkNWRjNjJiZjgz
MTcwOWU1NzAwNDY4OGQ0YTg4YjNlMmE2Li4zYzAxZTY5NWFkMTAyNjc3YWFmZjAyZGIwZjIxMWRi
ODhmNjkyODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcApA
QCAtMyw3ICszLDcgQEAKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29p
dmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxs
ZXJAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChh
cEBueXBvcC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0
eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0xNjYsOCArMTY2LDggQEAgdm9p
ZCBIVE1MT3B0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbVN0cmkKIHsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAg
ICBpZiAobmFtZSA9PSB2YWx1ZUF0dHIpIHsKLSAgICAgICAgaWYgKFJlZlB0cjxIVE1MRGF0YUxp
c3RFbGVtZW50PiBkYXRhTGlzdCA9IG93bmVyRGF0YUxpc3RFbGVtZW50KCkpCi0gICAgICAgICAg
ICBkYXRhTGlzdC0+b3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOworICAgICAgICBmb3Ig
KGF1dG8mIGRhdGFMaXN0IDogYW5jZXN0b3JzT2ZUeXBlPEhUTUxEYXRhTGlzdEVsZW1lbnQ+KCp0
aGlzKSkKKyAgICAgICAgICAgIGRhdGFMaXN0Lm9wdGlvbkVsZW1lbnRDaGlsZHJlbkNoYW5nZWQo
KTsKICAgICB9IGVsc2UKICNlbmRpZgogICAgIGlmIChuYW1lID09IGRpc2FibGVkQXR0cikgewpA
QCAtMjM4LDM5ICsyMzgsMTcgQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6c2V0U2VsZWN0ZWRT
dGF0ZShib29sIHNlbGVjdGVkKQogdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiB7CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VM
RU1FTlQpCi0gICAgaWYgKFJlZlB0cjxIVE1MRGF0YUxpc3RFbGVtZW50PiBkYXRhTGlzdCA9IG93
bmVyRGF0YUxpc3RFbGVtZW50KCkpCi0gICAgICAgIGRhdGFMaXN0LT5vcHRpb25FbGVtZW50Q2hp
bGRyZW5DaGFuZ2VkKCk7Ci0gICAgZWxzZQorICAgIGZvciAoYXV0byYgZGF0YUxpc3QgOiBhbmNl
c3RvcnNPZlR5cGU8SFRNTERhdGFMaXN0RWxlbWVudD4oKnRoaXMpKQorICAgICAgICBkYXRhTGlz
dC5vcHRpb25FbGVtZW50Q2hpbGRyZW5DaGFuZ2VkKCk7CiAjZW5kaWYKICAgICBpZiAoUmVmUHRy
PEhUTUxTZWxlY3RFbGVtZW50PiBzZWxlY3QgPSBvd25lclNlbGVjdEVsZW1lbnQoKSkKICAgICAg
ICAgc2VsZWN0LT5vcHRpb25FbGVtZW50Q2hpbGRyZW5DaGFuZ2VkKCk7CiAgICAgSFRNTEVsZW1l
bnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogfQogCi0jaWYgRU5BQkxFKERBVEFMSVNUX0VM
RU1FTlQpCi1IVE1MRGF0YUxpc3RFbGVtZW50KiBIVE1MT3B0aW9uRWxlbWVudDo6b3duZXJEYXRh
TGlzdEVsZW1lbnQoKSBjb25zdAotewotICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBkYXRhbGlz
dCA9IHBhcmVudE5vZGUoKTsKLSAgICB3aGlsZSAoZGF0YWxpc3QgJiYgIWlzPEhUTUxEYXRhTGlz
dEVsZW1lbnQ+KCpkYXRhbGlzdCkpCi0gICAgICAgIGRhdGFsaXN0ID0gZGF0YWxpc3QtPnBhcmVu
dE5vZGUoKTsKLQotICAgIGlmICghZGF0YWxpc3QpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxEYXRhTGlzdEVsZW1lbnQ+KGRhdGFsaXN0LmdldCgp
KTsKLX0KLSNlbmRpZgotCiBIVE1MU2VsZWN0RWxlbWVudCogSFRNTE9wdGlvbkVsZW1lbnQ6Om93
bmVyU2VsZWN0RWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHNl
bGVjdCA9IHBhcmVudE5vZGUoKTsKLSAgICB3aGlsZSAoc2VsZWN0ICYmICFpczxIVE1MU2VsZWN0
RWxlbWVudD4oKnNlbGVjdCkpCi0gICAgICAgIHNlbGVjdCA9IHNlbGVjdC0+cGFyZW50Tm9kZSgp
OwotCi0gICAgaWYgKCFzZWxlY3QpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0
dXJuIGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50PihzZWxlY3QuZ2V0KCkpOworICAgIHJldHVy
biBjb25zdF9jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4oYW5jZXN0b3JzT2ZUeXBlPEhUTUxTZWxl
Y3RFbGVtZW50PigqdGhpcykuZmlyc3QoKSk7CiB9CiAKIFN0cmluZyBIVE1MT3B0aW9uRWxlbWVu
dDo6bGFiZWwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCmlu
ZGV4IGYwZDk0YzhhNmI1ZjMwODMzNGVhYTExZGE5ZTQwMjFiNWMwZTU3ZTYuLjkxYzVhYmM3ZTAx
N2MxMWZhMTMyZmQzMWYwMWJlMWUzMjRlMjZiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25FbGVtZW50LmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFy
cyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2
aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxs
ZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAxMCwgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCkBAIC0yOCw3ICsyOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
SFRNTERhdGFMaXN0RWxlbWVudDsKIGNsYXNzIEhUTUxTZWxlY3RFbGVtZW50OwogCiBjbGFzcyBI
VE1MT3B0aW9uRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CkBAIC00OSw5ICs0
OCw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNlbGVjdGVkKCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZWxlY3RlZChib29sKTsKIAotI2lmIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQotICAgIFdFQkNPUkVfRVhQT1JUIEhUTUxEYXRhTGlzdEVsZW1lbnQqIG93
bmVyRGF0YUxpc3RFbGVtZW50KCkgY29uc3Q7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBI
VE1MU2VsZWN0RWxlbWVudCogb3duZXJTZWxlY3RFbGVtZW50KCkgY29uc3Q7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgbGFiZWwoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcAppbmRleCBhNjA3NjZiZDc4NTg1OTg2YTIyOWZlODZm
YjQyYzY4YWZkOTFiYTQ5Li4zMGJiY2YzNjk4NDI3NjFkZDBiNTM0NDE3OGI0NzAxMDYzNTU1MjIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCkBA
IC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChIVE1MT3B0aW9uc0NvbGxlY3Rpb24pOwogCiBIVE1MT3B0aW9uc0NvbGxlY3Rpb246
OkhUTUxPcHRpb25zQ29sbGVjdGlvbihIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0KQotICAgIDog
Q2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTE9wdGlvbnNDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlw
ZVRyYWl0czxTZWxlY3RPcHRpb25zPjo6dHJhdmVyc2FsVHlwZT4oc2VsZWN0LCBTZWxlY3RPcHRp
b25zKQorICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb24oc2VsZWN0LCBTZWxlY3RPcHRpb25zKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVj
dGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGwK
aW5kZXggNmU5ZmE0ZDBlMTYxNjBkYTJiN2NhYjgwZDAyYTk3YWJkODA2M2IwNS4uZjFjNDc3ZTQ4
NjhlMGZlNDA1OWZkZmM2MDUxYmVjM2ExZjJjNWNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbApAQCAtMzIsNSArMzIsNSBAQAogCiAgICAgLy8g
RklYTUU6IENhbiB0aGVzZSBqdXN0IGJlIGluaGVyaXRlZCBmcm9tIEhUTUxDb2xsZWN0aW9uIGxp
a2UgaW4gdGhlIHNwZWM/CiAgICAgZ2V0dGVyIEhUTUxPcHRpb25FbGVtZW50PyBpdGVtKHVuc2ln
bmVkIGxvbmcgaW5kZXgpOwotICAgIGdldHRlciBIVE1MT3B0aW9uRWxlbWVudD8gbmFtZWRJdGVt
KERPTVN0cmluZyBuYW1lKTsKKyAgICBnZXR0ZXIgSFRNTE9wdGlvbkVsZW1lbnQ/IG5hbWVkSXRl
bShbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIERPTVN0cmluZyBuYW1lKTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCBiMTc0
YjFmMjhmYjZlMTRmN2M3MmYxN2JiM2RkYWJlY2M0MTM1ZmIwLi42MmZhYjc4MTQ2MmNlMmU5ZmFm
ZmZjMGE3NjM4M2YzYWViNTgxMDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJDaHJvbWVD
bGllbnQuaCIKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0
eVBvbGljeS5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50
LmgiCkBAIC01MCw3ICs1MSw2IEBACiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUg
IlN0eWxlVHJlZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiU3ViZnJhbWVMb2FkZXIuaCIKLSNpbmNs
dWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJVc2VyR2Vz
dHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhdGNoU2NvcGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdElubGluZXMuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwKaW5kZXggNjFlZTU5NGU2MDM3Nzkw
ZWFkZmM4YWZkMWMxNWVjYzQ2ZjM4YzZjOS4uZDNhZWRhOTAzNTUzOGQ5NmYyMmJlMWE1NDBlNzM2
MTAzOWVlZWMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwK
QEAgLTM2LDcgKzM2LDcgQEAKICAgICAvKiBbU2FtZU9iamVjdF0gKi8gcmVhZG9ubHkgYXR0cmli
dXRlIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBvcHRpb25zOwogICAgIFtDRVJlYWN0aW9uc10gYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIGdldHRlciBIVE1MT3B0aW9uRWxlbWVu
dD8gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsgLy8gRklYTUU6IFRoZSBzcGVjIGhhcyB0aGlz
IHJldHVybmluZyBFbGVtZW50Py4KLSAgICBIVE1MT3B0aW9uRWxlbWVudD8gbmFtZWRJdGVtKERP
TVN0cmluZyBuYW1lKTsKKyAgICBIVE1MT3B0aW9uRWxlbWVudD8gbmFtZWRJdGVtKFtSZXF1aXJl
c0V4aXN0aW5nQXRvbVN0cmluZ10gRE9NU3RyaW5nIG5hbWUpOwogICAgIFtDRVJlYWN0aW9ucywg
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYWRkKChIVE1MT3B0aW9uRWxlbWVudCBvciBIVE1MT3B0
R3JvdXBFbGVtZW50KSBlbGVtZW50LCBvcHRpb25hbCAoSFRNTEVsZW1lbnQgb3IgbG9uZyk/IGJl
Zm9yZSA9IG51bGwpOwogICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
cmVtb3ZlKCk7IC8vIENoaWxkTm9kZSBvdmVybG9hZAogICAgIFtDRVJlYWN0aW9uc10gdm9pZCBy
ZW1vdmUobG9uZyBpbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUNlbGxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVs
ZW1lbnQuY3BwCmluZGV4IGZiZjhmNzMzZTQ4MDAwNDkxZWFkODYxNjczYjg2MzE5MjNmOTkxODYu
LmE2MDAzOGZlOTRmMjk4YjA4ZWE0YWI2ZWRhY2Q3ZDE1NTdhYTg3NTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCkBAIC0xMzEsOSArMTMxLDkgQEAg
dm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbVMKIAogY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBIVE1MVGFi
bGVDZWxsRWxlbWVudDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCkgY29u
c3QKIHsKLSAgICBpZiAoUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IHRhYmxlID0gZmluZFBhcmVu
dFRhYmxlKCkpCisgICAgaWYgKGF1dG8gdGFibGUgPSBmaW5kUGFyZW50VGFibGUoKSkKICAgICAg
ICAgcmV0dXJuIHRhYmxlLT5hZGRpdGlvbmFsQ2VsbFN0eWxlKCk7Ci0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGJvb2wgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmlzVVJM
QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKaW5kZXggNzI4YjVmM2QyYjU1MjNiMDRi
Mzk5ZjJjYzRiNTVhYTRmOGIxZmM3NC4uZjRkNDQ3NTgxMWU4YTQwY2EzMmE2N2JjZjZiMjE2YzI1
M2E3ZTdhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3Bw
CkBAIC05Miw3ICs5Miw3IEBAIGNvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlQ29sRWxl
bWVudDo6YWRkaXRpb25hbFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlCiB7CiAgICAgaWYgKCFo
YXNUYWdOYW1lKGNvbGdyb3VwVGFnKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYg
KFJlZlB0cjxIVE1MVGFibGVFbGVtZW50PiB0YWJsZSA9IGZpbmRQYXJlbnRUYWJsZSgpKQorICAg
IGlmIChhdXRvIHRhYmxlID0gZmluZFBhcmVudFRhYmxlKCkpCiAgICAgICAgIHJldHVybiB0YWJs
ZS0+YWRkaXRpb25hbEdyb3VwU3R5bGUoZmFsc2UpOwogICAgIHJldHVybiBudWxscHRyOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXggNzY3YTNlMzhhZjQ4
MmRkOTJiMTQ5YzhmMGVlOGI4NjZlN2Q0YjdiZi4uYTVmODBmZTBjOTFmODhkOTYwYWI3ZmU3YWYw
NjhhNDhiODk2NDVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3Bw
CkBAIC00NzMsNyArNDczLDcgQEAgSFRNTFRhYmxlRWxlbWVudDo6Q2VsbEJvcmRlcnMgSFRNTFRh
YmxlRWxlbWVudDo6Y2VsbEJvcmRlcnMoKSBjb25zdAogICAgIHJldHVybiBOb0JvcmRlcnM7CiB9
CiAKLVJlZjxTdHlsZVByb3BlcnRpZXM+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVNoYXJlZENl
bGxTdHlsZSgpCitSZWY8U3R5bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVT
aGFyZWRDZWxsU3R5bGUoKSBjb25zdAogewogICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzOjpjcmVhdGUoKTsKIApAQCAtNTE0LDcgKzUxNCw3IEBAIFJlZjxTdHlsZVByb3Bl
cnRpZXM+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpCiAgICAgcmV0
dXJuIHN0eWxlOwogfQogCi1jb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6
OmFkZGl0aW9uYWxDZWxsU3R5bGUoKQorY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBIVE1MVGFibGVF
bGVtZW50OjphZGRpdGlvbmFsQ2VsbFN0eWxlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc2hhcmVk
Q2VsbFN0eWxlKQogICAgICAgICBtX3NoYXJlZENlbGxTdHlsZSA9IGNyZWF0ZVNoYXJlZENlbGxT
dHlsZSgpOwpAQCAtNTM4LDExICs1MzgsMTAgQEAgc3RhdGljIFN0eWxlUHJvcGVydGllcyogbGVh
a0dyb3VwQm9yZGVyU3R5bGUoaW50IHJvd3MpCiAgICAgcmV0dXJuICZzdHlsZS5sZWFrUmVmKCk7
CiB9CiAKLWNvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlRWxlbWVudDo6YWRkaXRpb25h
bEdyb3VwU3R5bGUoYm9vbCByb3dzKQorY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBIVE1MVGFibGVF
bGVtZW50OjphZGRpdGlvbmFsR3JvdXBTdHlsZShib29sIHJvd3MpIGNvbnN0CiB7CiAgICAgaWYg
KG1fcnVsZXNBdHRyICE9IEdyb3Vwc1J1bGVzKQotICAgICAgICByZXR1cm4gMDsKLQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAocm93cykgewogICAgICAgICBzdGF0aWMgU3R5bGVQ
cm9wZXJ0aWVzKiByb3dCb3JkZXJTdHlsZSA9IGxlYWtHcm91cEJvcmRlclN0eWxlKHRydWUpOwog
ICAgICAgICByZXR1cm4gcm93Qm9yZGVyU3R5bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
RWxlbWVudC5oCmluZGV4IGIzNjU0MjA5YmRhODU3ODg1YzY5MzFjODFiNGVlM2Y5ODZmMzg0MTYu
LjM3NTZkYzYxMDc1YzRiZjc5NTdmOTA3M2I3ODc1YTUyZjJlNTZiMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCkBAIC02NSw4ICs2NSw4IEBAIHB1YmxpYzoKICAgICBj
b25zdCBBdG9tU3RyaW5nJiBydWxlcygpIGNvbnN0OwogICAgIGNvbnN0IEF0b21TdHJpbmcmIHN1
bW1hcnkoKSBjb25zdDsKIAotICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogYWRkaXRpb25hbENl
bGxTdHlsZSgpOwotICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogYWRkaXRpb25hbEdyb3VwU3R5
bGUoYm9vbCByb3dzKTsKKyAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0aW9uYWxDZWxs
U3R5bGUoKSBjb25zdDsKKyAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0aW9uYWxHcm91
cFN0eWxlKGJvb2wgcm93cykgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSFRNTFRhYmxlRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKQEAgLTg2LDcgKzg2LDcgQEAgcHJp
dmF0ZToKIAogICAgIENlbGxCb3JkZXJzIGNlbGxCb3JkZXJzKCkgY29uc3Q7CiAKLSAgICBSZWY8
U3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKTsKKyAgICBSZWY8U3R5bGVQ
cm9wZXJ0aWVzPiBjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKSBjb25zdDsKIAogICAgIEhUTUxUYWJs
ZVNlY3Rpb25FbGVtZW50KiBsYXN0Qm9keSgpIGNvbnN0OwogCkBAIC05NSw3ICs5NSw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2ZyYW1lQXR0ciB7IGZhbHNlIH07IC8vIEltcGxpZXMgYSB0aGlu
IGJvcmRlciB3aWR0aCBpZiBubyBib3JkZXIgaXMgc2V0IGFuZCB0aGVuIGEgY2VydGFpbiBzZXQg
b2Ygc29saWQvaGlkZGVuIGJvcmRlcnMgYmFzZWQgb2ZmIHRoZSB2YWx1ZS4KICAgICBUYWJsZVJ1
bGVzIG1fcnVsZXNBdHRyIHsgVW5zZXRSdWxlcyB9OyAvLyBJbXBsaWVzIGEgdGhpbiBib3JkZXIg
d2lkdGgsIGEgY29sbGFwc2luZyBib3JkZXIgbW9kZWwsIGFuZCBhbGwgYm9yZGVycyBvbiB0aGUg
dGFibGUgYmVjb21pbmcgc2V0IHRvIGhpZGRlbiAoaWYgZnJhbWUvYm9yZGVyIGFyZSBwcmVzZW50
LCB0byBub25lIG90aGVyd2lzZSkuCiAgICAgdW5zaWduZWQgc2hvcnQgbV9wYWRkaW5nIHsgMSB9
OwotICAgIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IG1fc2hhcmVkQ2VsbFN0eWxlOworICAgIG11
dGFibGUgUmVmUHRyPFN0eWxlUHJvcGVydGllcz4gbV9zaGFyZWRDZWxsU3R5bGU7CiB9OwogCiB9
IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBh
cnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQu
Y3BwCmluZGV4IDM1ODc4MDE2MjEwZmNhYWZmNjA5MGU2OTUzOTQxNTVjNDU1YWVhN2MuLjM0OWIw
MzUxMmE4ZWM1NDA1MjQxYmJhNmZjM2Q0YTlmZjc0MzZlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwCkBAIC00LDcgKzQsNyBAQAogICogICAgICAg
ICAgIChDKSAxOTk4IFdhbGRvIEJhc3RpYW4gKGJhc3RpYW5Aa2RlLm9yZykKICAqICAgICAgICAg
ICAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAx
OTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtODUsMTIgKzg1LDkgQEAgdm9pZCBIVE1MVGFibGVQYXJ0RWxlbWVudDo6Y29sbGVjdFN0eWxl
Rm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE4KICAgICAgICAgSFRNTEVs
ZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwg
c3R5bGUpOwogfQogCi1SZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gSFRNTFRhYmxlUGFydEVsZW1l
bnQ6OmZpbmRQYXJlbnRUYWJsZSgpIGNvbnN0CitSZWZQdHI8Y29uc3QgSFRNTFRhYmxlRWxlbWVu
dD4gSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmZpbmRQYXJlbnRUYWJsZSgpIGNvbnN0CiB7Ci0gICAg
UmVmUHRyPENvbnRhaW5lck5vZGU+IHBhcmVudCA9IHBhcmVudE5vZGUoKTsKLSAgICB3aGlsZSAo
cGFyZW50ICYmICFpczxIVE1MVGFibGVFbGVtZW50PigqcGFyZW50KSkKLSAgICAgICAgcGFyZW50
ID0gcGFyZW50LT5wYXJlbnROb2RlKCk7Ci0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxUYWJsZUVs
ZW1lbnQ+KHBhcmVudC5nZXQoKSk7CisgICAgcmV0dXJuIGFuY2VzdG9yc09mVHlwZTxIVE1MVGFi
bGVFbGVtZW50PigqdGhpcykuZmlyc3QoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVQYXJ0RWxlbWVudC5oCmluZGV4IGQzYmNmNTBiYWUyMWMzNThjZGUyM2YzMzYzZTVj
NjkyZDU2ZjExZTYuLjA0Zjk0NzFiYWJhMjg3N2Y3NTQ1NDBjOWIxYTU4MDk3MjdiZWI1NzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmgKQEAgLTQsNyArNCw3
IEBACiAgKiAgICAgICAgICAgKEMpIDE5OTggV2FsZG8gQmFzdGlhbiAoYmFzdGlhbkBrZGUub3Jn
KQogICogICAgICAgICAgIChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00Miw3ICs0Miw3IEBA
IHByb3RlY3RlZDoKICAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNl
bnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYs
IE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxIVE1MVGFi
bGVFbGVtZW50PiBmaW5kUGFyZW50VGFibGUoKSBjb25zdDsKKyAgICBSZWZQdHI8Y29uc3QgSFRN
TFRhYmxlRWxlbWVudD4gZmluZFBhcmVudFRhYmxlKCkgY29uc3Q7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJv
d3NDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxl
Y3Rpb24uY3BwCmluZGV4IDdhNjdiNzczYWIzOTllYjM5MjMwMDg0NjAyMWU5ZWJiMDlhMjkxYWIu
LjIzZWVjZGExNTc2YzRjM2VjNzU0MGUzYWEwNjE2ZjNmMjA1MGUyY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCkBAIC0xNTIsNyArMTUy
LDcgQEAgSFRNTFRhYmxlUm93RWxlbWVudCogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246Omxhc3RS
b3coSFRNTFRhYmxlRWxlbWVudCYgdGFibGUpCiB9CiAKIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9u
OjpIVE1MVGFibGVSb3dzQ29sbGVjdGlvbihIVE1MVGFibGVFbGVtZW50JiB0YWJsZSkKLSAgICA6
IENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLCBDb2xsZWN0aW9u
VHlwZVRyYWl0czxUYWJsZVJvd3M+Ojp0cmF2ZXJzYWxUeXBlPih0YWJsZSwgVGFibGVSb3dzKQor
ICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb24odGFibGUsIFRhYmxlUm93cykKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcAppbmRleCBl
NTE2YTgxODRkMWYwZjgzNzNjZDIxYTRhN2E0MDkzY2Y5YmNmMmYxLi40OTk5YzE1OGU2YmFmOTg4
MmJhNWUwNWQyNmYzZGRhMzQxOGJjM2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgIkhU
TUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCiAKICNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRNTENv
bGxlY3Rpb24uaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVJvd0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
VGFibGVFbGVtZW50LmgiCkBAIC05NSw3ICs5NCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxU
YWJsZVNlY3Rpb25FbGVtZW50OjpkZWxldGVSb3coaW50IGluZGV4KQogaW50IEhUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50OjpudW1Sb3dzKCkgY29uc3QKIHsKICAgICBhdXRvIHJvd3MgPSBjaGlsZHJl
bk9mVHlwZTxIVE1MVGFibGVSb3dFbGVtZW50PigqdGhpcyk7Ci0gICAgcmV0dXJuIHN0ZDo6ZGlz
dGFuY2Uocm93cy5iZWdpbigpLCByb3dzLmVuZCgpKTsKKyAgICByZXR1cm4gc3RkOjpkaXN0YW5j
ZShyb3dzLmJlZ2luKCksIHsgfSk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gSFRNTFRhYmxl
U2VjdGlvbkVsZW1lbnQ6OnJvd3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCA5OWM1NmViZjVlMDZkNzY2YmUyNzBiYWMz
YWEyOTYyYmI1OWQzNDgwLi5hN2JhNDE3ZDdkNTE3MTRjMGU1NTJjMGQ1OWEwMTFiNTE1MWIwYzZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xs
IChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChr
b2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVl
bGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3Vy
eWFrb3YgKGFwQG55cG9wLmNvbSkKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC03NjQsMzQgKzc2NCwyNCBAQCBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCogZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKGNvbnN0
IFBvc2l0aW9uJiBwb3NpdGlvbikKICAgICByZXR1cm4gYW5jZXN0b3IgJiYgYW5jZXN0b3ItPmlz
VGV4dEZpZWxkKCkgPyBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oYW5jZXN0
b3IuZ2V0KCkpIDogbnVsbHB0cjsKIH0KIAotc3RhdGljIGNvbnN0IEVsZW1lbnQqIHBhcmVudEhU
TUxFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgd2hpbGUgKGVsZW1lbnQp
IHsKLSAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKLSAgICAgICAg
aWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpKQotICAgICAgICAgICAgcmV0
dXJuIGVsZW1lbnQ7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCiBTdHJpbmcgSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OmRpcmVjdGlvbkZvckZvcm1EYXRhKCkgY29uc3QKIHsKLSAgICBm
b3IgKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlzOyBlbGVtZW50OyBlbGVtZW50ID0gcGFy
ZW50SFRNTEVsZW1lbnQoZWxlbWVudCkpIHsKLSAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgZGly
QXR0cmlidXRlVmFsdWUgPSBlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KGRpckF0dHIpOwotICAgICAgICBpZiAoZGlyQXR0cmlidXRlVmFsdWUuaXNOdWxsKCkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoZGlyQXR0cmlidXRlVmFsdWUsICJydGwiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwgImx0ciIpKQotICAgICAgICAgICAgcmV0dXJuIGRp
ckF0dHJpYnV0ZVZhbHVlOwotCi0gICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwgImF1dG8iKSkgewotICAgICAgICAgICAgYm9vbCBpc0F1
dG87Ci0gICAgICAgICAgICBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSBzdGF0aWNfY2Fz
dDxjb25zdCBIVE1MRWxlbWVudCo+KGVsZW1lbnQpLT5kaXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0
b0F0dHJpYnV0ZShpc0F1dG8pOwotICAgICAgICAgICAgcmV0dXJuIHRleHREaXJlY3Rpb24gPT0g
VGV4dERpcmVjdGlvbjo6UlRMID8gInJ0bCIgOiAibHRyIjsKKyAgICBhdXRvIGRpcmVjdGlvbiA9
IFt0aGlzXSB7CisgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8SFRN
TEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICAgICAgYXV0byYgdmFsdWUgPSBlbGVtZW50LmF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGlyQXR0cik7CisgICAgICAgICAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJydGwiKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gVGV4dERpcmVjdGlvbjo6UlRMOworICAgICAgICAgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAibHRyIikpCisgICAgICAgICAgICAgICAgcmV0
dXJuIFRleHREaXJlY3Rpb246OkxUUjsKKyAgICAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImF1dG8iKSkgeworICAgICAgICAgICAgICAgIGJvb2wgaXNB
dXRvOworICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmRpcmVjdGlvbmFsaXR5SWZoYXNE
aXJBdXRvQXR0cmlidXRlKGlzQXV0byk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9
CisgICAgICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpMVFI7CisgICAgfSgpOwogCi0gICAgcmV0
dXJuICJsdHIiOworICAgIHJldHVybiBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8g
Imx0ciJfcyA6ICJydGwiX3M7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50OjpzZXRNYXhMZW5ndGgoaW50IG1heExlbmd0aCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9MYWJlbHNOb2RlTGlzdC5jcHAKaW5kZXggZDQxMDE3ODZmYjAwNWYyNjg3YjE5MGFmMzczMWJj
ZDU1N2QyMGUwYS4uOTE5YTI4ZWQ2MDkzZmRiZWIxMWQyOTE2MDQ2NDI4MTZmMWVlMTFkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBD
b3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAg
ICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAg
ICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNywgMjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKQEAgLTI0LDkgKzI0LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJMYWJlbHNOb2RlTGlzdC5oIgogCi0jaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxMYWJlbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRl
ICJMYWJlbGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVk
ZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzYsMTEgKzM2LDE2IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChMYWJlbHNO
b2RlTGlzdCk7CiAKLUxhYmVsc05vZGVMaXN0OjpMYWJlbHNOb2RlTGlzdChMYWJlbGFibGVFbGVt
ZW50JiBmb3JOb2RlKQotICAgIDogQ2FjaGVkTGl2ZU5vZGVMaXN0KGZvck5vZGUsIEludmFsaWRh
dGVPbkZvclR5cGVBdHRyQ2hhbmdlKQorTGFiZWxzTm9kZUxpc3Q6OkxhYmVsc05vZGVMaXN0KExh
YmVsYWJsZUVsZW1lbnQmIGVsZW1lbnQpCisgICAgOiBDYWNoZWRMaXZlTm9kZUxpc3QoZWxlbWVu
dCwgSW52YWxpZGF0ZU9uRm9yVHlwZUF0dHJDaGFuZ2UpCiB7CiB9CiAKK1JlZjxMYWJlbHNOb2Rl
TGlzdD4gTGFiZWxzTm9kZUxpc3Q6OmNyZWF0ZShMYWJlbGFibGVFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBBdG9tU3RyaW5nJikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMYWJlbHNOb2Rl
TGlzdChlbGVtZW50KSk7Cit9CisKIExhYmVsc05vZGVMaXN0Ojp+TGFiZWxzTm9kZUxpc3QoKQog
ewogICAgIG93bmVyTm9kZSgpLm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZVdpdGhBdG9tTmFtZSgq
dGhpcywgc3RhckF0b20oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVs
c05vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmgKaW5kZXgg
ZjUzOWQ3OWIwY2FhMDUwMDMwNDg4OGRjNDYxNzcyYWY3ZGIxNjI4Mi4uODBkOTc3ZmFjZDc2MmRh
YThmMzA4YWYwZGIzYjY1MGVhY2M3M2U4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9MYWJlbHNOb2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxp
c3QuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChr
bm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2
aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxl
ckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjQsMjUgKzI0LDIzIEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTGFiZWxhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUg
IkxpdmVOb2RlTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIExhYmVsYWJs
ZUVsZW1lbnQ7CisKIGNsYXNzIExhYmVsc05vZGVMaXN0IGZpbmFsIDogcHVibGljIENhY2hlZExp
dmVOb2RlTGlzdDxMYWJlbHNOb2RlTGlzdD4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
TGFiZWxzTm9kZUxpc3QpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TGFiZWxzTm9kZUxpc3Q+
IGNyZWF0ZShMYWJlbGFibGVFbGVtZW50JiBmb3JOb2RlLCBjb25zdCBBdG9tU3RyaW5nJikKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExhYmVsc05vZGVMaXN0KGZvck5vZGUp
KTsKLSAgICB9Ci0gICAgfkxhYmVsc05vZGVMaXN0KCk7CisgICAgc3RhdGljIFJlZjxMYWJlbHNO
b2RlTGlzdD4gY3JlYXRlKExhYmVsYWJsZUVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJik7Cisg
ICAgdmlydHVhbCB+TGFiZWxzTm9kZUxpc3QoKTsKIAotICAgIGJvb2wgZWxlbWVudE1hdGNoZXMo
RWxlbWVudCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNSb290ZWRBdERvY3VtZW50KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgZWxlbWVudE1hdGNoZXMo
RWxlbWVudCYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNSb290ZWRBdERvY3VtZW50KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IExhYmVs
c05vZGVMaXN0KExhYmVsYWJsZUVsZW1lbnQmIGZvck5vZGUpOworICAgIGV4cGxpY2l0IExhYmVs
c05vZGVMaXN0KExhYmVsYWJsZUVsZW1lbnQmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCmluZGV4IDA0ZGU3NTEzY2FjNDgy
YmY3NjBiNGU0YzZmZmEwMmVjMmU1YjY3ZjcuLjI0ZTQwYzJjNmQzMzExNDkzYjYxN2M2NWNkZjJm
NThhODUxMjIyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkN1c3RvbUhl
YWRlckZpZWxkcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiRWxl
bWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTUxLDcgKzUyLDYgQEAKICNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9SYWRpb05vZGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2Rl
TGlzdC5jcHAKaW5kZXggOTQ3MGVhMjlhYjU3NzQ4ODBjNjNiM2JmNDc0ZWQ4OWJmZjdiYjM0Ni4u
ZGQyYzgxZTQ0YjNjYWYxOWNjMmNiZWM0YjQ2NjczNThmY2EyYzU5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1JhZGlvTm9kZUxpc3QuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
YykgMjAxMiBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVk
ZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgotI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCiAjaW5j
bHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4K
QEAgLTQzLDE2ICs0MiwyMSBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmFkaW9Ob2Rl
TGlzdCk7CiBSYWRpb05vZGVMaXN0OjpSYWRpb05vZGVMaXN0KENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogICAgIDogQ2FjaGVkTGl2ZU5vZGVMaXN0KHJv
b3ROb2RlLCBJbnZhbGlkYXRlRm9yRm9ybUNvbnRyb2xzKQogICAgICwgbV9uYW1lKG5hbWUpCi0g
ICAgLCBtX2lzUm9vdGVkQXREb2N1bWVudChpczxIVE1MRm9ybUVsZW1lbnQ+KG93bmVyTm9kZSgp
KSkKKyAgICAsIG1faXNSb290ZWRBdERvY3VtZW50KGlzPEhUTUxGb3JtRWxlbWVudD4ocm9vdE5v
ZGUpKQogewogfQogCitSZWY8UmFkaW9Ob2RlTGlzdD4gUmFkaW9Ob2RlTGlzdDo6Y3JlYXRlKENv
bnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJhZGlvTm9kZUxpc3Qocm9vdE5vZGUsIG5hbWUpKTsKK30KKwog
UmFkaW9Ob2RlTGlzdDo6flJhZGlvTm9kZUxpc3QoKQogewogICAgIG93bmVyTm9kZSgpLm5vZGVM
aXN0cygpLT5yZW1vdmVDYWNoZVdpdGhBdG9tTmFtZSgqdGhpcywgbV9uYW1lKTsKIH0KIAotc3Rh
dGljIGlubGluZSBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gdG9SYWRpb0J1dHRvbklucHV0RWxl
bWVudChIVE1MRWxlbWVudCYgZWxlbWVudCkKK3N0YXRpYyBSZWZQdHI8SFRNTElucHV0RWxlbWVu
dD4gbm9uRW1wdHlSYWRpb0J1dHRvbihFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICghaXM8
SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
NjcsMTAgKzcxLDEwIEBAIFN0cmluZyBSYWRpb05vZGVMaXN0Ojp2YWx1ZSgpIGNvbnN0CiB7CiAg
ICAgYXV0byBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgYXV0byBpbnB1dEVsZW1lbnQgPSB0b1JhZGlv
QnV0dG9uSW5wdXRFbGVtZW50KCppdGVtKGkpKTsKLSAgICAgICAgaWYgKCFpbnB1dEVsZW1lbnQg
fHwgIWlucHV0RWxlbWVudC0+Y2hlY2tlZCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIHJldHVybiBpbnB1dEVsZW1lbnQtPnZhbHVlKCk7CisgICAgICAgIGlmIChhdXRvIGJ1dHRv
biA9IG5vbkVtcHR5UmFkaW9CdXR0b24oKml0ZW0oaSkpKSB7CisgICAgICAgICAgICBpZiAoYnV0
dG9uLT5jaGVja2VkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGJ1dHRvbi0+dmFsdWUoKTsK
KyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CkBAIC03OSw0MCArODMs
MzQgQEAgdm9pZCBSYWRpb05vZGVMaXN0OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQog
ewogICAgIGF1dG8gbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGF1dG8gaW5wdXRFbGVtZW50ID0gdG9S
YWRpb0J1dHRvbklucHV0RWxlbWVudCgqaXRlbShpKSk7Ci0gICAgICAgIGlmICghaW5wdXRFbGVt
ZW50IHx8IGlucHV0RWxlbWVudC0+dmFsdWUoKSAhPSB2YWx1ZSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBpbnB1dEVsZW1lbnQtPnNldENoZWNrZWQodHJ1ZSk7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgaWYgKGF1dG8gYnV0dG9uID0gbm9uRW1wdHlSYWRpb0J1dHRvbigqaXRl
bShpKSkpIHsKKyAgICAgICAgICAgIGlmIChidXR0b24tPnZhbHVlKCkgPT0gdmFsdWUpIHsKKyAg
ICAgICAgICAgICAgICBidXR0b24tPnNldENoZWNrZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogfQogCi1ib29sIFJhZGlv
Tm9kZUxpc3Q6OmNoZWNrRWxlbWVudE1hdGNoZXNSYWRpb05vZGVMaXN0RmlsdGVyKGNvbnN0IEVs
ZW1lbnQmIHRlc3RFbGVtZW50KSBjb25zdAorYm9vbCBSYWRpb05vZGVMaXN0OjplbGVtZW50TWF0
Y2hlcyhFbGVtZW50JiBlbGVtZW50KSBjb25zdAogewotICAgIEFTU0VSVChpczxIVE1MT2JqZWN0
RWxlbWVudD4odGVzdEVsZW1lbnQpIHx8IGlzPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KHRlc3RF
bGVtZW50KSk7CisgICAgaWYgKCFpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkgJiYgIWlz
PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRN
TElucHV0RWxlbWVudD4oZWxlbWVudCkuaXNJbWFnZUJ1dHRvbigpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKICAgICBpZiAoaXM8SFRNTEZvcm1FbGVtZW50Pihvd25lck5vZGUoKSkpIHsKLSAg
ICAgICAgUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gZm9ybUVsZW1lbnQ7Ci0gICAgICAgIGlmICh0
ZXN0RWxlbWVudC5oYXNUYWdOYW1lKG9iamVjdFRhZykpCi0gICAgICAgICAgICBmb3JtRWxlbWVu
dCA9IGRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50Pih0ZXN0RWxlbWVudCkuZm9ybSgpOworICAg
ICAgICBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBmb3JtOworICAgICAgICBpZiAoaXM8SFRNTE9i
amVjdEVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICAgICAgZm9ybSA9IGRvd25jYXN0PEhUTUxP
YmplY3RFbGVtZW50PihlbGVtZW50KS5mb3JtKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGZvcm1FbGVtZW50ID0gZG93bmNhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudD4odGVzdEVsZW1l
bnQpLmZvcm0oKTsKLSAgICAgICAgaWYgKCFmb3JtRWxlbWVudCB8fCBmb3JtRWxlbWVudCAhPSAm
b3duZXJOb2RlKCkpCisgICAgICAgICAgICBmb3JtID0gZG93bmNhc3Q8SFRNTEZvcm1Db250cm9s
RWxlbWVudD4oZWxlbWVudCkuZm9ybSgpOworICAgICAgICBpZiAoIWZvcm0gfHwgZm9ybSAhPSAm
b3duZXJOb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0
dXJuIHRlc3RFbGVtZW50LmdldElkQXR0cmlidXRlKCkgPT0gbV9uYW1lIHx8IHRlc3RFbGVtZW50
LmdldE5hbWVBdHRyaWJ1dGUoKSA9PSBtX25hbWU7CisgICAgcmV0dXJuIGVsZW1lbnQuZ2V0SWRB
dHRyaWJ1dGUoKSA9PSBtX25hbWUgfHwgZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkgPT0gbV9u
YW1lOwogfQogCi1ib29sIFJhZGlvTm9kZUxpc3Q6OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIHRl
c3RFbGVtZW50KSBjb25zdAotewotICAgIGlmICghaXM8SFRNTE9iamVjdEVsZW1lbnQ+KHRlc3RF
bGVtZW50KSAmJiAhaXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4odGVzdEVsZW1lbnQpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4odGVzdEVs
ZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KHRlc3RFbGVtZW50KS5pc0ltYWdl
QnV0dG9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBjaGVja0VsZW1l
bnRNYXRjaGVzUmFkaW9Ob2RlTGlzdEZpbHRlcih0ZXN0RWxlbWVudCk7Ci19Ci0KLX0gLy8gbmFt
c3BhY2UKLQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9SYWRpb05vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxp
c3QuaAppbmRleCBhMzAyNzYzMzBjN2ZkYjZjY2Y2MmIyMThlN2IxNzJkMDIzZDhhNmEzLi42NDQ3
N2M4MTI1OGZiMWI3MTdmM2RkNjJmOWI1ZDgzYmFhZThmM2QyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
ZGlvTm9kZUxpc3QuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTIg
TW90b3JvbGEgTW9iaWxpdHksIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDQxICsyNiwyNiBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGl2ZU5vZGVMaXN0LmgiCi0j
aW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFJhZGlvTm9kZUxpc3QgZmluYWwgOiBwdWJsaWMgQ2FjaGVkTGl2ZU5vZGVMaXN0PFJh
ZGlvTm9kZUxpc3Q+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFJhZGlvTm9kZUxpc3Qp
OwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmFkaW9Ob2RlTGlzdD4gY3JlYXRlKENvbnRhaW5l
ck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmFkaW9Ob2RlTGlzdChyb290Tm9kZSwgbmFtZSkpOwotICAg
IH0KLQorICAgIHN0YXRpYyBSZWY8UmFkaW9Ob2RlTGlzdD4gY3JlYXRlKENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKTsKICAgICB2aXJ0dWFsIH5SYWRpb05v
ZGVMaXN0KCk7CiAKLSAgICBIVE1MRWxlbWVudCogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0
IG92ZXJyaWRlOwotCiAgICAgU3RyaW5nIHZhbHVlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRWYWx1
ZShjb25zdCBTdHJpbmcmKTsKLQotICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNv
bnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNSb290ZWRBdERvY3VtZW50KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9pc1Jvb3RlZEF0RG9jdW1lbnQ7IH0KKyAgICBib29sIGVsZW1lbnRNYXRj
aGVzKEVsZW1lbnQmKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBSYWRpb05vZGVMaXN0
KENvbnRhaW5lck5vZGUmLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKTsKLSAgICBib29sIGNoZWNr
RWxlbWVudE1hdGNoZXNSYWRpb05vZGVMaXN0RmlsdGVyKGNvbnN0IEVsZW1lbnQmKSBjb25zdDsK
KyAgICBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNS
b290ZWRBdERvY3VtZW50OyB9CiAKICAgICBBdG9tU3RyaW5nIG1fbmFtZTsKICAgICBib29sIG1f
aXNSb290ZWRBdERvY3VtZW50OwogfTsKIAotaW5saW5lIEhUTUxFbGVtZW50KiBSYWRpb05vZGVM
aXN0OjppdGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3QKLXsKLSAgICByZXR1cm4gZG93bmNhc3Q8
SFRNTEVsZW1lbnQ+KENhY2hlZExpdmVOb2RlTGlzdDxSYWRpb05vZGVMaXN0Pjo6aXRlbShvZmZz
ZXQpKTsKLX0KLQotfSAvLyBuYW1lcHNhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5pZGwKaW5kZXggMjM0ZDQ1NTJmNjI0OTM0
NjFmMDZmYTFkNTI2M2IzODVhNjJhNjk5MS4uZjIxNzIwODk1MzRhYmUzZWFkMTBhNDhkMTM2MDYx
ZDc0YWM1ZmJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuaWRsCkBAIC0yNyw2
ICsyNyw0IEBACiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCiBdIGludGVyZmFjZSBSYWRpb05v
ZGVMaXN0IDogTm9kZUxpc3QgewogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsdWU7Ci0KLSAg
ICBnZXR0ZXIgSFRNTEVsZW1lbnQgKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCAzYzQyMDNiYzgwMDU5N2Rl
YjJlMzc2MGM1OTg0MWQ2ZTc5NDA2NzAxLi4xZGUyNTkzOTkwYmNkYjZjNjQyMDg4NTAwYTk2ZGVi
YTk3ZTBlNjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3Bw
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQpAQCAtODU4LDYgKzg1OCw4IEBAIEludFJlY3QgVGV4dEZpZWxkSW5wdXRUeXBlOjplbGVt
ZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpIGNvbnN0CiAKIFZlY3RvcjxTdHJpbmc+IFRl
eHRGaWVsZElucHV0VHlwZTo6c3VnZ2VzdGlvbnMoKQogeworICAgIC8vIEZJWE1FOiBTdWdnZXN0
aW9ucyBhcmUgInR5cGluZyBjb21wbGV0aW9ucyIgYW5kIHNvIHNob3VsZCBwcm9iYWJseSB1c2Ug
dGhlIGZpbmRQbGFpblRleHQgYWxnb3JpdGhtIHJhdGhlciB0aGFuIHRoZSBzaW1wbGlzdGljICJp
Z25vcmluZyBBU0NJSSBjYXNlIiBydWxlcy4KKwogICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dlc3Rp
b25zOwogICAgIFZlY3RvcjxTdHJpbmc+IG1hdGNoZXNDb250YWluaW5nVmFsdWU7CiAKQEAgLTg2
NywxMiArODY5LDExIEBAIFZlY3RvcjxTdHJpbmc+IFRleHRGaWVsZElucHV0VHlwZTo6c3VnZ2Vz
dGlvbnMoKQogICAgICAgICByZXR1cm4gbV9jYWNoZWRTdWdnZXN0aW9ucy5zZWNvbmQ7CiAKICAg
ICBpZiAoYXV0byBkYXRhTGlzdCA9IGVsZW1lbnQoKS0+ZGF0YUxpc3QoKSkgewotICAgICAgICBS
ZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9ucygpOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBhdXRvKiBvcHRpb24gPSBkb3duY2FzdDxIVE1MT3B0aW9u
RWxlbWVudD4ob3B0aW9ucy0+aXRlbShpKSk7ICsraSkgewotICAgICAgICAgICAgaWYgKCFlbGVt
ZW50KCktPmlzVmFsaWRWYWx1ZShvcHRpb24tPnZhbHVlKCkpKQorICAgICAgICBmb3IgKGF1dG8m
IG9wdGlvbiA6IGRhdGFMaXN0LT5zdWdnZXN0aW9ucygpKSB7CisgICAgICAgICAgICBTdHJpbmcg
dmFsdWUgPSBvcHRpb24udmFsdWUoKTsKKyAgICAgICAgICAgIGlmICghZWxlbWVudCgpLT5pc1Zh
bGlkVmFsdWUodmFsdWUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAg
ICBTdHJpbmcgdmFsdWUgPSBzYW5pdGl6ZVZhbHVlKG9wdGlvbi0+dmFsdWUoKSk7CisgICAgICAg
ICAgICB2YWx1ZSA9IHNhbml0aXplVmFsdWUodmFsdWUpOwogICAgICAgICAgICAgaWYgKGVsZW1l
bnRWYWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMuYXBwZW5kKHZh
bHVlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZShlbGVtZW50VmFsdWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwCmluZGV4IGNiZGQ4YzAzMWRiN2NmZTBlODQ1NjExOTc2MjY3ZjI0NTEyMjRlZmMuLjlm
OTJlODg0YjA3MWRjOTc0OTkzNDY4NDUxYzdlM2JmMjYxZjUyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRl
ICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRE9NUmVjdC5oIgogI2luY2x1ZGUgIkV2
ZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRGl2RWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGUxZTIzYTc2YTRkOTQ2ZjllYTI3
ZjYyNmEyMmIyY2M3NzhhOTRkMzEuLjQ0ODNkZjcwMDNmYjFlZDU0OTZkY2FiYjIzMDNlYWE1NTBj
N2RmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0zMiwxMCArMzIsOCBAQAog
I2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJDb250
YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkVsZW1l
bnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIk5vZGUuaCIK
ICNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzAsNyArNjgsNyBAQCBFeGNlcHRp
b25PcjxWZWN0b3I8UmVmPE5vZGU+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpnZXRFbGVtZW50c0J5QwogCiAgICAgVmVjdG9yPFJlZjxOb2RlPj4gbm9kZXM7CiAKLSAgICBm
b3IgKEVsZW1lbnQmIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoaXM8Q29udGFpbmVyTm9k
ZT4oY29udGFpbmVyKSA/IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCpjb250YWluZXIpIDogZG9j
dW1lbnQpKSB7CisgICAgZm9yIChFbGVtZW50JiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8
RWxlbWVudD4oaXM8Q29udGFpbmVyTm9kZT4oY29udGFpbmVyKSA/IGRvd25jYXN0PENvbnRhaW5l
ck5vZGU+KCpjb250YWluZXIpIDogZG9jdW1lbnQpKSB7CiAgICAgICAgIGlmIChBWENvcmVPYmpl
Y3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShlbGVtZW50KSkgewogICAg
ICAgICAgICAgaWYgKGF4T2JqZWN0LT5jb21wdXRlZFJvbGVTdHJpbmcoKSA9PSByb2xlKQogICAg
ICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggMjkzMGI0
NWY4ZjIwNzUxZTg1NmNkYTNlMDUxODlhYTQ0NGUxODU1MS4uYWNlNWY5YWM1M2NiZTI2ZmQzYzRk
OWQ0ZjIyNDk0ZmQ4MDY1YTU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwOSwyMCArNTA5LDE4IEBAIHZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgaW50IG5vCiAgICAgICAgIC8vIEluaGVyaXRlZCBzdHlsZXMuCiAgICAg
ICAgIGlmICghaW5jbHVkZUluaGVyaXRlZCB8fCAqaW5jbHVkZUluaGVyaXRlZCkgewogICAgICAg
ICAgICAgYXV0byBlbnRyaWVzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkluaGVyaXRlZFN0eWxlRW50cnk+OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIEVsZW1lbnQq
IHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7Ci0gICAgICAgICAgICB3
aGlsZSAocGFyZW50RWxlbWVudCkgewotICAgICAgICAgICAgICAgIGF1dG8mIHBhcmVudFN0eWxl
UmVzb2x2ZXIgPSBwYXJlbnRFbGVtZW50LT5zdHlsZVJlc29sdmVyKCk7Ci0gICAgICAgICAgICAg
ICAgYXV0byBwYXJlbnRNYXRjaGVkUnVsZXMgPSBwYXJlbnRTdHlsZVJlc29sdmVyLnN0eWxlUnVs
ZXNGb3JFbGVtZW50KHBhcmVudEVsZW1lbnQsIFN0eWxlOjpSZXNvbHZlcjo6QWxsQ1NTUnVsZXMp
OworICAgICAgICAgICAgZm9yIChhdXRvJiBhbmNlc3RvciA6IGFuY2VzdG9yc09mVHlwZTxFbGVt
ZW50PigqZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBwYXJlbnRTdHlsZVJlc29s
dmVyID0gYW5jZXN0b3Iuc3R5bGVSZXNvbHZlcigpOworICAgICAgICAgICAgICAgIGF1dG8gcGFy
ZW50TWF0Y2hlZFJ1bGVzID0gcGFyZW50U3R5bGVSZXNvbHZlci5zdHlsZVJ1bGVzRm9yRWxlbWVu
dCgmYW5jZXN0b3IsIFN0eWxlOjpSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOwogICAgICAgICAgICAg
ICAgIGF1dG8gZW50cnkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkluaGVyaXRlZFN0eWxl
RW50cnk6OmNyZWF0ZSgpCi0gICAgICAgICAgICAgICAgICAgIC5zZXRNYXRjaGVkQ1NTUnVsZXMo
YnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChwYXJlbnRNYXRjaGVkUnVsZXMsIHN0eWxlUmVz
b2x2ZXIsICpwYXJlbnRFbGVtZW50LCBQc2V1ZG9JZDo6Tm9uZSkpCisgICAgICAgICAgICAgICAg
ICAgIC5zZXRNYXRjaGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChwYXJl
bnRNYXRjaGVkUnVsZXMsIHN0eWxlUmVzb2x2ZXIsIGFuY2VzdG9yLCBQc2V1ZG9JZDo6Tm9uZSkp
CiAgICAgICAgICAgICAgICAgICAgIC5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGlz
PFN0eWxlZEVsZW1lbnQ+KCpwYXJlbnRFbGVtZW50KSAmJiBkb3duY2FzdDxTdHlsZWRFbGVtZW50
PigqcGFyZW50RWxlbWVudCkuY3Nzb21TdHlsZSgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGF1dG8mIHN0eWxlU2hlZXQgPSBhc0luc3BlY3RvclN0eWxlU2hlZXQoZG93bmNhc3Q8
U3R5bGVkRWxlbWVudD4oKnBhcmVudEVsZW1lbnQpKTsKKyAgICAgICAgICAgICAgICBpZiAoaXM8
U3R5bGVkRWxlbWVudD4oYW5jZXN0b3IpICYmIGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KGFuY2Vz
dG9yKS5jc3NvbVN0eWxlKCkubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byYg
c3R5bGVTaGVldCA9IGFzSW5zcGVjdG9yU3R5bGVTaGVldChkb3duY2FzdDxTdHlsZWRFbGVtZW50
PihhbmNlc3RvcikpOwogICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c2V0SW5saW5lU3R5bGUo
c3R5bGVTaGVldC5idWlsZE9iamVjdEZvclN0eWxlKHN0eWxlU2hlZXQuc3R5bGVGb3JJZChJbnNw
ZWN0b3JDU1NJZChzdHlsZVNoZWV0LmlkKCksIDApKSkpOwogICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgIGVudHJpZXMtPmFkZEl0ZW0oV1RGTW92ZShlbnRyeSkpOwotICAgICAg
ICAgICAgICAgIHBhcmVudEVsZW1lbnQgPSBwYXJlbnRFbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGluaGVyaXRlZEVudHJpZXMgPSBXVEZNb3Zl
KGVudHJpZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAwZjQ2YTMwMzNhZWY0MDA3ZjZlYjgzN2E2MTA1ZjA1
YTBjNTkwNjdmLi5kMmNhNWJiZTEwOWFhYWQxODJiYWUxODVjNGQ1MmQ4YWFlY2RhODRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFn
ZW50LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBK
b3NlcGggUGVjb3Jhcm8KICAqCkBAIC0xMTE0LDcgKzExMTQsNyBAQCB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjppbnNwZWN0KE5vZGUqIGluc3BlY3RlZE5vZGUpCiAgICAgUmVmUHRyPE5vZGU+IG5v
ZGUgPSBpbnNwZWN0ZWROb2RlOwogICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoaWdub3JlZCwgZmFs
c2UsIG51bGxwdHIsIGZhbHNlKTsKIAotICAgIGlmIChub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6
OkVMRU1FTlRfTk9ERSAmJiBub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5UX05PREUp
CisgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgIW5vZGUtPmlzRG9jdW1lbnROb2Rl
KCkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgbV9ub2RlVG9Gb2N1
cyA9IG5vZGU7CiAKQEAgLTExNTksNyArMTE1OSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5z
CiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRNb3VzZWRPdmVyTm9kZSgpCiB7CiAg
ICAgTm9kZSogbm9kZSA9IG1fbW91c2VkT3Zlck5vZGUuZ2V0KCk7Ci0gICAgd2hpbGUgKG5vZGUg
JiYgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpURVhUX05PREUpCisgICAgaWYgKG5vZGUgJiYg
bm9kZS0+aXNUZXh0Tm9kZSgpKQogICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwog
ICAgIGlmIChub2RlICYmIG1faW5zcGVjdE1vZGVIaWdobGlnaHRDb25maWcpCiAgICAgICAgIG1f
b3ZlcmxheS0+aGlnaGxpZ2h0Tm9kZShub2RlLCAqbV9pbnNwZWN0TW9kZUhpZ2hsaWdodENvbmZp
Zyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggM2Y0
Njk5Y2Y4MzI5OGYwNGUyNzRhZTAwZWY5NWE1NTQ3NWE2NWYzZC4uMDZmNDZkNGE1NjlkMGZhMGRj
MTdiZDY1OWI2NTg4MTU1NzE2YTZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAjaW5jbHVkZSAiQ2FjaGVkRm9udENs
aWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRm9udERlc2Ny
aXB0aW9uLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKLSNpbmNsdWRlICJU
eXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJXT0ZGRmlsZUZvcm1h
dC5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IDAxMmQyZjMxZmUxY2U5OWE3N2U4NTVmYzZl
Y2VmYjg2ZjA3NmRlYjYuLmM4ZjliYTUzMDA1ZjhkN2JjOTMwZDA5NmQ1ZjIxM2M5MzgyNWE5ZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKIAogI2lmIEVOQUJMRShTVkdfRk9OVFMpCiAKKyNpbmNsdWRlICJFbGVt
ZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJG
b250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKQEAgLTM3LDcgKzM4
LDYgQEAKICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCi0jaW5jbHVkZSAi
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiU1ZHVG9PVEZGb250
Q29udmVyc2lvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCmluZGV4IGRhZDAwMmIxOTY4YWQwYjQyNmZiMTJiN2E2NWEwZjM3Mzg2
YmU4YmIuLjA1OWY0NWQ2MjlmNTg4NjViNDA3Y2NiZTFhNzJhZDJlZGY1M2Q2YjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTI2MCw2ICsxMjYwLDE1IEBAIHZv
aWQgRHJhZ0NvbnRyb2xsZXI6OmJlZ2luRHJhZyhEcmFnSXRlbSBkcmFnSXRlbSwgRnJhbWUmIGZy
YW1lLCBjb25zdCBJbnRQb2ludCYKICAgICBjbGllbnQoKS5iZWdpbkRyYWcoV1RGTW92ZShkcmFn
SXRlbSksIGZyYW1lLCBtb3VzZURvd25Qb2ludEluUm9vdFZpZXdDb29yZGluYXRlcywgbW91c2VE
cmFnZ2VkUG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMsIGRhdGFUcmFuc2ZlciwgZHJhZ1NvdXJj
ZUFjdGlvbik7CiB9CiAKK3N0YXRpYyBSZWZQdHI8RWxlbWVudD4gY29udGFpbmluZ0xpbmtFbGVt
ZW50KEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgZm9yIChhdXRvJiBjdXJyZW50RWxlbWVudCA6
IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRF
bGVtZW50LmlzTGluaygpKQorICAgICAgICAgICAgcmV0dXJuICZjdXJyZW50RWxlbWVudDsKKyAg
ICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRvU3lz
dGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBkcmFnTG9jLCBjb25zdCBJ
bnRQb2ludCYgZXZlbnRQb3MsIEZyYW1lJiBmcmFtZSwgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwg
UHJvbWlzZWRBdHRhY2htZW50SW5mbyYmIHByb21pc2VkQXR0YWNobWVudEluZm8pCiB7CiAgICAg
bV9kaWRJbml0aWF0ZURyYWcgPSB0cnVlOwpAQCAtMTI5NiwxOCArMTMwNSw3IEBAIHZvaWQgRHJh
Z0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50
JiBkcmFnTG9jLCBjb25zCiAgICAgICAgICAgICBpdGVtLmRyYWdQcmV2aWV3RnJhbWVJblJvb3RW
aWV3Q29vcmRpbmF0ZXMgPSBlbGVtZW50LT5ib3VuZHNJblJvb3RWaWV3U3BhY2UoKTsKICAgICAg
ICAgfQogCi0gICAgICAgIFJlZlB0cjxFbGVtZW50PiBsaW5rOwotICAgICAgICBpZiAoZWxlbWVu
dC0+aXNMaW5rKCkpCi0gICAgICAgICAgICBsaW5rID0gZWxlbWVudDsKLSAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGN1cnJlbnRFbGVtZW50IDogZWxlbWVudExpbmVhZ2Uo
ZWxlbWVudC5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuaXNM
aW5rKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbGluayA9ICZjdXJyZW50RWxlbWVudDsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIGlmIChsaW5rKSB7CisgICAgICAgIGlmIChhdXRvIGxpbmsg
PSBjb250YWluaW5nTGlua0VsZW1lbnQoKmVsZW1lbnQpKSB7CiAgICAgICAgICAgICBhdXRvIHRp
dGxlQXR0cmlidXRlID0gbGluay0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OnRpdGxlQXR0cik7CiAgICAgICAgICAgICBpdGVtLnRpdGxlID0gdGl0bGVBdHRyaWJ1
dGUuaXNFbXB0eSgpID8gbGluay0+aW5uZXJUZXh0KCkgOiB0aXRsZUF0dHJpYnV0ZS5zdHJpbmco
KTsKICAgICAgICAgICAgIGl0ZW0udXJsID0gZnJhbWUuZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGxpbmstPmdldEF0dHJpYnV0ZShIVE1M
TmFtZXM6OmhyZWZBdHRyKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKaW5kZXggZDI2Y2VmZTRmMjAyMzZjN2M0
M2FjNWUyNWVlNzE2ZWRkNTQwZTEwZi4uZjgwYTE4NTQ4OThjYzg0ZjVkMGUwZjY3MGJmYWYyNTMw
NjBhZjE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Nj
cm9sbFNuYXBPZmZzZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9B
eGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiQXhp
c1Njcm9sbFNuYXBPZmZzZXRzLmgiCiAKICNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5o
IgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LmgKaW5kZXggN2Iz
MmIzM2QzMTVhYjk1ZDJhMGJlOThkM2UyZjBhNTBiYTBiOWVkMy4uNWVkODAyNWJlNzkwMjkyN2Y1
ZDY1M2I5NzY5ZTExM2YyY2FlYzhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQuaApAQCAtMjcsMTEgKzI3LDEyIEBACiAKICNp
ZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKIAotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBJbnRSZWN0OworCiBjbGFzcyBEYXRhTGlzdFN1Z2dlc3Rpb25z
Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50
KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5k
ZXggNjA5N2I0YzZhM2U5ZWJkMzE5MjkyNmZlMzkzOWI4YmI1ZDdmZWVjNS4uMjY3NDMzNTJlNDU3
MWMxZTc0MGJmZGI2M2YwY2I2NDBiYzdmNGM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAg
LTU0LDcgKzU0LDYgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0j
aW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRGF0YUxpc3RFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGFyc2Vy
SWRpb21zLmgiCkBAIC0xMTE3LDEyICsxMTE2LDkgQEAgdm9pZCBSZW5kZXJUaGVtZTo6cGFpbnRT
bGlkZXJUaWNrcyhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnQK
ICAgICAgICAgdGlja1JlZ2lvblNpZGVNYXJnaW4gPSB0cmFja0JvdW5kcy55KCkgKyAodGh1bWJT
aXplLndpZHRoKCkgLSB0aWNrU2l6ZS53aWR0aCgpICogem9vbUZhY3RvcikgLyAyLjA7CiAgICAg
ICAgIHRpY2tSZWdpb25XaWR0aCA9IHRyYWNrQm91bmRzLmhlaWdodCgpIC0gdGh1bWJTaXplLndp
ZHRoKCk7CiAgICAgfQotICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gb3B0aW9ucyA9IGRhdGFMaXN0
Lm9wdGlvbnMoKTsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFp
bnRJbmZvLmNvbnRleHQoKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Io
by5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0
eUNvbG9yKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgTm9kZSogbm9kZSA9IG9wdGlvbnMt
Pml0ZW0oaSk7IGkrKykgewotICAgICAgICBBU1NFUlQoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KCpu
b2RlKSk7Ci0gICAgICAgIEhUTUxPcHRpb25FbGVtZW50JiBvcHRpb25FbGVtZW50ID0gZG93bmNh
c3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpub2RlKTsKKyAgICBmb3IgKGF1dG8mIG9wdGlvbkVsZW1l
bnQgOiBkYXRhTGlzdC5zdWdnZXN0aW9ucygpKSB7CiAgICAgICAgIFN0cmluZyB2YWx1ZSA9IG9w
dGlvbkVsZW1lbnQudmFsdWUoKTsKICAgICAgICAgaWYgKCFpbnB1dC5pc1ZhbGlkVmFsdWUodmFs
dWUpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAppbmRleCA4OGNhM2U1MDM3MzczMDE1YzUyMDMw
ZjA1NDhjMGZiMzMyZTEwNzZkLi5mY2FmMDBjNTBiYmY2MDNlZjNhM2E5ZmQ4MzRkM2M5OWUzMzNi
OTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1
cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3Vw
cG9ydC5jcHAKQEAgLTYsNiArNiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1
bHplIDxrcml0QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlv
biBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxOCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI2LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJTVkdSZW5kZXJTdXBwb3J0LmgiCiAKKyNpbmNsdWRlICJFbGVtZW50QW5jZXN0
b3JJdGVyYXRvci5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJl
bmRlckNoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCkBAIC00ODEs
NiArNDgzLDcgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0OjpzdHlsZUNoYW5nZWQoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlKgogfQogCiAjaWYgRU5BQkxFKENTU19D
T01QT1NJVElORykKKwogYm9vbCBTVkdSZW5kZXJTdXBwb3J0Ojppc29sYXRlc0JsZW5kaW5nKGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICByZXR1cm4gc3R5bGUuc3ZnU3R5bGUoKS5p
c29sYXRlc0JsZW5kaW5nKCkgfHwgc3R5bGUuaGFzRmlsdGVyKCkgfHwgc3R5bGUuaGFzQmxlbmRN
b2RlKCkgfHwgc3R5bGUub3BhY2l0eSgpIDwgMS4wZjsKQEAgLTQ5MSwyMCArNDk0LDE2IEBAIHZv
aWQgU1ZHUmVuZGVyU3VwcG9ydDo6dXBkYXRlTWFza2VkQW5jZXN0b3JTaG91bGRJc29sYXRlQmxl
bmRpbmcoY29uc3QgUmVuZGVyRWxlCiAgICAgQVNTRVJUKHJlbmRlcmVyLmVsZW1lbnQoKSk7CiAg
ICAgQVNTRVJUKHJlbmRlcmVyLmVsZW1lbnQoKS0+aXNTVkdFbGVtZW50KCkpOwogCi0gICAgYm9v
bCBtYXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyA9IHJlbmRlcmVyLnN0eWxlKCku
aGFzQmxlbmRNb2RlKCk7Ci0gICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IHJlbmRlcmVyLmVsZW1l
bnQoKS0+cGFyZW50RWxlbWVudCgpOyBhbmNlc3RvciAmJiBhbmNlc3Rvci0+aXNTVkdFbGVtZW50
KCk7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICBpZiAo
IWRvd25jYXN0PFNWR0VsZW1lbnQ+KCphbmNlc3RvcikuaXNTVkdHcmFwaGljc0VsZW1lbnQoKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGNvbnN0IGF1dG8qIHN0eWxlID0gYW5j
ZXN0b3ItPmNvbXB1dGVkU3R5bGUoKTsKKyAgICBmb3IgKGF1dG8mIGFuY2VzdG9yIDogYW5jZXN0
b3JzT2ZUeXBlPFNWR0dyYXBoaWNzRWxlbWVudD4oKnJlbmRlcmVyLmVsZW1lbnQoKSkpIHsKKyAg
ICAgICAgYXV0byogc3R5bGUgPSBhbmNlc3Rvci5jb21wdXRlZFN0eWxlKCk7CiAgICAgICAgIGlm
ICghc3R5bGUgfHwgIWlzb2xhdGVzQmxlbmRpbmcoKnN0eWxlKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgIGlmIChhbmNlc3Rvci0+Y29tcHV0ZWRTdHlsZSgpLT5zdmdTdHlsZSgp
Lmhhc01hc2tlcigpKQotICAgICAgICAgICAgZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50Pigq
YW5jZXN0b3IpLnNldFNob3VsZElzb2xhdGVCbGVuZGluZyhtYXNrZWRBbmNlc3RvclNob3VsZElz
b2xhdGVCbGVuZGluZyk7Ci0KKyAgICAgICAgaWYgKHN0eWxlLT5zdmdTdHlsZSgpLmhhc01hc2tl
cigpKQorICAgICAgICAgICAgYW5jZXN0b3Iuc2V0U2hvdWxkSXNvbGF0ZUJsZW5kaW5nKHJlbmRl
cmVyLnN0eWxlKCkuaGFzQmxlbmRNb2RlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQor
CiAjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZh
bGlkYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcApp
bmRleCA1ZTk5ZmJiZDJmZTAzODRiNzkwYzAwMzBjMTU2YWY2Y2Y1Nzg0MzgyLi42YmVmNDQ4ZTNi
MTQ2ZDUzOWMxOTcxMTcxYzM5NmZlN2U4ZGI5Yzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZUludmFsaWRhdG9yLmNwcApAQCAtMTc1LDggKzE3NSw3IEBAIHZvaWQgSW52YWxpZGF0b3I6
OmludmFsaWRhdGVTdHlsZUZvckRlc2NlbmRhbnRzKEVsZW1lbnQmIHJvb3QsIFNlbGVjdG9yRmls
dGVyKiBmCiB7CiAgICAgVmVjdG9yPEVsZW1lbnQqLCAyMD4gcGFyZW50U3RhY2s7CiAgICAgRWxl
bWVudCogcHJldmlvdXNFbGVtZW50ID0gJnJvb3Q7Ci0gICAgYXV0byBkZXNjZW5kYW50cyA9IGRl
c2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KHJvb3QpOwotICAgIGZvciAoYXV0byBpdCA9IGRlc2Nl
bmRhbnRzLmJlZ2luKCksIGVuZCA9IGRlc2NlbmRhbnRzLmVuZCgpOyBpdCAhPSBlbmQ7KSB7Cisg
ICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4ocm9vdCkuYmVnaW4o
KTsgaXQ7ICkgewogICAgICAgICBhdXRvJiBkZXNjZW5kYW50ID0gKml0OwogICAgICAgICBhdXRv
KiBwYXJlbnQgPSBkZXNjZW5kYW50LnBhcmVudEVsZW1lbnQoKTsKICAgICAgICAgaWYgKHBhcmVu
dFN0YWNrLmlzRW1wdHkoKSB8fCBwYXJlbnRTdGFjay5sYXN0KCkgIT0gcGFyZW50KSB7CkBAIC0y
NzUsMTIgKzI3NCwxMCBAQCB2b2lkIEludmFsaWRhdG9yOjppbnZhbGlkYXRlU3R5bGVXaXRoTWF0
Y2hFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE1hdGNoRWxlbWVudAogICAgICAgICBmb3IgKGF1
dG8qIHNpYmxpbmcgPSBlbGVtZW50Lm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJs
aW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpCiAgICAgICAgICAgICBpbnZhbGlk
YXRlSWZOZWVkZWQoKnNpYmxpbmcsIG51bGxwdHIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IE1hdGNoRWxlbWVudDo6QW55U2libGluZzogewotICAgICAgICBhdXRvIHBhcmVudENoaWxkcmVu
ID0gY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4oKmVsZW1lbnQucGFyZW50Tm9kZSgpKTsKLSAgICAg
ICAgZm9yIChhdXRvJiBwYXJlbnRDaGlsZCA6IHBhcmVudENoaWxkcmVuKQorICAgIGNhc2UgTWF0
Y2hFbGVtZW50OjpBbnlTaWJsaW5nOgorICAgICAgICBmb3IgKGF1dG8mIHBhcmVudENoaWxkIDog
Y2hpbGRyZW5PZlR5cGU8RWxlbWVudD4oKmVsZW1lbnQucGFyZW50Tm9kZSgpKSkKICAgICAgICAg
ICAgIGludmFsaWRhdGVJZk5lZWRlZChwYXJlbnRDaGlsZCwgbnVsbHB0cik7CiAgICAgICAgIGJy
ZWFrOwotICAgIH0KICAgICBjYXNlIE1hdGNoRWxlbWVudDo6UGFyZW50U2libGluZzoKICAgICAg
ICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2li
bGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKSB7CiAgICAgICAg
ICAgICBhdXRvIHNpYmxpbmdDaGlsZHJlbiA9IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KCpzaWJs
aW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggZjNmMzYyMTgz
ZDUwNjE3NGE0NjY2NDYxYzcxN2JlNzliM2U2MWYxNC4uNjUxZjhmMWUyZDc4OTIxOTkwNjU2YWZh
NGZkOWU2OWVkY2FjM2MyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVS
ZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAK
QEAgLTE4Myw4ICsxODMsNyBAQCBpbmxpbmUgdm9pZCBSZXNvbHZlcjo6U3RhdGU6OnNldFBhcmVu
dFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcGFyZW50UwogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNBdFNoYWRvd0JvdW5kYXJ5KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0g
ICAgYXV0byogcGFyZW50Tm9kZSA9IGVsZW1lbnQucGFyZW50Tm9kZSgpOwotICAgIHJldHVybiBw
YXJlbnROb2RlICYmIHBhcmVudE5vZGUtPmlzU2hhZG93Um9vdCgpOworICAgIHJldHVybiBpczxT
aGFkb3dSb290PihlbGVtZW50LnBhcmVudE5vZGUoKSk7CiB9CiAKIEJ1aWxkZXJDb250ZXh0IFJl
c29sdmVyOjpidWlsZGVyQ29udGV4dChjb25zdCBTdGF0ZSYgc3RhdGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FFbGVtZW50LmNwcAppbmRleCA5OWRiMzU5YjIwNDYxODQwZmNjYTE1ODhlZTEwZjUxZWVmMTU1
Zjg2Li42YjRiNjI1NjkyZDdhY2E2MmYxNzlhOWExNDMxYjliNzJmZWViZWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBRWxlbWVudC5jcHAKQEAgLTEwMiw5ICsxMDIsOCBAQCB2b2lkIFNWR0FFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogCiBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewotICAg
IGlmIChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc1NWR0VsZW1lbnQoKSAmJiBkb3du
Y2FzdDxTVkdFbGVtZW50PigqcGFyZW50Tm9kZSgpKS5pc1RleHRDb250ZW50KCkpCisgICAgaWYg
KGlzPFNWR0VsZW1lbnQ+KHBhcmVudE5vZGUoKSkgJiYgZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnBh
cmVudE5vZGUoKSkuaXNUZXh0Q29udGVudCgpKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyU1ZHSW5saW5lPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwotCiAgICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI+KCp0aGlzLCBX
VEZNb3ZlKHN0eWxlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCAyZmZj
YmFjNTIxMWM4YTA1YWU0NjBkMzBjYTA0MjZlNDY3Y2VhMTgzLi4yMjI0MWRhZDQxN2ZjN2UyNjhi
ZDYwN2VhNTMwN2JiMmE5MmI0NTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0x
LDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICog
Q29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgQ2FtZXJvbiBNY0Nvcm1hY2sgPGNhbUBtY2MuaWQuYXU+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KQEAgLTkxNiwxOCArOTE2LDEwIEBAIHZvaWQgU1ZHRWxlbWVudDo6dXBkYXRlUmVsYXRpdmVM
ZW5ndGhzSW5mb3JtYXRpb24oYm9vbCBoYXNSZWxhdGl2ZUxlbmd0aHMsIFNWR0VsCiAgICAgICAg
IG1fZWxlbWVudHNXaXRoUmVsYXRpdmVMZW5ndGhzLnJlbW92ZShlbGVtZW50KTsKICAgICB9CiAK
LSAgICBpZiAoIWVsZW1lbnQtPmlzU1ZHR3JhcGhpY3NFbGVtZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIC8vIEZpbmQgZmlyc3Qgc3R5bGVkIHBhcmVudCBub2RlLCBhbmQgbm90aWZ5IGl0
IHRoYXQgd2UndmUgY2hhbmdlZCBvdXIgcmVsYXRpdmUgbGVuZ3RoIHN0YXRlLgotICAgIGF1dG8g
bm9kZSA9IG1ha2VSZWZQdHIocGFyZW50Tm9kZSgpKTsKLSAgICB3aGlsZSAobm9kZSkgewotICAg
ICAgICBpZiAoIW5vZGUtPmlzU1ZHRWxlbWVudCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgLy8gUmVnaXN0ZXIgdXMgaW4gdGhlIHBhcmVudCBlbGVtZW50IG1hcC4KLSAgICAgICAg
ZG93bmNhc3Q8U1ZHRWxlbWVudD4oKm5vZGUpLnVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0
aW9uKGhhc1JlbGF0aXZlTGVuZ3RocywgdGhpcyk7Ci0gICAgICAgIGJyZWFrOworICAgIGlmIChl
bGVtZW50LT5pc1NWR0dyYXBoaWNzRWxlbWVudCgpKSB7CisgICAgICAgIGF1dG8gcGFyZW50ID0g
bWFrZVJlZlB0cihwYXJlbnROb2RlKCkpOworICAgICAgICBpZiAoaXM8U1ZHRWxlbWVudD4ocGFy
ZW50KSkKKyAgICAgICAgICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpwYXJlbnQpLnVwZGF0ZVJl
bGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKGhhc1JlbGF0aXZlTGVuZ3RocywgdGhpcyk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCA5OGZjZmZiY2E0ZDcxMjY3ZTc0NWZl
ZGI5YjMwZTgwZDBjOWI2MmNmLi42MzkxOGFhODhiZjE5NGEyOWU2NDMwYWIxZTk5NjBiODhjYmVk
ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTE0NSw2ICsxNDUsOCBAQCBwdWJsaWM6
CiAgICAgU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NOYW1lLT5jdXJy
ZW50VmFsdWUoKTsgfQogICAgIFNWR0FuaW1hdGVkU3RyaW5nJiBjbGFzc05hbWVBbmltYXRlZCgp
IHsgcmV0dXJuIG1fY2xhc3NOYW1lOyB9CiAKKyAgICBjb25zdCBSZW5kZXJTdHlsZSogY29tcHV0
ZWRTdHlsZShQc2V1ZG9JZCA9IFBzZXVkb0lkOjpOb25lKSBmaW5hbDsKKwogcHJvdGVjdGVkOgog
ICAgIFNWR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgdmly
dHVhbCB+U1ZHRWxlbWVudCgpOwpAQCAtMTczLDggKzE3NSw2IEBAIHByb3RlY3RlZDoKICAgICB2
b2lkIHdpbGxSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
LSAgICBjb25zdCBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZShQc2V1ZG9JZCA9IFBzZXVkb0lk
OjpOb25lKSBmaW5hbDsKLQogICAgIHZpcnR1YWwgdm9pZCBjbGVhclRhcmdldCgpIHsgfQogCiAg
ICAgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZXNJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1VzZUVsZW1lbnQuY3BwCmluZGV4IDFlNzU1MzM5MGU5YjViZGJhODNjYTI2ODE2YzEyMmUxM2Zj
MWVkYTcuLmM2OTc0NWQ1ODQ3Mjg0ZDNjMTYyZDk3NDg1ZjBhMGQ3ZDg3MWE1MmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTMzMSw4ICszMzEsNyBAQCBzdGF0aWMgdm9p
ZCByZW1vdmVEaXNhbGxvd2VkRWxlbWVudHNGcm9tU3VidHJlZShTVkdFbGVtZW50JiBzdWJ0cmVl
KQogICAgIEFTU0VSVCghc3VidHJlZS5pc0Nvbm5lY3RlZCgpKTsKIAogICAgIFZlY3RvcjxFbGVt
ZW50Kj4gZGlzYWxsb3dlZEVsZW1lbnRzOwotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBkZXNjZW5k
YW50c09mVHlwZTxFbGVtZW50PihzdWJ0cmVlKTsKLSAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5k
YW50cy5iZWdpbigpLCBlbmQgPSBkZXNjZW5kYW50cy5lbmQoKTsgaXQgIT0gZW5kOyApIHsKKyAg
ICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PihzdWJ0cmVlKS5iZWdp
bigpOyBpdDsgKSB7CiAgICAgICAgIGlmIChpc0Rpc2FsbG93ZWRFbGVtZW50KCppdCkpIHsKICAg
ICAgICAgICAgIGRpc2FsbG93ZWRFbGVtZW50cy5hcHBlbmQoJippdCk7CiAgICAgICAgICAgICBp
dC50cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7CkBAIC00NTIsOSArNDUxLDkgQEAgc3Rh
dGljIHZvaWQgY2xvbmVEYXRhQW5kQ2hpbGRyZW4oU1ZHRWxlbWVudCYgcmVwbGFjZW1lbnRDbG9u
ZSwgU1ZHRWxlbWVudCYgb3JpZ2kKIHZvaWQgU1ZHVXNlRWxlbWVudDo6ZXhwYW5kVXNlRWxlbWVu
dHNJblNoYWRvd1RyZWUoKSBjb25zdAogewogICAgIGF1dG8gZGVzY2VuZGFudHMgPSBkZXNjZW5k
YW50c09mVHlwZTxTVkdVc2VFbGVtZW50PigqdXNlckFnZW50U2hhZG93Um9vdCgpKTsKLSAgICBm
b3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5iZWdpbigpLCBlbmQgPSBkZXNjZW5kYW50cy5lbmQo
KTsgaXQgIT0gZW5kOyApIHsKKyAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5iZWdpbigp
OyBpdDsgKSB7CiAgICAgICAgIFNWR1VzZUVsZW1lbnQmIG9yaWdpbmFsQ2xvbmUgPSAqaXQ7Ci0g
ICAgICAgIGl0ID0gZW5kOyAvLyBFZmZpY2llbnRseSBxdWlldHMgYXNzZXJ0aW9ucyBkdWUgdG8g
dGhlIG91dHN0YW5kaW5nIGl0ZXJhdG9yLgorICAgICAgICBpdC5kcm9wQXNzZXJ0aW9ucygpOwog
CiAgICAgICAgIGF1dG8qIHRhcmdldCA9IG9yaWdpbmFsQ2xvbmUuZmluZFRhcmdldCgpOwogCkBA
IC00ODUsOSArNDg0LDkgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpleHBhbmRVc2VFbGVtZW50c0lu
U2hhZG93VHJlZSgpIGNvbnN0CiB2b2lkIFNWR1VzZUVsZW1lbnQ6OmV4cGFuZFN5bWJvbEVsZW1l
bnRzSW5TaGFkb3dUcmVlKCkgY29uc3QKIHsKICAgICBhdXRvIGRlc2NlbmRhbnRzID0gZGVzY2Vu
ZGFudHNPZlR5cGU8U1ZHU3ltYm9sRWxlbWVudD4oKnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSk7Ci0g
ICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMuYmVnaW4oKSwgZW5kID0gZGVzY2VuZGFudHMu
ZW5kKCk7IGl0ICE9IGVuZDsgKSB7CisgICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMuYmVn
aW4oKTsgaXQ7ICkgewogICAgICAgICBTVkdTeW1ib2xFbGVtZW50JiBvcmlnaW5hbENsb25lID0g
Kml0OwotICAgICAgICBpdCA9IGVuZDsgLy8gRWZmaWNpZW50bHkgcXVpZXRzIGFzc2VydGlvbnMg
ZHVlIHRvIHRoZSBvdXRzdGFuZGluZyBpdGVyYXRvci4KKyAgICAgICAgaXQuZHJvcEFzc2VydGlv
bnMoKTsKIAogICAgICAgICAvLyBTcGVjOiBUaGUgcmVmZXJlbmNlZCAnc3ltYm9sJyBhbmQgaXRz
IGNvbnRlbnRzIGFyZSBkZWVwLWNsb25lZCBpbnRvIHRoZSBnZW5lcmF0ZWQgdHJlZSwKICAgICAg
ICAgLy8gd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgdGhlICdzeW1ib2wnIGlzIHJlcGxhY2VkIGJ5
IGFuICdzdmcnLiBUaGlzIGdlbmVyYXRlZCAnc3ZnJyB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDc3ZDk0YWZlODVlYmExNjQy
NmE0MTk3ZDdmOTA1NjhjM2MzNmQwYWQuLjNmNzIzMTMxYTIyNjIyM2FjMGRmNmI1MGMyZDk2YTAy
ZTJhNzc3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXIuY3BwCkBAIC0yNzQsMjIgKzI3NCwyNCBAQCBib29sIFhNTERvY3VtZW50UGFyc2VyOjpw
YXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBjaHVuaywgRG9jdW1lbnRGcmFnbQog
CiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiBwcmVmaXhUb05hbWVzcGFjZU1h
cDsKICAgICBBdG9tU3RyaW5nIGRlZmF1bHROYW1lc3BhY2VVUkk7Ci0gICAgYm9vbCBzdG9wTG9v
a2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkgPSBmYWxzZTsKLSAgICAKLSAgICBmb3IgKGF1dG8m
IGVsZW1lbnQgOiBlbGVtZW50TGluZWFnZShjb250ZXh0RWxlbWVudCkpIHsKLSAgICAgICAgaWYg
KGlzPFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50PihlbGVtZW50KSkKLSAgICAgICAgICAgIHN0b3BM
b29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVSSSA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYgKCFz
dG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkpCi0gICAgICAgICAgICBkZWZhdWx0TmFt
ZXNwYWNlVVJJID0gZWxlbWVudC5uYW1lc3BhY2VVUkkoKTsKLQotICAgICAgICBpZiAoIWVsZW1l
bnQuaGFzQXR0cmlidXRlcygpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgZm9y
IChjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA6IGVsZW1lbnQuYXR0cmlidXRlc0l0ZXJhdG9y
KCkpIHsKLSAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUucHJlZml4KCkgPT0geG1sbnNBdG9tKCkp
Ci0gICAgICAgICAgICAgICAgcHJlZml4VG9OYW1lc3BhY2VNYXAuc2V0KGF0dHJpYnV0ZS5sb2Nh
bE5hbWUoKSwgYXR0cmlidXRlLnZhbHVlKCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoIXN0b3BM
b29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVSSSAmJiBhdHRyaWJ1dGUucHJlZml4KCkgPT0geG1s
bnNBdG9tKCkpCi0gICAgICAgICAgICAgICAgZGVmYXVsdE5hbWVzcGFjZVVSSSA9IGF0dHJpYnV0
ZS52YWx1ZSgpOworICAgIGlmIChjb250ZXh0RWxlbWVudCkgeworICAgICAgICBib29sIHN0b3BM
b29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVSSSA9IGZhbHNlOworCisgICAgICAgIGZvciAoYXV0
byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4oKmNvbnRleHRFbGVtZW50KSkgewor
ICAgICAgICAgICAgaWYgKGlzPFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50PihlbGVtZW50KSkKKyAg
ICAgICAgICAgICAgICBzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkgPSB0cnVlOwor
ICAgICAgICAgICAgZWxzZSBpZiAoIXN0b3BMb29raW5nRm9yRGVmYXVsdE5hbWVzcGFjZVVSSSkK
KyAgICAgICAgICAgICAgICBkZWZhdWx0TmFtZXNwYWNlVVJJID0gZWxlbWVudC5uYW1lc3BhY2VV
UkkoKTsKKworICAgICAgICAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZXMoKSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgZm9yIChjb25zdCBBdHRyaWJ1dGUm
IGF0dHJpYnV0ZSA6IGVsZW1lbnQuYXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoYXR0cmlidXRlLnByZWZpeCgpID09IHhtbG5zQXRvbSgpKQorICAgICAgICAgICAg
ICAgICAgICBwcmVmaXhUb05hbWVzcGFjZU1hcC5zZXQoYXR0cmlidXRlLmxvY2FsTmFtZSgpLCBh
dHRyaWJ1dGUudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0b3BMb29raW5n
Rm9yRGVmYXVsdE5hbWVzcGFjZVVSSSAmJiBhdHRyaWJ1dGUucHJlZml4KCkgPT0geG1sbnNBdG9t
KCkpCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHROYW1lc3BhY2VVUkkgPSBhdHRyaWJ1dGUu
dmFsdWUoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391490</attachid>
            <date>2020-02-23 08:01:04 -0800</date>
            <delta_ts>2020-02-23 08:02:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207816-20200223080102.patch</filename>
            <type>text/plain</type>
            <size>16854</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjcwMTRlZWQxMzYwMTA0
ZWYwZjcwYjM3NmVkNGFlMTNkZDcxMzdjZC4uZTg3MDc4NTBlOGY5YTVkOGY1NDJiOWYzMmVhZWQ2
OWI0NDNmODk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIwLTAyLTIzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBGb2xsb3cgdXAgZWxlbWVudCBp
dGVyYXRvciB3b3JrIGJ5IHJlZHVjaW5nIGluY2x1ZGVzIGFuZCB1c2luZyBpczw+IGluIGEgZmV3
IG1vcmUgcGxhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcDogUmVtb3Zl
ZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHA6IERpdHRvLgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3Bw
OiBEaXR0by4KKyAgICAgICAgKiBkb20vTm9kZS5jcHA6IERpdHRvLgorICAgICAgICAqIGVkaXRp
bmcvbWFya3VwLmNwcDogRGl0dG8uCisgICAgICAgICogaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENv
bGxlY3Rpb24uY3BwOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmNwcDog
RGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcDogRGl0dG8uCisg
ICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOiBEaXR0by4KKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwOiBEaXR0by4KKworICAgICAg
ICAqIHBsYXRmb3JtL0RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQuaDogUmVkdWNlZCBpbmNsdWRl
cywgdXNlIGZvcndhcmQgZGVjbGFyYXRpb25zLgorCisgICAgICAgICogc3R5bGUvU3R5bGVSZXNv
bHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6aXNBdFNoYWRvd0JvdW5kYXJ5KTog
VXNlIHRoZSBpczxTaGFkb3dSb290PiBmdW5jdGlvbi4KKworICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlQ2xpcHBlcjo6cGF0aE9ubHlDbGlwcGluZyk6IFVzZQorICAgICAgICBjaGls
ZHJlbk9mVHlwZTxTVkdHcmFwaGljc0VsZW1lbnQ+LCBpczxSZW5kZXJTVkdUZXh0PiwgYW5kIHNp
bXBsaWZ5IGxvb3AgYSBiaXQuCisKKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6IFVzZSBp
czxTVkdFbGVtZW50Pi4KKworICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDogUmVtb3ZlZCB1
bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmlzT3V0ZXJt
b3N0U1ZHU1ZHRWxlbWVudCk6IFVzZSBpczxTVkdFbGVtZW50PiBhbmQKKyAgICAgICAgaXM8U1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQ+LgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6cmVw
b3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKTogVXNlIGlzPFNWR0VsZW1lbnQ+LgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRWxlbWVudDo6dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24pOiBV
c2UKKyAgICAgICAgaXM8U1ZHR3JhcGhpY3NFbGVtZW50PiBhbmQgaXM8U1ZHRWxlbWVudD4uCisK
IDIwMjAtMDItMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBIVE1MRGF0YUxpc3RFbGVtZW50Lm9wdGlvbnMgdG8gaW5jbHVkZSBldmVuIG9wdGlvbnMgdGhh
dCBhcmUgbm90IHN1Z2dlc3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKaW5kZXggZmRjNjdmOGFjMTU2
YTVhZGJiYWE2MTM1NzZiODY4MmFlNjI3MTVhMS4uZmY0NzhmZDIzNjE3OGJhMzliYzIyZGMxOTVh
MTQ4YTU3OTJlMjdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcApAQCAtMzEsNyArMzEsNiBAQAogCiAj
aW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNl
bGwuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRl
eCAyMDUwNmY4ZWNmYWM2NTNlNTVhZDA0ODFkZGE1NjBmNWZkNzJhNTRkLi40ZTAwOWZlZDZiZDBl
MzExNTdjNjY0MDljN2IzNWZjYzdlZmYyMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVk
ZSAiRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93V2ViRGF0
YWJhc2UuaCIKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgi
CiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKQEAgLTM4LDcgKzM3LDYgQEAKICNpbmNs
dWRlICJKU0V2ZW50LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
SlNIVE1MQXVkaW9FbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNIVE1MQ29sbGVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0lEQkZhY3RvcnkuaCIK
ICNpbmNsdWRlICJKU1JlbW90ZURPTVdpbmRvdy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAppbmRleCA5NDU4MmVmNDNmNmYzZDc0MmI3MDA4NzI5Njll
M2Y5Mzk1Y2RkMjY3Li4xOTM3OWRkOWMyZTY1ZGVmMTM2YTRlMzJjMmU0OWI2MWIzNzkyZjZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcApAQCAtMjks
OCArMjksNiBAQAogI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgiCiAjaW5j
bHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudFRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIkpTQ3VzdG9t
RWxlbWVudEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAj
aW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAxMjcyNTI0MjBhYjdk
MWQ3YjQ4NzRkNWEyMjYxNjFiNDMzMGJjNDQzLi5iN2FmMTRkMWMwYjRjYmZkZjY4OWNlMjg0MDMw
Mjk5NWI0YjM0NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTEJvZHlFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRl
ICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MU2xvdEVsZW1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAxNTk1
MDM1MWQ5MDQ3NGM3Yzc4OGMzM2U2N2U3ZGE4NTg4N2Y2ZDRjLi43ZTIyYzUyMmFkYzhlMjI3YjYz
OWJjZWU2ZGI0NmQwYTM5MjkzZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC03
NSw3ICs3NSw2IEBACiAjaW5jbHVkZSAiU29ja2V0UHJvdmlkZXIuaCIKICNpbmNsdWRlICJTdHls
ZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJUeXBl
ZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENv
bGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxl
Y3Rpb24uY3BwCmluZGV4IDljYjNhNjcwMjM3MmNkNGJkMmJmZDllZTNiYTg5ZmJjYTdjOGZmYWMu
LmRkMmRlMjAxNTVkMDRkYmU2MTdkNTgwZGU3Yzc2MWJmY2Q5YWQzMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAKQEAgLTI3
LDcgKzI3LDYgQEAKICNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKIAog
I2luY2x1ZGUgIkhUTUxBcHBsZXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTERhdGFMaXN0RWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCAzMjgxNzZiNjllOGNkMWJmMjJkNGU3NjMyN2U5ZjI5
Mjk2OGFiNDEwLi5kZjJhM2E3MDhmY2Q3Njg4ZTU0MGRiZTQ2ODg3ZTUyNDBmMjM0M2ViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtMjMsNyArMjMsNiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAKLSNpbmNsdWRl
ICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAppbmRleCA4M2FjNjgw
ZDkwNDg3NTcxNTBiNWI2ZWIzNmI2NGQ3ODhmMGViYzcwLi5lNmFlNmY2OGQ4Nzk4NWFmOWZmNTRl
YjVkNjc1MzNhNWI1YWIxZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZVNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0
RWxlbWVudC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50
LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApvbGQgbW9kZSAxMDA3NTUKbmV3IG1v
ZGUgMTAwNjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5k
ZXggY2JkZDhjMDMxZGI3Y2ZlMGU4NDU2MTE5NzYyNjdmMjQ1MTIyNGVmYy4uOWY5MmU4ODRiMDcx
ZGM5NzQ5OTM0Njg0NTFjN2UzYmYyNjFmNTI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkNTU1ZhbHVl
S2V5d29yZHMuaCIKICNpbmNsdWRlICJET01SZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNp
bmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNl
dHMuY3BwCmluZGV4IGQyNmNlZmU0ZjIwMjM2YzdjNDNhYzVlMjVlZTcxNmVkZDU0MGUxMGYuLmY4
MGExODU0ODk4Y2M4NGY1ZDBlMGY2NzBiZmFmMjUzMDYwYWYxODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcApA
QCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkF4aXNTY3JvbGxTbmFwT2Zmc2V0cy5oIgogCiAj
aW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlv
bi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0
YUxpc3RTdWdnZXN0aW9uc0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YUxp
c3RTdWdnZXN0aW9uc0NsaWVudC5oCmluZGV4IDdiMzJiMzNkMzE1YWI5NWQyYTBiZTk4ZDNlMmYw
YTUwYmEwYjllZDMuLjVlZDgwMjViZTc5MDI5MjdmNWQ2NTNiOTc2OWUxMTNmMmNhZWM4Y2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFMaXN0U3VnZ2VzdGlvbnNDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xp
ZW50LmgKQEAgLTI3LDExICsyNywxMiBAQAogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQp
CiAKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSW50UmVj
dDsKKwogY2xhc3MgRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
LmNwcAppbmRleCAxZDc3YjYzYzZmZTI4MzEyYWUxMWVkODI1YjUyM2FhY2U3MTdlYzVhLi5hY2U0
YmQ1MTRmMjkyNWM1MDhmMDdhM2I1YTQ4MmRjMjFjMzdhZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
CkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRl
ICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlclNWR1RleHQuaCIKICNpbmNsdWRlICJSZW5kZXJT
dHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgpA
QCAtNzksMzcgKzc5LDM0IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpwYXRoT25s
eUNsaXBwaW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QKICAgICBpZiAoc3R5bGUo
KS5jbGlwUGF0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgV2luZFJ1bGUgY2xpcFJ1
bGUgPSBXaW5kUnVsZTo6Tm9uWmVybzsKLSAgICBQYXRoIGNsaXBQYXRoID0gUGF0aCgpOworICAg
IFBhdGggY2xpcFBhdGg7CiAKICAgICAvLyBJZiBjbGlwLXBhdGggb25seSBjb250YWlucyBvbmUg
dmlzaWJsZSBzaGFwZSBvciBwYXRoLCB3ZSBjYW4gdXNlIHBhdGgtYmFzZWQgY2xpcHBpbmcuIElu
dmlzaWJsZQogICAgIC8vIHNoYXBlcyBkb24ndCBhZmZlY3QgdGhlIGNsaXBwaW5nIGFuZCBjYW4g
YmUgaWdub3JlZC4gSWYgY2xpcC1wYXRoIGNvbnRhaW5zIG1vcmUgdGhhbiBvbmUKICAgICAvLyB2
aXNpYmxlIHNoYXBlLCB0aGUgYWRkaXRpdmUgY2xpcHBpbmcgbWF5IG5vdCB3b3JrLCBjYXVzZWQg
YnkgdGhlIGNsaXBSdWxlLiBFdmVuT2RkCiAgICAgLy8gYXMgd2VsbCBhcyBOb25aZXJvIGNhbiBj
YXVzZSBzZWxmLWNsaXBwaW5nIG9mIHRoZSBlbGVtZW50cy4KICAgICAvLyBTZWUgYWxzbyBodHRw
Oi8vd3d3LnczLm9yZy9UUi9TVkcvcGFpbnRpbmcuaHRtbCNGaWxsUnVsZVByb3BlcnR5Ci0gICAg
Zm9yIChOb2RlKiBjaGlsZE5vZGUgPSBjbGlwUGF0aEVsZW1lbnQoKS5maXJzdENoaWxkKCk7IGNo
aWxkTm9kZTsgY2hpbGROb2RlID0gY2hpbGROb2RlLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjaGlsZE5vZGUtPnJlbmRlcmVyKCk7CisgICAgZm9y
IChhdXRvJiBlbGVtZW50IDogY2hpbGRyZW5PZlR5cGU8U1ZHR3JhcGhpY3NFbGVtZW50PihjbGlw
UGF0aEVsZW1lbnQoKSkpIHsKKyAgICAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRl
cmVyKCk7CiAgICAgICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgLy8gT25seSBzaGFwZXMgb3IgcGF0aHMgYXJlIHN1cHBvcnRlZCBmb3IgZGlyZWN0IGNs
aXBwaW5nLiBXZSBuZWVkIHRvIGZhbGxiYWNrIHRvIG1hc2tpbmcgZm9yIHRleHRzLgotICAgICAg
ICBpZiAocmVuZGVyZXItPmlzU1ZHVGV4dCgpKQorICAgICAgICAvLyBPbmx5IHNoYXBlcyBvciBw
YXRocyBhcmUgc3VwcG9ydGVkIGZvciBkaXJlY3QgY2xpcHBpbmcuIFdlIG5lZWQgdG8gZmFsbCBi
YWNrIHRvIG1hc2tpbmcgZm9yIHRleHRzLgorICAgICAgICAvLyBGSVhNRTogQ2hlY2sgdGhpcyBh
ZnRlciBjaGVja2luZyBkaXNwbGF5IGFuZCB2aXNpYmlsaXR5PworICAgICAgICBpZiAoaXM8UmVu
ZGVyU1ZHVGV4dD4ocmVuZGVyZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICBpZiAoIWNoaWxkTm9kZS0+aXNTVkdFbGVtZW50KCkgfHwgIWRvd25jYXN0PFNWR0VsZW1lbnQ+
KCpjaGlsZE5vZGUpLmlzU1ZHR3JhcGhpY3NFbGVtZW50KCkpCi0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgU1ZHR3JhcGhpY3NFbGVtZW50JiBzdHlsZWQgPSBkb3duY2FzdDxTVkdHcmFw
aGljc0VsZW1lbnQ+KCpjaGlsZE5vZGUpOwotICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKKyAgICAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci0+
c3R5bGUoKTsKICAgICAgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9u
ZSB8fCBzdHlsZS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0g
c3R5bGUuc3ZnU3R5bGUoKTsKICAgICAgICAgLy8gQ3VycmVudCBzaGFwZSBpbiBjbGlwLXBhdGgg
Z2V0cyBjbGlwcGVkIHRvby4gRmFsbGJhY2sgdG8gbWFza2luZy4KICAgICAgICAgaWYgKHN0eWxl
LmNsaXBQYXRoKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIC8vIEZhbGxi
YWNrIHRvIG1hc2tpbmcsIGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgY2xpcHBpbmcgcGF0aC4K
LSAgICAgICAgaWYgKGNsaXBQYXRoLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgY2xpcFBhdGgg
PSBzdHlsZWQudG9DbGlwUGF0aCgpOwotICAgICAgICAgICAgY2xpcFJ1bGUgPSBzdmdTdHlsZS5j
bGlwUnVsZSgpOwotICAgICAgICB9IGVsc2UKKyAgICAgICAgaWYgKCFjbGlwUGF0aC5pc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNsaXBQYXRoID0gZWxlbWVu
dC50b0NsaXBQYXRoKCk7CisgICAgICAgIGNsaXBSdWxlID0gc3R5bGUuc3ZnU3R5bGUoKS5jbGlw
UnVsZSgpOwogICAgIH0KKwogICAgIC8vIE9ubHkgb25lIHZpc2libGUgc2hhcGUvcGF0aCB3YXMg
Zm91bmQuIERpcmVjdGx5IGNvbnRpbnVlIGNsaXBwaW5nIGFuZCB0cmFuc2Zvcm0gdGhlIGNvbnRl
bnQgdG8gdXNlcnNwYWNlIGlmIG5lY2Vzc2FyeS4KICAgICBpZiAoY2xpcFBhdGhFbGVtZW50KCku
Y2xpcFBhdGhVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VO
RElOR0JPWCkgewogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBmM2YzNjIxODNkNTA2MTc0YTQ2NjY0NjFj
NzE3YmU3OWIzZTYxZjE0Li42NTFmOGYxZTJkNzg5MjE5OTA2NTZhZmE0ZmQ5ZTY5ZWRjYWMzYzI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTgzLDggKzE4Myw3
IEBAIGlubGluZSB2b2lkIFJlc29sdmVyOjpTdGF0ZTo6c2V0UGFyZW50U3R5bGUoc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBwYXJlbnRTCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0F0U2hh
ZG93Qm91bmRhcnkoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBhdXRvKiBwYXJlbnRO
b2RlID0gZWxlbWVudC5wYXJlbnROb2RlKCk7Ci0gICAgcmV0dXJuIHBhcmVudE5vZGUgJiYgcGFy
ZW50Tm9kZS0+aXNTaGFkb3dSb290KCk7CisgICAgcmV0dXJuIGlzPFNoYWRvd1Jvb3Q+KGVsZW1l
bnQucGFyZW50Tm9kZSgpKTsKIH0KIAogQnVpbGRlckNvbnRleHQgUmVzb2x2ZXI6OmJ1aWxkZXJD
b250ZXh0KGNvbnN0IFN0YXRlJiBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCmlu
ZGV4IDk5ZGIzNTliMjA0NjE4NDBmY2NhMTU4OGVlMTBmNTFlZWYxNTVmODYuLjZiNGI2MjU2OTJk
N2FjYTYyZjE3OWE5YTE0MzFiOWI3MmZlZWJlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50
LmNwcApAQCAtMTAyLDkgKzEwMiw4IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAKIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBTVkdBRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYg
c3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7Ci0gICAgaWYgKHBhcmVudE5vZGUo
KSAmJiBwYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgpICYmIGRvd25jYXN0PFNWR0VsZW1lbnQ+
KCpwYXJlbnROb2RlKCkpLmlzVGV4dENvbnRlbnQoKSkKKyAgICBpZiAoaXM8U1ZHRWxlbWVudD4o
cGFyZW50Tm9kZSgpKSAmJiBkb3duY2FzdDxTVkdFbGVtZW50PigqcGFyZW50Tm9kZSgpKS5pc1Rl
eHRDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdJbmxp
bmU+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7Ci0KICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDJmZmNiYWM1MjExYzhhMDVhZTQ2
MGQzMGNhMDQyNmU0NjdjZWExODMuLjAxNjlmMDg1ZTJlNzA5YzVhYzAyY2ZiZWExMTBkYmY1Mjkx
ZmIwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTI3LDIwICsyNywxOCBAQAog
I2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyLmgi
Ci0jaW5jbHVkZSAiRGVwcmVjYXRlZENTU09NVmFsdWUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgotI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAj
aW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJIVE1MUGFyc2VySWRpb21zLmgiCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCi0jaW5jbHVk
ZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlTWFza2VyLmgiCiAjaW5jbHVkZSAiU1ZH
RG9jdW1lbnRFeHRlbnNpb25zLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudFJhcmVEYXRhLmgiCisj
aW5jbHVkZSAiU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdHcmFwaGlj
c0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdO
YW1lcy5oIgpAQCAtNTMsMTMgKzUxLDEwIEBACiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2lu
Y2x1ZGUgIlN0eWxlQWRqdXN0ZXIuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgotI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIwOCw3ICsyMDMsNyBAQCBib29s
IFNWR0VsZW1lbnQ6OmlzT3V0ZXJtb3N0U1ZHU1ZHRWxlbWVudCgpIGNvbnN0CiAgICAgLy8gSWYg
d2UncmUgbGl2aW5nIGluIGEgc2hhZG93IHRyZWUsIHdlJ3JlIGEgPHN2Zz4gZWxlbWVudCB0aGF0
IGdvdCBjcmVhdGVkIGFzIHJlcGxhY2VtZW50CiAgICAgLy8gZm9yIGEgPHN5bWJvbD4gZWxlbWVu
dCBvciBhIGNsb25lZCA8c3ZnPiBlbGVtZW50IGluIHRoZSByZWZlcmVuY2VkIHRyZWUuIEluIHRo
YXQgY2FzZQogICAgIC8vIHdlJ3JlIGFsd2F5cyBhbiBpbm5lciA8c3ZnPiBlbGVtZW50LgotICAg
IGlmIChpc0luU2hhZG93VHJlZSgpICYmIHBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSAmJiBw
YXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCktPmlzU1ZHRWxlbWVudCgpKQorICAgIGlmIChpc0lu
U2hhZG93VHJlZSgpICYmIGlzPFNWR0VsZW1lbnQ+KHBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQo
KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEVsZW1lbnQgbWF5IG5vdCBiZSBp
biB0aGUgZG9jdW1lbnQsIHByZXRlbmQgd2UncmUgb3V0ZXJtb3N0IGZvciB2aWV3cG9ydCgpLCBn
ZXRDVE0oKSwgZXRjLgpAQCAtMjE2LDExICsyMTEsMTEgQEAgYm9vbCBTVkdFbGVtZW50Ojppc091
dGVybW9zdFNWR1NWR0VsZW1lbnQoKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IC8vIFdlIGFjdCBsaWtlIGFuIG91dGVybW9zdCBTVkcgZWxlbWVudCwgaWYgd2UncmUgYSBkaXJl
Y3QgY2hpbGQgb2YgYSA8Zm9yZWlnbk9iamVjdD4gZWxlbWVudC4KLSAgICBpZiAocGFyZW50Tm9k
ZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnKSkKKyAgICBpZiAoaXM8
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ+KCpwYXJlbnROb2RlKCkpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgIC8vIFRoaXMgaXMgdHJ1ZSB3aGVuZXZlciB0aGlzIGlzIHRoZSBvdXRlcm1v
c3QgU1ZHLCBldmVuIGlmIHRoZXJlIGFyZSBIVE1MIGVsZW1lbnRzIG91dHNpZGUgaXQKLSAgICBy
ZXR1cm4gIXBhcmVudE5vZGUoKS0+aXNTVkdFbGVtZW50KCk7CisgICAgcmV0dXJuICFpczxTVkdF
bGVtZW50PigqcGFyZW50Tm9kZSgpKTsKIH0KIAogdm9pZCBTVkdFbGVtZW50OjpyZXBvcnRBdHRy
aWJ1dGVQYXJzaW5nRXJyb3IoU1ZHUGFyc2luZ0Vycm9yIGVycm9yLCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKQEAgLTc3OSw3ICs3NzQsNyBAQCBi
b29sIFNWR0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQogICAgIC8vIFNwZWM6IFNWRyBhbGxvd3MgaW5jbHVzaW9uIG9mIGVsZW1lbnRzIGZyb20gZm9y
ZWlnbiBuYW1lc3BhY2VzIGFueXdoZXJlCiAgICAgLy8gd2l0aCB0aGUgU1ZHIGNvbnRlbnQuIElu
IGdlbmVyYWwsIHRoZSBTVkcgdXNlciBhZ2VudCB3aWxsIGluY2x1ZGUgdGhlIHVua25vd24KICAg
ICAvLyBlbGVtZW50cyBpbiB0aGUgRE9NIGJ1dCB3aWxsIG90aGVyd2lzZSBpZ25vcmUgdW5rbm93
biBlbGVtZW50cy4KLSAgICBpZiAoIXBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSB8fCBwYXJl
bnRPclNoYWRvd0hvc3RFbGVtZW50KCktPmlzU1ZHRWxlbWVudCgpKQorICAgIGlmICghcGFyZW50
T3JTaGFkb3dIb3N0RWxlbWVudCgpIHx8IGlzPFNWR0VsZW1lbnQ+KCpwYXJlbnRPclNoYWRvd0hv
c3RFbGVtZW50KCkpKQogICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZChzdHlsZSk7CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC05MTYsMTggKzkxMSwxMCBAQCB2
b2lkIFNWR0VsZW1lbnQ6OnVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKGJvb2wgaGFz
UmVsYXRpdmVMZW5ndGhzLCBTVkdFbAogICAgICAgICBtX2VsZW1lbnRzV2l0aFJlbGF0aXZlTGVu
Z3Rocy5yZW1vdmUoZWxlbWVudCk7CiAgICAgfQogCi0gICAgaWYgKCFlbGVtZW50LT5pc1NWR0dy
YXBoaWNzRWxlbWVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGaW5kIGZpcnN0IHN0
eWxlZCBwYXJlbnQgbm9kZSwgYW5kIG5vdGlmeSBpdCB0aGF0IHdlJ3ZlIGNoYW5nZWQgb3VyIHJl
bGF0aXZlIGxlbmd0aCBzdGF0ZS4KLSAgICBhdXRvIG5vZGUgPSBtYWtlUmVmUHRyKHBhcmVudE5v
ZGUoKSk7Ci0gICAgd2hpbGUgKG5vZGUpIHsKLSAgICAgICAgaWYgKCFub2RlLT5pc1NWR0VsZW1l
bnQoKSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIC8vIFJlZ2lzdGVyIHVzIGluIHRo
ZSBwYXJlbnQgZWxlbWVudCBtYXAuCi0gICAgICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpub2Rl
KS51cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihoYXNSZWxhdGl2ZUxlbmd0aHMsIHRo
aXMpOwotICAgICAgICBicmVhazsKKyAgICBpZiAoaXM8U1ZHR3JhcGhpY3NFbGVtZW50PigqZWxl
bWVudCkpIHsKKyAgICAgICAgYXV0byBwYXJlbnQgPSBtYWtlUmVmUHRyKHBhcmVudE5vZGUoKSk7
CisgICAgICAgIGlmIChpczxTVkdFbGVtZW50PihwYXJlbnQpKQorICAgICAgICAgICAgZG93bmNh
c3Q8U1ZHRWxlbWVudD4oKnBhcmVudCkudXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24o
aGFzUmVsYXRpdmVMZW5ndGhzLCB0aGlzKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391491</attachid>
            <date>2020-02-23 08:10:42 -0800</date>
            <delta_ts>2020-02-23 08:10:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207816-20200223081040.patch</filename>
            <type>text/plain</type>
            <size>17418</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjcwMTRlZWQxMzYwMTA0
ZWYwZjcwYjM3NmVkNGFlMTNkZDcxMzdjZC4uM2YyNWZkZWI3NzNiZmYxZGYxMTExNDM4ZDA0MjYy
YWQ1ZGY1Mzc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIwLTAyLTIzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBGb2xsb3cgdXAgZWxlbWVudCBp
dGVyYXRvciB3b3JrIGJ5IHJlZHVjaW5nIGluY2x1ZGVzIGFuZCB1c2luZyBpczw+IGluIGEgZmV3
IG1vcmUgcGxhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDc4MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcDogUmVtb3Zl
ZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHA6IERpdHRvLgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3Bw
OiBEaXR0by4KKyAgICAgICAgKiBkb20vTm9kZS5jcHA6IERpdHRvLgorICAgICAgICAqIGVkaXRp
bmcvbWFya3VwLmNwcDogRGl0dG8uCisgICAgICAgICogaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENv
bGxlY3Rpb24uY3BwOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmNwcDog
RGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcDogRGl0dG8uCisg
ICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOiBEaXR0by4KKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwOiBEaXR0by4KKworICAgICAg
ICAqIHBsYXRmb3JtL0RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQuaDogUmVkdWNlZCBpbmNsdWRl
cywgdXNlIGZvcndhcmQgZGVjbGFyYXRpb25zLgorCisgICAgICAgICogc3R5bGUvU3R5bGVSZXNv
bHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6aXNBdFNoYWRvd0JvdW5kYXJ5KTog
VXNlIHRoZSBpczxTaGFkb3dSb290PiBmdW5jdGlvbi4KKworICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlQ2xpcHBlcjo6cGF0aE9ubHlDbGlwcGluZyk6IFVzZSBpczxSZW5kZXJTVkdU
ZXh0PiBhbmQKKyAgICAgICAgaXM8U1ZHR3JhcGhpY3NFbGVtZW50PiwgdHdlYWsgY29kaW5nIHN0
eWxlIGEgdGlueSBiaXQsIGFuZCBmaXggd29yZGluZyBvZiBjb21tZW50cy4KKworICAgICAgICAq
IHN2Zy9TVkdBRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKTogVXNlIGlzPFNWR0VsZW1lbnQ+LgorCisgICAgICAgICogc3Zn
L1NWR0VsZW1lbnQuY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzLgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRWxlbWVudDo6aXNPdXRlcm1vc3RTVkdTVkdFbGVtZW50KTogVXNlIGlzPFNWR0Vs
ZW1lbnQ+IGFuZAorICAgICAgICBpczxTVkdGb3JlaWduT2JqZWN0RWxlbWVudD4uCisgICAgICAg
IChXZWJDb3JlOjpTVkdFbGVtZW50OjpyZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IpOiBVc2Ug
aXM8U1ZHRWxlbWVudD4uCisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojp1cGRhdGVSZWxh
dGl2ZUxlbmd0aHNJbmZvcm1hdGlvbik6IFVzZQorICAgICAgICBpczxTVkdHcmFwaGljc0VsZW1l
bnQ+IGFuZCBpczxTVkdFbGVtZW50PiwgYW5kIHVzZSBhbiBpZiBzdGF0ZW1lbnQgaW5zdGVhZCBv
ZgorICAgICAgICBhIHdoaWxlIGxvb3Agc2luY2UgdGhpcyBkb2Vzbid0IGxvb3AuCisKIDIwMjAt
MDItMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBIVE1M
RGF0YUxpc3RFbGVtZW50Lm9wdGlvbnMgdG8gaW5jbHVkZSBldmVuIG9wdGlvbnMgdGhhdCBhcmUg
bm90IHN1Z2dlc3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKaW5kZXggZmRjNjdmOGFjMTU2YTVhZGJi
YWE2MTM1NzZiODY4MmFlNjI3MTVhMS4uZmY0NzhmZDIzNjE3OGJhMzliYzIyZGMxOTVhMTQ4YTU3
OTJlMjdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcApAQCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVk
ZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCIK
LSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAyMDUw
NmY4ZWNmYWM2NTNlNTVhZDA0ODFkZGE1NjBmNWZkNzJhNTRkLi40ZTAwOWZlZDZiZDBlMzExNTdj
NjY0MDljN2IzNWZjYzdlZmYyMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAiRE9N
V2luZG93SW5kZXhlZERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93V2ViRGF0YWJhc2Uu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5j
bHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKQEAgLTM4LDcgKzM3LDYgQEAKICNpbmNsdWRlICJK
U0V2ZW50LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSlNIVE1M
QXVkaW9FbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkpTSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0lEQkZhY3RvcnkuaCIKICNpbmNs
dWRlICJKU1JlbW90ZURPTVdpbmRvdy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5LmNwcAppbmRleCA5NDU4MmVmNDNmNmYzZDc0MmI3MDA4NzI5NjllM2Y5Mzk1
Y2RkMjY3Li4xOTM3OWRkOWMyZTY1ZGVmMTM2YTRlMzJjMmU0OWI2MWIzNzkyZjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcApAQCAtMjksOCArMjks
NiBAQAogI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgiCiAjaW5jbHVkZSAi
RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiRWxlbWVudFRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIkpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVk
ZSAiTWF0aE1MTmFtZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAxMjcyNTI0MjBhYjdkMWQ3YjQ4
NzRkNWEyMjYxNjFiNDMzMGJjNDQzLi5iN2FmMTRkMWMwYjRjYmZkZjY4OWNlMjg0MDMwMjk5NWI0
YjM0NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSAiRnJh
bWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJv
ZHlFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1M
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
U2xvdEVsZW1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAxNTk1MDM1MWQ5
MDQ3NGM3Yzc4OGMzM2U2N2U3ZGE4NTg4N2Y2ZDRjLi43ZTIyYzUyMmFkYzhlMjI3YjYzOWJjZWU2
ZGI0NmQwYTM5MjkzZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC03NSw3ICs3
NSw2IEBACiAjaW5jbHVkZSAiU29ja2V0UHJvdmlkZXIuaCIKICNpbmNsdWRlICJTdHlsZVByb3Bl
cnRpZXMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJUeXBlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAj
aW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24u
Y3BwCmluZGV4IDljYjNhNjcwMjM3MmNkNGJkMmJmZDllZTNiYTg5ZmJjYTdjOGZmYWMuLmRkMmRl
MjAxNTVkMDRkYmU2MTdkNTgwZGU3Yzc2MWJmY2Q5YWQzMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAKQEAgLTI3LDcgKzI3
LDYgQEAKICNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKIAogI2luY2x1
ZGUgIkhUTUxBcHBsZXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTERhdGFMaXN0RWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
b2xsZWN0aW9uLmNwcAppbmRleCAzMjgxNzZiNjllOGNkMWJmMjJkNGU3NjMyN2U5ZjI5Mjk2OGFi
NDEwLi5kZjJhM2E3MDhmY2Q3Njg4ZTU0MGRiZTQ2ODg3ZTUyNDBmMjM0M2ViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtMjMsNyArMjMsNiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAKLSNpbmNsdWRlICJDYWNo
ZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk5v
ZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAppbmRleCA4M2FjNjgwZDkwNDg3
NTcxNTBiNWI2ZWIzNmI2NGQ3ODhmMGViYzcwLi5lNmFlNmY2OGQ4Nzk4NWFmOWZmNTRlYjVkNjc1
MzNhNWI1YWIxZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNl
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCi0j
aW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAw
NjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXggY2Jk
ZDhjMDMxZGI3Y2ZlMGU4NDU2MTE5NzYyNjdmMjQ1MTIyNGVmYy4uOWY5MmU4ODRiMDcxZGM5NzQ5
OTM0Njg0NTFjN2UzYmYyNjFmNTI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlLmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29y
ZHMuaCIKICNpbmNsdWRlICJET01SZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRl
ICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3Bw
CmluZGV4IGQyNmNlZmU0ZjIwMjM2YzdjNDNhYzVlMjVlZTcxNmVkZDU0MGUxMGYuLmY4MGExODU0
ODk4Y2M4NGY1ZDBlMGY2NzBiZmFmMjUzMDYwYWYxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcApAQCAtMjcs
NyArMjcsNiBAQAogI2luY2x1ZGUgIkF4aXNTY3JvbGxTbmFwT2Zmc2V0cy5oIgogCiAjaW5jbHVk
ZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgog
I2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YUxpc3RT
dWdnZXN0aW9uc0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YUxpc3RTdWdn
ZXN0aW9uc0NsaWVudC5oCmluZGV4IDdiMzJiMzNkMzE1YWI5NWQyYTBiZTk4ZDNlMmYwYTUwYmEw
YjllZDMuLjVlZDgwMjViZTc5MDI5MjdmNWQ2NTNiOTc2OWUxMTNmMmNhZWM4Y2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LmgK
QEAgLTI3LDExICsyNywxMiBAQAogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAKLSNp
bmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSW50UmVjdDsKKwog
Y2xhc3MgRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
RGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcApp
bmRleCAxZDc3YjYzYzZmZTI4MzEyYWUxMWVkODI1YjUyM2FhY2U3MTdlYzVhLi43OWI5NzEyNTk4
ZTdiZWU5Y2I4ZmRlZWQ3MTYyZmQ0OWEyMTNmYTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0y
OSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRlICJIaXRU
ZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIlJlbmRlck9iamVj
dC5oIgorI2luY2x1ZGUgIlJlbmRlclNWR1RleHQuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5o
IgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtNzUs
MTEgKzc1LDExIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseVJlc291cmNl
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kCiAKIGJvb2wgUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyOjpwYXRoT25seUNsaXBwaW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhbmltYXRlZExvY2FsVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFJlY3QmIG9iamVjdEJvdW5kaW5nQm94KQogewotICAgIC8vIElmIHRoZSBjdXJyZW50IGNsaXAt
cGF0aCBnZXRzIGNsaXBwZWQgaXRzZWxmLCB3ZSBoYXZlIHRvIGZhbGxiYWNrIHRvIG1hc2tpbmcu
CisgICAgLy8gSWYgdGhlIGN1cnJlbnQgY2xpcC1wYXRoIGdldHMgY2xpcHBlZCBpdHNlbGYsIHdl
IGhhdmUgdG8gZmFsbCBiYWNrIHRvIG1hc2tpbmcuCiAgICAgaWYgKHN0eWxlKCkuY2xpcFBhdGgo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFdpbmRSdWxlIGNsaXBSdWxlID0gV2luZFJ1
bGU6Ok5vblplcm87Ci0gICAgUGF0aCBjbGlwUGF0aCA9IFBhdGgoKTsKKyAgICBQYXRoIGNsaXBQ
YXRoOwogCiAgICAgLy8gSWYgY2xpcC1wYXRoIG9ubHkgY29udGFpbnMgb25lIHZpc2libGUgc2hh
cGUgb3IgcGF0aCwgd2UgY2FuIHVzZSBwYXRoLWJhc2VkIGNsaXBwaW5nLiBJbnZpc2libGUKICAg
ICAvLyBzaGFwZXMgZG9uJ3QgYWZmZWN0IHRoZSBjbGlwcGluZyBhbmQgY2FuIGJlIGlnbm9yZWQu
IElmIGNsaXAtcGF0aCBjb250YWlucyBtb3JlIHRoYW4gb25lCkBAIC04NywyOSArODcsMjcgQEAg
Ym9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnBhdGhPbmx5Q2xpcHBpbmcoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdAogICAgIC8vIGFzIHdlbGwgYXMgTm9uWmVybyBjYW4gY2F1
c2Ugc2VsZi1jbGlwcGluZyBvZiB0aGUgZWxlbWVudHMuCiAgICAgLy8gU2VlIGFsc28gaHR0cDov
L3d3dy53My5vcmcvVFIvU1ZHL3BhaW50aW5nLmh0bWwjRmlsbFJ1bGVQcm9wZXJ0eQogICAgIGZv
ciAoTm9kZSogY2hpbGROb2RlID0gY2xpcFBhdGhFbGVtZW50KCkuZmlyc3RDaGlsZCgpOyBjaGls
ZE5vZGU7IGNoaWxkTm9kZSA9IGNoaWxkTm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY2hpbGROb2RlLT5yZW5kZXJlcigpOworICAgICAgICBh
dXRvKiByZW5kZXJlciA9IGNoaWxkTm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKCFyZW5k
ZXJlcikKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAvLyBPbmx5IHNoYXBlcyBvciBw
YXRocyBhcmUgc3VwcG9ydGVkIGZvciBkaXJlY3QgY2xpcHBpbmcuIFdlIG5lZWQgdG8gZmFsbGJh
Y2sgdG8gbWFza2luZyBmb3IgdGV4dHMuCi0gICAgICAgIGlmIChyZW5kZXJlci0+aXNTVkdUZXh0
KCkpCisgICAgICAgIC8vIE9ubHkgc2hhcGVzIG9yIHBhdGhzIGFyZSBzdXBwb3J0ZWQgZm9yIGRp
cmVjdCBjbGlwcGluZy4gV2UgbmVlZCB0byBmYWxsIGJhY2sgdG8gbWFza2luZyBmb3IgdGV4dHMu
CisgICAgICAgIGlmIChpczxSZW5kZXJTVkdUZXh0PihyZW5kZXJlcikpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghY2hpbGROb2RlLT5pc1NWR0VsZW1lbnQoKSB8fCAh
ZG93bmNhc3Q8U1ZHRWxlbWVudD4oKmNoaWxkTm9kZSkuaXNTVkdHcmFwaGljc0VsZW1lbnQoKSkK
KyAgICAgICAgaWYgKCFpczxTVkdHcmFwaGljc0VsZW1lbnQ+KCpjaGlsZE5vZGUpKQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIFNWR0dyYXBoaWNzRWxlbWVudCYgc3R5bGVkID0gZG93
bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50PigqY2hpbGROb2RlKTsKLSAgICAgICAgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CisgICAgICAgIGF1dG8mIHN0eWxl
ID0gcmVuZGVyZXItPnN0eWxlKCk7CiAgICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlz
cGxheVR5cGU6Ok5vbmUgfHwgc3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2li
bGUpCi0gICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxl
JiBzdmdTdHlsZSA9IHN0eWxlLnN2Z1N0eWxlKCk7Ci0gICAgICAgIC8vIEN1cnJlbnQgc2hhcGUg
aW4gY2xpcC1wYXRoIGdldHMgY2xpcHBlZCB0b28uIEZhbGxiYWNrIHRvIG1hc2tpbmcuCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgLy8gQ3VycmVudCBzaGFwZSBpbiBjbGlwLXBhdGgg
Z2V0cyBjbGlwcGVkIHRvby4gRmFsbCBiYWNrIHRvIG1hc2tpbmcuCiAgICAgICAgIGlmIChzdHls
ZS5jbGlwUGF0aCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAvLyBGYWxs
YmFjayB0byBtYXNraW5nLCBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGNsaXBwaW5nIHBhdGgu
Ci0gICAgICAgIGlmIChjbGlwUGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGNsaXBQYXRo
ID0gc3R5bGVkLnRvQ2xpcFBhdGgoKTsKLSAgICAgICAgICAgIGNsaXBSdWxlID0gc3ZnU3R5bGUu
Y2xpcFJ1bGUoKTsKLSAgICAgICAgfSBlbHNlCisgICAgICAgIC8vIEZhbGwgYmFjayB0byBtYXNr
aW5nIGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgY2xpcHBpbmcgcGF0aC4KKyAgICAgICAgaWYg
KCFjbGlwUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGNsaXBQYXRoID0gZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50PigqY2hpbGROb2RlKS50b0Ns
aXBQYXRoKCk7CisgICAgICAgIGNsaXBSdWxlID0gc3R5bGUuc3ZnU3R5bGUoKS5jbGlwUnVsZSgp
OwogICAgIH0KKwogICAgIC8vIE9ubHkgb25lIHZpc2libGUgc2hhcGUvcGF0aCB3YXMgZm91bmQu
IERpcmVjdGx5IGNvbnRpbnVlIGNsaXBwaW5nIGFuZCB0cmFuc2Zvcm0gdGhlIGNvbnRlbnQgdG8g
dXNlcnNwYWNlIGlmIG5lY2Vzc2FyeS4KICAgICBpZiAoY2xpcFBhdGhFbGVtZW50KCkuY2xpcFBh
dGhVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JP
WCkgewogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBmM2YzNjIxODNkNTA2MTc0YTQ2NjY0NjFjNzE3YmU3
OWIzZTYxZjE0Li42NTFmOGYxZTJkNzg5MjE5OTA2NTZhZmE0ZmQ5ZTY5ZWRjYWMzYzI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTgzLDggKzE4Myw3IEBAIGlu
bGluZSB2b2lkIFJlc29sdmVyOjpTdGF0ZTo6c2V0UGFyZW50U3R5bGUoc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBwYXJlbnRTCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0F0U2hhZG93Qm91
bmRhcnkoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBhdXRvKiBwYXJlbnROb2RlID0g
ZWxlbWVudC5wYXJlbnROb2RlKCk7Ci0gICAgcmV0dXJuIHBhcmVudE5vZGUgJiYgcGFyZW50Tm9k
ZS0+aXNTaGFkb3dSb290KCk7CisgICAgcmV0dXJuIGlzPFNoYWRvd1Jvb3Q+KGVsZW1lbnQucGFy
ZW50Tm9kZSgpKTsKIH0KIAogQnVpbGRlckNvbnRleHQgUmVzb2x2ZXI6OmJ1aWxkZXJDb250ZXh0
KGNvbnN0IFN0YXRlJiBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCmluZGV4IDk5
ZGIzNTliMjA0NjE4NDBmY2NhMTU4OGVlMTBmNTFlZWYxNTVmODYuLjZiNGI2MjU2OTJkN2FjYTYy
ZjE3OWE5YTE0MzFiOWI3MmZlZWJlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcApA
QCAtMTAyLDkgKzEwMiw4IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTVkdBRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7Ci0gICAgaWYgKHBhcmVudE5vZGUoKSAmJiBw
YXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgpICYmIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpwYXJl
bnROb2RlKCkpLmlzVGV4dENvbnRlbnQoKSkKKyAgICBpZiAoaXM8U1ZHRWxlbWVudD4ocGFyZW50
Tm9kZSgpKSAmJiBkb3duY2FzdDxTVkdFbGVtZW50PigqcGFyZW50Tm9kZSgpKS5pc1RleHRDb250
ZW50KCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdJbmxpbmU+KCp0
aGlzLCBXVEZNb3ZlKHN0eWxlKSk7Ci0KICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
U1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDJmZmNiYWM1MjExYzhhMDVhZTQ2MGQzMGNh
MDQyNmU0NjdjZWExODMuLjAxNjlmMDg1ZTJlNzA5YzVhYzAyY2ZiZWExMTBkYmY1MjkxZmIwMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTI3LDIwICsyNywxOCBAQAogI2luY2x1
ZGUgIlNWR0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyLmgiCi0jaW5j
bHVkZSAiRGVwcmVjYXRlZENTU09NVmFsdWUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2lu
Y2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1M
UGFyc2VySWRpb21zLmgiCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCi0jaW5jbHVkZSAiUmVu
ZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIgog
I2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlTWFza2VyLmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1l
bnRFeHRlbnNpb25zLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudFJhcmVEYXRhLmgiCisjaW5jbHVk
ZSAiU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1l
bnQuaCIKICNpbmNsdWRlICJTVkdJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5o
IgpAQCAtNTMsMTMgKzUxLDEwIEBACiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUg
IlN0eWxlQWRqdXN0ZXIuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgotI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIwOCw3ICsyMDMsNyBAQCBib29sIFNWR0Vs
ZW1lbnQ6OmlzT3V0ZXJtb3N0U1ZHU1ZHRWxlbWVudCgpIGNvbnN0CiAgICAgLy8gSWYgd2UncmUg
bGl2aW5nIGluIGEgc2hhZG93IHRyZWUsIHdlJ3JlIGEgPHN2Zz4gZWxlbWVudCB0aGF0IGdvdCBj
cmVhdGVkIGFzIHJlcGxhY2VtZW50CiAgICAgLy8gZm9yIGEgPHN5bWJvbD4gZWxlbWVudCBvciBh
IGNsb25lZCA8c3ZnPiBlbGVtZW50IGluIHRoZSByZWZlcmVuY2VkIHRyZWUuIEluIHRoYXQgY2Fz
ZQogICAgIC8vIHdlJ3JlIGFsd2F5cyBhbiBpbm5lciA8c3ZnPiBlbGVtZW50LgotICAgIGlmIChp
c0luU2hhZG93VHJlZSgpICYmIHBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSAmJiBwYXJlbnRP
clNoYWRvd0hvc3RFbGVtZW50KCktPmlzU1ZHRWxlbWVudCgpKQorICAgIGlmIChpc0luU2hhZG93
VHJlZSgpICYmIGlzPFNWR0VsZW1lbnQ+KHBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEVsZW1lbnQgbWF5IG5vdCBiZSBpbiB0aGUg
ZG9jdW1lbnQsIHByZXRlbmQgd2UncmUgb3V0ZXJtb3N0IGZvciB2aWV3cG9ydCgpLCBnZXRDVE0o
KSwgZXRjLgpAQCAtMjE2LDExICsyMTEsMTEgQEAgYm9vbCBTVkdFbGVtZW50Ojppc091dGVybW9z
dFNWR1NWR0VsZW1lbnQoKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFdl
IGFjdCBsaWtlIGFuIG91dGVybW9zdCBTVkcgZWxlbWVudCwgaWYgd2UncmUgYSBkaXJlY3QgY2hp
bGQgb2YgYSA8Zm9yZWlnbk9iamVjdD4gZWxlbWVudC4KLSAgICBpZiAocGFyZW50Tm9kZSgpLT5o
YXNUYWdOYW1lKFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnKSkKKyAgICBpZiAoaXM8U1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQ+KCpwYXJlbnROb2RlKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIC8vIFRoaXMgaXMgdHJ1ZSB3aGVuZXZlciB0aGlzIGlzIHRoZSBvdXRlcm1vc3QgU1ZH
LCBldmVuIGlmIHRoZXJlIGFyZSBIVE1MIGVsZW1lbnRzIG91dHNpZGUgaXQKLSAgICByZXR1cm4g
IXBhcmVudE5vZGUoKS0+aXNTVkdFbGVtZW50KCk7CisgICAgcmV0dXJuICFpczxTVkdFbGVtZW50
PigqcGFyZW50Tm9kZSgpKTsKIH0KIAogdm9pZCBTVkdFbGVtZW50OjpyZXBvcnRBdHRyaWJ1dGVQ
YXJzaW5nRXJyb3IoU1ZHUGFyc2luZ0Vycm9yIGVycm9yLCBjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKQEAgLTc3OSw3ICs3NzQsNyBAQCBib29sIFNW
R0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAg
IC8vIFNwZWM6IFNWRyBhbGxvd3MgaW5jbHVzaW9uIG9mIGVsZW1lbnRzIGZyb20gZm9yZWlnbiBu
YW1lc3BhY2VzIGFueXdoZXJlCiAgICAgLy8gd2l0aCB0aGUgU1ZHIGNvbnRlbnQuIEluIGdlbmVy
YWwsIHRoZSBTVkcgdXNlciBhZ2VudCB3aWxsIGluY2x1ZGUgdGhlIHVua25vd24KICAgICAvLyBl
bGVtZW50cyBpbiB0aGUgRE9NIGJ1dCB3aWxsIG90aGVyd2lzZSBpZ25vcmUgdW5rbm93biBlbGVt
ZW50cy4KLSAgICBpZiAoIXBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSB8fCBwYXJlbnRPclNo
YWRvd0hvc3RFbGVtZW50KCktPmlzU1ZHRWxlbWVudCgpKQorICAgIGlmICghcGFyZW50T3JTaGFk
b3dIb3N0RWxlbWVudCgpIHx8IGlzPFNWR0VsZW1lbnQ+KCpwYXJlbnRPclNoYWRvd0hvc3RFbGVt
ZW50KCkpKQogICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChz
dHlsZSk7CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC05MTYsMTggKzkxMSwxMCBAQCB2b2lkIFNW
R0VsZW1lbnQ6OnVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKGJvb2wgaGFzUmVsYXRp
dmVMZW5ndGhzLCBTVkdFbAogICAgICAgICBtX2VsZW1lbnRzV2l0aFJlbGF0aXZlTGVuZ3Rocy5y
ZW1vdmUoZWxlbWVudCk7CiAgICAgfQogCi0gICAgaWYgKCFlbGVtZW50LT5pc1NWR0dyYXBoaWNz
RWxlbWVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGaW5kIGZpcnN0IHN0eWxlZCBw
YXJlbnQgbm9kZSwgYW5kIG5vdGlmeSBpdCB0aGF0IHdlJ3ZlIGNoYW5nZWQgb3VyIHJlbGF0aXZl
IGxlbmd0aCBzdGF0ZS4KLSAgICBhdXRvIG5vZGUgPSBtYWtlUmVmUHRyKHBhcmVudE5vZGUoKSk7
Ci0gICAgd2hpbGUgKG5vZGUpIHsKLSAgICAgICAgaWYgKCFub2RlLT5pc1NWR0VsZW1lbnQoKSkK
LSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIC8vIFJlZ2lzdGVyIHVzIGluIHRoZSBwYXJl
bnQgZWxlbWVudCBtYXAuCi0gICAgICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpub2RlKS51cGRh
dGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihoYXNSZWxhdGl2ZUxlbmd0aHMsIHRoaXMpOwot
ICAgICAgICBicmVhazsKKyAgICBpZiAoaXM8U1ZHR3JhcGhpY3NFbGVtZW50PigqZWxlbWVudCkp
IHsKKyAgICAgICAgYXV0byBwYXJlbnQgPSBtYWtlUmVmUHRyKHBhcmVudE5vZGUoKSk7CisgICAg
ICAgIGlmIChpczxTVkdFbGVtZW50PihwYXJlbnQpKQorICAgICAgICAgICAgZG93bmNhc3Q8U1ZH
RWxlbWVudD4oKnBhcmVudCkudXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oaGFzUmVs
YXRpdmVMZW5ndGhzLCB0aGlzKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>